diff --git a/.git-credentials/config b/.git-credentials/config new file mode 100644 index 0000000..d9b7967 --- /dev/null +++ b/.git-credentials/config @@ -0,0 +1 @@ +http://be00af92b4fc91fd6fecbe95751702a51021981a@localhost:3000 diff --git a/agents/backend/avatars/assistant.jpg b/agents/backend/avatars/assistant.jpg new file mode 100644 index 0000000..7caaeeb Binary files /dev/null and b/agents/backend/avatars/assistant.jpg differ diff --git a/canvas/index.html b/canvas/index.html new file mode 100644 index 0000000..5ff8690 --- /dev/null +++ b/canvas/index.html @@ -0,0 +1,90 @@ + + + +OpenClaw Canvas + +
+
+
+

OpenClaw Canvas

+
Interactive test page (auto-reload enabled)
+
+ +
+ + + + +
+ +
+
Ready.
+
+
+ diff --git a/completions/openclaw.bash b/completions/openclaw.bash new file mode 100644 index 0000000..58f606d --- /dev/null +++ b/completions/openclaw.bash @@ -0,0 +1,282 @@ + +_openclaw_completion() { + local cur prev opts + COMPREPLY=() + cur="${COMP_WORDS[COMP_CWORD]}" + prev="${COMP_WORDS[COMP_CWORD-1]}" + + # Simple top-level completion for now + opts="completion crestodian setup onboard configure config backup migrate doctor dashboard reset uninstall message mcp transcripts agent agents status health sessions commitments tasks acp gateway daemon logs system models infer approvals exec-policy nodes devices node sandbox tui cron dns docs proxy hooks webhooks qr clawbot pairing plugins channels directory security secrets skills update --version --container --dev --profile --log-level --no-color" + + case "${prev}" in + completion) + opts=" --shell --install --write-state --yes" + COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) ) + return 0 + ;; + crestodian) + opts=" --message --yes --json" + COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) ) + return 0 + ;; + setup) + opts=" --workspace --wizard --non-interactive --accept-risk --mode --import-from --import-source --import-secrets --remote-url --remote-token" + COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) ) + return 0 + ;; + onboard) + opts=" --workspace --reset --reset-scope --non-interactive --modern --accept-risk --flow --mode --auth-choice --token-provider --token --token-profile-id --token-expires-in --secret-input-mode --cloudflare-ai-gateway-account-id --cloudflare-ai-gateway-gateway-id --alibaba-model-studio-api-key --anthropic-api-key --byteplus-api-key --cohere-api-key --comfy-api-key --fal-api-key --github-copilot-token --gemini-api-key --huggingface-api-key --litellm-api-key --lmstudio-api-key --minimax-api-key --mistral-api-key --novita-api-key --nvidia-api-key --ollama-cloud-api-key --openai-api-key --opencode-zen-api-key --opencode-go-api-key --openrouter-api-key --runway-api-key --synthetic-api-key --together-api-key --volcengine-api-key --vydra-api-key --xai-api-key --xiaomi-api-key --xiaomi-token-plan-api-key --deepseek-api-key --arceeai-api-key --cerebras-api-key --chutes-api-key --cloudflare-ai-gateway-api-key --deepinfra-api-key --gmi-api-key --groq-api-key --kilocode-api-key --kimi-code-api-key --pixverse-api-key --qianfan-api-key --modelstudio-standard-api-key-cn --modelstudio-standard-api-key --modelstudio-api-key-cn --modelstudio-api-key --qwen-oauth-token --fireworks-api-key --moonshot-api-key --tokenhub-api-key --venice-api-key --ai-gateway-api-key --zai-api-key --stepfun-api-key --custom-base-url --custom-api-key --custom-model-id --custom-provider-id --custom-compatibility --custom-image-input --custom-text-input --gateway-port --gateway-bind --gateway-auth --gateway-token --gateway-token-ref-env --gateway-password --remote-url --remote-token --tailscale --tailscale-reset-on-exit --install-daemon --no-install-daemon --skip-daemon --daemon-runtime --skip-channels --skip-skills --skip-bootstrap --skip-search --skip-health --skip-ui --suppress-gateway-token-output --skip-hooks --node-manager --import-from --import-source --import-secrets --json" + COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) ) + return 0 + ;; + configure) + opts=" --section" + COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) ) + return 0 + ;; + config) + opts="get set patch unset file schema validate --section" + COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) ) + return 0 + ;; + backup) + opts="create verify " + COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) ) + return 0 + ;; + migrate) + opts="list plan apply --from --include-secrets --no-auth-credentials --overwrite --dry-run --yes --skill --plugin --backup-output --no-backup --force --json --verify-plugin-apps" + COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) ) + return 0 + ;; + doctor) + opts=" --no-workspace-suggestions --yes --repair --fix --force --non-interactive --generate-gateway-token --allow-exec --deep --lint --post-upgrade --json --severity-min --skip --only" + COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) ) + return 0 + ;; + dashboard) + opts=" --no-open --yes" + COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) ) + return 0 + ;; + reset) + opts=" --scope --yes --non-interactive --dry-run" + COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) ) + return 0 + ;; + uninstall) + opts=" --service --state --workspace --app --all --yes --non-interactive --dry-run" + COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) ) + return 0 + ;; + message) + opts="send broadcast poll react reactions read edit delete pin unpin pins permissions search thread emoji sticker role channel member voice event timeout kick ban " + COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) ) + return 0 + ;; + mcp) + opts="serve list show status probe doctor add set tools configure login logout reload unset " + COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) ) + return 0 + ;; + transcripts) + opts="list show path " + COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) ) + return 0 + ;; + agent) + opts=" --message --message-file --to --session-key --session-id --agent --model --thinking --verbose --channel --reply-to --reply-channel --reply-account --local --deliver --json --timeout" + COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) ) + return 0 + ;; + agents) + opts="list bindings bind unbind add set-identity delete " + COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) ) + return 0 + ;; + status) + opts=" --json --all --usage --deep --timeout --verbose --debug" + COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) ) + return 0 + ;; + health) + opts=" --json --timeout --verbose --debug" + COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) ) + return 0 + ;; + sessions) + opts="list cleanup tail export-trajectory compact --json --verbose --store --agent --all-agents --active --limit" + COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) ) + return 0 + ;; + commitments) + opts="list dismiss --json --agent --status --all" + COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) ) + return 0 + ;; + tasks) + opts="list audit maintenance show notify cancel flow --json --runtime --status" + COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) ) + return 0 + ;; + acp) + opts="client --url --token --token-file --password --password-file --session --session-label --require-existing --reset-session --no-prefix-cwd --provenance --verbose" + COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) ) + return 0 + ;; + gateway) + opts="run status install uninstall start stop restart call usage-cost health stability diagnostics probe discover --port --bind --token --auth --password --password-file --tailscale --tailscale-reset-on-exit --allow-unconfigured --dev --reset --force --verbose --cli-backend-logs --claude-cli-logs --ws-log --compact --raw-stream --raw-stream-path" + COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) ) + return 0 + ;; + daemon) + opts="status install uninstall start stop restart " + COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) ) + return 0 + ;; + logs) + opts=" --limit --max-bytes --follow --interval --json --plain --no-color --local-time --utc --url --token --timeout --expect-final" + COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) ) + return 0 + ;; + system) + opts="event heartbeat presence " + COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) ) + return 0 + ;; + models) + opts="list status set set-image aliases fallbacks image-fallbacks scan auth --status-json --status-plain --agent" + COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) ) + return 0 + ;; + infer) + opts="list inspect model image audio tts video web embedding " + COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) ) + return 0 + ;; + approvals) + opts="get set allowlist " + COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) ) + return 0 + ;; + exec-policy) + opts="show preset set " + COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) ) + return 0 + ;; + nodes) + opts="status describe list pending approve reject remove rename invoke notify push camera screen location " + COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) ) + return 0 + ;; + devices) + opts="list remove clear approve reject rotate revoke " + COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) ) + return 0 + ;; + node) + opts="run status install uninstall stop start restart " + COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) ) + return 0 + ;; + sandbox) + opts="list recreate explain " + COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) ) + return 0 + ;; + tui) + opts=" --local --url --token --password --session --deliver --thinking --message --timeout-ms --history-limit" + COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) ) + return 0 + ;; + cron) + opts="status list add rm enable disable get show runs run edit " + COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) ) + return 0 + ;; + dns) + opts="setup " + COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) ) + return 0 + ;; + docs) + opts=" " + COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) ) + return 0 + ;; + proxy) + opts="start run validate coverage sessions query blob purge " + COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) ) + return 0 + ;; + hooks) + opts="list info check enable disable relay install update " + COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) ) + return 0 + ;; + webhooks) + opts="gmail " + COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) ) + return 0 + ;; + qr) + opts=" --remote --url --public-url --token --password --setup-code-only --no-ascii --json" + COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) ) + return 0 + ;; + clawbot) + opts="qr " + COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) ) + return 0 + ;; + pairing) + opts="list approve " + COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) ) + return 0 + ;; + plugins) + opts="list search inspect enable disable uninstall install update registry doctor build validate init marketplace " + COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) ) + return 0 + ;; + channels) + opts="list status capabilities resolve logs add remove login logout " + COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) ) + return 0 + ;; + directory) + opts="self peers groups " + COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) ) + return 0 + ;; + security) + opts="audit " + COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) ) + return 0 + ;; + secrets) + opts="reload audit configure apply " + COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) ) + return 0 + ;; + skills) + opts="search install update verify workshop list info check --agent" + COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) ) + return 0 + ;; + update) + opts="repair finalize wizard status --json --no-restart --dry-run --channel --tag --timeout --yes" + COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) ) + return 0 + ;; + esac + + if [[ ${cur} == -* ]] ; then + COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) ) + return 0 + fi + + COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) ) +} + +complete -F _openclaw_completion openclaw diff --git a/completions/openclaw.fish b/completions/openclaw.fish new file mode 100644 index 0000000..74c9647 --- /dev/null +++ b/completions/openclaw.fish @@ -0,0 +1,2201 @@ + +function __openclaw_command_path_matches + set -l expected + set -l value_options + set -l reading_value_options 0 + for arg in $argv + if test "$arg" = "--" + set reading_value_options 1 + continue + end + if test $reading_value_options -eq 1 + set -a value_options $arg + else + set -a expected $arg + end + end + set -l tokens (commandline -opc) + set -e tokens[1] + set -l command_tokens + set -l skip_next 0 + for token in $tokens + if test $skip_next -eq 1 + set skip_next 0 + continue + end + set -l flag (string split -m1 "=" -- $token)[1] + if contains -- $flag $value_options + if not string match -q -- "*=*" $token + set skip_next 1 + end + continue + end + if string match -q -- "-*" $token + continue + end + set -a command_tokens $token + end + for i in (seq (count $expected)) + if test "$command_tokens[$i]" != "$expected[$i]" + return 1 + end + end + return 0 +end +complete -c openclaw -n "__fish_use_subcommand" -a "completion" -d 'Generate shell completion script' +complete -c openclaw -n "__fish_use_subcommand" -a "crestodian" -d 'Open the ring-zero setup and repair helper' +complete -c openclaw -n "__fish_use_subcommand" -a "setup" -d 'Create baseline config/workspace files; use --wizard for full onboarding' +complete -c openclaw -n "__fish_use_subcommand" -a "onboard" -d 'Guided setup for auth, models, Gateway, workspace, channels, and skills' +complete -c openclaw -n "__fish_use_subcommand" -a "configure" -d 'Interactive configuration for credentials, channels, gateway, and agent defaults' +complete -c openclaw -n "__fish_use_subcommand" -a "config" -d 'Non-interactive config helpers (get/set/patch/unset/file/schema/validate). Run without subcommand for guided setup.' +complete -c openclaw -n "__fish_use_subcommand" -a "backup" -d 'Create and verify local backup archives for OpenClaw state' +complete -c openclaw -n "__fish_use_subcommand" -a "migrate" -d 'Import state from another agent system' +complete -c openclaw -n "__fish_use_subcommand" -a "doctor" -d 'Health checks + quick fixes for the gateway and channels' +complete -c openclaw -n "__fish_use_subcommand" -a "dashboard" -d 'Open the Control UI with your current token' +complete -c openclaw -n "__fish_use_subcommand" -a "reset" -d 'Reset local config/state (keeps the CLI installed)' +complete -c openclaw -n "__fish_use_subcommand" -a "uninstall" -d 'Uninstall the gateway service + local data (CLI remains)' +complete -c openclaw -n "__fish_use_subcommand" -a "message" -d 'Send, read, and manage messages and channel actions' +complete -c openclaw -n "__fish_use_subcommand" -a "mcp" -d 'Manage OpenClaw mcp.servers config and channel bridge' +complete -c openclaw -n "__fish_use_subcommand" -a "transcripts" -d 'Inspect stored transcripts' +complete -c openclaw -n "__fish_use_subcommand" -a "agent" -d 'Run an agent turn via the Gateway (use --local for embedded)' +complete -c openclaw -n "__fish_use_subcommand" -a "agents" -d 'Manage isolated agents (workspaces + auth + routing)' +complete -c openclaw -n "__fish_use_subcommand" -a "status" -d 'Show channel health and recent session recipients' +complete -c openclaw -n "__fish_use_subcommand" -a "health" -d 'Fetch health from the running gateway' +complete -c openclaw -n "__fish_use_subcommand" -a "sessions" -d 'List stored conversation sessions' +complete -c openclaw -n "__fish_use_subcommand" -a "commitments" -d 'List and manage inferred follow-up commitments' +complete -c openclaw -n "__fish_use_subcommand" -a "tasks" -d 'Inspect durable background tasks and TaskFlow state' +complete -c openclaw -n "__fish_use_subcommand" -a "acp" -d 'Run an ACP bridge backed by the Gateway' +complete -c openclaw -n "__fish_use_subcommand" -a "gateway" -d 'Run, inspect, and query the WebSocket Gateway' +complete -c openclaw -n "__fish_use_subcommand" -a "daemon" -d 'Manage the Gateway service (launchd/systemd/schtasks)' +complete -c openclaw -n "__fish_use_subcommand" -a "logs" -d 'Tail gateway file logs via RPC' +complete -c openclaw -n "__fish_use_subcommand" -a "system" -d 'System tools (events, heartbeat, presence)' +complete -c openclaw -n "__fish_use_subcommand" -a "models" -d 'Model discovery, scanning, and configuration' +complete -c openclaw -n "__fish_use_subcommand" -a "infer" -d 'Run provider-backed inference commands through a stable CLI surface' +complete -c openclaw -n "__fish_use_subcommand" -a "approvals" -d 'Manage exec approvals (gateway or node host)' +complete -c openclaw -n "__fish_use_subcommand" -a "exec-policy" -d 'Show or synchronize requested exec policy with host approvals' +complete -c openclaw -n "__fish_use_subcommand" -a "nodes" -d 'Manage gateway-owned nodes (pairing, status, invoke, and media)' +complete -c openclaw -n "__fish_use_subcommand" -a "devices" -d 'Device pairing and auth tokens' +complete -c openclaw -n "__fish_use_subcommand" -a "node" -d 'Run and manage the headless node host service' +complete -c openclaw -n "__fish_use_subcommand" -a "sandbox" -d 'Manage sandbox containers (Docker-based agent isolation)' +complete -c openclaw -n "__fish_use_subcommand" -a "tui" -d 'Open a terminal UI connected to the Gateway' +complete -c openclaw -n "__fish_use_subcommand" -a "cron" -d 'Manage cron jobs (via Gateway)' +complete -c openclaw -n "__fish_use_subcommand" -a "dns" -d 'DNS helpers for wide-area discovery (Tailscale + CoreDNS)' +complete -c openclaw -n "__fish_use_subcommand" -a "docs" -d 'Search the live OpenClaw docs' +complete -c openclaw -n "__fish_use_subcommand" -a "proxy" -d 'Run the OpenClaw debug proxy and inspect captured traffic' +complete -c openclaw -n "__fish_use_subcommand" -a "hooks" -d 'Manage internal agent hooks' +complete -c openclaw -n "__fish_use_subcommand" -a "webhooks" -d 'Webhook helpers and integrations' +complete -c openclaw -n "__fish_use_subcommand" -a "qr" -d 'Generate a mobile pairing QR code and setup code' +complete -c openclaw -n "__fish_use_subcommand" -a "clawbot" -d 'Legacy clawbot command aliases' +complete -c openclaw -n "__fish_use_subcommand" -a "pairing" -d 'Secure DM pairing (approve inbound requests)' +complete -c openclaw -n "__fish_use_subcommand" -a "plugins" -d 'Manage OpenClaw plugins and extensions' +complete -c openclaw -n "__fish_use_subcommand" -a "channels" -d 'Manage connected chat channels and accounts' +complete -c openclaw -n "__fish_use_subcommand" -a "directory" -d 'Lookup contact and group IDs (self, peers, groups) for supported chat channels' +complete -c openclaw -n "__fish_use_subcommand" -a "security" -d 'Audit local config and state for common security foot-guns' +complete -c openclaw -n "__fish_use_subcommand" -a "secrets" -d 'Secrets runtime controls' +complete -c openclaw -n "__fish_use_subcommand" -a "skills" -d 'List and inspect available skills' +complete -c openclaw -n "__fish_use_subcommand" -a "update" -d 'Update OpenClaw and inspect update channel status' +complete -c openclaw -n "__fish_use_subcommand" -s V -l version -d 'output the version number' +complete -c openclaw -n "__fish_use_subcommand" -l container -d 'Run the CLI inside a running Podman/Docker container named (default: env OPENCLAW_CONTAINER)' +complete -c openclaw -n "__fish_use_subcommand" -l dev -d 'Dev profile: isolate state under ~/.openclaw-dev, default gateway port 19001, and shift derived ports (browser/canvas)' +complete -c openclaw -n "__fish_use_subcommand" -l profile -d 'Use a named profile (isolates OPENCLAW_STATE_DIR/OPENCLAW_CONFIG_PATH under ~/.openclaw-)' +complete -c openclaw -n "__fish_use_subcommand" -l log-level -d 'Global log level override for file + console (silent|fatal|error|warn|info|debug|trace)' +complete -c openclaw -n "__fish_use_subcommand" -l no-color -d 'Disable ANSI colors' +complete -c openclaw -n "__openclaw_command_path_matches completion -- --container --profile --log-level -s --shell" -s s -l shell -d 'Shell to generate completion for (default: zsh)' +complete -c openclaw -n "__openclaw_command_path_matches completion -- --container --profile --log-level -s --shell" -s i -l install -d 'Install completion script to shell profile' +complete -c openclaw -n "__openclaw_command_path_matches completion -- --container --profile --log-level -s --shell" -l write-state -d 'Write completion scripts to $OPENCLAW_STATE_DIR/completions (no stdout)' +complete -c openclaw -n "__openclaw_command_path_matches completion -- --container --profile --log-level -s --shell" -s y -l yes -d 'Skip confirmation (non-interactive)' +complete -c openclaw -n "__openclaw_command_path_matches crestodian -- --container --profile --log-level -m --message" -s m -l message -d 'Run one Crestodian request' +complete -c openclaw -n "__openclaw_command_path_matches crestodian -- --container --profile --log-level -m --message" -l yes -d 'Approve persistent config writes for this request' +complete -c openclaw -n "__openclaw_command_path_matches crestodian -- --container --profile --log-level -m --message" -l json -d 'Output startup overview as JSON' +complete -c openclaw -n "__openclaw_command_path_matches setup -- --container --profile --log-level --workspace --mode --import-from --import-source --remote-url --remote-token" -l workspace -d 'Agent workspace directory (default: ~/.openclaw/workspace; stored as agents.defaults.workspace)' +complete -c openclaw -n "__openclaw_command_path_matches setup -- --container --profile --log-level --workspace --mode --import-from --import-source --remote-url --remote-token" -l wizard -d 'Run interactive onboarding' +complete -c openclaw -n "__openclaw_command_path_matches setup -- --container --profile --log-level --workspace --mode --import-from --import-source --remote-url --remote-token" -l non-interactive -d 'Run onboarding without prompts' +complete -c openclaw -n "__openclaw_command_path_matches setup -- --container --profile --log-level --workspace --mode --import-from --import-source --remote-url --remote-token" -l accept-risk -d 'Acknowledge that agents are powerful and full system access is risky (required for --non-interactive)' +complete -c openclaw -n "__openclaw_command_path_matches setup -- --container --profile --log-level --workspace --mode --import-from --import-source --remote-url --remote-token" -l mode -d 'Onboard mode: local|remote' +complete -c openclaw -n "__openclaw_command_path_matches setup -- --container --profile --log-level --workspace --mode --import-from --import-source --remote-url --remote-token" -l import-from -d 'Migration provider to run during onboarding' +complete -c openclaw -n "__openclaw_command_path_matches setup -- --container --profile --log-level --workspace --mode --import-from --import-source --remote-url --remote-token" -l import-source -d 'Source agent home for --import-from' +complete -c openclaw -n "__openclaw_command_path_matches setup -- --container --profile --log-level --workspace --mode --import-from --import-source --remote-url --remote-token" -l import-secrets -d 'Import supported secrets during onboarding migration' +complete -c openclaw -n "__openclaw_command_path_matches setup -- --container --profile --log-level --workspace --mode --import-from --import-source --remote-url --remote-token" -l remote-url -d 'Remote Gateway WebSocket URL' +complete -c openclaw -n "__openclaw_command_path_matches setup -- --container --profile --log-level --workspace --mode --import-from --import-source --remote-url --remote-token" -l remote-token -d 'Remote Gateway token (optional)' +complete -c openclaw -n "__openclaw_command_path_matches onboard -- --container --profile --log-level --workspace --reset-scope --flow --mode --auth-choice --token-provider --token --token-profile-id --token-expires-in --secret-input-mode --cloudflare-ai-gateway-account-id --cloudflare-ai-gateway-gateway-id --alibaba-model-studio-api-key --anthropic-api-key --byteplus-api-key --cohere-api-key --comfy-api-key --fal-api-key --github-copilot-token --gemini-api-key --huggingface-api-key --litellm-api-key --lmstudio-api-key --minimax-api-key --mistral-api-key --novita-api-key --nvidia-api-key --ollama-cloud-api-key --openai-api-key --opencode-zen-api-key --opencode-go-api-key --openrouter-api-key --runway-api-key --synthetic-api-key --together-api-key --volcengine-api-key --vydra-api-key --xai-api-key --xiaomi-api-key --xiaomi-token-plan-api-key --deepseek-api-key --arceeai-api-key --cerebras-api-key --chutes-api-key --cloudflare-ai-gateway-api-key --deepinfra-api-key --gmi-api-key --groq-api-key --kilocode-api-key --kimi-code-api-key --pixverse-api-key --qianfan-api-key --modelstudio-standard-api-key-cn --modelstudio-standard-api-key --modelstudio-api-key-cn --modelstudio-api-key --qwen-oauth-token --fireworks-api-key --moonshot-api-key --tokenhub-api-key --venice-api-key --ai-gateway-api-key --zai-api-key --stepfun-api-key --custom-base-url --custom-api-key --custom-model-id --custom-provider-id --custom-compatibility --gateway-port --gateway-bind --gateway-auth --gateway-token --gateway-token-ref-env --gateway-password --remote-url --remote-token --tailscale --daemon-runtime --node-manager --import-from --import-source" -l workspace -d 'Agent workspace directory (default: ~/.openclaw/workspace)' +complete -c openclaw -n "__openclaw_command_path_matches onboard -- --container --profile --log-level --workspace --reset-scope --flow --mode --auth-choice --token-provider --token --token-profile-id --token-expires-in --secret-input-mode --cloudflare-ai-gateway-account-id --cloudflare-ai-gateway-gateway-id --alibaba-model-studio-api-key --anthropic-api-key --byteplus-api-key --cohere-api-key --comfy-api-key --fal-api-key --github-copilot-token --gemini-api-key --huggingface-api-key --litellm-api-key --lmstudio-api-key --minimax-api-key --mistral-api-key --novita-api-key --nvidia-api-key --ollama-cloud-api-key --openai-api-key --opencode-zen-api-key --opencode-go-api-key --openrouter-api-key --runway-api-key --synthetic-api-key --together-api-key --volcengine-api-key --vydra-api-key --xai-api-key --xiaomi-api-key --xiaomi-token-plan-api-key --deepseek-api-key --arceeai-api-key --cerebras-api-key --chutes-api-key --cloudflare-ai-gateway-api-key --deepinfra-api-key --gmi-api-key --groq-api-key --kilocode-api-key --kimi-code-api-key --pixverse-api-key --qianfan-api-key --modelstudio-standard-api-key-cn --modelstudio-standard-api-key --modelstudio-api-key-cn --modelstudio-api-key --qwen-oauth-token --fireworks-api-key --moonshot-api-key --tokenhub-api-key --venice-api-key --ai-gateway-api-key --zai-api-key --stepfun-api-key --custom-base-url --custom-api-key --custom-model-id --custom-provider-id --custom-compatibility --gateway-port --gateway-bind --gateway-auth --gateway-token --gateway-token-ref-env --gateway-password --remote-url --remote-token --tailscale --daemon-runtime --node-manager --import-from --import-source" -l reset -d 'Reset config + credentials + sessions before running onboard (workspace only with --reset-scope full)' +complete -c openclaw -n "__openclaw_command_path_matches onboard -- --container --profile --log-level --workspace --reset-scope --flow --mode --auth-choice --token-provider --token --token-profile-id --token-expires-in --secret-input-mode --cloudflare-ai-gateway-account-id --cloudflare-ai-gateway-gateway-id --alibaba-model-studio-api-key --anthropic-api-key --byteplus-api-key --cohere-api-key --comfy-api-key --fal-api-key --github-copilot-token --gemini-api-key --huggingface-api-key --litellm-api-key --lmstudio-api-key --minimax-api-key --mistral-api-key --novita-api-key --nvidia-api-key --ollama-cloud-api-key --openai-api-key --opencode-zen-api-key --opencode-go-api-key --openrouter-api-key --runway-api-key --synthetic-api-key --together-api-key --volcengine-api-key --vydra-api-key --xai-api-key --xiaomi-api-key --xiaomi-token-plan-api-key --deepseek-api-key --arceeai-api-key --cerebras-api-key --chutes-api-key --cloudflare-ai-gateway-api-key --deepinfra-api-key --gmi-api-key --groq-api-key --kilocode-api-key --kimi-code-api-key --pixverse-api-key --qianfan-api-key --modelstudio-standard-api-key-cn --modelstudio-standard-api-key --modelstudio-api-key-cn --modelstudio-api-key --qwen-oauth-token --fireworks-api-key --moonshot-api-key --tokenhub-api-key --venice-api-key --ai-gateway-api-key --zai-api-key --stepfun-api-key --custom-base-url --custom-api-key --custom-model-id --custom-provider-id --custom-compatibility --gateway-port --gateway-bind --gateway-auth --gateway-token --gateway-token-ref-env --gateway-password --remote-url --remote-token --tailscale --daemon-runtime --node-manager --import-from --import-source" -l reset-scope -d 'Reset scope: config|config+creds+sessions|full' +complete -c openclaw -n "__openclaw_command_path_matches onboard -- --container --profile --log-level --workspace --reset-scope --flow --mode --auth-choice --token-provider --token --token-profile-id --token-expires-in --secret-input-mode --cloudflare-ai-gateway-account-id --cloudflare-ai-gateway-gateway-id --alibaba-model-studio-api-key --anthropic-api-key --byteplus-api-key --cohere-api-key --comfy-api-key --fal-api-key --github-copilot-token --gemini-api-key --huggingface-api-key --litellm-api-key --lmstudio-api-key --minimax-api-key --mistral-api-key --novita-api-key --nvidia-api-key --ollama-cloud-api-key --openai-api-key --opencode-zen-api-key --opencode-go-api-key --openrouter-api-key --runway-api-key --synthetic-api-key --together-api-key --volcengine-api-key --vydra-api-key --xai-api-key --xiaomi-api-key --xiaomi-token-plan-api-key --deepseek-api-key --arceeai-api-key --cerebras-api-key --chutes-api-key --cloudflare-ai-gateway-api-key --deepinfra-api-key --gmi-api-key --groq-api-key --kilocode-api-key --kimi-code-api-key --pixverse-api-key --qianfan-api-key --modelstudio-standard-api-key-cn --modelstudio-standard-api-key --modelstudio-api-key-cn --modelstudio-api-key --qwen-oauth-token --fireworks-api-key --moonshot-api-key --tokenhub-api-key --venice-api-key --ai-gateway-api-key --zai-api-key --stepfun-api-key --custom-base-url --custom-api-key --custom-model-id --custom-provider-id --custom-compatibility --gateway-port --gateway-bind --gateway-auth --gateway-token --gateway-token-ref-env --gateway-password --remote-url --remote-token --tailscale --daemon-runtime --node-manager --import-from --import-source" -l non-interactive -d 'Run without prompts' +complete -c openclaw -n "__openclaw_command_path_matches onboard -- --container --profile --log-level --workspace --reset-scope --flow --mode --auth-choice --token-provider --token --token-profile-id --token-expires-in --secret-input-mode --cloudflare-ai-gateway-account-id --cloudflare-ai-gateway-gateway-id --alibaba-model-studio-api-key --anthropic-api-key --byteplus-api-key --cohere-api-key --comfy-api-key --fal-api-key --github-copilot-token --gemini-api-key --huggingface-api-key --litellm-api-key --lmstudio-api-key --minimax-api-key --mistral-api-key --novita-api-key --nvidia-api-key --ollama-cloud-api-key --openai-api-key --opencode-zen-api-key --opencode-go-api-key --openrouter-api-key --runway-api-key --synthetic-api-key --together-api-key --volcengine-api-key --vydra-api-key --xai-api-key --xiaomi-api-key --xiaomi-token-plan-api-key --deepseek-api-key --arceeai-api-key --cerebras-api-key --chutes-api-key --cloudflare-ai-gateway-api-key --deepinfra-api-key --gmi-api-key --groq-api-key --kilocode-api-key --kimi-code-api-key --pixverse-api-key --qianfan-api-key --modelstudio-standard-api-key-cn --modelstudio-standard-api-key --modelstudio-api-key-cn --modelstudio-api-key --qwen-oauth-token --fireworks-api-key --moonshot-api-key --tokenhub-api-key --venice-api-key --ai-gateway-api-key --zai-api-key --stepfun-api-key --custom-base-url --custom-api-key --custom-model-id --custom-provider-id --custom-compatibility --gateway-port --gateway-bind --gateway-auth --gateway-token --gateway-token-ref-env --gateway-password --remote-url --remote-token --tailscale --daemon-runtime --node-manager --import-from --import-source" -l modern -d 'Use the conversational setup/repair assistant' +complete -c openclaw -n "__openclaw_command_path_matches onboard -- --container --profile --log-level --workspace --reset-scope --flow --mode --auth-choice --token-provider --token --token-profile-id --token-expires-in --secret-input-mode --cloudflare-ai-gateway-account-id --cloudflare-ai-gateway-gateway-id --alibaba-model-studio-api-key --anthropic-api-key --byteplus-api-key --cohere-api-key --comfy-api-key --fal-api-key --github-copilot-token --gemini-api-key --huggingface-api-key --litellm-api-key --lmstudio-api-key --minimax-api-key --mistral-api-key --novita-api-key --nvidia-api-key --ollama-cloud-api-key --openai-api-key --opencode-zen-api-key --opencode-go-api-key --openrouter-api-key --runway-api-key --synthetic-api-key --together-api-key --volcengine-api-key --vydra-api-key --xai-api-key --xiaomi-api-key --xiaomi-token-plan-api-key --deepseek-api-key --arceeai-api-key --cerebras-api-key --chutes-api-key --cloudflare-ai-gateway-api-key --deepinfra-api-key --gmi-api-key --groq-api-key --kilocode-api-key --kimi-code-api-key --pixverse-api-key --qianfan-api-key --modelstudio-standard-api-key-cn --modelstudio-standard-api-key --modelstudio-api-key-cn --modelstudio-api-key --qwen-oauth-token --fireworks-api-key --moonshot-api-key --tokenhub-api-key --venice-api-key --ai-gateway-api-key --zai-api-key --stepfun-api-key --custom-base-url --custom-api-key --custom-model-id --custom-provider-id --custom-compatibility --gateway-port --gateway-bind --gateway-auth --gateway-token --gateway-token-ref-env --gateway-password --remote-url --remote-token --tailscale --daemon-runtime --node-manager --import-from --import-source" -l accept-risk -d 'Acknowledge that agents are powerful and full system access is risky (required for --non-interactive)' +complete -c openclaw -n "__openclaw_command_path_matches onboard -- --container --profile --log-level --workspace --reset-scope --flow --mode --auth-choice --token-provider --token --token-profile-id --token-expires-in --secret-input-mode --cloudflare-ai-gateway-account-id --cloudflare-ai-gateway-gateway-id --alibaba-model-studio-api-key --anthropic-api-key --byteplus-api-key --cohere-api-key --comfy-api-key --fal-api-key --github-copilot-token --gemini-api-key --huggingface-api-key --litellm-api-key --lmstudio-api-key --minimax-api-key --mistral-api-key --novita-api-key --nvidia-api-key --ollama-cloud-api-key --openai-api-key --opencode-zen-api-key --opencode-go-api-key --openrouter-api-key --runway-api-key --synthetic-api-key --together-api-key --volcengine-api-key --vydra-api-key --xai-api-key --xiaomi-api-key --xiaomi-token-plan-api-key --deepseek-api-key --arceeai-api-key --cerebras-api-key --chutes-api-key --cloudflare-ai-gateway-api-key --deepinfra-api-key --gmi-api-key --groq-api-key --kilocode-api-key --kimi-code-api-key --pixverse-api-key --qianfan-api-key --modelstudio-standard-api-key-cn --modelstudio-standard-api-key --modelstudio-api-key-cn --modelstudio-api-key --qwen-oauth-token --fireworks-api-key --moonshot-api-key --tokenhub-api-key --venice-api-key --ai-gateway-api-key --zai-api-key --stepfun-api-key --custom-base-url --custom-api-key --custom-model-id --custom-provider-id --custom-compatibility --gateway-port --gateway-bind --gateway-auth --gateway-token --gateway-token-ref-env --gateway-password --remote-url --remote-token --tailscale --daemon-runtime --node-manager --import-from --import-source" -l flow -d 'Onboard flow: quickstart|advanced|manual|import' +complete -c openclaw -n "__openclaw_command_path_matches onboard -- --container --profile --log-level --workspace --reset-scope --flow --mode --auth-choice --token-provider --token --token-profile-id --token-expires-in --secret-input-mode --cloudflare-ai-gateway-account-id --cloudflare-ai-gateway-gateway-id --alibaba-model-studio-api-key --anthropic-api-key --byteplus-api-key --cohere-api-key --comfy-api-key --fal-api-key --github-copilot-token --gemini-api-key --huggingface-api-key --litellm-api-key --lmstudio-api-key --minimax-api-key --mistral-api-key --novita-api-key --nvidia-api-key --ollama-cloud-api-key --openai-api-key --opencode-zen-api-key --opencode-go-api-key --openrouter-api-key --runway-api-key --synthetic-api-key --together-api-key --volcengine-api-key --vydra-api-key --xai-api-key --xiaomi-api-key --xiaomi-token-plan-api-key --deepseek-api-key --arceeai-api-key --cerebras-api-key --chutes-api-key --cloudflare-ai-gateway-api-key --deepinfra-api-key --gmi-api-key --groq-api-key --kilocode-api-key --kimi-code-api-key --pixverse-api-key --qianfan-api-key --modelstudio-standard-api-key-cn --modelstudio-standard-api-key --modelstudio-api-key-cn --modelstudio-api-key --qwen-oauth-token --fireworks-api-key --moonshot-api-key --tokenhub-api-key --venice-api-key --ai-gateway-api-key --zai-api-key --stepfun-api-key --custom-base-url --custom-api-key --custom-model-id --custom-provider-id --custom-compatibility --gateway-port --gateway-bind --gateway-auth --gateway-token --gateway-token-ref-env --gateway-password --remote-url --remote-token --tailscale --daemon-runtime --node-manager --import-from --import-source" -l mode -d 'Onboard mode: local|remote' +complete -c openclaw -n "__openclaw_command_path_matches onboard -- --container --profile --log-level --workspace --reset-scope --flow --mode --auth-choice --token-provider --token --token-profile-id --token-expires-in --secret-input-mode --cloudflare-ai-gateway-account-id --cloudflare-ai-gateway-gateway-id --alibaba-model-studio-api-key --anthropic-api-key --byteplus-api-key --cohere-api-key --comfy-api-key --fal-api-key --github-copilot-token --gemini-api-key --huggingface-api-key --litellm-api-key --lmstudio-api-key --minimax-api-key --mistral-api-key --novita-api-key --nvidia-api-key --ollama-cloud-api-key --openai-api-key --opencode-zen-api-key --opencode-go-api-key --openrouter-api-key --runway-api-key --synthetic-api-key --together-api-key --volcengine-api-key --vydra-api-key --xai-api-key --xiaomi-api-key --xiaomi-token-plan-api-key --deepseek-api-key --arceeai-api-key --cerebras-api-key --chutes-api-key --cloudflare-ai-gateway-api-key --deepinfra-api-key --gmi-api-key --groq-api-key --kilocode-api-key --kimi-code-api-key --pixverse-api-key --qianfan-api-key --modelstudio-standard-api-key-cn --modelstudio-standard-api-key --modelstudio-api-key-cn --modelstudio-api-key --qwen-oauth-token --fireworks-api-key --moonshot-api-key --tokenhub-api-key --venice-api-key --ai-gateway-api-key --zai-api-key --stepfun-api-key --custom-base-url --custom-api-key --custom-model-id --custom-provider-id --custom-compatibility --gateway-port --gateway-bind --gateway-auth --gateway-token --gateway-token-ref-env --gateway-password --remote-url --remote-token --tailscale --daemon-runtime --node-manager --import-from --import-source" -l auth-choice -d 'Auth: custom-api-key|skip|claude-cli|apiKey|anthropic-cli|setup-token|arceeai-api-key|byteplus-api-key|cerebras-api-key|openai-device-code|openai|chutes|chutes-api-key|cloudflare-ai-gateway-api-key|zai-cn|codex|qwen-api-key-cn|qwen-api-key|zai-coding-cn|zai-coding-global|cohere-api-key|copilot-proxy|deepinfra-api-key|deepseek-api-key|fireworks-api-key|google-gemini-cli|github-copilot|zai-global|gmi-api-key|gemini-api-key|google-vertex-api-key|groq-api-key|huggingface-api-key|kilocode-api-key|kimi-code-api-key|litellm-api-key|lmstudio|microsoft-foundry-apikey|microsoft-foundry-entra|minimax-cn-api|minimax-global-api|minimax-cn-oauth|minimax-global-oauth|mistral-api-key|moonshot-api-key|moonshot-api-key-cn|novita-api-key|nvidia-api-key|ollama|ollama-cloud|openai-api-key|opencode-go|opencode-zen|arceeai-openrouter|openrouter-api-key|openrouter-oauth|qianfan-api-key|qwen-oauth|sglang|qwen-standard-api-key-cn|qwen-standard-api-key|stepfun-standard-api-key-cn|stepfun-standard-api-key-intl|stepfun-plan-api-key-cn|stepfun-plan-api-key-intl|synthetic-api-key|tokenhub-api-key|together-api-key|venice-api-key|ai-gateway-api-key|vllm|volcengine-api-key|xai-api-key|xai-device-code|xai-oauth|xiaomi-api-key|xiaomi-token-plan-cn|xiaomi-token-plan-ams|xiaomi-token-plan-sgp|zai-api-key' +complete -c openclaw -n "__openclaw_command_path_matches onboard -- --container --profile --log-level --workspace --reset-scope --flow --mode --auth-choice --token-provider --token --token-profile-id --token-expires-in --secret-input-mode --cloudflare-ai-gateway-account-id --cloudflare-ai-gateway-gateway-id --alibaba-model-studio-api-key --anthropic-api-key --byteplus-api-key --cohere-api-key --comfy-api-key --fal-api-key --github-copilot-token --gemini-api-key --huggingface-api-key --litellm-api-key --lmstudio-api-key --minimax-api-key --mistral-api-key --novita-api-key --nvidia-api-key --ollama-cloud-api-key --openai-api-key --opencode-zen-api-key --opencode-go-api-key --openrouter-api-key --runway-api-key --synthetic-api-key --together-api-key --volcengine-api-key --vydra-api-key --xai-api-key --xiaomi-api-key --xiaomi-token-plan-api-key --deepseek-api-key --arceeai-api-key --cerebras-api-key --chutes-api-key --cloudflare-ai-gateway-api-key --deepinfra-api-key --gmi-api-key --groq-api-key --kilocode-api-key --kimi-code-api-key --pixverse-api-key --qianfan-api-key --modelstudio-standard-api-key-cn --modelstudio-standard-api-key --modelstudio-api-key-cn --modelstudio-api-key --qwen-oauth-token --fireworks-api-key --moonshot-api-key --tokenhub-api-key --venice-api-key --ai-gateway-api-key --zai-api-key --stepfun-api-key --custom-base-url --custom-api-key --custom-model-id --custom-provider-id --custom-compatibility --gateway-port --gateway-bind --gateway-auth --gateway-token --gateway-token-ref-env --gateway-password --remote-url --remote-token --tailscale --daemon-runtime --node-manager --import-from --import-source" -l token-provider -d 'Token provider id (non-interactive; used with --auth-choice token)' +complete -c openclaw -n "__openclaw_command_path_matches onboard -- --container --profile --log-level --workspace --reset-scope --flow --mode --auth-choice --token-provider --token --token-profile-id --token-expires-in --secret-input-mode --cloudflare-ai-gateway-account-id --cloudflare-ai-gateway-gateway-id --alibaba-model-studio-api-key --anthropic-api-key --byteplus-api-key --cohere-api-key --comfy-api-key --fal-api-key --github-copilot-token --gemini-api-key --huggingface-api-key --litellm-api-key --lmstudio-api-key --minimax-api-key --mistral-api-key --novita-api-key --nvidia-api-key --ollama-cloud-api-key --openai-api-key --opencode-zen-api-key --opencode-go-api-key --openrouter-api-key --runway-api-key --synthetic-api-key --together-api-key --volcengine-api-key --vydra-api-key --xai-api-key --xiaomi-api-key --xiaomi-token-plan-api-key --deepseek-api-key --arceeai-api-key --cerebras-api-key --chutes-api-key --cloudflare-ai-gateway-api-key --deepinfra-api-key --gmi-api-key --groq-api-key --kilocode-api-key --kimi-code-api-key --pixverse-api-key --qianfan-api-key --modelstudio-standard-api-key-cn --modelstudio-standard-api-key --modelstudio-api-key-cn --modelstudio-api-key --qwen-oauth-token --fireworks-api-key --moonshot-api-key --tokenhub-api-key --venice-api-key --ai-gateway-api-key --zai-api-key --stepfun-api-key --custom-base-url --custom-api-key --custom-model-id --custom-provider-id --custom-compatibility --gateway-port --gateway-bind --gateway-auth --gateway-token --gateway-token-ref-env --gateway-password --remote-url --remote-token --tailscale --daemon-runtime --node-manager --import-from --import-source" -l token -d 'Token value (non-interactive; used with --auth-choice token)' +complete -c openclaw -n "__openclaw_command_path_matches onboard -- --container --profile --log-level --workspace --reset-scope --flow --mode --auth-choice --token-provider --token --token-profile-id --token-expires-in --secret-input-mode --cloudflare-ai-gateway-account-id --cloudflare-ai-gateway-gateway-id --alibaba-model-studio-api-key --anthropic-api-key --byteplus-api-key --cohere-api-key --comfy-api-key --fal-api-key --github-copilot-token --gemini-api-key --huggingface-api-key --litellm-api-key --lmstudio-api-key --minimax-api-key --mistral-api-key --novita-api-key --nvidia-api-key --ollama-cloud-api-key --openai-api-key --opencode-zen-api-key --opencode-go-api-key --openrouter-api-key --runway-api-key --synthetic-api-key --together-api-key --volcengine-api-key --vydra-api-key --xai-api-key --xiaomi-api-key --xiaomi-token-plan-api-key --deepseek-api-key --arceeai-api-key --cerebras-api-key --chutes-api-key --cloudflare-ai-gateway-api-key --deepinfra-api-key --gmi-api-key --groq-api-key --kilocode-api-key --kimi-code-api-key --pixverse-api-key --qianfan-api-key --modelstudio-standard-api-key-cn --modelstudio-standard-api-key --modelstudio-api-key-cn --modelstudio-api-key --qwen-oauth-token --fireworks-api-key --moonshot-api-key --tokenhub-api-key --venice-api-key --ai-gateway-api-key --zai-api-key --stepfun-api-key --custom-base-url --custom-api-key --custom-model-id --custom-provider-id --custom-compatibility --gateway-port --gateway-bind --gateway-auth --gateway-token --gateway-token-ref-env --gateway-password --remote-url --remote-token --tailscale --daemon-runtime --node-manager --import-from --import-source" -l token-profile-id -d 'Auth profile id (non-interactive; default: :manual)' +complete -c openclaw -n "__openclaw_command_path_matches onboard -- --container --profile --log-level --workspace --reset-scope --flow --mode --auth-choice --token-provider --token --token-profile-id --token-expires-in --secret-input-mode --cloudflare-ai-gateway-account-id --cloudflare-ai-gateway-gateway-id --alibaba-model-studio-api-key --anthropic-api-key --byteplus-api-key --cohere-api-key --comfy-api-key --fal-api-key --github-copilot-token --gemini-api-key --huggingface-api-key --litellm-api-key --lmstudio-api-key --minimax-api-key --mistral-api-key --novita-api-key --nvidia-api-key --ollama-cloud-api-key --openai-api-key --opencode-zen-api-key --opencode-go-api-key --openrouter-api-key --runway-api-key --synthetic-api-key --together-api-key --volcengine-api-key --vydra-api-key --xai-api-key --xiaomi-api-key --xiaomi-token-plan-api-key --deepseek-api-key --arceeai-api-key --cerebras-api-key --chutes-api-key --cloudflare-ai-gateway-api-key --deepinfra-api-key --gmi-api-key --groq-api-key --kilocode-api-key --kimi-code-api-key --pixverse-api-key --qianfan-api-key --modelstudio-standard-api-key-cn --modelstudio-standard-api-key --modelstudio-api-key-cn --modelstudio-api-key --qwen-oauth-token --fireworks-api-key --moonshot-api-key --tokenhub-api-key --venice-api-key --ai-gateway-api-key --zai-api-key --stepfun-api-key --custom-base-url --custom-api-key --custom-model-id --custom-provider-id --custom-compatibility --gateway-port --gateway-bind --gateway-auth --gateway-token --gateway-token-ref-env --gateway-password --remote-url --remote-token --tailscale --daemon-runtime --node-manager --import-from --import-source" -l token-expires-in -d 'Optional token expiry duration (e.g. 365d, 12h)' +complete -c openclaw -n "__openclaw_command_path_matches onboard -- --container --profile --log-level --workspace --reset-scope --flow --mode --auth-choice --token-provider --token --token-profile-id --token-expires-in --secret-input-mode --cloudflare-ai-gateway-account-id --cloudflare-ai-gateway-gateway-id --alibaba-model-studio-api-key --anthropic-api-key --byteplus-api-key --cohere-api-key --comfy-api-key --fal-api-key --github-copilot-token --gemini-api-key --huggingface-api-key --litellm-api-key --lmstudio-api-key --minimax-api-key --mistral-api-key --novita-api-key --nvidia-api-key --ollama-cloud-api-key --openai-api-key --opencode-zen-api-key --opencode-go-api-key --openrouter-api-key --runway-api-key --synthetic-api-key --together-api-key --volcengine-api-key --vydra-api-key --xai-api-key --xiaomi-api-key --xiaomi-token-plan-api-key --deepseek-api-key --arceeai-api-key --cerebras-api-key --chutes-api-key --cloudflare-ai-gateway-api-key --deepinfra-api-key --gmi-api-key --groq-api-key --kilocode-api-key --kimi-code-api-key --pixverse-api-key --qianfan-api-key --modelstudio-standard-api-key-cn --modelstudio-standard-api-key --modelstudio-api-key-cn --modelstudio-api-key --qwen-oauth-token --fireworks-api-key --moonshot-api-key --tokenhub-api-key --venice-api-key --ai-gateway-api-key --zai-api-key --stepfun-api-key --custom-base-url --custom-api-key --custom-model-id --custom-provider-id --custom-compatibility --gateway-port --gateway-bind --gateway-auth --gateway-token --gateway-token-ref-env --gateway-password --remote-url --remote-token --tailscale --daemon-runtime --node-manager --import-from --import-source" -l secret-input-mode -d 'API key persistence mode: plaintext|ref (default: plaintext)' +complete -c openclaw -n "__openclaw_command_path_matches onboard -- --container --profile --log-level --workspace --reset-scope --flow --mode --auth-choice --token-provider --token --token-profile-id --token-expires-in --secret-input-mode --cloudflare-ai-gateway-account-id --cloudflare-ai-gateway-gateway-id --alibaba-model-studio-api-key --anthropic-api-key --byteplus-api-key --cohere-api-key --comfy-api-key --fal-api-key --github-copilot-token --gemini-api-key --huggingface-api-key --litellm-api-key --lmstudio-api-key --minimax-api-key --mistral-api-key --novita-api-key --nvidia-api-key --ollama-cloud-api-key --openai-api-key --opencode-zen-api-key --opencode-go-api-key --openrouter-api-key --runway-api-key --synthetic-api-key --together-api-key --volcengine-api-key --vydra-api-key --xai-api-key --xiaomi-api-key --xiaomi-token-plan-api-key --deepseek-api-key --arceeai-api-key --cerebras-api-key --chutes-api-key --cloudflare-ai-gateway-api-key --deepinfra-api-key --gmi-api-key --groq-api-key --kilocode-api-key --kimi-code-api-key --pixverse-api-key --qianfan-api-key --modelstudio-standard-api-key-cn --modelstudio-standard-api-key --modelstudio-api-key-cn --modelstudio-api-key --qwen-oauth-token --fireworks-api-key --moonshot-api-key --tokenhub-api-key --venice-api-key --ai-gateway-api-key --zai-api-key --stepfun-api-key --custom-base-url --custom-api-key --custom-model-id --custom-provider-id --custom-compatibility --gateway-port --gateway-bind --gateway-auth --gateway-token --gateway-token-ref-env --gateway-password --remote-url --remote-token --tailscale --daemon-runtime --node-manager --import-from --import-source" -l cloudflare-ai-gateway-account-id -d 'Cloudflare Account ID' +complete -c openclaw -n "__openclaw_command_path_matches onboard -- --container --profile --log-level --workspace --reset-scope --flow --mode --auth-choice --token-provider --token --token-profile-id --token-expires-in --secret-input-mode --cloudflare-ai-gateway-account-id --cloudflare-ai-gateway-gateway-id --alibaba-model-studio-api-key --anthropic-api-key --byteplus-api-key --cohere-api-key --comfy-api-key --fal-api-key --github-copilot-token --gemini-api-key --huggingface-api-key --litellm-api-key --lmstudio-api-key --minimax-api-key --mistral-api-key --novita-api-key --nvidia-api-key --ollama-cloud-api-key --openai-api-key --opencode-zen-api-key --opencode-go-api-key --openrouter-api-key --runway-api-key --synthetic-api-key --together-api-key --volcengine-api-key --vydra-api-key --xai-api-key --xiaomi-api-key --xiaomi-token-plan-api-key --deepseek-api-key --arceeai-api-key --cerebras-api-key --chutes-api-key --cloudflare-ai-gateway-api-key --deepinfra-api-key --gmi-api-key --groq-api-key --kilocode-api-key --kimi-code-api-key --pixverse-api-key --qianfan-api-key --modelstudio-standard-api-key-cn --modelstudio-standard-api-key --modelstudio-api-key-cn --modelstudio-api-key --qwen-oauth-token --fireworks-api-key --moonshot-api-key --tokenhub-api-key --venice-api-key --ai-gateway-api-key --zai-api-key --stepfun-api-key --custom-base-url --custom-api-key --custom-model-id --custom-provider-id --custom-compatibility --gateway-port --gateway-bind --gateway-auth --gateway-token --gateway-token-ref-env --gateway-password --remote-url --remote-token --tailscale --daemon-runtime --node-manager --import-from --import-source" -l cloudflare-ai-gateway-gateway-id -d 'Cloudflare AI Gateway ID' +complete -c openclaw -n "__openclaw_command_path_matches onboard -- --container --profile --log-level --workspace --reset-scope --flow --mode --auth-choice --token-provider --token --token-profile-id --token-expires-in --secret-input-mode --cloudflare-ai-gateway-account-id --cloudflare-ai-gateway-gateway-id --alibaba-model-studio-api-key --anthropic-api-key --byteplus-api-key --cohere-api-key --comfy-api-key --fal-api-key --github-copilot-token --gemini-api-key --huggingface-api-key --litellm-api-key --lmstudio-api-key --minimax-api-key --mistral-api-key --novita-api-key --nvidia-api-key --ollama-cloud-api-key --openai-api-key --opencode-zen-api-key --opencode-go-api-key --openrouter-api-key --runway-api-key --synthetic-api-key --together-api-key --volcengine-api-key --vydra-api-key --xai-api-key --xiaomi-api-key --xiaomi-token-plan-api-key --deepseek-api-key --arceeai-api-key --cerebras-api-key --chutes-api-key --cloudflare-ai-gateway-api-key --deepinfra-api-key --gmi-api-key --groq-api-key --kilocode-api-key --kimi-code-api-key --pixverse-api-key --qianfan-api-key --modelstudio-standard-api-key-cn --modelstudio-standard-api-key --modelstudio-api-key-cn --modelstudio-api-key --qwen-oauth-token --fireworks-api-key --moonshot-api-key --tokenhub-api-key --venice-api-key --ai-gateway-api-key --zai-api-key --stepfun-api-key --custom-base-url --custom-api-key --custom-model-id --custom-provider-id --custom-compatibility --gateway-port --gateway-bind --gateway-auth --gateway-token --gateway-token-ref-env --gateway-password --remote-url --remote-token --tailscale --daemon-runtime --node-manager --import-from --import-source" -l alibaba-model-studio-api-key -d 'Alibaba Model Studio API key' +complete -c openclaw -n "__openclaw_command_path_matches onboard -- --container --profile --log-level --workspace --reset-scope --flow --mode --auth-choice --token-provider --token --token-profile-id --token-expires-in --secret-input-mode --cloudflare-ai-gateway-account-id --cloudflare-ai-gateway-gateway-id --alibaba-model-studio-api-key --anthropic-api-key --byteplus-api-key --cohere-api-key --comfy-api-key --fal-api-key --github-copilot-token --gemini-api-key --huggingface-api-key --litellm-api-key --lmstudio-api-key --minimax-api-key --mistral-api-key --novita-api-key --nvidia-api-key --ollama-cloud-api-key --openai-api-key --opencode-zen-api-key --opencode-go-api-key --openrouter-api-key --runway-api-key --synthetic-api-key --together-api-key --volcengine-api-key --vydra-api-key --xai-api-key --xiaomi-api-key --xiaomi-token-plan-api-key --deepseek-api-key --arceeai-api-key --cerebras-api-key --chutes-api-key --cloudflare-ai-gateway-api-key --deepinfra-api-key --gmi-api-key --groq-api-key --kilocode-api-key --kimi-code-api-key --pixverse-api-key --qianfan-api-key --modelstudio-standard-api-key-cn --modelstudio-standard-api-key --modelstudio-api-key-cn --modelstudio-api-key --qwen-oauth-token --fireworks-api-key --moonshot-api-key --tokenhub-api-key --venice-api-key --ai-gateway-api-key --zai-api-key --stepfun-api-key --custom-base-url --custom-api-key --custom-model-id --custom-provider-id --custom-compatibility --gateway-port --gateway-bind --gateway-auth --gateway-token --gateway-token-ref-env --gateway-password --remote-url --remote-token --tailscale --daemon-runtime --node-manager --import-from --import-source" -l anthropic-api-key -d 'Anthropic API key' +complete -c openclaw -n "__openclaw_command_path_matches onboard -- --container --profile --log-level --workspace --reset-scope --flow --mode --auth-choice --token-provider --token --token-profile-id --token-expires-in --secret-input-mode --cloudflare-ai-gateway-account-id --cloudflare-ai-gateway-gateway-id --alibaba-model-studio-api-key --anthropic-api-key --byteplus-api-key --cohere-api-key --comfy-api-key --fal-api-key --github-copilot-token --gemini-api-key --huggingface-api-key --litellm-api-key --lmstudio-api-key --minimax-api-key --mistral-api-key --novita-api-key --nvidia-api-key --ollama-cloud-api-key --openai-api-key --opencode-zen-api-key --opencode-go-api-key --openrouter-api-key --runway-api-key --synthetic-api-key --together-api-key --volcengine-api-key --vydra-api-key --xai-api-key --xiaomi-api-key --xiaomi-token-plan-api-key --deepseek-api-key --arceeai-api-key --cerebras-api-key --chutes-api-key --cloudflare-ai-gateway-api-key --deepinfra-api-key --gmi-api-key --groq-api-key --kilocode-api-key --kimi-code-api-key --pixverse-api-key --qianfan-api-key --modelstudio-standard-api-key-cn --modelstudio-standard-api-key --modelstudio-api-key-cn --modelstudio-api-key --qwen-oauth-token --fireworks-api-key --moonshot-api-key --tokenhub-api-key --venice-api-key --ai-gateway-api-key --zai-api-key --stepfun-api-key --custom-base-url --custom-api-key --custom-model-id --custom-provider-id --custom-compatibility --gateway-port --gateway-bind --gateway-auth --gateway-token --gateway-token-ref-env --gateway-password --remote-url --remote-token --tailscale --daemon-runtime --node-manager --import-from --import-source" -l byteplus-api-key -d 'BytePlus API key' +complete -c openclaw -n "__openclaw_command_path_matches onboard -- --container --profile --log-level --workspace --reset-scope --flow --mode --auth-choice --token-provider --token --token-profile-id --token-expires-in --secret-input-mode --cloudflare-ai-gateway-account-id --cloudflare-ai-gateway-gateway-id --alibaba-model-studio-api-key --anthropic-api-key --byteplus-api-key --cohere-api-key --comfy-api-key --fal-api-key --github-copilot-token --gemini-api-key --huggingface-api-key --litellm-api-key --lmstudio-api-key --minimax-api-key --mistral-api-key --novita-api-key --nvidia-api-key --ollama-cloud-api-key --openai-api-key --opencode-zen-api-key --opencode-go-api-key --openrouter-api-key --runway-api-key --synthetic-api-key --together-api-key --volcengine-api-key --vydra-api-key --xai-api-key --xiaomi-api-key --xiaomi-token-plan-api-key --deepseek-api-key --arceeai-api-key --cerebras-api-key --chutes-api-key --cloudflare-ai-gateway-api-key --deepinfra-api-key --gmi-api-key --groq-api-key --kilocode-api-key --kimi-code-api-key --pixverse-api-key --qianfan-api-key --modelstudio-standard-api-key-cn --modelstudio-standard-api-key --modelstudio-api-key-cn --modelstudio-api-key --qwen-oauth-token --fireworks-api-key --moonshot-api-key --tokenhub-api-key --venice-api-key --ai-gateway-api-key --zai-api-key --stepfun-api-key --custom-base-url --custom-api-key --custom-model-id --custom-provider-id --custom-compatibility --gateway-port --gateway-bind --gateway-auth --gateway-token --gateway-token-ref-env --gateway-password --remote-url --remote-token --tailscale --daemon-runtime --node-manager --import-from --import-source" -l cohere-api-key -d 'Cohere API key' +complete -c openclaw -n "__openclaw_command_path_matches onboard -- --container --profile --log-level --workspace --reset-scope --flow --mode --auth-choice --token-provider --token --token-profile-id --token-expires-in --secret-input-mode --cloudflare-ai-gateway-account-id --cloudflare-ai-gateway-gateway-id --alibaba-model-studio-api-key --anthropic-api-key --byteplus-api-key --cohere-api-key --comfy-api-key --fal-api-key --github-copilot-token --gemini-api-key --huggingface-api-key --litellm-api-key --lmstudio-api-key --minimax-api-key --mistral-api-key --novita-api-key --nvidia-api-key --ollama-cloud-api-key --openai-api-key --opencode-zen-api-key --opencode-go-api-key --openrouter-api-key --runway-api-key --synthetic-api-key --together-api-key --volcengine-api-key --vydra-api-key --xai-api-key --xiaomi-api-key --xiaomi-token-plan-api-key --deepseek-api-key --arceeai-api-key --cerebras-api-key --chutes-api-key --cloudflare-ai-gateway-api-key --deepinfra-api-key --gmi-api-key --groq-api-key --kilocode-api-key --kimi-code-api-key --pixverse-api-key --qianfan-api-key --modelstudio-standard-api-key-cn --modelstudio-standard-api-key --modelstudio-api-key-cn --modelstudio-api-key --qwen-oauth-token --fireworks-api-key --moonshot-api-key --tokenhub-api-key --venice-api-key --ai-gateway-api-key --zai-api-key --stepfun-api-key --custom-base-url --custom-api-key --custom-model-id --custom-provider-id --custom-compatibility --gateway-port --gateway-bind --gateway-auth --gateway-token --gateway-token-ref-env --gateway-password --remote-url --remote-token --tailscale --daemon-runtime --node-manager --import-from --import-source" -l comfy-api-key -d 'Comfy Cloud API key' +complete -c openclaw -n "__openclaw_command_path_matches onboard -- --container --profile --log-level --workspace --reset-scope --flow --mode --auth-choice --token-provider --token --token-profile-id --token-expires-in --secret-input-mode --cloudflare-ai-gateway-account-id --cloudflare-ai-gateway-gateway-id --alibaba-model-studio-api-key --anthropic-api-key --byteplus-api-key --cohere-api-key --comfy-api-key --fal-api-key --github-copilot-token --gemini-api-key --huggingface-api-key --litellm-api-key --lmstudio-api-key --minimax-api-key --mistral-api-key --novita-api-key --nvidia-api-key --ollama-cloud-api-key --openai-api-key --opencode-zen-api-key --opencode-go-api-key --openrouter-api-key --runway-api-key --synthetic-api-key --together-api-key --volcengine-api-key --vydra-api-key --xai-api-key --xiaomi-api-key --xiaomi-token-plan-api-key --deepseek-api-key --arceeai-api-key --cerebras-api-key --chutes-api-key --cloudflare-ai-gateway-api-key --deepinfra-api-key --gmi-api-key --groq-api-key --kilocode-api-key --kimi-code-api-key --pixverse-api-key --qianfan-api-key --modelstudio-standard-api-key-cn --modelstudio-standard-api-key --modelstudio-api-key-cn --modelstudio-api-key --qwen-oauth-token --fireworks-api-key --moonshot-api-key --tokenhub-api-key --venice-api-key --ai-gateway-api-key --zai-api-key --stepfun-api-key --custom-base-url --custom-api-key --custom-model-id --custom-provider-id --custom-compatibility --gateway-port --gateway-bind --gateway-auth --gateway-token --gateway-token-ref-env --gateway-password --remote-url --remote-token --tailscale --daemon-runtime --node-manager --import-from --import-source" -l fal-api-key -d 'fal API key' +complete -c openclaw -n "__openclaw_command_path_matches onboard -- --container --profile --log-level --workspace --reset-scope --flow --mode --auth-choice --token-provider --token --token-profile-id --token-expires-in --secret-input-mode --cloudflare-ai-gateway-account-id --cloudflare-ai-gateway-gateway-id --alibaba-model-studio-api-key --anthropic-api-key --byteplus-api-key --cohere-api-key --comfy-api-key --fal-api-key --github-copilot-token --gemini-api-key --huggingface-api-key --litellm-api-key --lmstudio-api-key --minimax-api-key --mistral-api-key --novita-api-key --nvidia-api-key --ollama-cloud-api-key --openai-api-key --opencode-zen-api-key --opencode-go-api-key --openrouter-api-key --runway-api-key --synthetic-api-key --together-api-key --volcengine-api-key --vydra-api-key --xai-api-key --xiaomi-api-key --xiaomi-token-plan-api-key --deepseek-api-key --arceeai-api-key --cerebras-api-key --chutes-api-key --cloudflare-ai-gateway-api-key --deepinfra-api-key --gmi-api-key --groq-api-key --kilocode-api-key --kimi-code-api-key --pixverse-api-key --qianfan-api-key --modelstudio-standard-api-key-cn --modelstudio-standard-api-key --modelstudio-api-key-cn --modelstudio-api-key --qwen-oauth-token --fireworks-api-key --moonshot-api-key --tokenhub-api-key --venice-api-key --ai-gateway-api-key --zai-api-key --stepfun-api-key --custom-base-url --custom-api-key --custom-model-id --custom-provider-id --custom-compatibility --gateway-port --gateway-bind --gateway-auth --gateway-token --gateway-token-ref-env --gateway-password --remote-url --remote-token --tailscale --daemon-runtime --node-manager --import-from --import-source" -l github-copilot-token -d 'GitHub Copilot OAuth token' +complete -c openclaw -n "__openclaw_command_path_matches onboard -- --container --profile --log-level --workspace --reset-scope --flow --mode --auth-choice --token-provider --token --token-profile-id --token-expires-in --secret-input-mode --cloudflare-ai-gateway-account-id --cloudflare-ai-gateway-gateway-id --alibaba-model-studio-api-key --anthropic-api-key --byteplus-api-key --cohere-api-key --comfy-api-key --fal-api-key --github-copilot-token --gemini-api-key --huggingface-api-key --litellm-api-key --lmstudio-api-key --minimax-api-key --mistral-api-key --novita-api-key --nvidia-api-key --ollama-cloud-api-key --openai-api-key --opencode-zen-api-key --opencode-go-api-key --openrouter-api-key --runway-api-key --synthetic-api-key --together-api-key --volcengine-api-key --vydra-api-key --xai-api-key --xiaomi-api-key --xiaomi-token-plan-api-key --deepseek-api-key --arceeai-api-key --cerebras-api-key --chutes-api-key --cloudflare-ai-gateway-api-key --deepinfra-api-key --gmi-api-key --groq-api-key --kilocode-api-key --kimi-code-api-key --pixverse-api-key --qianfan-api-key --modelstudio-standard-api-key-cn --modelstudio-standard-api-key --modelstudio-api-key-cn --modelstudio-api-key --qwen-oauth-token --fireworks-api-key --moonshot-api-key --tokenhub-api-key --venice-api-key --ai-gateway-api-key --zai-api-key --stepfun-api-key --custom-base-url --custom-api-key --custom-model-id --custom-provider-id --custom-compatibility --gateway-port --gateway-bind --gateway-auth --gateway-token --gateway-token-ref-env --gateway-password --remote-url --remote-token --tailscale --daemon-runtime --node-manager --import-from --import-source" -l gemini-api-key -d 'Gemini API key' +complete -c openclaw -n "__openclaw_command_path_matches onboard -- --container --profile --log-level --workspace --reset-scope --flow --mode --auth-choice --token-provider --token --token-profile-id --token-expires-in --secret-input-mode --cloudflare-ai-gateway-account-id --cloudflare-ai-gateway-gateway-id --alibaba-model-studio-api-key --anthropic-api-key --byteplus-api-key --cohere-api-key --comfy-api-key --fal-api-key --github-copilot-token --gemini-api-key --huggingface-api-key --litellm-api-key --lmstudio-api-key --minimax-api-key --mistral-api-key --novita-api-key --nvidia-api-key --ollama-cloud-api-key --openai-api-key --opencode-zen-api-key --opencode-go-api-key --openrouter-api-key --runway-api-key --synthetic-api-key --together-api-key --volcengine-api-key --vydra-api-key --xai-api-key --xiaomi-api-key --xiaomi-token-plan-api-key --deepseek-api-key --arceeai-api-key --cerebras-api-key --chutes-api-key --cloudflare-ai-gateway-api-key --deepinfra-api-key --gmi-api-key --groq-api-key --kilocode-api-key --kimi-code-api-key --pixverse-api-key --qianfan-api-key --modelstudio-standard-api-key-cn --modelstudio-standard-api-key --modelstudio-api-key-cn --modelstudio-api-key --qwen-oauth-token --fireworks-api-key --moonshot-api-key --tokenhub-api-key --venice-api-key --ai-gateway-api-key --zai-api-key --stepfun-api-key --custom-base-url --custom-api-key --custom-model-id --custom-provider-id --custom-compatibility --gateway-port --gateway-bind --gateway-auth --gateway-token --gateway-token-ref-env --gateway-password --remote-url --remote-token --tailscale --daemon-runtime --node-manager --import-from --import-source" -l huggingface-api-key -d 'Hugging Face API key (HF token)' +complete -c openclaw -n "__openclaw_command_path_matches onboard -- --container --profile --log-level --workspace --reset-scope --flow --mode --auth-choice --token-provider --token --token-profile-id --token-expires-in --secret-input-mode --cloudflare-ai-gateway-account-id --cloudflare-ai-gateway-gateway-id --alibaba-model-studio-api-key --anthropic-api-key --byteplus-api-key --cohere-api-key --comfy-api-key --fal-api-key --github-copilot-token --gemini-api-key --huggingface-api-key --litellm-api-key --lmstudio-api-key --minimax-api-key --mistral-api-key --novita-api-key --nvidia-api-key --ollama-cloud-api-key --openai-api-key --opencode-zen-api-key --opencode-go-api-key --openrouter-api-key --runway-api-key --synthetic-api-key --together-api-key --volcengine-api-key --vydra-api-key --xai-api-key --xiaomi-api-key --xiaomi-token-plan-api-key --deepseek-api-key --arceeai-api-key --cerebras-api-key --chutes-api-key --cloudflare-ai-gateway-api-key --deepinfra-api-key --gmi-api-key --groq-api-key --kilocode-api-key --kimi-code-api-key --pixverse-api-key --qianfan-api-key --modelstudio-standard-api-key-cn --modelstudio-standard-api-key --modelstudio-api-key-cn --modelstudio-api-key --qwen-oauth-token --fireworks-api-key --moonshot-api-key --tokenhub-api-key --venice-api-key --ai-gateway-api-key --zai-api-key --stepfun-api-key --custom-base-url --custom-api-key --custom-model-id --custom-provider-id --custom-compatibility --gateway-port --gateway-bind --gateway-auth --gateway-token --gateway-token-ref-env --gateway-password --remote-url --remote-token --tailscale --daemon-runtime --node-manager --import-from --import-source" -l litellm-api-key -d 'LiteLLM API key' +complete -c openclaw -n "__openclaw_command_path_matches onboard -- --container --profile --log-level --workspace --reset-scope --flow --mode --auth-choice --token-provider --token --token-profile-id --token-expires-in --secret-input-mode --cloudflare-ai-gateway-account-id --cloudflare-ai-gateway-gateway-id --alibaba-model-studio-api-key --anthropic-api-key --byteplus-api-key --cohere-api-key --comfy-api-key --fal-api-key --github-copilot-token --gemini-api-key --huggingface-api-key --litellm-api-key --lmstudio-api-key --minimax-api-key --mistral-api-key --novita-api-key --nvidia-api-key --ollama-cloud-api-key --openai-api-key --opencode-zen-api-key --opencode-go-api-key --openrouter-api-key --runway-api-key --synthetic-api-key --together-api-key --volcengine-api-key --vydra-api-key --xai-api-key --xiaomi-api-key --xiaomi-token-plan-api-key --deepseek-api-key --arceeai-api-key --cerebras-api-key --chutes-api-key --cloudflare-ai-gateway-api-key --deepinfra-api-key --gmi-api-key --groq-api-key --kilocode-api-key --kimi-code-api-key --pixverse-api-key --qianfan-api-key --modelstudio-standard-api-key-cn --modelstudio-standard-api-key --modelstudio-api-key-cn --modelstudio-api-key --qwen-oauth-token --fireworks-api-key --moonshot-api-key --tokenhub-api-key --venice-api-key --ai-gateway-api-key --zai-api-key --stepfun-api-key --custom-base-url --custom-api-key --custom-model-id --custom-provider-id --custom-compatibility --gateway-port --gateway-bind --gateway-auth --gateway-token --gateway-token-ref-env --gateway-password --remote-url --remote-token --tailscale --daemon-runtime --node-manager --import-from --import-source" -l lmstudio-api-key -d 'LM Studio API key' +complete -c openclaw -n "__openclaw_command_path_matches onboard -- --container --profile --log-level --workspace --reset-scope --flow --mode --auth-choice --token-provider --token --token-profile-id --token-expires-in --secret-input-mode --cloudflare-ai-gateway-account-id --cloudflare-ai-gateway-gateway-id --alibaba-model-studio-api-key --anthropic-api-key --byteplus-api-key --cohere-api-key --comfy-api-key --fal-api-key --github-copilot-token --gemini-api-key --huggingface-api-key --litellm-api-key --lmstudio-api-key --minimax-api-key --mistral-api-key --novita-api-key --nvidia-api-key --ollama-cloud-api-key --openai-api-key --opencode-zen-api-key --opencode-go-api-key --openrouter-api-key --runway-api-key --synthetic-api-key --together-api-key --volcengine-api-key --vydra-api-key --xai-api-key --xiaomi-api-key --xiaomi-token-plan-api-key --deepseek-api-key --arceeai-api-key --cerebras-api-key --chutes-api-key --cloudflare-ai-gateway-api-key --deepinfra-api-key --gmi-api-key --groq-api-key --kilocode-api-key --kimi-code-api-key --pixverse-api-key --qianfan-api-key --modelstudio-standard-api-key-cn --modelstudio-standard-api-key --modelstudio-api-key-cn --modelstudio-api-key --qwen-oauth-token --fireworks-api-key --moonshot-api-key --tokenhub-api-key --venice-api-key --ai-gateway-api-key --zai-api-key --stepfun-api-key --custom-base-url --custom-api-key --custom-model-id --custom-provider-id --custom-compatibility --gateway-port --gateway-bind --gateway-auth --gateway-token --gateway-token-ref-env --gateway-password --remote-url --remote-token --tailscale --daemon-runtime --node-manager --import-from --import-source" -l minimax-api-key -d 'MiniMax API key' +complete -c openclaw -n "__openclaw_command_path_matches onboard -- --container --profile --log-level --workspace --reset-scope --flow --mode --auth-choice --token-provider --token --token-profile-id --token-expires-in --secret-input-mode --cloudflare-ai-gateway-account-id --cloudflare-ai-gateway-gateway-id --alibaba-model-studio-api-key --anthropic-api-key --byteplus-api-key --cohere-api-key --comfy-api-key --fal-api-key --github-copilot-token --gemini-api-key --huggingface-api-key --litellm-api-key --lmstudio-api-key --minimax-api-key --mistral-api-key --novita-api-key --nvidia-api-key --ollama-cloud-api-key --openai-api-key --opencode-zen-api-key --opencode-go-api-key --openrouter-api-key --runway-api-key --synthetic-api-key --together-api-key --volcengine-api-key --vydra-api-key --xai-api-key --xiaomi-api-key --xiaomi-token-plan-api-key --deepseek-api-key --arceeai-api-key --cerebras-api-key --chutes-api-key --cloudflare-ai-gateway-api-key --deepinfra-api-key --gmi-api-key --groq-api-key --kilocode-api-key --kimi-code-api-key --pixverse-api-key --qianfan-api-key --modelstudio-standard-api-key-cn --modelstudio-standard-api-key --modelstudio-api-key-cn --modelstudio-api-key --qwen-oauth-token --fireworks-api-key --moonshot-api-key --tokenhub-api-key --venice-api-key --ai-gateway-api-key --zai-api-key --stepfun-api-key --custom-base-url --custom-api-key --custom-model-id --custom-provider-id --custom-compatibility --gateway-port --gateway-bind --gateway-auth --gateway-token --gateway-token-ref-env --gateway-password --remote-url --remote-token --tailscale --daemon-runtime --node-manager --import-from --import-source" -l mistral-api-key -d 'Mistral API key' +complete -c openclaw -n "__openclaw_command_path_matches onboard -- --container --profile --log-level --workspace --reset-scope --flow --mode --auth-choice --token-provider --token --token-profile-id --token-expires-in --secret-input-mode --cloudflare-ai-gateway-account-id --cloudflare-ai-gateway-gateway-id --alibaba-model-studio-api-key --anthropic-api-key --byteplus-api-key --cohere-api-key --comfy-api-key --fal-api-key --github-copilot-token --gemini-api-key --huggingface-api-key --litellm-api-key --lmstudio-api-key --minimax-api-key --mistral-api-key --novita-api-key --nvidia-api-key --ollama-cloud-api-key --openai-api-key --opencode-zen-api-key --opencode-go-api-key --openrouter-api-key --runway-api-key --synthetic-api-key --together-api-key --volcengine-api-key --vydra-api-key --xai-api-key --xiaomi-api-key --xiaomi-token-plan-api-key --deepseek-api-key --arceeai-api-key --cerebras-api-key --chutes-api-key --cloudflare-ai-gateway-api-key --deepinfra-api-key --gmi-api-key --groq-api-key --kilocode-api-key --kimi-code-api-key --pixverse-api-key --qianfan-api-key --modelstudio-standard-api-key-cn --modelstudio-standard-api-key --modelstudio-api-key-cn --modelstudio-api-key --qwen-oauth-token --fireworks-api-key --moonshot-api-key --tokenhub-api-key --venice-api-key --ai-gateway-api-key --zai-api-key --stepfun-api-key --custom-base-url --custom-api-key --custom-model-id --custom-provider-id --custom-compatibility --gateway-port --gateway-bind --gateway-auth --gateway-token --gateway-token-ref-env --gateway-password --remote-url --remote-token --tailscale --daemon-runtime --node-manager --import-from --import-source" -l novita-api-key -d 'NovitaAI API key' +complete -c openclaw -n "__openclaw_command_path_matches onboard -- --container --profile --log-level --workspace --reset-scope --flow --mode --auth-choice --token-provider --token --token-profile-id --token-expires-in --secret-input-mode --cloudflare-ai-gateway-account-id --cloudflare-ai-gateway-gateway-id --alibaba-model-studio-api-key --anthropic-api-key --byteplus-api-key --cohere-api-key --comfy-api-key --fal-api-key --github-copilot-token --gemini-api-key --huggingface-api-key --litellm-api-key --lmstudio-api-key --minimax-api-key --mistral-api-key --novita-api-key --nvidia-api-key --ollama-cloud-api-key --openai-api-key --opencode-zen-api-key --opencode-go-api-key --openrouter-api-key --runway-api-key --synthetic-api-key --together-api-key --volcengine-api-key --vydra-api-key --xai-api-key --xiaomi-api-key --xiaomi-token-plan-api-key --deepseek-api-key --arceeai-api-key --cerebras-api-key --chutes-api-key --cloudflare-ai-gateway-api-key --deepinfra-api-key --gmi-api-key --groq-api-key --kilocode-api-key --kimi-code-api-key --pixverse-api-key --qianfan-api-key --modelstudio-standard-api-key-cn --modelstudio-standard-api-key --modelstudio-api-key-cn --modelstudio-api-key --qwen-oauth-token --fireworks-api-key --moonshot-api-key --tokenhub-api-key --venice-api-key --ai-gateway-api-key --zai-api-key --stepfun-api-key --custom-base-url --custom-api-key --custom-model-id --custom-provider-id --custom-compatibility --gateway-port --gateway-bind --gateway-auth --gateway-token --gateway-token-ref-env --gateway-password --remote-url --remote-token --tailscale --daemon-runtime --node-manager --import-from --import-source" -l nvidia-api-key -d 'NVIDIA API key' +complete -c openclaw -n "__openclaw_command_path_matches onboard -- --container --profile --log-level --workspace --reset-scope --flow --mode --auth-choice --token-provider --token --token-profile-id --token-expires-in --secret-input-mode --cloudflare-ai-gateway-account-id --cloudflare-ai-gateway-gateway-id --alibaba-model-studio-api-key --anthropic-api-key --byteplus-api-key --cohere-api-key --comfy-api-key --fal-api-key --github-copilot-token --gemini-api-key --huggingface-api-key --litellm-api-key --lmstudio-api-key --minimax-api-key --mistral-api-key --novita-api-key --nvidia-api-key --ollama-cloud-api-key --openai-api-key --opencode-zen-api-key --opencode-go-api-key --openrouter-api-key --runway-api-key --synthetic-api-key --together-api-key --volcengine-api-key --vydra-api-key --xai-api-key --xiaomi-api-key --xiaomi-token-plan-api-key --deepseek-api-key --arceeai-api-key --cerebras-api-key --chutes-api-key --cloudflare-ai-gateway-api-key --deepinfra-api-key --gmi-api-key --groq-api-key --kilocode-api-key --kimi-code-api-key --pixverse-api-key --qianfan-api-key --modelstudio-standard-api-key-cn --modelstudio-standard-api-key --modelstudio-api-key-cn --modelstudio-api-key --qwen-oauth-token --fireworks-api-key --moonshot-api-key --tokenhub-api-key --venice-api-key --ai-gateway-api-key --zai-api-key --stepfun-api-key --custom-base-url --custom-api-key --custom-model-id --custom-provider-id --custom-compatibility --gateway-port --gateway-bind --gateway-auth --gateway-token --gateway-token-ref-env --gateway-password --remote-url --remote-token --tailscale --daemon-runtime --node-manager --import-from --import-source" -l ollama-cloud-api-key -d 'Ollama Cloud API key' +complete -c openclaw -n "__openclaw_command_path_matches onboard -- --container --profile --log-level --workspace --reset-scope --flow --mode --auth-choice --token-provider --token --token-profile-id --token-expires-in --secret-input-mode --cloudflare-ai-gateway-account-id --cloudflare-ai-gateway-gateway-id --alibaba-model-studio-api-key --anthropic-api-key --byteplus-api-key --cohere-api-key --comfy-api-key --fal-api-key --github-copilot-token --gemini-api-key --huggingface-api-key --litellm-api-key --lmstudio-api-key --minimax-api-key --mistral-api-key --novita-api-key --nvidia-api-key --ollama-cloud-api-key --openai-api-key --opencode-zen-api-key --opencode-go-api-key --openrouter-api-key --runway-api-key --synthetic-api-key --together-api-key --volcengine-api-key --vydra-api-key --xai-api-key --xiaomi-api-key --xiaomi-token-plan-api-key --deepseek-api-key --arceeai-api-key --cerebras-api-key --chutes-api-key --cloudflare-ai-gateway-api-key --deepinfra-api-key --gmi-api-key --groq-api-key --kilocode-api-key --kimi-code-api-key --pixverse-api-key --qianfan-api-key --modelstudio-standard-api-key-cn --modelstudio-standard-api-key --modelstudio-api-key-cn --modelstudio-api-key --qwen-oauth-token --fireworks-api-key --moonshot-api-key --tokenhub-api-key --venice-api-key --ai-gateway-api-key --zai-api-key --stepfun-api-key --custom-base-url --custom-api-key --custom-model-id --custom-provider-id --custom-compatibility --gateway-port --gateway-bind --gateway-auth --gateway-token --gateway-token-ref-env --gateway-password --remote-url --remote-token --tailscale --daemon-runtime --node-manager --import-from --import-source" -l openai-api-key -d 'OpenAI API Key' +complete -c openclaw -n "__openclaw_command_path_matches onboard -- --container --profile --log-level --workspace --reset-scope --flow --mode --auth-choice --token-provider --token --token-profile-id --token-expires-in --secret-input-mode --cloudflare-ai-gateway-account-id --cloudflare-ai-gateway-gateway-id --alibaba-model-studio-api-key --anthropic-api-key --byteplus-api-key --cohere-api-key --comfy-api-key --fal-api-key --github-copilot-token --gemini-api-key --huggingface-api-key --litellm-api-key --lmstudio-api-key --minimax-api-key --mistral-api-key --novita-api-key --nvidia-api-key --ollama-cloud-api-key --openai-api-key --opencode-zen-api-key --opencode-go-api-key --openrouter-api-key --runway-api-key --synthetic-api-key --together-api-key --volcengine-api-key --vydra-api-key --xai-api-key --xiaomi-api-key --xiaomi-token-plan-api-key --deepseek-api-key --arceeai-api-key --cerebras-api-key --chutes-api-key --cloudflare-ai-gateway-api-key --deepinfra-api-key --gmi-api-key --groq-api-key --kilocode-api-key --kimi-code-api-key --pixverse-api-key --qianfan-api-key --modelstudio-standard-api-key-cn --modelstudio-standard-api-key --modelstudio-api-key-cn --modelstudio-api-key --qwen-oauth-token --fireworks-api-key --moonshot-api-key --tokenhub-api-key --venice-api-key --ai-gateway-api-key --zai-api-key --stepfun-api-key --custom-base-url --custom-api-key --custom-model-id --custom-provider-id --custom-compatibility --gateway-port --gateway-bind --gateway-auth --gateway-token --gateway-token-ref-env --gateway-password --remote-url --remote-token --tailscale --daemon-runtime --node-manager --import-from --import-source" -l opencode-zen-api-key -d 'OpenCode API key (Zen catalog)' +complete -c openclaw -n "__openclaw_command_path_matches onboard -- --container --profile --log-level --workspace --reset-scope --flow --mode --auth-choice --token-provider --token --token-profile-id --token-expires-in --secret-input-mode --cloudflare-ai-gateway-account-id --cloudflare-ai-gateway-gateway-id --alibaba-model-studio-api-key --anthropic-api-key --byteplus-api-key --cohere-api-key --comfy-api-key --fal-api-key --github-copilot-token --gemini-api-key --huggingface-api-key --litellm-api-key --lmstudio-api-key --minimax-api-key --mistral-api-key --novita-api-key --nvidia-api-key --ollama-cloud-api-key --openai-api-key --opencode-zen-api-key --opencode-go-api-key --openrouter-api-key --runway-api-key --synthetic-api-key --together-api-key --volcengine-api-key --vydra-api-key --xai-api-key --xiaomi-api-key --xiaomi-token-plan-api-key --deepseek-api-key --arceeai-api-key --cerebras-api-key --chutes-api-key --cloudflare-ai-gateway-api-key --deepinfra-api-key --gmi-api-key --groq-api-key --kilocode-api-key --kimi-code-api-key --pixverse-api-key --qianfan-api-key --modelstudio-standard-api-key-cn --modelstudio-standard-api-key --modelstudio-api-key-cn --modelstudio-api-key --qwen-oauth-token --fireworks-api-key --moonshot-api-key --tokenhub-api-key --venice-api-key --ai-gateway-api-key --zai-api-key --stepfun-api-key --custom-base-url --custom-api-key --custom-model-id --custom-provider-id --custom-compatibility --gateway-port --gateway-bind --gateway-auth --gateway-token --gateway-token-ref-env --gateway-password --remote-url --remote-token --tailscale --daemon-runtime --node-manager --import-from --import-source" -l opencode-go-api-key -d 'OpenCode API key (Go catalog)' +complete -c openclaw -n "__openclaw_command_path_matches onboard -- --container --profile --log-level --workspace --reset-scope --flow --mode --auth-choice --token-provider --token --token-profile-id --token-expires-in --secret-input-mode --cloudflare-ai-gateway-account-id --cloudflare-ai-gateway-gateway-id --alibaba-model-studio-api-key --anthropic-api-key --byteplus-api-key --cohere-api-key --comfy-api-key --fal-api-key --github-copilot-token --gemini-api-key --huggingface-api-key --litellm-api-key --lmstudio-api-key --minimax-api-key --mistral-api-key --novita-api-key --nvidia-api-key --ollama-cloud-api-key --openai-api-key --opencode-zen-api-key --opencode-go-api-key --openrouter-api-key --runway-api-key --synthetic-api-key --together-api-key --volcengine-api-key --vydra-api-key --xai-api-key --xiaomi-api-key --xiaomi-token-plan-api-key --deepseek-api-key --arceeai-api-key --cerebras-api-key --chutes-api-key --cloudflare-ai-gateway-api-key --deepinfra-api-key --gmi-api-key --groq-api-key --kilocode-api-key --kimi-code-api-key --pixverse-api-key --qianfan-api-key --modelstudio-standard-api-key-cn --modelstudio-standard-api-key --modelstudio-api-key-cn --modelstudio-api-key --qwen-oauth-token --fireworks-api-key --moonshot-api-key --tokenhub-api-key --venice-api-key --ai-gateway-api-key --zai-api-key --stepfun-api-key --custom-base-url --custom-api-key --custom-model-id --custom-provider-id --custom-compatibility --gateway-port --gateway-bind --gateway-auth --gateway-token --gateway-token-ref-env --gateway-password --remote-url --remote-token --tailscale --daemon-runtime --node-manager --import-from --import-source" -l openrouter-api-key -d 'OpenRouter API key' +complete -c openclaw -n "__openclaw_command_path_matches onboard -- --container --profile --log-level --workspace --reset-scope --flow --mode --auth-choice --token-provider --token --token-profile-id --token-expires-in --secret-input-mode --cloudflare-ai-gateway-account-id --cloudflare-ai-gateway-gateway-id --alibaba-model-studio-api-key --anthropic-api-key --byteplus-api-key --cohere-api-key --comfy-api-key --fal-api-key --github-copilot-token --gemini-api-key --huggingface-api-key --litellm-api-key --lmstudio-api-key --minimax-api-key --mistral-api-key --novita-api-key --nvidia-api-key --ollama-cloud-api-key --openai-api-key --opencode-zen-api-key --opencode-go-api-key --openrouter-api-key --runway-api-key --synthetic-api-key --together-api-key --volcengine-api-key --vydra-api-key --xai-api-key --xiaomi-api-key --xiaomi-token-plan-api-key --deepseek-api-key --arceeai-api-key --cerebras-api-key --chutes-api-key --cloudflare-ai-gateway-api-key --deepinfra-api-key --gmi-api-key --groq-api-key --kilocode-api-key --kimi-code-api-key --pixverse-api-key --qianfan-api-key --modelstudio-standard-api-key-cn --modelstudio-standard-api-key --modelstudio-api-key-cn --modelstudio-api-key --qwen-oauth-token --fireworks-api-key --moonshot-api-key --tokenhub-api-key --venice-api-key --ai-gateway-api-key --zai-api-key --stepfun-api-key --custom-base-url --custom-api-key --custom-model-id --custom-provider-id --custom-compatibility --gateway-port --gateway-bind --gateway-auth --gateway-token --gateway-token-ref-env --gateway-password --remote-url --remote-token --tailscale --daemon-runtime --node-manager --import-from --import-source" -l runway-api-key -d 'Runway API key' +complete -c openclaw -n "__openclaw_command_path_matches onboard -- --container --profile --log-level --workspace --reset-scope --flow --mode --auth-choice --token-provider --token --token-profile-id --token-expires-in --secret-input-mode --cloudflare-ai-gateway-account-id --cloudflare-ai-gateway-gateway-id --alibaba-model-studio-api-key --anthropic-api-key --byteplus-api-key --cohere-api-key --comfy-api-key --fal-api-key --github-copilot-token --gemini-api-key --huggingface-api-key --litellm-api-key --lmstudio-api-key --minimax-api-key --mistral-api-key --novita-api-key --nvidia-api-key --ollama-cloud-api-key --openai-api-key --opencode-zen-api-key --opencode-go-api-key --openrouter-api-key --runway-api-key --synthetic-api-key --together-api-key --volcengine-api-key --vydra-api-key --xai-api-key --xiaomi-api-key --xiaomi-token-plan-api-key --deepseek-api-key --arceeai-api-key --cerebras-api-key --chutes-api-key --cloudflare-ai-gateway-api-key --deepinfra-api-key --gmi-api-key --groq-api-key --kilocode-api-key --kimi-code-api-key --pixverse-api-key --qianfan-api-key --modelstudio-standard-api-key-cn --modelstudio-standard-api-key --modelstudio-api-key-cn --modelstudio-api-key --qwen-oauth-token --fireworks-api-key --moonshot-api-key --tokenhub-api-key --venice-api-key --ai-gateway-api-key --zai-api-key --stepfun-api-key --custom-base-url --custom-api-key --custom-model-id --custom-provider-id --custom-compatibility --gateway-port --gateway-bind --gateway-auth --gateway-token --gateway-token-ref-env --gateway-password --remote-url --remote-token --tailscale --daemon-runtime --node-manager --import-from --import-source" -l synthetic-api-key -d 'Synthetic API key' +complete -c openclaw -n "__openclaw_command_path_matches onboard -- --container --profile --log-level --workspace --reset-scope --flow --mode --auth-choice --token-provider --token --token-profile-id --token-expires-in --secret-input-mode --cloudflare-ai-gateway-account-id --cloudflare-ai-gateway-gateway-id --alibaba-model-studio-api-key --anthropic-api-key --byteplus-api-key --cohere-api-key --comfy-api-key --fal-api-key --github-copilot-token --gemini-api-key --huggingface-api-key --litellm-api-key --lmstudio-api-key --minimax-api-key --mistral-api-key --novita-api-key --nvidia-api-key --ollama-cloud-api-key --openai-api-key --opencode-zen-api-key --opencode-go-api-key --openrouter-api-key --runway-api-key --synthetic-api-key --together-api-key --volcengine-api-key --vydra-api-key --xai-api-key --xiaomi-api-key --xiaomi-token-plan-api-key --deepseek-api-key --arceeai-api-key --cerebras-api-key --chutes-api-key --cloudflare-ai-gateway-api-key --deepinfra-api-key --gmi-api-key --groq-api-key --kilocode-api-key --kimi-code-api-key --pixverse-api-key --qianfan-api-key --modelstudio-standard-api-key-cn --modelstudio-standard-api-key --modelstudio-api-key-cn --modelstudio-api-key --qwen-oauth-token --fireworks-api-key --moonshot-api-key --tokenhub-api-key --venice-api-key --ai-gateway-api-key --zai-api-key --stepfun-api-key --custom-base-url --custom-api-key --custom-model-id --custom-provider-id --custom-compatibility --gateway-port --gateway-bind --gateway-auth --gateway-token --gateway-token-ref-env --gateway-password --remote-url --remote-token --tailscale --daemon-runtime --node-manager --import-from --import-source" -l together-api-key -d 'Together AI API key' +complete -c openclaw -n "__openclaw_command_path_matches onboard -- --container --profile --log-level --workspace --reset-scope --flow --mode --auth-choice --token-provider --token --token-profile-id --token-expires-in --secret-input-mode --cloudflare-ai-gateway-account-id --cloudflare-ai-gateway-gateway-id --alibaba-model-studio-api-key --anthropic-api-key --byteplus-api-key --cohere-api-key --comfy-api-key --fal-api-key --github-copilot-token --gemini-api-key --huggingface-api-key --litellm-api-key --lmstudio-api-key --minimax-api-key --mistral-api-key --novita-api-key --nvidia-api-key --ollama-cloud-api-key --openai-api-key --opencode-zen-api-key --opencode-go-api-key --openrouter-api-key --runway-api-key --synthetic-api-key --together-api-key --volcengine-api-key --vydra-api-key --xai-api-key --xiaomi-api-key --xiaomi-token-plan-api-key --deepseek-api-key --arceeai-api-key --cerebras-api-key --chutes-api-key --cloudflare-ai-gateway-api-key --deepinfra-api-key --gmi-api-key --groq-api-key --kilocode-api-key --kimi-code-api-key --pixverse-api-key --qianfan-api-key --modelstudio-standard-api-key-cn --modelstudio-standard-api-key --modelstudio-api-key-cn --modelstudio-api-key --qwen-oauth-token --fireworks-api-key --moonshot-api-key --tokenhub-api-key --venice-api-key --ai-gateway-api-key --zai-api-key --stepfun-api-key --custom-base-url --custom-api-key --custom-model-id --custom-provider-id --custom-compatibility --gateway-port --gateway-bind --gateway-auth --gateway-token --gateway-token-ref-env --gateway-password --remote-url --remote-token --tailscale --daemon-runtime --node-manager --import-from --import-source" -l volcengine-api-key -d 'Volcano Engine API key' +complete -c openclaw -n "__openclaw_command_path_matches onboard -- --container --profile --log-level --workspace --reset-scope --flow --mode --auth-choice --token-provider --token --token-profile-id --token-expires-in --secret-input-mode --cloudflare-ai-gateway-account-id --cloudflare-ai-gateway-gateway-id --alibaba-model-studio-api-key --anthropic-api-key --byteplus-api-key --cohere-api-key --comfy-api-key --fal-api-key --github-copilot-token --gemini-api-key --huggingface-api-key --litellm-api-key --lmstudio-api-key --minimax-api-key --mistral-api-key --novita-api-key --nvidia-api-key --ollama-cloud-api-key --openai-api-key --opencode-zen-api-key --opencode-go-api-key --openrouter-api-key --runway-api-key --synthetic-api-key --together-api-key --volcengine-api-key --vydra-api-key --xai-api-key --xiaomi-api-key --xiaomi-token-plan-api-key --deepseek-api-key --arceeai-api-key --cerebras-api-key --chutes-api-key --cloudflare-ai-gateway-api-key --deepinfra-api-key --gmi-api-key --groq-api-key --kilocode-api-key --kimi-code-api-key --pixverse-api-key --qianfan-api-key --modelstudio-standard-api-key-cn --modelstudio-standard-api-key --modelstudio-api-key-cn --modelstudio-api-key --qwen-oauth-token --fireworks-api-key --moonshot-api-key --tokenhub-api-key --venice-api-key --ai-gateway-api-key --zai-api-key --stepfun-api-key --custom-base-url --custom-api-key --custom-model-id --custom-provider-id --custom-compatibility --gateway-port --gateway-bind --gateway-auth --gateway-token --gateway-token-ref-env --gateway-password --remote-url --remote-token --tailscale --daemon-runtime --node-manager --import-from --import-source" -l vydra-api-key -d 'Vydra API key' +complete -c openclaw -n "__openclaw_command_path_matches onboard -- --container --profile --log-level --workspace --reset-scope --flow --mode --auth-choice --token-provider --token --token-profile-id --token-expires-in --secret-input-mode --cloudflare-ai-gateway-account-id --cloudflare-ai-gateway-gateway-id --alibaba-model-studio-api-key --anthropic-api-key --byteplus-api-key --cohere-api-key --comfy-api-key --fal-api-key --github-copilot-token --gemini-api-key --huggingface-api-key --litellm-api-key --lmstudio-api-key --minimax-api-key --mistral-api-key --novita-api-key --nvidia-api-key --ollama-cloud-api-key --openai-api-key --opencode-zen-api-key --opencode-go-api-key --openrouter-api-key --runway-api-key --synthetic-api-key --together-api-key --volcengine-api-key --vydra-api-key --xai-api-key --xiaomi-api-key --xiaomi-token-plan-api-key --deepseek-api-key --arceeai-api-key --cerebras-api-key --chutes-api-key --cloudflare-ai-gateway-api-key --deepinfra-api-key --gmi-api-key --groq-api-key --kilocode-api-key --kimi-code-api-key --pixverse-api-key --qianfan-api-key --modelstudio-standard-api-key-cn --modelstudio-standard-api-key --modelstudio-api-key-cn --modelstudio-api-key --qwen-oauth-token --fireworks-api-key --moonshot-api-key --tokenhub-api-key --venice-api-key --ai-gateway-api-key --zai-api-key --stepfun-api-key --custom-base-url --custom-api-key --custom-model-id --custom-provider-id --custom-compatibility --gateway-port --gateway-bind --gateway-auth --gateway-token --gateway-token-ref-env --gateway-password --remote-url --remote-token --tailscale --daemon-runtime --node-manager --import-from --import-source" -l xai-api-key -d 'xAI API key' +complete -c openclaw -n "__openclaw_command_path_matches onboard -- --container --profile --log-level --workspace --reset-scope --flow --mode --auth-choice --token-provider --token --token-profile-id --token-expires-in --secret-input-mode --cloudflare-ai-gateway-account-id --cloudflare-ai-gateway-gateway-id --alibaba-model-studio-api-key --anthropic-api-key --byteplus-api-key --cohere-api-key --comfy-api-key --fal-api-key --github-copilot-token --gemini-api-key --huggingface-api-key --litellm-api-key --lmstudio-api-key --minimax-api-key --mistral-api-key --novita-api-key --nvidia-api-key --ollama-cloud-api-key --openai-api-key --opencode-zen-api-key --opencode-go-api-key --openrouter-api-key --runway-api-key --synthetic-api-key --together-api-key --volcengine-api-key --vydra-api-key --xai-api-key --xiaomi-api-key --xiaomi-token-plan-api-key --deepseek-api-key --arceeai-api-key --cerebras-api-key --chutes-api-key --cloudflare-ai-gateway-api-key --deepinfra-api-key --gmi-api-key --groq-api-key --kilocode-api-key --kimi-code-api-key --pixverse-api-key --qianfan-api-key --modelstudio-standard-api-key-cn --modelstudio-standard-api-key --modelstudio-api-key-cn --modelstudio-api-key --qwen-oauth-token --fireworks-api-key --moonshot-api-key --tokenhub-api-key --venice-api-key --ai-gateway-api-key --zai-api-key --stepfun-api-key --custom-base-url --custom-api-key --custom-model-id --custom-provider-id --custom-compatibility --gateway-port --gateway-bind --gateway-auth --gateway-token --gateway-token-ref-env --gateway-password --remote-url --remote-token --tailscale --daemon-runtime --node-manager --import-from --import-source" -l xiaomi-api-key -d 'Xiaomi MiMo pay-as-you-go API key' +complete -c openclaw -n "__openclaw_command_path_matches onboard -- --container --profile --log-level --workspace --reset-scope --flow --mode --auth-choice --token-provider --token --token-profile-id --token-expires-in --secret-input-mode --cloudflare-ai-gateway-account-id --cloudflare-ai-gateway-gateway-id --alibaba-model-studio-api-key --anthropic-api-key --byteplus-api-key --cohere-api-key --comfy-api-key --fal-api-key --github-copilot-token --gemini-api-key --huggingface-api-key --litellm-api-key --lmstudio-api-key --minimax-api-key --mistral-api-key --novita-api-key --nvidia-api-key --ollama-cloud-api-key --openai-api-key --opencode-zen-api-key --opencode-go-api-key --openrouter-api-key --runway-api-key --synthetic-api-key --together-api-key --volcengine-api-key --vydra-api-key --xai-api-key --xiaomi-api-key --xiaomi-token-plan-api-key --deepseek-api-key --arceeai-api-key --cerebras-api-key --chutes-api-key --cloudflare-ai-gateway-api-key --deepinfra-api-key --gmi-api-key --groq-api-key --kilocode-api-key --kimi-code-api-key --pixverse-api-key --qianfan-api-key --modelstudio-standard-api-key-cn --modelstudio-standard-api-key --modelstudio-api-key-cn --modelstudio-api-key --qwen-oauth-token --fireworks-api-key --moonshot-api-key --tokenhub-api-key --venice-api-key --ai-gateway-api-key --zai-api-key --stepfun-api-key --custom-base-url --custom-api-key --custom-model-id --custom-provider-id --custom-compatibility --gateway-port --gateway-bind --gateway-auth --gateway-token --gateway-token-ref-env --gateway-password --remote-url --remote-token --tailscale --daemon-runtime --node-manager --import-from --import-source" -l xiaomi-token-plan-api-key -d 'Xiaomi MiMo Token Plan API key' +complete -c openclaw -n "__openclaw_command_path_matches onboard -- --container --profile --log-level --workspace --reset-scope --flow --mode --auth-choice --token-provider --token --token-profile-id --token-expires-in --secret-input-mode --cloudflare-ai-gateway-account-id --cloudflare-ai-gateway-gateway-id --alibaba-model-studio-api-key --anthropic-api-key --byteplus-api-key --cohere-api-key --comfy-api-key --fal-api-key --github-copilot-token --gemini-api-key --huggingface-api-key --litellm-api-key --lmstudio-api-key --minimax-api-key --mistral-api-key --novita-api-key --nvidia-api-key --ollama-cloud-api-key --openai-api-key --opencode-zen-api-key --opencode-go-api-key --openrouter-api-key --runway-api-key --synthetic-api-key --together-api-key --volcengine-api-key --vydra-api-key --xai-api-key --xiaomi-api-key --xiaomi-token-plan-api-key --deepseek-api-key --arceeai-api-key --cerebras-api-key --chutes-api-key --cloudflare-ai-gateway-api-key --deepinfra-api-key --gmi-api-key --groq-api-key --kilocode-api-key --kimi-code-api-key --pixverse-api-key --qianfan-api-key --modelstudio-standard-api-key-cn --modelstudio-standard-api-key --modelstudio-api-key-cn --modelstudio-api-key --qwen-oauth-token --fireworks-api-key --moonshot-api-key --tokenhub-api-key --venice-api-key --ai-gateway-api-key --zai-api-key --stepfun-api-key --custom-base-url --custom-api-key --custom-model-id --custom-provider-id --custom-compatibility --gateway-port --gateway-bind --gateway-auth --gateway-token --gateway-token-ref-env --gateway-password --remote-url --remote-token --tailscale --daemon-runtime --node-manager --import-from --import-source" -l deepseek-api-key -d 'DeepSeek API key' +complete -c openclaw -n "__openclaw_command_path_matches onboard -- --container --profile --log-level --workspace --reset-scope --flow --mode --auth-choice --token-provider --token --token-profile-id --token-expires-in --secret-input-mode --cloudflare-ai-gateway-account-id --cloudflare-ai-gateway-gateway-id --alibaba-model-studio-api-key --anthropic-api-key --byteplus-api-key --cohere-api-key --comfy-api-key --fal-api-key --github-copilot-token --gemini-api-key --huggingface-api-key --litellm-api-key --lmstudio-api-key --minimax-api-key --mistral-api-key --novita-api-key --nvidia-api-key --ollama-cloud-api-key --openai-api-key --opencode-zen-api-key --opencode-go-api-key --openrouter-api-key --runway-api-key --synthetic-api-key --together-api-key --volcengine-api-key --vydra-api-key --xai-api-key --xiaomi-api-key --xiaomi-token-plan-api-key --deepseek-api-key --arceeai-api-key --cerebras-api-key --chutes-api-key --cloudflare-ai-gateway-api-key --deepinfra-api-key --gmi-api-key --groq-api-key --kilocode-api-key --kimi-code-api-key --pixverse-api-key --qianfan-api-key --modelstudio-standard-api-key-cn --modelstudio-standard-api-key --modelstudio-api-key-cn --modelstudio-api-key --qwen-oauth-token --fireworks-api-key --moonshot-api-key --tokenhub-api-key --venice-api-key --ai-gateway-api-key --zai-api-key --stepfun-api-key --custom-base-url --custom-api-key --custom-model-id --custom-provider-id --custom-compatibility --gateway-port --gateway-bind --gateway-auth --gateway-token --gateway-token-ref-env --gateway-password --remote-url --remote-token --tailscale --daemon-runtime --node-manager --import-from --import-source" -l arceeai-api-key -d 'Arcee AI API key' +complete -c openclaw -n "__openclaw_command_path_matches onboard -- --container --profile --log-level --workspace --reset-scope --flow --mode --auth-choice --token-provider --token --token-profile-id --token-expires-in --secret-input-mode --cloudflare-ai-gateway-account-id --cloudflare-ai-gateway-gateway-id --alibaba-model-studio-api-key --anthropic-api-key --byteplus-api-key --cohere-api-key --comfy-api-key --fal-api-key --github-copilot-token --gemini-api-key --huggingface-api-key --litellm-api-key --lmstudio-api-key --minimax-api-key --mistral-api-key --novita-api-key --nvidia-api-key --ollama-cloud-api-key --openai-api-key --opencode-zen-api-key --opencode-go-api-key --openrouter-api-key --runway-api-key --synthetic-api-key --together-api-key --volcengine-api-key --vydra-api-key --xai-api-key --xiaomi-api-key --xiaomi-token-plan-api-key --deepseek-api-key --arceeai-api-key --cerebras-api-key --chutes-api-key --cloudflare-ai-gateway-api-key --deepinfra-api-key --gmi-api-key --groq-api-key --kilocode-api-key --kimi-code-api-key --pixverse-api-key --qianfan-api-key --modelstudio-standard-api-key-cn --modelstudio-standard-api-key --modelstudio-api-key-cn --modelstudio-api-key --qwen-oauth-token --fireworks-api-key --moonshot-api-key --tokenhub-api-key --venice-api-key --ai-gateway-api-key --zai-api-key --stepfun-api-key --custom-base-url --custom-api-key --custom-model-id --custom-provider-id --custom-compatibility --gateway-port --gateway-bind --gateway-auth --gateway-token --gateway-token-ref-env --gateway-password --remote-url --remote-token --tailscale --daemon-runtime --node-manager --import-from --import-source" -l cerebras-api-key -d 'Cerebras API key' +complete -c openclaw -n "__openclaw_command_path_matches onboard -- --container --profile --log-level --workspace --reset-scope --flow --mode --auth-choice --token-provider --token --token-profile-id --token-expires-in --secret-input-mode --cloudflare-ai-gateway-account-id --cloudflare-ai-gateway-gateway-id --alibaba-model-studio-api-key --anthropic-api-key --byteplus-api-key --cohere-api-key --comfy-api-key --fal-api-key --github-copilot-token --gemini-api-key --huggingface-api-key --litellm-api-key --lmstudio-api-key --minimax-api-key --mistral-api-key --novita-api-key --nvidia-api-key --ollama-cloud-api-key --openai-api-key --opencode-zen-api-key --opencode-go-api-key --openrouter-api-key --runway-api-key --synthetic-api-key --together-api-key --volcengine-api-key --vydra-api-key --xai-api-key --xiaomi-api-key --xiaomi-token-plan-api-key --deepseek-api-key --arceeai-api-key --cerebras-api-key --chutes-api-key --cloudflare-ai-gateway-api-key --deepinfra-api-key --gmi-api-key --groq-api-key --kilocode-api-key --kimi-code-api-key --pixverse-api-key --qianfan-api-key --modelstudio-standard-api-key-cn --modelstudio-standard-api-key --modelstudio-api-key-cn --modelstudio-api-key --qwen-oauth-token --fireworks-api-key --moonshot-api-key --tokenhub-api-key --venice-api-key --ai-gateway-api-key --zai-api-key --stepfun-api-key --custom-base-url --custom-api-key --custom-model-id --custom-provider-id --custom-compatibility --gateway-port --gateway-bind --gateway-auth --gateway-token --gateway-token-ref-env --gateway-password --remote-url --remote-token --tailscale --daemon-runtime --node-manager --import-from --import-source" -l chutes-api-key -d 'Chutes API key' +complete -c openclaw -n "__openclaw_command_path_matches onboard -- --container --profile --log-level --workspace --reset-scope --flow --mode --auth-choice --token-provider --token --token-profile-id --token-expires-in --secret-input-mode --cloudflare-ai-gateway-account-id --cloudflare-ai-gateway-gateway-id --alibaba-model-studio-api-key --anthropic-api-key --byteplus-api-key --cohere-api-key --comfy-api-key --fal-api-key --github-copilot-token --gemini-api-key --huggingface-api-key --litellm-api-key --lmstudio-api-key --minimax-api-key --mistral-api-key --novita-api-key --nvidia-api-key --ollama-cloud-api-key --openai-api-key --opencode-zen-api-key --opencode-go-api-key --openrouter-api-key --runway-api-key --synthetic-api-key --together-api-key --volcengine-api-key --vydra-api-key --xai-api-key --xiaomi-api-key --xiaomi-token-plan-api-key --deepseek-api-key --arceeai-api-key --cerebras-api-key --chutes-api-key --cloudflare-ai-gateway-api-key --deepinfra-api-key --gmi-api-key --groq-api-key --kilocode-api-key --kimi-code-api-key --pixverse-api-key --qianfan-api-key --modelstudio-standard-api-key-cn --modelstudio-standard-api-key --modelstudio-api-key-cn --modelstudio-api-key --qwen-oauth-token --fireworks-api-key --moonshot-api-key --tokenhub-api-key --venice-api-key --ai-gateway-api-key --zai-api-key --stepfun-api-key --custom-base-url --custom-api-key --custom-model-id --custom-provider-id --custom-compatibility --gateway-port --gateway-bind --gateway-auth --gateway-token --gateway-token-ref-env --gateway-password --remote-url --remote-token --tailscale --daemon-runtime --node-manager --import-from --import-source" -l cloudflare-ai-gateway-api-key -d 'Cloudflare AI Gateway API key' +complete -c openclaw -n "__openclaw_command_path_matches onboard -- --container --profile --log-level --workspace --reset-scope --flow --mode --auth-choice --token-provider --token --token-profile-id --token-expires-in --secret-input-mode --cloudflare-ai-gateway-account-id --cloudflare-ai-gateway-gateway-id --alibaba-model-studio-api-key --anthropic-api-key --byteplus-api-key --cohere-api-key --comfy-api-key --fal-api-key --github-copilot-token --gemini-api-key --huggingface-api-key --litellm-api-key --lmstudio-api-key --minimax-api-key --mistral-api-key --novita-api-key --nvidia-api-key --ollama-cloud-api-key --openai-api-key --opencode-zen-api-key --opencode-go-api-key --openrouter-api-key --runway-api-key --synthetic-api-key --together-api-key --volcengine-api-key --vydra-api-key --xai-api-key --xiaomi-api-key --xiaomi-token-plan-api-key --deepseek-api-key --arceeai-api-key --cerebras-api-key --chutes-api-key --cloudflare-ai-gateway-api-key --deepinfra-api-key --gmi-api-key --groq-api-key --kilocode-api-key --kimi-code-api-key --pixverse-api-key --qianfan-api-key --modelstudio-standard-api-key-cn --modelstudio-standard-api-key --modelstudio-api-key-cn --modelstudio-api-key --qwen-oauth-token --fireworks-api-key --moonshot-api-key --tokenhub-api-key --venice-api-key --ai-gateway-api-key --zai-api-key --stepfun-api-key --custom-base-url --custom-api-key --custom-model-id --custom-provider-id --custom-compatibility --gateway-port --gateway-bind --gateway-auth --gateway-token --gateway-token-ref-env --gateway-password --remote-url --remote-token --tailscale --daemon-runtime --node-manager --import-from --import-source" -l deepinfra-api-key -d 'DeepInfra API key' +complete -c openclaw -n "__openclaw_command_path_matches onboard -- --container --profile --log-level --workspace --reset-scope --flow --mode --auth-choice --token-provider --token --token-profile-id --token-expires-in --secret-input-mode --cloudflare-ai-gateway-account-id --cloudflare-ai-gateway-gateway-id --alibaba-model-studio-api-key --anthropic-api-key --byteplus-api-key --cohere-api-key --comfy-api-key --fal-api-key --github-copilot-token --gemini-api-key --huggingface-api-key --litellm-api-key --lmstudio-api-key --minimax-api-key --mistral-api-key --novita-api-key --nvidia-api-key --ollama-cloud-api-key --openai-api-key --opencode-zen-api-key --opencode-go-api-key --openrouter-api-key --runway-api-key --synthetic-api-key --together-api-key --volcengine-api-key --vydra-api-key --xai-api-key --xiaomi-api-key --xiaomi-token-plan-api-key --deepseek-api-key --arceeai-api-key --cerebras-api-key --chutes-api-key --cloudflare-ai-gateway-api-key --deepinfra-api-key --gmi-api-key --groq-api-key --kilocode-api-key --kimi-code-api-key --pixverse-api-key --qianfan-api-key --modelstudio-standard-api-key-cn --modelstudio-standard-api-key --modelstudio-api-key-cn --modelstudio-api-key --qwen-oauth-token --fireworks-api-key --moonshot-api-key --tokenhub-api-key --venice-api-key --ai-gateway-api-key --zai-api-key --stepfun-api-key --custom-base-url --custom-api-key --custom-model-id --custom-provider-id --custom-compatibility --gateway-port --gateway-bind --gateway-auth --gateway-token --gateway-token-ref-env --gateway-password --remote-url --remote-token --tailscale --daemon-runtime --node-manager --import-from --import-source" -l gmi-api-key -d 'GMI Cloud API key' +complete -c openclaw -n "__openclaw_command_path_matches onboard -- --container --profile --log-level --workspace --reset-scope --flow --mode --auth-choice --token-provider --token --token-profile-id --token-expires-in --secret-input-mode --cloudflare-ai-gateway-account-id --cloudflare-ai-gateway-gateway-id --alibaba-model-studio-api-key --anthropic-api-key --byteplus-api-key --cohere-api-key --comfy-api-key --fal-api-key --github-copilot-token --gemini-api-key --huggingface-api-key --litellm-api-key --lmstudio-api-key --minimax-api-key --mistral-api-key --novita-api-key --nvidia-api-key --ollama-cloud-api-key --openai-api-key --opencode-zen-api-key --opencode-go-api-key --openrouter-api-key --runway-api-key --synthetic-api-key --together-api-key --volcengine-api-key --vydra-api-key --xai-api-key --xiaomi-api-key --xiaomi-token-plan-api-key --deepseek-api-key --arceeai-api-key --cerebras-api-key --chutes-api-key --cloudflare-ai-gateway-api-key --deepinfra-api-key --gmi-api-key --groq-api-key --kilocode-api-key --kimi-code-api-key --pixverse-api-key --qianfan-api-key --modelstudio-standard-api-key-cn --modelstudio-standard-api-key --modelstudio-api-key-cn --modelstudio-api-key --qwen-oauth-token --fireworks-api-key --moonshot-api-key --tokenhub-api-key --venice-api-key --ai-gateway-api-key --zai-api-key --stepfun-api-key --custom-base-url --custom-api-key --custom-model-id --custom-provider-id --custom-compatibility --gateway-port --gateway-bind --gateway-auth --gateway-token --gateway-token-ref-env --gateway-password --remote-url --remote-token --tailscale --daemon-runtime --node-manager --import-from --import-source" -l groq-api-key -d 'Groq API key' +complete -c openclaw -n "__openclaw_command_path_matches onboard -- --container --profile --log-level --workspace --reset-scope --flow --mode --auth-choice --token-provider --token --token-profile-id --token-expires-in --secret-input-mode --cloudflare-ai-gateway-account-id --cloudflare-ai-gateway-gateway-id --alibaba-model-studio-api-key --anthropic-api-key --byteplus-api-key --cohere-api-key --comfy-api-key --fal-api-key --github-copilot-token --gemini-api-key --huggingface-api-key --litellm-api-key --lmstudio-api-key --minimax-api-key --mistral-api-key --novita-api-key --nvidia-api-key --ollama-cloud-api-key --openai-api-key --opencode-zen-api-key --opencode-go-api-key --openrouter-api-key --runway-api-key --synthetic-api-key --together-api-key --volcengine-api-key --vydra-api-key --xai-api-key --xiaomi-api-key --xiaomi-token-plan-api-key --deepseek-api-key --arceeai-api-key --cerebras-api-key --chutes-api-key --cloudflare-ai-gateway-api-key --deepinfra-api-key --gmi-api-key --groq-api-key --kilocode-api-key --kimi-code-api-key --pixverse-api-key --qianfan-api-key --modelstudio-standard-api-key-cn --modelstudio-standard-api-key --modelstudio-api-key-cn --modelstudio-api-key --qwen-oauth-token --fireworks-api-key --moonshot-api-key --tokenhub-api-key --venice-api-key --ai-gateway-api-key --zai-api-key --stepfun-api-key --custom-base-url --custom-api-key --custom-model-id --custom-provider-id --custom-compatibility --gateway-port --gateway-bind --gateway-auth --gateway-token --gateway-token-ref-env --gateway-password --remote-url --remote-token --tailscale --daemon-runtime --node-manager --import-from --import-source" -l kilocode-api-key -d 'Kilo Gateway API key' +complete -c openclaw -n "__openclaw_command_path_matches onboard -- --container --profile --log-level --workspace --reset-scope --flow --mode --auth-choice --token-provider --token --token-profile-id --token-expires-in --secret-input-mode --cloudflare-ai-gateway-account-id --cloudflare-ai-gateway-gateway-id --alibaba-model-studio-api-key --anthropic-api-key --byteplus-api-key --cohere-api-key --comfy-api-key --fal-api-key --github-copilot-token --gemini-api-key --huggingface-api-key --litellm-api-key --lmstudio-api-key --minimax-api-key --mistral-api-key --novita-api-key --nvidia-api-key --ollama-cloud-api-key --openai-api-key --opencode-zen-api-key --opencode-go-api-key --openrouter-api-key --runway-api-key --synthetic-api-key --together-api-key --volcengine-api-key --vydra-api-key --xai-api-key --xiaomi-api-key --xiaomi-token-plan-api-key --deepseek-api-key --arceeai-api-key --cerebras-api-key --chutes-api-key --cloudflare-ai-gateway-api-key --deepinfra-api-key --gmi-api-key --groq-api-key --kilocode-api-key --kimi-code-api-key --pixverse-api-key --qianfan-api-key --modelstudio-standard-api-key-cn --modelstudio-standard-api-key --modelstudio-api-key-cn --modelstudio-api-key --qwen-oauth-token --fireworks-api-key --moonshot-api-key --tokenhub-api-key --venice-api-key --ai-gateway-api-key --zai-api-key --stepfun-api-key --custom-base-url --custom-api-key --custom-model-id --custom-provider-id --custom-compatibility --gateway-port --gateway-bind --gateway-auth --gateway-token --gateway-token-ref-env --gateway-password --remote-url --remote-token --tailscale --daemon-runtime --node-manager --import-from --import-source" -l kimi-code-api-key -d 'Kimi Code API key (subscription)' +complete -c openclaw -n "__openclaw_command_path_matches onboard -- --container --profile --log-level --workspace --reset-scope --flow --mode --auth-choice --token-provider --token --token-profile-id --token-expires-in --secret-input-mode --cloudflare-ai-gateway-account-id --cloudflare-ai-gateway-gateway-id --alibaba-model-studio-api-key --anthropic-api-key --byteplus-api-key --cohere-api-key --comfy-api-key --fal-api-key --github-copilot-token --gemini-api-key --huggingface-api-key --litellm-api-key --lmstudio-api-key --minimax-api-key --mistral-api-key --novita-api-key --nvidia-api-key --ollama-cloud-api-key --openai-api-key --opencode-zen-api-key --opencode-go-api-key --openrouter-api-key --runway-api-key --synthetic-api-key --together-api-key --volcengine-api-key --vydra-api-key --xai-api-key --xiaomi-api-key --xiaomi-token-plan-api-key --deepseek-api-key --arceeai-api-key --cerebras-api-key --chutes-api-key --cloudflare-ai-gateway-api-key --deepinfra-api-key --gmi-api-key --groq-api-key --kilocode-api-key --kimi-code-api-key --pixverse-api-key --qianfan-api-key --modelstudio-standard-api-key-cn --modelstudio-standard-api-key --modelstudio-api-key-cn --modelstudio-api-key --qwen-oauth-token --fireworks-api-key --moonshot-api-key --tokenhub-api-key --venice-api-key --ai-gateway-api-key --zai-api-key --stepfun-api-key --custom-base-url --custom-api-key --custom-model-id --custom-provider-id --custom-compatibility --gateway-port --gateway-bind --gateway-auth --gateway-token --gateway-token-ref-env --gateway-password --remote-url --remote-token --tailscale --daemon-runtime --node-manager --import-from --import-source" -l pixverse-api-key -d 'PixVerse API key' +complete -c openclaw -n "__openclaw_command_path_matches onboard -- --container --profile --log-level --workspace --reset-scope --flow --mode --auth-choice --token-provider --token --token-profile-id --token-expires-in --secret-input-mode --cloudflare-ai-gateway-account-id --cloudflare-ai-gateway-gateway-id --alibaba-model-studio-api-key --anthropic-api-key --byteplus-api-key --cohere-api-key --comfy-api-key --fal-api-key --github-copilot-token --gemini-api-key --huggingface-api-key --litellm-api-key --lmstudio-api-key --minimax-api-key --mistral-api-key --novita-api-key --nvidia-api-key --ollama-cloud-api-key --openai-api-key --opencode-zen-api-key --opencode-go-api-key --openrouter-api-key --runway-api-key --synthetic-api-key --together-api-key --volcengine-api-key --vydra-api-key --xai-api-key --xiaomi-api-key --xiaomi-token-plan-api-key --deepseek-api-key --arceeai-api-key --cerebras-api-key --chutes-api-key --cloudflare-ai-gateway-api-key --deepinfra-api-key --gmi-api-key --groq-api-key --kilocode-api-key --kimi-code-api-key --pixverse-api-key --qianfan-api-key --modelstudio-standard-api-key-cn --modelstudio-standard-api-key --modelstudio-api-key-cn --modelstudio-api-key --qwen-oauth-token --fireworks-api-key --moonshot-api-key --tokenhub-api-key --venice-api-key --ai-gateway-api-key --zai-api-key --stepfun-api-key --custom-base-url --custom-api-key --custom-model-id --custom-provider-id --custom-compatibility --gateway-port --gateway-bind --gateway-auth --gateway-token --gateway-token-ref-env --gateway-password --remote-url --remote-token --tailscale --daemon-runtime --node-manager --import-from --import-source" -l qianfan-api-key -d 'QIANFAN API key' +complete -c openclaw -n "__openclaw_command_path_matches onboard -- --container --profile --log-level --workspace --reset-scope --flow --mode --auth-choice --token-provider --token --token-profile-id --token-expires-in --secret-input-mode --cloudflare-ai-gateway-account-id --cloudflare-ai-gateway-gateway-id --alibaba-model-studio-api-key --anthropic-api-key --byteplus-api-key --cohere-api-key --comfy-api-key --fal-api-key --github-copilot-token --gemini-api-key --huggingface-api-key --litellm-api-key --lmstudio-api-key --minimax-api-key --mistral-api-key --novita-api-key --nvidia-api-key --ollama-cloud-api-key --openai-api-key --opencode-zen-api-key --opencode-go-api-key --openrouter-api-key --runway-api-key --synthetic-api-key --together-api-key --volcengine-api-key --vydra-api-key --xai-api-key --xiaomi-api-key --xiaomi-token-plan-api-key --deepseek-api-key --arceeai-api-key --cerebras-api-key --chutes-api-key --cloudflare-ai-gateway-api-key --deepinfra-api-key --gmi-api-key --groq-api-key --kilocode-api-key --kimi-code-api-key --pixverse-api-key --qianfan-api-key --modelstudio-standard-api-key-cn --modelstudio-standard-api-key --modelstudio-api-key-cn --modelstudio-api-key --qwen-oauth-token --fireworks-api-key --moonshot-api-key --tokenhub-api-key --venice-api-key --ai-gateway-api-key --zai-api-key --stepfun-api-key --custom-base-url --custom-api-key --custom-model-id --custom-provider-id --custom-compatibility --gateway-port --gateway-bind --gateway-auth --gateway-token --gateway-token-ref-env --gateway-password --remote-url --remote-token --tailscale --daemon-runtime --node-manager --import-from --import-source" -l modelstudio-standard-api-key-cn -d 'Qwen Cloud standard API key (China)' +complete -c openclaw -n "__openclaw_command_path_matches onboard -- --container --profile --log-level --workspace --reset-scope --flow --mode --auth-choice --token-provider --token --token-profile-id --token-expires-in --secret-input-mode --cloudflare-ai-gateway-account-id --cloudflare-ai-gateway-gateway-id --alibaba-model-studio-api-key --anthropic-api-key --byteplus-api-key --cohere-api-key --comfy-api-key --fal-api-key --github-copilot-token --gemini-api-key --huggingface-api-key --litellm-api-key --lmstudio-api-key --minimax-api-key --mistral-api-key --novita-api-key --nvidia-api-key --ollama-cloud-api-key --openai-api-key --opencode-zen-api-key --opencode-go-api-key --openrouter-api-key --runway-api-key --synthetic-api-key --together-api-key --volcengine-api-key --vydra-api-key --xai-api-key --xiaomi-api-key --xiaomi-token-plan-api-key --deepseek-api-key --arceeai-api-key --cerebras-api-key --chutes-api-key --cloudflare-ai-gateway-api-key --deepinfra-api-key --gmi-api-key --groq-api-key --kilocode-api-key --kimi-code-api-key --pixverse-api-key --qianfan-api-key --modelstudio-standard-api-key-cn --modelstudio-standard-api-key --modelstudio-api-key-cn --modelstudio-api-key --qwen-oauth-token --fireworks-api-key --moonshot-api-key --tokenhub-api-key --venice-api-key --ai-gateway-api-key --zai-api-key --stepfun-api-key --custom-base-url --custom-api-key --custom-model-id --custom-provider-id --custom-compatibility --gateway-port --gateway-bind --gateway-auth --gateway-token --gateway-token-ref-env --gateway-password --remote-url --remote-token --tailscale --daemon-runtime --node-manager --import-from --import-source" -l modelstudio-standard-api-key -d 'Qwen Cloud standard API key (Global/Intl)' +complete -c openclaw -n "__openclaw_command_path_matches onboard -- --container --profile --log-level --workspace --reset-scope --flow --mode --auth-choice --token-provider --token --token-profile-id --token-expires-in --secret-input-mode --cloudflare-ai-gateway-account-id --cloudflare-ai-gateway-gateway-id --alibaba-model-studio-api-key --anthropic-api-key --byteplus-api-key --cohere-api-key --comfy-api-key --fal-api-key --github-copilot-token --gemini-api-key --huggingface-api-key --litellm-api-key --lmstudio-api-key --minimax-api-key --mistral-api-key --novita-api-key --nvidia-api-key --ollama-cloud-api-key --openai-api-key --opencode-zen-api-key --opencode-go-api-key --openrouter-api-key --runway-api-key --synthetic-api-key --together-api-key --volcengine-api-key --vydra-api-key --xai-api-key --xiaomi-api-key --xiaomi-token-plan-api-key --deepseek-api-key --arceeai-api-key --cerebras-api-key --chutes-api-key --cloudflare-ai-gateway-api-key --deepinfra-api-key --gmi-api-key --groq-api-key --kilocode-api-key --kimi-code-api-key --pixverse-api-key --qianfan-api-key --modelstudio-standard-api-key-cn --modelstudio-standard-api-key --modelstudio-api-key-cn --modelstudio-api-key --qwen-oauth-token --fireworks-api-key --moonshot-api-key --tokenhub-api-key --venice-api-key --ai-gateway-api-key --zai-api-key --stepfun-api-key --custom-base-url --custom-api-key --custom-model-id --custom-provider-id --custom-compatibility --gateway-port --gateway-bind --gateway-auth --gateway-token --gateway-token-ref-env --gateway-password --remote-url --remote-token --tailscale --daemon-runtime --node-manager --import-from --import-source" -l modelstudio-api-key-cn -d 'Qwen Cloud Coding Plan API key (China)' +complete -c openclaw -n "__openclaw_command_path_matches onboard -- --container --profile --log-level --workspace --reset-scope --flow --mode --auth-choice --token-provider --token --token-profile-id --token-expires-in --secret-input-mode --cloudflare-ai-gateway-account-id --cloudflare-ai-gateway-gateway-id --alibaba-model-studio-api-key --anthropic-api-key --byteplus-api-key --cohere-api-key --comfy-api-key --fal-api-key --github-copilot-token --gemini-api-key --huggingface-api-key --litellm-api-key --lmstudio-api-key --minimax-api-key --mistral-api-key --novita-api-key --nvidia-api-key --ollama-cloud-api-key --openai-api-key --opencode-zen-api-key --opencode-go-api-key --openrouter-api-key --runway-api-key --synthetic-api-key --together-api-key --volcengine-api-key --vydra-api-key --xai-api-key --xiaomi-api-key --xiaomi-token-plan-api-key --deepseek-api-key --arceeai-api-key --cerebras-api-key --chutes-api-key --cloudflare-ai-gateway-api-key --deepinfra-api-key --gmi-api-key --groq-api-key --kilocode-api-key --kimi-code-api-key --pixverse-api-key --qianfan-api-key --modelstudio-standard-api-key-cn --modelstudio-standard-api-key --modelstudio-api-key-cn --modelstudio-api-key --qwen-oauth-token --fireworks-api-key --moonshot-api-key --tokenhub-api-key --venice-api-key --ai-gateway-api-key --zai-api-key --stepfun-api-key --custom-base-url --custom-api-key --custom-model-id --custom-provider-id --custom-compatibility --gateway-port --gateway-bind --gateway-auth --gateway-token --gateway-token-ref-env --gateway-password --remote-url --remote-token --tailscale --daemon-runtime --node-manager --import-from --import-source" -l modelstudio-api-key -d 'Qwen Cloud Coding Plan API key (Global/Intl)' +complete -c openclaw -n "__openclaw_command_path_matches onboard -- --container --profile --log-level --workspace --reset-scope --flow --mode --auth-choice --token-provider --token --token-profile-id --token-expires-in --secret-input-mode --cloudflare-ai-gateway-account-id --cloudflare-ai-gateway-gateway-id --alibaba-model-studio-api-key --anthropic-api-key --byteplus-api-key --cohere-api-key --comfy-api-key --fal-api-key --github-copilot-token --gemini-api-key --huggingface-api-key --litellm-api-key --lmstudio-api-key --minimax-api-key --mistral-api-key --novita-api-key --nvidia-api-key --ollama-cloud-api-key --openai-api-key --opencode-zen-api-key --opencode-go-api-key --openrouter-api-key --runway-api-key --synthetic-api-key --together-api-key --volcengine-api-key --vydra-api-key --xai-api-key --xiaomi-api-key --xiaomi-token-plan-api-key --deepseek-api-key --arceeai-api-key --cerebras-api-key --chutes-api-key --cloudflare-ai-gateway-api-key --deepinfra-api-key --gmi-api-key --groq-api-key --kilocode-api-key --kimi-code-api-key --pixverse-api-key --qianfan-api-key --modelstudio-standard-api-key-cn --modelstudio-standard-api-key --modelstudio-api-key-cn --modelstudio-api-key --qwen-oauth-token --fireworks-api-key --moonshot-api-key --tokenhub-api-key --venice-api-key --ai-gateway-api-key --zai-api-key --stepfun-api-key --custom-base-url --custom-api-key --custom-model-id --custom-provider-id --custom-compatibility --gateway-port --gateway-bind --gateway-auth --gateway-token --gateway-token-ref-env --gateway-password --remote-url --remote-token --tailscale --daemon-runtime --node-manager --import-from --import-source" -l qwen-oauth-token -d 'Qwen OAuth token' +complete -c openclaw -n "__openclaw_command_path_matches onboard -- --container --profile --log-level --workspace --reset-scope --flow --mode --auth-choice --token-provider --token --token-profile-id --token-expires-in --secret-input-mode --cloudflare-ai-gateway-account-id --cloudflare-ai-gateway-gateway-id --alibaba-model-studio-api-key --anthropic-api-key --byteplus-api-key --cohere-api-key --comfy-api-key --fal-api-key --github-copilot-token --gemini-api-key --huggingface-api-key --litellm-api-key --lmstudio-api-key --minimax-api-key --mistral-api-key --novita-api-key --nvidia-api-key --ollama-cloud-api-key --openai-api-key --opencode-zen-api-key --opencode-go-api-key --openrouter-api-key --runway-api-key --synthetic-api-key --together-api-key --volcengine-api-key --vydra-api-key --xai-api-key --xiaomi-api-key --xiaomi-token-plan-api-key --deepseek-api-key --arceeai-api-key --cerebras-api-key --chutes-api-key --cloudflare-ai-gateway-api-key --deepinfra-api-key --gmi-api-key --groq-api-key --kilocode-api-key --kimi-code-api-key --pixverse-api-key --qianfan-api-key --modelstudio-standard-api-key-cn --modelstudio-standard-api-key --modelstudio-api-key-cn --modelstudio-api-key --qwen-oauth-token --fireworks-api-key --moonshot-api-key --tokenhub-api-key --venice-api-key --ai-gateway-api-key --zai-api-key --stepfun-api-key --custom-base-url --custom-api-key --custom-model-id --custom-provider-id --custom-compatibility --gateway-port --gateway-bind --gateway-auth --gateway-token --gateway-token-ref-env --gateway-password --remote-url --remote-token --tailscale --daemon-runtime --node-manager --import-from --import-source" -l fireworks-api-key -d 'Fireworks API key' +complete -c openclaw -n "__openclaw_command_path_matches onboard -- --container --profile --log-level --workspace --reset-scope --flow --mode --auth-choice --token-provider --token --token-profile-id --token-expires-in --secret-input-mode --cloudflare-ai-gateway-account-id --cloudflare-ai-gateway-gateway-id --alibaba-model-studio-api-key --anthropic-api-key --byteplus-api-key --cohere-api-key --comfy-api-key --fal-api-key --github-copilot-token --gemini-api-key --huggingface-api-key --litellm-api-key --lmstudio-api-key --minimax-api-key --mistral-api-key --novita-api-key --nvidia-api-key --ollama-cloud-api-key --openai-api-key --opencode-zen-api-key --opencode-go-api-key --openrouter-api-key --runway-api-key --synthetic-api-key --together-api-key --volcengine-api-key --vydra-api-key --xai-api-key --xiaomi-api-key --xiaomi-token-plan-api-key --deepseek-api-key --arceeai-api-key --cerebras-api-key --chutes-api-key --cloudflare-ai-gateway-api-key --deepinfra-api-key --gmi-api-key --groq-api-key --kilocode-api-key --kimi-code-api-key --pixverse-api-key --qianfan-api-key --modelstudio-standard-api-key-cn --modelstudio-standard-api-key --modelstudio-api-key-cn --modelstudio-api-key --qwen-oauth-token --fireworks-api-key --moonshot-api-key --tokenhub-api-key --venice-api-key --ai-gateway-api-key --zai-api-key --stepfun-api-key --custom-base-url --custom-api-key --custom-model-id --custom-provider-id --custom-compatibility --gateway-port --gateway-bind --gateway-auth --gateway-token --gateway-token-ref-env --gateway-password --remote-url --remote-token --tailscale --daemon-runtime --node-manager --import-from --import-source" -l moonshot-api-key -d 'Moonshot API key' +complete -c openclaw -n "__openclaw_command_path_matches onboard -- --container --profile --log-level --workspace --reset-scope --flow --mode --auth-choice --token-provider --token --token-profile-id --token-expires-in --secret-input-mode --cloudflare-ai-gateway-account-id --cloudflare-ai-gateway-gateway-id --alibaba-model-studio-api-key --anthropic-api-key --byteplus-api-key --cohere-api-key --comfy-api-key --fal-api-key --github-copilot-token --gemini-api-key --huggingface-api-key --litellm-api-key --lmstudio-api-key --minimax-api-key --mistral-api-key --novita-api-key --nvidia-api-key --ollama-cloud-api-key --openai-api-key --opencode-zen-api-key --opencode-go-api-key --openrouter-api-key --runway-api-key --synthetic-api-key --together-api-key --volcengine-api-key --vydra-api-key --xai-api-key --xiaomi-api-key --xiaomi-token-plan-api-key --deepseek-api-key --arceeai-api-key --cerebras-api-key --chutes-api-key --cloudflare-ai-gateway-api-key --deepinfra-api-key --gmi-api-key --groq-api-key --kilocode-api-key --kimi-code-api-key --pixverse-api-key --qianfan-api-key --modelstudio-standard-api-key-cn --modelstudio-standard-api-key --modelstudio-api-key-cn --modelstudio-api-key --qwen-oauth-token --fireworks-api-key --moonshot-api-key --tokenhub-api-key --venice-api-key --ai-gateway-api-key --zai-api-key --stepfun-api-key --custom-base-url --custom-api-key --custom-model-id --custom-provider-id --custom-compatibility --gateway-port --gateway-bind --gateway-auth --gateway-token --gateway-token-ref-env --gateway-password --remote-url --remote-token --tailscale --daemon-runtime --node-manager --import-from --import-source" -l tokenhub-api-key -d 'Tencent TokenHub API key' +complete -c openclaw -n "__openclaw_command_path_matches onboard -- --container --profile --log-level --workspace --reset-scope --flow --mode --auth-choice --token-provider --token --token-profile-id --token-expires-in --secret-input-mode --cloudflare-ai-gateway-account-id --cloudflare-ai-gateway-gateway-id --alibaba-model-studio-api-key --anthropic-api-key --byteplus-api-key --cohere-api-key --comfy-api-key --fal-api-key --github-copilot-token --gemini-api-key --huggingface-api-key --litellm-api-key --lmstudio-api-key --minimax-api-key --mistral-api-key --novita-api-key --nvidia-api-key --ollama-cloud-api-key --openai-api-key --opencode-zen-api-key --opencode-go-api-key --openrouter-api-key --runway-api-key --synthetic-api-key --together-api-key --volcengine-api-key --vydra-api-key --xai-api-key --xiaomi-api-key --xiaomi-token-plan-api-key --deepseek-api-key --arceeai-api-key --cerebras-api-key --chutes-api-key --cloudflare-ai-gateway-api-key --deepinfra-api-key --gmi-api-key --groq-api-key --kilocode-api-key --kimi-code-api-key --pixverse-api-key --qianfan-api-key --modelstudio-standard-api-key-cn --modelstudio-standard-api-key --modelstudio-api-key-cn --modelstudio-api-key --qwen-oauth-token --fireworks-api-key --moonshot-api-key --tokenhub-api-key --venice-api-key --ai-gateway-api-key --zai-api-key --stepfun-api-key --custom-base-url --custom-api-key --custom-model-id --custom-provider-id --custom-compatibility --gateway-port --gateway-bind --gateway-auth --gateway-token --gateway-token-ref-env --gateway-password --remote-url --remote-token --tailscale --daemon-runtime --node-manager --import-from --import-source" -l venice-api-key -d 'Venice API key' +complete -c openclaw -n "__openclaw_command_path_matches onboard -- --container --profile --log-level --workspace --reset-scope --flow --mode --auth-choice --token-provider --token --token-profile-id --token-expires-in --secret-input-mode --cloudflare-ai-gateway-account-id --cloudflare-ai-gateway-gateway-id --alibaba-model-studio-api-key --anthropic-api-key --byteplus-api-key --cohere-api-key --comfy-api-key --fal-api-key --github-copilot-token --gemini-api-key --huggingface-api-key --litellm-api-key --lmstudio-api-key --minimax-api-key --mistral-api-key --novita-api-key --nvidia-api-key --ollama-cloud-api-key --openai-api-key --opencode-zen-api-key --opencode-go-api-key --openrouter-api-key --runway-api-key --synthetic-api-key --together-api-key --volcengine-api-key --vydra-api-key --xai-api-key --xiaomi-api-key --xiaomi-token-plan-api-key --deepseek-api-key --arceeai-api-key --cerebras-api-key --chutes-api-key --cloudflare-ai-gateway-api-key --deepinfra-api-key --gmi-api-key --groq-api-key --kilocode-api-key --kimi-code-api-key --pixverse-api-key --qianfan-api-key --modelstudio-standard-api-key-cn --modelstudio-standard-api-key --modelstudio-api-key-cn --modelstudio-api-key --qwen-oauth-token --fireworks-api-key --moonshot-api-key --tokenhub-api-key --venice-api-key --ai-gateway-api-key --zai-api-key --stepfun-api-key --custom-base-url --custom-api-key --custom-model-id --custom-provider-id --custom-compatibility --gateway-port --gateway-bind --gateway-auth --gateway-token --gateway-token-ref-env --gateway-password --remote-url --remote-token --tailscale --daemon-runtime --node-manager --import-from --import-source" -l ai-gateway-api-key -d 'Vercel AI Gateway API key' +complete -c openclaw -n "__openclaw_command_path_matches onboard -- --container --profile --log-level --workspace --reset-scope --flow --mode --auth-choice --token-provider --token --token-profile-id --token-expires-in --secret-input-mode --cloudflare-ai-gateway-account-id --cloudflare-ai-gateway-gateway-id --alibaba-model-studio-api-key --anthropic-api-key --byteplus-api-key --cohere-api-key --comfy-api-key --fal-api-key --github-copilot-token --gemini-api-key --huggingface-api-key --litellm-api-key --lmstudio-api-key --minimax-api-key --mistral-api-key --novita-api-key --nvidia-api-key --ollama-cloud-api-key --openai-api-key --opencode-zen-api-key --opencode-go-api-key --openrouter-api-key --runway-api-key --synthetic-api-key --together-api-key --volcengine-api-key --vydra-api-key --xai-api-key --xiaomi-api-key --xiaomi-token-plan-api-key --deepseek-api-key --arceeai-api-key --cerebras-api-key --chutes-api-key --cloudflare-ai-gateway-api-key --deepinfra-api-key --gmi-api-key --groq-api-key --kilocode-api-key --kimi-code-api-key --pixverse-api-key --qianfan-api-key --modelstudio-standard-api-key-cn --modelstudio-standard-api-key --modelstudio-api-key-cn --modelstudio-api-key --qwen-oauth-token --fireworks-api-key --moonshot-api-key --tokenhub-api-key --venice-api-key --ai-gateway-api-key --zai-api-key --stepfun-api-key --custom-base-url --custom-api-key --custom-model-id --custom-provider-id --custom-compatibility --gateway-port --gateway-bind --gateway-auth --gateway-token --gateway-token-ref-env --gateway-password --remote-url --remote-token --tailscale --daemon-runtime --node-manager --import-from --import-source" -l zai-api-key -d 'Z.AI API key' +complete -c openclaw -n "__openclaw_command_path_matches onboard -- --container --profile --log-level --workspace --reset-scope --flow --mode --auth-choice --token-provider --token --token-profile-id --token-expires-in --secret-input-mode --cloudflare-ai-gateway-account-id --cloudflare-ai-gateway-gateway-id --alibaba-model-studio-api-key --anthropic-api-key --byteplus-api-key --cohere-api-key --comfy-api-key --fal-api-key --github-copilot-token --gemini-api-key --huggingface-api-key --litellm-api-key --lmstudio-api-key --minimax-api-key --mistral-api-key --novita-api-key --nvidia-api-key --ollama-cloud-api-key --openai-api-key --opencode-zen-api-key --opencode-go-api-key --openrouter-api-key --runway-api-key --synthetic-api-key --together-api-key --volcengine-api-key --vydra-api-key --xai-api-key --xiaomi-api-key --xiaomi-token-plan-api-key --deepseek-api-key --arceeai-api-key --cerebras-api-key --chutes-api-key --cloudflare-ai-gateway-api-key --deepinfra-api-key --gmi-api-key --groq-api-key --kilocode-api-key --kimi-code-api-key --pixverse-api-key --qianfan-api-key --modelstudio-standard-api-key-cn --modelstudio-standard-api-key --modelstudio-api-key-cn --modelstudio-api-key --qwen-oauth-token --fireworks-api-key --moonshot-api-key --tokenhub-api-key --venice-api-key --ai-gateway-api-key --zai-api-key --stepfun-api-key --custom-base-url --custom-api-key --custom-model-id --custom-provider-id --custom-compatibility --gateway-port --gateway-bind --gateway-auth --gateway-token --gateway-token-ref-env --gateway-password --remote-url --remote-token --tailscale --daemon-runtime --node-manager --import-from --import-source" -l stepfun-api-key -d 'StepFun API key' +complete -c openclaw -n "__openclaw_command_path_matches onboard -- --container --profile --log-level --workspace --reset-scope --flow --mode --auth-choice --token-provider --token --token-profile-id --token-expires-in --secret-input-mode --cloudflare-ai-gateway-account-id --cloudflare-ai-gateway-gateway-id --alibaba-model-studio-api-key --anthropic-api-key --byteplus-api-key --cohere-api-key --comfy-api-key --fal-api-key --github-copilot-token --gemini-api-key --huggingface-api-key --litellm-api-key --lmstudio-api-key --minimax-api-key --mistral-api-key --novita-api-key --nvidia-api-key --ollama-cloud-api-key --openai-api-key --opencode-zen-api-key --opencode-go-api-key --openrouter-api-key --runway-api-key --synthetic-api-key --together-api-key --volcengine-api-key --vydra-api-key --xai-api-key --xiaomi-api-key --xiaomi-token-plan-api-key --deepseek-api-key --arceeai-api-key --cerebras-api-key --chutes-api-key --cloudflare-ai-gateway-api-key --deepinfra-api-key --gmi-api-key --groq-api-key --kilocode-api-key --kimi-code-api-key --pixverse-api-key --qianfan-api-key --modelstudio-standard-api-key-cn --modelstudio-standard-api-key --modelstudio-api-key-cn --modelstudio-api-key --qwen-oauth-token --fireworks-api-key --moonshot-api-key --tokenhub-api-key --venice-api-key --ai-gateway-api-key --zai-api-key --stepfun-api-key --custom-base-url --custom-api-key --custom-model-id --custom-provider-id --custom-compatibility --gateway-port --gateway-bind --gateway-auth --gateway-token --gateway-token-ref-env --gateway-password --remote-url --remote-token --tailscale --daemon-runtime --node-manager --import-from --import-source" -l custom-base-url -d 'Custom provider base URL' +complete -c openclaw -n "__openclaw_command_path_matches onboard -- --container --profile --log-level --workspace --reset-scope --flow --mode --auth-choice --token-provider --token --token-profile-id --token-expires-in --secret-input-mode --cloudflare-ai-gateway-account-id --cloudflare-ai-gateway-gateway-id --alibaba-model-studio-api-key --anthropic-api-key --byteplus-api-key --cohere-api-key --comfy-api-key --fal-api-key --github-copilot-token --gemini-api-key --huggingface-api-key --litellm-api-key --lmstudio-api-key --minimax-api-key --mistral-api-key --novita-api-key --nvidia-api-key --ollama-cloud-api-key --openai-api-key --opencode-zen-api-key --opencode-go-api-key --openrouter-api-key --runway-api-key --synthetic-api-key --together-api-key --volcengine-api-key --vydra-api-key --xai-api-key --xiaomi-api-key --xiaomi-token-plan-api-key --deepseek-api-key --arceeai-api-key --cerebras-api-key --chutes-api-key --cloudflare-ai-gateway-api-key --deepinfra-api-key --gmi-api-key --groq-api-key --kilocode-api-key --kimi-code-api-key --pixverse-api-key --qianfan-api-key --modelstudio-standard-api-key-cn --modelstudio-standard-api-key --modelstudio-api-key-cn --modelstudio-api-key --qwen-oauth-token --fireworks-api-key --moonshot-api-key --tokenhub-api-key --venice-api-key --ai-gateway-api-key --zai-api-key --stepfun-api-key --custom-base-url --custom-api-key --custom-model-id --custom-provider-id --custom-compatibility --gateway-port --gateway-bind --gateway-auth --gateway-token --gateway-token-ref-env --gateway-password --remote-url --remote-token --tailscale --daemon-runtime --node-manager --import-from --import-source" -l custom-api-key -d 'Custom provider API key (optional)' +complete -c openclaw -n "__openclaw_command_path_matches onboard -- --container --profile --log-level --workspace --reset-scope --flow --mode --auth-choice --token-provider --token --token-profile-id --token-expires-in --secret-input-mode --cloudflare-ai-gateway-account-id --cloudflare-ai-gateway-gateway-id --alibaba-model-studio-api-key --anthropic-api-key --byteplus-api-key --cohere-api-key --comfy-api-key --fal-api-key --github-copilot-token --gemini-api-key --huggingface-api-key --litellm-api-key --lmstudio-api-key --minimax-api-key --mistral-api-key --novita-api-key --nvidia-api-key --ollama-cloud-api-key --openai-api-key --opencode-zen-api-key --opencode-go-api-key --openrouter-api-key --runway-api-key --synthetic-api-key --together-api-key --volcengine-api-key --vydra-api-key --xai-api-key --xiaomi-api-key --xiaomi-token-plan-api-key --deepseek-api-key --arceeai-api-key --cerebras-api-key --chutes-api-key --cloudflare-ai-gateway-api-key --deepinfra-api-key --gmi-api-key --groq-api-key --kilocode-api-key --kimi-code-api-key --pixverse-api-key --qianfan-api-key --modelstudio-standard-api-key-cn --modelstudio-standard-api-key --modelstudio-api-key-cn --modelstudio-api-key --qwen-oauth-token --fireworks-api-key --moonshot-api-key --tokenhub-api-key --venice-api-key --ai-gateway-api-key --zai-api-key --stepfun-api-key --custom-base-url --custom-api-key --custom-model-id --custom-provider-id --custom-compatibility --gateway-port --gateway-bind --gateway-auth --gateway-token --gateway-token-ref-env --gateway-password --remote-url --remote-token --tailscale --daemon-runtime --node-manager --import-from --import-source" -l custom-model-id -d 'Custom provider model ID' +complete -c openclaw -n "__openclaw_command_path_matches onboard -- --container --profile --log-level --workspace --reset-scope --flow --mode --auth-choice --token-provider --token --token-profile-id --token-expires-in --secret-input-mode --cloudflare-ai-gateway-account-id --cloudflare-ai-gateway-gateway-id --alibaba-model-studio-api-key --anthropic-api-key --byteplus-api-key --cohere-api-key --comfy-api-key --fal-api-key --github-copilot-token --gemini-api-key --huggingface-api-key --litellm-api-key --lmstudio-api-key --minimax-api-key --mistral-api-key --novita-api-key --nvidia-api-key --ollama-cloud-api-key --openai-api-key --opencode-zen-api-key --opencode-go-api-key --openrouter-api-key --runway-api-key --synthetic-api-key --together-api-key --volcengine-api-key --vydra-api-key --xai-api-key --xiaomi-api-key --xiaomi-token-plan-api-key --deepseek-api-key --arceeai-api-key --cerebras-api-key --chutes-api-key --cloudflare-ai-gateway-api-key --deepinfra-api-key --gmi-api-key --groq-api-key --kilocode-api-key --kimi-code-api-key --pixverse-api-key --qianfan-api-key --modelstudio-standard-api-key-cn --modelstudio-standard-api-key --modelstudio-api-key-cn --modelstudio-api-key --qwen-oauth-token --fireworks-api-key --moonshot-api-key --tokenhub-api-key --venice-api-key --ai-gateway-api-key --zai-api-key --stepfun-api-key --custom-base-url --custom-api-key --custom-model-id --custom-provider-id --custom-compatibility --gateway-port --gateway-bind --gateway-auth --gateway-token --gateway-token-ref-env --gateway-password --remote-url --remote-token --tailscale --daemon-runtime --node-manager --import-from --import-source" -l custom-provider-id -d 'Custom provider ID (optional; auto-derived by default)' +complete -c openclaw -n "__openclaw_command_path_matches onboard -- --container --profile --log-level --workspace --reset-scope --flow --mode --auth-choice --token-provider --token --token-profile-id --token-expires-in --secret-input-mode --cloudflare-ai-gateway-account-id --cloudflare-ai-gateway-gateway-id --alibaba-model-studio-api-key --anthropic-api-key --byteplus-api-key --cohere-api-key --comfy-api-key --fal-api-key --github-copilot-token --gemini-api-key --huggingface-api-key --litellm-api-key --lmstudio-api-key --minimax-api-key --mistral-api-key --novita-api-key --nvidia-api-key --ollama-cloud-api-key --openai-api-key --opencode-zen-api-key --opencode-go-api-key --openrouter-api-key --runway-api-key --synthetic-api-key --together-api-key --volcengine-api-key --vydra-api-key --xai-api-key --xiaomi-api-key --xiaomi-token-plan-api-key --deepseek-api-key --arceeai-api-key --cerebras-api-key --chutes-api-key --cloudflare-ai-gateway-api-key --deepinfra-api-key --gmi-api-key --groq-api-key --kilocode-api-key --kimi-code-api-key --pixverse-api-key --qianfan-api-key --modelstudio-standard-api-key-cn --modelstudio-standard-api-key --modelstudio-api-key-cn --modelstudio-api-key --qwen-oauth-token --fireworks-api-key --moonshot-api-key --tokenhub-api-key --venice-api-key --ai-gateway-api-key --zai-api-key --stepfun-api-key --custom-base-url --custom-api-key --custom-model-id --custom-provider-id --custom-compatibility --gateway-port --gateway-bind --gateway-auth --gateway-token --gateway-token-ref-env --gateway-password --remote-url --remote-token --tailscale --daemon-runtime --node-manager --import-from --import-source" -l custom-compatibility -d 'Custom provider API compatibility: openai|openai-responses|anthropic (default: openai)' +complete -c openclaw -n "__openclaw_command_path_matches onboard -- --container --profile --log-level --workspace --reset-scope --flow --mode --auth-choice --token-provider --token --token-profile-id --token-expires-in --secret-input-mode --cloudflare-ai-gateway-account-id --cloudflare-ai-gateway-gateway-id --alibaba-model-studio-api-key --anthropic-api-key --byteplus-api-key --cohere-api-key --comfy-api-key --fal-api-key --github-copilot-token --gemini-api-key --huggingface-api-key --litellm-api-key --lmstudio-api-key --minimax-api-key --mistral-api-key --novita-api-key --nvidia-api-key --ollama-cloud-api-key --openai-api-key --opencode-zen-api-key --opencode-go-api-key --openrouter-api-key --runway-api-key --synthetic-api-key --together-api-key --volcengine-api-key --vydra-api-key --xai-api-key --xiaomi-api-key --xiaomi-token-plan-api-key --deepseek-api-key --arceeai-api-key --cerebras-api-key --chutes-api-key --cloudflare-ai-gateway-api-key --deepinfra-api-key --gmi-api-key --groq-api-key --kilocode-api-key --kimi-code-api-key --pixverse-api-key --qianfan-api-key --modelstudio-standard-api-key-cn --modelstudio-standard-api-key --modelstudio-api-key-cn --modelstudio-api-key --qwen-oauth-token --fireworks-api-key --moonshot-api-key --tokenhub-api-key --venice-api-key --ai-gateway-api-key --zai-api-key --stepfun-api-key --custom-base-url --custom-api-key --custom-model-id --custom-provider-id --custom-compatibility --gateway-port --gateway-bind --gateway-auth --gateway-token --gateway-token-ref-env --gateway-password --remote-url --remote-token --tailscale --daemon-runtime --node-manager --import-from --import-source" -l custom-image-input -d 'Mark the custom provider model as image-capable' +complete -c openclaw -n "__openclaw_command_path_matches onboard -- --container --profile --log-level --workspace --reset-scope --flow --mode --auth-choice --token-provider --token --token-profile-id --token-expires-in --secret-input-mode --cloudflare-ai-gateway-account-id --cloudflare-ai-gateway-gateway-id --alibaba-model-studio-api-key --anthropic-api-key --byteplus-api-key --cohere-api-key --comfy-api-key --fal-api-key --github-copilot-token --gemini-api-key --huggingface-api-key --litellm-api-key --lmstudio-api-key --minimax-api-key --mistral-api-key --novita-api-key --nvidia-api-key --ollama-cloud-api-key --openai-api-key --opencode-zen-api-key --opencode-go-api-key --openrouter-api-key --runway-api-key --synthetic-api-key --together-api-key --volcengine-api-key --vydra-api-key --xai-api-key --xiaomi-api-key --xiaomi-token-plan-api-key --deepseek-api-key --arceeai-api-key --cerebras-api-key --chutes-api-key --cloudflare-ai-gateway-api-key --deepinfra-api-key --gmi-api-key --groq-api-key --kilocode-api-key --kimi-code-api-key --pixverse-api-key --qianfan-api-key --modelstudio-standard-api-key-cn --modelstudio-standard-api-key --modelstudio-api-key-cn --modelstudio-api-key --qwen-oauth-token --fireworks-api-key --moonshot-api-key --tokenhub-api-key --venice-api-key --ai-gateway-api-key --zai-api-key --stepfun-api-key --custom-base-url --custom-api-key --custom-model-id --custom-provider-id --custom-compatibility --gateway-port --gateway-bind --gateway-auth --gateway-token --gateway-token-ref-env --gateway-password --remote-url --remote-token --tailscale --daemon-runtime --node-manager --import-from --import-source" -l custom-text-input -d 'Mark the custom provider model as text-only' +complete -c openclaw -n "__openclaw_command_path_matches onboard -- --container --profile --log-level --workspace --reset-scope --flow --mode --auth-choice --token-provider --token --token-profile-id --token-expires-in --secret-input-mode --cloudflare-ai-gateway-account-id --cloudflare-ai-gateway-gateway-id --alibaba-model-studio-api-key --anthropic-api-key --byteplus-api-key --cohere-api-key --comfy-api-key --fal-api-key --github-copilot-token --gemini-api-key --huggingface-api-key --litellm-api-key --lmstudio-api-key --minimax-api-key --mistral-api-key --novita-api-key --nvidia-api-key --ollama-cloud-api-key --openai-api-key --opencode-zen-api-key --opencode-go-api-key --openrouter-api-key --runway-api-key --synthetic-api-key --together-api-key --volcengine-api-key --vydra-api-key --xai-api-key --xiaomi-api-key --xiaomi-token-plan-api-key --deepseek-api-key --arceeai-api-key --cerebras-api-key --chutes-api-key --cloudflare-ai-gateway-api-key --deepinfra-api-key --gmi-api-key --groq-api-key --kilocode-api-key --kimi-code-api-key --pixverse-api-key --qianfan-api-key --modelstudio-standard-api-key-cn --modelstudio-standard-api-key --modelstudio-api-key-cn --modelstudio-api-key --qwen-oauth-token --fireworks-api-key --moonshot-api-key --tokenhub-api-key --venice-api-key --ai-gateway-api-key --zai-api-key --stepfun-api-key --custom-base-url --custom-api-key --custom-model-id --custom-provider-id --custom-compatibility --gateway-port --gateway-bind --gateway-auth --gateway-token --gateway-token-ref-env --gateway-password --remote-url --remote-token --tailscale --daemon-runtime --node-manager --import-from --import-source" -l gateway-port -d 'Gateway port' +complete -c openclaw -n "__openclaw_command_path_matches onboard -- --container --profile --log-level --workspace --reset-scope --flow --mode --auth-choice --token-provider --token --token-profile-id --token-expires-in --secret-input-mode --cloudflare-ai-gateway-account-id --cloudflare-ai-gateway-gateway-id --alibaba-model-studio-api-key --anthropic-api-key --byteplus-api-key --cohere-api-key --comfy-api-key --fal-api-key --github-copilot-token --gemini-api-key --huggingface-api-key --litellm-api-key --lmstudio-api-key --minimax-api-key --mistral-api-key --novita-api-key --nvidia-api-key --ollama-cloud-api-key --openai-api-key --opencode-zen-api-key --opencode-go-api-key --openrouter-api-key --runway-api-key --synthetic-api-key --together-api-key --volcengine-api-key --vydra-api-key --xai-api-key --xiaomi-api-key --xiaomi-token-plan-api-key --deepseek-api-key --arceeai-api-key --cerebras-api-key --chutes-api-key --cloudflare-ai-gateway-api-key --deepinfra-api-key --gmi-api-key --groq-api-key --kilocode-api-key --kimi-code-api-key --pixverse-api-key --qianfan-api-key --modelstudio-standard-api-key-cn --modelstudio-standard-api-key --modelstudio-api-key-cn --modelstudio-api-key --qwen-oauth-token --fireworks-api-key --moonshot-api-key --tokenhub-api-key --venice-api-key --ai-gateway-api-key --zai-api-key --stepfun-api-key --custom-base-url --custom-api-key --custom-model-id --custom-provider-id --custom-compatibility --gateway-port --gateway-bind --gateway-auth --gateway-token --gateway-token-ref-env --gateway-password --remote-url --remote-token --tailscale --daemon-runtime --node-manager --import-from --import-source" -l gateway-bind -d 'Gateway bind: loopback|tailnet|lan|auto|custom' +complete -c openclaw -n "__openclaw_command_path_matches onboard -- --container --profile --log-level --workspace --reset-scope --flow --mode --auth-choice --token-provider --token --token-profile-id --token-expires-in --secret-input-mode --cloudflare-ai-gateway-account-id --cloudflare-ai-gateway-gateway-id --alibaba-model-studio-api-key --anthropic-api-key --byteplus-api-key --cohere-api-key --comfy-api-key --fal-api-key --github-copilot-token --gemini-api-key --huggingface-api-key --litellm-api-key --lmstudio-api-key --minimax-api-key --mistral-api-key --novita-api-key --nvidia-api-key --ollama-cloud-api-key --openai-api-key --opencode-zen-api-key --opencode-go-api-key --openrouter-api-key --runway-api-key --synthetic-api-key --together-api-key --volcengine-api-key --vydra-api-key --xai-api-key --xiaomi-api-key --xiaomi-token-plan-api-key --deepseek-api-key --arceeai-api-key --cerebras-api-key --chutes-api-key --cloudflare-ai-gateway-api-key --deepinfra-api-key --gmi-api-key --groq-api-key --kilocode-api-key --kimi-code-api-key --pixverse-api-key --qianfan-api-key --modelstudio-standard-api-key-cn --modelstudio-standard-api-key --modelstudio-api-key-cn --modelstudio-api-key --qwen-oauth-token --fireworks-api-key --moonshot-api-key --tokenhub-api-key --venice-api-key --ai-gateway-api-key --zai-api-key --stepfun-api-key --custom-base-url --custom-api-key --custom-model-id --custom-provider-id --custom-compatibility --gateway-port --gateway-bind --gateway-auth --gateway-token --gateway-token-ref-env --gateway-password --remote-url --remote-token --tailscale --daemon-runtime --node-manager --import-from --import-source" -l gateway-auth -d 'Gateway auth: token|password' +complete -c openclaw -n "__openclaw_command_path_matches onboard -- --container --profile --log-level --workspace --reset-scope --flow --mode --auth-choice --token-provider --token --token-profile-id --token-expires-in --secret-input-mode --cloudflare-ai-gateway-account-id --cloudflare-ai-gateway-gateway-id --alibaba-model-studio-api-key --anthropic-api-key --byteplus-api-key --cohere-api-key --comfy-api-key --fal-api-key --github-copilot-token --gemini-api-key --huggingface-api-key --litellm-api-key --lmstudio-api-key --minimax-api-key --mistral-api-key --novita-api-key --nvidia-api-key --ollama-cloud-api-key --openai-api-key --opencode-zen-api-key --opencode-go-api-key --openrouter-api-key --runway-api-key --synthetic-api-key --together-api-key --volcengine-api-key --vydra-api-key --xai-api-key --xiaomi-api-key --xiaomi-token-plan-api-key --deepseek-api-key --arceeai-api-key --cerebras-api-key --chutes-api-key --cloudflare-ai-gateway-api-key --deepinfra-api-key --gmi-api-key --groq-api-key --kilocode-api-key --kimi-code-api-key --pixverse-api-key --qianfan-api-key --modelstudio-standard-api-key-cn --modelstudio-standard-api-key --modelstudio-api-key-cn --modelstudio-api-key --qwen-oauth-token --fireworks-api-key --moonshot-api-key --tokenhub-api-key --venice-api-key --ai-gateway-api-key --zai-api-key --stepfun-api-key --custom-base-url --custom-api-key --custom-model-id --custom-provider-id --custom-compatibility --gateway-port --gateway-bind --gateway-auth --gateway-token --gateway-token-ref-env --gateway-password --remote-url --remote-token --tailscale --daemon-runtime --node-manager --import-from --import-source" -l gateway-token -d 'Gateway token (token auth)' +complete -c openclaw -n "__openclaw_command_path_matches onboard -- --container --profile --log-level --workspace --reset-scope --flow --mode --auth-choice --token-provider --token --token-profile-id --token-expires-in --secret-input-mode --cloudflare-ai-gateway-account-id --cloudflare-ai-gateway-gateway-id --alibaba-model-studio-api-key --anthropic-api-key --byteplus-api-key --cohere-api-key --comfy-api-key --fal-api-key --github-copilot-token --gemini-api-key --huggingface-api-key --litellm-api-key --lmstudio-api-key --minimax-api-key --mistral-api-key --novita-api-key --nvidia-api-key --ollama-cloud-api-key --openai-api-key --opencode-zen-api-key --opencode-go-api-key --openrouter-api-key --runway-api-key --synthetic-api-key --together-api-key --volcengine-api-key --vydra-api-key --xai-api-key --xiaomi-api-key --xiaomi-token-plan-api-key --deepseek-api-key --arceeai-api-key --cerebras-api-key --chutes-api-key --cloudflare-ai-gateway-api-key --deepinfra-api-key --gmi-api-key --groq-api-key --kilocode-api-key --kimi-code-api-key --pixverse-api-key --qianfan-api-key --modelstudio-standard-api-key-cn --modelstudio-standard-api-key --modelstudio-api-key-cn --modelstudio-api-key --qwen-oauth-token --fireworks-api-key --moonshot-api-key --tokenhub-api-key --venice-api-key --ai-gateway-api-key --zai-api-key --stepfun-api-key --custom-base-url --custom-api-key --custom-model-id --custom-provider-id --custom-compatibility --gateway-port --gateway-bind --gateway-auth --gateway-token --gateway-token-ref-env --gateway-password --remote-url --remote-token --tailscale --daemon-runtime --node-manager --import-from --import-source" -l gateway-token-ref-env -d 'Gateway token SecretRef env var name (token auth; e.g. OPENCLAW_GATEWAY_TOKEN)' +complete -c openclaw -n "__openclaw_command_path_matches onboard -- --container --profile --log-level --workspace --reset-scope --flow --mode --auth-choice --token-provider --token --token-profile-id --token-expires-in --secret-input-mode --cloudflare-ai-gateway-account-id --cloudflare-ai-gateway-gateway-id --alibaba-model-studio-api-key --anthropic-api-key --byteplus-api-key --cohere-api-key --comfy-api-key --fal-api-key --github-copilot-token --gemini-api-key --huggingface-api-key --litellm-api-key --lmstudio-api-key --minimax-api-key --mistral-api-key --novita-api-key --nvidia-api-key --ollama-cloud-api-key --openai-api-key --opencode-zen-api-key --opencode-go-api-key --openrouter-api-key --runway-api-key --synthetic-api-key --together-api-key --volcengine-api-key --vydra-api-key --xai-api-key --xiaomi-api-key --xiaomi-token-plan-api-key --deepseek-api-key --arceeai-api-key --cerebras-api-key --chutes-api-key --cloudflare-ai-gateway-api-key --deepinfra-api-key --gmi-api-key --groq-api-key --kilocode-api-key --kimi-code-api-key --pixverse-api-key --qianfan-api-key --modelstudio-standard-api-key-cn --modelstudio-standard-api-key --modelstudio-api-key-cn --modelstudio-api-key --qwen-oauth-token --fireworks-api-key --moonshot-api-key --tokenhub-api-key --venice-api-key --ai-gateway-api-key --zai-api-key --stepfun-api-key --custom-base-url --custom-api-key --custom-model-id --custom-provider-id --custom-compatibility --gateway-port --gateway-bind --gateway-auth --gateway-token --gateway-token-ref-env --gateway-password --remote-url --remote-token --tailscale --daemon-runtime --node-manager --import-from --import-source" -l gateway-password -d 'Gateway password (password auth)' +complete -c openclaw -n "__openclaw_command_path_matches onboard -- --container --profile --log-level --workspace --reset-scope --flow --mode --auth-choice --token-provider --token --token-profile-id --token-expires-in --secret-input-mode --cloudflare-ai-gateway-account-id --cloudflare-ai-gateway-gateway-id --alibaba-model-studio-api-key --anthropic-api-key --byteplus-api-key --cohere-api-key --comfy-api-key --fal-api-key --github-copilot-token --gemini-api-key --huggingface-api-key --litellm-api-key --lmstudio-api-key --minimax-api-key --mistral-api-key --novita-api-key --nvidia-api-key --ollama-cloud-api-key --openai-api-key --opencode-zen-api-key --opencode-go-api-key --openrouter-api-key --runway-api-key --synthetic-api-key --together-api-key --volcengine-api-key --vydra-api-key --xai-api-key --xiaomi-api-key --xiaomi-token-plan-api-key --deepseek-api-key --arceeai-api-key --cerebras-api-key --chutes-api-key --cloudflare-ai-gateway-api-key --deepinfra-api-key --gmi-api-key --groq-api-key --kilocode-api-key --kimi-code-api-key --pixverse-api-key --qianfan-api-key --modelstudio-standard-api-key-cn --modelstudio-standard-api-key --modelstudio-api-key-cn --modelstudio-api-key --qwen-oauth-token --fireworks-api-key --moonshot-api-key --tokenhub-api-key --venice-api-key --ai-gateway-api-key --zai-api-key --stepfun-api-key --custom-base-url --custom-api-key --custom-model-id --custom-provider-id --custom-compatibility --gateway-port --gateway-bind --gateway-auth --gateway-token --gateway-token-ref-env --gateway-password --remote-url --remote-token --tailscale --daemon-runtime --node-manager --import-from --import-source" -l remote-url -d 'Remote Gateway WebSocket URL' +complete -c openclaw -n "__openclaw_command_path_matches onboard -- --container --profile --log-level --workspace --reset-scope --flow --mode --auth-choice --token-provider --token --token-profile-id --token-expires-in --secret-input-mode --cloudflare-ai-gateway-account-id --cloudflare-ai-gateway-gateway-id --alibaba-model-studio-api-key --anthropic-api-key --byteplus-api-key --cohere-api-key --comfy-api-key --fal-api-key --github-copilot-token --gemini-api-key --huggingface-api-key --litellm-api-key --lmstudio-api-key --minimax-api-key --mistral-api-key --novita-api-key --nvidia-api-key --ollama-cloud-api-key --openai-api-key --opencode-zen-api-key --opencode-go-api-key --openrouter-api-key --runway-api-key --synthetic-api-key --together-api-key --volcengine-api-key --vydra-api-key --xai-api-key --xiaomi-api-key --xiaomi-token-plan-api-key --deepseek-api-key --arceeai-api-key --cerebras-api-key --chutes-api-key --cloudflare-ai-gateway-api-key --deepinfra-api-key --gmi-api-key --groq-api-key --kilocode-api-key --kimi-code-api-key --pixverse-api-key --qianfan-api-key --modelstudio-standard-api-key-cn --modelstudio-standard-api-key --modelstudio-api-key-cn --modelstudio-api-key --qwen-oauth-token --fireworks-api-key --moonshot-api-key --tokenhub-api-key --venice-api-key --ai-gateway-api-key --zai-api-key --stepfun-api-key --custom-base-url --custom-api-key --custom-model-id --custom-provider-id --custom-compatibility --gateway-port --gateway-bind --gateway-auth --gateway-token --gateway-token-ref-env --gateway-password --remote-url --remote-token --tailscale --daemon-runtime --node-manager --import-from --import-source" -l remote-token -d 'Remote Gateway token (optional)' +complete -c openclaw -n "__openclaw_command_path_matches onboard -- --container --profile --log-level --workspace --reset-scope --flow --mode --auth-choice --token-provider --token --token-profile-id --token-expires-in --secret-input-mode --cloudflare-ai-gateway-account-id --cloudflare-ai-gateway-gateway-id --alibaba-model-studio-api-key --anthropic-api-key --byteplus-api-key --cohere-api-key --comfy-api-key --fal-api-key --github-copilot-token --gemini-api-key --huggingface-api-key --litellm-api-key --lmstudio-api-key --minimax-api-key --mistral-api-key --novita-api-key --nvidia-api-key --ollama-cloud-api-key --openai-api-key --opencode-zen-api-key --opencode-go-api-key --openrouter-api-key --runway-api-key --synthetic-api-key --together-api-key --volcengine-api-key --vydra-api-key --xai-api-key --xiaomi-api-key --xiaomi-token-plan-api-key --deepseek-api-key --arceeai-api-key --cerebras-api-key --chutes-api-key --cloudflare-ai-gateway-api-key --deepinfra-api-key --gmi-api-key --groq-api-key --kilocode-api-key --kimi-code-api-key --pixverse-api-key --qianfan-api-key --modelstudio-standard-api-key-cn --modelstudio-standard-api-key --modelstudio-api-key-cn --modelstudio-api-key --qwen-oauth-token --fireworks-api-key --moonshot-api-key --tokenhub-api-key --venice-api-key --ai-gateway-api-key --zai-api-key --stepfun-api-key --custom-base-url --custom-api-key --custom-model-id --custom-provider-id --custom-compatibility --gateway-port --gateway-bind --gateway-auth --gateway-token --gateway-token-ref-env --gateway-password --remote-url --remote-token --tailscale --daemon-runtime --node-manager --import-from --import-source" -l tailscale -d 'Tailscale: off|serve|funnel' +complete -c openclaw -n "__openclaw_command_path_matches onboard -- --container --profile --log-level --workspace --reset-scope --flow --mode --auth-choice --token-provider --token --token-profile-id --token-expires-in --secret-input-mode --cloudflare-ai-gateway-account-id --cloudflare-ai-gateway-gateway-id --alibaba-model-studio-api-key --anthropic-api-key --byteplus-api-key --cohere-api-key --comfy-api-key --fal-api-key --github-copilot-token --gemini-api-key --huggingface-api-key --litellm-api-key --lmstudio-api-key --minimax-api-key --mistral-api-key --novita-api-key --nvidia-api-key --ollama-cloud-api-key --openai-api-key --opencode-zen-api-key --opencode-go-api-key --openrouter-api-key --runway-api-key --synthetic-api-key --together-api-key --volcengine-api-key --vydra-api-key --xai-api-key --xiaomi-api-key --xiaomi-token-plan-api-key --deepseek-api-key --arceeai-api-key --cerebras-api-key --chutes-api-key --cloudflare-ai-gateway-api-key --deepinfra-api-key --gmi-api-key --groq-api-key --kilocode-api-key --kimi-code-api-key --pixverse-api-key --qianfan-api-key --modelstudio-standard-api-key-cn --modelstudio-standard-api-key --modelstudio-api-key-cn --modelstudio-api-key --qwen-oauth-token --fireworks-api-key --moonshot-api-key --tokenhub-api-key --venice-api-key --ai-gateway-api-key --zai-api-key --stepfun-api-key --custom-base-url --custom-api-key --custom-model-id --custom-provider-id --custom-compatibility --gateway-port --gateway-bind --gateway-auth --gateway-token --gateway-token-ref-env --gateway-password --remote-url --remote-token --tailscale --daemon-runtime --node-manager --import-from --import-source" -l tailscale-reset-on-exit -d 'Reset tailscale serve/funnel on exit' +complete -c openclaw -n "__openclaw_command_path_matches onboard -- --container --profile --log-level --workspace --reset-scope --flow --mode --auth-choice --token-provider --token --token-profile-id --token-expires-in --secret-input-mode --cloudflare-ai-gateway-account-id --cloudflare-ai-gateway-gateway-id --alibaba-model-studio-api-key --anthropic-api-key --byteplus-api-key --cohere-api-key --comfy-api-key --fal-api-key --github-copilot-token --gemini-api-key --huggingface-api-key --litellm-api-key --lmstudio-api-key --minimax-api-key --mistral-api-key --novita-api-key --nvidia-api-key --ollama-cloud-api-key --openai-api-key --opencode-zen-api-key --opencode-go-api-key --openrouter-api-key --runway-api-key --synthetic-api-key --together-api-key --volcengine-api-key --vydra-api-key --xai-api-key --xiaomi-api-key --xiaomi-token-plan-api-key --deepseek-api-key --arceeai-api-key --cerebras-api-key --chutes-api-key --cloudflare-ai-gateway-api-key --deepinfra-api-key --gmi-api-key --groq-api-key --kilocode-api-key --kimi-code-api-key --pixverse-api-key --qianfan-api-key --modelstudio-standard-api-key-cn --modelstudio-standard-api-key --modelstudio-api-key-cn --modelstudio-api-key --qwen-oauth-token --fireworks-api-key --moonshot-api-key --tokenhub-api-key --venice-api-key --ai-gateway-api-key --zai-api-key --stepfun-api-key --custom-base-url --custom-api-key --custom-model-id --custom-provider-id --custom-compatibility --gateway-port --gateway-bind --gateway-auth --gateway-token --gateway-token-ref-env --gateway-password --remote-url --remote-token --tailscale --daemon-runtime --node-manager --import-from --import-source" -l install-daemon -d 'Install gateway service' +complete -c openclaw -n "__openclaw_command_path_matches onboard -- --container --profile --log-level --workspace --reset-scope --flow --mode --auth-choice --token-provider --token --token-profile-id --token-expires-in --secret-input-mode --cloudflare-ai-gateway-account-id --cloudflare-ai-gateway-gateway-id --alibaba-model-studio-api-key --anthropic-api-key --byteplus-api-key --cohere-api-key --comfy-api-key --fal-api-key --github-copilot-token --gemini-api-key --huggingface-api-key --litellm-api-key --lmstudio-api-key --minimax-api-key --mistral-api-key --novita-api-key --nvidia-api-key --ollama-cloud-api-key --openai-api-key --opencode-zen-api-key --opencode-go-api-key --openrouter-api-key --runway-api-key --synthetic-api-key --together-api-key --volcengine-api-key --vydra-api-key --xai-api-key --xiaomi-api-key --xiaomi-token-plan-api-key --deepseek-api-key --arceeai-api-key --cerebras-api-key --chutes-api-key --cloudflare-ai-gateway-api-key --deepinfra-api-key --gmi-api-key --groq-api-key --kilocode-api-key --kimi-code-api-key --pixverse-api-key --qianfan-api-key --modelstudio-standard-api-key-cn --modelstudio-standard-api-key --modelstudio-api-key-cn --modelstudio-api-key --qwen-oauth-token --fireworks-api-key --moonshot-api-key --tokenhub-api-key --venice-api-key --ai-gateway-api-key --zai-api-key --stepfun-api-key --custom-base-url --custom-api-key --custom-model-id --custom-provider-id --custom-compatibility --gateway-port --gateway-bind --gateway-auth --gateway-token --gateway-token-ref-env --gateway-password --remote-url --remote-token --tailscale --daemon-runtime --node-manager --import-from --import-source" -l no-install-daemon -d 'Skip gateway service install' +complete -c openclaw -n "__openclaw_command_path_matches onboard -- --container --profile --log-level --workspace --reset-scope --flow --mode --auth-choice --token-provider --token --token-profile-id --token-expires-in --secret-input-mode --cloudflare-ai-gateway-account-id --cloudflare-ai-gateway-gateway-id --alibaba-model-studio-api-key --anthropic-api-key --byteplus-api-key --cohere-api-key --comfy-api-key --fal-api-key --github-copilot-token --gemini-api-key --huggingface-api-key --litellm-api-key --lmstudio-api-key --minimax-api-key --mistral-api-key --novita-api-key --nvidia-api-key --ollama-cloud-api-key --openai-api-key --opencode-zen-api-key --opencode-go-api-key --openrouter-api-key --runway-api-key --synthetic-api-key --together-api-key --volcengine-api-key --vydra-api-key --xai-api-key --xiaomi-api-key --xiaomi-token-plan-api-key --deepseek-api-key --arceeai-api-key --cerebras-api-key --chutes-api-key --cloudflare-ai-gateway-api-key --deepinfra-api-key --gmi-api-key --groq-api-key --kilocode-api-key --kimi-code-api-key --pixverse-api-key --qianfan-api-key --modelstudio-standard-api-key-cn --modelstudio-standard-api-key --modelstudio-api-key-cn --modelstudio-api-key --qwen-oauth-token --fireworks-api-key --moonshot-api-key --tokenhub-api-key --venice-api-key --ai-gateway-api-key --zai-api-key --stepfun-api-key --custom-base-url --custom-api-key --custom-model-id --custom-provider-id --custom-compatibility --gateway-port --gateway-bind --gateway-auth --gateway-token --gateway-token-ref-env --gateway-password --remote-url --remote-token --tailscale --daemon-runtime --node-manager --import-from --import-source" -l skip-daemon -d 'Skip gateway service install' +complete -c openclaw -n "__openclaw_command_path_matches onboard -- --container --profile --log-level --workspace --reset-scope --flow --mode --auth-choice --token-provider --token --token-profile-id --token-expires-in --secret-input-mode --cloudflare-ai-gateway-account-id --cloudflare-ai-gateway-gateway-id --alibaba-model-studio-api-key --anthropic-api-key --byteplus-api-key --cohere-api-key --comfy-api-key --fal-api-key --github-copilot-token --gemini-api-key --huggingface-api-key --litellm-api-key --lmstudio-api-key --minimax-api-key --mistral-api-key --novita-api-key --nvidia-api-key --ollama-cloud-api-key --openai-api-key --opencode-zen-api-key --opencode-go-api-key --openrouter-api-key --runway-api-key --synthetic-api-key --together-api-key --volcengine-api-key --vydra-api-key --xai-api-key --xiaomi-api-key --xiaomi-token-plan-api-key --deepseek-api-key --arceeai-api-key --cerebras-api-key --chutes-api-key --cloudflare-ai-gateway-api-key --deepinfra-api-key --gmi-api-key --groq-api-key --kilocode-api-key --kimi-code-api-key --pixverse-api-key --qianfan-api-key --modelstudio-standard-api-key-cn --modelstudio-standard-api-key --modelstudio-api-key-cn --modelstudio-api-key --qwen-oauth-token --fireworks-api-key --moonshot-api-key --tokenhub-api-key --venice-api-key --ai-gateway-api-key --zai-api-key --stepfun-api-key --custom-base-url --custom-api-key --custom-model-id --custom-provider-id --custom-compatibility --gateway-port --gateway-bind --gateway-auth --gateway-token --gateway-token-ref-env --gateway-password --remote-url --remote-token --tailscale --daemon-runtime --node-manager --import-from --import-source" -l daemon-runtime -d 'Daemon runtime: node|bun' +complete -c openclaw -n "__openclaw_command_path_matches onboard -- --container --profile --log-level --workspace --reset-scope --flow --mode --auth-choice --token-provider --token --token-profile-id --token-expires-in --secret-input-mode --cloudflare-ai-gateway-account-id --cloudflare-ai-gateway-gateway-id --alibaba-model-studio-api-key --anthropic-api-key --byteplus-api-key --cohere-api-key --comfy-api-key --fal-api-key --github-copilot-token --gemini-api-key --huggingface-api-key --litellm-api-key --lmstudio-api-key --minimax-api-key --mistral-api-key --novita-api-key --nvidia-api-key --ollama-cloud-api-key --openai-api-key --opencode-zen-api-key --opencode-go-api-key --openrouter-api-key --runway-api-key --synthetic-api-key --together-api-key --volcengine-api-key --vydra-api-key --xai-api-key --xiaomi-api-key --xiaomi-token-plan-api-key --deepseek-api-key --arceeai-api-key --cerebras-api-key --chutes-api-key --cloudflare-ai-gateway-api-key --deepinfra-api-key --gmi-api-key --groq-api-key --kilocode-api-key --kimi-code-api-key --pixverse-api-key --qianfan-api-key --modelstudio-standard-api-key-cn --modelstudio-standard-api-key --modelstudio-api-key-cn --modelstudio-api-key --qwen-oauth-token --fireworks-api-key --moonshot-api-key --tokenhub-api-key --venice-api-key --ai-gateway-api-key --zai-api-key --stepfun-api-key --custom-base-url --custom-api-key --custom-model-id --custom-provider-id --custom-compatibility --gateway-port --gateway-bind --gateway-auth --gateway-token --gateway-token-ref-env --gateway-password --remote-url --remote-token --tailscale --daemon-runtime --node-manager --import-from --import-source" -l skip-channels -d 'Skip channel setup' +complete -c openclaw -n "__openclaw_command_path_matches onboard -- --container --profile --log-level --workspace --reset-scope --flow --mode --auth-choice --token-provider --token --token-profile-id --token-expires-in --secret-input-mode --cloudflare-ai-gateway-account-id --cloudflare-ai-gateway-gateway-id --alibaba-model-studio-api-key --anthropic-api-key --byteplus-api-key --cohere-api-key --comfy-api-key --fal-api-key --github-copilot-token --gemini-api-key --huggingface-api-key --litellm-api-key --lmstudio-api-key --minimax-api-key --mistral-api-key --novita-api-key --nvidia-api-key --ollama-cloud-api-key --openai-api-key --opencode-zen-api-key --opencode-go-api-key --openrouter-api-key --runway-api-key --synthetic-api-key --together-api-key --volcengine-api-key --vydra-api-key --xai-api-key --xiaomi-api-key --xiaomi-token-plan-api-key --deepseek-api-key --arceeai-api-key --cerebras-api-key --chutes-api-key --cloudflare-ai-gateway-api-key --deepinfra-api-key --gmi-api-key --groq-api-key --kilocode-api-key --kimi-code-api-key --pixverse-api-key --qianfan-api-key --modelstudio-standard-api-key-cn --modelstudio-standard-api-key --modelstudio-api-key-cn --modelstudio-api-key --qwen-oauth-token --fireworks-api-key --moonshot-api-key --tokenhub-api-key --venice-api-key --ai-gateway-api-key --zai-api-key --stepfun-api-key --custom-base-url --custom-api-key --custom-model-id --custom-provider-id --custom-compatibility --gateway-port --gateway-bind --gateway-auth --gateway-token --gateway-token-ref-env --gateway-password --remote-url --remote-token --tailscale --daemon-runtime --node-manager --import-from --import-source" -l skip-skills -d 'Skip skills setup' +complete -c openclaw -n "__openclaw_command_path_matches onboard -- --container --profile --log-level --workspace --reset-scope --flow --mode --auth-choice --token-provider --token --token-profile-id --token-expires-in --secret-input-mode --cloudflare-ai-gateway-account-id --cloudflare-ai-gateway-gateway-id --alibaba-model-studio-api-key --anthropic-api-key --byteplus-api-key --cohere-api-key --comfy-api-key --fal-api-key --github-copilot-token --gemini-api-key --huggingface-api-key --litellm-api-key --lmstudio-api-key --minimax-api-key --mistral-api-key --novita-api-key --nvidia-api-key --ollama-cloud-api-key --openai-api-key --opencode-zen-api-key --opencode-go-api-key --openrouter-api-key --runway-api-key --synthetic-api-key --together-api-key --volcengine-api-key --vydra-api-key --xai-api-key --xiaomi-api-key --xiaomi-token-plan-api-key --deepseek-api-key --arceeai-api-key --cerebras-api-key --chutes-api-key --cloudflare-ai-gateway-api-key --deepinfra-api-key --gmi-api-key --groq-api-key --kilocode-api-key --kimi-code-api-key --pixverse-api-key --qianfan-api-key --modelstudio-standard-api-key-cn --modelstudio-standard-api-key --modelstudio-api-key-cn --modelstudio-api-key --qwen-oauth-token --fireworks-api-key --moonshot-api-key --tokenhub-api-key --venice-api-key --ai-gateway-api-key --zai-api-key --stepfun-api-key --custom-base-url --custom-api-key --custom-model-id --custom-provider-id --custom-compatibility --gateway-port --gateway-bind --gateway-auth --gateway-token --gateway-token-ref-env --gateway-password --remote-url --remote-token --tailscale --daemon-runtime --node-manager --import-from --import-source" -l skip-bootstrap -d 'Skip creating default agent workspace files' +complete -c openclaw -n "__openclaw_command_path_matches onboard -- --container --profile --log-level --workspace --reset-scope --flow --mode --auth-choice --token-provider --token --token-profile-id --token-expires-in --secret-input-mode --cloudflare-ai-gateway-account-id --cloudflare-ai-gateway-gateway-id --alibaba-model-studio-api-key --anthropic-api-key --byteplus-api-key --cohere-api-key --comfy-api-key --fal-api-key --github-copilot-token --gemini-api-key --huggingface-api-key --litellm-api-key --lmstudio-api-key --minimax-api-key --mistral-api-key --novita-api-key --nvidia-api-key --ollama-cloud-api-key --openai-api-key --opencode-zen-api-key --opencode-go-api-key --openrouter-api-key --runway-api-key --synthetic-api-key --together-api-key --volcengine-api-key --vydra-api-key --xai-api-key --xiaomi-api-key --xiaomi-token-plan-api-key --deepseek-api-key --arceeai-api-key --cerebras-api-key --chutes-api-key --cloudflare-ai-gateway-api-key --deepinfra-api-key --gmi-api-key --groq-api-key --kilocode-api-key --kimi-code-api-key --pixverse-api-key --qianfan-api-key --modelstudio-standard-api-key-cn --modelstudio-standard-api-key --modelstudio-api-key-cn --modelstudio-api-key --qwen-oauth-token --fireworks-api-key --moonshot-api-key --tokenhub-api-key --venice-api-key --ai-gateway-api-key --zai-api-key --stepfun-api-key --custom-base-url --custom-api-key --custom-model-id --custom-provider-id --custom-compatibility --gateway-port --gateway-bind --gateway-auth --gateway-token --gateway-token-ref-env --gateway-password --remote-url --remote-token --tailscale --daemon-runtime --node-manager --import-from --import-source" -l skip-search -d 'Skip search provider setup' +complete -c openclaw -n "__openclaw_command_path_matches onboard -- --container --profile --log-level --workspace --reset-scope --flow --mode --auth-choice --token-provider --token --token-profile-id --token-expires-in --secret-input-mode --cloudflare-ai-gateway-account-id --cloudflare-ai-gateway-gateway-id --alibaba-model-studio-api-key --anthropic-api-key --byteplus-api-key --cohere-api-key --comfy-api-key --fal-api-key --github-copilot-token --gemini-api-key --huggingface-api-key --litellm-api-key --lmstudio-api-key --minimax-api-key --mistral-api-key --novita-api-key --nvidia-api-key --ollama-cloud-api-key --openai-api-key --opencode-zen-api-key --opencode-go-api-key --openrouter-api-key --runway-api-key --synthetic-api-key --together-api-key --volcengine-api-key --vydra-api-key --xai-api-key --xiaomi-api-key --xiaomi-token-plan-api-key --deepseek-api-key --arceeai-api-key --cerebras-api-key --chutes-api-key --cloudflare-ai-gateway-api-key --deepinfra-api-key --gmi-api-key --groq-api-key --kilocode-api-key --kimi-code-api-key --pixverse-api-key --qianfan-api-key --modelstudio-standard-api-key-cn --modelstudio-standard-api-key --modelstudio-api-key-cn --modelstudio-api-key --qwen-oauth-token --fireworks-api-key --moonshot-api-key --tokenhub-api-key --venice-api-key --ai-gateway-api-key --zai-api-key --stepfun-api-key --custom-base-url --custom-api-key --custom-model-id --custom-provider-id --custom-compatibility --gateway-port --gateway-bind --gateway-auth --gateway-token --gateway-token-ref-env --gateway-password --remote-url --remote-token --tailscale --daemon-runtime --node-manager --import-from --import-source" -l skip-health -d 'Skip health check' +complete -c openclaw -n "__openclaw_command_path_matches onboard -- --container --profile --log-level --workspace --reset-scope --flow --mode --auth-choice --token-provider --token --token-profile-id --token-expires-in --secret-input-mode --cloudflare-ai-gateway-account-id --cloudflare-ai-gateway-gateway-id --alibaba-model-studio-api-key --anthropic-api-key --byteplus-api-key --cohere-api-key --comfy-api-key --fal-api-key --github-copilot-token --gemini-api-key --huggingface-api-key --litellm-api-key --lmstudio-api-key --minimax-api-key --mistral-api-key --novita-api-key --nvidia-api-key --ollama-cloud-api-key --openai-api-key --opencode-zen-api-key --opencode-go-api-key --openrouter-api-key --runway-api-key --synthetic-api-key --together-api-key --volcengine-api-key --vydra-api-key --xai-api-key --xiaomi-api-key --xiaomi-token-plan-api-key --deepseek-api-key --arceeai-api-key --cerebras-api-key --chutes-api-key --cloudflare-ai-gateway-api-key --deepinfra-api-key --gmi-api-key --groq-api-key --kilocode-api-key --kimi-code-api-key --pixverse-api-key --qianfan-api-key --modelstudio-standard-api-key-cn --modelstudio-standard-api-key --modelstudio-api-key-cn --modelstudio-api-key --qwen-oauth-token --fireworks-api-key --moonshot-api-key --tokenhub-api-key --venice-api-key --ai-gateway-api-key --zai-api-key --stepfun-api-key --custom-base-url --custom-api-key --custom-model-id --custom-provider-id --custom-compatibility --gateway-port --gateway-bind --gateway-auth --gateway-token --gateway-token-ref-env --gateway-password --remote-url --remote-token --tailscale --daemon-runtime --node-manager --import-from --import-source" -l skip-ui -d 'Skip Control UI/TUI prompts' +complete -c openclaw -n "__openclaw_command_path_matches onboard -- --container --profile --log-level --workspace --reset-scope --flow --mode --auth-choice --token-provider --token --token-profile-id --token-expires-in --secret-input-mode --cloudflare-ai-gateway-account-id --cloudflare-ai-gateway-gateway-id --alibaba-model-studio-api-key --anthropic-api-key --byteplus-api-key --cohere-api-key --comfy-api-key --fal-api-key --github-copilot-token --gemini-api-key --huggingface-api-key --litellm-api-key --lmstudio-api-key --minimax-api-key --mistral-api-key --novita-api-key --nvidia-api-key --ollama-cloud-api-key --openai-api-key --opencode-zen-api-key --opencode-go-api-key --openrouter-api-key --runway-api-key --synthetic-api-key --together-api-key --volcengine-api-key --vydra-api-key --xai-api-key --xiaomi-api-key --xiaomi-token-plan-api-key --deepseek-api-key --arceeai-api-key --cerebras-api-key --chutes-api-key --cloudflare-ai-gateway-api-key --deepinfra-api-key --gmi-api-key --groq-api-key --kilocode-api-key --kimi-code-api-key --pixverse-api-key --qianfan-api-key --modelstudio-standard-api-key-cn --modelstudio-standard-api-key --modelstudio-api-key-cn --modelstudio-api-key --qwen-oauth-token --fireworks-api-key --moonshot-api-key --tokenhub-api-key --venice-api-key --ai-gateway-api-key --zai-api-key --stepfun-api-key --custom-base-url --custom-api-key --custom-model-id --custom-provider-id --custom-compatibility --gateway-port --gateway-bind --gateway-auth --gateway-token --gateway-token-ref-env --gateway-password --remote-url --remote-token --tailscale --daemon-runtime --node-manager --import-from --import-source" -l suppress-gateway-token-output -d 'Suppress token-bearing Gateway/UI output' +complete -c openclaw -n "__openclaw_command_path_matches onboard -- --container --profile --log-level --workspace --reset-scope --flow --mode --auth-choice --token-provider --token --token-profile-id --token-expires-in --secret-input-mode --cloudflare-ai-gateway-account-id --cloudflare-ai-gateway-gateway-id --alibaba-model-studio-api-key --anthropic-api-key --byteplus-api-key --cohere-api-key --comfy-api-key --fal-api-key --github-copilot-token --gemini-api-key --huggingface-api-key --litellm-api-key --lmstudio-api-key --minimax-api-key --mistral-api-key --novita-api-key --nvidia-api-key --ollama-cloud-api-key --openai-api-key --opencode-zen-api-key --opencode-go-api-key --openrouter-api-key --runway-api-key --synthetic-api-key --together-api-key --volcengine-api-key --vydra-api-key --xai-api-key --xiaomi-api-key --xiaomi-token-plan-api-key --deepseek-api-key --arceeai-api-key --cerebras-api-key --chutes-api-key --cloudflare-ai-gateway-api-key --deepinfra-api-key --gmi-api-key --groq-api-key --kilocode-api-key --kimi-code-api-key --pixverse-api-key --qianfan-api-key --modelstudio-standard-api-key-cn --modelstudio-standard-api-key --modelstudio-api-key-cn --modelstudio-api-key --qwen-oauth-token --fireworks-api-key --moonshot-api-key --tokenhub-api-key --venice-api-key --ai-gateway-api-key --zai-api-key --stepfun-api-key --custom-base-url --custom-api-key --custom-model-id --custom-provider-id --custom-compatibility --gateway-port --gateway-bind --gateway-auth --gateway-token --gateway-token-ref-env --gateway-password --remote-url --remote-token --tailscale --daemon-runtime --node-manager --import-from --import-source" -l skip-hooks -d 'Skip hook setup' +complete -c openclaw -n "__openclaw_command_path_matches onboard -- --container --profile --log-level --workspace --reset-scope --flow --mode --auth-choice --token-provider --token --token-profile-id --token-expires-in --secret-input-mode --cloudflare-ai-gateway-account-id --cloudflare-ai-gateway-gateway-id --alibaba-model-studio-api-key --anthropic-api-key --byteplus-api-key --cohere-api-key --comfy-api-key --fal-api-key --github-copilot-token --gemini-api-key --huggingface-api-key --litellm-api-key --lmstudio-api-key --minimax-api-key --mistral-api-key --novita-api-key --nvidia-api-key --ollama-cloud-api-key --openai-api-key --opencode-zen-api-key --opencode-go-api-key --openrouter-api-key --runway-api-key --synthetic-api-key --together-api-key --volcengine-api-key --vydra-api-key --xai-api-key --xiaomi-api-key --xiaomi-token-plan-api-key --deepseek-api-key --arceeai-api-key --cerebras-api-key --chutes-api-key --cloudflare-ai-gateway-api-key --deepinfra-api-key --gmi-api-key --groq-api-key --kilocode-api-key --kimi-code-api-key --pixverse-api-key --qianfan-api-key --modelstudio-standard-api-key-cn --modelstudio-standard-api-key --modelstudio-api-key-cn --modelstudio-api-key --qwen-oauth-token --fireworks-api-key --moonshot-api-key --tokenhub-api-key --venice-api-key --ai-gateway-api-key --zai-api-key --stepfun-api-key --custom-base-url --custom-api-key --custom-model-id --custom-provider-id --custom-compatibility --gateway-port --gateway-bind --gateway-auth --gateway-token --gateway-token-ref-env --gateway-password --remote-url --remote-token --tailscale --daemon-runtime --node-manager --import-from --import-source" -l node-manager -d 'Node manager for skills: npm|pnpm|bun' +complete -c openclaw -n "__openclaw_command_path_matches onboard -- --container --profile --log-level --workspace --reset-scope --flow --mode --auth-choice --token-provider --token --token-profile-id --token-expires-in --secret-input-mode --cloudflare-ai-gateway-account-id --cloudflare-ai-gateway-gateway-id --alibaba-model-studio-api-key --anthropic-api-key --byteplus-api-key --cohere-api-key --comfy-api-key --fal-api-key --github-copilot-token --gemini-api-key --huggingface-api-key --litellm-api-key --lmstudio-api-key --minimax-api-key --mistral-api-key --novita-api-key --nvidia-api-key --ollama-cloud-api-key --openai-api-key --opencode-zen-api-key --opencode-go-api-key --openrouter-api-key --runway-api-key --synthetic-api-key --together-api-key --volcengine-api-key --vydra-api-key --xai-api-key --xiaomi-api-key --xiaomi-token-plan-api-key --deepseek-api-key --arceeai-api-key --cerebras-api-key --chutes-api-key --cloudflare-ai-gateway-api-key --deepinfra-api-key --gmi-api-key --groq-api-key --kilocode-api-key --kimi-code-api-key --pixverse-api-key --qianfan-api-key --modelstudio-standard-api-key-cn --modelstudio-standard-api-key --modelstudio-api-key-cn --modelstudio-api-key --qwen-oauth-token --fireworks-api-key --moonshot-api-key --tokenhub-api-key --venice-api-key --ai-gateway-api-key --zai-api-key --stepfun-api-key --custom-base-url --custom-api-key --custom-model-id --custom-provider-id --custom-compatibility --gateway-port --gateway-bind --gateway-auth --gateway-token --gateway-token-ref-env --gateway-password --remote-url --remote-token --tailscale --daemon-runtime --node-manager --import-from --import-source" -l import-from -d 'Migration provider to run during onboarding' +complete -c openclaw -n "__openclaw_command_path_matches onboard -- --container --profile --log-level --workspace --reset-scope --flow --mode --auth-choice --token-provider --token --token-profile-id --token-expires-in --secret-input-mode --cloudflare-ai-gateway-account-id --cloudflare-ai-gateway-gateway-id --alibaba-model-studio-api-key --anthropic-api-key --byteplus-api-key --cohere-api-key --comfy-api-key --fal-api-key --github-copilot-token --gemini-api-key --huggingface-api-key --litellm-api-key --lmstudio-api-key --minimax-api-key --mistral-api-key --novita-api-key --nvidia-api-key --ollama-cloud-api-key --openai-api-key --opencode-zen-api-key --opencode-go-api-key --openrouter-api-key --runway-api-key --synthetic-api-key --together-api-key --volcengine-api-key --vydra-api-key --xai-api-key --xiaomi-api-key --xiaomi-token-plan-api-key --deepseek-api-key --arceeai-api-key --cerebras-api-key --chutes-api-key --cloudflare-ai-gateway-api-key --deepinfra-api-key --gmi-api-key --groq-api-key --kilocode-api-key --kimi-code-api-key --pixverse-api-key --qianfan-api-key --modelstudio-standard-api-key-cn --modelstudio-standard-api-key --modelstudio-api-key-cn --modelstudio-api-key --qwen-oauth-token --fireworks-api-key --moonshot-api-key --tokenhub-api-key --venice-api-key --ai-gateway-api-key --zai-api-key --stepfun-api-key --custom-base-url --custom-api-key --custom-model-id --custom-provider-id --custom-compatibility --gateway-port --gateway-bind --gateway-auth --gateway-token --gateway-token-ref-env --gateway-password --remote-url --remote-token --tailscale --daemon-runtime --node-manager --import-from --import-source" -l import-source -d 'Source agent home for --import-from' +complete -c openclaw -n "__openclaw_command_path_matches onboard -- --container --profile --log-level --workspace --reset-scope --flow --mode --auth-choice --token-provider --token --token-profile-id --token-expires-in --secret-input-mode --cloudflare-ai-gateway-account-id --cloudflare-ai-gateway-gateway-id --alibaba-model-studio-api-key --anthropic-api-key --byteplus-api-key --cohere-api-key --comfy-api-key --fal-api-key --github-copilot-token --gemini-api-key --huggingface-api-key --litellm-api-key --lmstudio-api-key --minimax-api-key --mistral-api-key --novita-api-key --nvidia-api-key --ollama-cloud-api-key --openai-api-key --opencode-zen-api-key --opencode-go-api-key --openrouter-api-key --runway-api-key --synthetic-api-key --together-api-key --volcengine-api-key --vydra-api-key --xai-api-key --xiaomi-api-key --xiaomi-token-plan-api-key --deepseek-api-key --arceeai-api-key --cerebras-api-key --chutes-api-key --cloudflare-ai-gateway-api-key --deepinfra-api-key --gmi-api-key --groq-api-key --kilocode-api-key --kimi-code-api-key --pixverse-api-key --qianfan-api-key --modelstudio-standard-api-key-cn --modelstudio-standard-api-key --modelstudio-api-key-cn --modelstudio-api-key --qwen-oauth-token --fireworks-api-key --moonshot-api-key --tokenhub-api-key --venice-api-key --ai-gateway-api-key --zai-api-key --stepfun-api-key --custom-base-url --custom-api-key --custom-model-id --custom-provider-id --custom-compatibility --gateway-port --gateway-bind --gateway-auth --gateway-token --gateway-token-ref-env --gateway-password --remote-url --remote-token --tailscale --daemon-runtime --node-manager --import-from --import-source" -l import-secrets -d 'Import supported secrets during onboarding migration' +complete -c openclaw -n "__openclaw_command_path_matches onboard -- --container --profile --log-level --workspace --reset-scope --flow --mode --auth-choice --token-provider --token --token-profile-id --token-expires-in --secret-input-mode --cloudflare-ai-gateway-account-id --cloudflare-ai-gateway-gateway-id --alibaba-model-studio-api-key --anthropic-api-key --byteplus-api-key --cohere-api-key --comfy-api-key --fal-api-key --github-copilot-token --gemini-api-key --huggingface-api-key --litellm-api-key --lmstudio-api-key --minimax-api-key --mistral-api-key --novita-api-key --nvidia-api-key --ollama-cloud-api-key --openai-api-key --opencode-zen-api-key --opencode-go-api-key --openrouter-api-key --runway-api-key --synthetic-api-key --together-api-key --volcengine-api-key --vydra-api-key --xai-api-key --xiaomi-api-key --xiaomi-token-plan-api-key --deepseek-api-key --arceeai-api-key --cerebras-api-key --chutes-api-key --cloudflare-ai-gateway-api-key --deepinfra-api-key --gmi-api-key --groq-api-key --kilocode-api-key --kimi-code-api-key --pixverse-api-key --qianfan-api-key --modelstudio-standard-api-key-cn --modelstudio-standard-api-key --modelstudio-api-key-cn --modelstudio-api-key --qwen-oauth-token --fireworks-api-key --moonshot-api-key --tokenhub-api-key --venice-api-key --ai-gateway-api-key --zai-api-key --stepfun-api-key --custom-base-url --custom-api-key --custom-model-id --custom-provider-id --custom-compatibility --gateway-port --gateway-bind --gateway-auth --gateway-token --gateway-token-ref-env --gateway-password --remote-url --remote-token --tailscale --daemon-runtime --node-manager --import-from --import-source" -l json -d 'Output JSON summary' +complete -c openclaw -n "__openclaw_command_path_matches configure -- --container --profile --log-level --section" -l section -d 'Configuration sections (repeatable). Options: workspace, model, web, gateway, daemon, channels, plugins, skills, health' +complete -c openclaw -n "__openclaw_command_path_matches config -- --container --profile --log-level --section" -a "get" -d 'Get a config value by dot path' +complete -c openclaw -n "__openclaw_command_path_matches config -- --container --profile --log-level --section" -a "set" -d 'Set config values by path (value mode, ref/provider builder mode, or batch JSON mode). +Examples: +openclaw config set gateway.port 19001 --strict-json +openclaw config set channels.discord.token --ref-provider default --ref-source env --ref-id DISCORD_BOT_TOKEN +openclaw config set secrets.providers.vault --provider-source file --provider-path /etc/openclaw/secrets.json --provider-mode json +openclaw config set --batch-file ./config-set.batch.json --dry-run' +complete -c openclaw -n "__openclaw_command_path_matches config -- --container --profile --log-level --section" -a "patch" -d 'Patch config from a JSON5 object in one validated write. +Objects merge recursively, arrays/scalars replace, and null deletes a path. +Examples: +openclaw config patch --file ./openclaw.patch.json5 --dry-run +openclaw config patch --stdin' +complete -c openclaw -n "__openclaw_command_path_matches config -- --container --profile --log-level --section" -a "unset" -d 'Remove a config value by dot path' +complete -c openclaw -n "__openclaw_command_path_matches config -- --container --profile --log-level --section" -a "file" -d 'Print the active config file path' +complete -c openclaw -n "__openclaw_command_path_matches config -- --container --profile --log-level --section" -a "schema" -d 'Print the JSON schema for openclaw.json' +complete -c openclaw -n "__openclaw_command_path_matches config -- --container --profile --log-level --section" -a "validate" -d 'Validate the current config against the schema without starting the gateway' +complete -c openclaw -n "__openclaw_command_path_matches config -- --container --profile --log-level --section" -l section -d 'Configuration sections for guided setup (repeatable). Use with no subcommand.' +complete -c openclaw -n "__openclaw_command_path_matches config get -- --container --profile --log-level --section" -l json -d 'Output JSON' +complete -c openclaw -n "__openclaw_command_path_matches config set -- --container --profile --log-level --section --ref-provider --ref-source --ref-id --provider-source --provider-allowlist --provider-path --provider-mode --provider-timeout-ms --provider-max-bytes --provider-command --provider-arg --provider-no-output-timeout-ms --provider-max-output-bytes --provider-env --provider-pass-env --provider-trusted-dir --batch-json --batch-file" -l strict-json -d 'Strict JSON parsing (error instead of raw string fallback)' +complete -c openclaw -n "__openclaw_command_path_matches config set -- --container --profile --log-level --section --ref-provider --ref-source --ref-id --provider-source --provider-allowlist --provider-path --provider-mode --provider-timeout-ms --provider-max-bytes --provider-command --provider-arg --provider-no-output-timeout-ms --provider-max-output-bytes --provider-env --provider-pass-env --provider-trusted-dir --batch-json --batch-file" -l json -d 'Legacy alias for --strict-json' +complete -c openclaw -n "__openclaw_command_path_matches config set -- --container --profile --log-level --section --ref-provider --ref-source --ref-id --provider-source --provider-allowlist --provider-path --provider-mode --provider-timeout-ms --provider-max-bytes --provider-command --provider-arg --provider-no-output-timeout-ms --provider-max-output-bytes --provider-env --provider-pass-env --provider-trusted-dir --batch-json --batch-file" -l dry-run -d 'Validate changes without writing openclaw.json (checks run in builder/json/batch modes; exec SecretRefs are skipped unless --allow-exec is set)' +complete -c openclaw -n "__openclaw_command_path_matches config set -- --container --profile --log-level --section --ref-provider --ref-source --ref-id --provider-source --provider-allowlist --provider-path --provider-mode --provider-timeout-ms --provider-max-bytes --provider-command --provider-arg --provider-no-output-timeout-ms --provider-max-output-bytes --provider-env --provider-pass-env --provider-trusted-dir --batch-json --batch-file" -l allow-exec -d 'Dry-run only: allow exec SecretRef resolvability checks (may execute provider commands)' +complete -c openclaw -n "__openclaw_command_path_matches config set -- --container --profile --log-level --section --ref-provider --ref-source --ref-id --provider-source --provider-allowlist --provider-path --provider-mode --provider-timeout-ms --provider-max-bytes --provider-command --provider-arg --provider-no-output-timeout-ms --provider-max-output-bytes --provider-env --provider-pass-env --provider-trusted-dir --batch-json --batch-file" -l merge -d 'Merge object/map values instead of replacing the target path' +complete -c openclaw -n "__openclaw_command_path_matches config set -- --container --profile --log-level --section --ref-provider --ref-source --ref-id --provider-source --provider-allowlist --provider-path --provider-mode --provider-timeout-ms --provider-max-bytes --provider-command --provider-arg --provider-no-output-timeout-ms --provider-max-output-bytes --provider-env --provider-pass-env --provider-trusted-dir --batch-json --batch-file" -l replace -d 'Allow full replacement of protected map/list paths such as agents.defaults.models' +complete -c openclaw -n "__openclaw_command_path_matches config set -- --container --profile --log-level --section --ref-provider --ref-source --ref-id --provider-source --provider-allowlist --provider-path --provider-mode --provider-timeout-ms --provider-max-bytes --provider-command --provider-arg --provider-no-output-timeout-ms --provider-max-output-bytes --provider-env --provider-pass-env --provider-trusted-dir --batch-json --batch-file" -l ref-provider -d 'SecretRef builder: provider alias' +complete -c openclaw -n "__openclaw_command_path_matches config set -- --container --profile --log-level --section --ref-provider --ref-source --ref-id --provider-source --provider-allowlist --provider-path --provider-mode --provider-timeout-ms --provider-max-bytes --provider-command --provider-arg --provider-no-output-timeout-ms --provider-max-output-bytes --provider-env --provider-pass-env --provider-trusted-dir --batch-json --batch-file" -l ref-source -d 'SecretRef builder: source (env|file|exec)' +complete -c openclaw -n "__openclaw_command_path_matches config set -- --container --profile --log-level --section --ref-provider --ref-source --ref-id --provider-source --provider-allowlist --provider-path --provider-mode --provider-timeout-ms --provider-max-bytes --provider-command --provider-arg --provider-no-output-timeout-ms --provider-max-output-bytes --provider-env --provider-pass-env --provider-trusted-dir --batch-json --batch-file" -l ref-id -d 'SecretRef builder: ref id' +complete -c openclaw -n "__openclaw_command_path_matches config set -- --container --profile --log-level --section --ref-provider --ref-source --ref-id --provider-source --provider-allowlist --provider-path --provider-mode --provider-timeout-ms --provider-max-bytes --provider-command --provider-arg --provider-no-output-timeout-ms --provider-max-output-bytes --provider-env --provider-pass-env --provider-trusted-dir --batch-json --batch-file" -l provider-source -d 'Provider builder: source (env|file|exec)' +complete -c openclaw -n "__openclaw_command_path_matches config set -- --container --profile --log-level --section --ref-provider --ref-source --ref-id --provider-source --provider-allowlist --provider-path --provider-mode --provider-timeout-ms --provider-max-bytes --provider-command --provider-arg --provider-no-output-timeout-ms --provider-max-output-bytes --provider-env --provider-pass-env --provider-trusted-dir --batch-json --batch-file" -l provider-allowlist -d 'Provider builder (env): allowlist entry (repeatable)' +complete -c openclaw -n "__openclaw_command_path_matches config set -- --container --profile --log-level --section --ref-provider --ref-source --ref-id --provider-source --provider-allowlist --provider-path --provider-mode --provider-timeout-ms --provider-max-bytes --provider-command --provider-arg --provider-no-output-timeout-ms --provider-max-output-bytes --provider-env --provider-pass-env --provider-trusted-dir --batch-json --batch-file" -l provider-path -d 'Provider builder (file): path' +complete -c openclaw -n "__openclaw_command_path_matches config set -- --container --profile --log-level --section --ref-provider --ref-source --ref-id --provider-source --provider-allowlist --provider-path --provider-mode --provider-timeout-ms --provider-max-bytes --provider-command --provider-arg --provider-no-output-timeout-ms --provider-max-output-bytes --provider-env --provider-pass-env --provider-trusted-dir --batch-json --batch-file" -l provider-mode -d 'Provider builder (file): mode (singleValue|json)' +complete -c openclaw -n "__openclaw_command_path_matches config set -- --container --profile --log-level --section --ref-provider --ref-source --ref-id --provider-source --provider-allowlist --provider-path --provider-mode --provider-timeout-ms --provider-max-bytes --provider-command --provider-arg --provider-no-output-timeout-ms --provider-max-output-bytes --provider-env --provider-pass-env --provider-trusted-dir --batch-json --batch-file" -l provider-timeout-ms -d 'Provider builder (file|exec): timeout ms' +complete -c openclaw -n "__openclaw_command_path_matches config set -- --container --profile --log-level --section --ref-provider --ref-source --ref-id --provider-source --provider-allowlist --provider-path --provider-mode --provider-timeout-ms --provider-max-bytes --provider-command --provider-arg --provider-no-output-timeout-ms --provider-max-output-bytes --provider-env --provider-pass-env --provider-trusted-dir --batch-json --batch-file" -l provider-max-bytes -d 'Provider builder (file): max bytes' +complete -c openclaw -n "__openclaw_command_path_matches config set -- --container --profile --log-level --section --ref-provider --ref-source --ref-id --provider-source --provider-allowlist --provider-path --provider-mode --provider-timeout-ms --provider-max-bytes --provider-command --provider-arg --provider-no-output-timeout-ms --provider-max-output-bytes --provider-env --provider-pass-env --provider-trusted-dir --batch-json --batch-file" -l provider-command -d 'Provider builder (exec): absolute command path' +complete -c openclaw -n "__openclaw_command_path_matches config set -- --container --profile --log-level --section --ref-provider --ref-source --ref-id --provider-source --provider-allowlist --provider-path --provider-mode --provider-timeout-ms --provider-max-bytes --provider-command --provider-arg --provider-no-output-timeout-ms --provider-max-output-bytes --provider-env --provider-pass-env --provider-trusted-dir --batch-json --batch-file" -l provider-arg -d 'Provider builder (exec): command arg (repeatable)' +complete -c openclaw -n "__openclaw_command_path_matches config set -- --container --profile --log-level --section --ref-provider --ref-source --ref-id --provider-source --provider-allowlist --provider-path --provider-mode --provider-timeout-ms --provider-max-bytes --provider-command --provider-arg --provider-no-output-timeout-ms --provider-max-output-bytes --provider-env --provider-pass-env --provider-trusted-dir --batch-json --batch-file" -l provider-no-output-timeout-ms -d 'Provider builder (exec): no-output timeout ms' +complete -c openclaw -n "__openclaw_command_path_matches config set -- --container --profile --log-level --section --ref-provider --ref-source --ref-id --provider-source --provider-allowlist --provider-path --provider-mode --provider-timeout-ms --provider-max-bytes --provider-command --provider-arg --provider-no-output-timeout-ms --provider-max-output-bytes --provider-env --provider-pass-env --provider-trusted-dir --batch-json --batch-file" -l provider-max-output-bytes -d 'Provider builder (exec): max output bytes' +complete -c openclaw -n "__openclaw_command_path_matches config set -- --container --profile --log-level --section --ref-provider --ref-source --ref-id --provider-source --provider-allowlist --provider-path --provider-mode --provider-timeout-ms --provider-max-bytes --provider-command --provider-arg --provider-no-output-timeout-ms --provider-max-output-bytes --provider-env --provider-pass-env --provider-trusted-dir --batch-json --batch-file" -l provider-json-only -d 'Provider builder (exec): require JSON output' +complete -c openclaw -n "__openclaw_command_path_matches config set -- --container --profile --log-level --section --ref-provider --ref-source --ref-id --provider-source --provider-allowlist --provider-path --provider-mode --provider-timeout-ms --provider-max-bytes --provider-command --provider-arg --provider-no-output-timeout-ms --provider-max-output-bytes --provider-env --provider-pass-env --provider-trusted-dir --batch-json --batch-file" -l provider-env -d 'Provider builder (exec): env assignment (repeatable)' +complete -c openclaw -n "__openclaw_command_path_matches config set -- --container --profile --log-level --section --ref-provider --ref-source --ref-id --provider-source --provider-allowlist --provider-path --provider-mode --provider-timeout-ms --provider-max-bytes --provider-command --provider-arg --provider-no-output-timeout-ms --provider-max-output-bytes --provider-env --provider-pass-env --provider-trusted-dir --batch-json --batch-file" -l provider-pass-env -d 'Provider builder (exec): pass host env var (repeatable)' +complete -c openclaw -n "__openclaw_command_path_matches config set -- --container --profile --log-level --section --ref-provider --ref-source --ref-id --provider-source --provider-allowlist --provider-path --provider-mode --provider-timeout-ms --provider-max-bytes --provider-command --provider-arg --provider-no-output-timeout-ms --provider-max-output-bytes --provider-env --provider-pass-env --provider-trusted-dir --batch-json --batch-file" -l provider-trusted-dir -d 'Provider builder (exec): trusted directory (repeatable)' +complete -c openclaw -n "__openclaw_command_path_matches config set -- --container --profile --log-level --section --ref-provider --ref-source --ref-id --provider-source --provider-allowlist --provider-path --provider-mode --provider-timeout-ms --provider-max-bytes --provider-command --provider-arg --provider-no-output-timeout-ms --provider-max-output-bytes --provider-env --provider-pass-env --provider-trusted-dir --batch-json --batch-file" -l provider-allow-insecure-path -d 'Provider builder (file|exec): bypass strict path permission checks' +complete -c openclaw -n "__openclaw_command_path_matches config set -- --container --profile --log-level --section --ref-provider --ref-source --ref-id --provider-source --provider-allowlist --provider-path --provider-mode --provider-timeout-ms --provider-max-bytes --provider-command --provider-arg --provider-no-output-timeout-ms --provider-max-output-bytes --provider-env --provider-pass-env --provider-trusted-dir --batch-json --batch-file" -l provider-allow-symlink-command -d 'Provider builder (exec): allow command symlink path' +complete -c openclaw -n "__openclaw_command_path_matches config set -- --container --profile --log-level --section --ref-provider --ref-source --ref-id --provider-source --provider-allowlist --provider-path --provider-mode --provider-timeout-ms --provider-max-bytes --provider-command --provider-arg --provider-no-output-timeout-ms --provider-max-output-bytes --provider-env --provider-pass-env --provider-trusted-dir --batch-json --batch-file" -l batch-json -d 'Batch mode: JSON array of set operations' +complete -c openclaw -n "__openclaw_command_path_matches config set -- --container --profile --log-level --section --ref-provider --ref-source --ref-id --provider-source --provider-allowlist --provider-path --provider-mode --provider-timeout-ms --provider-max-bytes --provider-command --provider-arg --provider-no-output-timeout-ms --provider-max-output-bytes --provider-env --provider-pass-env --provider-trusted-dir --batch-json --batch-file" -l batch-file -d 'Batch mode: read JSON array of set operations from file' +complete -c openclaw -n "__openclaw_command_path_matches config patch -- --container --profile --log-level --section --file --replace-path" -l file -d 'Read a JSON5 config patch object from file' +complete -c openclaw -n "__openclaw_command_path_matches config patch -- --container --profile --log-level --section --file --replace-path" -l stdin -d 'Read a JSON5 config patch object from stdin' +complete -c openclaw -n "__openclaw_command_path_matches config patch -- --container --profile --log-level --section --file --replace-path" -l dry-run -d 'Validate changes without writing openclaw.json (checks schema and SecretRef resolvability; exec SecretRefs are skipped unless --allow-exec is set)' +complete -c openclaw -n "__openclaw_command_path_matches config patch -- --container --profile --log-level --section --file --replace-path" -l allow-exec -d 'Dry-run only: allow exec SecretRef resolvability checks (may execute provider commands)' +complete -c openclaw -n "__openclaw_command_path_matches config patch -- --container --profile --log-level --section --file --replace-path" -l json -d 'Output dry-run result as JSON' +complete -c openclaw -n "__openclaw_command_path_matches config patch -- --container --profile --log-level --section --file --replace-path" -l replace-path -d 'Replace the object or array at this dot/bracket path instead of recursively applying it (repeatable)' +complete -c openclaw -n "__openclaw_command_path_matches config unset -- --container --profile --log-level --section" -l dry-run -d 'validate the removal without writing the config file' +complete -c openclaw -n "__openclaw_command_path_matches config unset -- --container --profile --log-level --section" -l allow-exec -d 'allow exec SecretRef providers during --dry-run' +complete -c openclaw -n "__openclaw_command_path_matches config unset -- --container --profile --log-level --section" -l json -d 'print dry-run result as JSON' +complete -c openclaw -n "__openclaw_command_path_matches config validate -- --container --profile --log-level --section" -l json -d 'Output validation result as JSON' +complete -c openclaw -n "__openclaw_command_path_matches backup -- --container --profile --log-level" -a "create" -d 'Write a backup archive for config, credentials, sessions, and workspaces' +complete -c openclaw -n "__openclaw_command_path_matches backup -- --container --profile --log-level" -a "verify" -d 'Validate a backup archive and its embedded manifest' +complete -c openclaw -n "__openclaw_command_path_matches backup create -- --container --profile --log-level --output" -l output -d 'Archive path or destination directory' +complete -c openclaw -n "__openclaw_command_path_matches backup create -- --container --profile --log-level --output" -l json -d 'Output JSON' +complete -c openclaw -n "__openclaw_command_path_matches backup create -- --container --profile --log-level --output" -l dry-run -d 'Print the backup plan without writing the archive' +complete -c openclaw -n "__openclaw_command_path_matches backup create -- --container --profile --log-level --output" -l verify -d 'Verify the archive after writing it' +complete -c openclaw -n "__openclaw_command_path_matches backup create -- --container --profile --log-level --output" -l only-config -d 'Back up only the active JSON config file' +complete -c openclaw -n "__openclaw_command_path_matches backup create -- --container --profile --log-level --output" -l no-include-workspace -d 'Exclude workspace directories from the backup' +complete -c openclaw -n "__openclaw_command_path_matches backup verify -- --container --profile --log-level" -l json -d 'Output JSON' +complete -c openclaw -n "__openclaw_command_path_matches migrate -- --container --profile --log-level --from --skill --plugin --backup-output" -a "list" -d 'List migration providers' +complete -c openclaw -n "__openclaw_command_path_matches migrate -- --container --profile --log-level --from --skill --plugin --backup-output" -a "plan" -d 'Preview a migration without changing OpenClaw state' +complete -c openclaw -n "__openclaw_command_path_matches migrate -- --container --profile --log-level --from --skill --plugin --backup-output" -a "apply" -d 'Apply a migration after a verified backup' +complete -c openclaw -n "__openclaw_command_path_matches migrate -- --container --profile --log-level --from --skill --plugin --backup-output" -l from -d 'Source directory to migrate from' +complete -c openclaw -n "__openclaw_command_path_matches migrate -- --container --profile --log-level --from --skill --plugin --backup-output" -l include-secrets -d 'Import supported credentials and secrets' +complete -c openclaw -n "__openclaw_command_path_matches migrate -- --container --profile --log-level --from --skill --plugin --backup-output" -l no-auth-credentials -d 'Skip auth credential migration' +complete -c openclaw -n "__openclaw_command_path_matches migrate -- --container --profile --log-level --from --skill --plugin --backup-output" -l overwrite -d 'Overwrite conflicting target files after item-level backups' +complete -c openclaw -n "__openclaw_command_path_matches migrate -- --container --profile --log-level --from --skill --plugin --backup-output" -l dry-run -d 'Preview only; do not apply changes' +complete -c openclaw -n "__openclaw_command_path_matches migrate -- --container --profile --log-level --from --skill --plugin --backup-output" -l yes -d 'Apply without prompting after preview' +complete -c openclaw -n "__openclaw_command_path_matches migrate -- --container --profile --log-level --from --skill --plugin --backup-output" -l skill -d 'Select one skill to migrate by name or item id; repeat for multiple skills' +complete -c openclaw -n "__openclaw_command_path_matches migrate -- --container --profile --log-level --from --skill --plugin --backup-output" -l plugin -d 'Select one Codex plugin to migrate by name or item id; repeat for multiple plugins' +complete -c openclaw -n "__openclaw_command_path_matches migrate -- --container --profile --log-level --from --skill --plugin --backup-output" -l backup-output -d 'Pre-migration backup archive path or directory' +complete -c openclaw -n "__openclaw_command_path_matches migrate -- --container --profile --log-level --from --skill --plugin --backup-output" -l no-backup -d 'Skip the pre-migration OpenClaw backup' +complete -c openclaw -n "__openclaw_command_path_matches migrate -- --container --profile --log-level --from --skill --plugin --backup-output" -l force -d 'Allow dangerous options such as --no-backup' +complete -c openclaw -n "__openclaw_command_path_matches migrate -- --container --profile --log-level --from --skill --plugin --backup-output" -l json -d 'Output JSON' +complete -c openclaw -n "__openclaw_command_path_matches migrate -- --container --profile --log-level --from --skill --plugin --backup-output" -l verify-plugin-apps -d 'Codex only: verify source plugin app accessibility with app/list before planning native plugin activation' +complete -c openclaw -n "__openclaw_command_path_matches migrate list -- --container --profile --log-level --from --skill --plugin --backup-output" -l json -d 'Output JSON' +complete -c openclaw -n "__openclaw_command_path_matches migrate plan -- --container --profile --log-level --from --skill --plugin --backup-output" -l from -d 'Source directory to migrate from' +complete -c openclaw -n "__openclaw_command_path_matches migrate plan -- --container --profile --log-level --from --skill --plugin --backup-output" -l include-secrets -d 'Import supported credentials and secrets' +complete -c openclaw -n "__openclaw_command_path_matches migrate plan -- --container --profile --log-level --from --skill --plugin --backup-output" -l no-auth-credentials -d 'Skip auth credential migration' +complete -c openclaw -n "__openclaw_command_path_matches migrate plan -- --container --profile --log-level --from --skill --plugin --backup-output" -l overwrite -d 'Overwrite conflicting target files after item-level backups' +complete -c openclaw -n "__openclaw_command_path_matches migrate plan -- --container --profile --log-level --from --skill --plugin --backup-output" -l json -d 'Output JSON' +complete -c openclaw -n "__openclaw_command_path_matches migrate plan -- --container --profile --log-level --from --skill --plugin --backup-output" -l skill -d 'Select one skill to migrate by name or item id; repeat for multiple skills' +complete -c openclaw -n "__openclaw_command_path_matches migrate plan -- --container --profile --log-level --from --skill --plugin --backup-output" -l plugin -d 'Select one Codex plugin to migrate by name or item id; repeat for multiple plugins' +complete -c openclaw -n "__openclaw_command_path_matches migrate plan -- --container --profile --log-level --from --skill --plugin --backup-output" -l verify-plugin-apps -d 'Codex only: verify source plugin app accessibility with app/list before planning native plugin activation' +complete -c openclaw -n "__openclaw_command_path_matches migrate apply -- --container --profile --log-level --from --skill --plugin --backup-output" -l from -d 'Source directory to migrate from' +complete -c openclaw -n "__openclaw_command_path_matches migrate apply -- --container --profile --log-level --from --skill --plugin --backup-output" -l include-secrets -d 'Import supported credentials and secrets' +complete -c openclaw -n "__openclaw_command_path_matches migrate apply -- --container --profile --log-level --from --skill --plugin --backup-output" -l no-auth-credentials -d 'Skip auth credential migration' +complete -c openclaw -n "__openclaw_command_path_matches migrate apply -- --container --profile --log-level --from --skill --plugin --backup-output" -l overwrite -d 'Overwrite conflicting target files after item-level backups' +complete -c openclaw -n "__openclaw_command_path_matches migrate apply -- --container --profile --log-level --from --skill --plugin --backup-output" -l json -d 'Output JSON' +complete -c openclaw -n "__openclaw_command_path_matches migrate apply -- --container --profile --log-level --from --skill --plugin --backup-output" -l skill -d 'Select one skill to migrate by name or item id; repeat for multiple skills' +complete -c openclaw -n "__openclaw_command_path_matches migrate apply -- --container --profile --log-level --from --skill --plugin --backup-output" -l plugin -d 'Select one Codex plugin to migrate by name or item id; repeat for multiple plugins' +complete -c openclaw -n "__openclaw_command_path_matches migrate apply -- --container --profile --log-level --from --skill --plugin --backup-output" -l verify-plugin-apps -d 'Codex only: verify source plugin app accessibility with app/list before planning native plugin activation' +complete -c openclaw -n "__openclaw_command_path_matches migrate apply -- --container --profile --log-level --from --skill --plugin --backup-output" -l yes -d 'Apply without prompting' +complete -c openclaw -n "__openclaw_command_path_matches migrate apply -- --container --profile --log-level --from --skill --plugin --backup-output" -l backup-output -d 'Pre-migration backup archive path or directory' +complete -c openclaw -n "__openclaw_command_path_matches migrate apply -- --container --profile --log-level --from --skill --plugin --backup-output" -l no-backup -d 'Skip the pre-migration OpenClaw backup' +complete -c openclaw -n "__openclaw_command_path_matches migrate apply -- --container --profile --log-level --from --skill --plugin --backup-output" -l force -d 'Allow dangerous options such as --no-backup' +complete -c openclaw -n "__openclaw_command_path_matches doctor -- --container --profile --log-level --severity-min --skip --only" -l no-workspace-suggestions -d 'Disable workspace memory system suggestions' +complete -c openclaw -n "__openclaw_command_path_matches doctor -- --container --profile --log-level --severity-min --skip --only" -l yes -d 'Accept defaults without prompting' +complete -c openclaw -n "__openclaw_command_path_matches doctor -- --container --profile --log-level --severity-min --skip --only" -l repair -d 'Apply recommended repairs without prompting' +complete -c openclaw -n "__openclaw_command_path_matches doctor -- --container --profile --log-level --severity-min --skip --only" -l fix -d 'Apply recommended repairs (alias for --repair)' +complete -c openclaw -n "__openclaw_command_path_matches doctor -- --container --profile --log-level --severity-min --skip --only" -l force -d 'Apply aggressive repairs (overwrites custom service config)' +complete -c openclaw -n "__openclaw_command_path_matches doctor -- --container --profile --log-level --severity-min --skip --only" -l non-interactive -d 'Run without prompts (safe migrations only)' +complete -c openclaw -n "__openclaw_command_path_matches doctor -- --container --profile --log-level --severity-min --skip --only" -l generate-gateway-token -d 'Generate and configure a gateway token' +complete -c openclaw -n "__openclaw_command_path_matches doctor -- --container --profile --log-level --severity-min --skip --only" -l allow-exec -d 'Allow doctor to execute exec SecretRefs while verifying configured secrets' +complete -c openclaw -n "__openclaw_command_path_matches doctor -- --container --profile --log-level --severity-min --skip --only" -l deep -d 'Scan system services for extra gateway installs' +complete -c openclaw -n "__openclaw_command_path_matches doctor -- --container --profile --log-level --severity-min --skip --only" -l lint -d 'Run read-only health checks and report findings' +complete -c openclaw -n "__openclaw_command_path_matches doctor -- --container --profile --log-level --severity-min --skip --only" -l post-upgrade -d 'Emit plugin-compat findings only (machine-readable with --json)' +complete -c openclaw -n "__openclaw_command_path_matches doctor -- --container --profile --log-level --severity-min --skip --only" -l json -d 'With --lint or --post-upgrade: emit machine-readable JSON output' +complete -c openclaw -n "__openclaw_command_path_matches doctor -- --container --profile --log-level --severity-min --skip --only" -l severity-min -d 'With --lint: drop findings below this severity (info|warning|error)' +complete -c openclaw -n "__openclaw_command_path_matches doctor -- --container --profile --log-level --severity-min --skip --only" -l skip -d 'With --lint: skip a specific check id (repeatable)' +complete -c openclaw -n "__openclaw_command_path_matches doctor -- --container --profile --log-level --severity-min --skip --only" -l only -d 'With --lint: run only the specified check id (repeatable)' +complete -c openclaw -n "__openclaw_command_path_matches dashboard -- --container --profile --log-level" -l no-open -d 'Print URL but do not launch a browser' +complete -c openclaw -n "__openclaw_command_path_matches dashboard -- --container --profile --log-level" -l yes -d 'Start/install the gateway without prompting when needed' +complete -c openclaw -n "__openclaw_command_path_matches reset -- --container --profile --log-level --scope" -l scope -d 'config|config+creds+sessions|full (default: interactive prompt)' +complete -c openclaw -n "__openclaw_command_path_matches reset -- --container --profile --log-level --scope" -l yes -d 'Skip confirmation prompts' +complete -c openclaw -n "__openclaw_command_path_matches reset -- --container --profile --log-level --scope" -l non-interactive -d 'Disable prompts (requires --scope + --yes)' +complete -c openclaw -n "__openclaw_command_path_matches reset -- --container --profile --log-level --scope" -l dry-run -d 'Print actions without removing files' +complete -c openclaw -n "__openclaw_command_path_matches uninstall -- --container --profile --log-level" -l service -d 'Remove the gateway service' +complete -c openclaw -n "__openclaw_command_path_matches uninstall -- --container --profile --log-level" -l state -d 'Remove state + config' +complete -c openclaw -n "__openclaw_command_path_matches uninstall -- --container --profile --log-level" -l workspace -d 'Remove workspace dirs' +complete -c openclaw -n "__openclaw_command_path_matches uninstall -- --container --profile --log-level" -l app -d 'Remove the macOS app' +complete -c openclaw -n "__openclaw_command_path_matches uninstall -- --container --profile --log-level" -l all -d 'Remove service + state + workspace + app' +complete -c openclaw -n "__openclaw_command_path_matches uninstall -- --container --profile --log-level" -l yes -d 'Skip confirmation prompts' +complete -c openclaw -n "__openclaw_command_path_matches uninstall -- --container --profile --log-level" -l non-interactive -d 'Disable prompts (requires --yes)' +complete -c openclaw -n "__openclaw_command_path_matches uninstall -- --container --profile --log-level" -l dry-run -d 'Print actions without removing files' +complete -c openclaw -n "__openclaw_command_path_matches message -- --container --profile --log-level" -a "send" -d 'Send a message' +complete -c openclaw -n "__openclaw_command_path_matches message -- --container --profile --log-level" -a "broadcast" -d 'Broadcast a message to multiple targets' +complete -c openclaw -n "__openclaw_command_path_matches message -- --container --profile --log-level" -a "poll" -d 'Send a poll' +complete -c openclaw -n "__openclaw_command_path_matches message -- --container --profile --log-level" -a "react" -d 'Add or remove a reaction' +complete -c openclaw -n "__openclaw_command_path_matches message -- --container --profile --log-level" -a "reactions" -d 'List reactions on a message' +complete -c openclaw -n "__openclaw_command_path_matches message -- --container --profile --log-level" -a "read" -d 'Read recent messages' +complete -c openclaw -n "__openclaw_command_path_matches message -- --container --profile --log-level" -a "edit" -d 'Edit a message' +complete -c openclaw -n "__openclaw_command_path_matches message -- --container --profile --log-level" -a "delete" -d 'Delete a message' +complete -c openclaw -n "__openclaw_command_path_matches message -- --container --profile --log-level" -a "pin" -d 'Pin a message' +complete -c openclaw -n "__openclaw_command_path_matches message -- --container --profile --log-level" -a "unpin" -d 'Unpin a message' +complete -c openclaw -n "__openclaw_command_path_matches message -- --container --profile --log-level" -a "pins" -d 'List pinned messages' +complete -c openclaw -n "__openclaw_command_path_matches message -- --container --profile --log-level" -a "permissions" -d 'Fetch channel permissions' +complete -c openclaw -n "__openclaw_command_path_matches message -- --container --profile --log-level" -a "search" -d 'Search Discord messages' +complete -c openclaw -n "__openclaw_command_path_matches message -- --container --profile --log-level" -a "thread" -d 'Thread actions' +complete -c openclaw -n "__openclaw_command_path_matches message -- --container --profile --log-level" -a "emoji" -d 'Emoji actions' +complete -c openclaw -n "__openclaw_command_path_matches message -- --container --profile --log-level" -a "sticker" -d 'Sticker actions' +complete -c openclaw -n "__openclaw_command_path_matches message -- --container --profile --log-level" -a "role" -d 'Role actions' +complete -c openclaw -n "__openclaw_command_path_matches message -- --container --profile --log-level" -a "channel" -d 'Channel actions' +complete -c openclaw -n "__openclaw_command_path_matches message -- --container --profile --log-level" -a "member" -d 'Member actions' +complete -c openclaw -n "__openclaw_command_path_matches message -- --container --profile --log-level" -a "voice" -d 'Voice actions' +complete -c openclaw -n "__openclaw_command_path_matches message -- --container --profile --log-level" -a "event" -d 'Event actions' +complete -c openclaw -n "__openclaw_command_path_matches message -- --container --profile --log-level" -a "timeout" -d 'Timeout a member' +complete -c openclaw -n "__openclaw_command_path_matches message -- --container --profile --log-level" -a "kick" -d 'Kick a member' +complete -c openclaw -n "__openclaw_command_path_matches message -- --container --profile --log-level" -a "ban" -d 'Ban a member' +complete -c openclaw -n "__openclaw_command_path_matches message send -- --container --profile --log-level -m --message -t --target --media --presentation --delivery --reply-to --thread-id --channel --account" -s m -l message -d 'Message body (required unless --media is set)' +complete -c openclaw -n "__openclaw_command_path_matches message send -- --container --profile --log-level -m --message -t --target --media --presentation --delivery --reply-to --thread-id --channel --account" -s t -l target -d 'Recipient/channel: E.164 for WhatsApp/Signal, Telegram chat id/@username, Discord/Slack/Mattermost , or iMessage handle/chat_id' +complete -c openclaw -n "__openclaw_command_path_matches message send -- --container --profile --log-level -m --message -t --target --media --presentation --delivery --reply-to --thread-id --channel --account" -l media -d 'Attach media (image/audio/video/document). Accepts local paths or URLs.' +complete -c openclaw -n "__openclaw_command_path_matches message send -- --container --profile --log-level -m --message -t --target --media --presentation --delivery --reply-to --thread-id --channel --account" -l presentation -d 'Shared presentation payload as JSON (text, context, dividers, buttons, selects)' +complete -c openclaw -n "__openclaw_command_path_matches message send -- --container --profile --log-level -m --message -t --target --media --presentation --delivery --reply-to --thread-id --channel --account" -l delivery -d 'Shared delivery preferences as JSON' +complete -c openclaw -n "__openclaw_command_path_matches message send -- --container --profile --log-level -m --message -t --target --media --presentation --delivery --reply-to --thread-id --channel --account" -l pin -d 'Request that the delivered message be pinned when supported' +complete -c openclaw -n "__openclaw_command_path_matches message send -- --container --profile --log-level -m --message -t --target --media --presentation --delivery --reply-to --thread-id --channel --account" -l reply-to -d 'Reply-to message id' +complete -c openclaw -n "__openclaw_command_path_matches message send -- --container --profile --log-level -m --message -t --target --media --presentation --delivery --reply-to --thread-id --channel --account" -l thread-id -d 'Thread id (Telegram forum thread)' +complete -c openclaw -n "__openclaw_command_path_matches message send -- --container --profile --log-level -m --message -t --target --media --presentation --delivery --reply-to --thread-id --channel --account" -l gif-playback -d 'Treat video media as GIF playback (WhatsApp only).' +complete -c openclaw -n "__openclaw_command_path_matches message send -- --container --profile --log-level -m --message -t --target --media --presentation --delivery --reply-to --thread-id --channel --account" -l force-document -d 'Send media as document to avoid channel compression (Telegram, WhatsApp). Applies to images, GIFs, and videos.' +complete -c openclaw -n "__openclaw_command_path_matches message send -- --container --profile --log-level -m --message -t --target --media --presentation --delivery --reply-to --thread-id --channel --account" -l silent -d 'Send message silently without notification (Telegram + Discord)' +complete -c openclaw -n "__openclaw_command_path_matches message send -- --container --profile --log-level -m --message -t --target --media --presentation --delivery --reply-to --thread-id --channel --account" -l channel -d 'Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|feishu|nostr|msteams|mattermost|nextcloud-talk|matrix|raft|line|zalo|clickclack|zalouser|sms|synology-chat|tlon|qa-channel|qqbot|twitch' +complete -c openclaw -n "__openclaw_command_path_matches message send -- --container --profile --log-level -m --message -t --target --media --presentation --delivery --reply-to --thread-id --channel --account" -l account -d 'Channel account id (accountId)' +complete -c openclaw -n "__openclaw_command_path_matches message send -- --container --profile --log-level -m --message -t --target --media --presentation --delivery --reply-to --thread-id --channel --account" -l json -d 'Output result as JSON' +complete -c openclaw -n "__openclaw_command_path_matches message send -- --container --profile --log-level -m --message -t --target --media --presentation --delivery --reply-to --thread-id --channel --account" -l dry-run -d 'Print payload and skip sending' +complete -c openclaw -n "__openclaw_command_path_matches message send -- --container --profile --log-level -m --message -t --target --media --presentation --delivery --reply-to --thread-id --channel --account" -l verbose -d 'Verbose logging' +complete -c openclaw -n "__openclaw_command_path_matches message broadcast -- --container --profile --log-level --channel --account --targets --message --media" -l channel -d 'Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|feishu|nostr|msteams|mattermost|nextcloud-talk|matrix|raft|line|zalo|clickclack|zalouser|sms|synology-chat|tlon|qa-channel|qqbot|twitch' +complete -c openclaw -n "__openclaw_command_path_matches message broadcast -- --container --profile --log-level --channel --account --targets --message --media" -l account -d 'Channel account id (accountId)' +complete -c openclaw -n "__openclaw_command_path_matches message broadcast -- --container --profile --log-level --channel --account --targets --message --media" -l json -d 'Output result as JSON' +complete -c openclaw -n "__openclaw_command_path_matches message broadcast -- --container --profile --log-level --channel --account --targets --message --media" -l dry-run -d 'Print payload and skip sending' +complete -c openclaw -n "__openclaw_command_path_matches message broadcast -- --container --profile --log-level --channel --account --targets --message --media" -l verbose -d 'Verbose logging' +complete -c openclaw -n "__openclaw_command_path_matches message broadcast -- --container --profile --log-level --channel --account --targets --message --media" -l targets -d 'Recipient/channel targets (same format as --target); accepts ids or names when the directory is available.' +complete -c openclaw -n "__openclaw_command_path_matches message broadcast -- --container --profile --log-level --channel --account --targets --message --media" -l message -d 'Message to send' +complete -c openclaw -n "__openclaw_command_path_matches message broadcast -- --container --profile --log-level --channel --account --targets --message --media" -l media -d 'Media URL' +complete -c openclaw -n "__openclaw_command_path_matches message poll -- --container --profile --log-level -t --target --channel --account --poll-question --poll-option --poll-duration-hours --poll-duration-seconds -m --message --thread-id" -s t -l target -d 'Recipient/channel: E.164 for WhatsApp/Signal, Telegram chat id/@username, Discord/Slack/Mattermost , or iMessage handle/chat_id' +complete -c openclaw -n "__openclaw_command_path_matches message poll -- --container --profile --log-level -t --target --channel --account --poll-question --poll-option --poll-duration-hours --poll-duration-seconds -m --message --thread-id" -l channel -d 'Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|feishu|nostr|msteams|mattermost|nextcloud-talk|matrix|raft|line|zalo|clickclack|zalouser|sms|synology-chat|tlon|qa-channel|qqbot|twitch' +complete -c openclaw -n "__openclaw_command_path_matches message poll -- --container --profile --log-level -t --target --channel --account --poll-question --poll-option --poll-duration-hours --poll-duration-seconds -m --message --thread-id" -l account -d 'Channel account id (accountId)' +complete -c openclaw -n "__openclaw_command_path_matches message poll -- --container --profile --log-level -t --target --channel --account --poll-question --poll-option --poll-duration-hours --poll-duration-seconds -m --message --thread-id" -l json -d 'Output result as JSON' +complete -c openclaw -n "__openclaw_command_path_matches message poll -- --container --profile --log-level -t --target --channel --account --poll-question --poll-option --poll-duration-hours --poll-duration-seconds -m --message --thread-id" -l dry-run -d 'Print payload and skip sending' +complete -c openclaw -n "__openclaw_command_path_matches message poll -- --container --profile --log-level -t --target --channel --account --poll-question --poll-option --poll-duration-hours --poll-duration-seconds -m --message --thread-id" -l verbose -d 'Verbose logging' +complete -c openclaw -n "__openclaw_command_path_matches message poll -- --container --profile --log-level -t --target --channel --account --poll-question --poll-option --poll-duration-hours --poll-duration-seconds -m --message --thread-id" -l poll-question -d 'Poll question' +complete -c openclaw -n "__openclaw_command_path_matches message poll -- --container --profile --log-level -t --target --channel --account --poll-question --poll-option --poll-duration-hours --poll-duration-seconds -m --message --thread-id" -l poll-option -d 'Poll option (repeat 2-12 times)' +complete -c openclaw -n "__openclaw_command_path_matches message poll -- --container --profile --log-level -t --target --channel --account --poll-question --poll-option --poll-duration-hours --poll-duration-seconds -m --message --thread-id" -l poll-multi -d 'Allow multiple selections' +complete -c openclaw -n "__openclaw_command_path_matches message poll -- --container --profile --log-level -t --target --channel --account --poll-question --poll-option --poll-duration-hours --poll-duration-seconds -m --message --thread-id" -l poll-duration-hours -d 'Poll duration in hours (Discord)' +complete -c openclaw -n "__openclaw_command_path_matches message poll -- --container --profile --log-level -t --target --channel --account --poll-question --poll-option --poll-duration-hours --poll-duration-seconds -m --message --thread-id" -l poll-duration-seconds -d 'Poll duration in seconds (Telegram; 5-600)' +complete -c openclaw -n "__openclaw_command_path_matches message poll -- --container --profile --log-level -t --target --channel --account --poll-question --poll-option --poll-duration-hours --poll-duration-seconds -m --message --thread-id" -l poll-anonymous -d 'Send an anonymous poll (Telegram)' +complete -c openclaw -n "__openclaw_command_path_matches message poll -- --container --profile --log-level -t --target --channel --account --poll-question --poll-option --poll-duration-hours --poll-duration-seconds -m --message --thread-id" -l poll-public -d 'Send a non-anonymous poll (Telegram)' +complete -c openclaw -n "__openclaw_command_path_matches message poll -- --container --profile --log-level -t --target --channel --account --poll-question --poll-option --poll-duration-hours --poll-duration-seconds -m --message --thread-id" -s m -l message -d 'Optional message body' +complete -c openclaw -n "__openclaw_command_path_matches message poll -- --container --profile --log-level -t --target --channel --account --poll-question --poll-option --poll-duration-hours --poll-duration-seconds -m --message --thread-id" -l silent -d 'Send poll silently without notification (Telegram + Discord where supported)' +complete -c openclaw -n "__openclaw_command_path_matches message poll -- --container --profile --log-level -t --target --channel --account --poll-question --poll-option --poll-duration-hours --poll-duration-seconds -m --message --thread-id" -l thread-id -d 'Thread id (Telegram forum topic / Slack thread ts)' +complete -c openclaw -n "__openclaw_command_path_matches message react -- --container --profile --log-level -t --target --channel --account --message-id --emoji --participant --target-author --target-author-uuid" -s t -l target -d 'Recipient/channel: E.164 for WhatsApp/Signal, Telegram chat id/@username, Discord/Slack/Mattermost , or iMessage handle/chat_id' +complete -c openclaw -n "__openclaw_command_path_matches message react -- --container --profile --log-level -t --target --channel --account --message-id --emoji --participant --target-author --target-author-uuid" -l channel -d 'Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|feishu|nostr|msteams|mattermost|nextcloud-talk|matrix|raft|line|zalo|clickclack|zalouser|sms|synology-chat|tlon|qa-channel|qqbot|twitch' +complete -c openclaw -n "__openclaw_command_path_matches message react -- --container --profile --log-level -t --target --channel --account --message-id --emoji --participant --target-author --target-author-uuid" -l account -d 'Channel account id (accountId)' +complete -c openclaw -n "__openclaw_command_path_matches message react -- --container --profile --log-level -t --target --channel --account --message-id --emoji --participant --target-author --target-author-uuid" -l json -d 'Output result as JSON' +complete -c openclaw -n "__openclaw_command_path_matches message react -- --container --profile --log-level -t --target --channel --account --message-id --emoji --participant --target-author --target-author-uuid" -l dry-run -d 'Print payload and skip sending' +complete -c openclaw -n "__openclaw_command_path_matches message react -- --container --profile --log-level -t --target --channel --account --message-id --emoji --participant --target-author --target-author-uuid" -l verbose -d 'Verbose logging' +complete -c openclaw -n "__openclaw_command_path_matches message react -- --container --profile --log-level -t --target --channel --account --message-id --emoji --participant --target-author --target-author-uuid" -l message-id -d 'Message id' +complete -c openclaw -n "__openclaw_command_path_matches message react -- --container --profile --log-level -t --target --channel --account --message-id --emoji --participant --target-author --target-author-uuid" -l emoji -d 'Emoji for reactions' +complete -c openclaw -n "__openclaw_command_path_matches message react -- --container --profile --log-level -t --target --channel --account --message-id --emoji --participant --target-author --target-author-uuid" -l remove -d 'Remove reaction' +complete -c openclaw -n "__openclaw_command_path_matches message react -- --container --profile --log-level -t --target --channel --account --message-id --emoji --participant --target-author --target-author-uuid" -l participant -d 'WhatsApp reaction participant' +complete -c openclaw -n "__openclaw_command_path_matches message react -- --container --profile --log-level -t --target --channel --account --message-id --emoji --participant --target-author --target-author-uuid" -l from-me -d 'WhatsApp reaction fromMe' +complete -c openclaw -n "__openclaw_command_path_matches message react -- --container --profile --log-level -t --target --channel --account --message-id --emoji --participant --target-author --target-author-uuid" -l target-author -d 'Signal reaction target author (uuid or phone)' +complete -c openclaw -n "__openclaw_command_path_matches message react -- --container --profile --log-level -t --target --channel --account --message-id --emoji --participant --target-author --target-author-uuid" -l target-author-uuid -d 'Signal reaction target author uuid' +complete -c openclaw -n "__openclaw_command_path_matches message reactions -- --container --profile --log-level -t --target --channel --account --message-id --limit" -s t -l target -d 'Recipient/channel: E.164 for WhatsApp/Signal, Telegram chat id/@username, Discord/Slack/Mattermost , or iMessage handle/chat_id' +complete -c openclaw -n "__openclaw_command_path_matches message reactions -- --container --profile --log-level -t --target --channel --account --message-id --limit" -l channel -d 'Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|feishu|nostr|msteams|mattermost|nextcloud-talk|matrix|raft|line|zalo|clickclack|zalouser|sms|synology-chat|tlon|qa-channel|qqbot|twitch' +complete -c openclaw -n "__openclaw_command_path_matches message reactions -- --container --profile --log-level -t --target --channel --account --message-id --limit" -l account -d 'Channel account id (accountId)' +complete -c openclaw -n "__openclaw_command_path_matches message reactions -- --container --profile --log-level -t --target --channel --account --message-id --limit" -l json -d 'Output result as JSON' +complete -c openclaw -n "__openclaw_command_path_matches message reactions -- --container --profile --log-level -t --target --channel --account --message-id --limit" -l dry-run -d 'Print payload and skip sending' +complete -c openclaw -n "__openclaw_command_path_matches message reactions -- --container --profile --log-level -t --target --channel --account --message-id --limit" -l verbose -d 'Verbose logging' +complete -c openclaw -n "__openclaw_command_path_matches message reactions -- --container --profile --log-level -t --target --channel --account --message-id --limit" -l message-id -d 'Message id' +complete -c openclaw -n "__openclaw_command_path_matches message reactions -- --container --profile --log-level -t --target --channel --account --message-id --limit" -l limit -d 'Result limit' +complete -c openclaw -n "__openclaw_command_path_matches message read -- --container --profile --log-level -t --target --channel --account --limit --message-id --before --after --around --thread-id" -s t -l target -d 'Recipient/channel: E.164 for WhatsApp/Signal, Telegram chat id/@username, Discord/Slack/Mattermost , or iMessage handle/chat_id' +complete -c openclaw -n "__openclaw_command_path_matches message read -- --container --profile --log-level -t --target --channel --account --limit --message-id --before --after --around --thread-id" -l channel -d 'Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|feishu|nostr|msteams|mattermost|nextcloud-talk|matrix|raft|line|zalo|clickclack|zalouser|sms|synology-chat|tlon|qa-channel|qqbot|twitch' +complete -c openclaw -n "__openclaw_command_path_matches message read -- --container --profile --log-level -t --target --channel --account --limit --message-id --before --after --around --thread-id" -l account -d 'Channel account id (accountId)' +complete -c openclaw -n "__openclaw_command_path_matches message read -- --container --profile --log-level -t --target --channel --account --limit --message-id --before --after --around --thread-id" -l json -d 'Output result as JSON' +complete -c openclaw -n "__openclaw_command_path_matches message read -- --container --profile --log-level -t --target --channel --account --limit --message-id --before --after --around --thread-id" -l dry-run -d 'Print payload and skip sending' +complete -c openclaw -n "__openclaw_command_path_matches message read -- --container --profile --log-level -t --target --channel --account --limit --message-id --before --after --around --thread-id" -l verbose -d 'Verbose logging' +complete -c openclaw -n "__openclaw_command_path_matches message read -- --container --profile --log-level -t --target --channel --account --limit --message-id --before --after --around --thread-id" -l limit -d 'Result limit' +complete -c openclaw -n "__openclaw_command_path_matches message read -- --container --profile --log-level -t --target --channel --account --limit --message-id --before --after --around --thread-id" -l message-id -d 'Read a specific message id' +complete -c openclaw -n "__openclaw_command_path_matches message read -- --container --profile --log-level -t --target --channel --account --limit --message-id --before --after --around --thread-id" -l before -d 'Read/search before id' +complete -c openclaw -n "__openclaw_command_path_matches message read -- --container --profile --log-level -t --target --channel --account --limit --message-id --before --after --around --thread-id" -l after -d 'Read/search after id' +complete -c openclaw -n "__openclaw_command_path_matches message read -- --container --profile --log-level -t --target --channel --account --limit --message-id --before --after --around --thread-id" -l around -d 'Read around id' +complete -c openclaw -n "__openclaw_command_path_matches message read -- --container --profile --log-level -t --target --channel --account --limit --message-id --before --after --around --thread-id" -l thread-id -d 'Thread id (Slack thread timestamp)' +complete -c openclaw -n "__openclaw_command_path_matches message read -- --container --profile --log-level -t --target --channel --account --limit --message-id --before --after --around --thread-id" -l include-thread -d 'Include thread replies (Discord)' +complete -c openclaw -n "__openclaw_command_path_matches message edit -- --container --profile --log-level --message-id -m --message -t --target --channel --account --thread-id" -l message-id -d 'Message id' +complete -c openclaw -n "__openclaw_command_path_matches message edit -- --container --profile --log-level --message-id -m --message -t --target --channel --account --thread-id" -s m -l message -d 'Message body' +complete -c openclaw -n "__openclaw_command_path_matches message edit -- --container --profile --log-level --message-id -m --message -t --target --channel --account --thread-id" -s t -l target -d 'Recipient/channel: E.164 for WhatsApp/Signal, Telegram chat id/@username, Discord/Slack/Mattermost , or iMessage handle/chat_id' +complete -c openclaw -n "__openclaw_command_path_matches message edit -- --container --profile --log-level --message-id -m --message -t --target --channel --account --thread-id" -l channel -d 'Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|feishu|nostr|msteams|mattermost|nextcloud-talk|matrix|raft|line|zalo|clickclack|zalouser|sms|synology-chat|tlon|qa-channel|qqbot|twitch' +complete -c openclaw -n "__openclaw_command_path_matches message edit -- --container --profile --log-level --message-id -m --message -t --target --channel --account --thread-id" -l account -d 'Channel account id (accountId)' +complete -c openclaw -n "__openclaw_command_path_matches message edit -- --container --profile --log-level --message-id -m --message -t --target --channel --account --thread-id" -l json -d 'Output result as JSON' +complete -c openclaw -n "__openclaw_command_path_matches message edit -- --container --profile --log-level --message-id -m --message -t --target --channel --account --thread-id" -l dry-run -d 'Print payload and skip sending' +complete -c openclaw -n "__openclaw_command_path_matches message edit -- --container --profile --log-level --message-id -m --message -t --target --channel --account --thread-id" -l verbose -d 'Verbose logging' +complete -c openclaw -n "__openclaw_command_path_matches message edit -- --container --profile --log-level --message-id -m --message -t --target --channel --account --thread-id" -l thread-id -d 'Thread id (Telegram forum thread)' +complete -c openclaw -n "__openclaw_command_path_matches message delete -- --container --profile --log-level --message-id -t --target --channel --account" -l message-id -d 'Message id' +complete -c openclaw -n "__openclaw_command_path_matches message delete -- --container --profile --log-level --message-id -t --target --channel --account" -s t -l target -d 'Recipient/channel: E.164 for WhatsApp/Signal, Telegram chat id/@username, Discord/Slack/Mattermost , or iMessage handle/chat_id' +complete -c openclaw -n "__openclaw_command_path_matches message delete -- --container --profile --log-level --message-id -t --target --channel --account" -l channel -d 'Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|feishu|nostr|msteams|mattermost|nextcloud-talk|matrix|raft|line|zalo|clickclack|zalouser|sms|synology-chat|tlon|qa-channel|qqbot|twitch' +complete -c openclaw -n "__openclaw_command_path_matches message delete -- --container --profile --log-level --message-id -t --target --channel --account" -l account -d 'Channel account id (accountId)' +complete -c openclaw -n "__openclaw_command_path_matches message delete -- --container --profile --log-level --message-id -t --target --channel --account" -l json -d 'Output result as JSON' +complete -c openclaw -n "__openclaw_command_path_matches message delete -- --container --profile --log-level --message-id -t --target --channel --account" -l dry-run -d 'Print payload and skip sending' +complete -c openclaw -n "__openclaw_command_path_matches message delete -- --container --profile --log-level --message-id -t --target --channel --account" -l verbose -d 'Verbose logging' +complete -c openclaw -n "__openclaw_command_path_matches message pin -- --container --profile --log-level -t --target --channel --account --message-id" -s t -l target -d 'Recipient/channel: E.164 for WhatsApp/Signal, Telegram chat id/@username, Discord/Slack/Mattermost , or iMessage handle/chat_id' +complete -c openclaw -n "__openclaw_command_path_matches message pin -- --container --profile --log-level -t --target --channel --account --message-id" -l channel -d 'Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|feishu|nostr|msteams|mattermost|nextcloud-talk|matrix|raft|line|zalo|clickclack|zalouser|sms|synology-chat|tlon|qa-channel|qqbot|twitch' +complete -c openclaw -n "__openclaw_command_path_matches message pin -- --container --profile --log-level -t --target --channel --account --message-id" -l account -d 'Channel account id (accountId)' +complete -c openclaw -n "__openclaw_command_path_matches message pin -- --container --profile --log-level -t --target --channel --account --message-id" -l json -d 'Output result as JSON' +complete -c openclaw -n "__openclaw_command_path_matches message pin -- --container --profile --log-level -t --target --channel --account --message-id" -l dry-run -d 'Print payload and skip sending' +complete -c openclaw -n "__openclaw_command_path_matches message pin -- --container --profile --log-level -t --target --channel --account --message-id" -l verbose -d 'Verbose logging' +complete -c openclaw -n "__openclaw_command_path_matches message pin -- --container --profile --log-level -t --target --channel --account --message-id" -l message-id -d 'Message id' +complete -c openclaw -n "__openclaw_command_path_matches message unpin -- --container --profile --log-level -t --target --channel --account --message-id --pinned-message-id" -s t -l target -d 'Recipient/channel: E.164 for WhatsApp/Signal, Telegram chat id/@username, Discord/Slack/Mattermost , or iMessage handle/chat_id' +complete -c openclaw -n "__openclaw_command_path_matches message unpin -- --container --profile --log-level -t --target --channel --account --message-id --pinned-message-id" -l channel -d 'Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|feishu|nostr|msteams|mattermost|nextcloud-talk|matrix|raft|line|zalo|clickclack|zalouser|sms|synology-chat|tlon|qa-channel|qqbot|twitch' +complete -c openclaw -n "__openclaw_command_path_matches message unpin -- --container --profile --log-level -t --target --channel --account --message-id --pinned-message-id" -l account -d 'Channel account id (accountId)' +complete -c openclaw -n "__openclaw_command_path_matches message unpin -- --container --profile --log-level -t --target --channel --account --message-id --pinned-message-id" -l json -d 'Output result as JSON' +complete -c openclaw -n "__openclaw_command_path_matches message unpin -- --container --profile --log-level -t --target --channel --account --message-id --pinned-message-id" -l dry-run -d 'Print payload and skip sending' +complete -c openclaw -n "__openclaw_command_path_matches message unpin -- --container --profile --log-level -t --target --channel --account --message-id --pinned-message-id" -l verbose -d 'Verbose logging' +complete -c openclaw -n "__openclaw_command_path_matches message unpin -- --container --profile --log-level -t --target --channel --account --message-id --pinned-message-id" -l message-id -d 'Message id (or pinned message resource id for MSTeams)' +complete -c openclaw -n "__openclaw_command_path_matches message unpin -- --container --profile --log-level -t --target --channel --account --message-id --pinned-message-id" -l pinned-message-id -d 'Pinned message resource id (MSTeams: from pin or list-pins, not the chat message id)' +complete -c openclaw -n "__openclaw_command_path_matches message pins -- --container --profile --log-level -t --target --channel --account --limit" -s t -l target -d 'Recipient/channel: E.164 for WhatsApp/Signal, Telegram chat id/@username, Discord/Slack/Mattermost , or iMessage handle/chat_id' +complete -c openclaw -n "__openclaw_command_path_matches message pins -- --container --profile --log-level -t --target --channel --account --limit" -l channel -d 'Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|feishu|nostr|msteams|mattermost|nextcloud-talk|matrix|raft|line|zalo|clickclack|zalouser|sms|synology-chat|tlon|qa-channel|qqbot|twitch' +complete -c openclaw -n "__openclaw_command_path_matches message pins -- --container --profile --log-level -t --target --channel --account --limit" -l account -d 'Channel account id (accountId)' +complete -c openclaw -n "__openclaw_command_path_matches message pins -- --container --profile --log-level -t --target --channel --account --limit" -l json -d 'Output result as JSON' +complete -c openclaw -n "__openclaw_command_path_matches message pins -- --container --profile --log-level -t --target --channel --account --limit" -l dry-run -d 'Print payload and skip sending' +complete -c openclaw -n "__openclaw_command_path_matches message pins -- --container --profile --log-level -t --target --channel --account --limit" -l verbose -d 'Verbose logging' +complete -c openclaw -n "__openclaw_command_path_matches message pins -- --container --profile --log-level -t --target --channel --account --limit" -l limit -d 'Result limit' +complete -c openclaw -n "__openclaw_command_path_matches message permissions -- --container --profile --log-level -t --target --channel --account" -s t -l target -d 'Recipient/channel: E.164 for WhatsApp/Signal, Telegram chat id/@username, Discord/Slack/Mattermost , or iMessage handle/chat_id' +complete -c openclaw -n "__openclaw_command_path_matches message permissions -- --container --profile --log-level -t --target --channel --account" -l channel -d 'Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|feishu|nostr|msteams|mattermost|nextcloud-talk|matrix|raft|line|zalo|clickclack|zalouser|sms|synology-chat|tlon|qa-channel|qqbot|twitch' +complete -c openclaw -n "__openclaw_command_path_matches message permissions -- --container --profile --log-level -t --target --channel --account" -l account -d 'Channel account id (accountId)' +complete -c openclaw -n "__openclaw_command_path_matches message permissions -- --container --profile --log-level -t --target --channel --account" -l json -d 'Output result as JSON' +complete -c openclaw -n "__openclaw_command_path_matches message permissions -- --container --profile --log-level -t --target --channel --account" -l dry-run -d 'Print payload and skip sending' +complete -c openclaw -n "__openclaw_command_path_matches message permissions -- --container --profile --log-level -t --target --channel --account" -l verbose -d 'Verbose logging' +complete -c openclaw -n "__openclaw_command_path_matches message search -- --container --profile --log-level --channel --account --guild-id --query --channel-id --channel-ids --author-id --author-ids --limit" -l channel -d 'Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|feishu|nostr|msteams|mattermost|nextcloud-talk|matrix|raft|line|zalo|clickclack|zalouser|sms|synology-chat|tlon|qa-channel|qqbot|twitch' +complete -c openclaw -n "__openclaw_command_path_matches message search -- --container --profile --log-level --channel --account --guild-id --query --channel-id --channel-ids --author-id --author-ids --limit" -l account -d 'Channel account id (accountId)' +complete -c openclaw -n "__openclaw_command_path_matches message search -- --container --profile --log-level --channel --account --guild-id --query --channel-id --channel-ids --author-id --author-ids --limit" -l json -d 'Output result as JSON' +complete -c openclaw -n "__openclaw_command_path_matches message search -- --container --profile --log-level --channel --account --guild-id --query --channel-id --channel-ids --author-id --author-ids --limit" -l dry-run -d 'Print payload and skip sending' +complete -c openclaw -n "__openclaw_command_path_matches message search -- --container --profile --log-level --channel --account --guild-id --query --channel-id --channel-ids --author-id --author-ids --limit" -l verbose -d 'Verbose logging' +complete -c openclaw -n "__openclaw_command_path_matches message search -- --container --profile --log-level --channel --account --guild-id --query --channel-id --channel-ids --author-id --author-ids --limit" -l guild-id -d 'Guild id' +complete -c openclaw -n "__openclaw_command_path_matches message search -- --container --profile --log-level --channel --account --guild-id --query --channel-id --channel-ids --author-id --author-ids --limit" -l query -d 'Search query' +complete -c openclaw -n "__openclaw_command_path_matches message search -- --container --profile --log-level --channel --account --guild-id --query --channel-id --channel-ids --author-id --author-ids --limit" -l channel-id -d 'Channel id' +complete -c openclaw -n "__openclaw_command_path_matches message search -- --container --profile --log-level --channel --account --guild-id --query --channel-id --channel-ids --author-id --author-ids --limit" -l channel-ids -d 'Channel id (repeat)' +complete -c openclaw -n "__openclaw_command_path_matches message search -- --container --profile --log-level --channel --account --guild-id --query --channel-id --channel-ids --author-id --author-ids --limit" -l author-id -d 'Author id' +complete -c openclaw -n "__openclaw_command_path_matches message search -- --container --profile --log-level --channel --account --guild-id --query --channel-id --channel-ids --author-id --author-ids --limit" -l author-ids -d 'Author id (repeat)' +complete -c openclaw -n "__openclaw_command_path_matches message search -- --container --profile --log-level --channel --account --guild-id --query --channel-id --channel-ids --author-id --author-ids --limit" -l limit -d 'Result limit' +complete -c openclaw -n "__openclaw_command_path_matches message thread -- --container --profile --log-level" -a "create" -d 'Create a thread' +complete -c openclaw -n "__openclaw_command_path_matches message thread -- --container --profile --log-level" -a "list" -d 'List threads' +complete -c openclaw -n "__openclaw_command_path_matches message thread -- --container --profile --log-level" -a "reply" -d 'Reply in a thread' +complete -c openclaw -n "__openclaw_command_path_matches message thread create -- --container --profile --log-level --thread-name -t --target --channel --account --message-id -m --message --auto-archive-min" -l thread-name -d 'Thread name' +complete -c openclaw -n "__openclaw_command_path_matches message thread create -- --container --profile --log-level --thread-name -t --target --channel --account --message-id -m --message --auto-archive-min" -s t -l target -d 'Recipient/channel: E.164 for WhatsApp/Signal, Telegram chat id/@username, Discord/Slack/Mattermost , or iMessage handle/chat_id' +complete -c openclaw -n "__openclaw_command_path_matches message thread create -- --container --profile --log-level --thread-name -t --target --channel --account --message-id -m --message --auto-archive-min" -l channel -d 'Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|feishu|nostr|msteams|mattermost|nextcloud-talk|matrix|raft|line|zalo|clickclack|zalouser|sms|synology-chat|tlon|qa-channel|qqbot|twitch' +complete -c openclaw -n "__openclaw_command_path_matches message thread create -- --container --profile --log-level --thread-name -t --target --channel --account --message-id -m --message --auto-archive-min" -l account -d 'Channel account id (accountId)' +complete -c openclaw -n "__openclaw_command_path_matches message thread create -- --container --profile --log-level --thread-name -t --target --channel --account --message-id -m --message --auto-archive-min" -l json -d 'Output result as JSON' +complete -c openclaw -n "__openclaw_command_path_matches message thread create -- --container --profile --log-level --thread-name -t --target --channel --account --message-id -m --message --auto-archive-min" -l dry-run -d 'Print payload and skip sending' +complete -c openclaw -n "__openclaw_command_path_matches message thread create -- --container --profile --log-level --thread-name -t --target --channel --account --message-id -m --message --auto-archive-min" -l verbose -d 'Verbose logging' +complete -c openclaw -n "__openclaw_command_path_matches message thread create -- --container --profile --log-level --thread-name -t --target --channel --account --message-id -m --message --auto-archive-min" -l message-id -d 'Message id (optional)' +complete -c openclaw -n "__openclaw_command_path_matches message thread create -- --container --profile --log-level --thread-name -t --target --channel --account --message-id -m --message --auto-archive-min" -s m -l message -d 'Initial thread message text' +complete -c openclaw -n "__openclaw_command_path_matches message thread create -- --container --profile --log-level --thread-name -t --target --channel --account --message-id -m --message --auto-archive-min" -l auto-archive-min -d 'Thread auto-archive minutes' +complete -c openclaw -n "__openclaw_command_path_matches message thread list -- --container --profile --log-level --guild-id --channel --account --channel-id --before --limit" -l guild-id -d 'Guild id' +complete -c openclaw -n "__openclaw_command_path_matches message thread list -- --container --profile --log-level --guild-id --channel --account --channel-id --before --limit" -l channel -d 'Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|feishu|nostr|msteams|mattermost|nextcloud-talk|matrix|raft|line|zalo|clickclack|zalouser|sms|synology-chat|tlon|qa-channel|qqbot|twitch' +complete -c openclaw -n "__openclaw_command_path_matches message thread list -- --container --profile --log-level --guild-id --channel --account --channel-id --before --limit" -l account -d 'Channel account id (accountId)' +complete -c openclaw -n "__openclaw_command_path_matches message thread list -- --container --profile --log-level --guild-id --channel --account --channel-id --before --limit" -l json -d 'Output result as JSON' +complete -c openclaw -n "__openclaw_command_path_matches message thread list -- --container --profile --log-level --guild-id --channel --account --channel-id --before --limit" -l dry-run -d 'Print payload and skip sending' +complete -c openclaw -n "__openclaw_command_path_matches message thread list -- --container --profile --log-level --guild-id --channel --account --channel-id --before --limit" -l verbose -d 'Verbose logging' +complete -c openclaw -n "__openclaw_command_path_matches message thread list -- --container --profile --log-level --guild-id --channel --account --channel-id --before --limit" -l channel-id -d 'Channel id' +complete -c openclaw -n "__openclaw_command_path_matches message thread list -- --container --profile --log-level --guild-id --channel --account --channel-id --before --limit" -l include-archived -d 'Include archived threads' +complete -c openclaw -n "__openclaw_command_path_matches message thread list -- --container --profile --log-level --guild-id --channel --account --channel-id --before --limit" -l before -d 'Read/search before id' +complete -c openclaw -n "__openclaw_command_path_matches message thread list -- --container --profile --log-level --guild-id --channel --account --channel-id --before --limit" -l limit -d 'Result limit' +complete -c openclaw -n "__openclaw_command_path_matches message thread reply -- --container --profile --log-level -m --message -t --target --channel --account --media --reply-to" -s m -l message -d 'Message body' +complete -c openclaw -n "__openclaw_command_path_matches message thread reply -- --container --profile --log-level -m --message -t --target --channel --account --media --reply-to" -s t -l target -d 'Recipient/channel: E.164 for WhatsApp/Signal, Telegram chat id/@username, Discord/Slack/Mattermost , or iMessage handle/chat_id' +complete -c openclaw -n "__openclaw_command_path_matches message thread reply -- --container --profile --log-level -m --message -t --target --channel --account --media --reply-to" -l channel -d 'Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|feishu|nostr|msteams|mattermost|nextcloud-talk|matrix|raft|line|zalo|clickclack|zalouser|sms|synology-chat|tlon|qa-channel|qqbot|twitch' +complete -c openclaw -n "__openclaw_command_path_matches message thread reply -- --container --profile --log-level -m --message -t --target --channel --account --media --reply-to" -l account -d 'Channel account id (accountId)' +complete -c openclaw -n "__openclaw_command_path_matches message thread reply -- --container --profile --log-level -m --message -t --target --channel --account --media --reply-to" -l json -d 'Output result as JSON' +complete -c openclaw -n "__openclaw_command_path_matches message thread reply -- --container --profile --log-level -m --message -t --target --channel --account --media --reply-to" -l dry-run -d 'Print payload and skip sending' +complete -c openclaw -n "__openclaw_command_path_matches message thread reply -- --container --profile --log-level -m --message -t --target --channel --account --media --reply-to" -l verbose -d 'Verbose logging' +complete -c openclaw -n "__openclaw_command_path_matches message thread reply -- --container --profile --log-level -m --message -t --target --channel --account --media --reply-to" -l media -d 'Attach media (image/audio/video/document). Accepts local paths or URLs.' +complete -c openclaw -n "__openclaw_command_path_matches message thread reply -- --container --profile --log-level -m --message -t --target --channel --account --media --reply-to" -l reply-to -d 'Reply-to message id' +complete -c openclaw -n "__openclaw_command_path_matches message emoji -- --container --profile --log-level" -a "list" -d 'List emojis' +complete -c openclaw -n "__openclaw_command_path_matches message emoji -- --container --profile --log-level" -a "upload" -d 'Upload an emoji' +complete -c openclaw -n "__openclaw_command_path_matches message emoji list -- --container --profile --log-level --channel --account --guild-id" -l channel -d 'Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|feishu|nostr|msteams|mattermost|nextcloud-talk|matrix|raft|line|zalo|clickclack|zalouser|sms|synology-chat|tlon|qa-channel|qqbot|twitch' +complete -c openclaw -n "__openclaw_command_path_matches message emoji list -- --container --profile --log-level --channel --account --guild-id" -l account -d 'Channel account id (accountId)' +complete -c openclaw -n "__openclaw_command_path_matches message emoji list -- --container --profile --log-level --channel --account --guild-id" -l json -d 'Output result as JSON' +complete -c openclaw -n "__openclaw_command_path_matches message emoji list -- --container --profile --log-level --channel --account --guild-id" -l dry-run -d 'Print payload and skip sending' +complete -c openclaw -n "__openclaw_command_path_matches message emoji list -- --container --profile --log-level --channel --account --guild-id" -l verbose -d 'Verbose logging' +complete -c openclaw -n "__openclaw_command_path_matches message emoji list -- --container --profile --log-level --channel --account --guild-id" -l guild-id -d 'Guild id (Discord)' +complete -c openclaw -n "__openclaw_command_path_matches message emoji upload -- --container --profile --log-level --guild-id --channel --account --emoji-name --media --role-ids" -l guild-id -d 'Guild id' +complete -c openclaw -n "__openclaw_command_path_matches message emoji upload -- --container --profile --log-level --guild-id --channel --account --emoji-name --media --role-ids" -l channel -d 'Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|feishu|nostr|msteams|mattermost|nextcloud-talk|matrix|raft|line|zalo|clickclack|zalouser|sms|synology-chat|tlon|qa-channel|qqbot|twitch' +complete -c openclaw -n "__openclaw_command_path_matches message emoji upload -- --container --profile --log-level --guild-id --channel --account --emoji-name --media --role-ids" -l account -d 'Channel account id (accountId)' +complete -c openclaw -n "__openclaw_command_path_matches message emoji upload -- --container --profile --log-level --guild-id --channel --account --emoji-name --media --role-ids" -l json -d 'Output result as JSON' +complete -c openclaw -n "__openclaw_command_path_matches message emoji upload -- --container --profile --log-level --guild-id --channel --account --emoji-name --media --role-ids" -l dry-run -d 'Print payload and skip sending' +complete -c openclaw -n "__openclaw_command_path_matches message emoji upload -- --container --profile --log-level --guild-id --channel --account --emoji-name --media --role-ids" -l verbose -d 'Verbose logging' +complete -c openclaw -n "__openclaw_command_path_matches message emoji upload -- --container --profile --log-level --guild-id --channel --account --emoji-name --media --role-ids" -l emoji-name -d 'Emoji name' +complete -c openclaw -n "__openclaw_command_path_matches message emoji upload -- --container --profile --log-level --guild-id --channel --account --emoji-name --media --role-ids" -l media -d 'Emoji media (path or URL)' +complete -c openclaw -n "__openclaw_command_path_matches message emoji upload -- --container --profile --log-level --guild-id --channel --account --emoji-name --media --role-ids" -l role-ids -d 'Role id (repeat)' +complete -c openclaw -n "__openclaw_command_path_matches message sticker -- --container --profile --log-level" -a "send" -d 'Send stickers' +complete -c openclaw -n "__openclaw_command_path_matches message sticker -- --container --profile --log-level" -a "upload" -d 'Upload a sticker' +complete -c openclaw -n "__openclaw_command_path_matches message sticker send -- --container --profile --log-level -t --target --channel --account --sticker-id -m --message" -s t -l target -d 'Recipient/channel: E.164 for WhatsApp/Signal, Telegram chat id/@username, Discord/Slack/Mattermost , or iMessage handle/chat_id' +complete -c openclaw -n "__openclaw_command_path_matches message sticker send -- --container --profile --log-level -t --target --channel --account --sticker-id -m --message" -l channel -d 'Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|feishu|nostr|msteams|mattermost|nextcloud-talk|matrix|raft|line|zalo|clickclack|zalouser|sms|synology-chat|tlon|qa-channel|qqbot|twitch' +complete -c openclaw -n "__openclaw_command_path_matches message sticker send -- --container --profile --log-level -t --target --channel --account --sticker-id -m --message" -l account -d 'Channel account id (accountId)' +complete -c openclaw -n "__openclaw_command_path_matches message sticker send -- --container --profile --log-level -t --target --channel --account --sticker-id -m --message" -l json -d 'Output result as JSON' +complete -c openclaw -n "__openclaw_command_path_matches message sticker send -- --container --profile --log-level -t --target --channel --account --sticker-id -m --message" -l dry-run -d 'Print payload and skip sending' +complete -c openclaw -n "__openclaw_command_path_matches message sticker send -- --container --profile --log-level -t --target --channel --account --sticker-id -m --message" -l verbose -d 'Verbose logging' +complete -c openclaw -n "__openclaw_command_path_matches message sticker send -- --container --profile --log-level -t --target --channel --account --sticker-id -m --message" -l sticker-id -d 'Sticker id (repeat)' +complete -c openclaw -n "__openclaw_command_path_matches message sticker send -- --container --profile --log-level -t --target --channel --account --sticker-id -m --message" -s m -l message -d 'Optional message body' +complete -c openclaw -n "__openclaw_command_path_matches message sticker upload -- --container --profile --log-level --guild-id --channel --account --sticker-name --sticker-desc --sticker-tags --media" -l guild-id -d 'Guild id' +complete -c openclaw -n "__openclaw_command_path_matches message sticker upload -- --container --profile --log-level --guild-id --channel --account --sticker-name --sticker-desc --sticker-tags --media" -l channel -d 'Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|feishu|nostr|msteams|mattermost|nextcloud-talk|matrix|raft|line|zalo|clickclack|zalouser|sms|synology-chat|tlon|qa-channel|qqbot|twitch' +complete -c openclaw -n "__openclaw_command_path_matches message sticker upload -- --container --profile --log-level --guild-id --channel --account --sticker-name --sticker-desc --sticker-tags --media" -l account -d 'Channel account id (accountId)' +complete -c openclaw -n "__openclaw_command_path_matches message sticker upload -- --container --profile --log-level --guild-id --channel --account --sticker-name --sticker-desc --sticker-tags --media" -l json -d 'Output result as JSON' +complete -c openclaw -n "__openclaw_command_path_matches message sticker upload -- --container --profile --log-level --guild-id --channel --account --sticker-name --sticker-desc --sticker-tags --media" -l dry-run -d 'Print payload and skip sending' +complete -c openclaw -n "__openclaw_command_path_matches message sticker upload -- --container --profile --log-level --guild-id --channel --account --sticker-name --sticker-desc --sticker-tags --media" -l verbose -d 'Verbose logging' +complete -c openclaw -n "__openclaw_command_path_matches message sticker upload -- --container --profile --log-level --guild-id --channel --account --sticker-name --sticker-desc --sticker-tags --media" -l sticker-name -d 'Sticker name' +complete -c openclaw -n "__openclaw_command_path_matches message sticker upload -- --container --profile --log-level --guild-id --channel --account --sticker-name --sticker-desc --sticker-tags --media" -l sticker-desc -d 'Sticker description' +complete -c openclaw -n "__openclaw_command_path_matches message sticker upload -- --container --profile --log-level --guild-id --channel --account --sticker-name --sticker-desc --sticker-tags --media" -l sticker-tags -d 'Sticker tags' +complete -c openclaw -n "__openclaw_command_path_matches message sticker upload -- --container --profile --log-level --guild-id --channel --account --sticker-name --sticker-desc --sticker-tags --media" -l media -d 'Sticker media (path or URL)' +complete -c openclaw -n "__openclaw_command_path_matches message role -- --container --profile --log-level" -a "info" -d 'List roles' +complete -c openclaw -n "__openclaw_command_path_matches message role -- --container --profile --log-level" -a "add" -d 'Add role to a member' +complete -c openclaw -n "__openclaw_command_path_matches message role -- --container --profile --log-level" -a "remove" -d 'Remove role from a member' +complete -c openclaw -n "__openclaw_command_path_matches message role info -- --container --profile --log-level --guild-id --channel --account" -l guild-id -d 'Guild id' +complete -c openclaw -n "__openclaw_command_path_matches message role info -- --container --profile --log-level --guild-id --channel --account" -l channel -d 'Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|feishu|nostr|msteams|mattermost|nextcloud-talk|matrix|raft|line|zalo|clickclack|zalouser|sms|synology-chat|tlon|qa-channel|qqbot|twitch' +complete -c openclaw -n "__openclaw_command_path_matches message role info -- --container --profile --log-level --guild-id --channel --account" -l account -d 'Channel account id (accountId)' +complete -c openclaw -n "__openclaw_command_path_matches message role info -- --container --profile --log-level --guild-id --channel --account" -l json -d 'Output result as JSON' +complete -c openclaw -n "__openclaw_command_path_matches message role info -- --container --profile --log-level --guild-id --channel --account" -l dry-run -d 'Print payload and skip sending' +complete -c openclaw -n "__openclaw_command_path_matches message role info -- --container --profile --log-level --guild-id --channel --account" -l verbose -d 'Verbose logging' +complete -c openclaw -n "__openclaw_command_path_matches message role add -- --container --profile --log-level --guild-id --user-id --role-id --channel --account" -l guild-id -d 'Guild id' +complete -c openclaw -n "__openclaw_command_path_matches message role add -- --container --profile --log-level --guild-id --user-id --role-id --channel --account" -l user-id -d 'User id' +complete -c openclaw -n "__openclaw_command_path_matches message role add -- --container --profile --log-level --guild-id --user-id --role-id --channel --account" -l role-id -d 'Role id' +complete -c openclaw -n "__openclaw_command_path_matches message role add -- --container --profile --log-level --guild-id --user-id --role-id --channel --account" -l channel -d 'Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|feishu|nostr|msteams|mattermost|nextcloud-talk|matrix|raft|line|zalo|clickclack|zalouser|sms|synology-chat|tlon|qa-channel|qqbot|twitch' +complete -c openclaw -n "__openclaw_command_path_matches message role add -- --container --profile --log-level --guild-id --user-id --role-id --channel --account" -l account -d 'Channel account id (accountId)' +complete -c openclaw -n "__openclaw_command_path_matches message role add -- --container --profile --log-level --guild-id --user-id --role-id --channel --account" -l json -d 'Output result as JSON' +complete -c openclaw -n "__openclaw_command_path_matches message role add -- --container --profile --log-level --guild-id --user-id --role-id --channel --account" -l dry-run -d 'Print payload and skip sending' +complete -c openclaw -n "__openclaw_command_path_matches message role add -- --container --profile --log-level --guild-id --user-id --role-id --channel --account" -l verbose -d 'Verbose logging' +complete -c openclaw -n "__openclaw_command_path_matches message role remove -- --container --profile --log-level --guild-id --user-id --role-id --channel --account" -l guild-id -d 'Guild id' +complete -c openclaw -n "__openclaw_command_path_matches message role remove -- --container --profile --log-level --guild-id --user-id --role-id --channel --account" -l user-id -d 'User id' +complete -c openclaw -n "__openclaw_command_path_matches message role remove -- --container --profile --log-level --guild-id --user-id --role-id --channel --account" -l role-id -d 'Role id' +complete -c openclaw -n "__openclaw_command_path_matches message role remove -- --container --profile --log-level --guild-id --user-id --role-id --channel --account" -l channel -d 'Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|feishu|nostr|msteams|mattermost|nextcloud-talk|matrix|raft|line|zalo|clickclack|zalouser|sms|synology-chat|tlon|qa-channel|qqbot|twitch' +complete -c openclaw -n "__openclaw_command_path_matches message role remove -- --container --profile --log-level --guild-id --user-id --role-id --channel --account" -l account -d 'Channel account id (accountId)' +complete -c openclaw -n "__openclaw_command_path_matches message role remove -- --container --profile --log-level --guild-id --user-id --role-id --channel --account" -l json -d 'Output result as JSON' +complete -c openclaw -n "__openclaw_command_path_matches message role remove -- --container --profile --log-level --guild-id --user-id --role-id --channel --account" -l dry-run -d 'Print payload and skip sending' +complete -c openclaw -n "__openclaw_command_path_matches message role remove -- --container --profile --log-level --guild-id --user-id --role-id --channel --account" -l verbose -d 'Verbose logging' +complete -c openclaw -n "__openclaw_command_path_matches message channel -- --container --profile --log-level" -a "info" -d 'Fetch channel info' +complete -c openclaw -n "__openclaw_command_path_matches message channel -- --container --profile --log-level" -a "list" -d 'List channels' +complete -c openclaw -n "__openclaw_command_path_matches message channel info -- --container --profile --log-level -t --target --channel --account" -s t -l target -d 'Recipient/channel: E.164 for WhatsApp/Signal, Telegram chat id/@username, Discord/Slack/Mattermost , or iMessage handle/chat_id' +complete -c openclaw -n "__openclaw_command_path_matches message channel info -- --container --profile --log-level -t --target --channel --account" -l channel -d 'Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|feishu|nostr|msteams|mattermost|nextcloud-talk|matrix|raft|line|zalo|clickclack|zalouser|sms|synology-chat|tlon|qa-channel|qqbot|twitch' +complete -c openclaw -n "__openclaw_command_path_matches message channel info -- --container --profile --log-level -t --target --channel --account" -l account -d 'Channel account id (accountId)' +complete -c openclaw -n "__openclaw_command_path_matches message channel info -- --container --profile --log-level -t --target --channel --account" -l json -d 'Output result as JSON' +complete -c openclaw -n "__openclaw_command_path_matches message channel info -- --container --profile --log-level -t --target --channel --account" -l dry-run -d 'Print payload and skip sending' +complete -c openclaw -n "__openclaw_command_path_matches message channel info -- --container --profile --log-level -t --target --channel --account" -l verbose -d 'Verbose logging' +complete -c openclaw -n "__openclaw_command_path_matches message channel list -- --container --profile --log-level --guild-id --channel --account" -l guild-id -d 'Guild id' +complete -c openclaw -n "__openclaw_command_path_matches message channel list -- --container --profile --log-level --guild-id --channel --account" -l channel -d 'Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|feishu|nostr|msteams|mattermost|nextcloud-talk|matrix|raft|line|zalo|clickclack|zalouser|sms|synology-chat|tlon|qa-channel|qqbot|twitch' +complete -c openclaw -n "__openclaw_command_path_matches message channel list -- --container --profile --log-level --guild-id --channel --account" -l account -d 'Channel account id (accountId)' +complete -c openclaw -n "__openclaw_command_path_matches message channel list -- --container --profile --log-level --guild-id --channel --account" -l json -d 'Output result as JSON' +complete -c openclaw -n "__openclaw_command_path_matches message channel list -- --container --profile --log-level --guild-id --channel --account" -l dry-run -d 'Print payload and skip sending' +complete -c openclaw -n "__openclaw_command_path_matches message channel list -- --container --profile --log-level --guild-id --channel --account" -l verbose -d 'Verbose logging' +complete -c openclaw -n "__openclaw_command_path_matches message member -- --container --profile --log-level" -a "info" -d 'Fetch member info' +complete -c openclaw -n "__openclaw_command_path_matches message member info -- --container --profile --log-level --user-id --channel --account --guild-id" -l user-id -d 'User id' +complete -c openclaw -n "__openclaw_command_path_matches message member info -- --container --profile --log-level --user-id --channel --account --guild-id" -l channel -d 'Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|feishu|nostr|msteams|mattermost|nextcloud-talk|matrix|raft|line|zalo|clickclack|zalouser|sms|synology-chat|tlon|qa-channel|qqbot|twitch' +complete -c openclaw -n "__openclaw_command_path_matches message member info -- --container --profile --log-level --user-id --channel --account --guild-id" -l account -d 'Channel account id (accountId)' +complete -c openclaw -n "__openclaw_command_path_matches message member info -- --container --profile --log-level --user-id --channel --account --guild-id" -l json -d 'Output result as JSON' +complete -c openclaw -n "__openclaw_command_path_matches message member info -- --container --profile --log-level --user-id --channel --account --guild-id" -l dry-run -d 'Print payload and skip sending' +complete -c openclaw -n "__openclaw_command_path_matches message member info -- --container --profile --log-level --user-id --channel --account --guild-id" -l verbose -d 'Verbose logging' +complete -c openclaw -n "__openclaw_command_path_matches message member info -- --container --profile --log-level --user-id --channel --account --guild-id" -l guild-id -d 'Guild id (Discord)' +complete -c openclaw -n "__openclaw_command_path_matches message voice -- --container --profile --log-level" -a "status" -d 'Fetch voice status' +complete -c openclaw -n "__openclaw_command_path_matches message voice status -- --container --profile --log-level --guild-id --user-id --channel --account" -l guild-id -d 'Guild id' +complete -c openclaw -n "__openclaw_command_path_matches message voice status -- --container --profile --log-level --guild-id --user-id --channel --account" -l user-id -d 'User id' +complete -c openclaw -n "__openclaw_command_path_matches message voice status -- --container --profile --log-level --guild-id --user-id --channel --account" -l channel -d 'Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|feishu|nostr|msteams|mattermost|nextcloud-talk|matrix|raft|line|zalo|clickclack|zalouser|sms|synology-chat|tlon|qa-channel|qqbot|twitch' +complete -c openclaw -n "__openclaw_command_path_matches message voice status -- --container --profile --log-level --guild-id --user-id --channel --account" -l account -d 'Channel account id (accountId)' +complete -c openclaw -n "__openclaw_command_path_matches message voice status -- --container --profile --log-level --guild-id --user-id --channel --account" -l json -d 'Output result as JSON' +complete -c openclaw -n "__openclaw_command_path_matches message voice status -- --container --profile --log-level --guild-id --user-id --channel --account" -l dry-run -d 'Print payload and skip sending' +complete -c openclaw -n "__openclaw_command_path_matches message voice status -- --container --profile --log-level --guild-id --user-id --channel --account" -l verbose -d 'Verbose logging' +complete -c openclaw -n "__openclaw_command_path_matches message event -- --container --profile --log-level" -a "list" -d 'List scheduled events' +complete -c openclaw -n "__openclaw_command_path_matches message event -- --container --profile --log-level" -a "create" -d 'Create a scheduled event' +complete -c openclaw -n "__openclaw_command_path_matches message event list -- --container --profile --log-level --guild-id --channel --account" -l guild-id -d 'Guild id' +complete -c openclaw -n "__openclaw_command_path_matches message event list -- --container --profile --log-level --guild-id --channel --account" -l channel -d 'Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|feishu|nostr|msteams|mattermost|nextcloud-talk|matrix|raft|line|zalo|clickclack|zalouser|sms|synology-chat|tlon|qa-channel|qqbot|twitch' +complete -c openclaw -n "__openclaw_command_path_matches message event list -- --container --profile --log-level --guild-id --channel --account" -l account -d 'Channel account id (accountId)' +complete -c openclaw -n "__openclaw_command_path_matches message event list -- --container --profile --log-level --guild-id --channel --account" -l json -d 'Output result as JSON' +complete -c openclaw -n "__openclaw_command_path_matches message event list -- --container --profile --log-level --guild-id --channel --account" -l dry-run -d 'Print payload and skip sending' +complete -c openclaw -n "__openclaw_command_path_matches message event list -- --container --profile --log-level --guild-id --channel --account" -l verbose -d 'Verbose logging' +complete -c openclaw -n "__openclaw_command_path_matches message event create -- --container --profile --log-level --guild-id --event-name --start-time --channel --account --end-time --desc --channel-id --location --event-type --image" -l guild-id -d 'Guild id' +complete -c openclaw -n "__openclaw_command_path_matches message event create -- --container --profile --log-level --guild-id --event-name --start-time --channel --account --end-time --desc --channel-id --location --event-type --image" -l event-name -d 'Event name' +complete -c openclaw -n "__openclaw_command_path_matches message event create -- --container --profile --log-level --guild-id --event-name --start-time --channel --account --end-time --desc --channel-id --location --event-type --image" -l start-time -d 'Event start time' +complete -c openclaw -n "__openclaw_command_path_matches message event create -- --container --profile --log-level --guild-id --event-name --start-time --channel --account --end-time --desc --channel-id --location --event-type --image" -l channel -d 'Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|feishu|nostr|msteams|mattermost|nextcloud-talk|matrix|raft|line|zalo|clickclack|zalouser|sms|synology-chat|tlon|qa-channel|qqbot|twitch' +complete -c openclaw -n "__openclaw_command_path_matches message event create -- --container --profile --log-level --guild-id --event-name --start-time --channel --account --end-time --desc --channel-id --location --event-type --image" -l account -d 'Channel account id (accountId)' +complete -c openclaw -n "__openclaw_command_path_matches message event create -- --container --profile --log-level --guild-id --event-name --start-time --channel --account --end-time --desc --channel-id --location --event-type --image" -l json -d 'Output result as JSON' +complete -c openclaw -n "__openclaw_command_path_matches message event create -- --container --profile --log-level --guild-id --event-name --start-time --channel --account --end-time --desc --channel-id --location --event-type --image" -l dry-run -d 'Print payload and skip sending' +complete -c openclaw -n "__openclaw_command_path_matches message event create -- --container --profile --log-level --guild-id --event-name --start-time --channel --account --end-time --desc --channel-id --location --event-type --image" -l verbose -d 'Verbose logging' +complete -c openclaw -n "__openclaw_command_path_matches message event create -- --container --profile --log-level --guild-id --event-name --start-time --channel --account --end-time --desc --channel-id --location --event-type --image" -l end-time -d 'Event end time' +complete -c openclaw -n "__openclaw_command_path_matches message event create -- --container --profile --log-level --guild-id --event-name --start-time --channel --account --end-time --desc --channel-id --location --event-type --image" -l desc -d 'Event description' +complete -c openclaw -n "__openclaw_command_path_matches message event create -- --container --profile --log-level --guild-id --event-name --start-time --channel --account --end-time --desc --channel-id --location --event-type --image" -l channel-id -d 'Channel id' +complete -c openclaw -n "__openclaw_command_path_matches message event create -- --container --profile --log-level --guild-id --event-name --start-time --channel --account --end-time --desc --channel-id --location --event-type --image" -l location -d 'Event location' +complete -c openclaw -n "__openclaw_command_path_matches message event create -- --container --profile --log-level --guild-id --event-name --start-time --channel --account --end-time --desc --channel-id --location --event-type --image" -l event-type -d 'Event type' +complete -c openclaw -n "__openclaw_command_path_matches message event create -- --container --profile --log-level --guild-id --event-name --start-time --channel --account --end-time --desc --channel-id --location --event-type --image" -l image -d 'Cover image URL or local file path' +complete -c openclaw -n "__openclaw_command_path_matches message timeout -- --container --profile --log-level --guild-id --user-id --channel --account --duration-min --until --reason" -l guild-id -d 'Guild id' +complete -c openclaw -n "__openclaw_command_path_matches message timeout -- --container --profile --log-level --guild-id --user-id --channel --account --duration-min --until --reason" -l user-id -d 'User id' +complete -c openclaw -n "__openclaw_command_path_matches message timeout -- --container --profile --log-level --guild-id --user-id --channel --account --duration-min --until --reason" -l channel -d 'Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|feishu|nostr|msteams|mattermost|nextcloud-talk|matrix|raft|line|zalo|clickclack|zalouser|sms|synology-chat|tlon|qa-channel|qqbot|twitch' +complete -c openclaw -n "__openclaw_command_path_matches message timeout -- --container --profile --log-level --guild-id --user-id --channel --account --duration-min --until --reason" -l account -d 'Channel account id (accountId)' +complete -c openclaw -n "__openclaw_command_path_matches message timeout -- --container --profile --log-level --guild-id --user-id --channel --account --duration-min --until --reason" -l json -d 'Output result as JSON' +complete -c openclaw -n "__openclaw_command_path_matches message timeout -- --container --profile --log-level --guild-id --user-id --channel --account --duration-min --until --reason" -l dry-run -d 'Print payload and skip sending' +complete -c openclaw -n "__openclaw_command_path_matches message timeout -- --container --profile --log-level --guild-id --user-id --channel --account --duration-min --until --reason" -l verbose -d 'Verbose logging' +complete -c openclaw -n "__openclaw_command_path_matches message timeout -- --container --profile --log-level --guild-id --user-id --channel --account --duration-min --until --reason" -l duration-min -d 'Timeout duration minutes' +complete -c openclaw -n "__openclaw_command_path_matches message timeout -- --container --profile --log-level --guild-id --user-id --channel --account --duration-min --until --reason" -l until -d 'Timeout until' +complete -c openclaw -n "__openclaw_command_path_matches message timeout -- --container --profile --log-level --guild-id --user-id --channel --account --duration-min --until --reason" -l reason -d 'Moderation reason' +complete -c openclaw -n "__openclaw_command_path_matches message kick -- --container --profile --log-level --guild-id --user-id --channel --account --reason" -l guild-id -d 'Guild id' +complete -c openclaw -n "__openclaw_command_path_matches message kick -- --container --profile --log-level --guild-id --user-id --channel --account --reason" -l user-id -d 'User id' +complete -c openclaw -n "__openclaw_command_path_matches message kick -- --container --profile --log-level --guild-id --user-id --channel --account --reason" -l channel -d 'Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|feishu|nostr|msteams|mattermost|nextcloud-talk|matrix|raft|line|zalo|clickclack|zalouser|sms|synology-chat|tlon|qa-channel|qqbot|twitch' +complete -c openclaw -n "__openclaw_command_path_matches message kick -- --container --profile --log-level --guild-id --user-id --channel --account --reason" -l account -d 'Channel account id (accountId)' +complete -c openclaw -n "__openclaw_command_path_matches message kick -- --container --profile --log-level --guild-id --user-id --channel --account --reason" -l json -d 'Output result as JSON' +complete -c openclaw -n "__openclaw_command_path_matches message kick -- --container --profile --log-level --guild-id --user-id --channel --account --reason" -l dry-run -d 'Print payload and skip sending' +complete -c openclaw -n "__openclaw_command_path_matches message kick -- --container --profile --log-level --guild-id --user-id --channel --account --reason" -l verbose -d 'Verbose logging' +complete -c openclaw -n "__openclaw_command_path_matches message kick -- --container --profile --log-level --guild-id --user-id --channel --account --reason" -l reason -d 'Moderation reason' +complete -c openclaw -n "__openclaw_command_path_matches message ban -- --container --profile --log-level --guild-id --user-id --channel --account --reason --delete-days" -l guild-id -d 'Guild id' +complete -c openclaw -n "__openclaw_command_path_matches message ban -- --container --profile --log-level --guild-id --user-id --channel --account --reason --delete-days" -l user-id -d 'User id' +complete -c openclaw -n "__openclaw_command_path_matches message ban -- --container --profile --log-level --guild-id --user-id --channel --account --reason --delete-days" -l channel -d 'Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|feishu|nostr|msteams|mattermost|nextcloud-talk|matrix|raft|line|zalo|clickclack|zalouser|sms|synology-chat|tlon|qa-channel|qqbot|twitch' +complete -c openclaw -n "__openclaw_command_path_matches message ban -- --container --profile --log-level --guild-id --user-id --channel --account --reason --delete-days" -l account -d 'Channel account id (accountId)' +complete -c openclaw -n "__openclaw_command_path_matches message ban -- --container --profile --log-level --guild-id --user-id --channel --account --reason --delete-days" -l json -d 'Output result as JSON' +complete -c openclaw -n "__openclaw_command_path_matches message ban -- --container --profile --log-level --guild-id --user-id --channel --account --reason --delete-days" -l dry-run -d 'Print payload and skip sending' +complete -c openclaw -n "__openclaw_command_path_matches message ban -- --container --profile --log-level --guild-id --user-id --channel --account --reason --delete-days" -l verbose -d 'Verbose logging' +complete -c openclaw -n "__openclaw_command_path_matches message ban -- --container --profile --log-level --guild-id --user-id --channel --account --reason --delete-days" -l reason -d 'Moderation reason' +complete -c openclaw -n "__openclaw_command_path_matches message ban -- --container --profile --log-level --guild-id --user-id --channel --account --reason --delete-days" -l delete-days -d 'Ban delete message days' +complete -c openclaw -n "__openclaw_command_path_matches mcp -- --container --profile --log-level" -a "serve" -d 'Expose OpenClaw channels over MCP stdio' +complete -c openclaw -n "__openclaw_command_path_matches mcp -- --container --profile --log-level" -a "list" -d 'List OpenClaw-managed MCP servers from mcp.servers' +complete -c openclaw -n "__openclaw_command_path_matches mcp -- --container --profile --log-level" -a "show" -d 'Show one OpenClaw-managed MCP server or the full mcp.servers config' +complete -c openclaw -n "__openclaw_command_path_matches mcp -- --container --profile --log-level" -a "status" -d 'Show configured MCP server transport status without connecting' +complete -c openclaw -n "__openclaw_command_path_matches mcp -- --container --profile --log-level" -a "probe" -d 'Connect to configured MCP servers and list available capabilities' +complete -c openclaw -n "__openclaw_command_path_matches mcp -- --container --profile --log-level" -a "doctor" -d 'Check configured MCP servers for static setup problems' +complete -c openclaw -n "__openclaw_command_path_matches mcp -- --container --profile --log-level" -a "add" -d 'Add one MCP server from flags and probe it before saving' +complete -c openclaw -n "__openclaw_command_path_matches mcp -- --container --profile --log-level" -a "set" -d 'Set one OpenClaw-managed MCP server from a JSON object' +complete -c openclaw -n "__openclaw_command_path_matches mcp -- --container --profile --log-level" -a "tools" -d 'Update per-server MCP tool include/exclude filters' +complete -c openclaw -n "__openclaw_command_path_matches mcp -- --container --profile --log-level" -a "configure" -d 'Update MCP server operator controls without replacing the server' +complete -c openclaw -n "__openclaw_command_path_matches mcp -- --container --profile --log-level" -a "login" -d 'Authorize an OAuth MCP server' +complete -c openclaw -n "__openclaw_command_path_matches mcp -- --container --profile --log-level" -a "logout" -d 'Clear stored OAuth credentials for an MCP server' +complete -c openclaw -n "__openclaw_command_path_matches mcp -- --container --profile --log-level" -a "reload" -d 'Dispose cached MCP runtimes so new config is used on the next turn' +complete -c openclaw -n "__openclaw_command_path_matches mcp -- --container --profile --log-level" -a "unset" -d 'Remove one OpenClaw-managed MCP server' +complete -c openclaw -n "__openclaw_command_path_matches mcp serve -- --container --profile --log-level --url --token --token-file --password --password-file --claude-channel-mode" -l url -d 'Gateway WebSocket URL (defaults to gateway.remote.url when configured)' +complete -c openclaw -n "__openclaw_command_path_matches mcp serve -- --container --profile --log-level --url --token --token-file --password --password-file --claude-channel-mode" -l token -d 'Gateway token (if required)' +complete -c openclaw -n "__openclaw_command_path_matches mcp serve -- --container --profile --log-level --url --token --token-file --password --password-file --claude-channel-mode" -l token-file -d 'Read gateway token from file' +complete -c openclaw -n "__openclaw_command_path_matches mcp serve -- --container --profile --log-level --url --token --token-file --password --password-file --claude-channel-mode" -l password -d 'Gateway password (if required)' +complete -c openclaw -n "__openclaw_command_path_matches mcp serve -- --container --profile --log-level --url --token --token-file --password --password-file --claude-channel-mode" -l password-file -d 'Read gateway password from file' +complete -c openclaw -n "__openclaw_command_path_matches mcp serve -- --container --profile --log-level --url --token --token-file --password --password-file --claude-channel-mode" -l claude-channel-mode -d 'Claude channel notification mode: auto, on, or off' +complete -c openclaw -n "__openclaw_command_path_matches mcp serve -- --container --profile --log-level --url --token --token-file --password --password-file --claude-channel-mode" -s v -l verbose -d 'Verbose logging to stderr' +complete -c openclaw -n "__openclaw_command_path_matches mcp list -- --container --profile --log-level" -l json -d 'Print JSON' +complete -c openclaw -n "__openclaw_command_path_matches mcp show -- --container --profile --log-level" -l json -d 'Print JSON' +complete -c openclaw -n "__openclaw_command_path_matches mcp status -- --container --profile --log-level" -s v -l verbose -d 'Show transport, auth, timeout, and filter details' +complete -c openclaw -n "__openclaw_command_path_matches mcp status -- --container --profile --log-level" -l json -d 'Print JSON' +complete -c openclaw -n "__openclaw_command_path_matches mcp probe -- --container --profile --log-level" -l json -d 'Print JSON' +complete -c openclaw -n "__openclaw_command_path_matches mcp doctor -- --container --profile --log-level" -l probe -d 'Also connect to each checked server' +complete -c openclaw -n "__openclaw_command_path_matches mcp doctor -- --container --profile --log-level" -l json -d 'Print JSON' +complete -c openclaw -n "__openclaw_command_path_matches mcp add -- --container --profile --log-level --command --arg --env --cwd --url --transport --header --auth --oauth-scope --oauth-redirect-url --oauth-client-metadata-url --include --exclude --timeout --connect-timeout --ssl-verify --client-cert --client-key" -l command -d 'Stdio command to spawn' +complete -c openclaw -n "__openclaw_command_path_matches mcp add -- --container --profile --log-level --command --arg --env --cwd --url --transport --header --auth --oauth-scope --oauth-redirect-url --oauth-client-metadata-url --include --exclude --timeout --connect-timeout --ssl-verify --client-cert --client-key" -l arg -d 'Repeatable stdio argument' +complete -c openclaw -n "__openclaw_command_path_matches mcp add -- --container --profile --log-level --command --arg --env --cwd --url --transport --header --auth --oauth-scope --oauth-redirect-url --oauth-client-metadata-url --include --exclude --timeout --connect-timeout --ssl-verify --client-cert --client-key" -l env -d 'Repeatable stdio environment entry' +complete -c openclaw -n "__openclaw_command_path_matches mcp add -- --container --profile --log-level --command --arg --env --cwd --url --transport --header --auth --oauth-scope --oauth-redirect-url --oauth-client-metadata-url --include --exclude --timeout --connect-timeout --ssl-verify --client-cert --client-key" -l cwd -d 'Working directory for stdio server' +complete -c openclaw -n "__openclaw_command_path_matches mcp add -- --container --profile --log-level --command --arg --env --cwd --url --transport --header --auth --oauth-scope --oauth-redirect-url --oauth-client-metadata-url --include --exclude --timeout --connect-timeout --ssl-verify --client-cert --client-key" -l url -d 'HTTP MCP server URL' +complete -c openclaw -n "__openclaw_command_path_matches mcp add -- --container --profile --log-level --command --arg --env --cwd --url --transport --header --auth --oauth-scope --oauth-redirect-url --oauth-client-metadata-url --include --exclude --timeout --connect-timeout --ssl-verify --client-cert --client-key" -l transport -d 'HTTP transport: streamable-http or sse' +complete -c openclaw -n "__openclaw_command_path_matches mcp add -- --container --profile --log-level --command --arg --env --cwd --url --transport --header --auth --oauth-scope --oauth-redirect-url --oauth-client-metadata-url --include --exclude --timeout --connect-timeout --ssl-verify --client-cert --client-key" -l header -d 'Repeatable HTTP header' +complete -c openclaw -n "__openclaw_command_path_matches mcp add -- --container --profile --log-level --command --arg --env --cwd --url --transport --header --auth --oauth-scope --oauth-redirect-url --oauth-client-metadata-url --include --exclude --timeout --connect-timeout --ssl-verify --client-cert --client-key" -l auth -d 'HTTP auth mode: oauth' +complete -c openclaw -n "__openclaw_command_path_matches mcp add -- --container --profile --log-level --command --arg --env --cwd --url --transport --header --auth --oauth-scope --oauth-redirect-url --oauth-client-metadata-url --include --exclude --timeout --connect-timeout --ssl-verify --client-cert --client-key" -l oauth-scope -d 'OAuth scope' +complete -c openclaw -n "__openclaw_command_path_matches mcp add -- --container --profile --log-level --command --arg --env --cwd --url --transport --header --auth --oauth-scope --oauth-redirect-url --oauth-client-metadata-url --include --exclude --timeout --connect-timeout --ssl-verify --client-cert --client-key" -l oauth-redirect-url -d 'OAuth redirect URL' +complete -c openclaw -n "__openclaw_command_path_matches mcp add -- --container --profile --log-level --command --arg --env --cwd --url --transport --header --auth --oauth-scope --oauth-redirect-url --oauth-client-metadata-url --include --exclude --timeout --connect-timeout --ssl-verify --client-cert --client-key" -l oauth-client-metadata-url -d 'OAuth client metadata URL' +complete -c openclaw -n "__openclaw_command_path_matches mcp add -- --container --profile --log-level --command --arg --env --cwd --url --transport --header --auth --oauth-scope --oauth-redirect-url --oauth-client-metadata-url --include --exclude --timeout --connect-timeout --ssl-verify --client-cert --client-key" -l include -d 'Comma-separated MCP tool names or '\''*'\'' globs to expose' +complete -c openclaw -n "__openclaw_command_path_matches mcp add -- --container --profile --log-level --command --arg --env --cwd --url --transport --header --auth --oauth-scope --oauth-redirect-url --oauth-client-metadata-url --include --exclude --timeout --connect-timeout --ssl-verify --client-cert --client-key" -l exclude -d 'Comma-separated MCP tool names or '\''*'\'' globs to hide' +complete -c openclaw -n "__openclaw_command_path_matches mcp add -- --container --profile --log-level --command --arg --env --cwd --url --transport --header --auth --oauth-scope --oauth-redirect-url --oauth-client-metadata-url --include --exclude --timeout --connect-timeout --ssl-verify --client-cert --client-key" -l timeout -d 'Per-request timeout in seconds' +complete -c openclaw -n "__openclaw_command_path_matches mcp add -- --container --profile --log-level --command --arg --env --cwd --url --transport --header --auth --oauth-scope --oauth-redirect-url --oauth-client-metadata-url --include --exclude --timeout --connect-timeout --ssl-verify --client-cert --client-key" -l connect-timeout -d 'Connection timeout in seconds' +complete -c openclaw -n "__openclaw_command_path_matches mcp add -- --container --profile --log-level --command --arg --env --cwd --url --transport --header --auth --oauth-scope --oauth-redirect-url --oauth-client-metadata-url --include --exclude --timeout --connect-timeout --ssl-verify --client-cert --client-key" -l parallel -d 'Mark this server safe for concurrent tool calls' +complete -c openclaw -n "__openclaw_command_path_matches mcp add -- --container --profile --log-level --command --arg --env --cwd --url --transport --header --auth --oauth-scope --oauth-redirect-url --oauth-client-metadata-url --include --exclude --timeout --connect-timeout --ssl-verify --client-cert --client-key" -l disabled -d 'Save the server disabled' +complete -c openclaw -n "__openclaw_command_path_matches mcp add -- --container --profile --log-level --command --arg --env --cwd --url --transport --header --auth --oauth-scope --oauth-redirect-url --oauth-client-metadata-url --include --exclude --timeout --connect-timeout --ssl-verify --client-cert --client-key" -l ssl-verify -d 'Verify HTTPS certificates: true or false' +complete -c openclaw -n "__openclaw_command_path_matches mcp add -- --container --profile --log-level --command --arg --env --cwd --url --transport --header --auth --oauth-scope --oauth-redirect-url --oauth-client-metadata-url --include --exclude --timeout --connect-timeout --ssl-verify --client-cert --client-key" -l client-cert -d 'HTTP mutual TLS client certificate path' +complete -c openclaw -n "__openclaw_command_path_matches mcp add -- --container --profile --log-level --command --arg --env --cwd --url --transport --header --auth --oauth-scope --oauth-redirect-url --oauth-client-metadata-url --include --exclude --timeout --connect-timeout --ssl-verify --client-cert --client-key" -l client-key -d 'HTTP mutual TLS client key path' +complete -c openclaw -n "__openclaw_command_path_matches mcp add -- --container --profile --log-level --command --arg --env --cwd --url --transport --header --auth --oauth-scope --oauth-redirect-url --oauth-client-metadata-url --include --exclude --timeout --connect-timeout --ssl-verify --client-cert --client-key" -l no-probe -d 'Save without connecting first' +complete -c openclaw -n "__openclaw_command_path_matches mcp tools -- --container --profile --log-level --include --exclude" -l include -d 'Comma-separated MCP tool names or '\''*'\'' globs to expose' +complete -c openclaw -n "__openclaw_command_path_matches mcp tools -- --container --profile --log-level --include --exclude" -l exclude -d 'Comma-separated MCP tool names or '\''*'\'' globs to hide' +complete -c openclaw -n "__openclaw_command_path_matches mcp tools -- --container --profile --log-level --include --exclude" -l clear -d 'Clear this server'\''s MCP tool filter' +complete -c openclaw -n "__openclaw_command_path_matches mcp configure -- --container --profile --log-level --include --exclude --timeout --connect-timeout --auth --oauth-scope --oauth-redirect-url --oauth-client-metadata-url --ssl-verify --client-cert --client-key" -l enable -d 'Enable this saved server' +complete -c openclaw -n "__openclaw_command_path_matches mcp configure -- --container --profile --log-level --include --exclude --timeout --connect-timeout --auth --oauth-scope --oauth-redirect-url --oauth-client-metadata-url --ssl-verify --client-cert --client-key" -l disable -d 'Disable this saved server' +complete -c openclaw -n "__openclaw_command_path_matches mcp configure -- --container --profile --log-level --include --exclude --timeout --connect-timeout --auth --oauth-scope --oauth-redirect-url --oauth-client-metadata-url --ssl-verify --client-cert --client-key" -l include -d 'Comma-separated MCP tool names or '\''*'\'' globs to expose' +complete -c openclaw -n "__openclaw_command_path_matches mcp configure -- --container --profile --log-level --include --exclude --timeout --connect-timeout --auth --oauth-scope --oauth-redirect-url --oauth-client-metadata-url --ssl-verify --client-cert --client-key" -l exclude -d 'Comma-separated MCP tool names or '\''*'\'' globs to hide' +complete -c openclaw -n "__openclaw_command_path_matches mcp configure -- --container --profile --log-level --include --exclude --timeout --connect-timeout --auth --oauth-scope --oauth-redirect-url --oauth-client-metadata-url --ssl-verify --client-cert --client-key" -l clear-tools -d 'Clear this server'\''s MCP tool filter' +complete -c openclaw -n "__openclaw_command_path_matches mcp configure -- --container --profile --log-level --include --exclude --timeout --connect-timeout --auth --oauth-scope --oauth-redirect-url --oauth-client-metadata-url --ssl-verify --client-cert --client-key" -l timeout -d 'Per-request timeout in seconds' +complete -c openclaw -n "__openclaw_command_path_matches mcp configure -- --container --profile --log-level --include --exclude --timeout --connect-timeout --auth --oauth-scope --oauth-redirect-url --oauth-client-metadata-url --ssl-verify --client-cert --client-key" -l connect-timeout -d 'Connection timeout in seconds' +complete -c openclaw -n "__openclaw_command_path_matches mcp configure -- --container --profile --log-level --include --exclude --timeout --connect-timeout --auth --oauth-scope --oauth-redirect-url --oauth-client-metadata-url --ssl-verify --client-cert --client-key" -l clear-timeouts -d 'Clear request and connection timeout overrides' +complete -c openclaw -n "__openclaw_command_path_matches mcp configure -- --container --profile --log-level --include --exclude --timeout --connect-timeout --auth --oauth-scope --oauth-redirect-url --oauth-client-metadata-url --ssl-verify --client-cert --client-key" -l parallel -d 'Mark this server safe for concurrent tool calls' +complete -c openclaw -n "__openclaw_command_path_matches mcp configure -- --container --profile --log-level --include --exclude --timeout --connect-timeout --auth --oauth-scope --oauth-redirect-url --oauth-client-metadata-url --ssl-verify --client-cert --client-key" -l no-parallel -d 'Clear the concurrent tool-call marker' +complete -c openclaw -n "__openclaw_command_path_matches mcp configure -- --container --profile --log-level --include --exclude --timeout --connect-timeout --auth --oauth-scope --oauth-redirect-url --oauth-client-metadata-url --ssl-verify --client-cert --client-key" -l auth -d 'HTTP auth mode: oauth' +complete -c openclaw -n "__openclaw_command_path_matches mcp configure -- --container --profile --log-level --include --exclude --timeout --connect-timeout --auth --oauth-scope --oauth-redirect-url --oauth-client-metadata-url --ssl-verify --client-cert --client-key" -l clear-auth -d 'Clear auth and OAuth metadata' +complete -c openclaw -n "__openclaw_command_path_matches mcp configure -- --container --profile --log-level --include --exclude --timeout --connect-timeout --auth --oauth-scope --oauth-redirect-url --oauth-client-metadata-url --ssl-verify --client-cert --client-key" -l oauth-scope -d 'OAuth scope' +complete -c openclaw -n "__openclaw_command_path_matches mcp configure -- --container --profile --log-level --include --exclude --timeout --connect-timeout --auth --oauth-scope --oauth-redirect-url --oauth-client-metadata-url --ssl-verify --client-cert --client-key" -l oauth-redirect-url -d 'OAuth redirect URL' +complete -c openclaw -n "__openclaw_command_path_matches mcp configure -- --container --profile --log-level --include --exclude --timeout --connect-timeout --auth --oauth-scope --oauth-redirect-url --oauth-client-metadata-url --ssl-verify --client-cert --client-key" -l oauth-client-metadata-url -d 'OAuth client metadata URL' +complete -c openclaw -n "__openclaw_command_path_matches mcp configure -- --container --profile --log-level --include --exclude --timeout --connect-timeout --auth --oauth-scope --oauth-redirect-url --oauth-client-metadata-url --ssl-verify --client-cert --client-key" -l ssl-verify -d 'Verify HTTPS certificates: true or false' +complete -c openclaw -n "__openclaw_command_path_matches mcp configure -- --container --profile --log-level --include --exclude --timeout --connect-timeout --auth --oauth-scope --oauth-redirect-url --oauth-client-metadata-url --ssl-verify --client-cert --client-key" -l client-cert -d 'HTTP mutual TLS client certificate path' +complete -c openclaw -n "__openclaw_command_path_matches mcp configure -- --container --profile --log-level --include --exclude --timeout --connect-timeout --auth --oauth-scope --oauth-redirect-url --oauth-client-metadata-url --ssl-verify --client-cert --client-key" -l client-key -d 'HTTP mutual TLS client key path' +complete -c openclaw -n "__openclaw_command_path_matches mcp configure -- --container --profile --log-level --include --exclude --timeout --connect-timeout --auth --oauth-scope --oauth-redirect-url --oauth-client-metadata-url --ssl-verify --client-cert --client-key" -l clear-tls -d 'Clear TLS verification and mTLS overrides' +complete -c openclaw -n "__openclaw_command_path_matches mcp configure -- --container --profile --log-level --include --exclude --timeout --connect-timeout --auth --oauth-scope --oauth-redirect-url --oauth-client-metadata-url --ssl-verify --client-cert --client-key" -l probe -d 'Probe the updated server before saving' +complete -c openclaw -n "__openclaw_command_path_matches mcp login -- --container --profile --log-level --code" -l code -d 'Authorization code from the OAuth redirect' +complete -c openclaw -n "__openclaw_command_path_matches transcripts -- --container --profile --log-level" -a "list" -d 'List stored transcript sessions' +complete -c openclaw -n "__openclaw_command_path_matches transcripts -- --container --profile --log-level" -a "show" -d 'Print a transcript summary markdown file' +complete -c openclaw -n "__openclaw_command_path_matches transcripts -- --container --profile --log-level" -a "path" -d 'Print a stored transcripts artifact path' +complete -c openclaw -n "__openclaw_command_path_matches transcripts list -- --container --profile --log-level" -l json -d 'Print JSON' +complete -c openclaw -n "__openclaw_command_path_matches transcripts show -- --container --profile --log-level" -l json -d 'Print JSON' +complete -c openclaw -n "__openclaw_command_path_matches transcripts path -- --container --profile --log-level" -l dir -d 'Print the session directory' +complete -c openclaw -n "__openclaw_command_path_matches transcripts path -- --container --profile --log-level" -l metadata -d 'Print metadata.json' +complete -c openclaw -n "__openclaw_command_path_matches transcripts path -- --container --profile --log-level" -l transcript -d 'Print transcript.jsonl' +complete -c openclaw -n "__openclaw_command_path_matches transcripts path -- --container --profile --log-level" -l json -d 'Print JSON' +complete -c openclaw -n "__openclaw_command_path_matches agent -- --container --profile --log-level -m --message --message-file -t --to --session-key --session-id --agent --model --thinking --verbose --channel --reply-to --reply-channel --reply-account --timeout" -s m -l message -d 'Message body for the agent' +complete -c openclaw -n "__openclaw_command_path_matches agent -- --container --profile --log-level -m --message --message-file -t --to --session-key --session-id --agent --model --thinking --verbose --channel --reply-to --reply-channel --reply-account --timeout" -l message-file -d 'Read the agent message body from a UTF-8 file' +complete -c openclaw -n "__openclaw_command_path_matches agent -- --container --profile --log-level -m --message --message-file -t --to --session-key --session-id --agent --model --thinking --verbose --channel --reply-to --reply-channel --reply-account --timeout" -s t -l to -d 'Recipient number in E.164 used to derive the session key' +complete -c openclaw -n "__openclaw_command_path_matches agent -- --container --profile --log-level -m --message --message-file -t --to --session-key --session-id --agent --model --thinking --verbose --channel --reply-to --reply-channel --reply-account --timeout" -l session-key -d 'Explicit session key (agent::, or scoped to --agent)' +complete -c openclaw -n "__openclaw_command_path_matches agent -- --container --profile --log-level -m --message --message-file -t --to --session-key --session-id --agent --model --thinking --verbose --channel --reply-to --reply-channel --reply-account --timeout" -l session-id -d 'Use an explicit session id' +complete -c openclaw -n "__openclaw_command_path_matches agent -- --container --profile --log-level -m --message --message-file -t --to --session-key --session-id --agent --model --thinking --verbose --channel --reply-to --reply-channel --reply-account --timeout" -l agent -d 'Agent id (overrides routing bindings)' +complete -c openclaw -n "__openclaw_command_path_matches agent -- --container --profile --log-level -m --message --message-file -t --to --session-key --session-id --agent --model --thinking --verbose --channel --reply-to --reply-channel --reply-account --timeout" -l model -d 'Model override for this run (provider/model or model id)' +complete -c openclaw -n "__openclaw_command_path_matches agent -- --container --profile --log-level -m --message --message-file -t --to --session-key --session-id --agent --model --thinking --verbose --channel --reply-to --reply-channel --reply-account --timeout" -l thinking -d 'Thinking level: off | minimal | low | medium | high | xhigh | adaptive | max where supported' +complete -c openclaw -n "__openclaw_command_path_matches agent -- --container --profile --log-level -m --message --message-file -t --to --session-key --session-id --agent --model --thinking --verbose --channel --reply-to --reply-channel --reply-account --timeout" -l verbose -d 'Persist agent verbose level for the session' +complete -c openclaw -n "__openclaw_command_path_matches agent -- --container --profile --log-level -m --message --message-file -t --to --session-key --session-id --agent --model --thinking --verbose --channel --reply-to --reply-channel --reply-account --timeout" -l channel -d 'Delivery channel: last|telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|feishu|nostr|msteams|mattermost|nextcloud-talk|matrix|raft|line|zalo|clickclack|zalouser|sms|synology-chat|tlon|qa-channel|qqbot|twitch (omit to use the main session channel)' +complete -c openclaw -n "__openclaw_command_path_matches agent -- --container --profile --log-level -m --message --message-file -t --to --session-key --session-id --agent --model --thinking --verbose --channel --reply-to --reply-channel --reply-account --timeout" -l reply-to -d 'Delivery target override (separate from session routing)' +complete -c openclaw -n "__openclaw_command_path_matches agent -- --container --profile --log-level -m --message --message-file -t --to --session-key --session-id --agent --model --thinking --verbose --channel --reply-to --reply-channel --reply-account --timeout" -l reply-channel -d 'Delivery channel override (separate from routing)' +complete -c openclaw -n "__openclaw_command_path_matches agent -- --container --profile --log-level -m --message --message-file -t --to --session-key --session-id --agent --model --thinking --verbose --channel --reply-to --reply-channel --reply-account --timeout" -l reply-account -d 'Delivery account id override' +complete -c openclaw -n "__openclaw_command_path_matches agent -- --container --profile --log-level -m --message --message-file -t --to --session-key --session-id --agent --model --thinking --verbose --channel --reply-to --reply-channel --reply-account --timeout" -l local -d 'Run the embedded agent locally (requires model provider API keys in your shell)' +complete -c openclaw -n "__openclaw_command_path_matches agent -- --container --profile --log-level -m --message --message-file -t --to --session-key --session-id --agent --model --thinking --verbose --channel --reply-to --reply-channel --reply-account --timeout" -l deliver -d 'Send the agent'\''s reply back to the selected channel' +complete -c openclaw -n "__openclaw_command_path_matches agent -- --container --profile --log-level -m --message --message-file -t --to --session-key --session-id --agent --model --thinking --verbose --channel --reply-to --reply-channel --reply-account --timeout" -l json -d 'Output result as JSON' +complete -c openclaw -n "__openclaw_command_path_matches agent -- --container --profile --log-level -m --message --message-file -t --to --session-key --session-id --agent --model --thinking --verbose --channel --reply-to --reply-channel --reply-account --timeout" -l timeout -d 'Override agent command timeout (seconds, default 600 or config value)' +complete -c openclaw -n "__openclaw_command_path_matches agents -- --container --profile --log-level" -a "list" -d 'List configured agents' +complete -c openclaw -n "__openclaw_command_path_matches agents -- --container --profile --log-level" -a "bindings" -d 'List routing bindings' +complete -c openclaw -n "__openclaw_command_path_matches agents -- --container --profile --log-level" -a "bind" -d 'Add routing bindings for an agent' +complete -c openclaw -n "__openclaw_command_path_matches agents -- --container --profile --log-level" -a "unbind" -d 'Remove routing bindings for an agent' +complete -c openclaw -n "__openclaw_command_path_matches agents -- --container --profile --log-level" -a "add" -d 'Add a new isolated agent' +complete -c openclaw -n "__openclaw_command_path_matches agents -- --container --profile --log-level" -a "set-identity" -d 'Update an agent identity (name/theme/emoji/avatar)' +complete -c openclaw -n "__openclaw_command_path_matches agents -- --container --profile --log-level" -a "delete" -d 'Delete an agent and prune workspace/state' +complete -c openclaw -n "__openclaw_command_path_matches agents list -- --container --profile --log-level" -l json -d 'Output JSON instead of text' +complete -c openclaw -n "__openclaw_command_path_matches agents list -- --container --profile --log-level" -l bindings -d 'Include routing bindings' +complete -c openclaw -n "__openclaw_command_path_matches agents bindings -- --container --profile --log-level --agent" -l agent -d 'Filter by agent id' +complete -c openclaw -n "__openclaw_command_path_matches agents bindings -- --container --profile --log-level --agent" -l json -d 'Output JSON instead of text' +complete -c openclaw -n "__openclaw_command_path_matches agents bind -- --container --profile --log-level --agent --bind" -l agent -d 'Agent id (defaults to current default agent)' +complete -c openclaw -n "__openclaw_command_path_matches agents bind -- --container --profile --log-level --agent --bind" -l bind -d 'Binding to add (repeatable). If omitted, accountId is resolved by channel defaults/hooks.' +complete -c openclaw -n "__openclaw_command_path_matches agents bind -- --container --profile --log-level --agent --bind" -l json -d 'Output JSON summary' +complete -c openclaw -n "__openclaw_command_path_matches agents unbind -- --container --profile --log-level --agent --bind" -l agent -d 'Agent id (defaults to current default agent)' +complete -c openclaw -n "__openclaw_command_path_matches agents unbind -- --container --profile --log-level --agent --bind" -l bind -d 'Binding to remove (repeatable)' +complete -c openclaw -n "__openclaw_command_path_matches agents unbind -- --container --profile --log-level --agent --bind" -l all -d 'Remove all bindings for this agent' +complete -c openclaw -n "__openclaw_command_path_matches agents unbind -- --container --profile --log-level --agent --bind" -l json -d 'Output JSON summary' +complete -c openclaw -n "__openclaw_command_path_matches agents add -- --container --profile --log-level --workspace --model --agent-dir --bind" -l workspace -d 'Workspace directory for the new agent' +complete -c openclaw -n "__openclaw_command_path_matches agents add -- --container --profile --log-level --workspace --model --agent-dir --bind" -l model -d 'Model id for this agent' +complete -c openclaw -n "__openclaw_command_path_matches agents add -- --container --profile --log-level --workspace --model --agent-dir --bind" -l agent-dir -d 'Agent state directory for this agent' +complete -c openclaw -n "__openclaw_command_path_matches agents add -- --container --profile --log-level --workspace --model --agent-dir --bind" -l bind -d 'Route channel binding (repeatable)' +complete -c openclaw -n "__openclaw_command_path_matches agents add -- --container --profile --log-level --workspace --model --agent-dir --bind" -l non-interactive -d 'Disable prompts; requires --workspace' +complete -c openclaw -n "__openclaw_command_path_matches agents add -- --container --profile --log-level --workspace --model --agent-dir --bind" -l json -d 'Output JSON summary' +complete -c openclaw -n "__openclaw_command_path_matches agents set-identity -- --container --profile --log-level --agent --workspace --identity-file --name --theme --emoji --avatar" -l agent -d 'Agent id to update' +complete -c openclaw -n "__openclaw_command_path_matches agents set-identity -- --container --profile --log-level --agent --workspace --identity-file --name --theme --emoji --avatar" -l workspace -d 'Workspace directory used to locate the agent + IDENTITY.md' +complete -c openclaw -n "__openclaw_command_path_matches agents set-identity -- --container --profile --log-level --agent --workspace --identity-file --name --theme --emoji --avatar" -l identity-file -d 'Explicit IDENTITY.md path to read' +complete -c openclaw -n "__openclaw_command_path_matches agents set-identity -- --container --profile --log-level --agent --workspace --identity-file --name --theme --emoji --avatar" -l from-identity -d 'Read values from IDENTITY.md' +complete -c openclaw -n "__openclaw_command_path_matches agents set-identity -- --container --profile --log-level --agent --workspace --identity-file --name --theme --emoji --avatar" -l name -d 'Identity name' +complete -c openclaw -n "__openclaw_command_path_matches agents set-identity -- --container --profile --log-level --agent --workspace --identity-file --name --theme --emoji --avatar" -l theme -d 'Identity theme' +complete -c openclaw -n "__openclaw_command_path_matches agents set-identity -- --container --profile --log-level --agent --workspace --identity-file --name --theme --emoji --avatar" -l emoji -d 'Identity emoji' +complete -c openclaw -n "__openclaw_command_path_matches agents set-identity -- --container --profile --log-level --agent --workspace --identity-file --name --theme --emoji --avatar" -l avatar -d 'Identity avatar (workspace path, http(s) URL, or data URI)' +complete -c openclaw -n "__openclaw_command_path_matches agents set-identity -- --container --profile --log-level --agent --workspace --identity-file --name --theme --emoji --avatar" -l json -d 'Output JSON summary' +complete -c openclaw -n "__openclaw_command_path_matches agents delete -- --container --profile --log-level" -l force -d 'Skip confirmation' +complete -c openclaw -n "__openclaw_command_path_matches agents delete -- --container --profile --log-level" -l json -d 'Output JSON summary' +complete -c openclaw -n "__openclaw_command_path_matches status -- --container --profile --log-level --timeout" -l json -d 'Output JSON instead of text' +complete -c openclaw -n "__openclaw_command_path_matches status -- --container --profile --log-level --timeout" -l all -d 'Full diagnosis (read-only, pasteable)' +complete -c openclaw -n "__openclaw_command_path_matches status -- --container --profile --log-level --timeout" -l usage -d 'Show model provider usage/quota snapshots' +complete -c openclaw -n "__openclaw_command_path_matches status -- --container --profile --log-level --timeout" -l deep -d 'Probe channels (WhatsApp Web + Telegram + Discord + Slack + Signal)' +complete -c openclaw -n "__openclaw_command_path_matches status -- --container --profile --log-level --timeout" -l timeout -d 'Probe timeout in milliseconds' +complete -c openclaw -n "__openclaw_command_path_matches status -- --container --profile --log-level --timeout" -l verbose -d 'Verbose logging' +complete -c openclaw -n "__openclaw_command_path_matches status -- --container --profile --log-level --timeout" -l debug -d 'Alias for --verbose' +complete -c openclaw -n "__openclaw_command_path_matches health -- --container --profile --log-level --timeout" -l json -d 'Output JSON instead of text' +complete -c openclaw -n "__openclaw_command_path_matches health -- --container --profile --log-level --timeout" -l timeout -d 'Connection timeout in milliseconds' +complete -c openclaw -n "__openclaw_command_path_matches health -- --container --profile --log-level --timeout" -l verbose -d 'Verbose logging' +complete -c openclaw -n "__openclaw_command_path_matches health -- --container --profile --log-level --timeout" -l debug -d 'Alias for --verbose' +complete -c openclaw -n "__openclaw_command_path_matches sessions -- --container --profile --log-level --store --agent --active --limit" -a "list" -d 'List stored conversation sessions' +complete -c openclaw -n "__openclaw_command_path_matches sessions -- --container --profile --log-level --store --agent --active --limit" -a "cleanup" -d 'Run session-store maintenance now' +complete -c openclaw -n "__openclaw_command_path_matches sessions -- --container --profile --log-level --store --agent --active --limit" -a "tail" -d 'Tail human-readable session trajectory progress' +complete -c openclaw -n "__openclaw_command_path_matches sessions -- --container --profile --log-level --store --agent --active --limit" -a "export-trajectory" -d 'Export a redacted trajectory bundle for a stored session' +complete -c openclaw -n "__openclaw_command_path_matches sessions -- --container --profile --log-level --store --agent --active --limit" -a "compact" -d 'Compact a stored session transcript via the running gateway' +complete -c openclaw -n "__openclaw_command_path_matches sessions -- --container --profile --log-level --store --agent --active --limit" -l json -d 'Output as JSON' +complete -c openclaw -n "__openclaw_command_path_matches sessions -- --container --profile --log-level --store --agent --active --limit" -l verbose -d 'Verbose logging' +complete -c openclaw -n "__openclaw_command_path_matches sessions -- --container --profile --log-level --store --agent --active --limit" -l store -d 'Path to session store (default: resolved from config)' +complete -c openclaw -n "__openclaw_command_path_matches sessions -- --container --profile --log-level --store --agent --active --limit" -l agent -d 'Agent id to inspect (default: configured default agent)' +complete -c openclaw -n "__openclaw_command_path_matches sessions -- --container --profile --log-level --store --agent --active --limit" -l all-agents -d 'Aggregate sessions across all configured agents' +complete -c openclaw -n "__openclaw_command_path_matches sessions -- --container --profile --log-level --store --agent --active --limit" -l active -d 'Only show sessions updated within the past N minutes' +complete -c openclaw -n "__openclaw_command_path_matches sessions -- --container --profile --log-level --store --agent --active --limit" -l limit -d 'Max sessions to show (default: 100; use "all" for full output)' +complete -c openclaw -n "__openclaw_command_path_matches sessions list -- --container --profile --log-level --store --agent --active --limit" -l json -d 'Output as JSON' +complete -c openclaw -n "__openclaw_command_path_matches sessions list -- --container --profile --log-level --store --agent --active --limit" -l verbose -d 'Verbose logging' +complete -c openclaw -n "__openclaw_command_path_matches sessions list -- --container --profile --log-level --store --agent --active --limit" -l store -d 'Path to session store (default: resolved from config)' +complete -c openclaw -n "__openclaw_command_path_matches sessions list -- --container --profile --log-level --store --agent --active --limit" -l agent -d 'Agent id to inspect (default: configured default agent)' +complete -c openclaw -n "__openclaw_command_path_matches sessions list -- --container --profile --log-level --store --agent --active --limit" -l all-agents -d 'Aggregate sessions across all configured agents' +complete -c openclaw -n "__openclaw_command_path_matches sessions list -- --container --profile --log-level --store --agent --active --limit" -l active -d 'Only show sessions updated within the past N minutes' +complete -c openclaw -n "__openclaw_command_path_matches sessions list -- --container --profile --log-level --store --agent --active --limit" -l limit -d 'Max sessions to show (default: 100; use "all" for full output)' +complete -c openclaw -n "__openclaw_command_path_matches sessions cleanup -- --container --profile --log-level --store --agent --active --limit --active-key" -l store -d 'Path to session store (default: resolved from config)' +complete -c openclaw -n "__openclaw_command_path_matches sessions cleanup -- --container --profile --log-level --store --agent --active --limit --active-key" -l agent -d 'Agent id to maintain (default: configured default agent)' +complete -c openclaw -n "__openclaw_command_path_matches sessions cleanup -- --container --profile --log-level --store --agent --active --limit --active-key" -l all-agents -d 'Run maintenance across all configured agents' +complete -c openclaw -n "__openclaw_command_path_matches sessions cleanup -- --container --profile --log-level --store --agent --active --limit --active-key" -l dry-run -d 'Preview maintenance actions without writing' +complete -c openclaw -n "__openclaw_command_path_matches sessions cleanup -- --container --profile --log-level --store --agent --active --limit --active-key" -l enforce -d 'Apply maintenance even when configured mode is warn' +complete -c openclaw -n "__openclaw_command_path_matches sessions cleanup -- --container --profile --log-level --store --agent --active --limit --active-key" -l fix-missing -d 'Remove store entries whose transcript files are missing (bypasses age/count retention)' +complete -c openclaw -n "__openclaw_command_path_matches sessions cleanup -- --container --profile --log-level --store --agent --active --limit --active-key" -l fix-dm-scope -d 'Retire stale direct-DM session rows that no longer match session.dmScope=main' +complete -c openclaw -n "__openclaw_command_path_matches sessions cleanup -- --container --profile --log-level --store --agent --active --limit --active-key" -l active-key -d 'Protect this session key from budget-eviction' +complete -c openclaw -n "__openclaw_command_path_matches sessions cleanup -- --container --profile --log-level --store --agent --active --limit --active-key" -l json -d 'Output JSON' +complete -c openclaw -n "__openclaw_command_path_matches sessions tail -- --container --profile --log-level --store --agent --active --limit --session-key --tail" -l session-key -d 'Session key to tail (default: active sessions or latest)' +complete -c openclaw -n "__openclaw_command_path_matches sessions tail -- --container --profile --log-level --store --agent --active --limit --session-key --tail" -l tail -d 'Number of existing trajectory events to show' +complete -c openclaw -n "__openclaw_command_path_matches sessions tail -- --container --profile --log-level --store --agent --active --limit --session-key --tail" -l follow -d 'Continue following for new trajectory events' +complete -c openclaw -n "__openclaw_command_path_matches sessions tail -- --container --profile --log-level --store --agent --active --limit --session-key --tail" -l store -d 'Path to session store (default: resolved from config)' +complete -c openclaw -n "__openclaw_command_path_matches sessions tail -- --container --profile --log-level --store --agent --active --limit --session-key --tail" -l agent -d 'Agent id to inspect (default: configured default agent)' +complete -c openclaw -n "__openclaw_command_path_matches sessions tail -- --container --profile --log-level --store --agent --active --limit --session-key --tail" -l all-agents -d 'Aggregate sessions across all configured agents' +complete -c openclaw -n "__openclaw_command_path_matches sessions export-trajectory -- --container --profile --log-level --store --agent --active --limit --session-key --output --workspace --request-json-base64" -l session-key -d 'Session key to export' +complete -c openclaw -n "__openclaw_command_path_matches sessions export-trajectory -- --container --profile --log-level --store --agent --active --limit --session-key --output --workspace --request-json-base64" -l output -d 'Output directory name inside .openclaw/trajectory-exports' +complete -c openclaw -n "__openclaw_command_path_matches sessions export-trajectory -- --container --profile --log-level --store --agent --active --limit --session-key --output --workspace --request-json-base64" -l workspace -d 'Workspace root for the export (default: current directory)' +complete -c openclaw -n "__openclaw_command_path_matches sessions export-trajectory -- --container --profile --log-level --store --agent --active --limit --session-key --output --workspace --request-json-base64" -l store -d 'Path to session store (default: resolved from config)' +complete -c openclaw -n "__openclaw_command_path_matches sessions export-trajectory -- --container --profile --log-level --store --agent --active --limit --session-key --output --workspace --request-json-base64" -l agent -d 'Agent id for resolving the default session store' +complete -c openclaw -n "__openclaw_command_path_matches sessions export-trajectory -- --container --profile --log-level --store --agent --active --limit --session-key --output --workspace --request-json-base64" -l request-json-base64 -d 'Base64url-encoded export request' +complete -c openclaw -n "__openclaw_command_path_matches sessions export-trajectory -- --container --profile --log-level --store --agent --active --limit --session-key --output --workspace --request-json-base64" -l json -d 'Output JSON' +complete -c openclaw -n "__openclaw_command_path_matches sessions compact -- --container --profile --log-level --store --agent --active --limit --max-lines --url --token --password --timeout" -l agent -d 'Agent id that owns the session (required for global keys)' +complete -c openclaw -n "__openclaw_command_path_matches sessions compact -- --container --profile --log-level --store --agent --active --limit --max-lines --url --token --password --timeout" -l max-lines -d 'Truncate to the last N transcript lines instead of LLM summarization' +complete -c openclaw -n "__openclaw_command_path_matches sessions compact -- --container --profile --log-level --store --agent --active --limit --max-lines --url --token --password --timeout" -l url -d 'Gateway WebSocket URL (defaults to gateway.remote.url when configured)' +complete -c openclaw -n "__openclaw_command_path_matches sessions compact -- --container --profile --log-level --store --agent --active --limit --max-lines --url --token --password --timeout" -l token -d 'Gateway token (if required)' +complete -c openclaw -n "__openclaw_command_path_matches sessions compact -- --container --profile --log-level --store --agent --active --limit --max-lines --url --token --password --timeout" -l password -d 'Gateway password (password auth)' +complete -c openclaw -n "__openclaw_command_path_matches sessions compact -- --container --profile --log-level --store --agent --active --limit --max-lines --url --token --password --timeout" -l timeout -d 'RPC timeout in milliseconds (summarization can be slow)' +complete -c openclaw -n "__openclaw_command_path_matches sessions compact -- --container --profile --log-level --store --agent --active --limit --max-lines --url --token --password --timeout" -l json -d 'Output JSON' +complete -c openclaw -n "__openclaw_command_path_matches commitments -- --container --profile --log-level --agent --status" -a "list" -d 'List inferred follow-up commitments' +complete -c openclaw -n "__openclaw_command_path_matches commitments -- --container --profile --log-level --agent --status" -a "dismiss" -d 'Dismiss inferred follow-up commitments' +complete -c openclaw -n "__openclaw_command_path_matches commitments -- --container --profile --log-level --agent --status" -l json -d 'Output JSON instead of text' +complete -c openclaw -n "__openclaw_command_path_matches commitments -- --container --profile --log-level --agent --status" -l agent -d 'Agent id to inspect' +complete -c openclaw -n "__openclaw_command_path_matches commitments -- --container --profile --log-level --agent --status" -l status -d 'Filter by status (pending, sent, dismissed, snoozed, expired)' +complete -c openclaw -n "__openclaw_command_path_matches commitments -- --container --profile --log-level --agent --status" -l all -d 'Show all statuses' +complete -c openclaw -n "__openclaw_command_path_matches commitments list -- --container --profile --log-level --agent --status" -l json -d 'Output JSON instead of text' +complete -c openclaw -n "__openclaw_command_path_matches commitments list -- --container --profile --log-level --agent --status" -l agent -d 'Agent id to inspect' +complete -c openclaw -n "__openclaw_command_path_matches commitments list -- --container --profile --log-level --agent --status" -l status -d 'Filter by status (pending, sent, dismissed, snoozed, expired)' +complete -c openclaw -n "__openclaw_command_path_matches commitments list -- --container --profile --log-level --agent --status" -l all -d 'Show all statuses' +complete -c openclaw -n "__openclaw_command_path_matches commitments dismiss -- --container --profile --log-level --agent --status" -l json -d 'Output JSON instead of text' +complete -c openclaw -n "__openclaw_command_path_matches tasks -- --container --profile --log-level --runtime --status" -a "list" -d 'List tracked background tasks' +complete -c openclaw -n "__openclaw_command_path_matches tasks -- --container --profile --log-level --runtime --status" -a "audit" -d 'Show stale or broken background tasks and TaskFlows' +complete -c openclaw -n "__openclaw_command_path_matches tasks -- --container --profile --log-level --runtime --status" -a "maintenance" -d 'Preview or apply tasks and TaskFlow maintenance' +complete -c openclaw -n "__openclaw_command_path_matches tasks -- --container --profile --log-level --runtime --status" -a "show" -d 'Show one background task by task id, run id, or session key' +complete -c openclaw -n "__openclaw_command_path_matches tasks -- --container --profile --log-level --runtime --status" -a "notify" -d 'Set task notify policy' +complete -c openclaw -n "__openclaw_command_path_matches tasks -- --container --profile --log-level --runtime --status" -a "cancel" -d 'Cancel a running background task' +complete -c openclaw -n "__openclaw_command_path_matches tasks -- --container --profile --log-level --runtime --status" -a "flow" -d 'Inspect durable TaskFlow state under tasks' +complete -c openclaw -n "__openclaw_command_path_matches tasks -- --container --profile --log-level --runtime --status" -l json -d 'Output as JSON' +complete -c openclaw -n "__openclaw_command_path_matches tasks -- --container --profile --log-level --runtime --status" -l runtime -d 'Filter by kind (subagent, acp, cron, cli)' +complete -c openclaw -n "__openclaw_command_path_matches tasks -- --container --profile --log-level --runtime --status" -l status -d 'Filter by status (queued, running, succeeded, failed, timed_out, cancelled, lost)' +complete -c openclaw -n "__openclaw_command_path_matches tasks list -- --container --profile --log-level --runtime --status" -l json -d 'Output as JSON' +complete -c openclaw -n "__openclaw_command_path_matches tasks list -- --container --profile --log-level --runtime --status" -l runtime -d 'Filter by kind (subagent, acp, cron, cli)' +complete -c openclaw -n "__openclaw_command_path_matches tasks list -- --container --profile --log-level --runtime --status" -l status -d 'Filter by status (queued, running, succeeded, failed, timed_out, cancelled, lost)' +complete -c openclaw -n "__openclaw_command_path_matches tasks audit -- --container --profile --log-level --runtime --status --severity --code --limit" -l json -d 'Output as JSON' +complete -c openclaw -n "__openclaw_command_path_matches tasks audit -- --container --profile --log-level --runtime --status --severity --code --limit" -l severity -d 'Filter by severity (warn, error)' +complete -c openclaw -n "__openclaw_command_path_matches tasks audit -- --container --profile --log-level --runtime --status --severity --code --limit" -l code -d 'Filter by finding code (stale_queued, stale_running, lost, delivery_failed, missing_cleanup, inconsistent_timestamps, restore_failed, stale_waiting, stale_blocked, cancel_stuck, missing_linked_tasks, blocked_task_missing)' +complete -c openclaw -n "__openclaw_command_path_matches tasks audit -- --container --profile --log-level --runtime --status --severity --code --limit" -l limit -d 'Limit displayed findings' +complete -c openclaw -n "__openclaw_command_path_matches tasks maintenance -- --container --profile --log-level --runtime --status" -l json -d 'Output as JSON' +complete -c openclaw -n "__openclaw_command_path_matches tasks maintenance -- --container --profile --log-level --runtime --status" -l apply -d 'Apply reconciliation, cleanup stamping, and pruning' +complete -c openclaw -n "__openclaw_command_path_matches tasks show -- --container --profile --log-level --runtime --status" -l json -d 'Output as JSON' +complete -c openclaw -n "__openclaw_command_path_matches tasks flow -- --container --profile --log-level --runtime --status" -a "list" -d 'List tracked TaskFlows' +complete -c openclaw -n "__openclaw_command_path_matches tasks flow -- --container --profile --log-level --runtime --status" -a "show" -d 'Show one TaskFlow by flow id or owner key' +complete -c openclaw -n "__openclaw_command_path_matches tasks flow -- --container --profile --log-level --runtime --status" -a "cancel" -d 'Cancel a running TaskFlow' +complete -c openclaw -n "__openclaw_command_path_matches tasks flow list -- --container --profile --log-level --runtime --status" -l json -d 'Output as JSON' +complete -c openclaw -n "__openclaw_command_path_matches tasks flow list -- --container --profile --log-level --runtime --status" -l status -d 'Filter by status (queued, running, waiting, blocked, succeeded, failed, cancelled, lost)' +complete -c openclaw -n "__openclaw_command_path_matches tasks flow show -- --container --profile --log-level --runtime --status" -l json -d 'Output as JSON' +complete -c openclaw -n "__openclaw_command_path_matches acp -- --container --profile --log-level --url --token --token-file --password --password-file --session --session-label --provenance" -a "client" -d 'Run an interactive ACP client against the local ACP bridge' +complete -c openclaw -n "__openclaw_command_path_matches acp -- --container --profile --log-level --url --token --token-file --password --password-file --session --session-label --provenance" -l url -d 'Gateway WebSocket URL (defaults to gateway.remote.url when configured)' +complete -c openclaw -n "__openclaw_command_path_matches acp -- --container --profile --log-level --url --token --token-file --password --password-file --session --session-label --provenance" -l token -d 'Gateway token (if required)' +complete -c openclaw -n "__openclaw_command_path_matches acp -- --container --profile --log-level --url --token --token-file --password --password-file --session --session-label --provenance" -l token-file -d 'Read gateway token from file' +complete -c openclaw -n "__openclaw_command_path_matches acp -- --container --profile --log-level --url --token --token-file --password --password-file --session --session-label --provenance" -l password -d 'Gateway password (if required)' +complete -c openclaw -n "__openclaw_command_path_matches acp -- --container --profile --log-level --url --token --token-file --password --password-file --session --session-label --provenance" -l password-file -d 'Read gateway password from file' +complete -c openclaw -n "__openclaw_command_path_matches acp -- --container --profile --log-level --url --token --token-file --password --password-file --session --session-label --provenance" -l session -d 'Default session key (e.g. agent:main:main)' +complete -c openclaw -n "__openclaw_command_path_matches acp -- --container --profile --log-level --url --token --token-file --password --password-file --session --session-label --provenance" -l session-label -d 'Default session label to resolve' +complete -c openclaw -n "__openclaw_command_path_matches acp -- --container --profile --log-level --url --token --token-file --password --password-file --session --session-label --provenance" -l require-existing -d 'Fail if the session key/label does not exist' +complete -c openclaw -n "__openclaw_command_path_matches acp -- --container --profile --log-level --url --token --token-file --password --password-file --session --session-label --provenance" -l reset-session -d 'Reset the session key before first use' +complete -c openclaw -n "__openclaw_command_path_matches acp -- --container --profile --log-level --url --token --token-file --password --password-file --session --session-label --provenance" -l no-prefix-cwd -d 'Do not prefix prompts with the working directory' +complete -c openclaw -n "__openclaw_command_path_matches acp -- --container --profile --log-level --url --token --token-file --password --password-file --session --session-label --provenance" -l provenance -d 'ACP provenance mode: off, meta, or meta+receipt' +complete -c openclaw -n "__openclaw_command_path_matches acp -- --container --profile --log-level --url --token --token-file --password --password-file --session --session-label --provenance" -s v -l verbose -d 'Verbose logging to stderr' +complete -c openclaw -n "__openclaw_command_path_matches acp client -- --container --profile --log-level --url --token --token-file --password --password-file --session --session-label --provenance --cwd --server --server-args" -l cwd -d 'Working directory for the ACP session' +complete -c openclaw -n "__openclaw_command_path_matches acp client -- --container --profile --log-level --url --token --token-file --password --password-file --session --session-label --provenance --cwd --server --server-args" -l server -d 'ACP server command (default: openclaw)' +complete -c openclaw -n "__openclaw_command_path_matches acp client -- --container --profile --log-level --url --token --token-file --password --password-file --session --session-label --provenance --cwd --server --server-args" -l server-args -d 'Extra arguments for the ACP server' +complete -c openclaw -n "__openclaw_command_path_matches acp client -- --container --profile --log-level --url --token --token-file --password --password-file --session --session-label --provenance --cwd --server --server-args" -l server-verbose -d 'Enable verbose logging on the ACP server' +complete -c openclaw -n "__openclaw_command_path_matches acp client -- --container --profile --log-level --url --token --token-file --password --password-file --session --session-label --provenance --cwd --server --server-args" -s v -l verbose -d 'Verbose client logging' +complete -c openclaw -n "__openclaw_command_path_matches gateway -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path" -a "run" -d 'Run the WebSocket Gateway (foreground)' +complete -c openclaw -n "__openclaw_command_path_matches gateway -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path" -a "status" -d 'Show gateway service status + probe connectivity/capability' +complete -c openclaw -n "__openclaw_command_path_matches gateway -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path" -a "install" -d 'Install the Gateway service (launchd/systemd/schtasks)' +complete -c openclaw -n "__openclaw_command_path_matches gateway -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path" -a "uninstall" -d 'Uninstall the Gateway service (launchd/systemd/schtasks)' +complete -c openclaw -n "__openclaw_command_path_matches gateway -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path" -a "start" -d 'Start the Gateway service (launchd/systemd/schtasks)' +complete -c openclaw -n "__openclaw_command_path_matches gateway -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path" -a "stop" -d 'Stop the Gateway service (launchd/systemd/schtasks)' +complete -c openclaw -n "__openclaw_command_path_matches gateway -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path" -a "restart" -d 'Restart the Gateway service (launchd/systemd/schtasks)' +complete -c openclaw -n "__openclaw_command_path_matches gateway -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path" -a "call" -d 'Call a Gateway method' +complete -c openclaw -n "__openclaw_command_path_matches gateway -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path" -a "usage-cost" -d 'Fetch usage cost summary from session logs' +complete -c openclaw -n "__openclaw_command_path_matches gateway -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path" -a "health" -d 'Fetch Gateway health' +complete -c openclaw -n "__openclaw_command_path_matches gateway -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path" -a "stability" -d 'Fetch payload-free Gateway stability diagnostics' +complete -c openclaw -n "__openclaw_command_path_matches gateway -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path" -a "diagnostics" -d 'Export local support diagnostics' +complete -c openclaw -n "__openclaw_command_path_matches gateway -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path" -a "probe" -d 'Show gateway reachability, auth capability, and read-probe summary (local + remote)' +complete -c openclaw -n "__openclaw_command_path_matches gateway -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path" -a "discover" -d 'Discover gateways via Bonjour (local + wide-area if configured)' +complete -c openclaw -n "__openclaw_command_path_matches gateway -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path" -l port -d 'Port for the gateway WebSocket' +complete -c openclaw -n "__openclaw_command_path_matches gateway -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path" -l bind -d 'Bind mode ("loopback"|"lan"|"tailnet"|"auto"|"custom"). Defaults to config gateway.bind (or loopback).' +complete -c openclaw -n "__openclaw_command_path_matches gateway -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path" -l token -d 'Shared token required in connect.params.auth.token (default: OPENCLAW_GATEWAY_TOKEN env if set)' +complete -c openclaw -n "__openclaw_command_path_matches gateway -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path" -l auth -d 'Gateway auth mode ("none"|"token"|"password"|"trusted-proxy")' +complete -c openclaw -n "__openclaw_command_path_matches gateway -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path" -l password -d 'Password for auth mode=password' +complete -c openclaw -n "__openclaw_command_path_matches gateway -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path" -l password-file -d 'Read gateway password from file' +complete -c openclaw -n "__openclaw_command_path_matches gateway -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path" -l tailscale -d 'Tailscale exposure mode ("off"|"serve"|"funnel")' +complete -c openclaw -n "__openclaw_command_path_matches gateway -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path" -l tailscale-reset-on-exit -d 'Reset Tailscale serve/funnel configuration on shutdown' +complete -c openclaw -n "__openclaw_command_path_matches gateway -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path" -l allow-unconfigured -d 'Allow gateway start without enforcing gateway.mode=local in config (does not repair config)' +complete -c openclaw -n "__openclaw_command_path_matches gateway -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path" -l dev -d 'Create a dev config + workspace if missing (no BOOTSTRAP.md)' +complete -c openclaw -n "__openclaw_command_path_matches gateway -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path" -l reset -d 'Reset dev config + credentials + sessions + workspace (requires --dev)' +complete -c openclaw -n "__openclaw_command_path_matches gateway -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path" -l force -d 'Kill any existing listener on the target port before starting' +complete -c openclaw -n "__openclaw_command_path_matches gateway -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path" -l verbose -d 'Verbose logging to stdout/stderr' +complete -c openclaw -n "__openclaw_command_path_matches gateway -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path" -l cli-backend-logs -d 'Only show CLI backend logs in the console (includes stdout/stderr)' +complete -c openclaw -n "__openclaw_command_path_matches gateway -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path" -l claude-cli-logs -d 'Deprecated alias for --cli-backend-logs' +complete -c openclaw -n "__openclaw_command_path_matches gateway -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path" -l ws-log -d 'WebSocket log style ("auto"|"full"|"compact")' +complete -c openclaw -n "__openclaw_command_path_matches gateway -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path" -l compact -d 'Alias for "--ws-log compact"' +complete -c openclaw -n "__openclaw_command_path_matches gateway -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path" -l raw-stream -d 'Log raw model stream events to jsonl' +complete -c openclaw -n "__openclaw_command_path_matches gateway -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path" -l raw-stream-path -d 'Raw stream jsonl path' +complete -c openclaw -n "__openclaw_command_path_matches gateway run -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path" -l port -d 'Port for the gateway WebSocket' +complete -c openclaw -n "__openclaw_command_path_matches gateway run -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path" -l bind -d 'Bind mode ("loopback"|"lan"|"tailnet"|"auto"|"custom"). Defaults to config gateway.bind (or loopback).' +complete -c openclaw -n "__openclaw_command_path_matches gateway run -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path" -l token -d 'Shared token required in connect.params.auth.token (default: OPENCLAW_GATEWAY_TOKEN env if set)' +complete -c openclaw -n "__openclaw_command_path_matches gateway run -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path" -l auth -d 'Gateway auth mode ("none"|"token"|"password"|"trusted-proxy")' +complete -c openclaw -n "__openclaw_command_path_matches gateway run -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path" -l password -d 'Password for auth mode=password' +complete -c openclaw -n "__openclaw_command_path_matches gateway run -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path" -l password-file -d 'Read gateway password from file' +complete -c openclaw -n "__openclaw_command_path_matches gateway run -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path" -l tailscale -d 'Tailscale exposure mode ("off"|"serve"|"funnel")' +complete -c openclaw -n "__openclaw_command_path_matches gateway run -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path" -l tailscale-reset-on-exit -d 'Reset Tailscale serve/funnel configuration on shutdown' +complete -c openclaw -n "__openclaw_command_path_matches gateway run -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path" -l allow-unconfigured -d 'Allow gateway start without enforcing gateway.mode=local in config (does not repair config)' +complete -c openclaw -n "__openclaw_command_path_matches gateway run -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path" -l dev -d 'Create a dev config + workspace if missing (no BOOTSTRAP.md)' +complete -c openclaw -n "__openclaw_command_path_matches gateway run -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path" -l reset -d 'Reset dev config + credentials + sessions + workspace (requires --dev)' +complete -c openclaw -n "__openclaw_command_path_matches gateway run -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path" -l force -d 'Kill any existing listener on the target port before starting' +complete -c openclaw -n "__openclaw_command_path_matches gateway run -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path" -l verbose -d 'Verbose logging to stdout/stderr' +complete -c openclaw -n "__openclaw_command_path_matches gateway run -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path" -l cli-backend-logs -d 'Only show CLI backend logs in the console (includes stdout/stderr)' +complete -c openclaw -n "__openclaw_command_path_matches gateway run -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path" -l claude-cli-logs -d 'Deprecated alias for --cli-backend-logs' +complete -c openclaw -n "__openclaw_command_path_matches gateway run -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path" -l ws-log -d 'WebSocket log style ("auto"|"full"|"compact")' +complete -c openclaw -n "__openclaw_command_path_matches gateway run -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path" -l compact -d 'Alias for "--ws-log compact"' +complete -c openclaw -n "__openclaw_command_path_matches gateway run -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path" -l raw-stream -d 'Log raw model stream events to jsonl' +complete -c openclaw -n "__openclaw_command_path_matches gateway run -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path" -l raw-stream-path -d 'Raw stream jsonl path' +complete -c openclaw -n "__openclaw_command_path_matches gateway status -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path --url --timeout" -l url -d 'Gateway WebSocket URL (defaults to config/remote/local)' +complete -c openclaw -n "__openclaw_command_path_matches gateway status -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path --url --timeout" -l token -d 'Gateway token (if required)' +complete -c openclaw -n "__openclaw_command_path_matches gateway status -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path --url --timeout" -l password -d 'Gateway password (password auth)' +complete -c openclaw -n "__openclaw_command_path_matches gateway status -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path --url --timeout" -l timeout -d 'Timeout in ms' +complete -c openclaw -n "__openclaw_command_path_matches gateway status -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path --url --timeout" -l no-probe -d 'Skip RPC probe' +complete -c openclaw -n "__openclaw_command_path_matches gateway status -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path --url --timeout" -l require-rpc -d 'Exit non-zero when the RPC probe fails' +complete -c openclaw -n "__openclaw_command_path_matches gateway status -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path --url --timeout" -l deep -d 'Scan system-level services' +complete -c openclaw -n "__openclaw_command_path_matches gateway status -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path --url --timeout" -l json -d 'Output JSON' +complete -c openclaw -n "__openclaw_command_path_matches gateway install -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path --runtime --wrapper" -l port -d 'Gateway port' +complete -c openclaw -n "__openclaw_command_path_matches gateway install -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path --runtime --wrapper" -l runtime -d 'Daemon runtime (node|bun). Default: node' +complete -c openclaw -n "__openclaw_command_path_matches gateway install -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path --runtime --wrapper" -l token -d 'Gateway token (token auth)' +complete -c openclaw -n "__openclaw_command_path_matches gateway install -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path --runtime --wrapper" -l wrapper -d 'Executable wrapper for generated service ProgramArguments' +complete -c openclaw -n "__openclaw_command_path_matches gateway install -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path --runtime --wrapper" -l force -d 'Reinstall/overwrite if already installed' +complete -c openclaw -n "__openclaw_command_path_matches gateway install -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path --runtime --wrapper" -l json -d 'Output JSON' +complete -c openclaw -n "__openclaw_command_path_matches gateway uninstall -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path" -l json -d 'Output JSON' +complete -c openclaw -n "__openclaw_command_path_matches gateway start -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path" -l json -d 'Output JSON' +complete -c openclaw -n "__openclaw_command_path_matches gateway stop -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path" -l json -d 'Output JSON' +complete -c openclaw -n "__openclaw_command_path_matches gateway stop -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path" -l disable -d 'Persistently suppress KeepAlive/RunAtLoad so the gateway does not respawn until next start (launchd only)' +complete -c openclaw -n "__openclaw_command_path_matches gateway restart -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path --wait" -l force -d 'Restart immediately without waiting for active gateway work' +complete -c openclaw -n "__openclaw_command_path_matches gateway restart -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path --wait" -l safe -d 'Request an OpenClaw-aware restart after active work drains' +complete -c openclaw -n "__openclaw_command_path_matches gateway restart -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path --wait" -l skip-deferral -d 'Bypass the safe-restart deferral gate; requires --safe' +complete -c openclaw -n "__openclaw_command_path_matches gateway restart -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path --wait" -l wait -d 'Wait duration before forcing restart (ms, 10s, 5m; 0 waits indefinitely)' +complete -c openclaw -n "__openclaw_command_path_matches gateway restart -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path --wait" -l json -d 'Output JSON' +complete -c openclaw -n "__openclaw_command_path_matches gateway call -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path --params --url --timeout" -l params -d 'JSON object string for params' +complete -c openclaw -n "__openclaw_command_path_matches gateway call -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path --params --url --timeout" -l url -d 'Gateway WebSocket URL (defaults to gateway.remote.url when configured)' +complete -c openclaw -n "__openclaw_command_path_matches gateway call -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path --params --url --timeout" -l token -d 'Gateway token (if required)' +complete -c openclaw -n "__openclaw_command_path_matches gateway call -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path --params --url --timeout" -l password -d 'Gateway password (password auth)' +complete -c openclaw -n "__openclaw_command_path_matches gateway call -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path --params --url --timeout" -l timeout -d 'Timeout in ms' +complete -c openclaw -n "__openclaw_command_path_matches gateway call -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path --params --url --timeout" -l expect-final -d 'Wait for final response (agent)' +complete -c openclaw -n "__openclaw_command_path_matches gateway call -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path --params --url --timeout" -l json -d 'Output JSON' +complete -c openclaw -n "__openclaw_command_path_matches gateway usage-cost -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path --days --agent --url --timeout" -l days -d 'Number of days to include' +complete -c openclaw -n "__openclaw_command_path_matches gateway usage-cost -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path --days --agent --url --timeout" -l agent -d 'Scope the cost summary to a specific agent id' +complete -c openclaw -n "__openclaw_command_path_matches gateway usage-cost -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path --days --agent --url --timeout" -l all-agents -d 'Aggregate the cost summary across all agents' +complete -c openclaw -n "__openclaw_command_path_matches gateway usage-cost -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path --days --agent --url --timeout" -l url -d 'Gateway WebSocket URL (defaults to gateway.remote.url when configured)' +complete -c openclaw -n "__openclaw_command_path_matches gateway usage-cost -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path --days --agent --url --timeout" -l token -d 'Gateway token (if required)' +complete -c openclaw -n "__openclaw_command_path_matches gateway usage-cost -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path --days --agent --url --timeout" -l password -d 'Gateway password (password auth)' +complete -c openclaw -n "__openclaw_command_path_matches gateway usage-cost -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path --days --agent --url --timeout" -l timeout -d 'Timeout in ms' +complete -c openclaw -n "__openclaw_command_path_matches gateway usage-cost -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path --days --agent --url --timeout" -l expect-final -d 'Wait for final response (agent)' +complete -c openclaw -n "__openclaw_command_path_matches gateway usage-cost -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path --days --agent --url --timeout" -l json -d 'Output JSON' +complete -c openclaw -n "__openclaw_command_path_matches gateway health -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path --url --timeout" -l port -d 'Local Gateway port' +complete -c openclaw -n "__openclaw_command_path_matches gateway health -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path --url --timeout" -l url -d 'Gateway WebSocket URL (defaults to gateway.remote.url when configured)' +complete -c openclaw -n "__openclaw_command_path_matches gateway health -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path --url --timeout" -l token -d 'Gateway token (if required)' +complete -c openclaw -n "__openclaw_command_path_matches gateway health -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path --url --timeout" -l password -d 'Gateway password (password auth)' +complete -c openclaw -n "__openclaw_command_path_matches gateway health -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path --url --timeout" -l timeout -d 'Timeout in ms' +complete -c openclaw -n "__openclaw_command_path_matches gateway health -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path --url --timeout" -l expect-final -d 'Wait for final response (agent)' +complete -c openclaw -n "__openclaw_command_path_matches gateway health -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path --url --timeout" -l json -d 'Output JSON' +complete -c openclaw -n "__openclaw_command_path_matches gateway stability -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path --limit --type --since-seq --bundle --output --url --timeout" -l limit -d 'Maximum number of recent events' +complete -c openclaw -n "__openclaw_command_path_matches gateway stability -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path --limit --type --since-seq --bundle --output --url --timeout" -l type -d 'Filter by diagnostic event type' +complete -c openclaw -n "__openclaw_command_path_matches gateway stability -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path --limit --type --since-seq --bundle --output --url --timeout" -l since-seq -d 'Only include events after this sequence' +complete -c openclaw -n "__openclaw_command_path_matches gateway stability -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path --limit --type --since-seq --bundle --output --url --timeout" -l bundle -d 'Read a persisted stability bundle instead of calling Gateway; pass "latest" for newest' +complete -c openclaw -n "__openclaw_command_path_matches gateway stability -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path --limit --type --since-seq --bundle --output --url --timeout" -l export -d 'Write a shareable support diagnostics export' +complete -c openclaw -n "__openclaw_command_path_matches gateway stability -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path --limit --type --since-seq --bundle --output --url --timeout" -l output -d 'Diagnostics export output .zip path' +complete -c openclaw -n "__openclaw_command_path_matches gateway stability -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path --limit --type --since-seq --bundle --output --url --timeout" -l url -d 'Gateway WebSocket URL (defaults to gateway.remote.url when configured)' +complete -c openclaw -n "__openclaw_command_path_matches gateway stability -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path --limit --type --since-seq --bundle --output --url --timeout" -l token -d 'Gateway token (if required)' +complete -c openclaw -n "__openclaw_command_path_matches gateway stability -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path --limit --type --since-seq --bundle --output --url --timeout" -l password -d 'Gateway password (password auth)' +complete -c openclaw -n "__openclaw_command_path_matches gateway stability -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path --limit --type --since-seq --bundle --output --url --timeout" -l timeout -d 'Timeout in ms' +complete -c openclaw -n "__openclaw_command_path_matches gateway stability -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path --limit --type --since-seq --bundle --output --url --timeout" -l expect-final -d 'Wait for final response (agent)' +complete -c openclaw -n "__openclaw_command_path_matches gateway stability -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path --limit --type --since-seq --bundle --output --url --timeout" -l json -d 'Output JSON' +complete -c openclaw -n "__openclaw_command_path_matches gateway diagnostics -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path" -a "export" -d 'Write a shareable, payload-free diagnostics .zip' +complete -c openclaw -n "__openclaw_command_path_matches gateway diagnostics export -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path --output --log-lines --log-bytes --url --timeout" -l output -d 'Output .zip path' +complete -c openclaw -n "__openclaw_command_path_matches gateway diagnostics export -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path --output --log-lines --log-bytes --url --timeout" -l log-lines -d 'Maximum sanitized log lines to include' +complete -c openclaw -n "__openclaw_command_path_matches gateway diagnostics export -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path --output --log-lines --log-bytes --url --timeout" -l log-bytes -d 'Maximum log bytes to inspect' +complete -c openclaw -n "__openclaw_command_path_matches gateway diagnostics export -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path --output --log-lines --log-bytes --url --timeout" -l url -d 'Gateway WebSocket URL for health snapshot' +complete -c openclaw -n "__openclaw_command_path_matches gateway diagnostics export -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path --output --log-lines --log-bytes --url --timeout" -l token -d 'Gateway token for health snapshot' +complete -c openclaw -n "__openclaw_command_path_matches gateway diagnostics export -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path --output --log-lines --log-bytes --url --timeout" -l password -d 'Gateway password for health snapshot' +complete -c openclaw -n "__openclaw_command_path_matches gateway diagnostics export -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path --output --log-lines --log-bytes --url --timeout" -l timeout -d 'Status/health snapshot timeout in ms' +complete -c openclaw -n "__openclaw_command_path_matches gateway diagnostics export -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path --output --log-lines --log-bytes --url --timeout" -l no-stability-bundle -d 'Skip persisted stability bundle lookup' +complete -c openclaw -n "__openclaw_command_path_matches gateway diagnostics export -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path --output --log-lines --log-bytes --url --timeout" -l json -d 'Output JSON' +complete -c openclaw -n "__openclaw_command_path_matches gateway probe -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path --url --ssh --ssh-identity --timeout" -l url -d 'Explicit Gateway WebSocket URL (still probes localhost)' +complete -c openclaw -n "__openclaw_command_path_matches gateway probe -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path --url --ssh --ssh-identity --timeout" -l port -d 'Local Gateway port' +complete -c openclaw -n "__openclaw_command_path_matches gateway probe -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path --url --ssh --ssh-identity --timeout" -l ssh -d 'SSH target for remote gateway tunnel (user@host or user@host:port)' +complete -c openclaw -n "__openclaw_command_path_matches gateway probe -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path --url --ssh --ssh-identity --timeout" -l ssh-identity -d 'SSH identity file path' +complete -c openclaw -n "__openclaw_command_path_matches gateway probe -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path --url --ssh --ssh-identity --timeout" -l ssh-auto -d 'Try to derive an SSH target from Bonjour discovery' +complete -c openclaw -n "__openclaw_command_path_matches gateway probe -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path --url --ssh --ssh-identity --timeout" -l token -d 'Gateway token (applies to all probes)' +complete -c openclaw -n "__openclaw_command_path_matches gateway probe -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path --url --ssh --ssh-identity --timeout" -l password -d 'Gateway password (applies to all probes)' +complete -c openclaw -n "__openclaw_command_path_matches gateway probe -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path --url --ssh --ssh-identity --timeout" -l timeout -d 'Overall probe budget in ms' +complete -c openclaw -n "__openclaw_command_path_matches gateway probe -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path --url --ssh --ssh-identity --timeout" -l json -d 'Output JSON' +complete -c openclaw -n "__openclaw_command_path_matches gateway discover -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path --timeout" -l timeout -d 'Per-command timeout in ms' +complete -c openclaw -n "__openclaw_command_path_matches gateway discover -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path --timeout" -l json -d 'Output JSON' +complete -c openclaw -n "__openclaw_command_path_matches daemon -- --container --profile --log-level" -a "status" -d 'Show service install status + probe connectivity/capability' +complete -c openclaw -n "__openclaw_command_path_matches daemon -- --container --profile --log-level" -a "install" -d 'Install the Gateway service (launchd/systemd/schtasks)' +complete -c openclaw -n "__openclaw_command_path_matches daemon -- --container --profile --log-level" -a "uninstall" -d 'Uninstall the Gateway service (launchd/systemd/schtasks)' +complete -c openclaw -n "__openclaw_command_path_matches daemon -- --container --profile --log-level" -a "start" -d 'Start the Gateway service (launchd/systemd/schtasks)' +complete -c openclaw -n "__openclaw_command_path_matches daemon -- --container --profile --log-level" -a "stop" -d 'Stop the Gateway service (launchd/systemd/schtasks)' +complete -c openclaw -n "__openclaw_command_path_matches daemon -- --container --profile --log-level" -a "restart" -d 'Restart the Gateway service (launchd/systemd/schtasks)' +complete -c openclaw -n "__openclaw_command_path_matches daemon status -- --container --profile --log-level --url --token --password --timeout" -l url -d 'Gateway WebSocket URL (defaults to config/remote/local)' +complete -c openclaw -n "__openclaw_command_path_matches daemon status -- --container --profile --log-level --url --token --password --timeout" -l token -d 'Gateway token (if required)' +complete -c openclaw -n "__openclaw_command_path_matches daemon status -- --container --profile --log-level --url --token --password --timeout" -l password -d 'Gateway password (password auth)' +complete -c openclaw -n "__openclaw_command_path_matches daemon status -- --container --profile --log-level --url --token --password --timeout" -l timeout -d 'Timeout in ms' +complete -c openclaw -n "__openclaw_command_path_matches daemon status -- --container --profile --log-level --url --token --password --timeout" -l no-probe -d 'Skip RPC probe' +complete -c openclaw -n "__openclaw_command_path_matches daemon status -- --container --profile --log-level --url --token --password --timeout" -l require-rpc -d 'Exit non-zero when the RPC probe fails' +complete -c openclaw -n "__openclaw_command_path_matches daemon status -- --container --profile --log-level --url --token --password --timeout" -l deep -d 'Scan system-level services' +complete -c openclaw -n "__openclaw_command_path_matches daemon status -- --container --profile --log-level --url --token --password --timeout" -l json -d 'Output JSON' +complete -c openclaw -n "__openclaw_command_path_matches daemon install -- --container --profile --log-level --port --runtime --token --wrapper" -l port -d 'Gateway port' +complete -c openclaw -n "__openclaw_command_path_matches daemon install -- --container --profile --log-level --port --runtime --token --wrapper" -l runtime -d 'Daemon runtime (node|bun). Default: node' +complete -c openclaw -n "__openclaw_command_path_matches daemon install -- --container --profile --log-level --port --runtime --token --wrapper" -l token -d 'Gateway token (token auth)' +complete -c openclaw -n "__openclaw_command_path_matches daemon install -- --container --profile --log-level --port --runtime --token --wrapper" -l wrapper -d 'Executable wrapper for generated service ProgramArguments' +complete -c openclaw -n "__openclaw_command_path_matches daemon install -- --container --profile --log-level --port --runtime --token --wrapper" -l force -d 'Reinstall/overwrite if already installed' +complete -c openclaw -n "__openclaw_command_path_matches daemon install -- --container --profile --log-level --port --runtime --token --wrapper" -l json -d 'Output JSON' +complete -c openclaw -n "__openclaw_command_path_matches daemon uninstall -- --container --profile --log-level" -l json -d 'Output JSON' +complete -c openclaw -n "__openclaw_command_path_matches daemon start -- --container --profile --log-level" -l json -d 'Output JSON' +complete -c openclaw -n "__openclaw_command_path_matches daemon stop -- --container --profile --log-level" -l json -d 'Output JSON' +complete -c openclaw -n "__openclaw_command_path_matches daemon stop -- --container --profile --log-level" -l disable -d 'Persistently suppress KeepAlive/RunAtLoad so the gateway does not respawn until next start (launchd only)' +complete -c openclaw -n "__openclaw_command_path_matches daemon restart -- --container --profile --log-level --wait" -l force -d 'Restart immediately without waiting for active gateway work' +complete -c openclaw -n "__openclaw_command_path_matches daemon restart -- --container --profile --log-level --wait" -l safe -d 'Request an OpenClaw-aware restart after active work drains' +complete -c openclaw -n "__openclaw_command_path_matches daemon restart -- --container --profile --log-level --wait" -l skip-deferral -d 'Bypass the safe-restart deferral gate; requires --safe' +complete -c openclaw -n "__openclaw_command_path_matches daemon restart -- --container --profile --log-level --wait" -l wait -d 'Wait duration before forcing restart (ms, 10s, 5m; 0 waits indefinitely)' +complete -c openclaw -n "__openclaw_command_path_matches daemon restart -- --container --profile --log-level --wait" -l json -d 'Output JSON' +complete -c openclaw -n "__openclaw_command_path_matches logs -- --container --profile --log-level --limit --max-bytes --interval --url --token --timeout" -l limit -d 'Max lines to return' +complete -c openclaw -n "__openclaw_command_path_matches logs -- --container --profile --log-level --limit --max-bytes --interval --url --token --timeout" -l max-bytes -d 'Max bytes to read' +complete -c openclaw -n "__openclaw_command_path_matches logs -- --container --profile --log-level --limit --max-bytes --interval --url --token --timeout" -l follow -d 'Follow log output' +complete -c openclaw -n "__openclaw_command_path_matches logs -- --container --profile --log-level --limit --max-bytes --interval --url --token --timeout" -l interval -d 'Polling interval in ms' +complete -c openclaw -n "__openclaw_command_path_matches logs -- --container --profile --log-level --limit --max-bytes --interval --url --token --timeout" -l json -d 'Emit JSON log lines' +complete -c openclaw -n "__openclaw_command_path_matches logs -- --container --profile --log-level --limit --max-bytes --interval --url --token --timeout" -l plain -d 'Plain text output (no ANSI styling)' +complete -c openclaw -n "__openclaw_command_path_matches logs -- --container --profile --log-level --limit --max-bytes --interval --url --token --timeout" -l no-color -d 'Disable ANSI colors' +complete -c openclaw -n "__openclaw_command_path_matches logs -- --container --profile --log-level --limit --max-bytes --interval --url --token --timeout" -l local-time -d 'Display timestamps in local timezone (default)' +complete -c openclaw -n "__openclaw_command_path_matches logs -- --container --profile --log-level --limit --max-bytes --interval --url --token --timeout" -l utc -d 'Display timestamps in UTC' +complete -c openclaw -n "__openclaw_command_path_matches logs -- --container --profile --log-level --limit --max-bytes --interval --url --token --timeout" -l url -d 'Gateway WebSocket URL (defaults to gateway.remote.url when configured)' +complete -c openclaw -n "__openclaw_command_path_matches logs -- --container --profile --log-level --limit --max-bytes --interval --url --token --timeout" -l token -d 'Gateway token (if required)' +complete -c openclaw -n "__openclaw_command_path_matches logs -- --container --profile --log-level --limit --max-bytes --interval --url --token --timeout" -l timeout -d 'Timeout in ms' +complete -c openclaw -n "__openclaw_command_path_matches logs -- --container --profile --log-level --limit --max-bytes --interval --url --token --timeout" -l expect-final -d 'Wait for final response (agent)' +complete -c openclaw -n "__openclaw_command_path_matches system -- --container --profile --log-level" -a "event" -d 'Enqueue a system event and optionally trigger a heartbeat' +complete -c openclaw -n "__openclaw_command_path_matches system -- --container --profile --log-level" -a "heartbeat" -d 'Heartbeat controls' +complete -c openclaw -n "__openclaw_command_path_matches system -- --container --profile --log-level" -a "presence" -d 'List system presence entries' +complete -c openclaw -n "__openclaw_command_path_matches system event -- --container --profile --log-level --text --mode --session-key --url --token --timeout" -l text -d 'System event text' +complete -c openclaw -n "__openclaw_command_path_matches system event -- --container --profile --log-level --text --mode --session-key --url --token --timeout" -l mode -d 'Wake mode (now|next-heartbeat)' +complete -c openclaw -n "__openclaw_command_path_matches system event -- --container --profile --log-level --text --mode --session-key --url --token --timeout" -l session-key -d 'Target a specific session for the event (defaults to the agent'\''s main session)' +complete -c openclaw -n "__openclaw_command_path_matches system event -- --container --profile --log-level --text --mode --session-key --url --token --timeout" -l json -d 'Output JSON' +complete -c openclaw -n "__openclaw_command_path_matches system event -- --container --profile --log-level --text --mode --session-key --url --token --timeout" -l url -d 'Gateway WebSocket URL (defaults to gateway.remote.url when configured)' +complete -c openclaw -n "__openclaw_command_path_matches system event -- --container --profile --log-level --text --mode --session-key --url --token --timeout" -l token -d 'Gateway token (if required)' +complete -c openclaw -n "__openclaw_command_path_matches system event -- --container --profile --log-level --text --mode --session-key --url --token --timeout" -l timeout -d 'Timeout in ms' +complete -c openclaw -n "__openclaw_command_path_matches system event -- --container --profile --log-level --text --mode --session-key --url --token --timeout" -l expect-final -d 'Wait for final response (agent)' +complete -c openclaw -n "__openclaw_command_path_matches system heartbeat -- --container --profile --log-level" -a "last" -d 'Show the last heartbeat event' +complete -c openclaw -n "__openclaw_command_path_matches system heartbeat -- --container --profile --log-level" -a "enable" -d 'Enable heartbeats' +complete -c openclaw -n "__openclaw_command_path_matches system heartbeat -- --container --profile --log-level" -a "disable" -d 'Disable heartbeats' +complete -c openclaw -n "__openclaw_command_path_matches system heartbeat last -- --container --profile --log-level --url --token --timeout" -l json -d 'Output JSON' +complete -c openclaw -n "__openclaw_command_path_matches system heartbeat last -- --container --profile --log-level --url --token --timeout" -l url -d 'Gateway WebSocket URL (defaults to gateway.remote.url when configured)' +complete -c openclaw -n "__openclaw_command_path_matches system heartbeat last -- --container --profile --log-level --url --token --timeout" -l token -d 'Gateway token (if required)' +complete -c openclaw -n "__openclaw_command_path_matches system heartbeat last -- --container --profile --log-level --url --token --timeout" -l timeout -d 'Timeout in ms' +complete -c openclaw -n "__openclaw_command_path_matches system heartbeat last -- --container --profile --log-level --url --token --timeout" -l expect-final -d 'Wait for final response (agent)' +complete -c openclaw -n "__openclaw_command_path_matches system heartbeat enable -- --container --profile --log-level --url --token --timeout" -l json -d 'Output JSON' +complete -c openclaw -n "__openclaw_command_path_matches system heartbeat enable -- --container --profile --log-level --url --token --timeout" -l url -d 'Gateway WebSocket URL (defaults to gateway.remote.url when configured)' +complete -c openclaw -n "__openclaw_command_path_matches system heartbeat enable -- --container --profile --log-level --url --token --timeout" -l token -d 'Gateway token (if required)' +complete -c openclaw -n "__openclaw_command_path_matches system heartbeat enable -- --container --profile --log-level --url --token --timeout" -l timeout -d 'Timeout in ms' +complete -c openclaw -n "__openclaw_command_path_matches system heartbeat enable -- --container --profile --log-level --url --token --timeout" -l expect-final -d 'Wait for final response (agent)' +complete -c openclaw -n "__openclaw_command_path_matches system heartbeat disable -- --container --profile --log-level --url --token --timeout" -l json -d 'Output JSON' +complete -c openclaw -n "__openclaw_command_path_matches system heartbeat disable -- --container --profile --log-level --url --token --timeout" -l url -d 'Gateway WebSocket URL (defaults to gateway.remote.url when configured)' +complete -c openclaw -n "__openclaw_command_path_matches system heartbeat disable -- --container --profile --log-level --url --token --timeout" -l token -d 'Gateway token (if required)' +complete -c openclaw -n "__openclaw_command_path_matches system heartbeat disable -- --container --profile --log-level --url --token --timeout" -l timeout -d 'Timeout in ms' +complete -c openclaw -n "__openclaw_command_path_matches system heartbeat disable -- --container --profile --log-level --url --token --timeout" -l expect-final -d 'Wait for final response (agent)' +complete -c openclaw -n "__openclaw_command_path_matches system presence -- --container --profile --log-level --url --token --timeout" -l json -d 'Output JSON' +complete -c openclaw -n "__openclaw_command_path_matches system presence -- --container --profile --log-level --url --token --timeout" -l url -d 'Gateway WebSocket URL (defaults to gateway.remote.url when configured)' +complete -c openclaw -n "__openclaw_command_path_matches system presence -- --container --profile --log-level --url --token --timeout" -l token -d 'Gateway token (if required)' +complete -c openclaw -n "__openclaw_command_path_matches system presence -- --container --profile --log-level --url --token --timeout" -l timeout -d 'Timeout in ms' +complete -c openclaw -n "__openclaw_command_path_matches system presence -- --container --profile --log-level --url --token --timeout" -l expect-final -d 'Wait for final response (agent)' +complete -c openclaw -n "__openclaw_command_path_matches models -- --container --profile --log-level --agent" -a "list" -d 'List models (configured by default)' +complete -c openclaw -n "__openclaw_command_path_matches models -- --container --profile --log-level --agent" -a "status" -d 'Show configured model state' +complete -c openclaw -n "__openclaw_command_path_matches models -- --container --profile --log-level --agent" -a "set" -d 'Set the default model' +complete -c openclaw -n "__openclaw_command_path_matches models -- --container --profile --log-level --agent" -a "set-image" -d 'Set the image model' +complete -c openclaw -n "__openclaw_command_path_matches models -- --container --profile --log-level --agent" -a "aliases" -d 'Manage model aliases' +complete -c openclaw -n "__openclaw_command_path_matches models -- --container --profile --log-level --agent" -a "fallbacks" -d 'Manage model fallback list' +complete -c openclaw -n "__openclaw_command_path_matches models -- --container --profile --log-level --agent" -a "image-fallbacks" -d 'Manage image model fallback list' +complete -c openclaw -n "__openclaw_command_path_matches models -- --container --profile --log-level --agent" -a "scan" -d 'Scan OpenRouter free models for tools + images' +complete -c openclaw -n "__openclaw_command_path_matches models -- --container --profile --log-level --agent" -a "auth" -d 'Manage model auth profiles' +complete -c openclaw -n "__openclaw_command_path_matches models -- --container --profile --log-level --agent" -l status-json -d 'Output JSON (alias for `models status --json`)' +complete -c openclaw -n "__openclaw_command_path_matches models -- --container --profile --log-level --agent" -l status-plain -d 'Plain output (alias for `models status --plain`)' +complete -c openclaw -n "__openclaw_command_path_matches models -- --container --profile --log-level --agent" -l agent -d 'Agent id to inspect (overrides OPENCLAW_AGENT_DIR)' +complete -c openclaw -n "__openclaw_command_path_matches models list -- --container --profile --log-level --agent --provider" -l all -d 'Show full model catalog' +complete -c openclaw -n "__openclaw_command_path_matches models list -- --container --profile --log-level --agent --provider" -l local -d 'Filter to local models' +complete -c openclaw -n "__openclaw_command_path_matches models list -- --container --profile --log-level --agent --provider" -l provider -d 'Filter by provider id' +complete -c openclaw -n "__openclaw_command_path_matches models list -- --container --profile --log-level --agent --provider" -l json -d 'Output JSON' +complete -c openclaw -n "__openclaw_command_path_matches models list -- --container --profile --log-level --agent --provider" -l plain -d 'Plain line output' +complete -c openclaw -n "__openclaw_command_path_matches models status -- --container --profile --log-level --agent --probe-provider --probe-profile --probe-timeout --probe-concurrency --probe-max-tokens" -l json -d 'Output JSON' +complete -c openclaw -n "__openclaw_command_path_matches models status -- --container --profile --log-level --agent --probe-provider --probe-profile --probe-timeout --probe-concurrency --probe-max-tokens" -l plain -d 'Plain output' +complete -c openclaw -n "__openclaw_command_path_matches models status -- --container --profile --log-level --agent --probe-provider --probe-profile --probe-timeout --probe-concurrency --probe-max-tokens" -l check -d 'Exit non-zero if auth is expiring/expired (1=expired/missing, 2=expiring)' +complete -c openclaw -n "__openclaw_command_path_matches models status -- --container --profile --log-level --agent --probe-provider --probe-profile --probe-timeout --probe-concurrency --probe-max-tokens" -l probe -d 'Probe configured provider auth (live)' +complete -c openclaw -n "__openclaw_command_path_matches models status -- --container --profile --log-level --agent --probe-provider --probe-profile --probe-timeout --probe-concurrency --probe-max-tokens" -l probe-provider -d 'Only probe a single provider' +complete -c openclaw -n "__openclaw_command_path_matches models status -- --container --profile --log-level --agent --probe-provider --probe-profile --probe-timeout --probe-concurrency --probe-max-tokens" -l probe-profile -d 'Only probe specific auth profile ids (repeat or comma-separated)' +complete -c openclaw -n "__openclaw_command_path_matches models status -- --container --profile --log-level --agent --probe-provider --probe-profile --probe-timeout --probe-concurrency --probe-max-tokens" -l probe-timeout -d 'Per-probe timeout in ms' +complete -c openclaw -n "__openclaw_command_path_matches models status -- --container --profile --log-level --agent --probe-provider --probe-profile --probe-timeout --probe-concurrency --probe-max-tokens" -l probe-concurrency -d 'Concurrent probes' +complete -c openclaw -n "__openclaw_command_path_matches models status -- --container --profile --log-level --agent --probe-provider --probe-profile --probe-timeout --probe-concurrency --probe-max-tokens" -l probe-max-tokens -d 'Probe max tokens (best-effort)' +complete -c openclaw -n "__openclaw_command_path_matches models status -- --container --profile --log-level --agent --probe-provider --probe-profile --probe-timeout --probe-concurrency --probe-max-tokens" -l agent -d 'Agent id to inspect (overrides OPENCLAW_AGENT_DIR)' +complete -c openclaw -n "__openclaw_command_path_matches models aliases -- --container --profile --log-level --agent" -a "list" -d 'List model aliases' +complete -c openclaw -n "__openclaw_command_path_matches models aliases -- --container --profile --log-level --agent" -a "add" -d 'Add or update a model alias' +complete -c openclaw -n "__openclaw_command_path_matches models aliases -- --container --profile --log-level --agent" -a "remove" -d 'Remove a model alias' +complete -c openclaw -n "__openclaw_command_path_matches models aliases list -- --container --profile --log-level --agent" -l json -d 'Output JSON' +complete -c openclaw -n "__openclaw_command_path_matches models aliases list -- --container --profile --log-level --agent" -l plain -d 'Plain output' +complete -c openclaw -n "__openclaw_command_path_matches models fallbacks -- --container --profile --log-level --agent" -a "list" -d 'List fallback models' +complete -c openclaw -n "__openclaw_command_path_matches models fallbacks -- --container --profile --log-level --agent" -a "add" -d 'Add a fallback model' +complete -c openclaw -n "__openclaw_command_path_matches models fallbacks -- --container --profile --log-level --agent" -a "remove" -d 'Remove a fallback model' +complete -c openclaw -n "__openclaw_command_path_matches models fallbacks -- --container --profile --log-level --agent" -a "clear" -d 'Clear all fallback models' +complete -c openclaw -n "__openclaw_command_path_matches models fallbacks list -- --container --profile --log-level --agent" -l json -d 'Output JSON' +complete -c openclaw -n "__openclaw_command_path_matches models fallbacks list -- --container --profile --log-level --agent" -l plain -d 'Plain output' +complete -c openclaw -n "__openclaw_command_path_matches models image-fallbacks -- --container --profile --log-level --agent" -a "list" -d 'List image fallback models' +complete -c openclaw -n "__openclaw_command_path_matches models image-fallbacks -- --container --profile --log-level --agent" -a "add" -d 'Add an image fallback model' +complete -c openclaw -n "__openclaw_command_path_matches models image-fallbacks -- --container --profile --log-level --agent" -a "remove" -d 'Remove an image fallback model' +complete -c openclaw -n "__openclaw_command_path_matches models image-fallbacks -- --container --profile --log-level --agent" -a "clear" -d 'Clear all image fallback models' +complete -c openclaw -n "__openclaw_command_path_matches models image-fallbacks list -- --container --profile --log-level --agent" -l json -d 'Output JSON' +complete -c openclaw -n "__openclaw_command_path_matches models image-fallbacks list -- --container --profile --log-level --agent" -l plain -d 'Plain output' +complete -c openclaw -n "__openclaw_command_path_matches models scan -- --container --profile --log-level --agent --min-params --max-age-days --provider --max-candidates --timeout --concurrency" -l min-params -d 'Minimum parameter size (billions)' +complete -c openclaw -n "__openclaw_command_path_matches models scan -- --container --profile --log-level --agent --min-params --max-age-days --provider --max-candidates --timeout --concurrency" -l max-age-days -d 'Skip models older than N days' +complete -c openclaw -n "__openclaw_command_path_matches models scan -- --container --profile --log-level --agent --min-params --max-age-days --provider --max-candidates --timeout --concurrency" -l provider -d 'Filter by provider prefix' +complete -c openclaw -n "__openclaw_command_path_matches models scan -- --container --profile --log-level --agent --min-params --max-age-days --provider --max-candidates --timeout --concurrency" -l max-candidates -d 'Max fallback candidates' +complete -c openclaw -n "__openclaw_command_path_matches models scan -- --container --profile --log-level --agent --min-params --max-age-days --provider --max-candidates --timeout --concurrency" -l timeout -d 'Per-probe timeout in ms' +complete -c openclaw -n "__openclaw_command_path_matches models scan -- --container --profile --log-level --agent --min-params --max-age-days --provider --max-candidates --timeout --concurrency" -l concurrency -d 'Probe concurrency' +complete -c openclaw -n "__openclaw_command_path_matches models scan -- --container --profile --log-level --agent --min-params --max-age-days --provider --max-candidates --timeout --concurrency" -l no-probe -d 'Skip live probes; list free candidates only' +complete -c openclaw -n "__openclaw_command_path_matches models scan -- --container --profile --log-level --agent --min-params --max-age-days --provider --max-candidates --timeout --concurrency" -l yes -d 'Accept defaults without prompting' +complete -c openclaw -n "__openclaw_command_path_matches models scan -- --container --profile --log-level --agent --min-params --max-age-days --provider --max-candidates --timeout --concurrency" -l no-input -d 'Disable prompts (use defaults)' +complete -c openclaw -n "__openclaw_command_path_matches models scan -- --container --profile --log-level --agent --min-params --max-age-days --provider --max-candidates --timeout --concurrency" -l set-default -d 'Set agents.defaults.model to the first selection' +complete -c openclaw -n "__openclaw_command_path_matches models scan -- --container --profile --log-level --agent --min-params --max-age-days --provider --max-candidates --timeout --concurrency" -l set-image -d 'Set agents.defaults.imageModel to the first image selection' +complete -c openclaw -n "__openclaw_command_path_matches models scan -- --container --profile --log-level --agent --min-params --max-age-days --provider --max-candidates --timeout --concurrency" -l json -d 'Output JSON' +complete -c openclaw -n "__openclaw_command_path_matches models auth -- --container --profile --log-level --agent" -a "list" -d 'List saved auth profiles' +complete -c openclaw -n "__openclaw_command_path_matches models auth -- --container --profile --log-level --agent" -a "add" -d 'Interactive auth helper (provider auth or paste token)' +complete -c openclaw -n "__openclaw_command_path_matches models auth -- --container --profile --log-level --agent" -a "login" -d 'Run a provider plugin auth flow (OAuth/API key)' +complete -c openclaw -n "__openclaw_command_path_matches models auth -- --container --profile --log-level --agent" -a "setup-token" -d 'Run a provider CLI to create/sync a token (TTY required)' +complete -c openclaw -n "__openclaw_command_path_matches models auth -- --container --profile --log-level --agent" -a "paste-token" -d 'Paste a token into auth-profiles.json and update config' +complete -c openclaw -n "__openclaw_command_path_matches models auth -- --container --profile --log-level --agent" -a "paste-api-key" -d 'Paste an API key into auth-profiles.json and update config' +complete -c openclaw -n "__openclaw_command_path_matches models auth -- --container --profile --log-level --agent" -a "login-github-copilot" -d 'Login to GitHub Copilot via GitHub device flow (TTY required)' +complete -c openclaw -n "__openclaw_command_path_matches models auth -- --container --profile --log-level --agent" -a "order" -d 'Manage per-agent auth profile order overrides' +complete -c openclaw -n "__openclaw_command_path_matches models auth -- --container --profile --log-level --agent" -l agent -d 'Agent id for auth commands' +complete -c openclaw -n "__openclaw_command_path_matches models auth list -- --container --profile --log-level --agent --provider" -l provider -d 'Filter by provider id' +complete -c openclaw -n "__openclaw_command_path_matches models auth list -- --container --profile --log-level --agent --provider" -l agent -d 'Agent id (default: configured default agent)' +complete -c openclaw -n "__openclaw_command_path_matches models auth list -- --container --profile --log-level --agent --provider" -l json -d 'Output JSON' +complete -c openclaw -n "__openclaw_command_path_matches models auth login -- --container --profile --log-level --agent --provider --method --profile-id" -l provider -d 'Provider id registered by a plugin' +complete -c openclaw -n "__openclaw_command_path_matches models auth login -- --container --profile --log-level --agent --provider --method --profile-id" -l method -d 'Provider auth method id' +complete -c openclaw -n "__openclaw_command_path_matches models auth login -- --container --profile --log-level --agent --provider --method --profile-id" -l device-code -d 'Use the provider device-code auth method' +complete -c openclaw -n "__openclaw_command_path_matches models auth login -- --container --profile --log-level --agent --provider --method --profile-id" -l profile-id -d 'Auth profile id override for single-profile login methods' +complete -c openclaw -n "__openclaw_command_path_matches models auth login -- --container --profile --log-level --agent --provider --method --profile-id" -l set-default -d 'Apply the provider'\''s default model recommendation' +complete -c openclaw -n "__openclaw_command_path_matches models auth login -- --container --profile --log-level --agent --provider --method --profile-id" -l force -d 'Remove existing profiles for the provider before logging in (use when a cached OAuth profile is stuck or you want to switch accounts)' +complete -c openclaw -n "__openclaw_command_path_matches models auth setup-token -- --container --profile --log-level --agent --provider" -l provider -d 'Provider id' +complete -c openclaw -n "__openclaw_command_path_matches models auth setup-token -- --container --profile --log-level --agent --provider" -l yes -d 'Skip confirmation' +complete -c openclaw -n "__openclaw_command_path_matches models auth paste-token -- --container --profile --log-level --agent --provider --profile-id --expires-in" -l provider -d 'Provider id (e.g. anthropic)' +complete -c openclaw -n "__openclaw_command_path_matches models auth paste-token -- --container --profile --log-level --agent --provider --profile-id --expires-in" -l profile-id -d 'Auth profile id (default: :manual)' +complete -c openclaw -n "__openclaw_command_path_matches models auth paste-token -- --container --profile --log-level --agent --provider --profile-id --expires-in" -l expires-in -d 'Optional expiry duration (e.g. 365d, 12h). Stored as absolute expiresAt.' +complete -c openclaw -n "__openclaw_command_path_matches models auth paste-api-key -- --container --profile --log-level --agent --provider --profile-id" -l provider -d 'Provider id (e.g. openai)' +complete -c openclaw -n "__openclaw_command_path_matches models auth paste-api-key -- --container --profile --log-level --agent --provider --profile-id" -l profile-id -d 'Auth profile id (default: :manual)' +complete -c openclaw -n "__openclaw_command_path_matches models auth login-github-copilot -- --container --profile --log-level --agent" -l yes -d 'Overwrite existing profile without prompting' +complete -c openclaw -n "__openclaw_command_path_matches models auth order -- --container --profile --log-level --agent" -a "get" -d 'Show per-agent auth order override (from auth-state.json)' +complete -c openclaw -n "__openclaw_command_path_matches models auth order -- --container --profile --log-level --agent" -a "set" -d 'Set per-agent auth order override (writes auth-state.json)' +complete -c openclaw -n "__openclaw_command_path_matches models auth order -- --container --profile --log-level --agent" -a "clear" -d 'Clear per-agent auth order override (fall back to config/round-robin)' +complete -c openclaw -n "__openclaw_command_path_matches models auth order get -- --container --profile --log-level --agent --provider" -l provider -d 'Provider id (e.g. anthropic)' +complete -c openclaw -n "__openclaw_command_path_matches models auth order get -- --container --profile --log-level --agent --provider" -l agent -d 'Agent id (default: configured default agent)' +complete -c openclaw -n "__openclaw_command_path_matches models auth order get -- --container --profile --log-level --agent --provider" -l json -d 'Output JSON' +complete -c openclaw -n "__openclaw_command_path_matches models auth order set -- --container --profile --log-level --agent --provider" -l provider -d 'Provider id (e.g. anthropic)' +complete -c openclaw -n "__openclaw_command_path_matches models auth order set -- --container --profile --log-level --agent --provider" -l agent -d 'Agent id (default: configured default agent)' +complete -c openclaw -n "__openclaw_command_path_matches models auth order clear -- --container --profile --log-level --agent --provider" -l provider -d 'Provider id (e.g. anthropic)' +complete -c openclaw -n "__openclaw_command_path_matches models auth order clear -- --container --profile --log-level --agent --provider" -l agent -d 'Agent id (default: configured default agent)' +complete -c openclaw -n "__openclaw_command_path_matches infer -- --container --profile --log-level" -a "list" -d 'List canonical capability ids and supported transports' +complete -c openclaw -n "__openclaw_command_path_matches infer -- --container --profile --log-level" -a "inspect" -d 'Inspect one canonical capability id' +complete -c openclaw -n "__openclaw_command_path_matches infer -- --container --profile --log-level" -a "model" -d 'Text inference and model catalog commands' +complete -c openclaw -n "__openclaw_command_path_matches infer -- --container --profile --log-level" -a "image" -d 'Image generation and description' +complete -c openclaw -n "__openclaw_command_path_matches infer -- --container --profile --log-level" -a "audio" -d 'Audio transcription' +complete -c openclaw -n "__openclaw_command_path_matches infer -- --container --profile --log-level" -a "tts" -d 'Text to speech' +complete -c openclaw -n "__openclaw_command_path_matches infer -- --container --profile --log-level" -a "video" -d 'Video generation and description' +complete -c openclaw -n "__openclaw_command_path_matches infer -- --container --profile --log-level" -a "web" -d 'Web capabilities' +complete -c openclaw -n "__openclaw_command_path_matches infer -- --container --profile --log-level" -a "embedding" -d 'Embedding providers' +complete -c openclaw -n "__openclaw_command_path_matches infer list -- --container --profile --log-level" -l json -d 'Output JSON' +complete -c openclaw -n "__openclaw_command_path_matches infer inspect -- --container --profile --log-level --name" -l name -d 'Capability id' +complete -c openclaw -n "__openclaw_command_path_matches infer inspect -- --container --profile --log-level --name" -l json -d 'Output JSON' +complete -c openclaw -n "__openclaw_command_path_matches infer model -- --container --profile --log-level" -a "run" -d 'Run a one-shot model turn' +complete -c openclaw -n "__openclaw_command_path_matches infer model -- --container --profile --log-level" -a "list" -d 'List known models' +complete -c openclaw -n "__openclaw_command_path_matches infer model -- --container --profile --log-level" -a "inspect" -d 'Inspect one model catalog entry' +complete -c openclaw -n "__openclaw_command_path_matches infer model -- --container --profile --log-level" -a "providers" -d 'List model providers from the catalog' +complete -c openclaw -n "__openclaw_command_path_matches infer model -- --container --profile --log-level" -a "auth" -d 'Provider auth helpers' +complete -c openclaw -n "__openclaw_command_path_matches infer model run -- --container --profile --log-level --prompt --file --model --thinking" -l prompt -d 'Prompt text' +complete -c openclaw -n "__openclaw_command_path_matches infer model run -- --container --profile --log-level --prompt --file --model --thinking" -l file -d 'Image file' +complete -c openclaw -n "__openclaw_command_path_matches infer model run -- --container --profile --log-level --prompt --file --model --thinking" -l model -d 'Model override' +complete -c openclaw -n "__openclaw_command_path_matches infer model run -- --container --profile --log-level --prompt --file --model --thinking" -l thinking -d 'Thinking level override' +complete -c openclaw -n "__openclaw_command_path_matches infer model run -- --container --profile --log-level --prompt --file --model --thinking" -l local -d 'Force local execution' +complete -c openclaw -n "__openclaw_command_path_matches infer model run -- --container --profile --log-level --prompt --file --model --thinking" -l gateway -d 'Force gateway execution' +complete -c openclaw -n "__openclaw_command_path_matches infer model run -- --container --profile --log-level --prompt --file --model --thinking" -l json -d 'Output JSON' +complete -c openclaw -n "__openclaw_command_path_matches infer model list -- --container --profile --log-level" -l json -d 'Output JSON' +complete -c openclaw -n "__openclaw_command_path_matches infer model inspect -- --container --profile --log-level --model" -l model -d 'Model id' +complete -c openclaw -n "__openclaw_command_path_matches infer model inspect -- --container --profile --log-level --model" -l json -d 'Output JSON' +complete -c openclaw -n "__openclaw_command_path_matches infer model providers -- --container --profile --log-level" -l json -d 'Output JSON' +complete -c openclaw -n "__openclaw_command_path_matches infer model auth -- --container --profile --log-level" -a "login" -d 'Run provider auth login' +complete -c openclaw -n "__openclaw_command_path_matches infer model auth -- --container --profile --log-level" -a "logout" -d 'Remove saved auth profiles for one provider' +complete -c openclaw -n "__openclaw_command_path_matches infer model auth -- --container --profile --log-level" -a "status" -d 'Show configured auth state' +complete -c openclaw -n "__openclaw_command_path_matches infer model auth login -- --container --profile --log-level --provider --method" -l provider -d 'Provider id' +complete -c openclaw -n "__openclaw_command_path_matches infer model auth login -- --container --profile --log-level --provider --method" -l method -d 'Provider auth method id' +complete -c openclaw -n "__openclaw_command_path_matches infer model auth logout -- --container --profile --log-level --provider --agent" -l provider -d 'Provider id' +complete -c openclaw -n "__openclaw_command_path_matches infer model auth logout -- --container --profile --log-level --provider --agent" -l agent -d 'Agent id (default: configured default agent)' +complete -c openclaw -n "__openclaw_command_path_matches infer model auth logout -- --container --profile --log-level --provider --agent" -l json -d 'Output JSON' +complete -c openclaw -n "__openclaw_command_path_matches infer model auth status -- --container --profile --log-level" -l json -d 'Output JSON' +complete -c openclaw -n "__openclaw_command_path_matches infer image -- --container --profile --log-level" -a "generate" -d 'Generate images' +complete -c openclaw -n "__openclaw_command_path_matches infer image -- --container --profile --log-level" -a "edit" -d 'Edit images with one or more input files' +complete -c openclaw -n "__openclaw_command_path_matches infer image -- --container --profile --log-level" -a "describe" -d 'Describe one image file' +complete -c openclaw -n "__openclaw_command_path_matches infer image -- --container --profile --log-level" -a "describe-many" -d 'Describe multiple image files' +complete -c openclaw -n "__openclaw_command_path_matches infer image -- --container --profile --log-level" -a "providers" -d 'List image generation providers' +complete -c openclaw -n "__openclaw_command_path_matches infer image generate -- --container --profile --log-level --prompt --model --count --size --aspect-ratio --resolution --output-format --background --openai-background --openai-moderation --quality --timeout-ms --output" -l prompt -d 'Prompt text' +complete -c openclaw -n "__openclaw_command_path_matches infer image generate -- --container --profile --log-level --prompt --model --count --size --aspect-ratio --resolution --output-format --background --openai-background --openai-moderation --quality --timeout-ms --output" -l model -d 'Model override' +complete -c openclaw -n "__openclaw_command_path_matches infer image generate -- --container --profile --log-level --prompt --model --count --size --aspect-ratio --resolution --output-format --background --openai-background --openai-moderation --quality --timeout-ms --output" -l count -d 'Number of images' +complete -c openclaw -n "__openclaw_command_path_matches infer image generate -- --container --profile --log-level --prompt --model --count --size --aspect-ratio --resolution --output-format --background --openai-background --openai-moderation --quality --timeout-ms --output" -l size -d 'Size hint like 1024x1024' +complete -c openclaw -n "__openclaw_command_path_matches infer image generate -- --container --profile --log-level --prompt --model --count --size --aspect-ratio --resolution --output-format --background --openai-background --openai-moderation --quality --timeout-ms --output" -l aspect-ratio -d 'Aspect ratio hint like 16:9' +complete -c openclaw -n "__openclaw_command_path_matches infer image generate -- --container --profile --log-level --prompt --model --count --size --aspect-ratio --resolution --output-format --background --openai-background --openai-moderation --quality --timeout-ms --output" -l resolution -d 'Resolution hint: 1K, 2K, or 4K' +complete -c openclaw -n "__openclaw_command_path_matches infer image generate -- --container --profile --log-level --prompt --model --count --size --aspect-ratio --resolution --output-format --background --openai-background --openai-moderation --quality --timeout-ms --output" -l output-format -d 'Output format hint: png, jpeg, or webp' +complete -c openclaw -n "__openclaw_command_path_matches infer image generate -- --container --profile --log-level --prompt --model --count --size --aspect-ratio --resolution --output-format --background --openai-background --openai-moderation --quality --timeout-ms --output" -l background -d 'Background hint: transparent, opaque, or auto' +complete -c openclaw -n "__openclaw_command_path_matches infer image generate -- --container --profile --log-level --prompt --model --count --size --aspect-ratio --resolution --output-format --background --openai-background --openai-moderation --quality --timeout-ms --output" -l openai-background -d 'OpenAI background hint: transparent, opaque, or auto' +complete -c openclaw -n "__openclaw_command_path_matches infer image generate -- --container --profile --log-level --prompt --model --count --size --aspect-ratio --resolution --output-format --background --openai-background --openai-moderation --quality --timeout-ms --output" -l openai-moderation -d 'OpenAI moderation hint: low or auto' +complete -c openclaw -n "__openclaw_command_path_matches infer image generate -- --container --profile --log-level --prompt --model --count --size --aspect-ratio --resolution --output-format --background --openai-background --openai-moderation --quality --timeout-ms --output" -l quality -d 'Quality hint: low, medium, high, or auto' +complete -c openclaw -n "__openclaw_command_path_matches infer image generate -- --container --profile --log-level --prompt --model --count --size --aspect-ratio --resolution --output-format --background --openai-background --openai-moderation --quality --timeout-ms --output" -l timeout-ms -d 'Provider request timeout in milliseconds' +complete -c openclaw -n "__openclaw_command_path_matches infer image generate -- --container --profile --log-level --prompt --model --count --size --aspect-ratio --resolution --output-format --background --openai-background --openai-moderation --quality --timeout-ms --output" -l output -d 'Output path' +complete -c openclaw -n "__openclaw_command_path_matches infer image generate -- --container --profile --log-level --prompt --model --count --size --aspect-ratio --resolution --output-format --background --openai-background --openai-moderation --quality --timeout-ms --output" -l json -d 'Output JSON' +complete -c openclaw -n "__openclaw_command_path_matches infer image edit -- --container --profile --log-level --file --prompt --model --count --size --aspect-ratio --resolution --output-format --background --openai-background --openai-moderation --quality --timeout-ms --output" -l file -d 'Input file' +complete -c openclaw -n "__openclaw_command_path_matches infer image edit -- --container --profile --log-level --file --prompt --model --count --size --aspect-ratio --resolution --output-format --background --openai-background --openai-moderation --quality --timeout-ms --output" -l prompt -d 'Prompt text' +complete -c openclaw -n "__openclaw_command_path_matches infer image edit -- --container --profile --log-level --file --prompt --model --count --size --aspect-ratio --resolution --output-format --background --openai-background --openai-moderation --quality --timeout-ms --output" -l model -d 'Model override' +complete -c openclaw -n "__openclaw_command_path_matches infer image edit -- --container --profile --log-level --file --prompt --model --count --size --aspect-ratio --resolution --output-format --background --openai-background --openai-moderation --quality --timeout-ms --output" -l count -d 'Number of images' +complete -c openclaw -n "__openclaw_command_path_matches infer image edit -- --container --profile --log-level --file --prompt --model --count --size --aspect-ratio --resolution --output-format --background --openai-background --openai-moderation --quality --timeout-ms --output" -l size -d 'Size hint like 1024x1024' +complete -c openclaw -n "__openclaw_command_path_matches infer image edit -- --container --profile --log-level --file --prompt --model --count --size --aspect-ratio --resolution --output-format --background --openai-background --openai-moderation --quality --timeout-ms --output" -l aspect-ratio -d 'Aspect ratio hint like 16:9' +complete -c openclaw -n "__openclaw_command_path_matches infer image edit -- --container --profile --log-level --file --prompt --model --count --size --aspect-ratio --resolution --output-format --background --openai-background --openai-moderation --quality --timeout-ms --output" -l resolution -d 'Resolution hint: 1K, 2K, or 4K' +complete -c openclaw -n "__openclaw_command_path_matches infer image edit -- --container --profile --log-level --file --prompt --model --count --size --aspect-ratio --resolution --output-format --background --openai-background --openai-moderation --quality --timeout-ms --output" -l output-format -d 'Output format hint: png, jpeg, or webp' +complete -c openclaw -n "__openclaw_command_path_matches infer image edit -- --container --profile --log-level --file --prompt --model --count --size --aspect-ratio --resolution --output-format --background --openai-background --openai-moderation --quality --timeout-ms --output" -l background -d 'Background hint: transparent, opaque, or auto' +complete -c openclaw -n "__openclaw_command_path_matches infer image edit -- --container --profile --log-level --file --prompt --model --count --size --aspect-ratio --resolution --output-format --background --openai-background --openai-moderation --quality --timeout-ms --output" -l openai-background -d 'OpenAI background hint: transparent, opaque, or auto' +complete -c openclaw -n "__openclaw_command_path_matches infer image edit -- --container --profile --log-level --file --prompt --model --count --size --aspect-ratio --resolution --output-format --background --openai-background --openai-moderation --quality --timeout-ms --output" -l openai-moderation -d 'OpenAI moderation hint: low or auto' +complete -c openclaw -n "__openclaw_command_path_matches infer image edit -- --container --profile --log-level --file --prompt --model --count --size --aspect-ratio --resolution --output-format --background --openai-background --openai-moderation --quality --timeout-ms --output" -l quality -d 'Quality hint: low, medium, high, or auto' +complete -c openclaw -n "__openclaw_command_path_matches infer image edit -- --container --profile --log-level --file --prompt --model --count --size --aspect-ratio --resolution --output-format --background --openai-background --openai-moderation --quality --timeout-ms --output" -l timeout-ms -d 'Provider request timeout in milliseconds' +complete -c openclaw -n "__openclaw_command_path_matches infer image edit -- --container --profile --log-level --file --prompt --model --count --size --aspect-ratio --resolution --output-format --background --openai-background --openai-moderation --quality --timeout-ms --output" -l output -d 'Output path' +complete -c openclaw -n "__openclaw_command_path_matches infer image edit -- --container --profile --log-level --file --prompt --model --count --size --aspect-ratio --resolution --output-format --background --openai-background --openai-moderation --quality --timeout-ms --output" -l json -d 'Output JSON' +complete -c openclaw -n "__openclaw_command_path_matches infer image describe -- --container --profile --log-level --file --prompt --model --timeout-ms" -l file -d 'Image file' +complete -c openclaw -n "__openclaw_command_path_matches infer image describe -- --container --profile --log-level --file --prompt --model --timeout-ms" -l prompt -d 'Prompt hint' +complete -c openclaw -n "__openclaw_command_path_matches infer image describe -- --container --profile --log-level --file --prompt --model --timeout-ms" -l model -d 'Model override' +complete -c openclaw -n "__openclaw_command_path_matches infer image describe -- --container --profile --log-level --file --prompt --model --timeout-ms" -l timeout-ms -d 'Provider request timeout in milliseconds' +complete -c openclaw -n "__openclaw_command_path_matches infer image describe -- --container --profile --log-level --file --prompt --model --timeout-ms" -l json -d 'Output JSON' +complete -c openclaw -n "__openclaw_command_path_matches infer image describe-many -- --container --profile --log-level --file --prompt --model --timeout-ms" -l file -d 'Image file' +complete -c openclaw -n "__openclaw_command_path_matches infer image describe-many -- --container --profile --log-level --file --prompt --model --timeout-ms" -l prompt -d 'Prompt hint' +complete -c openclaw -n "__openclaw_command_path_matches infer image describe-many -- --container --profile --log-level --file --prompt --model --timeout-ms" -l model -d 'Model override' +complete -c openclaw -n "__openclaw_command_path_matches infer image describe-many -- --container --profile --log-level --file --prompt --model --timeout-ms" -l timeout-ms -d 'Provider request timeout in milliseconds' +complete -c openclaw -n "__openclaw_command_path_matches infer image describe-many -- --container --profile --log-level --file --prompt --model --timeout-ms" -l json -d 'Output JSON' +complete -c openclaw -n "__openclaw_command_path_matches infer image providers -- --container --profile --log-level" -l json -d 'Output JSON' +complete -c openclaw -n "__openclaw_command_path_matches infer audio -- --container --profile --log-level" -a "transcribe" -d 'Transcribe one audio file' +complete -c openclaw -n "__openclaw_command_path_matches infer audio -- --container --profile --log-level" -a "providers" -d 'List audio transcription providers' +complete -c openclaw -n "__openclaw_command_path_matches infer audio transcribe -- --container --profile --log-level --file --language --prompt --model" -l file -d 'Audio file' +complete -c openclaw -n "__openclaw_command_path_matches infer audio transcribe -- --container --profile --log-level --file --language --prompt --model" -l language -d 'Language hint' +complete -c openclaw -n "__openclaw_command_path_matches infer audio transcribe -- --container --profile --log-level --file --language --prompt --model" -l prompt -d 'Prompt hint' +complete -c openclaw -n "__openclaw_command_path_matches infer audio transcribe -- --container --profile --log-level --file --language --prompt --model" -l model -d 'Model override' +complete -c openclaw -n "__openclaw_command_path_matches infer audio transcribe -- --container --profile --log-level --file --language --prompt --model" -l json -d 'Output JSON' +complete -c openclaw -n "__openclaw_command_path_matches infer audio providers -- --container --profile --log-level" -l json -d 'Output JSON' +complete -c openclaw -n "__openclaw_command_path_matches infer tts -- --container --profile --log-level" -a "convert" -d 'Convert text to speech' +complete -c openclaw -n "__openclaw_command_path_matches infer tts -- --container --profile --log-level" -a "voices" -d 'List voices for a TTS provider' +complete -c openclaw -n "__openclaw_command_path_matches infer tts -- --container --profile --log-level" -a "providers" -d 'List speech providers' +complete -c openclaw -n "__openclaw_command_path_matches infer tts -- --container --profile --log-level" -a "personas" -d 'List TTS personas' +complete -c openclaw -n "__openclaw_command_path_matches infer tts -- --container --profile --log-level" -a "status" -d 'Show TTS status' +complete -c openclaw -n "__openclaw_command_path_matches infer tts -- --container --profile --log-level" -a "enable" -d 'Enable TTS' +complete -c openclaw -n "__openclaw_command_path_matches infer tts -- --container --profile --log-level" -a "disable" -d 'Disable TTS' +complete -c openclaw -n "__openclaw_command_path_matches infer tts -- --container --profile --log-level" -a "set-provider" -d 'Set the active TTS provider' +complete -c openclaw -n "__openclaw_command_path_matches infer tts -- --container --profile --log-level" -a "set-persona" -d 'Set the active TTS persona' +complete -c openclaw -n "__openclaw_command_path_matches infer tts convert -- --container --profile --log-level --text --channel --voice --model --output" -l text -d 'Input text' +complete -c openclaw -n "__openclaw_command_path_matches infer tts convert -- --container --profile --log-level --text --channel --voice --model --output" -l channel -d 'Channel hint' +complete -c openclaw -n "__openclaw_command_path_matches infer tts convert -- --container --profile --log-level --text --channel --voice --model --output" -l voice -d 'Voice hint' +complete -c openclaw -n "__openclaw_command_path_matches infer tts convert -- --container --profile --log-level --text --channel --voice --model --output" -l model -d 'Model override' +complete -c openclaw -n "__openclaw_command_path_matches infer tts convert -- --container --profile --log-level --text --channel --voice --model --output" -l output -d 'Output path' +complete -c openclaw -n "__openclaw_command_path_matches infer tts convert -- --container --profile --log-level --text --channel --voice --model --output" -l local -d 'Force local execution' +complete -c openclaw -n "__openclaw_command_path_matches infer tts convert -- --container --profile --log-level --text --channel --voice --model --output" -l gateway -d 'Force gateway execution' +complete -c openclaw -n "__openclaw_command_path_matches infer tts convert -- --container --profile --log-level --text --channel --voice --model --output" -l json -d 'Output JSON' +complete -c openclaw -n "__openclaw_command_path_matches infer tts voices -- --container --profile --log-level --provider" -l provider -d 'Speech provider id' +complete -c openclaw -n "__openclaw_command_path_matches infer tts voices -- --container --profile --log-level --provider" -l json -d 'Output JSON' +complete -c openclaw -n "__openclaw_command_path_matches infer tts providers -- --container --profile --log-level" -l local -d 'Force local execution' +complete -c openclaw -n "__openclaw_command_path_matches infer tts providers -- --container --profile --log-level" -l gateway -d 'Force gateway execution' +complete -c openclaw -n "__openclaw_command_path_matches infer tts providers -- --container --profile --log-level" -l json -d 'Output JSON' +complete -c openclaw -n "__openclaw_command_path_matches infer tts personas -- --container --profile --log-level" -l local -d 'Force local execution' +complete -c openclaw -n "__openclaw_command_path_matches infer tts personas -- --container --profile --log-level" -l gateway -d 'Force gateway execution' +complete -c openclaw -n "__openclaw_command_path_matches infer tts personas -- --container --profile --log-level" -l json -d 'Output JSON' +complete -c openclaw -n "__openclaw_command_path_matches infer tts status -- --container --profile --log-level" -l gateway -d 'Force gateway execution' +complete -c openclaw -n "__openclaw_command_path_matches infer tts status -- --container --profile --log-level" -l json -d 'Output JSON' +complete -c openclaw -n "__openclaw_command_path_matches infer tts enable -- --container --profile --log-level" -l local -d 'Force local execution' +complete -c openclaw -n "__openclaw_command_path_matches infer tts enable -- --container --profile --log-level" -l gateway -d 'Force gateway execution' +complete -c openclaw -n "__openclaw_command_path_matches infer tts enable -- --container --profile --log-level" -l json -d 'Output JSON' +complete -c openclaw -n "__openclaw_command_path_matches infer tts disable -- --container --profile --log-level" -l local -d 'Force local execution' +complete -c openclaw -n "__openclaw_command_path_matches infer tts disable -- --container --profile --log-level" -l gateway -d 'Force gateway execution' +complete -c openclaw -n "__openclaw_command_path_matches infer tts disable -- --container --profile --log-level" -l json -d 'Output JSON' +complete -c openclaw -n "__openclaw_command_path_matches infer tts set-provider -- --container --profile --log-level --provider" -l provider -d 'Speech provider id' +complete -c openclaw -n "__openclaw_command_path_matches infer tts set-provider -- --container --profile --log-level --provider" -l local -d 'Force local execution' +complete -c openclaw -n "__openclaw_command_path_matches infer tts set-provider -- --container --profile --log-level --provider" -l gateway -d 'Force gateway execution' +complete -c openclaw -n "__openclaw_command_path_matches infer tts set-provider -- --container --profile --log-level --provider" -l json -d 'Output JSON' +complete -c openclaw -n "__openclaw_command_path_matches infer tts set-persona -- --container --profile --log-level --persona" -l persona -d 'TTS persona id' +complete -c openclaw -n "__openclaw_command_path_matches infer tts set-persona -- --container --profile --log-level --persona" -l off -d 'Disable the active TTS persona' +complete -c openclaw -n "__openclaw_command_path_matches infer tts set-persona -- --container --profile --log-level --persona" -l local -d 'Force local execution' +complete -c openclaw -n "__openclaw_command_path_matches infer tts set-persona -- --container --profile --log-level --persona" -l gateway -d 'Force gateway execution' +complete -c openclaw -n "__openclaw_command_path_matches infer tts set-persona -- --container --profile --log-level --persona" -l json -d 'Output JSON' +complete -c openclaw -n "__openclaw_command_path_matches infer video -- --container --profile --log-level" -a "generate" -d 'Generate video' +complete -c openclaw -n "__openclaw_command_path_matches infer video -- --container --profile --log-level" -a "describe" -d 'Describe one video file' +complete -c openclaw -n "__openclaw_command_path_matches infer video -- --container --profile --log-level" -a "providers" -d 'List video generation and description providers' +complete -c openclaw -n "__openclaw_command_path_matches infer video generate -- --container --profile --log-level --prompt --model --size --aspect-ratio --resolution --duration --timeout-ms --output" -l prompt -d 'Prompt text' +complete -c openclaw -n "__openclaw_command_path_matches infer video generate -- --container --profile --log-level --prompt --model --size --aspect-ratio --resolution --duration --timeout-ms --output" -l model -d 'Model override' +complete -c openclaw -n "__openclaw_command_path_matches infer video generate -- --container --profile --log-level --prompt --model --size --aspect-ratio --resolution --duration --timeout-ms --output" -l size -d 'Size hint like 1280x720' +complete -c openclaw -n "__openclaw_command_path_matches infer video generate -- --container --profile --log-level --prompt --model --size --aspect-ratio --resolution --duration --timeout-ms --output" -l aspect-ratio -d 'Aspect ratio hint like 16:9' +complete -c openclaw -n "__openclaw_command_path_matches infer video generate -- --container --profile --log-level --prompt --model --size --aspect-ratio --resolution --duration --timeout-ms --output" -l resolution -d 'Resolution hint: 360P, 480P, 540P, 720P, 768P, or 1080P' +complete -c openclaw -n "__openclaw_command_path_matches infer video generate -- --container --profile --log-level --prompt --model --size --aspect-ratio --resolution --duration --timeout-ms --output" -l duration -d 'Target duration in seconds' +complete -c openclaw -n "__openclaw_command_path_matches infer video generate -- --container --profile --log-level --prompt --model --size --aspect-ratio --resolution --duration --timeout-ms --output" -l audio -d 'Enable generated audio when supported' +complete -c openclaw -n "__openclaw_command_path_matches infer video generate -- --container --profile --log-level --prompt --model --size --aspect-ratio --resolution --duration --timeout-ms --output" -l watermark -d 'Request provider watermark when supported' +complete -c openclaw -n "__openclaw_command_path_matches infer video generate -- --container --profile --log-level --prompt --model --size --aspect-ratio --resolution --duration --timeout-ms --output" -l timeout-ms -d 'Provider request timeout in milliseconds' +complete -c openclaw -n "__openclaw_command_path_matches infer video generate -- --container --profile --log-level --prompt --model --size --aspect-ratio --resolution --duration --timeout-ms --output" -l output -d 'Output path' +complete -c openclaw -n "__openclaw_command_path_matches infer video generate -- --container --profile --log-level --prompt --model --size --aspect-ratio --resolution --duration --timeout-ms --output" -l json -d 'Output JSON' +complete -c openclaw -n "__openclaw_command_path_matches infer video describe -- --container --profile --log-level --file --model" -l file -d 'Video file' +complete -c openclaw -n "__openclaw_command_path_matches infer video describe -- --container --profile --log-level --file --model" -l model -d 'Model override' +complete -c openclaw -n "__openclaw_command_path_matches infer video describe -- --container --profile --log-level --file --model" -l json -d 'Output JSON' +complete -c openclaw -n "__openclaw_command_path_matches infer video providers -- --container --profile --log-level" -l json -d 'Output JSON' +complete -c openclaw -n "__openclaw_command_path_matches infer web -- --container --profile --log-level" -a "search" -d 'Run web search' +complete -c openclaw -n "__openclaw_command_path_matches infer web -- --container --profile --log-level" -a "fetch" -d 'Fetch one URL' +complete -c openclaw -n "__openclaw_command_path_matches infer web -- --container --profile --log-level" -a "providers" -d 'List web providers' +complete -c openclaw -n "__openclaw_command_path_matches infer web search -- --container --profile --log-level --query --provider --limit" -l query -d 'Search query' +complete -c openclaw -n "__openclaw_command_path_matches infer web search -- --container --profile --log-level --query --provider --limit" -l provider -d 'Provider id' +complete -c openclaw -n "__openclaw_command_path_matches infer web search -- --container --profile --log-level --query --provider --limit" -l limit -d 'Result limit' +complete -c openclaw -n "__openclaw_command_path_matches infer web search -- --container --profile --log-level --query --provider --limit" -l json -d 'Output JSON' +complete -c openclaw -n "__openclaw_command_path_matches infer web fetch -- --container --profile --log-level --url --provider --format" -l url -d 'URL' +complete -c openclaw -n "__openclaw_command_path_matches infer web fetch -- --container --profile --log-level --url --provider --format" -l provider -d 'Provider id' +complete -c openclaw -n "__openclaw_command_path_matches infer web fetch -- --container --profile --log-level --url --provider --format" -l format -d 'Format hint' +complete -c openclaw -n "__openclaw_command_path_matches infer web fetch -- --container --profile --log-level --url --provider --format" -l json -d 'Output JSON' +complete -c openclaw -n "__openclaw_command_path_matches infer web providers -- --container --profile --log-level" -l json -d 'Output JSON' +complete -c openclaw -n "__openclaw_command_path_matches infer embedding -- --container --profile --log-level" -a "create" -d 'Create embeddings' +complete -c openclaw -n "__openclaw_command_path_matches infer embedding -- --container --profile --log-level" -a "providers" -d 'List embedding providers' +complete -c openclaw -n "__openclaw_command_path_matches infer embedding create -- --container --profile --log-level --text --provider --model" -l text -d 'Input text' +complete -c openclaw -n "__openclaw_command_path_matches infer embedding create -- --container --profile --log-level --text --provider --model" -l provider -d 'Provider id' +complete -c openclaw -n "__openclaw_command_path_matches infer embedding create -- --container --profile --log-level --text --provider --model" -l model -d 'Model override' +complete -c openclaw -n "__openclaw_command_path_matches infer embedding create -- --container --profile --log-level --text --provider --model" -l json -d 'Output JSON' +complete -c openclaw -n "__openclaw_command_path_matches infer embedding providers -- --container --profile --log-level" -l json -d 'Output JSON' +complete -c openclaw -n "__openclaw_command_path_matches approvals -- --container --profile --log-level" -a "get" -d 'Fetch exec approvals snapshot' +complete -c openclaw -n "__openclaw_command_path_matches approvals -- --container --profile --log-level" -a "set" -d 'Replace exec approvals with a JSON file' +complete -c openclaw -n "__openclaw_command_path_matches approvals -- --container --profile --log-level" -a "allowlist" -d 'Edit the per-agent allowlist' +complete -c openclaw -n "__openclaw_command_path_matches approvals get -- --container --profile --log-level --node --url --token --timeout" -l node -d 'Target node id/name/IP' +complete -c openclaw -n "__openclaw_command_path_matches approvals get -- --container --profile --log-level --node --url --token --timeout" -l gateway -d 'Force gateway approvals' +complete -c openclaw -n "__openclaw_command_path_matches approvals get -- --container --profile --log-level --node --url --token --timeout" -l url -d 'Gateway WebSocket URL (defaults to gateway.remote.url when configured)' +complete -c openclaw -n "__openclaw_command_path_matches approvals get -- --container --profile --log-level --node --url --token --timeout" -l token -d 'Gateway token (if required)' +complete -c openclaw -n "__openclaw_command_path_matches approvals get -- --container --profile --log-level --node --url --token --timeout" -l timeout -d 'Timeout in ms' +complete -c openclaw -n "__openclaw_command_path_matches approvals get -- --container --profile --log-level --node --url --token --timeout" -l json -d 'Output JSON' +complete -c openclaw -n "__openclaw_command_path_matches approvals set -- --container --profile --log-level --node --file --url --token --timeout" -l node -d 'Target node id/name/IP' +complete -c openclaw -n "__openclaw_command_path_matches approvals set -- --container --profile --log-level --node --file --url --token --timeout" -l gateway -d 'Force gateway approvals' +complete -c openclaw -n "__openclaw_command_path_matches approvals set -- --container --profile --log-level --node --file --url --token --timeout" -l file -d 'Path to JSON file to upload' +complete -c openclaw -n "__openclaw_command_path_matches approvals set -- --container --profile --log-level --node --file --url --token --timeout" -l stdin -d 'Read JSON from stdin' +complete -c openclaw -n "__openclaw_command_path_matches approvals set -- --container --profile --log-level --node --file --url --token --timeout" -l url -d 'Gateway WebSocket URL (defaults to gateway.remote.url when configured)' +complete -c openclaw -n "__openclaw_command_path_matches approvals set -- --container --profile --log-level --node --file --url --token --timeout" -l token -d 'Gateway token (if required)' +complete -c openclaw -n "__openclaw_command_path_matches approvals set -- --container --profile --log-level --node --file --url --token --timeout" -l timeout -d 'Timeout in ms' +complete -c openclaw -n "__openclaw_command_path_matches approvals set -- --container --profile --log-level --node --file --url --token --timeout" -l json -d 'Output JSON' +complete -c openclaw -n "__openclaw_command_path_matches approvals allowlist -- --container --profile --log-level" -a "add" -d 'Add a glob pattern to an allowlist' +complete -c openclaw -n "__openclaw_command_path_matches approvals allowlist -- --container --profile --log-level" -a "remove" -d 'Remove a glob pattern from an allowlist' +complete -c openclaw -n "__openclaw_command_path_matches approvals allowlist add -- --container --profile --log-level --node --agent --url --token --timeout" -l node -d 'Target node id/name/IP' +complete -c openclaw -n "__openclaw_command_path_matches approvals allowlist add -- --container --profile --log-level --node --agent --url --token --timeout" -l gateway -d 'Force gateway approvals' +complete -c openclaw -n "__openclaw_command_path_matches approvals allowlist add -- --container --profile --log-level --node --agent --url --token --timeout" -l agent -d 'Agent id (defaults to "*")' +complete -c openclaw -n "__openclaw_command_path_matches approvals allowlist add -- --container --profile --log-level --node --agent --url --token --timeout" -l url -d 'Gateway WebSocket URL (defaults to gateway.remote.url when configured)' +complete -c openclaw -n "__openclaw_command_path_matches approvals allowlist add -- --container --profile --log-level --node --agent --url --token --timeout" -l token -d 'Gateway token (if required)' +complete -c openclaw -n "__openclaw_command_path_matches approvals allowlist add -- --container --profile --log-level --node --agent --url --token --timeout" -l timeout -d 'Timeout in ms' +complete -c openclaw -n "__openclaw_command_path_matches approvals allowlist add -- --container --profile --log-level --node --agent --url --token --timeout" -l json -d 'Output JSON' +complete -c openclaw -n "__openclaw_command_path_matches approvals allowlist remove -- --container --profile --log-level --node --agent --url --token --timeout" -l node -d 'Target node id/name/IP' +complete -c openclaw -n "__openclaw_command_path_matches approvals allowlist remove -- --container --profile --log-level --node --agent --url --token --timeout" -l gateway -d 'Force gateway approvals' +complete -c openclaw -n "__openclaw_command_path_matches approvals allowlist remove -- --container --profile --log-level --node --agent --url --token --timeout" -l agent -d 'Agent id (defaults to "*")' +complete -c openclaw -n "__openclaw_command_path_matches approvals allowlist remove -- --container --profile --log-level --node --agent --url --token --timeout" -l url -d 'Gateway WebSocket URL (defaults to gateway.remote.url when configured)' +complete -c openclaw -n "__openclaw_command_path_matches approvals allowlist remove -- --container --profile --log-level --node --agent --url --token --timeout" -l token -d 'Gateway token (if required)' +complete -c openclaw -n "__openclaw_command_path_matches approvals allowlist remove -- --container --profile --log-level --node --agent --url --token --timeout" -l timeout -d 'Timeout in ms' +complete -c openclaw -n "__openclaw_command_path_matches approvals allowlist remove -- --container --profile --log-level --node --agent --url --token --timeout" -l json -d 'Output JSON' +complete -c openclaw -n "__openclaw_command_path_matches exec-policy -- --container --profile --log-level" -a "show" -d 'Show the local config policy, host approvals, and effective merge' +complete -c openclaw -n "__openclaw_command_path_matches exec-policy -- --container --profile --log-level" -a "preset" -d 'Apply a synchronized preset: "yolo", "cautious", or "deny-all"' +complete -c openclaw -n "__openclaw_command_path_matches exec-policy -- --container --profile --log-level" -a "set" -d 'Synchronize local config and host approvals using explicit values' +complete -c openclaw -n "__openclaw_command_path_matches exec-policy show -- --container --profile --log-level" -l json -d 'Output as JSON' +complete -c openclaw -n "__openclaw_command_path_matches exec-policy preset -- --container --profile --log-level" -l json -d 'Output as JSON' +complete -c openclaw -n "__openclaw_command_path_matches exec-policy set -- --container --profile --log-level --host --security --ask --ask-fallback" -l host -d 'Exec host target: auto|sandbox|gateway|node' +complete -c openclaw -n "__openclaw_command_path_matches exec-policy set -- --container --profile --log-level --host --security --ask --ask-fallback" -l security -d 'Exec security: deny|allowlist|full' +complete -c openclaw -n "__openclaw_command_path_matches exec-policy set -- --container --profile --log-level --host --security --ask --ask-fallback" -l ask -d 'Exec ask mode: off|on-miss|always' +complete -c openclaw -n "__openclaw_command_path_matches exec-policy set -- --container --profile --log-level --host --security --ask --ask-fallback" -l ask-fallback -d 'Host approvals fallback: deny|allowlist|full' +complete -c openclaw -n "__openclaw_command_path_matches exec-policy set -- --container --profile --log-level --host --security --ask --ask-fallback" -l json -d 'Output as JSON' +complete -c openclaw -n "__openclaw_command_path_matches nodes -- --container --profile --log-level" -a "status" -d 'List known nodes with connection status and capabilities' +complete -c openclaw -n "__openclaw_command_path_matches nodes -- --container --profile --log-level" -a "describe" -d 'Describe a node (capabilities + supported invoke commands)' +complete -c openclaw -n "__openclaw_command_path_matches nodes -- --container --profile --log-level" -a "list" -d 'List pending and paired nodes' +complete -c openclaw -n "__openclaw_command_path_matches nodes -- --container --profile --log-level" -a "pending" -d 'List pending pairing requests' +complete -c openclaw -n "__openclaw_command_path_matches nodes -- --container --profile --log-level" -a "approve" -d 'Approve a pending pairing request' +complete -c openclaw -n "__openclaw_command_path_matches nodes -- --container --profile --log-level" -a "reject" -d 'Reject a pending pairing request' +complete -c openclaw -n "__openclaw_command_path_matches nodes -- --container --profile --log-level" -a "remove" -d 'Remove a paired node entry' +complete -c openclaw -n "__openclaw_command_path_matches nodes -- --container --profile --log-level" -a "rename" -d 'Rename a paired node (display name override)' +complete -c openclaw -n "__openclaw_command_path_matches nodes -- --container --profile --log-level" -a "invoke" -d 'Invoke a command on a paired node' +complete -c openclaw -n "__openclaw_command_path_matches nodes -- --container --profile --log-level" -a "notify" -d 'Send a local notification on a node (mac only)' +complete -c openclaw -n "__openclaw_command_path_matches nodes -- --container --profile --log-level" -a "push" -d 'Send an APNs test push to an iOS node' +complete -c openclaw -n "__openclaw_command_path_matches nodes -- --container --profile --log-level" -a "camera" -d 'Capture camera media from a paired node' +complete -c openclaw -n "__openclaw_command_path_matches nodes -- --container --profile --log-level" -a "screen" -d 'Capture screen recordings from a paired node' +complete -c openclaw -n "__openclaw_command_path_matches nodes -- --container --profile --log-level" -a "location" -d 'Fetch location from a paired node' +complete -c openclaw -n "__openclaw_command_path_matches nodes status -- --container --profile --log-level --last-connected --url --token --timeout" -l connected -d 'Only show connected nodes' +complete -c openclaw -n "__openclaw_command_path_matches nodes status -- --container --profile --log-level --last-connected --url --token --timeout" -l last-connected -d 'Only show nodes connected within duration (e.g. 24h)' +complete -c openclaw -n "__openclaw_command_path_matches nodes status -- --container --profile --log-level --last-connected --url --token --timeout" -l url -d 'Gateway WebSocket URL (defaults to gateway.remote.url when configured)' +complete -c openclaw -n "__openclaw_command_path_matches nodes status -- --container --profile --log-level --last-connected --url --token --timeout" -l token -d 'Gateway token (if required)' +complete -c openclaw -n "__openclaw_command_path_matches nodes status -- --container --profile --log-level --last-connected --url --token --timeout" -l timeout -d 'Timeout in ms' +complete -c openclaw -n "__openclaw_command_path_matches nodes status -- --container --profile --log-level --last-connected --url --token --timeout" -l json -d 'Output JSON' +complete -c openclaw -n "__openclaw_command_path_matches nodes describe -- --container --profile --log-level --node --url --token --timeout" -l node -d 'Node id, name, or IP' +complete -c openclaw -n "__openclaw_command_path_matches nodes describe -- --container --profile --log-level --node --url --token --timeout" -l url -d 'Gateway WebSocket URL (defaults to gateway.remote.url when configured)' +complete -c openclaw -n "__openclaw_command_path_matches nodes describe -- --container --profile --log-level --node --url --token --timeout" -l token -d 'Gateway token (if required)' +complete -c openclaw -n "__openclaw_command_path_matches nodes describe -- --container --profile --log-level --node --url --token --timeout" -l timeout -d 'Timeout in ms' +complete -c openclaw -n "__openclaw_command_path_matches nodes describe -- --container --profile --log-level --node --url --token --timeout" -l json -d 'Output JSON' +complete -c openclaw -n "__openclaw_command_path_matches nodes list -- --container --profile --log-level --last-connected --url --token --timeout" -l connected -d 'Only show connected nodes' +complete -c openclaw -n "__openclaw_command_path_matches nodes list -- --container --profile --log-level --last-connected --url --token --timeout" -l last-connected -d 'Only show nodes connected within duration (e.g. 24h)' +complete -c openclaw -n "__openclaw_command_path_matches nodes list -- --container --profile --log-level --last-connected --url --token --timeout" -l url -d 'Gateway WebSocket URL (defaults to gateway.remote.url when configured)' +complete -c openclaw -n "__openclaw_command_path_matches nodes list -- --container --profile --log-level --last-connected --url --token --timeout" -l token -d 'Gateway token (if required)' +complete -c openclaw -n "__openclaw_command_path_matches nodes list -- --container --profile --log-level --last-connected --url --token --timeout" -l timeout -d 'Timeout in ms' +complete -c openclaw -n "__openclaw_command_path_matches nodes list -- --container --profile --log-level --last-connected --url --token --timeout" -l json -d 'Output JSON' +complete -c openclaw -n "__openclaw_command_path_matches nodes pending -- --container --profile --log-level --url --token --timeout" -l url -d 'Gateway WebSocket URL (defaults to gateway.remote.url when configured)' +complete -c openclaw -n "__openclaw_command_path_matches nodes pending -- --container --profile --log-level --url --token --timeout" -l token -d 'Gateway token (if required)' +complete -c openclaw -n "__openclaw_command_path_matches nodes pending -- --container --profile --log-level --url --token --timeout" -l timeout -d 'Timeout in ms' +complete -c openclaw -n "__openclaw_command_path_matches nodes pending -- --container --profile --log-level --url --token --timeout" -l json -d 'Output JSON' +complete -c openclaw -n "__openclaw_command_path_matches nodes approve -- --container --profile --log-level --url --token --timeout" -l url -d 'Gateway WebSocket URL (defaults to gateway.remote.url when configured)' +complete -c openclaw -n "__openclaw_command_path_matches nodes approve -- --container --profile --log-level --url --token --timeout" -l token -d 'Gateway token (if required)' +complete -c openclaw -n "__openclaw_command_path_matches nodes approve -- --container --profile --log-level --url --token --timeout" -l timeout -d 'Timeout in ms' +complete -c openclaw -n "__openclaw_command_path_matches nodes approve -- --container --profile --log-level --url --token --timeout" -l json -d 'Output JSON' +complete -c openclaw -n "__openclaw_command_path_matches nodes reject -- --container --profile --log-level --url --token --timeout" -l url -d 'Gateway WebSocket URL (defaults to gateway.remote.url when configured)' +complete -c openclaw -n "__openclaw_command_path_matches nodes reject -- --container --profile --log-level --url --token --timeout" -l token -d 'Gateway token (if required)' +complete -c openclaw -n "__openclaw_command_path_matches nodes reject -- --container --profile --log-level --url --token --timeout" -l timeout -d 'Timeout in ms' +complete -c openclaw -n "__openclaw_command_path_matches nodes reject -- --container --profile --log-level --url --token --timeout" -l json -d 'Output JSON' +complete -c openclaw -n "__openclaw_command_path_matches nodes remove -- --container --profile --log-level --node --url --token --timeout" -l node -d 'Node id, name, or IP' +complete -c openclaw -n "__openclaw_command_path_matches nodes remove -- --container --profile --log-level --node --url --token --timeout" -l url -d 'Gateway WebSocket URL (defaults to gateway.remote.url when configured)' +complete -c openclaw -n "__openclaw_command_path_matches nodes remove -- --container --profile --log-level --node --url --token --timeout" -l token -d 'Gateway token (if required)' +complete -c openclaw -n "__openclaw_command_path_matches nodes remove -- --container --profile --log-level --node --url --token --timeout" -l timeout -d 'Timeout in ms' +complete -c openclaw -n "__openclaw_command_path_matches nodes remove -- --container --profile --log-level --node --url --token --timeout" -l json -d 'Output JSON' +complete -c openclaw -n "__openclaw_command_path_matches nodes rename -- --container --profile --log-level --node --name --url --token --timeout" -l node -d 'Node id, name, or IP' +complete -c openclaw -n "__openclaw_command_path_matches nodes rename -- --container --profile --log-level --node --name --url --token --timeout" -l name -d 'New display name' +complete -c openclaw -n "__openclaw_command_path_matches nodes rename -- --container --profile --log-level --node --name --url --token --timeout" -l url -d 'Gateway WebSocket URL (defaults to gateway.remote.url when configured)' +complete -c openclaw -n "__openclaw_command_path_matches nodes rename -- --container --profile --log-level --node --name --url --token --timeout" -l token -d 'Gateway token (if required)' +complete -c openclaw -n "__openclaw_command_path_matches nodes rename -- --container --profile --log-level --node --name --url --token --timeout" -l timeout -d 'Timeout in ms' +complete -c openclaw -n "__openclaw_command_path_matches nodes rename -- --container --profile --log-level --node --name --url --token --timeout" -l json -d 'Output JSON' +complete -c openclaw -n "__openclaw_command_path_matches nodes invoke -- --container --profile --log-level --node --command --params --invoke-timeout --idempotency-key --url --token --timeout" -l node -d 'Node id, name, or IP' +complete -c openclaw -n "__openclaw_command_path_matches nodes invoke -- --container --profile --log-level --node --command --params --invoke-timeout --idempotency-key --url --token --timeout" -l command -d 'Command (e.g. canvas.eval)' +complete -c openclaw -n "__openclaw_command_path_matches nodes invoke -- --container --profile --log-level --node --command --params --invoke-timeout --idempotency-key --url --token --timeout" -l params -d 'JSON object string for params' +complete -c openclaw -n "__openclaw_command_path_matches nodes invoke -- --container --profile --log-level --node --command --params --invoke-timeout --idempotency-key --url --token --timeout" -l invoke-timeout -d 'Node invoke timeout in ms (default 15000)' +complete -c openclaw -n "__openclaw_command_path_matches nodes invoke -- --container --profile --log-level --node --command --params --invoke-timeout --idempotency-key --url --token --timeout" -l idempotency-key -d 'Idempotency key (optional)' +complete -c openclaw -n "__openclaw_command_path_matches nodes invoke -- --container --profile --log-level --node --command --params --invoke-timeout --idempotency-key --url --token --timeout" -l url -d 'Gateway WebSocket URL (defaults to gateway.remote.url when configured)' +complete -c openclaw -n "__openclaw_command_path_matches nodes invoke -- --container --profile --log-level --node --command --params --invoke-timeout --idempotency-key --url --token --timeout" -l token -d 'Gateway token (if required)' +complete -c openclaw -n "__openclaw_command_path_matches nodes invoke -- --container --profile --log-level --node --command --params --invoke-timeout --idempotency-key --url --token --timeout" -l timeout -d 'Timeout in ms' +complete -c openclaw -n "__openclaw_command_path_matches nodes invoke -- --container --profile --log-level --node --command --params --invoke-timeout --idempotency-key --url --token --timeout" -l json -d 'Output JSON' +complete -c openclaw -n "__openclaw_command_path_matches nodes notify -- --container --profile --log-level --node --title --body --sound --priority --delivery --invoke-timeout --url --token --timeout" -l node -d 'Node id, name, or IP' +complete -c openclaw -n "__openclaw_command_path_matches nodes notify -- --container --profile --log-level --node --title --body --sound --priority --delivery --invoke-timeout --url --token --timeout" -l title -d 'Notification title' +complete -c openclaw -n "__openclaw_command_path_matches nodes notify -- --container --profile --log-level --node --title --body --sound --priority --delivery --invoke-timeout --url --token --timeout" -l body -d 'Notification body' +complete -c openclaw -n "__openclaw_command_path_matches nodes notify -- --container --profile --log-level --node --title --body --sound --priority --delivery --invoke-timeout --url --token --timeout" -l sound -d 'Notification sound' +complete -c openclaw -n "__openclaw_command_path_matches nodes notify -- --container --profile --log-level --node --title --body --sound --priority --delivery --invoke-timeout --url --token --timeout" -l priority -d 'Notification priority' +complete -c openclaw -n "__openclaw_command_path_matches nodes notify -- --container --profile --log-level --node --title --body --sound --priority --delivery --invoke-timeout --url --token --timeout" -l delivery -d 'Delivery mode' +complete -c openclaw -n "__openclaw_command_path_matches nodes notify -- --container --profile --log-level --node --title --body --sound --priority --delivery --invoke-timeout --url --token --timeout" -l invoke-timeout -d 'Node invoke timeout in ms (default 15000)' +complete -c openclaw -n "__openclaw_command_path_matches nodes notify -- --container --profile --log-level --node --title --body --sound --priority --delivery --invoke-timeout --url --token --timeout" -l url -d 'Gateway WebSocket URL (defaults to gateway.remote.url when configured)' +complete -c openclaw -n "__openclaw_command_path_matches nodes notify -- --container --profile --log-level --node --title --body --sound --priority --delivery --invoke-timeout --url --token --timeout" -l token -d 'Gateway token (if required)' +complete -c openclaw -n "__openclaw_command_path_matches nodes notify -- --container --profile --log-level --node --title --body --sound --priority --delivery --invoke-timeout --url --token --timeout" -l timeout -d 'Timeout in ms' +complete -c openclaw -n "__openclaw_command_path_matches nodes notify -- --container --profile --log-level --node --title --body --sound --priority --delivery --invoke-timeout --url --token --timeout" -l json -d 'Output JSON' +complete -c openclaw -n "__openclaw_command_path_matches nodes push -- --container --profile --log-level --node --title --body --environment --url --token --timeout" -l node -d 'Node id, name, or IP' +complete -c openclaw -n "__openclaw_command_path_matches nodes push -- --container --profile --log-level --node --title --body --environment --url --token --timeout" -l title -d 'Push title' +complete -c openclaw -n "__openclaw_command_path_matches nodes push -- --container --profile --log-level --node --title --body --environment --url --token --timeout" -l body -d 'Push body' +complete -c openclaw -n "__openclaw_command_path_matches nodes push -- --container --profile --log-level --node --title --body --environment --url --token --timeout" -l environment -d 'Override APNs environment' +complete -c openclaw -n "__openclaw_command_path_matches nodes push -- --container --profile --log-level --node --title --body --environment --url --token --timeout" -l url -d 'Gateway WebSocket URL (defaults to gateway.remote.url when configured)' +complete -c openclaw -n "__openclaw_command_path_matches nodes push -- --container --profile --log-level --node --title --body --environment --url --token --timeout" -l token -d 'Gateway token (if required)' +complete -c openclaw -n "__openclaw_command_path_matches nodes push -- --container --profile --log-level --node --title --body --environment --url --token --timeout" -l timeout -d 'Timeout in ms' +complete -c openclaw -n "__openclaw_command_path_matches nodes push -- --container --profile --log-level --node --title --body --environment --url --token --timeout" -l json -d 'Output JSON' +complete -c openclaw -n "__openclaw_command_path_matches nodes camera -- --container --profile --log-level" -a "list" -d 'List available cameras on a node' +complete -c openclaw -n "__openclaw_command_path_matches nodes camera -- --container --profile --log-level" -a "snap" -d 'Capture a photo from a node camera (prints the saved path)' +complete -c openclaw -n "__openclaw_command_path_matches nodes camera -- --container --profile --log-level" -a "clip" -d 'Capture a short video clip from a node camera (prints the saved path)' +complete -c openclaw -n "__openclaw_command_path_matches nodes camera list -- --container --profile --log-level --node --url --token --timeout" -l node -d 'Node id, name, or IP' +complete -c openclaw -n "__openclaw_command_path_matches nodes camera list -- --container --profile --log-level --node --url --token --timeout" -l url -d 'Gateway WebSocket URL (defaults to gateway.remote.url when configured)' +complete -c openclaw -n "__openclaw_command_path_matches nodes camera list -- --container --profile --log-level --node --url --token --timeout" -l token -d 'Gateway token (if required)' +complete -c openclaw -n "__openclaw_command_path_matches nodes camera list -- --container --profile --log-level --node --url --token --timeout" -l timeout -d 'Timeout in ms' +complete -c openclaw -n "__openclaw_command_path_matches nodes camera list -- --container --profile --log-level --node --url --token --timeout" -l json -d 'Output JSON' +complete -c openclaw -n "__openclaw_command_path_matches nodes camera snap -- --container --profile --log-level --node --facing --device-id --max-width --quality --delay-ms --invoke-timeout --url --token --timeout" -l node -d 'Node id, name, or IP' +complete -c openclaw -n "__openclaw_command_path_matches nodes camera snap -- --container --profile --log-level --node --facing --device-id --max-width --quality --delay-ms --invoke-timeout --url --token --timeout" -l facing -d 'Camera facing' +complete -c openclaw -n "__openclaw_command_path_matches nodes camera snap -- --container --profile --log-level --node --facing --device-id --max-width --quality --delay-ms --invoke-timeout --url --token --timeout" -l device-id -d 'Camera device id (from nodes camera list)' +complete -c openclaw -n "__openclaw_command_path_matches nodes camera snap -- --container --profile --log-level --node --facing --device-id --max-width --quality --delay-ms --invoke-timeout --url --token --timeout" -l max-width -d 'Max width in px (optional)' +complete -c openclaw -n "__openclaw_command_path_matches nodes camera snap -- --container --profile --log-level --node --facing --device-id --max-width --quality --delay-ms --invoke-timeout --url --token --timeout" -l quality -d 'JPEG quality (default 0.9)' +complete -c openclaw -n "__openclaw_command_path_matches nodes camera snap -- --container --profile --log-level --node --facing --device-id --max-width --quality --delay-ms --invoke-timeout --url --token --timeout" -l delay-ms -d 'Delay before capture in ms (macOS default 2000)' +complete -c openclaw -n "__openclaw_command_path_matches nodes camera snap -- --container --profile --log-level --node --facing --device-id --max-width --quality --delay-ms --invoke-timeout --url --token --timeout" -l invoke-timeout -d 'Node invoke timeout in ms (default 20000)' +complete -c openclaw -n "__openclaw_command_path_matches nodes camera snap -- --container --profile --log-level --node --facing --device-id --max-width --quality --delay-ms --invoke-timeout --url --token --timeout" -l url -d 'Gateway WebSocket URL (defaults to gateway.remote.url when configured)' +complete -c openclaw -n "__openclaw_command_path_matches nodes camera snap -- --container --profile --log-level --node --facing --device-id --max-width --quality --delay-ms --invoke-timeout --url --token --timeout" -l token -d 'Gateway token (if required)' +complete -c openclaw -n "__openclaw_command_path_matches nodes camera snap -- --container --profile --log-level --node --facing --device-id --max-width --quality --delay-ms --invoke-timeout --url --token --timeout" -l timeout -d 'Timeout in ms' +complete -c openclaw -n "__openclaw_command_path_matches nodes camera snap -- --container --profile --log-level --node --facing --device-id --max-width --quality --delay-ms --invoke-timeout --url --token --timeout" -l json -d 'Output JSON' +complete -c openclaw -n "__openclaw_command_path_matches nodes camera clip -- --container --profile --log-level --node --facing --device-id --duration --invoke-timeout --url --token --timeout" -l node -d 'Node id, name, or IP' +complete -c openclaw -n "__openclaw_command_path_matches nodes camera clip -- --container --profile --log-level --node --facing --device-id --duration --invoke-timeout --url --token --timeout" -l facing -d 'Camera facing' +complete -c openclaw -n "__openclaw_command_path_matches nodes camera clip -- --container --profile --log-level --node --facing --device-id --duration --invoke-timeout --url --token --timeout" -l device-id -d 'Camera device id (from nodes camera list)' +complete -c openclaw -n "__openclaw_command_path_matches nodes camera clip -- --container --profile --log-level --node --facing --device-id --duration --invoke-timeout --url --token --timeout" -l duration -d 'Duration (default 3000ms; supports ms/s/m, e.g. 10s)' +complete -c openclaw -n "__openclaw_command_path_matches nodes camera clip -- --container --profile --log-level --node --facing --device-id --duration --invoke-timeout --url --token --timeout" -l no-audio -d 'Disable audio capture' +complete -c openclaw -n "__openclaw_command_path_matches nodes camera clip -- --container --profile --log-level --node --facing --device-id --duration --invoke-timeout --url --token --timeout" -l invoke-timeout -d 'Node invoke timeout in ms (default 90000)' +complete -c openclaw -n "__openclaw_command_path_matches nodes camera clip -- --container --profile --log-level --node --facing --device-id --duration --invoke-timeout --url --token --timeout" -l url -d 'Gateway WebSocket URL (defaults to gateway.remote.url when configured)' +complete -c openclaw -n "__openclaw_command_path_matches nodes camera clip -- --container --profile --log-level --node --facing --device-id --duration --invoke-timeout --url --token --timeout" -l token -d 'Gateway token (if required)' +complete -c openclaw -n "__openclaw_command_path_matches nodes camera clip -- --container --profile --log-level --node --facing --device-id --duration --invoke-timeout --url --token --timeout" -l timeout -d 'Timeout in ms' +complete -c openclaw -n "__openclaw_command_path_matches nodes camera clip -- --container --profile --log-level --node --facing --device-id --duration --invoke-timeout --url --token --timeout" -l json -d 'Output JSON' +complete -c openclaw -n "__openclaw_command_path_matches nodes screen -- --container --profile --log-level" -a "record" -d 'Capture a short screen recording from a node (prints the saved path)' +complete -c openclaw -n "__openclaw_command_path_matches nodes screen record -- --container --profile --log-level --node --screen --duration --fps --out --invoke-timeout --url --token --timeout" -l node -d 'Node id, name, or IP' +complete -c openclaw -n "__openclaw_command_path_matches nodes screen record -- --container --profile --log-level --node --screen --duration --fps --out --invoke-timeout --url --token --timeout" -l screen -d 'Screen index (0 = primary)' +complete -c openclaw -n "__openclaw_command_path_matches nodes screen record -- --container --profile --log-level --node --screen --duration --fps --out --invoke-timeout --url --token --timeout" -l duration -d 'Clip duration (ms or 10s)' +complete -c openclaw -n "__openclaw_command_path_matches nodes screen record -- --container --profile --log-level --node --screen --duration --fps --out --invoke-timeout --url --token --timeout" -l fps -d 'Frames per second' +complete -c openclaw -n "__openclaw_command_path_matches nodes screen record -- --container --profile --log-level --node --screen --duration --fps --out --invoke-timeout --url --token --timeout" -l no-audio -d 'Disable microphone audio capture' +complete -c openclaw -n "__openclaw_command_path_matches nodes screen record -- --container --profile --log-level --node --screen --duration --fps --out --invoke-timeout --url --token --timeout" -l out -d 'Output path' +complete -c openclaw -n "__openclaw_command_path_matches nodes screen record -- --container --profile --log-level --node --screen --duration --fps --out --invoke-timeout --url --token --timeout" -l invoke-timeout -d 'Node invoke timeout in ms (default 120000)' +complete -c openclaw -n "__openclaw_command_path_matches nodes screen record -- --container --profile --log-level --node --screen --duration --fps --out --invoke-timeout --url --token --timeout" -l url -d 'Gateway WebSocket URL (defaults to gateway.remote.url when configured)' +complete -c openclaw -n "__openclaw_command_path_matches nodes screen record -- --container --profile --log-level --node --screen --duration --fps --out --invoke-timeout --url --token --timeout" -l token -d 'Gateway token (if required)' +complete -c openclaw -n "__openclaw_command_path_matches nodes screen record -- --container --profile --log-level --node --screen --duration --fps --out --invoke-timeout --url --token --timeout" -l timeout -d 'Timeout in ms' +complete -c openclaw -n "__openclaw_command_path_matches nodes screen record -- --container --profile --log-level --node --screen --duration --fps --out --invoke-timeout --url --token --timeout" -l json -d 'Output JSON' +complete -c openclaw -n "__openclaw_command_path_matches nodes location -- --container --profile --log-level" -a "get" -d 'Fetch the current location from a node' +complete -c openclaw -n "__openclaw_command_path_matches nodes location get -- --container --profile --log-level --node --max-age --accuracy --location-timeout --invoke-timeout --url --token --timeout" -l node -d 'Node id, name, or IP' +complete -c openclaw -n "__openclaw_command_path_matches nodes location get -- --container --profile --log-level --node --max-age --accuracy --location-timeout --invoke-timeout --url --token --timeout" -l max-age -d 'Use cached location newer than this (ms)' +complete -c openclaw -n "__openclaw_command_path_matches nodes location get -- --container --profile --log-level --node --max-age --accuracy --location-timeout --invoke-timeout --url --token --timeout" -l accuracy -d 'Desired accuracy (default: balanced/precise depending on node setting)' +complete -c openclaw -n "__openclaw_command_path_matches nodes location get -- --container --profile --log-level --node --max-age --accuracy --location-timeout --invoke-timeout --url --token --timeout" -l location-timeout -d 'Location fix timeout (ms)' +complete -c openclaw -n "__openclaw_command_path_matches nodes location get -- --container --profile --log-level --node --max-age --accuracy --location-timeout --invoke-timeout --url --token --timeout" -l invoke-timeout -d 'Node invoke timeout in ms (default 20000)' +complete -c openclaw -n "__openclaw_command_path_matches nodes location get -- --container --profile --log-level --node --max-age --accuracy --location-timeout --invoke-timeout --url --token --timeout" -l url -d 'Gateway WebSocket URL (defaults to gateway.remote.url when configured)' +complete -c openclaw -n "__openclaw_command_path_matches nodes location get -- --container --profile --log-level --node --max-age --accuracy --location-timeout --invoke-timeout --url --token --timeout" -l token -d 'Gateway token (if required)' +complete -c openclaw -n "__openclaw_command_path_matches nodes location get -- --container --profile --log-level --node --max-age --accuracy --location-timeout --invoke-timeout --url --token --timeout" -l timeout -d 'Timeout in ms' +complete -c openclaw -n "__openclaw_command_path_matches nodes location get -- --container --profile --log-level --node --max-age --accuracy --location-timeout --invoke-timeout --url --token --timeout" -l json -d 'Output JSON' +complete -c openclaw -n "__openclaw_command_path_matches devices -- --container --profile --log-level" -a "list" -d 'List pending and paired devices' +complete -c openclaw -n "__openclaw_command_path_matches devices -- --container --profile --log-level" -a "remove" -d 'Remove a paired device entry' +complete -c openclaw -n "__openclaw_command_path_matches devices -- --container --profile --log-level" -a "clear" -d 'Clear paired devices from the gateway table' +complete -c openclaw -n "__openclaw_command_path_matches devices -- --container --profile --log-level" -a "approve" -d 'Approve a pending device pairing request' +complete -c openclaw -n "__openclaw_command_path_matches devices -- --container --profile --log-level" -a "reject" -d 'Reject a pending device pairing request' +complete -c openclaw -n "__openclaw_command_path_matches devices -- --container --profile --log-level" -a "rotate" -d 'Rotate a device token for a role' +complete -c openclaw -n "__openclaw_command_path_matches devices -- --container --profile --log-level" -a "revoke" -d 'Revoke a device token for a role' +complete -c openclaw -n "__openclaw_command_path_matches devices list -- --container --profile --log-level --url --token --password --timeout" -l url -d 'Gateway WebSocket URL (defaults to gateway.remote.url when configured)' +complete -c openclaw -n "__openclaw_command_path_matches devices list -- --container --profile --log-level --url --token --password --timeout" -l token -d 'Gateway token (if required)' +complete -c openclaw -n "__openclaw_command_path_matches devices list -- --container --profile --log-level --url --token --password --timeout" -l password -d 'Gateway password (password auth)' +complete -c openclaw -n "__openclaw_command_path_matches devices list -- --container --profile --log-level --url --token --password --timeout" -l timeout -d 'Timeout in ms' +complete -c openclaw -n "__openclaw_command_path_matches devices list -- --container --profile --log-level --url --token --password --timeout" -l json -d 'Output JSON' +complete -c openclaw -n "__openclaw_command_path_matches devices remove -- --container --profile --log-level --url --token --password --timeout" -l url -d 'Gateway WebSocket URL (defaults to gateway.remote.url when configured)' +complete -c openclaw -n "__openclaw_command_path_matches devices remove -- --container --profile --log-level --url --token --password --timeout" -l token -d 'Gateway token (if required)' +complete -c openclaw -n "__openclaw_command_path_matches devices remove -- --container --profile --log-level --url --token --password --timeout" -l password -d 'Gateway password (password auth)' +complete -c openclaw -n "__openclaw_command_path_matches devices remove -- --container --profile --log-level --url --token --password --timeout" -l timeout -d 'Timeout in ms' +complete -c openclaw -n "__openclaw_command_path_matches devices remove -- --container --profile --log-level --url --token --password --timeout" -l json -d 'Output JSON' +complete -c openclaw -n "__openclaw_command_path_matches devices clear -- --container --profile --log-level --url --token --password --timeout" -l pending -d 'Also reject all pending pairing requests' +complete -c openclaw -n "__openclaw_command_path_matches devices clear -- --container --profile --log-level --url --token --password --timeout" -l yes -d 'Confirm destructive clear' +complete -c openclaw -n "__openclaw_command_path_matches devices clear -- --container --profile --log-level --url --token --password --timeout" -l url -d 'Gateway WebSocket URL (defaults to gateway.remote.url when configured)' +complete -c openclaw -n "__openclaw_command_path_matches devices clear -- --container --profile --log-level --url --token --password --timeout" -l token -d 'Gateway token (if required)' +complete -c openclaw -n "__openclaw_command_path_matches devices clear -- --container --profile --log-level --url --token --password --timeout" -l password -d 'Gateway password (password auth)' +complete -c openclaw -n "__openclaw_command_path_matches devices clear -- --container --profile --log-level --url --token --password --timeout" -l timeout -d 'Timeout in ms' +complete -c openclaw -n "__openclaw_command_path_matches devices clear -- --container --profile --log-level --url --token --password --timeout" -l json -d 'Output JSON' +complete -c openclaw -n "__openclaw_command_path_matches devices approve -- --container --profile --log-level --url --token --password --timeout" -l latest -d 'Show the most recent pending request to approve explicitly' +complete -c openclaw -n "__openclaw_command_path_matches devices approve -- --container --profile --log-level --url --token --password --timeout" -l url -d 'Gateway WebSocket URL (defaults to gateway.remote.url when configured)' +complete -c openclaw -n "__openclaw_command_path_matches devices approve -- --container --profile --log-level --url --token --password --timeout" -l token -d 'Gateway token (if required)' +complete -c openclaw -n "__openclaw_command_path_matches devices approve -- --container --profile --log-level --url --token --password --timeout" -l password -d 'Gateway password (password auth)' +complete -c openclaw -n "__openclaw_command_path_matches devices approve -- --container --profile --log-level --url --token --password --timeout" -l timeout -d 'Timeout in ms' +complete -c openclaw -n "__openclaw_command_path_matches devices approve -- --container --profile --log-level --url --token --password --timeout" -l json -d 'Output JSON' +complete -c openclaw -n "__openclaw_command_path_matches devices reject -- --container --profile --log-level --url --token --password --timeout" -l url -d 'Gateway WebSocket URL (defaults to gateway.remote.url when configured)' +complete -c openclaw -n "__openclaw_command_path_matches devices reject -- --container --profile --log-level --url --token --password --timeout" -l token -d 'Gateway token (if required)' +complete -c openclaw -n "__openclaw_command_path_matches devices reject -- --container --profile --log-level --url --token --password --timeout" -l password -d 'Gateway password (password auth)' +complete -c openclaw -n "__openclaw_command_path_matches devices reject -- --container --profile --log-level --url --token --password --timeout" -l timeout -d 'Timeout in ms' +complete -c openclaw -n "__openclaw_command_path_matches devices reject -- --container --profile --log-level --url --token --password --timeout" -l json -d 'Output JSON' +complete -c openclaw -n "__openclaw_command_path_matches devices rotate -- --container --profile --log-level --device --role --scope --url --token --password --timeout" -l device -d 'Device id' +complete -c openclaw -n "__openclaw_command_path_matches devices rotate -- --container --profile --log-level --device --role --scope --url --token --password --timeout" -l role -d 'Role name' +complete -c openclaw -n "__openclaw_command_path_matches devices rotate -- --container --profile --log-level --device --role --scope --url --token --password --timeout" -l scope -d 'Scopes to attach to the token (repeatable)' +complete -c openclaw -n "__openclaw_command_path_matches devices rotate -- --container --profile --log-level --device --role --scope --url --token --password --timeout" -l url -d 'Gateway WebSocket URL (defaults to gateway.remote.url when configured)' +complete -c openclaw -n "__openclaw_command_path_matches devices rotate -- --container --profile --log-level --device --role --scope --url --token --password --timeout" -l token -d 'Gateway token (if required)' +complete -c openclaw -n "__openclaw_command_path_matches devices rotate -- --container --profile --log-level --device --role --scope --url --token --password --timeout" -l password -d 'Gateway password (password auth)' +complete -c openclaw -n "__openclaw_command_path_matches devices rotate -- --container --profile --log-level --device --role --scope --url --token --password --timeout" -l timeout -d 'Timeout in ms' +complete -c openclaw -n "__openclaw_command_path_matches devices rotate -- --container --profile --log-level --device --role --scope --url --token --password --timeout" -l json -d 'Output JSON' +complete -c openclaw -n "__openclaw_command_path_matches devices revoke -- --container --profile --log-level --device --role --url --token --password --timeout" -l device -d 'Device id' +complete -c openclaw -n "__openclaw_command_path_matches devices revoke -- --container --profile --log-level --device --role --url --token --password --timeout" -l role -d 'Role name' +complete -c openclaw -n "__openclaw_command_path_matches devices revoke -- --container --profile --log-level --device --role --url --token --password --timeout" -l url -d 'Gateway WebSocket URL (defaults to gateway.remote.url when configured)' +complete -c openclaw -n "__openclaw_command_path_matches devices revoke -- --container --profile --log-level --device --role --url --token --password --timeout" -l token -d 'Gateway token (if required)' +complete -c openclaw -n "__openclaw_command_path_matches devices revoke -- --container --profile --log-level --device --role --url --token --password --timeout" -l password -d 'Gateway password (password auth)' +complete -c openclaw -n "__openclaw_command_path_matches devices revoke -- --container --profile --log-level --device --role --url --token --password --timeout" -l timeout -d 'Timeout in ms' +complete -c openclaw -n "__openclaw_command_path_matches devices revoke -- --container --profile --log-level --device --role --url --token --password --timeout" -l json -d 'Output JSON' +complete -c openclaw -n "__openclaw_command_path_matches node -- --container --profile --log-level" -a "run" -d 'Run the headless node host (foreground)' +complete -c openclaw -n "__openclaw_command_path_matches node -- --container --profile --log-level" -a "status" -d 'Show node host status' +complete -c openclaw -n "__openclaw_command_path_matches node -- --container --profile --log-level" -a "install" -d 'Install the node host service (launchd/systemd/schtasks)' +complete -c openclaw -n "__openclaw_command_path_matches node -- --container --profile --log-level" -a "uninstall" -d 'Uninstall the node host service (launchd/systemd/schtasks)' +complete -c openclaw -n "__openclaw_command_path_matches node -- --container --profile --log-level" -a "stop" -d 'Stop the node host service (launchd/systemd/schtasks)' +complete -c openclaw -n "__openclaw_command_path_matches node -- --container --profile --log-level" -a "start" -d 'Start the node host service (launchd/systemd/schtasks)' +complete -c openclaw -n "__openclaw_command_path_matches node -- --container --profile --log-level" -a "restart" -d 'Restart the node host service (launchd/systemd/schtasks)' +complete -c openclaw -n "__openclaw_command_path_matches node run -- --container --profile --log-level --host --port --tls-fingerprint --node-id --display-name" -l host -d 'Gateway host' +complete -c openclaw -n "__openclaw_command_path_matches node run -- --container --profile --log-level --host --port --tls-fingerprint --node-id --display-name" -l port -d 'Gateway port' +complete -c openclaw -n "__openclaw_command_path_matches node run -- --container --profile --log-level --host --port --tls-fingerprint --node-id --display-name" -l tls -d 'Use TLS for the gateway connection' +complete -c openclaw -n "__openclaw_command_path_matches node run -- --container --profile --log-level --host --port --tls-fingerprint --node-id --display-name" -l tls-fingerprint -d 'Expected TLS certificate fingerprint (sha256)' +complete -c openclaw -n "__openclaw_command_path_matches node run -- --container --profile --log-level --host --port --tls-fingerprint --node-id --display-name" -l node-id -d 'Override node id (clears pairing token)' +complete -c openclaw -n "__openclaw_command_path_matches node run -- --container --profile --log-level --host --port --tls-fingerprint --node-id --display-name" -l display-name -d 'Override node display name' +complete -c openclaw -n "__openclaw_command_path_matches node status -- --container --profile --log-level" -l json -d 'Output JSON' +complete -c openclaw -n "__openclaw_command_path_matches node install -- --container --profile --log-level --host --port --tls-fingerprint --node-id --display-name --runtime" -l host -d 'Gateway host' +complete -c openclaw -n "__openclaw_command_path_matches node install -- --container --profile --log-level --host --port --tls-fingerprint --node-id --display-name --runtime" -l port -d 'Gateway port' +complete -c openclaw -n "__openclaw_command_path_matches node install -- --container --profile --log-level --host --port --tls-fingerprint --node-id --display-name --runtime" -l tls -d 'Use TLS for the gateway connection' +complete -c openclaw -n "__openclaw_command_path_matches node install -- --container --profile --log-level --host --port --tls-fingerprint --node-id --display-name --runtime" -l tls-fingerprint -d 'Expected TLS certificate fingerprint (sha256)' +complete -c openclaw -n "__openclaw_command_path_matches node install -- --container --profile --log-level --host --port --tls-fingerprint --node-id --display-name --runtime" -l node-id -d 'Override node id (clears pairing token)' +complete -c openclaw -n "__openclaw_command_path_matches node install -- --container --profile --log-level --host --port --tls-fingerprint --node-id --display-name --runtime" -l display-name -d 'Override node display name' +complete -c openclaw -n "__openclaw_command_path_matches node install -- --container --profile --log-level --host --port --tls-fingerprint --node-id --display-name --runtime" -l runtime -d 'Service runtime (node|bun). Default: node' +complete -c openclaw -n "__openclaw_command_path_matches node install -- --container --profile --log-level --host --port --tls-fingerprint --node-id --display-name --runtime" -l force -d 'Reinstall/overwrite if already installed' +complete -c openclaw -n "__openclaw_command_path_matches node install -- --container --profile --log-level --host --port --tls-fingerprint --node-id --display-name --runtime" -l json -d 'Output JSON' +complete -c openclaw -n "__openclaw_command_path_matches node uninstall -- --container --profile --log-level" -l json -d 'Output JSON' +complete -c openclaw -n "__openclaw_command_path_matches node stop -- --container --profile --log-level" -l json -d 'Output JSON' +complete -c openclaw -n "__openclaw_command_path_matches node start -- --container --profile --log-level" -l json -d 'Output JSON' +complete -c openclaw -n "__openclaw_command_path_matches node restart -- --container --profile --log-level" -l json -d 'Output JSON' +complete -c openclaw -n "__openclaw_command_path_matches sandbox -- --container --profile --log-level" -a "list" -d 'List sandbox containers and their status' +complete -c openclaw -n "__openclaw_command_path_matches sandbox -- --container --profile --log-level" -a "recreate" -d 'Remove containers to force recreation with updated config' +complete -c openclaw -n "__openclaw_command_path_matches sandbox -- --container --profile --log-level" -a "explain" -d 'Explain effective sandbox/tool policy for a session/agent' +complete -c openclaw -n "__openclaw_command_path_matches sandbox list -- --container --profile --log-level" -l json -d 'Output result as JSON' +complete -c openclaw -n "__openclaw_command_path_matches sandbox list -- --container --profile --log-level" -l browser -d 'List browser containers only' +complete -c openclaw -n "__openclaw_command_path_matches sandbox recreate -- --container --profile --log-level --session --agent" -l all -d 'Recreate all sandbox containers' +complete -c openclaw -n "__openclaw_command_path_matches sandbox recreate -- --container --profile --log-level --session --agent" -l session -d 'Recreate container for specific session' +complete -c openclaw -n "__openclaw_command_path_matches sandbox recreate -- --container --profile --log-level --session --agent" -l agent -d 'Recreate containers for specific agent' +complete -c openclaw -n "__openclaw_command_path_matches sandbox recreate -- --container --profile --log-level --session --agent" -l browser -d 'Only recreate browser containers' +complete -c openclaw -n "__openclaw_command_path_matches sandbox recreate -- --container --profile --log-level --session --agent" -l force -d 'Skip confirmation prompt' +complete -c openclaw -n "__openclaw_command_path_matches sandbox explain -- --container --profile --log-level --session --agent" -l session -d 'Session key to inspect (defaults to agent main)' +complete -c openclaw -n "__openclaw_command_path_matches sandbox explain -- --container --profile --log-level --session --agent" -l agent -d 'Agent id to inspect (defaults to derived agent)' +complete -c openclaw -n "__openclaw_command_path_matches sandbox explain -- --container --profile --log-level --session --agent" -l json -d 'Output result as JSON' +complete -c openclaw -n "__openclaw_command_path_matches tui -- --container --profile --log-level --url --token --password --session --thinking --message --timeout-ms --history-limit" -l local -d 'Run against the local embedded agent runtime' +complete -c openclaw -n "__openclaw_command_path_matches tui -- --container --profile --log-level --url --token --password --session --thinking --message --timeout-ms --history-limit" -l url -d 'Gateway WebSocket URL (defaults to gateway.remote.url when configured)' +complete -c openclaw -n "__openclaw_command_path_matches tui -- --container --profile --log-level --url --token --password --session --thinking --message --timeout-ms --history-limit" -l token -d 'Gateway token (if required)' +complete -c openclaw -n "__openclaw_command_path_matches tui -- --container --profile --log-level --url --token --password --session --thinking --message --timeout-ms --history-limit" -l password -d 'Gateway password (if required)' +complete -c openclaw -n "__openclaw_command_path_matches tui -- --container --profile --log-level --url --token --password --session --thinking --message --timeout-ms --history-limit" -l session -d 'Session key (default: "main", or "global" when scope is global)' +complete -c openclaw -n "__openclaw_command_path_matches tui -- --container --profile --log-level --url --token --password --session --thinking --message --timeout-ms --history-limit" -l deliver -d 'Deliver assistant replies' +complete -c openclaw -n "__openclaw_command_path_matches tui -- --container --profile --log-level --url --token --password --session --thinking --message --timeout-ms --history-limit" -l thinking -d 'Thinking level override' +complete -c openclaw -n "__openclaw_command_path_matches tui -- --container --profile --log-level --url --token --password --session --thinking --message --timeout-ms --history-limit" -l message -d 'Send an initial message after connecting' +complete -c openclaw -n "__openclaw_command_path_matches tui -- --container --profile --log-level --url --token --password --session --thinking --message --timeout-ms --history-limit" -l timeout-ms -d 'Agent timeout in ms (defaults to agents.defaults.timeoutSeconds)' +complete -c openclaw -n "__openclaw_command_path_matches tui -- --container --profile --log-level --url --token --password --session --thinking --message --timeout-ms --history-limit" -l history-limit -d 'History entries to load' +complete -c openclaw -n "__openclaw_command_path_matches cron -- --container --profile --log-level" -a "status" -d 'Show cron scheduler status' +complete -c openclaw -n "__openclaw_command_path_matches cron -- --container --profile --log-level" -a "list" -d 'List cron jobs' +complete -c openclaw -n "__openclaw_command_path_matches cron -- --container --profile --log-level" -a "add" -d 'Add a cron job' +complete -c openclaw -n "__openclaw_command_path_matches cron -- --container --profile --log-level" -a "rm" -d 'Remove a cron job' +complete -c openclaw -n "__openclaw_command_path_matches cron -- --container --profile --log-level" -a "enable" -d 'Enable a cron job' +complete -c openclaw -n "__openclaw_command_path_matches cron -- --container --profile --log-level" -a "disable" -d 'Disable a cron job' +complete -c openclaw -n "__openclaw_command_path_matches cron -- --container --profile --log-level" -a "get" -d 'Get a cron job as JSON' +complete -c openclaw -n "__openclaw_command_path_matches cron -- --container --profile --log-level" -a "show" -d 'Show a cron job' +complete -c openclaw -n "__openclaw_command_path_matches cron -- --container --profile --log-level" -a "runs" -d 'Show cron run history' +complete -c openclaw -n "__openclaw_command_path_matches cron -- --container --profile --log-level" -a "run" -d 'Run a cron job now (debug)' +complete -c openclaw -n "__openclaw_command_path_matches cron -- --container --profile --log-level" -a "edit" -d 'Edit a cron job (patch fields)' +complete -c openclaw -n "__openclaw_command_path_matches cron status -- --container --profile --log-level --url --token --timeout" -l json -d 'Output JSON' +complete -c openclaw -n "__openclaw_command_path_matches cron status -- --container --profile --log-level --url --token --timeout" -l url -d 'Gateway WebSocket URL (defaults to gateway.remote.url when configured)' +complete -c openclaw -n "__openclaw_command_path_matches cron status -- --container --profile --log-level --url --token --timeout" -l token -d 'Gateway token (if required)' +complete -c openclaw -n "__openclaw_command_path_matches cron status -- --container --profile --log-level --url --token --timeout" -l timeout -d 'Timeout in ms' +complete -c openclaw -n "__openclaw_command_path_matches cron status -- --container --profile --log-level --url --token --timeout" -l expect-final -d 'Wait for final response (agent)' +complete -c openclaw -n "__openclaw_command_path_matches cron list -- --container --profile --log-level --agent --url --token --timeout" -l all -d 'Include disabled jobs' +complete -c openclaw -n "__openclaw_command_path_matches cron list -- --container --profile --log-level --agent --url --token --timeout" -l agent -d 'Filter by agent id' +complete -c openclaw -n "__openclaw_command_path_matches cron list -- --container --profile --log-level --agent --url --token --timeout" -l json -d 'Output JSON' +complete -c openclaw -n "__openclaw_command_path_matches cron list -- --container --profile --log-level --agent --url --token --timeout" -l url -d 'Gateway WebSocket URL (defaults to gateway.remote.url when configured)' +complete -c openclaw -n "__openclaw_command_path_matches cron list -- --container --profile --log-level --agent --url --token --timeout" -l token -d 'Gateway token (if required)' +complete -c openclaw -n "__openclaw_command_path_matches cron list -- --container --profile --log-level --agent --url --token --timeout" -l timeout -d 'Timeout in ms' +complete -c openclaw -n "__openclaw_command_path_matches cron list -- --container --profile --log-level --agent --url --token --timeout" -l expect-final -d 'Wait for final response (agent)' +complete -c openclaw -n "__openclaw_command_path_matches cron add -- --container --profile --log-level --name --description --agent --session --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --url --token --timeout" -l name -d 'Job name' +complete -c openclaw -n "__openclaw_command_path_matches cron add -- --container --profile --log-level --name --description --agent --session --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --url --token --timeout" -l description -d 'Optional description' +complete -c openclaw -n "__openclaw_command_path_matches cron add -- --container --profile --log-level --name --description --agent --session --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --url --token --timeout" -l disabled -d 'Create job disabled' +complete -c openclaw -n "__openclaw_command_path_matches cron add -- --container --profile --log-level --name --description --agent --session --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --url --token --timeout" -l delete-after-run -d 'Delete one-shot job after it succeeds' +complete -c openclaw -n "__openclaw_command_path_matches cron add -- --container --profile --log-level --name --description --agent --session --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --url --token --timeout" -l keep-after-run -d 'Keep one-shot job after it succeeds' +complete -c openclaw -n "__openclaw_command_path_matches cron add -- --container --profile --log-level --name --description --agent --session --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --url --token --timeout" -l agent -d 'Agent id for this job' +complete -c openclaw -n "__openclaw_command_path_matches cron add -- --container --profile --log-level --name --description --agent --session --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --url --token --timeout" -l session -d 'Session target (main|isolated)' +complete -c openclaw -n "__openclaw_command_path_matches cron add -- --container --profile --log-level --name --description --agent --session --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --url --token --timeout" -l session-key -d 'Session key for job routing (e.g. agent:my-agent:my-session)' +complete -c openclaw -n "__openclaw_command_path_matches cron add -- --container --profile --log-level --name --description --agent --session --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --url --token --timeout" -l wake -d 'Wake mode (now|next-heartbeat)' +complete -c openclaw -n "__openclaw_command_path_matches cron add -- --container --profile --log-level --name --description --agent --session --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --url --token --timeout" -l at -d 'Run once at time (ISO with offset, or +duration). Use --tz for offset-less datetimes' +complete -c openclaw -n "__openclaw_command_path_matches cron add -- --container --profile --log-level --name --description --agent --session --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --url --token --timeout" -l every -d 'Run every duration (e.g. 10m, 1h)' +complete -c openclaw -n "__openclaw_command_path_matches cron add -- --container --profile --log-level --name --description --agent --session --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --url --token --timeout" -l cron -d 'Cron expression (5-field or 6-field with seconds)' +complete -c openclaw -n "__openclaw_command_path_matches cron add -- --container --profile --log-level --name --description --agent --session --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --url --token --timeout" -l tz -d 'Timezone for cron expressions (IANA; cron default: Gateway host local timezone)' +complete -c openclaw -n "__openclaw_command_path_matches cron add -- --container --profile --log-level --name --description --agent --session --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --url --token --timeout" -l stagger -d 'Cron stagger window (e.g. 30s, 5m)' +complete -c openclaw -n "__openclaw_command_path_matches cron add -- --container --profile --log-level --name --description --agent --session --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --url --token --timeout" -l exact -d 'Disable cron staggering (set stagger to 0)' +complete -c openclaw -n "__openclaw_command_path_matches cron add -- --container --profile --log-level --name --description --agent --session --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --url --token --timeout" -l system-event -d 'System event payload (main session)' +complete -c openclaw -n "__openclaw_command_path_matches cron add -- --container --profile --log-level --name --description --agent --session --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --url --token --timeout" -l message -d 'Agent message payload' +complete -c openclaw -n "__openclaw_command_path_matches cron add -- --container --profile --log-level --name --description --agent --session --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --url --token --timeout" -l command -d 'Command payload run as sh -lc on the Gateway' +complete -c openclaw -n "__openclaw_command_path_matches cron add -- --container --profile --log-level --name --description --agent --session --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --url --token --timeout" -l command-argv -d 'Command payload argv as JSON array of strings' +complete -c openclaw -n "__openclaw_command_path_matches cron add -- --container --profile --log-level --name --description --agent --session --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --url --token --timeout" -l command-cwd -d 'Working directory for command payloads' +complete -c openclaw -n "__openclaw_command_path_matches cron add -- --container --profile --log-level --name --description --agent --session --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --url --token --timeout" -l command-env -d 'Environment override for command payloads (repeatable)' +complete -c openclaw -n "__openclaw_command_path_matches cron add -- --container --profile --log-level --name --description --agent --session --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --url --token --timeout" -l command-input -d 'stdin for command payloads' +complete -c openclaw -n "__openclaw_command_path_matches cron add -- --container --profile --log-level --name --description --agent --session --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --url --token --timeout" -l thinking -d 'Thinking level for agent jobs (off|minimal|low|medium|high|xhigh)' +complete -c openclaw -n "__openclaw_command_path_matches cron add -- --container --profile --log-level --name --description --agent --session --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --url --token --timeout" -l model -d 'Model override for agent jobs (provider/model or alias)' +complete -c openclaw -n "__openclaw_command_path_matches cron add -- --container --profile --log-level --name --description --agent --session --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --url --token --timeout" -l fallbacks -d 'Fallback model list for agent jobs' +complete -c openclaw -n "__openclaw_command_path_matches cron add -- --container --profile --log-level --name --description --agent --session --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --url --token --timeout" -l timeout-seconds -d 'Timeout seconds for agent or command jobs' +complete -c openclaw -n "__openclaw_command_path_matches cron add -- --container --profile --log-level --name --description --agent --session --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --url --token --timeout" -l no-output-timeout-seconds -d 'No-output timeout seconds for command jobs' +complete -c openclaw -n "__openclaw_command_path_matches cron add -- --container --profile --log-level --name --description --agent --session --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --url --token --timeout" -l output-max-bytes -d 'Maximum captured stdout/stderr bytes for command jobs' +complete -c openclaw -n "__openclaw_command_path_matches cron add -- --container --profile --log-level --name --description --agent --session --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --url --token --timeout" -l light-context -d 'Use lightweight bootstrap context for agent jobs' +complete -c openclaw -n "__openclaw_command_path_matches cron add -- --container --profile --log-level --name --description --agent --session --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --url --token --timeout" -l tools -d 'Tool allow-list (e.g. exec,read,write or exec read write)' +complete -c openclaw -n "__openclaw_command_path_matches cron add -- --container --profile --log-level --name --description --agent --session --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --url --token --timeout" -l announce -d 'Fallback-deliver final text to a chat' +complete -c openclaw -n "__openclaw_command_path_matches cron add -- --container --profile --log-level --name --description --agent --session --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --url --token --timeout" -l deliver -d 'Deprecated (use --announce). Fallback-delivers final text to a chat.' +complete -c openclaw -n "__openclaw_command_path_matches cron add -- --container --profile --log-level --name --description --agent --session --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --url --token --timeout" -l no-deliver -d 'Disable runner fallback delivery' +complete -c openclaw -n "__openclaw_command_path_matches cron add -- --container --profile --log-level --name --description --agent --session --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --url --token --timeout" -l webhook -d 'POST the finished payload to a webhook URL' +complete -c openclaw -n "__openclaw_command_path_matches cron add -- --container --profile --log-level --name --description --agent --session --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --url --token --timeout" -l channel -d 'Delivery channel (last|)' +complete -c openclaw -n "__openclaw_command_path_matches cron add -- --container --profile --log-level --name --description --agent --session --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --url --token --timeout" -l to -d 'Delivery destination (E.164, Telegram chatId, or Discord channel/user)' +complete -c openclaw -n "__openclaw_command_path_matches cron add -- --container --profile --log-level --name --description --agent --session --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --url --token --timeout" -l thread-id -d 'Telegram forum topic thread id' +complete -c openclaw -n "__openclaw_command_path_matches cron add -- --container --profile --log-level --name --description --agent --session --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --url --token --timeout" -l account -d 'Channel account id for delivery (multi-account setups)' +complete -c openclaw -n "__openclaw_command_path_matches cron add -- --container --profile --log-level --name --description --agent --session --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --url --token --timeout" -l best-effort-deliver -d 'Do not fail the job if delivery fails' +complete -c openclaw -n "__openclaw_command_path_matches cron add -- --container --profile --log-level --name --description --agent --session --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --url --token --timeout" -l json -d 'Output JSON' +complete -c openclaw -n "__openclaw_command_path_matches cron add -- --container --profile --log-level --name --description --agent --session --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --url --token --timeout" -l url -d 'Gateway WebSocket URL (defaults to gateway.remote.url when configured)' +complete -c openclaw -n "__openclaw_command_path_matches cron add -- --container --profile --log-level --name --description --agent --session --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --url --token --timeout" -l token -d 'Gateway token (if required)' +complete -c openclaw -n "__openclaw_command_path_matches cron add -- --container --profile --log-level --name --description --agent --session --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --url --token --timeout" -l timeout -d 'Timeout in ms' +complete -c openclaw -n "__openclaw_command_path_matches cron add -- --container --profile --log-level --name --description --agent --session --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --url --token --timeout" -l expect-final -d 'Wait for final response (agent)' +complete -c openclaw -n "__openclaw_command_path_matches cron rm -- --container --profile --log-level --url --token --timeout" -l json -d 'Output JSON' +complete -c openclaw -n "__openclaw_command_path_matches cron rm -- --container --profile --log-level --url --token --timeout" -l url -d 'Gateway WebSocket URL (defaults to gateway.remote.url when configured)' +complete -c openclaw -n "__openclaw_command_path_matches cron rm -- --container --profile --log-level --url --token --timeout" -l token -d 'Gateway token (if required)' +complete -c openclaw -n "__openclaw_command_path_matches cron rm -- --container --profile --log-level --url --token --timeout" -l timeout -d 'Timeout in ms' +complete -c openclaw -n "__openclaw_command_path_matches cron rm -- --container --profile --log-level --url --token --timeout" -l expect-final -d 'Wait for final response (agent)' +complete -c openclaw -n "__openclaw_command_path_matches cron enable -- --container --profile --log-level --url --token --timeout" -l url -d 'Gateway WebSocket URL (defaults to gateway.remote.url when configured)' +complete -c openclaw -n "__openclaw_command_path_matches cron enable -- --container --profile --log-level --url --token --timeout" -l token -d 'Gateway token (if required)' +complete -c openclaw -n "__openclaw_command_path_matches cron enable -- --container --profile --log-level --url --token --timeout" -l timeout -d 'Timeout in ms' +complete -c openclaw -n "__openclaw_command_path_matches cron enable -- --container --profile --log-level --url --token --timeout" -l expect-final -d 'Wait for final response (agent)' +complete -c openclaw -n "__openclaw_command_path_matches cron disable -- --container --profile --log-level --url --token --timeout" -l url -d 'Gateway WebSocket URL (defaults to gateway.remote.url when configured)' +complete -c openclaw -n "__openclaw_command_path_matches cron disable -- --container --profile --log-level --url --token --timeout" -l token -d 'Gateway token (if required)' +complete -c openclaw -n "__openclaw_command_path_matches cron disable -- --container --profile --log-level --url --token --timeout" -l timeout -d 'Timeout in ms' +complete -c openclaw -n "__openclaw_command_path_matches cron disable -- --container --profile --log-level --url --token --timeout" -l expect-final -d 'Wait for final response (agent)' +complete -c openclaw -n "__openclaw_command_path_matches cron get -- --container --profile --log-level --url --token --timeout" -l url -d 'Gateway WebSocket URL (defaults to gateway.remote.url when configured)' +complete -c openclaw -n "__openclaw_command_path_matches cron get -- --container --profile --log-level --url --token --timeout" -l token -d 'Gateway token (if required)' +complete -c openclaw -n "__openclaw_command_path_matches cron get -- --container --profile --log-level --url --token --timeout" -l timeout -d 'Timeout in ms' +complete -c openclaw -n "__openclaw_command_path_matches cron get -- --container --profile --log-level --url --token --timeout" -l expect-final -d 'Wait for final response (agent)' +complete -c openclaw -n "__openclaw_command_path_matches cron show -- --container --profile --log-level --url --token --timeout" -l json -d 'Output JSON' +complete -c openclaw -n "__openclaw_command_path_matches cron show -- --container --profile --log-level --url --token --timeout" -l url -d 'Gateway WebSocket URL (defaults to gateway.remote.url when configured)' +complete -c openclaw -n "__openclaw_command_path_matches cron show -- --container --profile --log-level --url --token --timeout" -l token -d 'Gateway token (if required)' +complete -c openclaw -n "__openclaw_command_path_matches cron show -- --container --profile --log-level --url --token --timeout" -l timeout -d 'Timeout in ms' +complete -c openclaw -n "__openclaw_command_path_matches cron show -- --container --profile --log-level --url --token --timeout" -l expect-final -d 'Wait for final response (agent)' +complete -c openclaw -n "__openclaw_command_path_matches cron runs -- --container --profile --log-level --id --run-id --limit --url --token --timeout" -l id -d 'Job id' +complete -c openclaw -n "__openclaw_command_path_matches cron runs -- --container --profile --log-level --id --run-id --limit --url --token --timeout" -l run-id -d 'Filter by cron run id' +complete -c openclaw -n "__openclaw_command_path_matches cron runs -- --container --profile --log-level --id --run-id --limit --url --token --timeout" -l limit -d 'Max entries (default 50)' +complete -c openclaw -n "__openclaw_command_path_matches cron runs -- --container --profile --log-level --id --run-id --limit --url --token --timeout" -l url -d 'Gateway WebSocket URL (defaults to gateway.remote.url when configured)' +complete -c openclaw -n "__openclaw_command_path_matches cron runs -- --container --profile --log-level --id --run-id --limit --url --token --timeout" -l token -d 'Gateway token (if required)' +complete -c openclaw -n "__openclaw_command_path_matches cron runs -- --container --profile --log-level --id --run-id --limit --url --token --timeout" -l timeout -d 'Timeout in ms' +complete -c openclaw -n "__openclaw_command_path_matches cron runs -- --container --profile --log-level --id --run-id --limit --url --token --timeout" -l expect-final -d 'Wait for final response (agent)' +complete -c openclaw -n "__openclaw_command_path_matches cron run -- --container --profile --log-level --wait-timeout --poll-interval --url --token --timeout" -l due -d 'Run only when due (default behavior in older versions)' +complete -c openclaw -n "__openclaw_command_path_matches cron run -- --container --profile --log-level --wait-timeout --poll-interval --url --token --timeout" -l wait -d 'Wait for the queued run to finish' +complete -c openclaw -n "__openclaw_command_path_matches cron run -- --container --profile --log-level --wait-timeout --poll-interval --url --token --timeout" -l wait-timeout -d 'Maximum time to wait for --wait' +complete -c openclaw -n "__openclaw_command_path_matches cron run -- --container --profile --log-level --wait-timeout --poll-interval --url --token --timeout" -l poll-interval -d 'Polling interval for --wait' +complete -c openclaw -n "__openclaw_command_path_matches cron run -- --container --profile --log-level --wait-timeout --poll-interval --url --token --timeout" -l url -d 'Gateway WebSocket URL (defaults to gateway.remote.url when configured)' +complete -c openclaw -n "__openclaw_command_path_matches cron run -- --container --profile --log-level --wait-timeout --poll-interval --url --token --timeout" -l token -d 'Gateway token (if required)' +complete -c openclaw -n "__openclaw_command_path_matches cron run -- --container --profile --log-level --wait-timeout --poll-interval --url --token --timeout" -l timeout -d 'Timeout in ms' +complete -c openclaw -n "__openclaw_command_path_matches cron run -- --container --profile --log-level --wait-timeout --poll-interval --url --token --timeout" -l expect-final -d 'Wait for final response (agent)' +complete -c openclaw -n "__openclaw_command_path_matches cron edit -- --container --profile --log-level --name --description --session --agent --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --failure-alert-after --failure-alert-channel --failure-alert-to --failure-alert-cooldown --failure-alert-mode --failure-alert-account-id --url --token --timeout" -l name -d 'Set name' +complete -c openclaw -n "__openclaw_command_path_matches cron edit -- --container --profile --log-level --name --description --session --agent --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --failure-alert-after --failure-alert-channel --failure-alert-to --failure-alert-cooldown --failure-alert-mode --failure-alert-account-id --url --token --timeout" -l description -d 'Set description' +complete -c openclaw -n "__openclaw_command_path_matches cron edit -- --container --profile --log-level --name --description --session --agent --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --failure-alert-after --failure-alert-channel --failure-alert-to --failure-alert-cooldown --failure-alert-mode --failure-alert-account-id --url --token --timeout" -l enable -d 'Enable job' +complete -c openclaw -n "__openclaw_command_path_matches cron edit -- --container --profile --log-level --name --description --session --agent --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --failure-alert-after --failure-alert-channel --failure-alert-to --failure-alert-cooldown --failure-alert-mode --failure-alert-account-id --url --token --timeout" -l disable -d 'Disable job' +complete -c openclaw -n "__openclaw_command_path_matches cron edit -- --container --profile --log-level --name --description --session --agent --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --failure-alert-after --failure-alert-channel --failure-alert-to --failure-alert-cooldown --failure-alert-mode --failure-alert-account-id --url --token --timeout" -l delete-after-run -d 'Delete one-shot job after it succeeds' +complete -c openclaw -n "__openclaw_command_path_matches cron edit -- --container --profile --log-level --name --description --session --agent --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --failure-alert-after --failure-alert-channel --failure-alert-to --failure-alert-cooldown --failure-alert-mode --failure-alert-account-id --url --token --timeout" -l keep-after-run -d 'Keep one-shot job after it succeeds' +complete -c openclaw -n "__openclaw_command_path_matches cron edit -- --container --profile --log-level --name --description --session --agent --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --failure-alert-after --failure-alert-channel --failure-alert-to --failure-alert-cooldown --failure-alert-mode --failure-alert-account-id --url --token --timeout" -l session -d 'Session target (main|isolated)' +complete -c openclaw -n "__openclaw_command_path_matches cron edit -- --container --profile --log-level --name --description --session --agent --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --failure-alert-after --failure-alert-channel --failure-alert-to --failure-alert-cooldown --failure-alert-mode --failure-alert-account-id --url --token --timeout" -l agent -d 'Set agent id' +complete -c openclaw -n "__openclaw_command_path_matches cron edit -- --container --profile --log-level --name --description --session --agent --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --failure-alert-after --failure-alert-channel --failure-alert-to --failure-alert-cooldown --failure-alert-mode --failure-alert-account-id --url --token --timeout" -l clear-agent -d 'Unset agent and use default' +complete -c openclaw -n "__openclaw_command_path_matches cron edit -- --container --profile --log-level --name --description --session --agent --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --failure-alert-after --failure-alert-channel --failure-alert-to --failure-alert-cooldown --failure-alert-mode --failure-alert-account-id --url --token --timeout" -l session-key -d 'Set session key for job routing' +complete -c openclaw -n "__openclaw_command_path_matches cron edit -- --container --profile --log-level --name --description --session --agent --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --failure-alert-after --failure-alert-channel --failure-alert-to --failure-alert-cooldown --failure-alert-mode --failure-alert-account-id --url --token --timeout" -l clear-session-key -d 'Unset session key' +complete -c openclaw -n "__openclaw_command_path_matches cron edit -- --container --profile --log-level --name --description --session --agent --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --failure-alert-after --failure-alert-channel --failure-alert-to --failure-alert-cooldown --failure-alert-mode --failure-alert-account-id --url --token --timeout" -l wake -d 'Wake mode (now|next-heartbeat)' +complete -c openclaw -n "__openclaw_command_path_matches cron edit -- --container --profile --log-level --name --description --session --agent --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --failure-alert-after --failure-alert-channel --failure-alert-to --failure-alert-cooldown --failure-alert-mode --failure-alert-account-id --url --token --timeout" -l at -d 'Set one-shot time (ISO, offset-less uses --tz) or duration like 20m' +complete -c openclaw -n "__openclaw_command_path_matches cron edit -- --container --profile --log-level --name --description --session --agent --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --failure-alert-after --failure-alert-channel --failure-alert-to --failure-alert-cooldown --failure-alert-mode --failure-alert-account-id --url --token --timeout" -l every -d 'Set interval duration like 10m' +complete -c openclaw -n "__openclaw_command_path_matches cron edit -- --container --profile --log-level --name --description --session --agent --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --failure-alert-after --failure-alert-channel --failure-alert-to --failure-alert-cooldown --failure-alert-mode --failure-alert-account-id --url --token --timeout" -l cron -d 'Set cron expression' +complete -c openclaw -n "__openclaw_command_path_matches cron edit -- --container --profile --log-level --name --description --session --agent --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --failure-alert-after --failure-alert-channel --failure-alert-to --failure-alert-cooldown --failure-alert-mode --failure-alert-account-id --url --token --timeout" -l tz -d 'Timezone for cron expressions (IANA; cron default: Gateway host local timezone)' +complete -c openclaw -n "__openclaw_command_path_matches cron edit -- --container --profile --log-level --name --description --session --agent --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --failure-alert-after --failure-alert-channel --failure-alert-to --failure-alert-cooldown --failure-alert-mode --failure-alert-account-id --url --token --timeout" -l stagger -d 'Cron stagger window (e.g. 30s, 5m)' +complete -c openclaw -n "__openclaw_command_path_matches cron edit -- --container --profile --log-level --name --description --session --agent --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --failure-alert-after --failure-alert-channel --failure-alert-to --failure-alert-cooldown --failure-alert-mode --failure-alert-account-id --url --token --timeout" -l exact -d 'Disable cron staggering (set stagger to 0)' +complete -c openclaw -n "__openclaw_command_path_matches cron edit -- --container --profile --log-level --name --description --session --agent --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --failure-alert-after --failure-alert-channel --failure-alert-to --failure-alert-cooldown --failure-alert-mode --failure-alert-account-id --url --token --timeout" -l system-event -d 'Set systemEvent payload' +complete -c openclaw -n "__openclaw_command_path_matches cron edit -- --container --profile --log-level --name --description --session --agent --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --failure-alert-after --failure-alert-channel --failure-alert-to --failure-alert-cooldown --failure-alert-mode --failure-alert-account-id --url --token --timeout" -l message -d 'Set agentTurn payload message' +complete -c openclaw -n "__openclaw_command_path_matches cron edit -- --container --profile --log-level --name --description --session --agent --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --failure-alert-after --failure-alert-channel --failure-alert-to --failure-alert-cooldown --failure-alert-mode --failure-alert-account-id --url --token --timeout" -l command -d 'Set command payload run as sh -lc on the Gateway' +complete -c openclaw -n "__openclaw_command_path_matches cron edit -- --container --profile --log-level --name --description --session --agent --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --failure-alert-after --failure-alert-channel --failure-alert-to --failure-alert-cooldown --failure-alert-mode --failure-alert-account-id --url --token --timeout" -l command-argv -d 'Set command payload argv as JSON array of strings' +complete -c openclaw -n "__openclaw_command_path_matches cron edit -- --container --profile --log-level --name --description --session --agent --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --failure-alert-after --failure-alert-channel --failure-alert-to --failure-alert-cooldown --failure-alert-mode --failure-alert-account-id --url --token --timeout" -l command-cwd -d 'Set command payload working directory' +complete -c openclaw -n "__openclaw_command_path_matches cron edit -- --container --profile --log-level --name --description --session --agent --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --failure-alert-after --failure-alert-channel --failure-alert-to --failure-alert-cooldown --failure-alert-mode --failure-alert-account-id --url --token --timeout" -l command-env -d 'Set command payload environment overrides (repeatable)' +complete -c openclaw -n "__openclaw_command_path_matches cron edit -- --container --profile --log-level --name --description --session --agent --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --failure-alert-after --failure-alert-channel --failure-alert-to --failure-alert-cooldown --failure-alert-mode --failure-alert-account-id --url --token --timeout" -l command-input -d 'Set command payload stdin' +complete -c openclaw -n "__openclaw_command_path_matches cron edit -- --container --profile --log-level --name --description --session --agent --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --failure-alert-after --failure-alert-channel --failure-alert-to --failure-alert-cooldown --failure-alert-mode --failure-alert-account-id --url --token --timeout" -l thinking -d 'Thinking level for agent jobs (off|minimal|low|medium|high|xhigh)' +complete -c openclaw -n "__openclaw_command_path_matches cron edit -- --container --profile --log-level --name --description --session --agent --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --failure-alert-after --failure-alert-channel --failure-alert-to --failure-alert-cooldown --failure-alert-mode --failure-alert-account-id --url --token --timeout" -l model -d 'Model override for agent jobs' +complete -c openclaw -n "__openclaw_command_path_matches cron edit -- --container --profile --log-level --name --description --session --agent --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --failure-alert-after --failure-alert-channel --failure-alert-to --failure-alert-cooldown --failure-alert-mode --failure-alert-account-id --url --token --timeout" -l fallbacks -d 'Fallback model list for agent jobs' +complete -c openclaw -n "__openclaw_command_path_matches cron edit -- --container --profile --log-level --name --description --session --agent --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --failure-alert-after --failure-alert-channel --failure-alert-to --failure-alert-cooldown --failure-alert-mode --failure-alert-account-id --url --token --timeout" -l clear-fallbacks -d 'Remove per-job fallback override' +complete -c openclaw -n "__openclaw_command_path_matches cron edit -- --container --profile --log-level --name --description --session --agent --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --failure-alert-after --failure-alert-channel --failure-alert-to --failure-alert-cooldown --failure-alert-mode --failure-alert-account-id --url --token --timeout" -l clear-model -d 'Remove the per-job model override (restore normal cron model precedence)' +complete -c openclaw -n "__openclaw_command_path_matches cron edit -- --container --profile --log-level --name --description --session --agent --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --failure-alert-after --failure-alert-channel --failure-alert-to --failure-alert-cooldown --failure-alert-mode --failure-alert-account-id --url --token --timeout" -l timeout-seconds -d 'Timeout seconds for agent or command jobs' +complete -c openclaw -n "__openclaw_command_path_matches cron edit -- --container --profile --log-level --name --description --session --agent --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --failure-alert-after --failure-alert-channel --failure-alert-to --failure-alert-cooldown --failure-alert-mode --failure-alert-account-id --url --token --timeout" -l no-output-timeout-seconds -d 'No-output timeout seconds for command jobs' +complete -c openclaw -n "__openclaw_command_path_matches cron edit -- --container --profile --log-level --name --description --session --agent --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --failure-alert-after --failure-alert-channel --failure-alert-to --failure-alert-cooldown --failure-alert-mode --failure-alert-account-id --url --token --timeout" -l output-max-bytes -d 'Maximum captured stdout/stderr bytes for command jobs' +complete -c openclaw -n "__openclaw_command_path_matches cron edit -- --container --profile --log-level --name --description --session --agent --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --failure-alert-after --failure-alert-channel --failure-alert-to --failure-alert-cooldown --failure-alert-mode --failure-alert-account-id --url --token --timeout" -l light-context -d 'Enable lightweight bootstrap context for agent jobs' +complete -c openclaw -n "__openclaw_command_path_matches cron edit -- --container --profile --log-level --name --description --session --agent --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --failure-alert-after --failure-alert-channel --failure-alert-to --failure-alert-cooldown --failure-alert-mode --failure-alert-account-id --url --token --timeout" -l no-light-context -d 'Disable lightweight bootstrap context for agent jobs' +complete -c openclaw -n "__openclaw_command_path_matches cron edit -- --container --profile --log-level --name --description --session --agent --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --failure-alert-after --failure-alert-channel --failure-alert-to --failure-alert-cooldown --failure-alert-mode --failure-alert-account-id --url --token --timeout" -l tools -d 'Tool allow-list (e.g. exec,read,write or exec read write)' +complete -c openclaw -n "__openclaw_command_path_matches cron edit -- --container --profile --log-level --name --description --session --agent --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --failure-alert-after --failure-alert-channel --failure-alert-to --failure-alert-cooldown --failure-alert-mode --failure-alert-account-id --url --token --timeout" -l clear-tools -d 'Remove tool allow-list (use all tools)' +complete -c openclaw -n "__openclaw_command_path_matches cron edit -- --container --profile --log-level --name --description --session --agent --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --failure-alert-after --failure-alert-channel --failure-alert-to --failure-alert-cooldown --failure-alert-mode --failure-alert-account-id --url --token --timeout" -l announce -d 'Fallback-deliver final text to a chat' +complete -c openclaw -n "__openclaw_command_path_matches cron edit -- --container --profile --log-level --name --description --session --agent --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --failure-alert-after --failure-alert-channel --failure-alert-to --failure-alert-cooldown --failure-alert-mode --failure-alert-account-id --url --token --timeout" -l deliver -d 'Deprecated (use --announce). Fallback-delivers final text to a chat.' +complete -c openclaw -n "__openclaw_command_path_matches cron edit -- --container --profile --log-level --name --description --session --agent --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --failure-alert-after --failure-alert-channel --failure-alert-to --failure-alert-cooldown --failure-alert-mode --failure-alert-account-id --url --token --timeout" -l no-deliver -d 'Disable runner fallback delivery' +complete -c openclaw -n "__openclaw_command_path_matches cron edit -- --container --profile --log-level --name --description --session --agent --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --failure-alert-after --failure-alert-channel --failure-alert-to --failure-alert-cooldown --failure-alert-mode --failure-alert-account-id --url --token --timeout" -l webhook -d 'POST the finished payload to a webhook URL' +complete -c openclaw -n "__openclaw_command_path_matches cron edit -- --container --profile --log-level --name --description --session --agent --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --failure-alert-after --failure-alert-channel --failure-alert-to --failure-alert-cooldown --failure-alert-mode --failure-alert-account-id --url --token --timeout" -l channel -d 'Delivery channel (last|)' +complete -c openclaw -n "__openclaw_command_path_matches cron edit -- --container --profile --log-level --name --description --session --agent --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --failure-alert-after --failure-alert-channel --failure-alert-to --failure-alert-cooldown --failure-alert-mode --failure-alert-account-id --url --token --timeout" -l to -d 'Delivery destination (E.164, Telegram chatId, or Discord channel/user)' +complete -c openclaw -n "__openclaw_command_path_matches cron edit -- --container --profile --log-level --name --description --session --agent --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --failure-alert-after --failure-alert-channel --failure-alert-to --failure-alert-cooldown --failure-alert-mode --failure-alert-account-id --url --token --timeout" -l thread-id -d 'Telegram forum topic thread id' +complete -c openclaw -n "__openclaw_command_path_matches cron edit -- --container --profile --log-level --name --description --session --agent --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --failure-alert-after --failure-alert-channel --failure-alert-to --failure-alert-cooldown --failure-alert-mode --failure-alert-account-id --url --token --timeout" -l account -d 'Channel account id for delivery (multi-account setups)' +complete -c openclaw -n "__openclaw_command_path_matches cron edit -- --container --profile --log-level --name --description --session --agent --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --failure-alert-after --failure-alert-channel --failure-alert-to --failure-alert-cooldown --failure-alert-mode --failure-alert-account-id --url --token --timeout" -l clear-channel -d 'Unset the delivery channel' +complete -c openclaw -n "__openclaw_command_path_matches cron edit -- --container --profile --log-level --name --description --session --agent --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --failure-alert-after --failure-alert-channel --failure-alert-to --failure-alert-cooldown --failure-alert-mode --failure-alert-account-id --url --token --timeout" -l clear-to -d 'Unset the delivery destination' +complete -c openclaw -n "__openclaw_command_path_matches cron edit -- --container --profile --log-level --name --description --session --agent --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --failure-alert-after --failure-alert-channel --failure-alert-to --failure-alert-cooldown --failure-alert-mode --failure-alert-account-id --url --token --timeout" -l clear-thread-id -d 'Unset the Telegram forum topic thread id' +complete -c openclaw -n "__openclaw_command_path_matches cron edit -- --container --profile --log-level --name --description --session --agent --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --failure-alert-after --failure-alert-channel --failure-alert-to --failure-alert-cooldown --failure-alert-mode --failure-alert-account-id --url --token --timeout" -l clear-account -d 'Unset the per-job delivery account override' +complete -c openclaw -n "__openclaw_command_path_matches cron edit -- --container --profile --log-level --name --description --session --agent --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --failure-alert-after --failure-alert-channel --failure-alert-to --failure-alert-cooldown --failure-alert-mode --failure-alert-account-id --url --token --timeout" -l best-effort-deliver -d 'Do not fail job if delivery fails (also implies --announce when used alone)' +complete -c openclaw -n "__openclaw_command_path_matches cron edit -- --container --profile --log-level --name --description --session --agent --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --failure-alert-after --failure-alert-channel --failure-alert-to --failure-alert-cooldown --failure-alert-mode --failure-alert-account-id --url --token --timeout" -l no-best-effort-deliver -d 'Fail job when delivery fails' +complete -c openclaw -n "__openclaw_command_path_matches cron edit -- --container --profile --log-level --name --description --session --agent --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --failure-alert-after --failure-alert-channel --failure-alert-to --failure-alert-cooldown --failure-alert-mode --failure-alert-account-id --url --token --timeout" -l failure-alert -d 'Enable failure alerts for this job' +complete -c openclaw -n "__openclaw_command_path_matches cron edit -- --container --profile --log-level --name --description --session --agent --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --failure-alert-after --failure-alert-channel --failure-alert-to --failure-alert-cooldown --failure-alert-mode --failure-alert-account-id --url --token --timeout" -l no-failure-alert -d 'Disable failure alerts for this job' +complete -c openclaw -n "__openclaw_command_path_matches cron edit -- --container --profile --log-level --name --description --session --agent --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --failure-alert-after --failure-alert-channel --failure-alert-to --failure-alert-cooldown --failure-alert-mode --failure-alert-account-id --url --token --timeout" -l failure-alert-after -d 'Alert after N consecutive job errors' +complete -c openclaw -n "__openclaw_command_path_matches cron edit -- --container --profile --log-level --name --description --session --agent --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --failure-alert-after --failure-alert-channel --failure-alert-to --failure-alert-cooldown --failure-alert-mode --failure-alert-account-id --url --token --timeout" -l failure-alert-channel -d 'Failure alert channel (last|)' +complete -c openclaw -n "__openclaw_command_path_matches cron edit -- --container --profile --log-level --name --description --session --agent --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --failure-alert-after --failure-alert-channel --failure-alert-to --failure-alert-cooldown --failure-alert-mode --failure-alert-account-id --url --token --timeout" -l failure-alert-to -d 'Failure alert destination' +complete -c openclaw -n "__openclaw_command_path_matches cron edit -- --container --profile --log-level --name --description --session --agent --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --failure-alert-after --failure-alert-channel --failure-alert-to --failure-alert-cooldown --failure-alert-mode --failure-alert-account-id --url --token --timeout" -l failure-alert-cooldown -d 'Minimum time between alerts (e.g. 1h, 30m)' +complete -c openclaw -n "__openclaw_command_path_matches cron edit -- --container --profile --log-level --name --description --session --agent --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --failure-alert-after --failure-alert-channel --failure-alert-to --failure-alert-cooldown --failure-alert-mode --failure-alert-account-id --url --token --timeout" -l failure-alert-include-skipped -d 'Count consecutive skipped runs toward alerts' +complete -c openclaw -n "__openclaw_command_path_matches cron edit -- --container --profile --log-level --name --description --session --agent --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --failure-alert-after --failure-alert-channel --failure-alert-to --failure-alert-cooldown --failure-alert-mode --failure-alert-account-id --url --token --timeout" -l failure-alert-exclude-skipped -d 'Alert only on execution errors' +complete -c openclaw -n "__openclaw_command_path_matches cron edit -- --container --profile --log-level --name --description --session --agent --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --failure-alert-after --failure-alert-channel --failure-alert-to --failure-alert-cooldown --failure-alert-mode --failure-alert-account-id --url --token --timeout" -l failure-alert-mode -d 'Failure alert delivery mode (announce or webhook)' +complete -c openclaw -n "__openclaw_command_path_matches cron edit -- --container --profile --log-level --name --description --session --agent --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --failure-alert-after --failure-alert-channel --failure-alert-to --failure-alert-cooldown --failure-alert-mode --failure-alert-account-id --url --token --timeout" -l failure-alert-account-id -d 'Account ID for failure alert channel (multi-account setups)' +complete -c openclaw -n "__openclaw_command_path_matches cron edit -- --container --profile --log-level --name --description --session --agent --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --failure-alert-after --failure-alert-channel --failure-alert-to --failure-alert-cooldown --failure-alert-mode --failure-alert-account-id --url --token --timeout" -l url -d 'Gateway WebSocket URL (defaults to gateway.remote.url when configured)' +complete -c openclaw -n "__openclaw_command_path_matches cron edit -- --container --profile --log-level --name --description --session --agent --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --failure-alert-after --failure-alert-channel --failure-alert-to --failure-alert-cooldown --failure-alert-mode --failure-alert-account-id --url --token --timeout" -l token -d 'Gateway token (if required)' +complete -c openclaw -n "__openclaw_command_path_matches cron edit -- --container --profile --log-level --name --description --session --agent --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --failure-alert-after --failure-alert-channel --failure-alert-to --failure-alert-cooldown --failure-alert-mode --failure-alert-account-id --url --token --timeout" -l timeout -d 'Timeout in ms' +complete -c openclaw -n "__openclaw_command_path_matches cron edit -- --container --profile --log-level --name --description --session --agent --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --failure-alert-after --failure-alert-channel --failure-alert-to --failure-alert-cooldown --failure-alert-mode --failure-alert-account-id --url --token --timeout" -l expect-final -d 'Wait for final response (agent)' +complete -c openclaw -n "__openclaw_command_path_matches dns -- --container --profile --log-level" -a "setup" -d 'Set up CoreDNS to serve your discovery domain for unicast DNS-SD (Wide-Area Bonjour)' +complete -c openclaw -n "__openclaw_command_path_matches dns setup -- --container --profile --log-level --domain" -l domain -d 'Wide-area discovery domain (e.g. openclaw.internal)' +complete -c openclaw -n "__openclaw_command_path_matches dns setup -- --container --profile --log-level --domain" -l apply -d 'Install/update CoreDNS config and (re)start the service (requires sudo)' +complete -c openclaw -n "__openclaw_command_path_matches proxy -- --container --profile --log-level" -a "start" -d 'Start the local explicit debug proxy' +complete -c openclaw -n "__openclaw_command_path_matches proxy -- --container --profile --log-level" -a "run" -d 'Run a child command with OpenClaw debug proxy capture enabled' +complete -c openclaw -n "__openclaw_command_path_matches proxy -- --container --profile --log-level" -a "validate" -d 'Validate the operator-managed network proxy' +complete -c openclaw -n "__openclaw_command_path_matches proxy -- --container --profile --log-level" -a "coverage" -d 'Report current debug proxy transport coverage and remaining gaps' +complete -c openclaw -n "__openclaw_command_path_matches proxy -- --container --profile --log-level" -a "sessions" -d 'List recent capture sessions' +complete -c openclaw -n "__openclaw_command_path_matches proxy -- --container --profile --log-level" -a "query" -d 'Run a built-in query preset against captured traffic' +complete -c openclaw -n "__openclaw_command_path_matches proxy -- --container --profile --log-level" -a "blob" -d 'Read a captured payload blob by id' +complete -c openclaw -n "__openclaw_command_path_matches proxy -- --container --profile --log-level" -a "purge" -d 'Delete all captured traffic metadata and blobs' +complete -c openclaw -n "__openclaw_command_path_matches proxy start -- --container --profile --log-level --host --port" -l host -d 'Bind host' +complete -c openclaw -n "__openclaw_command_path_matches proxy start -- --container --profile --log-level --host --port" -l port -d 'Bind port' +complete -c openclaw -n "__openclaw_command_path_matches proxy run -- --container --profile --log-level --host --port" -l host -d 'Bind host' +complete -c openclaw -n "__openclaw_command_path_matches proxy run -- --container --profile --log-level --host --port" -l port -d 'Bind port' +complete -c openclaw -n "__openclaw_command_path_matches proxy validate -- --container --profile --log-level --proxy-url --proxy-ca-file --allowed-url --denied-url --apns-authority --timeout-ms" -l json -d 'Print machine-readable JSON' +complete -c openclaw -n "__openclaw_command_path_matches proxy validate -- --container --profile --log-level --proxy-url --proxy-ca-file --allowed-url --denied-url --apns-authority --timeout-ms" -l proxy-url -d 'Proxy URL to validate instead of config/env' +complete -c openclaw -n "__openclaw_command_path_matches proxy validate -- --container --profile --log-level --proxy-url --proxy-ca-file --allowed-url --denied-url --apns-authority --timeout-ms" -l proxy-ca-file -d 'CA bundle file for verifying an HTTPS proxy endpoint' +complete -c openclaw -n "__openclaw_command_path_matches proxy validate -- --container --profile --log-level --proxy-url --proxy-ca-file --allowed-url --denied-url --apns-authority --timeout-ms" -l allowed-url -d 'Destination expected to succeed through the proxy' +complete -c openclaw -n "__openclaw_command_path_matches proxy validate -- --container --profile --log-level --proxy-url --proxy-ca-file --allowed-url --denied-url --apns-authority --timeout-ms" -l denied-url -d 'Destination expected to be blocked by the proxy' +complete -c openclaw -n "__openclaw_command_path_matches proxy validate -- --container --profile --log-level --proxy-url --proxy-ca-file --allowed-url --denied-url --apns-authority --timeout-ms" -l apns-reachable -d 'Also verify sandbox APNs HTTP/2 is reachable through the proxy' +complete -c openclaw -n "__openclaw_command_path_matches proxy validate -- --container --profile --log-level --proxy-url --proxy-ca-file --allowed-url --denied-url --apns-authority --timeout-ms" -l apns-authority -d 'APNs authority to probe with --apns-reachable' +complete -c openclaw -n "__openclaw_command_path_matches proxy validate -- --container --profile --log-level --proxy-url --proxy-ca-file --allowed-url --denied-url --apns-authority --timeout-ms" -l timeout-ms -d 'Per-request timeout in milliseconds' +complete -c openclaw -n "__openclaw_command_path_matches proxy sessions -- --container --profile --log-level --limit" -l limit -d 'Maximum sessions to show' +complete -c openclaw -n "__openclaw_command_path_matches proxy query -- --container --profile --log-level --preset --session" -l preset -d 'Query preset: double-sends, retry-storms, cache-busting, ws-duplicate-frames, missing-ack, error-bursts' +complete -c openclaw -n "__openclaw_command_path_matches proxy query -- --container --profile --log-level --preset --session" -l session -d 'Restrict to a capture session id' +complete -c openclaw -n "__openclaw_command_path_matches proxy blob -- --container --profile --log-level --id" -l id -d 'Blob id' +complete -c openclaw -n "__openclaw_command_path_matches hooks -- --container --profile --log-level" -a "list" -d 'List all hooks' +complete -c openclaw -n "__openclaw_command_path_matches hooks -- --container --profile --log-level" -a "info" -d 'Show detailed information about a hook' +complete -c openclaw -n "__openclaw_command_path_matches hooks -- --container --profile --log-level" -a "check" -d 'Check hooks eligibility status' +complete -c openclaw -n "__openclaw_command_path_matches hooks -- --container --profile --log-level" -a "enable" -d 'Enable a hook' +complete -c openclaw -n "__openclaw_command_path_matches hooks -- --container --profile --log-level" -a "disable" -d 'Disable a hook' +complete -c openclaw -n "__openclaw_command_path_matches hooks -- --container --profile --log-level" -a "relay" -d 'Internal native harness hook relay' +complete -c openclaw -n "__openclaw_command_path_matches hooks -- --container --profile --log-level" -a "install" -d 'Deprecated: install a hook pack via `openclaw plugins install`' +complete -c openclaw -n "__openclaw_command_path_matches hooks -- --container --profile --log-level" -a "update" -d 'Deprecated: update hook packs via `openclaw plugins update`' +complete -c openclaw -n "__openclaw_command_path_matches hooks list -- --container --profile --log-level" -l eligible -d 'Show only eligible hooks' +complete -c openclaw -n "__openclaw_command_path_matches hooks list -- --container --profile --log-level" -l json -d 'Output as JSON' +complete -c openclaw -n "__openclaw_command_path_matches hooks list -- --container --profile --log-level" -s v -l verbose -d 'Show more details including missing requirements' +complete -c openclaw -n "__openclaw_command_path_matches hooks info -- --container --profile --log-level" -l json -d 'Output as JSON' +complete -c openclaw -n "__openclaw_command_path_matches hooks check -- --container --profile --log-level" -l json -d 'Output as JSON' +complete -c openclaw -n "__openclaw_command_path_matches hooks relay -- --container --profile --log-level --provider --relay-id --generation --event --pre-tool-use-unavailable --timeout" -l provider -d 'Native harness provider' +complete -c openclaw -n "__openclaw_command_path_matches hooks relay -- --container --profile --log-level --provider --relay-id --generation --event --pre-tool-use-unavailable --timeout" -l relay-id -d 'Native hook relay id' +complete -c openclaw -n "__openclaw_command_path_matches hooks relay -- --container --profile --log-level --provider --relay-id --generation --event --pre-tool-use-unavailable --timeout" -l generation -d 'Native hook relay registration generation' +complete -c openclaw -n "__openclaw_command_path_matches hooks relay -- --container --profile --log-level --provider --relay-id --generation --event --pre-tool-use-unavailable --timeout" -l event -d 'Native hook event' +complete -c openclaw -n "__openclaw_command_path_matches hooks relay -- --container --profile --log-level --provider --relay-id --generation --event --pre-tool-use-unavailable --timeout" -l pre-tool-use-unavailable -d 'PreToolUse fallback mode when the originating relay is unavailable' +complete -c openclaw -n "__openclaw_command_path_matches hooks relay -- --container --profile --log-level --provider --relay-id --generation --event --pre-tool-use-unavailable --timeout" -l timeout -d 'Gateway timeout in ms' +complete -c openclaw -n "__openclaw_command_path_matches hooks install -- --container --profile --log-level" -s l -l link -d 'Link a local path instead of copying' +complete -c openclaw -n "__openclaw_command_path_matches hooks install -- --container --profile --log-level" -l pin -d 'Record npm installs as exact resolved @' +complete -c openclaw -n "__openclaw_command_path_matches hooks update -- --container --profile --log-level" -l all -d 'Update all tracked hooks' +complete -c openclaw -n "__openclaw_command_path_matches hooks update -- --container --profile --log-level" -l dry-run -d 'Show what would change without writing' +complete -c openclaw -n "__openclaw_command_path_matches webhooks -- --container --profile --log-level" -a "gmail" -d 'Gmail Pub/Sub hooks (via gogcli)' +complete -c openclaw -n "__openclaw_command_path_matches webhooks gmail -- --container --profile --log-level" -a "setup" -d 'Configure Gmail watch + Pub/Sub + OpenClaw hooks' +complete -c openclaw -n "__openclaw_command_path_matches webhooks gmail -- --container --profile --log-level" -a "run" -d 'Run gog watch serve + auto-renew loop' +complete -c openclaw -n "__openclaw_command_path_matches webhooks gmail setup -- --container --profile --log-level --account --project --topic --subscription --label --hook-url --hook-token --push-token --bind --port --path --max-bytes --renew-minutes --tailscale --tailscale-path --tailscale-target --push-endpoint" -l account -d 'Gmail account to watch' +complete -c openclaw -n "__openclaw_command_path_matches webhooks gmail setup -- --container --profile --log-level --account --project --topic --subscription --label --hook-url --hook-token --push-token --bind --port --path --max-bytes --renew-minutes --tailscale --tailscale-path --tailscale-target --push-endpoint" -l project -d 'GCP project id (OAuth client owner)' +complete -c openclaw -n "__openclaw_command_path_matches webhooks gmail setup -- --container --profile --log-level --account --project --topic --subscription --label --hook-url --hook-token --push-token --bind --port --path --max-bytes --renew-minutes --tailscale --tailscale-path --tailscale-target --push-endpoint" -l topic -d 'Pub/Sub topic name' +complete -c openclaw -n "__openclaw_command_path_matches webhooks gmail setup -- --container --profile --log-level --account --project --topic --subscription --label --hook-url --hook-token --push-token --bind --port --path --max-bytes --renew-minutes --tailscale --tailscale-path --tailscale-target --push-endpoint" -l subscription -d 'Pub/Sub subscription name' +complete -c openclaw -n "__openclaw_command_path_matches webhooks gmail setup -- --container --profile --log-level --account --project --topic --subscription --label --hook-url --hook-token --push-token --bind --port --path --max-bytes --renew-minutes --tailscale --tailscale-path --tailscale-target --push-endpoint" -l label -d 'Gmail label to watch' +complete -c openclaw -n "__openclaw_command_path_matches webhooks gmail setup -- --container --profile --log-level --account --project --topic --subscription --label --hook-url --hook-token --push-token --bind --port --path --max-bytes --renew-minutes --tailscale --tailscale-path --tailscale-target --push-endpoint" -l hook-url -d 'OpenClaw hook URL' +complete -c openclaw -n "__openclaw_command_path_matches webhooks gmail setup -- --container --profile --log-level --account --project --topic --subscription --label --hook-url --hook-token --push-token --bind --port --path --max-bytes --renew-minutes --tailscale --tailscale-path --tailscale-target --push-endpoint" -l hook-token -d 'OpenClaw hook token' +complete -c openclaw -n "__openclaw_command_path_matches webhooks gmail setup -- --container --profile --log-level --account --project --topic --subscription --label --hook-url --hook-token --push-token --bind --port --path --max-bytes --renew-minutes --tailscale --tailscale-path --tailscale-target --push-endpoint" -l push-token -d 'Push token for gog watch serve' +complete -c openclaw -n "__openclaw_command_path_matches webhooks gmail setup -- --container --profile --log-level --account --project --topic --subscription --label --hook-url --hook-token --push-token --bind --port --path --max-bytes --renew-minutes --tailscale --tailscale-path --tailscale-target --push-endpoint" -l bind -d 'gog watch serve bind host' +complete -c openclaw -n "__openclaw_command_path_matches webhooks gmail setup -- --container --profile --log-level --account --project --topic --subscription --label --hook-url --hook-token --push-token --bind --port --path --max-bytes --renew-minutes --tailscale --tailscale-path --tailscale-target --push-endpoint" -l port -d 'gog watch serve port' +complete -c openclaw -n "__openclaw_command_path_matches webhooks gmail setup -- --container --profile --log-level --account --project --topic --subscription --label --hook-url --hook-token --push-token --bind --port --path --max-bytes --renew-minutes --tailscale --tailscale-path --tailscale-target --push-endpoint" -l path -d 'gog watch serve path' +complete -c openclaw -n "__openclaw_command_path_matches webhooks gmail setup -- --container --profile --log-level --account --project --topic --subscription --label --hook-url --hook-token --push-token --bind --port --path --max-bytes --renew-minutes --tailscale --tailscale-path --tailscale-target --push-endpoint" -l include-body -d 'Include email body snippets' +complete -c openclaw -n "__openclaw_command_path_matches webhooks gmail setup -- --container --profile --log-level --account --project --topic --subscription --label --hook-url --hook-token --push-token --bind --port --path --max-bytes --renew-minutes --tailscale --tailscale-path --tailscale-target --push-endpoint" -l max-bytes -d 'Max bytes for body snippets' +complete -c openclaw -n "__openclaw_command_path_matches webhooks gmail setup -- --container --profile --log-level --account --project --topic --subscription --label --hook-url --hook-token --push-token --bind --port --path --max-bytes --renew-minutes --tailscale --tailscale-path --tailscale-target --push-endpoint" -l renew-minutes -d 'Renew watch every N minutes' +complete -c openclaw -n "__openclaw_command_path_matches webhooks gmail setup -- --container --profile --log-level --account --project --topic --subscription --label --hook-url --hook-token --push-token --bind --port --path --max-bytes --renew-minutes --tailscale --tailscale-path --tailscale-target --push-endpoint" -l tailscale -d 'Expose push endpoint via tailscale (funnel|serve|off)' +complete -c openclaw -n "__openclaw_command_path_matches webhooks gmail setup -- --container --profile --log-level --account --project --topic --subscription --label --hook-url --hook-token --push-token --bind --port --path --max-bytes --renew-minutes --tailscale --tailscale-path --tailscale-target --push-endpoint" -l tailscale-path -d 'Path for tailscale serve/funnel' +complete -c openclaw -n "__openclaw_command_path_matches webhooks gmail setup -- --container --profile --log-level --account --project --topic --subscription --label --hook-url --hook-token --push-token --bind --port --path --max-bytes --renew-minutes --tailscale --tailscale-path --tailscale-target --push-endpoint" -l tailscale-target -d 'Tailscale serve/funnel target (port, host:port, or URL)' +complete -c openclaw -n "__openclaw_command_path_matches webhooks gmail setup -- --container --profile --log-level --account --project --topic --subscription --label --hook-url --hook-token --push-token --bind --port --path --max-bytes --renew-minutes --tailscale --tailscale-path --tailscale-target --push-endpoint" -l push-endpoint -d 'Explicit Pub/Sub push endpoint' +complete -c openclaw -n "__openclaw_command_path_matches webhooks gmail setup -- --container --profile --log-level --account --project --topic --subscription --label --hook-url --hook-token --push-token --bind --port --path --max-bytes --renew-minutes --tailscale --tailscale-path --tailscale-target --push-endpoint" -l json -d 'Output JSON summary' +complete -c openclaw -n "__openclaw_command_path_matches webhooks gmail run -- --container --profile --log-level --account --topic --subscription --label --hook-url --hook-token --push-token --bind --port --path --max-bytes --renew-minutes --tailscale --tailscale-path --tailscale-target" -l account -d 'Gmail account to watch' +complete -c openclaw -n "__openclaw_command_path_matches webhooks gmail run -- --container --profile --log-level --account --topic --subscription --label --hook-url --hook-token --push-token --bind --port --path --max-bytes --renew-minutes --tailscale --tailscale-path --tailscale-target" -l topic -d 'Pub/Sub topic path (projects/.../topics/..)' +complete -c openclaw -n "__openclaw_command_path_matches webhooks gmail run -- --container --profile --log-level --account --topic --subscription --label --hook-url --hook-token --push-token --bind --port --path --max-bytes --renew-minutes --tailscale --tailscale-path --tailscale-target" -l subscription -d 'Pub/Sub subscription name' +complete -c openclaw -n "__openclaw_command_path_matches webhooks gmail run -- --container --profile --log-level --account --topic --subscription --label --hook-url --hook-token --push-token --bind --port --path --max-bytes --renew-minutes --tailscale --tailscale-path --tailscale-target" -l label -d 'Gmail label to watch' +complete -c openclaw -n "__openclaw_command_path_matches webhooks gmail run -- --container --profile --log-level --account --topic --subscription --label --hook-url --hook-token --push-token --bind --port --path --max-bytes --renew-minutes --tailscale --tailscale-path --tailscale-target" -l hook-url -d 'OpenClaw hook URL' +complete -c openclaw -n "__openclaw_command_path_matches webhooks gmail run -- --container --profile --log-level --account --topic --subscription --label --hook-url --hook-token --push-token --bind --port --path --max-bytes --renew-minutes --tailscale --tailscale-path --tailscale-target" -l hook-token -d 'OpenClaw hook token' +complete -c openclaw -n "__openclaw_command_path_matches webhooks gmail run -- --container --profile --log-level --account --topic --subscription --label --hook-url --hook-token --push-token --bind --port --path --max-bytes --renew-minutes --tailscale --tailscale-path --tailscale-target" -l push-token -d 'Push token for gog watch serve' +complete -c openclaw -n "__openclaw_command_path_matches webhooks gmail run -- --container --profile --log-level --account --topic --subscription --label --hook-url --hook-token --push-token --bind --port --path --max-bytes --renew-minutes --tailscale --tailscale-path --tailscale-target" -l bind -d 'gog watch serve bind host' +complete -c openclaw -n "__openclaw_command_path_matches webhooks gmail run -- --container --profile --log-level --account --topic --subscription --label --hook-url --hook-token --push-token --bind --port --path --max-bytes --renew-minutes --tailscale --tailscale-path --tailscale-target" -l port -d 'gog watch serve port' +complete -c openclaw -n "__openclaw_command_path_matches webhooks gmail run -- --container --profile --log-level --account --topic --subscription --label --hook-url --hook-token --push-token --bind --port --path --max-bytes --renew-minutes --tailscale --tailscale-path --tailscale-target" -l path -d 'gog watch serve path' +complete -c openclaw -n "__openclaw_command_path_matches webhooks gmail run -- --container --profile --log-level --account --topic --subscription --label --hook-url --hook-token --push-token --bind --port --path --max-bytes --renew-minutes --tailscale --tailscale-path --tailscale-target" -l include-body -d 'Include email body snippets' +complete -c openclaw -n "__openclaw_command_path_matches webhooks gmail run -- --container --profile --log-level --account --topic --subscription --label --hook-url --hook-token --push-token --bind --port --path --max-bytes --renew-minutes --tailscale --tailscale-path --tailscale-target" -l max-bytes -d 'Max bytes for body snippets' +complete -c openclaw -n "__openclaw_command_path_matches webhooks gmail run -- --container --profile --log-level --account --topic --subscription --label --hook-url --hook-token --push-token --bind --port --path --max-bytes --renew-minutes --tailscale --tailscale-path --tailscale-target" -l renew-minutes -d 'Renew watch every N minutes' +complete -c openclaw -n "__openclaw_command_path_matches webhooks gmail run -- --container --profile --log-level --account --topic --subscription --label --hook-url --hook-token --push-token --bind --port --path --max-bytes --renew-minutes --tailscale --tailscale-path --tailscale-target" -l tailscale -d 'Expose push endpoint via tailscale (funnel|serve|off)' +complete -c openclaw -n "__openclaw_command_path_matches webhooks gmail run -- --container --profile --log-level --account --topic --subscription --label --hook-url --hook-token --push-token --bind --port --path --max-bytes --renew-minutes --tailscale --tailscale-path --tailscale-target" -l tailscale-path -d 'Path for tailscale serve/funnel' +complete -c openclaw -n "__openclaw_command_path_matches webhooks gmail run -- --container --profile --log-level --account --topic --subscription --label --hook-url --hook-token --push-token --bind --port --path --max-bytes --renew-minutes --tailscale --tailscale-path --tailscale-target" -l tailscale-target -d 'Tailscale serve/funnel target (port, host:port, or URL)' +complete -c openclaw -n "__openclaw_command_path_matches qr -- --container --profile --log-level --url --public-url --token --password" -l remote -d 'Use gateway.remote.url and gateway.remote token/password (ignores device-pair publicUrl)' +complete -c openclaw -n "__openclaw_command_path_matches qr -- --container --profile --log-level --url --public-url --token --password" -l url -d 'Override gateway URL used in the setup payload' +complete -c openclaw -n "__openclaw_command_path_matches qr -- --container --profile --log-level --url --public-url --token --password" -l public-url -d 'Override gateway public URL used in the setup payload' +complete -c openclaw -n "__openclaw_command_path_matches qr -- --container --profile --log-level --url --public-url --token --password" -l token -d 'Override gateway token for setup payload' +complete -c openclaw -n "__openclaw_command_path_matches qr -- --container --profile --log-level --url --public-url --token --password" -l password -d 'Override gateway password for setup payload' +complete -c openclaw -n "__openclaw_command_path_matches qr -- --container --profile --log-level --url --public-url --token --password" -l setup-code-only -d 'Print only the setup code' +complete -c openclaw -n "__openclaw_command_path_matches qr -- --container --profile --log-level --url --public-url --token --password" -l no-ascii -d 'Skip ASCII QR rendering' +complete -c openclaw -n "__openclaw_command_path_matches qr -- --container --profile --log-level --url --public-url --token --password" -l json -d 'Output JSON' +complete -c openclaw -n "__openclaw_command_path_matches clawbot -- --container --profile --log-level" -a "qr" -d 'Generate a mobile pairing QR code and setup code' +complete -c openclaw -n "__openclaw_command_path_matches clawbot qr -- --container --profile --log-level --url --public-url --token --password" -l remote -d 'Use gateway.remote.url and gateway.remote token/password (ignores device-pair publicUrl)' +complete -c openclaw -n "__openclaw_command_path_matches clawbot qr -- --container --profile --log-level --url --public-url --token --password" -l url -d 'Override gateway URL used in the setup payload' +complete -c openclaw -n "__openclaw_command_path_matches clawbot qr -- --container --profile --log-level --url --public-url --token --password" -l public-url -d 'Override gateway public URL used in the setup payload' +complete -c openclaw -n "__openclaw_command_path_matches clawbot qr -- --container --profile --log-level --url --public-url --token --password" -l token -d 'Override gateway token for setup payload' +complete -c openclaw -n "__openclaw_command_path_matches clawbot qr -- --container --profile --log-level --url --public-url --token --password" -l password -d 'Override gateway password for setup payload' +complete -c openclaw -n "__openclaw_command_path_matches clawbot qr -- --container --profile --log-level --url --public-url --token --password" -l setup-code-only -d 'Print only the setup code' +complete -c openclaw -n "__openclaw_command_path_matches clawbot qr -- --container --profile --log-level --url --public-url --token --password" -l no-ascii -d 'Skip ASCII QR rendering' +complete -c openclaw -n "__openclaw_command_path_matches clawbot qr -- --container --profile --log-level --url --public-url --token --password" -l json -d 'Output JSON' +complete -c openclaw -n "__openclaw_command_path_matches pairing -- --container --profile --log-level" -a "list" -d 'List pending pairing requests' +complete -c openclaw -n "__openclaw_command_path_matches pairing -- --container --profile --log-level" -a "approve" -d 'Approve a pairing code and allow that sender' +complete -c openclaw -n "__openclaw_command_path_matches pairing list -- --container --profile --log-level --channel --account" -l channel -d 'Channel ()' +complete -c openclaw -n "__openclaw_command_path_matches pairing list -- --container --profile --log-level --channel --account" -l account -d 'Account id (for multi-account channels)' +complete -c openclaw -n "__openclaw_command_path_matches pairing list -- --container --profile --log-level --channel --account" -l json -d 'Print JSON' +complete -c openclaw -n "__openclaw_command_path_matches pairing approve -- --container --profile --log-level --channel --account" -l channel -d 'Channel ()' +complete -c openclaw -n "__openclaw_command_path_matches pairing approve -- --container --profile --log-level --channel --account" -l account -d 'Account id (for multi-account channels)' +complete -c openclaw -n "__openclaw_command_path_matches pairing approve -- --container --profile --log-level --channel --account" -l notify -d 'Notify the requester on the same channel' +complete -c openclaw -n "__openclaw_command_path_matches plugins -- --container --profile --log-level" -a "list" -d 'List discovered plugins' +complete -c openclaw -n "__openclaw_command_path_matches plugins -- --container --profile --log-level" -a "search" -d 'Search ClawHub plugin packages' +complete -c openclaw -n "__openclaw_command_path_matches plugins -- --container --profile --log-level" -a "inspect" -d 'Inspect plugin details' +complete -c openclaw -n "__openclaw_command_path_matches plugins -- --container --profile --log-level" -a "enable" -d 'Enable a plugin in config' +complete -c openclaw -n "__openclaw_command_path_matches plugins -- --container --profile --log-level" -a "disable" -d 'Disable a plugin in config' +complete -c openclaw -n "__openclaw_command_path_matches plugins -- --container --profile --log-level" -a "uninstall" -d 'Uninstall a plugin' +complete -c openclaw -n "__openclaw_command_path_matches plugins -- --container --profile --log-level" -a "install" -d 'Install a plugin or hook pack (path, archive, npm spec, git repo, clawhub:package, or marketplace entry)' +complete -c openclaw -n "__openclaw_command_path_matches plugins -- --container --profile --log-level" -a "update" -d 'Update installed plugins and tracked hook packs' +complete -c openclaw -n "__openclaw_command_path_matches plugins -- --container --profile --log-level" -a "registry" -d 'Inspect or rebuild the persisted plugin registry' +complete -c openclaw -n "__openclaw_command_path_matches plugins -- --container --profile --log-level" -a "doctor" -d 'Report plugin load issues' +complete -c openclaw -n "__openclaw_command_path_matches plugins -- --container --profile --log-level" -a "build" -d 'Generate simple tool plugin metadata' +complete -c openclaw -n "__openclaw_command_path_matches plugins -- --container --profile --log-level" -a "validate" -d 'Validate simple tool plugin metadata' +complete -c openclaw -n "__openclaw_command_path_matches plugins -- --container --profile --log-level" -a "init" -d 'Create a simple tool plugin project' +complete -c openclaw -n "__openclaw_command_path_matches plugins -- --container --profile --log-level" -a "marketplace" -d 'Inspect Claude-compatible plugin marketplaces' +complete -c openclaw -n "__openclaw_command_path_matches plugins list -- --container --profile --log-level" -l json -d 'Print JSON' +complete -c openclaw -n "__openclaw_command_path_matches plugins list -- --container --profile --log-level" -l enabled -d 'Only show enabled plugins' +complete -c openclaw -n "__openclaw_command_path_matches plugins list -- --container --profile --log-level" -l verbose -d 'Show detailed entries' +complete -c openclaw -n "__openclaw_command_path_matches plugins search -- --container --profile --log-level --limit" -l limit -d 'Max results' +complete -c openclaw -n "__openclaw_command_path_matches plugins search -- --container --profile --log-level --limit" -l json -d 'Print JSON' +complete -c openclaw -n "__openclaw_command_path_matches plugins inspect -- --container --profile --log-level" -l all -d 'Inspect all plugins' +complete -c openclaw -n "__openclaw_command_path_matches plugins inspect -- --container --profile --log-level" -l runtime -d 'Load plugin runtime for hooks/tools/diagnostics' +complete -c openclaw -n "__openclaw_command_path_matches plugins inspect -- --container --profile --log-level" -l json -d 'Print JSON' +complete -c openclaw -n "__openclaw_command_path_matches plugins uninstall -- --container --profile --log-level" -l keep-files -d 'Keep installed files on disk' +complete -c openclaw -n "__openclaw_command_path_matches plugins uninstall -- --container --profile --log-level" -l keep-config -d 'Deprecated alias for --keep-files' +complete -c openclaw -n "__openclaw_command_path_matches plugins uninstall -- --container --profile --log-level" -l force -d 'Skip confirmation prompt' +complete -c openclaw -n "__openclaw_command_path_matches plugins uninstall -- --container --profile --log-level" -l dry-run -d 'Show what would be removed without making changes' +complete -c openclaw -n "__openclaw_command_path_matches plugins install -- --container --profile --log-level --marketplace" -s l -l link -d 'Link a local path instead of copying' +complete -c openclaw -n "__openclaw_command_path_matches plugins install -- --container --profile --log-level --marketplace" -l force -d 'Overwrite an existing installed plugin or hook pack' +complete -c openclaw -n "__openclaw_command_path_matches plugins install -- --container --profile --log-level --marketplace" -l pin -d 'Record npm installs as exact resolved @' +complete -c openclaw -n "__openclaw_command_path_matches plugins install -- --container --profile --log-level --marketplace" -l dangerously-force-unsafe-install -d 'Deprecated no-op; security.installPolicy may still block' +complete -c openclaw -n "__openclaw_command_path_matches plugins install -- --container --profile --log-level --marketplace" -l marketplace -d 'Install a Claude marketplace plugin from a local repo/path or git/GitHub source' +complete -c openclaw -n "__openclaw_command_path_matches plugins update -- --container --profile --log-level" -l all -d 'Update all tracked plugins and hook packs' +complete -c openclaw -n "__openclaw_command_path_matches plugins update -- --container --profile --log-level" -l dry-run -d 'Show what would change without writing' +complete -c openclaw -n "__openclaw_command_path_matches plugins update -- --container --profile --log-level" -l dangerously-force-unsafe-install -d 'Deprecated no-op; security.installPolicy may still block' +complete -c openclaw -n "__openclaw_command_path_matches plugins registry -- --container --profile --log-level" -l json -d 'Print JSON' +complete -c openclaw -n "__openclaw_command_path_matches plugins registry -- --container --profile --log-level" -l refresh -d 'Rebuild the persisted registry from current plugin manifests' +complete -c openclaw -n "__openclaw_command_path_matches plugins build -- --container --profile --log-level --root --entry" -l root -d 'Plugin package root' +complete -c openclaw -n "__openclaw_command_path_matches plugins build -- --container --profile --log-level --root --entry" -l entry -d 'Plugin entry module relative to --root' +complete -c openclaw -n "__openclaw_command_path_matches plugins build -- --container --profile --log-level --root --entry" -l check -d 'Fail if generated metadata is out of date' +complete -c openclaw -n "__openclaw_command_path_matches plugins validate -- --container --profile --log-level --root --entry" -l root -d 'Plugin package root' +complete -c openclaw -n "__openclaw_command_path_matches plugins validate -- --container --profile --log-level --root --entry" -l entry -d 'Plugin entry module relative to --root' +complete -c openclaw -n "__openclaw_command_path_matches plugins init -- --container --profile --log-level --directory --name" -l directory -d 'Output directory' +complete -c openclaw -n "__openclaw_command_path_matches plugins init -- --container --profile --log-level --directory --name" -l name -d 'Display name' +complete -c openclaw -n "__openclaw_command_path_matches plugins init -- --container --profile --log-level --directory --name" -l force -d 'Overwrite an existing output directory' +complete -c openclaw -n "__openclaw_command_path_matches plugins marketplace -- --container --profile --log-level" -a "list" -d 'List plugins published by a marketplace source' +complete -c openclaw -n "__openclaw_command_path_matches plugins marketplace list -- --container --profile --log-level" -l json -d 'Print JSON' +complete -c openclaw -n "__openclaw_command_path_matches channels -- --container --profile --log-level" -a "list" -d 'List chat channels (configured by default; pass --all for installable catalog)' +complete -c openclaw -n "__openclaw_command_path_matches channels -- --container --profile --log-level" -a "status" -d 'Show gateway channel status (use status --deep for local)' +complete -c openclaw -n "__openclaw_command_path_matches channels -- --container --profile --log-level" -a "capabilities" -d 'Show provider capabilities (intents/scopes + supported features)' +complete -c openclaw -n "__openclaw_command_path_matches channels -- --container --profile --log-level" -a "resolve" -d 'Resolve channel/user names to IDs' +complete -c openclaw -n "__openclaw_command_path_matches channels -- --container --profile --log-level" -a "logs" -d 'Show recent channel logs from the gateway log file' +complete -c openclaw -n "__openclaw_command_path_matches channels -- --container --profile --log-level" -a "add" -d 'Add or update a channel account' +complete -c openclaw -n "__openclaw_command_path_matches channels -- --container --profile --log-level" -a "remove" -d 'Disable or delete a channel account' +complete -c openclaw -n "__openclaw_command_path_matches channels -- --container --profile --log-level" -a "login" -d 'Link a channel account (if supported)' +complete -c openclaw -n "__openclaw_command_path_matches channels -- --container --profile --log-level" -a "logout" -d 'Log out of a channel session (if supported)' +complete -c openclaw -n "__openclaw_command_path_matches channels list -- --container --profile --log-level" -l all -d 'Include bundled and installable catalog channels' +complete -c openclaw -n "__openclaw_command_path_matches channels list -- --container --profile --log-level" -l json -d 'Output JSON' +complete -c openclaw -n "__openclaw_command_path_matches channels status -- --container --profile --log-level --channel --timeout" -l channel -d 'Only show one channel (all|telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|feishu|nostr|msteams|mattermost|nextcloud-talk|matrix|raft|line|zalo|clickclack|zalouser|sms|synology-chat|tlon|qa-channel|qqbot|twitch)' +complete -c openclaw -n "__openclaw_command_path_matches channels status -- --container --profile --log-level --channel --timeout" -l probe -d 'Probe channel credentials' +complete -c openclaw -n "__openclaw_command_path_matches channels status -- --container --profile --log-level --channel --timeout" -l timeout -d 'Timeout in ms' +complete -c openclaw -n "__openclaw_command_path_matches channels status -- --container --profile --log-level --channel --timeout" -l json -d 'Output JSON' +complete -c openclaw -n "__openclaw_command_path_matches channels capabilities -- --container --profile --log-level --channel --account --target --timeout" -l channel -d 'Channel (all|telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|feishu|nostr|msteams|mattermost|nextcloud-talk|matrix|raft|line|zalo|clickclack|zalouser|sms|synology-chat|tlon|qa-channel|qqbot|twitch)' +complete -c openclaw -n "__openclaw_command_path_matches channels capabilities -- --container --profile --log-level --channel --account --target --timeout" -l account -d 'Account id (only with --channel)' +complete -c openclaw -n "__openclaw_command_path_matches channels capabilities -- --container --profile --log-level --channel --account --target --timeout" -l target -d 'Channel target for permission audit (Discord channel:)' +complete -c openclaw -n "__openclaw_command_path_matches channels capabilities -- --container --profile --log-level --channel --account --target --timeout" -l timeout -d 'Timeout in ms' +complete -c openclaw -n "__openclaw_command_path_matches channels capabilities -- --container --profile --log-level --channel --account --target --timeout" -l json -d 'Output JSON' +complete -c openclaw -n "__openclaw_command_path_matches channels resolve -- --container --profile --log-level --channel --account --kind" -l channel -d 'Channel (telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|feishu|nostr|msteams|mattermost|nextcloud-talk|matrix|raft|line|zalo|clickclack|zalouser|sms|synology-chat|tlon|qa-channel|qqbot|twitch)' +complete -c openclaw -n "__openclaw_command_path_matches channels resolve -- --container --profile --log-level --channel --account --kind" -l account -d 'Account id (accountId)' +complete -c openclaw -n "__openclaw_command_path_matches channels resolve -- --container --profile --log-level --channel --account --kind" -l kind -d 'Target kind (auto|user|group)' +complete -c openclaw -n "__openclaw_command_path_matches channels resolve -- --container --profile --log-level --channel --account --kind" -l json -d 'Output JSON' +complete -c openclaw -n "__openclaw_command_path_matches channels logs -- --container --profile --log-level --channel --lines" -l channel -d 'Channel (all|telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|feishu|nostr|msteams|mattermost|nextcloud-talk|matrix|raft|line|zalo|clickclack|zalouser|sms|synology-chat|tlon|qa-channel|qqbot|twitch)' +complete -c openclaw -n "__openclaw_command_path_matches channels logs -- --container --profile --log-level --channel --lines" -l lines -d 'Number of lines (default: 200)' +complete -c openclaw -n "__openclaw_command_path_matches channels logs -- --container --profile --log-level --channel --lines" -l json -d 'Output JSON' +complete -c openclaw -n "__openclaw_command_path_matches channels add -- --container --profile --log-level --channel --account --name --token --token-file --secret --secret-file --bot-token --app-token --password --cli-path --url --base-url --http-url --auth-dir --db-path --service --region" -l channel -d 'Channel (telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|feishu|nostr|msteams|mattermost|nextcloud-talk|matrix|raft|line|zalo|clickclack|zalouser|sms|synology-chat|tlon|qa-channel|qqbot|twitch)' +complete -c openclaw -n "__openclaw_command_path_matches channels add -- --container --profile --log-level --channel --account --name --token --token-file --secret --secret-file --bot-token --app-token --password --cli-path --url --base-url --http-url --auth-dir --db-path --service --region" -l account -d 'Account id (default when omitted)' +complete -c openclaw -n "__openclaw_command_path_matches channels add -- --container --profile --log-level --channel --account --name --token --token-file --secret --secret-file --bot-token --app-token --password --cli-path --url --base-url --http-url --auth-dir --db-path --service --region" -l name -d 'Display name for this account' +complete -c openclaw -n "__openclaw_command_path_matches channels add -- --container --profile --log-level --channel --account --name --token --token-file --secret --secret-file --bot-token --app-token --password --cli-path --url --base-url --http-url --auth-dir --db-path --service --region" -l token -d 'Channel token or credential payload' +complete -c openclaw -n "__openclaw_command_path_matches channels add -- --container --profile --log-level --channel --account --name --token --token-file --secret --secret-file --bot-token --app-token --password --cli-path --url --base-url --http-url --auth-dir --db-path --service --region" -l token-file -d 'Read channel token or credential payload from file' +complete -c openclaw -n "__openclaw_command_path_matches channels add -- --container --profile --log-level --channel --account --name --token --token-file --secret --secret-file --bot-token --app-token --password --cli-path --url --base-url --http-url --auth-dir --db-path --service --region" -l secret -d 'Channel shared secret' +complete -c openclaw -n "__openclaw_command_path_matches channels add -- --container --profile --log-level --channel --account --name --token --token-file --secret --secret-file --bot-token --app-token --password --cli-path --url --base-url --http-url --auth-dir --db-path --service --region" -l secret-file -d 'Read channel shared secret from file' +complete -c openclaw -n "__openclaw_command_path_matches channels add -- --container --profile --log-level --channel --account --name --token --token-file --secret --secret-file --bot-token --app-token --password --cli-path --url --base-url --http-url --auth-dir --db-path --service --region" -l bot-token -d 'Bot token' +complete -c openclaw -n "__openclaw_command_path_matches channels add -- --container --profile --log-level --channel --account --name --token --token-file --secret --secret-file --bot-token --app-token --password --cli-path --url --base-url --http-url --auth-dir --db-path --service --region" -l app-token -d 'App token' +complete -c openclaw -n "__openclaw_command_path_matches channels add -- --container --profile --log-level --channel --account --name --token --token-file --secret --secret-file --bot-token --app-token --password --cli-path --url --base-url --http-url --auth-dir --db-path --service --region" -l password -d 'Channel password or login secret' +complete -c openclaw -n "__openclaw_command_path_matches channels add -- --container --profile --log-level --channel --account --name --token --token-file --secret --secret-file --bot-token --app-token --password --cli-path --url --base-url --http-url --auth-dir --db-path --service --region" -l cli-path -d 'Channel CLI path' +complete -c openclaw -n "__openclaw_command_path_matches channels add -- --container --profile --log-level --channel --account --name --token --token-file --secret --secret-file --bot-token --app-token --password --cli-path --url --base-url --http-url --auth-dir --db-path --service --region" -l url -d 'Channel setup URL' +complete -c openclaw -n "__openclaw_command_path_matches channels add -- --container --profile --log-level --channel --account --name --token --token-file --secret --secret-file --bot-token --app-token --password --cli-path --url --base-url --http-url --auth-dir --db-path --service --region" -l base-url -d 'Channel base URL' +complete -c openclaw -n "__openclaw_command_path_matches channels add -- --container --profile --log-level --channel --account --name --token --token-file --secret --secret-file --bot-token --app-token --password --cli-path --url --base-url --http-url --auth-dir --db-path --service --region" -l http-url -d 'Channel HTTP service URL' +complete -c openclaw -n "__openclaw_command_path_matches channels add -- --container --profile --log-level --channel --account --name --token --token-file --secret --secret-file --bot-token --app-token --password --cli-path --url --base-url --http-url --auth-dir --db-path --service --region" -l auth-dir -d 'Channel auth directory override' +complete -c openclaw -n "__openclaw_command_path_matches channels add -- --container --profile --log-level --channel --account --name --token --token-file --secret --secret-file --bot-token --app-token --password --cli-path --url --base-url --http-url --auth-dir --db-path --service --region" -l use-env -d 'Use env-backed credentials when supported' +complete -c openclaw -n "__openclaw_command_path_matches channels add -- --container --profile --log-level --channel --account --name --token --token-file --secret --secret-file --bot-token --app-token --password --cli-path --url --base-url --http-url --auth-dir --db-path --service --region" -l db-path -d 'iMessage database path' +complete -c openclaw -n "__openclaw_command_path_matches channels add -- --container --profile --log-level --channel --account --name --token --token-file --secret --secret-file --bot-token --app-token --password --cli-path --url --base-url --http-url --auth-dir --db-path --service --region" -l service -d 'iMessage service (imessage|sms|auto)' +complete -c openclaw -n "__openclaw_command_path_matches channels add -- --container --profile --log-level --channel --account --name --token --token-file --secret --secret-file --bot-token --app-token --password --cli-path --url --base-url --http-url --auth-dir --db-path --service --region" -l region -d 'iMessage region (for SMS)' +complete -c openclaw -n "__openclaw_command_path_matches channels remove -- --container --profile --log-level --channel --account" -l channel -d 'Channel (telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|feishu|nostr|msteams|mattermost|nextcloud-talk|matrix|raft|line|zalo|clickclack|zalouser|sms|synology-chat|tlon|qa-channel|qqbot|twitch)' +complete -c openclaw -n "__openclaw_command_path_matches channels remove -- --container --profile --log-level --channel --account" -l account -d 'Account id (default when omitted)' +complete -c openclaw -n "__openclaw_command_path_matches channels remove -- --container --profile --log-level --channel --account" -l delete -d 'Delete config entries (no prompt)' +complete -c openclaw -n "__openclaw_command_path_matches channels login -- --container --profile --log-level --channel --account" -l channel -d 'Channel alias (auto when only one is configured)' +complete -c openclaw -n "__openclaw_command_path_matches channels login -- --container --profile --log-level --channel --account" -l account -d 'Account id (accountId)' +complete -c openclaw -n "__openclaw_command_path_matches channels login -- --container --profile --log-level --channel --account" -l verbose -d 'Verbose connection logs' +complete -c openclaw -n "__openclaw_command_path_matches channels logout -- --container --profile --log-level --channel --account" -l channel -d 'Channel alias (auto when only one is configured)' +complete -c openclaw -n "__openclaw_command_path_matches channels logout -- --container --profile --log-level --channel --account" -l account -d 'Account id (accountId)' +complete -c openclaw -n "__openclaw_command_path_matches directory -- --container --profile --log-level" -a "self" -d 'Show the current account user' +complete -c openclaw -n "__openclaw_command_path_matches directory -- --container --profile --log-level" -a "peers" -d 'Peer directory (contacts/users)' +complete -c openclaw -n "__openclaw_command_path_matches directory -- --container --profile --log-level" -a "groups" -d 'Group directory' +complete -c openclaw -n "__openclaw_command_path_matches directory self -- --container --profile --log-level --channel --account" -l channel -d 'Channel (auto when only one is configured)' +complete -c openclaw -n "__openclaw_command_path_matches directory self -- --container --profile --log-level --channel --account" -l account -d 'Account id (accountId)' +complete -c openclaw -n "__openclaw_command_path_matches directory self -- --container --profile --log-level --channel --account" -l json -d 'Output JSON' +complete -c openclaw -n "__openclaw_command_path_matches directory peers -- --container --profile --log-level" -a "list" -d 'List peers' +complete -c openclaw -n "__openclaw_command_path_matches directory peers list -- --container --profile --log-level --channel --account --query --limit" -l channel -d 'Channel (auto when only one is configured)' +complete -c openclaw -n "__openclaw_command_path_matches directory peers list -- --container --profile --log-level --channel --account --query --limit" -l account -d 'Account id (accountId)' +complete -c openclaw -n "__openclaw_command_path_matches directory peers list -- --container --profile --log-level --channel --account --query --limit" -l json -d 'Output JSON' +complete -c openclaw -n "__openclaw_command_path_matches directory peers list -- --container --profile --log-level --channel --account --query --limit" -l query -d 'Optional search query' +complete -c openclaw -n "__openclaw_command_path_matches directory peers list -- --container --profile --log-level --channel --account --query --limit" -l limit -d 'Limit results' +complete -c openclaw -n "__openclaw_command_path_matches directory groups -- --container --profile --log-level" -a "list" -d 'List groups' +complete -c openclaw -n "__openclaw_command_path_matches directory groups -- --container --profile --log-level" -a "members" -d 'List group members' +complete -c openclaw -n "__openclaw_command_path_matches directory groups list -- --container --profile --log-level --channel --account --query --limit" -l channel -d 'Channel (auto when only one is configured)' +complete -c openclaw -n "__openclaw_command_path_matches directory groups list -- --container --profile --log-level --channel --account --query --limit" -l account -d 'Account id (accountId)' +complete -c openclaw -n "__openclaw_command_path_matches directory groups list -- --container --profile --log-level --channel --account --query --limit" -l json -d 'Output JSON' +complete -c openclaw -n "__openclaw_command_path_matches directory groups list -- --container --profile --log-level --channel --account --query --limit" -l query -d 'Optional search query' +complete -c openclaw -n "__openclaw_command_path_matches directory groups list -- --container --profile --log-level --channel --account --query --limit" -l limit -d 'Limit results' +complete -c openclaw -n "__openclaw_command_path_matches directory groups members -- --container --profile --log-level --group-id --channel --account --limit" -l group-id -d 'Group id' +complete -c openclaw -n "__openclaw_command_path_matches directory groups members -- --container --profile --log-level --group-id --channel --account --limit" -l channel -d 'Channel (auto when only one is configured)' +complete -c openclaw -n "__openclaw_command_path_matches directory groups members -- --container --profile --log-level --group-id --channel --account --limit" -l account -d 'Account id (accountId)' +complete -c openclaw -n "__openclaw_command_path_matches directory groups members -- --container --profile --log-level --group-id --channel --account --limit" -l json -d 'Output JSON' +complete -c openclaw -n "__openclaw_command_path_matches directory groups members -- --container --profile --log-level --group-id --channel --account --limit" -l limit -d 'Limit results' +complete -c openclaw -n "__openclaw_command_path_matches security -- --container --profile --log-level" -a "audit" -d 'Audit config + local state for common security foot-guns' +complete -c openclaw -n "__openclaw_command_path_matches security audit -- --container --profile --log-level --auth --token --password" -l deep -d 'Attempt live Gateway probes and plugin-owned collector checks' +complete -c openclaw -n "__openclaw_command_path_matches security audit -- --container --profile --log-level --auth --token --password" -l auth -d 'Runtime gateway auth mode ("none"|"token"|"password"|"trusted-proxy")' +complete -c openclaw -n "__openclaw_command_path_matches security audit -- --container --profile --log-level --auth --token --password" -l token -d 'Use explicit gateway token for deep probe auth' +complete -c openclaw -n "__openclaw_command_path_matches security audit -- --container --profile --log-level --auth --token --password" -l password -d 'Use explicit gateway password for deep probe auth' +complete -c openclaw -n "__openclaw_command_path_matches security audit -- --container --profile --log-level --auth --token --password" -l fix -d 'Apply safe fixes (tighten defaults + chmod state/config)' +complete -c openclaw -n "__openclaw_command_path_matches security audit -- --container --profile --log-level --auth --token --password" -l json -d 'Print JSON' +complete -c openclaw -n "__openclaw_command_path_matches secrets -- --container --profile --log-level" -a "reload" -d 'Re-resolve secret references and atomically swap runtime snapshot' +complete -c openclaw -n "__openclaw_command_path_matches secrets -- --container --profile --log-level" -a "audit" -d 'Audit plaintext secrets, unresolved refs, and precedence drift' +complete -c openclaw -n "__openclaw_command_path_matches secrets -- --container --profile --log-level" -a "configure" -d 'Interactive secrets helper (provider setup + SecretRef mapping + preflight)' +complete -c openclaw -n "__openclaw_command_path_matches secrets -- --container --profile --log-level" -a "apply" -d 'Apply a previously generated secrets plan' +complete -c openclaw -n "__openclaw_command_path_matches secrets reload -- --container --profile --log-level --url --token --timeout" -l json -d 'Output JSON' +complete -c openclaw -n "__openclaw_command_path_matches secrets reload -- --container --profile --log-level --url --token --timeout" -l url -d 'Gateway WebSocket URL (defaults to gateway.remote.url when configured)' +complete -c openclaw -n "__openclaw_command_path_matches secrets reload -- --container --profile --log-level --url --token --timeout" -l token -d 'Gateway token (if required)' +complete -c openclaw -n "__openclaw_command_path_matches secrets reload -- --container --profile --log-level --url --token --timeout" -l timeout -d 'Timeout in ms' +complete -c openclaw -n "__openclaw_command_path_matches secrets reload -- --container --profile --log-level --url --token --timeout" -l expect-final -d 'Wait for final response (agent)' +complete -c openclaw -n "__openclaw_command_path_matches secrets audit -- --container --profile --log-level" -l check -d 'Exit non-zero when findings are present' +complete -c openclaw -n "__openclaw_command_path_matches secrets audit -- --container --profile --log-level" -l allow-exec -d 'Allow exec SecretRef resolution during audit (may execute provider commands)' +complete -c openclaw -n "__openclaw_command_path_matches secrets audit -- --container --profile --log-level" -l json -d 'Output JSON' +complete -c openclaw -n "__openclaw_command_path_matches secrets configure -- --container --profile --log-level --agent --plan-out" -l apply -d 'Apply changes immediately after preflight' +complete -c openclaw -n "__openclaw_command_path_matches secrets configure -- --container --profile --log-level --agent --plan-out" -l yes -d 'Skip apply confirmation prompt' +complete -c openclaw -n "__openclaw_command_path_matches secrets configure -- --container --profile --log-level --agent --plan-out" -l providers-only -d 'Configure secrets.providers only, skip credential mapping' +complete -c openclaw -n "__openclaw_command_path_matches secrets configure -- --container --profile --log-level --agent --plan-out" -l skip-provider-setup -d 'Skip provider setup and only map credential fields to existing providers' +complete -c openclaw -n "__openclaw_command_path_matches secrets configure -- --container --profile --log-level --agent --plan-out" -l agent -d 'Agent id for auth-profiles targets (default: configured default agent)' +complete -c openclaw -n "__openclaw_command_path_matches secrets configure -- --container --profile --log-level --agent --plan-out" -l allow-exec -d 'Allow exec SecretRef preflight checks (may execute provider commands)' +complete -c openclaw -n "__openclaw_command_path_matches secrets configure -- --container --profile --log-level --agent --plan-out" -l plan-out -d 'Write generated plan JSON to a file' +complete -c openclaw -n "__openclaw_command_path_matches secrets configure -- --container --profile --log-level --agent --plan-out" -l json -d 'Output JSON' +complete -c openclaw -n "__openclaw_command_path_matches secrets apply -- --container --profile --log-level --from" -l from -d 'Path to plan JSON' +complete -c openclaw -n "__openclaw_command_path_matches secrets apply -- --container --profile --log-level --from" -l dry-run -d 'Validate/preflight only' +complete -c openclaw -n "__openclaw_command_path_matches secrets apply -- --container --profile --log-level --from" -l allow-exec -d 'Allow exec SecretRef checks (may execute provider commands)' +complete -c openclaw -n "__openclaw_command_path_matches secrets apply -- --container --profile --log-level --from" -l json -d 'Output JSON' +complete -c openclaw -n "__openclaw_command_path_matches skills -- --container --profile --log-level --agent" -a "search" -d 'Search ClawHub skills' +complete -c openclaw -n "__openclaw_command_path_matches skills -- --container --profile --log-level --agent" -a "install" -d 'Install a skill from ClawHub, git, or a local directory' +complete -c openclaw -n "__openclaw_command_path_matches skills -- --container --profile --log-level --agent" -a "update" -d 'Update ClawHub-installed skills in the active or shared managed directory' +complete -c openclaw -n "__openclaw_command_path_matches skills -- --container --profile --log-level --agent" -a "verify" -d 'Verify a ClawHub skill with ClawHub' +complete -c openclaw -n "__openclaw_command_path_matches skills -- --container --profile --log-level --agent" -a "workshop" -d 'Manage pending skill proposals' +complete -c openclaw -n "__openclaw_command_path_matches skills -- --container --profile --log-level --agent" -a "list" -d 'List all available skills' +complete -c openclaw -n "__openclaw_command_path_matches skills -- --container --profile --log-level --agent" -a "info" -d 'Show detailed information about a skill' +complete -c openclaw -n "__openclaw_command_path_matches skills -- --container --profile --log-level --agent" -a "check" -d 'Check which skills are ready, visible, or missing requirements' +complete -c openclaw -n "__openclaw_command_path_matches skills -- --container --profile --log-level --agent" -l agent -d 'Target agent workspace (defaults to cwd-inferred, then default agent)' +complete -c openclaw -n "__openclaw_command_path_matches skills search -- --container --profile --log-level --agent --limit" -l limit -d 'Max results' +complete -c openclaw -n "__openclaw_command_path_matches skills search -- --container --profile --log-level --agent --limit" -l json -d 'Output as JSON' +complete -c openclaw -n "__openclaw_command_path_matches skills install -- --container --profile --log-level --agent --version --as" -l version -d 'Install a specific version' +complete -c openclaw -n "__openclaw_command_path_matches skills install -- --container --profile --log-level --agent --version --as" -l force -d 'Overwrite an existing workspace skill' +complete -c openclaw -n "__openclaw_command_path_matches skills install -- --container --profile --log-level --agent --version --as" -l force-install -d 'Install a pending GitHub-backed skill before ClawHub scan completes' +complete -c openclaw -n "__openclaw_command_path_matches skills install -- --container --profile --log-level --agent --version --as" -l global -d 'Install into the shared managed skills directory' +complete -c openclaw -n "__openclaw_command_path_matches skills install -- --container --profile --log-level --agent --version --as" -l agent -d 'Target agent workspace (defaults to cwd-inferred, then default agent)' +complete -c openclaw -n "__openclaw_command_path_matches skills install -- --container --profile --log-level --agent --version --as" -l as -d 'Install a git/local skill under this slug' +complete -c openclaw -n "__openclaw_command_path_matches skills update -- --container --profile --log-level --agent" -l all -d 'Update all tracked ClawHub skills' +complete -c openclaw -n "__openclaw_command_path_matches skills update -- --container --profile --log-level --agent" -l force-install -d 'Install a pending GitHub-backed skill before ClawHub scan completes' +complete -c openclaw -n "__openclaw_command_path_matches skills update -- --container --profile --log-level --agent" -l global -d 'Update skills in the shared managed skills directory' +complete -c openclaw -n "__openclaw_command_path_matches skills update -- --container --profile --log-level --agent" -l agent -d 'Target agent workspace (defaults to cwd-inferred, then default agent)' +complete -c openclaw -n "__openclaw_command_path_matches skills verify -- --container --profile --log-level --agent --version --tag" -l version -d 'Verify a specific version' +complete -c openclaw -n "__openclaw_command_path_matches skills verify -- --container --profile --log-level --agent --version --tag" -l tag -d 'Verify a dist tag' +complete -c openclaw -n "__openclaw_command_path_matches skills verify -- --container --profile --log-level --agent --version --tag" -l card -d 'Print the generated Skill Card Markdown' +complete -c openclaw -n "__openclaw_command_path_matches skills verify -- --container --profile --log-level --agent --version --tag" -l global -d 'Resolve installed skill metadata from the shared managed skills directory' +complete -c openclaw -n "__openclaw_command_path_matches skills verify -- --container --profile --log-level --agent --version --tag" -l agent -d 'Target agent workspace (defaults to cwd-inferred, then default agent)' +complete -c openclaw -n "__openclaw_command_path_matches skills workshop -- --container --profile --log-level --agent" -a "list" -d 'List pending and completed skill proposals' +complete -c openclaw -n "__openclaw_command_path_matches skills workshop -- --container --profile --log-level --agent" -a "inspect" -d 'Inspect a skill proposal' +complete -c openclaw -n "__openclaw_command_path_matches skills workshop -- --container --profile --log-level --agent" -a "propose-create" -d 'Create a pending proposal for a new workspace skill' +complete -c openclaw -n "__openclaw_command_path_matches skills workshop -- --container --profile --log-level --agent" -a "propose-update" -d 'Create a pending proposal for an existing workspace skill' +complete -c openclaw -n "__openclaw_command_path_matches skills workshop -- --container --profile --log-level --agent" -a "revise" -d 'Revise a pending skill proposal' +complete -c openclaw -n "__openclaw_command_path_matches skills workshop -- --container --profile --log-level --agent" -a "apply" -d 'Apply a pending skill proposal' +complete -c openclaw -n "__openclaw_command_path_matches skills workshop -- --container --profile --log-level --agent" -a "reject" -d 'Reject a pending skill proposal' +complete -c openclaw -n "__openclaw_command_path_matches skills workshop -- --container --profile --log-level --agent" -a "quarantine" -d 'Quarantine a skill proposal' +complete -c openclaw -n "__openclaw_command_path_matches skills workshop -- --container --profile --log-level --agent" -l agent -d 'Target agent workspace (defaults to cwd-inferred, then default agent)' +complete -c openclaw -n "__openclaw_command_path_matches skills workshop list -- --container --profile --log-level --agent" -l json -d 'Output as JSON' +complete -c openclaw -n "__openclaw_command_path_matches skills workshop inspect -- --container --profile --log-level --agent" -l json -d 'Output as JSON' +complete -c openclaw -n "__openclaw_command_path_matches skills workshop propose-create -- --container --profile --log-level --agent --name --description --proposal --proposal-dir --goal --evidence" -l name -d 'Skill name' +complete -c openclaw -n "__openclaw_command_path_matches skills workshop propose-create -- --container --profile --log-level --agent --name --description --proposal --proposal-dir --goal --evidence" -l description -d 'Skill description' +complete -c openclaw -n "__openclaw_command_path_matches skills workshop propose-create -- --container --profile --log-level --agent --name --description --proposal --proposal-dir --goal --evidence" -l proposal -d 'Path to PROPOSAL.md draft content' +complete -c openclaw -n "__openclaw_command_path_matches skills workshop propose-create -- --container --profile --log-level --agent --name --description --proposal --proposal-dir --goal --evidence" -l proposal-dir -d 'Path to proposal directory with PROPOSAL.md and UTF-8 text support files' +complete -c openclaw -n "__openclaw_command_path_matches skills workshop propose-create -- --container --profile --log-level --agent --name --description --proposal --proposal-dir --goal --evidence" -l goal -d 'Proposal or improvement goal' +complete -c openclaw -n "__openclaw_command_path_matches skills workshop propose-create -- --container --profile --log-level --agent --name --description --proposal --proposal-dir --goal --evidence" -l evidence -d 'Evidence or notes for the proposal' +complete -c openclaw -n "__openclaw_command_path_matches skills workshop propose-create -- --container --profile --log-level --agent --name --description --proposal --proposal-dir --goal --evidence" -l json -d 'Output as JSON' +complete -c openclaw -n "__openclaw_command_path_matches skills workshop propose-update -- --container --profile --log-level --agent --proposal --proposal-dir --description --goal --evidence" -l proposal -d 'Path to PROPOSAL.md draft content' +complete -c openclaw -n "__openclaw_command_path_matches skills workshop propose-update -- --container --profile --log-level --agent --proposal --proposal-dir --description --goal --evidence" -l proposal-dir -d 'Path to proposal directory with PROPOSAL.md and UTF-8 text support files' +complete -c openclaw -n "__openclaw_command_path_matches skills workshop propose-update -- --container --profile --log-level --agent --proposal --proposal-dir --description --goal --evidence" -l description -d 'Concise proposal description' +complete -c openclaw -n "__openclaw_command_path_matches skills workshop propose-update -- --container --profile --log-level --agent --proposal --proposal-dir --description --goal --evidence" -l goal -d 'Proposal or improvement goal' +complete -c openclaw -n "__openclaw_command_path_matches skills workshop propose-update -- --container --profile --log-level --agent --proposal --proposal-dir --description --goal --evidence" -l evidence -d 'Evidence or notes for the proposal' +complete -c openclaw -n "__openclaw_command_path_matches skills workshop propose-update -- --container --profile --log-level --agent --proposal --proposal-dir --description --goal --evidence" -l json -d 'Output as JSON' +complete -c openclaw -n "__openclaw_command_path_matches skills workshop revise -- --container --profile --log-level --agent --proposal --proposal-dir --description --goal --evidence" -l proposal -d 'Path to revised PROPOSAL.md draft content' +complete -c openclaw -n "__openclaw_command_path_matches skills workshop revise -- --container --profile --log-level --agent --proposal --proposal-dir --description --goal --evidence" -l proposal-dir -d 'Path to revised proposal directory with PROPOSAL.md and UTF-8 text support files' +complete -c openclaw -n "__openclaw_command_path_matches skills workshop revise -- --container --profile --log-level --agent --proposal --proposal-dir --description --goal --evidence" -l description -d 'Replacement proposal description' +complete -c openclaw -n "__openclaw_command_path_matches skills workshop revise -- --container --profile --log-level --agent --proposal --proposal-dir --description --goal --evidence" -l goal -d 'Replacement research or improvement goal' +complete -c openclaw -n "__openclaw_command_path_matches skills workshop revise -- --container --profile --log-level --agent --proposal --proposal-dir --description --goal --evidence" -l evidence -d 'Replacement evidence or notes for the proposal' +complete -c openclaw -n "__openclaw_command_path_matches skills workshop revise -- --container --profile --log-level --agent --proposal --proposal-dir --description --goal --evidence" -l json -d 'Output as JSON' +complete -c openclaw -n "__openclaw_command_path_matches skills workshop apply -- --container --profile --log-level --agent" -l json -d 'Output as JSON' +complete -c openclaw -n "__openclaw_command_path_matches skills workshop reject -- --container --profile --log-level --agent --reason" -l reason -d 'Reason for rejection' +complete -c openclaw -n "__openclaw_command_path_matches skills workshop reject -- --container --profile --log-level --agent --reason" -l json -d 'Output as JSON' +complete -c openclaw -n "__openclaw_command_path_matches skills workshop quarantine -- --container --profile --log-level --agent --reason" -l reason -d 'Reason for quarantine' +complete -c openclaw -n "__openclaw_command_path_matches skills workshop quarantine -- --container --profile --log-level --agent --reason" -l json -d 'Output as JSON' +complete -c openclaw -n "__openclaw_command_path_matches skills list -- --container --profile --log-level --agent" -l json -d 'Output as JSON' +complete -c openclaw -n "__openclaw_command_path_matches skills list -- --container --profile --log-level --agent" -l eligible -d 'Show only eligible (ready to use) skills' +complete -c openclaw -n "__openclaw_command_path_matches skills list -- --container --profile --log-level --agent" -s v -l verbose -d 'Show more details including missing requirements' +complete -c openclaw -n "__openclaw_command_path_matches skills list -- --container --profile --log-level --agent" -l agent -d 'Target agent workspace (defaults to cwd-inferred, then default agent)' +complete -c openclaw -n "__openclaw_command_path_matches skills info -- --container --profile --log-level --agent" -l json -d 'Output as JSON' +complete -c openclaw -n "__openclaw_command_path_matches skills info -- --container --profile --log-level --agent" -l agent -d 'Target agent workspace (defaults to cwd-inferred, then default agent)' +complete -c openclaw -n "__openclaw_command_path_matches skills check -- --container --profile --log-level --agent" -l agent -d 'Target agent workspace (defaults to cwd-inferred, then default agent)' +complete -c openclaw -n "__openclaw_command_path_matches skills check -- --container --profile --log-level --agent" -l json -d 'Output as JSON' +complete -c openclaw -n "__openclaw_command_path_matches update -- --container --profile --log-level --channel --tag --timeout" -a "repair" -d 'Repair post-update doctor and plugin convergence' +complete -c openclaw -n "__openclaw_command_path_matches update -- --container --profile --log-level --channel --tag --timeout" -a "finalize" -d 'Repair post-update doctor and plugin convergence' +complete -c openclaw -n "__openclaw_command_path_matches update -- --container --profile --log-level --channel --tag --timeout" -a "wizard" -d 'Interactive update wizard' +complete -c openclaw -n "__openclaw_command_path_matches update -- --container --profile --log-level --channel --tag --timeout" -a "status" -d 'Show update channel and version status' +complete -c openclaw -n "__openclaw_command_path_matches update -- --container --profile --log-level --channel --tag --timeout" -l json -d 'Output result as JSON' +complete -c openclaw -n "__openclaw_command_path_matches update -- --container --profile --log-level --channel --tag --timeout" -l no-restart -d 'Skip restarting the gateway service after a successful update' +complete -c openclaw -n "__openclaw_command_path_matches update -- --container --profile --log-level --channel --tag --timeout" -l dry-run -d 'Preview update actions without making changes' +complete -c openclaw -n "__openclaw_command_path_matches update -- --container --profile --log-level --channel --tag --timeout" -l channel -d 'Persist update channel (git + npm)' +complete -c openclaw -n "__openclaw_command_path_matches update -- --container --profile --log-level --channel --tag --timeout" -l tag -d 'Override the package target for this update (dist-tag, version, or package spec)' +complete -c openclaw -n "__openclaw_command_path_matches update -- --container --profile --log-level --channel --tag --timeout" -l timeout -d 'Timeout for each update step in seconds (default: 1800)' +complete -c openclaw -n "__openclaw_command_path_matches update -- --container --profile --log-level --channel --tag --timeout" -l yes -d 'Skip confirmation prompts (non-interactive)' +complete -c openclaw -n "__openclaw_command_path_matches update repair -- --container --profile --log-level --channel --tag --timeout" -l json -d 'Output result as JSON' +complete -c openclaw -n "__openclaw_command_path_matches update repair -- --container --profile --log-level --channel --tag --timeout" -l channel -d 'Persist update channel before repair' +complete -c openclaw -n "__openclaw_command_path_matches update repair -- --container --profile --log-level --channel --tag --timeout" -l timeout -d 'Timeout for update repair steps in seconds (default: 1800)' +complete -c openclaw -n "__openclaw_command_path_matches update repair -- --container --profile --log-level --channel --tag --timeout" -l yes -d 'Skip confirmation prompts (non-interactive)' +complete -c openclaw -n "__openclaw_command_path_matches update repair -- --container --profile --log-level --channel --tag --timeout" -l no-restart -d 'Accepted for update command parity; repair never restarts' +complete -c openclaw -n "__openclaw_command_path_matches update finalize -- --container --profile --log-level --channel --tag --timeout" -l json -d 'Output result as JSON' +complete -c openclaw -n "__openclaw_command_path_matches update finalize -- --container --profile --log-level --channel --tag --timeout" -l channel -d 'Persist update channel before repair' +complete -c openclaw -n "__openclaw_command_path_matches update finalize -- --container --profile --log-level --channel --tag --timeout" -l timeout -d 'Timeout for update repair steps in seconds (default: 1800)' +complete -c openclaw -n "__openclaw_command_path_matches update finalize -- --container --profile --log-level --channel --tag --timeout" -l yes -d 'Skip confirmation prompts (non-interactive)' +complete -c openclaw -n "__openclaw_command_path_matches update finalize -- --container --profile --log-level --channel --tag --timeout" -l no-restart -d 'Accepted for update command parity; repair never restarts' +complete -c openclaw -n "__openclaw_command_path_matches update wizard -- --container --profile --log-level --channel --tag --timeout" -l timeout -d 'Timeout for each update step in seconds (default: 1800)' +complete -c openclaw -n "__openclaw_command_path_matches update status -- --container --profile --log-level --channel --tag --timeout" -l json -d 'Output result as JSON' +complete -c openclaw -n "__openclaw_command_path_matches update status -- --container --profile --log-level --channel --tag --timeout" -l timeout -d 'Timeout for update checks in seconds (default: 3)' diff --git a/completions/openclaw.ps1 b/completions/openclaw.ps1 new file mode 100644 index 0000000..84f1217 --- /dev/null +++ b/completions/openclaw.ps1 @@ -0,0 +1,2477 @@ + +Register-ArgumentCompleter -Native -CommandName openclaw -ScriptBlock { + param($wordToComplete, $commandAst, $cursorPosition) + + $commandElements = $commandAst.CommandElements + $commandPath = "" + + # Reconstruct command path (simple approximation) + # Skip the executable name + for ($i = 1; $i -lt $commandElements.Count; $i++) { + $element = $commandElements[$i].Extent.Text + if ($element -like "-*") { break } + if ($i -eq $commandElements.Count - 1 -and $wordToComplete -ne "") { break } # Don't include current word being typed + $commandPath += "$element " + } + $commandPath = $commandPath.Trim() + + # Root command + if ($commandPath -eq "") { + $completions = @('completion','crestodian','setup','onboard','configure','config','backup','migrate','doctor','dashboard','reset','uninstall','message','mcp','transcripts','agent','agents','status','health','sessions','commitments','tasks','acp','gateway','daemon','logs','system','models','infer','approvals','exec-policy','nodes','devices','node','sandbox','tui','cron','dns','docs','proxy','hooks','webhooks','qr','clawbot','pairing','plugins','channels','directory','security','secrets','skills','update','--version','--container','--dev','--profile','--log-level','--no-color') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + + if ($commandPath -eq 'completion') { + $completions = @('--shell','--install','--write-state','--yes') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'crestodian') { + $completions = @('--message','--yes','--json') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'setup') { + $completions = @('--workspace','--wizard','--non-interactive','--accept-risk','--mode','--import-from','--import-source','--import-secrets','--remote-url','--remote-token') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'onboard') { + $completions = @('--workspace','--reset','--reset-scope','--non-interactive','--modern','--accept-risk','--flow','--mode','--auth-choice','--token-provider','--token','--token-profile-id','--token-expires-in','--secret-input-mode','--cloudflare-ai-gateway-account-id','--cloudflare-ai-gateway-gateway-id','--alibaba-model-studio-api-key','--anthropic-api-key','--byteplus-api-key','--cohere-api-key','--comfy-api-key','--fal-api-key','--github-copilot-token','--gemini-api-key','--huggingface-api-key','--litellm-api-key','--lmstudio-api-key','--minimax-api-key','--mistral-api-key','--novita-api-key','--nvidia-api-key','--ollama-cloud-api-key','--openai-api-key','--opencode-zen-api-key','--opencode-go-api-key','--openrouter-api-key','--runway-api-key','--synthetic-api-key','--together-api-key','--volcengine-api-key','--vydra-api-key','--xai-api-key','--xiaomi-api-key','--xiaomi-token-plan-api-key','--deepseek-api-key','--arceeai-api-key','--cerebras-api-key','--chutes-api-key','--cloudflare-ai-gateway-api-key','--deepinfra-api-key','--gmi-api-key','--groq-api-key','--kilocode-api-key','--kimi-code-api-key','--pixverse-api-key','--qianfan-api-key','--modelstudio-standard-api-key-cn','--modelstudio-standard-api-key','--modelstudio-api-key-cn','--modelstudio-api-key','--qwen-oauth-token','--fireworks-api-key','--moonshot-api-key','--tokenhub-api-key','--venice-api-key','--ai-gateway-api-key','--zai-api-key','--stepfun-api-key','--custom-base-url','--custom-api-key','--custom-model-id','--custom-provider-id','--custom-compatibility','--custom-image-input','--custom-text-input','--gateway-port','--gateway-bind','--gateway-auth','--gateway-token','--gateway-token-ref-env','--gateway-password','--remote-url','--remote-token','--tailscale','--tailscale-reset-on-exit','--install-daemon','--no-install-daemon','--skip-daemon','--daemon-runtime','--skip-channels','--skip-skills','--skip-bootstrap','--skip-search','--skip-health','--skip-ui','--suppress-gateway-token-output','--skip-hooks','--node-manager','--import-from','--import-source','--import-secrets','--json') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'configure') { + $completions = @('--section') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'config') { + $completions = @('get','set','patch','unset','file','schema','validate','--section') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'config get') { + $completions = @('--json') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'config set') { + $completions = @('--strict-json','--json','--dry-run','--allow-exec','--merge','--replace','--ref-provider','--ref-source','--ref-id','--provider-source','--provider-allowlist','--provider-path','--provider-mode','--provider-timeout-ms','--provider-max-bytes','--provider-command','--provider-arg','--provider-no-output-timeout-ms','--provider-max-output-bytes','--provider-json-only','--provider-env','--provider-pass-env','--provider-trusted-dir','--provider-allow-insecure-path','--provider-allow-symlink-command','--batch-json','--batch-file') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'config patch') { + $completions = @('--file','--stdin','--dry-run','--allow-exec','--json','--replace-path') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'config unset') { + $completions = @('--dry-run','--allow-exec','--json') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'config validate') { + $completions = @('--json') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'backup') { + $completions = @('create','verify') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'backup create') { + $completions = @('--output','--json','--dry-run','--verify','--only-config','--no-include-workspace') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'backup verify') { + $completions = @('--json') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'migrate') { + $completions = @('list','plan','apply','--from','--include-secrets','--no-auth-credentials','--overwrite','--dry-run','--yes','--skill','--plugin','--backup-output','--no-backup','--force','--json','--verify-plugin-apps') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'migrate list') { + $completions = @('--json') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'migrate plan') { + $completions = @('--from','--include-secrets','--no-auth-credentials','--overwrite','--json','--skill','--plugin','--verify-plugin-apps') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'migrate apply') { + $completions = @('--from','--include-secrets','--no-auth-credentials','--overwrite','--json','--skill','--plugin','--verify-plugin-apps','--yes','--backup-output','--no-backup','--force') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'doctor') { + $completions = @('--no-workspace-suggestions','--yes','--repair','--fix','--force','--non-interactive','--generate-gateway-token','--allow-exec','--deep','--lint','--post-upgrade','--json','--severity-min','--skip','--only') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'dashboard') { + $completions = @('--no-open','--yes') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'reset') { + $completions = @('--scope','--yes','--non-interactive','--dry-run') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'uninstall') { + $completions = @('--service','--state','--workspace','--app','--all','--yes','--non-interactive','--dry-run') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'message') { + $completions = @('send','broadcast','poll','react','reactions','read','edit','delete','pin','unpin','pins','permissions','search','thread','emoji','sticker','role','channel','member','voice','event','timeout','kick','ban') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'message send') { + $completions = @('--message','--target','--media','--presentation','--delivery','--pin','--reply-to','--thread-id','--gif-playback','--force-document','--silent','--channel','--account','--json','--dry-run','--verbose') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'message broadcast') { + $completions = @('--channel','--account','--json','--dry-run','--verbose','--targets','--message','--media') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'message poll') { + $completions = @('--target','--channel','--account','--json','--dry-run','--verbose','--poll-question','--poll-option','--poll-multi','--poll-duration-hours','--poll-duration-seconds','--poll-anonymous','--poll-public','--message','--silent','--thread-id') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'message react') { + $completions = @('--target','--channel','--account','--json','--dry-run','--verbose','--message-id','--emoji','--remove','--participant','--from-me','--target-author','--target-author-uuid') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'message reactions') { + $completions = @('--target','--channel','--account','--json','--dry-run','--verbose','--message-id','--limit') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'message read') { + $completions = @('--target','--channel','--account','--json','--dry-run','--verbose','--limit','--message-id','--before','--after','--around','--thread-id','--include-thread') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'message edit') { + $completions = @('--message-id','--message','--target','--channel','--account','--json','--dry-run','--verbose','--thread-id') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'message delete') { + $completions = @('--message-id','--target','--channel','--account','--json','--dry-run','--verbose') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'message pin') { + $completions = @('--target','--channel','--account','--json','--dry-run','--verbose','--message-id') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'message unpin') { + $completions = @('--target','--channel','--account','--json','--dry-run','--verbose','--message-id','--pinned-message-id') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'message pins') { + $completions = @('--target','--channel','--account','--json','--dry-run','--verbose','--limit') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'message permissions') { + $completions = @('--target','--channel','--account','--json','--dry-run','--verbose') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'message search') { + $completions = @('--channel','--account','--json','--dry-run','--verbose','--guild-id','--query','--channel-id','--channel-ids','--author-id','--author-ids','--limit') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'message thread') { + $completions = @('create','list','reply') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'message thread create') { + $completions = @('--thread-name','--target','--channel','--account','--json','--dry-run','--verbose','--message-id','--message','--auto-archive-min') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'message thread list') { + $completions = @('--guild-id','--channel','--account','--json','--dry-run','--verbose','--channel-id','--include-archived','--before','--limit') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'message thread reply') { + $completions = @('--message','--target','--channel','--account','--json','--dry-run','--verbose','--media','--reply-to') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'message emoji') { + $completions = @('list','upload') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'message emoji list') { + $completions = @('--channel','--account','--json','--dry-run','--verbose','--guild-id') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'message emoji upload') { + $completions = @('--guild-id','--channel','--account','--json','--dry-run','--verbose','--emoji-name','--media','--role-ids') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'message sticker') { + $completions = @('send','upload') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'message sticker send') { + $completions = @('--target','--channel','--account','--json','--dry-run','--verbose','--sticker-id','--message') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'message sticker upload') { + $completions = @('--guild-id','--channel','--account','--json','--dry-run','--verbose','--sticker-name','--sticker-desc','--sticker-tags','--media') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'message role') { + $completions = @('info','add','remove') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'message role info') { + $completions = @('--guild-id','--channel','--account','--json','--dry-run','--verbose') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'message role add') { + $completions = @('--guild-id','--user-id','--role-id','--channel','--account','--json','--dry-run','--verbose') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'message role remove') { + $completions = @('--guild-id','--user-id','--role-id','--channel','--account','--json','--dry-run','--verbose') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'message channel') { + $completions = @('info','list') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'message channel info') { + $completions = @('--target','--channel','--account','--json','--dry-run','--verbose') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'message channel list') { + $completions = @('--guild-id','--channel','--account','--json','--dry-run','--verbose') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'message member') { + $completions = @('info') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'message member info') { + $completions = @('--user-id','--channel','--account','--json','--dry-run','--verbose','--guild-id') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'message voice') { + $completions = @('status') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'message voice status') { + $completions = @('--guild-id','--user-id','--channel','--account','--json','--dry-run','--verbose') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'message event') { + $completions = @('list','create') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'message event list') { + $completions = @('--guild-id','--channel','--account','--json','--dry-run','--verbose') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'message event create') { + $completions = @('--guild-id','--event-name','--start-time','--channel','--account','--json','--dry-run','--verbose','--end-time','--desc','--channel-id','--location','--event-type','--image') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'message timeout') { + $completions = @('--guild-id','--user-id','--channel','--account','--json','--dry-run','--verbose','--duration-min','--until','--reason') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'message kick') { + $completions = @('--guild-id','--user-id','--channel','--account','--json','--dry-run','--verbose','--reason') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'message ban') { + $completions = @('--guild-id','--user-id','--channel','--account','--json','--dry-run','--verbose','--reason','--delete-days') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'mcp') { + $completions = @('serve','list','show','status','probe','doctor','add','set','tools','configure','login','logout','reload','unset') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'mcp serve') { + $completions = @('--url','--token','--token-file','--password','--password-file','--claude-channel-mode','--verbose') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'mcp list') { + $completions = @('--json') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'mcp show') { + $completions = @('--json') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'mcp status') { + $completions = @('--verbose','--json') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'mcp probe') { + $completions = @('--json') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'mcp doctor') { + $completions = @('--probe','--json') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'mcp add') { + $completions = @('--command','--arg','--env','--cwd','--url','--transport','--header','--auth','--oauth-scope','--oauth-redirect-url','--oauth-client-metadata-url','--include','--exclude','--timeout','--connect-timeout','--parallel','--disabled','--ssl-verify','--client-cert','--client-key','--no-probe') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'mcp tools') { + $completions = @('--include','--exclude','--clear') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'mcp configure') { + $completions = @('--enable','--disable','--include','--exclude','--clear-tools','--timeout','--connect-timeout','--clear-timeouts','--parallel','--no-parallel','--auth','--clear-auth','--oauth-scope','--oauth-redirect-url','--oauth-client-metadata-url','--ssl-verify','--client-cert','--client-key','--clear-tls','--probe') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'mcp login') { + $completions = @('--code') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'transcripts') { + $completions = @('list','show','path') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'transcripts list') { + $completions = @('--json') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'transcripts show') { + $completions = @('--json') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'transcripts path') { + $completions = @('--dir','--metadata','--transcript','--json') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'agent') { + $completions = @('--message','--message-file','--to','--session-key','--session-id','--agent','--model','--thinking','--verbose','--channel','--reply-to','--reply-channel','--reply-account','--local','--deliver','--json','--timeout') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'agents') { + $completions = @('list','bindings','bind','unbind','add','set-identity','delete') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'agents list') { + $completions = @('--json','--bindings') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'agents bindings') { + $completions = @('--agent','--json') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'agents bind') { + $completions = @('--agent','--bind','--json') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'agents unbind') { + $completions = @('--agent','--bind','--all','--json') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'agents add') { + $completions = @('--workspace','--model','--agent-dir','--bind','--non-interactive','--json') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'agents set-identity') { + $completions = @('--agent','--workspace','--identity-file','--from-identity','--name','--theme','--emoji','--avatar','--json') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'agents delete') { + $completions = @('--force','--json') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'status') { + $completions = @('--json','--all','--usage','--deep','--timeout','--verbose','--debug') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'health') { + $completions = @('--json','--timeout','--verbose','--debug') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'sessions') { + $completions = @('list','cleanup','tail','export-trajectory','compact','--json','--verbose','--store','--agent','--all-agents','--active','--limit') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'sessions list') { + $completions = @('--json','--verbose','--store','--agent','--all-agents','--active','--limit') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'sessions cleanup') { + $completions = @('--store','--agent','--all-agents','--dry-run','--enforce','--fix-missing','--fix-dm-scope','--active-key','--json') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'sessions tail') { + $completions = @('--session-key','--tail','--follow','--store','--agent','--all-agents') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'sessions export-trajectory') { + $completions = @('--session-key','--output','--workspace','--store','--agent','--request-json-base64','--json') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'sessions compact') { + $completions = @('--agent','--max-lines','--url','--token','--password','--timeout','--json') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'commitments') { + $completions = @('list','dismiss','--json','--agent','--status','--all') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'commitments list') { + $completions = @('--json','--agent','--status','--all') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'commitments dismiss') { + $completions = @('--json') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'tasks') { + $completions = @('list','audit','maintenance','show','notify','cancel','flow','--json','--runtime','--status') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'tasks list') { + $completions = @('--json','--runtime','--status') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'tasks audit') { + $completions = @('--json','--severity','--code','--limit') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'tasks maintenance') { + $completions = @('--json','--apply') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'tasks show') { + $completions = @('--json') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'tasks flow') { + $completions = @('list','show','cancel') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'tasks flow list') { + $completions = @('--json','--status') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'tasks flow show') { + $completions = @('--json') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'acp') { + $completions = @('client','--url','--token','--token-file','--password','--password-file','--session','--session-label','--require-existing','--reset-session','--no-prefix-cwd','--provenance','--verbose') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'acp client') { + $completions = @('--cwd','--server','--server-args','--server-verbose','--verbose') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'gateway') { + $completions = @('run','status','install','uninstall','start','stop','restart','call','usage-cost','health','stability','diagnostics','probe','discover','--port','--bind','--token','--auth','--password','--password-file','--tailscale','--tailscale-reset-on-exit','--allow-unconfigured','--dev','--reset','--force','--verbose','--cli-backend-logs','--claude-cli-logs','--ws-log','--compact','--raw-stream','--raw-stream-path') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'gateway run') { + $completions = @('--port','--bind','--token','--auth','--password','--password-file','--tailscale','--tailscale-reset-on-exit','--allow-unconfigured','--dev','--reset','--force','--verbose','--cli-backend-logs','--claude-cli-logs','--ws-log','--compact','--raw-stream','--raw-stream-path') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'gateway status') { + $completions = @('--url','--token','--password','--timeout','--no-probe','--require-rpc','--deep','--json') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'gateway install') { + $completions = @('--port','--runtime','--token','--wrapper','--force','--json') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'gateway uninstall') { + $completions = @('--json') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'gateway start') { + $completions = @('--json') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'gateway stop') { + $completions = @('--json','--disable') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'gateway restart') { + $completions = @('--force','--safe','--skip-deferral','--wait','--json') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'gateway call') { + $completions = @('--params','--url','--token','--password','--timeout','--expect-final','--json') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'gateway usage-cost') { + $completions = @('--days','--agent','--all-agents','--url','--token','--password','--timeout','--expect-final','--json') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'gateway health') { + $completions = @('--port','--url','--token','--password','--timeout','--expect-final','--json') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'gateway stability') { + $completions = @('--limit','--type','--since-seq','--bundle','--export','--output','--url','--token','--password','--timeout','--expect-final','--json') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'gateway diagnostics') { + $completions = @('export') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'gateway diagnostics export') { + $completions = @('--output','--log-lines','--log-bytes','--url','--token','--password','--timeout','--no-stability-bundle','--json') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'gateway probe') { + $completions = @('--url','--port','--ssh','--ssh-identity','--ssh-auto','--token','--password','--timeout','--json') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'gateway discover') { + $completions = @('--timeout','--json') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'daemon') { + $completions = @('status','install','uninstall','start','stop','restart') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'daemon status') { + $completions = @('--url','--token','--password','--timeout','--no-probe','--require-rpc','--deep','--json') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'daemon install') { + $completions = @('--port','--runtime','--token','--wrapper','--force','--json') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'daemon uninstall') { + $completions = @('--json') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'daemon start') { + $completions = @('--json') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'daemon stop') { + $completions = @('--json','--disable') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'daemon restart') { + $completions = @('--force','--safe','--skip-deferral','--wait','--json') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'logs') { + $completions = @('--limit','--max-bytes','--follow','--interval','--json','--plain','--no-color','--local-time','--utc','--url','--token','--timeout','--expect-final') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'system') { + $completions = @('event','heartbeat','presence') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'system event') { + $completions = @('--text','--mode','--session-key','--json','--url','--token','--timeout','--expect-final') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'system heartbeat') { + $completions = @('last','enable','disable') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'system heartbeat last') { + $completions = @('--json','--url','--token','--timeout','--expect-final') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'system heartbeat enable') { + $completions = @('--json','--url','--token','--timeout','--expect-final') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'system heartbeat disable') { + $completions = @('--json','--url','--token','--timeout','--expect-final') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'system presence') { + $completions = @('--json','--url','--token','--timeout','--expect-final') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'models') { + $completions = @('list','status','set','set-image','aliases','fallbacks','image-fallbacks','scan','auth','--status-json','--status-plain','--agent') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'models list') { + $completions = @('--all','--local','--provider','--json','--plain') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'models status') { + $completions = @('--json','--plain','--check','--probe','--probe-provider','--probe-profile','--probe-timeout','--probe-concurrency','--probe-max-tokens','--agent') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'models aliases') { + $completions = @('list','add','remove') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'models aliases list') { + $completions = @('--json','--plain') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'models fallbacks') { + $completions = @('list','add','remove','clear') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'models fallbacks list') { + $completions = @('--json','--plain') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'models image-fallbacks') { + $completions = @('list','add','remove','clear') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'models image-fallbacks list') { + $completions = @('--json','--plain') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'models scan') { + $completions = @('--min-params','--max-age-days','--provider','--max-candidates','--timeout','--concurrency','--no-probe','--yes','--no-input','--set-default','--set-image','--json') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'models auth') { + $completions = @('list','add','login','setup-token','paste-token','paste-api-key','login-github-copilot','order','--agent') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'models auth list') { + $completions = @('--provider','--agent','--json') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'models auth login') { + $completions = @('--provider','--method','--device-code','--profile-id','--set-default','--force') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'models auth setup-token') { + $completions = @('--provider','--yes') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'models auth paste-token') { + $completions = @('--provider','--profile-id','--expires-in') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'models auth paste-api-key') { + $completions = @('--provider','--profile-id') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'models auth login-github-copilot') { + $completions = @('--yes') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'models auth order') { + $completions = @('get','set','clear') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'models auth order get') { + $completions = @('--provider','--agent','--json') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'models auth order set') { + $completions = @('--provider','--agent') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'models auth order clear') { + $completions = @('--provider','--agent') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'infer') { + $completions = @('list','inspect','model','image','audio','tts','video','web','embedding') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'infer list') { + $completions = @('--json') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'infer inspect') { + $completions = @('--name','--json') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'infer model') { + $completions = @('run','list','inspect','providers','auth') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'infer model run') { + $completions = @('--prompt','--file','--model','--thinking','--local','--gateway','--json') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'infer model list') { + $completions = @('--json') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'infer model inspect') { + $completions = @('--model','--json') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'infer model providers') { + $completions = @('--json') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'infer model auth') { + $completions = @('login','logout','status') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'infer model auth login') { + $completions = @('--provider','--method') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'infer model auth logout') { + $completions = @('--provider','--agent','--json') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'infer model auth status') { + $completions = @('--json') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'infer image') { + $completions = @('generate','edit','describe','describe-many','providers') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'infer image generate') { + $completions = @('--prompt','--model','--count','--size','--aspect-ratio','--resolution','--output-format','--background','--openai-background','--openai-moderation','--quality','--timeout-ms','--output','--json') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'infer image edit') { + $completions = @('--file','--prompt','--model','--count','--size','--aspect-ratio','--resolution','--output-format','--background','--openai-background','--openai-moderation','--quality','--timeout-ms','--output','--json') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'infer image describe') { + $completions = @('--file','--prompt','--model','--timeout-ms','--json') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'infer image describe-many') { + $completions = @('--file','--prompt','--model','--timeout-ms','--json') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'infer image providers') { + $completions = @('--json') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'infer audio') { + $completions = @('transcribe','providers') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'infer audio transcribe') { + $completions = @('--file','--language','--prompt','--model','--json') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'infer audio providers') { + $completions = @('--json') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'infer tts') { + $completions = @('convert','voices','providers','personas','status','enable','disable','set-provider','set-persona') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'infer tts convert') { + $completions = @('--text','--channel','--voice','--model','--output','--local','--gateway','--json') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'infer tts voices') { + $completions = @('--provider','--json') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'infer tts providers') { + $completions = @('--local','--gateway','--json') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'infer tts personas') { + $completions = @('--local','--gateway','--json') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'infer tts status') { + $completions = @('--gateway','--json') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'infer tts enable') { + $completions = @('--local','--gateway','--json') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'infer tts disable') { + $completions = @('--local','--gateway','--json') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'infer tts set-provider') { + $completions = @('--provider','--local','--gateway','--json') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'infer tts set-persona') { + $completions = @('--persona','--off','--local','--gateway','--json') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'infer video') { + $completions = @('generate','describe','providers') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'infer video generate') { + $completions = @('--prompt','--model','--size','--aspect-ratio','--resolution','--duration','--audio','--watermark','--timeout-ms','--output','--json') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'infer video describe') { + $completions = @('--file','--model','--json') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'infer video providers') { + $completions = @('--json') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'infer web') { + $completions = @('search','fetch','providers') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'infer web search') { + $completions = @('--query','--provider','--limit','--json') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'infer web fetch') { + $completions = @('--url','--provider','--format','--json') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'infer web providers') { + $completions = @('--json') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'infer embedding') { + $completions = @('create','providers') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'infer embedding create') { + $completions = @('--text','--provider','--model','--json') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'infer embedding providers') { + $completions = @('--json') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'approvals') { + $completions = @('get','set','allowlist') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'approvals get') { + $completions = @('--node','--gateway','--url','--token','--timeout','--json') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'approvals set') { + $completions = @('--node','--gateway','--file','--stdin','--url','--token','--timeout','--json') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'approvals allowlist') { + $completions = @('add','remove') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'approvals allowlist add') { + $completions = @('--node','--gateway','--agent','--url','--token','--timeout','--json') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'approvals allowlist remove') { + $completions = @('--node','--gateway','--agent','--url','--token','--timeout','--json') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'exec-policy') { + $completions = @('show','preset','set') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'exec-policy show') { + $completions = @('--json') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'exec-policy preset') { + $completions = @('--json') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'exec-policy set') { + $completions = @('--host','--security','--ask','--ask-fallback','--json') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'nodes') { + $completions = @('status','describe','list','pending','approve','reject','remove','rename','invoke','notify','push','camera','screen','location') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'nodes status') { + $completions = @('--connected','--last-connected','--url','--token','--timeout','--json') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'nodes describe') { + $completions = @('--node','--url','--token','--timeout','--json') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'nodes list') { + $completions = @('--connected','--last-connected','--url','--token','--timeout','--json') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'nodes pending') { + $completions = @('--url','--token','--timeout','--json') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'nodes approve') { + $completions = @('--url','--token','--timeout','--json') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'nodes reject') { + $completions = @('--url','--token','--timeout','--json') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'nodes remove') { + $completions = @('--node','--url','--token','--timeout','--json') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'nodes rename') { + $completions = @('--node','--name','--url','--token','--timeout','--json') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'nodes invoke') { + $completions = @('--node','--command','--params','--invoke-timeout','--idempotency-key','--url','--token','--timeout','--json') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'nodes notify') { + $completions = @('--node','--title','--body','--sound','--priority','--delivery','--invoke-timeout','--url','--token','--timeout','--json') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'nodes push') { + $completions = @('--node','--title','--body','--environment','--url','--token','--timeout','--json') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'nodes camera') { + $completions = @('list','snap','clip') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'nodes camera list') { + $completions = @('--node','--url','--token','--timeout','--json') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'nodes camera snap') { + $completions = @('--node','--facing','--device-id','--max-width','--quality','--delay-ms','--invoke-timeout','--url','--token','--timeout','--json') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'nodes camera clip') { + $completions = @('--node','--facing','--device-id','--duration','--no-audio','--invoke-timeout','--url','--token','--timeout','--json') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'nodes screen') { + $completions = @('record') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'nodes screen record') { + $completions = @('--node','--screen','--duration','--fps','--no-audio','--out','--invoke-timeout','--url','--token','--timeout','--json') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'nodes location') { + $completions = @('get') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'nodes location get') { + $completions = @('--node','--max-age','--accuracy','--location-timeout','--invoke-timeout','--url','--token','--timeout','--json') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'devices') { + $completions = @('list','remove','clear','approve','reject','rotate','revoke') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'devices list') { + $completions = @('--url','--token','--password','--timeout','--json') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'devices remove') { + $completions = @('--url','--token','--password','--timeout','--json') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'devices clear') { + $completions = @('--pending','--yes','--url','--token','--password','--timeout','--json') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'devices approve') { + $completions = @('--latest','--url','--token','--password','--timeout','--json') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'devices reject') { + $completions = @('--url','--token','--password','--timeout','--json') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'devices rotate') { + $completions = @('--device','--role','--scope','--url','--token','--password','--timeout','--json') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'devices revoke') { + $completions = @('--device','--role','--url','--token','--password','--timeout','--json') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'node') { + $completions = @('run','status','install','uninstall','stop','start','restart') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'node run') { + $completions = @('--host','--port','--tls','--tls-fingerprint','--node-id','--display-name') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'node status') { + $completions = @('--json') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'node install') { + $completions = @('--host','--port','--tls','--tls-fingerprint','--node-id','--display-name','--runtime','--force','--json') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'node uninstall') { + $completions = @('--json') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'node stop') { + $completions = @('--json') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'node start') { + $completions = @('--json') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'node restart') { + $completions = @('--json') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'sandbox') { + $completions = @('list','recreate','explain') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'sandbox list') { + $completions = @('--json','--browser') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'sandbox recreate') { + $completions = @('--all','--session','--agent','--browser','--force') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'sandbox explain') { + $completions = @('--session','--agent','--json') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'tui') { + $completions = @('--local','--url','--token','--password','--session','--deliver','--thinking','--message','--timeout-ms','--history-limit') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'cron') { + $completions = @('status','list','add','rm','enable','disable','get','show','runs','run','edit') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'cron status') { + $completions = @('--json','--url','--token','--timeout','--expect-final') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'cron list') { + $completions = @('--all','--agent','--json','--url','--token','--timeout','--expect-final') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'cron add') { + $completions = @('--name','--description','--disabled','--delete-after-run','--keep-after-run','--agent','--session','--session-key','--wake','--at','--every','--cron','--tz','--stagger','--exact','--system-event','--message','--command','--command-argv','--command-cwd','--command-env','--command-input','--thinking','--model','--fallbacks','--timeout-seconds','--no-output-timeout-seconds','--output-max-bytes','--light-context','--tools','--announce','--deliver','--no-deliver','--webhook','--channel','--to','--thread-id','--account','--best-effort-deliver','--json','--url','--token','--timeout','--expect-final') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'cron rm') { + $completions = @('--json','--url','--token','--timeout','--expect-final') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'cron enable') { + $completions = @('--url','--token','--timeout','--expect-final') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'cron disable') { + $completions = @('--url','--token','--timeout','--expect-final') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'cron get') { + $completions = @('--url','--token','--timeout','--expect-final') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'cron show') { + $completions = @('--json','--url','--token','--timeout','--expect-final') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'cron runs') { + $completions = @('--id','--run-id','--limit','--url','--token','--timeout','--expect-final') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'cron run') { + $completions = @('--due','--wait','--wait-timeout','--poll-interval','--url','--token','--timeout','--expect-final') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'cron edit') { + $completions = @('--name','--description','--enable','--disable','--delete-after-run','--keep-after-run','--session','--agent','--clear-agent','--session-key','--clear-session-key','--wake','--at','--every','--cron','--tz','--stagger','--exact','--system-event','--message','--command','--command-argv','--command-cwd','--command-env','--command-input','--thinking','--model','--fallbacks','--clear-fallbacks','--clear-model','--timeout-seconds','--no-output-timeout-seconds','--output-max-bytes','--light-context','--no-light-context','--tools','--clear-tools','--announce','--deliver','--no-deliver','--webhook','--channel','--to','--thread-id','--account','--clear-channel','--clear-to','--clear-thread-id','--clear-account','--best-effort-deliver','--no-best-effort-deliver','--failure-alert','--no-failure-alert','--failure-alert-after','--failure-alert-channel','--failure-alert-to','--failure-alert-cooldown','--failure-alert-include-skipped','--failure-alert-exclude-skipped','--failure-alert-mode','--failure-alert-account-id','--url','--token','--timeout','--expect-final') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'dns') { + $completions = @('setup') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'dns setup') { + $completions = @('--domain','--apply') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'proxy') { + $completions = @('start','run','validate','coverage','sessions','query','blob','purge') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'proxy start') { + $completions = @('--host','--port') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'proxy run') { + $completions = @('--host','--port') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'proxy validate') { + $completions = @('--json','--proxy-url','--proxy-ca-file','--allowed-url','--denied-url','--apns-reachable','--apns-authority','--timeout-ms') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'proxy sessions') { + $completions = @('--limit') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'proxy query') { + $completions = @('--preset','--session') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'proxy blob') { + $completions = @('--id') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'hooks') { + $completions = @('list','info','check','enable','disable','relay','install','update') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'hooks list') { + $completions = @('--eligible','--json','--verbose') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'hooks info') { + $completions = @('--json') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'hooks check') { + $completions = @('--json') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'hooks relay') { + $completions = @('--provider','--relay-id','--generation','--event','--pre-tool-use-unavailable','--timeout') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'hooks install') { + $completions = @('--link','--pin') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'hooks update') { + $completions = @('--all','--dry-run') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'webhooks') { + $completions = @('gmail') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'webhooks gmail') { + $completions = @('setup','run') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'webhooks gmail setup') { + $completions = @('--account','--project','--topic','--subscription','--label','--hook-url','--hook-token','--push-token','--bind','--port','--path','--include-body','--max-bytes','--renew-minutes','--tailscale','--tailscale-path','--tailscale-target','--push-endpoint','--json') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'webhooks gmail run') { + $completions = @('--account','--topic','--subscription','--label','--hook-url','--hook-token','--push-token','--bind','--port','--path','--include-body','--max-bytes','--renew-minutes','--tailscale','--tailscale-path','--tailscale-target') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'qr') { + $completions = @('--remote','--url','--public-url','--token','--password','--setup-code-only','--no-ascii','--json') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'clawbot') { + $completions = @('qr') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'clawbot qr') { + $completions = @('--remote','--url','--public-url','--token','--password','--setup-code-only','--no-ascii','--json') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'pairing') { + $completions = @('list','approve') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'pairing list') { + $completions = @('--channel','--account','--json') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'pairing approve') { + $completions = @('--channel','--account','--notify') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'plugins') { + $completions = @('list','search','inspect','enable','disable','uninstall','install','update','registry','doctor','build','validate','init','marketplace') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'plugins list') { + $completions = @('--json','--enabled','--verbose') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'plugins search') { + $completions = @('--limit','--json') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'plugins inspect') { + $completions = @('--all','--runtime','--json') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'plugins uninstall') { + $completions = @('--keep-files','--keep-config','--force','--dry-run') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'plugins install') { + $completions = @('--link','--force','--pin','--dangerously-force-unsafe-install','--marketplace') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'plugins update') { + $completions = @('--all','--dry-run','--dangerously-force-unsafe-install') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'plugins registry') { + $completions = @('--json','--refresh') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'plugins build') { + $completions = @('--root','--entry','--check') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'plugins validate') { + $completions = @('--root','--entry') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'plugins init') { + $completions = @('--directory','--name','--force') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'plugins marketplace') { + $completions = @('list') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'plugins marketplace list') { + $completions = @('--json') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'channels') { + $completions = @('list','status','capabilities','resolve','logs','add','remove','login','logout') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'channels list') { + $completions = @('--all','--json') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'channels status') { + $completions = @('--channel','--probe','--timeout','--json') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'channels capabilities') { + $completions = @('--channel','--account','--target','--timeout','--json') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'channels resolve') { + $completions = @('--channel','--account','--kind','--json') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'channels logs') { + $completions = @('--channel','--lines','--json') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'channels add') { + $completions = @('--channel','--account','--name','--token','--token-file','--secret','--secret-file','--bot-token','--app-token','--password','--cli-path','--url','--base-url','--http-url','--auth-dir','--use-env','--db-path','--service','--region') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'channels remove') { + $completions = @('--channel','--account','--delete') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'channels login') { + $completions = @('--channel','--account','--verbose') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'channels logout') { + $completions = @('--channel','--account') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'directory') { + $completions = @('self','peers','groups') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'directory self') { + $completions = @('--channel','--account','--json') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'directory peers') { + $completions = @('list') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'directory peers list') { + $completions = @('--channel','--account','--json','--query','--limit') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'directory groups') { + $completions = @('list','members') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'directory groups list') { + $completions = @('--channel','--account','--json','--query','--limit') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'directory groups members') { + $completions = @('--group-id','--channel','--account','--json','--limit') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'security') { + $completions = @('audit') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'security audit') { + $completions = @('--deep','--auth','--token','--password','--fix','--json') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'secrets') { + $completions = @('reload','audit','configure','apply') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'secrets reload') { + $completions = @('--json','--url','--token','--timeout','--expect-final') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'secrets audit') { + $completions = @('--check','--allow-exec','--json') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'secrets configure') { + $completions = @('--apply','--yes','--providers-only','--skip-provider-setup','--agent','--allow-exec','--plan-out','--json') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'secrets apply') { + $completions = @('--from','--dry-run','--allow-exec','--json') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'skills') { + $completions = @('search','install','update','verify','workshop','list','info','check','--agent') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'skills search') { + $completions = @('--limit','--json') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'skills install') { + $completions = @('--version','--force','--force-install','--global','--agent','--as') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'skills update') { + $completions = @('--all','--force-install','--global','--agent') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'skills verify') { + $completions = @('--version','--tag','--card','--global','--agent') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'skills workshop') { + $completions = @('list','inspect','propose-create','propose-update','revise','apply','reject','quarantine','--agent') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'skills workshop list') { + $completions = @('--json') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'skills workshop inspect') { + $completions = @('--json') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'skills workshop propose-create') { + $completions = @('--name','--description','--proposal','--proposal-dir','--goal','--evidence','--json') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'skills workshop propose-update') { + $completions = @('--proposal','--proposal-dir','--description','--goal','--evidence','--json') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'skills workshop revise') { + $completions = @('--proposal','--proposal-dir','--description','--goal','--evidence','--json') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'skills workshop apply') { + $completions = @('--json') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'skills workshop reject') { + $completions = @('--reason','--json') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'skills workshop quarantine') { + $completions = @('--reason','--json') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'skills list') { + $completions = @('--json','--eligible','--verbose','--agent') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'skills info') { + $completions = @('--json','--agent') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'skills check') { + $completions = @('--agent','--json') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'update') { + $completions = @('repair','finalize','wizard','status','--json','--no-restart','--dry-run','--channel','--tag','--timeout','--yes') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'update repair') { + $completions = @('--json','--channel','--timeout','--yes','--no-restart') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'update finalize') { + $completions = @('--json','--channel','--timeout','--yes','--no-restart') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'update wizard') { + $completions = @('--timeout') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + + if ($commandPath -eq 'update status') { + $completions = @('--json','--timeout') + $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { + [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_) + } + } + +} diff --git a/completions/openclaw.zsh b/completions/openclaw.zsh new file mode 100644 index 0000000..716df9b --- /dev/null +++ b/completions/openclaw.zsh @@ -0,0 +1,4620 @@ + +#compdef openclaw + +_openclaw_root_completion() { + local -a commands + local -a options + + _arguments -C \ + "(--version -V)"{--version,-V}"[output the version number]" \ + "--container[Run the CLI inside a running Podman/Docker container named (default: env OPENCLAW_CONTAINER)]" \ + "--dev[Dev profile: isolate state under ~/.openclaw-dev, default gateway port 19001, and shift derived ports (browser/canvas)]" \ + "--profile[Use a named profile (isolates OPENCLAW_STATE_DIR/OPENCLAW_CONFIG_PATH under ~/.openclaw-)]" \ + "--log-level[Global log level override for file + console (silent|fatal|error|warn|info|debug|trace)]" \ + "--no-color[Disable ANSI colors]" \ + "1: :_values 'command' 'completion[Generate shell completion script]' 'crestodian[Open the ring-zero setup and repair helper]' 'setup[Create baseline config/workspace files; use --wizard for full onboarding]' 'onboard[Guided setup for auth, models, Gateway, workspace, channels, and skills]' 'configure[Interactive configuration for credentials, channels, gateway, and agent defaults]' 'config[Non-interactive config helpers (get/set/patch/unset/file/schema/validate). Run without subcommand for guided setup.]' 'backup[Create and verify local backup archives for OpenClaw state]' 'migrate[Import state from another agent system]' 'doctor[Health checks + quick fixes for the gateway and channels]' 'dashboard[Open the Control UI with your current token]' 'reset[Reset local config/state (keeps the CLI installed)]' 'uninstall[Uninstall the gateway service + local data (CLI remains)]' 'message[Send, read, and manage messages and channel actions]' 'mcp[Manage OpenClaw mcp.servers config and channel bridge]' 'transcripts[Inspect stored transcripts]' 'agent[Run an agent turn via the Gateway (use --local for embedded)]' 'agents[Manage isolated agents (workspaces + auth + routing)]' 'status[Show channel health and recent session recipients]' 'health[Fetch health from the running gateway]' 'sessions[List stored conversation sessions]' 'commitments[List and manage inferred follow-up commitments]' 'tasks[Inspect durable background tasks and TaskFlow state]' 'acp[Run an ACP bridge backed by the Gateway]' 'gateway[Run, inspect, and query the WebSocket Gateway]' 'daemon[Manage the Gateway service (launchd/systemd/schtasks)]' 'logs[Tail gateway file logs via RPC]' 'system[System tools (events, heartbeat, presence)]' 'models[Model discovery, scanning, and configuration]' 'infer[Run provider-backed inference commands through a stable CLI surface]' 'approvals[Manage exec approvals (gateway or node host)]' 'exec-policy[Show or synchronize requested exec policy with host approvals]' 'nodes[Manage gateway-owned nodes (pairing, status, invoke, and media)]' 'devices[Device pairing and auth tokens]' 'node[Run and manage the headless node host service]' 'sandbox[Manage sandbox containers (Docker-based agent isolation)]' 'tui[Open a terminal UI connected to the Gateway]' 'cron[Manage cron jobs (via Gateway)]' 'dns[DNS helpers for wide-area discovery (Tailscale + CoreDNS)]' 'docs[Search the live OpenClaw docs]' 'proxy[Run the OpenClaw debug proxy and inspect captured traffic]' 'hooks[Manage internal agent hooks]' 'webhooks[Webhook helpers and integrations]' 'qr[Generate a mobile pairing QR code and setup code]' 'clawbot[Legacy clawbot command aliases]' 'pairing[Secure DM pairing (approve inbound requests)]' 'plugins[Manage OpenClaw plugins and extensions]' 'channels[Manage connected chat channels and accounts]' 'directory[Lookup contact and group IDs (self, peers, groups) for supported chat channels]' 'security[Audit local config and state for common security foot-guns]' 'secrets[Secrets runtime controls]' 'skills[List and inspect available skills]' 'update[Update OpenClaw and inspect update channel status]'" \ + "*::arg:->args" + + case $state in + (args) + case $line[1] in + (completion) _openclaw_completion ;; + (crestodian) _openclaw_crestodian ;; + (setup) _openclaw_setup ;; + (onboard) _openclaw_onboard ;; + (configure) _openclaw_configure ;; + (config) _openclaw_config ;; + (backup) _openclaw_backup ;; + (migrate) _openclaw_migrate ;; + (doctor) _openclaw_doctor ;; + (dashboard) _openclaw_dashboard ;; + (reset) _openclaw_reset ;; + (uninstall) _openclaw_uninstall ;; + (message) _openclaw_message ;; + (mcp) _openclaw_mcp ;; + (transcripts) _openclaw_transcripts ;; + (agent) _openclaw_agent ;; + (agents) _openclaw_agents ;; + (status) _openclaw_status ;; + (health) _openclaw_health ;; + (sessions) _openclaw_sessions ;; + (commitments) _openclaw_commitments ;; + (tasks) _openclaw_tasks ;; + (acp) _openclaw_acp ;; + (gateway) _openclaw_gateway ;; + (daemon) _openclaw_daemon ;; + (logs) _openclaw_logs ;; + (system) _openclaw_system ;; + (models) _openclaw_models ;; + (infer) _openclaw_infer ;; + (approvals) _openclaw_approvals ;; + (exec-policy) _openclaw_exec_policy ;; + (nodes) _openclaw_nodes ;; + (devices) _openclaw_devices ;; + (node) _openclaw_node ;; + (sandbox) _openclaw_sandbox ;; + (tui) _openclaw_tui ;; + (cron) _openclaw_cron ;; + (dns) _openclaw_dns ;; + (docs) _openclaw_docs ;; + (proxy) _openclaw_proxy ;; + (hooks) _openclaw_hooks ;; + (webhooks) _openclaw_webhooks ;; + (qr) _openclaw_qr ;; + (clawbot) _openclaw_clawbot ;; + (pairing) _openclaw_pairing ;; + (plugins) _openclaw_plugins ;; + (channels) _openclaw_channels ;; + (directory) _openclaw_directory ;; + (security) _openclaw_security ;; + (secrets) _openclaw_secrets ;; + (skills) _openclaw_skills ;; + (update) _openclaw_update ;; + esac + ;; + esac +} + + +_openclaw_completion() { + _arguments -C \ + "(--shell -s)"{--shell,-s}"[Shell to generate completion for (default: zsh)]" \ + "(--install -i)"{--install,-i}"[Install completion script to shell profile]" \ + "--write-state[Write completion scripts to \$OPENCLAW_STATE_DIR/completions (no stdout)]" \ + "(--yes -y)"{--yes,-y}"[Skip confirmation (non-interactive)]" +} + +_openclaw_crestodian() { + _arguments -C \ + "(--message -m)"{--message,-m}"[Run one Crestodian request]" \ + "--yes[Approve persistent config writes for this request]" \ + "--json[Output startup overview as JSON]" +} + +_openclaw_setup() { + _arguments -C \ + "--workspace[Agent workspace directory (default: ~/.openclaw/workspace; stored as agents.defaults.workspace)]" \ + "--wizard[Run interactive onboarding]" \ + "--non-interactive[Run onboarding without prompts]" \ + "--accept-risk[Acknowledge that agents are powerful and full system access is risky (required for --non-interactive)]" \ + "--mode[Onboard mode: local|remote]" \ + "--import-from[Migration provider to run during onboarding]" \ + "--import-source[Source agent home for --import-from]" \ + "--import-secrets[Import supported secrets during onboarding migration]" \ + "--remote-url[Remote Gateway WebSocket URL]" \ + "--remote-token[Remote Gateway token (optional)]" +} + +_openclaw_onboard() { + _arguments -C \ + "--workspace[Agent workspace directory (default: ~/.openclaw/workspace)]" \ + "--reset[Reset config + credentials + sessions before running onboard (workspace only with --reset-scope full)]" \ + "--reset-scope[Reset scope: config|config+creds+sessions|full]" \ + "--non-interactive[Run without prompts]" \ + "--modern[Use the conversational setup/repair assistant]" \ + "--accept-risk[Acknowledge that agents are powerful and full system access is risky (required for --non-interactive)]" \ + "--flow[Onboard flow: quickstart|advanced|manual|import]" \ + "--mode[Onboard mode: local|remote]" \ + "--auth-choice[Auth: custom-api-key|skip|claude-cli|apiKey|anthropic-cli|setup-token|arceeai-api-key|byteplus-api-key|cerebras-api-key|openai-device-code|openai|chutes|chutes-api-key|cloudflare-ai-gateway-api-key|zai-cn|codex|qwen-api-key-cn|qwen-api-key|zai-coding-cn|zai-coding-global|cohere-api-key|copilot-proxy|deepinfra-api-key|deepseek-api-key|fireworks-api-key|google-gemini-cli|github-copilot|zai-global|gmi-api-key|gemini-api-key|google-vertex-api-key|groq-api-key|huggingface-api-key|kilocode-api-key|kimi-code-api-key|litellm-api-key|lmstudio|microsoft-foundry-apikey|microsoft-foundry-entra|minimax-cn-api|minimax-global-api|minimax-cn-oauth|minimax-global-oauth|mistral-api-key|moonshot-api-key|moonshot-api-key-cn|novita-api-key|nvidia-api-key|ollama|ollama-cloud|openai-api-key|opencode-go|opencode-zen|arceeai-openrouter|openrouter-api-key|openrouter-oauth|qianfan-api-key|qwen-oauth|sglang|qwen-standard-api-key-cn|qwen-standard-api-key|stepfun-standard-api-key-cn|stepfun-standard-api-key-intl|stepfun-plan-api-key-cn|stepfun-plan-api-key-intl|synthetic-api-key|tokenhub-api-key|together-api-key|venice-api-key|ai-gateway-api-key|vllm|volcengine-api-key|xai-api-key|xai-device-code|xai-oauth|xiaomi-api-key|xiaomi-token-plan-cn|xiaomi-token-plan-ams|xiaomi-token-plan-sgp|zai-api-key]" \ + "--token-provider[Token provider id (non-interactive; used with --auth-choice token)]" \ + "--token[Token value (non-interactive; used with --auth-choice token)]" \ + "--token-profile-id[Auth profile id (non-interactive; default: :manual)]" \ + "--token-expires-in[Optional token expiry duration (e.g. 365d, 12h)]" \ + "--secret-input-mode[API key persistence mode: plaintext|ref (default: plaintext)]" \ + "--cloudflare-ai-gateway-account-id[Cloudflare Account ID]" \ + "--cloudflare-ai-gateway-gateway-id[Cloudflare AI Gateway ID]" \ + "--alibaba-model-studio-api-key[Alibaba Model Studio API key]" \ + "--anthropic-api-key[Anthropic API key]" \ + "--byteplus-api-key[BytePlus API key]" \ + "--cohere-api-key[Cohere API key]" \ + "--comfy-api-key[Comfy Cloud API key]" \ + "--fal-api-key[fal API key]" \ + "--github-copilot-token[GitHub Copilot OAuth token]" \ + "--gemini-api-key[Gemini API key]" \ + "--huggingface-api-key[Hugging Face API key (HF token)]" \ + "--litellm-api-key[LiteLLM API key]" \ + "--lmstudio-api-key[LM Studio API key]" \ + "--minimax-api-key[MiniMax API key]" \ + "--mistral-api-key[Mistral API key]" \ + "--novita-api-key[NovitaAI API key]" \ + "--nvidia-api-key[NVIDIA API key]" \ + "--ollama-cloud-api-key[Ollama Cloud API key]" \ + "--openai-api-key[OpenAI API Key]" \ + "--opencode-zen-api-key[OpenCode API key (Zen catalog)]" \ + "--opencode-go-api-key[OpenCode API key (Go catalog)]" \ + "--openrouter-api-key[OpenRouter API key]" \ + "--runway-api-key[Runway API key]" \ + "--synthetic-api-key[Synthetic API key]" \ + "--together-api-key[Together AI API key]" \ + "--volcengine-api-key[Volcano Engine API key]" \ + "--vydra-api-key[Vydra API key]" \ + "--xai-api-key[xAI API key]" \ + "--xiaomi-api-key[Xiaomi MiMo pay-as-you-go API key]" \ + "--xiaomi-token-plan-api-key[Xiaomi MiMo Token Plan API key]" \ + "--deepseek-api-key[DeepSeek API key]" \ + "--arceeai-api-key[Arcee AI API key]" \ + "--cerebras-api-key[Cerebras API key]" \ + "--chutes-api-key[Chutes API key]" \ + "--cloudflare-ai-gateway-api-key[Cloudflare AI Gateway API key]" \ + "--deepinfra-api-key[DeepInfra API key]" \ + "--gmi-api-key[GMI Cloud API key]" \ + "--groq-api-key[Groq API key]" \ + "--kilocode-api-key[Kilo Gateway API key]" \ + "--kimi-code-api-key[Kimi Code API key (subscription)]" \ + "--pixverse-api-key[PixVerse API key]" \ + "--qianfan-api-key[QIANFAN API key]" \ + "--modelstudio-standard-api-key-cn[Qwen Cloud standard API key (China)]" \ + "--modelstudio-standard-api-key[Qwen Cloud standard API key (Global/Intl)]" \ + "--modelstudio-api-key-cn[Qwen Cloud Coding Plan API key (China)]" \ + "--modelstudio-api-key[Qwen Cloud Coding Plan API key (Global/Intl)]" \ + "--qwen-oauth-token[Qwen OAuth token]" \ + "--fireworks-api-key[Fireworks API key]" \ + "--moonshot-api-key[Moonshot API key]" \ + "--tokenhub-api-key[Tencent TokenHub API key]" \ + "--venice-api-key[Venice API key]" \ + "--ai-gateway-api-key[Vercel AI Gateway API key]" \ + "--zai-api-key[Z.AI API key]" \ + "--stepfun-api-key[StepFun API key]" \ + "--custom-base-url[Custom provider base URL]" \ + "--custom-api-key[Custom provider API key (optional)]" \ + "--custom-model-id[Custom provider model ID]" \ + "--custom-provider-id[Custom provider ID (optional; auto-derived by default)]" \ + "--custom-compatibility[Custom provider API compatibility: openai|openai-responses|anthropic (default: openai)]" \ + "--custom-image-input[Mark the custom provider model as image-capable]" \ + "--custom-text-input[Mark the custom provider model as text-only]" \ + "--gateway-port[Gateway port]" \ + "--gateway-bind[Gateway bind: loopback|tailnet|lan|auto|custom]" \ + "--gateway-auth[Gateway auth: token|password]" \ + "--gateway-token[Gateway token (token auth)]" \ + "--gateway-token-ref-env[Gateway token SecretRef env var name (token auth; e.g. OPENCLAW_GATEWAY_TOKEN)]" \ + "--gateway-password[Gateway password (password auth)]" \ + "--remote-url[Remote Gateway WebSocket URL]" \ + "--remote-token[Remote Gateway token (optional)]" \ + "--tailscale[Tailscale: off|serve|funnel]" \ + "--tailscale-reset-on-exit[Reset tailscale serve/funnel on exit]" \ + "--install-daemon[Install gateway service]" \ + "--no-install-daemon[Skip gateway service install]" \ + "--skip-daemon[Skip gateway service install]" \ + "--daemon-runtime[Daemon runtime: node|bun]" \ + "--skip-channels[Skip channel setup]" \ + "--skip-skills[Skip skills setup]" \ + "--skip-bootstrap[Skip creating default agent workspace files]" \ + "--skip-search[Skip search provider setup]" \ + "--skip-health[Skip health check]" \ + "--skip-ui[Skip Control UI/TUI prompts]" \ + "--suppress-gateway-token-output[Suppress token-bearing Gateway/UI output]" \ + "--skip-hooks[Skip hook setup]" \ + "--node-manager[Node manager for skills: npm|pnpm|bun]" \ + "--import-from[Migration provider to run during onboarding]" \ + "--import-source[Source agent home for --import-from]" \ + "--import-secrets[Import supported secrets during onboarding migration]" \ + "--json[Output JSON summary]" +} + +_openclaw_configure() { + _arguments -C \ + "--section[Configuration sections (repeatable). Options: workspace, model, web, gateway, daemon, channels, plugins, skills, health]" +} + +_openclaw_config_get() { + _arguments -C \ + "--json[Output JSON]" +} + +_openclaw_config_set() { + _arguments -C \ + "--strict-json[Strict JSON parsing (error instead of raw string fallback)]" \ + "--json[Legacy alias for --strict-json]" \ + "--dry-run[Validate changes without writing openclaw.json (checks run in builder/json/batch modes; exec SecretRefs are skipped unless --allow-exec is set)]" \ + "--allow-exec[Dry-run only: allow exec SecretRef resolvability checks (may execute provider commands)]" \ + "--merge[Merge object/map values instead of replacing the target path]" \ + "--replace[Allow full replacement of protected map/list paths such as agents.defaults.models]" \ + "--ref-provider[SecretRef builder: provider alias]" \ + "--ref-source[SecretRef builder: source (env|file|exec)]" \ + "--ref-id[SecretRef builder: ref id]" \ + "--provider-source[Provider builder: source (env|file|exec)]" \ + "--provider-allowlist[Provider builder (env): allowlist entry (repeatable)]" \ + "--provider-path[Provider builder (file): path]" \ + "--provider-mode[Provider builder (file): mode (singleValue|json)]" \ + "--provider-timeout-ms[Provider builder (file|exec): timeout ms]" \ + "--provider-max-bytes[Provider builder (file): max bytes]" \ + "--provider-command[Provider builder (exec): absolute command path]" \ + "--provider-arg[Provider builder (exec): command arg (repeatable)]" \ + "--provider-no-output-timeout-ms[Provider builder (exec): no-output timeout ms]" \ + "--provider-max-output-bytes[Provider builder (exec): max output bytes]" \ + "--provider-json-only[Provider builder (exec): require JSON output]" \ + "--provider-env[Provider builder (exec): env assignment (repeatable)]" \ + "--provider-pass-env[Provider builder (exec): pass host env var (repeatable)]" \ + "--provider-trusted-dir[Provider builder (exec): trusted directory (repeatable)]" \ + "--provider-allow-insecure-path[Provider builder (file|exec): bypass strict path permission checks]" \ + "--provider-allow-symlink-command[Provider builder (exec): allow command symlink path]" \ + "--batch-json[Batch mode: JSON array of set operations]" \ + "--batch-file[Batch mode: read JSON array of set operations from file]" +} + +_openclaw_config_patch() { + _arguments -C \ + "--file[Read a JSON5 config patch object from file]" \ + "--stdin[Read a JSON5 config patch object from stdin]" \ + "--dry-run[Validate changes without writing openclaw.json (checks schema and SecretRef resolvability; exec SecretRefs are skipped unless --allow-exec is set)]" \ + "--allow-exec[Dry-run only: allow exec SecretRef resolvability checks (may execute provider commands)]" \ + "--json[Output dry-run result as JSON]" \ + "--replace-path[Replace the object or array at this dot/bracket path instead of recursively applying it (repeatable)]" +} + +_openclaw_config_unset() { + _arguments -C \ + "--dry-run[validate the removal without writing the config file]" \ + "--allow-exec[allow exec SecretRef providers during --dry-run]" \ + "--json[print dry-run result as JSON]" +} + +_openclaw_config_file() { + _arguments -C \ + +} + +_openclaw_config_schema() { + _arguments -C \ + +} + +_openclaw_config_validate() { + _arguments -C \ + "--json[Output validation result as JSON]" +} + +_openclaw_config() { + local -a commands + local -a options + + _arguments -C \ + "--section[Configuration sections for guided setup (repeatable). Use with no subcommand.]" \ + "1: :_values 'command' 'get[Get a config value by dot path]' 'set[Set config values by path (value mode, ref/provider builder mode, or batch JSON mode). +Examples: +openclaw config set gateway.port 19001 --strict-json +openclaw config set channels.discord.token --ref-provider default --ref-source env --ref-id DISCORD_BOT_TOKEN +openclaw config set secrets.providers.vault --provider-source file --provider-path /etc/openclaw/secrets.json --provider-mode json +openclaw config set --batch-file ./config-set.batch.json --dry-run]' 'patch[Patch config from a JSON5 object in one validated write. +Objects merge recursively, arrays/scalars replace, and null deletes a path. +Examples: +openclaw config patch --file ./openclaw.patch.json5 --dry-run +openclaw config patch --stdin]' 'unset[Remove a config value by dot path]' 'file[Print the active config file path]' 'schema[Print the JSON schema for openclaw.json]' 'validate[Validate the current config against the schema without starting the gateway]'" \ + "*::arg:->args" + + case $state in + (args) + case $line[1] in + (get) _openclaw_config_get ;; + (set) _openclaw_config_set ;; + (patch) _openclaw_config_patch ;; + (unset) _openclaw_config_unset ;; + (file) _openclaw_config_file ;; + (schema) _openclaw_config_schema ;; + (validate) _openclaw_config_validate ;; + esac + ;; + esac +} + +_openclaw_backup_create() { + _arguments -C \ + "--output[Archive path or destination directory]" \ + "--json[Output JSON]" \ + "--dry-run[Print the backup plan without writing the archive]" \ + "--verify[Verify the archive after writing it]" \ + "--only-config[Back up only the active JSON config file]" \ + "--no-include-workspace[Exclude workspace directories from the backup]" +} + +_openclaw_backup_verify() { + _arguments -C \ + "--json[Output JSON]" +} + +_openclaw_backup() { + local -a commands + local -a options + + _arguments -C \ + \ + "1: :_values 'command' 'create[Write a backup archive for config, credentials, sessions, and workspaces]' 'verify[Validate a backup archive and its embedded manifest]'" \ + "*::arg:->args" + + case $state in + (args) + case $line[1] in + (create) _openclaw_backup_create ;; + (verify) _openclaw_backup_verify ;; + esac + ;; + esac +} + +_openclaw_migrate_list() { + _arguments -C \ + "--json[Output JSON]" +} + +_openclaw_migrate_plan() { + _arguments -C \ + "--from[Source directory to migrate from]" \ + "--include-secrets[Import supported credentials and secrets]" \ + "--no-auth-credentials[Skip auth credential migration]" \ + "--overwrite[Overwrite conflicting target files after item-level backups]" \ + "--json[Output JSON]" \ + "--skill[Select one skill to migrate by name or item id; repeat for multiple skills]" \ + "--plugin[Select one Codex plugin to migrate by name or item id; repeat for multiple plugins]" \ + "--verify-plugin-apps[Codex only: verify source plugin app accessibility with app/list before planning native plugin activation]" +} + +_openclaw_migrate_apply() { + _arguments -C \ + "--from[Source directory to migrate from]" \ + "--include-secrets[Import supported credentials and secrets]" \ + "--no-auth-credentials[Skip auth credential migration]" \ + "--overwrite[Overwrite conflicting target files after item-level backups]" \ + "--json[Output JSON]" \ + "--skill[Select one skill to migrate by name or item id; repeat for multiple skills]" \ + "--plugin[Select one Codex plugin to migrate by name or item id; repeat for multiple plugins]" \ + "--verify-plugin-apps[Codex only: verify source plugin app accessibility with app/list before planning native plugin activation]" \ + "--yes[Apply without prompting]" \ + "--backup-output[Pre-migration backup archive path or directory]" \ + "--no-backup[Skip the pre-migration OpenClaw backup]" \ + "--force[Allow dangerous options such as --no-backup]" +} + +_openclaw_migrate() { + local -a commands + local -a options + + _arguments -C \ + "--from[Source directory to migrate from]" \ + "--include-secrets[Import supported credentials and secrets]" \ + "--no-auth-credentials[Skip auth credential migration]" \ + "--overwrite[Overwrite conflicting target files after item-level backups]" \ + "--dry-run[Preview only; do not apply changes]" \ + "--yes[Apply without prompting after preview]" \ + "--skill[Select one skill to migrate by name or item id; repeat for multiple skills]" \ + "--plugin[Select one Codex plugin to migrate by name or item id; repeat for multiple plugins]" \ + "--backup-output[Pre-migration backup archive path or directory]" \ + "--no-backup[Skip the pre-migration OpenClaw backup]" \ + "--force[Allow dangerous options such as --no-backup]" \ + "--json[Output JSON]" \ + "--verify-plugin-apps[Codex only: verify source plugin app accessibility with app/list before planning native plugin activation]" \ + "1: :_values 'command' 'list[List migration providers]' 'plan[Preview a migration without changing OpenClaw state]' 'apply[Apply a migration after a verified backup]'" \ + "*::arg:->args" + + case $state in + (args) + case $line[1] in + (list) _openclaw_migrate_list ;; + (plan) _openclaw_migrate_plan ;; + (apply) _openclaw_migrate_apply ;; + esac + ;; + esac +} + +_openclaw_doctor() { + _arguments -C \ + "--no-workspace-suggestions[Disable workspace memory system suggestions]" \ + "--yes[Accept defaults without prompting]" \ + "--repair[Apply recommended repairs without prompting]" \ + "--fix[Apply recommended repairs (alias for --repair)]" \ + "--force[Apply aggressive repairs (overwrites custom service config)]" \ + "--non-interactive[Run without prompts (safe migrations only)]" \ + "--generate-gateway-token[Generate and configure a gateway token]" \ + "--allow-exec[Allow doctor to execute exec SecretRefs while verifying configured secrets]" \ + "--deep[Scan system services for extra gateway installs]" \ + "--lint[Run read-only health checks and report findings]" \ + "--post-upgrade[Emit plugin-compat findings only (machine-readable with --json)]" \ + "--json[With --lint or --post-upgrade: emit machine-readable JSON output]" \ + "--severity-min[With --lint: drop findings below this severity (info|warning|error)]" \ + "--skip[With --lint: skip a specific check id (repeatable)]" \ + "--only[With --lint: run only the specified check id (repeatable)]" +} + +_openclaw_dashboard() { + _arguments -C \ + "--no-open[Print URL but do not launch a browser]" \ + "--yes[Start/install the gateway without prompting when needed]" +} + +_openclaw_reset() { + _arguments -C \ + "--scope[config|config+creds+sessions|full (default: interactive prompt)]" \ + "--yes[Skip confirmation prompts]" \ + "--non-interactive[Disable prompts (requires --scope + --yes)]" \ + "--dry-run[Print actions without removing files]" +} + +_openclaw_uninstall() { + _arguments -C \ + "--service[Remove the gateway service]" \ + "--state[Remove state + config]" \ + "--workspace[Remove workspace dirs]" \ + "--app[Remove the macOS app]" \ + "--all[Remove service + state + workspace + app]" \ + "--yes[Skip confirmation prompts]" \ + "--non-interactive[Disable prompts (requires --yes)]" \ + "--dry-run[Print actions without removing files]" +} + +_openclaw_message_send() { + _arguments -C \ + "(--message -m)"{--message,-m}"[Message body (required unless --media is set)]" \ + "(--target -t)"{--target,-t}"[Recipient/channel: E.164 for WhatsApp/Signal, Telegram chat id/@username, Discord/Slack/Mattermost , or iMessage handle/chat_id]" \ + "--media[Attach media (image/audio/video/document). Accepts local paths or URLs.]" \ + "--presentation[Shared presentation payload as JSON (text, context, dividers, buttons, selects)]" \ + "--delivery[Shared delivery preferences as JSON]" \ + "--pin[Request that the delivered message be pinned when supported]" \ + "--reply-to[Reply-to message id]" \ + "--thread-id[Thread id (Telegram forum thread)]" \ + "--gif-playback[Treat video media as GIF playback (WhatsApp only).]" \ + "--force-document[Send media as document to avoid channel compression (Telegram, WhatsApp). Applies to images, GIFs, and videos.]" \ + "--silent[Send message silently without notification (Telegram + Discord)]" \ + "--channel[Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|feishu|nostr|msteams|mattermost|nextcloud-talk|matrix|raft|line|zalo|clickclack|zalouser|sms|synology-chat|tlon|qa-channel|qqbot|twitch]" \ + "--account[Channel account id (accountId)]" \ + "--json[Output result as JSON]" \ + "--dry-run[Print payload and skip sending]" \ + "--verbose[Verbose logging]" +} + +_openclaw_message_broadcast() { + _arguments -C \ + "--channel[Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|feishu|nostr|msteams|mattermost|nextcloud-talk|matrix|raft|line|zalo|clickclack|zalouser|sms|synology-chat|tlon|qa-channel|qqbot|twitch]" \ + "--account[Channel account id (accountId)]" \ + "--json[Output result as JSON]" \ + "--dry-run[Print payload and skip sending]" \ + "--verbose[Verbose logging]" \ + "--targets[Recipient/channel targets (same format as --target); accepts ids or names when the directory is available.]" \ + "--message[Message to send]" \ + "--media[Media URL]" +} + +_openclaw_message_poll() { + _arguments -C \ + "(--target -t)"{--target,-t}"[Recipient/channel: E.164 for WhatsApp/Signal, Telegram chat id/@username, Discord/Slack/Mattermost , or iMessage handle/chat_id]" \ + "--channel[Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|feishu|nostr|msteams|mattermost|nextcloud-talk|matrix|raft|line|zalo|clickclack|zalouser|sms|synology-chat|tlon|qa-channel|qqbot|twitch]" \ + "--account[Channel account id (accountId)]" \ + "--json[Output result as JSON]" \ + "--dry-run[Print payload and skip sending]" \ + "--verbose[Verbose logging]" \ + "--poll-question[Poll question]" \ + "--poll-option[Poll option (repeat 2-12 times)]" \ + "--poll-multi[Allow multiple selections]" \ + "--poll-duration-hours[Poll duration in hours (Discord)]" \ + "--poll-duration-seconds[Poll duration in seconds (Telegram; 5-600)]" \ + "--poll-anonymous[Send an anonymous poll (Telegram)]" \ + "--poll-public[Send a non-anonymous poll (Telegram)]" \ + "(--message -m)"{--message,-m}"[Optional message body]" \ + "--silent[Send poll silently without notification (Telegram + Discord where supported)]" \ + "--thread-id[Thread id (Telegram forum topic / Slack thread ts)]" +} + +_openclaw_message_react() { + _arguments -C \ + "(--target -t)"{--target,-t}"[Recipient/channel: E.164 for WhatsApp/Signal, Telegram chat id/@username, Discord/Slack/Mattermost , or iMessage handle/chat_id]" \ + "--channel[Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|feishu|nostr|msteams|mattermost|nextcloud-talk|matrix|raft|line|zalo|clickclack|zalouser|sms|synology-chat|tlon|qa-channel|qqbot|twitch]" \ + "--account[Channel account id (accountId)]" \ + "--json[Output result as JSON]" \ + "--dry-run[Print payload and skip sending]" \ + "--verbose[Verbose logging]" \ + "--message-id[Message id]" \ + "--emoji[Emoji for reactions]" \ + "--remove[Remove reaction]" \ + "--participant[WhatsApp reaction participant]" \ + "--from-me[WhatsApp reaction fromMe]" \ + "--target-author[Signal reaction target author (uuid or phone)]" \ + "--target-author-uuid[Signal reaction target author uuid]" +} + +_openclaw_message_reactions() { + _arguments -C \ + "(--target -t)"{--target,-t}"[Recipient/channel: E.164 for WhatsApp/Signal, Telegram chat id/@username, Discord/Slack/Mattermost , or iMessage handle/chat_id]" \ + "--channel[Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|feishu|nostr|msteams|mattermost|nextcloud-talk|matrix|raft|line|zalo|clickclack|zalouser|sms|synology-chat|tlon|qa-channel|qqbot|twitch]" \ + "--account[Channel account id (accountId)]" \ + "--json[Output result as JSON]" \ + "--dry-run[Print payload and skip sending]" \ + "--verbose[Verbose logging]" \ + "--message-id[Message id]" \ + "--limit[Result limit]" +} + +_openclaw_message_read() { + _arguments -C \ + "(--target -t)"{--target,-t}"[Recipient/channel: E.164 for WhatsApp/Signal, Telegram chat id/@username, Discord/Slack/Mattermost , or iMessage handle/chat_id]" \ + "--channel[Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|feishu|nostr|msteams|mattermost|nextcloud-talk|matrix|raft|line|zalo|clickclack|zalouser|sms|synology-chat|tlon|qa-channel|qqbot|twitch]" \ + "--account[Channel account id (accountId)]" \ + "--json[Output result as JSON]" \ + "--dry-run[Print payload and skip sending]" \ + "--verbose[Verbose logging]" \ + "--limit[Result limit]" \ + "--message-id[Read a specific message id]" \ + "--before[Read/search before id]" \ + "--after[Read/search after id]" \ + "--around[Read around id]" \ + "--thread-id[Thread id (Slack thread timestamp)]" \ + "--include-thread[Include thread replies (Discord)]" +} + +_openclaw_message_edit() { + _arguments -C \ + "--message-id[Message id]" \ + "(--message -m)"{--message,-m}"[Message body]" \ + "(--target -t)"{--target,-t}"[Recipient/channel: E.164 for WhatsApp/Signal, Telegram chat id/@username, Discord/Slack/Mattermost , or iMessage handle/chat_id]" \ + "--channel[Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|feishu|nostr|msteams|mattermost|nextcloud-talk|matrix|raft|line|zalo|clickclack|zalouser|sms|synology-chat|tlon|qa-channel|qqbot|twitch]" \ + "--account[Channel account id (accountId)]" \ + "--json[Output result as JSON]" \ + "--dry-run[Print payload and skip sending]" \ + "--verbose[Verbose logging]" \ + "--thread-id[Thread id (Telegram forum thread)]" +} + +_openclaw_message_delete() { + _arguments -C \ + "--message-id[Message id]" \ + "(--target -t)"{--target,-t}"[Recipient/channel: E.164 for WhatsApp/Signal, Telegram chat id/@username, Discord/Slack/Mattermost , or iMessage handle/chat_id]" \ + "--channel[Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|feishu|nostr|msteams|mattermost|nextcloud-talk|matrix|raft|line|zalo|clickclack|zalouser|sms|synology-chat|tlon|qa-channel|qqbot|twitch]" \ + "--account[Channel account id (accountId)]" \ + "--json[Output result as JSON]" \ + "--dry-run[Print payload and skip sending]" \ + "--verbose[Verbose logging]" +} + +_openclaw_message_pin() { + _arguments -C \ + "(--target -t)"{--target,-t}"[Recipient/channel: E.164 for WhatsApp/Signal, Telegram chat id/@username, Discord/Slack/Mattermost , or iMessage handle/chat_id]" \ + "--channel[Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|feishu|nostr|msteams|mattermost|nextcloud-talk|matrix|raft|line|zalo|clickclack|zalouser|sms|synology-chat|tlon|qa-channel|qqbot|twitch]" \ + "--account[Channel account id (accountId)]" \ + "--json[Output result as JSON]" \ + "--dry-run[Print payload and skip sending]" \ + "--verbose[Verbose logging]" \ + "--message-id[Message id]" +} + +_openclaw_message_unpin() { + _arguments -C \ + "(--target -t)"{--target,-t}"[Recipient/channel: E.164 for WhatsApp/Signal, Telegram chat id/@username, Discord/Slack/Mattermost , or iMessage handle/chat_id]" \ + "--channel[Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|feishu|nostr|msteams|mattermost|nextcloud-talk|matrix|raft|line|zalo|clickclack|zalouser|sms|synology-chat|tlon|qa-channel|qqbot|twitch]" \ + "--account[Channel account id (accountId)]" \ + "--json[Output result as JSON]" \ + "--dry-run[Print payload and skip sending]" \ + "--verbose[Verbose logging]" \ + "--message-id[Message id (or pinned message resource id for MSTeams)]" \ + "--pinned-message-id[Pinned message resource id (MSTeams: from pin or list-pins, not the chat message id)]" +} + +_openclaw_message_pins() { + _arguments -C \ + "(--target -t)"{--target,-t}"[Recipient/channel: E.164 for WhatsApp/Signal, Telegram chat id/@username, Discord/Slack/Mattermost , or iMessage handle/chat_id]" \ + "--channel[Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|feishu|nostr|msteams|mattermost|nextcloud-talk|matrix|raft|line|zalo|clickclack|zalouser|sms|synology-chat|tlon|qa-channel|qqbot|twitch]" \ + "--account[Channel account id (accountId)]" \ + "--json[Output result as JSON]" \ + "--dry-run[Print payload and skip sending]" \ + "--verbose[Verbose logging]" \ + "--limit[Result limit]" +} + +_openclaw_message_permissions() { + _arguments -C \ + "(--target -t)"{--target,-t}"[Recipient/channel: E.164 for WhatsApp/Signal, Telegram chat id/@username, Discord/Slack/Mattermost , or iMessage handle/chat_id]" \ + "--channel[Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|feishu|nostr|msteams|mattermost|nextcloud-talk|matrix|raft|line|zalo|clickclack|zalouser|sms|synology-chat|tlon|qa-channel|qqbot|twitch]" \ + "--account[Channel account id (accountId)]" \ + "--json[Output result as JSON]" \ + "--dry-run[Print payload and skip sending]" \ + "--verbose[Verbose logging]" +} + +_openclaw_message_search() { + _arguments -C \ + "--channel[Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|feishu|nostr|msteams|mattermost|nextcloud-talk|matrix|raft|line|zalo|clickclack|zalouser|sms|synology-chat|tlon|qa-channel|qqbot|twitch]" \ + "--account[Channel account id (accountId)]" \ + "--json[Output result as JSON]" \ + "--dry-run[Print payload and skip sending]" \ + "--verbose[Verbose logging]" \ + "--guild-id[Guild id]" \ + "--query[Search query]" \ + "--channel-id[Channel id]" \ + "--channel-ids[Channel id (repeat)]" \ + "--author-id[Author id]" \ + "--author-ids[Author id (repeat)]" \ + "--limit[Result limit]" +} + +_openclaw_message_thread_create() { + _arguments -C \ + "--thread-name[Thread name]" \ + "(--target -t)"{--target,-t}"[Recipient/channel: E.164 for WhatsApp/Signal, Telegram chat id/@username, Discord/Slack/Mattermost , or iMessage handle/chat_id]" \ + "--channel[Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|feishu|nostr|msteams|mattermost|nextcloud-talk|matrix|raft|line|zalo|clickclack|zalouser|sms|synology-chat|tlon|qa-channel|qqbot|twitch]" \ + "--account[Channel account id (accountId)]" \ + "--json[Output result as JSON]" \ + "--dry-run[Print payload and skip sending]" \ + "--verbose[Verbose logging]" \ + "--message-id[Message id (optional)]" \ + "(--message -m)"{--message,-m}"[Initial thread message text]" \ + "--auto-archive-min[Thread auto-archive minutes]" +} + +_openclaw_message_thread_list() { + _arguments -C \ + "--guild-id[Guild id]" \ + "--channel[Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|feishu|nostr|msteams|mattermost|nextcloud-talk|matrix|raft|line|zalo|clickclack|zalouser|sms|synology-chat|tlon|qa-channel|qqbot|twitch]" \ + "--account[Channel account id (accountId)]" \ + "--json[Output result as JSON]" \ + "--dry-run[Print payload and skip sending]" \ + "--verbose[Verbose logging]" \ + "--channel-id[Channel id]" \ + "--include-archived[Include archived threads]" \ + "--before[Read/search before id]" \ + "--limit[Result limit]" +} + +_openclaw_message_thread_reply() { + _arguments -C \ + "(--message -m)"{--message,-m}"[Message body]" \ + "(--target -t)"{--target,-t}"[Recipient/channel: E.164 for WhatsApp/Signal, Telegram chat id/@username, Discord/Slack/Mattermost , or iMessage handle/chat_id]" \ + "--channel[Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|feishu|nostr|msteams|mattermost|nextcloud-talk|matrix|raft|line|zalo|clickclack|zalouser|sms|synology-chat|tlon|qa-channel|qqbot|twitch]" \ + "--account[Channel account id (accountId)]" \ + "--json[Output result as JSON]" \ + "--dry-run[Print payload and skip sending]" \ + "--verbose[Verbose logging]" \ + "--media[Attach media (image/audio/video/document). Accepts local paths or URLs.]" \ + "--reply-to[Reply-to message id]" +} + +_openclaw_message_thread() { + local -a commands + local -a options + + _arguments -C \ + \ + "1: :_values 'command' 'create[Create a thread]' 'list[List threads]' 'reply[Reply in a thread]'" \ + "*::arg:->args" + + case $state in + (args) + case $line[1] in + (create) _openclaw_message_thread_create ;; + (list) _openclaw_message_thread_list ;; + (reply) _openclaw_message_thread_reply ;; + esac + ;; + esac +} + +_openclaw_message_emoji_list() { + _arguments -C \ + "--channel[Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|feishu|nostr|msteams|mattermost|nextcloud-talk|matrix|raft|line|zalo|clickclack|zalouser|sms|synology-chat|tlon|qa-channel|qqbot|twitch]" \ + "--account[Channel account id (accountId)]" \ + "--json[Output result as JSON]" \ + "--dry-run[Print payload and skip sending]" \ + "--verbose[Verbose logging]" \ + "--guild-id[Guild id (Discord)]" +} + +_openclaw_message_emoji_upload() { + _arguments -C \ + "--guild-id[Guild id]" \ + "--channel[Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|feishu|nostr|msteams|mattermost|nextcloud-talk|matrix|raft|line|zalo|clickclack|zalouser|sms|synology-chat|tlon|qa-channel|qqbot|twitch]" \ + "--account[Channel account id (accountId)]" \ + "--json[Output result as JSON]" \ + "--dry-run[Print payload and skip sending]" \ + "--verbose[Verbose logging]" \ + "--emoji-name[Emoji name]" \ + "--media[Emoji media (path or URL)]" \ + "--role-ids[Role id (repeat)]" +} + +_openclaw_message_emoji() { + local -a commands + local -a options + + _arguments -C \ + \ + "1: :_values 'command' 'list[List emojis]' 'upload[Upload an emoji]'" \ + "*::arg:->args" + + case $state in + (args) + case $line[1] in + (list) _openclaw_message_emoji_list ;; + (upload) _openclaw_message_emoji_upload ;; + esac + ;; + esac +} + +_openclaw_message_sticker_send() { + _arguments -C \ + "(--target -t)"{--target,-t}"[Recipient/channel: E.164 for WhatsApp/Signal, Telegram chat id/@username, Discord/Slack/Mattermost , or iMessage handle/chat_id]" \ + "--channel[Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|feishu|nostr|msteams|mattermost|nextcloud-talk|matrix|raft|line|zalo|clickclack|zalouser|sms|synology-chat|tlon|qa-channel|qqbot|twitch]" \ + "--account[Channel account id (accountId)]" \ + "--json[Output result as JSON]" \ + "--dry-run[Print payload and skip sending]" \ + "--verbose[Verbose logging]" \ + "--sticker-id[Sticker id (repeat)]" \ + "(--message -m)"{--message,-m}"[Optional message body]" +} + +_openclaw_message_sticker_upload() { + _arguments -C \ + "--guild-id[Guild id]" \ + "--channel[Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|feishu|nostr|msteams|mattermost|nextcloud-talk|matrix|raft|line|zalo|clickclack|zalouser|sms|synology-chat|tlon|qa-channel|qqbot|twitch]" \ + "--account[Channel account id (accountId)]" \ + "--json[Output result as JSON]" \ + "--dry-run[Print payload and skip sending]" \ + "--verbose[Verbose logging]" \ + "--sticker-name[Sticker name]" \ + "--sticker-desc[Sticker description]" \ + "--sticker-tags[Sticker tags]" \ + "--media[Sticker media (path or URL)]" +} + +_openclaw_message_sticker() { + local -a commands + local -a options + + _arguments -C \ + \ + "1: :_values 'command' 'send[Send stickers]' 'upload[Upload a sticker]'" \ + "*::arg:->args" + + case $state in + (args) + case $line[1] in + (send) _openclaw_message_sticker_send ;; + (upload) _openclaw_message_sticker_upload ;; + esac + ;; + esac +} + +_openclaw_message_role_info() { + _arguments -C \ + "--guild-id[Guild id]" \ + "--channel[Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|feishu|nostr|msteams|mattermost|nextcloud-talk|matrix|raft|line|zalo|clickclack|zalouser|sms|synology-chat|tlon|qa-channel|qqbot|twitch]" \ + "--account[Channel account id (accountId)]" \ + "--json[Output result as JSON]" \ + "--dry-run[Print payload and skip sending]" \ + "--verbose[Verbose logging]" +} + +_openclaw_message_role_add() { + _arguments -C \ + "--guild-id[Guild id]" \ + "--user-id[User id]" \ + "--role-id[Role id]" \ + "--channel[Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|feishu|nostr|msteams|mattermost|nextcloud-talk|matrix|raft|line|zalo|clickclack|zalouser|sms|synology-chat|tlon|qa-channel|qqbot|twitch]" \ + "--account[Channel account id (accountId)]" \ + "--json[Output result as JSON]" \ + "--dry-run[Print payload and skip sending]" \ + "--verbose[Verbose logging]" +} + +_openclaw_message_role_remove() { + _arguments -C \ + "--guild-id[Guild id]" \ + "--user-id[User id]" \ + "--role-id[Role id]" \ + "--channel[Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|feishu|nostr|msteams|mattermost|nextcloud-talk|matrix|raft|line|zalo|clickclack|zalouser|sms|synology-chat|tlon|qa-channel|qqbot|twitch]" \ + "--account[Channel account id (accountId)]" \ + "--json[Output result as JSON]" \ + "--dry-run[Print payload and skip sending]" \ + "--verbose[Verbose logging]" +} + +_openclaw_message_role() { + local -a commands + local -a options + + _arguments -C \ + \ + "1: :_values 'command' 'info[List roles]' 'add[Add role to a member]' 'remove[Remove role from a member]'" \ + "*::arg:->args" + + case $state in + (args) + case $line[1] in + (info) _openclaw_message_role_info ;; + (add) _openclaw_message_role_add ;; + (remove) _openclaw_message_role_remove ;; + esac + ;; + esac +} + +_openclaw_message_channel_info() { + _arguments -C \ + "(--target -t)"{--target,-t}"[Recipient/channel: E.164 for WhatsApp/Signal, Telegram chat id/@username, Discord/Slack/Mattermost , or iMessage handle/chat_id]" \ + "--channel[Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|feishu|nostr|msteams|mattermost|nextcloud-talk|matrix|raft|line|zalo|clickclack|zalouser|sms|synology-chat|tlon|qa-channel|qqbot|twitch]" \ + "--account[Channel account id (accountId)]" \ + "--json[Output result as JSON]" \ + "--dry-run[Print payload and skip sending]" \ + "--verbose[Verbose logging]" +} + +_openclaw_message_channel_list() { + _arguments -C \ + "--guild-id[Guild id]" \ + "--channel[Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|feishu|nostr|msteams|mattermost|nextcloud-talk|matrix|raft|line|zalo|clickclack|zalouser|sms|synology-chat|tlon|qa-channel|qqbot|twitch]" \ + "--account[Channel account id (accountId)]" \ + "--json[Output result as JSON]" \ + "--dry-run[Print payload and skip sending]" \ + "--verbose[Verbose logging]" +} + +_openclaw_message_channel() { + local -a commands + local -a options + + _arguments -C \ + \ + "1: :_values 'command' 'info[Fetch channel info]' 'list[List channels]'" \ + "*::arg:->args" + + case $state in + (args) + case $line[1] in + (info) _openclaw_message_channel_info ;; + (list) _openclaw_message_channel_list ;; + esac + ;; + esac +} + +_openclaw_message_member_info() { + _arguments -C \ + "--user-id[User id]" \ + "--channel[Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|feishu|nostr|msteams|mattermost|nextcloud-talk|matrix|raft|line|zalo|clickclack|zalouser|sms|synology-chat|tlon|qa-channel|qqbot|twitch]" \ + "--account[Channel account id (accountId)]" \ + "--json[Output result as JSON]" \ + "--dry-run[Print payload and skip sending]" \ + "--verbose[Verbose logging]" \ + "--guild-id[Guild id (Discord)]" +} + +_openclaw_message_member() { + local -a commands + local -a options + + _arguments -C \ + \ + "1: :_values 'command' 'info[Fetch member info]'" \ + "*::arg:->args" + + case $state in + (args) + case $line[1] in + (info) _openclaw_message_member_info ;; + esac + ;; + esac +} + +_openclaw_message_voice_status() { + _arguments -C \ + "--guild-id[Guild id]" \ + "--user-id[User id]" \ + "--channel[Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|feishu|nostr|msteams|mattermost|nextcloud-talk|matrix|raft|line|zalo|clickclack|zalouser|sms|synology-chat|tlon|qa-channel|qqbot|twitch]" \ + "--account[Channel account id (accountId)]" \ + "--json[Output result as JSON]" \ + "--dry-run[Print payload and skip sending]" \ + "--verbose[Verbose logging]" +} + +_openclaw_message_voice() { + local -a commands + local -a options + + _arguments -C \ + \ + "1: :_values 'command' 'status[Fetch voice status]'" \ + "*::arg:->args" + + case $state in + (args) + case $line[1] in + (status) _openclaw_message_voice_status ;; + esac + ;; + esac +} + +_openclaw_message_event_list() { + _arguments -C \ + "--guild-id[Guild id]" \ + "--channel[Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|feishu|nostr|msteams|mattermost|nextcloud-talk|matrix|raft|line|zalo|clickclack|zalouser|sms|synology-chat|tlon|qa-channel|qqbot|twitch]" \ + "--account[Channel account id (accountId)]" \ + "--json[Output result as JSON]" \ + "--dry-run[Print payload and skip sending]" \ + "--verbose[Verbose logging]" +} + +_openclaw_message_event_create() { + _arguments -C \ + "--guild-id[Guild id]" \ + "--event-name[Event name]" \ + "--start-time[Event start time]" \ + "--channel[Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|feishu|nostr|msteams|mattermost|nextcloud-talk|matrix|raft|line|zalo|clickclack|zalouser|sms|synology-chat|tlon|qa-channel|qqbot|twitch]" \ + "--account[Channel account id (accountId)]" \ + "--json[Output result as JSON]" \ + "--dry-run[Print payload and skip sending]" \ + "--verbose[Verbose logging]" \ + "--end-time[Event end time]" \ + "--desc[Event description]" \ + "--channel-id[Channel id]" \ + "--location[Event location]" \ + "--event-type[Event type]" \ + "--image[Cover image URL or local file path]" +} + +_openclaw_message_event() { + local -a commands + local -a options + + _arguments -C \ + \ + "1: :_values 'command' 'list[List scheduled events]' 'create[Create a scheduled event]'" \ + "*::arg:->args" + + case $state in + (args) + case $line[1] in + (list) _openclaw_message_event_list ;; + (create) _openclaw_message_event_create ;; + esac + ;; + esac +} + +_openclaw_message_timeout() { + _arguments -C \ + "--guild-id[Guild id]" \ + "--user-id[User id]" \ + "--channel[Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|feishu|nostr|msteams|mattermost|nextcloud-talk|matrix|raft|line|zalo|clickclack|zalouser|sms|synology-chat|tlon|qa-channel|qqbot|twitch]" \ + "--account[Channel account id (accountId)]" \ + "--json[Output result as JSON]" \ + "--dry-run[Print payload and skip sending]" \ + "--verbose[Verbose logging]" \ + "--duration-min[Timeout duration minutes]" \ + "--until[Timeout until]" \ + "--reason[Moderation reason]" +} + +_openclaw_message_kick() { + _arguments -C \ + "--guild-id[Guild id]" \ + "--user-id[User id]" \ + "--channel[Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|feishu|nostr|msteams|mattermost|nextcloud-talk|matrix|raft|line|zalo|clickclack|zalouser|sms|synology-chat|tlon|qa-channel|qqbot|twitch]" \ + "--account[Channel account id (accountId)]" \ + "--json[Output result as JSON]" \ + "--dry-run[Print payload and skip sending]" \ + "--verbose[Verbose logging]" \ + "--reason[Moderation reason]" +} + +_openclaw_message_ban() { + _arguments -C \ + "--guild-id[Guild id]" \ + "--user-id[User id]" \ + "--channel[Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|feishu|nostr|msteams|mattermost|nextcloud-talk|matrix|raft|line|zalo|clickclack|zalouser|sms|synology-chat|tlon|qa-channel|qqbot|twitch]" \ + "--account[Channel account id (accountId)]" \ + "--json[Output result as JSON]" \ + "--dry-run[Print payload and skip sending]" \ + "--verbose[Verbose logging]" \ + "--reason[Moderation reason]" \ + "--delete-days[Ban delete message days]" +} + +_openclaw_message() { + local -a commands + local -a options + + _arguments -C \ + \ + "1: :_values 'command' 'send[Send a message]' 'broadcast[Broadcast a message to multiple targets]' 'poll[Send a poll]' 'react[Add or remove a reaction]' 'reactions[List reactions on a message]' 'read[Read recent messages]' 'edit[Edit a message]' 'delete[Delete a message]' 'pin[Pin a message]' 'unpin[Unpin a message]' 'pins[List pinned messages]' 'permissions[Fetch channel permissions]' 'search[Search Discord messages]' 'thread[Thread actions]' 'emoji[Emoji actions]' 'sticker[Sticker actions]' 'role[Role actions]' 'channel[Channel actions]' 'member[Member actions]' 'voice[Voice actions]' 'event[Event actions]' 'timeout[Timeout a member]' 'kick[Kick a member]' 'ban[Ban a member]'" \ + "*::arg:->args" + + case $state in + (args) + case $line[1] in + (send) _openclaw_message_send ;; + (broadcast) _openclaw_message_broadcast ;; + (poll) _openclaw_message_poll ;; + (react) _openclaw_message_react ;; + (reactions) _openclaw_message_reactions ;; + (read) _openclaw_message_read ;; + (edit) _openclaw_message_edit ;; + (delete) _openclaw_message_delete ;; + (pin) _openclaw_message_pin ;; + (unpin) _openclaw_message_unpin ;; + (pins) _openclaw_message_pins ;; + (permissions) _openclaw_message_permissions ;; + (search) _openclaw_message_search ;; + (thread) _openclaw_message_thread ;; + (emoji) _openclaw_message_emoji ;; + (sticker) _openclaw_message_sticker ;; + (role) _openclaw_message_role ;; + (channel) _openclaw_message_channel ;; + (member) _openclaw_message_member ;; + (voice) _openclaw_message_voice ;; + (event) _openclaw_message_event ;; + (timeout) _openclaw_message_timeout ;; + (kick) _openclaw_message_kick ;; + (ban) _openclaw_message_ban ;; + esac + ;; + esac +} + +_openclaw_mcp_serve() { + _arguments -C \ + "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \ + "--token[Gateway token (if required)]" \ + "--token-file[Read gateway token from file]" \ + "--password[Gateway password (if required)]" \ + "--password-file[Read gateway password from file]" \ + "--claude-channel-mode[Claude channel notification mode: auto, on, or off]" \ + "(--verbose -v)"{--verbose,-v}"[Verbose logging to stderr]" +} + +_openclaw_mcp_list() { + _arguments -C \ + "--json[Print JSON]" +} + +_openclaw_mcp_show() { + _arguments -C \ + "--json[Print JSON]" +} + +_openclaw_mcp_status() { + _arguments -C \ + "(--verbose -v)"{--verbose,-v}"[Show transport, auth, timeout, and filter details]" \ + "--json[Print JSON]" +} + +_openclaw_mcp_probe() { + _arguments -C \ + "--json[Print JSON]" +} + +_openclaw_mcp_doctor() { + _arguments -C \ + "--probe[Also connect to each checked server]" \ + "--json[Print JSON]" +} + +_openclaw_mcp_add() { + _arguments -C \ + "--command[Stdio command to spawn]" \ + "--arg[Repeatable stdio argument]" \ + "--env[Repeatable stdio environment entry]" \ + "--cwd[Working directory for stdio server]" \ + "--url[HTTP MCP server URL]" \ + "--transport[HTTP transport: streamable-http or sse]" \ + "--header[Repeatable HTTP header]" \ + "--auth[HTTP auth mode: oauth]" \ + "--oauth-scope[OAuth scope]" \ + "--oauth-redirect-url[OAuth redirect URL]" \ + "--oauth-client-metadata-url[OAuth client metadata URL]" \ + "--include[Comma-separated MCP tool names or '*' globs to expose]" \ + "--exclude[Comma-separated MCP tool names or '*' globs to hide]" \ + "--timeout[Per-request timeout in seconds]" \ + "--connect-timeout[Connection timeout in seconds]" \ + "--parallel[Mark this server safe for concurrent tool calls]" \ + "--disabled[Save the server disabled]" \ + "--ssl-verify[Verify HTTPS certificates: true or false]" \ + "--client-cert[HTTP mutual TLS client certificate path]" \ + "--client-key[HTTP mutual TLS client key path]" \ + "--no-probe[Save without connecting first]" +} + +_openclaw_mcp_set() { + _arguments -C \ + +} + +_openclaw_mcp_tools() { + _arguments -C \ + "--include[Comma-separated MCP tool names or '*' globs to expose]" \ + "--exclude[Comma-separated MCP tool names or '*' globs to hide]" \ + "--clear[Clear this server's MCP tool filter]" +} + +_openclaw_mcp_configure() { + _arguments -C \ + "--enable[Enable this saved server]" \ + "--disable[Disable this saved server]" \ + "--include[Comma-separated MCP tool names or '*' globs to expose]" \ + "--exclude[Comma-separated MCP tool names or '*' globs to hide]" \ + "--clear-tools[Clear this server's MCP tool filter]" \ + "--timeout[Per-request timeout in seconds]" \ + "--connect-timeout[Connection timeout in seconds]" \ + "--clear-timeouts[Clear request and connection timeout overrides]" \ + "--parallel[Mark this server safe for concurrent tool calls]" \ + "--no-parallel[Clear the concurrent tool-call marker]" \ + "--auth[HTTP auth mode: oauth]" \ + "--clear-auth[Clear auth and OAuth metadata]" \ + "--oauth-scope[OAuth scope]" \ + "--oauth-redirect-url[OAuth redirect URL]" \ + "--oauth-client-metadata-url[OAuth client metadata URL]" \ + "--ssl-verify[Verify HTTPS certificates: true or false]" \ + "--client-cert[HTTP mutual TLS client certificate path]" \ + "--client-key[HTTP mutual TLS client key path]" \ + "--clear-tls[Clear TLS verification and mTLS overrides]" \ + "--probe[Probe the updated server before saving]" +} + +_openclaw_mcp_login() { + _arguments -C \ + "--code[Authorization code from the OAuth redirect]" +} + +_openclaw_mcp_logout() { + _arguments -C \ + +} + +_openclaw_mcp_reload() { + _arguments -C \ + +} + +_openclaw_mcp_unset() { + _arguments -C \ + +} + +_openclaw_mcp() { + local -a commands + local -a options + + _arguments -C \ + \ + "1: :_values 'command' 'serve[Expose OpenClaw channels over MCP stdio]' 'list[List OpenClaw-managed MCP servers from mcp.servers]' 'show[Show one OpenClaw-managed MCP server or the full mcp.servers config]' 'status[Show configured MCP server transport status without connecting]' 'probe[Connect to configured MCP servers and list available capabilities]' 'doctor[Check configured MCP servers for static setup problems]' 'add[Add one MCP server from flags and probe it before saving]' 'set[Set one OpenClaw-managed MCP server from a JSON object]' 'tools[Update per-server MCP tool include/exclude filters]' 'configure[Update MCP server operator controls without replacing the server]' 'login[Authorize an OAuth MCP server]' 'logout[Clear stored OAuth credentials for an MCP server]' 'reload[Dispose cached MCP runtimes so new config is used on the next turn]' 'unset[Remove one OpenClaw-managed MCP server]'" \ + "*::arg:->args" + + case $state in + (args) + case $line[1] in + (serve) _openclaw_mcp_serve ;; + (list) _openclaw_mcp_list ;; + (show) _openclaw_mcp_show ;; + (status) _openclaw_mcp_status ;; + (probe) _openclaw_mcp_probe ;; + (doctor) _openclaw_mcp_doctor ;; + (add) _openclaw_mcp_add ;; + (set) _openclaw_mcp_set ;; + (tools) _openclaw_mcp_tools ;; + (configure) _openclaw_mcp_configure ;; + (login) _openclaw_mcp_login ;; + (logout) _openclaw_mcp_logout ;; + (reload) _openclaw_mcp_reload ;; + (unset) _openclaw_mcp_unset ;; + esac + ;; + esac +} + +_openclaw_transcripts_list() { + _arguments -C \ + "--json[Print JSON]" +} + +_openclaw_transcripts_show() { + _arguments -C \ + "--json[Print JSON]" +} + +_openclaw_transcripts_path() { + _arguments -C \ + "--dir[Print the session directory]" \ + "--metadata[Print metadata.json]" \ + "--transcript[Print transcript.jsonl]" \ + "--json[Print JSON]" +} + +_openclaw_transcripts() { + local -a commands + local -a options + + _arguments -C \ + \ + "1: :_values 'command' 'list[List stored transcript sessions]' 'show[Print a transcript summary markdown file]' 'path[Print a stored transcripts artifact path]'" \ + "*::arg:->args" + + case $state in + (args) + case $line[1] in + (list) _openclaw_transcripts_list ;; + (show) _openclaw_transcripts_show ;; + (path) _openclaw_transcripts_path ;; + esac + ;; + esac +} + +_openclaw_agent() { + _arguments -C \ + "(--message -m)"{--message,-m}"[Message body for the agent]" \ + "--message-file[Read the agent message body from a UTF-8 file]" \ + "(--to -t)"{--to,-t}"[Recipient number in E.164 used to derive the session key]" \ + "--session-key[Explicit session key (agent::, or scoped to --agent)]" \ + "--session-id[Use an explicit session id]" \ + "--agent[Agent id (overrides routing bindings)]" \ + "--model[Model override for this run (provider/model or model id)]" \ + "--thinking[Thinking level: off | minimal | low | medium | high | xhigh | adaptive | max where supported]" \ + "--verbose[Persist agent verbose level for the session]" \ + "--channel[Delivery channel: last|telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|feishu|nostr|msteams|mattermost|nextcloud-talk|matrix|raft|line|zalo|clickclack|zalouser|sms|synology-chat|tlon|qa-channel|qqbot|twitch (omit to use the main session channel)]" \ + "--reply-to[Delivery target override (separate from session routing)]" \ + "--reply-channel[Delivery channel override (separate from routing)]" \ + "--reply-account[Delivery account id override]" \ + "--local[Run the embedded agent locally (requires model provider API keys in your shell)]" \ + "--deliver[Send the agent's reply back to the selected channel]" \ + "--json[Output result as JSON]" \ + "--timeout[Override agent command timeout (seconds, default 600 or config value)]" +} + +_openclaw_agents_list() { + _arguments -C \ + "--json[Output JSON instead of text]" \ + "--bindings[Include routing bindings]" +} + +_openclaw_agents_bindings() { + _arguments -C \ + "--agent[Filter by agent id]" \ + "--json[Output JSON instead of text]" +} + +_openclaw_agents_bind() { + _arguments -C \ + "--agent[Agent id (defaults to current default agent)]" \ + "--bind[Binding to add (repeatable). If omitted, accountId is resolved by channel defaults/hooks.]" \ + "--json[Output JSON summary]" +} + +_openclaw_agents_unbind() { + _arguments -C \ + "--agent[Agent id (defaults to current default agent)]" \ + "--bind[Binding to remove (repeatable)]" \ + "--all[Remove all bindings for this agent]" \ + "--json[Output JSON summary]" +} + +_openclaw_agents_add() { + _arguments -C \ + "--workspace[Workspace directory for the new agent]" \ + "--model[Model id for this agent]" \ + "--agent-dir[Agent state directory for this agent]" \ + "--bind[Route channel binding (repeatable)]" \ + "--non-interactive[Disable prompts; requires --workspace]" \ + "--json[Output JSON summary]" +} + +_openclaw_agents_set_identity() { + _arguments -C \ + "--agent[Agent id to update]" \ + "--workspace[Workspace directory used to locate the agent + IDENTITY.md]" \ + "--identity-file[Explicit IDENTITY.md path to read]" \ + "--from-identity[Read values from IDENTITY.md]" \ + "--name[Identity name]" \ + "--theme[Identity theme]" \ + "--emoji[Identity emoji]" \ + "--avatar[Identity avatar (workspace path, http(s) URL, or data URI)]" \ + "--json[Output JSON summary]" +} + +_openclaw_agents_delete() { + _arguments -C \ + "--force[Skip confirmation]" \ + "--json[Output JSON summary]" +} + +_openclaw_agents() { + local -a commands + local -a options + + _arguments -C \ + \ + "1: :_values 'command' 'list[List configured agents]' 'bindings[List routing bindings]' 'bind[Add routing bindings for an agent]' 'unbind[Remove routing bindings for an agent]' 'add[Add a new isolated agent]' 'set-identity[Update an agent identity (name/theme/emoji/avatar)]' 'delete[Delete an agent and prune workspace/state]'" \ + "*::arg:->args" + + case $state in + (args) + case $line[1] in + (list) _openclaw_agents_list ;; + (bindings) _openclaw_agents_bindings ;; + (bind) _openclaw_agents_bind ;; + (unbind) _openclaw_agents_unbind ;; + (add) _openclaw_agents_add ;; + (set-identity) _openclaw_agents_set_identity ;; + (delete) _openclaw_agents_delete ;; + esac + ;; + esac +} + +_openclaw_status() { + _arguments -C \ + "--json[Output JSON instead of text]" \ + "--all[Full diagnosis (read-only, pasteable)]" \ + "--usage[Show model provider usage/quota snapshots]" \ + "--deep[Probe channels (WhatsApp Web + Telegram + Discord + Slack + Signal)]" \ + "--timeout[Probe timeout in milliseconds]" \ + "--verbose[Verbose logging]" \ + "--debug[Alias for --verbose]" +} + +_openclaw_health() { + _arguments -C \ + "--json[Output JSON instead of text]" \ + "--timeout[Connection timeout in milliseconds]" \ + "--verbose[Verbose logging]" \ + "--debug[Alias for --verbose]" +} + +_openclaw_sessions_list() { + _arguments -C \ + "--json[Output as JSON]" \ + "--verbose[Verbose logging]" \ + "--store[Path to session store (default: resolved from config)]" \ + "--agent[Agent id to inspect (default: configured default agent)]" \ + "--all-agents[Aggregate sessions across all configured agents]" \ + "--active[Only show sessions updated within the past N minutes]" \ + "--limit[Max sessions to show (default: 100; use \"all\" for full output)]" +} + +_openclaw_sessions_cleanup() { + _arguments -C \ + "--store[Path to session store (default: resolved from config)]" \ + "--agent[Agent id to maintain (default: configured default agent)]" \ + "--all-agents[Run maintenance across all configured agents]" \ + "--dry-run[Preview maintenance actions without writing]" \ + "--enforce[Apply maintenance even when configured mode is warn]" \ + "--fix-missing[Remove store entries whose transcript files are missing (bypasses age/count retention)]" \ + "--fix-dm-scope[Retire stale direct-DM session rows that no longer match session.dmScope=main]" \ + "--active-key[Protect this session key from budget-eviction]" \ + "--json[Output JSON]" +} + +_openclaw_sessions_tail() { + _arguments -C \ + "--session-key[Session key to tail (default: active sessions or latest)]" \ + "--tail[Number of existing trajectory events to show]" \ + "--follow[Continue following for new trajectory events]" \ + "--store[Path to session store (default: resolved from config)]" \ + "--agent[Agent id to inspect (default: configured default agent)]" \ + "--all-agents[Aggregate sessions across all configured agents]" +} + +_openclaw_sessions_export_trajectory() { + _arguments -C \ + "--session-key[Session key to export]" \ + "--output[Output directory name inside .openclaw/trajectory-exports]" \ + "--workspace[Workspace root for the export (default: current directory)]" \ + "--store[Path to session store (default: resolved from config)]" \ + "--agent[Agent id for resolving the default session store]" \ + "--request-json-base64[Base64url-encoded export request]" \ + "--json[Output JSON]" +} + +_openclaw_sessions_compact() { + _arguments -C \ + "--agent[Agent id that owns the session (required for global keys)]" \ + "--max-lines[Truncate to the last N transcript lines instead of LLM summarization]" \ + "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \ + "--token[Gateway token (if required)]" \ + "--password[Gateway password (password auth)]" \ + "--timeout[RPC timeout in milliseconds (summarization can be slow)]" \ + "--json[Output JSON]" +} + +_openclaw_sessions() { + local -a commands + local -a options + + _arguments -C \ + "--json[Output as JSON]" \ + "--verbose[Verbose logging]" \ + "--store[Path to session store (default: resolved from config)]" \ + "--agent[Agent id to inspect (default: configured default agent)]" \ + "--all-agents[Aggregate sessions across all configured agents]" \ + "--active[Only show sessions updated within the past N minutes]" \ + "--limit[Max sessions to show (default: 100; use \"all\" for full output)]" \ + "1: :_values 'command' 'list[List stored conversation sessions]' 'cleanup[Run session-store maintenance now]' 'tail[Tail human-readable session trajectory progress]' 'export-trajectory[Export a redacted trajectory bundle for a stored session]' 'compact[Compact a stored session transcript via the running gateway]'" \ + "*::arg:->args" + + case $state in + (args) + case $line[1] in + (list) _openclaw_sessions_list ;; + (cleanup) _openclaw_sessions_cleanup ;; + (tail) _openclaw_sessions_tail ;; + (export-trajectory) _openclaw_sessions_export_trajectory ;; + (compact) _openclaw_sessions_compact ;; + esac + ;; + esac +} + +_openclaw_commitments_list() { + _arguments -C \ + "--json[Output JSON instead of text]" \ + "--agent[Agent id to inspect]" \ + "--status[Filter by status (pending, sent, dismissed, snoozed, expired)]" \ + "--all[Show all statuses]" +} + +_openclaw_commitments_dismiss() { + _arguments -C \ + "--json[Output JSON instead of text]" +} + +_openclaw_commitments() { + local -a commands + local -a options + + _arguments -C \ + "--json[Output JSON instead of text]" \ + "--agent[Agent id to inspect]" \ + "--status[Filter by status (pending, sent, dismissed, snoozed, expired)]" \ + "--all[Show all statuses]" \ + "1: :_values 'command' 'list[List inferred follow-up commitments]' 'dismiss[Dismiss inferred follow-up commitments]'" \ + "*::arg:->args" + + case $state in + (args) + case $line[1] in + (list) _openclaw_commitments_list ;; + (dismiss) _openclaw_commitments_dismiss ;; + esac + ;; + esac +} + +_openclaw_tasks_list() { + _arguments -C \ + "--json[Output as JSON]" \ + "--runtime[Filter by kind (subagent, acp, cron, cli)]" \ + "--status[Filter by status (queued, running, succeeded, failed, timed_out, cancelled, lost)]" +} + +_openclaw_tasks_audit() { + _arguments -C \ + "--json[Output as JSON]" \ + "--severity[Filter by severity (warn, error)]" \ + "--code[Filter by finding code (stale_queued, stale_running, lost, delivery_failed, missing_cleanup, inconsistent_timestamps, restore_failed, stale_waiting, stale_blocked, cancel_stuck, missing_linked_tasks, blocked_task_missing)]" \ + "--limit[Limit displayed findings]" +} + +_openclaw_tasks_maintenance() { + _arguments -C \ + "--json[Output as JSON]" \ + "--apply[Apply reconciliation, cleanup stamping, and pruning]" +} + +_openclaw_tasks_show() { + _arguments -C \ + "--json[Output as JSON]" +} + +_openclaw_tasks_notify() { + _arguments -C \ + +} + +_openclaw_tasks_cancel() { + _arguments -C \ + +} + +_openclaw_tasks_flow_list() { + _arguments -C \ + "--json[Output as JSON]" \ + "--status[Filter by status (queued, running, waiting, blocked, succeeded, failed, cancelled, lost)]" +} + +_openclaw_tasks_flow_show() { + _arguments -C \ + "--json[Output as JSON]" +} + +_openclaw_tasks_flow_cancel() { + _arguments -C \ + +} + +_openclaw_tasks_flow() { + local -a commands + local -a options + + _arguments -C \ + \ + "1: :_values 'command' 'list[List tracked TaskFlows]' 'show[Show one TaskFlow by flow id or owner key]' 'cancel[Cancel a running TaskFlow]'" \ + "*::arg:->args" + + case $state in + (args) + case $line[1] in + (list) _openclaw_tasks_flow_list ;; + (show) _openclaw_tasks_flow_show ;; + (cancel) _openclaw_tasks_flow_cancel ;; + esac + ;; + esac +} + +_openclaw_tasks() { + local -a commands + local -a options + + _arguments -C \ + "--json[Output as JSON]" \ + "--runtime[Filter by kind (subagent, acp, cron, cli)]" \ + "--status[Filter by status (queued, running, succeeded, failed, timed_out, cancelled, lost)]" \ + "1: :_values 'command' 'list[List tracked background tasks]' 'audit[Show stale or broken background tasks and TaskFlows]' 'maintenance[Preview or apply tasks and TaskFlow maintenance]' 'show[Show one background task by task id, run id, or session key]' 'notify[Set task notify policy]' 'cancel[Cancel a running background task]' 'flow[Inspect durable TaskFlow state under tasks]'" \ + "*::arg:->args" + + case $state in + (args) + case $line[1] in + (list) _openclaw_tasks_list ;; + (audit) _openclaw_tasks_audit ;; + (maintenance) _openclaw_tasks_maintenance ;; + (show) _openclaw_tasks_show ;; + (notify) _openclaw_tasks_notify ;; + (cancel) _openclaw_tasks_cancel ;; + (flow) _openclaw_tasks_flow ;; + esac + ;; + esac +} + +_openclaw_acp_client() { + _arguments -C \ + "--cwd[Working directory for the ACP session]" \ + "--server[ACP server command (default: openclaw)]" \ + "--server-args[Extra arguments for the ACP server]" \ + "--server-verbose[Enable verbose logging on the ACP server]" \ + "(--verbose -v)"{--verbose,-v}"[Verbose client logging]" +} + +_openclaw_acp() { + local -a commands + local -a options + + _arguments -C \ + "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \ + "--token[Gateway token (if required)]" \ + "--token-file[Read gateway token from file]" \ + "--password[Gateway password (if required)]" \ + "--password-file[Read gateway password from file]" \ + "--session[Default session key (e.g. agent:main:main)]" \ + "--session-label[Default session label to resolve]" \ + "--require-existing[Fail if the session key/label does not exist]" \ + "--reset-session[Reset the session key before first use]" \ + "--no-prefix-cwd[Do not prefix prompts with the working directory]" \ + "--provenance[ACP provenance mode: off, meta, or meta+receipt]" \ + "(--verbose -v)"{--verbose,-v}"[Verbose logging to stderr]" \ + "1: :_values 'command' 'client[Run an interactive ACP client against the local ACP bridge]'" \ + "*::arg:->args" + + case $state in + (args) + case $line[1] in + (client) _openclaw_acp_client ;; + esac + ;; + esac +} + +_openclaw_gateway_run() { + _arguments -C \ + "--port[Port for the gateway WebSocket]" \ + "--bind[Bind mode (\"loopback\"|\"lan\"|\"tailnet\"|\"auto\"|\"custom\"). Defaults to config gateway.bind (or loopback).]" \ + "--token[Shared token required in connect.params.auth.token (default: OPENCLAW_GATEWAY_TOKEN env if set)]" \ + "--auth[Gateway auth mode (\"none\"|\"token\"|\"password\"|\"trusted-proxy\")]" \ + "--password[Password for auth mode=password]" \ + "--password-file[Read gateway password from file]" \ + "--tailscale[Tailscale exposure mode (\"off\"|\"serve\"|\"funnel\")]" \ + "--tailscale-reset-on-exit[Reset Tailscale serve/funnel configuration on shutdown]" \ + "--allow-unconfigured[Allow gateway start without enforcing gateway.mode=local in config (does not repair config)]" \ + "--dev[Create a dev config + workspace if missing (no BOOTSTRAP.md)]" \ + "--reset[Reset dev config + credentials + sessions + workspace (requires --dev)]" \ + "--force[Kill any existing listener on the target port before starting]" \ + "--verbose[Verbose logging to stdout/stderr]" \ + "--cli-backend-logs[Only show CLI backend logs in the console (includes stdout/stderr)]" \ + "--claude-cli-logs[Deprecated alias for --cli-backend-logs]" \ + "--ws-log[WebSocket log style (\"auto\"|\"full\"|\"compact\")]" \ + "--compact[Alias for \"--ws-log compact\"]" \ + "--raw-stream[Log raw model stream events to jsonl]" \ + "--raw-stream-path[Raw stream jsonl path]" +} + +_openclaw_gateway_status() { + _arguments -C \ + "--url[Gateway WebSocket URL (defaults to config/remote/local)]" \ + "--token[Gateway token (if required)]" \ + "--password[Gateway password (password auth)]" \ + "--timeout[Timeout in ms]" \ + "--no-probe[Skip RPC probe]" \ + "--require-rpc[Exit non-zero when the RPC probe fails]" \ + "--deep[Scan system-level services]" \ + "--json[Output JSON]" +} + +_openclaw_gateway_install() { + _arguments -C \ + "--port[Gateway port]" \ + "--runtime[Daemon runtime (node|bun). Default: node]" \ + "--token[Gateway token (token auth)]" \ + "--wrapper[Executable wrapper for generated service ProgramArguments]" \ + "--force[Reinstall/overwrite if already installed]" \ + "--json[Output JSON]" +} + +_openclaw_gateway_uninstall() { + _arguments -C \ + "--json[Output JSON]" +} + +_openclaw_gateway_start() { + _arguments -C \ + "--json[Output JSON]" +} + +_openclaw_gateway_stop() { + _arguments -C \ + "--json[Output JSON]" \ + "--disable[Persistently suppress KeepAlive/RunAtLoad so the gateway does not respawn until next start (launchd only)]" +} + +_openclaw_gateway_restart() { + _arguments -C \ + "--force[Restart immediately without waiting for active gateway work]" \ + "--safe[Request an OpenClaw-aware restart after active work drains]" \ + "--skip-deferral[Bypass the safe-restart deferral gate; requires --safe]" \ + "--wait[Wait duration before forcing restart (ms, 10s, 5m; 0 waits indefinitely)]" \ + "--json[Output JSON]" +} + +_openclaw_gateway_call() { + _arguments -C \ + "--params[JSON object string for params]" \ + "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \ + "--token[Gateway token (if required)]" \ + "--password[Gateway password (password auth)]" \ + "--timeout[Timeout in ms]" \ + "--expect-final[Wait for final response (agent)]" \ + "--json[Output JSON]" +} + +_openclaw_gateway_usage_cost() { + _arguments -C \ + "--days[Number of days to include]" \ + "--agent[Scope the cost summary to a specific agent id]" \ + "--all-agents[Aggregate the cost summary across all agents]" \ + "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \ + "--token[Gateway token (if required)]" \ + "--password[Gateway password (password auth)]" \ + "--timeout[Timeout in ms]" \ + "--expect-final[Wait for final response (agent)]" \ + "--json[Output JSON]" +} + +_openclaw_gateway_health() { + _arguments -C \ + "--port[Local Gateway port]" \ + "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \ + "--token[Gateway token (if required)]" \ + "--password[Gateway password (password auth)]" \ + "--timeout[Timeout in ms]" \ + "--expect-final[Wait for final response (agent)]" \ + "--json[Output JSON]" +} + +_openclaw_gateway_stability() { + _arguments -C \ + "--limit[Maximum number of recent events]" \ + "--type[Filter by diagnostic event type]" \ + "--since-seq[Only include events after this sequence]" \ + "--bundle[Read a persisted stability bundle instead of calling Gateway; pass \"latest\" for newest]" \ + "--export[Write a shareable support diagnostics export]" \ + "--output[Diagnostics export output .zip path]" \ + "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \ + "--token[Gateway token (if required)]" \ + "--password[Gateway password (password auth)]" \ + "--timeout[Timeout in ms]" \ + "--expect-final[Wait for final response (agent)]" \ + "--json[Output JSON]" +} + +_openclaw_gateway_diagnostics_export() { + _arguments -C \ + "--output[Output .zip path]" \ + "--log-lines[Maximum sanitized log lines to include]" \ + "--log-bytes[Maximum log bytes to inspect]" \ + "--url[Gateway WebSocket URL for health snapshot]" \ + "--token[Gateway token for health snapshot]" \ + "--password[Gateway password for health snapshot]" \ + "--timeout[Status/health snapshot timeout in ms]" \ + "--no-stability-bundle[Skip persisted stability bundle lookup]" \ + "--json[Output JSON]" +} + +_openclaw_gateway_diagnostics() { + local -a commands + local -a options + + _arguments -C \ + \ + "1: :_values 'command' 'export[Write a shareable, payload-free diagnostics .zip]'" \ + "*::arg:->args" + + case $state in + (args) + case $line[1] in + (export) _openclaw_gateway_diagnostics_export ;; + esac + ;; + esac +} + +_openclaw_gateway_probe() { + _arguments -C \ + "--url[Explicit Gateway WebSocket URL (still probes localhost)]" \ + "--port[Local Gateway port]" \ + "--ssh[SSH target for remote gateway tunnel (user@host or user@host:port)]" \ + "--ssh-identity[SSH identity file path]" \ + "--ssh-auto[Try to derive an SSH target from Bonjour discovery]" \ + "--token[Gateway token (applies to all probes)]" \ + "--password[Gateway password (applies to all probes)]" \ + "--timeout[Overall probe budget in ms]" \ + "--json[Output JSON]" +} + +_openclaw_gateway_discover() { + _arguments -C \ + "--timeout[Per-command timeout in ms]" \ + "--json[Output JSON]" +} + +_openclaw_gateway() { + local -a commands + local -a options + + _arguments -C \ + "--port[Port for the gateway WebSocket]" \ + "--bind[Bind mode (\"loopback\"|\"lan\"|\"tailnet\"|\"auto\"|\"custom\"). Defaults to config gateway.bind (or loopback).]" \ + "--token[Shared token required in connect.params.auth.token (default: OPENCLAW_GATEWAY_TOKEN env if set)]" \ + "--auth[Gateway auth mode (\"none\"|\"token\"|\"password\"|\"trusted-proxy\")]" \ + "--password[Password for auth mode=password]" \ + "--password-file[Read gateway password from file]" \ + "--tailscale[Tailscale exposure mode (\"off\"|\"serve\"|\"funnel\")]" \ + "--tailscale-reset-on-exit[Reset Tailscale serve/funnel configuration on shutdown]" \ + "--allow-unconfigured[Allow gateway start without enforcing gateway.mode=local in config (does not repair config)]" \ + "--dev[Create a dev config + workspace if missing (no BOOTSTRAP.md)]" \ + "--reset[Reset dev config + credentials + sessions + workspace (requires --dev)]" \ + "--force[Kill any existing listener on the target port before starting]" \ + "--verbose[Verbose logging to stdout/stderr]" \ + "--cli-backend-logs[Only show CLI backend logs in the console (includes stdout/stderr)]" \ + "--claude-cli-logs[Deprecated alias for --cli-backend-logs]" \ + "--ws-log[WebSocket log style (\"auto\"|\"full\"|\"compact\")]" \ + "--compact[Alias for \"--ws-log compact\"]" \ + "--raw-stream[Log raw model stream events to jsonl]" \ + "--raw-stream-path[Raw stream jsonl path]" \ + "1: :_values 'command' 'run[Run the WebSocket Gateway (foreground)]' 'status[Show gateway service status + probe connectivity/capability]' 'install[Install the Gateway service (launchd/systemd/schtasks)]' 'uninstall[Uninstall the Gateway service (launchd/systemd/schtasks)]' 'start[Start the Gateway service (launchd/systemd/schtasks)]' 'stop[Stop the Gateway service (launchd/systemd/schtasks)]' 'restart[Restart the Gateway service (launchd/systemd/schtasks)]' 'call[Call a Gateway method]' 'usage-cost[Fetch usage cost summary from session logs]' 'health[Fetch Gateway health]' 'stability[Fetch payload-free Gateway stability diagnostics]' 'diagnostics[Export local support diagnostics]' 'probe[Show gateway reachability, auth capability, and read-probe summary (local + remote)]' 'discover[Discover gateways via Bonjour (local + wide-area if configured)]'" \ + "*::arg:->args" + + case $state in + (args) + case $line[1] in + (run) _openclaw_gateway_run ;; + (status) _openclaw_gateway_status ;; + (install) _openclaw_gateway_install ;; + (uninstall) _openclaw_gateway_uninstall ;; + (start) _openclaw_gateway_start ;; + (stop) _openclaw_gateway_stop ;; + (restart) _openclaw_gateway_restart ;; + (call) _openclaw_gateway_call ;; + (usage-cost) _openclaw_gateway_usage_cost ;; + (health) _openclaw_gateway_health ;; + (stability) _openclaw_gateway_stability ;; + (diagnostics) _openclaw_gateway_diagnostics ;; + (probe) _openclaw_gateway_probe ;; + (discover) _openclaw_gateway_discover ;; + esac + ;; + esac +} + +_openclaw_daemon_status() { + _arguments -C \ + "--url[Gateway WebSocket URL (defaults to config/remote/local)]" \ + "--token[Gateway token (if required)]" \ + "--password[Gateway password (password auth)]" \ + "--timeout[Timeout in ms]" \ + "--no-probe[Skip RPC probe]" \ + "--require-rpc[Exit non-zero when the RPC probe fails]" \ + "--deep[Scan system-level services]" \ + "--json[Output JSON]" +} + +_openclaw_daemon_install() { + _arguments -C \ + "--port[Gateway port]" \ + "--runtime[Daemon runtime (node|bun). Default: node]" \ + "--token[Gateway token (token auth)]" \ + "--wrapper[Executable wrapper for generated service ProgramArguments]" \ + "--force[Reinstall/overwrite if already installed]" \ + "--json[Output JSON]" +} + +_openclaw_daemon_uninstall() { + _arguments -C \ + "--json[Output JSON]" +} + +_openclaw_daemon_start() { + _arguments -C \ + "--json[Output JSON]" +} + +_openclaw_daemon_stop() { + _arguments -C \ + "--json[Output JSON]" \ + "--disable[Persistently suppress KeepAlive/RunAtLoad so the gateway does not respawn until next start (launchd only)]" +} + +_openclaw_daemon_restart() { + _arguments -C \ + "--force[Restart immediately without waiting for active gateway work]" \ + "--safe[Request an OpenClaw-aware restart after active work drains]" \ + "--skip-deferral[Bypass the safe-restart deferral gate; requires --safe]" \ + "--wait[Wait duration before forcing restart (ms, 10s, 5m; 0 waits indefinitely)]" \ + "--json[Output JSON]" +} + +_openclaw_daemon() { + local -a commands + local -a options + + _arguments -C \ + \ + "1: :_values 'command' 'status[Show service install status + probe connectivity/capability]' 'install[Install the Gateway service (launchd/systemd/schtasks)]' 'uninstall[Uninstall the Gateway service (launchd/systemd/schtasks)]' 'start[Start the Gateway service (launchd/systemd/schtasks)]' 'stop[Stop the Gateway service (launchd/systemd/schtasks)]' 'restart[Restart the Gateway service (launchd/systemd/schtasks)]'" \ + "*::arg:->args" + + case $state in + (args) + case $line[1] in + (status) _openclaw_daemon_status ;; + (install) _openclaw_daemon_install ;; + (uninstall) _openclaw_daemon_uninstall ;; + (start) _openclaw_daemon_start ;; + (stop) _openclaw_daemon_stop ;; + (restart) _openclaw_daemon_restart ;; + esac + ;; + esac +} + +_openclaw_logs() { + _arguments -C \ + "--limit[Max lines to return]" \ + "--max-bytes[Max bytes to read]" \ + "--follow[Follow log output]" \ + "--interval[Polling interval in ms]" \ + "--json[Emit JSON log lines]" \ + "--plain[Plain text output (no ANSI styling)]" \ + "--no-color[Disable ANSI colors]" \ + "--local-time[Display timestamps in local timezone (default)]" \ + "--utc[Display timestamps in UTC]" \ + "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \ + "--token[Gateway token (if required)]" \ + "--timeout[Timeout in ms]" \ + "--expect-final[Wait for final response (agent)]" +} + +_openclaw_system_event() { + _arguments -C \ + "--text[System event text]" \ + "--mode[Wake mode (now|next-heartbeat)]" \ + "--session-key[Target a specific session for the event (defaults to the agent's main session)]" \ + "--json[Output JSON]" \ + "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \ + "--token[Gateway token (if required)]" \ + "--timeout[Timeout in ms]" \ + "--expect-final[Wait for final response (agent)]" +} + +_openclaw_system_heartbeat_last() { + _arguments -C \ + "--json[Output JSON]" \ + "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \ + "--token[Gateway token (if required)]" \ + "--timeout[Timeout in ms]" \ + "--expect-final[Wait for final response (agent)]" +} + +_openclaw_system_heartbeat_enable() { + _arguments -C \ + "--json[Output JSON]" \ + "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \ + "--token[Gateway token (if required)]" \ + "--timeout[Timeout in ms]" \ + "--expect-final[Wait for final response (agent)]" +} + +_openclaw_system_heartbeat_disable() { + _arguments -C \ + "--json[Output JSON]" \ + "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \ + "--token[Gateway token (if required)]" \ + "--timeout[Timeout in ms]" \ + "--expect-final[Wait for final response (agent)]" +} + +_openclaw_system_heartbeat() { + local -a commands + local -a options + + _arguments -C \ + \ + "1: :_values 'command' 'last[Show the last heartbeat event]' 'enable[Enable heartbeats]' 'disable[Disable heartbeats]'" \ + "*::arg:->args" + + case $state in + (args) + case $line[1] in + (last) _openclaw_system_heartbeat_last ;; + (enable) _openclaw_system_heartbeat_enable ;; + (disable) _openclaw_system_heartbeat_disable ;; + esac + ;; + esac +} + +_openclaw_system_presence() { + _arguments -C \ + "--json[Output JSON]" \ + "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \ + "--token[Gateway token (if required)]" \ + "--timeout[Timeout in ms]" \ + "--expect-final[Wait for final response (agent)]" +} + +_openclaw_system() { + local -a commands + local -a options + + _arguments -C \ + \ + "1: :_values 'command' 'event[Enqueue a system event and optionally trigger a heartbeat]' 'heartbeat[Heartbeat controls]' 'presence[List system presence entries]'" \ + "*::arg:->args" + + case $state in + (args) + case $line[1] in + (event) _openclaw_system_event ;; + (heartbeat) _openclaw_system_heartbeat ;; + (presence) _openclaw_system_presence ;; + esac + ;; + esac +} + +_openclaw_models_list() { + _arguments -C \ + "--all[Show full model catalog]" \ + "--local[Filter to local models]" \ + "--provider[Filter by provider id]" \ + "--json[Output JSON]" \ + "--plain[Plain line output]" +} + +_openclaw_models_status() { + _arguments -C \ + "--json[Output JSON]" \ + "--plain[Plain output]" \ + "--check[Exit non-zero if auth is expiring/expired (1=expired/missing, 2=expiring)]" \ + "--probe[Probe configured provider auth (live)]" \ + "--probe-provider[Only probe a single provider]" \ + "--probe-profile[Only probe specific auth profile ids (repeat or comma-separated)]" \ + "--probe-timeout[Per-probe timeout in ms]" \ + "--probe-concurrency[Concurrent probes]" \ + "--probe-max-tokens[Probe max tokens (best-effort)]" \ + "--agent[Agent id to inspect (overrides OPENCLAW_AGENT_DIR)]" +} + +_openclaw_models_set() { + _arguments -C \ + +} + +_openclaw_models_set_image() { + _arguments -C \ + +} + +_openclaw_models_aliases_list() { + _arguments -C \ + "--json[Output JSON]" \ + "--plain[Plain output]" +} + +_openclaw_models_aliases_add() { + _arguments -C \ + +} + +_openclaw_models_aliases_remove() { + _arguments -C \ + +} + +_openclaw_models_aliases() { + local -a commands + local -a options + + _arguments -C \ + \ + "1: :_values 'command' 'list[List model aliases]' 'add[Add or update a model alias]' 'remove[Remove a model alias]'" \ + "*::arg:->args" + + case $state in + (args) + case $line[1] in + (list) _openclaw_models_aliases_list ;; + (add) _openclaw_models_aliases_add ;; + (remove) _openclaw_models_aliases_remove ;; + esac + ;; + esac +} + +_openclaw_models_fallbacks_list() { + _arguments -C \ + "--json[Output JSON]" \ + "--plain[Plain output]" +} + +_openclaw_models_fallbacks_add() { + _arguments -C \ + +} + +_openclaw_models_fallbacks_remove() { + _arguments -C \ + +} + +_openclaw_models_fallbacks_clear() { + _arguments -C \ + +} + +_openclaw_models_fallbacks() { + local -a commands + local -a options + + _arguments -C \ + \ + "1: :_values 'command' 'list[List fallback models]' 'add[Add a fallback model]' 'remove[Remove a fallback model]' 'clear[Clear all fallback models]'" \ + "*::arg:->args" + + case $state in + (args) + case $line[1] in + (list) _openclaw_models_fallbacks_list ;; + (add) _openclaw_models_fallbacks_add ;; + (remove) _openclaw_models_fallbacks_remove ;; + (clear) _openclaw_models_fallbacks_clear ;; + esac + ;; + esac +} + +_openclaw_models_image_fallbacks_list() { + _arguments -C \ + "--json[Output JSON]" \ + "--plain[Plain output]" +} + +_openclaw_models_image_fallbacks_add() { + _arguments -C \ + +} + +_openclaw_models_image_fallbacks_remove() { + _arguments -C \ + +} + +_openclaw_models_image_fallbacks_clear() { + _arguments -C \ + +} + +_openclaw_models_image_fallbacks() { + local -a commands + local -a options + + _arguments -C \ + \ + "1: :_values 'command' 'list[List image fallback models]' 'add[Add an image fallback model]' 'remove[Remove an image fallback model]' 'clear[Clear all image fallback models]'" \ + "*::arg:->args" + + case $state in + (args) + case $line[1] in + (list) _openclaw_models_image_fallbacks_list ;; + (add) _openclaw_models_image_fallbacks_add ;; + (remove) _openclaw_models_image_fallbacks_remove ;; + (clear) _openclaw_models_image_fallbacks_clear ;; + esac + ;; + esac +} + +_openclaw_models_scan() { + _arguments -C \ + "--min-params[Minimum parameter size (billions)]" \ + "--max-age-days[Skip models older than N days]" \ + "--provider[Filter by provider prefix]" \ + "--max-candidates[Max fallback candidates]" \ + "--timeout[Per-probe timeout in ms]" \ + "--concurrency[Probe concurrency]" \ + "--no-probe[Skip live probes; list free candidates only]" \ + "--yes[Accept defaults without prompting]" \ + "--no-input[Disable prompts (use defaults)]" \ + "--set-default[Set agents.defaults.model to the first selection]" \ + "--set-image[Set agents.defaults.imageModel to the first image selection]" \ + "--json[Output JSON]" +} + +_openclaw_models_auth_list() { + _arguments -C \ + "--provider[Filter by provider id]" \ + "--agent[Agent id (default: configured default agent)]" \ + "--json[Output JSON]" +} + +_openclaw_models_auth_add() { + _arguments -C \ + +} + +_openclaw_models_auth_login() { + _arguments -C \ + "--provider[Provider id registered by a plugin]" \ + "--method[Provider auth method id]" \ + "--device-code[Use the provider device-code auth method]" \ + "--profile-id[Auth profile id override for single-profile login methods]" \ + "--set-default[Apply the provider's default model recommendation]" \ + "--force[Remove existing profiles for the provider before logging in (use when a cached OAuth profile is stuck or you want to switch accounts)]" +} + +_openclaw_models_auth_setup_token() { + _arguments -C \ + "--provider[Provider id]" \ + "--yes[Skip confirmation]" +} + +_openclaw_models_auth_paste_token() { + _arguments -C \ + "--provider[Provider id (e.g. anthropic)]" \ + "--profile-id[Auth profile id (default: :manual)]" \ + "--expires-in[Optional expiry duration (e.g. 365d, 12h). Stored as absolute expiresAt.]" +} + +_openclaw_models_auth_paste_api_key() { + _arguments -C \ + "--provider[Provider id (e.g. openai)]" \ + "--profile-id[Auth profile id (default: :manual)]" +} + +_openclaw_models_auth_login_github_copilot() { + _arguments -C \ + "--yes[Overwrite existing profile without prompting]" +} + +_openclaw_models_auth_order_get() { + _arguments -C \ + "--provider[Provider id (e.g. anthropic)]" \ + "--agent[Agent id (default: configured default agent)]" \ + "--json[Output JSON]" +} + +_openclaw_models_auth_order_set() { + _arguments -C \ + "--provider[Provider id (e.g. anthropic)]" \ + "--agent[Agent id (default: configured default agent)]" +} + +_openclaw_models_auth_order_clear() { + _arguments -C \ + "--provider[Provider id (e.g. anthropic)]" \ + "--agent[Agent id (default: configured default agent)]" +} + +_openclaw_models_auth_order() { + local -a commands + local -a options + + _arguments -C \ + \ + "1: :_values 'command' 'get[Show per-agent auth order override (from auth-state.json)]' 'set[Set per-agent auth order override (writes auth-state.json)]' 'clear[Clear per-agent auth order override (fall back to config/round-robin)]'" \ + "*::arg:->args" + + case $state in + (args) + case $line[1] in + (get) _openclaw_models_auth_order_get ;; + (set) _openclaw_models_auth_order_set ;; + (clear) _openclaw_models_auth_order_clear ;; + esac + ;; + esac +} + +_openclaw_models_auth() { + local -a commands + local -a options + + _arguments -C \ + "--agent[Agent id for auth commands]" \ + "1: :_values 'command' 'list[List saved auth profiles]' 'add[Interactive auth helper (provider auth or paste token)]' 'login[Run a provider plugin auth flow (OAuth/API key)]' 'setup-token[Run a provider CLI to create/sync a token (TTY required)]' 'paste-token[Paste a token into auth-profiles.json and update config]' 'paste-api-key[Paste an API key into auth-profiles.json and update config]' 'login-github-copilot[Login to GitHub Copilot via GitHub device flow (TTY required)]' 'order[Manage per-agent auth profile order overrides]'" \ + "*::arg:->args" + + case $state in + (args) + case $line[1] in + (list) _openclaw_models_auth_list ;; + (add) _openclaw_models_auth_add ;; + (login) _openclaw_models_auth_login ;; + (setup-token) _openclaw_models_auth_setup_token ;; + (paste-token) _openclaw_models_auth_paste_token ;; + (paste-api-key) _openclaw_models_auth_paste_api_key ;; + (login-github-copilot) _openclaw_models_auth_login_github_copilot ;; + (order) _openclaw_models_auth_order ;; + esac + ;; + esac +} + +_openclaw_models() { + local -a commands + local -a options + + _arguments -C \ + "--status-json[Output JSON (alias for \`models status --json\`)]" \ + "--status-plain[Plain output (alias for \`models status --plain\`)]" \ + "--agent[Agent id to inspect (overrides OPENCLAW_AGENT_DIR)]" \ + "1: :_values 'command' 'list[List models (configured by default)]' 'status[Show configured model state]' 'set[Set the default model]' 'set-image[Set the image model]' 'aliases[Manage model aliases]' 'fallbacks[Manage model fallback list]' 'image-fallbacks[Manage image model fallback list]' 'scan[Scan OpenRouter free models for tools + images]' 'auth[Manage model auth profiles]'" \ + "*::arg:->args" + + case $state in + (args) + case $line[1] in + (list) _openclaw_models_list ;; + (status) _openclaw_models_status ;; + (set) _openclaw_models_set ;; + (set-image) _openclaw_models_set_image ;; + (aliases) _openclaw_models_aliases ;; + (fallbacks) _openclaw_models_fallbacks ;; + (image-fallbacks) _openclaw_models_image_fallbacks ;; + (scan) _openclaw_models_scan ;; + (auth) _openclaw_models_auth ;; + esac + ;; + esac +} + +_openclaw_infer_list() { + _arguments -C \ + "--json[Output JSON]" +} + +_openclaw_infer_inspect() { + _arguments -C \ + "--name[Capability id]" \ + "--json[Output JSON]" +} + +_openclaw_infer_model_run() { + _arguments -C \ + "--prompt[Prompt text]" \ + "--file[Image file]" \ + "--model[Model override]" \ + "--thinking[Thinking level override]" \ + "--local[Force local execution]" \ + "--gateway[Force gateway execution]" \ + "--json[Output JSON]" +} + +_openclaw_infer_model_list() { + _arguments -C \ + "--json[Output JSON]" +} + +_openclaw_infer_model_inspect() { + _arguments -C \ + "--model[Model id]" \ + "--json[Output JSON]" +} + +_openclaw_infer_model_providers() { + _arguments -C \ + "--json[Output JSON]" +} + +_openclaw_infer_model_auth_login() { + _arguments -C \ + "--provider[Provider id]" \ + "--method[Provider auth method id]" +} + +_openclaw_infer_model_auth_logout() { + _arguments -C \ + "--provider[Provider id]" \ + "--agent[Agent id (default: configured default agent)]" \ + "--json[Output JSON]" +} + +_openclaw_infer_model_auth_status() { + _arguments -C \ + "--json[Output JSON]" +} + +_openclaw_infer_model_auth() { + local -a commands + local -a options + + _arguments -C \ + \ + "1: :_values 'command' 'login[Run provider auth login]' 'logout[Remove saved auth profiles for one provider]' 'status[Show configured auth state]'" \ + "*::arg:->args" + + case $state in + (args) + case $line[1] in + (login) _openclaw_infer_model_auth_login ;; + (logout) _openclaw_infer_model_auth_logout ;; + (status) _openclaw_infer_model_auth_status ;; + esac + ;; + esac +} + +_openclaw_infer_model() { + local -a commands + local -a options + + _arguments -C \ + \ + "1: :_values 'command' 'run[Run a one-shot model turn]' 'list[List known models]' 'inspect[Inspect one model catalog entry]' 'providers[List model providers from the catalog]' 'auth[Provider auth helpers]'" \ + "*::arg:->args" + + case $state in + (args) + case $line[1] in + (run) _openclaw_infer_model_run ;; + (list) _openclaw_infer_model_list ;; + (inspect) _openclaw_infer_model_inspect ;; + (providers) _openclaw_infer_model_providers ;; + (auth) _openclaw_infer_model_auth ;; + esac + ;; + esac +} + +_openclaw_infer_image_generate() { + _arguments -C \ + "--prompt[Prompt text]" \ + "--model[Model override]" \ + "--count[Number of images]" \ + "--size[Size hint like 1024x1024]" \ + "--aspect-ratio[Aspect ratio hint like 16:9]" \ + "--resolution[Resolution hint: 1K, 2K, or 4K]" \ + "--output-format[Output format hint: png, jpeg, or webp]" \ + "--background[Background hint: transparent, opaque, or auto]" \ + "--openai-background[OpenAI background hint: transparent, opaque, or auto]" \ + "--openai-moderation[OpenAI moderation hint: low or auto]" \ + "--quality[Quality hint: low, medium, high, or auto]" \ + "--timeout-ms[Provider request timeout in milliseconds]" \ + "--output[Output path]" \ + "--json[Output JSON]" +} + +_openclaw_infer_image_edit() { + _arguments -C \ + "--file[Input file]" \ + "--prompt[Prompt text]" \ + "--model[Model override]" \ + "--count[Number of images]" \ + "--size[Size hint like 1024x1024]" \ + "--aspect-ratio[Aspect ratio hint like 16:9]" \ + "--resolution[Resolution hint: 1K, 2K, or 4K]" \ + "--output-format[Output format hint: png, jpeg, or webp]" \ + "--background[Background hint: transparent, opaque, or auto]" \ + "--openai-background[OpenAI background hint: transparent, opaque, or auto]" \ + "--openai-moderation[OpenAI moderation hint: low or auto]" \ + "--quality[Quality hint: low, medium, high, or auto]" \ + "--timeout-ms[Provider request timeout in milliseconds]" \ + "--output[Output path]" \ + "--json[Output JSON]" +} + +_openclaw_infer_image_describe() { + _arguments -C \ + "--file[Image file]" \ + "--prompt[Prompt hint]" \ + "--model[Model override]" \ + "--timeout-ms[Provider request timeout in milliseconds]" \ + "--json[Output JSON]" +} + +_openclaw_infer_image_describe_many() { + _arguments -C \ + "--file[Image file]" \ + "--prompt[Prompt hint]" \ + "--model[Model override]" \ + "--timeout-ms[Provider request timeout in milliseconds]" \ + "--json[Output JSON]" +} + +_openclaw_infer_image_providers() { + _arguments -C \ + "--json[Output JSON]" +} + +_openclaw_infer_image() { + local -a commands + local -a options + + _arguments -C \ + \ + "1: :_values 'command' 'generate[Generate images]' 'edit[Edit images with one or more input files]' 'describe[Describe one image file]' 'describe-many[Describe multiple image files]' 'providers[List image generation providers]'" \ + "*::arg:->args" + + case $state in + (args) + case $line[1] in + (generate) _openclaw_infer_image_generate ;; + (edit) _openclaw_infer_image_edit ;; + (describe) _openclaw_infer_image_describe ;; + (describe-many) _openclaw_infer_image_describe_many ;; + (providers) _openclaw_infer_image_providers ;; + esac + ;; + esac +} + +_openclaw_infer_audio_transcribe() { + _arguments -C \ + "--file[Audio file]" \ + "--language[Language hint]" \ + "--prompt[Prompt hint]" \ + "--model[Model override]" \ + "--json[Output JSON]" +} + +_openclaw_infer_audio_providers() { + _arguments -C \ + "--json[Output JSON]" +} + +_openclaw_infer_audio() { + local -a commands + local -a options + + _arguments -C \ + \ + "1: :_values 'command' 'transcribe[Transcribe one audio file]' 'providers[List audio transcription providers]'" \ + "*::arg:->args" + + case $state in + (args) + case $line[1] in + (transcribe) _openclaw_infer_audio_transcribe ;; + (providers) _openclaw_infer_audio_providers ;; + esac + ;; + esac +} + +_openclaw_infer_tts_convert() { + _arguments -C \ + "--text[Input text]" \ + "--channel[Channel hint]" \ + "--voice[Voice hint]" \ + "--model[Model override]" \ + "--output[Output path]" \ + "--local[Force local execution]" \ + "--gateway[Force gateway execution]" \ + "--json[Output JSON]" +} + +_openclaw_infer_tts_voices() { + _arguments -C \ + "--provider[Speech provider id]" \ + "--json[Output JSON]" +} + +_openclaw_infer_tts_providers() { + _arguments -C \ + "--local[Force local execution]" \ + "--gateway[Force gateway execution]" \ + "--json[Output JSON]" +} + +_openclaw_infer_tts_personas() { + _arguments -C \ + "--local[Force local execution]" \ + "--gateway[Force gateway execution]" \ + "--json[Output JSON]" +} + +_openclaw_infer_tts_status() { + _arguments -C \ + "--gateway[Force gateway execution]" \ + "--json[Output JSON]" +} + +_openclaw_infer_tts_enable() { + _arguments -C \ + "--local[Force local execution]" \ + "--gateway[Force gateway execution]" \ + "--json[Output JSON]" +} + +_openclaw_infer_tts_disable() { + _arguments -C \ + "--local[Force local execution]" \ + "--gateway[Force gateway execution]" \ + "--json[Output JSON]" +} + +_openclaw_infer_tts_set_provider() { + _arguments -C \ + "--provider[Speech provider id]" \ + "--local[Force local execution]" \ + "--gateway[Force gateway execution]" \ + "--json[Output JSON]" +} + +_openclaw_infer_tts_set_persona() { + _arguments -C \ + "--persona[TTS persona id]" \ + "--off[Disable the active TTS persona]" \ + "--local[Force local execution]" \ + "--gateway[Force gateway execution]" \ + "--json[Output JSON]" +} + +_openclaw_infer_tts() { + local -a commands + local -a options + + _arguments -C \ + \ + "1: :_values 'command' 'convert[Convert text to speech]' 'voices[List voices for a TTS provider]' 'providers[List speech providers]' 'personas[List TTS personas]' 'status[Show TTS status]' 'enable[Enable TTS]' 'disable[Disable TTS]' 'set-provider[Set the active TTS provider]' 'set-persona[Set the active TTS persona]'" \ + "*::arg:->args" + + case $state in + (args) + case $line[1] in + (convert) _openclaw_infer_tts_convert ;; + (voices) _openclaw_infer_tts_voices ;; + (providers) _openclaw_infer_tts_providers ;; + (personas) _openclaw_infer_tts_personas ;; + (status) _openclaw_infer_tts_status ;; + (enable) _openclaw_infer_tts_enable ;; + (disable) _openclaw_infer_tts_disable ;; + (set-provider) _openclaw_infer_tts_set_provider ;; + (set-persona) _openclaw_infer_tts_set_persona ;; + esac + ;; + esac +} + +_openclaw_infer_video_generate() { + _arguments -C \ + "--prompt[Prompt text]" \ + "--model[Model override]" \ + "--size[Size hint like 1280x720]" \ + "--aspect-ratio[Aspect ratio hint like 16:9]" \ + "--resolution[Resolution hint: 360P, 480P, 540P, 720P, 768P, or 1080P]" \ + "--duration[Target duration in seconds]" \ + "--audio[Enable generated audio when supported]" \ + "--watermark[Request provider watermark when supported]" \ + "--timeout-ms[Provider request timeout in milliseconds]" \ + "--output[Output path]" \ + "--json[Output JSON]" +} + +_openclaw_infer_video_describe() { + _arguments -C \ + "--file[Video file]" \ + "--model[Model override]" \ + "--json[Output JSON]" +} + +_openclaw_infer_video_providers() { + _arguments -C \ + "--json[Output JSON]" +} + +_openclaw_infer_video() { + local -a commands + local -a options + + _arguments -C \ + \ + "1: :_values 'command' 'generate[Generate video]' 'describe[Describe one video file]' 'providers[List video generation and description providers]'" \ + "*::arg:->args" + + case $state in + (args) + case $line[1] in + (generate) _openclaw_infer_video_generate ;; + (describe) _openclaw_infer_video_describe ;; + (providers) _openclaw_infer_video_providers ;; + esac + ;; + esac +} + +_openclaw_infer_web_search() { + _arguments -C \ + "--query[Search query]" \ + "--provider[Provider id]" \ + "--limit[Result limit]" \ + "--json[Output JSON]" +} + +_openclaw_infer_web_fetch() { + _arguments -C \ + "--url[URL]" \ + "--provider[Provider id]" \ + "--format[Format hint]" \ + "--json[Output JSON]" +} + +_openclaw_infer_web_providers() { + _arguments -C \ + "--json[Output JSON]" +} + +_openclaw_infer_web() { + local -a commands + local -a options + + _arguments -C \ + \ + "1: :_values 'command' 'search[Run web search]' 'fetch[Fetch one URL]' 'providers[List web providers]'" \ + "*::arg:->args" + + case $state in + (args) + case $line[1] in + (search) _openclaw_infer_web_search ;; + (fetch) _openclaw_infer_web_fetch ;; + (providers) _openclaw_infer_web_providers ;; + esac + ;; + esac +} + +_openclaw_infer_embedding_create() { + _arguments -C \ + "--text[Input text]" \ + "--provider[Provider id]" \ + "--model[Model override]" \ + "--json[Output JSON]" +} + +_openclaw_infer_embedding_providers() { + _arguments -C \ + "--json[Output JSON]" +} + +_openclaw_infer_embedding() { + local -a commands + local -a options + + _arguments -C \ + \ + "1: :_values 'command' 'create[Create embeddings]' 'providers[List embedding providers]'" \ + "*::arg:->args" + + case $state in + (args) + case $line[1] in + (create) _openclaw_infer_embedding_create ;; + (providers) _openclaw_infer_embedding_providers ;; + esac + ;; + esac +} + +_openclaw_infer() { + local -a commands + local -a options + + _arguments -C \ + \ + "1: :_values 'command' 'list[List canonical capability ids and supported transports]' 'inspect[Inspect one canonical capability id]' 'model[Text inference and model catalog commands]' 'image[Image generation and description]' 'audio[Audio transcription]' 'tts[Text to speech]' 'video[Video generation and description]' 'web[Web capabilities]' 'embedding[Embedding providers]'" \ + "*::arg:->args" + + case $state in + (args) + case $line[1] in + (list) _openclaw_infer_list ;; + (inspect) _openclaw_infer_inspect ;; + (model) _openclaw_infer_model ;; + (image) _openclaw_infer_image ;; + (audio) _openclaw_infer_audio ;; + (tts) _openclaw_infer_tts ;; + (video) _openclaw_infer_video ;; + (web) _openclaw_infer_web ;; + (embedding) _openclaw_infer_embedding ;; + esac + ;; + esac +} + +_openclaw_approvals_get() { + _arguments -C \ + "--node[Target node id/name/IP]" \ + "--gateway[Force gateway approvals]" \ + "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \ + "--token[Gateway token (if required)]" \ + "--timeout[Timeout in ms]" \ + "--json[Output JSON]" +} + +_openclaw_approvals_set() { + _arguments -C \ + "--node[Target node id/name/IP]" \ + "--gateway[Force gateway approvals]" \ + "--file[Path to JSON file to upload]" \ + "--stdin[Read JSON from stdin]" \ + "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \ + "--token[Gateway token (if required)]" \ + "--timeout[Timeout in ms]" \ + "--json[Output JSON]" +} + +_openclaw_approvals_allowlist_add() { + _arguments -C \ + "--node[Target node id/name/IP]" \ + "--gateway[Force gateway approvals]" \ + "--agent[Agent id (defaults to \"*\")]" \ + "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \ + "--token[Gateway token (if required)]" \ + "--timeout[Timeout in ms]" \ + "--json[Output JSON]" +} + +_openclaw_approvals_allowlist_remove() { + _arguments -C \ + "--node[Target node id/name/IP]" \ + "--gateway[Force gateway approvals]" \ + "--agent[Agent id (defaults to \"*\")]" \ + "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \ + "--token[Gateway token (if required)]" \ + "--timeout[Timeout in ms]" \ + "--json[Output JSON]" +} + +_openclaw_approvals_allowlist() { + local -a commands + local -a options + + _arguments -C \ + \ + "1: :_values 'command' 'add[Add a glob pattern to an allowlist]' 'remove[Remove a glob pattern from an allowlist]'" \ + "*::arg:->args" + + case $state in + (args) + case $line[1] in + (add) _openclaw_approvals_allowlist_add ;; + (remove) _openclaw_approvals_allowlist_remove ;; + esac + ;; + esac +} + +_openclaw_approvals() { + local -a commands + local -a options + + _arguments -C \ + \ + "1: :_values 'command' 'get[Fetch exec approvals snapshot]' 'set[Replace exec approvals with a JSON file]' 'allowlist[Edit the per-agent allowlist]'" \ + "*::arg:->args" + + case $state in + (args) + case $line[1] in + (get) _openclaw_approvals_get ;; + (set) _openclaw_approvals_set ;; + (allowlist) _openclaw_approvals_allowlist ;; + esac + ;; + esac +} + +_openclaw_exec_policy_show() { + _arguments -C \ + "--json[Output as JSON]" +} + +_openclaw_exec_policy_preset() { + _arguments -C \ + "--json[Output as JSON]" +} + +_openclaw_exec_policy_set() { + _arguments -C \ + "--host[Exec host target: auto|sandbox|gateway|node]" \ + "--security[Exec security: deny|allowlist|full]" \ + "--ask[Exec ask mode: off|on-miss|always]" \ + "--ask-fallback[Host approvals fallback: deny|allowlist|full]" \ + "--json[Output as JSON]" +} + +_openclaw_exec_policy() { + local -a commands + local -a options + + _arguments -C \ + \ + "1: :_values 'command' 'show[Show the local config policy, host approvals, and effective merge]' 'preset[Apply a synchronized preset: "yolo", "cautious", or "deny-all"]' 'set[Synchronize local config and host approvals using explicit values]'" \ + "*::arg:->args" + + case $state in + (args) + case $line[1] in + (show) _openclaw_exec_policy_show ;; + (preset) _openclaw_exec_policy_preset ;; + (set) _openclaw_exec_policy_set ;; + esac + ;; + esac +} + +_openclaw_nodes_status() { + _arguments -C \ + "--connected[Only show connected nodes]" \ + "--last-connected[Only show nodes connected within duration (e.g. 24h)]" \ + "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \ + "--token[Gateway token (if required)]" \ + "--timeout[Timeout in ms]" \ + "--json[Output JSON]" +} + +_openclaw_nodes_describe() { + _arguments -C \ + "--node[Node id, name, or IP]" \ + "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \ + "--token[Gateway token (if required)]" \ + "--timeout[Timeout in ms]" \ + "--json[Output JSON]" +} + +_openclaw_nodes_list() { + _arguments -C \ + "--connected[Only show connected nodes]" \ + "--last-connected[Only show nodes connected within duration (e.g. 24h)]" \ + "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \ + "--token[Gateway token (if required)]" \ + "--timeout[Timeout in ms]" \ + "--json[Output JSON]" +} + +_openclaw_nodes_pending() { + _arguments -C \ + "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \ + "--token[Gateway token (if required)]" \ + "--timeout[Timeout in ms]" \ + "--json[Output JSON]" +} + +_openclaw_nodes_approve() { + _arguments -C \ + "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \ + "--token[Gateway token (if required)]" \ + "--timeout[Timeout in ms]" \ + "--json[Output JSON]" +} + +_openclaw_nodes_reject() { + _arguments -C \ + "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \ + "--token[Gateway token (if required)]" \ + "--timeout[Timeout in ms]" \ + "--json[Output JSON]" +} + +_openclaw_nodes_remove() { + _arguments -C \ + "--node[Node id, name, or IP]" \ + "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \ + "--token[Gateway token (if required)]" \ + "--timeout[Timeout in ms]" \ + "--json[Output JSON]" +} + +_openclaw_nodes_rename() { + _arguments -C \ + "--node[Node id, name, or IP]" \ + "--name[New display name]" \ + "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \ + "--token[Gateway token (if required)]" \ + "--timeout[Timeout in ms]" \ + "--json[Output JSON]" +} + +_openclaw_nodes_invoke() { + _arguments -C \ + "--node[Node id, name, or IP]" \ + "--command[Command (e.g. canvas.eval)]" \ + "--params[JSON object string for params]" \ + "--invoke-timeout[Node invoke timeout in ms (default 15000)]" \ + "--idempotency-key[Idempotency key (optional)]" \ + "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \ + "--token[Gateway token (if required)]" \ + "--timeout[Timeout in ms]" \ + "--json[Output JSON]" +} + +_openclaw_nodes_notify() { + _arguments -C \ + "--node[Node id, name, or IP]" \ + "--title[Notification title]" \ + "--body[Notification body]" \ + "--sound[Notification sound]" \ + "--priority[Notification priority]" \ + "--delivery[Delivery mode]" \ + "--invoke-timeout[Node invoke timeout in ms (default 15000)]" \ + "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \ + "--token[Gateway token (if required)]" \ + "--timeout[Timeout in ms]" \ + "--json[Output JSON]" +} + +_openclaw_nodes_push() { + _arguments -C \ + "--node[Node id, name, or IP]" \ + "--title[Push title]" \ + "--body[Push body]" \ + "--environment[Override APNs environment]" \ + "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \ + "--token[Gateway token (if required)]" \ + "--timeout[Timeout in ms]" \ + "--json[Output JSON]" +} + +_openclaw_nodes_camera_list() { + _arguments -C \ + "--node[Node id, name, or IP]" \ + "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \ + "--token[Gateway token (if required)]" \ + "--timeout[Timeout in ms]" \ + "--json[Output JSON]" +} + +_openclaw_nodes_camera_snap() { + _arguments -C \ + "--node[Node id, name, or IP]" \ + "--facing[Camera facing]" \ + "--device-id[Camera device id (from nodes camera list)]" \ + "--max-width[Max width in px (optional)]" \ + "--quality[JPEG quality (default 0.9)]" \ + "--delay-ms[Delay before capture in ms (macOS default 2000)]" \ + "--invoke-timeout[Node invoke timeout in ms (default 20000)]" \ + "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \ + "--token[Gateway token (if required)]" \ + "--timeout[Timeout in ms]" \ + "--json[Output JSON]" +} + +_openclaw_nodes_camera_clip() { + _arguments -C \ + "--node[Node id, name, or IP]" \ + "--facing[Camera facing]" \ + "--device-id[Camera device id (from nodes camera list)]" \ + "--duration[Duration (default 3000ms; supports ms/s/m, e.g. 10s)]" \ + "--no-audio[Disable audio capture]" \ + "--invoke-timeout[Node invoke timeout in ms (default 90000)]" \ + "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \ + "--token[Gateway token (if required)]" \ + "--timeout[Timeout in ms]" \ + "--json[Output JSON]" +} + +_openclaw_nodes_camera() { + local -a commands + local -a options + + _arguments -C \ + \ + "1: :_values 'command' 'list[List available cameras on a node]' 'snap[Capture a photo from a node camera (prints the saved path)]' 'clip[Capture a short video clip from a node camera (prints the saved path)]'" \ + "*::arg:->args" + + case $state in + (args) + case $line[1] in + (list) _openclaw_nodes_camera_list ;; + (snap) _openclaw_nodes_camera_snap ;; + (clip) _openclaw_nodes_camera_clip ;; + esac + ;; + esac +} + +_openclaw_nodes_screen_record() { + _arguments -C \ + "--node[Node id, name, or IP]" \ + "--screen[Screen index (0 = primary)]" \ + "--duration[Clip duration (ms or 10s)]" \ + "--fps[Frames per second]" \ + "--no-audio[Disable microphone audio capture]" \ + "--out[Output path]" \ + "--invoke-timeout[Node invoke timeout in ms (default 120000)]" \ + "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \ + "--token[Gateway token (if required)]" \ + "--timeout[Timeout in ms]" \ + "--json[Output JSON]" +} + +_openclaw_nodes_screen() { + local -a commands + local -a options + + _arguments -C \ + \ + "1: :_values 'command' 'record[Capture a short screen recording from a node (prints the saved path)]'" \ + "*::arg:->args" + + case $state in + (args) + case $line[1] in + (record) _openclaw_nodes_screen_record ;; + esac + ;; + esac +} + +_openclaw_nodes_location_get() { + _arguments -C \ + "--node[Node id, name, or IP]" \ + "--max-age[Use cached location newer than this (ms)]" \ + "--accuracy[Desired accuracy (default: balanced/precise depending on node setting)]" \ + "--location-timeout[Location fix timeout (ms)]" \ + "--invoke-timeout[Node invoke timeout in ms (default 20000)]" \ + "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \ + "--token[Gateway token (if required)]" \ + "--timeout[Timeout in ms]" \ + "--json[Output JSON]" +} + +_openclaw_nodes_location() { + local -a commands + local -a options + + _arguments -C \ + \ + "1: :_values 'command' 'get[Fetch the current location from a node]'" \ + "*::arg:->args" + + case $state in + (args) + case $line[1] in + (get) _openclaw_nodes_location_get ;; + esac + ;; + esac +} + +_openclaw_nodes() { + local -a commands + local -a options + + _arguments -C \ + \ + "1: :_values 'command' 'status[List known nodes with connection status and capabilities]' 'describe[Describe a node (capabilities + supported invoke commands)]' 'list[List pending and paired nodes]' 'pending[List pending pairing requests]' 'approve[Approve a pending pairing request]' 'reject[Reject a pending pairing request]' 'remove[Remove a paired node entry]' 'rename[Rename a paired node (display name override)]' 'invoke[Invoke a command on a paired node]' 'notify[Send a local notification on a node (mac only)]' 'push[Send an APNs test push to an iOS node]' 'camera[Capture camera media from a paired node]' 'screen[Capture screen recordings from a paired node]' 'location[Fetch location from a paired node]'" \ + "*::arg:->args" + + case $state in + (args) + case $line[1] in + (status) _openclaw_nodes_status ;; + (describe) _openclaw_nodes_describe ;; + (list) _openclaw_nodes_list ;; + (pending) _openclaw_nodes_pending ;; + (approve) _openclaw_nodes_approve ;; + (reject) _openclaw_nodes_reject ;; + (remove) _openclaw_nodes_remove ;; + (rename) _openclaw_nodes_rename ;; + (invoke) _openclaw_nodes_invoke ;; + (notify) _openclaw_nodes_notify ;; + (push) _openclaw_nodes_push ;; + (camera) _openclaw_nodes_camera ;; + (screen) _openclaw_nodes_screen ;; + (location) _openclaw_nodes_location ;; + esac + ;; + esac +} + +_openclaw_devices_list() { + _arguments -C \ + "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \ + "--token[Gateway token (if required)]" \ + "--password[Gateway password (password auth)]" \ + "--timeout[Timeout in ms]" \ + "--json[Output JSON]" +} + +_openclaw_devices_remove() { + _arguments -C \ + "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \ + "--token[Gateway token (if required)]" \ + "--password[Gateway password (password auth)]" \ + "--timeout[Timeout in ms]" \ + "--json[Output JSON]" +} + +_openclaw_devices_clear() { + _arguments -C \ + "--pending[Also reject all pending pairing requests]" \ + "--yes[Confirm destructive clear]" \ + "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \ + "--token[Gateway token (if required)]" \ + "--password[Gateway password (password auth)]" \ + "--timeout[Timeout in ms]" \ + "--json[Output JSON]" +} + +_openclaw_devices_approve() { + _arguments -C \ + "--latest[Show the most recent pending request to approve explicitly]" \ + "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \ + "--token[Gateway token (if required)]" \ + "--password[Gateway password (password auth)]" \ + "--timeout[Timeout in ms]" \ + "--json[Output JSON]" +} + +_openclaw_devices_reject() { + _arguments -C \ + "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \ + "--token[Gateway token (if required)]" \ + "--password[Gateway password (password auth)]" \ + "--timeout[Timeout in ms]" \ + "--json[Output JSON]" +} + +_openclaw_devices_rotate() { + _arguments -C \ + "--device[Device id]" \ + "--role[Role name]" \ + "--scope[Scopes to attach to the token (repeatable)]" \ + "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \ + "--token[Gateway token (if required)]" \ + "--password[Gateway password (password auth)]" \ + "--timeout[Timeout in ms]" \ + "--json[Output JSON]" +} + +_openclaw_devices_revoke() { + _arguments -C \ + "--device[Device id]" \ + "--role[Role name]" \ + "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \ + "--token[Gateway token (if required)]" \ + "--password[Gateway password (password auth)]" \ + "--timeout[Timeout in ms]" \ + "--json[Output JSON]" +} + +_openclaw_devices() { + local -a commands + local -a options + + _arguments -C \ + \ + "1: :_values 'command' 'list[List pending and paired devices]' 'remove[Remove a paired device entry]' 'clear[Clear paired devices from the gateway table]' 'approve[Approve a pending device pairing request]' 'reject[Reject a pending device pairing request]' 'rotate[Rotate a device token for a role]' 'revoke[Revoke a device token for a role]'" \ + "*::arg:->args" + + case $state in + (args) + case $line[1] in + (list) _openclaw_devices_list ;; + (remove) _openclaw_devices_remove ;; + (clear) _openclaw_devices_clear ;; + (approve) _openclaw_devices_approve ;; + (reject) _openclaw_devices_reject ;; + (rotate) _openclaw_devices_rotate ;; + (revoke) _openclaw_devices_revoke ;; + esac + ;; + esac +} + +_openclaw_node_run() { + _arguments -C \ + "--host[Gateway host]" \ + "--port[Gateway port]" \ + "--tls[Use TLS for the gateway connection]" \ + "--tls-fingerprint[Expected TLS certificate fingerprint (sha256)]" \ + "--node-id[Override node id (clears pairing token)]" \ + "--display-name[Override node display name]" +} + +_openclaw_node_status() { + _arguments -C \ + "--json[Output JSON]" +} + +_openclaw_node_install() { + _arguments -C \ + "--host[Gateway host]" \ + "--port[Gateway port]" \ + "--tls[Use TLS for the gateway connection]" \ + "--tls-fingerprint[Expected TLS certificate fingerprint (sha256)]" \ + "--node-id[Override node id (clears pairing token)]" \ + "--display-name[Override node display name]" \ + "--runtime[Service runtime (node|bun). Default: node]" \ + "--force[Reinstall/overwrite if already installed]" \ + "--json[Output JSON]" +} + +_openclaw_node_uninstall() { + _arguments -C \ + "--json[Output JSON]" +} + +_openclaw_node_stop() { + _arguments -C \ + "--json[Output JSON]" +} + +_openclaw_node_start() { + _arguments -C \ + "--json[Output JSON]" +} + +_openclaw_node_restart() { + _arguments -C \ + "--json[Output JSON]" +} + +_openclaw_node() { + local -a commands + local -a options + + _arguments -C \ + \ + "1: :_values 'command' 'run[Run the headless node host (foreground)]' 'status[Show node host status]' 'install[Install the node host service (launchd/systemd/schtasks)]' 'uninstall[Uninstall the node host service (launchd/systemd/schtasks)]' 'stop[Stop the node host service (launchd/systemd/schtasks)]' 'start[Start the node host service (launchd/systemd/schtasks)]' 'restart[Restart the node host service (launchd/systemd/schtasks)]'" \ + "*::arg:->args" + + case $state in + (args) + case $line[1] in + (run) _openclaw_node_run ;; + (status) _openclaw_node_status ;; + (install) _openclaw_node_install ;; + (uninstall) _openclaw_node_uninstall ;; + (stop) _openclaw_node_stop ;; + (start) _openclaw_node_start ;; + (restart) _openclaw_node_restart ;; + esac + ;; + esac +} + +_openclaw_sandbox_list() { + _arguments -C \ + "--json[Output result as JSON]" \ + "--browser[List browser containers only]" +} + +_openclaw_sandbox_recreate() { + _arguments -C \ + "--all[Recreate all sandbox containers]" \ + "--session[Recreate container for specific session]" \ + "--agent[Recreate containers for specific agent]" \ + "--browser[Only recreate browser containers]" \ + "--force[Skip confirmation prompt]" +} + +_openclaw_sandbox_explain() { + _arguments -C \ + "--session[Session key to inspect (defaults to agent main)]" \ + "--agent[Agent id to inspect (defaults to derived agent)]" \ + "--json[Output result as JSON]" +} + +_openclaw_sandbox() { + local -a commands + local -a options + + _arguments -C \ + \ + "1: :_values 'command' 'list[List sandbox containers and their status]' 'recreate[Remove containers to force recreation with updated config]' 'explain[Explain effective sandbox/tool policy for a session/agent]'" \ + "*::arg:->args" + + case $state in + (args) + case $line[1] in + (list) _openclaw_sandbox_list ;; + (recreate) _openclaw_sandbox_recreate ;; + (explain) _openclaw_sandbox_explain ;; + esac + ;; + esac +} + +_openclaw_tui() { + _arguments -C \ + "--local[Run against the local embedded agent runtime]" \ + "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \ + "--token[Gateway token (if required)]" \ + "--password[Gateway password (if required)]" \ + "--session[Session key (default: \"main\", or \"global\" when scope is global)]" \ + "--deliver[Deliver assistant replies]" \ + "--thinking[Thinking level override]" \ + "--message[Send an initial message after connecting]" \ + "--timeout-ms[Agent timeout in ms (defaults to agents.defaults.timeoutSeconds)]" \ + "--history-limit[History entries to load]" +} + +_openclaw_cron_status() { + _arguments -C \ + "--json[Output JSON]" \ + "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \ + "--token[Gateway token (if required)]" \ + "--timeout[Timeout in ms]" \ + "--expect-final[Wait for final response (agent)]" +} + +_openclaw_cron_list() { + _arguments -C \ + "--all[Include disabled jobs]" \ + "--agent[Filter by agent id]" \ + "--json[Output JSON]" \ + "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \ + "--token[Gateway token (if required)]" \ + "--timeout[Timeout in ms]" \ + "--expect-final[Wait for final response (agent)]" +} + +_openclaw_cron_add() { + _arguments -C \ + "--name[Job name]" \ + "--description[Optional description]" \ + "--disabled[Create job disabled]" \ + "--delete-after-run[Delete one-shot job after it succeeds]" \ + "--keep-after-run[Keep one-shot job after it succeeds]" \ + "--agent[Agent id for this job]" \ + "--session[Session target (main|isolated)]" \ + "--session-key[Session key for job routing (e.g. agent:my-agent:my-session)]" \ + "--wake[Wake mode (now|next-heartbeat)]" \ + "--at[Run once at time (ISO with offset, or +duration). Use --tz for offset-less datetimes]" \ + "--every[Run every duration (e.g. 10m, 1h)]" \ + "--cron[Cron expression (5-field or 6-field with seconds)]" \ + "--tz[Timezone for cron expressions (IANA; cron default: Gateway host local timezone)]" \ + "--stagger[Cron stagger window (e.g. 30s, 5m)]" \ + "--exact[Disable cron staggering (set stagger to 0)]" \ + "--system-event[System event payload (main session)]" \ + "--message[Agent message payload]" \ + "--command[Command payload run as sh -lc on the Gateway]" \ + "--command-argv[Command payload argv as JSON array of strings]" \ + "--command-cwd[Working directory for command payloads]" \ + "--command-env[Environment override for command payloads (repeatable)]" \ + "--command-input[stdin for command payloads]" \ + "--thinking[Thinking level for agent jobs (off|minimal|low|medium|high|xhigh)]" \ + "--model[Model override for agent jobs (provider/model or alias)]" \ + "--fallbacks[Fallback model list for agent jobs]" \ + "--timeout-seconds[Timeout seconds for agent or command jobs]" \ + "--no-output-timeout-seconds[No-output timeout seconds for command jobs]" \ + "--output-max-bytes[Maximum captured stdout/stderr bytes for command jobs]" \ + "--light-context[Use lightweight bootstrap context for agent jobs]" \ + "--tools[Tool allow-list (e.g. exec,read,write or exec read write)]" \ + "--announce[Fallback-deliver final text to a chat]" \ + "--deliver[Deprecated (use --announce). Fallback-delivers final text to a chat.]" \ + "--no-deliver[Disable runner fallback delivery]" \ + "--webhook[POST the finished payload to a webhook URL]" \ + "--channel[Delivery channel (last|)]" \ + "--to[Delivery destination (E.164, Telegram chatId, or Discord channel/user)]" \ + "--thread-id[Telegram forum topic thread id]" \ + "--account[Channel account id for delivery (multi-account setups)]" \ + "--best-effort-deliver[Do not fail the job if delivery fails]" \ + "--json[Output JSON]" \ + "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \ + "--token[Gateway token (if required)]" \ + "--timeout[Timeout in ms]" \ + "--expect-final[Wait for final response (agent)]" +} + +_openclaw_cron_rm() { + _arguments -C \ + "--json[Output JSON]" \ + "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \ + "--token[Gateway token (if required)]" \ + "--timeout[Timeout in ms]" \ + "--expect-final[Wait for final response (agent)]" +} + +_openclaw_cron_enable() { + _arguments -C \ + "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \ + "--token[Gateway token (if required)]" \ + "--timeout[Timeout in ms]" \ + "--expect-final[Wait for final response (agent)]" +} + +_openclaw_cron_disable() { + _arguments -C \ + "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \ + "--token[Gateway token (if required)]" \ + "--timeout[Timeout in ms]" \ + "--expect-final[Wait for final response (agent)]" +} + +_openclaw_cron_get() { + _arguments -C \ + "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \ + "--token[Gateway token (if required)]" \ + "--timeout[Timeout in ms]" \ + "--expect-final[Wait for final response (agent)]" +} + +_openclaw_cron_show() { + _arguments -C \ + "--json[Output JSON]" \ + "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \ + "--token[Gateway token (if required)]" \ + "--timeout[Timeout in ms]" \ + "--expect-final[Wait for final response (agent)]" +} + +_openclaw_cron_runs() { + _arguments -C \ + "--id[Job id]" \ + "--run-id[Filter by cron run id]" \ + "--limit[Max entries (default 50)]" \ + "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \ + "--token[Gateway token (if required)]" \ + "--timeout[Timeout in ms]" \ + "--expect-final[Wait for final response (agent)]" +} + +_openclaw_cron_run() { + _arguments -C \ + "--due[Run only when due (default behavior in older versions)]" \ + "--wait[Wait for the queued run to finish]" \ + "--wait-timeout[Maximum time to wait for --wait]" \ + "--poll-interval[Polling interval for --wait]" \ + "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \ + "--token[Gateway token (if required)]" \ + "--timeout[Timeout in ms]" \ + "--expect-final[Wait for final response (agent)]" +} + +_openclaw_cron_edit() { + _arguments -C \ + "--name[Set name]" \ + "--description[Set description]" \ + "--enable[Enable job]" \ + "--disable[Disable job]" \ + "--delete-after-run[Delete one-shot job after it succeeds]" \ + "--keep-after-run[Keep one-shot job after it succeeds]" \ + "--session[Session target (main|isolated)]" \ + "--agent[Set agent id]" \ + "--clear-agent[Unset agent and use default]" \ + "--session-key[Set session key for job routing]" \ + "--clear-session-key[Unset session key]" \ + "--wake[Wake mode (now|next-heartbeat)]" \ + "--at[Set one-shot time (ISO, offset-less uses --tz) or duration like 20m]" \ + "--every[Set interval duration like 10m]" \ + "--cron[Set cron expression]" \ + "--tz[Timezone for cron expressions (IANA; cron default: Gateway host local timezone)]" \ + "--stagger[Cron stagger window (e.g. 30s, 5m)]" \ + "--exact[Disable cron staggering (set stagger to 0)]" \ + "--system-event[Set systemEvent payload]" \ + "--message[Set agentTurn payload message]" \ + "--command[Set command payload run as sh -lc on the Gateway]" \ + "--command-argv[Set command payload argv as JSON array of strings]" \ + "--command-cwd[Set command payload working directory]" \ + "--command-env[Set command payload environment overrides (repeatable)]" \ + "--command-input[Set command payload stdin]" \ + "--thinking[Thinking level for agent jobs (off|minimal|low|medium|high|xhigh)]" \ + "--model[Model override for agent jobs]" \ + "--fallbacks[Fallback model list for agent jobs]" \ + "--clear-fallbacks[Remove per-job fallback override]" \ + "--clear-model[Remove the per-job model override (restore normal cron model precedence)]" \ + "--timeout-seconds[Timeout seconds for agent or command jobs]" \ + "--no-output-timeout-seconds[No-output timeout seconds for command jobs]" \ + "--output-max-bytes[Maximum captured stdout/stderr bytes for command jobs]" \ + "--light-context[Enable lightweight bootstrap context for agent jobs]" \ + "--no-light-context[Disable lightweight bootstrap context for agent jobs]" \ + "--tools[Tool allow-list (e.g. exec,read,write or exec read write)]" \ + "--clear-tools[Remove tool allow-list (use all tools)]" \ + "--announce[Fallback-deliver final text to a chat]" \ + "--deliver[Deprecated (use --announce). Fallback-delivers final text to a chat.]" \ + "--no-deliver[Disable runner fallback delivery]" \ + "--webhook[POST the finished payload to a webhook URL]" \ + "--channel[Delivery channel (last|)]" \ + "--to[Delivery destination (E.164, Telegram chatId, or Discord channel/user)]" \ + "--thread-id[Telegram forum topic thread id]" \ + "--account[Channel account id for delivery (multi-account setups)]" \ + "--clear-channel[Unset the delivery channel]" \ + "--clear-to[Unset the delivery destination]" \ + "--clear-thread-id[Unset the Telegram forum topic thread id]" \ + "--clear-account[Unset the per-job delivery account override]" \ + "--best-effort-deliver[Do not fail job if delivery fails (also implies --announce when used alone)]" \ + "--no-best-effort-deliver[Fail job when delivery fails]" \ + "--failure-alert[Enable failure alerts for this job]" \ + "--no-failure-alert[Disable failure alerts for this job]" \ + "--failure-alert-after[Alert after N consecutive job errors]" \ + "--failure-alert-channel[Failure alert channel (last|)]" \ + "--failure-alert-to[Failure alert destination]" \ + "--failure-alert-cooldown[Minimum time between alerts (e.g. 1h, 30m)]" \ + "--failure-alert-include-skipped[Count consecutive skipped runs toward alerts]" \ + "--failure-alert-exclude-skipped[Alert only on execution errors]" \ + "--failure-alert-mode[Failure alert delivery mode (announce or webhook)]" \ + "--failure-alert-account-id[Account ID for failure alert channel (multi-account setups)]" \ + "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \ + "--token[Gateway token (if required)]" \ + "--timeout[Timeout in ms]" \ + "--expect-final[Wait for final response (agent)]" +} + +_openclaw_cron() { + local -a commands + local -a options + + _arguments -C \ + \ + "1: :_values 'command' 'status[Show cron scheduler status]' 'list[List cron jobs]' 'add[Add a cron job]' 'rm[Remove a cron job]' 'enable[Enable a cron job]' 'disable[Disable a cron job]' 'get[Get a cron job as JSON]' 'show[Show a cron job]' 'runs[Show cron run history]' 'run[Run a cron job now (debug)]' 'edit[Edit a cron job (patch fields)]'" \ + "*::arg:->args" + + case $state in + (args) + case $line[1] in + (status) _openclaw_cron_status ;; + (list) _openclaw_cron_list ;; + (add) _openclaw_cron_add ;; + (rm) _openclaw_cron_rm ;; + (enable) _openclaw_cron_enable ;; + (disable) _openclaw_cron_disable ;; + (get) _openclaw_cron_get ;; + (show) _openclaw_cron_show ;; + (runs) _openclaw_cron_runs ;; + (run) _openclaw_cron_run ;; + (edit) _openclaw_cron_edit ;; + esac + ;; + esac +} + +_openclaw_dns_setup() { + _arguments -C \ + "--domain[Wide-area discovery domain (e.g. openclaw.internal)]" \ + "--apply[Install/update CoreDNS config and (re)start the service (requires sudo)]" +} + +_openclaw_dns() { + local -a commands + local -a options + + _arguments -C \ + \ + "1: :_values 'command' 'setup[Set up CoreDNS to serve your discovery domain for unicast DNS-SD (Wide-Area Bonjour)]'" \ + "*::arg:->args" + + case $state in + (args) + case $line[1] in + (setup) _openclaw_dns_setup ;; + esac + ;; + esac +} + +_openclaw_docs() { + _arguments -C \ + +} + +_openclaw_proxy_start() { + _arguments -C \ + "--host[Bind host]" \ + "--port[Bind port]" +} + +_openclaw_proxy_run() { + _arguments -C \ + "--host[Bind host]" \ + "--port[Bind port]" +} + +_openclaw_proxy_validate() { + _arguments -C \ + "--json[Print machine-readable JSON]" \ + "--proxy-url[Proxy URL to validate instead of config/env]" \ + "--proxy-ca-file[CA bundle file for verifying an HTTPS proxy endpoint]" \ + "--allowed-url[Destination expected to succeed through the proxy]" \ + "--denied-url[Destination expected to be blocked by the proxy]" \ + "--apns-reachable[Also verify sandbox APNs HTTP/2 is reachable through the proxy]" \ + "--apns-authority[APNs authority to probe with --apns-reachable]" \ + "--timeout-ms[Per-request timeout in milliseconds]" +} + +_openclaw_proxy_coverage() { + _arguments -C \ + +} + +_openclaw_proxy_sessions() { + _arguments -C \ + "--limit[Maximum sessions to show]" +} + +_openclaw_proxy_query() { + _arguments -C \ + "--preset[Query preset: double-sends, retry-storms, cache-busting, ws-duplicate-frames, missing-ack, error-bursts]" \ + "--session[Restrict to a capture session id]" +} + +_openclaw_proxy_blob() { + _arguments -C \ + "--id[Blob id]" +} + +_openclaw_proxy_purge() { + _arguments -C \ + +} + +_openclaw_proxy() { + local -a commands + local -a options + + _arguments -C \ + \ + "1: :_values 'command' 'start[Start the local explicit debug proxy]' 'run[Run a child command with OpenClaw debug proxy capture enabled]' 'validate[Validate the operator-managed network proxy]' 'coverage[Report current debug proxy transport coverage and remaining gaps]' 'sessions[List recent capture sessions]' 'query[Run a built-in query preset against captured traffic]' 'blob[Read a captured payload blob by id]' 'purge[Delete all captured traffic metadata and blobs]'" \ + "*::arg:->args" + + case $state in + (args) + case $line[1] in + (start) _openclaw_proxy_start ;; + (run) _openclaw_proxy_run ;; + (validate) _openclaw_proxy_validate ;; + (coverage) _openclaw_proxy_coverage ;; + (sessions) _openclaw_proxy_sessions ;; + (query) _openclaw_proxy_query ;; + (blob) _openclaw_proxy_blob ;; + (purge) _openclaw_proxy_purge ;; + esac + ;; + esac +} + +_openclaw_hooks_list() { + _arguments -C \ + "--eligible[Show only eligible hooks]" \ + "--json[Output as JSON]" \ + "(--verbose -v)"{--verbose,-v}"[Show more details including missing requirements]" +} + +_openclaw_hooks_info() { + _arguments -C \ + "--json[Output as JSON]" +} + +_openclaw_hooks_check() { + _arguments -C \ + "--json[Output as JSON]" +} + +_openclaw_hooks_enable() { + _arguments -C \ + +} + +_openclaw_hooks_disable() { + _arguments -C \ + +} + +_openclaw_hooks_relay() { + _arguments -C \ + "--provider[Native harness provider]" \ + "--relay-id[Native hook relay id]" \ + "--generation[Native hook relay registration generation]" \ + "--event[Native hook event]" \ + "--pre-tool-use-unavailable[PreToolUse fallback mode when the originating relay is unavailable]" \ + "--timeout[Gateway timeout in ms]" +} + +_openclaw_hooks_install() { + _arguments -C \ + "(--link -l)"{--link,-l}"[Link a local path instead of copying]" \ + "--pin[Record npm installs as exact resolved @]" +} + +_openclaw_hooks_update() { + _arguments -C \ + "--all[Update all tracked hooks]" \ + "--dry-run[Show what would change without writing]" +} + +_openclaw_hooks() { + local -a commands + local -a options + + _arguments -C \ + \ + "1: :_values 'command' 'list[List all hooks]' 'info[Show detailed information about a hook]' 'check[Check hooks eligibility status]' 'enable[Enable a hook]' 'disable[Disable a hook]' 'relay[Internal native harness hook relay]' 'install[Deprecated: install a hook pack via `openclaw plugins install`]' 'update[Deprecated: update hook packs via `openclaw plugins update`]'" \ + "*::arg:->args" + + case $state in + (args) + case $line[1] in + (list) _openclaw_hooks_list ;; + (info) _openclaw_hooks_info ;; + (check) _openclaw_hooks_check ;; + (enable) _openclaw_hooks_enable ;; + (disable) _openclaw_hooks_disable ;; + (relay) _openclaw_hooks_relay ;; + (install) _openclaw_hooks_install ;; + (update) _openclaw_hooks_update ;; + esac + ;; + esac +} + +_openclaw_webhooks_gmail_setup() { + _arguments -C \ + "--account[Gmail account to watch]" \ + "--project[GCP project id (OAuth client owner)]" \ + "--topic[Pub/Sub topic name]" \ + "--subscription[Pub/Sub subscription name]" \ + "--label[Gmail label to watch]" \ + "--hook-url[OpenClaw hook URL]" \ + "--hook-token[OpenClaw hook token]" \ + "--push-token[Push token for gog watch serve]" \ + "--bind[gog watch serve bind host]" \ + "--port[gog watch serve port]" \ + "--path[gog watch serve path]" \ + "--include-body[Include email body snippets]" \ + "--max-bytes[Max bytes for body snippets]" \ + "--renew-minutes[Renew watch every N minutes]" \ + "--tailscale[Expose push endpoint via tailscale (funnel|serve|off)]" \ + "--tailscale-path[Path for tailscale serve/funnel]" \ + "--tailscale-target[Tailscale serve/funnel target (port, host:port, or URL)]" \ + "--push-endpoint[Explicit Pub/Sub push endpoint]" \ + "--json[Output JSON summary]" +} + +_openclaw_webhooks_gmail_run() { + _arguments -C \ + "--account[Gmail account to watch]" \ + "--topic[Pub/Sub topic path (projects/.../topics/..)]" \ + "--subscription[Pub/Sub subscription name]" \ + "--label[Gmail label to watch]" \ + "--hook-url[OpenClaw hook URL]" \ + "--hook-token[OpenClaw hook token]" \ + "--push-token[Push token for gog watch serve]" \ + "--bind[gog watch serve bind host]" \ + "--port[gog watch serve port]" \ + "--path[gog watch serve path]" \ + "--include-body[Include email body snippets]" \ + "--max-bytes[Max bytes for body snippets]" \ + "--renew-minutes[Renew watch every N minutes]" \ + "--tailscale[Expose push endpoint via tailscale (funnel|serve|off)]" \ + "--tailscale-path[Path for tailscale serve/funnel]" \ + "--tailscale-target[Tailscale serve/funnel target (port, host:port, or URL)]" +} + +_openclaw_webhooks_gmail() { + local -a commands + local -a options + + _arguments -C \ + \ + "1: :_values 'command' 'setup[Configure Gmail watch + Pub/Sub + OpenClaw hooks]' 'run[Run gog watch serve + auto-renew loop]'" \ + "*::arg:->args" + + case $state in + (args) + case $line[1] in + (setup) _openclaw_webhooks_gmail_setup ;; + (run) _openclaw_webhooks_gmail_run ;; + esac + ;; + esac +} + +_openclaw_webhooks() { + local -a commands + local -a options + + _arguments -C \ + \ + "1: :_values 'command' 'gmail[Gmail Pub/Sub hooks (via gogcli)]'" \ + "*::arg:->args" + + case $state in + (args) + case $line[1] in + (gmail) _openclaw_webhooks_gmail ;; + esac + ;; + esac +} + +_openclaw_qr() { + _arguments -C \ + "--remote[Use gateway.remote.url and gateway.remote token/password (ignores device-pair publicUrl)]" \ + "--url[Override gateway URL used in the setup payload]" \ + "--public-url[Override gateway public URL used in the setup payload]" \ + "--token[Override gateway token for setup payload]" \ + "--password[Override gateway password for setup payload]" \ + "--setup-code-only[Print only the setup code]" \ + "--no-ascii[Skip ASCII QR rendering]" \ + "--json[Output JSON]" +} + +_openclaw_clawbot_qr() { + _arguments -C \ + "--remote[Use gateway.remote.url and gateway.remote token/password (ignores device-pair publicUrl)]" \ + "--url[Override gateway URL used in the setup payload]" \ + "--public-url[Override gateway public URL used in the setup payload]" \ + "--token[Override gateway token for setup payload]" \ + "--password[Override gateway password for setup payload]" \ + "--setup-code-only[Print only the setup code]" \ + "--no-ascii[Skip ASCII QR rendering]" \ + "--json[Output JSON]" +} + +_openclaw_clawbot() { + local -a commands + local -a options + + _arguments -C \ + \ + "1: :_values 'command' 'qr[Generate a mobile pairing QR code and setup code]'" \ + "*::arg:->args" + + case $state in + (args) + case $line[1] in + (qr) _openclaw_clawbot_qr ;; + esac + ;; + esac +} + +_openclaw_pairing_list() { + _arguments -C \ + "--channel[Channel ()]" \ + "--account[Account id (for multi-account channels)]" \ + "--json[Print JSON]" +} + +_openclaw_pairing_approve() { + _arguments -C \ + "--channel[Channel ()]" \ + "--account[Account id (for multi-account channels)]" \ + "--notify[Notify the requester on the same channel]" +} + +_openclaw_pairing() { + local -a commands + local -a options + + _arguments -C \ + \ + "1: :_values 'command' 'list[List pending pairing requests]' 'approve[Approve a pairing code and allow that sender]'" \ + "*::arg:->args" + + case $state in + (args) + case $line[1] in + (list) _openclaw_pairing_list ;; + (approve) _openclaw_pairing_approve ;; + esac + ;; + esac +} + +_openclaw_plugins_list() { + _arguments -C \ + "--json[Print JSON]" \ + "--enabled[Only show enabled plugins]" \ + "--verbose[Show detailed entries]" +} + +_openclaw_plugins_search() { + _arguments -C \ + "--limit[Max results]" \ + "--json[Print JSON]" +} + +_openclaw_plugins_inspect() { + _arguments -C \ + "--all[Inspect all plugins]" \ + "--runtime[Load plugin runtime for hooks/tools/diagnostics]" \ + "--json[Print JSON]" +} + +_openclaw_plugins_enable() { + _arguments -C \ + +} + +_openclaw_plugins_disable() { + _arguments -C \ + +} + +_openclaw_plugins_uninstall() { + _arguments -C \ + "--keep-files[Keep installed files on disk]" \ + "--keep-config[Deprecated alias for --keep-files]" \ + "--force[Skip confirmation prompt]" \ + "--dry-run[Show what would be removed without making changes]" +} + +_openclaw_plugins_install() { + _arguments -C \ + "(--link -l)"{--link,-l}"[Link a local path instead of copying]" \ + "--force[Overwrite an existing installed plugin or hook pack]" \ + "--pin[Record npm installs as exact resolved @]" \ + "--dangerously-force-unsafe-install[Deprecated no-op; security.installPolicy may still block]" \ + "--marketplace[Install a Claude marketplace plugin from a local repo/path or git/GitHub source]" +} + +_openclaw_plugins_update() { + _arguments -C \ + "--all[Update all tracked plugins and hook packs]" \ + "--dry-run[Show what would change without writing]" \ + "--dangerously-force-unsafe-install[Deprecated no-op; security.installPolicy may still block]" +} + +_openclaw_plugins_registry() { + _arguments -C \ + "--json[Print JSON]" \ + "--refresh[Rebuild the persisted registry from current plugin manifests]" +} + +_openclaw_plugins_doctor() { + _arguments -C \ + +} + +_openclaw_plugins_build() { + _arguments -C \ + "--root[Plugin package root]" \ + "--entry[Plugin entry module relative to --root]" \ + "--check[Fail if generated metadata is out of date]" +} + +_openclaw_plugins_validate() { + _arguments -C \ + "--root[Plugin package root]" \ + "--entry[Plugin entry module relative to --root]" +} + +_openclaw_plugins_init() { + _arguments -C \ + "--directory[Output directory]" \ + "--name[Display name]" \ + "--force[Overwrite an existing output directory]" +} + +_openclaw_plugins_marketplace_list() { + _arguments -C \ + "--json[Print JSON]" +} + +_openclaw_plugins_marketplace() { + local -a commands + local -a options + + _arguments -C \ + \ + "1: :_values 'command' 'list[List plugins published by a marketplace source]'" \ + "*::arg:->args" + + case $state in + (args) + case $line[1] in + (list) _openclaw_plugins_marketplace_list ;; + esac + ;; + esac +} + +_openclaw_plugins() { + local -a commands + local -a options + + _arguments -C \ + \ + "1: :_values 'command' 'list[List discovered plugins]' 'search[Search ClawHub plugin packages]' 'inspect[Inspect plugin details]' 'enable[Enable a plugin in config]' 'disable[Disable a plugin in config]' 'uninstall[Uninstall a plugin]' 'install[Install a plugin or hook pack (path, archive, npm spec, git repo, clawhub:package, or marketplace entry)]' 'update[Update installed plugins and tracked hook packs]' 'registry[Inspect or rebuild the persisted plugin registry]' 'doctor[Report plugin load issues]' 'build[Generate simple tool plugin metadata]' 'validate[Validate simple tool plugin metadata]' 'init[Create a simple tool plugin project]' 'marketplace[Inspect Claude-compatible plugin marketplaces]'" \ + "*::arg:->args" + + case $state in + (args) + case $line[1] in + (list) _openclaw_plugins_list ;; + (search) _openclaw_plugins_search ;; + (inspect) _openclaw_plugins_inspect ;; + (enable) _openclaw_plugins_enable ;; + (disable) _openclaw_plugins_disable ;; + (uninstall) _openclaw_plugins_uninstall ;; + (install) _openclaw_plugins_install ;; + (update) _openclaw_plugins_update ;; + (registry) _openclaw_plugins_registry ;; + (doctor) _openclaw_plugins_doctor ;; + (build) _openclaw_plugins_build ;; + (validate) _openclaw_plugins_validate ;; + (init) _openclaw_plugins_init ;; + (marketplace) _openclaw_plugins_marketplace ;; + esac + ;; + esac +} + +_openclaw_channels_list() { + _arguments -C \ + "--all[Include bundled and installable catalog channels]" \ + "--json[Output JSON]" +} + +_openclaw_channels_status() { + _arguments -C \ + "--channel[Only show one channel (all|telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|feishu|nostr|msteams|mattermost|nextcloud-talk|matrix|raft|line|zalo|clickclack|zalouser|sms|synology-chat|tlon|qa-channel|qqbot|twitch)]" \ + "--probe[Probe channel credentials]" \ + "--timeout[Timeout in ms]" \ + "--json[Output JSON]" +} + +_openclaw_channels_capabilities() { + _arguments -C \ + "--channel[Channel (all|telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|feishu|nostr|msteams|mattermost|nextcloud-talk|matrix|raft|line|zalo|clickclack|zalouser|sms|synology-chat|tlon|qa-channel|qqbot|twitch)]" \ + "--account[Account id (only with --channel)]" \ + "--target[Channel target for permission audit (Discord channel:)]" \ + "--timeout[Timeout in ms]" \ + "--json[Output JSON]" +} + +_openclaw_channels_resolve() { + _arguments -C \ + "--channel[Channel (telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|feishu|nostr|msteams|mattermost|nextcloud-talk|matrix|raft|line|zalo|clickclack|zalouser|sms|synology-chat|tlon|qa-channel|qqbot|twitch)]" \ + "--account[Account id (accountId)]" \ + "--kind[Target kind (auto|user|group)]" \ + "--json[Output JSON]" +} + +_openclaw_channels_logs() { + _arguments -C \ + "--channel[Channel (all|telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|feishu|nostr|msteams|mattermost|nextcloud-talk|matrix|raft|line|zalo|clickclack|zalouser|sms|synology-chat|tlon|qa-channel|qqbot|twitch)]" \ + "--lines[Number of lines (default: 200)]" \ + "--json[Output JSON]" +} + +_openclaw_channels_add() { + _arguments -C \ + "--channel[Channel (telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|feishu|nostr|msteams|mattermost|nextcloud-talk|matrix|raft|line|zalo|clickclack|zalouser|sms|synology-chat|tlon|qa-channel|qqbot|twitch)]" \ + "--account[Account id (default when omitted)]" \ + "--name[Display name for this account]" \ + "--token[Channel token or credential payload]" \ + "--token-file[Read channel token or credential payload from file]" \ + "--secret[Channel shared secret]" \ + "--secret-file[Read channel shared secret from file]" \ + "--bot-token[Bot token]" \ + "--app-token[App token]" \ + "--password[Channel password or login secret]" \ + "--cli-path[Channel CLI path]" \ + "--url[Channel setup URL]" \ + "--base-url[Channel base URL]" \ + "--http-url[Channel HTTP service URL]" \ + "--auth-dir[Channel auth directory override]" \ + "--use-env[Use env-backed credentials when supported]" \ + "--db-path[iMessage database path]" \ + "--service[iMessage service (imessage|sms|auto)]" \ + "--region[iMessage region (for SMS)]" +} + +_openclaw_channels_remove() { + _arguments -C \ + "--channel[Channel (telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|feishu|nostr|msteams|mattermost|nextcloud-talk|matrix|raft|line|zalo|clickclack|zalouser|sms|synology-chat|tlon|qa-channel|qqbot|twitch)]" \ + "--account[Account id (default when omitted)]" \ + "--delete[Delete config entries (no prompt)]" +} + +_openclaw_channels_login() { + _arguments -C \ + "--channel[Channel alias (auto when only one is configured)]" \ + "--account[Account id (accountId)]" \ + "--verbose[Verbose connection logs]" +} + +_openclaw_channels_logout() { + _arguments -C \ + "--channel[Channel alias (auto when only one is configured)]" \ + "--account[Account id (accountId)]" +} + +_openclaw_channels() { + local -a commands + local -a options + + _arguments -C \ + \ + "1: :_values 'command' 'list[List chat channels (configured by default; pass --all for installable catalog)]' 'status[Show gateway channel status (use status --deep for local)]' 'capabilities[Show provider capabilities (intents/scopes + supported features)]' 'resolve[Resolve channel/user names to IDs]' 'logs[Show recent channel logs from the gateway log file]' 'add[Add or update a channel account]' 'remove[Disable or delete a channel account]' 'login[Link a channel account (if supported)]' 'logout[Log out of a channel session (if supported)]'" \ + "*::arg:->args" + + case $state in + (args) + case $line[1] in + (list) _openclaw_channels_list ;; + (status) _openclaw_channels_status ;; + (capabilities) _openclaw_channels_capabilities ;; + (resolve) _openclaw_channels_resolve ;; + (logs) _openclaw_channels_logs ;; + (add) _openclaw_channels_add ;; + (remove) _openclaw_channels_remove ;; + (login) _openclaw_channels_login ;; + (logout) _openclaw_channels_logout ;; + esac + ;; + esac +} + +_openclaw_directory_self() { + _arguments -C \ + "--channel[Channel (auto when only one is configured)]" \ + "--account[Account id (accountId)]" \ + "--json[Output JSON]" +} + +_openclaw_directory_peers_list() { + _arguments -C \ + "--channel[Channel (auto when only one is configured)]" \ + "--account[Account id (accountId)]" \ + "--json[Output JSON]" \ + "--query[Optional search query]" \ + "--limit[Limit results]" +} + +_openclaw_directory_peers() { + local -a commands + local -a options + + _arguments -C \ + \ + "1: :_values 'command' 'list[List peers]'" \ + "*::arg:->args" + + case $state in + (args) + case $line[1] in + (list) _openclaw_directory_peers_list ;; + esac + ;; + esac +} + +_openclaw_directory_groups_list() { + _arguments -C \ + "--channel[Channel (auto when only one is configured)]" \ + "--account[Account id (accountId)]" \ + "--json[Output JSON]" \ + "--query[Optional search query]" \ + "--limit[Limit results]" +} + +_openclaw_directory_groups_members() { + _arguments -C \ + "--group-id[Group id]" \ + "--channel[Channel (auto when only one is configured)]" \ + "--account[Account id (accountId)]" \ + "--json[Output JSON]" \ + "--limit[Limit results]" +} + +_openclaw_directory_groups() { + local -a commands + local -a options + + _arguments -C \ + \ + "1: :_values 'command' 'list[List groups]' 'members[List group members]'" \ + "*::arg:->args" + + case $state in + (args) + case $line[1] in + (list) _openclaw_directory_groups_list ;; + (members) _openclaw_directory_groups_members ;; + esac + ;; + esac +} + +_openclaw_directory() { + local -a commands + local -a options + + _arguments -C \ + \ + "1: :_values 'command' 'self[Show the current account user]' 'peers[Peer directory (contacts/users)]' 'groups[Group directory]'" \ + "*::arg:->args" + + case $state in + (args) + case $line[1] in + (self) _openclaw_directory_self ;; + (peers) _openclaw_directory_peers ;; + (groups) _openclaw_directory_groups ;; + esac + ;; + esac +} + +_openclaw_security_audit() { + _arguments -C \ + "--deep[Attempt live Gateway probes and plugin-owned collector checks]" \ + "--auth[Runtime gateway auth mode (\"none\"|\"token\"|\"password\"|\"trusted-proxy\")]" \ + "--token[Use explicit gateway token for deep probe auth]" \ + "--password[Use explicit gateway password for deep probe auth]" \ + "--fix[Apply safe fixes (tighten defaults + chmod state/config)]" \ + "--json[Print JSON]" +} + +_openclaw_security() { + local -a commands + local -a options + + _arguments -C \ + \ + "1: :_values 'command' 'audit[Audit config + local state for common security foot-guns]'" \ + "*::arg:->args" + + case $state in + (args) + case $line[1] in + (audit) _openclaw_security_audit ;; + esac + ;; + esac +} + +_openclaw_secrets_reload() { + _arguments -C \ + "--json[Output JSON]" \ + "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \ + "--token[Gateway token (if required)]" \ + "--timeout[Timeout in ms]" \ + "--expect-final[Wait for final response (agent)]" +} + +_openclaw_secrets_audit() { + _arguments -C \ + "--check[Exit non-zero when findings are present]" \ + "--allow-exec[Allow exec SecretRef resolution during audit (may execute provider commands)]" \ + "--json[Output JSON]" +} + +_openclaw_secrets_configure() { + _arguments -C \ + "--apply[Apply changes immediately after preflight]" \ + "--yes[Skip apply confirmation prompt]" \ + "--providers-only[Configure secrets.providers only, skip credential mapping]" \ + "--skip-provider-setup[Skip provider setup and only map credential fields to existing providers]" \ + "--agent[Agent id for auth-profiles targets (default: configured default agent)]" \ + "--allow-exec[Allow exec SecretRef preflight checks (may execute provider commands)]" \ + "--plan-out[Write generated plan JSON to a file]" \ + "--json[Output JSON]" +} + +_openclaw_secrets_apply() { + _arguments -C \ + "--from[Path to plan JSON]" \ + "--dry-run[Validate/preflight only]" \ + "--allow-exec[Allow exec SecretRef checks (may execute provider commands)]" \ + "--json[Output JSON]" +} + +_openclaw_secrets() { + local -a commands + local -a options + + _arguments -C \ + \ + "1: :_values 'command' 'reload[Re-resolve secret references and atomically swap runtime snapshot]' 'audit[Audit plaintext secrets, unresolved refs, and precedence drift]' 'configure[Interactive secrets helper (provider setup + SecretRef mapping + preflight)]' 'apply[Apply a previously generated secrets plan]'" \ + "*::arg:->args" + + case $state in + (args) + case $line[1] in + (reload) _openclaw_secrets_reload ;; + (audit) _openclaw_secrets_audit ;; + (configure) _openclaw_secrets_configure ;; + (apply) _openclaw_secrets_apply ;; + esac + ;; + esac +} + +_openclaw_skills_search() { + _arguments -C \ + "--limit[Max results]" \ + "--json[Output as JSON]" +} + +_openclaw_skills_install() { + _arguments -C \ + "--version[Install a specific version]" \ + "--force[Overwrite an existing workspace skill]" \ + "--force-install[Install a pending GitHub-backed skill before ClawHub scan completes]" \ + "--global[Install into the shared managed skills directory]" \ + "--agent[Target agent workspace (defaults to cwd-inferred, then default agent)]" \ + "--as[Install a git/local skill under this slug]" +} + +_openclaw_skills_update() { + _arguments -C \ + "--all[Update all tracked ClawHub skills]" \ + "--force-install[Install a pending GitHub-backed skill before ClawHub scan completes]" \ + "--global[Update skills in the shared managed skills directory]" \ + "--agent[Target agent workspace (defaults to cwd-inferred, then default agent)]" +} + +_openclaw_skills_verify() { + _arguments -C \ + "--version[Verify a specific version]" \ + "--tag[Verify a dist tag]" \ + "--card[Print the generated Skill Card Markdown]" \ + "--global[Resolve installed skill metadata from the shared managed skills directory]" \ + "--agent[Target agent workspace (defaults to cwd-inferred, then default agent)]" +} + +_openclaw_skills_workshop_list() { + _arguments -C \ + "--json[Output as JSON]" +} + +_openclaw_skills_workshop_inspect() { + _arguments -C \ + "--json[Output as JSON]" +} + +_openclaw_skills_workshop_propose_create() { + _arguments -C \ + "--name[Skill name]" \ + "--description[Skill description]" \ + "--proposal[Path to PROPOSAL.md draft content]" \ + "--proposal-dir[Path to proposal directory with PROPOSAL.md and UTF-8 text support files]" \ + "--goal[Proposal or improvement goal]" \ + "--evidence[Evidence or notes for the proposal]" \ + "--json[Output as JSON]" +} + +_openclaw_skills_workshop_propose_update() { + _arguments -C \ + "--proposal[Path to PROPOSAL.md draft content]" \ + "--proposal-dir[Path to proposal directory with PROPOSAL.md and UTF-8 text support files]" \ + "--description[Concise proposal description]" \ + "--goal[Proposal or improvement goal]" \ + "--evidence[Evidence or notes for the proposal]" \ + "--json[Output as JSON]" +} + +_openclaw_skills_workshop_revise() { + _arguments -C \ + "--proposal[Path to revised PROPOSAL.md draft content]" \ + "--proposal-dir[Path to revised proposal directory with PROPOSAL.md and UTF-8 text support files]" \ + "--description[Replacement proposal description]" \ + "--goal[Replacement research or improvement goal]" \ + "--evidence[Replacement evidence or notes for the proposal]" \ + "--json[Output as JSON]" +} + +_openclaw_skills_workshop_apply() { + _arguments -C \ + "--json[Output as JSON]" +} + +_openclaw_skills_workshop_reject() { + _arguments -C \ + "--reason[Reason for rejection]" \ + "--json[Output as JSON]" +} + +_openclaw_skills_workshop_quarantine() { + _arguments -C \ + "--reason[Reason for quarantine]" \ + "--json[Output as JSON]" +} + +_openclaw_skills_workshop() { + local -a commands + local -a options + + _arguments -C \ + "--agent[Target agent workspace (defaults to cwd-inferred, then default agent)]" \ + "1: :_values 'command' 'list[List pending and completed skill proposals]' 'inspect[Inspect a skill proposal]' 'propose-create[Create a pending proposal for a new workspace skill]' 'propose-update[Create a pending proposal for an existing workspace skill]' 'revise[Revise a pending skill proposal]' 'apply[Apply a pending skill proposal]' 'reject[Reject a pending skill proposal]' 'quarantine[Quarantine a skill proposal]'" \ + "*::arg:->args" + + case $state in + (args) + case $line[1] in + (list) _openclaw_skills_workshop_list ;; + (inspect) _openclaw_skills_workshop_inspect ;; + (propose-create) _openclaw_skills_workshop_propose_create ;; + (propose-update) _openclaw_skills_workshop_propose_update ;; + (revise) _openclaw_skills_workshop_revise ;; + (apply) _openclaw_skills_workshop_apply ;; + (reject) _openclaw_skills_workshop_reject ;; + (quarantine) _openclaw_skills_workshop_quarantine ;; + esac + ;; + esac +} + +_openclaw_skills_list() { + _arguments -C \ + "--json[Output as JSON]" \ + "--eligible[Show only eligible (ready to use) skills]" \ + "(--verbose -v)"{--verbose,-v}"[Show more details including missing requirements]" \ + "--agent[Target agent workspace (defaults to cwd-inferred, then default agent)]" +} + +_openclaw_skills_info() { + _arguments -C \ + "--json[Output as JSON]" \ + "--agent[Target agent workspace (defaults to cwd-inferred, then default agent)]" +} + +_openclaw_skills_check() { + _arguments -C \ + "--agent[Target agent workspace (defaults to cwd-inferred, then default agent)]" \ + "--json[Output as JSON]" +} + +_openclaw_skills() { + local -a commands + local -a options + + _arguments -C \ + "--agent[Target agent workspace (defaults to cwd-inferred, then default agent)]" \ + "1: :_values 'command' 'search[Search ClawHub skills]' 'install[Install a skill from ClawHub, git, or a local directory]' 'update[Update ClawHub-installed skills in the active or shared managed directory]' 'verify[Verify a ClawHub skill with ClawHub]' 'workshop[Manage pending skill proposals]' 'list[List all available skills]' 'info[Show detailed information about a skill]' 'check[Check which skills are ready, visible, or missing requirements]'" \ + "*::arg:->args" + + case $state in + (args) + case $line[1] in + (search) _openclaw_skills_search ;; + (install) _openclaw_skills_install ;; + (update) _openclaw_skills_update ;; + (verify) _openclaw_skills_verify ;; + (workshop) _openclaw_skills_workshop ;; + (list) _openclaw_skills_list ;; + (info) _openclaw_skills_info ;; + (check) _openclaw_skills_check ;; + esac + ;; + esac +} + +_openclaw_update_repair() { + _arguments -C \ + "--json[Output result as JSON]" \ + "--channel[Persist update channel before repair]" \ + "--timeout[Timeout for update repair steps in seconds (default: 1800)]" \ + "--yes[Skip confirmation prompts (non-interactive)]" \ + "--no-restart[Accepted for update command parity; repair never restarts]" +} + +_openclaw_update_finalize() { + _arguments -C \ + "--json[Output result as JSON]" \ + "--channel[Persist update channel before repair]" \ + "--timeout[Timeout for update repair steps in seconds (default: 1800)]" \ + "--yes[Skip confirmation prompts (non-interactive)]" \ + "--no-restart[Accepted for update command parity; repair never restarts]" +} + +_openclaw_update_wizard() { + _arguments -C \ + "--timeout[Timeout for each update step in seconds (default: 1800)]" +} + +_openclaw_update_status() { + _arguments -C \ + "--json[Output result as JSON]" \ + "--timeout[Timeout for update checks in seconds (default: 3)]" +} + +_openclaw_update() { + local -a commands + local -a options + + _arguments -C \ + "--json[Output result as JSON]" \ + "--no-restart[Skip restarting the gateway service after a successful update]" \ + "--dry-run[Preview update actions without making changes]" \ + "--channel[Persist update channel (git + npm)]" \ + "--tag[Override the package target for this update (dist-tag, version, or package spec)]" \ + "--timeout[Timeout for each update step in seconds (default: 1800)]" \ + "--yes[Skip confirmation prompts (non-interactive)]" \ + "1: :_values 'command' 'repair[Repair post-update doctor and plugin convergence]' 'finalize[Repair post-update doctor and plugin convergence]' 'wizard[Interactive update wizard]' 'status[Show update channel and version status]'" \ + "*::arg:->args" + + case $state in + (args) + case $line[1] in + (repair) _openclaw_update_repair ;; + (finalize) _openclaw_update_finalize ;; + (wizard) _openclaw_update_wizard ;; + (status) _openclaw_update_status ;; + esac + ;; + esac +} + + +_openclaw_register_completion() { + if (( ! $+functions[compdef] )); then + return 0 + fi + + compdef _openclaw_root_completion openclaw + precmd_functions=(${precmd_functions:#_openclaw_register_completion}) + unfunction _openclaw_register_completion 2>/dev/null +} + +_openclaw_register_completion +if (( ! $+functions[compdef] )); then + typeset -ga precmd_functions + if [[ -z "${precmd_functions[(r)_openclaw_register_completion]}" ]]; then + precmd_functions+=(_openclaw_register_completion) + fi +fi diff --git a/cron/jobs-state.json.migrated b/cron/jobs-state.json.migrated new file mode 100644 index 0000000..c60018d --- /dev/null +++ b/cron/jobs-state.json.migrated @@ -0,0 +1,80 @@ +{ + "version": 1, + "jobs": { + "5d7aed00-aa6e-4c81-9c2b-d347e4832721": { + "updatedAtMs": 1780624800030, + "scheduleIdentity": "{\"version\":1,\"enabled\":true,\"schedule\":{\"kind\":\"cron\",\"expr\":\"0 10 * * 5\",\"tz\":\"Asia/Shanghai\"}}", + "state": { + "nextRunAtMs": 1781229600000, + "lastRunAtMs": 1780624800011, + "lastRunStatus": "ok", + "lastStatus": "ok", + "lastDurationMs": 19, + "lastDeliveryStatus": "not-requested", + "consecutiveErrors": 0, + "consecutiveSkipped": 0, + "lastFailureNotificationDeliveryStatus": "not-requested" + } + }, + "12c1165b-ae83-4451-ab27-460455a1e4ae": { + "updatedAtMs": 1780304408419, + "scheduleIdentity": "{\"version\":1,\"enabled\":true,\"schedule\":{\"kind\":\"cron\",\"expr\":\"0 17 1 6 *\",\"tz\":\"Asia/Shanghai\"}}", + "state": { + "nextRunAtMs": 1811840400000, + "lastRunAtMs": 1780304403652, + "lastRunStatus": "ok", + "lastStatus": "ok", + "lastDurationMs": 4767, + "lastDelivered": true, + "lastDeliveryStatus": "delivered", + "lastFailureNotificationDeliveryStatus": "not-requested", + "consecutiveErrors": 0, + "consecutiveSkipped": 0 + } + }, + "057d94d0-7c9b-45f1-b824-add73ecb068c": { + "updatedAtMs": 1780910697142, + "scheduleIdentity": "{\"version\":1,\"enabled\":false,\"schedule\":{\"kind\":\"at\",\"at\":\"2026-06-08T09:00:00.000Z\"}}", + "state": { + "lastRunAtMs": 1780910426045, + "lastRunStatus": "error", + "lastStatus": "error", + "lastDurationMs": 271097, + "lastDiagnostics": { + "summary": "The model did not produce a response before the model idle timeout. Please try again, or increase `models.providers..timeoutSeconds` for slow local or self-hosted providers. If `agents.defaults.timeoutSeconds` or a run-specific timeout is lower, raise that ceiling too; provider timeouts cannot extend the whole agent run.", + "entries": [ + { + "ts": 1780910697119, + "source": "tool", + "severity": "error", + "message": "LLM request timed out." + }, + { + "ts": 1780910697119, + "source": "tool", + "severity": "error", + "message": "The model did not produce a response before the model idle timeout. Please try again, or increase `models.providers..timeoutSeconds` for slow local or self-hosted providers. If `agents.defaults.timeoutSeconds` or a run-specific timeout is lower, raise that ceiling too; provider timeouts cannot extend the whole agent run." + }, + { + "ts": 1780910697141, + "source": "agent-run", + "severity": "error", + "message": "The model did not produce a response before the model idle timeout. Please try again, or increase `models.providers..timeoutSeconds` for slow local or self-hosted providers. If `agents.defaults.timeoutSeconds` or a run-specific timeout is lower, raise that ceiling too; provider timeouts cannot extend the whole agent run." + } + ] + }, + "lastDiagnosticSummary": "The model did not produce a response before the model idle timeout. Please try again, or increase `models.providers..timeoutSeconds` for slow local or self-hosted providers. If `agents.defaults.timeoutSeconds` or a run-specific timeout is lower, raise that ceiling too; provider timeouts cannot extend the whole agent run.", + "lastErrorReason": "timeout", + "lastDelivered": false, + "lastDeliveryStatus": "not-delivered", + "lastDeliveryError": "The model did not produce a response before the model idle timeout. Please try again, or increase `models.providers..timeoutSeconds` for slow local or self-hosted providers. If `agents.defaults.timeoutSeconds` or a run-specific timeout is lower, raise that ceiling too; provider timeouts cannot extend the whole agent run.", + "lastFailureNotificationDelivered": false, + "lastFailureNotificationDeliveryStatus": "not-delivered", + "lastFailureNotificationDeliveryError": "The model did not produce a response before the model idle timeout. Please try again, or increase `models.providers..timeoutSeconds` for slow local or self-hosted providers. If `agents.defaults.timeoutSeconds` or a run-specific timeout is lower, raise that ceiling too; provider timeouts cannot extend the whole agent run.", + "consecutiveErrors": 4, + "consecutiveSkipped": 0, + "lastError": "The model did not produce a response before the model idle timeout. Please try again, or increase `models.providers..timeoutSeconds` for slow local or self-hosted providers. If `agents.defaults.timeoutSeconds` or a run-specific timeout is lower, raise that ceiling too; provider timeouts cannot extend the whole agent run." + } + } + } +} \ No newline at end of file diff --git a/cron/jobs.json.migrated b/cron/jobs.json.migrated new file mode 100644 index 0000000..900e0b9 --- /dev/null +++ b/cron/jobs.json.migrated @@ -0,0 +1,80 @@ +{ + "version": 1, + "jobs": [ + { + "id": "5d7aed00-aa6e-4c81-9c2b-d347e4832721", + "agentId": "main", + "sessionKey": "agent:main:openclaw-weixin:direct:o9cq80w6znnpgitw-ggackwd69ba@im.wechat", + "name": "周五周报提醒", + "enabled": true, + "createdAtMs": 1778669245552, + "schedule": { + "kind": "cron", + "expr": "0 10 * * 5", + "tz": "Asia/Shanghai" + }, + "sessionTarget": "main", + "wakeMode": "now", + "payload": { + "kind": "systemEvent", + "text": "📋 周报提醒:今天是周五10:00,请告诉我这周的工作内容,我来生成周报草稿供你审核。审核通过后会在17:00-17:30之间随机时间发送给 liuqiang@witsoft.cn,抄送 wurd@witsoft.cn, chenm@witsoft.cn, zengli@witsoft.cn" + }, + "state": {} + }, + { + "id": "12c1165b-ae83-4451-ab27-460455a1e4ae", + "agentId": "travel", + "sessionKey": "agent:travel:openclaw-weixin:direct:o9cq80w6znnpgitw-ggackwd69ba@im.wechat", + "name": "预约天安门城楼", + "description": "明天下午5点提醒预约天安门城楼", + "enabled": true, + "deleteAfterRun": true, + "createdAtMs": 1780239857701, + "schedule": { + "kind": "cron", + "expr": "0 17 1 6 *", + "tz": "Asia/Shanghai" + }, + "sessionTarget": "session:agent:travel:openclaw-weixin:direct:o9cq80w6znnpgitw-ggackwd69ba@im.wechat", + "wakeMode": "now", + "payload": { + "kind": "agentTurn", + "message": "⏰ 现在是6月1日下午5点,提醒杨轩:记得预约天安门城楼参观!预约方式:微信搜索「天安门城楼参观预约」小程序或官网。注意12号就要去北京了,提前约好哦!", + "timeoutSeconds": 300 + }, + "delivery": { + "mode": "announce", + "to": "o9cq80w6ZnnPGItW-GGACkwd69bA@im.wechat", + "channel": "openclaw-weixin", + "accountId": "4a0926e2cb5f-im-bot" + }, + "state": {} + }, + { + "id": "057d94d0-7c9b-45f1-b824-add73ecb068c", + "agentId": "travel", + "sessionKey": "agent:travel:openclaw-weixin:direct:o9cq80w6znnpgitw-ggackwd69ba@im.wechat", + "name": "七天提醒-6月8日", + "enabled": false, + "deleteAfterRun": true, + "createdAtMs": 1780275491249, + "schedule": { + "kind": "at", + "at": "2026-06-08T09:00:00.000Z" + }, + "sessionTarget": "isolated", + "wakeMode": "now", + "payload": { + "kind": "agentTurn", + "message": "⏰ 现在是下午5点,提醒你记得之前说的事情!📌" + }, + "delivery": { + "mode": "announce", + "to": "o9cq80w6ZnnPGItW-GGACkwd69bA@im.wechat", + "channel": "openclaw-weixin", + "accountId": "4a0926e2cb5f-im-bot" + }, + "state": {} + } + ] +} \ No newline at end of file diff --git a/cron/runs/057d94d0-7c9b-45f1-b824-add73ecb068c.jsonl.migrated b/cron/runs/057d94d0-7c9b-45f1-b824-add73ecb068c.jsonl.migrated new file mode 100644 index 0000000..4e2ac6e --- /dev/null +++ b/cron/runs/057d94d0-7c9b-45f1-b824-add73ecb068c.jsonl.migrated @@ -0,0 +1,4 @@ +{"ts":1780909476852,"jobId":"057d94d0-7c9b-45f1-b824-add73ecb068c","action":"finished","status":"error","error":"The model did not produce a response before the model idle timeout. Please try again, or increase `models.providers..timeoutSeconds` for slow local or self-hosted providers. If `agents.defaults.timeoutSeconds` or a run-specific timeout is lower, raise that ceiling too; provider timeouts cannot extend the whole agent run.","summary":"The model did not produce a response before the model idle timeout. Please try again, or increase `models.providers..timeoutSeconds` for slow local or self-hosted providers. If `agents.defaults.timeoutSeconds` or a run-specific timeout is lower, raise that ceiling too; provider timeouts cannot extend the whole agent run.","diagnostics":{"summary":"The model did not produce a response before the model idle timeout. Please try again, or increase `models.providers..timeoutSeconds` for slow local or self-hosted providers. If `agents.defaults.timeoutSeconds` or a run-specific timeout is lower, raise that ceiling too; provider timeouts cannot extend the whole agent run.","entries":[{"ts":1780909476785,"source":"tool","severity":"error","message":"LLM request timed out."},{"ts":1780909476785,"source":"tool","severity":"error","message":"The model did not produce a response before the model idle timeout. Please try again, or increase `models.providers..timeoutSeconds` for slow local or self-hosted providers. If `agents.defaults.timeoutSeconds` or a run-specific timeout is lower, raise that ceiling too; provider timeouts cannot extend the whole agent run."},{"ts":1780909476839,"source":"agent-run","severity":"error","message":"The model did not produce a response before the model idle timeout. Please try again, or increase `models.providers..timeoutSeconds` for slow local or self-hosted providers. If `agents.defaults.timeoutSeconds` or a run-specific timeout is lower, raise that ceiling too; provider timeouts cannot extend the whole agent run."}]},"delivered":false,"deliveryStatus":"not-delivered","deliveryError":"The model did not produce a response before the model idle timeout. Please try again, or increase `models.providers..timeoutSeconds` for slow local or self-hosted providers. If `agents.defaults.timeoutSeconds` or a run-specific timeout is lower, raise that ceiling too; provider timeouts cannot extend the whole agent run.","failureNotificationDelivery":{"delivered":false,"status":"not-delivered","error":"The model did not produce a response before the model idle timeout. Please try again, or increase `models.providers..timeoutSeconds` for slow local or self-hosted providers. If `agents.defaults.timeoutSeconds` or a run-specific timeout is lower, raise that ceiling too; provider timeouts cannot extend the whole agent run."},"delivery":{"intended":{"channel":"openclaw-weixin","to":"o9cq80w6ZnnPGItW-GGACkwd69bA@im.wechat","accountId":"4a0926e2cb5f-im-bot","source":"explicit"},"resolved":{"ok":true,"channel":"openclaw-weixin","to":"o9cq80w6ZnnPGItW-GGACkwd69bA@im.wechat","accountId":"4a0926e2cb5f-im-bot","source":"explicit"},"fallbackUsed":false,"delivered":false},"sessionId":"99a470f6-2a33-4452-b36e-7cc6fbc545da","sessionKey":"agent:travel:cron:057d94d0-7c9b-45f1-b824-add73ecb068c:run:99a470f6-2a33-4452-b36e-7cc6fbc545da","runAtMs":1780909203644,"durationMs":273197,"nextRunAtMs":1780909506841,"model":"deepseek-v4-flash","provider":"deepseek"} +{"ts":1780909778142,"jobId":"057d94d0-7c9b-45f1-b824-add73ecb068c","action":"finished","status":"error","error":"The model did not produce a response before the model idle timeout. Please try again, or increase `models.providers..timeoutSeconds` for slow local or self-hosted providers. If `agents.defaults.timeoutSeconds` or a run-specific timeout is lower, raise that ceiling too; provider timeouts cannot extend the whole agent run.","summary":"The model did not produce a response before the model idle timeout. Please try again, or increase `models.providers..timeoutSeconds` for slow local or self-hosted providers. If `agents.defaults.timeoutSeconds` or a run-specific timeout is lower, raise that ceiling too; provider timeouts cannot extend the whole agent run.","diagnostics":{"summary":"The model did not produce a response before the model idle timeout. Please try again, or increase `models.providers..timeoutSeconds` for slow local or self-hosted providers. If `agents.defaults.timeoutSeconds` or a run-specific timeout is lower, raise that ceiling too; provider timeouts cannot extend the whole agent run.","entries":[{"ts":1780909778079,"source":"tool","severity":"error","message":"LLM request timed out."},{"ts":1780909778079,"source":"tool","severity":"error","message":"The model did not produce a response before the model idle timeout. Please try again, or increase `models.providers..timeoutSeconds` for slow local or self-hosted providers. If `agents.defaults.timeoutSeconds` or a run-specific timeout is lower, raise that ceiling too; provider timeouts cannot extend the whole agent run."},{"ts":1780909778129,"source":"agent-run","severity":"error","message":"The model did not produce a response before the model idle timeout. Please try again, or increase `models.providers..timeoutSeconds` for slow local or self-hosted providers. If `agents.defaults.timeoutSeconds` or a run-specific timeout is lower, raise that ceiling too; provider timeouts cannot extend the whole agent run."}]},"delivered":false,"deliveryStatus":"not-delivered","deliveryError":"The model did not produce a response before the model idle timeout. Please try again, or increase `models.providers..timeoutSeconds` for slow local or self-hosted providers. If `agents.defaults.timeoutSeconds` or a run-specific timeout is lower, raise that ceiling too; provider timeouts cannot extend the whole agent run.","failureNotificationDelivery":{"delivered":false,"status":"not-delivered","error":"The model did not produce a response before the model idle timeout. Please try again, or increase `models.providers..timeoutSeconds` for slow local or self-hosted providers. If `agents.defaults.timeoutSeconds` or a run-specific timeout is lower, raise that ceiling too; provider timeouts cannot extend the whole agent run."},"delivery":{"intended":{"channel":"openclaw-weixin","to":"o9cq80w6ZnnPGItW-GGACkwd69bA@im.wechat","accountId":"4a0926e2cb5f-im-bot","source":"explicit"},"resolved":{"ok":true,"channel":"openclaw-weixin","to":"o9cq80w6ZnnPGItW-GGACkwd69bA@im.wechat","accountId":"4a0926e2cb5f-im-bot","source":"explicit"},"fallbackUsed":false,"delivered":false},"sessionId":"211ead5b-153c-4acc-9add-b216eec529c6","sessionKey":"agent:travel:cron:057d94d0-7c9b-45f1-b824-add73ecb068c:run:211ead5b-153c-4acc-9add-b216eec529c6","runAtMs":1780909510454,"durationMs":267677,"nextRunAtMs":1780909838131,"model":"deepseek-v4-flash","provider":"deepseek"} +{"ts":1780910122408,"jobId":"057d94d0-7c9b-45f1-b824-add73ecb068c","action":"finished","status":"error","error":"The model did not produce a response before the model idle timeout. Please try again, or increase `models.providers..timeoutSeconds` for slow local or self-hosted providers. If `agents.defaults.timeoutSeconds` or a run-specific timeout is lower, raise that ceiling too; provider timeouts cannot extend the whole agent run.","summary":"The model did not produce a response before the model idle timeout. Please try again, or increase `models.providers..timeoutSeconds` for slow local or self-hosted providers. If `agents.defaults.timeoutSeconds` or a run-specific timeout is lower, raise that ceiling too; provider timeouts cannot extend the whole agent run.","diagnostics":{"summary":"The model did not produce a response before the model idle timeout. Please try again, or increase `models.providers..timeoutSeconds` for slow local or self-hosted providers. If `agents.defaults.timeoutSeconds` or a run-specific timeout is lower, raise that ceiling too; provider timeouts cannot extend the whole agent run.","entries":[{"ts":1780910122373,"source":"tool","severity":"error","message":"LLM request timed out."},{"ts":1780910122373,"source":"tool","severity":"error","message":"The model did not produce a response before the model idle timeout. Please try again, or increase `models.providers..timeoutSeconds` for slow local or self-hosted providers. If `agents.defaults.timeoutSeconds` or a run-specific timeout is lower, raise that ceiling too; provider timeouts cannot extend the whole agent run."},{"ts":1780910122401,"source":"agent-run","severity":"error","message":"The model did not produce a response before the model idle timeout. Please try again, or increase `models.providers..timeoutSeconds` for slow local or self-hosted providers. If `agents.defaults.timeoutSeconds` or a run-specific timeout is lower, raise that ceiling too; provider timeouts cannot extend the whole agent run."}]},"delivered":false,"deliveryStatus":"not-delivered","deliveryError":"The model did not produce a response before the model idle timeout. Please try again, or increase `models.providers..timeoutSeconds` for slow local or self-hosted providers. If `agents.defaults.timeoutSeconds` or a run-specific timeout is lower, raise that ceiling too; provider timeouts cannot extend the whole agent run.","failureNotificationDelivery":{"delivered":false,"status":"not-delivered","error":"The model did not produce a response before the model idle timeout. Please try again, or increase `models.providers..timeoutSeconds` for slow local or self-hosted providers. If `agents.defaults.timeoutSeconds` or a run-specific timeout is lower, raise that ceiling too; provider timeouts cannot extend the whole agent run."},"delivery":{"intended":{"channel":"openclaw-weixin","to":"o9cq80w6ZnnPGItW-GGACkwd69bA@im.wechat","accountId":"4a0926e2cb5f-im-bot","source":"explicit"},"resolved":{"ok":true,"channel":"openclaw-weixin","to":"o9cq80w6ZnnPGItW-GGACkwd69bA@im.wechat","accountId":"4a0926e2cb5f-im-bot","source":"explicit"},"fallbackUsed":false,"delivered":false},"sessionId":"d22ed27e-9aed-4345-b5c2-d78598ee1ac6","sessionKey":"agent:travel:cron:057d94d0-7c9b-45f1-b824-add73ecb068c:run:d22ed27e-9aed-4345-b5c2-d78598ee1ac6","runAtMs":1780909845794,"durationMs":276608,"nextRunAtMs":1780910422402,"model":"deepseek-v4-flash","provider":"deepseek","usage":{"input_tokens":16415,"output_tokens":348,"total_tokens":31263}} +{"ts":1780910697147,"jobId":"057d94d0-7c9b-45f1-b824-add73ecb068c","action":"finished","status":"error","error":"The model did not produce a response before the model idle timeout. Please try again, or increase `models.providers..timeoutSeconds` for slow local or self-hosted providers. If `agents.defaults.timeoutSeconds` or a run-specific timeout is lower, raise that ceiling too; provider timeouts cannot extend the whole agent run.","summary":"The model did not produce a response before the model idle timeout. Please try again, or increase `models.providers..timeoutSeconds` for slow local or self-hosted providers. If `agents.defaults.timeoutSeconds` or a run-specific timeout is lower, raise that ceiling too; provider timeouts cannot extend the whole agent run.","diagnostics":{"summary":"The model did not produce a response before the model idle timeout. Please try again, or increase `models.providers..timeoutSeconds` for slow local or self-hosted providers. If `agents.defaults.timeoutSeconds` or a run-specific timeout is lower, raise that ceiling too; provider timeouts cannot extend the whole agent run.","entries":[{"ts":1780910697119,"source":"tool","severity":"error","message":"LLM request timed out."},{"ts":1780910697119,"source":"tool","severity":"error","message":"The model did not produce a response before the model idle timeout. Please try again, or increase `models.providers..timeoutSeconds` for slow local or self-hosted providers. If `agents.defaults.timeoutSeconds` or a run-specific timeout is lower, raise that ceiling too; provider timeouts cannot extend the whole agent run."},{"ts":1780910697141,"source":"agent-run","severity":"error","message":"The model did not produce a response before the model idle timeout. Please try again, or increase `models.providers..timeoutSeconds` for slow local or self-hosted providers. If `agents.defaults.timeoutSeconds` or a run-specific timeout is lower, raise that ceiling too; provider timeouts cannot extend the whole agent run."}]},"delivered":false,"deliveryStatus":"not-delivered","deliveryError":"The model did not produce a response before the model idle timeout. Please try again, or increase `models.providers..timeoutSeconds` for slow local or self-hosted providers. If `agents.defaults.timeoutSeconds` or a run-specific timeout is lower, raise that ceiling too; provider timeouts cannot extend the whole agent run.","failureNotificationDelivery":{"delivered":false,"status":"not-delivered","error":"The model did not produce a response before the model idle timeout. Please try again, or increase `models.providers..timeoutSeconds` for slow local or self-hosted providers. If `agents.defaults.timeoutSeconds` or a run-specific timeout is lower, raise that ceiling too; provider timeouts cannot extend the whole agent run."},"delivery":{"intended":{"channel":"openclaw-weixin","to":"o9cq80w6ZnnPGItW-GGACkwd69bA@im.wechat","accountId":"4a0926e2cb5f-im-bot","source":"explicit"},"resolved":{"ok":true,"channel":"openclaw-weixin","to":"o9cq80w6ZnnPGItW-GGACkwd69bA@im.wechat","accountId":"4a0926e2cb5f-im-bot","source":"explicit"},"fallbackUsed":false,"delivered":false},"sessionId":"df8c4392-a74f-4867-a418-f2ac120bc6a9","sessionKey":"agent:travel:cron:057d94d0-7c9b-45f1-b824-add73ecb068c:run:df8c4392-a74f-4867-a418-f2ac120bc6a9","runAtMs":1780910426045,"durationMs":271097,"model":"deepseek-v4-flash","provider":"deepseek"} diff --git a/cron/runs/08a61ced-7f1d-47a7-b511-d1a4b18c4821.jsonl.migrated b/cron/runs/08a61ced-7f1d-47a7-b511-d1a4b18c4821.jsonl.migrated new file mode 100644 index 0000000..dbca455 --- /dev/null +++ b/cron/runs/08a61ced-7f1d-47a7-b511-d1a4b18c4821.jsonl.migrated @@ -0,0 +1,2 @@ +{"ts":1780448437488,"jobId":"08a61ced-7f1d-47a7-b511-d1a4b18c4821","action":"finished","status":"error","error":"cron: job execution timed out (last phase: model-call-started)","diagnostics":{"summary":"cron: job execution timed out (last phase: model-call-started)","entries":[{"ts":1780448437480,"source":"cron-setup","severity":"error","message":"cron: job execution timed out (last phase: model-call-started)"}]},"deliveryStatus":"unknown","failureNotificationDelivery":{"status":"unknown"},"runAtMs":1780448404319,"durationMs":33161,"nextRunAtMs":1780448467480} +{"ts":1780448472350,"jobId":"08a61ced-7f1d-47a7-b511-d1a4b18c4821","action":"finished","status":"ok","summary":"🚨 **天安门城楼预约提醒!**\n\n杨轩,今天是 **6月3日**,天安门城楼预约开放啦!\n\n**🎯 行动清单:**\n\n1. **预约日期**:6月13日(周六)\n2. **预约场次**:上午场(8:30-12:00)\n3. **预约入口**:微信小程序 → 搜索「天安门城楼参观预约」\n4. **关键时间**:⏰ 今天下午 **5点** 准时放票!\n\n**⚡ 提前准备:**\n- ✅ 在小程序里提前添加好参观人信息(姓名+身份证号)\n- ✅ 确保网络畅通\n- ⚠️ 天安门城楼票很抢手,建议提前几分钟进小程序等着,到点立刻提交!\n\n祝抢票顺利 🎫✨","delivered":true,"deliveryStatus":"delivered","delivery":{"intended":{"channel":"openclaw-weixin","to":"o9cq80w6ZnnPGItW-GGACkwd69bA@im.wechat","accountId":"4a0926e2cb5f-im-bot","source":"explicit"},"resolved":{"ok":true,"channel":"openclaw-weixin","to":"o9cq80w6ZnnPGItW-GGACkwd69bA@im.wechat","accountId":"4a0926e2cb5f-im-bot","source":"explicit"},"fallbackUsed":true,"delivered":true},"sessionId":"3c732995-6ec5-4755-ae01-d8e261bee3f2","sessionKey":"agent:travel:openclaw-weixin:direct:o9cq80w6znnpgitw-ggackwd69ba@im.wechat","runAtMs":1780448469600,"durationMs":2749,"nextRunAtMs":1780448467480,"model":"deepseek-v4-flash","provider":"deepseek","usage":{"input_tokens":6264,"output_tokens":182,"total_tokens":14840}} diff --git a/cron/runs/0d960664-8033-4b3b-bd6b-5d5849b82ea6.jsonl.migrated b/cron/runs/0d960664-8033-4b3b-bd6b-5d5849b82ea6.jsonl.migrated new file mode 100644 index 0000000..0e806a1 --- /dev/null +++ b/cron/runs/0d960664-8033-4b3b-bd6b-5d5849b82ea6.jsonl.migrated @@ -0,0 +1 @@ +{"ts":1780390687025,"jobId":"0d960664-8033-4b3b-bd6b-5d5849b82ea6","action":"finished","status":"ok","summary":"This is the cron job firing — it's configured to deliver the announcement directly to the 杨轩 via openclaw-weixin. The delivery is set to \"announce\" mode, which means the message will be sent to the chat channel. Since this is an isolated agentTurn with `delivery.mode=announce`, the response will be delivered automatically.\n\n⏰ **现在是16:58,提醒杨轩:**\n\n🚨 **抢天安门城楼票!**\n\n- **日期:** 6月9日(周二)\n- **放票时间:** 17:00 准时开抢!\n- **平台:** 微信小程序「天安门城楼参观预约」\n\n🏃💨 还有不到2分钟,赶紧打开小程序等着!17:00准时点进去!\n\n> ⚠️ 天安门城楼的票非常抢手,提前准备好:\n> 1. 打开小程序并登录好\n> 2. 提前填好参观人信息\n> 3. 17:00一过立即点击预约\n> 4. 准备好手速和网速!","delivered":true,"deliveryStatus":"delivered","delivery":{"intended":{"channel":"openclaw-weixin","to":"o9cq80w6ZnnPGItW-GGACkwd69bA@im.wechat","accountId":"4a0926e2cb5f-im-bot","source":"explicit"},"resolved":{"ok":true,"channel":"openclaw-weixin","to":"o9cq80w6ZnnPGItW-GGACkwd69bA@im.wechat","accountId":"4a0926e2cb5f-im-bot","source":"explicit"},"fallbackUsed":true,"delivered":true},"sessionId":"b2ec8579-d557-4b90-9af6-8662faaf156a","sessionKey":"agent:travel:cron:0d960664-8033-4b3b-bd6b-5d5849b82ea6:run:b2ec8579-d557-4b90-9af6-8662faaf156a","runAtMs":1780390681630,"durationMs":5388,"nextRunAtMs":1780390680000,"model":"deepseek-v4-flash","provider":"deepseek","usage":{"input_tokens":14205,"output_tokens":297,"total_tokens":14111}} diff --git a/cron/runs/12c1165b-ae83-4451-ab27-460455a1e4ae.jsonl.migrated b/cron/runs/12c1165b-ae83-4451-ab27-460455a1e4ae.jsonl.migrated new file mode 100644 index 0000000..c296307 --- /dev/null +++ b/cron/runs/12c1165b-ae83-4451-ab27-460455a1e4ae.jsonl.migrated @@ -0,0 +1,2 @@ +{"ts":1780239872173,"jobId":"12c1165b-ae83-4451-ab27-460455a1e4ae","action":"finished","status":"ok","summary":"收到,但我看下时间——现在是**5月31日周日晚11点**,而提醒设置在**6月1日下午5点**。这个cron任务触发的时机不对,是我刚才**手动测试触发了**,所以提前收到了。\n\n**这不是真的到时间了!** 真正的提醒会在 **明天(6/1)下午5点** 准时推送给你,到时候再来通知你预约天安门城楼。\n\n放心,任务已经设好了,明天到了时间会自动提醒你的 😊","delivered":true,"deliveryStatus":"delivered","delivery":{"intended":{"channel":"openclaw-weixin","to":"o9cq80w6ZnnPGItW-GGACkwd69bA@im.wechat","accountId":"4a0926e2cb5f-im-bot","source":"explicit"},"resolved":{"ok":true,"channel":"openclaw-weixin","to":"o9cq80w6ZnnPGItW-GGACkwd69bA@im.wechat","accountId":"4a0926e2cb5f-im-bot","source":"explicit"},"fallbackUsed":true,"delivered":true},"sessionId":"b8e58782-2b00-4427-9c33-f0f8576bf3ec","sessionKey":"agent:travel:openclaw-weixin:direct:o9cq80w6znnpgitw-ggackwd69ba@im.wechat","runId":"manual:12c1165b-ae83-4451-ab27-460455a1e4ae:1780239859366:1","runAtMs":1780239859367,"durationMs":12804,"nextRunAtMs":1780304400000,"model":"deepseek-v4-flash","provider":"deepseek","usage":{"input_tokens":46996,"output_tokens":106,"total_tokens":46996}} +{"ts":1780304408424,"jobId":"12c1165b-ae83-4451-ab27-460455a1e4ae","action":"finished","status":"ok","summary":"好的,收到提醒!不过天安门城楼**6月8日闭馆**,所以今天抢的8号的票用不上。没关系,我这边已经帮你安排了:\n\n- ✅ **明天(6月2日)16:58** 会再次提醒你,抢 **6月9日(周二)** 的票\n- ✅ 今天可以先熟悉流程,不提交\n\n准备好明天17:00准时开抢就行!💪","delivered":true,"deliveryStatus":"delivered","delivery":{"intended":{"channel":"openclaw-weixin","to":"o9cq80w6ZnnPGItW-GGACkwd69bA@im.wechat","accountId":"4a0926e2cb5f-im-bot","source":"explicit"},"resolved":{"ok":true,"channel":"openclaw-weixin","to":"o9cq80w6ZnnPGItW-GGACkwd69bA@im.wechat","accountId":"4a0926e2cb5f-im-bot","source":"explicit"},"fallbackUsed":true,"delivered":true},"sessionId":"58a71359-0817-42a3-b2a5-de43a1dc8ff2","sessionKey":"agent:travel:openclaw-weixin:direct:o9cq80w6znnpgitw-ggackwd69ba@im.wechat","runAtMs":1780304403652,"durationMs":4767,"nextRunAtMs":1811840400000,"model":"deepseek-v4-flash","provider":"deepseek","usage":{"input_tokens":20217,"output_tokens":94,"total_tokens":21625}} diff --git a/cron/runs/23cee062-ec01-4509-b204-6b8d2eebb7ad.jsonl.migrated b/cron/runs/23cee062-ec01-4509-b204-6b8d2eebb7ad.jsonl.migrated new file mode 100644 index 0000000..f0ca130 --- /dev/null +++ b/cron/runs/23cee062-ec01-4509-b204-6b8d2eebb7ad.jsonl.migrated @@ -0,0 +1,4 @@ +{"ts":1780408839067,"jobId":"23cee062-ec01-4509-b204-6b8d2eebb7ad","action":"finished","status":"error","error":"cron: job execution timed out (last phase: model-call-started)","diagnostics":{"summary":"cron: job execution timed out (last phase: model-call-started)","entries":[{"ts":1780408839059,"source":"cron-setup","severity":"error","message":"cron: job execution timed out (last phase: model-call-started)"}]},"deliveryStatus":"unknown","failureNotificationDelivery":{"status":"unknown"},"runAtMs":1780408805644,"durationMs":33415,"nextRunAtMs":1780408869059} +{"ts":1780408904726,"jobId":"23cee062-ec01-4509-b204-6b8d2eebb7ad","action":"finished","status":"error","error":"cron: job execution timed out (last phase: model-call-started)","diagnostics":{"summary":"cron: job execution timed out (last phase: model-call-started)","entries":[{"ts":1780408904723,"source":"cron-setup","severity":"error","message":"cron: job execution timed out (last phase: model-call-started)"}]},"deliveryStatus":"unknown","failureNotificationDelivery":{"status":"unknown"},"runAtMs":1780408871867,"durationMs":32856,"nextRunAtMs":1780408964723} +{"ts":1780409003047,"jobId":"23cee062-ec01-4509-b204-6b8d2eebb7ad","action":"finished","status":"error","error":"cron: job execution timed out (last phase: model-call-started)","diagnostics":{"summary":"cron: job execution timed out (last phase: model-call-started)","entries":[{"ts":1780409003041,"source":"cron-setup","severity":"error","message":"cron: job execution timed out (last phase: model-call-started)"}]},"deliveryStatus":"unknown","failureNotificationDelivery":{"status":"unknown"},"runAtMs":1780408970056,"durationMs":32985,"nextRunAtMs":1780409303041} +{"ts":1780409308561,"jobId":"23cee062-ec01-4509-b204-6b8d2eebb7ad","action":"finished","status":"ok","summary":"⏰ **晚上10点提醒到!**\n\n别忘啦,**把带洗脸巾放进包里** 🧴🧳\n\n6月12号出发去北京,趁现在还有时间,把要带的东西慢慢收拾起来~还有什么需要我帮忙的吗?😊","delivered":true,"deliveryStatus":"delivered","delivery":{"intended":{"channel":"openclaw-weixin","to":"o9cq80w6ZnnPGItW-GGACkwd69bA@im.wechat","accountId":"4a0926e2cb5f-im-bot","source":"explicit"},"resolved":{"ok":true,"channel":"openclaw-weixin","to":"o9cq80w6ZnnPGItW-GGACkwd69bA@im.wechat","accountId":"4a0926e2cb5f-im-bot","source":"explicit"},"fallbackUsed":true,"delivered":true},"sessionId":"2a799cd5-21a8-43c8-911d-ab5cedb9cbab","sessionKey":"agent:travel:openclaw-weixin:direct:o9cq80w6znnpgitw-ggackwd69ba@im.wechat","runAtMs":1780409305930,"durationMs":2629,"nextRunAtMs":1780409303041,"model":"deepseek-v4-flash","provider":"deepseek","usage":{"input_tokens":20120,"output_tokens":58,"total_tokens":21912}} diff --git a/cron/runs/5d7aed00-aa6e-4c81-9c2b-d347e4832721.jsonl.migrated b/cron/runs/5d7aed00-aa6e-4c81-9c2b-d347e4832721.jsonl.migrated new file mode 100644 index 0000000..ee5da70 --- /dev/null +++ b/cron/runs/5d7aed00-aa6e-4c81-9c2b-d347e4832721.jsonl.migrated @@ -0,0 +1,4 @@ +{"ts":1778833358417,"jobId":"5d7aed00-aa6e-4c81-9c2b-d347e4832721","action":"finished","status":"ok","summary":"📋 周报提醒:今天是周五10:00,请告诉我这周的工作内容,我来生成周报草稿供你审核。审核通过后会在17:00-17:30之间随机时间发送给 liuqiang@witsoft.cn,抄送 wurd@witsoft.cn, chenm@witsoft.cn, zengli@witsoft.cn","deliveryStatus":"not-requested","runAtMs":1778833351270,"durationMs":7145,"nextRunAtMs":1779415200000} +{"ts":1779446924117,"jobId":"5d7aed00-aa6e-4c81-9c2b-d347e4832721","action":"finished","status":"ok","summary":"📋 周报提醒:今天是周五10:00,请告诉我这周的工作内容,我来生成周报草稿供你审核。审核通过后会在17:00-17:30之间随机时间发送给 liuqiang@witsoft.cn,抄送 wurd@witsoft.cn, chenm@witsoft.cn, zengli@witsoft.cn","deliveryStatus":"not-requested","runAtMs":1779446913505,"durationMs":10609,"nextRunAtMs":1780020000000} +{"ts":1780020001414,"jobId":"5d7aed00-aa6e-4c81-9c2b-d347e4832721","action":"finished","status":"ok","summary":"📋 周报提醒:今天是周五10:00,请告诉我这周的工作内容,我来生成周报草稿供你审核。审核通过后会在17:00-17:30之间随机时间发送给 liuqiang@witsoft.cn,抄送 wurd@witsoft.cn, chenm@witsoft.cn, zengli@witsoft.cn","deliveryStatus":"not-requested","sessionKey":"agent:main:cron:5d7aed00-aa6e-4c81-9c2b-d347e4832721:run:1780020001403","runAtMs":1780020001403,"durationMs":8,"nextRunAtMs":1780624800000} +{"ts":1780624800038,"jobId":"5d7aed00-aa6e-4c81-9c2b-d347e4832721","action":"finished","status":"ok","summary":"📋 周报提醒:今天是周五10:00,请告诉我这周的工作内容,我来生成周报草稿供你审核。审核通过后会在17:00-17:30之间随机时间发送给 liuqiang@witsoft.cn,抄送 wurd@witsoft.cn, chenm@witsoft.cn, zengli@witsoft.cn","deliveryStatus":"not-requested","sessionKey":"agent:main:cron:5d7aed00-aa6e-4c81-9c2b-d347e4832721:run:1780624800011","runAtMs":1780624800011,"durationMs":19,"nextRunAtMs":1781229600000} diff --git a/cron/runs/80b2f7dc-f466-4479-9132-49b5207a7b4f.jsonl.migrated b/cron/runs/80b2f7dc-f466-4479-9132-49b5207a7b4f.jsonl.migrated new file mode 100644 index 0000000..5d1f26d --- /dev/null +++ b/cron/runs/80b2f7dc-f466-4479-9132-49b5207a7b4f.jsonl.migrated @@ -0,0 +1 @@ +{"ts":1780649884178,"jobId":"80b2f7dc-f466-4479-9132-49b5207a7b4f","action":"finished","status":"ok","summary":"⏰ **16:58 到点啦!该预约天安门城楼了!**\n\n预约方式:\n\n1️⃣ **微信小程序**:搜索「天安门城楼参观预约」\n2️⃣ **官网预约**:访问官方预约平台\n3️⃣ **预约时间**:需提前 **1-7天**,建议尽早约\n4️⃣ **参观须知**:记得带好 **身份证原件**\n\n📌 天安门城楼目前参观需按预约时段入场,过时可能无法进入,建议选上午时段避开人流高峰。\n\n需要我帮你查一下近期的可预约日期和时间段吗?","delivered":true,"deliveryStatus":"delivered","delivery":{"intended":{"channel":"openclaw-weixin","to":"o9cq80w6ZnnPGItW-GGACkwd69bA@im.wechat","accountId":"4a0926e2cb5f-im-bot","source":"explicit"},"resolved":{"ok":true,"channel":"openclaw-weixin","to":"o9cq80w6ZnnPGItW-GGACkwd69bA@im.wechat","accountId":"4a0926e2cb5f-im-bot","source":"explicit"},"fallbackUsed":true,"delivered":true},"sessionId":"916ef8cf-10db-496f-b734-364fbb4799f7","sessionKey":"agent:travel:openclaw-weixin:direct:o9cq80w6znnpgitw-ggackwd69ba@im.wechat","runAtMs":1780649880002,"durationMs":4172,"nextRunAtMs":1780649880000,"model":"deepseek-v4-flash","provider":"deepseek","usage":{"input_tokens":12292,"output_tokens":129,"total_tokens":15748}} diff --git a/cron/runs/b5ed5459-4a40-4de7-bbb0-9cb6afe9e510.jsonl.migrated b/cron/runs/b5ed5459-4a40-4de7-bbb0-9cb6afe9e510.jsonl.migrated new file mode 100644 index 0000000..6d051cc --- /dev/null +++ b/cron/runs/b5ed5459-4a40-4de7-bbb0-9cb6afe9e510.jsonl.migrated @@ -0,0 +1 @@ +{"ts":1780275307704,"jobId":"b5ed5459-4a40-4de7-bbb0-9cb6afe9e510","action":"finished","status":"ok","summary":"⏰ **喝水提醒!** 💧\n\n杨轩,早上好!现在已经 8:55 了,记得喝杯水再开始工作哦~ 🚰\n\n早起一杯水,精神一整天!今天记得多喝水 💪","delivered":true,"deliveryStatus":"delivered","delivery":{"intended":{"channel":"openclaw-weixin","to":"o9cq80w6ZnnPGItW-GGACkwd69bA@im.wechat","accountId":"4a0926e2cb5f-im-bot","source":"explicit"},"resolved":{"ok":true,"channel":"openclaw-weixin","to":"o9cq80w6ZnnPGItW-GGACkwd69bA@im.wechat","accountId":"4a0926e2cb5f-im-bot","source":"explicit"},"fallbackUsed":true,"delivered":true},"sessionId":"51a9cb19-9381-4f4f-a292-388dce05ae12","sessionKey":"agent:travel:cron:b5ed5459-4a40-4de7-bbb0-9cb6afe9e510:run:51a9cb19-9381-4f4f-a292-388dce05ae12","runAtMs":1780275300003,"durationMs":7699,"nextRunAtMs":1780275300000,"model":"deepseek-v4-flash","provider":"deepseek","usage":{"input_tokens":13677,"output_tokens":53,"total_tokens":13677}} diff --git a/cron/runs/cf24cda0-8033-4208-bbd7-299fd03f108b.jsonl.migrated b/cron/runs/cf24cda0-8033-4208-bbd7-299fd03f108b.jsonl.migrated new file mode 100644 index 0000000..06a4ca4 --- /dev/null +++ b/cron/runs/cf24cda0-8033-4208-bbd7-299fd03f108b.jsonl.migrated @@ -0,0 +1 @@ +{"ts":1780736285608,"jobId":"cf24cda0-8033-4208-bbd7-299fd03f108b","action":"finished","status":"ok","summary":"杨轩,⚠️ **天安门城楼抢票提醒!**\n\n现在是16:58,还有2分钟就要开抢了!\n\n**📌 抢票信息**\n- **参观日期:** 2026年6月13日(周六)\n- **开抢时间:** **17:00**(马上!)\n- **预约渠道:** 微信搜索「天安门城楼参观预约」小程序\n\n**📋 提前准备**\n- ✅ 身份证号提前复制好\n- ✅ 确认小程序已打开,登录状态正常\n- ✅ 网络通畅(建议用5G/WiFi双保险)\n\n6月13日是天安门城楼每周的预约日,通常放票后很快会被抢完,一定要准点冲!祝你好运 🍀","delivered":true,"deliveryStatus":"delivered","delivery":{"intended":{"channel":"openclaw-weixin","to":"o9cq80w6ZnnPGItW-GGACkwd69bA@im.wechat","accountId":"4a0926e2cb5f-im-bot","source":"explicit"},"resolved":{"ok":true,"channel":"openclaw-weixin","to":"o9cq80w6ZnnPGItW-GGACkwd69bA@im.wechat","accountId":"4a0926e2cb5f-im-bot","source":"explicit"},"fallbackUsed":true,"delivered":true},"sessionId":"e431996f-9842-4273-8ad9-a126648e73cb","sessionKey":"agent:travel:openclaw-weixin:direct:o9cq80w6znnpgitw-ggackwd69ba@im.wechat","runAtMs":1780736280020,"durationMs":5583,"nextRunAtMs":1780736280000,"model":"deepseek-v4-flash","provider":"deepseek","usage":{"input_tokens":6052,"output_tokens":166,"total_tokens":14628}} diff --git a/flows/registry.sqlite-shm.migrated b/flows/registry.sqlite-shm.migrated new file mode 100644 index 0000000..fe9ac28 Binary files /dev/null and b/flows/registry.sqlite-shm.migrated differ diff --git a/flows/registry.sqlite-wal.migrated b/flows/registry.sqlite-wal.migrated new file mode 100644 index 0000000..e69de29 diff --git a/flows/registry.sqlite.migrated b/flows/registry.sqlite.migrated new file mode 100644 index 0000000..9064951 Binary files /dev/null and b/flows/registry.sqlite.migrated differ diff --git a/gateway-supervisor-restart-handoff.json b/gateway-supervisor-restart-handoff.json new file mode 100644 index 0000000..fcc3ab0 --- /dev/null +++ b/gateway-supervisor-restart-handoff.json @@ -0,0 +1 @@ +{"kind":"gateway-supervisor-restart-handoff","version":1,"intentId":"6a27f6fc-5ffd-48b8-bbd4-304eb9367aea","pid":378,"processInstanceId":"adf773e3-6c9c-419e-a85b-4091c0c10089","createdAt":1782953815876,"expiresAt":1782953875876,"reason":"update.run","source":"gateway-update","restartKind":"update-process","supervisorMode":"systemd"} diff --git a/identity/device-auth.json b/identity/device-auth.json new file mode 100644 index 0000000..367303e --- /dev/null +++ b/identity/device-auth.json @@ -0,0 +1,18 @@ +{ + "version": 1, + "deviceId": "e8510d8b751c9065aebddecb8951b0283fce5457af923f81b6d4a6bd72d421e7", + "tokens": { + "operator": { + "token": "2720025facf8497986551236793037ea", + "role": "operator", + "scopes": [ + "operator.admin", + "operator.approvals", + "operator.pairing", + "operator.read", + "operator.write" + ], + "updatedAtMs": 1782957219692 + } + } +} diff --git a/identity/device.json b/identity/device.json new file mode 100644 index 0000000..c299abb --- /dev/null +++ b/identity/device.json @@ -0,0 +1,7 @@ +{ + "version": 1, + "deviceId": "e8510d8b751c9065aebddecb8951b0283fce5457af923f81b6d4a6bd72d421e7", + "publicKeyPem": "-----BEGIN PUBLIC KEY-----\nMCowBQYDK2VwAyEA9VxFgciddpb0jxue8QVIv/Ba2KbWva3sveVbxAkVYxY=\n-----END PUBLIC KEY-----\n", + "privateKeyPem": "-----BEGIN PRIVATE KEY-----\nMC4CAQAwBQYDK2VwBCIEIG2VSOr+cXn0yHoaaVWZCaZN6I9SuRw6CLm0tcMgWsFP\n-----END PRIVATE KEY-----\n", + "createdAtMs": 1773749978371 +} diff --git a/media/inbound/2023年度工作总结-工业互联网-杨轩---fbaa8907-61e7-4e3c-a1fd-87e0408915c7.pptx b/media/inbound/2023年度工作总结-工业互联网-杨轩---fbaa8907-61e7-4e3c-a1fd-87e0408915c7.pptx new file mode 100644 index 0000000..6b2eff6 Binary files /dev/null and b/media/inbound/2023年度工作总结-工业互联网-杨轩---fbaa8907-61e7-4e3c-a1fd-87e0408915c7.pptx differ diff --git a/media/inbound/2023年度工作总结模板---f6c75239-438f-4c9b-8e3c-91b5768656f4.pptx b/media/inbound/2023年度工作总结模板---f6c75239-438f-4c9b-8e3c-91b5768656f4.pptx new file mode 100644 index 0000000..2e07934 Binary files /dev/null and b/media/inbound/2023年度工作总结模板---f6c75239-438f-4c9b-8e3c-91b5768656f4.pptx differ diff --git a/media/inbound/2025-08-01_1700_G5开发周报_2025-07-28_--_2025-08-01---f4fcb550-6faf-4f42-8184-3651025e7e9d.eml b/media/inbound/2025-08-01_1700_G5开发周报_2025-07-28_--_2025-08-01---f4fcb550-6faf-4f42-8184-3651025e7e9d.eml new file mode 100644 index 0000000..de95886 --- /dev/null +++ b/media/inbound/2025-08-01_1700_G5开发周报_2025-07-28_--_2025-08-01---f4fcb550-6faf-4f42-8184-3651025e7e9d.eml @@ -0,0 +1,307 @@ +Date: Fri, 1 Aug 2025 17:00:01 +0800 +From: yangxuan +To: =?utf-8?B?5YiY5by6?= +Cc: =?utf-8?B?5bGI5paw6b6Z?= , =?utf-8?B?5pyx5paM?= + , =?utf-8?B?6ZmI5piO?= , + =?utf-8?Q?xym=40witsoft.cn?= , + =?utf-8?Q?zengli=40witsoft.cn?= +Message-ID: +Subject: =?utf-8?B?RzXlvIDlj5HlkajmiqXjgJAyMDI1LTA3LTI4IC0tICAyMDI1LTA4?= + =?utf-8?B?LTAx44CR?= +MIME-Version: 1.0 +Content-Type: multipart/alternative; boundary="=_mailmaster-6a18e4a4_0_29_=" + +--=_mailmaster-6a18e4a4_0_29_= +Content-Type: text/plain; charset="utf-8" +Content-Transfer-Encoding: base64 + +5oKo5aW977yB5Lul5LiL5piv5oiR5pys5ZGo77yIMjAyNS4wNy4yOC0wOC4wMe+8ieeahOW3peS9 +nOaAu+e7k+WPiuS4i+WRqOiuoeWIku+8jOivt+WuoemYheOAggrkuIDjgIHmnKzlkajlt6XkvZzm +gLvnu5MK6YeN54K55bel5L2c5a6M5oiQ5oOF5Ya1CuS7u+WKoTHvvJpHNeS4u+aVsOaNruWKqOaA +geWtl+autemcgOaxgua1i+ivlee7k+adnyzlt7LkuI7plIDllK7mqKHlnZfogZTosIPnu5PmnZ8u +5Li75pWw5o2uNS4xLjLniYjmnKzmnKzlkajkuIrnur8uCuS7u+WKoTLvvJpHM+WtmOi0p+euoeeQ +hua1i+ivlee7k+adnywyMDI15bm0N+aciDMw5pel6L+b5YWl5YeG55Sf5Lqn6aqM6K+B6Zi25q61 +LgrluLjop4Tlt6XkvZwK5pel5bi45LqL5YqhMe+8mjIwMjUtMDctMjkg5Li75pWw5o2u5Yqo5oCB +5a2X5q615LyY5YyWCuaXpeW4uOS6i+WKoTLvvJoyMDI1LTA3LTMwIOWtmOi0p+euoeeQhuWHhueU +n+S6p+mqjOivgeS8mOWMlgrml6XluLjkuovliqEz77yaMjAyNS0wNy0zMSDlrZjotKfnrqHnkIbl +h4bnlJ/kuqfpqozor4HmlK/mjIEK5pel5bi45LqL5YqhNO+8mjUuMS4z54mI5pys6ZyA5rGC6K+E +5a6h5LiO5byA5Y+R5pa55qGI6K6+6K6hCuWtmOWcqOmXrumimOaIlumcgOaUr+aMgeS6i+mhuQrm +l6AK5LqM44CB5LiL5ZGo5bel5L2c6K6h5YiSCumHjeeCueS7u+WKoQrorqHliJIx77yaRzXkuLvm +lbDmja7kvJjljJbpnIDmsYLlvIDlj5EK6K6h5YiSMu+8mkcz5a2Y6LSn566h55CG5a6i5oi36K+V +55So5byA5Y+R5pSv5pKRCuWFtuS7luS6i+mhuQrml6AK5aSH5rOo77ya5pegCkJlc3QgcmVnYXJk +cyzmnajovakK5Zyw5Z2A77ya5Lit5Zu9wrfljZfkuqzova/ku7bosLfova/ku7blpKfpgZMgMTEg +5Y+36Iqx56We5aSn5Y6mIDItM0YK5omL5py677yaMTg3MjYxMjg0ODkK6YKu566x77yaeWFuZ3h1 +YW5Ad2l0c29mdC5jbg== + +--=_mailmaster-6a18e4a4_0_29_= +Content-Type: text/html; charset="utf-8" +Content-Transfer-Encoding: base64 + +PGh0bWw+PGhlYWQ+PG1ldGEgaHR0cC1lcXVpdj0nQ29udGVudC1UeXBlJyBjb250ZW50PSd0ZXh0 +L2h0bWw7IGNoYXJzZXQ9VVRGLTgnPjwvaGVhZD48Ym9keSBzdHlsZT1saW5lLWhlaWdodDogMS41 +O2ZvbnQtZmFtaWx5OiAi5b6u6L2v6ZuF6buRIj48ZGl2ICBzdHlsZT0iZm9udC1mYW1pbHk6IOW+ +rui9r+mbhem7kTsiPjxkaXYgc3R5bGU9ImZvbnQtZmFtaWx5OiDlvq7ova/pm4Xpu5E7Ij48ZGl2 +IHN0eWxlPSJmb250LWZhbWlseTog5b6u6L2v6ZuF6buROyI+PGRpdj48cCBjaWQ9Im4wIiBtZHR5 +cGU9InBhcmFncmFwaCIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1wIG1kLWZvY3VzIiBzdHlsZT0i +Ym94LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IG9ycGhhbnM6IDQ7 +IG1hcmdpbjogMC44ZW0gMHB4OyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0aW9uOiByZWxh +dGl2ZTsgY29sb3I6IHJnYig1MSwgNTEsIDUxKTsgZm9udC1mYW1pbHk6ICZxdW90O09wZW4gU2Fu +cyZxdW90OywgJnF1b3Q7Q2xlYXIgU2FucyZxdW90OywgJnF1b3Q7SGVsdmV0aWNhIE5ldWUmcXVv +dDssIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTZweDsiPjxzcGFu +IG1kLWlubGluZT0icGxhaW4iIGNsYXNzPSJtZC1wbGFpbiBtZC1leHBhbmQiIHN0eWxlPSJib3gt +c2l6aW5nOiBib3JkZXItYm94OyI+5oKo5aW977yB5Lul5LiL5piv5oiR5pys5ZGo77yIMjAyNS4w +Ny4yOC0wOC4wMe+8ieeahOW3peS9nOaAu+e7k+WPiuS4i+WRqOiuoeWIku+8jOivt+WuoemYheOA +gjwvc3Bhbj48L3A+PGRpdiB0YWJpbmRleD0iLTEiIGNpZD0ibjIiIG1kdHlwZT0iaHIiIGNsYXNz +PSJtZC1ociBtZC1lbmQtYmxvY2siIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBjb2xv +cjogcmdiKDUxLCA1MSwgNTEpOyBmb250LWZhbWlseTogJnF1b3Q7T3BlbiBTYW5zJnF1b3Q7LCAm +cXVvdDtDbGVhciBTYW5zJnF1b3Q7LCAmcXVvdDtIZWx2ZXRpY2EgTmV1ZSZxdW90OywgSGVsdmV0 +aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxNnB4OyI+PGhyIHN0eWxlPSJib3gt +c2l6aW5nOiBjb250ZW50LWJveDsgaGVpZ2h0OiAycHg7IG1hcmdpbjogMTZweCAwcHg7IGJvcmRl +cjogMHB4IG5vbmU7IHBhZGRpbmc6IDBweDsgYmFja2dyb3VuZC1jb2xvcjogcmdiKDIzMSwgMjMx +LCAyMzEpOyI+PC9kaXY+PGgzIGNpZD0ibjMiIG1kdHlwZT0iaGVhZGluZyIgY2xhc3M9Im1kLWVu +ZC1ibG9jayBtZC1oZWFkaW5nIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgYnJlYWst +YWZ0ZXI6IGF2b2lkLXBhZ2U7IGJyZWFrLWluc2lkZTogYXZvaWQ7IG9ycGhhbnM6IDQ7IGZvbnQt +c2l6ZTogMS41ZW07IG1hcmdpbi10b3A6IDFyZW07IG1hcmdpbi1ib3R0b206IDFyZW07IHBvc2l0 +aW9uOiByZWxhdGl2ZTsgbGluZS1oZWlnaHQ6IDEuNDM7IGN1cnNvcjogdGV4dDsgd2hpdGUtc3Bh +Y2U6IHByZS13cmFwOyBjb2xvcjogcmdiKDUxLCA1MSwgNTEpOyBmb250LWZhbWlseTogJnF1b3Q7 +T3BlbiBTYW5zJnF1b3Q7LCAmcXVvdDtDbGVhciBTYW5zJnF1b3Q7LCAmcXVvdDtIZWx2ZXRpY2Eg +TmV1ZSZxdW90OywgSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjsiPjxzcGFuIG1kLWlubGlu +ZT0ic3Ryb25nIiBjbGFzcz0ibWQtcGFpci1zICIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1i +b3g7Ij48c3Ryb25nIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+PHNwYW4gbWQtaW5s +aW5lPSJwbGFpbiIgY2xhc3M9Im1kLXBsYWluIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJv +eDsiPuS4gOOAgeacrOWRqOW3peS9nOaAu+e7kzwvc3Bhbj48L3N0cm9uZz48L3NwYW4+PC9oMz48 +b2wgY2xhc3M9Im9sLWxpc3QiIHN0YXJ0PSIiIGNpZD0ibjQiIG1kdHlwZT0ibGlzdCIgc3R5bGU9 +ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMC44ZW0gMHB4OyBwYWRkaW5nLWxlZnQ6 +IDMwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsgY29sb3I6IHJnYig1MSwgNTEsIDUxKTsgZm9udC1m +YW1pbHk6ICZxdW90O09wZW4gU2FucyZxdW90OywgJnF1b3Q7Q2xlYXIgU2FucyZxdW90OywgJnF1 +b3Q7SGVsdmV0aWNhIE5ldWUmcXVvdDssIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7IGZv +bnQtc2l6ZTogMTZweDsiPjxsaSBjbGFzcz0ibWQtbGlzdC1pdGVtIiBjaWQ9Im41IiBtZHR5cGU9 +Imxpc3RfaXRlbSIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBw +b3NpdGlvbjogcmVsYXRpdmU7Ij48cCBjaWQ9Im42IiBtZHR5cGU9InBhcmFncmFwaCIgY2xhc3M9 +Im1kLWVuZC1ibG9jayBtZC1wIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1o +ZWlnaHQ6IGluaGVyaXQ7IG9ycGhhbnM6IDQ7IG1hcmdpbjogMHB4IDBweCAwLjVyZW07IHdoaXRl +LXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHNwYW4gbWQtaW5saW5lPSJz +dHJvbmciIGNsYXNzPSJtZC1wYWlyLXMgIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsi +PjxzdHJvbmcgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij48c3BhbiBtZC1pbmxpbmU9 +InBsYWluIiBjbGFzcz0ibWQtcGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+ +6YeN54K55bel5L2c5a6M5oiQ5oOF5Ya1PC9zcGFuPjwvc3Ryb25nPjwvc3Bhbj48L3A+PC9saT48 +dWwgY2xhc3M9InVsLWxpc3QiIGNpZD0ibjciIG1kdHlwZT0ibGlzdCIgZGF0YS1tYXJrPSItIiBz +dHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBhZGRpbmctbGVmdDog +MzBweDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PGxpIGNsYXNzPSJtZC1saXN0LWl0ZW0iIGNpZD0i +bjgiIG1kdHlwZT0ibGlzdF9pdGVtIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFy +Z2luOiAwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxwIGNpZD0ibjkiIG1kdHlwZT0icGFyYWdy +YXBoIiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLXAiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXIt +Ym94OyBsaW5lLWhlaWdodDogaW5oZXJpdDsgb3JwaGFuczogNDsgbWFyZ2luOiAwcHggMHB4IDAu +NXJlbTsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48c3BhbiBt +ZC1pbmxpbmU9InBsYWluIiBjbGFzcz0ibWQtcGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3Jk +ZXItYm94OyI+5Lu75YqhMe+8mkc15Li75pWw5o2u5Yqo5oCB5a2X5q616ZyA5rGC5rWL6K+V57uT +5p2fLOW3suS4jumUgOWUruaooeWdl+iBlOiwg+e7k+adny7kuLvmlbDmja41LjEuMueJiOacrOac +rOWRqOS4iue6vy48L3NwYW4+PC9wPjwvbGk+PGxpIGNsYXNzPSJtZC1saXN0LWl0ZW0iIGNpZD0i +bjEwIiBtZHR5cGU9Imxpc3RfaXRlbSIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1h +cmdpbjogMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48cCBjaWQ9Im4xMSIgbWR0eXBlPSJwYXJh +Z3JhcGgiIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRl +ci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhlcml0OyBvcnBoYW5zOiA0OyBtYXJnaW46IDBweCAwcHgg +MC41cmVtOyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxzcGFu +IG1kLWlubGluZT0icGxhaW4iIGNsYXNzPSJtZC1wbGFpbiIgc3R5bGU9ImJveC1zaXppbmc6IGJv +cmRlci1ib3g7Ij7ku7vliqEy77yaRzPlrZjotKfnrqHnkIbmtYvor5Xnu5PmnZ8sMjAyNeW5tDfm +nIgzMOaXpei/m+WFpeWHhueUn+S6p+mqjOivgemYtuautS48L3NwYW4+PC9wPjwvbGk+PC91bD48 +bGkgY2xhc3M9Im1kLWxpc3QtaXRlbSIgY2lkPSJuMTIiIG1kdHlwZT0ibGlzdF9pdGVtIiBzdHls +ZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBvc2l0aW9uOiByZWxhdGl2 +ZTsiPjxwIGNpZD0ibjEzIiBtZHR5cGU9InBhcmFncmFwaCIgY2xhc3M9Im1kLWVuZC1ibG9jayBt +ZC1wIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7 +IG9ycGhhbnM6IDQ7IG1hcmdpbjogMHB4IDBweCAwLjVyZW07IHdoaXRlLXNwYWNlOiBwcmUtd3Jh +cDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHNwYW4gbWQtaW5saW5lPSJzdHJvbmciIGNsYXNzPSJt +ZC1wYWlyLXMgIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPjxzdHJvbmcgc3R5bGU9 +ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij48c3BhbiBtZC1pbmxpbmU9InBsYWluIiBjbGFzcz0i +bWQtcGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+5bi46KeE5bel5L2cPC9z +cGFuPjwvc3Ryb25nPjwvc3Bhbj48L3A+PC9saT48dWwgY2xhc3M9InVsLWxpc3QiIGNpZD0ibjE0 +IiBtZHR5cGU9Imxpc3QiIGRhdGEtbWFyaz0iLSIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1i +b3g7IG1hcmdpbjogMHB4OyBwYWRkaW5nLWxlZnQ6IDMwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsi +PjxsaSBjbGFzcz0ibWQtbGlzdC1pdGVtIiBjaWQ9Im4xNSIgbWR0eXBlPSJsaXN0X2l0ZW0iIHN0 +eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcG9zaXRpb246IHJlbGF0 +aXZlOyI+PHAgY2lkPSJuMTYiIG1kdHlwZT0icGFyYWdyYXBoIiBjbGFzcz0ibWQtZW5kLWJsb2Nr +IG1kLXAiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5oZXJp +dDsgb3JwaGFuczogNDsgbWFyZ2luOiAwcHggMHB4IDAuNXJlbTsgd2hpdGUtc3BhY2U6IHByZS13 +cmFwOyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48c3BhbiBtZC1pbmxpbmU9InBsYWluIiBjbGFzcz0i +bWQtcGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+5pel5bi45LqL5YqhMe+8 +mjIwMjUtMDctMjkg5Li75pWw5o2u5Yqo5oCB5a2X5q615LyY5YyWPC9zcGFuPjwvcD48L2xpPjxs +aSBjbGFzcz0ibWQtbGlzdC1pdGVtIiBjaWQ9Im4xNyIgbWR0eXBlPSJsaXN0X2l0ZW0iIHN0eWxl +PSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcG9zaXRpb246IHJlbGF0aXZl +OyI+PHAgY2lkPSJuMTgiIG1kdHlwZT0icGFyYWdyYXBoIiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1k +LXAiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5oZXJpdDsg +b3JwaGFuczogNDsgbWFyZ2luOiAwcHggMHB4IDAuNXJlbTsgd2hpdGUtc3BhY2U6IHByZS13cmFw +OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48c3BhbiBtZC1pbmxpbmU9InBsYWluIiBjbGFzcz0ibWQt +cGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+5pel5bi45LqL5YqhMu+8mjIw +MjUtMDctMzAg5a2Y6LSn566h55CG5YeG55Sf5Lqn6aqM6K+B5LyY5YyWPC9zcGFuPjwvcD48L2xp +PjxsaSBjbGFzcz0ibWQtbGlzdC1pdGVtIiBjaWQ9Im44NCIgbWR0eXBlPSJsaXN0X2l0ZW0iIHN0 +eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcG9zaXRpb246IHJlbGF0 +aXZlOyI+PHAgY2lkPSJuODUiIG1kdHlwZT0icGFyYWdyYXBoIiBjbGFzcz0ibWQtZW5kLWJsb2Nr +IG1kLXAiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5oZXJp +dDsgb3JwaGFuczogNDsgbWFyZ2luOiAwcHggMHB4IDAuNXJlbTsgd2hpdGUtc3BhY2U6IHByZS13 +cmFwOyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48c3BhbiBtZC1pbmxpbmU9InBsYWluIiBjbGFzcz0i +bWQtcGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+5pel5bi45LqL5YqhM++8 +mjIwMjUtMDctMzEg5a2Y6LSn566h55CG5YeG55Sf5Lqn6aqM6K+B5pSv5oyBPC9zcGFuPjwvcD48 +L2xpPjxsaSBjbGFzcz0ibWQtbGlzdC1pdGVtIiBjaWQ9Im45MSIgbWR0eXBlPSJsaXN0X2l0ZW0i +IHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcG9zaXRpb246IHJl +bGF0aXZlOyI+PHAgY2lkPSJuODkiIG1kdHlwZT0icGFyYWdyYXBoIiBjbGFzcz0ibWQtZW5kLWJs +b2NrIG1kLXAiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5o +ZXJpdDsgb3JwaGFuczogNDsgbWFyZ2luOiAwcHggMHB4IDAuNXJlbTsgd2hpdGUtc3BhY2U6IHBy +ZS13cmFwOyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48c3BhbiBtZC1pbmxpbmU9InBsYWluIiBjbGFz +cz0ibWQtcGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+5pel5bi45LqL5Yqh +NO+8mjUuMS4z54mI5pys6ZyA5rGC6K+E5a6h5LiO5byA5Y+R5pa55qGI6K6+6K6hPC9zcGFuPjwv +cD48L2xpPjwvdWw+PGxpIGNsYXNzPSJtZC1saXN0LWl0ZW0iIGNpZD0ibjE5IiBtZHR5cGU9Imxp +c3RfaXRlbSIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBwb3Np +dGlvbjogcmVsYXRpdmU7Ij48cCBjaWQ9Im4yMCIgbWR0eXBlPSJwYXJhZ3JhcGgiIGNsYXNzPSJt +ZC1lbmQtYmxvY2sgbWQtcCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGxpbmUtaGVp +Z2h0OiBpbmhlcml0OyBvcnBoYW5zOiA0OyBtYXJnaW46IDBweCAwcHggMC41cmVtOyB3aGl0ZS1z +cGFjZTogcHJlLXdyYXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxzcGFuIG1kLWlubGluZT0ic3Ry +b25nIiBjbGFzcz0ibWQtcGFpci1zICIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij48 +c3Ryb25nIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+PHNwYW4gbWQtaW5saW5lPSJw +bGFpbiIgY2xhc3M9Im1kLXBsYWluIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPuWt +mOWcqOmXrumimOaIlumcgOaUr+aMgeS6i+mhuTwvc3Bhbj48L3N0cm9uZz48L3NwYW4+PC9wPjxw +IGNpZD0ibjEwMCIgbWR0eXBlPSJwYXJhZ3JhcGgiIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCIg +c3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhlcml0OyBvcnBo +YW5zOiA0OyBtYXJnaW46IDAuNXJlbSAwcHg7IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRp +b246IHJlbGF0aXZlOyI+PHNwYW4gbWQtaW5saW5lPSJwbGFpbiIgY2xhc3M9Im1kLXBsYWluIiBz +dHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPuaXoDwvc3Bhbj48L3A+PC9saT48L29sPjxk +aXYgdGFiaW5kZXg9Ii0xIiBjaWQ9Im4yNCIgbWR0eXBlPSJociIgY2xhc3M9Im1kLWhyIG1kLWVu +ZC1ibG9jayIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGNvbG9yOiByZ2IoNTEsIDUx +LCA1MSk7IGZvbnQtZmFtaWx5OiAmcXVvdDtPcGVuIFNhbnMmcXVvdDssICZxdW90O0NsZWFyIFNh +bnMmcXVvdDssICZxdW90O0hlbHZldGljYSBOZXVlJnF1b3Q7LCBIZWx2ZXRpY2EsIEFyaWFsLCBz +YW5zLXNlcmlmOyBmb250LXNpemU6IDE2cHg7Ij48aHIgc3R5bGU9ImJveC1zaXppbmc6IGNvbnRl +bnQtYm94OyBoZWlnaHQ6IDJweDsgbWFyZ2luOiAxNnB4IDBweDsgYm9yZGVyOiAwcHggbm9uZTsg +cGFkZGluZzogMHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjMxLCAyMzEsIDIzMSk7Ij48L2Rp +dj48aDMgY2lkPSJuMjUiIG1kdHlwZT0iaGVhZGluZyIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1o +ZWFkaW5nIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgYnJlYWstYWZ0ZXI6IGF2b2lk +LXBhZ2U7IGJyZWFrLWluc2lkZTogYXZvaWQ7IG9ycGhhbnM6IDQ7IGZvbnQtc2l6ZTogMS41ZW07 +IG1hcmdpbi10b3A6IDFyZW07IG1hcmdpbi1ib3R0b206IDFyZW07IHBvc2l0aW9uOiByZWxhdGl2 +ZTsgbGluZS1oZWlnaHQ6IDEuNDM7IGN1cnNvcjogdGV4dDsgd2hpdGUtc3BhY2U6IHByZS13cmFw +OyBjb2xvcjogcmdiKDUxLCA1MSwgNTEpOyBmb250LWZhbWlseTogJnF1b3Q7T3BlbiBTYW5zJnF1 +b3Q7LCAmcXVvdDtDbGVhciBTYW5zJnF1b3Q7LCAmcXVvdDtIZWx2ZXRpY2EgTmV1ZSZxdW90Oywg +SGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjsiPjxzcGFuIG1kLWlubGluZT0ic3Ryb25nIiBj +bGFzcz0ibWQtcGFpci1zICIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij48c3Ryb25n +IHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+PHNwYW4gbWQtaW5saW5lPSJwbGFpbiIg +Y2xhc3M9Im1kLXBsYWluIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPuS6jOOAgeS4 +i+WRqOW3peS9nOiuoeWIkjwvc3Bhbj48L3N0cm9uZz48L3NwYW4+PC9oMz48b2wgY2xhc3M9Im9s +LWxpc3QiIHN0YXJ0PSIiIGNpZD0ibjI2IiBtZHR5cGU9Imxpc3QiIHN0eWxlPSJib3gtc2l6aW5n +OiBib3JkZXItYm94OyBtYXJnaW46IDAuOGVtIDBweDsgcGFkZGluZy1sZWZ0OiAzMHB4OyBwb3Np +dGlvbjogcmVsYXRpdmU7IGNvbG9yOiByZ2IoNTEsIDUxLCA1MSk7IGZvbnQtZmFtaWx5OiAmcXVv +dDtPcGVuIFNhbnMmcXVvdDssICZxdW90O0NsZWFyIFNhbnMmcXVvdDssICZxdW90O0hlbHZldGlj +YSBOZXVlJnF1b3Q7LCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDE2 +cHg7Ij48bGkgY2xhc3M9Im1kLWxpc3QtaXRlbSIgY2lkPSJuMjciIG1kdHlwZT0ibGlzdF9pdGVt +IiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBvc2l0aW9uOiBy +ZWxhdGl2ZTsiPjxwIGNpZD0ibjI4IiBtZHR5cGU9InBhcmFncmFwaCIgY2xhc3M9Im1kLWVuZC1i +bG9jayBtZC1wIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGlu +aGVyaXQ7IG9ycGhhbnM6IDQ7IG1hcmdpbjogMHB4IDBweCAwLjVyZW07IHdoaXRlLXNwYWNlOiBw +cmUtd3JhcDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHNwYW4gbWQtaW5saW5lPSJzdHJvbmciIGNs +YXNzPSJtZC1wYWlyLXMgIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPjxzdHJvbmcg +c3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij48c3BhbiBtZC1pbmxpbmU9InBsYWluIiBj +bGFzcz0ibWQtcGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+6YeN54K55Lu7 +5YqhPC9zcGFuPjwvc3Ryb25nPjwvc3Bhbj48L3A+PC9saT48dWwgY2xhc3M9InVsLWxpc3QiIGNp +ZD0ibjI5IiBtZHR5cGU9Imxpc3QiIGRhdGEtbWFyaz0iLSIgc3R5bGU9ImJveC1zaXppbmc6IGJv +cmRlci1ib3g7IG1hcmdpbjogMHB4OyBwYWRkaW5nLWxlZnQ6IDMwcHg7IHBvc2l0aW9uOiByZWxh +dGl2ZTsiPjxsaSBjbGFzcz0ibWQtbGlzdC1pdGVtIiBjaWQ9Im4zMCIgbWR0eXBlPSJsaXN0X2l0 +ZW0iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcG9zaXRpb246 +IHJlbGF0aXZlOyI+PHAgY2lkPSJuMzEiIG1kdHlwZT0icGFyYWdyYXBoIiBjbGFzcz0ibWQtZW5k +LWJsb2NrIG1kLXAiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdodDog +aW5oZXJpdDsgb3JwaGFuczogNDsgbWFyZ2luOiAwcHggMHB4IDAuNXJlbTsgd2hpdGUtc3BhY2U6 +IHByZS13cmFwOyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48c3BhbiBtZC1pbmxpbmU9InBsYWluIiBj +bGFzcz0ibWQtcGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+6K6h5YiSMe+8 +mkc15Li75pWw5o2u5LyY5YyW6ZyA5rGC5byA5Y+RPC9zcGFuPjwvcD48L2xpPjxsaSBjbGFzcz0i +bWQtbGlzdC1pdGVtIiBjaWQ9Im4zMiIgbWR0eXBlPSJsaXN0X2l0ZW0iIHN0eWxlPSJib3gtc2l6 +aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHAgY2lk +PSJuMzMiIG1kdHlwZT0icGFyYWdyYXBoIiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLXAiIHN0eWxl +PSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5oZXJpdDsgb3JwaGFuczog +NDsgbWFyZ2luOiAwcHggMHB4IDAuNXJlbTsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyBwb3NpdGlv +bjogcmVsYXRpdmU7Ij48c3BhbiBtZC1pbmxpbmU9InBsYWluIiBjbGFzcz0ibWQtcGxhaW4iIHN0 +eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+6K6h5YiSMu+8mkcz5a2Y6LSn566h55CG5a6i +5oi36K+V55So5byA5Y+R5pSv5pKRPC9zcGFuPjwvcD48L2xpPjwvdWw+PGxpIGNsYXNzPSJtZC1s +aXN0LWl0ZW0iIGNpZD0ibjM0IiBtZHR5cGU9Imxpc3RfaXRlbSIgc3R5bGU9ImJveC1zaXppbmc6 +IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48cCBjaWQ9Im4z +NSIgbWR0eXBlPSJwYXJhZ3JhcGgiIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCIgc3R5bGU9ImJv +eC1zaXppbmc6IGJvcmRlci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhlcml0OyBvcnBoYW5zOiA0OyBt +YXJnaW46IDBweCAwcHggMC41cmVtOyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0aW9uOiBy +ZWxhdGl2ZTsiPjxzcGFuIG1kLWlubGluZT0ic3Ryb25nIiBjbGFzcz0ibWQtcGFpci1zICIgc3R5 +bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij48c3Ryb25nIHN0eWxlPSJib3gtc2l6aW5nOiBi +b3JkZXItYm94OyI+PHNwYW4gbWQtaW5saW5lPSJwbGFpbiIgY2xhc3M9Im1kLXBsYWluIiBzdHls +ZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPuWFtuS7luS6i+mhuTwvc3Bhbj48L3N0cm9uZz48 +L3NwYW4+PC9wPjxwIGNpZD0ibjM4IiBtZHR5cGU9InBhcmFncmFwaCIgY2xhc3M9Im1kLWVuZC1i +bG9jayBtZC1wIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGlu +aGVyaXQ7IG9ycGhhbnM6IDQ7IG1hcmdpbjogMC41cmVtIDBweDsgd2hpdGUtc3BhY2U6IHByZS13 +cmFwOyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48c3BhbiBtZC1pbmxpbmU9InBsYWluIiBjbGFzcz0i +bWQtcGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+5pegPC9zcGFuPjwvcD48 +L2xpPjwvb2w+PGRpdiB0YWJpbmRleD0iLTEiIGNpZD0ibjM5IiBtZHR5cGU9ImhyIiBjbGFzcz0i +bWQtaHIgbWQtZW5kLWJsb2NrIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgY29sb3I6 +IHJnYig1MSwgNTEsIDUxKTsgZm9udC1mYW1pbHk6ICZxdW90O09wZW4gU2FucyZxdW90OywgJnF1 +b3Q7Q2xlYXIgU2FucyZxdW90OywgJnF1b3Q7SGVsdmV0aWNhIE5ldWUmcXVvdDssIEhlbHZldGlj +YSwgQXJpYWwsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTZweDsiPjxociBzdHlsZT0iYm94LXNp +emluZzogY29udGVudC1ib3g7IGhlaWdodDogMnB4OyBtYXJnaW46IDE2cHggMHB4OyBib3JkZXI6 +IDBweCBub25lOyBwYWRkaW5nOiAwcHg7IGJhY2tncm91bmQtY29sb3I6IHJnYigyMzEsIDIzMSwg +MjMxKTsiPjwvZGl2PjxwIGNpZD0ibjQwIiBtZHR5cGU9InBhcmFncmFwaCIgY2xhc3M9Im1kLWVu +ZC1ibG9jayBtZC1wIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6 +IGluaGVyaXQ7IG9ycGhhbnM6IDQ7IG1hcmdpbjogMC44ZW0gMHB4OyB3aGl0ZS1zcGFjZTogcHJl +LXdyYXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsgY29sb3I6IHJnYig1MSwgNTEsIDUxKTsgZm9udC1m +YW1pbHk6ICZxdW90O09wZW4gU2FucyZxdW90OywgJnF1b3Q7Q2xlYXIgU2FucyZxdW90OywgJnF1 +b3Q7SGVsdmV0aWNhIE5ldWUmcXVvdDssIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7IGZv +bnQtc2l6ZTogMTZweDsiPjxzcGFuIG1kLWlubGluZT0ic3Ryb25nIiBjbGFzcz0ibWQtcGFpci1z +ICIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij48c3Ryb25nIHN0eWxlPSJib3gtc2l6 +aW5nOiBib3JkZXItYm94OyI+PHNwYW4gbWQtaW5saW5lPSJwbGFpbiIgY2xhc3M9Im1kLXBsYWlu +IiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPuWkh+azqDwvc3Bhbj48L3N0cm9uZz48 +L3NwYW4+PHNwYW4gbWQtaW5saW5lPSJwbGFpbiIgY2xhc3M9Im1kLXBsYWluIG1kLWV4cGFuZCIg +c3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij7vvJrml6A8L3NwYW4+PC9wPjwvZGl2Pjxk +aXY+PGJyPjwvZGl2PjxkaXYgc3BlbGxjaGVjaz0iZmFsc2UiIGlkPSJudGVzLXBjbWFjLXNpZ25h +dHVyZSIgc3R5bGU9ImZvbnQtZmFtaWx5OuW+rui9r+mbhem7kSIgZGF0YS1udGVzLXNpZ25hdHVy +ZT0idHJ1ZSI+PGRpdiBzdHlsZT0iZm9udC1zaXplOjE0cHg7cGFkZGluZzowO21hcmdpbjowIj48 +ZGl2IHN0eWxlPSJwYWRkaW5nLWJvdHRvbToxMHB4O21hcmdpbi1ib3R0b206MTBweDtkaXNwbGF5 +OmlubGluZS1ibG9jayI+PGRpdiBzdHlsZT0iZm9udC1mYW1pbHk6JnF1b3Q75b6u6L2v6ZuF6buR +JnF1b3Q7OyBmb250LXNpemU6IDE0cHg7IGNvbG9yOiMwMDAwMDAiPgogICAgPHN0eWxlPgogICAg +ICAgIGZvbnR7CiAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAxLjY7CiAgICAgICAgfQogICAgPC9z +dHlsZT4KPGRpdiBzdHlsZT0iZm9udC1mYW1pbHk6JnF1b3Q75b6u6L2v6ZuF6buRJnF1b3Q7OyBm +b250LXNpemU6IDE0cHg7IGNvbG9yOiMwMDAwMDAiPgogICAgPHN0eWxlPgogICAgICAgIGZvbnR7 +CiAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAxLjY7CiAgICAgICAgfQogICAgPC9zdHlsZT4KPGRp +diBzdHlsZT0iZm9udC1mYW1pbHk6JnF1b3Q75b6u6L2v6ZuF6buRJnF1b3Q7OyBmb250LXNpemU6 +IDE0cHg7IGNvbG9yOiMwMDAwMDAiPgogICAgPHN0eWxlPgogICAgICAgIGZvbnR7CiAgICAgICAg +ICAgIGxpbmUtaGVpZ2h0OiAxLjY7CiAgICAgICAgfQogICAgPC9zdHlsZT4KPGRpdiBzdHlsZT0i +Zm9udC1mYW1pbHk6JnF1b3Q75b6u6L2v6ZuF6buRJnF1b3Q7OyBmb250LXNpemU6IDE0cHg7IGNv +bG9yOiMwMDAwMDAiPgogICAgPHN0eWxlPgogICAgICAgIGZvbnR7CiAgICAgICAgICAgIGxpbmUt +aGVpZ2h0OiAxLjY7CiAgICAgICAgfQogICAgPC9zdHlsZT4KPHNwYW4gc3R5bGU9ImNvbG9yOiBy +Z2IoMTkxLCAxOTEsIDE5MSk7IGZvbnQtZmFtaWx5OiAnTWljcm9zb2Z0IFlhaGVpJzsgZm9udC1z +aXplOiAxM3B4OyBvcnBoYW5zOiAyOyB3aWRvd3M6IDI7Ij5CZXN0IHJlZ2FyZHMsPC9zcGFuPjxk +aXYgc3R5bGU9Im1hcmdpbjogMHB4OyBwYWRkaW5nOiAwcHg7IGJvcmRlcjogMHB4OyBvdXRsaW5l +OiAwcHg7IGZvbnQtZmFtaWx5OiBUYWhvbWEsIEFyaWFsLCBTVEhlaXRpLCBTaW1TdW47IGZvbnQt +dmFyaWFudC1saWdhdHVyZXM6IG5vcm1hbDsgb3JwaGFuczogMjsgd2lkb3dzOiAyOyBjbGVhcjog +Ym90aDsiPjxzcGFuIHN0eWxlPSJtYXJnaW46IDBweDsgcGFkZGluZzogMHB4OyBib3JkZXI6IDBw +eDsgb3V0bGluZTogMHB4OyBmb250LWZhbWlseTogJnF1b3Q7TWljcm9zb2Z0IFlhaGVpJnF1b3Q7 +OyBmb250LXNpemU6IDEzcHg7IGNvbG9yOiByZ2IoMTkxLCAxOTEsIDE5MSk7Ij7mnajovak8L3Nw +YW4+PC9kaXY+PGRpdiBzdHlsZT0ibWFyZ2luOiAwcHg7IHBhZGRpbmc6IDBweDsgYm9yZGVyOiAw +cHg7IG91dGxpbmU6IDBweDsgZm9udC1mYW1pbHk6IFRhaG9tYSwgQXJpYWwsIFNUSGVpdGksIFNp +bVN1bjsgZm9udC12YXJpYW50LWxpZ2F0dXJlczogbm9ybWFsOyBvcnBoYW5zOiAyOyB3aWRvd3M6 +IDI7IGNsZWFyOiBib3RoOyI+PC9kaXY+PGRpdiBzdHlsZT0ibWFyZ2luOiAwcHg7IHBhZGRpbmc6 +IDBweDsgYm9yZGVyOiAwcHg7IG91dGxpbmU6IDBweDsgZm9udC1mYW1pbHk6IFRhaG9tYSwgQXJp +YWwsIFNUSGVpdGksIFNpbVN1bjsgZm9udC12YXJpYW50LWxpZ2F0dXJlczogbm9ybWFsOyBvcnBo +YW5zOiAyOyB3aWRvd3M6IDI7IGNsZWFyOiBib3RoOyI+PGltZyBzdHlsZT0ibWF4LXdpZHRoOiB1 +bnNldDsiIHNyYz0iaHR0cHM6Ly9tYWlsLW9ubGluZS5ub3Nkbi4xMjcubmV0L3d6cG1tYy9jZTlm +OGIzNmUxZmZiZTU1MzI5YzE5NmM4NGZlNTE5Ny5wbmciPjwvZGl2PjxkaXYgc3R5bGU9Im1hcmdp +bjogMHB4OyBwYWRkaW5nOiAwcHg7IGJvcmRlcjogMHB4OyBvdXRsaW5lOiAwcHg7IGZvbnQtZmFt +aWx5OiBUYWhvbWEsIEFyaWFsLCBTVEhlaXRpLCBTaW1TdW47IGZvbnQtdmFyaWFudC1saWdhdHVy +ZXM6IG5vcm1hbDsgb3JwaGFuczogMjsgd2lkb3dzOiAyOyBjbGVhcjogYm90aDsiPjxzcGFuIHN0 +eWxlPSJtYXJnaW46IDBweDsgcGFkZGluZzogMHB4OyBib3JkZXI6IDBweDsgb3V0bGluZTogMHB4 +OyBmb250LWZhbWlseTogJnF1b3Q7TWljcm9zb2Z0IFlhaGVpJnF1b3Q7OyBjb2xvcjogcmdiKDE5 +MSwgMTkxLCAxOTEpOyI+5Zyw5Z2A77ya5Lit5Zu9wrfljZfkuqzova/ku7bosLfova/ku7blpKfp +gZMgMTEg5Y+36Iqx56We5aSn5Y6mIDItM0Y8L3NwYW4+PC9kaXY+PGRpdiBzdHlsZT0ibWFyZ2lu +OiAwcHg7IHBhZGRpbmc6IDBweDsgYm9yZGVyOiAwcHg7IG91dGxpbmU6IDBweDsgZm9udC1mYW1p +bHk6IFRhaG9tYSwgQXJpYWwsIFNUSGVpdGksIFNpbVN1bjsgZm9udC12YXJpYW50LWxpZ2F0dXJl +czogbm9ybWFsOyBvcnBoYW5zOiAyOyB3aWRvd3M6IDI7IGNsZWFyOiBib3RoOyI+PHNwYW4gc3R5 +bGU9Im1hcmdpbjogMHB4OyBwYWRkaW5nOiAwcHg7IGJvcmRlcjogMHB4OyBvdXRsaW5lOiAwcHg7 +IGZvbnQtZmFtaWx5OiAmcXVvdDtNaWNyb3NvZnQgWWFoZWkmcXVvdDs7IGNvbG9yOiByZ2IoMTkx +LCAxOTEsIDE5MSk7Ij7miYvmnLrvvJoxODcyNjEyODQ4OTwvc3Bhbj48L2Rpdj48ZGl2IHN0eWxl +PSJtYXJnaW46IDBweDsgcGFkZGluZzogMHB4OyBib3JkZXI6IDBweDsgb3V0bGluZTogMHB4OyBm +b250LWZhbWlseTogVGFob21hLCBBcmlhbCwgU1RIZWl0aSwgU2ltU3VuOyBmb250LXZhcmlhbnQt +bGlnYXR1cmVzOiBub3JtYWw7IG9ycGhhbnM6IDI7IHdpZG93czogMjsgY2xlYXI6IGJvdGg7Ij48 +c3BhbiBzdHlsZT0ibWFyZ2luOiAwcHg7IHBhZGRpbmc6IDBweDsgYm9yZGVyOiAwcHg7IG91dGxp +bmU6IDBweDsgZm9udC1mYW1pbHk6ICZxdW90O01pY3Jvc29mdCBZYWhlaSZxdW90OzsgY29sb3I6 +IHJnYigxOTEsIDE5MSwgMTkxKTsiPumCrueuse+8mnlhbmd4dWFuQHdpdHNvZnQuY248L3NwYW4+ +PC9kaXY+CjwvZGl2Pgo8L2Rpdj4KPC9kaXY+CjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2 +PjwhLS3wn5iALS0+PC9kaXY+PC9kaXY+PC9ib2R5PjwvaHRtbD4= + +--=_mailmaster-6a18e4a4_0_29_=-- diff --git a/media/inbound/2025-08-08_1700_G5开发周报_2025-08-04_--_2025-08-08---d9b4f228-64c1-430f-ae05-cf880d07e361.eml b/media/inbound/2025-08-08_1700_G5开发周报_2025-08-04_--_2025-08-08---d9b4f228-64c1-430f-ae05-cf880d07e361.eml new file mode 100644 index 0000000..8ae17d2 --- /dev/null +++ b/media/inbound/2025-08-08_1700_G5开发周报_2025-08-04_--_2025-08-08---d9b4f228-64c1-430f-ae05-cf880d07e361.eml @@ -0,0 +1,317 @@ +Date: Fri, 8 Aug 2025 17:00:01 +0800 +From: yangxuan +To: =?utf-8?B?5YiY5by6?= +Cc: =?utf-8?B?5bGI5paw6b6Z?= , =?utf-8?B?5pyx5paM?= + , =?utf-8?B?6ZmI5piO?= , + =?utf-8?Q?xym=40witsoft.cn?= , + =?utf-8?Q?zengli=40witsoft.cn?= +Message-ID: <868E7610-012F-46DD-9AE6-B6B0B6F91F4F@witsoft.cn> +Subject: =?utf-8?B?RzXlvIDlj5HlkajmiqXjgJAyMDI1LTA4LTA0IC0tICAyMDI1LTA4?= + =?utf-8?B?LTA444CR?= +MIME-Version: 1.0 +Content-Type: multipart/alternative; boundary="=_mailmaster-6a18e4a4_0_4823_=" + +--=_mailmaster-6a18e4a4_0_4823_= +Content-Type: text/plain; charset="utf-8" +Content-Transfer-Encoding: base64 + +5oKo5aW977yB5Lul5LiL5piv5oiR5pys5ZGo55qE5bel5L2c5oC757uT5Y+K5LiL5ZGo6K6h5YiS +77yM6K+35a6h6ZiF44CCCuS4gOOAgeacrOWRqOW3peS9nOaAu+e7kwrph43ngrnlt6XkvZzlrozm +iJDmg4XlhrUK5Lu75YqhMe+8mkc15Li75pWw5o2u5LyY5YyW6ZyA5rGCCuS7u+WKoTLvvJpHNeS4 +u+aVsOaNrueJqeaWmeS/oeaBr+WKqOaAgeaooeadv+WvvOWFpQrluLjop4Tlt6XkvZwK5pel5bi4 +5LqL5YqhMe+8mjIwMjUtMDgtMDQg54mp5paZ5L+h5oGv5pSv5oyB5aSa6ZmE5Lu25LiK5LygIOS7 +k+W6k+W3peW6j+WFs+iBlOWPlua2iOi9pumXtOiBlOe6p+mAieaLqSDkuJrliqHlj4LmlbDphY3n +va7kvJjljJYg5pu/5o2i54mp5paZ5aKe5Yqg5pu/5o2i5pWw6YePIArml6XluLjkuovliqEy77ya +MjAyNS0wOC0wNSDliqjmgIHnlJ/miJDlr7zlhaXmqKHmnb/kuI7op6PmnpAgCuaXpeW4uOS6i+WK +oTPvvJoyMDI1LTA4LTA2IOWKqOaAgeWtl+auteagoemqjOS4juagvOW8j+WMlgrml6XluLjkuovl +iqE077yaMjAyNS0wOC0wNyDnianmlpnkv6Hmga/lr7zlh7rnpLrkvosK5pel5bi45LqL5YqhNe+8 +mjIwMjUtMDgtMDgg54mp5paZ5L+h5oGv5om56YeP5a+85YWl5qih5p2/5LiO6Kej5p6QCuWtmOWc +qOmXrumimOaIlumcgOaUr+aMgeS6i+mhuQrliqjmgIHlrZfmrrXlr7zlhaXlr7zlh7rpl67popjo +voPlpJosMjAyNS0wOC0wOeWKoOePreino+WGswrkuozjgIHkuIvlkajlt6XkvZzorqHliJIK6YeN +54K55Lu75YqhCuiuoeWIkjHvvJpHNeS4u+aVsOaNrueJqeaWmeS/oeaBr+WKqOaAgeWtl+auteWv +vOWFpemcgOaxguiHqua1i+i9rOa1i+e7k+adnwrorqHliJIy77yaRzXkuLvmlbDmja41LjEuNOeJ +iOacrOW8gOWkpwrlhbbku5bkuovpobkK5pegCuWkh+azqO+8muaXoApCZXN0IHJlZ2FyZHMs5p2o +6L2pCuWcsOWdgO+8muS4reWbvcK35Y2X5Lqs6L2v5Lu26LC36L2v5Lu25aSn6YGTIDExIOWPt+iK +seelnuWkp+WOpiAyLTNGCuaJi+acuu+8mjE4NzI2MTI4NDg5CumCrueuse+8mnlhbmd4dWFuQHdp +dHNvZnQuY24= + +--=_mailmaster-6a18e4a4_0_4823_= +Content-Type: text/html; charset="utf-8" +Content-Transfer-Encoding: base64 + +PGh0bWw+PGhlYWQ+PG1ldGEgaHR0cC1lcXVpdj0nQ29udGVudC1UeXBlJyBjb250ZW50PSd0ZXh0 +L2h0bWw7IGNoYXJzZXQ9VVRGLTgnPjwvaGVhZD48Ym9keSBzdHlsZT1saW5lLWhlaWdodDogMS41 +O2ZvbnQtZmFtaWx5OiAi5b6u6L2v6ZuF6buRIj48ZGl2ICBzdHlsZT0iZm9udC1mYW1pbHk6IOW+ +rui9r+mbhem7kTsiPjxkaXYgc3R5bGU9ImZvbnQtZmFtaWx5OiDlvq7ova/pm4Xpu5E7Ij48ZGl2 +IHN0eWxlPSJmb250LWZhbWlseTog5b6u6L2v6ZuF6buROyI+PGRpdj48cCBjaWQ9Im4wIiBtZHR5 +cGU9InBhcmFncmFwaCIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1wIG1kLWZvY3VzIiBzdHlsZT0i +Ym94LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IG9ycGhhbnM6IDQ7 +IG1hcmdpbjogMC44ZW0gMHB4OyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0aW9uOiByZWxh +dGl2ZTsgY29sb3I6IHJnYig1MSwgNTEsIDUxKTsgZm9udC1mYW1pbHk6ICZxdW90O09wZW4gU2Fu +cyZxdW90OywgJnF1b3Q7Q2xlYXIgU2FucyZxdW90OywgJnF1b3Q7SGVsdmV0aWNhIE5ldWUmcXVv +dDssIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTZweDsiPjxzcGFu +IG1kLWlubGluZT0icGxhaW4iIGNsYXNzPSJtZC1wbGFpbiBtZC1leHBhbmQiIHN0eWxlPSJib3gt +c2l6aW5nOiBib3JkZXItYm94OyI+5oKo5aW977yB5Lul5LiL5piv5oiR5pys5ZGo55qE5bel5L2c +5oC757uT5Y+K5LiL5ZGo6K6h5YiS77yM6K+35a6h6ZiF44CCPC9zcGFuPjwvcD48ZGl2IHRhYmlu +ZGV4PSItMSIgY2lkPSJuMiIgbWR0eXBlPSJociIgY2xhc3M9Im1kLWhyIG1kLWVuZC1ibG9jayIg +c3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGNvbG9yOiByZ2IoNTEsIDUxLCA1MSk7IGZv +bnQtZmFtaWx5OiAmcXVvdDtPcGVuIFNhbnMmcXVvdDssICZxdW90O0NsZWFyIFNhbnMmcXVvdDss +ICZxdW90O0hlbHZldGljYSBOZXVlJnF1b3Q7LCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlm +OyBmb250LXNpemU6IDE2cHg7Ij48aHIgc3R5bGU9ImJveC1zaXppbmc6IGNvbnRlbnQtYm94OyBo +ZWlnaHQ6IDJweDsgbWFyZ2luOiAxNnB4IDBweDsgYm9yZGVyOiAwcHggbm9uZTsgcGFkZGluZzog +MHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjMxLCAyMzEsIDIzMSk7Ij48L2Rpdj48aDMgY2lk +PSJuMyIgbWR0eXBlPSJoZWFkaW5nIiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLWhlYWRpbmciIHN0 +eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBicmVhay1hZnRlcjogYXZvaWQtcGFnZTsgYnJl +YWstaW5zaWRlOiBhdm9pZDsgb3JwaGFuczogNDsgZm9udC1zaXplOiAxLjVlbTsgbWFyZ2luLXRv +cDogMXJlbTsgbWFyZ2luLWJvdHRvbTogMXJlbTsgcG9zaXRpb246IHJlbGF0aXZlOyBsaW5lLWhl +aWdodDogMS40MzsgY3Vyc29yOiB0ZXh0OyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IGNvbG9yOiBy +Z2IoNTEsIDUxLCA1MSk7IGZvbnQtZmFtaWx5OiAmcXVvdDtPcGVuIFNhbnMmcXVvdDssICZxdW90 +O0NsZWFyIFNhbnMmcXVvdDssICZxdW90O0hlbHZldGljYSBOZXVlJnF1b3Q7LCBIZWx2ZXRpY2Es +IEFyaWFsLCBzYW5zLXNlcmlmOyI+PHNwYW4gbWQtaW5saW5lPSJzdHJvbmciIGNsYXNzPSJtZC1w +YWlyLXMgIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPjxzdHJvbmcgc3R5bGU9ImJv +eC1zaXppbmc6IGJvcmRlci1ib3g7Ij48c3BhbiBtZC1pbmxpbmU9InBsYWluIiBjbGFzcz0ibWQt +cGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+5LiA44CB5pys5ZGo5bel5L2c +5oC757uTPC9zcGFuPjwvc3Ryb25nPjwvc3Bhbj48L2gzPjxvbCBjbGFzcz0ib2wtbGlzdCIgc3Rh +cnQ9IiIgY2lkPSJuNCIgbWR0eXBlPSJsaXN0IiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJv +eDsgbWFyZ2luOiAwLjhlbSAwcHg7IHBhZGRpbmctbGVmdDogMzBweDsgcG9zaXRpb246IHJlbGF0 +aXZlOyBjb2xvcjogcmdiKDUxLCA1MSwgNTEpOyBmb250LWZhbWlseTogJnF1b3Q7T3BlbiBTYW5z +JnF1b3Q7LCAmcXVvdDtDbGVhciBTYW5zJnF1b3Q7LCAmcXVvdDtIZWx2ZXRpY2EgTmV1ZSZxdW90 +OywgSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxNnB4OyI+PGxpIGNs +YXNzPSJtZC1saXN0LWl0ZW0iIGNpZD0ibjUiIG1kdHlwZT0ibGlzdF9pdGVtIiBzdHlsZT0iYm94 +LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxw +IGNpZD0ibjYiIG1kdHlwZT0icGFyYWdyYXBoIiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLXAiIHN0 +eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5oZXJpdDsgb3JwaGFu +czogNDsgbWFyZ2luOiAwcHggMHB4IDAuNXJlbTsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyBwb3Np +dGlvbjogcmVsYXRpdmU7Ij48c3BhbiBtZC1pbmxpbmU9InN0cm9uZyIgY2xhc3M9Im1kLXBhaXIt +cyAiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+PHN0cm9uZyBzdHlsZT0iYm94LXNp +emluZzogYm9yZGVyLWJveDsiPjxzcGFuIG1kLWlubGluZT0icGxhaW4iIGNsYXNzPSJtZC1wbGFp +biIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij7ph43ngrnlt6XkvZzlrozmiJDmg4Xl +hrU8L3NwYW4+PC9zdHJvbmc+PC9zcGFuPjwvcD48L2xpPjx1bCBjbGFzcz0idWwtbGlzdCIgY2lk +PSJuNyIgbWR0eXBlPSJsaXN0IiBkYXRhLW1hcms9Ii0iIHN0eWxlPSJib3gtc2l6aW5nOiBib3Jk +ZXItYm94OyBtYXJnaW46IDBweDsgcGFkZGluZy1sZWZ0OiAzMHB4OyBwb3NpdGlvbjogcmVsYXRp +dmU7Ij48bGkgY2xhc3M9Im1kLWxpc3QtaXRlbSIgY2lkPSJuOCIgbWR0eXBlPSJsaXN0X2l0ZW0i +IHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcG9zaXRpb246IHJl +bGF0aXZlOyI+PHAgY2lkPSJuOSIgbWR0eXBlPSJwYXJhZ3JhcGgiIGNsYXNzPSJtZC1lbmQtYmxv +Y2sgbWQtcCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhl +cml0OyBvcnBoYW5zOiA0OyBtYXJnaW46IDBweCAwcHggMC41cmVtOyB3aGl0ZS1zcGFjZTogcHJl +LXdyYXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxzcGFuIG1kLWlubGluZT0icGxhaW4iIGNsYXNz +PSJtZC1wbGFpbiIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij7ku7vliqEx77yaRzXk +uLvmlbDmja7kvJjljJbpnIDmsYI8L3NwYW4+PC9wPjwvbGk+PGxpIGNsYXNzPSJtZC1saXN0LWl0 +ZW0iIGNpZD0ibjEwIiBtZHR5cGU9Imxpc3RfaXRlbSIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRl +ci1ib3g7IG1hcmdpbjogMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48cCBjaWQ9Im4xMSIgbWR0 +eXBlPSJwYXJhZ3JhcGgiIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCIgc3R5bGU9ImJveC1zaXpp +bmc6IGJvcmRlci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhlcml0OyBvcnBoYW5zOiA0OyBtYXJnaW46 +IDBweCAwcHggMC41cmVtOyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0aW9uOiByZWxhdGl2 +ZTsiPjxzcGFuIG1kLWlubGluZT0icGxhaW4iIGNsYXNzPSJtZC1wbGFpbiIgc3R5bGU9ImJveC1z +aXppbmc6IGJvcmRlci1ib3g7Ij7ku7vliqEy77yaPC9zcGFuPkc15Li75pWw5o2u54mp5paZ5L+h +5oGv5Yqo5oCB5qih5p2/5a+85YWlPC9wPjwvbGk+PC91bD48bGkgY2xhc3M9Im1kLWxpc3QtaXRl +bSIgY2lkPSJuMTIiIG1kdHlwZT0ibGlzdF9pdGVtIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVy +LWJveDsgbWFyZ2luOiAwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxwIGNpZD0ibjEzIiBtZHR5 +cGU9InBhcmFncmFwaCIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1wIiBzdHlsZT0iYm94LXNpemlu +ZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IG9ycGhhbnM6IDQ7IG1hcmdpbjog +MHB4IDBweCAwLjVyZW07IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJlbGF0aXZl +OyI+PHNwYW4gbWQtaW5saW5lPSJzdHJvbmciIGNsYXNzPSJtZC1wYWlyLXMgIiBzdHlsZT0iYm94 +LXNpemluZzogYm9yZGVyLWJveDsiPjxzdHJvbmcgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1i +b3g7Ij48c3BhbiBtZC1pbmxpbmU9InBsYWluIiBjbGFzcz0ibWQtcGxhaW4iIHN0eWxlPSJib3gt +c2l6aW5nOiBib3JkZXItYm94OyI+5bi46KeE5bel5L2cPC9zcGFuPjwvc3Ryb25nPjwvc3Bhbj48 +L3A+PC9saT48dWwgY2xhc3M9InVsLWxpc3QiIGNpZD0ibjE0IiBtZHR5cGU9Imxpc3QiIGRhdGEt +bWFyaz0iLSIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBwYWRk +aW5nLWxlZnQ6IDMwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxsaSBjbGFzcz0ibWQtbGlzdC1p +dGVtIiBjaWQ9Im4xNSIgbWR0eXBlPSJsaXN0X2l0ZW0iIHN0eWxlPSJib3gtc2l6aW5nOiBib3Jk +ZXItYm94OyBtYXJnaW46IDBweDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHAgY2lkPSJuMTYiIG1k +dHlwZT0icGFyYWdyYXBoIiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLXAiIHN0eWxlPSJib3gtc2l6 +aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5oZXJpdDsgb3JwaGFuczogNDsgbWFyZ2lu +OiAwcHggMHB4IDAuNXJlbTsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyBwb3NpdGlvbjogcmVsYXRp +dmU7Ij48c3BhbiBtZC1pbmxpbmU9InBsYWluIiBjbGFzcz0ibWQtcGxhaW4iIHN0eWxlPSJib3gt +c2l6aW5nOiBib3JkZXItYm94OyI+5pel5bi45LqL5YqhMe+8mjIwMjUtMDgtMDQgCueJqeaWmeS/ +oeaBr+aUr+aMgeWkmumZhOS7tuS4iuS8oArku5PlupPlt6Xluo/lhbPogZTlj5bmtojovabpl7To +gZTnuqfpgInmi6kK5Lia5Yqh5Y+C5pWw6YWN572u5LyY5YyWCuabv+aNoueJqeaWmeWinuWKoOab +v+aNouaVsOmHjwo8L3NwYW4+PC9wPjwvbGk+PGxpIGNsYXNzPSJtZC1saXN0LWl0ZW0iIGNpZD0i +bjE1IiBtZHR5cGU9Imxpc3RfaXRlbSIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1h +cmdpbjogMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48cCBjaWQ9Im4xNiIgbWR0eXBlPSJwYXJh +Z3JhcGgiIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRl +ci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhlcml0OyBvcnBoYW5zOiA0OyBtYXJnaW46IDBweCAwcHgg +MC41cmVtOyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxzcGFu +IG1kLWlubGluZT0icGxhaW4iIGNsYXNzPSJtZC1wbGFpbiIgc3R5bGU9ImJveC1zaXppbmc6IGJv +cmRlci1ib3g7Ij7ml6XluLjkuovliqEy77yaMjAyNS0wOC0wNSDliqjmgIHnlJ/miJDlr7zlhaXm +qKHmnb/kuI7op6PmnpAKPC9zcGFuPjwvcD48L2xpPjxsaSBjbGFzcz0ibWQtbGlzdC1pdGVtIiBj +aWQ9Im4xNyIgbWR0eXBlPSJsaXN0X2l0ZW0iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94 +OyBtYXJnaW46IDBweDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHAgY2lkPSJuMTgiIG1kdHlwZT0i +cGFyYWdyYXBoIiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLXAiIHN0eWxlPSJib3gtc2l6aW5nOiBi +b3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5oZXJpdDsgb3JwaGFuczogNDsgbWFyZ2luOiAwcHgg +MHB4IDAuNXJlbTsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48 +c3BhbiBtZC1pbmxpbmU9InBsYWluIiBjbGFzcz0ibWQtcGxhaW4iIHN0eWxlPSJib3gtc2l6aW5n +OiBib3JkZXItYm94OyI+5pel5bi45LqL5YqhM++8mjIwMjUtMDgtMDYgPC9zcGFuPuWKqOaAgeWt +l+auteagoemqjOS4juagvOW8j+WMljwvcD48L2xpPjxsaSBjbGFzcz0ibWQtbGlzdC1pdGVtIiBj +aWQ9Im44NCIgbWR0eXBlPSJsaXN0X2l0ZW0iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94 +OyBtYXJnaW46IDBweDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHAgY2lkPSJuODUiIG1kdHlwZT0i +cGFyYWdyYXBoIiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLXAiIHN0eWxlPSJib3gtc2l6aW5nOiBi +b3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5oZXJpdDsgb3JwaGFuczogNDsgbWFyZ2luOiAwcHgg +MHB4IDAuNXJlbTsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48 +c3BhbiBtZC1pbmxpbmU9InBsYWluIiBjbGFzcz0ibWQtcGxhaW4iIHN0eWxlPSJib3gtc2l6aW5n +OiBib3JkZXItYm94OyI+5pel5bi45LqL5YqhNO+8mjIwMjUtMDgtMDcgPC9zcGFuPueJqeaWmeS/ +oeaBr+WvvOWHuuekuuS+izwvcD48L2xpPjxsaSBjbGFzcz0ibWQtbGlzdC1pdGVtIiBjaWQ9Im45 +MSIgbWR0eXBlPSJsaXN0X2l0ZW0iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJn +aW46IDBweDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHAgY2lkPSJuODkiIG1kdHlwZT0icGFyYWdy +YXBoIiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLXAiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXIt +Ym94OyBsaW5lLWhlaWdodDogaW5oZXJpdDsgb3JwaGFuczogNDsgbWFyZ2luOiAwcHggMHB4IDAu +NXJlbTsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48c3BhbiBt +ZC1pbmxpbmU9InBsYWluIiBjbGFzcz0ibWQtcGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3Jk +ZXItYm94OyI+5pel5bi45LqL5YqhNe+8mjwvc3Bhbj4yMDI1LTA4LTA4IOeJqeaWmeS/oeaBr+aJ +uemHj+WvvOWFpeaooeadv+S4juino+aekDwvcD48L2xpPjwvdWw+PGxpIGNsYXNzPSJtZC1saXN0 +LWl0ZW0iIGNpZD0ibjE5IiBtZHR5cGU9Imxpc3RfaXRlbSIgc3R5bGU9ImJveC1zaXppbmc6IGJv +cmRlci1ib3g7IG1hcmdpbjogMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48cCBjaWQ9Im4yMCIg +bWR0eXBlPSJwYXJhZ3JhcGgiIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCIgc3R5bGU9ImJveC1z +aXppbmc6IGJvcmRlci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhlcml0OyBvcnBoYW5zOiA0OyBtYXJn +aW46IDBweCAwcHggMC41cmVtOyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0aW9uOiByZWxh +dGl2ZTsiPjxzcGFuIG1kLWlubGluZT0ic3Ryb25nIiBjbGFzcz0ibWQtcGFpci1zICIgc3R5bGU9 +ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij48c3Ryb25nIHN0eWxlPSJib3gtc2l6aW5nOiBib3Jk +ZXItYm94OyI+PHNwYW4gbWQtaW5saW5lPSJwbGFpbiIgY2xhc3M9Im1kLXBsYWluIiBzdHlsZT0i +Ym94LXNpemluZzogYm9yZGVyLWJveDsiPuWtmOWcqOmXrumimOaIlumcgOaUr+aMgeS6i+mhuTwv +c3Bhbj48L3N0cm9uZz48L3NwYW4+PC9wPjxwIGNpZD0ibjEwMCIgbWR0eXBlPSJwYXJhZ3JhcGgi +IGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7 +IGxpbmUtaGVpZ2h0OiBpbmhlcml0OyBvcnBoYW5zOiA0OyBtYXJnaW46IDAuNXJlbSAwcHg7IHdo +aXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJlbGF0aXZlOyI+5Yqo5oCB5a2X5q615a+8 +5YWl5a+85Ye66Zeu6aKY6L6D5aSaLDIwMjUtMDgtMDnliqDnj63op6PlhrM8YnI+PC9wPjwvbGk+ +PC9vbD48ZGl2IHRhYmluZGV4PSItMSIgY2lkPSJuMjQiIG1kdHlwZT0iaHIiIGNsYXNzPSJtZC1o +ciBtZC1lbmQtYmxvY2siIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBjb2xvcjogcmdi +KDUxLCA1MSwgNTEpOyBmb250LWZhbWlseTogJnF1b3Q7T3BlbiBTYW5zJnF1b3Q7LCAmcXVvdDtD +bGVhciBTYW5zJnF1b3Q7LCAmcXVvdDtIZWx2ZXRpY2EgTmV1ZSZxdW90OywgSGVsdmV0aWNhLCBB +cmlhbCwgc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxNnB4OyI+PGhyIHN0eWxlPSJib3gtc2l6aW5n +OiBjb250ZW50LWJveDsgaGVpZ2h0OiAycHg7IG1hcmdpbjogMTZweCAwcHg7IGJvcmRlcjogMHB4 +IG5vbmU7IHBhZGRpbmc6IDBweDsgYmFja2dyb3VuZC1jb2xvcjogcmdiKDIzMSwgMjMxLCAyMzEp +OyI+PC9kaXY+PGgzIGNpZD0ibjI1IiBtZHR5cGU9ImhlYWRpbmciIGNsYXNzPSJtZC1lbmQtYmxv +Y2sgbWQtaGVhZGluZyIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGJyZWFrLWFmdGVy +OiBhdm9pZC1wYWdlOyBicmVhay1pbnNpZGU6IGF2b2lkOyBvcnBoYW5zOiA0OyBmb250LXNpemU6 +IDEuNWVtOyBtYXJnaW4tdG9wOiAxcmVtOyBtYXJnaW4tYm90dG9tOiAxcmVtOyBwb3NpdGlvbjog +cmVsYXRpdmU7IGxpbmUtaGVpZ2h0OiAxLjQzOyBjdXJzb3I6IHRleHQ7IHdoaXRlLXNwYWNlOiBw +cmUtd3JhcDsgY29sb3I6IHJnYig1MSwgNTEsIDUxKTsgZm9udC1mYW1pbHk6ICZxdW90O09wZW4g +U2FucyZxdW90OywgJnF1b3Q7Q2xlYXIgU2FucyZxdW90OywgJnF1b3Q7SGVsdmV0aWNhIE5ldWUm +cXVvdDssIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7Ij48c3BhbiBtZC1pbmxpbmU9InN0 +cm9uZyIgY2xhc3M9Im1kLXBhaXItcyAiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+ +PHN0cm9uZyBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPjxzcGFuIG1kLWlubGluZT0i +cGxhaW4iIGNsYXNzPSJtZC1wbGFpbiIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij7k +uozjgIHkuIvlkajlt6XkvZzorqHliJI8L3NwYW4+PC9zdHJvbmc+PC9zcGFuPjwvaDM+PG9sIGNs +YXNzPSJvbC1saXN0IiBzdGFydD0iIiBjaWQ9Im4yNiIgbWR0eXBlPSJsaXN0IiBzdHlsZT0iYm94 +LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwLjhlbSAwcHg7IHBhZGRpbmctbGVmdDogMzBw +eDsgcG9zaXRpb246IHJlbGF0aXZlOyBjb2xvcjogcmdiKDUxLCA1MSwgNTEpOyBmb250LWZhbWls +eTogJnF1b3Q7T3BlbiBTYW5zJnF1b3Q7LCAmcXVvdDtDbGVhciBTYW5zJnF1b3Q7LCAmcXVvdDtI +ZWx2ZXRpY2EgTmV1ZSZxdW90OywgSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjsgZm9udC1z +aXplOiAxNnB4OyI+PGxpIGNsYXNzPSJtZC1saXN0LWl0ZW0iIGNpZD0ibjI3IiBtZHR5cGU9Imxp +c3RfaXRlbSIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBwb3Np +dGlvbjogcmVsYXRpdmU7Ij48cCBjaWQ9Im4yOCIgbWR0eXBlPSJwYXJhZ3JhcGgiIGNsYXNzPSJt +ZC1lbmQtYmxvY2sgbWQtcCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGxpbmUtaGVp +Z2h0OiBpbmhlcml0OyBvcnBoYW5zOiA0OyBtYXJnaW46IDBweCAwcHggMC41cmVtOyB3aGl0ZS1z +cGFjZTogcHJlLXdyYXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxzcGFuIG1kLWlubGluZT0ic3Ry +b25nIiBjbGFzcz0ibWQtcGFpci1zICIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij48 +c3Ryb25nIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+PHNwYW4gbWQtaW5saW5lPSJw +bGFpbiIgY2xhc3M9Im1kLXBsYWluIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPumH +jeeCueS7u+WKoTwvc3Bhbj48L3N0cm9uZz48L3NwYW4+PC9wPjwvbGk+PHVsIGNsYXNzPSJ1bC1s +aXN0IiBjaWQ9Im4yOSIgbWR0eXBlPSJsaXN0IiBkYXRhLW1hcms9Ii0iIHN0eWxlPSJib3gtc2l6 +aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcGFkZGluZy1sZWZ0OiAzMHB4OyBwb3NpdGlv +bjogcmVsYXRpdmU7Ij48bGkgY2xhc3M9Im1kLWxpc3QtaXRlbSIgY2lkPSJuMzAiIG1kdHlwZT0i +bGlzdF9pdGVtIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBv +c2l0aW9uOiByZWxhdGl2ZTsiPjxwIGNpZD0ibjMxIiBtZHR5cGU9InBhcmFncmFwaCIgY2xhc3M9 +Im1kLWVuZC1ibG9jayBtZC1wIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1o +ZWlnaHQ6IGluaGVyaXQ7IG9ycGhhbnM6IDQ7IG1hcmdpbjogMHB4IDBweCAwLjVyZW07IHdoaXRl +LXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHNwYW4gbWQtaW5saW5lPSJw +bGFpbiIgY2xhc3M9Im1kLXBsYWluIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPuiu +oeWIkjHvvJpHNeS4u+aVsOaNrueJqeaWmeS/oeaBr+WKqOaAgeWtl+auteWvvOWFpemcgOaxguiH +qua1i+i9rOa1i+e7k+adnzwvc3Bhbj48L3A+PC9saT48bGkgY2xhc3M9Im1kLWxpc3QtaXRlbSIg +Y2lkPSJuMzIiIG1kdHlwZT0ibGlzdF9pdGVtIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJv +eDsgbWFyZ2luOiAwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxwIGNpZD0ibjMzIiBtZHR5cGU9 +InBhcmFncmFwaCIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1wIiBzdHlsZT0iYm94LXNpemluZzog +Ym9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IG9ycGhhbnM6IDQ7IG1hcmdpbjogMHB4 +IDBweCAwLjVyZW07IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJlbGF0aXZlOyI+ +PHNwYW4gbWQtaW5saW5lPSJwbGFpbiIgY2xhc3M9Im1kLXBsYWluIiBzdHlsZT0iYm94LXNpemlu +ZzogYm9yZGVyLWJveDsiPuiuoeWIkjLvvJo8L3NwYW4+RzXkuLvmlbDmja41LjEuNOeJiOacrOW8 +gOWkpzwvcD48L2xpPjwvdWw+PGxpIGNsYXNzPSJtZC1saXN0LWl0ZW0iIGNpZD0ibjM0IiBtZHR5 +cGU9Imxpc3RfaXRlbSIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4 +OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48cCBjaWQ9Im4zNSIgbWR0eXBlPSJwYXJhZ3JhcGgiIGNs +YXNzPSJtZC1lbmQtYmxvY2sgbWQtcCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGxp +bmUtaGVpZ2h0OiBpbmhlcml0OyBvcnBoYW5zOiA0OyBtYXJnaW46IDBweCAwcHggMC41cmVtOyB3 +aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxzcGFuIG1kLWlubGlu +ZT0ic3Ryb25nIiBjbGFzcz0ibWQtcGFpci1zICIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1i +b3g7Ij48c3Ryb25nIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+PHNwYW4gbWQtaW5s +aW5lPSJwbGFpbiIgY2xhc3M9Im1kLXBsYWluIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJv +eDsiPuWFtuS7luS6i+mhuTwvc3Bhbj48L3N0cm9uZz48L3NwYW4+PC9wPjxwIGNpZD0ibjM4IiBt +ZHR5cGU9InBhcmFncmFwaCIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1wIiBzdHlsZT0iYm94LXNp +emluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IG9ycGhhbnM6IDQ7IG1hcmdp +bjogMC41cmVtIDBweDsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyBwb3NpdGlvbjogcmVsYXRpdmU7 +Ij48c3BhbiBtZC1pbmxpbmU9InBsYWluIiBjbGFzcz0ibWQtcGxhaW4iIHN0eWxlPSJib3gtc2l6 +aW5nOiBib3JkZXItYm94OyI+5pegPC9zcGFuPjwvcD48L2xpPjwvb2w+PGRpdiB0YWJpbmRleD0i +LTEiIGNpZD0ibjM5IiBtZHR5cGU9ImhyIiBjbGFzcz0ibWQtaHIgbWQtZW5kLWJsb2NrIiBzdHls +ZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgY29sb3I6IHJnYig1MSwgNTEsIDUxKTsgZm9udC1m +YW1pbHk6ICZxdW90O09wZW4gU2FucyZxdW90OywgJnF1b3Q7Q2xlYXIgU2FucyZxdW90OywgJnF1 +b3Q7SGVsdmV0aWNhIE5ldWUmcXVvdDssIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7IGZv +bnQtc2l6ZTogMTZweDsiPjxociBzdHlsZT0iYm94LXNpemluZzogY29udGVudC1ib3g7IGhlaWdo +dDogMnB4OyBtYXJnaW46IDE2cHggMHB4OyBib3JkZXI6IDBweCBub25lOyBwYWRkaW5nOiAwcHg7 +IGJhY2tncm91bmQtY29sb3I6IHJnYigyMzEsIDIzMSwgMjMxKTsiPjwvZGl2PjxwIGNpZD0ibjQw +IiBtZHR5cGU9InBhcmFncmFwaCIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1wIiBzdHlsZT0iYm94 +LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IG9ycGhhbnM6IDQ7IG1h +cmdpbjogMC44ZW0gMHB4OyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0aW9uOiByZWxhdGl2 +ZTsgY29sb3I6IHJnYig1MSwgNTEsIDUxKTsgZm9udC1mYW1pbHk6ICZxdW90O09wZW4gU2FucyZx +dW90OywgJnF1b3Q7Q2xlYXIgU2FucyZxdW90OywgJnF1b3Q7SGVsdmV0aWNhIE5ldWUmcXVvdDss +IEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTZweDsiPjxzcGFuIG1k +LWlubGluZT0ic3Ryb25nIiBjbGFzcz0ibWQtcGFpci1zICIgc3R5bGU9ImJveC1zaXppbmc6IGJv +cmRlci1ib3g7Ij48c3Ryb25nIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+PHNwYW4g +bWQtaW5saW5lPSJwbGFpbiIgY2xhc3M9Im1kLXBsYWluIiBzdHlsZT0iYm94LXNpemluZzogYm9y +ZGVyLWJveDsiPuWkh+azqDwvc3Bhbj48L3N0cm9uZz48L3NwYW4+PHNwYW4gbWQtaW5saW5lPSJw +bGFpbiIgY2xhc3M9Im1kLXBsYWluIG1kLWV4cGFuZCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRl +ci1ib3g7Ij7vvJrml6A8L3NwYW4+PC9wPjwvZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXYgc3BlbGxj +aGVjaz0iZmFsc2UiIGlkPSJudGVzLXBjbWFjLXNpZ25hdHVyZSIgc3R5bGU9ImZvbnQtZmFtaWx5 +OuW+rui9r+mbhem7kSIgZGF0YS1udGVzLXNpZ25hdHVyZT0idHJ1ZSI+PGRpdiBzdHlsZT0iZm9u +dC1zaXplOjE0cHg7cGFkZGluZzowO21hcmdpbjowIj48ZGl2IHN0eWxlPSJwYWRkaW5nLWJvdHRv +bToxMHB4O21hcmdpbi1ib3R0b206MTBweDtkaXNwbGF5OmlubGluZS1ibG9jayI+PGRpdiBzdHls +ZT0iZm9udC1mYW1pbHk6JnF1b3Q75b6u6L2v6ZuF6buRJnF1b3Q7OyBmb250LXNpemU6IDE0cHg7 +IGNvbG9yOiMwMDAwMDAiPgogICAgPHN0eWxlPgogICAgICAgIGZvbnR7CiAgICAgICAgICAgIGxp +bmUtaGVpZ2h0OiAxLjY7CiAgICAgICAgfQogICAgPC9zdHlsZT4KPGRpdiBzdHlsZT0iZm9udC1m +YW1pbHk6JnF1b3Q75b6u6L2v6ZuF6buRJnF1b3Q7OyBmb250LXNpemU6IDE0cHg7IGNvbG9yOiMw +MDAwMDAiPgogICAgPHN0eWxlPgogICAgICAgIGZvbnR7CiAgICAgICAgICAgIGxpbmUtaGVpZ2h0 +OiAxLjY7CiAgICAgICAgfQogICAgPC9zdHlsZT4KPGRpdiBzdHlsZT0iZm9udC1mYW1pbHk6JnF1 +b3Q75b6u6L2v6ZuF6buRJnF1b3Q7OyBmb250LXNpemU6IDE0cHg7IGNvbG9yOiMwMDAwMDAiPgog +ICAgPHN0eWxlPgogICAgICAgIGZvbnR7CiAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAxLjY7CiAg +ICAgICAgfQogICAgPC9zdHlsZT4KPGRpdiBzdHlsZT0iZm9udC1mYW1pbHk6JnF1b3Q75b6u6L2v +6ZuF6buRJnF1b3Q7OyBmb250LXNpemU6IDE0cHg7IGNvbG9yOiMwMDAwMDAiPgogICAgPHN0eWxl +PgogICAgICAgIGZvbnR7CiAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAxLjY7CiAgICAgICAgfQog +ICAgPC9zdHlsZT4KPHNwYW4gc3R5bGU9ImNvbG9yOiByZ2IoMTkxLCAxOTEsIDE5MSk7IGZvbnQt +ZmFtaWx5OiAnTWljcm9zb2Z0IFlhaGVpJzsgZm9udC1zaXplOiAxM3B4OyBvcnBoYW5zOiAyOyB3 +aWRvd3M6IDI7Ij5CZXN0IHJlZ2FyZHMsPC9zcGFuPjxkaXYgc3R5bGU9Im1hcmdpbjogMHB4OyBw +YWRkaW5nOiAwcHg7IGJvcmRlcjogMHB4OyBvdXRsaW5lOiAwcHg7IGZvbnQtZmFtaWx5OiBUYWhv +bWEsIEFyaWFsLCBTVEhlaXRpLCBTaW1TdW47IGZvbnQtdmFyaWFudC1saWdhdHVyZXM6IG5vcm1h +bDsgb3JwaGFuczogMjsgd2lkb3dzOiAyOyBjbGVhcjogYm90aDsiPjxzcGFuIHN0eWxlPSJtYXJn +aW46IDBweDsgcGFkZGluZzogMHB4OyBib3JkZXI6IDBweDsgb3V0bGluZTogMHB4OyBmb250LWZh +bWlseTogJnF1b3Q7TWljcm9zb2Z0IFlhaGVpJnF1b3Q7OyBmb250LXNpemU6IDEzcHg7IGNvbG9y +OiByZ2IoMTkxLCAxOTEsIDE5MSk7Ij7mnajovak8L3NwYW4+PC9kaXY+PGRpdiBzdHlsZT0ibWFy +Z2luOiAwcHg7IHBhZGRpbmc6IDBweDsgYm9yZGVyOiAwcHg7IG91dGxpbmU6IDBweDsgZm9udC1m +YW1pbHk6IFRhaG9tYSwgQXJpYWwsIFNUSGVpdGksIFNpbVN1bjsgZm9udC12YXJpYW50LWxpZ2F0 +dXJlczogbm9ybWFsOyBvcnBoYW5zOiAyOyB3aWRvd3M6IDI7IGNsZWFyOiBib3RoOyI+PC9kaXY+ +PGRpdiBzdHlsZT0ibWFyZ2luOiAwcHg7IHBhZGRpbmc6IDBweDsgYm9yZGVyOiAwcHg7IG91dGxp +bmU6IDBweDsgZm9udC1mYW1pbHk6IFRhaG9tYSwgQXJpYWwsIFNUSGVpdGksIFNpbVN1bjsgZm9u +dC12YXJpYW50LWxpZ2F0dXJlczogbm9ybWFsOyBvcnBoYW5zOiAyOyB3aWRvd3M6IDI7IGNsZWFy +OiBib3RoOyI+PGltZyBzdHlsZT0ibWF4LXdpZHRoOiB1bnNldDsiIHNyYz0iaHR0cHM6Ly9tYWls +LW9ubGluZS5ub3Nkbi4xMjcubmV0L3d6cG1tYy9jZTlmOGIzNmUxZmZiZTU1MzI5YzE5NmM4NGZl +NTE5Ny5wbmciPjwvZGl2PjxkaXYgc3R5bGU9Im1hcmdpbjogMHB4OyBwYWRkaW5nOiAwcHg7IGJv +cmRlcjogMHB4OyBvdXRsaW5lOiAwcHg7IGZvbnQtZmFtaWx5OiBUYWhvbWEsIEFyaWFsLCBTVEhl +aXRpLCBTaW1TdW47IGZvbnQtdmFyaWFudC1saWdhdHVyZXM6IG5vcm1hbDsgb3JwaGFuczogMjsg +d2lkb3dzOiAyOyBjbGVhcjogYm90aDsiPjxzcGFuIHN0eWxlPSJtYXJnaW46IDBweDsgcGFkZGlu +ZzogMHB4OyBib3JkZXI6IDBweDsgb3V0bGluZTogMHB4OyBmb250LWZhbWlseTogJnF1b3Q7TWlj +cm9zb2Z0IFlhaGVpJnF1b3Q7OyBjb2xvcjogcmdiKDE5MSwgMTkxLCAxOTEpOyI+5Zyw5Z2A77ya +5Lit5Zu9wrfljZfkuqzova/ku7bosLfova/ku7blpKfpgZMgMTEg5Y+36Iqx56We5aSn5Y6mIDIt +M0Y8L3NwYW4+PC9kaXY+PGRpdiBzdHlsZT0ibWFyZ2luOiAwcHg7IHBhZGRpbmc6IDBweDsgYm9y +ZGVyOiAwcHg7IG91dGxpbmU6IDBweDsgZm9udC1mYW1pbHk6IFRhaG9tYSwgQXJpYWwsIFNUSGVp +dGksIFNpbVN1bjsgZm9udC12YXJpYW50LWxpZ2F0dXJlczogbm9ybWFsOyBvcnBoYW5zOiAyOyB3 +aWRvd3M6IDI7IGNsZWFyOiBib3RoOyI+PHNwYW4gc3R5bGU9Im1hcmdpbjogMHB4OyBwYWRkaW5n +OiAwcHg7IGJvcmRlcjogMHB4OyBvdXRsaW5lOiAwcHg7IGZvbnQtZmFtaWx5OiAmcXVvdDtNaWNy +b3NvZnQgWWFoZWkmcXVvdDs7IGNvbG9yOiByZ2IoMTkxLCAxOTEsIDE5MSk7Ij7miYvmnLrvvJox +ODcyNjEyODQ4OTwvc3Bhbj48L2Rpdj48ZGl2IHN0eWxlPSJtYXJnaW46IDBweDsgcGFkZGluZzog +MHB4OyBib3JkZXI6IDBweDsgb3V0bGluZTogMHB4OyBmb250LWZhbWlseTogVGFob21hLCBBcmlh +bCwgU1RIZWl0aSwgU2ltU3VuOyBmb250LXZhcmlhbnQtbGlnYXR1cmVzOiBub3JtYWw7IG9ycGhh +bnM6IDI7IHdpZG93czogMjsgY2xlYXI6IGJvdGg7Ij48c3BhbiBzdHlsZT0ibWFyZ2luOiAwcHg7 +IHBhZGRpbmc6IDBweDsgYm9yZGVyOiAwcHg7IG91dGxpbmU6IDBweDsgZm9udC1mYW1pbHk6ICZx +dW90O01pY3Jvc29mdCBZYWhlaSZxdW90OzsgY29sb3I6IHJnYigxOTEsIDE5MSwgMTkxKTsiPumC +rueuse+8mnlhbmd4dWFuQHdpdHNvZnQuY248L3NwYW4+PC9kaXY+CjwvZGl2Pgo8L2Rpdj4KPC9k +aXY+CjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwhLS3wn5iALS0+PC9kaXY+PC9kaXY+ +PC9ib2R5PjwvaHRtbD4= + +--=_mailmaster-6a18e4a4_0_4823_=-- diff --git a/media/inbound/2025-08-16_0855_G5开发周报_2025-08-11_--_2025-08-15---d74b7493-50fe-4b93-815c-a0a254b347e2.eml b/media/inbound/2025-08-16_0855_G5开发周报_2025-08-11_--_2025-08-15---d74b7493-50fe-4b93-815c-a0a254b347e2.eml new file mode 100644 index 0000000..99258c2 --- /dev/null +++ b/media/inbound/2025-08-16_0855_G5开发周报_2025-08-11_--_2025-08-15---d74b7493-50fe-4b93-815c-a0a254b347e2.eml @@ -0,0 +1,312 @@ +Date: Sat, 16 Aug 2025 08:55:12 +0800 +From: yangxuan +To: =?utf-8?B?5YiY5by6?= +Cc: =?utf-8?B?5bGI5paw6b6Z?= , =?utf-8?B?5pyx5paM?= + , =?utf-8?B?6ZmI5piO?= , + =?utf-8?Q?xym=40witsoft.cn?= +Message-ID: +Subject: =?utf-8?B?RzXlvIDlj5HlkajmiqXjgJAyMDI1LTA4LTExIC0tICAyMDI1LTA4?= + =?utf-8?B?LTE144CR?= +MIME-Version: 1.0 +Content-Type: multipart/alternative; boundary="=_mailmaster-6a18e4a4_0_18be_=" + +--=_mailmaster-6a18e4a4_0_18be_= +Content-Type: text/plain; charset="utf-8" +Content-Transfer-Encoding: base64 + +5oKo5aW977yB5Lul5LiL5piv5oiR5pys5ZGo55qE5bel5L2c5oC757uT5Y+K5LiL5ZGo6K6h5YiS +77yM6K+35a6h6ZiF44CCCuS4gOOAgeacrOWRqOW3peS9nOaAu+e7kwrph43ngrnlt6XkvZzlrozm +iJDmg4XlhrUK5Lu75YqhMe+8mkc15Li75pWw5o2u5LyY5YyW6ZyA5rGCCuS7u+WKoTLvvJpHNeS4 +u+aVsOaNrueJqeaWmeS/oeaBr+WvvOWFpeWvvOWHuuWvvOWHuuekuuS+i+i9rOa1i2J1Z+S/ruWk +jQrluLjop4Tlt6XkvZwK5pel5bi45LqL5YqhMe+8mjIwMjUtMDgtMTEg5Li75pWw5o2u6YOo5YiG +6ZyA5rGC6L2s5rWLIArml6XluLjkuovliqEy77yaMjAyNS0wOC0xMiBidWfkv67lpI0g5a+85YWl +5qih5p2/5aKe5Yqg5LiL5ouJ5Lul5Y+K5a+85YWl5pWw5o2u5a2X5YW45qCh6aqM6YCa55So5pa5 +5rOVIArml6XluLjkuovliqEz77yaMjAyNS0wOC0xMyDnianmlpnkv6Hmga/lr7zlhaXpl67popjk +v67lpI0K5pel5bi45LqL5YqhNO+8mjIwMjUtMDgtMTQg6LCD5LyRIGJ1Z+S/ruWkjQrml6XluLjk +uovliqE177yaMjAyNS0wOC0xNSDosIPkvJEgYnVn5L+u5aSNCuWtmOWcqOmXrumimOaIlumcgOaU +r+aMgeS6i+mhuQoyMDI1LTA4LTE1IOeUn+S6p+mXrumimOaOkuafpQrkuozjgIHkuIvlkajlt6Xk +vZzorqHliJIK6YeN54K55Lu75YqhCuiuoeWIkjHvvJpHNeS4u+aVsOaNruS8mOWMlumcgOaxgua1 +i+ivlee7k+adnwrorqHliJIy77yaRzXkuLvmlbDmja41LjEuNeeJiOacrOmcgOaxguivhOWuoeWS +jOW8gOWPkeaWueahiOe8luWGmQrlhbbku5bkuovpobkK5pegCuWkh+azqO+8muaXoApCZXN0IHJl +Z2FyZHMs5p2o6L2pCuWcsOWdgO+8muS4reWbvcK35Y2X5Lqs6L2v5Lu26LC36L2v5Lu25aSn6YGT +IDExIOWPt+iKseelnuWkp+WOpiAyLTNGCuaJi+acuu+8mjE4NzI2MTI4NDg5CumCrueuse+8mnlh +bmd4dWFuQHdpdHNvZnQuY24= + +--=_mailmaster-6a18e4a4_0_18be_= +Content-Type: text/html; charset="utf-8" +Content-Transfer-Encoding: base64 + +PGh0bWw+PGhlYWQ+PG1ldGEgaHR0cC1lcXVpdj0nQ29udGVudC1UeXBlJyBjb250ZW50PSd0ZXh0 +L2h0bWw7IGNoYXJzZXQ9VVRGLTgnPjwvaGVhZD48Ym9keSBzdHlsZT1saW5lLWhlaWdodDogMS41 +O2ZvbnQtZmFtaWx5OiAi5b6u6L2v6ZuF6buRIj48ZGl2ICBzdHlsZT0iZm9udC1mYW1pbHk6IOW+ +rui9r+mbhem7kTsiPjxkaXYgc3R5bGU9ImZvbnQtZmFtaWx5OiDlvq7ova/pm4Xpu5E7Ij48ZGl2 +IHN0eWxlPSJmb250LWZhbWlseTog5b6u6L2v6ZuF6buROyI+PGRpdj48cCBjaWQ9Im4wIiBtZHR5 +cGU9InBhcmFncmFwaCIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1wIG1kLWZvY3VzIiBzdHlsZT0i +Ym94LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IG9ycGhhbnM6IDQ7 +IG1hcmdpbjogMC44ZW0gMHB4OyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0aW9uOiByZWxh +dGl2ZTsgY29sb3I6IHJnYig1MSwgNTEsIDUxKTsgZm9udC1mYW1pbHk6ICZxdW90O09wZW4gU2Fu +cyZxdW90OywgJnF1b3Q7Q2xlYXIgU2FucyZxdW90OywgJnF1b3Q7SGVsdmV0aWNhIE5ldWUmcXVv +dDssIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTZweDsiPjxzcGFu +IG1kLWlubGluZT0icGxhaW4iIGNsYXNzPSJtZC1wbGFpbiBtZC1leHBhbmQiIHN0eWxlPSJib3gt +c2l6aW5nOiBib3JkZXItYm94OyI+5oKo5aW977yB5Lul5LiL5piv5oiR5pys5ZGo55qE5bel5L2c +5oC757uT5Y+K5LiL5ZGo6K6h5YiS77yM6K+35a6h6ZiF44CCPC9zcGFuPjwvcD48ZGl2IHRhYmlu +ZGV4PSItMSIgY2lkPSJuMiIgbWR0eXBlPSJociIgY2xhc3M9Im1kLWhyIG1kLWVuZC1ibG9jayIg +c3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGNvbG9yOiByZ2IoNTEsIDUxLCA1MSk7IGZv +bnQtZmFtaWx5OiAmcXVvdDtPcGVuIFNhbnMmcXVvdDssICZxdW90O0NsZWFyIFNhbnMmcXVvdDss +ICZxdW90O0hlbHZldGljYSBOZXVlJnF1b3Q7LCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlm +OyBmb250LXNpemU6IDE2cHg7Ij48aHIgc3R5bGU9ImJveC1zaXppbmc6IGNvbnRlbnQtYm94OyBo +ZWlnaHQ6IDJweDsgbWFyZ2luOiAxNnB4IDBweDsgYm9yZGVyOiAwcHggbm9uZTsgcGFkZGluZzog +MHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjMxLCAyMzEsIDIzMSk7Ij48L2Rpdj48aDMgY2lk +PSJuMyIgbWR0eXBlPSJoZWFkaW5nIiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLWhlYWRpbmciIHN0 +eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBicmVhay1hZnRlcjogYXZvaWQtcGFnZTsgYnJl +YWstaW5zaWRlOiBhdm9pZDsgb3JwaGFuczogNDsgZm9udC1zaXplOiAxLjVlbTsgbWFyZ2luLXRv +cDogMXJlbTsgbWFyZ2luLWJvdHRvbTogMXJlbTsgcG9zaXRpb246IHJlbGF0aXZlOyBsaW5lLWhl +aWdodDogMS40MzsgY3Vyc29yOiB0ZXh0OyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IGNvbG9yOiBy +Z2IoNTEsIDUxLCA1MSk7IGZvbnQtZmFtaWx5OiAmcXVvdDtPcGVuIFNhbnMmcXVvdDssICZxdW90 +O0NsZWFyIFNhbnMmcXVvdDssICZxdW90O0hlbHZldGljYSBOZXVlJnF1b3Q7LCBIZWx2ZXRpY2Es +IEFyaWFsLCBzYW5zLXNlcmlmOyI+PHNwYW4gbWQtaW5saW5lPSJzdHJvbmciIGNsYXNzPSJtZC1w +YWlyLXMgIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPjxzdHJvbmcgc3R5bGU9ImJv +eC1zaXppbmc6IGJvcmRlci1ib3g7Ij48c3BhbiBtZC1pbmxpbmU9InBsYWluIiBjbGFzcz0ibWQt +cGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+5LiA44CB5pys5ZGo5bel5L2c +5oC757uTPC9zcGFuPjwvc3Ryb25nPjwvc3Bhbj48L2gzPjxvbCBjbGFzcz0ib2wtbGlzdCIgc3Rh +cnQ9IiIgY2lkPSJuNCIgbWR0eXBlPSJsaXN0IiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJv +eDsgbWFyZ2luOiAwLjhlbSAwcHg7IHBhZGRpbmctbGVmdDogMzBweDsgcG9zaXRpb246IHJlbGF0 +aXZlOyBjb2xvcjogcmdiKDUxLCA1MSwgNTEpOyBmb250LWZhbWlseTogJnF1b3Q7T3BlbiBTYW5z +JnF1b3Q7LCAmcXVvdDtDbGVhciBTYW5zJnF1b3Q7LCAmcXVvdDtIZWx2ZXRpY2EgTmV1ZSZxdW90 +OywgSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxNnB4OyI+PGxpIGNs +YXNzPSJtZC1saXN0LWl0ZW0iIGNpZD0ibjUiIG1kdHlwZT0ibGlzdF9pdGVtIiBzdHlsZT0iYm94 +LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxw +IGNpZD0ibjYiIG1kdHlwZT0icGFyYWdyYXBoIiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLXAiIHN0 +eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5oZXJpdDsgb3JwaGFu +czogNDsgbWFyZ2luOiAwcHggMHB4IDAuNXJlbTsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyBwb3Np +dGlvbjogcmVsYXRpdmU7Ij48c3BhbiBtZC1pbmxpbmU9InN0cm9uZyIgY2xhc3M9Im1kLXBhaXIt +cyAiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+PHN0cm9uZyBzdHlsZT0iYm94LXNp +emluZzogYm9yZGVyLWJveDsiPjxzcGFuIG1kLWlubGluZT0icGxhaW4iIGNsYXNzPSJtZC1wbGFp +biIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij7ph43ngrnlt6XkvZzlrozmiJDmg4Xl +hrU8L3NwYW4+PC9zdHJvbmc+PC9zcGFuPjwvcD48L2xpPjx1bCBjbGFzcz0idWwtbGlzdCIgY2lk +PSJuNyIgbWR0eXBlPSJsaXN0IiBkYXRhLW1hcms9Ii0iIHN0eWxlPSJib3gtc2l6aW5nOiBib3Jk +ZXItYm94OyBtYXJnaW46IDBweDsgcGFkZGluZy1sZWZ0OiAzMHB4OyBwb3NpdGlvbjogcmVsYXRp +dmU7Ij48bGkgY2xhc3M9Im1kLWxpc3QtaXRlbSIgY2lkPSJuOCIgbWR0eXBlPSJsaXN0X2l0ZW0i +IHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcG9zaXRpb246IHJl +bGF0aXZlOyI+PHAgY2lkPSJuOSIgbWR0eXBlPSJwYXJhZ3JhcGgiIGNsYXNzPSJtZC1lbmQtYmxv +Y2sgbWQtcCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhl +cml0OyBvcnBoYW5zOiA0OyBtYXJnaW46IDBweCAwcHggMC41cmVtOyB3aGl0ZS1zcGFjZTogcHJl +LXdyYXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxzcGFuIG1kLWlubGluZT0icGxhaW4iIGNsYXNz +PSJtZC1wbGFpbiIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij7ku7vliqEx77yaRzXk +uLvmlbDmja7kvJjljJbpnIDmsYI8L3NwYW4+PC9wPjwvbGk+PGxpIGNsYXNzPSJtZC1saXN0LWl0 +ZW0iIGNpZD0ibjEwIiBtZHR5cGU9Imxpc3RfaXRlbSIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRl +ci1ib3g7IG1hcmdpbjogMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48cCBjaWQ9Im4xMSIgbWR0 +eXBlPSJwYXJhZ3JhcGgiIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCIgc3R5bGU9ImJveC1zaXpp +bmc6IGJvcmRlci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhlcml0OyBvcnBoYW5zOiA0OyBtYXJnaW46 +IDBweCAwcHggMC41cmVtOyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0aW9uOiByZWxhdGl2 +ZTsiPjxzcGFuIG1kLWlubGluZT0icGxhaW4iIGNsYXNzPSJtZC1wbGFpbiIgc3R5bGU9ImJveC1z +aXppbmc6IGJvcmRlci1ib3g7Ij7ku7vliqEy77yaPC9zcGFuPkc15Li75pWw5o2u54mp5paZ5L+h +5oGv5a+85YWl5a+85Ye65a+85Ye656S65L6L6L2s5rWLYnVn5L+u5aSNPC9wPjwvbGk+PC91bD48 +bGkgY2xhc3M9Im1kLWxpc3QtaXRlbSIgY2lkPSJuMTIiIG1kdHlwZT0ibGlzdF9pdGVtIiBzdHls +ZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBvc2l0aW9uOiByZWxhdGl2 +ZTsiPjxwIGNpZD0ibjEzIiBtZHR5cGU9InBhcmFncmFwaCIgY2xhc3M9Im1kLWVuZC1ibG9jayBt +ZC1wIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7 +IG9ycGhhbnM6IDQ7IG1hcmdpbjogMHB4IDBweCAwLjVyZW07IHdoaXRlLXNwYWNlOiBwcmUtd3Jh +cDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHNwYW4gbWQtaW5saW5lPSJzdHJvbmciIGNsYXNzPSJt +ZC1wYWlyLXMgIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPjxzdHJvbmcgc3R5bGU9 +ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij48c3BhbiBtZC1pbmxpbmU9InBsYWluIiBjbGFzcz0i +bWQtcGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+5bi46KeE5bel5L2cPC9z +cGFuPjwvc3Ryb25nPjwvc3Bhbj48L3A+PC9saT48dWwgY2xhc3M9InVsLWxpc3QiIGNpZD0ibjE0 +IiBtZHR5cGU9Imxpc3QiIGRhdGEtbWFyaz0iLSIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1i +b3g7IG1hcmdpbjogMHB4OyBwYWRkaW5nLWxlZnQ6IDMwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsi +PjxsaSBjbGFzcz0ibWQtbGlzdC1pdGVtIiBjaWQ9Im4xNSIgbWR0eXBlPSJsaXN0X2l0ZW0iIHN0 +eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcG9zaXRpb246IHJlbGF0 +aXZlOyI+PHAgY2lkPSJuMTYiIG1kdHlwZT0icGFyYWdyYXBoIiBjbGFzcz0ibWQtZW5kLWJsb2Nr +IG1kLXAiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5oZXJp +dDsgb3JwaGFuczogNDsgbWFyZ2luOiAwcHggMHB4IDAuNXJlbTsgd2hpdGUtc3BhY2U6IHByZS13 +cmFwOyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48c3BhbiBtZC1pbmxpbmU9InBsYWluIiBjbGFzcz0i +bWQtcGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+5pel5bi45LqL5YqhMe+8 +mjIwMjUtMDgtMTEg5Li75pWw5o2u6YOo5YiG6ZyA5rGC6L2s5rWLCjwvc3Bhbj48L3A+PC9saT48 +bGkgY2xhc3M9Im1kLWxpc3QtaXRlbSIgY2lkPSJuMTUiIG1kdHlwZT0ibGlzdF9pdGVtIiBzdHls +ZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBvc2l0aW9uOiByZWxhdGl2 +ZTsiPjxwIGNpZD0ibjE2IiBtZHR5cGU9InBhcmFncmFwaCIgY2xhc3M9Im1kLWVuZC1ibG9jayBt +ZC1wIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7 +IG9ycGhhbnM6IDQ7IG1hcmdpbjogMHB4IDBweCAwLjVyZW07IHdoaXRlLXNwYWNlOiBwcmUtd3Jh +cDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHNwYW4gbWQtaW5saW5lPSJwbGFpbiIgY2xhc3M9Im1k +LXBsYWluIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPuaXpeW4uOS6i+WKoTLvvJoy +MDI1LTA4LTEyIGJ1Z+S/ruWkjSDlr7zlhaXmqKHmnb/lop7liqDkuIvmi4nku6Xlj4rlr7zlhaXm +lbDmja7lrZflhbjmoKHpqozpgJrnlKjmlrnms5UKPC9zcGFuPjwvcD48L2xpPjxsaSBjbGFzcz0i +bWQtbGlzdC1pdGVtIiBjaWQ9Im4xNyIgbWR0eXBlPSJsaXN0X2l0ZW0iIHN0eWxlPSJib3gtc2l6 +aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHAgY2lk +PSJuMTgiIG1kdHlwZT0icGFyYWdyYXBoIiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLXAiIHN0eWxl +PSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5oZXJpdDsgb3JwaGFuczog +NDsgbWFyZ2luOiAwcHggMHB4IDAuNXJlbTsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyBwb3NpdGlv +bjogcmVsYXRpdmU7Ij48c3BhbiBtZC1pbmxpbmU9InBsYWluIiBjbGFzcz0ibWQtcGxhaW4iIHN0 +eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+5pel5bi45LqL5YqhM++8mjIwMjUtMDgtMTMg +PC9zcGFuPueJqeaWmeS/oeaBr+WvvOWFpemXrumimOS/ruWkjTwvcD48L2xpPjxsaSBjbGFzcz0i +bWQtbGlzdC1pdGVtIiBjaWQ9Im44NCIgbWR0eXBlPSJsaXN0X2l0ZW0iIHN0eWxlPSJib3gtc2l6 +aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHAgY2lk +PSJuODUiIG1kdHlwZT0icGFyYWdyYXBoIiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLXAiIHN0eWxl +PSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5oZXJpdDsgb3JwaGFuczog +NDsgbWFyZ2luOiAwcHggMHB4IDAuNXJlbTsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyBwb3NpdGlv +bjogcmVsYXRpdmU7Ij48c3BhbiBtZC1pbmxpbmU9InBsYWluIiBjbGFzcz0ibWQtcGxhaW4iIHN0 +eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+5pel5bi45LqL5YqhNO+8mjIwMjUtMDgtMTQg +6LCD5LyRIDwvc3Bhbj5idWfkv67lpI08L3A+PC9saT48bGkgY2xhc3M9Im1kLWxpc3QtaXRlbSIg +Y2lkPSJuOTEiIG1kdHlwZT0ibGlzdF9pdGVtIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJv +eDsgbWFyZ2luOiAwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxwIGNpZD0ibjg5IiBtZHR5cGU9 +InBhcmFncmFwaCIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1wIiBzdHlsZT0iYm94LXNpemluZzog +Ym9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IG9ycGhhbnM6IDQ7IG1hcmdpbjogMHB4 +IDBweCAwLjVyZW07IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJlbGF0aXZlOyI+ +PHNwYW4gbWQtaW5saW5lPSJwbGFpbiIgY2xhc3M9Im1kLXBsYWluIiBzdHlsZT0iYm94LXNpemlu +ZzogYm9yZGVyLWJveDsiPuaXpeW4uOS6i+WKoTXvvJo8L3NwYW4+MjAyNS0wOC0xNSDosIPkvJEg +YnVn5L+u5aSNPC9wPjwvbGk+PC91bD48bGkgY2xhc3M9Im1kLWxpc3QtaXRlbSIgY2lkPSJuMTki +IG1kdHlwZT0ibGlzdF9pdGVtIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2lu +OiAwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxwIGNpZD0ibjIwIiBtZHR5cGU9InBhcmFncmFw +aCIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1wIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJv +eDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IG9ycGhhbnM6IDQ7IG1hcmdpbjogMHB4IDBweCAwLjVy +ZW07IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHNwYW4gbWQt +aW5saW5lPSJzdHJvbmciIGNsYXNzPSJtZC1wYWlyLXMgIiBzdHlsZT0iYm94LXNpemluZzogYm9y +ZGVyLWJveDsiPjxzdHJvbmcgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij48c3BhbiBt +ZC1pbmxpbmU9InBsYWluIiBjbGFzcz0ibWQtcGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3Jk +ZXItYm94OyI+5a2Y5Zyo6Zeu6aKY5oiW6ZyA5pSv5oyB5LqL6aG5PC9zcGFuPjwvc3Ryb25nPjwv +c3Bhbj48L3A+PHAgY2lkPSJuMTAwIiBtZHR5cGU9InBhcmFncmFwaCIgY2xhc3M9Im1kLWVuZC1i +bG9jayBtZC1wIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGlu +aGVyaXQ7IG9ycGhhbnM6IDQ7IG1hcmdpbjogMC41cmVtIDBweDsgd2hpdGUtc3BhY2U6IHByZS13 +cmFwOyBwb3NpdGlvbjogcmVsYXRpdmU7Ij4yMDI1LTA4LTE1IOeUn+S6p+mXrumimOaOkuafpTxi +cj48L3A+PC9saT48L29sPjxkaXYgdGFiaW5kZXg9Ii0xIiBjaWQ9Im4yNCIgbWR0eXBlPSJociIg +Y2xhc3M9Im1kLWhyIG1kLWVuZC1ibG9jayIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7 +IGNvbG9yOiByZ2IoNTEsIDUxLCA1MSk7IGZvbnQtZmFtaWx5OiAmcXVvdDtPcGVuIFNhbnMmcXVv +dDssICZxdW90O0NsZWFyIFNhbnMmcXVvdDssICZxdW90O0hlbHZldGljYSBOZXVlJnF1b3Q7LCBI +ZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDE2cHg7Ij48aHIgc3R5bGU9 +ImJveC1zaXppbmc6IGNvbnRlbnQtYm94OyBoZWlnaHQ6IDJweDsgbWFyZ2luOiAxNnB4IDBweDsg +Ym9yZGVyOiAwcHggbm9uZTsgcGFkZGluZzogMHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjMx +LCAyMzEsIDIzMSk7Ij48L2Rpdj48aDMgY2lkPSJuMjUiIG1kdHlwZT0iaGVhZGluZyIgY2xhc3M9 +Im1kLWVuZC1ibG9jayBtZC1oZWFkaW5nIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsg +YnJlYWstYWZ0ZXI6IGF2b2lkLXBhZ2U7IGJyZWFrLWluc2lkZTogYXZvaWQ7IG9ycGhhbnM6IDQ7 +IGZvbnQtc2l6ZTogMS41ZW07IG1hcmdpbi10b3A6IDFyZW07IG1hcmdpbi1ib3R0b206IDFyZW07 +IHBvc2l0aW9uOiByZWxhdGl2ZTsgbGluZS1oZWlnaHQ6IDEuNDM7IGN1cnNvcjogdGV4dDsgd2hp +dGUtc3BhY2U6IHByZS13cmFwOyBjb2xvcjogcmdiKDUxLCA1MSwgNTEpOyBmb250LWZhbWlseTog +JnF1b3Q7T3BlbiBTYW5zJnF1b3Q7LCAmcXVvdDtDbGVhciBTYW5zJnF1b3Q7LCAmcXVvdDtIZWx2 +ZXRpY2EgTmV1ZSZxdW90OywgSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjsiPjxzcGFuIG1k +LWlubGluZT0ic3Ryb25nIiBjbGFzcz0ibWQtcGFpci1zICIgc3R5bGU9ImJveC1zaXppbmc6IGJv +cmRlci1ib3g7Ij48c3Ryb25nIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+PHNwYW4g +bWQtaW5saW5lPSJwbGFpbiIgY2xhc3M9Im1kLXBsYWluIiBzdHlsZT0iYm94LXNpemluZzogYm9y +ZGVyLWJveDsiPuS6jOOAgeS4i+WRqOW3peS9nOiuoeWIkjwvc3Bhbj48L3N0cm9uZz48L3NwYW4+ +PC9oMz48b2wgY2xhc3M9Im9sLWxpc3QiIHN0YXJ0PSIiIGNpZD0ibjI2IiBtZHR5cGU9Imxpc3Qi +IHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDAuOGVtIDBweDsgcGFkZGlu +Zy1sZWZ0OiAzMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7IGNvbG9yOiByZ2IoNTEsIDUxLCA1MSk7 +IGZvbnQtZmFtaWx5OiAmcXVvdDtPcGVuIFNhbnMmcXVvdDssICZxdW90O0NsZWFyIFNhbnMmcXVv +dDssICZxdW90O0hlbHZldGljYSBOZXVlJnF1b3Q7LCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNl +cmlmOyBmb250LXNpemU6IDE2cHg7Ij48bGkgY2xhc3M9Im1kLWxpc3QtaXRlbSIgY2lkPSJuMjci +IG1kdHlwZT0ibGlzdF9pdGVtIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2lu +OiAwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxwIGNpZD0ibjI4IiBtZHR5cGU9InBhcmFncmFw +aCIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1wIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJv +eDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IG9ycGhhbnM6IDQ7IG1hcmdpbjogMHB4IDBweCAwLjVy +ZW07IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHNwYW4gbWQt +aW5saW5lPSJzdHJvbmciIGNsYXNzPSJtZC1wYWlyLXMgIiBzdHlsZT0iYm94LXNpemluZzogYm9y +ZGVyLWJveDsiPjxzdHJvbmcgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij48c3BhbiBt +ZC1pbmxpbmU9InBsYWluIiBjbGFzcz0ibWQtcGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3Jk +ZXItYm94OyI+6YeN54K55Lu75YqhPC9zcGFuPjwvc3Ryb25nPjwvc3Bhbj48L3A+PC9saT48dWwg +Y2xhc3M9InVsLWxpc3QiIGNpZD0ibjI5IiBtZHR5cGU9Imxpc3QiIGRhdGEtbWFyaz0iLSIgc3R5 +bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBwYWRkaW5nLWxlZnQ6IDMw +cHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxsaSBjbGFzcz0ibWQtbGlzdC1pdGVtIiBjaWQ9Im4z +MCIgbWR0eXBlPSJsaXN0X2l0ZW0iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJn +aW46IDBweDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHAgY2lkPSJuMzEiIG1kdHlwZT0icGFyYWdy +YXBoIiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLXAiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXIt +Ym94OyBsaW5lLWhlaWdodDogaW5oZXJpdDsgb3JwaGFuczogNDsgbWFyZ2luOiAwcHggMHB4IDAu +NXJlbTsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48c3BhbiBt +ZC1pbmxpbmU9InBsYWluIiBjbGFzcz0ibWQtcGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3Jk +ZXItYm94OyI+6K6h5YiSMe+8mkc15Li75pWw5o2u5LyY5YyW6ZyA5rGC5rWL6K+V57uT5p2fPC9z +cGFuPjwvcD48L2xpPjxsaSBjbGFzcz0ibWQtbGlzdC1pdGVtIiBjaWQ9Im4zMiIgbWR0eXBlPSJs +aXN0X2l0ZW0iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcG9z +aXRpb246IHJlbGF0aXZlOyI+PHAgY2lkPSJuMzMiIG1kdHlwZT0icGFyYWdyYXBoIiBjbGFzcz0i +bWQtZW5kLWJsb2NrIG1kLXAiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhl +aWdodDogaW5oZXJpdDsgb3JwaGFuczogNDsgbWFyZ2luOiAwcHggMHB4IDAuNXJlbTsgd2hpdGUt +c3BhY2U6IHByZS13cmFwOyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48c3BhbiBtZC1pbmxpbmU9InBs +YWluIiBjbGFzcz0ibWQtcGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+6K6h +5YiSMu+8mjwvc3Bhbj5HNeS4u+aVsOaNrjUuMS4154mI5pys6ZyA5rGC6K+E5a6h5ZKM5byA5Y+R +5pa55qGI57yW5YaZPC9wPjwvbGk+PC91bD48bGkgY2xhc3M9Im1kLWxpc3QtaXRlbSIgY2lkPSJu +MzQiIG1kdHlwZT0ibGlzdF9pdGVtIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFy +Z2luOiAwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxwIGNpZD0ibjM1IiBtZHR5cGU9InBhcmFn +cmFwaCIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1wIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVy +LWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IG9ycGhhbnM6IDQ7IG1hcmdpbjogMHB4IDBweCAw +LjVyZW07IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHNwYW4g +bWQtaW5saW5lPSJzdHJvbmciIGNsYXNzPSJtZC1wYWlyLXMgIiBzdHlsZT0iYm94LXNpemluZzog +Ym9yZGVyLWJveDsiPjxzdHJvbmcgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij48c3Bh +biBtZC1pbmxpbmU9InBsYWluIiBjbGFzcz0ibWQtcGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBi +b3JkZXItYm94OyI+5YW25LuW5LqL6aG5PC9zcGFuPjwvc3Ryb25nPjwvc3Bhbj48L3A+PHAgY2lk +PSJuMzgiIG1kdHlwZT0icGFyYWdyYXBoIiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLXAiIHN0eWxl +PSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5oZXJpdDsgb3JwaGFuczog +NDsgbWFyZ2luOiAwLjVyZW0gMHB4OyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0aW9uOiBy +ZWxhdGl2ZTsiPjxzcGFuIG1kLWlubGluZT0icGxhaW4iIGNsYXNzPSJtZC1wbGFpbiIgc3R5bGU9 +ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij7ml6A8L3NwYW4+PC9wPjwvbGk+PC9vbD48ZGl2IHRh +YmluZGV4PSItMSIgY2lkPSJuMzkiIG1kdHlwZT0iaHIiIGNsYXNzPSJtZC1ociBtZC1lbmQtYmxv +Y2siIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBjb2xvcjogcmdiKDUxLCA1MSwgNTEp +OyBmb250LWZhbWlseTogJnF1b3Q7T3BlbiBTYW5zJnF1b3Q7LCAmcXVvdDtDbGVhciBTYW5zJnF1 +b3Q7LCAmcXVvdDtIZWx2ZXRpY2EgTmV1ZSZxdW90OywgSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1z +ZXJpZjsgZm9udC1zaXplOiAxNnB4OyI+PGhyIHN0eWxlPSJib3gtc2l6aW5nOiBjb250ZW50LWJv +eDsgaGVpZ2h0OiAycHg7IG1hcmdpbjogMTZweCAwcHg7IGJvcmRlcjogMHB4IG5vbmU7IHBhZGRp +bmc6IDBweDsgYmFja2dyb3VuZC1jb2xvcjogcmdiKDIzMSwgMjMxLCAyMzEpOyI+PC9kaXY+PHAg +Y2lkPSJuNDAiIG1kdHlwZT0icGFyYWdyYXBoIiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLXAiIHN0 +eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5oZXJpdDsgb3JwaGFu +czogNDsgbWFyZ2luOiAwLjhlbSAwcHg7IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRpb246 +IHJlbGF0aXZlOyBjb2xvcjogcmdiKDUxLCA1MSwgNTEpOyBmb250LWZhbWlseTogJnF1b3Q7T3Bl +biBTYW5zJnF1b3Q7LCAmcXVvdDtDbGVhciBTYW5zJnF1b3Q7LCAmcXVvdDtIZWx2ZXRpY2EgTmV1 +ZSZxdW90OywgSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxNnB4OyI+ +PHNwYW4gbWQtaW5saW5lPSJzdHJvbmciIGNsYXNzPSJtZC1wYWlyLXMgIiBzdHlsZT0iYm94LXNp +emluZzogYm9yZGVyLWJveDsiPjxzdHJvbmcgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7 +Ij48c3BhbiBtZC1pbmxpbmU9InBsYWluIiBjbGFzcz0ibWQtcGxhaW4iIHN0eWxlPSJib3gtc2l6 +aW5nOiBib3JkZXItYm94OyI+5aSH5rOoPC9zcGFuPjwvc3Ryb25nPjwvc3Bhbj48c3BhbiBtZC1p +bmxpbmU9InBsYWluIiBjbGFzcz0ibWQtcGxhaW4gbWQtZXhwYW5kIiBzdHlsZT0iYm94LXNpemlu +ZzogYm9yZGVyLWJveDsiPu+8muaXoDwvc3Bhbj48L3A+PC9kaXY+PGRpdj48YnI+PC9kaXY+PGRp +diBzcGVsbGNoZWNrPSJmYWxzZSIgaWQ9Im50ZXMtcGNtYWMtc2lnbmF0dXJlIiBzdHlsZT0iZm9u +dC1mYW1pbHk65b6u6L2v6ZuF6buRIiBkYXRhLW50ZXMtc2lnbmF0dXJlPSJ0cnVlIj48ZGl2IHN0 +eWxlPSJmb250LXNpemU6MTRweDtwYWRkaW5nOjA7bWFyZ2luOjAiPjxkaXYgc3R5bGU9InBhZGRp +bmctYm90dG9tOjEwcHg7bWFyZ2luLWJvdHRvbToxMHB4O2Rpc3BsYXk6aW5saW5lLWJsb2NrIj48 +ZGl2IHN0eWxlPSJmb250LWZhbWlseTomcXVvdDvlvq7ova/pm4Xpu5EmcXVvdDs7IGZvbnQtc2l6 +ZTogMTRweDsgY29sb3I6IzAwMDAwMCI+CiAgICA8c3R5bGU+CiAgICAgICAgZm9udHsKICAgICAg +ICAgICAgbGluZS1oZWlnaHQ6IDEuNjsKICAgICAgICB9CiAgICA8L3N0eWxlPgo8ZGl2IHN0eWxl +PSJmb250LWZhbWlseTomcXVvdDvlvq7ova/pm4Xpu5EmcXVvdDs7IGZvbnQtc2l6ZTogMTRweDsg +Y29sb3I6IzAwMDAwMCI+CiAgICA8c3R5bGU+CiAgICAgICAgZm9udHsKICAgICAgICAgICAgbGlu +ZS1oZWlnaHQ6IDEuNjsKICAgICAgICB9CiAgICA8L3N0eWxlPgo8ZGl2IHN0eWxlPSJmb250LWZh +bWlseTomcXVvdDvlvq7ova/pm4Xpu5EmcXVvdDs7IGZvbnQtc2l6ZTogMTRweDsgY29sb3I6IzAw +MDAwMCI+CiAgICA8c3R5bGU+CiAgICAgICAgZm9udHsKICAgICAgICAgICAgbGluZS1oZWlnaHQ6 +IDEuNjsKICAgICAgICB9CiAgICA8L3N0eWxlPgo8ZGl2IHN0eWxlPSJmb250LWZhbWlseTomcXVv +dDvlvq7ova/pm4Xpu5EmcXVvdDs7IGZvbnQtc2l6ZTogMTRweDsgY29sb3I6IzAwMDAwMCI+CiAg +ICA8c3R5bGU+CiAgICAgICAgZm9udHsKICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDEuNjsKICAg +ICAgICB9CiAgICA8L3N0eWxlPgo8c3BhbiBzdHlsZT0iY29sb3I6IHJnYigxOTEsIDE5MSwgMTkx +KTsgZm9udC1mYW1pbHk6ICdNaWNyb3NvZnQgWWFoZWknOyBmb250LXNpemU6IDEzcHg7IG9ycGhh +bnM6IDI7IHdpZG93czogMjsiPkJlc3QgcmVnYXJkcyw8L3NwYW4+PGRpdiBzdHlsZT0ibWFyZ2lu +OiAwcHg7IHBhZGRpbmc6IDBweDsgYm9yZGVyOiAwcHg7IG91dGxpbmU6IDBweDsgZm9udC1mYW1p +bHk6IFRhaG9tYSwgQXJpYWwsIFNUSGVpdGksIFNpbVN1bjsgZm9udC12YXJpYW50LWxpZ2F0dXJl +czogbm9ybWFsOyBvcnBoYW5zOiAyOyB3aWRvd3M6IDI7IGNsZWFyOiBib3RoOyI+PHNwYW4gc3R5 +bGU9Im1hcmdpbjogMHB4OyBwYWRkaW5nOiAwcHg7IGJvcmRlcjogMHB4OyBvdXRsaW5lOiAwcHg7 +IGZvbnQtZmFtaWx5OiAmcXVvdDtNaWNyb3NvZnQgWWFoZWkmcXVvdDs7IGZvbnQtc2l6ZTogMTNw +eDsgY29sb3I6IHJnYigxOTEsIDE5MSwgMTkxKTsiPuadqOi9qTwvc3Bhbj48L2Rpdj48ZGl2IHN0 +eWxlPSJtYXJnaW46IDBweDsgcGFkZGluZzogMHB4OyBib3JkZXI6IDBweDsgb3V0bGluZTogMHB4 +OyBmb250LWZhbWlseTogVGFob21hLCBBcmlhbCwgU1RIZWl0aSwgU2ltU3VuOyBmb250LXZhcmlh +bnQtbGlnYXR1cmVzOiBub3JtYWw7IG9ycGhhbnM6IDI7IHdpZG93czogMjsgY2xlYXI6IGJvdGg7 +Ij48L2Rpdj48ZGl2IHN0eWxlPSJtYXJnaW46IDBweDsgcGFkZGluZzogMHB4OyBib3JkZXI6IDBw +eDsgb3V0bGluZTogMHB4OyBmb250LWZhbWlseTogVGFob21hLCBBcmlhbCwgU1RIZWl0aSwgU2lt +U3VuOyBmb250LXZhcmlhbnQtbGlnYXR1cmVzOiBub3JtYWw7IG9ycGhhbnM6IDI7IHdpZG93czog +MjsgY2xlYXI6IGJvdGg7Ij48aW1nIHN0eWxlPSJtYXgtd2lkdGg6IHVuc2V0OyIgc3JjPSJodHRw +czovL21haWwtb25saW5lLm5vc2RuLjEyNy5uZXQvd3pwbW1jL2NlOWY4YjM2ZTFmZmJlNTUzMjlj +MTk2Yzg0ZmU1MTk3LnBuZyI+PC9kaXY+PGRpdiBzdHlsZT0ibWFyZ2luOiAwcHg7IHBhZGRpbmc6 +IDBweDsgYm9yZGVyOiAwcHg7IG91dGxpbmU6IDBweDsgZm9udC1mYW1pbHk6IFRhaG9tYSwgQXJp +YWwsIFNUSGVpdGksIFNpbVN1bjsgZm9udC12YXJpYW50LWxpZ2F0dXJlczogbm9ybWFsOyBvcnBo +YW5zOiAyOyB3aWRvd3M6IDI7IGNsZWFyOiBib3RoOyI+PHNwYW4gc3R5bGU9Im1hcmdpbjogMHB4 +OyBwYWRkaW5nOiAwcHg7IGJvcmRlcjogMHB4OyBvdXRsaW5lOiAwcHg7IGZvbnQtZmFtaWx5OiAm +cXVvdDtNaWNyb3NvZnQgWWFoZWkmcXVvdDs7IGNvbG9yOiByZ2IoMTkxLCAxOTEsIDE5MSk7Ij7l +nLDlnYDvvJrkuK3lm73Ct+WNl+S6rOi9r+S7tuiwt+i9r+S7tuWkp+mBkyAxMSDlj7foirHnpZ7l +pKfljqYgMi0zRjwvc3Bhbj48L2Rpdj48ZGl2IHN0eWxlPSJtYXJnaW46IDBweDsgcGFkZGluZzog +MHB4OyBib3JkZXI6IDBweDsgb3V0bGluZTogMHB4OyBmb250LWZhbWlseTogVGFob21hLCBBcmlh +bCwgU1RIZWl0aSwgU2ltU3VuOyBmb250LXZhcmlhbnQtbGlnYXR1cmVzOiBub3JtYWw7IG9ycGhh +bnM6IDI7IHdpZG93czogMjsgY2xlYXI6IGJvdGg7Ij48c3BhbiBzdHlsZT0ibWFyZ2luOiAwcHg7 +IHBhZGRpbmc6IDBweDsgYm9yZGVyOiAwcHg7IG91dGxpbmU6IDBweDsgZm9udC1mYW1pbHk6ICZx +dW90O01pY3Jvc29mdCBZYWhlaSZxdW90OzsgY29sb3I6IHJnYigxOTEsIDE5MSwgMTkxKTsiPuaJ +i+acuu+8mjE4NzI2MTI4NDg5PC9zcGFuPjwvZGl2PjxkaXYgc3R5bGU9Im1hcmdpbjogMHB4OyBw +YWRkaW5nOiAwcHg7IGJvcmRlcjogMHB4OyBvdXRsaW5lOiAwcHg7IGZvbnQtZmFtaWx5OiBUYWhv +bWEsIEFyaWFsLCBTVEhlaXRpLCBTaW1TdW47IGZvbnQtdmFyaWFudC1saWdhdHVyZXM6IG5vcm1h +bDsgb3JwaGFuczogMjsgd2lkb3dzOiAyOyBjbGVhcjogYm90aDsiPjxzcGFuIHN0eWxlPSJtYXJn +aW46IDBweDsgcGFkZGluZzogMHB4OyBib3JkZXI6IDBweDsgb3V0bGluZTogMHB4OyBmb250LWZh +bWlseTogJnF1b3Q7TWljcm9zb2Z0IFlhaGVpJnF1b3Q7OyBjb2xvcjogcmdiKDE5MSwgMTkxLCAx +OTEpOyI+6YKu566x77yaeWFuZ3h1YW5Ad2l0c29mdC5jbjwvc3Bhbj48L2Rpdj4KPC9kaXY+Cjwv +ZGl2Pgo8L2Rpdj4KPC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PCEtLfCfmIAtLT48L2Rp +dj48L2Rpdj48L2JvZHk+PC9odG1sPg== + +--=_mailmaster-6a18e4a4_0_18be_=-- diff --git a/media/inbound/2025-08-22_1734_G5开发周报_2025-08-18_--_2025-08-22---49ce6145-7bcc-4682-ba1e-db39a73e3f49.eml b/media/inbound/2025-08-22_1734_G5开发周报_2025-08-18_--_2025-08-22---49ce6145-7bcc-4682-ba1e-db39a73e3f49.eml new file mode 100644 index 0000000..b241a8c --- /dev/null +++ b/media/inbound/2025-08-22_1734_G5开发周报_2025-08-18_--_2025-08-22---49ce6145-7bcc-4682-ba1e-db39a73e3f49.eml @@ -0,0 +1,290 @@ +Date: Fri, 22 Aug 2025 17:34:29 +0800 +From: yangxuan +To: =?utf-8?B?5YiY5by6?= +Cc: =?utf-8?B?5bGI5paw6b6Z?= , =?utf-8?B?5pyx5paM?= + , =?utf-8?B?6ZmI5piO?= , + =?utf-8?Q?xym=40witsoft.cn?= +Message-ID: <57AF9E3A-6169-4B80-8637-183A9E5D5037@witsoft.cn> +Subject: =?utf-8?B?RzXlvIDlj5HlkajmiqXjgJAyMDI1LTA4LTE4IC0tICAyMDI1LTA4?= + =?utf-8?B?LTIy44CR?= +MIME-Version: 1.0 +Content-Type: multipart/alternative; boundary="=_mailmaster-6a18e4a4_0_6784_=" + +--=_mailmaster-6a18e4a4_0_6784_= +Content-Type: text/plain; charset="utf-8" +Content-Transfer-Encoding: base64 + +5oKo5aW977yB5Lul5LiL5piv5oiR5pys5ZGo55qE5bel5L2c5oC757uT5Y+K5LiL5ZGo6K6h5YiS +77yM6K+35a6h6ZiF44CCCuS4gOOAgeacrOWRqOW3peS9nOaAu+e7kwrph43ngrnlt6XkvZzlrozm +iJDmg4XlhrUK5Lu75YqhMe+8mkc15Li75pWw5o2uNS4xLjTniYjmnKzmtYvor5XlrozmiJAK5Lu7 +5YqhMu+8mkc15Li75pWw5o2u54mp5paZ5L+h5oGv5a+85YWl5oCn6IO95LyY5YyWCuW4uOinhOW3 +peS9nArml6XluLjkuovliqEx77yaMjAyNS0wOC0xOCDkuLvmlbDmja7mtYvor5VidWfkv67lpI0g +CuaXpeW4uOS6i+WKoTLvvJoyMDI1LTA4LTE5IOS4u+aVsOaNrumcgOaxgua1i+ivleWujOaIkCAK +5pel5bi45LqL5YqhM++8mjIwMjUtMDgtMjAg54mp5paZ5L+h5oGv5oCn6IO95LyY5YyWLeWQjOat +peagoemqjOW8guatpeWFpeW6kwrml6XluLjkuovliqE077yaMjAyNS0wOC0yMSDkvJrorqHmnJ/p +l7Toh6rmtYsg6IGU6LCDIOi9rOa1iyBidWfkv67lpI0K5pel5bi45LqL5YqhNe+8mjIwMjUtMDgt +MjIg5Li75pWw5o2u54mp5paZ5a+55aSW5o6l5Y+j5byA5Y+RLOmcgOaxguWIhuaekArlrZjlnKjp +l67popjmiJbpnIDmlK/mjIHkuovpobkK6YWN5ZCI5o6S55Sf5Lqn5p+l5oCn6IO96Zeu6aKYCuS6 +jOOAgeS4i+WRqOW3peS9nOiuoeWIkgrph43ngrnku7vliqEK6K6h5YiSMe+8mkc15Li75pWw5o2u +NS4xLjXniYjmnKzlvIDlj5EK5aSH5rOo77ya5pegCkJlc3QgcmVnYXJkcyzmnajovakK5Zyw5Z2A +77ya5Lit5Zu9wrfljZfkuqzova/ku7bosLfova/ku7blpKfpgZMgMTEg5Y+36Iqx56We5aSn5Y6m +IDItM0YK5omL5py677yaMTg3MjYxMjg0ODkK6YKu566x77yaeWFuZ3h1YW5Ad2l0c29mdC5jbg== + +--=_mailmaster-6a18e4a4_0_6784_= +Content-Type: text/html; charset="utf-8" +Content-Transfer-Encoding: base64 + +PGh0bWw+PGhlYWQ+PG1ldGEgaHR0cC1lcXVpdj0nQ29udGVudC1UeXBlJyBjb250ZW50PSd0ZXh0 +L2h0bWw7IGNoYXJzZXQ9VVRGLTgnPjwvaGVhZD48Ym9keSBzdHlsZT1saW5lLWhlaWdodDogMS41 +O2ZvbnQtZmFtaWx5OiAi5b6u6L2v6ZuF6buRIj48ZGl2ICBzdHlsZT0iZm9udC1mYW1pbHk6IOW+ +rui9r+mbhem7kTsiPjxkaXYgc3R5bGU9IiI+PGRpdiBzdHlsZT0iIj48ZGl2IHN0eWxlPSIiPjxw +IGNpZD0ibjAiIG1kdHlwZT0icGFyYWdyYXBoIiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLXAgbWQt +Zm9jdXMiIHN0eWxlPSJmb250LWZhbWlseTogJnF1b3Q7T3BlbiBTYW5zJnF1b3Q7LCAmcXVvdDtD +bGVhciBTYW5zJnF1b3Q7LCAmcXVvdDtIZWx2ZXRpY2EgTmV1ZSZxdW90OywgSGVsdmV0aWNhLCBB +cmlhbCwgc2Fucy1zZXJpZjsgYm94LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGlu +aGVyaXQ7IG9ycGhhbnM6IDQ7IG1hcmdpbjogMC44ZW0gMHB4OyB3aGl0ZS1zcGFjZTogcHJlLXdy +YXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsgY29sb3I6IHJnYig1MSwgNTEsIDUxKTsgZm9udC1zaXpl +OiAxNnB4OyI+PHNwYW4gbWQtaW5saW5lPSJwbGFpbiIgY2xhc3M9Im1kLXBsYWluIG1kLWV4cGFu +ZCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij7mgqjlpb3vvIHku6XkuIvmmK/miJHm +nKzlkajnmoTlt6XkvZzmgLvnu5Plj4rkuIvlkajorqHliJLvvIzor7flrqHpmIXjgII8L3NwYW4+ +PC9wPjxkaXYgdGFiaW5kZXg9Ii0xIiBjaWQ9Im4yIiBtZHR5cGU9ImhyIiBjbGFzcz0ibWQtaHIg +bWQtZW5kLWJsb2NrIiBzdHlsZT0iZm9udC1mYW1pbHk6ICZxdW90O09wZW4gU2FucyZxdW90Oywg +JnF1b3Q7Q2xlYXIgU2FucyZxdW90OywgJnF1b3Q7SGVsdmV0aWNhIE5ldWUmcXVvdDssIEhlbHZl +dGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7IGNvbG9yOiBy +Z2IoNTEsIDUxLCA1MSk7IGZvbnQtc2l6ZTogMTZweDsiPjxociBzdHlsZT0iYm94LXNpemluZzog +Y29udGVudC1ib3g7IGhlaWdodDogMnB4OyBtYXJnaW46IDE2cHggMHB4OyBib3JkZXI6IDBweCBu +b25lOyBwYWRkaW5nOiAwcHg7IGJhY2tncm91bmQtY29sb3I6IHJnYigyMzEsIDIzMSwgMjMxKTsi +PjwvZGl2PjxoMyBjaWQ9Im4zIiBtZHR5cGU9ImhlYWRpbmciIGNsYXNzPSJtZC1lbmQtYmxvY2sg +bWQtaGVhZGluZyIgc3R5bGU9ImZvbnQtZmFtaWx5OiAmcXVvdDtPcGVuIFNhbnMmcXVvdDssICZx +dW90O0NsZWFyIFNhbnMmcXVvdDssICZxdW90O0hlbHZldGljYSBOZXVlJnF1b3Q7LCBIZWx2ZXRp +Y2EsIEFyaWFsLCBzYW5zLXNlcmlmOyBib3gtc2l6aW5nOiBib3JkZXItYm94OyBicmVhay1hZnRl +cjogYXZvaWQtcGFnZTsgYnJlYWstaW5zaWRlOiBhdm9pZDsgb3JwaGFuczogNDsgZm9udC1zaXpl +OiAxLjVlbTsgbWFyZ2luLXRvcDogMXJlbTsgbWFyZ2luLWJvdHRvbTogMXJlbTsgcG9zaXRpb246 +IHJlbGF0aXZlOyBsaW5lLWhlaWdodDogMS40MzsgY3Vyc29yOiB0ZXh0OyB3aGl0ZS1zcGFjZTog +cHJlLXdyYXA7IGNvbG9yOiByZ2IoNTEsIDUxLCA1MSk7Ij48c3BhbiBtZC1pbmxpbmU9InN0cm9u +ZyIgY2xhc3M9Im1kLXBhaXItcyAiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+PHN0 +cm9uZyBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPjxzcGFuIG1kLWlubGluZT0icGxh +aW4iIGNsYXNzPSJtZC1wbGFpbiIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij7kuIDj +gIHmnKzlkajlt6XkvZzmgLvnu5M8L3NwYW4+PC9zdHJvbmc+PC9zcGFuPjwvaDM+PG9sIGNsYXNz +PSJvbC1saXN0IiBzdGFydD0iIiBjaWQ9Im40IiBtZHR5cGU9Imxpc3QiIHN0eWxlPSJmb250LWZh +bWlseTogJnF1b3Q7T3BlbiBTYW5zJnF1b3Q7LCAmcXVvdDtDbGVhciBTYW5zJnF1b3Q7LCAmcXVv +dDtIZWx2ZXRpY2EgTmV1ZSZxdW90OywgSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjsgYm94 +LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwLjhlbSAwcHg7IHBhZGRpbmctbGVmdDogMzBw +eDsgcG9zaXRpb246IHJlbGF0aXZlOyBjb2xvcjogcmdiKDUxLCA1MSwgNTEpOyBmb250LXNpemU6 +IDE2cHg7Ij48bGkgY2xhc3M9Im1kLWxpc3QtaXRlbSIgY2lkPSJuNSIgbWR0eXBlPSJsaXN0X2l0 +ZW0iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcG9zaXRpb246 +IHJlbGF0aXZlOyI+PHAgY2lkPSJuNiIgbWR0eXBlPSJwYXJhZ3JhcGgiIGNsYXNzPSJtZC1lbmQt +YmxvY2sgbWQtcCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGxpbmUtaGVpZ2h0OiBp +bmhlcml0OyBvcnBoYW5zOiA0OyBtYXJnaW46IDBweCAwcHggMC41cmVtOyB3aGl0ZS1zcGFjZTog +cHJlLXdyYXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxzcGFuIG1kLWlubGluZT0ic3Ryb25nIiBj +bGFzcz0ibWQtcGFpci1zICIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij48c3Ryb25n +IHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+PHNwYW4gbWQtaW5saW5lPSJwbGFpbiIg +Y2xhc3M9Im1kLXBsYWluIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPumHjeeCueW3 +peS9nOWujOaIkOaDheWGtTwvc3Bhbj48L3N0cm9uZz48L3NwYW4+PC9wPjwvbGk+PHVsIGNsYXNz +PSJ1bC1saXN0IiBjaWQ9Im43IiBtZHR5cGU9Imxpc3QiIGRhdGEtbWFyaz0iLSIgc3R5bGU9ImJv +eC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBwYWRkaW5nLWxlZnQ6IDMwcHg7IHBv +c2l0aW9uOiByZWxhdGl2ZTsiPjxsaSBjbGFzcz0ibWQtbGlzdC1pdGVtIiBjaWQ9Im44IiBtZHR5 +cGU9Imxpc3RfaXRlbSIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4 +OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48cCBjaWQ9Im45IiBtZHR5cGU9InBhcmFncmFwaCIgY2xh +c3M9Im1kLWVuZC1ibG9jayBtZC1wIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbGlu +ZS1oZWlnaHQ6IGluaGVyaXQ7IG9ycGhhbnM6IDQ7IG1hcmdpbjogMHB4IDBweCAwLjVyZW07IHdo +aXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHNwYW4gbWQtaW5saW5l +PSJwbGFpbiIgY2xhc3M9Im1kLXBsYWluIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsi +PuS7u+WKoTHvvJpHNeS4u+aVsOaNrjUuMS4054mI5pys5rWL6K+V5a6M5oiQPC9zcGFuPjwvcD48 +L2xpPjxsaSBjbGFzcz0ibWQtbGlzdC1pdGVtIiBjaWQ9Im4xMCIgbWR0eXBlPSJsaXN0X2l0ZW0i +IHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcG9zaXRpb246IHJl +bGF0aXZlOyI+PHAgY2lkPSJuMTEiIG1kdHlwZT0icGFyYWdyYXBoIiBjbGFzcz0ibWQtZW5kLWJs +b2NrIG1kLXAiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5o +ZXJpdDsgb3JwaGFuczogNDsgbWFyZ2luOiAwcHggMHB4IDAuNXJlbTsgd2hpdGUtc3BhY2U6IHBy +ZS13cmFwOyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48c3BhbiBtZC1pbmxpbmU9InBsYWluIiBjbGFz +cz0ibWQtcGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+5Lu75YqhMu+8mjwv +c3Bhbj5HNeS4u+aVsOaNrueJqeaWmeS/oeaBr+WvvOWFpeaAp+iDveS8mOWMljwvcD48L2xpPjwv +dWw+PGxpIGNsYXNzPSJtZC1saXN0LWl0ZW0iIGNpZD0ibjEyIiBtZHR5cGU9Imxpc3RfaXRlbSIg +c3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBwb3NpdGlvbjogcmVs +YXRpdmU7Ij48cCBjaWQ9Im4xMyIgbWR0eXBlPSJwYXJhZ3JhcGgiIGNsYXNzPSJtZC1lbmQtYmxv +Y2sgbWQtcCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhl +cml0OyBvcnBoYW5zOiA0OyBtYXJnaW46IDBweCAwcHggMC41cmVtOyB3aGl0ZS1zcGFjZTogcHJl +LXdyYXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxzcGFuIG1kLWlubGluZT0ic3Ryb25nIiBjbGFz +cz0ibWQtcGFpci1zICIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij48c3Ryb25nIHN0 +eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+PHNwYW4gbWQtaW5saW5lPSJwbGFpbiIgY2xh +c3M9Im1kLXBsYWluIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPuW4uOinhOW3peS9 +nDwvc3Bhbj48L3N0cm9uZz48L3NwYW4+PC9wPjwvbGk+PHVsIGNsYXNzPSJ1bC1saXN0IiBjaWQ9 +Im4xNCIgbWR0eXBlPSJsaXN0IiBkYXRhLW1hcms9Ii0iIHN0eWxlPSJib3gtc2l6aW5nOiBib3Jk +ZXItYm94OyBtYXJnaW46IDBweDsgcGFkZGluZy1sZWZ0OiAzMHB4OyBwb3NpdGlvbjogcmVsYXRp +dmU7Ij48bGkgY2xhc3M9Im1kLWxpc3QtaXRlbSIgY2lkPSJuMTUiIG1kdHlwZT0ibGlzdF9pdGVt +IiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBvc2l0aW9uOiBy +ZWxhdGl2ZTsiPjxwIGNpZD0ibjE2IiBtZHR5cGU9InBhcmFncmFwaCIgY2xhc3M9Im1kLWVuZC1i +bG9jayBtZC1wIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGlu +aGVyaXQ7IG9ycGhhbnM6IDQ7IG1hcmdpbjogMHB4IDBweCAwLjVyZW07IHdoaXRlLXNwYWNlOiBw +cmUtd3JhcDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHNwYW4gbWQtaW5saW5lPSJwbGFpbiIgY2xh +c3M9Im1kLXBsYWluIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPuaXpeW4uOS6i+WK +oTHvvJoyMDI1LTA4LTE4IOS4u+aVsOaNrua1i+ivlWJ1Z+S/ruWkjQo8L3NwYW4+PC9wPjwvbGk+ +PGxpIGNsYXNzPSJtZC1saXN0LWl0ZW0iIGNpZD0ibjE1IiBtZHR5cGU9Imxpc3RfaXRlbSIgc3R5 +bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBwb3NpdGlvbjogcmVsYXRp +dmU7Ij48cCBjaWQ9Im4xNiIgbWR0eXBlPSJwYXJhZ3JhcGgiIGNsYXNzPSJtZC1lbmQtYmxvY2sg +bWQtcCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhlcml0 +OyBvcnBoYW5zOiA0OyBtYXJnaW46IDBweCAwcHggMC41cmVtOyB3aGl0ZS1zcGFjZTogcHJlLXdy +YXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxzcGFuIG1kLWlubGluZT0icGxhaW4iIGNsYXNzPSJt +ZC1wbGFpbiIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij7ml6XluLjkuovliqEy77ya +MjAyNS0wOC0xOSDkuLvmlbDmja7pnIDmsYLmtYvor5XlrozmiJAKPC9zcGFuPjwvcD48L2xpPjxs +aSBjbGFzcz0ibWQtbGlzdC1pdGVtIiBjaWQ9Im4xNyIgbWR0eXBlPSJsaXN0X2l0ZW0iIHN0eWxl +PSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcG9zaXRpb246IHJlbGF0aXZl +OyI+PHAgY2lkPSJuMTgiIG1kdHlwZT0icGFyYWdyYXBoIiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1k +LXAiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5oZXJpdDsg +b3JwaGFuczogNDsgbWFyZ2luOiAwcHggMHB4IDAuNXJlbTsgd2hpdGUtc3BhY2U6IHByZS13cmFw +OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48c3BhbiBtZC1pbmxpbmU9InBsYWluIiBjbGFzcz0ibWQt +cGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+5pel5bi45LqL5YqhM++8mjIw +MjUtMDgtMjAgPC9zcGFuPueJqeaWmeS/oeaBr+aAp+iDveS8mOWMli3lkIzmraXmoKHpqozlvILm +raXlhaXlupM8L3A+PC9saT48bGkgY2xhc3M9Im1kLWxpc3QtaXRlbSIgY2lkPSJuODQiIG1kdHlw +ZT0ibGlzdF9pdGVtIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7 +IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxwIGNpZD0ibjg1IiBtZHR5cGU9InBhcmFncmFwaCIgY2xh +c3M9Im1kLWVuZC1ibG9jayBtZC1wIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbGlu +ZS1oZWlnaHQ6IGluaGVyaXQ7IG9ycGhhbnM6IDQ7IG1hcmdpbjogMHB4IDBweCAwLjVyZW07IHdo +aXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHNwYW4gbWQtaW5saW5l +PSJwbGFpbiIgY2xhc3M9Im1kLXBsYWluIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsi +PuaXpeW4uOS6i+WKoTTvvJoyMDI1LTA4LTIxIOS8muiuoeacn+mXtOiHqua1iyDogZTosIMg6L2s +5rWLIGJ1Z+S/ruWkjTwvc3Bhbj48L3A+PC9saT48bGkgY2xhc3M9Im1kLWxpc3QtaXRlbSIgY2lk +PSJuOTEiIG1kdHlwZT0ibGlzdF9pdGVtIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsg +bWFyZ2luOiAwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxwIGNpZD0ibjg5IiBtZHR5cGU9InBh +cmFncmFwaCIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1wIiBzdHlsZT0iYm94LXNpemluZzogYm9y +ZGVyLWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IG9ycGhhbnM6IDQ7IG1hcmdpbjogMHB4IDBw +eCAwLjVyZW07IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHNw +YW4gbWQtaW5saW5lPSJwbGFpbiIgY2xhc3M9Im1kLXBsYWluIiBzdHlsZT0iYm94LXNpemluZzog +Ym9yZGVyLWJveDsiPuaXpeW4uOS6i+WKoTXvvJo8L3NwYW4+MjAyNS0wOC0yMiDkuLvmlbDmja7n +ianmlpnlr7nlpJbmjqXlj6PlvIDlj5Es6ZyA5rGC5YiG5p6QPC9wPjwvbGk+PC91bD48bGkgY2xh +c3M9Im1kLWxpc3QtaXRlbSIgY2lkPSJuMTkiIG1kdHlwZT0ibGlzdF9pdGVtIiBzdHlsZT0iYm94 +LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxw +IGNpZD0ibjIwIiBtZHR5cGU9InBhcmFncmFwaCIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1wIiBz +dHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IG9ycGhh +bnM6IDQ7IG1hcmdpbjogMHB4IDBweCAwLjVyZW07IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9z +aXRpb246IHJlbGF0aXZlOyI+PHNwYW4gbWQtaW5saW5lPSJzdHJvbmciIGNsYXNzPSJtZC1wYWly +LXMgIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPjxzdHJvbmcgc3R5bGU9ImJveC1z +aXppbmc6IGJvcmRlci1ib3g7Ij48c3BhbiBtZC1pbmxpbmU9InBsYWluIiBjbGFzcz0ibWQtcGxh +aW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+5a2Y5Zyo6Zeu6aKY5oiW6ZyA5pSv +5oyB5LqL6aG5PC9zcGFuPjwvc3Ryb25nPjwvc3Bhbj48L3A+PHAgY2lkPSJuMTAwIiBtZHR5cGU9 +InBhcmFncmFwaCIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1wIiBzdHlsZT0iYm94LXNpemluZzog +Ym9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IG9ycGhhbnM6IDQ7IG1hcmdpbjogMC41 +cmVtIDBweDsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyBwb3NpdGlvbjogcmVsYXRpdmU7Ij7phY3l +kIjmjpLnlJ/kuqfmn6XmgKfog73pl67popg8L3A+PC9saT48L29sPjxkaXYgdGFiaW5kZXg9Ii0x +IiBjaWQ9Im4yNCIgbWR0eXBlPSJociIgY2xhc3M9Im1kLWhyIG1kLWVuZC1ibG9jayIgc3R5bGU9 +ImZvbnQtZmFtaWx5OiAmcXVvdDtPcGVuIFNhbnMmcXVvdDssICZxdW90O0NsZWFyIFNhbnMmcXVv +dDssICZxdW90O0hlbHZldGljYSBOZXVlJnF1b3Q7LCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNl +cmlmOyBib3gtc2l6aW5nOiBib3JkZXItYm94OyBjb2xvcjogcmdiKDUxLCA1MSwgNTEpOyBmb250 +LXNpemU6IDE2cHg7Ij48aHIgc3R5bGU9ImJveC1zaXppbmc6IGNvbnRlbnQtYm94OyBoZWlnaHQ6 +IDJweDsgbWFyZ2luOiAxNnB4IDBweDsgYm9yZGVyOiAwcHggbm9uZTsgcGFkZGluZzogMHB4OyBi +YWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjMxLCAyMzEsIDIzMSk7Ij48L2Rpdj48aDMgY2lkPSJuMjUi +IG1kdHlwZT0iaGVhZGluZyIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1oZWFkaW5nIiBzdHlsZT0i +Zm9udC1mYW1pbHk6ICZxdW90O09wZW4gU2FucyZxdW90OywgJnF1b3Q7Q2xlYXIgU2FucyZxdW90 +OywgJnF1b3Q7SGVsdmV0aWNhIE5ldWUmcXVvdDssIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2Vy +aWY7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7IGJyZWFrLWFmdGVyOiBhdm9pZC1wYWdlOyBicmVh +ay1pbnNpZGU6IGF2b2lkOyBvcnBoYW5zOiA0OyBmb250LXNpemU6IDEuNWVtOyBtYXJnaW4tdG9w +OiAxcmVtOyBtYXJnaW4tYm90dG9tOiAxcmVtOyBwb3NpdGlvbjogcmVsYXRpdmU7IGxpbmUtaGVp +Z2h0OiAxLjQzOyBjdXJzb3I6IHRleHQ7IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgY29sb3I6IHJn +Yig1MSwgNTEsIDUxKTsiPjxzcGFuIG1kLWlubGluZT0ic3Ryb25nIiBjbGFzcz0ibWQtcGFpci1z +ICIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij48c3Ryb25nIHN0eWxlPSJib3gtc2l6 +aW5nOiBib3JkZXItYm94OyI+PHNwYW4gbWQtaW5saW5lPSJwbGFpbiIgY2xhc3M9Im1kLXBsYWlu +IiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPuS6jOOAgeS4i+WRqOW3peS9nOiuoeWI +kjwvc3Bhbj48L3N0cm9uZz48L3NwYW4+PC9oMz48b2wgY2xhc3M9Im9sLWxpc3QiIHN0YXJ0PSIi +IGNpZD0ibjI2IiBtZHR5cGU9Imxpc3QiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBt +YXJnaW46IDAuOGVtIDBweDsgcGFkZGluZy1sZWZ0OiAzMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7 +Ij48bGkgY2xhc3M9Im1kLWxpc3QtaXRlbSIgY2lkPSJuMjciIG1kdHlwZT0ibGlzdF9pdGVtIiBz +dHlsZT0iY29sb3I6IHJnYig1MSwgNTEsIDUxKTsgZm9udC1mYW1pbHk6ICZxdW90O09wZW4gU2Fu +cyZxdW90OywgJnF1b3Q7Q2xlYXIgU2FucyZxdW90OywgJnF1b3Q7SGVsdmV0aWNhIE5ldWUmcXVv +dDssIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTZweDsgYm94LXNp +emluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxwIGNp +ZD0ibjI4IiBtZHR5cGU9InBhcmFncmFwaCIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1wIiBzdHls +ZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IG9ycGhhbnM6 +IDQ7IG1hcmdpbjogMHB4IDBweCAwLjVyZW07IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRp +b246IHJlbGF0aXZlOyI+PHNwYW4gbWQtaW5saW5lPSJzdHJvbmciIGNsYXNzPSJtZC1wYWlyLXMg +IiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPjxzdHJvbmcgc3R5bGU9ImJveC1zaXpp +bmc6IGJvcmRlci1ib3g7Ij48c3BhbiBtZC1pbmxpbmU9InBsYWluIiBjbGFzcz0ibWQtcGxhaW4i +IHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+6YeN54K55Lu75YqhPC9zcGFuPjwvc3Ry +b25nPjwvc3Bhbj48L3A+PC9saT48dWwgY2xhc3M9InVsLWxpc3QiIGNpZD0ibjI5IiBtZHR5cGU9 +Imxpc3QiIGRhdGEtbWFyaz0iLSIgc3R5bGU9ImNvbG9yOiByZ2IoNTEsIDUxLCA1MSk7IGZvbnQt +ZmFtaWx5OiAmcXVvdDtPcGVuIFNhbnMmcXVvdDssICZxdW90O0NsZWFyIFNhbnMmcXVvdDssICZx +dW90O0hlbHZldGljYSBOZXVlJnF1b3Q7LCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmOyBm +b250LXNpemU6IDE2cHg7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBwYWRk +aW5nLWxlZnQ6IDMwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxsaSBjbGFzcz0ibWQtbGlzdC1p +dGVtIiBjaWQ9Im4zMCIgbWR0eXBlPSJsaXN0X2l0ZW0iIHN0eWxlPSJib3gtc2l6aW5nOiBib3Jk +ZXItYm94OyBtYXJnaW46IDBweDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHAgY2lkPSJuMzEiIG1k +dHlwZT0icGFyYWdyYXBoIiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLXAiIHN0eWxlPSJib3gtc2l6 +aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5oZXJpdDsgb3JwaGFuczogNDsgbWFyZ2lu +OiAwcHggMHB4IDAuNXJlbTsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyBwb3NpdGlvbjogcmVsYXRp +dmU7Ij48c3BhbiBtZC1pbmxpbmU9InBsYWluIiBjbGFzcz0ibWQtcGxhaW4iIHN0eWxlPSJib3gt +c2l6aW5nOiBib3JkZXItYm94OyI+6K6h5YiSMe+8mkc15Li75pWw5o2uNS4xLjXniYjmnKzlvIDl +j5E8L3NwYW4+PC9wPjwvbGk+PC91bD48L29sPjxkaXYgdGFiaW5kZXg9Ii0xIiBjaWQ9Im4zOSIg +bWR0eXBlPSJociIgY2xhc3M9Im1kLWhyIG1kLWVuZC1ibG9jayIgc3R5bGU9ImZvbnQtZmFtaWx5 +OiAmcXVvdDtPcGVuIFNhbnMmcXVvdDssICZxdW90O0NsZWFyIFNhbnMmcXVvdDssICZxdW90O0hl +bHZldGljYSBOZXVlJnF1b3Q7LCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmOyBib3gtc2l6 +aW5nOiBib3JkZXItYm94OyBjb2xvcjogcmdiKDUxLCA1MSwgNTEpOyBmb250LXNpemU6IDE2cHg7 +Ij48aHIgc3R5bGU9ImJveC1zaXppbmc6IGNvbnRlbnQtYm94OyBoZWlnaHQ6IDJweDsgbWFyZ2lu +OiAxNnB4IDBweDsgYm9yZGVyOiAwcHggbm9uZTsgcGFkZGluZzogMHB4OyBiYWNrZ3JvdW5kLWNv +bG9yOiByZ2IoMjMxLCAyMzEsIDIzMSk7Ij48L2Rpdj48cCBjaWQ9Im40MCIgbWR0eXBlPSJwYXJh +Z3JhcGgiIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCIgc3R5bGU9ImZvbnQtZmFtaWx5OiAmcXVv +dDtPcGVuIFNhbnMmcXVvdDssICZxdW90O0NsZWFyIFNhbnMmcXVvdDssICZxdW90O0hlbHZldGlj +YSBOZXVlJnF1b3Q7LCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmOyBib3gtc2l6aW5nOiBi +b3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5oZXJpdDsgb3JwaGFuczogNDsgbWFyZ2luOiAwLjhl +bSAwcHg7IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJlbGF0aXZlOyBjb2xvcjog +cmdiKDUxLCA1MSwgNTEpOyBmb250LXNpemU6IDE2cHg7Ij48c3BhbiBtZC1pbmxpbmU9InN0cm9u +ZyIgY2xhc3M9Im1kLXBhaXItcyAiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+PHN0 +cm9uZyBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPjxzcGFuIG1kLWlubGluZT0icGxh +aW4iIGNsYXNzPSJtZC1wbGFpbiIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij7lpIfm +s6g8L3NwYW4+PC9zdHJvbmc+PC9zcGFuPjxzcGFuIG1kLWlubGluZT0icGxhaW4iIGNsYXNzPSJt +ZC1wbGFpbiBtZC1leHBhbmQiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+77ya5peg +PC9zcGFuPjwvcD48L2Rpdj48ZGl2IHN0eWxlPSJmb250LWZhbWlseTog5b6u6L2v6ZuF6buROyI+ +PGJyPjwvZGl2PjxkaXYgc3BlbGxjaGVjaz0iZmFsc2UiIGlkPSJudGVzLXBjbWFjLXNpZ25hdHVy +ZSIgc3R5bGU9ImZvbnQtZmFtaWx5OiDlvq7ova/pm4Xpu5E7IiBkYXRhLW50ZXMtc2lnbmF0dXJl +PSJ0cnVlIj48ZGl2IHN0eWxlPSJmb250LXNpemU6MTRweDtwYWRkaW5nOjA7bWFyZ2luOjAiPjxk +aXYgc3R5bGU9InBhZGRpbmctYm90dG9tOjEwcHg7bWFyZ2luLWJvdHRvbToxMHB4O2Rpc3BsYXk6 +aW5saW5lLWJsb2NrIj48ZGl2IHN0eWxlPSJmb250LWZhbWlseTomcXVvdDvlvq7ova/pm4Xpu5Em +cXVvdDs7IGZvbnQtc2l6ZTogMTRweDsgY29sb3I6IzAwMDAwMCI+CiAgICA8c3R5bGU+CiAgICAg +ICAgZm9udHsKICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDEuNjsKICAgICAgICB9CiAgICA8L3N0 +eWxlPgo8ZGl2IHN0eWxlPSJmb250LWZhbWlseTomcXVvdDvlvq7ova/pm4Xpu5EmcXVvdDs7IGZv +bnQtc2l6ZTogMTRweDsgY29sb3I6IzAwMDAwMCI+CiAgICA8c3R5bGU+CiAgICAgICAgZm9udHsK +ICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDEuNjsKICAgICAgICB9CiAgICA8L3N0eWxlPgo8ZGl2 +IHN0eWxlPSJmb250LWZhbWlseTomcXVvdDvlvq7ova/pm4Xpu5EmcXVvdDs7IGZvbnQtc2l6ZTog +MTRweDsgY29sb3I6IzAwMDAwMCI+CiAgICA8c3R5bGU+CiAgICAgICAgZm9udHsKICAgICAgICAg +ICAgbGluZS1oZWlnaHQ6IDEuNjsKICAgICAgICB9CiAgICA8L3N0eWxlPgo8ZGl2IHN0eWxlPSJm +b250LWZhbWlseTomcXVvdDvlvq7ova/pm4Xpu5EmcXVvdDs7IGZvbnQtc2l6ZTogMTRweDsgY29s +b3I6IzAwMDAwMCI+CiAgICA8c3R5bGU+CiAgICAgICAgZm9udHsKICAgICAgICAgICAgbGluZS1o +ZWlnaHQ6IDEuNjsKICAgICAgICB9CiAgICA8L3N0eWxlPgo8c3BhbiBzdHlsZT0iY29sb3I6IHJn +YigxOTEsIDE5MSwgMTkxKTsgZm9udC1mYW1pbHk6ICdNaWNyb3NvZnQgWWFoZWknOyBmb250LXNp +emU6IDEzcHg7IG9ycGhhbnM6IDI7IHdpZG93czogMjsiPkJlc3QgcmVnYXJkcyw8L3NwYW4+PGRp +diBzdHlsZT0ibWFyZ2luOiAwcHg7IHBhZGRpbmc6IDBweDsgYm9yZGVyOiAwcHg7IG91dGxpbmU6 +IDBweDsgZm9udC1mYW1pbHk6IFRhaG9tYSwgQXJpYWwsIFNUSGVpdGksIFNpbVN1bjsgZm9udC12 +YXJpYW50LWxpZ2F0dXJlczogbm9ybWFsOyBvcnBoYW5zOiAyOyB3aWRvd3M6IDI7IGNsZWFyOiBi +b3RoOyI+PHNwYW4gc3R5bGU9Im1hcmdpbjogMHB4OyBwYWRkaW5nOiAwcHg7IGJvcmRlcjogMHB4 +OyBvdXRsaW5lOiAwcHg7IGZvbnQtZmFtaWx5OiAmcXVvdDtNaWNyb3NvZnQgWWFoZWkmcXVvdDs7 +IGZvbnQtc2l6ZTogMTNweDsgY29sb3I6IHJnYigxOTEsIDE5MSwgMTkxKTsiPuadqOi9qTwvc3Bh +bj48L2Rpdj48ZGl2IHN0eWxlPSJtYXJnaW46IDBweDsgcGFkZGluZzogMHB4OyBib3JkZXI6IDBw +eDsgb3V0bGluZTogMHB4OyBmb250LWZhbWlseTogVGFob21hLCBBcmlhbCwgU1RIZWl0aSwgU2lt +U3VuOyBmb250LXZhcmlhbnQtbGlnYXR1cmVzOiBub3JtYWw7IG9ycGhhbnM6IDI7IHdpZG93czog +MjsgY2xlYXI6IGJvdGg7Ij48L2Rpdj48ZGl2IHN0eWxlPSJtYXJnaW46IDBweDsgcGFkZGluZzog +MHB4OyBib3JkZXI6IDBweDsgb3V0bGluZTogMHB4OyBmb250LWZhbWlseTogVGFob21hLCBBcmlh +bCwgU1RIZWl0aSwgU2ltU3VuOyBmb250LXZhcmlhbnQtbGlnYXR1cmVzOiBub3JtYWw7IG9ycGhh +bnM6IDI7IHdpZG93czogMjsgY2xlYXI6IGJvdGg7Ij48aW1nIHN0eWxlPSJtYXgtd2lkdGg6IHVu +c2V0OyIgc3JjPSJodHRwczovL21haWwtb25saW5lLm5vc2RuLjEyNy5uZXQvd3pwbW1jL2NlOWY4 +YjM2ZTFmZmJlNTUzMjljMTk2Yzg0ZmU1MTk3LnBuZyI+PC9kaXY+PGRpdiBzdHlsZT0ibWFyZ2lu +OiAwcHg7IHBhZGRpbmc6IDBweDsgYm9yZGVyOiAwcHg7IG91dGxpbmU6IDBweDsgZm9udC1mYW1p +bHk6IFRhaG9tYSwgQXJpYWwsIFNUSGVpdGksIFNpbVN1bjsgZm9udC12YXJpYW50LWxpZ2F0dXJl +czogbm9ybWFsOyBvcnBoYW5zOiAyOyB3aWRvd3M6IDI7IGNsZWFyOiBib3RoOyI+PHNwYW4gc3R5 +bGU9Im1hcmdpbjogMHB4OyBwYWRkaW5nOiAwcHg7IGJvcmRlcjogMHB4OyBvdXRsaW5lOiAwcHg7 +IGZvbnQtZmFtaWx5OiAmcXVvdDtNaWNyb3NvZnQgWWFoZWkmcXVvdDs7IGNvbG9yOiByZ2IoMTkx +LCAxOTEsIDE5MSk7Ij7lnLDlnYDvvJrkuK3lm73Ct+WNl+S6rOi9r+S7tuiwt+i9r+S7tuWkp+mB +kyAxMSDlj7foirHnpZ7lpKfljqYgMi0zRjwvc3Bhbj48L2Rpdj48ZGl2IHN0eWxlPSJtYXJnaW46 +IDBweDsgcGFkZGluZzogMHB4OyBib3JkZXI6IDBweDsgb3V0bGluZTogMHB4OyBmb250LWZhbWls +eTogVGFob21hLCBBcmlhbCwgU1RIZWl0aSwgU2ltU3VuOyBmb250LXZhcmlhbnQtbGlnYXR1cmVz +OiBub3JtYWw7IG9ycGhhbnM6IDI7IHdpZG93czogMjsgY2xlYXI6IGJvdGg7Ij48c3BhbiBzdHls +ZT0ibWFyZ2luOiAwcHg7IHBhZGRpbmc6IDBweDsgYm9yZGVyOiAwcHg7IG91dGxpbmU6IDBweDsg +Zm9udC1mYW1pbHk6ICZxdW90O01pY3Jvc29mdCBZYWhlaSZxdW90OzsgY29sb3I6IHJnYigxOTEs +IDE5MSwgMTkxKTsiPuaJi+acuu+8mjE4NzI2MTI4NDg5PC9zcGFuPjwvZGl2PjxkaXYgc3R5bGU9 +Im1hcmdpbjogMHB4OyBwYWRkaW5nOiAwcHg7IGJvcmRlcjogMHB4OyBvdXRsaW5lOiAwcHg7IGZv +bnQtZmFtaWx5OiBUYWhvbWEsIEFyaWFsLCBTVEhlaXRpLCBTaW1TdW47IGZvbnQtdmFyaWFudC1s +aWdhdHVyZXM6IG5vcm1hbDsgb3JwaGFuczogMjsgd2lkb3dzOiAyOyBjbGVhcjogYm90aDsiPjxz +cGFuIHN0eWxlPSJtYXJnaW46IDBweDsgcGFkZGluZzogMHB4OyBib3JkZXI6IDBweDsgb3V0bGlu +ZTogMHB4OyBmb250LWZhbWlseTogJnF1b3Q7TWljcm9zb2Z0IFlhaGVpJnF1b3Q7OyBjb2xvcjog +cmdiKDE5MSwgMTkxLCAxOTEpOyI+6YKu566x77yaeWFuZ3h1YW5Ad2l0c29mdC5jbjwvc3Bhbj48 +L2Rpdj4KPC9kaXY+CjwvZGl2Pgo8L2Rpdj4KPC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+ +PCEtLfCfmIAtLT48L2Rpdj48L2Rpdj48L2JvZHk+PC9odG1sPg== + +--=_mailmaster-6a18e4a4_0_6784_=-- diff --git a/media/inbound/2025-08-29_1700_G5开发周报_2025-08-25_--_2025-08-29---16206e32-fcbd-4a9f-8879-0eb77ac8b6a9.eml b/media/inbound/2025-08-29_1700_G5开发周报_2025-08-25_--_2025-08-29---16206e32-fcbd-4a9f-8879-0eb77ac8b6a9.eml new file mode 100644 index 0000000..fe10bb0 --- /dev/null +++ b/media/inbound/2025-08-29_1700_G5开发周报_2025-08-25_--_2025-08-29---16206e32-fcbd-4a9f-8879-0eb77ac8b6a9.eml @@ -0,0 +1,283 @@ +Date: Fri, 29 Aug 2025 17:00:01 +0800 +From: yangxuan +To: =?utf-8?B?5YiY5by6?= +Cc: =?utf-8?B?5bGI5paw6b6Z?= , =?utf-8?B?5pyx5paM?= + , =?utf-8?B?6ZmI5piO?= , + =?utf-8?Q?xym=40witsoft.cn?= +Message-ID: +Subject: =?utf-8?B?RzXlvIDlj5HlkajmiqXjgJAyMDI1LTA4LTI1IC0tICAyMDI1LTA4?= + =?utf-8?B?LTI544CR?= +MIME-Version: 1.0 +Content-Type: multipart/alternative; boundary="=_mailmaster-6a18e4a4_0_4ae1_=" + +--=_mailmaster-6a18e4a4_0_4ae1_= +Content-Type: text/plain; charset="utf-8" +Content-Transfer-Encoding: base64 + +5oKo5aW977yB5Lul5LiL5piv5oiR5pys5ZGo55qE5bel5L2c5oC757uT5Y+K5LiL5ZGo6K6h5YiS +77yM6K+35a6h6ZiF44CCCuS4gOOAgeacrOWRqOW3peS9nOaAu+e7kwrph43ngrnlt6XkvZzlrozm +iJDmg4XlhrUK5Lu75YqhMe+8mkc15Li75pWw5o2uNS4xLjXniYjmnKzlj5HluIMK5Lu75YqhMu+8 +mkc15Li75pWw5o2u54mp5paZ5L+h5oGv5a+85YWl5oCn6IO95LyY5YyW5a6M5oiQCuW4uOinhOW3 +peS9nArml6XluLjkuovliqEx77yaMjAyNS0wOC0yNSDlr7nlpJbmjqXlj6PlvIDlj5Es5a+85YWl +5oCn6IO95LyY5YyWIArml6XluLjkuovliqEy77yaMjAyNS0wOC0yNiDkuLvmlbDmja7pnZ7mjqXl +j6PpnIDmsYLlhajpg6jovazmtYsgCuaXpeW4uOS6i+WKoTPvvJoyMDI1LTA4LTI3IOS4u+aVsOaN +ruWvueWkluaOpeWPo+W8gOWPkQrml6XluLjkuovliqE077yaMjAyNS0wOC0yOCDkuLvmlbDmja7n +ianmlpnlr7zlhaXmtYvor5XlrozmiJAK5pel5bi45LqL5YqhNe+8mjIwMjUtMDgtMjkg5Li75pWw +5o2uNS4xLjXmtYvor5Xnu5PmnZ8g5Y+R54mI5pSv5oyBCuWtmOWcqOmXrumimOaIlumcgOaUr+aM +geS6i+mhuQrkuozjgIHkuIvlkajlt6XkvZzorqHliJIK6YeN54K55Lu75YqhCuiuoeWIkjHvvJpH +NeS4u+aVsOaNrjUuMS4254mI5pys5byA5Y+RCuWkh+azqO+8muaXoApCZXN0IHJlZ2FyZHMs5p2o +6L2pCuWcsOWdgO+8muS4reWbvcK35Y2X5Lqs6L2v5Lu26LC36L2v5Lu25aSn6YGTIDExIOWPt+iK +seelnuWkp+WOpiAyLTNGCuaJi+acuu+8mjE4NzI2MTI4NDg5CumCrueuse+8mnlhbmd4dWFuQHdp +dHNvZnQuY24= + +--=_mailmaster-6a18e4a4_0_4ae1_= +Content-Type: text/html; charset="utf-8" +Content-Transfer-Encoding: base64 + +PGh0bWw+PGhlYWQ+PG1ldGEgaHR0cC1lcXVpdj0nQ29udGVudC1UeXBlJyBjb250ZW50PSd0ZXh0 +L2h0bWw7IGNoYXJzZXQ9VVRGLTgnPjwvaGVhZD48Ym9keSBzdHlsZT1saW5lLWhlaWdodDogMS41 +O2ZvbnQtZmFtaWx5OiAi5b6u6L2v6ZuF6buRIj48ZGl2ICBzdHlsZT0iZm9udC1mYW1pbHk6IOW+ +rui9r+mbhem7kTsiPjxkaXYgc3R5bGU9ImZvbnQtZmFtaWx5OiDlvq7ova/pm4Xpu5E7Ij48ZGl2 +IHN0eWxlPSIiPjxkaXYgc3R5bGU9IiI+PHAgY2lkPSJuMCIgbWR0eXBlPSJwYXJhZ3JhcGgiIGNs +YXNzPSJtZC1lbmQtYmxvY2sgbWQtcCBtZC1mb2N1cyIgc3R5bGU9ImZvbnQtZmFtaWx5OiAmcXVv +dDtPcGVuIFNhbnMmcXVvdDssICZxdW90O0NsZWFyIFNhbnMmcXVvdDssICZxdW90O0hlbHZldGlj +YSBOZXVlJnF1b3Q7LCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmOyBib3gtc2l6aW5nOiBi +b3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5oZXJpdDsgb3JwaGFuczogNDsgbWFyZ2luOiAwLjhl +bSAwcHg7IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJlbGF0aXZlOyBjb2xvcjog +cmdiKDUxLCA1MSwgNTEpOyBmb250LXNpemU6IDE2cHg7Ij48c3BhbiBtZC1pbmxpbmU9InBsYWlu +IiBjbGFzcz0ibWQtcGxhaW4gbWQtZXhwYW5kIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJv +eDsiPuaCqOWlve+8geS7peS4i+aYr+aIkeacrOWRqOeahOW3peS9nOaAu+e7k+WPiuS4i+WRqOiu +oeWIku+8jOivt+WuoemYheOAgjwvc3Bhbj48L3A+PGRpdiB0YWJpbmRleD0iLTEiIGNpZD0ibjIi +IG1kdHlwZT0iaHIiIGNsYXNzPSJtZC1ociBtZC1lbmQtYmxvY2siIHN0eWxlPSJmb250LWZhbWls +eTogJnF1b3Q7T3BlbiBTYW5zJnF1b3Q7LCAmcXVvdDtDbGVhciBTYW5zJnF1b3Q7LCAmcXVvdDtI +ZWx2ZXRpY2EgTmV1ZSZxdW90OywgSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjsgYm94LXNp +emluZzogYm9yZGVyLWJveDsgY29sb3I6IHJnYig1MSwgNTEsIDUxKTsgZm9udC1zaXplOiAxNnB4 +OyI+PGhyIHN0eWxlPSJib3gtc2l6aW5nOiBjb250ZW50LWJveDsgaGVpZ2h0OiAycHg7IG1hcmdp +bjogMTZweCAwcHg7IGJvcmRlcjogMHB4IG5vbmU7IHBhZGRpbmc6IDBweDsgYmFja2dyb3VuZC1j +b2xvcjogcmdiKDIzMSwgMjMxLCAyMzEpOyI+PC9kaXY+PGgzIGNpZD0ibjMiIG1kdHlwZT0iaGVh +ZGluZyIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1oZWFkaW5nIiBzdHlsZT0iZm9udC1mYW1pbHk6 +ICZxdW90O09wZW4gU2FucyZxdW90OywgJnF1b3Q7Q2xlYXIgU2FucyZxdW90OywgJnF1b3Q7SGVs +dmV0aWNhIE5ldWUmcXVvdDssIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7IGJveC1zaXpp +bmc6IGJvcmRlci1ib3g7IGJyZWFrLWFmdGVyOiBhdm9pZC1wYWdlOyBicmVhay1pbnNpZGU6IGF2 +b2lkOyBvcnBoYW5zOiA0OyBmb250LXNpemU6IDEuNWVtOyBtYXJnaW4tdG9wOiAxcmVtOyBtYXJn +aW4tYm90dG9tOiAxcmVtOyBwb3NpdGlvbjogcmVsYXRpdmU7IGxpbmUtaGVpZ2h0OiAxLjQzOyBj +dXJzb3I6IHRleHQ7IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgY29sb3I6IHJnYig1MSwgNTEsIDUx +KTsiPjxzcGFuIG1kLWlubGluZT0ic3Ryb25nIiBjbGFzcz0ibWQtcGFpci1zICIgc3R5bGU9ImJv +eC1zaXppbmc6IGJvcmRlci1ib3g7Ij48c3Ryb25nIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXIt +Ym94OyI+PHNwYW4gbWQtaW5saW5lPSJwbGFpbiIgY2xhc3M9Im1kLXBsYWluIiBzdHlsZT0iYm94 +LXNpemluZzogYm9yZGVyLWJveDsiPuS4gOOAgeacrOWRqOW3peS9nOaAu+e7kzwvc3Bhbj48L3N0 +cm9uZz48L3NwYW4+PC9oMz48b2wgY2xhc3M9Im9sLWxpc3QiIHN0YXJ0PSIiIGNpZD0ibjQiIG1k +dHlwZT0ibGlzdCIgc3R5bGU9ImZvbnQtZmFtaWx5OiAmcXVvdDtPcGVuIFNhbnMmcXVvdDssICZx +dW90O0NsZWFyIFNhbnMmcXVvdDssICZxdW90O0hlbHZldGljYSBOZXVlJnF1b3Q7LCBIZWx2ZXRp +Y2EsIEFyaWFsLCBzYW5zLXNlcmlmOyBib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDAu +OGVtIDBweDsgcGFkZGluZy1sZWZ0OiAzMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7IGNvbG9yOiBy +Z2IoNTEsIDUxLCA1MSk7IGZvbnQtc2l6ZTogMTZweDsiPjxsaSBjbGFzcz0ibWQtbGlzdC1pdGVt +IiBjaWQ9Im41IiBtZHR5cGU9Imxpc3RfaXRlbSIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1i +b3g7IG1hcmdpbjogMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48cCBjaWQ9Im42IiBtZHR5cGU9 +InBhcmFncmFwaCIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1wIiBzdHlsZT0iYm94LXNpemluZzog +Ym9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IG9ycGhhbnM6IDQ7IG1hcmdpbjogMHB4 +IDBweCAwLjVyZW07IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJlbGF0aXZlOyI+ +PHNwYW4gbWQtaW5saW5lPSJzdHJvbmciIGNsYXNzPSJtZC1wYWlyLXMgIiBzdHlsZT0iYm94LXNp +emluZzogYm9yZGVyLWJveDsiPjxzdHJvbmcgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7 +Ij48c3BhbiBtZC1pbmxpbmU9InBsYWluIiBjbGFzcz0ibWQtcGxhaW4iIHN0eWxlPSJib3gtc2l6 +aW5nOiBib3JkZXItYm94OyI+6YeN54K55bel5L2c5a6M5oiQ5oOF5Ya1PC9zcGFuPjwvc3Ryb25n +Pjwvc3Bhbj48L3A+PC9saT48dWwgY2xhc3M9InVsLWxpc3QiIGNpZD0ibjciIG1kdHlwZT0ibGlz +dCIgZGF0YS1tYXJrPSItIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAw +cHg7IHBhZGRpbmctbGVmdDogMzBweDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PGxpIGNsYXNzPSJt +ZC1saXN0LWl0ZW0iIGNpZD0ibjgiIG1kdHlwZT0ibGlzdF9pdGVtIiBzdHlsZT0iYm94LXNpemlu +ZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxwIGNpZD0i +bjkiIG1kdHlwZT0icGFyYWdyYXBoIiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLXAiIHN0eWxlPSJi +b3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5oZXJpdDsgb3JwaGFuczogNDsg +bWFyZ2luOiAwcHggMHB4IDAuNXJlbTsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyBwb3NpdGlvbjog +cmVsYXRpdmU7Ij48c3BhbiBtZC1pbmxpbmU9InBsYWluIiBjbGFzcz0ibWQtcGxhaW4iIHN0eWxl +PSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+5Lu75YqhMe+8mkc15Li75pWw5o2uNS4xLjXniYjm +nKzlj5HluIM8L3NwYW4+PC9wPjwvbGk+PGxpIGNsYXNzPSJtZC1saXN0LWl0ZW0iIGNpZD0ibjEw +IiBtZHR5cGU9Imxpc3RfaXRlbSIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdp +bjogMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48cCBjaWQ9Im4xMSIgbWR0eXBlPSJwYXJhZ3Jh +cGgiIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1i +b3g7IGxpbmUtaGVpZ2h0OiBpbmhlcml0OyBvcnBoYW5zOiA0OyBtYXJnaW46IDBweCAwcHggMC41 +cmVtOyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxzcGFuIG1k +LWlubGluZT0icGxhaW4iIGNsYXNzPSJtZC1wbGFpbiIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRl +ci1ib3g7Ij7ku7vliqEy77yaPC9zcGFuPkc15Li75pWw5o2u54mp5paZ5L+h5oGv5a+85YWl5oCn +6IO95LyY5YyW5a6M5oiQPC9wPjwvbGk+PC91bD48bGkgY2xhc3M9Im1kLWxpc3QtaXRlbSIgY2lk +PSJuMTIiIG1kdHlwZT0ibGlzdF9pdGVtIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsg +bWFyZ2luOiAwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxwIGNpZD0ibjEzIiBtZHR5cGU9InBh +cmFncmFwaCIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1wIiBzdHlsZT0iYm94LXNpemluZzogYm9y +ZGVyLWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IG9ycGhhbnM6IDQ7IG1hcmdpbjogMHB4IDBw +eCAwLjVyZW07IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHNw +YW4gbWQtaW5saW5lPSJzdHJvbmciIGNsYXNzPSJtZC1wYWlyLXMgIiBzdHlsZT0iYm94LXNpemlu +ZzogYm9yZGVyLWJveDsiPjxzdHJvbmcgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij48 +c3BhbiBtZC1pbmxpbmU9InBsYWluIiBjbGFzcz0ibWQtcGxhaW4iIHN0eWxlPSJib3gtc2l6aW5n +OiBib3JkZXItYm94OyI+5bi46KeE5bel5L2cPC9zcGFuPjwvc3Ryb25nPjwvc3Bhbj48L3A+PC9s +aT48dWwgY2xhc3M9InVsLWxpc3QiIGNpZD0ibjE0IiBtZHR5cGU9Imxpc3QiIGRhdGEtbWFyaz0i +LSIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBwYWRkaW5nLWxl +ZnQ6IDMwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxsaSBjbGFzcz0ibWQtbGlzdC1pdGVtIiBj +aWQ9Im4xNSIgbWR0eXBlPSJsaXN0X2l0ZW0iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94 +OyBtYXJnaW46IDBweDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHAgY2lkPSJuMTYiIG1kdHlwZT0i +cGFyYWdyYXBoIiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLXAiIHN0eWxlPSJib3gtc2l6aW5nOiBi +b3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5oZXJpdDsgb3JwaGFuczogNDsgbWFyZ2luOiAwcHgg +MHB4IDAuNXJlbTsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48 +c3BhbiBtZC1pbmxpbmU9InBsYWluIiBjbGFzcz0ibWQtcGxhaW4iIHN0eWxlPSJib3gtc2l6aW5n +OiBib3JkZXItYm94OyI+5pel5bi45LqL5YqhMe+8mjIwMjUtMDgtMjUg5a+55aSW5o6l5Y+j5byA +5Y+RLOWvvOWFpeaAp+iDveS8mOWMlgo8L3NwYW4+PC9wPjwvbGk+PGxpIGNsYXNzPSJtZC1saXN0 +LWl0ZW0iIGNpZD0ibjE1IiBtZHR5cGU9Imxpc3RfaXRlbSIgc3R5bGU9ImJveC1zaXppbmc6IGJv +cmRlci1ib3g7IG1hcmdpbjogMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48cCBjaWQ9Im4xNiIg +bWR0eXBlPSJwYXJhZ3JhcGgiIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCIgc3R5bGU9ImJveC1z +aXppbmc6IGJvcmRlci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhlcml0OyBvcnBoYW5zOiA0OyBtYXJn +aW46IDBweCAwcHggMC41cmVtOyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0aW9uOiByZWxh +dGl2ZTsiPjxzcGFuIG1kLWlubGluZT0icGxhaW4iIGNsYXNzPSJtZC1wbGFpbiIgc3R5bGU9ImJv +eC1zaXppbmc6IGJvcmRlci1ib3g7Ij7ml6XluLjkuovliqEy77yaMjAyNS0wOC0yNiDkuLvmlbDm +ja7pnZ7mjqXlj6PpnIDmsYLlhajpg6jovazmtYsKPC9zcGFuPjwvcD48L2xpPjxsaSBjbGFzcz0i +bWQtbGlzdC1pdGVtIiBjaWQ9Im4xNyIgbWR0eXBlPSJsaXN0X2l0ZW0iIHN0eWxlPSJib3gtc2l6 +aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHAgY2lk +PSJuMTgiIG1kdHlwZT0icGFyYWdyYXBoIiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLXAiIHN0eWxl +PSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5oZXJpdDsgb3JwaGFuczog +NDsgbWFyZ2luOiAwcHggMHB4IDAuNXJlbTsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyBwb3NpdGlv +bjogcmVsYXRpdmU7Ij48c3BhbiBtZC1pbmxpbmU9InBsYWluIiBjbGFzcz0ibWQtcGxhaW4iIHN0 +eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+5pel5bi45LqL5YqhM++8mjIwMjUtMDgtMjcg +5Li75pWw5o2u5a+55aSW5o6l5Y+j5byA5Y+RPC9zcGFuPjwvcD48L2xpPjxsaSBjbGFzcz0ibWQt +bGlzdC1pdGVtIiBjaWQ9Im44NCIgbWR0eXBlPSJsaXN0X2l0ZW0iIHN0eWxlPSJib3gtc2l6aW5n +OiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHAgY2lkPSJu +ODUiIG1kdHlwZT0icGFyYWdyYXBoIiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLXAiIHN0eWxlPSJi +b3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5oZXJpdDsgb3JwaGFuczogNDsg +bWFyZ2luOiAwcHggMHB4IDAuNXJlbTsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyBwb3NpdGlvbjog +cmVsYXRpdmU7Ij48c3BhbiBtZC1pbmxpbmU9InBsYWluIiBjbGFzcz0ibWQtcGxhaW4iIHN0eWxl +PSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+5pel5bi45LqL5YqhNO+8mjIwMjUtMDgtMjgg5Li7 +5pWw5o2u54mp5paZ5a+85YWl5rWL6K+V5a6M5oiQPC9zcGFuPjwvcD48L2xpPjxsaSBjbGFzcz0i +bWQtbGlzdC1pdGVtIiBjaWQ9Im45MSIgbWR0eXBlPSJsaXN0X2l0ZW0iIHN0eWxlPSJib3gtc2l6 +aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHAgY2lk +PSJuODkiIG1kdHlwZT0icGFyYWdyYXBoIiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLXAiIHN0eWxl +PSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5oZXJpdDsgb3JwaGFuczog +NDsgbWFyZ2luOiAwcHggMHB4IDAuNXJlbTsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyBwb3NpdGlv +bjogcmVsYXRpdmU7Ij48c3BhbiBtZC1pbmxpbmU9InBsYWluIiBjbGFzcz0ibWQtcGxhaW4iIHN0 +eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+5pel5bi45LqL5YqhNe+8mjwvc3Bhbj4yMDI1 +LTA4LTI5IOS4u+aVsOaNrjUuMS415rWL6K+V57uT5p2fIOWPkeeJiOaUr+aMgTwvcD48L2xpPjwv +dWw+PGxpIGNsYXNzPSJtZC1saXN0LWl0ZW0iIGNpZD0ibjE5IiBtZHR5cGU9Imxpc3RfaXRlbSIg +c3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBwb3NpdGlvbjogcmVs +YXRpdmU7Ij48cCBjaWQ9Im4yMCIgbWR0eXBlPSJwYXJhZ3JhcGgiIGNsYXNzPSJtZC1lbmQtYmxv +Y2sgbWQtcCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhl +cml0OyBvcnBoYW5zOiA0OyBtYXJnaW46IDBweCAwcHggMC41cmVtOyB3aGl0ZS1zcGFjZTogcHJl +LXdyYXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxzcGFuIG1kLWlubGluZT0ic3Ryb25nIiBjbGFz +cz0ibWQtcGFpci1zICIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij48c3Ryb25nIHN0 +eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+PHNwYW4gbWQtaW5saW5lPSJwbGFpbiIgY2xh +c3M9Im1kLXBsYWluIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPuWtmOWcqOmXrumi +mOaIlumcgOaUr+aMgeS6i+mhuTwvc3Bhbj48L3N0cm9uZz48L3NwYW4+PC9wPjxwIGNpZD0ibjEw +MCIgbWR0eXBlPSJwYXJhZ3JhcGgiIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCIgc3R5bGU9ImJv +eC1zaXppbmc6IGJvcmRlci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhlcml0OyBvcnBoYW5zOiA0OyBt +YXJnaW46IDAuNXJlbSAwcHg7IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJlbGF0 +aXZlOyI+PC9wPjwvbGk+PC9vbD48aDMgY2lkPSJuMjUiIG1kdHlwZT0iaGVhZGluZyIgY2xhc3M9 +Im1kLWVuZC1ibG9jayBtZC1oZWFkaW5nIiBzdHlsZT0iZm9udC1mYW1pbHk6ICZxdW90O09wZW4g +U2FucyZxdW90OywgJnF1b3Q7Q2xlYXIgU2FucyZxdW90OywgJnF1b3Q7SGVsdmV0aWNhIE5ldWUm +cXVvdDssIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7IGJveC1zaXppbmc6IGJvcmRlci1i +b3g7IGJyZWFrLWFmdGVyOiBhdm9pZC1wYWdlOyBicmVhay1pbnNpZGU6IGF2b2lkOyBvcnBoYW5z +OiA0OyBmb250LXNpemU6IDEuNWVtOyBtYXJnaW4tdG9wOiAxcmVtOyBtYXJnaW4tYm90dG9tOiAx +cmVtOyBwb3NpdGlvbjogcmVsYXRpdmU7IGxpbmUtaGVpZ2h0OiAxLjQzOyBjdXJzb3I6IHRleHQ7 +IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgY29sb3I6IHJnYig1MSwgNTEsIDUxKTsiPjxzcGFuIG1k +LWlubGluZT0ic3Ryb25nIiBjbGFzcz0ibWQtcGFpci1zICIgc3R5bGU9ImJveC1zaXppbmc6IGJv +cmRlci1ib3g7Ij48c3Ryb25nIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+PHNwYW4g +bWQtaW5saW5lPSJwbGFpbiIgY2xhc3M9Im1kLXBsYWluIiBzdHlsZT0iYm94LXNpemluZzogYm9y +ZGVyLWJveDsiPuS6jOOAgeS4i+WRqOW3peS9nOiuoeWIkjwvc3Bhbj48L3N0cm9uZz48L3NwYW4+ +PC9oMz48b2wgY2xhc3M9Im9sLWxpc3QiIHN0YXJ0PSIiIGNpZD0ibjI2IiBtZHR5cGU9Imxpc3Qi +IHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDAuOGVtIDBweDsgcGFkZGlu +Zy1sZWZ0OiAzMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48bGkgY2xhc3M9Im1kLWxpc3QtaXRl +bSIgY2lkPSJuMjciIG1kdHlwZT0ibGlzdF9pdGVtIiBzdHlsZT0iY29sb3I6IHJnYig1MSwgNTEs +IDUxKTsgZm9udC1mYW1pbHk6ICZxdW90O09wZW4gU2FucyZxdW90OywgJnF1b3Q7Q2xlYXIgU2Fu +cyZxdW90OywgJnF1b3Q7SGVsdmV0aWNhIE5ldWUmcXVvdDssIEhlbHZldGljYSwgQXJpYWwsIHNh +bnMtc2VyaWY7IGZvbnQtc2l6ZTogMTZweDsgYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2lu +OiAwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxwIGNpZD0ibjI4IiBtZHR5cGU9InBhcmFncmFw +aCIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1wIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJv +eDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IG9ycGhhbnM6IDQ7IG1hcmdpbjogMHB4IDBweCAwLjVy +ZW07IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHNwYW4gbWQt +aW5saW5lPSJzdHJvbmciIGNsYXNzPSJtZC1wYWlyLXMgIiBzdHlsZT0iYm94LXNpemluZzogYm9y +ZGVyLWJveDsiPjxzdHJvbmcgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij48c3BhbiBt +ZC1pbmxpbmU9InBsYWluIiBjbGFzcz0ibWQtcGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3Jk +ZXItYm94OyI+6YeN54K55Lu75YqhPC9zcGFuPjwvc3Ryb25nPjwvc3Bhbj48L3A+PC9saT48dWwg +Y2xhc3M9InVsLWxpc3QiIGNpZD0ibjI5IiBtZHR5cGU9Imxpc3QiIGRhdGEtbWFyaz0iLSIgc3R5 +bGU9ImNvbG9yOiByZ2IoNTEsIDUxLCA1MSk7IGZvbnQtZmFtaWx5OiAmcXVvdDtPcGVuIFNhbnMm +cXVvdDssICZxdW90O0NsZWFyIFNhbnMmcXVvdDssICZxdW90O0hlbHZldGljYSBOZXVlJnF1b3Q7 +LCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDE2cHg7IGJveC1zaXpp +bmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBwYWRkaW5nLWxlZnQ6IDMwcHg7IHBvc2l0aW9u +OiByZWxhdGl2ZTsiPjxsaSBjbGFzcz0ibWQtbGlzdC1pdGVtIiBjaWQ9Im4zMCIgbWR0eXBlPSJs +aXN0X2l0ZW0iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcG9z +aXRpb246IHJlbGF0aXZlOyI+PHAgY2lkPSJuMzEiIG1kdHlwZT0icGFyYWdyYXBoIiBjbGFzcz0i +bWQtZW5kLWJsb2NrIG1kLXAiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhl +aWdodDogaW5oZXJpdDsgb3JwaGFuczogNDsgbWFyZ2luOiAwcHggMHB4IDAuNXJlbTsgd2hpdGUt +c3BhY2U6IHByZS13cmFwOyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48c3BhbiBtZC1pbmxpbmU9InBs +YWluIiBjbGFzcz0ibWQtcGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+6K6h +5YiSMe+8mkc15Li75pWw5o2uNS4xLjbniYjmnKzlvIDlj5E8L3NwYW4+PC9wPjwvbGk+PC91bD48 +L29sPjxkaXYgdGFiaW5kZXg9Ii0xIiBjaWQ9Im4zOSIgbWR0eXBlPSJociIgY2xhc3M9Im1kLWhy +IG1kLWVuZC1ibG9jayIgc3R5bGU9ImZvbnQtZmFtaWx5OiAmcXVvdDtPcGVuIFNhbnMmcXVvdDss +ICZxdW90O0NsZWFyIFNhbnMmcXVvdDssICZxdW90O0hlbHZldGljYSBOZXVlJnF1b3Q7LCBIZWx2 +ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmOyBib3gtc2l6aW5nOiBib3JkZXItYm94OyBjb2xvcjog +cmdiKDUxLCA1MSwgNTEpOyBmb250LXNpemU6IDE2cHg7Ij48aHIgc3R5bGU9ImJveC1zaXppbmc6 +IGNvbnRlbnQtYm94OyBoZWlnaHQ6IDJweDsgbWFyZ2luOiAxNnB4IDBweDsgYm9yZGVyOiAwcHgg +bm9uZTsgcGFkZGluZzogMHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjMxLCAyMzEsIDIzMSk7 +Ij48L2Rpdj48cCBjaWQ9Im40MCIgbWR0eXBlPSJwYXJhZ3JhcGgiIGNsYXNzPSJtZC1lbmQtYmxv +Y2sgbWQtcCIgc3R5bGU9ImZvbnQtZmFtaWx5OiAmcXVvdDtPcGVuIFNhbnMmcXVvdDssICZxdW90 +O0NsZWFyIFNhbnMmcXVvdDssICZxdW90O0hlbHZldGljYSBOZXVlJnF1b3Q7LCBIZWx2ZXRpY2Es +IEFyaWFsLCBzYW5zLXNlcmlmOyBib3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdodDog +aW5oZXJpdDsgb3JwaGFuczogNDsgbWFyZ2luOiAwLjhlbSAwcHg7IHdoaXRlLXNwYWNlOiBwcmUt +d3JhcDsgcG9zaXRpb246IHJlbGF0aXZlOyBjb2xvcjogcmdiKDUxLCA1MSwgNTEpOyBmb250LXNp +emU6IDE2cHg7Ij48c3BhbiBtZC1pbmxpbmU9InN0cm9uZyIgY2xhc3M9Im1kLXBhaXItcyAiIHN0 +eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+PHN0cm9uZyBzdHlsZT0iYm94LXNpemluZzog +Ym9yZGVyLWJveDsiPjxzcGFuIG1kLWlubGluZT0icGxhaW4iIGNsYXNzPSJtZC1wbGFpbiIgc3R5 +bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij7lpIfms6g8L3NwYW4+PC9zdHJvbmc+PC9zcGFu +PjxzcGFuIG1kLWlubGluZT0icGxhaW4iIGNsYXNzPSJtZC1wbGFpbiBtZC1leHBhbmQiIHN0eWxl +PSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+77ya5pegPC9zcGFuPjwvcD48L2Rpdj48ZGl2IHN0 +eWxlPSJmb250LWZhbWlseTog5b6u6L2v6ZuF6buROyI+PGJyPjwvZGl2PjxkaXYgc3BlbGxjaGVj +az0iZmFsc2UiIGlkPSJudGVzLXBjbWFjLXNpZ25hdHVyZSIgc3R5bGU9ImZvbnQtZmFtaWx5OiDl +vq7ova/pm4Xpu5E7IiBkYXRhLW50ZXMtc2lnbmF0dXJlPSJ0cnVlIj48ZGl2IHN0eWxlPSJmb250 +LXNpemU6MTRweDtwYWRkaW5nOjA7bWFyZ2luOjAiPjxkaXYgc3R5bGU9InBhZGRpbmctYm90dG9t +OjEwcHg7bWFyZ2luLWJvdHRvbToxMHB4O2Rpc3BsYXk6aW5saW5lLWJsb2NrIj48ZGl2IHN0eWxl +PSJmb250LWZhbWlseTomcXVvdDvlvq7ova/pm4Xpu5EmcXVvdDs7IGZvbnQtc2l6ZTogMTRweDsg +Y29sb3I6IzAwMDAwMCI+CiAgICA8c3R5bGU+CiAgICAgICAgZm9udHsKICAgICAgICAgICAgbGlu +ZS1oZWlnaHQ6IDEuNjsKICAgICAgICB9CiAgICA8L3N0eWxlPgo8ZGl2IHN0eWxlPSJmb250LWZh +bWlseTomcXVvdDvlvq7ova/pm4Xpu5EmcXVvdDs7IGZvbnQtc2l6ZTogMTRweDsgY29sb3I6IzAw +MDAwMCI+CiAgICA8c3R5bGU+CiAgICAgICAgZm9udHsKICAgICAgICAgICAgbGluZS1oZWlnaHQ6 +IDEuNjsKICAgICAgICB9CiAgICA8L3N0eWxlPgo8ZGl2IHN0eWxlPSJmb250LWZhbWlseTomcXVv +dDvlvq7ova/pm4Xpu5EmcXVvdDs7IGZvbnQtc2l6ZTogMTRweDsgY29sb3I6IzAwMDAwMCI+CiAg +ICA8c3R5bGU+CiAgICAgICAgZm9udHsKICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDEuNjsKICAg +ICAgICB9CiAgICA8L3N0eWxlPgo8ZGl2IHN0eWxlPSJmb250LWZhbWlseTomcXVvdDvlvq7ova/p +m4Xpu5EmcXVvdDs7IGZvbnQtc2l6ZTogMTRweDsgY29sb3I6IzAwMDAwMCI+CiAgICA8c3R5bGU+ +CiAgICAgICAgZm9udHsKICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDEuNjsKICAgICAgICB9CiAg +ICA8L3N0eWxlPgo8c3BhbiBzdHlsZT0iY29sb3I6IHJnYigxOTEsIDE5MSwgMTkxKTsgZm9udC1m +YW1pbHk6ICdNaWNyb3NvZnQgWWFoZWknOyBmb250LXNpemU6IDEzcHg7IG9ycGhhbnM6IDI7IHdp +ZG93czogMjsiPkJlc3QgcmVnYXJkcyw8L3NwYW4+PGRpdiBzdHlsZT0ibWFyZ2luOiAwcHg7IHBh +ZGRpbmc6IDBweDsgYm9yZGVyOiAwcHg7IG91dGxpbmU6IDBweDsgZm9udC1mYW1pbHk6IFRhaG9t +YSwgQXJpYWwsIFNUSGVpdGksIFNpbVN1bjsgZm9udC12YXJpYW50LWxpZ2F0dXJlczogbm9ybWFs +OyBvcnBoYW5zOiAyOyB3aWRvd3M6IDI7IGNsZWFyOiBib3RoOyI+PHNwYW4gc3R5bGU9Im1hcmdp +bjogMHB4OyBwYWRkaW5nOiAwcHg7IGJvcmRlcjogMHB4OyBvdXRsaW5lOiAwcHg7IGZvbnQtZmFt +aWx5OiAmcXVvdDtNaWNyb3NvZnQgWWFoZWkmcXVvdDs7IGZvbnQtc2l6ZTogMTNweDsgY29sb3I6 +IHJnYigxOTEsIDE5MSwgMTkxKTsiPuadqOi9qTwvc3Bhbj48L2Rpdj48ZGl2IHN0eWxlPSJtYXJn +aW46IDBweDsgcGFkZGluZzogMHB4OyBib3JkZXI6IDBweDsgb3V0bGluZTogMHB4OyBmb250LWZh +bWlseTogVGFob21hLCBBcmlhbCwgU1RIZWl0aSwgU2ltU3VuOyBmb250LXZhcmlhbnQtbGlnYXR1 +cmVzOiBub3JtYWw7IG9ycGhhbnM6IDI7IHdpZG93czogMjsgY2xlYXI6IGJvdGg7Ij48L2Rpdj48 +ZGl2IHN0eWxlPSJtYXJnaW46IDBweDsgcGFkZGluZzogMHB4OyBib3JkZXI6IDBweDsgb3V0bGlu +ZTogMHB4OyBmb250LWZhbWlseTogVGFob21hLCBBcmlhbCwgU1RIZWl0aSwgU2ltU3VuOyBmb250 +LXZhcmlhbnQtbGlnYXR1cmVzOiBub3JtYWw7IG9ycGhhbnM6IDI7IHdpZG93czogMjsgY2xlYXI6 +IGJvdGg7Ij48aW1nIHN0eWxlPSJtYXgtd2lkdGg6IHVuc2V0OyIgc3JjPSJodHRwczovL21haWwt +b25saW5lLm5vc2RuLjEyNy5uZXQvd3pwbW1jL2NlOWY4YjM2ZTFmZmJlNTUzMjljMTk2Yzg0ZmU1 +MTk3LnBuZyI+PC9kaXY+PGRpdiBzdHlsZT0ibWFyZ2luOiAwcHg7IHBhZGRpbmc6IDBweDsgYm9y +ZGVyOiAwcHg7IG91dGxpbmU6IDBweDsgZm9udC1mYW1pbHk6IFRhaG9tYSwgQXJpYWwsIFNUSGVp +dGksIFNpbVN1bjsgZm9udC12YXJpYW50LWxpZ2F0dXJlczogbm9ybWFsOyBvcnBoYW5zOiAyOyB3 +aWRvd3M6IDI7IGNsZWFyOiBib3RoOyI+PHNwYW4gc3R5bGU9Im1hcmdpbjogMHB4OyBwYWRkaW5n +OiAwcHg7IGJvcmRlcjogMHB4OyBvdXRsaW5lOiAwcHg7IGZvbnQtZmFtaWx5OiAmcXVvdDtNaWNy +b3NvZnQgWWFoZWkmcXVvdDs7IGNvbG9yOiByZ2IoMTkxLCAxOTEsIDE5MSk7Ij7lnLDlnYDvvJrk +uK3lm73Ct+WNl+S6rOi9r+S7tuiwt+i9r+S7tuWkp+mBkyAxMSDlj7foirHnpZ7lpKfljqYgMi0z +Rjwvc3Bhbj48L2Rpdj48ZGl2IHN0eWxlPSJtYXJnaW46IDBweDsgcGFkZGluZzogMHB4OyBib3Jk +ZXI6IDBweDsgb3V0bGluZTogMHB4OyBmb250LWZhbWlseTogVGFob21hLCBBcmlhbCwgU1RIZWl0 +aSwgU2ltU3VuOyBmb250LXZhcmlhbnQtbGlnYXR1cmVzOiBub3JtYWw7IG9ycGhhbnM6IDI7IHdp +ZG93czogMjsgY2xlYXI6IGJvdGg7Ij48c3BhbiBzdHlsZT0ibWFyZ2luOiAwcHg7IHBhZGRpbmc6 +IDBweDsgYm9yZGVyOiAwcHg7IG91dGxpbmU6IDBweDsgZm9udC1mYW1pbHk6ICZxdW90O01pY3Jv +c29mdCBZYWhlaSZxdW90OzsgY29sb3I6IHJnYigxOTEsIDE5MSwgMTkxKTsiPuaJi+acuu+8mjE4 +NzI2MTI4NDg5PC9zcGFuPjwvZGl2PjxkaXYgc3R5bGU9Im1hcmdpbjogMHB4OyBwYWRkaW5nOiAw +cHg7IGJvcmRlcjogMHB4OyBvdXRsaW5lOiAwcHg7IGZvbnQtZmFtaWx5OiBUYWhvbWEsIEFyaWFs +LCBTVEhlaXRpLCBTaW1TdW47IGZvbnQtdmFyaWFudC1saWdhdHVyZXM6IG5vcm1hbDsgb3JwaGFu +czogMjsgd2lkb3dzOiAyOyBjbGVhcjogYm90aDsiPjxzcGFuIHN0eWxlPSJtYXJnaW46IDBweDsg +cGFkZGluZzogMHB4OyBib3JkZXI6IDBweDsgb3V0bGluZTogMHB4OyBmb250LWZhbWlseTogJnF1 +b3Q7TWljcm9zb2Z0IFlhaGVpJnF1b3Q7OyBjb2xvcjogcmdiKDE5MSwgMTkxLCAxOTEpOyI+6YKu +566x77yaeWFuZ3h1YW5Ad2l0c29mdC5jbjwvc3Bhbj48L2Rpdj4KPC9kaXY+CjwvZGl2Pgo8L2Rp +dj4KPC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PCEtLfCfmIAtLT48L2Rpdj48L2Rpdj48 +L2JvZHk+PC9odG1sPg== + +--=_mailmaster-6a18e4a4_0_4ae1_=-- diff --git a/media/inbound/2025-09-05_1700_G5开发周报_2025-09-01_--_2025-09-05---73f9f61c-c29a-4430-946e-74c9d5710ea2.eml b/media/inbound/2025-09-05_1700_G5开发周报_2025-09-01_--_2025-09-05---73f9f61c-c29a-4430-946e-74c9d5710ea2.eml new file mode 100644 index 0000000..c7269f2 --- /dev/null +++ b/media/inbound/2025-09-05_1700_G5开发周报_2025-09-01_--_2025-09-05---73f9f61c-c29a-4430-946e-74c9d5710ea2.eml @@ -0,0 +1,282 @@ +Date: Fri, 5 Sep 2025 17:00:02 +0800 +From: yangxuan +To: =?utf-8?B?5YiY5by6?= +Cc: =?utf-8?B?5bGI5paw6b6Z?= , =?utf-8?B?5pyx5paM?= + , =?utf-8?B?6ZmI5piO?= , + =?utf-8?Q?xym=40witsoft.cn?= +Message-ID: +Subject: =?utf-8?B?RzXlvIDlj5HlkajmiqXjgJAyMDI1LTA5LTAxIC0tICAyMDI1LTA5?= + =?utf-8?B?LTA144CR?= +MIME-Version: 1.0 +Content-Type: multipart/alternative; boundary="=_mailmaster-6a18e4a4_0_3d6c_=" + +--=_mailmaster-6a18e4a4_0_3d6c_= +Content-Type: text/plain; charset="utf-8" +Content-Transfer-Encoding: base64 + +5oKo5aW977yB5Lul5LiL5piv5oiR5pys5ZGo55qE5bel5L2c5oC757uT5Y+K5LiL5ZGo6K6h5YiS +77yM6K+35a6h6ZiF44CCCuS4gOOAgeacrOWRqOW3peS9nOaAu+e7kwrph43ngrnlt6XkvZzlrozm +iJDmg4XlhrUK5Lu75YqhMe+8mkc15Li75pWw5o2uNS4xLjbniYjmnKzlvIDlj5EK5Lu75YqhMu+8 +mkc15Li75pWw5o2u5a+55aSW5o6l5Y+j56Gu6K6k5ZKM5byA5Y+RCuW4uOinhOW3peS9nArml6Xl +uLjkuovliqEx77yaMjAyNS0wOS0wMSDkuLvmlbDmja7pnIDmsYLor4TlrqHlkozmjqXlj6PlvIDl +j5EgCuaXpeW4uOS6i+WKoTLvvJoyMDI1LTA5LTAyIOeJqeaWmea4heWNleeUn+aIkOS8mOWMluWS +jOWvvOWFpSAK5pel5bi45LqL5YqhM++8mjIwMjUtMDktMDMg54mp5paZ5riF5Y2V55Sf5oiQ5LyY +5YyW5rWL6K+V5a6M5oiQCuaXpeW4uOS6i+WKoTTvvJoyMDI1LTA5LTA0IOS4u+aVsOaNrumcgOax +gui9rOa1i+WSjGJ1Z+S/ruWkjQrml6XluLjkuovliqE177yaMjAyNS0wOS0wNSDmtYvor5VidWfk +v67lpI3kuI7mjqXlj6PlvIDlj5EK5a2Y5Zyo6Zeu6aKY5oiW6ZyA5pSv5oyB5LqL6aG5CuS6jOOA +geS4i+WRqOW3peS9nOiuoeWIkgrph43ngrnku7vliqEK6K6h5YiSMe+8mkc15Li75pWw5o2u5a+5 +5aSW5o6l5Y+j5byA5Y+RCuWkh+azqO+8muaXoApCZXN0IHJlZ2FyZHMs5p2o6L2pCuWcsOWdgO+8 +muS4reWbvcK35Y2X5Lqs6L2v5Lu26LC36L2v5Lu25aSn6YGTIDExIOWPt+iKseelnuWkp+WOpiAy +LTNGCuaJi+acuu+8mjE4NzI2MTI4NDg5CumCrueuse+8mnlhbmd4dWFuQHdpdHNvZnQuY24= + +--=_mailmaster-6a18e4a4_0_3d6c_= +Content-Type: text/html; charset="utf-8" +Content-Transfer-Encoding: base64 + +PGh0bWw+PGhlYWQ+PG1ldGEgaHR0cC1lcXVpdj0nQ29udGVudC1UeXBlJyBjb250ZW50PSd0ZXh0 +L2h0bWw7IGNoYXJzZXQ9VVRGLTgnPjwvaGVhZD48Ym9keSBzdHlsZT1saW5lLWhlaWdodDogMS41 +O2ZvbnQtZmFtaWx5OiAi5b6u6L2v6ZuF6buRIj48ZGl2ICBzdHlsZT0iZm9udC1mYW1pbHk6IOW+ +rui9r+mbhem7kTsiPjxkaXYgc3R5bGU9ImZvbnQtZmFtaWx5OiDlvq7ova/pm4Xpu5E7Ij48ZGl2 +IHN0eWxlPSIiPjxkaXYgc3R5bGU9IiI+PHAgY2lkPSJuMCIgbWR0eXBlPSJwYXJhZ3JhcGgiIGNs +YXNzPSJtZC1lbmQtYmxvY2sgbWQtcCBtZC1mb2N1cyIgc3R5bGU9ImZvbnQtZmFtaWx5OiAmcXVv +dDtPcGVuIFNhbnMmcXVvdDssICZxdW90O0NsZWFyIFNhbnMmcXVvdDssICZxdW90O0hlbHZldGlj +YSBOZXVlJnF1b3Q7LCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmOyBib3gtc2l6aW5nOiBi +b3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5oZXJpdDsgb3JwaGFuczogNDsgbWFyZ2luOiAwLjhl +bSAwcHg7IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJlbGF0aXZlOyBjb2xvcjog +cmdiKDUxLCA1MSwgNTEpOyBmb250LXNpemU6IDE2cHg7Ij48c3BhbiBtZC1pbmxpbmU9InBsYWlu +IiBjbGFzcz0ibWQtcGxhaW4gbWQtZXhwYW5kIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJv +eDsiPuaCqOWlve+8geS7peS4i+aYr+aIkeacrOWRqOeahOW3peS9nOaAu+e7k+WPiuS4i+WRqOiu +oeWIku+8jOivt+WuoemYheOAgjwvc3Bhbj48L3A+PGRpdiB0YWJpbmRleD0iLTEiIGNpZD0ibjIi +IG1kdHlwZT0iaHIiIGNsYXNzPSJtZC1ociBtZC1lbmQtYmxvY2siIHN0eWxlPSJmb250LWZhbWls +eTogJnF1b3Q7T3BlbiBTYW5zJnF1b3Q7LCAmcXVvdDtDbGVhciBTYW5zJnF1b3Q7LCAmcXVvdDtI +ZWx2ZXRpY2EgTmV1ZSZxdW90OywgSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjsgYm94LXNp +emluZzogYm9yZGVyLWJveDsgY29sb3I6IHJnYig1MSwgNTEsIDUxKTsgZm9udC1zaXplOiAxNnB4 +OyI+PGhyIHN0eWxlPSJib3gtc2l6aW5nOiBjb250ZW50LWJveDsgaGVpZ2h0OiAycHg7IG1hcmdp +bjogMTZweCAwcHg7IGJvcmRlcjogMHB4IG5vbmU7IHBhZGRpbmc6IDBweDsgYmFja2dyb3VuZC1j +b2xvcjogcmdiKDIzMSwgMjMxLCAyMzEpOyI+PC9kaXY+PGgzIGNpZD0ibjMiIG1kdHlwZT0iaGVh +ZGluZyIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1oZWFkaW5nIiBzdHlsZT0iZm9udC1mYW1pbHk6 +ICZxdW90O09wZW4gU2FucyZxdW90OywgJnF1b3Q7Q2xlYXIgU2FucyZxdW90OywgJnF1b3Q7SGVs +dmV0aWNhIE5ldWUmcXVvdDssIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7IGJveC1zaXpp +bmc6IGJvcmRlci1ib3g7IGJyZWFrLWFmdGVyOiBhdm9pZC1wYWdlOyBicmVhay1pbnNpZGU6IGF2 +b2lkOyBvcnBoYW5zOiA0OyBmb250LXNpemU6IDEuNWVtOyBtYXJnaW4tdG9wOiAxcmVtOyBtYXJn +aW4tYm90dG9tOiAxcmVtOyBwb3NpdGlvbjogcmVsYXRpdmU7IGxpbmUtaGVpZ2h0OiAxLjQzOyBj +dXJzb3I6IHRleHQ7IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgY29sb3I6IHJnYig1MSwgNTEsIDUx +KTsiPjxzcGFuIG1kLWlubGluZT0ic3Ryb25nIiBjbGFzcz0ibWQtcGFpci1zICIgc3R5bGU9ImJv +eC1zaXppbmc6IGJvcmRlci1ib3g7Ij48c3Ryb25nIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXIt +Ym94OyI+PHNwYW4gbWQtaW5saW5lPSJwbGFpbiIgY2xhc3M9Im1kLXBsYWluIiBzdHlsZT0iYm94 +LXNpemluZzogYm9yZGVyLWJveDsiPuS4gOOAgeacrOWRqOW3peS9nOaAu+e7kzwvc3Bhbj48L3N0 +cm9uZz48L3NwYW4+PC9oMz48b2wgY2xhc3M9Im9sLWxpc3QiIHN0YXJ0PSIiIGNpZD0ibjQiIG1k +dHlwZT0ibGlzdCIgc3R5bGU9ImZvbnQtZmFtaWx5OiAmcXVvdDtPcGVuIFNhbnMmcXVvdDssICZx +dW90O0NsZWFyIFNhbnMmcXVvdDssICZxdW90O0hlbHZldGljYSBOZXVlJnF1b3Q7LCBIZWx2ZXRp +Y2EsIEFyaWFsLCBzYW5zLXNlcmlmOyBib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDAu +OGVtIDBweDsgcGFkZGluZy1sZWZ0OiAzMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7IGNvbG9yOiBy +Z2IoNTEsIDUxLCA1MSk7IGZvbnQtc2l6ZTogMTZweDsiPjxsaSBjbGFzcz0ibWQtbGlzdC1pdGVt +IiBjaWQ9Im41IiBtZHR5cGU9Imxpc3RfaXRlbSIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1i +b3g7IG1hcmdpbjogMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48cCBjaWQ9Im42IiBtZHR5cGU9 +InBhcmFncmFwaCIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1wIiBzdHlsZT0iYm94LXNpemluZzog +Ym9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IG9ycGhhbnM6IDQ7IG1hcmdpbjogMHB4 +IDBweCAwLjVyZW07IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJlbGF0aXZlOyI+ +PHNwYW4gbWQtaW5saW5lPSJzdHJvbmciIGNsYXNzPSJtZC1wYWlyLXMgIiBzdHlsZT0iYm94LXNp +emluZzogYm9yZGVyLWJveDsiPjxzdHJvbmcgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7 +Ij48c3BhbiBtZC1pbmxpbmU9InBsYWluIiBjbGFzcz0ibWQtcGxhaW4iIHN0eWxlPSJib3gtc2l6 +aW5nOiBib3JkZXItYm94OyI+6YeN54K55bel5L2c5a6M5oiQ5oOF5Ya1PC9zcGFuPjwvc3Ryb25n +Pjwvc3Bhbj48L3A+PC9saT48dWwgY2xhc3M9InVsLWxpc3QiIGNpZD0ibjciIG1kdHlwZT0ibGlz +dCIgZGF0YS1tYXJrPSItIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAw +cHg7IHBhZGRpbmctbGVmdDogMzBweDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PGxpIGNsYXNzPSJt +ZC1saXN0LWl0ZW0iIGNpZD0ibjgiIG1kdHlwZT0ibGlzdF9pdGVtIiBzdHlsZT0iYm94LXNpemlu +ZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxwIGNpZD0i +bjkiIG1kdHlwZT0icGFyYWdyYXBoIiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLXAiIHN0eWxlPSJi +b3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5oZXJpdDsgb3JwaGFuczogNDsg +bWFyZ2luOiAwcHggMHB4IDAuNXJlbTsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyBwb3NpdGlvbjog +cmVsYXRpdmU7Ij48c3BhbiBtZC1pbmxpbmU9InBsYWluIiBjbGFzcz0ibWQtcGxhaW4iIHN0eWxl +PSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+5Lu75YqhMe+8mkc15Li75pWw5o2uNS4xLjbniYjm +nKzlvIDlj5E8L3NwYW4+PC9wPjwvbGk+PGxpIGNsYXNzPSJtZC1saXN0LWl0ZW0iIGNpZD0ibjEw +IiBtZHR5cGU9Imxpc3RfaXRlbSIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdp +bjogMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48cCBjaWQ9Im4xMSIgbWR0eXBlPSJwYXJhZ3Jh +cGgiIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1i +b3g7IGxpbmUtaGVpZ2h0OiBpbmhlcml0OyBvcnBoYW5zOiA0OyBtYXJnaW46IDBweCAwcHggMC41 +cmVtOyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxzcGFuIG1k +LWlubGluZT0icGxhaW4iIGNsYXNzPSJtZC1wbGFpbiIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRl +ci1ib3g7Ij7ku7vliqEy77yaPC9zcGFuPkc15Li75pWw5o2u5a+55aSW5o6l5Y+j56Gu6K6k5ZKM +5byA5Y+RPC9wPjwvbGk+PC91bD48bGkgY2xhc3M9Im1kLWxpc3QtaXRlbSIgY2lkPSJuMTIiIG1k +dHlwZT0ibGlzdF9pdGVtIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAw +cHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxwIGNpZD0ibjEzIiBtZHR5cGU9InBhcmFncmFwaCIg +Y2xhc3M9Im1kLWVuZC1ibG9jayBtZC1wIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsg +bGluZS1oZWlnaHQ6IGluaGVyaXQ7IG9ycGhhbnM6IDQ7IG1hcmdpbjogMHB4IDBweCAwLjVyZW07 +IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHNwYW4gbWQtaW5s +aW5lPSJzdHJvbmciIGNsYXNzPSJtZC1wYWlyLXMgIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVy +LWJveDsiPjxzdHJvbmcgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij48c3BhbiBtZC1p +bmxpbmU9InBsYWluIiBjbGFzcz0ibWQtcGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXIt +Ym94OyI+5bi46KeE5bel5L2cPC9zcGFuPjwvc3Ryb25nPjwvc3Bhbj48L3A+PC9saT48dWwgY2xh +c3M9InVsLWxpc3QiIGNpZD0ibjE0IiBtZHR5cGU9Imxpc3QiIGRhdGEtbWFyaz0iLSIgc3R5bGU9 +ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBwYWRkaW5nLWxlZnQ6IDMwcHg7 +IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxsaSBjbGFzcz0ibWQtbGlzdC1pdGVtIiBjaWQ9Im4xNSIg +bWR0eXBlPSJsaXN0X2l0ZW0iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46 +IDBweDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHAgY2lkPSJuMTYiIG1kdHlwZT0icGFyYWdyYXBo +IiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLXAiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94 +OyBsaW5lLWhlaWdodDogaW5oZXJpdDsgb3JwaGFuczogNDsgbWFyZ2luOiAwcHggMHB4IDAuNXJl +bTsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48c3BhbiBtZC1p +bmxpbmU9InBsYWluIiBjbGFzcz0ibWQtcGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXIt +Ym94OyI+5pel5bi45LqL5YqhMe+8mjIwMjUtMDktMDEg5Li75pWw5o2u6ZyA5rGC6K+E5a6h5ZKM +5o6l5Y+j5byA5Y+RCjwvc3Bhbj48L3A+PC9saT48bGkgY2xhc3M9Im1kLWxpc3QtaXRlbSIgY2lk +PSJuMTUiIG1kdHlwZT0ibGlzdF9pdGVtIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsg +bWFyZ2luOiAwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxwIGNpZD0ibjE2IiBtZHR5cGU9InBh +cmFncmFwaCIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1wIiBzdHlsZT0iYm94LXNpemluZzogYm9y +ZGVyLWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IG9ycGhhbnM6IDQ7IG1hcmdpbjogMHB4IDBw +eCAwLjVyZW07IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHNw +YW4gbWQtaW5saW5lPSJwbGFpbiIgY2xhc3M9Im1kLXBsYWluIiBzdHlsZT0iYm94LXNpemluZzog +Ym9yZGVyLWJveDsiPuaXpeW4uOS6i+WKoTLvvJoyMDI1LTA5LTAyIOeJqeaWmea4heWNleeUn+aI +kOS8mOWMluWSjOWvvOWFpQo8L3NwYW4+PC9wPjwvbGk+PGxpIGNsYXNzPSJtZC1saXN0LWl0ZW0i +IGNpZD0ibjE3IiBtZHR5cGU9Imxpc3RfaXRlbSIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1i +b3g7IG1hcmdpbjogMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48cCBjaWQ9Im4xOCIgbWR0eXBl +PSJwYXJhZ3JhcGgiIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCIgc3R5bGU9ImJveC1zaXppbmc6 +IGJvcmRlci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhlcml0OyBvcnBoYW5zOiA0OyBtYXJnaW46IDBw +eCAwcHggMC41cmVtOyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsi +PjxzcGFuIG1kLWlubGluZT0icGxhaW4iIGNsYXNzPSJtZC1wbGFpbiIgc3R5bGU9ImJveC1zaXpp +bmc6IGJvcmRlci1ib3g7Ij7ml6XluLjkuovliqEz77yaMjAyNS0wOS0wMyDnianmlpnmuIXljZXn +lJ/miJDkvJjljJbmtYvor5XlrozmiJA8L3NwYW4+PC9wPjwvbGk+PGxpIGNsYXNzPSJtZC1saXN0 +LWl0ZW0iIGNpZD0ibjg0IiBtZHR5cGU9Imxpc3RfaXRlbSIgc3R5bGU9ImJveC1zaXppbmc6IGJv +cmRlci1ib3g7IG1hcmdpbjogMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48cCBjaWQ9Im44NSIg +bWR0eXBlPSJwYXJhZ3JhcGgiIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCIgc3R5bGU9ImJveC1z +aXppbmc6IGJvcmRlci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhlcml0OyBvcnBoYW5zOiA0OyBtYXJn +aW46IDBweCAwcHggMC41cmVtOyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0aW9uOiByZWxh +dGl2ZTsiPjxzcGFuIG1kLWlubGluZT0icGxhaW4iIGNsYXNzPSJtZC1wbGFpbiIgc3R5bGU9ImJv +eC1zaXppbmc6IGJvcmRlci1ib3g7Ij7ml6XluLjkuovliqE077yaMjAyNS0wOS0wNCDkuLvmlbDm +ja7pnIDmsYLovazmtYvlkoxidWfkv67lpI08L3NwYW4+PC9wPjwvbGk+PGxpIGNsYXNzPSJtZC1s +aXN0LWl0ZW0iIGNpZD0ibjkxIiBtZHR5cGU9Imxpc3RfaXRlbSIgc3R5bGU9ImJveC1zaXppbmc6 +IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48cCBjaWQ9Im44 +OSIgbWR0eXBlPSJwYXJhZ3JhcGgiIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCIgc3R5bGU9ImJv +eC1zaXppbmc6IGJvcmRlci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhlcml0OyBvcnBoYW5zOiA0OyBt +YXJnaW46IDBweCAwcHggMC41cmVtOyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0aW9uOiBy +ZWxhdGl2ZTsiPjxzcGFuIG1kLWlubGluZT0icGxhaW4iIGNsYXNzPSJtZC1wbGFpbiIgc3R5bGU9 +ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij7ml6XluLjkuovliqE177yaPC9zcGFuPjIwMjUtMDkt +MDUg5rWL6K+VYnVn5L+u5aSN5LiO5o6l5Y+j5byA5Y+RPC9wPjwvbGk+PC91bD48bGkgY2xhc3M9 +Im1kLWxpc3QtaXRlbSIgY2lkPSJuMTkiIG1kdHlwZT0ibGlzdF9pdGVtIiBzdHlsZT0iYm94LXNp +emluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxwIGNp +ZD0ibjIwIiBtZHR5cGU9InBhcmFncmFwaCIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1wIiBzdHls +ZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IG9ycGhhbnM6 +IDQ7IG1hcmdpbjogMHB4IDBweCAwLjVyZW07IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRp +b246IHJlbGF0aXZlOyI+PHNwYW4gbWQtaW5saW5lPSJzdHJvbmciIGNsYXNzPSJtZC1wYWlyLXMg +IiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPjxzdHJvbmcgc3R5bGU9ImJveC1zaXpp +bmc6IGJvcmRlci1ib3g7Ij48c3BhbiBtZC1pbmxpbmU9InBsYWluIiBjbGFzcz0ibWQtcGxhaW4i +IHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+5a2Y5Zyo6Zeu6aKY5oiW6ZyA5pSv5oyB +5LqL6aG5PC9zcGFuPjwvc3Ryb25nPjwvc3Bhbj48L3A+PHAgY2lkPSJuMTAwIiBtZHR5cGU9InBh +cmFncmFwaCIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1wIiBzdHlsZT0iYm94LXNpemluZzogYm9y +ZGVyLWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IG9ycGhhbnM6IDQ7IG1hcmdpbjogMC41cmVt +IDBweDsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48L3A+PC9s +aT48L29sPjxoMyBjaWQ9Im4yNSIgbWR0eXBlPSJoZWFkaW5nIiBjbGFzcz0ibWQtZW5kLWJsb2Nr +IG1kLWhlYWRpbmciIHN0eWxlPSJmb250LWZhbWlseTogJnF1b3Q7T3BlbiBTYW5zJnF1b3Q7LCAm +cXVvdDtDbGVhciBTYW5zJnF1b3Q7LCAmcXVvdDtIZWx2ZXRpY2EgTmV1ZSZxdW90OywgSGVsdmV0 +aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjsgYm94LXNpemluZzogYm9yZGVyLWJveDsgYnJlYWstYWZ0 +ZXI6IGF2b2lkLXBhZ2U7IGJyZWFrLWluc2lkZTogYXZvaWQ7IG9ycGhhbnM6IDQ7IGZvbnQtc2l6 +ZTogMS41ZW07IG1hcmdpbi10b3A6IDFyZW07IG1hcmdpbi1ib3R0b206IDFyZW07IHBvc2l0aW9u +OiByZWxhdGl2ZTsgbGluZS1oZWlnaHQ6IDEuNDM7IGN1cnNvcjogdGV4dDsgd2hpdGUtc3BhY2U6 +IHByZS13cmFwOyBjb2xvcjogcmdiKDUxLCA1MSwgNTEpOyI+PHNwYW4gbWQtaW5saW5lPSJzdHJv +bmciIGNsYXNzPSJtZC1wYWlyLXMgIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPjxz +dHJvbmcgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij48c3BhbiBtZC1pbmxpbmU9InBs +YWluIiBjbGFzcz0ibWQtcGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+5LqM +44CB5LiL5ZGo5bel5L2c6K6h5YiSPC9zcGFuPjwvc3Ryb25nPjwvc3Bhbj48L2gzPjxvbCBjbGFz +cz0ib2wtbGlzdCIgc3RhcnQ9IiIgY2lkPSJuMjYiIG1kdHlwZT0ibGlzdCIgc3R5bGU9ImJveC1z +aXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMC44ZW0gMHB4OyBwYWRkaW5nLWxlZnQ6IDMwcHg7 +IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxsaSBjbGFzcz0ibWQtbGlzdC1pdGVtIiBjaWQ9Im4yNyIg +bWR0eXBlPSJsaXN0X2l0ZW0iIHN0eWxlPSJjb2xvcjogcmdiKDUxLCA1MSwgNTEpOyBmb250LWZh +bWlseTogJnF1b3Q7T3BlbiBTYW5zJnF1b3Q7LCAmcXVvdDtDbGVhciBTYW5zJnF1b3Q7LCAmcXVv +dDtIZWx2ZXRpY2EgTmV1ZSZxdW90OywgSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjsgZm9u +dC1zaXplOiAxNnB4OyBib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcG9zaXRp +b246IHJlbGF0aXZlOyI+PHAgY2lkPSJuMjgiIG1kdHlwZT0icGFyYWdyYXBoIiBjbGFzcz0ibWQt +ZW5kLWJsb2NrIG1kLXAiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdo +dDogaW5oZXJpdDsgb3JwaGFuczogNDsgbWFyZ2luOiAwcHggMHB4IDAuNXJlbTsgd2hpdGUtc3Bh +Y2U6IHByZS13cmFwOyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48c3BhbiBtZC1pbmxpbmU9InN0cm9u +ZyIgY2xhc3M9Im1kLXBhaXItcyAiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+PHN0 +cm9uZyBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPjxzcGFuIG1kLWlubGluZT0icGxh +aW4iIGNsYXNzPSJtZC1wbGFpbiIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij7ph43n +grnku7vliqE8L3NwYW4+PC9zdHJvbmc+PC9zcGFuPjwvcD48L2xpPjx1bCBjbGFzcz0idWwtbGlz +dCIgY2lkPSJuMjkiIG1kdHlwZT0ibGlzdCIgZGF0YS1tYXJrPSItIiBzdHlsZT0iY29sb3I6IHJn +Yig1MSwgNTEsIDUxKTsgZm9udC1mYW1pbHk6ICZxdW90O09wZW4gU2FucyZxdW90OywgJnF1b3Q7 +Q2xlYXIgU2FucyZxdW90OywgJnF1b3Q7SGVsdmV0aWNhIE5ldWUmcXVvdDssIEhlbHZldGljYSwg +QXJpYWwsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTZweDsgYm94LXNpemluZzogYm9yZGVyLWJv +eDsgbWFyZ2luOiAwcHg7IHBhZGRpbmctbGVmdDogMzBweDsgcG9zaXRpb246IHJlbGF0aXZlOyI+ +PGxpIGNsYXNzPSJtZC1saXN0LWl0ZW0iIGNpZD0ibjMwIiBtZHR5cGU9Imxpc3RfaXRlbSIgc3R5 +bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBwb3NpdGlvbjogcmVsYXRp +dmU7Ij48cCBjaWQ9Im4zMSIgbWR0eXBlPSJwYXJhZ3JhcGgiIGNsYXNzPSJtZC1lbmQtYmxvY2sg +bWQtcCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhlcml0 +OyBvcnBoYW5zOiA0OyBtYXJnaW46IDBweCAwcHggMC41cmVtOyB3aGl0ZS1zcGFjZTogcHJlLXdy +YXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxzcGFuIG1kLWlubGluZT0icGxhaW4iIGNsYXNzPSJt +ZC1wbGFpbiIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij7orqHliJIx77yaRzXkuLvm +lbDmja7lr7nlpJbmjqXlj6PlvIDlj5E8L3NwYW4+PC9wPjwvbGk+PC91bD48L29sPjxkaXYgdGFi +aW5kZXg9Ii0xIiBjaWQ9Im4zOSIgbWR0eXBlPSJociIgY2xhc3M9Im1kLWhyIG1kLWVuZC1ibG9j +ayIgc3R5bGU9ImZvbnQtZmFtaWx5OiAmcXVvdDtPcGVuIFNhbnMmcXVvdDssICZxdW90O0NsZWFy +IFNhbnMmcXVvdDssICZxdW90O0hlbHZldGljYSBOZXVlJnF1b3Q7LCBIZWx2ZXRpY2EsIEFyaWFs +LCBzYW5zLXNlcmlmOyBib3gtc2l6aW5nOiBib3JkZXItYm94OyBjb2xvcjogcmdiKDUxLCA1MSwg +NTEpOyBmb250LXNpemU6IDE2cHg7Ij48aHIgc3R5bGU9ImJveC1zaXppbmc6IGNvbnRlbnQtYm94 +OyBoZWlnaHQ6IDJweDsgbWFyZ2luOiAxNnB4IDBweDsgYm9yZGVyOiAwcHggbm9uZTsgcGFkZGlu +ZzogMHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjMxLCAyMzEsIDIzMSk7Ij48L2Rpdj48cCBj +aWQ9Im40MCIgbWR0eXBlPSJwYXJhZ3JhcGgiIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCIgc3R5 +bGU9ImZvbnQtZmFtaWx5OiAmcXVvdDtPcGVuIFNhbnMmcXVvdDssICZxdW90O0NsZWFyIFNhbnMm +cXVvdDssICZxdW90O0hlbHZldGljYSBOZXVlJnF1b3Q7LCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5z +LXNlcmlmOyBib3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5oZXJpdDsgb3Jw +aGFuczogNDsgbWFyZ2luOiAwLjhlbSAwcHg7IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRp +b246IHJlbGF0aXZlOyBjb2xvcjogcmdiKDUxLCA1MSwgNTEpOyBmb250LXNpemU6IDE2cHg7Ij48 +c3BhbiBtZC1pbmxpbmU9InN0cm9uZyIgY2xhc3M9Im1kLXBhaXItcyAiIHN0eWxlPSJib3gtc2l6 +aW5nOiBib3JkZXItYm94OyI+PHN0cm9uZyBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsi +PjxzcGFuIG1kLWlubGluZT0icGxhaW4iIGNsYXNzPSJtZC1wbGFpbiIgc3R5bGU9ImJveC1zaXpp +bmc6IGJvcmRlci1ib3g7Ij7lpIfms6g8L3NwYW4+PC9zdHJvbmc+PC9zcGFuPjxzcGFuIG1kLWlu +bGluZT0icGxhaW4iIGNsYXNzPSJtZC1wbGFpbiBtZC1leHBhbmQiIHN0eWxlPSJib3gtc2l6aW5n +OiBib3JkZXItYm94OyI+77ya5pegPC9zcGFuPjwvcD48L2Rpdj48ZGl2IHN0eWxlPSJmb250LWZh +bWlseTog5b6u6L2v6ZuF6buROyI+PGJyPjwvZGl2PjxkaXYgc3BlbGxjaGVjaz0iZmFsc2UiIGlk +PSJudGVzLXBjbWFjLXNpZ25hdHVyZSIgc3R5bGU9ImZvbnQtZmFtaWx5OiDlvq7ova/pm4Xpu5E7 +IiBkYXRhLW50ZXMtc2lnbmF0dXJlPSJ0cnVlIj48ZGl2IHN0eWxlPSJmb250LXNpemU6MTRweDtw +YWRkaW5nOjA7bWFyZ2luOjAiPjxkaXYgc3R5bGU9InBhZGRpbmctYm90dG9tOjEwcHg7bWFyZ2lu +LWJvdHRvbToxMHB4O2Rpc3BsYXk6aW5saW5lLWJsb2NrIj48ZGl2IHN0eWxlPSJmb250LWZhbWls +eTomcXVvdDvlvq7ova/pm4Xpu5EmcXVvdDs7IGZvbnQtc2l6ZTogMTRweDsgY29sb3I6IzAwMDAw +MCI+CiAgICA8c3R5bGU+CiAgICAgICAgZm9udHsKICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDEu +NjsKICAgICAgICB9CiAgICA8L3N0eWxlPgo8ZGl2IHN0eWxlPSJmb250LWZhbWlseTomcXVvdDvl +vq7ova/pm4Xpu5EmcXVvdDs7IGZvbnQtc2l6ZTogMTRweDsgY29sb3I6IzAwMDAwMCI+CiAgICA8 +c3R5bGU+CiAgICAgICAgZm9udHsKICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDEuNjsKICAgICAg +ICB9CiAgICA8L3N0eWxlPgo8ZGl2IHN0eWxlPSJmb250LWZhbWlseTomcXVvdDvlvq7ova/pm4Xp +u5EmcXVvdDs7IGZvbnQtc2l6ZTogMTRweDsgY29sb3I6IzAwMDAwMCI+CiAgICA8c3R5bGU+CiAg +ICAgICAgZm9udHsKICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDEuNjsKICAgICAgICB9CiAgICA8 +L3N0eWxlPgo8ZGl2IHN0eWxlPSJmb250LWZhbWlseTomcXVvdDvlvq7ova/pm4Xpu5EmcXVvdDs7 +IGZvbnQtc2l6ZTogMTRweDsgY29sb3I6IzAwMDAwMCI+CiAgICA8c3R5bGU+CiAgICAgICAgZm9u +dHsKICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDEuNjsKICAgICAgICB9CiAgICA8L3N0eWxlPgo8 +c3BhbiBzdHlsZT0iY29sb3I6IHJnYigxOTEsIDE5MSwgMTkxKTsgZm9udC1mYW1pbHk6ICdNaWNy +b3NvZnQgWWFoZWknOyBmb250LXNpemU6IDEzcHg7IG9ycGhhbnM6IDI7IHdpZG93czogMjsiPkJl +c3QgcmVnYXJkcyw8L3NwYW4+PGRpdiBzdHlsZT0ibWFyZ2luOiAwcHg7IHBhZGRpbmc6IDBweDsg +Ym9yZGVyOiAwcHg7IG91dGxpbmU6IDBweDsgZm9udC1mYW1pbHk6IFRhaG9tYSwgQXJpYWwsIFNU +SGVpdGksIFNpbVN1bjsgZm9udC12YXJpYW50LWxpZ2F0dXJlczogbm9ybWFsOyBvcnBoYW5zOiAy +OyB3aWRvd3M6IDI7IGNsZWFyOiBib3RoOyI+PHNwYW4gc3R5bGU9Im1hcmdpbjogMHB4OyBwYWRk +aW5nOiAwcHg7IGJvcmRlcjogMHB4OyBvdXRsaW5lOiAwcHg7IGZvbnQtZmFtaWx5OiAmcXVvdDtN +aWNyb3NvZnQgWWFoZWkmcXVvdDs7IGZvbnQtc2l6ZTogMTNweDsgY29sb3I6IHJnYigxOTEsIDE5 +MSwgMTkxKTsiPuadqOi9qTwvc3Bhbj48L2Rpdj48ZGl2IHN0eWxlPSJtYXJnaW46IDBweDsgcGFk +ZGluZzogMHB4OyBib3JkZXI6IDBweDsgb3V0bGluZTogMHB4OyBmb250LWZhbWlseTogVGFob21h +LCBBcmlhbCwgU1RIZWl0aSwgU2ltU3VuOyBmb250LXZhcmlhbnQtbGlnYXR1cmVzOiBub3JtYWw7 +IG9ycGhhbnM6IDI7IHdpZG93czogMjsgY2xlYXI6IGJvdGg7Ij48L2Rpdj48ZGl2IHN0eWxlPSJt +YXJnaW46IDBweDsgcGFkZGluZzogMHB4OyBib3JkZXI6IDBweDsgb3V0bGluZTogMHB4OyBmb250 +LWZhbWlseTogVGFob21hLCBBcmlhbCwgU1RIZWl0aSwgU2ltU3VuOyBmb250LXZhcmlhbnQtbGln +YXR1cmVzOiBub3JtYWw7IG9ycGhhbnM6IDI7IHdpZG93czogMjsgY2xlYXI6IGJvdGg7Ij48aW1n +IHN0eWxlPSJtYXgtd2lkdGg6IHVuc2V0OyIgc3JjPSJodHRwczovL21haWwtb25saW5lLm5vc2Ru +LjEyNy5uZXQvd3pwbW1jL2NlOWY4YjM2ZTFmZmJlNTUzMjljMTk2Yzg0ZmU1MTk3LnBuZyI+PC9k +aXY+PGRpdiBzdHlsZT0ibWFyZ2luOiAwcHg7IHBhZGRpbmc6IDBweDsgYm9yZGVyOiAwcHg7IG91 +dGxpbmU6IDBweDsgZm9udC1mYW1pbHk6IFRhaG9tYSwgQXJpYWwsIFNUSGVpdGksIFNpbVN1bjsg +Zm9udC12YXJpYW50LWxpZ2F0dXJlczogbm9ybWFsOyBvcnBoYW5zOiAyOyB3aWRvd3M6IDI7IGNs +ZWFyOiBib3RoOyI+PHNwYW4gc3R5bGU9Im1hcmdpbjogMHB4OyBwYWRkaW5nOiAwcHg7IGJvcmRl +cjogMHB4OyBvdXRsaW5lOiAwcHg7IGZvbnQtZmFtaWx5OiAmcXVvdDtNaWNyb3NvZnQgWWFoZWkm +cXVvdDs7IGNvbG9yOiByZ2IoMTkxLCAxOTEsIDE5MSk7Ij7lnLDlnYDvvJrkuK3lm73Ct+WNl+S6 +rOi9r+S7tuiwt+i9r+S7tuWkp+mBkyAxMSDlj7foirHnpZ7lpKfljqYgMi0zRjwvc3Bhbj48L2Rp +dj48ZGl2IHN0eWxlPSJtYXJnaW46IDBweDsgcGFkZGluZzogMHB4OyBib3JkZXI6IDBweDsgb3V0 +bGluZTogMHB4OyBmb250LWZhbWlseTogVGFob21hLCBBcmlhbCwgU1RIZWl0aSwgU2ltU3VuOyBm +b250LXZhcmlhbnQtbGlnYXR1cmVzOiBub3JtYWw7IG9ycGhhbnM6IDI7IHdpZG93czogMjsgY2xl +YXI6IGJvdGg7Ij48c3BhbiBzdHlsZT0ibWFyZ2luOiAwcHg7IHBhZGRpbmc6IDBweDsgYm9yZGVy +OiAwcHg7IG91dGxpbmU6IDBweDsgZm9udC1mYW1pbHk6ICZxdW90O01pY3Jvc29mdCBZYWhlaSZx +dW90OzsgY29sb3I6IHJnYigxOTEsIDE5MSwgMTkxKTsiPuaJi+acuu+8mjE4NzI2MTI4NDg5PC9z +cGFuPjwvZGl2PjxkaXYgc3R5bGU9Im1hcmdpbjogMHB4OyBwYWRkaW5nOiAwcHg7IGJvcmRlcjog +MHB4OyBvdXRsaW5lOiAwcHg7IGZvbnQtZmFtaWx5OiBUYWhvbWEsIEFyaWFsLCBTVEhlaXRpLCBT +aW1TdW47IGZvbnQtdmFyaWFudC1saWdhdHVyZXM6IG5vcm1hbDsgb3JwaGFuczogMjsgd2lkb3dz +OiAyOyBjbGVhcjogYm90aDsiPjxzcGFuIHN0eWxlPSJtYXJnaW46IDBweDsgcGFkZGluZzogMHB4 +OyBib3JkZXI6IDBweDsgb3V0bGluZTogMHB4OyBmb250LWZhbWlseTogJnF1b3Q7TWljcm9zb2Z0 +IFlhaGVpJnF1b3Q7OyBjb2xvcjogcmdiKDE5MSwgMTkxLCAxOTEpOyI+6YKu566x77yaeWFuZ3h1 +YW5Ad2l0c29mdC5jbjwvc3Bhbj48L2Rpdj4KPC9kaXY+CjwvZGl2Pgo8L2Rpdj4KPC9kaXY+PC9k +aXY+PC9kaXY+PC9kaXY+PC9kaXY+PCEtLfCfmIAtLT48L2Rpdj48L2Rpdj48L2JvZHk+PC9odG1s +Pg== + +--=_mailmaster-6a18e4a4_0_3d6c_=-- diff --git a/media/inbound/2025-09-11_1700_G5开发周报_2025-09-08_--_2025-09-11---ff518cc1-4b29-4bcf-a84c-03f4c618901d.eml b/media/inbound/2025-09-11_1700_G5开发周报_2025-09-08_--_2025-09-11---ff518cc1-4b29-4bcf-a84c-03f4c618901d.eml new file mode 100644 index 0000000..edb7e4f --- /dev/null +++ b/media/inbound/2025-09-11_1700_G5开发周报_2025-09-08_--_2025-09-11---ff518cc1-4b29-4bcf-a84c-03f4c618901d.eml @@ -0,0 +1,300 @@ +Date: Thu, 11 Sep 2025 17:00:10 +0800 +From: yangxuan +To: =?utf-8?B?5YiY5by6?= +Cc: =?utf-8?B?5bGI5paw6b6Z?= , =?utf-8?B?5pyx5paM?= + , =?utf-8?B?6ZmI5piO?= , + =?utf-8?Q?xym=40witsoft.cn?= +Message-ID: <774107C3-CD95-49EF-9EE6-B0A764AEC02E@witsoft.cn> +Subject: =?utf-8?B?RzXlvIDlj5HlkajmiqXjgJAyMDI1LTA5LTA4IC0tICAyMDI1LTA5?= + =?utf-8?B?LTEx44CR?= +MIME-Version: 1.0 +Content-Type: multipart/alternative; boundary="=_mailmaster-6a18e4a4_0_2cd6_=" + +--=_mailmaster-6a18e4a4_0_2cd6_= +Content-Type: text/plain; charset="utf-8" +Content-Transfer-Encoding: base64 + +5oKo5aW977yB5Lul5LiL5piv5oiR5pys5ZGo55qE5bel5L2c5oC757uT5Y+K5LiL5ZGo6K6h5YiS +77yM6K+35a6h6ZiF44CCCuS4gOOAgeacrOWRqOW3peS9nOaAu+e7kwrph43ngrnlt6XkvZzlrozm +iJDmg4XlhrUK5Lu75YqhMe+8mkc15Li75pWw5o2uNS4xLjbniYjmnKzlvIDlj5EK5Lu75YqhMu+8 +mkc15Li75pWw5o2u5a+55aSW5o6l5Y+j56Gu6K6k5ZKM5byA5Y+RCuW4uOinhOW3peS9nArml6Xl +uLjkuovliqEx77yaMjAyNS0wOS0wOCBidWfkv67lpI0g5o6l5Y+j5byA5Y+RCuaXpeW4uOS6i+WK +oTLvvJoyMDI1LTA5LTA5IOS4u+aVsOaNruWvueWkluaOpeWPo+W8gOWPkSAK5pel5bi45LqL5Yqh +M++8mjIwMjUtMDktMTAg5Li75pWw5o2u5a+55aSW5o6l5Y+j5Lit54mp5paZ5L+h5oGv5paw5aKe +5o6l5Y+j5pW05L2T5byA5Y+RCuaXpeW4uOS6i+WKoTTvvJoyMDI1LTA5LTExIOS4u+aVsOaNrueJ +qeaWmeS/oeaBr+WvueWkluaOpeWPo+S8mOWMluWSjGJ1Z+S/ruWkjQrlrZjlnKjpl67popjmiJbp +nIDmlK/mjIHkuovpobkKMjAyNS0wOS0wOCDlupXluqfmnI3liqHlvILluLgoNmgpIOWvvOiHtOW8 +gOWPkei/m+W6puaOqOi/nyDpnIDopoHljovnvKnmtYvor5Xml7bpl7QK5LqM44CB5LiL5ZGo5bel +5L2c6K6h5YiSCumHjeeCueS7u+WKoQrorqHliJIx77yaRzXkuLvmlbDmja7lr7nlpJbmjqXlj6Pl +vIDlj5EK5aSH5rOo77ya5pegCkJlc3QgcmVnYXJkcyzmnajovakK5Zyw5Z2A77ya5Lit5Zu9wrfl +jZfkuqzova/ku7bosLfova/ku7blpKfpgZMgMTEg5Y+36Iqx56We5aSn5Y6mIDItM0YK5omL5py6 +77yaMTg3MjYxMjg0ODkK6YKu566x77yaeWFuZ3h1YW5Ad2l0c29mdC5jbg== + +--=_mailmaster-6a18e4a4_0_2cd6_= +Content-Type: text/html; charset="utf-8" +Content-Transfer-Encoding: base64 + +PGh0bWw+PGhlYWQ+PG1ldGEgaHR0cC1lcXVpdj0nQ29udGVudC1UeXBlJyBjb250ZW50PSd0ZXh0 +L2h0bWw7IGNoYXJzZXQ9VVRGLTgnPjwvaGVhZD48Ym9keSBzdHlsZT1saW5lLWhlaWdodDogMS41 +O2ZvbnQtZmFtaWx5OiAi5b6u6L2v6ZuF6buRIj48ZGl2ICBzdHlsZT0iZm9udC1mYW1pbHk6IOW+ +rui9r+mbhem7kTsiPjxkaXYgc3R5bGU9IiI+PGRpdiBzdHlsZT0iIj48ZGl2IHN0eWxlPSIiPjxw +IGNpZD0ibjAiIG1kdHlwZT0icGFyYWdyYXBoIiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLXAgbWQt +Zm9jdXMiIHN0eWxlPSJmb250LWZhbWlseTogJnF1b3Q7T3BlbiBTYW5zJnF1b3Q7LCAmcXVvdDtD +bGVhciBTYW5zJnF1b3Q7LCAmcXVvdDtIZWx2ZXRpY2EgTmV1ZSZxdW90OywgSGVsdmV0aWNhLCBB +cmlhbCwgc2Fucy1zZXJpZjsgYm94LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGlu +aGVyaXQ7IG9ycGhhbnM6IDQ7IG1hcmdpbjogMC44ZW0gMHB4OyB3aGl0ZS1zcGFjZTogcHJlLXdy +YXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsgY29sb3I6IHJnYig1MSwgNTEsIDUxKTsgZm9udC1zaXpl +OiAxNnB4OyI+PHNwYW4gbWQtaW5saW5lPSJwbGFpbiIgY2xhc3M9Im1kLXBsYWluIG1kLWV4cGFu +ZCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij7mgqjlpb3vvIHku6XkuIvmmK/miJHm +nKzlkajnmoTlt6XkvZzmgLvnu5Plj4rkuIvlkajorqHliJLvvIzor7flrqHpmIXjgII8L3NwYW4+ +PC9wPjxkaXYgdGFiaW5kZXg9Ii0xIiBjaWQ9Im4yIiBtZHR5cGU9ImhyIiBjbGFzcz0ibWQtaHIg +bWQtZW5kLWJsb2NrIiBzdHlsZT0iZm9udC1mYW1pbHk6ICZxdW90O09wZW4gU2FucyZxdW90Oywg +JnF1b3Q7Q2xlYXIgU2FucyZxdW90OywgJnF1b3Q7SGVsdmV0aWNhIE5ldWUmcXVvdDssIEhlbHZl +dGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7IGNvbG9yOiBy +Z2IoNTEsIDUxLCA1MSk7IGZvbnQtc2l6ZTogMTZweDsiPjxociBzdHlsZT0iYm94LXNpemluZzog +Y29udGVudC1ib3g7IGhlaWdodDogMnB4OyBtYXJnaW46IDE2cHggMHB4OyBib3JkZXI6IDBweCBu +b25lOyBwYWRkaW5nOiAwcHg7IGJhY2tncm91bmQtY29sb3I6IHJnYigyMzEsIDIzMSwgMjMxKTsi +PjwvZGl2PjxoMyBjaWQ9Im4zIiBtZHR5cGU9ImhlYWRpbmciIGNsYXNzPSJtZC1lbmQtYmxvY2sg +bWQtaGVhZGluZyIgc3R5bGU9ImZvbnQtZmFtaWx5OiAmcXVvdDtPcGVuIFNhbnMmcXVvdDssICZx +dW90O0NsZWFyIFNhbnMmcXVvdDssICZxdW90O0hlbHZldGljYSBOZXVlJnF1b3Q7LCBIZWx2ZXRp +Y2EsIEFyaWFsLCBzYW5zLXNlcmlmOyBib3gtc2l6aW5nOiBib3JkZXItYm94OyBicmVhay1hZnRl +cjogYXZvaWQtcGFnZTsgYnJlYWstaW5zaWRlOiBhdm9pZDsgb3JwaGFuczogNDsgZm9udC1zaXpl +OiAxLjVlbTsgbWFyZ2luLXRvcDogMXJlbTsgbWFyZ2luLWJvdHRvbTogMXJlbTsgcG9zaXRpb246 +IHJlbGF0aXZlOyBsaW5lLWhlaWdodDogMS40MzsgY3Vyc29yOiB0ZXh0OyB3aGl0ZS1zcGFjZTog +cHJlLXdyYXA7IGNvbG9yOiByZ2IoNTEsIDUxLCA1MSk7Ij48c3BhbiBtZC1pbmxpbmU9InN0cm9u +ZyIgY2xhc3M9Im1kLXBhaXItcyAiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+PHN0 +cm9uZyBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPjxzcGFuIG1kLWlubGluZT0icGxh +aW4iIGNsYXNzPSJtZC1wbGFpbiIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij7kuIDj +gIHmnKzlkajlt6XkvZzmgLvnu5M8L3NwYW4+PC9zdHJvbmc+PC9zcGFuPjwvaDM+PG9sIGNsYXNz +PSJvbC1saXN0IiBzdGFydD0iIiBjaWQ9Im40IiBtZHR5cGU9Imxpc3QiIHN0eWxlPSJmb250LWZh +bWlseTogJnF1b3Q7T3BlbiBTYW5zJnF1b3Q7LCAmcXVvdDtDbGVhciBTYW5zJnF1b3Q7LCAmcXVv +dDtIZWx2ZXRpY2EgTmV1ZSZxdW90OywgSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjsgYm94 +LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBhZGRpbmctbGVmdDogMzBweDsgcG9z +aXRpb246IHJlbGF0aXZlOyBjb2xvcjogcmdiKDUxLCA1MSwgNTEpOyBmb250LXNpemU6IDE2cHg7 +Ij48bGkgY2xhc3M9Im1kLWxpc3QtaXRlbSIgY2lkPSJuNSIgbWR0eXBlPSJsaXN0X2l0ZW0iIHN0 +eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcG9zaXRpb246IHJlbGF0 +aXZlOyI+PHAgY2lkPSJuNiIgbWR0eXBlPSJwYXJhZ3JhcGgiIGNsYXNzPSJtZC1lbmQtYmxvY2sg +bWQtcCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhlcml0 +OyBvcnBoYW5zOiA0OyBtYXJnaW46IDBweCAwcHggMC41cmVtOyB3aGl0ZS1zcGFjZTogcHJlLXdy +YXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxzcGFuIG1kLWlubGluZT0ic3Ryb25nIiBjbGFzcz0i +bWQtcGFpci1zICIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij48c3Ryb25nIHN0eWxl +PSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+PHNwYW4gbWQtaW5saW5lPSJwbGFpbiIgY2xhc3M9 +Im1kLXBsYWluIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPumHjeeCueW3peS9nOWu +jOaIkOaDheWGtTwvc3Bhbj48L3N0cm9uZz48L3NwYW4+PC9wPjwvbGk+PHVsIGNsYXNzPSJ1bC1s +aXN0IiBjaWQ9Im43IiBtZHR5cGU9Imxpc3QiIGRhdGEtbWFyaz0iLSIgc3R5bGU9ImJveC1zaXpp +bmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBwYWRkaW5nLWxlZnQ6IDMwcHg7IHBvc2l0aW9u +OiByZWxhdGl2ZTsiPjxsaSBjbGFzcz0ibWQtbGlzdC1pdGVtIiBjaWQ9Im44IiBtZHR5cGU9Imxp +c3RfaXRlbSIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBwb3Np +dGlvbjogcmVsYXRpdmU7Ij48cCBjaWQ9Im45IiBtZHR5cGU9InBhcmFncmFwaCIgY2xhc3M9Im1k +LWVuZC1ibG9jayBtZC1wIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1oZWln +aHQ6IGluaGVyaXQ7IG9ycGhhbnM6IDQ7IG1hcmdpbjogMHB4IDBweCAwLjVyZW07IHdoaXRlLXNw +YWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHNwYW4gbWQtaW5saW5lPSJwbGFp +biIgY2xhc3M9Im1kLXBsYWluIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPuS7u+WK +oTHvvJpHNeS4u+aVsOaNrjUuMS4254mI5pys5byA5Y+RPC9zcGFuPjwvcD48L2xpPjxsaSBjbGFz +cz0ibWQtbGlzdC1pdGVtIiBjaWQ9Im4xMCIgbWR0eXBlPSJsaXN0X2l0ZW0iIHN0eWxlPSJib3gt +c2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHAg +Y2lkPSJuMTEiIG1kdHlwZT0icGFyYWdyYXBoIiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLXAiIHN0 +eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5oZXJpdDsgb3JwaGFu +czogNDsgbWFyZ2luOiAwcHggMHB4IDAuNXJlbTsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyBwb3Np +dGlvbjogcmVsYXRpdmU7Ij48c3BhbiBtZC1pbmxpbmU9InBsYWluIiBjbGFzcz0ibWQtcGxhaW4i +IHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+5Lu75YqhMu+8mjwvc3Bhbj5HNeS4u+aV +sOaNruWvueWkluaOpeWPo+ehruiupOWSjOW8gOWPkTwvcD48L2xpPjwvdWw+PGxpIGNsYXNzPSJt +ZC1saXN0LWl0ZW0iIGNpZD0ibjEyIiBtZHR5cGU9Imxpc3RfaXRlbSIgc3R5bGU9ImJveC1zaXpp +bmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48cCBjaWQ9 +Im4xMyIgbWR0eXBlPSJwYXJhZ3JhcGgiIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCIgc3R5bGU9 +ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhlcml0OyBvcnBoYW5zOiA0 +OyBtYXJnaW46IDBweCAwcHggMC41cmVtOyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0aW9u +OiByZWxhdGl2ZTsiPjxzcGFuIG1kLWlubGluZT0ic3Ryb25nIiBjbGFzcz0ibWQtcGFpci1zICIg +c3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij48c3Ryb25nIHN0eWxlPSJib3gtc2l6aW5n +OiBib3JkZXItYm94OyI+PHNwYW4gbWQtaW5saW5lPSJwbGFpbiIgY2xhc3M9Im1kLXBsYWluIiBz +dHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPuW4uOinhOW3peS9nDwvc3Bhbj48L3N0cm9u +Zz48L3NwYW4+PC9wPjwvbGk+PHVsIGNsYXNzPSJ1bC1saXN0IiBjaWQ9Im4xNCIgbWR0eXBlPSJs +aXN0IiBkYXRhLW1hcms9Ii0iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46 +IDBweDsgcGFkZGluZy1sZWZ0OiAzMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48bGkgY2xhc3M9 +Im1kLWxpc3QtaXRlbSIgY2lkPSJuMTUiIG1kdHlwZT0ibGlzdF9pdGVtIiBzdHlsZT0iYm94LXNp +emluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxwIGNp +ZD0ibjE2IiBtZHR5cGU9InBhcmFncmFwaCIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1wIiBzdHls +ZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IG9ycGhhbnM6 +IDQ7IG1hcmdpbjogMHB4IDBweCAwLjVyZW07IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRp +b246IHJlbGF0aXZlOyI+PHNwYW4gbWQtaW5saW5lPSJwbGFpbiIgY2xhc3M9Im1kLXBsYWluIiBz +dHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPuaXpeW4uOS6i+WKoTHvvJoyMDI1LTA5LTA4 +IGJ1Z+S/ruWkjSDmjqXlj6PlvIDlj5E8L3NwYW4+PC9wPjwvbGk+PC91bD48L29sPjxvbCBjbGFz +cz0ib2wtbGlzdCIgc3RhcnQ9IiIgY2lkPSJuNCIgbWR0eXBlPSJsaXN0IiBzdHlsZT0iZm9udC1m +YW1pbHk6ICZxdW90O09wZW4gU2FucyZxdW90OywgJnF1b3Q7Q2xlYXIgU2FucyZxdW90OywgJnF1 +b3Q7SGVsdmV0aWNhIE5ldWUmcXVvdDssIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7IGJv +eC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBwYWRkaW5nLWxlZnQ6IDMwcHg7IHBv +c2l0aW9uOiByZWxhdGl2ZTsgY29sb3I6IHJnYig1MSwgNTEsIDUxKTsgZm9udC1zaXplOiAxNnB4 +OyI+PHVsIGNsYXNzPSJ1bC1saXN0IiBjaWQ9Im4xNCIgbWR0eXBlPSJsaXN0IiBkYXRhLW1hcms9 +Ii0iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcGFkZGluZy1s +ZWZ0OiAzMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48bGkgY2xhc3M9Im1kLWxpc3QtaXRlbSIg +Y2lkPSJuMTUiIG1kdHlwZT0ibGlzdF9pdGVtIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJv +eDsgbWFyZ2luOiAwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxwIGNpZD0ibjE2IiBtZHR5cGU9 +InBhcmFncmFwaCIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1wIiBzdHlsZT0iYm94LXNpemluZzog +Ym9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IG9ycGhhbnM6IDQ7IG1hcmdpbjogMHB4 +IDBweCAwLjVyZW07IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJlbGF0aXZlOyI+ +PHNwYW4gbWQtaW5saW5lPSJwbGFpbiIgY2xhc3M9Im1kLXBsYWluIiBzdHlsZT0iYm94LXNpemlu +ZzogYm9yZGVyLWJveDsiPuaXpeW4uOS6i+WKoTLvvJoyMDI1LTA5LTA5IOS4u+aVsOaNruWvueWk +luaOpeWPo+W8gOWPkQo8L3NwYW4+PC9wPjwvbGk+PGxpIGNsYXNzPSJtZC1saXN0LWl0ZW0iIGNp +ZD0ibjE3IiBtZHR5cGU9Imxpc3RfaXRlbSIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7 +IG1hcmdpbjogMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48cCBjaWQ9Im4xOCIgbWR0eXBlPSJw +YXJhZ3JhcGgiIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCIgc3R5bGU9ImJveC1zaXppbmc6IGJv +cmRlci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhlcml0OyBvcnBoYW5zOiA0OyBtYXJnaW46IDBweCAw +cHggMC41cmVtOyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxz +cGFuIG1kLWlubGluZT0icGxhaW4iIGNsYXNzPSJtZC1wbGFpbiIgc3R5bGU9ImJveC1zaXppbmc6 +IGJvcmRlci1ib3g7Ij7ml6XluLjkuovliqEz77yaMjAyNS0wOS0xMCDkuLvmlbDmja7lr7nlpJbm +jqXlj6PkuK3nianmlpnkv6Hmga/mlrDlop7mjqXlj6PmlbTkvZPlvIDlj5E8L3NwYW4+PC9wPjwv +bGk+PGxpIGNsYXNzPSJtZC1saXN0LWl0ZW0iIGNpZD0ibjg0IiBtZHR5cGU9Imxpc3RfaXRlbSIg +c3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBwb3NpdGlvbjogcmVs +YXRpdmU7Ij48cCBjaWQ9Im44NSIgbWR0eXBlPSJwYXJhZ3JhcGgiIGNsYXNzPSJtZC1lbmQtYmxv +Y2sgbWQtcCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhl +cml0OyBvcnBoYW5zOiA0OyBtYXJnaW46IDBweCAwcHggMC41cmVtOyB3aGl0ZS1zcGFjZTogcHJl +LXdyYXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxzcGFuIG1kLWlubGluZT0icGxhaW4iIGNsYXNz +PSJtZC1wbGFpbiIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij7ml6XluLjkuovliqE0 +77yaMjAyNS0wOS0xMSDkuLvmlbDmja7nianmlpnkv6Hmga/lr7nlpJbmjqXlj6PkvJjljJblkoxi +dWfkv67lpI08L3NwYW4+PC9wPjwvbGk+PGxpIGNsYXNzPSJtZC1saXN0LWl0ZW0iIGNpZD0ibjkx +IiBtZHR5cGU9Imxpc3RfaXRlbSIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdp +bjogMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48cCBjaWQ9Im44OSIgbWR0eXBlPSJwYXJhZ3Jh +cGgiIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1i +b3g7IGxpbmUtaGVpZ2h0OiBpbmhlcml0OyBvcnBoYW5zOiA0OyBtYXJnaW46IDBweCAwcHggMC41 +cmVtOyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxicj48L3A+ +PC9saT48L3VsPjxsaSBjbGFzcz0ibWQtbGlzdC1pdGVtIiBjaWQ9Im4xOSIgbWR0eXBlPSJsaXN0 +X2l0ZW0iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcG9zaXRp +b246IHJlbGF0aXZlOyI+PHAgY2lkPSJuMjAiIG1kdHlwZT0icGFyYWdyYXBoIiBjbGFzcz0ibWQt +ZW5kLWJsb2NrIG1kLXAiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdo +dDogaW5oZXJpdDsgb3JwaGFuczogNDsgbWFyZ2luOiAwcHggMHB4IDAuNXJlbTsgd2hpdGUtc3Bh +Y2U6IHByZS13cmFwOyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48c3BhbiBtZC1pbmxpbmU9InN0cm9u +ZyIgY2xhc3M9Im1kLXBhaXItcyAiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+PHN0 +cm9uZyBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPjxzcGFuIG1kLWlubGluZT0icGxh +aW4iIGNsYXNzPSJtZC1wbGFpbiIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij7lrZjl +nKjpl67popjmiJbpnIDmlK/mjIHkuovpobk8L3NwYW4+PC9zdHJvbmc+PC9zcGFuPjwvcD48cCBj +aWQ9Im4xMDAiIG1kdHlwZT0icGFyYWdyYXBoIiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLXAiIHN0 +eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5oZXJpdDsgb3JwaGFu +czogNDsgbWFyZ2luOiAwLjVyZW0gMHB4OyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0aW9u +OiByZWxhdGl2ZTsiPjwvcD48L2xpPjxvbCBzdHlsZT0ibGlzdC1zdHlsZS10eXBlOiBsb3dlci1h +bHBoYTsiPjxsaSBjbGFzcz0ibWQtbGlzdC1pdGVtIiBjaWQ9Im4xOSIgbWR0eXBlPSJsaXN0X2l0 +ZW0iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcG9zaXRpb246 +IHJlbGF0aXZlOyI+PHAgY2lkPSJuMjAiIG1kdHlwZT0icGFyYWdyYXBoIiBjbGFzcz0ibWQtZW5k +LWJsb2NrIG1kLXAiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdodDog +aW5oZXJpdDsgb3JwaGFuczogNDsgbWFyZ2luOiAwcHggMHB4IDAuNXJlbTsgd2hpdGUtc3BhY2U6 +IHByZS13cmFwOyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48c3BhbiBtZC1pbmxpbmU9InN0cm9uZyIg +Y2xhc3M9Im1kLXBhaXItcyAiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+PHNwYW4g +c3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3giPjxzcGFuIG1kLWlubGluZT0icGxhaW4iIGNs +YXNzPSJtZC1wbGFpbiIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij4yMDI1LTA5LTA4 +IOW6leW6p+acjeWKoeW8guW4uCg2aCkg5a+86Ie05byA5Y+R6L+b5bqm5o6o6L+fIOmcgOimgeWO +i+e8qea1i+ivleaXtumXtDwvc3Bhbj48L3NwYW4+PC9zcGFuPjwvcD48L2xpPjwvb2w+PC9vbD48 +aDMgY2lkPSJuMjUiIG1kdHlwZT0iaGVhZGluZyIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1oZWFk +aW5nIiBzdHlsZT0iZm9udC1mYW1pbHk6ICZxdW90O09wZW4gU2FucyZxdW90OywgJnF1b3Q7Q2xl +YXIgU2FucyZxdW90OywgJnF1b3Q7SGVsdmV0aWNhIE5ldWUmcXVvdDssIEhlbHZldGljYSwgQXJp +YWwsIHNhbnMtc2VyaWY7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7IGJyZWFrLWFmdGVyOiBhdm9p +ZC1wYWdlOyBicmVhay1pbnNpZGU6IGF2b2lkOyBvcnBoYW5zOiA0OyBmb250LXNpemU6IDEuNWVt +OyBtYXJnaW4tdG9wOiAxcmVtOyBtYXJnaW4tYm90dG9tOiAxcmVtOyBwb3NpdGlvbjogcmVsYXRp +dmU7IGxpbmUtaGVpZ2h0OiAxLjQzOyBjdXJzb3I6IHRleHQ7IHdoaXRlLXNwYWNlOiBwcmUtd3Jh +cDsgY29sb3I6IHJnYig1MSwgNTEsIDUxKTsiPjxzcGFuIG1kLWlubGluZT0ic3Ryb25nIiBjbGFz +cz0ibWQtcGFpci1zICIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij48c3Ryb25nIHN0 +eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+PHNwYW4gbWQtaW5saW5lPSJwbGFpbiIgY2xh +c3M9Im1kLXBsYWluIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPuS6jOOAgeS4i+WR +qOW3peS9nOiuoeWIkjwvc3Bhbj48L3N0cm9uZz48L3NwYW4+PC9oMz48b2wgY2xhc3M9Im9sLWxp +c3QiIHN0YXJ0PSIiIGNpZD0ibjI2IiBtZHR5cGU9Imxpc3QiIHN0eWxlPSJmb250LWZhbWlseTog +5b6u6L2v6ZuF6buROyBib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcGFkZGlu +Zy1sZWZ0OiAzMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48bGkgY2xhc3M9Im1kLWxpc3QtaXRl +bSIgY2lkPSJuMjciIG1kdHlwZT0ibGlzdF9pdGVtIiBzdHlsZT0iY29sb3I6IHJnYig1MSwgNTEs +IDUxKTsgZm9udC1mYW1pbHk6ICZxdW90O09wZW4gU2FucyZxdW90OywgJnF1b3Q7Q2xlYXIgU2Fu +cyZxdW90OywgJnF1b3Q7SGVsdmV0aWNhIE5ldWUmcXVvdDssIEhlbHZldGljYSwgQXJpYWwsIHNh +bnMtc2VyaWY7IGZvbnQtc2l6ZTogMTZweDsgYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2lu +OiAwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxwIGNpZD0ibjI4IiBtZHR5cGU9InBhcmFncmFw +aCIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1wIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJv +eDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IG9ycGhhbnM6IDQ7IG1hcmdpbjogMHB4IDBweCAwLjVy +ZW07IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHNwYW4gbWQt +aW5saW5lPSJzdHJvbmciIGNsYXNzPSJtZC1wYWlyLXMgIiBzdHlsZT0iYm94LXNpemluZzogYm9y +ZGVyLWJveDsiPjxzdHJvbmcgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij48c3BhbiBt +ZC1pbmxpbmU9InBsYWluIiBjbGFzcz0ibWQtcGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3Jk +ZXItYm94OyI+6YeN54K55Lu75YqhPC9zcGFuPjwvc3Ryb25nPjwvc3Bhbj48L3A+PC9saT48dWwg +Y2xhc3M9InVsLWxpc3QiIGNpZD0ibjI5IiBtZHR5cGU9Imxpc3QiIGRhdGEtbWFyaz0iLSIgc3R5 +bGU9ImNvbG9yOiByZ2IoNTEsIDUxLCA1MSk7IGZvbnQtZmFtaWx5OiAmcXVvdDtPcGVuIFNhbnMm +cXVvdDssICZxdW90O0NsZWFyIFNhbnMmcXVvdDssICZxdW90O0hlbHZldGljYSBOZXVlJnF1b3Q7 +LCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDE2cHg7IGJveC1zaXpp +bmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBwYWRkaW5nLWxlZnQ6IDMwcHg7IHBvc2l0aW9u +OiByZWxhdGl2ZTsiPjxsaSBjbGFzcz0ibWQtbGlzdC1pdGVtIiBjaWQ9Im4zMCIgbWR0eXBlPSJs +aXN0X2l0ZW0iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcG9z +aXRpb246IHJlbGF0aXZlOyI+PHAgY2lkPSJuMzEiIG1kdHlwZT0icGFyYWdyYXBoIiBjbGFzcz0i +bWQtZW5kLWJsb2NrIG1kLXAiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhl +aWdodDogaW5oZXJpdDsgb3JwaGFuczogNDsgbWFyZ2luOiAwcHggMHB4IDAuNXJlbTsgd2hpdGUt +c3BhY2U6IHByZS13cmFwOyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48c3BhbiBtZC1pbmxpbmU9InBs +YWluIiBjbGFzcz0ibWQtcGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+6K6h +5YiSMe+8mkc15Li75pWw5o2u5a+55aSW5o6l5Y+j5byA5Y+RPC9zcGFuPjwvcD48L2xpPjwvdWw+ +PC9vbD48ZGl2IHRhYmluZGV4PSItMSIgY2lkPSJuMzkiIG1kdHlwZT0iaHIiIGNsYXNzPSJtZC1o +ciBtZC1lbmQtYmxvY2siIHN0eWxlPSJmb250LWZhbWlseTogJnF1b3Q7T3BlbiBTYW5zJnF1b3Q7 +LCAmcXVvdDtDbGVhciBTYW5zJnF1b3Q7LCAmcXVvdDtIZWx2ZXRpY2EgTmV1ZSZxdW90OywgSGVs +dmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjsgYm94LXNpemluZzogYm9yZGVyLWJveDsgY29sb3I6 +IHJnYig1MSwgNTEsIDUxKTsgZm9udC1zaXplOiAxNnB4OyI+PGhyIHN0eWxlPSJib3gtc2l6aW5n +OiBjb250ZW50LWJveDsgaGVpZ2h0OiAycHg7IG1hcmdpbjogMTZweCAwcHg7IGJvcmRlcjogMHB4 +IG5vbmU7IHBhZGRpbmc6IDBweDsgYmFja2dyb3VuZC1jb2xvcjogcmdiKDIzMSwgMjMxLCAyMzEp +OyI+PC9kaXY+PHAgY2lkPSJuNDAiIG1kdHlwZT0icGFyYWdyYXBoIiBjbGFzcz0ibWQtZW5kLWJs +b2NrIG1kLXAiIHN0eWxlPSJmb250LWZhbWlseTogJnF1b3Q7T3BlbiBTYW5zJnF1b3Q7LCAmcXVv +dDtDbGVhciBTYW5zJnF1b3Q7LCAmcXVvdDtIZWx2ZXRpY2EgTmV1ZSZxdW90OywgSGVsdmV0aWNh +LCBBcmlhbCwgc2Fucy1zZXJpZjsgYm94LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6 +IGluaGVyaXQ7IG9ycGhhbnM6IDQ7IG1hcmdpbjogMC44ZW0gMHB4OyB3aGl0ZS1zcGFjZTogcHJl +LXdyYXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsgY29sb3I6IHJnYig1MSwgNTEsIDUxKTsgZm9udC1z +aXplOiAxNnB4OyI+PHNwYW4gbWQtaW5saW5lPSJzdHJvbmciIGNsYXNzPSJtZC1wYWlyLXMgIiBz +dHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPjxzdHJvbmcgc3R5bGU9ImJveC1zaXppbmc6 +IGJvcmRlci1ib3g7Ij48c3BhbiBtZC1pbmxpbmU9InBsYWluIiBjbGFzcz0ibWQtcGxhaW4iIHN0 +eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+5aSH5rOoPC9zcGFuPjwvc3Ryb25nPjwvc3Bh +bj48c3BhbiBtZC1pbmxpbmU9InBsYWluIiBjbGFzcz0ibWQtcGxhaW4gbWQtZXhwYW5kIiBzdHls +ZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPu+8muaXoDwvc3Bhbj48L3A+PC9kaXY+PGRpdiBz +dHlsZT0iZm9udC1mYW1pbHk6IOW+rui9r+mbhem7kTsiPjxicj48L2Rpdj48ZGl2IHNwZWxsY2hl +Y2s9ImZhbHNlIiBpZD0ibnRlcy1wY21hYy1zaWduYXR1cmUiIHN0eWxlPSJmb250LWZhbWlseTog +5b6u6L2v6ZuF6buROyIgZGF0YS1udGVzLXNpZ25hdHVyZT0idHJ1ZSI+PGRpdiBzdHlsZT0iZm9u +dC1zaXplOjE0cHg7cGFkZGluZzowO21hcmdpbjowIj48ZGl2IHN0eWxlPSJwYWRkaW5nLWJvdHRv +bToxMHB4O21hcmdpbi1ib3R0b206MTBweDtkaXNwbGF5OmlubGluZS1ibG9jayI+PGRpdiBzdHls +ZT0iZm9udC1mYW1pbHk6JnF1b3Q75b6u6L2v6ZuF6buRJnF1b3Q7OyBmb250LXNpemU6IDE0cHg7 +IGNvbG9yOiMwMDAwMDAiPgogICAgPHN0eWxlPgogICAgICAgIGZvbnR7CiAgICAgICAgICAgIGxp +bmUtaGVpZ2h0OiAxLjY7CiAgICAgICAgfQogICAgPC9zdHlsZT4KPGRpdiBzdHlsZT0iZm9udC1m +YW1pbHk6JnF1b3Q75b6u6L2v6ZuF6buRJnF1b3Q7OyBmb250LXNpemU6IDE0cHg7IGNvbG9yOiMw +MDAwMDAiPgogICAgPHN0eWxlPgogICAgICAgIGZvbnR7CiAgICAgICAgICAgIGxpbmUtaGVpZ2h0 +OiAxLjY7CiAgICAgICAgfQogICAgPC9zdHlsZT4KPGRpdiBzdHlsZT0iZm9udC1mYW1pbHk6JnF1 +b3Q75b6u6L2v6ZuF6buRJnF1b3Q7OyBmb250LXNpemU6IDE0cHg7IGNvbG9yOiMwMDAwMDAiPgog +ICAgPHN0eWxlPgogICAgICAgIGZvbnR7CiAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAxLjY7CiAg +ICAgICAgfQogICAgPC9zdHlsZT4KPGRpdiBzdHlsZT0iZm9udC1mYW1pbHk6JnF1b3Q75b6u6L2v +6ZuF6buRJnF1b3Q7OyBmb250LXNpemU6IDE0cHg7IGNvbG9yOiMwMDAwMDAiPgogICAgPHN0eWxl +PgogICAgICAgIGZvbnR7CiAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAxLjY7CiAgICAgICAgfQog +ICAgPC9zdHlsZT4KPHNwYW4gc3R5bGU9ImNvbG9yOiByZ2IoMTkxLCAxOTEsIDE5MSk7IGZvbnQt +ZmFtaWx5OiAnTWljcm9zb2Z0IFlhaGVpJzsgZm9udC1zaXplOiAxM3B4OyBvcnBoYW5zOiAyOyB3 +aWRvd3M6IDI7Ij5CZXN0IHJlZ2FyZHMsPC9zcGFuPjxkaXYgc3R5bGU9Im1hcmdpbjogMHB4OyBw +YWRkaW5nOiAwcHg7IGJvcmRlcjogMHB4OyBvdXRsaW5lOiAwcHg7IGZvbnQtZmFtaWx5OiBUYWhv +bWEsIEFyaWFsLCBTVEhlaXRpLCBTaW1TdW47IGZvbnQtdmFyaWFudC1saWdhdHVyZXM6IG5vcm1h +bDsgb3JwaGFuczogMjsgd2lkb3dzOiAyOyBjbGVhcjogYm90aDsiPjxzcGFuIHN0eWxlPSJtYXJn +aW46IDBweDsgcGFkZGluZzogMHB4OyBib3JkZXI6IDBweDsgb3V0bGluZTogMHB4OyBmb250LWZh +bWlseTogJnF1b3Q7TWljcm9zb2Z0IFlhaGVpJnF1b3Q7OyBmb250LXNpemU6IDEzcHg7IGNvbG9y +OiByZ2IoMTkxLCAxOTEsIDE5MSk7Ij7mnajovak8L3NwYW4+PC9kaXY+PGRpdiBzdHlsZT0ibWFy +Z2luOiAwcHg7IHBhZGRpbmc6IDBweDsgYm9yZGVyOiAwcHg7IG91dGxpbmU6IDBweDsgZm9udC1m +YW1pbHk6IFRhaG9tYSwgQXJpYWwsIFNUSGVpdGksIFNpbVN1bjsgZm9udC12YXJpYW50LWxpZ2F0 +dXJlczogbm9ybWFsOyBvcnBoYW5zOiAyOyB3aWRvd3M6IDI7IGNsZWFyOiBib3RoOyI+PC9kaXY+ +PGRpdiBzdHlsZT0ibWFyZ2luOiAwcHg7IHBhZGRpbmc6IDBweDsgYm9yZGVyOiAwcHg7IG91dGxp +bmU6IDBweDsgZm9udC1mYW1pbHk6IFRhaG9tYSwgQXJpYWwsIFNUSGVpdGksIFNpbVN1bjsgZm9u +dC12YXJpYW50LWxpZ2F0dXJlczogbm9ybWFsOyBvcnBoYW5zOiAyOyB3aWRvd3M6IDI7IGNsZWFy +OiBib3RoOyI+PGltZyBzdHlsZT0ibWF4LXdpZHRoOiB1bnNldDsiIHNyYz0iaHR0cHM6Ly9tYWls +LW9ubGluZS5ub3Nkbi4xMjcubmV0L3d6cG1tYy9jZTlmOGIzNmUxZmZiZTU1MzI5YzE5NmM4NGZl +NTE5Ny5wbmciPjwvZGl2PjxkaXYgc3R5bGU9Im1hcmdpbjogMHB4OyBwYWRkaW5nOiAwcHg7IGJv +cmRlcjogMHB4OyBvdXRsaW5lOiAwcHg7IGZvbnQtZmFtaWx5OiBUYWhvbWEsIEFyaWFsLCBTVEhl +aXRpLCBTaW1TdW47IGZvbnQtdmFyaWFudC1saWdhdHVyZXM6IG5vcm1hbDsgb3JwaGFuczogMjsg +d2lkb3dzOiAyOyBjbGVhcjogYm90aDsiPjxzcGFuIHN0eWxlPSJtYXJnaW46IDBweDsgcGFkZGlu +ZzogMHB4OyBib3JkZXI6IDBweDsgb3V0bGluZTogMHB4OyBmb250LWZhbWlseTogJnF1b3Q7TWlj +cm9zb2Z0IFlhaGVpJnF1b3Q7OyBjb2xvcjogcmdiKDE5MSwgMTkxLCAxOTEpOyI+5Zyw5Z2A77ya +5Lit5Zu9wrfljZfkuqzova/ku7bosLfova/ku7blpKfpgZMgMTEg5Y+36Iqx56We5aSn5Y6mIDIt +M0Y8L3NwYW4+PC9kaXY+PGRpdiBzdHlsZT0ibWFyZ2luOiAwcHg7IHBhZGRpbmc6IDBweDsgYm9y +ZGVyOiAwcHg7IG91dGxpbmU6IDBweDsgZm9udC1mYW1pbHk6IFRhaG9tYSwgQXJpYWwsIFNUSGVp +dGksIFNpbVN1bjsgZm9udC12YXJpYW50LWxpZ2F0dXJlczogbm9ybWFsOyBvcnBoYW5zOiAyOyB3 +aWRvd3M6IDI7IGNsZWFyOiBib3RoOyI+PHNwYW4gc3R5bGU9Im1hcmdpbjogMHB4OyBwYWRkaW5n +OiAwcHg7IGJvcmRlcjogMHB4OyBvdXRsaW5lOiAwcHg7IGZvbnQtZmFtaWx5OiAmcXVvdDtNaWNy +b3NvZnQgWWFoZWkmcXVvdDs7IGNvbG9yOiByZ2IoMTkxLCAxOTEsIDE5MSk7Ij7miYvmnLrvvJox +ODcyNjEyODQ4OTwvc3Bhbj48L2Rpdj48ZGl2IHN0eWxlPSJtYXJnaW46IDBweDsgcGFkZGluZzog +MHB4OyBib3JkZXI6IDBweDsgb3V0bGluZTogMHB4OyBmb250LWZhbWlseTogVGFob21hLCBBcmlh +bCwgU1RIZWl0aSwgU2ltU3VuOyBmb250LXZhcmlhbnQtbGlnYXR1cmVzOiBub3JtYWw7IG9ycGhh +bnM6IDI7IHdpZG93czogMjsgY2xlYXI6IGJvdGg7Ij48c3BhbiBzdHlsZT0ibWFyZ2luOiAwcHg7 +IHBhZGRpbmc6IDBweDsgYm9yZGVyOiAwcHg7IG91dGxpbmU6IDBweDsgZm9udC1mYW1pbHk6ICZx +dW90O01pY3Jvc29mdCBZYWhlaSZxdW90OzsgY29sb3I6IHJnYigxOTEsIDE5MSwgMTkxKTsiPumC +rueuse+8mnlhbmd4dWFuQHdpdHNvZnQuY248L3NwYW4+PC9kaXY+CjwvZGl2Pgo8L2Rpdj4KPC9k +aXY+CjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwhLS3wn5iALS0+PC9kaXY+PC9kaXY+ +PC9ib2R5PjwvaHRtbD4= + +--=_mailmaster-6a18e4a4_0_2cd6_=-- diff --git a/media/inbound/2025-09-20_1700_G5开发周报_2025-09-15_--_2025-09-20---1a3e79d4-76d0-4b14-ab6d-17b21424eb17.eml b/media/inbound/2025-09-20_1700_G5开发周报_2025-09-15_--_2025-09-20---1a3e79d4-76d0-4b14-ab6d-17b21424eb17.eml new file mode 100644 index 0000000..4270971 --- /dev/null +++ b/media/inbound/2025-09-20_1700_G5开发周报_2025-09-15_--_2025-09-20---1a3e79d4-76d0-4b14-ab6d-17b21424eb17.eml @@ -0,0 +1,386 @@ +Date: Sat, 20 Sep 2025 17:00:05 +0800 +From: yangxuan +To: =?utf-8?B?5YiY5by6?= +Cc: =?utf-8?B?5bGI5paw6b6Z?= , =?utf-8?B?5pyx5paM?= + , =?utf-8?B?6ZmI5piO?= , + =?utf-8?Q?xym=40witsoft.cn?= +Message-ID: +Subject: =?utf-8?B?RzXlvIDlj5HlkajmiqXjgJAyMDI1LTA5LTE1IC0tICAyMDI1LTA5?= + =?utf-8?B?LTIw44CR?= +MIME-Version: 1.0 +Content-Type: multipart/alternative; boundary="=_mailmaster-6a18e4a4_0_72ae_=" + +--=_mailmaster-6a18e4a4_0_72ae_= +Content-Type: text/plain; charset="utf-8" +Content-Transfer-Encoding: base64 + +5oKo5aW977yB5Lul5LiL5piv5oiR5pys5ZGo55qE5bel5L2c5oC757uT5Y+K5LiL5ZGo6K6h5YiS +77yM6K+35a6h6ZiF44CCCuS4gOOAgeacrOWRqOW3peS9nOaAu+e7kwrph43ngrnlt6XkvZzlrozm +iJDmg4XlhrUK5Lu75YqhMe+8mkc15Li75pWw5o2uNS4yLjDniYjmnKzlvIDlj5EK5Lu75YqhMu+8 +mkc15Li75pWw5o2u5a+55aSW5o6l5Y+j5byA5Y+R5ZKM5rWL6K+VCuW4uOinhOW3peS9nArml6Xl +uLjkuovliqEx77yaMjAyNS0wOS0xNSDkuLvmlbDmja7lr7nlpJbmjqXlj6PlvIDlj5Et5Lqn5ZOB +5a6i5oi35Lu355uu6KGoCuaXpeW4uOS6i+WKoTLvvJoyMDI1LTA5LTE2IOaWsOaWueahiOaUuemA +oOaJgOacieafpeivouaOpeWPoyDnianmlpnmjqXlj6PlvIDlj5HovazmtYsgCuaXpeW4uOS6i+WK +oTPvvJoyMDI1LTA5LTE3IArjgJDku5PlupPmqKHlnovjgJHmlrDlop4v57yW6L6RIOmAieaLqeW3 +peW6j+aXtu+8jOaUr+aMgeaMieW3peW6j+S7o+eggeWSjOW3peW6j+WQjeensOi/m+ihjOaQnOe0 +oiAK44CQ54mp5paZ5L+h5oGv44CR54mp5paZ5L+h5oGv5paw5aKe44CB57yW6L6R6aG16Z2i77yM +44CQ5pel5Lqn6IO944CB5pyJ5pWI5pyfKOWkqSnjgIHlpI3pqozmnJ8o5aSpKeOAkeWtl+auteWJ +jeerr+WinuWKoOmVv+W6pue6puadn++8myAK44CQ54mp5paZ5L+h5oGv44CR54mp5paZ5L+h5oGv +55qE5a+85Ye65pe25p+l6K+iIArnianmlpnkv6Hmga/kuI7ljZXkvY3mjaLnrpflkIzmraXlvIDl +j5HmlrnmoYjorr7orqHor4TlrqEK5pel5bi45LqL5YqhNO+8mjIwMjUtMDktMTgg54mp5paZ5L+h +5oGv5ZCM5q2l55Sf5oiQ5Y2V5L2N6L2s5o2i6ZyA5rGC5byA5Y+R6Ieq5rWL6L2s5rWLIOWklumD +qOaOpeWPo2J1Z+S/ruWkjSAK5pel5bi45LqL5YqhNO+8mjIwMjUtMDktMTkgCuS4u+aVsOaNruWv +ueWkluaOpeWPo+e7n+S4gOaWh+aho+e7n+S4gOe6puadnyAK57uG5YyW5a+55bqU5o6l5Y+j5paH +5qGjIArnu5/kuIDlpITnkIbmraPliJkg5Yy65YiG5LiOd2Vi5ZKM5a+85YWlIArovazmtYtidWfk +v67lpI0K5pel5bi45LqL5YqhNO+8mjIwMjUtMDktMjAgCuS4u+aVsOaNrueJqeaWmeaOpeWPo+a1 +i+ivleWujOaIkCwgCuWuouaIt+aOpeWPo+aWh+ahoyzoh6rmtYss6L2s5rWLIArkvpvlupTllYbm +jqXlj6PmlofmoaMs6Ieq5rWLLOi9rOa1iwrkuozjgIHkuIvlkajlt6XkvZzorqHliJIK6YeN54K5 +5Lu75YqhCuiuoeWIkjHvvJpHNeS4u+aVsOaNruWvueWkluaOpeWPo+W8gOWPkQrorqHliJIyOiA1 +LjIuMOeJiOacrOa1i+ivleWujOaIkArlpIfms6jvvJrml6AKQmVzdCByZWdhcmRzLOadqOi9qQrl +nLDlnYDvvJrkuK3lm73Ct+WNl+S6rOi9r+S7tuiwt+i9r+S7tuWkp+mBkyAxMSDlj7foirHnpZ7l +pKfljqYgMi0zRgrmiYvmnLrvvJoxODcyNjEyODQ4OQrpgq7nrrHvvJp5YW5neHVhbkB3aXRzb2Z0 +LmNu + +--=_mailmaster-6a18e4a4_0_72ae_= +Content-Type: text/html; charset="utf-8" +Content-Transfer-Encoding: base64 + +PGh0bWw+PGhlYWQ+PG1ldGEgaHR0cC1lcXVpdj0nQ29udGVudC1UeXBlJyBjb250ZW50PSd0ZXh0 +L2h0bWw7IGNoYXJzZXQ9VVRGLTgnPjwvaGVhZD48Ym9keSBzdHlsZT1saW5lLWhlaWdodDogMS41 +O2ZvbnQtZmFtaWx5OiAi5b6u6L2v6ZuF6buRIj48ZGl2ICBzdHlsZT0iZm9udC1mYW1pbHk6IOW+ +rui9r+mbhem7kTsiPjxkaXYgc3R5bGU9IiI+PGRpdiBzdHlsZT0iIj48ZGl2IHN0eWxlPSIiPjxw +IGNpZD0ibjAiIG1kdHlwZT0icGFyYWdyYXBoIiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLXAgbWQt +Zm9jdXMiIHN0eWxlPSJmb250LWZhbWlseTogJnF1b3Q7T3BlbiBTYW5zJnF1b3Q7LCAmcXVvdDtD +bGVhciBTYW5zJnF1b3Q7LCAmcXVvdDtIZWx2ZXRpY2EgTmV1ZSZxdW90OywgSGVsdmV0aWNhLCBB +cmlhbCwgc2Fucy1zZXJpZjsgYm94LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGlu +aGVyaXQ7IG9ycGhhbnM6IDQ7IG1hcmdpbjogMC44ZW0gMHB4OyB3aGl0ZS1zcGFjZTogcHJlLXdy +YXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsgY29sb3I6IHJnYig1MSwgNTEsIDUxKTsgZm9udC1zaXpl +OiAxNnB4OyI+PHNwYW4gbWQtaW5saW5lPSJwbGFpbiIgY2xhc3M9Im1kLXBsYWluIG1kLWV4cGFu +ZCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij7mgqjlpb3vvIHku6XkuIvmmK/miJHm +nKzlkajnmoTlt6XkvZzmgLvnu5Plj4rkuIvlkajorqHliJLvvIzor7flrqHpmIXjgII8L3NwYW4+ +PC9wPjxkaXYgdGFiaW5kZXg9Ii0xIiBjaWQ9Im4yIiBtZHR5cGU9ImhyIiBjbGFzcz0ibWQtaHIg +bWQtZW5kLWJsb2NrIiBzdHlsZT0iZm9udC1mYW1pbHk6ICZxdW90O09wZW4gU2FucyZxdW90Oywg +JnF1b3Q7Q2xlYXIgU2FucyZxdW90OywgJnF1b3Q7SGVsdmV0aWNhIE5ldWUmcXVvdDssIEhlbHZl +dGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7IGNvbG9yOiBy +Z2IoNTEsIDUxLCA1MSk7IGZvbnQtc2l6ZTogMTZweDsiPjxociBzdHlsZT0iYm94LXNpemluZzog +Y29udGVudC1ib3g7IGhlaWdodDogMnB4OyBtYXJnaW46IDE2cHggMHB4OyBib3JkZXI6IDBweCBu +b25lOyBwYWRkaW5nOiAwcHg7IGJhY2tncm91bmQtY29sb3I6IHJnYigyMzEsIDIzMSwgMjMxKTsi +PjwvZGl2PjxoMyBjaWQ9Im4zIiBtZHR5cGU9ImhlYWRpbmciIGNsYXNzPSJtZC1lbmQtYmxvY2sg +bWQtaGVhZGluZyIgc3R5bGU9ImZvbnQtZmFtaWx5OiAmcXVvdDtPcGVuIFNhbnMmcXVvdDssICZx +dW90O0NsZWFyIFNhbnMmcXVvdDssICZxdW90O0hlbHZldGljYSBOZXVlJnF1b3Q7LCBIZWx2ZXRp +Y2EsIEFyaWFsLCBzYW5zLXNlcmlmOyBib3gtc2l6aW5nOiBib3JkZXItYm94OyBicmVhay1hZnRl +cjogYXZvaWQtcGFnZTsgYnJlYWstaW5zaWRlOiBhdm9pZDsgb3JwaGFuczogNDsgZm9udC1zaXpl +OiAxLjVlbTsgbWFyZ2luLXRvcDogMXJlbTsgbWFyZ2luLWJvdHRvbTogMXJlbTsgcG9zaXRpb246 +IHJlbGF0aXZlOyBsaW5lLWhlaWdodDogMS40MzsgY3Vyc29yOiB0ZXh0OyB3aGl0ZS1zcGFjZTog +cHJlLXdyYXA7IGNvbG9yOiByZ2IoNTEsIDUxLCA1MSk7Ij48c3BhbiBtZC1pbmxpbmU9InN0cm9u +ZyIgY2xhc3M9Im1kLXBhaXItcyAiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+PHN0 +cm9uZyBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPjxzcGFuIG1kLWlubGluZT0icGxh +aW4iIGNsYXNzPSJtZC1wbGFpbiIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij7kuIDj +gIHmnKzlkajlt6XkvZzmgLvnu5M8L3NwYW4+PC9zdHJvbmc+PC9zcGFuPjwvaDM+PG9sIGNsYXNz +PSJvbC1saXN0IiBzdGFydD0iIiBjaWQ9Im40IiBtZHR5cGU9Imxpc3QiIHN0eWxlPSJmb250LWZh +bWlseTogJnF1b3Q7T3BlbiBTYW5zJnF1b3Q7LCAmcXVvdDtDbGVhciBTYW5zJnF1b3Q7LCAmcXVv +dDtIZWx2ZXRpY2EgTmV1ZSZxdW90OywgSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjsgYm94 +LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBhZGRpbmctbGVmdDogMzBweDsgcG9z +aXRpb246IHJlbGF0aXZlOyBjb2xvcjogcmdiKDUxLCA1MSwgNTEpOyBmb250LXNpemU6IDE2cHg7 +Ij48bGkgY2xhc3M9Im1kLWxpc3QtaXRlbSIgY2lkPSJuNSIgbWR0eXBlPSJsaXN0X2l0ZW0iIHN0 +eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcG9zaXRpb246IHJlbGF0 +aXZlOyI+PHAgY2lkPSJuNiIgbWR0eXBlPSJwYXJhZ3JhcGgiIGNsYXNzPSJtZC1lbmQtYmxvY2sg +bWQtcCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhlcml0 +OyBvcnBoYW5zOiA0OyBtYXJnaW46IDBweCAwcHggMC41cmVtOyB3aGl0ZS1zcGFjZTogcHJlLXdy +YXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxzcGFuIG1kLWlubGluZT0ic3Ryb25nIiBjbGFzcz0i +bWQtcGFpci1zICIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij48c3Ryb25nIHN0eWxl +PSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+PHNwYW4gbWQtaW5saW5lPSJwbGFpbiIgY2xhc3M9 +Im1kLXBsYWluIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPumHjeeCueW3peS9nOWu +jOaIkOaDheWGtTwvc3Bhbj48L3N0cm9uZz48L3NwYW4+PC9wPjwvbGk+PHVsIGNsYXNzPSJ1bC1s +aXN0IiBjaWQ9Im43IiBtZHR5cGU9Imxpc3QiIGRhdGEtbWFyaz0iLSIgc3R5bGU9ImJveC1zaXpp +bmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBwYWRkaW5nLWxlZnQ6IDMwcHg7IHBvc2l0aW9u +OiByZWxhdGl2ZTsiPjxsaSBjbGFzcz0ibWQtbGlzdC1pdGVtIiBjaWQ9Im44IiBtZHR5cGU9Imxp +c3RfaXRlbSIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBwb3Np +dGlvbjogcmVsYXRpdmU7Ij48cCBjaWQ9Im45IiBtZHR5cGU9InBhcmFncmFwaCIgY2xhc3M9Im1k +LWVuZC1ibG9jayBtZC1wIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1oZWln +aHQ6IGluaGVyaXQ7IG9ycGhhbnM6IDQ7IG1hcmdpbjogMHB4IDBweCAwLjVyZW07IHdoaXRlLXNw +YWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHNwYW4gbWQtaW5saW5lPSJwbGFp +biIgY2xhc3M9Im1kLXBsYWluIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPuS7u+WK +oTHvvJpHNeS4u+aVsOaNrjUuMi4w54mI5pys5byA5Y+RPC9zcGFuPjwvcD48L2xpPjxsaSBjbGFz +cz0ibWQtbGlzdC1pdGVtIiBjaWQ9Im4xMCIgbWR0eXBlPSJsaXN0X2l0ZW0iIHN0eWxlPSJib3gt +c2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHAg +Y2lkPSJuMTEiIG1kdHlwZT0icGFyYWdyYXBoIiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLXAiIHN0 +eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5oZXJpdDsgb3JwaGFu +czogNDsgbWFyZ2luOiAwcHggMHB4IDAuNXJlbTsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyBwb3Np +dGlvbjogcmVsYXRpdmU7Ij48c3BhbiBtZC1pbmxpbmU9InBsYWluIiBjbGFzcz0ibWQtcGxhaW4i +IHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+5Lu75YqhMu+8mjwvc3Bhbj5HNeS4u+aV +sOaNruWvueWkluaOpeWPo+W8gOWPkeWSjOa1i+ivlTwvcD48L2xpPjwvdWw+PGxpIGNsYXNzPSJt +ZC1saXN0LWl0ZW0iIGNpZD0ibjEyIiBtZHR5cGU9Imxpc3RfaXRlbSIgc3R5bGU9ImJveC1zaXpp +bmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48cCBjaWQ9 +Im4xMyIgbWR0eXBlPSJwYXJhZ3JhcGgiIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCIgc3R5bGU9 +ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhlcml0OyBvcnBoYW5zOiA0 +OyBtYXJnaW46IDBweCAwcHggMC41cmVtOyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0aW9u +OiByZWxhdGl2ZTsiPjxzcGFuIG1kLWlubGluZT0ic3Ryb25nIiBjbGFzcz0ibWQtcGFpci1zICIg +c3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij48c3Ryb25nIHN0eWxlPSJib3gtc2l6aW5n +OiBib3JkZXItYm94OyI+PHNwYW4gbWQtaW5saW5lPSJwbGFpbiIgY2xhc3M9Im1kLXBsYWluIiBz +dHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPuW4uOinhOW3peS9nDwvc3Bhbj48L3N0cm9u +Zz48L3NwYW4+PC9wPjwvbGk+PHVsIGNsYXNzPSJ1bC1saXN0IiBjaWQ9Im4xNCIgbWR0eXBlPSJs +aXN0IiBkYXRhLW1hcms9Ii0iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46 +IDBweDsgcGFkZGluZy1sZWZ0OiAzMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48bGkgY2xhc3M9 +Im1kLWxpc3QtaXRlbSIgY2lkPSJuMTUiIG1kdHlwZT0ibGlzdF9pdGVtIiBzdHlsZT0iYm94LXNp +emluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxwIGNp +ZD0ibjE2IiBtZHR5cGU9InBhcmFncmFwaCIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1wIiBzdHls +ZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IG9ycGhhbnM6 +IDQ7IG1hcmdpbjogMHB4IDBweCAwLjVyZW07IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRp +b246IHJlbGF0aXZlOyI+PHNwYW4gbWQtaW5saW5lPSJwbGFpbiIgY2xhc3M9Im1kLXBsYWluIiBz +dHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPuaXpeW4uOS6i+WKoTHvvJoyMDI1LTA5LTE1 +IOS4u+aVsOaNruWvueWkluaOpeWPo+W8gOWPkS3kuqflk4HlrqLmiLfku7fnm67ooag8L3NwYW4+ +PC9wPjwvbGk+PC91bD48L29sPjxvbCBjbGFzcz0ib2wtbGlzdCIgc3RhcnQ9IiIgY2lkPSJuNCIg +bWR0eXBlPSJsaXN0IiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7 +IHBhZGRpbmctbGVmdDogMzBweDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHVsIGNsYXNzPSJ1bC1s +aXN0IiBjaWQ9Im4xNCIgbWR0eXBlPSJsaXN0IiBkYXRhLW1hcms9Ii0iIHN0eWxlPSJmb250LWZh +bWlseTogJnF1b3Q7T3BlbiBTYW5zJnF1b3Q7LCAmcXVvdDtDbGVhciBTYW5zJnF1b3Q7LCAmcXVv +dDtIZWx2ZXRpY2EgTmV1ZSZxdW90OywgSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjsgY29s +b3I6IHJnYig1MSwgNTEsIDUxKTsgZm9udC1zaXplOiAxNnB4OyBib3gtc2l6aW5nOiBib3JkZXIt +Ym94OyBtYXJnaW46IDBweDsgcGFkZGluZy1sZWZ0OiAzMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7 +Ij48bGkgY2xhc3M9Im1kLWxpc3QtaXRlbSIgY2lkPSJuMTUiIG1kdHlwZT0ibGlzdF9pdGVtIiBz +dHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBvc2l0aW9uOiByZWxh +dGl2ZTsiPjxwIGNpZD0ibjE2IiBtZHR5cGU9InBhcmFncmFwaCIgY2xhc3M9Im1kLWVuZC1ibG9j +ayBtZC1wIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGluaGVy +aXQ7IG9ycGhhbnM6IDQ7IG1hcmdpbjogMHB4IDBweCAwLjVyZW07IHdoaXRlLXNwYWNlOiBwcmUt +d3JhcDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHNwYW4gbWQtaW5saW5lPSJwbGFpbiIgY2xhc3M9 +Im1kLXBsYWluIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPuaXpeW4uOS6i+WKoTLv +vJoyMDI1LTA5LTE2IOaWsOaWueahiOaUuemAoOaJgOacieafpeivouaOpeWPoyDnianmlpnmjqXl +j6PlvIDlj5HovazmtYsKPC9zcGFuPjwvcD48L2xpPjxsaSBjbGFzcz0ibWQtbGlzdC1pdGVtIiBj +aWQ9Im4xNyIgbWR0eXBlPSJsaXN0X2l0ZW0iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94 +OyBtYXJnaW46IDBweDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHAgY2lkPSJuMTgiIG1kdHlwZT0i +cGFyYWdyYXBoIiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLXAiIHN0eWxlPSJib3gtc2l6aW5nOiBi +b3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5oZXJpdDsgb3JwaGFuczogNDsgbWFyZ2luOiAwcHgg +MHB4IDAuNXJlbTsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48 +c3BhbiBtZC1pbmxpbmU9InBsYWluIiBjbGFzcz0ibWQtcGxhaW4iIHN0eWxlPSJib3gtc2l6aW5n +OiBib3JkZXItYm94OyI+5pel5bi45LqL5YqhM++8mjIwMjUtMDktMTcgPC9zcGFuPjwvcD48L2xp +Pjx1bCBzdHlsZT0ibGlzdC1zdHlsZS10eXBlOiBzcXVhcmU7Ij48bGkgY2xhc3M9Im1kLWxpc3Qt +aXRlbSIgY2lkPSJuMTciIG1kdHlwZT0ibGlzdF9pdGVtIiBzdHlsZT0iYm94LXNpemluZzogYm9y +ZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxwIGNpZD0ibjE4IiBt +ZHR5cGU9InBhcmFncmFwaCIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1wIiBzdHlsZT0iYm94LXNp +emluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IG9ycGhhbnM6IDQ7IG1hcmdp +bjogMHB4IDBweCAwLjVyZW07IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJlbGF0 +aXZlOyI+PHNwYW4gbWQtaW5saW5lPSJwbGFpbiIgY2xhc3M9Im1kLXBsYWluIiBzdHlsZT0iYm94 +LXNpemluZzogYm9yZGVyLWJveDsiPuOAkOS7k+W6k+aooeWei+OAkeaWsOWini/nvJbovpEg6YCJ +5oup5bel5bqP5pe277yM5pSv5oyB5oyJ5bel5bqP5Luj56CB5ZKM5bel5bqP5ZCN56ew6L+b6KGM +5pCc57SiCjwvc3Bhbj48L3A+PC9saT48bGkgY2xhc3M9Im1kLWxpc3QtaXRlbSIgY2lkPSJuMTci +IG1kdHlwZT0ibGlzdF9pdGVtIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2lu +OiAwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxwIGNpZD0ibjE4IiBtZHR5cGU9InBhcmFncmFw +aCIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1wIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJv +eDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IG9ycGhhbnM6IDQ7IG1hcmdpbjogMHB4IDBweCAwLjVy +ZW07IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHNwYW4gbWQt +aW5saW5lPSJwbGFpbiIgY2xhc3M9Im1kLXBsYWluIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVy +LWJveDsiPuOAkOeJqeaWmeS/oeaBr+OAkeeJqeaWmeS/oeaBr+aWsOWinuOAgee8lui+kemhtemd +ou+8jOOAkOaXpeS6p+iDveOAgeacieaViOacnyjlpKkp44CB5aSN6aqM5pyfKOWkqSnjgJHlrZfm +rrXliY3nq6/lop7liqDplb/luqbnuqbmnZ/vvJsKPC9zcGFuPjwvcD48L2xpPjxsaSBjbGFzcz0i +bWQtbGlzdC1pdGVtIiBjaWQ9Im4xNyIgbWR0eXBlPSJsaXN0X2l0ZW0iIHN0eWxlPSJib3gtc2l6 +aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHAgY2lk +PSJuMTgiIG1kdHlwZT0icGFyYWdyYXBoIiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLXAiIHN0eWxl +PSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5oZXJpdDsgb3JwaGFuczog +NDsgbWFyZ2luOiAwcHggMHB4IDAuNXJlbTsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyBwb3NpdGlv +bjogcmVsYXRpdmU7Ij48c3BhbiBtZC1pbmxpbmU9InBsYWluIiBjbGFzcz0ibWQtcGxhaW4iIHN0 +eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+44CQ54mp5paZ5L+h5oGv44CR54mp5paZ5L+h +5oGv55qE5a+85Ye65pe25p+l6K+iCjwvc3Bhbj48L3A+PC9saT48bGkgY2xhc3M9Im1kLWxpc3Qt +aXRlbSIgY2lkPSJuMTciIG1kdHlwZT0ibGlzdF9pdGVtIiBzdHlsZT0iYm94LXNpemluZzogYm9y +ZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxwIGNpZD0ibjE4IiBt +ZHR5cGU9InBhcmFncmFwaCIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1wIiBzdHlsZT0iYm94LXNp +emluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IG9ycGhhbnM6IDQ7IG1hcmdp +bjogMHB4IDBweCAwLjVyZW07IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJlbGF0 +aXZlOyI+PHNwYW4gbWQtaW5saW5lPSJwbGFpbiIgY2xhc3M9Im1kLXBsYWluIiBzdHlsZT0iYm94 +LXNpemluZzogYm9yZGVyLWJveDsiPiAg54mp5paZ5L+h5oGv5LiO5Y2V5L2N5o2i566X5ZCM5q2l +5byA5Y+R5pa55qGI6K6+6K6h6K+E5a6hPC9zcGFuPjwvcD48L2xpPjwvdWw+PGxpIGNsYXNzPSJt +ZC1saXN0LWl0ZW0iIGNpZD0ibjg0IiBtZHR5cGU9Imxpc3RfaXRlbSIgc3R5bGU9ImJveC1zaXpp +bmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48cCBjaWQ9 +Im44NSIgbWR0eXBlPSJwYXJhZ3JhcGgiIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCIgc3R5bGU9 +ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhlcml0OyBvcnBoYW5zOiA0 +OyBtYXJnaW46IDBweCAwcHggMC41cmVtOyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0aW9u +OiByZWxhdGl2ZTsiPjxzcGFuIG1kLWlubGluZT0icGxhaW4iIGNsYXNzPSJtZC1wbGFpbiIgc3R5 +bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij7ml6XluLjkuovliqE077yaMjAyNS0wOS0xOCDn +ianmlpnkv6Hmga/lkIzmraXnlJ/miJDljZXkvY3ovazmjaLpnIDmsYLlvIDlj5Hoh6rmtYvovazm +tYsg5aSW6YOo5o6l5Y+jYnVn5L+u5aSNCjwvc3Bhbj48L3A+PC9saT48bGkgY2xhc3M9Im1kLWxp +c3QtaXRlbSIgY2lkPSJuODQiIG1kdHlwZT0ibGlzdF9pdGVtIiBzdHlsZT0iYm94LXNpemluZzog +Ym9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxwIGNpZD0ibjg1 +IiBtZHR5cGU9InBhcmFncmFwaCIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1wIiBzdHlsZT0iYm94 +LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IG9ycGhhbnM6IDQ7IG1h +cmdpbjogMHB4IDBweCAwLjVyZW07IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJl +bGF0aXZlOyI+PHNwYW4gbWQtaW5saW5lPSJwbGFpbiIgY2xhc3M9Im1kLXBsYWluIiBzdHlsZT0i +Ym94LXNpemluZzogYm9yZGVyLWJveDsiPuaXpeW4uOS6i+WKoTTvvJoyMDI1LTA5LTE5IDwvc3Bh +bj48L3A+PC9saT48dWwgc3R5bGU9Imxpc3Qtc3R5bGUtdHlwZTogc3F1YXJlOyI+PGxpIGNsYXNz +PSJtZC1saXN0LWl0ZW0iIGNpZD0ibjg0IiBtZHR5cGU9Imxpc3RfaXRlbSIgc3R5bGU9ImJveC1z +aXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48cCBj +aWQ9Im44NSIgbWR0eXBlPSJwYXJhZ3JhcGgiIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCIgc3R5 +bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhlcml0OyBvcnBoYW5z +OiA0OyBtYXJnaW46IDBweCAwcHggMC41cmVtOyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0 +aW9uOiByZWxhdGl2ZTsiPjxzcGFuIG1kLWlubGluZT0icGxhaW4iIGNsYXNzPSJtZC1wbGFpbiIg +c3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij7kuLvmlbDmja7lr7nlpJbmjqXlj6Pnu5/k +uIDmlofmoaPnu5/kuIDnuqbmnZ8KPC9zcGFuPjwvcD48L2xpPjxsaSBjbGFzcz0ibWQtbGlzdC1p +dGVtIiBjaWQ9Im44NCIgbWR0eXBlPSJsaXN0X2l0ZW0iIHN0eWxlPSJib3gtc2l6aW5nOiBib3Jk +ZXItYm94OyBtYXJnaW46IDBweDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHAgY2lkPSJuODUiIG1k +dHlwZT0icGFyYWdyYXBoIiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLXAiIHN0eWxlPSJib3gtc2l6 +aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5oZXJpdDsgb3JwaGFuczogNDsgbWFyZ2lu +OiAwcHggMHB4IDAuNXJlbTsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyBwb3NpdGlvbjogcmVsYXRp +dmU7Ij48c3BhbiBtZC1pbmxpbmU9InBsYWluIiBjbGFzcz0ibWQtcGxhaW4iIHN0eWxlPSJib3gt +c2l6aW5nOiBib3JkZXItYm94OyI+57uG5YyW5a+55bqU5o6l5Y+j5paH5qGjCjwvc3Bhbj48L3A+ +PC9saT48bGkgY2xhc3M9Im1kLWxpc3QtaXRlbSIgY2lkPSJuODQiIG1kdHlwZT0ibGlzdF9pdGVt +IiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBvc2l0aW9uOiBy +ZWxhdGl2ZTsiPjxwIGNpZD0ibjg1IiBtZHR5cGU9InBhcmFncmFwaCIgY2xhc3M9Im1kLWVuZC1i +bG9jayBtZC1wIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGlu +aGVyaXQ7IG9ycGhhbnM6IDQ7IG1hcmdpbjogMHB4IDBweCAwLjVyZW07IHdoaXRlLXNwYWNlOiBw +cmUtd3JhcDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHNwYW4gbWQtaW5saW5lPSJwbGFpbiIgY2xh +c3M9Im1kLXBsYWluIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPue7n+S4gOWkhOeQ +huato+WImSDljLrliIbkuI53ZWLlkozlr7zlhaUKPC9zcGFuPjwvcD48L2xpPjxsaSBjbGFzcz0i +bWQtbGlzdC1pdGVtIiBjaWQ9Im44NCIgbWR0eXBlPSJsaXN0X2l0ZW0iIHN0eWxlPSJib3gtc2l6 +aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHAgY2lk +PSJuODUiIG1kdHlwZT0icGFyYWdyYXBoIiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLXAiIHN0eWxl +PSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5oZXJpdDsgb3JwaGFuczog +NDsgbWFyZ2luOiAwcHggMHB4IDAuNXJlbTsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyBwb3NpdGlv +bjogcmVsYXRpdmU7Ij48c3BhbiBtZC1pbmxpbmU9InBsYWluIiBjbGFzcz0ibWQtcGxhaW4iIHN0 +eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+6L2s5rWLYnVn5L+u5aSNPC9zcGFuPjwvcD48 +L2xpPjwvdWw+PGxpIGNsYXNzPSJtZC1saXN0LWl0ZW0iIGNpZD0ibjkxIiBtZHR5cGU9Imxpc3Rf +aXRlbSIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBwb3NpdGlv +bjogcmVsYXRpdmU7Ij48cCBjaWQ9Im44OSIgbWR0eXBlPSJwYXJhZ3JhcGgiIGNsYXNzPSJtZC1l +bmQtYmxvY2sgbWQtcCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGxpbmUtaGVpZ2h0 +OiBpbmhlcml0OyBvcnBoYW5zOiA0OyBtYXJnaW46IDBweCAwcHggMC41cmVtOyB3aGl0ZS1zcGFj +ZTogcHJlLXdyYXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPuaXpeW4uOS6i+WKoTTvvJoyMDI1LTA5 +LTIwIDwvcD48L2xpPjx1bCBzdHlsZT0ibGlzdC1zdHlsZS10eXBlOiBzcXVhcmU7Ij48bGkgY2xh +c3M9Im1kLWxpc3QtaXRlbSIgY2lkPSJuOTEiIG1kdHlwZT0ibGlzdF9pdGVtIiBzdHlsZT0iYm94 +LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxw +IGNpZD0ibjg5IiBtZHR5cGU9InBhcmFncmFwaCIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1wIiBz +dHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IG9ycGhh +bnM6IDQ7IG1hcmdpbjogMHB4IDBweCAwLjVyZW07IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9z +aXRpb246IHJlbGF0aXZlOyI+5Li75pWw5o2u54mp5paZ5o6l5Y+j5rWL6K+V5a6M5oiQLAo8L3A+ +PC9saT48bGkgY2xhc3M9Im1kLWxpc3QtaXRlbSIgY2lkPSJuOTEiIG1kdHlwZT0ibGlzdF9pdGVt +IiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBvc2l0aW9uOiBy +ZWxhdGl2ZTsiPjxwIGNpZD0ibjg5IiBtZHR5cGU9InBhcmFncmFwaCIgY2xhc3M9Im1kLWVuZC1i +bG9jayBtZC1wIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGlu +aGVyaXQ7IG9ycGhhbnM6IDQ7IG1hcmdpbjogMHB4IDBweCAwLjVyZW07IHdoaXRlLXNwYWNlOiBw +cmUtd3JhcDsgcG9zaXRpb246IHJlbGF0aXZlOyI+5a6i5oi35o6l5Y+j5paH5qGjLOiHqua1iyzo +vazmtYsKPC9wPjwvbGk+PGxpIGNsYXNzPSJtZC1saXN0LWl0ZW0iIGNpZD0ibjkxIiBtZHR5cGU9 +Imxpc3RfaXRlbSIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBw +b3NpdGlvbjogcmVsYXRpdmU7Ij48cCBjaWQ9Im44OSIgbWR0eXBlPSJwYXJhZ3JhcGgiIGNsYXNz +PSJtZC1lbmQtYmxvY2sgbWQtcCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGxpbmUt +aGVpZ2h0OiBpbmhlcml0OyBvcnBoYW5zOiA0OyBtYXJnaW46IDBweCAwcHggMC41cmVtOyB3aGl0 +ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPuS+m+W6lOWVhuaOpeWPo+aW +h+ahoyzoh6rmtYss6L2s5rWLPC9wPjwvbGk+PC91bD48L3VsPjwvb2w+PGgzIGNpZD0ibjI1IiBt +ZHR5cGU9ImhlYWRpbmciIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtaGVhZGluZyIgc3R5bGU9ImZv +bnQtZmFtaWx5OiAmcXVvdDtPcGVuIFNhbnMmcXVvdDssICZxdW90O0NsZWFyIFNhbnMmcXVvdDss +ICZxdW90O0hlbHZldGljYSBOZXVlJnF1b3Q7LCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlm +OyBib3gtc2l6aW5nOiBib3JkZXItYm94OyBicmVhay1hZnRlcjogYXZvaWQtcGFnZTsgYnJlYWst +aW5zaWRlOiBhdm9pZDsgb3JwaGFuczogNDsgZm9udC1zaXplOiAxLjVlbTsgbWFyZ2luLXRvcDog +MXJlbTsgbWFyZ2luLWJvdHRvbTogMXJlbTsgcG9zaXRpb246IHJlbGF0aXZlOyBsaW5lLWhlaWdo +dDogMS40MzsgY3Vyc29yOiB0ZXh0OyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IGNvbG9yOiByZ2Io +NTEsIDUxLCA1MSk7Ij48c3BhbiBtZC1pbmxpbmU9InN0cm9uZyIgY2xhc3M9Im1kLXBhaXItcyAi +IHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+PHN0cm9uZyBzdHlsZT0iYm94LXNpemlu +ZzogYm9yZGVyLWJveDsiPjxzcGFuIG1kLWlubGluZT0icGxhaW4iIGNsYXNzPSJtZC1wbGFpbiIg +c3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij7kuozjgIHkuIvlkajlt6XkvZzorqHliJI8 +L3NwYW4+PC9zdHJvbmc+PC9zcGFuPjwvaDM+PG9sIGNsYXNzPSJvbC1saXN0IiBzdGFydD0iIiBj +aWQ9Im4yNiIgbWR0eXBlPSJsaXN0IiBzdHlsZT0iZm9udC1mYW1pbHk6IOW+rui9r+mbhem7kTsg +Ym94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBhZGRpbmctbGVmdDogMzBweDsg +cG9zaXRpb246IHJlbGF0aXZlOyI+PGxpIGNsYXNzPSJtZC1saXN0LWl0ZW0iIGNpZD0ibjI3IiBt +ZHR5cGU9Imxpc3RfaXRlbSIgc3R5bGU9ImNvbG9yOiByZ2IoNTEsIDUxLCA1MSk7IGZvbnQtZmFt +aWx5OiAmcXVvdDtPcGVuIFNhbnMmcXVvdDssICZxdW90O0NsZWFyIFNhbnMmcXVvdDssICZxdW90 +O0hlbHZldGljYSBOZXVlJnF1b3Q7LCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmOyBmb250 +LXNpemU6IDE2cHg7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBwb3NpdGlv +bjogcmVsYXRpdmU7Ij48cCBjaWQ9Im4yOCIgbWR0eXBlPSJwYXJhZ3JhcGgiIGNsYXNzPSJtZC1l +bmQtYmxvY2sgbWQtcCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGxpbmUtaGVpZ2h0 +OiBpbmhlcml0OyBvcnBoYW5zOiA0OyBtYXJnaW46IDBweCAwcHggMC41cmVtOyB3aGl0ZS1zcGFj +ZTogcHJlLXdyYXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxzcGFuIG1kLWlubGluZT0ic3Ryb25n +IiBjbGFzcz0ibWQtcGFpci1zICIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij48c3Ry +b25nIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+PHNwYW4gbWQtaW5saW5lPSJwbGFp +biIgY2xhc3M9Im1kLXBsYWluIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPumHjeeC +ueS7u+WKoTwvc3Bhbj48L3N0cm9uZz48L3NwYW4+PC9wPjwvbGk+PHVsIGNsYXNzPSJ1bC1saXN0 +IiBjaWQ9Im4yOSIgbWR0eXBlPSJsaXN0IiBkYXRhLW1hcms9Ii0iIHN0eWxlPSJjb2xvcjogcmdi +KDUxLCA1MSwgNTEpOyBmb250LWZhbWlseTogJnF1b3Q7T3BlbiBTYW5zJnF1b3Q7LCAmcXVvdDtD +bGVhciBTYW5zJnF1b3Q7LCAmcXVvdDtIZWx2ZXRpY2EgTmV1ZSZxdW90OywgSGVsdmV0aWNhLCBB +cmlhbCwgc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxNnB4OyBib3gtc2l6aW5nOiBib3JkZXItYm94 +OyBtYXJnaW46IDBweDsgcGFkZGluZy1sZWZ0OiAzMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48 +bGkgY2xhc3M9Im1kLWxpc3QtaXRlbSIgY2lkPSJuMzAiIG1kdHlwZT0ibGlzdF9pdGVtIiBzdHls +ZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBvc2l0aW9uOiByZWxhdGl2 +ZTsiPjxwIGNpZD0ibjMxIiBtZHR5cGU9InBhcmFncmFwaCIgY2xhc3M9Im1kLWVuZC1ibG9jayBt +ZC1wIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7 +IG9ycGhhbnM6IDQ7IG1hcmdpbjogMHB4IDBweCAwLjVyZW07IHdoaXRlLXNwYWNlOiBwcmUtd3Jh +cDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHNwYW4gbWQtaW5saW5lPSJwbGFpbiIgY2xhc3M9Im1k +LXBsYWluIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPuiuoeWIkjHvvJpHNeS4u+aV +sOaNruWvueWkluaOpeWPo+W8gOWPkTwvc3Bhbj48L3A+PC9saT48bGkgY2xhc3M9Im1kLWxpc3Qt +aXRlbSIgY2lkPSJuMzAiIG1kdHlwZT0ibGlzdF9pdGVtIiBzdHlsZT0iYm94LXNpemluZzogYm9y +ZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxwIGNpZD0ibjMxIiBt +ZHR5cGU9InBhcmFncmFwaCIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1wIiBzdHlsZT0iYm94LXNp +emluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IG9ycGhhbnM6IDQ7IG1hcmdp +bjogMHB4IDBweCAwLjVyZW07IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJlbGF0 +aXZlOyI+6K6h5YiSMjogIDUuMi4w54mI5pys5rWL6K+V5a6M5oiQPC9wPjwvbGk+PC91bD48L29s +PjxkaXYgdGFiaW5kZXg9Ii0xIiBjaWQ9Im4zOSIgbWR0eXBlPSJociIgY2xhc3M9Im1kLWhyIG1k +LWVuZC1ibG9jayIgc3R5bGU9ImZvbnQtZmFtaWx5OiAmcXVvdDtPcGVuIFNhbnMmcXVvdDssICZx +dW90O0NsZWFyIFNhbnMmcXVvdDssICZxdW90O0hlbHZldGljYSBOZXVlJnF1b3Q7LCBIZWx2ZXRp +Y2EsIEFyaWFsLCBzYW5zLXNlcmlmOyBib3gtc2l6aW5nOiBib3JkZXItYm94OyBjb2xvcjogcmdi +KDUxLCA1MSwgNTEpOyBmb250LXNpemU6IDE2cHg7Ij48aHIgc3R5bGU9ImJveC1zaXppbmc6IGNv +bnRlbnQtYm94OyBoZWlnaHQ6IDJweDsgbWFyZ2luOiAxNnB4IDBweDsgYm9yZGVyOiAwcHggbm9u +ZTsgcGFkZGluZzogMHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjMxLCAyMzEsIDIzMSk7Ij48 +L2Rpdj48cCBjaWQ9Im40MCIgbWR0eXBlPSJwYXJhZ3JhcGgiIGNsYXNzPSJtZC1lbmQtYmxvY2sg +bWQtcCIgc3R5bGU9ImZvbnQtZmFtaWx5OiAmcXVvdDtPcGVuIFNhbnMmcXVvdDssICZxdW90O0Ns +ZWFyIFNhbnMmcXVvdDssICZxdW90O0hlbHZldGljYSBOZXVlJnF1b3Q7LCBIZWx2ZXRpY2EsIEFy +aWFsLCBzYW5zLXNlcmlmOyBib3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5o +ZXJpdDsgb3JwaGFuczogNDsgbWFyZ2luOiAwLjhlbSAwcHg7IHdoaXRlLXNwYWNlOiBwcmUtd3Jh +cDsgcG9zaXRpb246IHJlbGF0aXZlOyBjb2xvcjogcmdiKDUxLCA1MSwgNTEpOyBmb250LXNpemU6 +IDE2cHg7Ij48c3BhbiBtZC1pbmxpbmU9InN0cm9uZyIgY2xhc3M9Im1kLXBhaXItcyAiIHN0eWxl +PSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+PHN0cm9uZyBzdHlsZT0iYm94LXNpemluZzogYm9y +ZGVyLWJveDsiPjxzcGFuIG1kLWlubGluZT0icGxhaW4iIGNsYXNzPSJtZC1wbGFpbiIgc3R5bGU9 +ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij7lpIfms6g8L3NwYW4+PC9zdHJvbmc+PC9zcGFuPjxz +cGFuIG1kLWlubGluZT0icGxhaW4iIGNsYXNzPSJtZC1wbGFpbiBtZC1leHBhbmQiIHN0eWxlPSJi +b3gtc2l6aW5nOiBib3JkZXItYm94OyI+77ya5pegPC9zcGFuPjwvcD48L2Rpdj48ZGl2IHN0eWxl +PSJmb250LWZhbWlseTog5b6u6L2v6ZuF6buROyI+PGJyPjwvZGl2PjxkaXYgc3BlbGxjaGVjaz0i +ZmFsc2UiIGlkPSJudGVzLXBjbWFjLXNpZ25hdHVyZSIgc3R5bGU9ImZvbnQtZmFtaWx5OiDlvq7o +va/pm4Xpu5E7IiBkYXRhLW50ZXMtc2lnbmF0dXJlPSJ0cnVlIj48ZGl2IHN0eWxlPSJmb250LXNp +emU6MTRweDtwYWRkaW5nOjA7bWFyZ2luOjAiPjxkaXYgc3R5bGU9InBhZGRpbmctYm90dG9tOjEw +cHg7bWFyZ2luLWJvdHRvbToxMHB4O2Rpc3BsYXk6aW5saW5lLWJsb2NrIj48ZGl2IHN0eWxlPSJm +b250LWZhbWlseTomcXVvdDvlvq7ova/pm4Xpu5EmcXVvdDs7IGZvbnQtc2l6ZTogMTRweDsgY29s +b3I6IzAwMDAwMCI+CiAgICA8c3R5bGU+CiAgICAgICAgZm9udHsKICAgICAgICAgICAgbGluZS1o +ZWlnaHQ6IDEuNjsKICAgICAgICB9CiAgICA8L3N0eWxlPgo8ZGl2IHN0eWxlPSJmb250LWZhbWls +eTomcXVvdDvlvq7ova/pm4Xpu5EmcXVvdDs7IGZvbnQtc2l6ZTogMTRweDsgY29sb3I6IzAwMDAw +MCI+CiAgICA8c3R5bGU+CiAgICAgICAgZm9udHsKICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDEu +NjsKICAgICAgICB9CiAgICA8L3N0eWxlPgo8ZGl2IHN0eWxlPSJmb250LWZhbWlseTomcXVvdDvl +vq7ova/pm4Xpu5EmcXVvdDs7IGZvbnQtc2l6ZTogMTRweDsgY29sb3I6IzAwMDAwMCI+CiAgICA8 +c3R5bGU+CiAgICAgICAgZm9udHsKICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDEuNjsKICAgICAg +ICB9CiAgICA8L3N0eWxlPgo8ZGl2IHN0eWxlPSJmb250LWZhbWlseTomcXVvdDvlvq7ova/pm4Xp +u5EmcXVvdDs7IGZvbnQtc2l6ZTogMTRweDsgY29sb3I6IzAwMDAwMCI+CiAgICA8c3R5bGU+CiAg +ICAgICAgZm9udHsKICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDEuNjsKICAgICAgICB9CiAgICA8 +L3N0eWxlPgo8c3BhbiBzdHlsZT0iY29sb3I6IHJnYigxOTEsIDE5MSwgMTkxKTsgZm9udC1mYW1p +bHk6ICdNaWNyb3NvZnQgWWFoZWknOyBmb250LXNpemU6IDEzcHg7IG9ycGhhbnM6IDI7IHdpZG93 +czogMjsiPkJlc3QgcmVnYXJkcyw8L3NwYW4+PGRpdiBzdHlsZT0ibWFyZ2luOiAwcHg7IHBhZGRp +bmc6IDBweDsgYm9yZGVyOiAwcHg7IG91dGxpbmU6IDBweDsgZm9udC1mYW1pbHk6IFRhaG9tYSwg +QXJpYWwsIFNUSGVpdGksIFNpbVN1bjsgZm9udC12YXJpYW50LWxpZ2F0dXJlczogbm9ybWFsOyBv +cnBoYW5zOiAyOyB3aWRvd3M6IDI7IGNsZWFyOiBib3RoOyI+PHNwYW4gc3R5bGU9Im1hcmdpbjog +MHB4OyBwYWRkaW5nOiAwcHg7IGJvcmRlcjogMHB4OyBvdXRsaW5lOiAwcHg7IGZvbnQtZmFtaWx5 +OiAmcXVvdDtNaWNyb3NvZnQgWWFoZWkmcXVvdDs7IGZvbnQtc2l6ZTogMTNweDsgY29sb3I6IHJn +YigxOTEsIDE5MSwgMTkxKTsiPuadqOi9qTwvc3Bhbj48L2Rpdj48ZGl2IHN0eWxlPSJtYXJnaW46 +IDBweDsgcGFkZGluZzogMHB4OyBib3JkZXI6IDBweDsgb3V0bGluZTogMHB4OyBmb250LWZhbWls +eTogVGFob21hLCBBcmlhbCwgU1RIZWl0aSwgU2ltU3VuOyBmb250LXZhcmlhbnQtbGlnYXR1cmVz +OiBub3JtYWw7IG9ycGhhbnM6IDI7IHdpZG93czogMjsgY2xlYXI6IGJvdGg7Ij48L2Rpdj48ZGl2 +IHN0eWxlPSJtYXJnaW46IDBweDsgcGFkZGluZzogMHB4OyBib3JkZXI6IDBweDsgb3V0bGluZTog +MHB4OyBmb250LWZhbWlseTogVGFob21hLCBBcmlhbCwgU1RIZWl0aSwgU2ltU3VuOyBmb250LXZh +cmlhbnQtbGlnYXR1cmVzOiBub3JtYWw7IG9ycGhhbnM6IDI7IHdpZG93czogMjsgY2xlYXI6IGJv +dGg7Ij48aW1nIHN0eWxlPSJtYXgtd2lkdGg6IHVuc2V0OyIgc3JjPSJodHRwczovL21haWwtb25s +aW5lLm5vc2RuLjEyNy5uZXQvd3pwbW1jL2NlOWY4YjM2ZTFmZmJlNTUzMjljMTk2Yzg0ZmU1MTk3 +LnBuZyI+PC9kaXY+PGRpdiBzdHlsZT0ibWFyZ2luOiAwcHg7IHBhZGRpbmc6IDBweDsgYm9yZGVy +OiAwcHg7IG91dGxpbmU6IDBweDsgZm9udC1mYW1pbHk6IFRhaG9tYSwgQXJpYWwsIFNUSGVpdGks +IFNpbVN1bjsgZm9udC12YXJpYW50LWxpZ2F0dXJlczogbm9ybWFsOyBvcnBoYW5zOiAyOyB3aWRv +d3M6IDI7IGNsZWFyOiBib3RoOyI+PHNwYW4gc3R5bGU9Im1hcmdpbjogMHB4OyBwYWRkaW5nOiAw +cHg7IGJvcmRlcjogMHB4OyBvdXRsaW5lOiAwcHg7IGZvbnQtZmFtaWx5OiAmcXVvdDtNaWNyb3Nv +ZnQgWWFoZWkmcXVvdDs7IGNvbG9yOiByZ2IoMTkxLCAxOTEsIDE5MSk7Ij7lnLDlnYDvvJrkuK3l +m73Ct+WNl+S6rOi9r+S7tuiwt+i9r+S7tuWkp+mBkyAxMSDlj7foirHnpZ7lpKfljqYgMi0zRjwv +c3Bhbj48L2Rpdj48ZGl2IHN0eWxlPSJtYXJnaW46IDBweDsgcGFkZGluZzogMHB4OyBib3JkZXI6 +IDBweDsgb3V0bGluZTogMHB4OyBmb250LWZhbWlseTogVGFob21hLCBBcmlhbCwgU1RIZWl0aSwg +U2ltU3VuOyBmb250LXZhcmlhbnQtbGlnYXR1cmVzOiBub3JtYWw7IG9ycGhhbnM6IDI7IHdpZG93 +czogMjsgY2xlYXI6IGJvdGg7Ij48c3BhbiBzdHlsZT0ibWFyZ2luOiAwcHg7IHBhZGRpbmc6IDBw +eDsgYm9yZGVyOiAwcHg7IG91dGxpbmU6IDBweDsgZm9udC1mYW1pbHk6ICZxdW90O01pY3Jvc29m +dCBZYWhlaSZxdW90OzsgY29sb3I6IHJnYigxOTEsIDE5MSwgMTkxKTsiPuaJi+acuu+8mjE4NzI2 +MTI4NDg5PC9zcGFuPjwvZGl2PjxkaXYgc3R5bGU9Im1hcmdpbjogMHB4OyBwYWRkaW5nOiAwcHg7 +IGJvcmRlcjogMHB4OyBvdXRsaW5lOiAwcHg7IGZvbnQtZmFtaWx5OiBUYWhvbWEsIEFyaWFsLCBT +VEhlaXRpLCBTaW1TdW47IGZvbnQtdmFyaWFudC1saWdhdHVyZXM6IG5vcm1hbDsgb3JwaGFuczog +Mjsgd2lkb3dzOiAyOyBjbGVhcjogYm90aDsiPjxzcGFuIHN0eWxlPSJtYXJnaW46IDBweDsgcGFk +ZGluZzogMHB4OyBib3JkZXI6IDBweDsgb3V0bGluZTogMHB4OyBmb250LWZhbWlseTogJnF1b3Q7 +TWljcm9zb2Z0IFlhaGVpJnF1b3Q7OyBjb2xvcjogcmdiKDE5MSwgMTkxLCAxOTEpOyI+6YKu566x +77yaeWFuZ3h1YW5Ad2l0c29mdC5jbjwvc3Bhbj48L2Rpdj4KPC9kaXY+CjwvZGl2Pgo8L2Rpdj4K +PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PCEtLfCfmIAtLT48L2Rpdj48L2Rpdj48L2Jv +ZHk+PC9odG1sPg== + +--=_mailmaster-6a18e4a4_0_72ae_=-- diff --git a/media/inbound/2025-09-26_1730_G5开发周报_2025-09-22_--_2025-09-26---4c0b02f0-db8d-4d0c-b061-1bb90c225ecc.eml b/media/inbound/2025-09-26_1730_G5开发周报_2025-09-22_--_2025-09-26---4c0b02f0-db8d-4d0c-b061-1bb90c225ecc.eml new file mode 100644 index 0000000..e14b867 --- /dev/null +++ b/media/inbound/2025-09-26_1730_G5开发周报_2025-09-22_--_2025-09-26---4c0b02f0-db8d-4d0c-b061-1bb90c225ecc.eml @@ -0,0 +1,296 @@ +Date: Fri, 26 Sep 2025 17:30:03 +0800 +From: yangxuan +To: =?utf-8?B?5YiY5by6?= +Cc: =?utf-8?B?5bGI5paw6b6Z?= , =?utf-8?B?5pyx5paM?= + , =?utf-8?B?6ZmI5piO?= , + =?utf-8?Q?xym=40witsoft.cn?= +Message-ID: +Subject: =?utf-8?B?RzXlvIDlj5HlkajmiqXjgJAyMDI1LTA5LTIyIC0tICAyMDI1LTA5?= + =?utf-8?B?LTI244CR?= +MIME-Version: 1.0 +Content-Type: multipart/alternative; boundary="=_mailmaster-6a18e4a4_0_6952_=" + +--=_mailmaster-6a18e4a4_0_6952_= +Content-Type: text/plain; charset="utf-8" +Content-Transfer-Encoding: base64 + +5oKo5aW977yB5Lul5LiL5piv5oiR5pys5ZGo55qE5bel5L2c5oC757uT5Y+K5LiL5ZGo6K6h5YiS +77yM6K+35a6h6ZiF44CCCuS4gOOAgeacrOWRqOW3peS9nOaAu+e7kwrph43ngrnlt6XkvZzlrozm +iJDmg4XlhrUK5Lu75YqhMe+8mkc15Li75pWw5o2uNS4yLjDniYjmnKzlvIDlj5HmtYvor5Xnu5Pm +nZ8K5Lu75YqhMu+8mkc15Li75pWw5o2u5a+55aSW5o6l5Y+j5byA5Y+R5ZKM5rWL6K+VCuW4uOin +hOW3peS9nArml6XluLjkuovliqEx77yaMjAyNS0wOS0yMiDovazmtYtidWfkv67lpI0sQk9N5o6l +5Y+j5byA5Y+RCuaXpeW4uOS6i+WKoTLvvJoyMDI1LTA5LTIzIOa1i+ivlWJ1Z+S/ruWkjSAK5pel +5bi45LqL5YqhM++8mjIwMjUtMDktMjQK6ZyA5rGC5rWL6K+V5a6M5q+VIArmjqXlj6PmtYvor5Vi +dWfkv64K5pel5bi45LqL5YqhNO+8mjIwMjUtMDktMjUg5a6i5oi35o6l5Y+j5rWL6K+V5a6M5q+V +LOS+m+W6lOWVhuaOpeWPo+a1i+ivlSAK5pel5bi45LqL5YqhNe+8mjIwMjUtMDktMjYg57O757uf +Qk9N5ZKM54mp5paZ5riF5Y2V5YiG5p6Q5LiO5a+55aSW5o6l5Y+j5byA5Y+R5pa55qGI6K6+6K6h +6K+E5a6hCuS6jOOAgeS4i+WRqOW3peS9nOiuoeWIkgrph43ngrnku7vliqEK6K6h5YiSMe+8mkc1 +5Li75pWw5o2u5a+55aSW5o6l5Y+j5byA5Y+RCuiuoeWIkjI6IDUuMi4x54mI5pys5byA5Y+RCuWk +h+azqO+8muaXoApCZXN0IHJlZ2FyZHMs5p2o6L2pCuWcsOWdgO+8muS4reWbvcK35Y2X5Lqs6L2v +5Lu26LC36L2v5Lu25aSn6YGTIDExIOWPt+iKseelnuWkp+WOpiAyLTNGCuaJi+acuu+8mjE4NzI2 +MTI4NDg5CumCrueuse+8mnlhbmd4dWFuQHdpdHNvZnQuY24= + +--=_mailmaster-6a18e4a4_0_6952_= +Content-Type: text/html; charset="utf-8" +Content-Transfer-Encoding: base64 + +PGh0bWw+PGhlYWQ+PG1ldGEgaHR0cC1lcXVpdj0nQ29udGVudC1UeXBlJyBjb250ZW50PSd0ZXh0 +L2h0bWw7IGNoYXJzZXQ9VVRGLTgnPjwvaGVhZD48Ym9keSBzdHlsZT1saW5lLWhlaWdodDogMS41 +O2ZvbnQtZmFtaWx5OiAi5b6u6L2v6ZuF6buRIj48ZGl2ICBzdHlsZT0iZm9udC1mYW1pbHk6IOW+ +rui9r+mbhem7kTsiPjxkaXYgc3R5bGU9ImZvbnQtZmFtaWx5OiDlvq7ova/pm4Xpu5E7Ij48ZGl2 +IHN0eWxlPSIiPjxkaXYgc3R5bGU9IiI+PHAgY2lkPSJuMCIgbWR0eXBlPSJwYXJhZ3JhcGgiIGNs +YXNzPSJtZC1lbmQtYmxvY2sgbWQtcCBtZC1mb2N1cyIgc3R5bGU9ImZvbnQtZmFtaWx5OiAmcXVv +dDtPcGVuIFNhbnMmcXVvdDssICZxdW90O0NsZWFyIFNhbnMmcXVvdDssICZxdW90O0hlbHZldGlj +YSBOZXVlJnF1b3Q7LCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmOyBib3gtc2l6aW5nOiBi +b3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5oZXJpdDsgb3JwaGFuczogNDsgbWFyZ2luOiAwLjhl +bSAwcHg7IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJlbGF0aXZlOyBjb2xvcjog +cmdiKDUxLCA1MSwgNTEpOyBmb250LXNpemU6IDE2cHg7Ij48c3BhbiBtZC1pbmxpbmU9InBsYWlu +IiBjbGFzcz0ibWQtcGxhaW4gbWQtZXhwYW5kIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJv +eDsiPuaCqOWlve+8geS7peS4i+aYr+aIkeacrOWRqOeahOW3peS9nOaAu+e7k+WPiuS4i+WRqOiu +oeWIku+8jOivt+WuoemYheOAgjwvc3Bhbj48L3A+PGRpdiB0YWJpbmRleD0iLTEiIGNpZD0ibjIi +IG1kdHlwZT0iaHIiIGNsYXNzPSJtZC1ociBtZC1lbmQtYmxvY2siIHN0eWxlPSJmb250LWZhbWls +eTogJnF1b3Q7T3BlbiBTYW5zJnF1b3Q7LCAmcXVvdDtDbGVhciBTYW5zJnF1b3Q7LCAmcXVvdDtI +ZWx2ZXRpY2EgTmV1ZSZxdW90OywgSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjsgYm94LXNp +emluZzogYm9yZGVyLWJveDsgY29sb3I6IHJnYig1MSwgNTEsIDUxKTsgZm9udC1zaXplOiAxNnB4 +OyI+PGhyIHN0eWxlPSJib3gtc2l6aW5nOiBjb250ZW50LWJveDsgaGVpZ2h0OiAycHg7IG1hcmdp +bjogMTZweCAwcHg7IGJvcmRlcjogMHB4IG5vbmU7IHBhZGRpbmc6IDBweDsgYmFja2dyb3VuZC1j +b2xvcjogcmdiKDIzMSwgMjMxLCAyMzEpOyI+PC9kaXY+PGgzIGNpZD0ibjMiIG1kdHlwZT0iaGVh +ZGluZyIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1oZWFkaW5nIiBzdHlsZT0iZm9udC1mYW1pbHk6 +ICZxdW90O09wZW4gU2FucyZxdW90OywgJnF1b3Q7Q2xlYXIgU2FucyZxdW90OywgJnF1b3Q7SGVs +dmV0aWNhIE5ldWUmcXVvdDssIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7IGJveC1zaXpp +bmc6IGJvcmRlci1ib3g7IGJyZWFrLWFmdGVyOiBhdm9pZC1wYWdlOyBicmVhay1pbnNpZGU6IGF2 +b2lkOyBvcnBoYW5zOiA0OyBmb250LXNpemU6IDEuNWVtOyBtYXJnaW4tdG9wOiAxcmVtOyBtYXJn +aW4tYm90dG9tOiAxcmVtOyBwb3NpdGlvbjogcmVsYXRpdmU7IGxpbmUtaGVpZ2h0OiAxLjQzOyBj +dXJzb3I6IHRleHQ7IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgY29sb3I6IHJnYig1MSwgNTEsIDUx +KTsiPjxzcGFuIG1kLWlubGluZT0ic3Ryb25nIiBjbGFzcz0ibWQtcGFpci1zICIgc3R5bGU9ImJv +eC1zaXppbmc6IGJvcmRlci1ib3g7Ij48c3Ryb25nIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXIt +Ym94OyI+PHNwYW4gbWQtaW5saW5lPSJwbGFpbiIgY2xhc3M9Im1kLXBsYWluIiBzdHlsZT0iYm94 +LXNpemluZzogYm9yZGVyLWJveDsiPuS4gOOAgeacrOWRqOW3peS9nOaAu+e7kzwvc3Bhbj48L3N0 +cm9uZz48L3NwYW4+PC9oMz48b2wgY2xhc3M9Im9sLWxpc3QiIHN0YXJ0PSIiIGNpZD0ibjQiIG1k +dHlwZT0ibGlzdCIgc3R5bGU9ImZvbnQtZmFtaWx5OiAmcXVvdDtPcGVuIFNhbnMmcXVvdDssICZx +dW90O0NsZWFyIFNhbnMmcXVvdDssICZxdW90O0hlbHZldGljYSBOZXVlJnF1b3Q7LCBIZWx2ZXRp +Y2EsIEFyaWFsLCBzYW5zLXNlcmlmOyBib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBw +eDsgcGFkZGluZy1sZWZ0OiAzMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7IGNvbG9yOiByZ2IoNTEs +IDUxLCA1MSk7IGZvbnQtc2l6ZTogMTZweDsiPjxsaSBjbGFzcz0ibWQtbGlzdC1pdGVtIiBjaWQ9 +Im41IiBtZHR5cGU9Imxpc3RfaXRlbSIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1h +cmdpbjogMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48cCBjaWQ9Im42IiBtZHR5cGU9InBhcmFn +cmFwaCIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1wIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVy +LWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IG9ycGhhbnM6IDQ7IG1hcmdpbjogMHB4IDBweCAw +LjVyZW07IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHNwYW4g +bWQtaW5saW5lPSJzdHJvbmciIGNsYXNzPSJtZC1wYWlyLXMgIiBzdHlsZT0iYm94LXNpemluZzog +Ym9yZGVyLWJveDsiPjxzdHJvbmcgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij48c3Bh +biBtZC1pbmxpbmU9InBsYWluIiBjbGFzcz0ibWQtcGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBi +b3JkZXItYm94OyI+6YeN54K55bel5L2c5a6M5oiQ5oOF5Ya1PC9zcGFuPjwvc3Ryb25nPjwvc3Bh +bj48L3A+PC9saT48dWwgY2xhc3M9InVsLWxpc3QiIGNpZD0ibjciIG1kdHlwZT0ibGlzdCIgZGF0 +YS1tYXJrPSItIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBh +ZGRpbmctbGVmdDogMzBweDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PGxpIGNsYXNzPSJtZC1saXN0 +LWl0ZW0iIGNpZD0ibjgiIG1kdHlwZT0ibGlzdF9pdGVtIiBzdHlsZT0iYm94LXNpemluZzogYm9y +ZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxwIGNpZD0ibjkiIG1k +dHlwZT0icGFyYWdyYXBoIiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLXAiIHN0eWxlPSJib3gtc2l6 +aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5oZXJpdDsgb3JwaGFuczogNDsgbWFyZ2lu +OiAwcHggMHB4IDAuNXJlbTsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyBwb3NpdGlvbjogcmVsYXRp +dmU7Ij48c3BhbiBtZC1pbmxpbmU9InBsYWluIiBjbGFzcz0ibWQtcGxhaW4iIHN0eWxlPSJib3gt +c2l6aW5nOiBib3JkZXItYm94OyI+5Lu75YqhMe+8mkc15Li75pWw5o2uNS4yLjDniYjmnKzlvIDl +j5HmtYvor5Xnu5PmnZ88L3NwYW4+PC9wPjwvbGk+PGxpIGNsYXNzPSJtZC1saXN0LWl0ZW0iIGNp +ZD0ibjEwIiBtZHR5cGU9Imxpc3RfaXRlbSIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7 +IG1hcmdpbjogMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48cCBjaWQ9Im4xMSIgbWR0eXBlPSJw +YXJhZ3JhcGgiIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCIgc3R5bGU9ImJveC1zaXppbmc6IGJv +cmRlci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhlcml0OyBvcnBoYW5zOiA0OyBtYXJnaW46IDBweCAw +cHggMC41cmVtOyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxz +cGFuIG1kLWlubGluZT0icGxhaW4iIGNsYXNzPSJtZC1wbGFpbiIgc3R5bGU9ImJveC1zaXppbmc6 +IGJvcmRlci1ib3g7Ij7ku7vliqEy77yaPC9zcGFuPkc15Li75pWw5o2u5a+55aSW5o6l5Y+j5byA +5Y+R5ZKM5rWL6K+VPC9wPjwvbGk+PC91bD48bGkgY2xhc3M9Im1kLWxpc3QtaXRlbSIgY2lkPSJu +MTIiIG1kdHlwZT0ibGlzdF9pdGVtIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFy +Z2luOiAwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxwIGNpZD0ibjEzIiBtZHR5cGU9InBhcmFn +cmFwaCIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1wIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVy +LWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IG9ycGhhbnM6IDQ7IG1hcmdpbjogMHB4IDBweCAw +LjVyZW07IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHNwYW4g +bWQtaW5saW5lPSJzdHJvbmciIGNsYXNzPSJtZC1wYWlyLXMgIiBzdHlsZT0iYm94LXNpemluZzog +Ym9yZGVyLWJveDsiPjxzdHJvbmcgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij48c3Bh +biBtZC1pbmxpbmU9InBsYWluIiBjbGFzcz0ibWQtcGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBi +b3JkZXItYm94OyI+5bi46KeE5bel5L2cPC9zcGFuPjwvc3Ryb25nPjwvc3Bhbj48L3A+PC9saT48 +dWwgY2xhc3M9InVsLWxpc3QiIGNpZD0ibjE0IiBtZHR5cGU9Imxpc3QiIGRhdGEtbWFyaz0iLSIg +c3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBwYWRkaW5nLWxlZnQ6 +IDMwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxsaSBjbGFzcz0ibWQtbGlzdC1pdGVtIiBjaWQ9 +Im4xNSIgbWR0eXBlPSJsaXN0X2l0ZW0iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBt +YXJnaW46IDBweDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHAgY2lkPSJuMTYiIG1kdHlwZT0icGFy +YWdyYXBoIiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLXAiIHN0eWxlPSJib3gtc2l6aW5nOiBib3Jk +ZXItYm94OyBsaW5lLWhlaWdodDogaW5oZXJpdDsgb3JwaGFuczogNDsgbWFyZ2luOiAwcHggMHB4 +IDAuNXJlbTsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48c3Bh +biBtZC1pbmxpbmU9InBsYWluIiBjbGFzcz0ibWQtcGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBi +b3JkZXItYm94OyI+5pel5bi45LqL5YqhMe+8mjIwMjUtMDktMjIg6L2s5rWLYnVn5L+u5aSNLEJP +TeaOpeWPo+W8gOWPkTwvc3Bhbj48L3A+PC9saT48L3VsPjwvb2w+PG9sIGNsYXNzPSJvbC1saXN0 +IiBzdGFydD0iIiBjaWQ9Im40IiBtZHR5cGU9Imxpc3QiIHN0eWxlPSJib3gtc2l6aW5nOiBib3Jk +ZXItYm94OyBtYXJnaW46IDBweDsgcGFkZGluZy1sZWZ0OiAzMHB4OyBwb3NpdGlvbjogcmVsYXRp +dmU7Ij48dWwgY2xhc3M9InVsLWxpc3QiIGNpZD0ibjE0IiBtZHR5cGU9Imxpc3QiIGRhdGEtbWFy +az0iLSIgc3R5bGU9ImZvbnQtZmFtaWx5OiAmcXVvdDtPcGVuIFNhbnMmcXVvdDssICZxdW90O0Ns +ZWFyIFNhbnMmcXVvdDssICZxdW90O0hlbHZldGljYSBOZXVlJnF1b3Q7LCBIZWx2ZXRpY2EsIEFy +aWFsLCBzYW5zLXNlcmlmOyBjb2xvcjogcmdiKDUxLCA1MSwgNTEpOyBmb250LXNpemU6IDE2cHg7 +IGJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBwYWRkaW5nLWxlZnQ6IDMwcHg7 +IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxsaSBjbGFzcz0ibWQtbGlzdC1pdGVtIiBjaWQ9Im4xNSIg +bWR0eXBlPSJsaXN0X2l0ZW0iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46 +IDBweDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHAgY2lkPSJuMTYiIG1kdHlwZT0icGFyYWdyYXBo +IiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLXAiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94 +OyBsaW5lLWhlaWdodDogaW5oZXJpdDsgb3JwaGFuczogNDsgbWFyZ2luOiAwcHggMHB4IDAuNXJl +bTsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48c3BhbiBtZC1p +bmxpbmU9InBsYWluIiBjbGFzcz0ibWQtcGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXIt +Ym94OyI+5pel5bi45LqL5YqhMu+8mjIwMjUtMDktMjMg5rWL6K+VYnVn5L+u5aSNCjwvc3Bhbj48 +L3A+PC9saT48bGkgY2xhc3M9Im1kLWxpc3QtaXRlbSIgY2lkPSJuMTciIG1kdHlwZT0ibGlzdF9p +dGVtIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBvc2l0aW9u +OiByZWxhdGl2ZTsiPjxwIGNpZD0ibjE4IiBtZHR5cGU9InBhcmFncmFwaCIgY2xhc3M9Im1kLWVu +ZC1ibG9jayBtZC1wIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6 +IGluaGVyaXQ7IG9ycGhhbnM6IDQ7IG1hcmdpbjogMHB4IDBweCAwLjVyZW07IHdoaXRlLXNwYWNl +OiBwcmUtd3JhcDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHNwYW4gbWQtaW5saW5lPSJwbGFpbiIg +Y2xhc3M9Im1kLXBsYWluIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPuaXpeW4uOS6 +i+WKoTPvvJoyMDI1LTA5LTI0PC9zcGFuPjwvcD48L2xpPjx1bCBzdHlsZT0ibGlzdC1zdHlsZS10 +eXBlOiBzcXVhcmU7Ij48bGkgY2xhc3M9Im1kLWxpc3QtaXRlbSIgY2lkPSJuMTciIG1kdHlwZT0i +bGlzdF9pdGVtIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBv +c2l0aW9uOiByZWxhdGl2ZTsiPjxwIGNpZD0ibjE4IiBtZHR5cGU9InBhcmFncmFwaCIgY2xhc3M9 +Im1kLWVuZC1ibG9jayBtZC1wIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1o +ZWlnaHQ6IGluaGVyaXQ7IG9ycGhhbnM6IDQ7IG1hcmdpbjogMHB4IDBweCAwLjVyZW07IHdoaXRl +LXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJlbGF0aXZlOyI+6ZyA5rGC5rWL6K+V5a6M5q+V +CjwvcD48L2xpPjxsaSBjbGFzcz0ibWQtbGlzdC1pdGVtIiBjaWQ9Im4xNyIgbWR0eXBlPSJsaXN0 +X2l0ZW0iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcG9zaXRp +b246IHJlbGF0aXZlOyI+PHAgY2lkPSJuMTgiIG1kdHlwZT0icGFyYWdyYXBoIiBjbGFzcz0ibWQt +ZW5kLWJsb2NrIG1kLXAiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdo +dDogaW5oZXJpdDsgb3JwaGFuczogNDsgbWFyZ2luOiAwcHggMHB4IDAuNXJlbTsgd2hpdGUtc3Bh +Y2U6IHByZS13cmFwOyBwb3NpdGlvbjogcmVsYXRpdmU7Ij7mjqXlj6PmtYvor5VidWfkv648L3A+ +PC9saT48L3VsPjxsaSBjbGFzcz0ibWQtbGlzdC1pdGVtIiBjaWQ9Im44NCIgbWR0eXBlPSJsaXN0 +X2l0ZW0iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcG9zaXRp +b246IHJlbGF0aXZlOyI+PHAgY2lkPSJuODUiIG1kdHlwZT0icGFyYWdyYXBoIiBjbGFzcz0ibWQt +ZW5kLWJsb2NrIG1kLXAiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdo +dDogaW5oZXJpdDsgb3JwaGFuczogNDsgbWFyZ2luOiAwcHggMHB4IDAuNXJlbTsgd2hpdGUtc3Bh +Y2U6IHByZS13cmFwOyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48c3BhbiBtZC1pbmxpbmU9InBsYWlu +IiBjbGFzcz0ibWQtcGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+5pel5bi4 +5LqL5YqhNO+8mjIwMjUtMDktMjUg5a6i5oi35o6l5Y+j5rWL6K+V5a6M5q+VLOS+m+W6lOWVhuaO +peWPo+a1i+ivlQo8L3NwYW4+PC9wPjwvbGk+PGxpIGNsYXNzPSJtZC1saXN0LWl0ZW0iIGNpZD0i +bjg0IiBtZHR5cGU9Imxpc3RfaXRlbSIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1h +cmdpbjogMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48cCBjaWQ9Im44NSIgbWR0eXBlPSJwYXJh +Z3JhcGgiIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRl +ci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhlcml0OyBvcnBoYW5zOiA0OyBtYXJnaW46IDBweCAwcHgg +MC41cmVtOyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxzcGFu +IG1kLWlubGluZT0icGxhaW4iIGNsYXNzPSJtZC1wbGFpbiIgc3R5bGU9ImJveC1zaXppbmc6IGJv +cmRlci1ib3g7Ij7ml6XluLjkuovliqE177yaMjAyNS0wOS0yNiDns7vnu59CT03lkoznianmlpnm +uIXljZXliIbmnpDkuI7lr7nlpJbmjqXlj6PlvIDlj5HmlrnmoYjorr7orqHor4TlrqE8L3NwYW4+ +PC9wPjwvbGk+PC91bD48L29sPjxoMyBjaWQ9Im4yNSIgbWR0eXBlPSJoZWFkaW5nIiBjbGFzcz0i +bWQtZW5kLWJsb2NrIG1kLWhlYWRpbmciIHN0eWxlPSJmb250LWZhbWlseTogJnF1b3Q7T3BlbiBT +YW5zJnF1b3Q7LCAmcXVvdDtDbGVhciBTYW5zJnF1b3Q7LCAmcXVvdDtIZWx2ZXRpY2EgTmV1ZSZx +dW90OywgSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjsgYm94LXNpemluZzogYm9yZGVyLWJv +eDsgYnJlYWstYWZ0ZXI6IGF2b2lkLXBhZ2U7IGJyZWFrLWluc2lkZTogYXZvaWQ7IG9ycGhhbnM6 +IDQ7IGZvbnQtc2l6ZTogMS41ZW07IG1hcmdpbi10b3A6IDFyZW07IG1hcmdpbi1ib3R0b206IDFy +ZW07IHBvc2l0aW9uOiByZWxhdGl2ZTsgbGluZS1oZWlnaHQ6IDEuNDM7IGN1cnNvcjogdGV4dDsg +d2hpdGUtc3BhY2U6IHByZS13cmFwOyBjb2xvcjogcmdiKDUxLCA1MSwgNTEpOyI+PHNwYW4gbWQt +aW5saW5lPSJzdHJvbmciIGNsYXNzPSJtZC1wYWlyLXMgIiBzdHlsZT0iYm94LXNpemluZzogYm9y +ZGVyLWJveDsiPjxzdHJvbmcgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij48c3BhbiBt +ZC1pbmxpbmU9InBsYWluIiBjbGFzcz0ibWQtcGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3Jk +ZXItYm94OyI+5LqM44CB5LiL5ZGo5bel5L2c6K6h5YiSPC9zcGFuPjwvc3Ryb25nPjwvc3Bhbj48 +L2gzPjxvbCBjbGFzcz0ib2wtbGlzdCIgc3RhcnQ9IiIgY2lkPSJuMjYiIG1kdHlwZT0ibGlzdCIg +c3R5bGU9ImZvbnQtZmFtaWx5OiDlvq7ova/pm4Xpu5E7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7 +IG1hcmdpbjogMHB4OyBwYWRkaW5nLWxlZnQ6IDMwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxs +aSBjbGFzcz0ibWQtbGlzdC1pdGVtIiBjaWQ9Im4yNyIgbWR0eXBlPSJsaXN0X2l0ZW0iIHN0eWxl +PSJjb2xvcjogcmdiKDUxLCA1MSwgNTEpOyBmb250LWZhbWlseTogJnF1b3Q7T3BlbiBTYW5zJnF1 +b3Q7LCAmcXVvdDtDbGVhciBTYW5zJnF1b3Q7LCAmcXVvdDtIZWx2ZXRpY2EgTmV1ZSZxdW90Oywg +SGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxNnB4OyBib3gtc2l6aW5n +OiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHAgY2lkPSJu +MjgiIG1kdHlwZT0icGFyYWdyYXBoIiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLXAiIHN0eWxlPSJi +b3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5oZXJpdDsgb3JwaGFuczogNDsg +bWFyZ2luOiAwcHggMHB4IDAuNXJlbTsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyBwb3NpdGlvbjog +cmVsYXRpdmU7Ij48c3BhbiBtZC1pbmxpbmU9InN0cm9uZyIgY2xhc3M9Im1kLXBhaXItcyAiIHN0 +eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+PHN0cm9uZyBzdHlsZT0iYm94LXNpemluZzog +Ym9yZGVyLWJveDsiPjxzcGFuIG1kLWlubGluZT0icGxhaW4iIGNsYXNzPSJtZC1wbGFpbiIgc3R5 +bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij7ph43ngrnku7vliqE8L3NwYW4+PC9zdHJvbmc+ +PC9zcGFuPjwvcD48L2xpPjx1bCBjbGFzcz0idWwtbGlzdCIgY2lkPSJuMjkiIG1kdHlwZT0ibGlz +dCIgZGF0YS1tYXJrPSItIiBzdHlsZT0iY29sb3I6IHJnYig1MSwgNTEsIDUxKTsgZm9udC1mYW1p +bHk6ICZxdW90O09wZW4gU2FucyZxdW90OywgJnF1b3Q7Q2xlYXIgU2FucyZxdW90OywgJnF1b3Q7 +SGVsdmV0aWNhIE5ldWUmcXVvdDssIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7IGZvbnQt +c2l6ZTogMTZweDsgYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBhZGRpbmct +bGVmdDogMzBweDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PGxpIGNsYXNzPSJtZC1saXN0LWl0ZW0i +IGNpZD0ibjMwIiBtZHR5cGU9Imxpc3RfaXRlbSIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1i +b3g7IG1hcmdpbjogMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48cCBjaWQ9Im4zMSIgbWR0eXBl +PSJwYXJhZ3JhcGgiIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCIgc3R5bGU9ImJveC1zaXppbmc6 +IGJvcmRlci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhlcml0OyBvcnBoYW5zOiA0OyBtYXJnaW46IDBw +eCAwcHggMC41cmVtOyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsi +PjxzcGFuIG1kLWlubGluZT0icGxhaW4iIGNsYXNzPSJtZC1wbGFpbiIgc3R5bGU9ImJveC1zaXpp +bmc6IGJvcmRlci1ib3g7Ij7orqHliJIx77yaRzXkuLvmlbDmja7lr7nlpJbmjqXlj6PlvIDlj5E8 +L3NwYW4+PC9wPjwvbGk+PGxpIGNsYXNzPSJtZC1saXN0LWl0ZW0iIGNpZD0ibjMwIiBtZHR5cGU9 +Imxpc3RfaXRlbSIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBw +b3NpdGlvbjogcmVsYXRpdmU7Ij48cCBjaWQ9Im4zMSIgbWR0eXBlPSJwYXJhZ3JhcGgiIGNsYXNz +PSJtZC1lbmQtYmxvY2sgbWQtcCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGxpbmUt +aGVpZ2h0OiBpbmhlcml0OyBvcnBoYW5zOiA0OyBtYXJnaW46IDBweCAwcHggMC41cmVtOyB3aGl0 +ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPuiuoeWIkjI6ICA1LjIuMeeJ +iOacrOW8gOWPkTwvcD48L2xpPjwvdWw+PC9vbD48ZGl2IHRhYmluZGV4PSItMSIgY2lkPSJuMzki +IG1kdHlwZT0iaHIiIGNsYXNzPSJtZC1ociBtZC1lbmQtYmxvY2siIHN0eWxlPSJmb250LWZhbWls +eTogJnF1b3Q7T3BlbiBTYW5zJnF1b3Q7LCAmcXVvdDtDbGVhciBTYW5zJnF1b3Q7LCAmcXVvdDtI +ZWx2ZXRpY2EgTmV1ZSZxdW90OywgSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjsgYm94LXNp +emluZzogYm9yZGVyLWJveDsgY29sb3I6IHJnYig1MSwgNTEsIDUxKTsgZm9udC1zaXplOiAxNnB4 +OyI+PGhyIHN0eWxlPSJib3gtc2l6aW5nOiBjb250ZW50LWJveDsgaGVpZ2h0OiAycHg7IG1hcmdp +bjogMTZweCAwcHg7IGJvcmRlcjogMHB4IG5vbmU7IHBhZGRpbmc6IDBweDsgYmFja2dyb3VuZC1j +b2xvcjogcmdiKDIzMSwgMjMxLCAyMzEpOyI+PC9kaXY+PHAgY2lkPSJuNDAiIG1kdHlwZT0icGFy +YWdyYXBoIiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLXAiIHN0eWxlPSJmb250LWZhbWlseTogJnF1 +b3Q7T3BlbiBTYW5zJnF1b3Q7LCAmcXVvdDtDbGVhciBTYW5zJnF1b3Q7LCAmcXVvdDtIZWx2ZXRp +Y2EgTmV1ZSZxdW90OywgSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjsgYm94LXNpemluZzog +Ym9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IG9ycGhhbnM6IDQ7IG1hcmdpbjogMC44 +ZW0gMHB4OyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsgY29sb3I6 +IHJnYig1MSwgNTEsIDUxKTsgZm9udC1zaXplOiAxNnB4OyI+PHNwYW4gbWQtaW5saW5lPSJzdHJv +bmciIGNsYXNzPSJtZC1wYWlyLXMgIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPjxz +dHJvbmcgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij48c3BhbiBtZC1pbmxpbmU9InBs +YWluIiBjbGFzcz0ibWQtcGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+5aSH +5rOoPC9zcGFuPjwvc3Ryb25nPjwvc3Bhbj48c3BhbiBtZC1pbmxpbmU9InBsYWluIiBjbGFzcz0i +bWQtcGxhaW4gbWQtZXhwYW5kIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPu+8muaX +oDwvc3Bhbj48L3A+PC9kaXY+PGRpdiBzdHlsZT0iZm9udC1mYW1pbHk6IOW+rui9r+mbhem7kTsi +Pjxicj48L2Rpdj48ZGl2IHNwZWxsY2hlY2s9ImZhbHNlIiBpZD0ibnRlcy1wY21hYy1zaWduYXR1 +cmUiIHN0eWxlPSJmb250LWZhbWlseTog5b6u6L2v6ZuF6buROyIgZGF0YS1udGVzLXNpZ25hdHVy +ZT0idHJ1ZSI+PGRpdiBzdHlsZT0iZm9udC1zaXplOjE0cHg7cGFkZGluZzowO21hcmdpbjowIj48 +ZGl2IHN0eWxlPSJwYWRkaW5nLWJvdHRvbToxMHB4O21hcmdpbi1ib3R0b206MTBweDtkaXNwbGF5 +OmlubGluZS1ibG9jayI+PGRpdiBzdHlsZT0iZm9udC1mYW1pbHk6JnF1b3Q75b6u6L2v6ZuF6buR +JnF1b3Q7OyBmb250LXNpemU6IDE0cHg7IGNvbG9yOiMwMDAwMDAiPgogICAgPHN0eWxlPgogICAg +ICAgIGZvbnR7CiAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAxLjY7CiAgICAgICAgfQogICAgPC9z +dHlsZT4KPGRpdiBzdHlsZT0iZm9udC1mYW1pbHk6JnF1b3Q75b6u6L2v6ZuF6buRJnF1b3Q7OyBm +b250LXNpemU6IDE0cHg7IGNvbG9yOiMwMDAwMDAiPgogICAgPHN0eWxlPgogICAgICAgIGZvbnR7 +CiAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAxLjY7CiAgICAgICAgfQogICAgPC9zdHlsZT4KPGRp +diBzdHlsZT0iZm9udC1mYW1pbHk6JnF1b3Q75b6u6L2v6ZuF6buRJnF1b3Q7OyBmb250LXNpemU6 +IDE0cHg7IGNvbG9yOiMwMDAwMDAiPgogICAgPHN0eWxlPgogICAgICAgIGZvbnR7CiAgICAgICAg +ICAgIGxpbmUtaGVpZ2h0OiAxLjY7CiAgICAgICAgfQogICAgPC9zdHlsZT4KPGRpdiBzdHlsZT0i +Zm9udC1mYW1pbHk6JnF1b3Q75b6u6L2v6ZuF6buRJnF1b3Q7OyBmb250LXNpemU6IDE0cHg7IGNv +bG9yOiMwMDAwMDAiPgogICAgPHN0eWxlPgogICAgICAgIGZvbnR7CiAgICAgICAgICAgIGxpbmUt +aGVpZ2h0OiAxLjY7CiAgICAgICAgfQogICAgPC9zdHlsZT4KPHNwYW4gc3R5bGU9ImNvbG9yOiBy +Z2IoMTkxLCAxOTEsIDE5MSk7IGZvbnQtZmFtaWx5OiAnTWljcm9zb2Z0IFlhaGVpJzsgZm9udC1z +aXplOiAxM3B4OyBvcnBoYW5zOiAyOyB3aWRvd3M6IDI7Ij5CZXN0IHJlZ2FyZHMsPC9zcGFuPjxk +aXYgc3R5bGU9Im1hcmdpbjogMHB4OyBwYWRkaW5nOiAwcHg7IGJvcmRlcjogMHB4OyBvdXRsaW5l +OiAwcHg7IGZvbnQtZmFtaWx5OiBUYWhvbWEsIEFyaWFsLCBTVEhlaXRpLCBTaW1TdW47IGZvbnQt +dmFyaWFudC1saWdhdHVyZXM6IG5vcm1hbDsgb3JwaGFuczogMjsgd2lkb3dzOiAyOyBjbGVhcjog +Ym90aDsiPjxzcGFuIHN0eWxlPSJtYXJnaW46IDBweDsgcGFkZGluZzogMHB4OyBib3JkZXI6IDBw +eDsgb3V0bGluZTogMHB4OyBmb250LWZhbWlseTogJnF1b3Q7TWljcm9zb2Z0IFlhaGVpJnF1b3Q7 +OyBmb250LXNpemU6IDEzcHg7IGNvbG9yOiByZ2IoMTkxLCAxOTEsIDE5MSk7Ij7mnajovak8L3Nw +YW4+PC9kaXY+PGRpdiBzdHlsZT0ibWFyZ2luOiAwcHg7IHBhZGRpbmc6IDBweDsgYm9yZGVyOiAw +cHg7IG91dGxpbmU6IDBweDsgZm9udC1mYW1pbHk6IFRhaG9tYSwgQXJpYWwsIFNUSGVpdGksIFNp +bVN1bjsgZm9udC12YXJpYW50LWxpZ2F0dXJlczogbm9ybWFsOyBvcnBoYW5zOiAyOyB3aWRvd3M6 +IDI7IGNsZWFyOiBib3RoOyI+PC9kaXY+PGRpdiBzdHlsZT0ibWFyZ2luOiAwcHg7IHBhZGRpbmc6 +IDBweDsgYm9yZGVyOiAwcHg7IG91dGxpbmU6IDBweDsgZm9udC1mYW1pbHk6IFRhaG9tYSwgQXJp +YWwsIFNUSGVpdGksIFNpbVN1bjsgZm9udC12YXJpYW50LWxpZ2F0dXJlczogbm9ybWFsOyBvcnBo +YW5zOiAyOyB3aWRvd3M6IDI7IGNsZWFyOiBib3RoOyI+PGltZyBzdHlsZT0ibWF4LXdpZHRoOiB1 +bnNldDsiIHNyYz0iaHR0cHM6Ly9tYWlsLW9ubGluZS5ub3Nkbi4xMjcubmV0L3d6cG1tYy9jZTlm +OGIzNmUxZmZiZTU1MzI5YzE5NmM4NGZlNTE5Ny5wbmciPjwvZGl2PjxkaXYgc3R5bGU9Im1hcmdp +bjogMHB4OyBwYWRkaW5nOiAwcHg7IGJvcmRlcjogMHB4OyBvdXRsaW5lOiAwcHg7IGZvbnQtZmFt +aWx5OiBUYWhvbWEsIEFyaWFsLCBTVEhlaXRpLCBTaW1TdW47IGZvbnQtdmFyaWFudC1saWdhdHVy +ZXM6IG5vcm1hbDsgb3JwaGFuczogMjsgd2lkb3dzOiAyOyBjbGVhcjogYm90aDsiPjxzcGFuIHN0 +eWxlPSJtYXJnaW46IDBweDsgcGFkZGluZzogMHB4OyBib3JkZXI6IDBweDsgb3V0bGluZTogMHB4 +OyBmb250LWZhbWlseTogJnF1b3Q7TWljcm9zb2Z0IFlhaGVpJnF1b3Q7OyBjb2xvcjogcmdiKDE5 +MSwgMTkxLCAxOTEpOyI+5Zyw5Z2A77ya5Lit5Zu9wrfljZfkuqzova/ku7bosLfova/ku7blpKfp +gZMgMTEg5Y+36Iqx56We5aSn5Y6mIDItM0Y8L3NwYW4+PC9kaXY+PGRpdiBzdHlsZT0ibWFyZ2lu +OiAwcHg7IHBhZGRpbmc6IDBweDsgYm9yZGVyOiAwcHg7IG91dGxpbmU6IDBweDsgZm9udC1mYW1p +bHk6IFRhaG9tYSwgQXJpYWwsIFNUSGVpdGksIFNpbVN1bjsgZm9udC12YXJpYW50LWxpZ2F0dXJl +czogbm9ybWFsOyBvcnBoYW5zOiAyOyB3aWRvd3M6IDI7IGNsZWFyOiBib3RoOyI+PHNwYW4gc3R5 +bGU9Im1hcmdpbjogMHB4OyBwYWRkaW5nOiAwcHg7IGJvcmRlcjogMHB4OyBvdXRsaW5lOiAwcHg7 +IGZvbnQtZmFtaWx5OiAmcXVvdDtNaWNyb3NvZnQgWWFoZWkmcXVvdDs7IGNvbG9yOiByZ2IoMTkx +LCAxOTEsIDE5MSk7Ij7miYvmnLrvvJoxODcyNjEyODQ4OTwvc3Bhbj48L2Rpdj48ZGl2IHN0eWxl +PSJtYXJnaW46IDBweDsgcGFkZGluZzogMHB4OyBib3JkZXI6IDBweDsgb3V0bGluZTogMHB4OyBm +b250LWZhbWlseTogVGFob21hLCBBcmlhbCwgU1RIZWl0aSwgU2ltU3VuOyBmb250LXZhcmlhbnQt +bGlnYXR1cmVzOiBub3JtYWw7IG9ycGhhbnM6IDI7IHdpZG93czogMjsgY2xlYXI6IGJvdGg7Ij48 +c3BhbiBzdHlsZT0ibWFyZ2luOiAwcHg7IHBhZGRpbmc6IDBweDsgYm9yZGVyOiAwcHg7IG91dGxp +bmU6IDBweDsgZm9udC1mYW1pbHk6ICZxdW90O01pY3Jvc29mdCBZYWhlaSZxdW90OzsgY29sb3I6 +IHJnYigxOTEsIDE5MSwgMTkxKTsiPumCrueuse+8mnlhbmd4dWFuQHdpdHNvZnQuY248L3NwYW4+ +PC9kaXY+CjwvZGl2Pgo8L2Rpdj4KPC9kaXY+CjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2 +PjwhLS3wn5iALS0+PC9kaXY+PC9kaXY+PC9ib2R5PjwvaHRtbD4= + +--=_mailmaster-6a18e4a4_0_6952_=-- diff --git a/media/inbound/2025-09-30_1747_G5开发周报_2025-09-28_--_2025-09-30---47de5b49-f456-48c1-8a8e-4dc9f73d4fa8.eml b/media/inbound/2025-09-30_1747_G5开发周报_2025-09-28_--_2025-09-30---47de5b49-f456-48c1-8a8e-4dc9f73d4fa8.eml new file mode 100644 index 0000000..31dc0ee --- /dev/null +++ b/media/inbound/2025-09-30_1747_G5开发周报_2025-09-28_--_2025-09-30---47de5b49-f456-48c1-8a8e-4dc9f73d4fa8.eml @@ -0,0 +1,267 @@ +Date: Tue, 30 Sep 2025 17:46:58 +0800 +From: =?utf-8?B?5p2o6L2p?= +To: =?utf-8?B?5YiY5by6?= +Cc: =?utf-8?B?5bGI5paw6b6Z?= , =?utf-8?B?5pyx5paM?= + , =?utf-8?B?6ZmI5piO?= , + =?utf-8?Q?xym=40witsoft.cn?= +Message-ID: <3CD5FEC2-B1EB-4C98-87A7-3C81434962E2@witsoft.cn> +Subject: =?utf-8?B?RzXlvIDlj5HlkajmiqXjgJAyMDI1LTA5LTI4IC0tICAyMDI1LTA5?= + =?utf-8?B?LTMw44CR?= +MIME-Version: 1.0 +Content-Type: multipart/alternative; boundary="=_mailmaster-6a18e4a4_0_5f90_=" + +--=_mailmaster-6a18e4a4_0_5f90_= +Content-Type: text/plain; charset="utf-8" +Content-Transfer-Encoding: base64 + +5oKo5aW977yB5Lul5LiL5piv5oiR5pys5ZGo55qE5bel5L2c5oC757uT5Y+K5LiL5ZGo6K6h5YiS +77yM6K+35a6h6ZiF44CCCuS4gOOAgeacrOWRqOW3peS9nOaAu+e7kwrph43ngrnlt6XkvZzlrozm +iJDmg4XlhrUK5Lu75YqhMe+8mkc15Li75pWw5o2uNS4yLjHniYjmnKzlvIDlj5EK5Lu75YqhMu+8 +mkc15Li75pWw5o2u5a+55aSW5o6l5Y+j5byA5Y+R5ZKM5rWL6K+VCuW4uOinhOW3peS9nArml6Xl +uLjkuovliqEx77yaMjAyNS0wOS0yOCBCT03mjqXlj6PmlrnmoYjorr7orqHor4TlrqHlkozmjqXl +j6PmlLnpgKAK5pel5bi45LqL5YqhMu+8mjIwMjUtMDktMjkg5Lqn5ZOB5bel6Im65o6l5Y+j5pa5 +5qGI6K6+6K6h44CB6K+E5a6h5ZKM5byA5Y+RIArml6XluLjkuovliqEz77yaMjAyNS0wOS0zMCDl +pJbpg6jmjqXlj6NidWfkv67lpI0K5LqM44CB5LiL5ZGo5bel5L2c6K6h5YiSCumHjeeCueS7u+WK +oQrorqHliJIx77yaRzXkuLvmlbDmja7lr7nlpJbmjqXlj6PlvIDlj5EK6K6h5YiSMjogNS4yLjHn +iYjmnKzlvIDlj5EK5aSH5rOo77ya5pegCkJlc3QgcmVnYXJkcyzmnajovakK5Zyw5Z2A77ya5Lit +5Zu9wrfljZfkuqzova/ku7bosLfova/ku7blpKfpgZMgMTEg5Y+36Iqx56We5aSn5Y6mIDItM0YK +5omL5py677yaMTg3MjYxMjg0ODkK6YKu566x77yaeWFuZ3h1YW5Ad2l0c29mdC5jbg== + +--=_mailmaster-6a18e4a4_0_5f90_= +Content-Type: text/html; charset="utf-8" +Content-Transfer-Encoding: base64 + +PGh0bWw+PGhlYWQ+PG1ldGEgaHR0cC1lcXVpdj0nQ29udGVudC1UeXBlJyBjb250ZW50PSd0ZXh0 +L2h0bWw7IGNoYXJzZXQ9VVRGLTgnPjwvaGVhZD48Ym9keSBzdHlsZT1saW5lLWhlaWdodDogMS41 +O2ZvbnQtZmFtaWx5OiAi5b6u6L2v6ZuF6buRIj48ZGl2ICBzdHlsZT0iZm9udC1mYW1pbHk6IOW+ +rui9r+mbhem7kTsiPjxkaXYgc3R5bGU9IiI+PGRpdiBzdHlsZT0iIj48ZGl2IHN0eWxlPSIiPjxw +IGNpZD0ibjAiIG1kdHlwZT0icGFyYWdyYXBoIiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLXAgbWQt +Zm9jdXMiIHN0eWxlPSJmb250LWZhbWlseTogJnF1b3Q7T3BlbiBTYW5zJnF1b3Q7LCAmcXVvdDtD +bGVhciBTYW5zJnF1b3Q7LCAmcXVvdDtIZWx2ZXRpY2EgTmV1ZSZxdW90OywgSGVsdmV0aWNhLCBB +cmlhbCwgc2Fucy1zZXJpZjsgYm94LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGlu +aGVyaXQ7IG9ycGhhbnM6IDQ7IG1hcmdpbjogMC44ZW0gMHB4OyB3aGl0ZS1zcGFjZTogcHJlLXdy +YXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsgY29sb3I6IHJnYig1MSwgNTEsIDUxKTsgZm9udC1zaXpl +OiAxNnB4OyI+PHNwYW4gbWQtaW5saW5lPSJwbGFpbiIgY2xhc3M9Im1kLXBsYWluIG1kLWV4cGFu +ZCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij7mgqjlpb3vvIHku6XkuIvmmK/miJHm +nKzlkajnmoTlt6XkvZzmgLvnu5Plj4rkuIvlkajorqHliJLvvIzor7flrqHpmIXjgII8L3NwYW4+ +PC9wPjxkaXYgdGFiaW5kZXg9Ii0xIiBjaWQ9Im4yIiBtZHR5cGU9ImhyIiBjbGFzcz0ibWQtaHIg +bWQtZW5kLWJsb2NrIiBzdHlsZT0iZm9udC1mYW1pbHk6ICZxdW90O09wZW4gU2FucyZxdW90Oywg +JnF1b3Q7Q2xlYXIgU2FucyZxdW90OywgJnF1b3Q7SGVsdmV0aWNhIE5ldWUmcXVvdDssIEhlbHZl +dGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7IGNvbG9yOiBy +Z2IoNTEsIDUxLCA1MSk7IGZvbnQtc2l6ZTogMTZweDsiPjxociBzdHlsZT0iYm94LXNpemluZzog +Y29udGVudC1ib3g7IGhlaWdodDogMnB4OyBtYXJnaW46IDE2cHggMHB4OyBib3JkZXI6IDBweCBu +b25lOyBwYWRkaW5nOiAwcHg7IGJhY2tncm91bmQtY29sb3I6IHJnYigyMzEsIDIzMSwgMjMxKTsi +PjwvZGl2PjxoMyBjaWQ9Im4zIiBtZHR5cGU9ImhlYWRpbmciIGNsYXNzPSJtZC1lbmQtYmxvY2sg +bWQtaGVhZGluZyIgc3R5bGU9ImZvbnQtZmFtaWx5OiAmcXVvdDtPcGVuIFNhbnMmcXVvdDssICZx +dW90O0NsZWFyIFNhbnMmcXVvdDssICZxdW90O0hlbHZldGljYSBOZXVlJnF1b3Q7LCBIZWx2ZXRp +Y2EsIEFyaWFsLCBzYW5zLXNlcmlmOyBib3gtc2l6aW5nOiBib3JkZXItYm94OyBicmVhay1hZnRl +cjogYXZvaWQtcGFnZTsgYnJlYWstaW5zaWRlOiBhdm9pZDsgb3JwaGFuczogNDsgZm9udC1zaXpl +OiAxLjVlbTsgbWFyZ2luLXRvcDogMXJlbTsgbWFyZ2luLWJvdHRvbTogMXJlbTsgcG9zaXRpb246 +IHJlbGF0aXZlOyBsaW5lLWhlaWdodDogMS40MzsgY3Vyc29yOiB0ZXh0OyB3aGl0ZS1zcGFjZTog +cHJlLXdyYXA7IGNvbG9yOiByZ2IoNTEsIDUxLCA1MSk7Ij48c3BhbiBtZC1pbmxpbmU9InN0cm9u +ZyIgY2xhc3M9Im1kLXBhaXItcyAiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+PHN0 +cm9uZyBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPjxzcGFuIG1kLWlubGluZT0icGxh +aW4iIGNsYXNzPSJtZC1wbGFpbiIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij7kuIDj +gIHmnKzlkajlt6XkvZzmgLvnu5M8L3NwYW4+PC9zdHJvbmc+PC9zcGFuPjwvaDM+PG9sIGNsYXNz +PSJvbC1saXN0IiBzdGFydD0iIiBjaWQ9Im40IiBtZHR5cGU9Imxpc3QiIHN0eWxlPSJmb250LWZh +bWlseTogJnF1b3Q7T3BlbiBTYW5zJnF1b3Q7LCAmcXVvdDtDbGVhciBTYW5zJnF1b3Q7LCAmcXVv +dDtIZWx2ZXRpY2EgTmV1ZSZxdW90OywgSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjsgYm94 +LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBhZGRpbmctbGVmdDogMzBweDsgcG9z +aXRpb246IHJlbGF0aXZlOyBjb2xvcjogcmdiKDUxLCA1MSwgNTEpOyBmb250LXNpemU6IDE2cHg7 +Ij48bGkgY2xhc3M9Im1kLWxpc3QtaXRlbSIgY2lkPSJuNSIgbWR0eXBlPSJsaXN0X2l0ZW0iIHN0 +eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcG9zaXRpb246IHJlbGF0 +aXZlOyI+PHAgY2lkPSJuNiIgbWR0eXBlPSJwYXJhZ3JhcGgiIGNsYXNzPSJtZC1lbmQtYmxvY2sg +bWQtcCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhlcml0 +OyBvcnBoYW5zOiA0OyBtYXJnaW46IDBweCAwcHggMC41cmVtOyB3aGl0ZS1zcGFjZTogcHJlLXdy +YXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxzcGFuIG1kLWlubGluZT0ic3Ryb25nIiBjbGFzcz0i +bWQtcGFpci1zICIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij48c3Ryb25nIHN0eWxl +PSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+PHNwYW4gbWQtaW5saW5lPSJwbGFpbiIgY2xhc3M9 +Im1kLXBsYWluIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPumHjeeCueW3peS9nOWu +jOaIkOaDheWGtTwvc3Bhbj48L3N0cm9uZz48L3NwYW4+PC9wPjwvbGk+PHVsIGNsYXNzPSJ1bC1s +aXN0IiBjaWQ9Im43IiBtZHR5cGU9Imxpc3QiIGRhdGEtbWFyaz0iLSIgc3R5bGU9ImJveC1zaXpp +bmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBwYWRkaW5nLWxlZnQ6IDMwcHg7IHBvc2l0aW9u +OiByZWxhdGl2ZTsiPjxsaSBjbGFzcz0ibWQtbGlzdC1pdGVtIiBjaWQ9Im44IiBtZHR5cGU9Imxp +c3RfaXRlbSIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBwb3Np +dGlvbjogcmVsYXRpdmU7Ij48cCBjaWQ9Im45IiBtZHR5cGU9InBhcmFncmFwaCIgY2xhc3M9Im1k +LWVuZC1ibG9jayBtZC1wIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1oZWln +aHQ6IGluaGVyaXQ7IG9ycGhhbnM6IDQ7IG1hcmdpbjogMHB4IDBweCAwLjVyZW07IHdoaXRlLXNw +YWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHNwYW4gbWQtaW5saW5lPSJwbGFp +biIgY2xhc3M9Im1kLXBsYWluIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPuS7u+WK +oTHvvJpHNeS4u+aVsOaNrjUuMi4x54mI5pys5byA5Y+RPC9zcGFuPjwvcD48L2xpPjxsaSBjbGFz +cz0ibWQtbGlzdC1pdGVtIiBjaWQ9Im4xMCIgbWR0eXBlPSJsaXN0X2l0ZW0iIHN0eWxlPSJib3gt +c2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHAg +Y2lkPSJuMTEiIG1kdHlwZT0icGFyYWdyYXBoIiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLXAiIHN0 +eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5oZXJpdDsgb3JwaGFu +czogNDsgbWFyZ2luOiAwcHggMHB4IDAuNXJlbTsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyBwb3Np +dGlvbjogcmVsYXRpdmU7Ij48c3BhbiBtZC1pbmxpbmU9InBsYWluIiBjbGFzcz0ibWQtcGxhaW4i +IHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+5Lu75YqhMu+8mjwvc3Bhbj5HNeS4u+aV +sOaNruWvueWkluaOpeWPo+W8gOWPkeWSjOa1i+ivlTwvcD48L2xpPjwvdWw+PGxpIGNsYXNzPSJt +ZC1saXN0LWl0ZW0iIGNpZD0ibjEyIiBtZHR5cGU9Imxpc3RfaXRlbSIgc3R5bGU9ImJveC1zaXpp +bmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48cCBjaWQ9 +Im4xMyIgbWR0eXBlPSJwYXJhZ3JhcGgiIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCIgc3R5bGU9 +ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhlcml0OyBvcnBoYW5zOiA0 +OyBtYXJnaW46IDBweCAwcHggMC41cmVtOyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0aW9u +OiByZWxhdGl2ZTsiPjxzcGFuIG1kLWlubGluZT0ic3Ryb25nIiBjbGFzcz0ibWQtcGFpci1zICIg +c3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij48c3Ryb25nIHN0eWxlPSJib3gtc2l6aW5n +OiBib3JkZXItYm94OyI+PHNwYW4gbWQtaW5saW5lPSJwbGFpbiIgY2xhc3M9Im1kLXBsYWluIiBz +dHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPuW4uOinhOW3peS9nDwvc3Bhbj48L3N0cm9u +Zz48L3NwYW4+PC9wPjwvbGk+PHVsIGNsYXNzPSJ1bC1saXN0IiBjaWQ9Im4xNCIgbWR0eXBlPSJs +aXN0IiBkYXRhLW1hcms9Ii0iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46 +IDBweDsgcGFkZGluZy1sZWZ0OiAzMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48bGkgY2xhc3M9 +Im1kLWxpc3QtaXRlbSIgY2lkPSJuMTUiIG1kdHlwZT0ibGlzdF9pdGVtIiBzdHlsZT0iYm94LXNp +emluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxwIGNp +ZD0ibjE2IiBtZHR5cGU9InBhcmFncmFwaCIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1wIiBzdHls +ZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IG9ycGhhbnM6 +IDQ7IG1hcmdpbjogMHB4IDBweCAwLjVyZW07IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRp +b246IHJlbGF0aXZlOyI+PHNwYW4gbWQtaW5saW5lPSJwbGFpbiIgY2xhc3M9Im1kLXBsYWluIiBz +dHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPuaXpeW4uOS6i+WKoTHvvJoyMDI1LTA5LTI4 +IEJPTeaOpeWPo+aWueahiOiuvuiuoeivhOWuoeWSjOaOpeWPo+aUuemAoDwvc3Bhbj48L3A+PC9s +aT48L3VsPjwvb2w+PG9sIGNsYXNzPSJvbC1saXN0IiBzdGFydD0iIiBjaWQ9Im40IiBtZHR5cGU9 +Imxpc3QiIHN0eWxlPSJmb250LWZhbWlseTog5b6u6L2v6ZuF6buROyBib3gtc2l6aW5nOiBib3Jk +ZXItYm94OyBtYXJnaW46IDBweDsgcGFkZGluZy1sZWZ0OiAzMHB4OyBwb3NpdGlvbjogcmVsYXRp +dmU7Ij48dWwgY2xhc3M9InVsLWxpc3QiIGNpZD0ibjE0IiBtZHR5cGU9Imxpc3QiIGRhdGEtbWFy +az0iLSIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBwYWRkaW5n +LWxlZnQ6IDMwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxsaSBjbGFzcz0ibWQtbGlzdC1pdGVt +IiBjaWQ9Im4xNSIgbWR0eXBlPSJsaXN0X2l0ZW0iIHN0eWxlPSJjb2xvcjogcmdiKDUxLCA1MSwg +NTEpOyBmb250LWZhbWlseTogJnF1b3Q7T3BlbiBTYW5zJnF1b3Q7LCAmcXVvdDtDbGVhciBTYW5z +JnF1b3Q7LCAmcXVvdDtIZWx2ZXRpY2EgTmV1ZSZxdW90OywgSGVsdmV0aWNhLCBBcmlhbCwgc2Fu +cy1zZXJpZjsgZm9udC1zaXplOiAxNnB4OyBib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46 +IDBweDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHAgY2lkPSJuMTYiIG1kdHlwZT0icGFyYWdyYXBo +IiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLXAiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94 +OyBsaW5lLWhlaWdodDogaW5oZXJpdDsgb3JwaGFuczogNDsgbWFyZ2luOiAwcHggMHB4IDAuNXJl +bTsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48c3BhbiBtZC1p +bmxpbmU9InBsYWluIiBjbGFzcz0ibWQtcGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXIt +Ym94OyI+5pel5bi45LqL5YqhMu+8mjIwMjUtMDktMjkg5Lqn5ZOB5bel6Im65o6l5Y+j5pa55qGI +6K6+6K6h44CB6K+E5a6h5ZKM5byA5Y+RCjwvc3Bhbj48L3A+PC9saT48bGkgY2xhc3M9Im1kLWxp +c3QtaXRlbSIgY2lkPSJuMTciIG1kdHlwZT0ibGlzdF9pdGVtIiBzdHlsZT0iY29sb3I6IHJnYig1 +MSwgNTEsIDUxKTsgZm9udC1mYW1pbHk6ICZxdW90O09wZW4gU2FucyZxdW90OywgJnF1b3Q7Q2xl +YXIgU2FucyZxdW90OywgJnF1b3Q7SGVsdmV0aWNhIE5ldWUmcXVvdDssIEhlbHZldGljYSwgQXJp +YWwsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTZweDsgYm94LXNpemluZzogYm9yZGVyLWJveDsg +bWFyZ2luOiAwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxwIGNpZD0ibjE4IiBtZHR5cGU9InBh +cmFncmFwaCIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1wIiBzdHlsZT0iYm94LXNpemluZzogYm9y +ZGVyLWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IG9ycGhhbnM6IDQ7IG1hcmdpbjogMHB4IDBw +eCAwLjVyZW07IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHNw +YW4gbWQtaW5saW5lPSJwbGFpbiIgY2xhc3M9Im1kLXBsYWluIiBzdHlsZT0iYm94LXNpemluZzog +Ym9yZGVyLWJveDsiPuaXpeW4uOS6i+WKoTPvvJoyMDI1LTA5LTMwIOWklumDqOaOpeWPo2J1Z+S/ +ruWkjTwvc3Bhbj48L3A+PC9saT48L3VsPjwvb2w+PGgzIGNpZD0ibjI1IiBtZHR5cGU9ImhlYWRp +bmciIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtaGVhZGluZyIgc3R5bGU9ImZvbnQtZmFtaWx5OiAm +cXVvdDtPcGVuIFNhbnMmcXVvdDssICZxdW90O0NsZWFyIFNhbnMmcXVvdDssICZxdW90O0hlbHZl +dGljYSBOZXVlJnF1b3Q7LCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmOyBib3gtc2l6aW5n +OiBib3JkZXItYm94OyBicmVhay1hZnRlcjogYXZvaWQtcGFnZTsgYnJlYWstaW5zaWRlOiBhdm9p +ZDsgb3JwaGFuczogNDsgZm9udC1zaXplOiAxLjVlbTsgbWFyZ2luLXRvcDogMXJlbTsgbWFyZ2lu +LWJvdHRvbTogMXJlbTsgcG9zaXRpb246IHJlbGF0aXZlOyBsaW5lLWhlaWdodDogMS40MzsgY3Vy +c29yOiB0ZXh0OyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IGNvbG9yOiByZ2IoNTEsIDUxLCA1MSk7 +Ij48c3BhbiBtZC1pbmxpbmU9InN0cm9uZyIgY2xhc3M9Im1kLXBhaXItcyAiIHN0eWxlPSJib3gt +c2l6aW5nOiBib3JkZXItYm94OyI+PHN0cm9uZyBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJv +eDsiPjxzcGFuIG1kLWlubGluZT0icGxhaW4iIGNsYXNzPSJtZC1wbGFpbiIgc3R5bGU9ImJveC1z +aXppbmc6IGJvcmRlci1ib3g7Ij7kuozjgIHkuIvlkajlt6XkvZzorqHliJI8L3NwYW4+PC9zdHJv +bmc+PC9zcGFuPjwvaDM+PG9sIGNsYXNzPSJvbC1saXN0IiBzdGFydD0iIiBjaWQ9Im4yNiIgbWR0 +eXBlPSJsaXN0IiBzdHlsZT0iZm9udC1mYW1pbHk6IOW+rui9r+mbhem7kTsgYm94LXNpemluZzog +Ym9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBhZGRpbmctbGVmdDogMzBweDsgcG9zaXRpb246IHJl +bGF0aXZlOyI+PGxpIGNsYXNzPSJtZC1saXN0LWl0ZW0iIGNpZD0ibjI3IiBtZHR5cGU9Imxpc3Rf +aXRlbSIgc3R5bGU9ImNvbG9yOiByZ2IoNTEsIDUxLCA1MSk7IGZvbnQtZmFtaWx5OiAmcXVvdDtP +cGVuIFNhbnMmcXVvdDssICZxdW90O0NsZWFyIFNhbnMmcXVvdDssICZxdW90O0hlbHZldGljYSBO +ZXVlJnF1b3Q7LCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDE2cHg7 +IGJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7 +Ij48cCBjaWQ9Im4yOCIgbWR0eXBlPSJwYXJhZ3JhcGgiIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQt +cCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhlcml0OyBv +cnBoYW5zOiA0OyBtYXJnaW46IDBweCAwcHggMC41cmVtOyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7 +IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxzcGFuIG1kLWlubGluZT0ic3Ryb25nIiBjbGFzcz0ibWQt +cGFpci1zICIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij48c3Ryb25nIHN0eWxlPSJi +b3gtc2l6aW5nOiBib3JkZXItYm94OyI+PHNwYW4gbWQtaW5saW5lPSJwbGFpbiIgY2xhc3M9Im1k +LXBsYWluIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPumHjeeCueS7u+WKoTwvc3Bh +bj48L3N0cm9uZz48L3NwYW4+PC9wPjwvbGk+PHVsIGNsYXNzPSJ1bC1saXN0IiBjaWQ9Im4yOSIg +bWR0eXBlPSJsaXN0IiBkYXRhLW1hcms9Ii0iIHN0eWxlPSJjb2xvcjogcmdiKDUxLCA1MSwgNTEp +OyBmb250LWZhbWlseTogJnF1b3Q7T3BlbiBTYW5zJnF1b3Q7LCAmcXVvdDtDbGVhciBTYW5zJnF1 +b3Q7LCAmcXVvdDtIZWx2ZXRpY2EgTmV1ZSZxdW90OywgSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1z +ZXJpZjsgZm9udC1zaXplOiAxNnB4OyBib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBw +eDsgcGFkZGluZy1sZWZ0OiAzMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48bGkgY2xhc3M9Im1k +LWxpc3QtaXRlbSIgY2lkPSJuMzAiIG1kdHlwZT0ibGlzdF9pdGVtIiBzdHlsZT0iYm94LXNpemlu +ZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxwIGNpZD0i +bjMxIiBtZHR5cGU9InBhcmFncmFwaCIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1wIiBzdHlsZT0i +Ym94LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IG9ycGhhbnM6IDQ7 +IG1hcmdpbjogMHB4IDBweCAwLjVyZW07IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRpb246 +IHJlbGF0aXZlOyI+PHNwYW4gbWQtaW5saW5lPSJwbGFpbiIgY2xhc3M9Im1kLXBsYWluIiBzdHls +ZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPuiuoeWIkjHvvJpHNeS4u+aVsOaNruWvueWkluaO +peWPo+W8gOWPkTwvc3Bhbj48L3A+PC9saT48bGkgY2xhc3M9Im1kLWxpc3QtaXRlbSIgY2lkPSJu +MzAiIG1kdHlwZT0ibGlzdF9pdGVtIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFy +Z2luOiAwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxwIGNpZD0ibjMxIiBtZHR5cGU9InBhcmFn +cmFwaCIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1wIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVy +LWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IG9ycGhhbnM6IDQ7IG1hcmdpbjogMHB4IDBweCAw +LjVyZW07IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJlbGF0aXZlOyI+6K6h5YiS +MjogIDUuMi4x54mI5pys5byA5Y+RPC9wPjwvbGk+PC91bD48L29sPjxkaXYgdGFiaW5kZXg9Ii0x +IiBjaWQ9Im4zOSIgbWR0eXBlPSJociIgY2xhc3M9Im1kLWhyIG1kLWVuZC1ibG9jayIgc3R5bGU9 +ImZvbnQtZmFtaWx5OiAmcXVvdDtPcGVuIFNhbnMmcXVvdDssICZxdW90O0NsZWFyIFNhbnMmcXVv +dDssICZxdW90O0hlbHZldGljYSBOZXVlJnF1b3Q7LCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNl +cmlmOyBib3gtc2l6aW5nOiBib3JkZXItYm94OyBjb2xvcjogcmdiKDUxLCA1MSwgNTEpOyBmb250 +LXNpemU6IDE2cHg7Ij48aHIgc3R5bGU9ImJveC1zaXppbmc6IGNvbnRlbnQtYm94OyBoZWlnaHQ6 +IDJweDsgbWFyZ2luOiAxNnB4IDBweDsgYm9yZGVyOiAwcHggbm9uZTsgcGFkZGluZzogMHB4OyBi +YWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjMxLCAyMzEsIDIzMSk7Ij48L2Rpdj48cCBjaWQ9Im40MCIg +bWR0eXBlPSJwYXJhZ3JhcGgiIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCIgc3R5bGU9ImZvbnQt +ZmFtaWx5OiAmcXVvdDtPcGVuIFNhbnMmcXVvdDssICZxdW90O0NsZWFyIFNhbnMmcXVvdDssICZx +dW90O0hlbHZldGljYSBOZXVlJnF1b3Q7LCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmOyBi +b3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5oZXJpdDsgb3JwaGFuczogNDsg +bWFyZ2luOiAwLjhlbSAwcHg7IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJlbGF0 +aXZlOyBjb2xvcjogcmdiKDUxLCA1MSwgNTEpOyBmb250LXNpemU6IDE2cHg7Ij48c3BhbiBtZC1p +bmxpbmU9InN0cm9uZyIgY2xhc3M9Im1kLXBhaXItcyAiIHN0eWxlPSJib3gtc2l6aW5nOiBib3Jk +ZXItYm94OyI+PHN0cm9uZyBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPjxzcGFuIG1k +LWlubGluZT0icGxhaW4iIGNsYXNzPSJtZC1wbGFpbiIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRl +ci1ib3g7Ij7lpIfms6g8L3NwYW4+PC9zdHJvbmc+PC9zcGFuPjxzcGFuIG1kLWlubGluZT0icGxh +aW4iIGNsYXNzPSJtZC1wbGFpbiBtZC1leHBhbmQiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXIt +Ym94OyI+77ya5pegPC9zcGFuPjwvcD48L2Rpdj48ZGl2IHN0eWxlPSJmb250LWZhbWlseTog5b6u +6L2v6ZuF6buROyI+PGJyPjwvZGl2PjxkaXYgc3BlbGxjaGVjaz0iZmFsc2UiIGlkPSJudGVzLXBj +bWFjLXNpZ25hdHVyZSIgc3R5bGU9ImZvbnQtZmFtaWx5OiDlvq7ova/pm4Xpu5E7IiBkYXRhLW50 +ZXMtc2lnbmF0dXJlPSJ0cnVlIj48ZGl2IHN0eWxlPSJmb250LXNpemU6MTRweDtwYWRkaW5nOjA7 +bWFyZ2luOjAiPjxkaXYgc3R5bGU9InBhZGRpbmctYm90dG9tOjEwcHg7bWFyZ2luLWJvdHRvbTox +MHB4O2Rpc3BsYXk6aW5saW5lLWJsb2NrIj48ZGl2IHN0eWxlPSJmb250LWZhbWlseTomcXVvdDvl +vq7ova/pm4Xpu5EmcXVvdDs7IGZvbnQtc2l6ZTogMTRweDsgY29sb3I6IzAwMDAwMCI+CiAgICA8 +c3R5bGU+CiAgICAgICAgZm9udHsKICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDEuNjsKICAgICAg +ICB9CiAgICA8L3N0eWxlPgo8ZGl2IHN0eWxlPSJmb250LWZhbWlseTomcXVvdDvlvq7ova/pm4Xp +u5EmcXVvdDs7IGZvbnQtc2l6ZTogMTRweDsgY29sb3I6IzAwMDAwMCI+CiAgICA8c3R5bGU+CiAg +ICAgICAgZm9udHsKICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDEuNjsKICAgICAgICB9CiAgICA8 +L3N0eWxlPgo8ZGl2IHN0eWxlPSJmb250LWZhbWlseTomcXVvdDvlvq7ova/pm4Xpu5EmcXVvdDs7 +IGZvbnQtc2l6ZTogMTRweDsgY29sb3I6IzAwMDAwMCI+CiAgICA8c3R5bGU+CiAgICAgICAgZm9u +dHsKICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDEuNjsKICAgICAgICB9CiAgICA8L3N0eWxlPgo8 +ZGl2IHN0eWxlPSJmb250LWZhbWlseTomcXVvdDvlvq7ova/pm4Xpu5EmcXVvdDs7IGZvbnQtc2l6 +ZTogMTRweDsgY29sb3I6IzAwMDAwMCI+CiAgICA8c3R5bGU+CiAgICAgICAgZm9udHsKICAgICAg +ICAgICAgbGluZS1oZWlnaHQ6IDEuNjsKICAgICAgICB9CiAgICA8L3N0eWxlPgo8c3BhbiBzdHls +ZT0iY29sb3I6IHJnYigxOTEsIDE5MSwgMTkxKTsgZm9udC1mYW1pbHk6ICdNaWNyb3NvZnQgWWFo +ZWknOyBmb250LXNpemU6IDEzcHg7IG9ycGhhbnM6IDI7IHdpZG93czogMjsiPkJlc3QgcmVnYXJk +cyw8L3NwYW4+PGRpdiBzdHlsZT0ibWFyZ2luOiAwcHg7IHBhZGRpbmc6IDBweDsgYm9yZGVyOiAw +cHg7IG91dGxpbmU6IDBweDsgZm9udC1mYW1pbHk6IFRhaG9tYSwgQXJpYWwsIFNUSGVpdGksIFNp +bVN1bjsgZm9udC12YXJpYW50LWxpZ2F0dXJlczogbm9ybWFsOyBvcnBoYW5zOiAyOyB3aWRvd3M6 +IDI7IGNsZWFyOiBib3RoOyI+PHNwYW4gc3R5bGU9Im1hcmdpbjogMHB4OyBwYWRkaW5nOiAwcHg7 +IGJvcmRlcjogMHB4OyBvdXRsaW5lOiAwcHg7IGZvbnQtZmFtaWx5OiAmcXVvdDtNaWNyb3NvZnQg +WWFoZWkmcXVvdDs7IGZvbnQtc2l6ZTogMTNweDsgY29sb3I6IHJnYigxOTEsIDE5MSwgMTkxKTsi +PuadqOi9qTwvc3Bhbj48L2Rpdj48ZGl2IHN0eWxlPSJtYXJnaW46IDBweDsgcGFkZGluZzogMHB4 +OyBib3JkZXI6IDBweDsgb3V0bGluZTogMHB4OyBmb250LWZhbWlseTogVGFob21hLCBBcmlhbCwg +U1RIZWl0aSwgU2ltU3VuOyBmb250LXZhcmlhbnQtbGlnYXR1cmVzOiBub3JtYWw7IG9ycGhhbnM6 +IDI7IHdpZG93czogMjsgY2xlYXI6IGJvdGg7Ij48L2Rpdj48ZGl2IHN0eWxlPSJtYXJnaW46IDBw +eDsgcGFkZGluZzogMHB4OyBib3JkZXI6IDBweDsgb3V0bGluZTogMHB4OyBmb250LWZhbWlseTog +VGFob21hLCBBcmlhbCwgU1RIZWl0aSwgU2ltU3VuOyBmb250LXZhcmlhbnQtbGlnYXR1cmVzOiBu +b3JtYWw7IG9ycGhhbnM6IDI7IHdpZG93czogMjsgY2xlYXI6IGJvdGg7Ij48aW1nIHN0eWxlPSJt +YXgtd2lkdGg6IHVuc2V0OyIgc3JjPSJodHRwczovL21haWwtb25saW5lLm5vc2RuLjEyNy5uZXQv +d3pwbW1jL2NlOWY4YjM2ZTFmZmJlNTUzMjljMTk2Yzg0ZmU1MTk3LnBuZyI+PC9kaXY+PGRpdiBz +dHlsZT0ibWFyZ2luOiAwcHg7IHBhZGRpbmc6IDBweDsgYm9yZGVyOiAwcHg7IG91dGxpbmU6IDBw +eDsgZm9udC1mYW1pbHk6IFRhaG9tYSwgQXJpYWwsIFNUSGVpdGksIFNpbVN1bjsgZm9udC12YXJp +YW50LWxpZ2F0dXJlczogbm9ybWFsOyBvcnBoYW5zOiAyOyB3aWRvd3M6IDI7IGNsZWFyOiBib3Ro +OyI+PHNwYW4gc3R5bGU9Im1hcmdpbjogMHB4OyBwYWRkaW5nOiAwcHg7IGJvcmRlcjogMHB4OyBv +dXRsaW5lOiAwcHg7IGZvbnQtZmFtaWx5OiAmcXVvdDtNaWNyb3NvZnQgWWFoZWkmcXVvdDs7IGNv +bG9yOiByZ2IoMTkxLCAxOTEsIDE5MSk7Ij7lnLDlnYDvvJrkuK3lm73Ct+WNl+S6rOi9r+S7tuiw +t+i9r+S7tuWkp+mBkyAxMSDlj7foirHnpZ7lpKfljqYgMi0zRjwvc3Bhbj48L2Rpdj48ZGl2IHN0 +eWxlPSJtYXJnaW46IDBweDsgcGFkZGluZzogMHB4OyBib3JkZXI6IDBweDsgb3V0bGluZTogMHB4 +OyBmb250LWZhbWlseTogVGFob21hLCBBcmlhbCwgU1RIZWl0aSwgU2ltU3VuOyBmb250LXZhcmlh +bnQtbGlnYXR1cmVzOiBub3JtYWw7IG9ycGhhbnM6IDI7IHdpZG93czogMjsgY2xlYXI6IGJvdGg7 +Ij48c3BhbiBzdHlsZT0ibWFyZ2luOiAwcHg7IHBhZGRpbmc6IDBweDsgYm9yZGVyOiAwcHg7IG91 +dGxpbmU6IDBweDsgZm9udC1mYW1pbHk6ICZxdW90O01pY3Jvc29mdCBZYWhlaSZxdW90OzsgY29s +b3I6IHJnYigxOTEsIDE5MSwgMTkxKTsiPuaJi+acuu+8mjE4NzI2MTI4NDg5PC9zcGFuPjwvZGl2 +PjxkaXYgc3R5bGU9Im1hcmdpbjogMHB4OyBwYWRkaW5nOiAwcHg7IGJvcmRlcjogMHB4OyBvdXRs +aW5lOiAwcHg7IGZvbnQtZmFtaWx5OiBUYWhvbWEsIEFyaWFsLCBTVEhlaXRpLCBTaW1TdW47IGZv +bnQtdmFyaWFudC1saWdhdHVyZXM6IG5vcm1hbDsgb3JwaGFuczogMjsgd2lkb3dzOiAyOyBjbGVh +cjogYm90aDsiPjxzcGFuIHN0eWxlPSJtYXJnaW46IDBweDsgcGFkZGluZzogMHB4OyBib3JkZXI6 +IDBweDsgb3V0bGluZTogMHB4OyBmb250LWZhbWlseTogJnF1b3Q7TWljcm9zb2Z0IFlhaGVpJnF1 +b3Q7OyBjb2xvcjogcmdiKDE5MSwgMTkxLCAxOTEpOyI+6YKu566x77yaeWFuZ3h1YW5Ad2l0c29m +dC5jbjwvc3Bhbj48L2Rpdj4KPC9kaXY+CjwvZGl2Pgo8L2Rpdj4KPC9kaXY+PC9kaXY+PC9kaXY+ +PC9kaXY+PC9kaXY+PCEtLfCfmIAtLT48L2Rpdj48L2Rpdj48L2JvZHk+PC9odG1sPg== + +--=_mailmaster-6a18e4a4_0_5f90_=-- diff --git a/media/inbound/2025-10-11_1803_G5开发周报_2025-10-09_--_2025-10-11---9e54ebee-29c5-4866-8eca-df96fee1fc80.eml b/media/inbound/2025-10-11_1803_G5开发周报_2025-10-09_--_2025-10-11---9e54ebee-29c5-4866-8eca-df96fee1fc80.eml new file mode 100644 index 0000000..de9ebbb --- /dev/null +++ b/media/inbound/2025-10-11_1803_G5开发周报_2025-10-09_--_2025-10-11---9e54ebee-29c5-4866-8eca-df96fee1fc80.eml @@ -0,0 +1,269 @@ +Date: Sat, 11 Oct 2025 18:03:42 +0800 +From: =?utf-8?B?5p2o6L2p?= +To: =?utf-8?B?5YiY5by6?= +Cc: =?utf-8?B?5bGI5paw6b6Z?= , =?utf-8?B?5pyx5paM?= + , =?utf-8?B?6ZmI5piO?= , + =?utf-8?Q?xym=40witsoft.cn?= +Message-ID: <2CFD9994-080E-49AA-89A1-22FA59768A0E@witsoft.cn> +Subject: =?utf-8?B?RzXlvIDlj5HlkajmiqXjgJAyMDI1LTEwLTA5IC0tICAyMDI1LTEw?= + =?utf-8?B?LTEx44CR?= +MIME-Version: 1.0 +Content-Type: multipart/alternative; boundary="=_mailmaster-6a18e4a4_0_1649_=" + +--=_mailmaster-6a18e4a4_0_1649_= +Content-Type: text/plain; charset="utf-8" +Content-Transfer-Encoding: base64 + +5oKo5aW977yB5Lul5LiL5piv5oiR5pys5ZGo55qE5bel5L2c5oC757uT5Y+K5LiL5ZGo6K6h5YiS +77yM6K+35a6h6ZiF44CCCuS4gOOAgeacrOWRqOW3peS9nOaAu+e7kwrph43ngrnlt6XkvZzlrozm +iJDmg4XlhrUK5Lu75YqhMe+8mkc15Li75pWw5o2uNS4yLjHniYjmnKzlvIDlj5EK5Lu75YqhMu+8 +mkc15Li75pWw5o2u5a+55aSW5o6l5Y+j5byA5Y+R5ZKM5rWL6K+VCuW4uOinhOW3peS9nArml6Xl +uLjkuovliqEx77yaMjAyNS0xMC0wOSDkuLvmlbDmja7pnIDmsYLor4TlrqHlkozlr7nlpJbmjqXl +j6PlvIDlj5EK5pel5bi45LqL5YqhMu+8mjIwMjUtMTAtMTAg5Y2V5L2N5o2i566X57uf5LiA566h +55CG6ZyA5rGC5pa55qGI6K+E5a6h5ZKM5byA5Y+R6IGU6LCDIArml6XluLjkuovliqEz77yaMjAy +NS0xMC0xMSDkuLvmlbDmja7pnIDmsYLlvIDlj5HlkozljZXkvY3mjaLnrpflhbPogZTpnIDmsYLo +vazmtYsgCuS6jOOAgeS4i+WRqOW3peS9nOiuoeWIkgrph43ngrnku7vliqEK6K6h5YiSMe+8mkc1 +5Li75pWw5o2u5a+55aSW5o6l5Y+j5byA5Y+RCuiuoeWIkjI6IDUuMi4x54mI5pys5byA5Y+RCuWk +h+azqO+8muaXoApCZXN0IHJlZ2FyZHMs5p2o6L2pCuWcsOWdgO+8muS4reWbvcK35Y2X5Lqs6L2v +5Lu26LC36L2v5Lu25aSn6YGTIDExIOWPt+iKseelnuWkp+WOpiAyLTNGCuaJi+acuu+8mjE4NzI2 +MTI4NDg5CumCrueuse+8mnlhbmd4dWFuQHdpdHNvZnQuY24= + +--=_mailmaster-6a18e4a4_0_1649_= +Content-Type: text/html; charset="utf-8" +Content-Transfer-Encoding: base64 + +PGh0bWw+PGhlYWQ+PG1ldGEgaHR0cC1lcXVpdj0nQ29udGVudC1UeXBlJyBjb250ZW50PSd0ZXh0 +L2h0bWw7IGNoYXJzZXQ9VVRGLTgnPjwvaGVhZD48Ym9keSBzdHlsZT1saW5lLWhlaWdodDogMS41 +O2ZvbnQtZmFtaWx5OiAi5b6u6L2v6ZuF6buRIj48ZGl2ICBzdHlsZT0iZm9udC1mYW1pbHk6IOW+ +rui9r+mbhem7kTsiPjxkaXYgc3R5bGU9IiI+PGRpdiBzdHlsZT0iIj48ZGl2IHN0eWxlPSIiPjxw +IGNpZD0ibjAiIG1kdHlwZT0icGFyYWdyYXBoIiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLXAgbWQt +Zm9jdXMiIHN0eWxlPSJmb250LWZhbWlseTogJnF1b3Q7T3BlbiBTYW5zJnF1b3Q7LCAmcXVvdDtD +bGVhciBTYW5zJnF1b3Q7LCAmcXVvdDtIZWx2ZXRpY2EgTmV1ZSZxdW90OywgSGVsdmV0aWNhLCBB +cmlhbCwgc2Fucy1zZXJpZjsgYm94LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGlu +aGVyaXQ7IG9ycGhhbnM6IDQ7IG1hcmdpbjogMC44ZW0gMHB4OyB3aGl0ZS1zcGFjZTogcHJlLXdy +YXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsgY29sb3I6IHJnYig1MSwgNTEsIDUxKTsgZm9udC1zaXpl +OiAxNnB4OyI+PHNwYW4gbWQtaW5saW5lPSJwbGFpbiIgY2xhc3M9Im1kLXBsYWluIG1kLWV4cGFu +ZCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij7mgqjlpb3vvIHku6XkuIvmmK/miJHm +nKzlkajnmoTlt6XkvZzmgLvnu5Plj4rkuIvlkajorqHliJLvvIzor7flrqHpmIXjgII8L3NwYW4+ +PC9wPjxkaXYgdGFiaW5kZXg9Ii0xIiBjaWQ9Im4yIiBtZHR5cGU9ImhyIiBjbGFzcz0ibWQtaHIg +bWQtZW5kLWJsb2NrIiBzdHlsZT0iZm9udC1mYW1pbHk6ICZxdW90O09wZW4gU2FucyZxdW90Oywg +JnF1b3Q7Q2xlYXIgU2FucyZxdW90OywgJnF1b3Q7SGVsdmV0aWNhIE5ldWUmcXVvdDssIEhlbHZl +dGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7IGNvbG9yOiBy +Z2IoNTEsIDUxLCA1MSk7IGZvbnQtc2l6ZTogMTZweDsiPjxociBzdHlsZT0iYm94LXNpemluZzog +Y29udGVudC1ib3g7IGhlaWdodDogMnB4OyBtYXJnaW46IDE2cHggMHB4OyBib3JkZXI6IDBweCBu +b25lOyBwYWRkaW5nOiAwcHg7IGJhY2tncm91bmQtY29sb3I6IHJnYigyMzEsIDIzMSwgMjMxKTsi +PjwvZGl2PjxoMyBjaWQ9Im4zIiBtZHR5cGU9ImhlYWRpbmciIGNsYXNzPSJtZC1lbmQtYmxvY2sg +bWQtaGVhZGluZyIgc3R5bGU9ImZvbnQtZmFtaWx5OiAmcXVvdDtPcGVuIFNhbnMmcXVvdDssICZx +dW90O0NsZWFyIFNhbnMmcXVvdDssICZxdW90O0hlbHZldGljYSBOZXVlJnF1b3Q7LCBIZWx2ZXRp +Y2EsIEFyaWFsLCBzYW5zLXNlcmlmOyBib3gtc2l6aW5nOiBib3JkZXItYm94OyBicmVhay1hZnRl +cjogYXZvaWQtcGFnZTsgYnJlYWstaW5zaWRlOiBhdm9pZDsgb3JwaGFuczogNDsgZm9udC1zaXpl +OiAxLjVlbTsgbWFyZ2luLXRvcDogMXJlbTsgbWFyZ2luLWJvdHRvbTogMXJlbTsgcG9zaXRpb246 +IHJlbGF0aXZlOyBsaW5lLWhlaWdodDogMS40MzsgY3Vyc29yOiB0ZXh0OyB3aGl0ZS1zcGFjZTog +cHJlLXdyYXA7IGNvbG9yOiByZ2IoNTEsIDUxLCA1MSk7Ij48c3BhbiBtZC1pbmxpbmU9InN0cm9u +ZyIgY2xhc3M9Im1kLXBhaXItcyAiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+PHN0 +cm9uZyBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPjxzcGFuIG1kLWlubGluZT0icGxh +aW4iIGNsYXNzPSJtZC1wbGFpbiIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij7kuIDj +gIHmnKzlkajlt6XkvZzmgLvnu5M8L3NwYW4+PC9zdHJvbmc+PC9zcGFuPjwvaDM+PG9sIGNsYXNz +PSJvbC1saXN0IiBzdGFydD0iIiBjaWQ9Im40IiBtZHR5cGU9Imxpc3QiIHN0eWxlPSJmb250LWZh +bWlseTogJnF1b3Q7T3BlbiBTYW5zJnF1b3Q7LCAmcXVvdDtDbGVhciBTYW5zJnF1b3Q7LCAmcXVv +dDtIZWx2ZXRpY2EgTmV1ZSZxdW90OywgSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjsgYm94 +LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBhZGRpbmctbGVmdDogMzBweDsgcG9z +aXRpb246IHJlbGF0aXZlOyBjb2xvcjogcmdiKDUxLCA1MSwgNTEpOyBmb250LXNpemU6IDE2cHg7 +Ij48bGkgY2xhc3M9Im1kLWxpc3QtaXRlbSIgY2lkPSJuNSIgbWR0eXBlPSJsaXN0X2l0ZW0iIHN0 +eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcG9zaXRpb246IHJlbGF0 +aXZlOyI+PHAgY2lkPSJuNiIgbWR0eXBlPSJwYXJhZ3JhcGgiIGNsYXNzPSJtZC1lbmQtYmxvY2sg +bWQtcCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhlcml0 +OyBvcnBoYW5zOiA0OyBtYXJnaW46IDBweCAwcHggMC41cmVtOyB3aGl0ZS1zcGFjZTogcHJlLXdy +YXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxzcGFuIG1kLWlubGluZT0ic3Ryb25nIiBjbGFzcz0i +bWQtcGFpci1zICIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij48c3Ryb25nIHN0eWxl +PSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+PHNwYW4gbWQtaW5saW5lPSJwbGFpbiIgY2xhc3M9 +Im1kLXBsYWluIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPumHjeeCueW3peS9nOWu +jOaIkOaDheWGtTwvc3Bhbj48L3N0cm9uZz48L3NwYW4+PC9wPjwvbGk+PHVsIGNsYXNzPSJ1bC1s +aXN0IiBjaWQ9Im43IiBtZHR5cGU9Imxpc3QiIGRhdGEtbWFyaz0iLSIgc3R5bGU9ImJveC1zaXpp +bmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBwYWRkaW5nLWxlZnQ6IDMwcHg7IHBvc2l0aW9u +OiByZWxhdGl2ZTsiPjxsaSBjbGFzcz0ibWQtbGlzdC1pdGVtIiBjaWQ9Im44IiBtZHR5cGU9Imxp +c3RfaXRlbSIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBwb3Np +dGlvbjogcmVsYXRpdmU7Ij48cCBjaWQ9Im45IiBtZHR5cGU9InBhcmFncmFwaCIgY2xhc3M9Im1k +LWVuZC1ibG9jayBtZC1wIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1oZWln +aHQ6IGluaGVyaXQ7IG9ycGhhbnM6IDQ7IG1hcmdpbjogMHB4IDBweCAwLjVyZW07IHdoaXRlLXNw +YWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHNwYW4gbWQtaW5saW5lPSJwbGFp +biIgY2xhc3M9Im1kLXBsYWluIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPuS7u+WK +oTHvvJpHNeS4u+aVsOaNrjUuMi4x54mI5pys5byA5Y+RPC9zcGFuPjwvcD48L2xpPjxsaSBjbGFz +cz0ibWQtbGlzdC1pdGVtIiBjaWQ9Im4xMCIgbWR0eXBlPSJsaXN0X2l0ZW0iIHN0eWxlPSJib3gt +c2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHAg +Y2lkPSJuMTEiIG1kdHlwZT0icGFyYWdyYXBoIiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLXAiIHN0 +eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5oZXJpdDsgb3JwaGFu +czogNDsgbWFyZ2luOiAwcHggMHB4IDAuNXJlbTsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyBwb3Np +dGlvbjogcmVsYXRpdmU7Ij48c3BhbiBtZC1pbmxpbmU9InBsYWluIiBjbGFzcz0ibWQtcGxhaW4i +IHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+5Lu75YqhMu+8mjwvc3Bhbj5HNeS4u+aV +sOaNruWvueWkluaOpeWPo+W8gOWPkeWSjOa1i+ivlTwvcD48L2xpPjwvdWw+PGxpIGNsYXNzPSJt +ZC1saXN0LWl0ZW0iIGNpZD0ibjEyIiBtZHR5cGU9Imxpc3RfaXRlbSIgc3R5bGU9ImJveC1zaXpp +bmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48cCBjaWQ9 +Im4xMyIgbWR0eXBlPSJwYXJhZ3JhcGgiIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCIgc3R5bGU9 +ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhlcml0OyBvcnBoYW5zOiA0 +OyBtYXJnaW46IDBweCAwcHggMC41cmVtOyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0aW9u +OiByZWxhdGl2ZTsiPjxzcGFuIG1kLWlubGluZT0ic3Ryb25nIiBjbGFzcz0ibWQtcGFpci1zICIg +c3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij48c3Ryb25nIHN0eWxlPSJib3gtc2l6aW5n +OiBib3JkZXItYm94OyI+PHNwYW4gbWQtaW5saW5lPSJwbGFpbiIgY2xhc3M9Im1kLXBsYWluIiBz +dHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPuW4uOinhOW3peS9nDwvc3Bhbj48L3N0cm9u +Zz48L3NwYW4+PC9wPjwvbGk+PHVsIGNsYXNzPSJ1bC1saXN0IiBjaWQ9Im4xNCIgbWR0eXBlPSJs +aXN0IiBkYXRhLW1hcms9Ii0iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46 +IDBweDsgcGFkZGluZy1sZWZ0OiAzMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48bGkgY2xhc3M9 +Im1kLWxpc3QtaXRlbSIgY2lkPSJuMTUiIG1kdHlwZT0ibGlzdF9pdGVtIiBzdHlsZT0iYm94LXNp +emluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxwIGNp +ZD0ibjE2IiBtZHR5cGU9InBhcmFncmFwaCIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1wIiBzdHls +ZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IG9ycGhhbnM6 +IDQ7IG1hcmdpbjogMHB4IDBweCAwLjVyZW07IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRp +b246IHJlbGF0aXZlOyI+PHNwYW4gbWQtaW5saW5lPSJwbGFpbiIgY2xhc3M9Im1kLXBsYWluIiBz +dHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPuaXpeW4uOS6i+WKoTHvvJoyMDI1LTEwLTA5 +IOS4u+aVsOaNrumcgOaxguivhOWuoeWSjOWvueWkluaOpeWPo+W8gOWPkTwvc3Bhbj48L3A+PC9s +aT48L3VsPjwvb2w+PG9sIGNsYXNzPSJvbC1saXN0IiBzdGFydD0iIiBjaWQ9Im40IiBtZHR5cGU9 +Imxpc3QiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcGFkZGlu +Zy1sZWZ0OiAzMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48dWwgY2xhc3M9InVsLWxpc3QiIGNp +ZD0ibjE0IiBtZHR5cGU9Imxpc3QiIGRhdGEtbWFyaz0iLSIgc3R5bGU9ImZvbnQtZmFtaWx5OiDl +vq7ova/pm4Xpu5E7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBwYWRkaW5n +LWxlZnQ6IDMwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxsaSBjbGFzcz0ibWQtbGlzdC1pdGVt +IiBjaWQ9Im4xNSIgbWR0eXBlPSJsaXN0X2l0ZW0iIHN0eWxlPSJjb2xvcjogcmdiKDUxLCA1MSwg +NTEpOyBmb250LWZhbWlseTogJnF1b3Q7T3BlbiBTYW5zJnF1b3Q7LCAmcXVvdDtDbGVhciBTYW5z +JnF1b3Q7LCAmcXVvdDtIZWx2ZXRpY2EgTmV1ZSZxdW90OywgSGVsdmV0aWNhLCBBcmlhbCwgc2Fu +cy1zZXJpZjsgZm9udC1zaXplOiAxNnB4OyBib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46 +IDBweDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHAgY2lkPSJuMTYiIG1kdHlwZT0icGFyYWdyYXBo +IiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLXAiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94 +OyBsaW5lLWhlaWdodDogaW5oZXJpdDsgb3JwaGFuczogNDsgbWFyZ2luOiAwcHggMHB4IDAuNXJl +bTsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48c3BhbiBtZC1p +bmxpbmU9InBsYWluIiBjbGFzcz0ibWQtcGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXIt +Ym94OyI+5pel5bi45LqL5YqhMu+8mjIwMjUtMTAtMTAg5Y2V5L2N5o2i566X57uf5LiA566h55CG +6ZyA5rGC5pa55qGI6K+E5a6h5ZKM5byA5Y+R6IGU6LCDCjwvc3Bhbj48L3A+PC9saT48bGkgY2xh +c3M9Im1kLWxpc3QtaXRlbSIgY2lkPSJuMTciIG1kdHlwZT0ibGlzdF9pdGVtIiBzdHlsZT0iY29s +b3I6IHJnYig1MSwgNTEsIDUxKTsgZm9udC1mYW1pbHk6ICZxdW90O09wZW4gU2FucyZxdW90Oywg +JnF1b3Q7Q2xlYXIgU2FucyZxdW90OywgJnF1b3Q7SGVsdmV0aWNhIE5ldWUmcXVvdDssIEhlbHZl +dGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTZweDsgYm94LXNpemluZzogYm9y +ZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxwIGNpZD0ibjE4IiBt +ZHR5cGU9InBhcmFncmFwaCIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1wIiBzdHlsZT0iYm94LXNp +emluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IG9ycGhhbnM6IDQ7IG1hcmdp +bjogMHB4IDBweCAwLjVyZW07IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJlbGF0 +aXZlOyI+PHNwYW4gbWQtaW5saW5lPSJwbGFpbiIgY2xhc3M9Im1kLXBsYWluIiBzdHlsZT0iYm94 +LXNpemluZzogYm9yZGVyLWJveDsiPuaXpeW4uOS6i+WKoTPvvJoyMDI1LTEwLTExIOS4u+aVsOaN +rumcgOaxguW8gOWPkeWSjOWNleS9jeaNoueul+WFs+iBlOmcgOaxgui9rOa1iw08L3NwYW4+PC9w +PjwvbGk+PC91bD48L29sPjxoMyBjaWQ9Im4yNSIgbWR0eXBlPSJoZWFkaW5nIiBjbGFzcz0ibWQt +ZW5kLWJsb2NrIG1kLWhlYWRpbmciIHN0eWxlPSJmb250LWZhbWlseTogJnF1b3Q7T3BlbiBTYW5z +JnF1b3Q7LCAmcXVvdDtDbGVhciBTYW5zJnF1b3Q7LCAmcXVvdDtIZWx2ZXRpY2EgTmV1ZSZxdW90 +OywgSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjsgYm94LXNpemluZzogYm9yZGVyLWJveDsg +YnJlYWstYWZ0ZXI6IGF2b2lkLXBhZ2U7IGJyZWFrLWluc2lkZTogYXZvaWQ7IG9ycGhhbnM6IDQ7 +IGZvbnQtc2l6ZTogMS41ZW07IG1hcmdpbi10b3A6IDFyZW07IG1hcmdpbi1ib3R0b206IDFyZW07 +IHBvc2l0aW9uOiByZWxhdGl2ZTsgbGluZS1oZWlnaHQ6IDEuNDM7IGN1cnNvcjogdGV4dDsgd2hp +dGUtc3BhY2U6IHByZS13cmFwOyBjb2xvcjogcmdiKDUxLCA1MSwgNTEpOyI+PHNwYW4gbWQtaW5s +aW5lPSJzdHJvbmciIGNsYXNzPSJtZC1wYWlyLXMgIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVy +LWJveDsiPjxzdHJvbmcgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij48c3BhbiBtZC1p +bmxpbmU9InBsYWluIiBjbGFzcz0ibWQtcGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXIt +Ym94OyI+5LqM44CB5LiL5ZGo5bel5L2c6K6h5YiSPC9zcGFuPjwvc3Ryb25nPjwvc3Bhbj48L2gz +PjxvbCBjbGFzcz0ib2wtbGlzdCIgc3RhcnQ9IiIgY2lkPSJuMjYiIG1kdHlwZT0ibGlzdCIgc3R5 +bGU9ImZvbnQtZmFtaWx5OiDlvq7ova/pm4Xpu5E7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1h +cmdpbjogMHB4OyBwYWRkaW5nLWxlZnQ6IDMwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxsaSBj +bGFzcz0ibWQtbGlzdC1pdGVtIiBjaWQ9Im4yNyIgbWR0eXBlPSJsaXN0X2l0ZW0iIHN0eWxlPSJj +b2xvcjogcmdiKDUxLCA1MSwgNTEpOyBmb250LWZhbWlseTogJnF1b3Q7T3BlbiBTYW5zJnF1b3Q7 +LCAmcXVvdDtDbGVhciBTYW5zJnF1b3Q7LCAmcXVvdDtIZWx2ZXRpY2EgTmV1ZSZxdW90OywgSGVs +dmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxNnB4OyBib3gtc2l6aW5nOiBi +b3JkZXItYm94OyBtYXJnaW46IDBweDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHAgY2lkPSJuMjgi +IG1kdHlwZT0icGFyYWdyYXBoIiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLXAiIHN0eWxlPSJib3gt +c2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5oZXJpdDsgb3JwaGFuczogNDsgbWFy +Z2luOiAwcHggMHB4IDAuNXJlbTsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyBwb3NpdGlvbjogcmVs +YXRpdmU7Ij48c3BhbiBtZC1pbmxpbmU9InN0cm9uZyIgY2xhc3M9Im1kLXBhaXItcyAiIHN0eWxl +PSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+PHN0cm9uZyBzdHlsZT0iYm94LXNpemluZzogYm9y +ZGVyLWJveDsiPjxzcGFuIG1kLWlubGluZT0icGxhaW4iIGNsYXNzPSJtZC1wbGFpbiIgc3R5bGU9 +ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij7ph43ngrnku7vliqE8L3NwYW4+PC9zdHJvbmc+PC9z +cGFuPjwvcD48L2xpPjx1bCBjbGFzcz0idWwtbGlzdCIgY2lkPSJuMjkiIG1kdHlwZT0ibGlzdCIg +ZGF0YS1tYXJrPSItIiBzdHlsZT0iY29sb3I6IHJnYig1MSwgNTEsIDUxKTsgZm9udC1mYW1pbHk6 +ICZxdW90O09wZW4gU2FucyZxdW90OywgJnF1b3Q7Q2xlYXIgU2FucyZxdW90OywgJnF1b3Q7SGVs +dmV0aWNhIE5ldWUmcXVvdDssIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7IGZvbnQtc2l6 +ZTogMTZweDsgYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBhZGRpbmctbGVm +dDogMzBweDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PGxpIGNsYXNzPSJtZC1saXN0LWl0ZW0iIGNp +ZD0ibjMwIiBtZHR5cGU9Imxpc3RfaXRlbSIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7 +IG1hcmdpbjogMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48cCBjaWQ9Im4zMSIgbWR0eXBlPSJw +YXJhZ3JhcGgiIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCIgc3R5bGU9ImJveC1zaXppbmc6IGJv +cmRlci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhlcml0OyBvcnBoYW5zOiA0OyBtYXJnaW46IDBweCAw +cHggMC41cmVtOyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxz +cGFuIG1kLWlubGluZT0icGxhaW4iIGNsYXNzPSJtZC1wbGFpbiIgc3R5bGU9ImJveC1zaXppbmc6 +IGJvcmRlci1ib3g7Ij7orqHliJIx77yaRzXkuLvmlbDmja7lr7nlpJbmjqXlj6PlvIDlj5E8L3Nw +YW4+PC9wPjwvbGk+PGxpIGNsYXNzPSJtZC1saXN0LWl0ZW0iIGNpZD0ibjMwIiBtZHR5cGU9Imxp +c3RfaXRlbSIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBwb3Np +dGlvbjogcmVsYXRpdmU7Ij48cCBjaWQ9Im4zMSIgbWR0eXBlPSJwYXJhZ3JhcGgiIGNsYXNzPSJt +ZC1lbmQtYmxvY2sgbWQtcCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGxpbmUtaGVp +Z2h0OiBpbmhlcml0OyBvcnBoYW5zOiA0OyBtYXJnaW46IDBweCAwcHggMC41cmVtOyB3aGl0ZS1z +cGFjZTogcHJlLXdyYXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPuiuoeWIkjI6ICA1LjIuMeeJiOac +rOW8gOWPkTwvcD48L2xpPjwvdWw+PC9vbD48ZGl2IHRhYmluZGV4PSItMSIgY2lkPSJuMzkiIG1k +dHlwZT0iaHIiIGNsYXNzPSJtZC1ociBtZC1lbmQtYmxvY2siIHN0eWxlPSJmb250LWZhbWlseTog +JnF1b3Q7T3BlbiBTYW5zJnF1b3Q7LCAmcXVvdDtDbGVhciBTYW5zJnF1b3Q7LCAmcXVvdDtIZWx2 +ZXRpY2EgTmV1ZSZxdW90OywgSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjsgYm94LXNpemlu +ZzogYm9yZGVyLWJveDsgY29sb3I6IHJnYig1MSwgNTEsIDUxKTsgZm9udC1zaXplOiAxNnB4OyI+ +PGhyIHN0eWxlPSJib3gtc2l6aW5nOiBjb250ZW50LWJveDsgaGVpZ2h0OiAycHg7IG1hcmdpbjog +MTZweCAwcHg7IGJvcmRlcjogMHB4IG5vbmU7IHBhZGRpbmc6IDBweDsgYmFja2dyb3VuZC1jb2xv +cjogcmdiKDIzMSwgMjMxLCAyMzEpOyI+PC9kaXY+PHAgY2lkPSJuNDAiIG1kdHlwZT0icGFyYWdy +YXBoIiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLXAiIHN0eWxlPSJmb250LWZhbWlseTogJnF1b3Q7 +T3BlbiBTYW5zJnF1b3Q7LCAmcXVvdDtDbGVhciBTYW5zJnF1b3Q7LCAmcXVvdDtIZWx2ZXRpY2Eg +TmV1ZSZxdW90OywgSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjsgYm94LXNpemluZzogYm9y +ZGVyLWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IG9ycGhhbnM6IDQ7IG1hcmdpbjogMC44ZW0g +MHB4OyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsgY29sb3I6IHJn +Yig1MSwgNTEsIDUxKTsgZm9udC1zaXplOiAxNnB4OyI+PHNwYW4gbWQtaW5saW5lPSJzdHJvbmci +IGNsYXNzPSJtZC1wYWlyLXMgIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPjxzdHJv +bmcgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij48c3BhbiBtZC1pbmxpbmU9InBsYWlu +IiBjbGFzcz0ibWQtcGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+5aSH5rOo +PC9zcGFuPjwvc3Ryb25nPjwvc3Bhbj48c3BhbiBtZC1pbmxpbmU9InBsYWluIiBjbGFzcz0ibWQt +cGxhaW4gbWQtZXhwYW5kIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPu+8muaXoDwv +c3Bhbj48L3A+PC9kaXY+PGRpdiBzdHlsZT0iZm9udC1mYW1pbHk6IOW+rui9r+mbhem7kTsiPjxi +cj48L2Rpdj48ZGl2IHNwZWxsY2hlY2s9ImZhbHNlIiBpZD0ibnRlcy1wY21hYy1zaWduYXR1cmUi +IHN0eWxlPSJmb250LWZhbWlseTog5b6u6L2v6ZuF6buROyIgZGF0YS1udGVzLXNpZ25hdHVyZT0i +dHJ1ZSI+PGRpdiBzdHlsZT0iZm9udC1zaXplOjE0cHg7cGFkZGluZzowO21hcmdpbjowIj48ZGl2 +IHN0eWxlPSJwYWRkaW5nLWJvdHRvbToxMHB4O21hcmdpbi1ib3R0b206MTBweDtkaXNwbGF5Omlu +bGluZS1ibG9jayI+PGRpdiBzdHlsZT0iZm9udC1mYW1pbHk6JnF1b3Q75b6u6L2v6ZuF6buRJnF1 +b3Q7OyBmb250LXNpemU6IDE0cHg7IGNvbG9yOiMwMDAwMDAiPgogICAgPHN0eWxlPgogICAgICAg +IGZvbnR7CiAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAxLjY7CiAgICAgICAgfQogICAgPC9zdHls +ZT4KPGRpdiBzdHlsZT0iZm9udC1mYW1pbHk6JnF1b3Q75b6u6L2v6ZuF6buRJnF1b3Q7OyBmb250 +LXNpemU6IDE0cHg7IGNvbG9yOiMwMDAwMDAiPgogICAgPHN0eWxlPgogICAgICAgIGZvbnR7CiAg +ICAgICAgICAgIGxpbmUtaGVpZ2h0OiAxLjY7CiAgICAgICAgfQogICAgPC9zdHlsZT4KPGRpdiBz +dHlsZT0iZm9udC1mYW1pbHk6JnF1b3Q75b6u6L2v6ZuF6buRJnF1b3Q7OyBmb250LXNpemU6IDE0 +cHg7IGNvbG9yOiMwMDAwMDAiPgogICAgPHN0eWxlPgogICAgICAgIGZvbnR7CiAgICAgICAgICAg +IGxpbmUtaGVpZ2h0OiAxLjY7CiAgICAgICAgfQogICAgPC9zdHlsZT4KPGRpdiBzdHlsZT0iZm9u +dC1mYW1pbHk6JnF1b3Q75b6u6L2v6ZuF6buRJnF1b3Q7OyBmb250LXNpemU6IDE0cHg7IGNvbG9y +OiMwMDAwMDAiPgogICAgPHN0eWxlPgogICAgICAgIGZvbnR7CiAgICAgICAgICAgIGxpbmUtaGVp +Z2h0OiAxLjY7CiAgICAgICAgfQogICAgPC9zdHlsZT4KPHNwYW4gc3R5bGU9ImNvbG9yOiByZ2Io +MTkxLCAxOTEsIDE5MSk7IGZvbnQtZmFtaWx5OiAnTWljcm9zb2Z0IFlhaGVpJzsgZm9udC1zaXpl +OiAxM3B4OyBvcnBoYW5zOiAyOyB3aWRvd3M6IDI7Ij5CZXN0IHJlZ2FyZHMsPC9zcGFuPjxkaXYg +c3R5bGU9Im1hcmdpbjogMHB4OyBwYWRkaW5nOiAwcHg7IGJvcmRlcjogMHB4OyBvdXRsaW5lOiAw +cHg7IGZvbnQtZmFtaWx5OiBUYWhvbWEsIEFyaWFsLCBTVEhlaXRpLCBTaW1TdW47IGZvbnQtdmFy +aWFudC1saWdhdHVyZXM6IG5vcm1hbDsgb3JwaGFuczogMjsgd2lkb3dzOiAyOyBjbGVhcjogYm90 +aDsiPjxzcGFuIHN0eWxlPSJtYXJnaW46IDBweDsgcGFkZGluZzogMHB4OyBib3JkZXI6IDBweDsg +b3V0bGluZTogMHB4OyBmb250LWZhbWlseTogJnF1b3Q7TWljcm9zb2Z0IFlhaGVpJnF1b3Q7OyBm +b250LXNpemU6IDEzcHg7IGNvbG9yOiByZ2IoMTkxLCAxOTEsIDE5MSk7Ij7mnajovak8L3NwYW4+ +PC9kaXY+PGRpdiBzdHlsZT0ibWFyZ2luOiAwcHg7IHBhZGRpbmc6IDBweDsgYm9yZGVyOiAwcHg7 +IG91dGxpbmU6IDBweDsgZm9udC1mYW1pbHk6IFRhaG9tYSwgQXJpYWwsIFNUSGVpdGksIFNpbVN1 +bjsgZm9udC12YXJpYW50LWxpZ2F0dXJlczogbm9ybWFsOyBvcnBoYW5zOiAyOyB3aWRvd3M6IDI7 +IGNsZWFyOiBib3RoOyI+PC9kaXY+PGRpdiBzdHlsZT0ibWFyZ2luOiAwcHg7IHBhZGRpbmc6IDBw +eDsgYm9yZGVyOiAwcHg7IG91dGxpbmU6IDBweDsgZm9udC1mYW1pbHk6IFRhaG9tYSwgQXJpYWws +IFNUSGVpdGksIFNpbVN1bjsgZm9udC12YXJpYW50LWxpZ2F0dXJlczogbm9ybWFsOyBvcnBoYW5z +OiAyOyB3aWRvd3M6IDI7IGNsZWFyOiBib3RoOyI+PGltZyBzdHlsZT0ibWF4LXdpZHRoOiB1bnNl +dDsiIHNyYz0iaHR0cHM6Ly9tYWlsLW9ubGluZS5ub3Nkbi4xMjcubmV0L3d6cG1tYy9jZTlmOGIz +NmUxZmZiZTU1MzI5YzE5NmM4NGZlNTE5Ny5wbmciPjwvZGl2PjxkaXYgc3R5bGU9Im1hcmdpbjog +MHB4OyBwYWRkaW5nOiAwcHg7IGJvcmRlcjogMHB4OyBvdXRsaW5lOiAwcHg7IGZvbnQtZmFtaWx5 +OiBUYWhvbWEsIEFyaWFsLCBTVEhlaXRpLCBTaW1TdW47IGZvbnQtdmFyaWFudC1saWdhdHVyZXM6 +IG5vcm1hbDsgb3JwaGFuczogMjsgd2lkb3dzOiAyOyBjbGVhcjogYm90aDsiPjxzcGFuIHN0eWxl +PSJtYXJnaW46IDBweDsgcGFkZGluZzogMHB4OyBib3JkZXI6IDBweDsgb3V0bGluZTogMHB4OyBm +b250LWZhbWlseTogJnF1b3Q7TWljcm9zb2Z0IFlhaGVpJnF1b3Q7OyBjb2xvcjogcmdiKDE5MSwg +MTkxLCAxOTEpOyI+5Zyw5Z2A77ya5Lit5Zu9wrfljZfkuqzova/ku7bosLfova/ku7blpKfpgZMg +MTEg5Y+36Iqx56We5aSn5Y6mIDItM0Y8L3NwYW4+PC9kaXY+PGRpdiBzdHlsZT0ibWFyZ2luOiAw +cHg7IHBhZGRpbmc6IDBweDsgYm9yZGVyOiAwcHg7IG91dGxpbmU6IDBweDsgZm9udC1mYW1pbHk6 +IFRhaG9tYSwgQXJpYWwsIFNUSGVpdGksIFNpbVN1bjsgZm9udC12YXJpYW50LWxpZ2F0dXJlczog +bm9ybWFsOyBvcnBoYW5zOiAyOyB3aWRvd3M6IDI7IGNsZWFyOiBib3RoOyI+PHNwYW4gc3R5bGU9 +Im1hcmdpbjogMHB4OyBwYWRkaW5nOiAwcHg7IGJvcmRlcjogMHB4OyBvdXRsaW5lOiAwcHg7IGZv +bnQtZmFtaWx5OiAmcXVvdDtNaWNyb3NvZnQgWWFoZWkmcXVvdDs7IGNvbG9yOiByZ2IoMTkxLCAx +OTEsIDE5MSk7Ij7miYvmnLrvvJoxODcyNjEyODQ4OTwvc3Bhbj48L2Rpdj48ZGl2IHN0eWxlPSJt +YXJnaW46IDBweDsgcGFkZGluZzogMHB4OyBib3JkZXI6IDBweDsgb3V0bGluZTogMHB4OyBmb250 +LWZhbWlseTogVGFob21hLCBBcmlhbCwgU1RIZWl0aSwgU2ltU3VuOyBmb250LXZhcmlhbnQtbGln +YXR1cmVzOiBub3JtYWw7IG9ycGhhbnM6IDI7IHdpZG93czogMjsgY2xlYXI6IGJvdGg7Ij48c3Bh +biBzdHlsZT0ibWFyZ2luOiAwcHg7IHBhZGRpbmc6IDBweDsgYm9yZGVyOiAwcHg7IG91dGxpbmU6 +IDBweDsgZm9udC1mYW1pbHk6ICZxdW90O01pY3Jvc29mdCBZYWhlaSZxdW90OzsgY29sb3I6IHJn +YigxOTEsIDE5MSwgMTkxKTsiPumCrueuse+8mnlhbmd4dWFuQHdpdHNvZnQuY248L3NwYW4+PC9k +aXY+CjwvZGl2Pgo8L2Rpdj4KPC9kaXY+CjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2Pjwh +LS3wn5iALS0+PC9kaXY+PC9kaXY+PC9ib2R5PjwvaHRtbD4= + +--=_mailmaster-6a18e4a4_0_1649_=-- diff --git a/media/inbound/2025-10-17_1700_G5开发周报_2025-10-13_--_2025-10-17---1545a6a6-156c-412d-8cd3-ba060d3f7217.eml b/media/inbound/2025-10-17_1700_G5开发周报_2025-10-13_--_2025-10-17---1545a6a6-156c-412d-8cd3-ba060d3f7217.eml new file mode 100644 index 0000000..2a631dd --- /dev/null +++ b/media/inbound/2025-10-17_1700_G5开发周报_2025-10-13_--_2025-10-17---1545a6a6-156c-412d-8cd3-ba060d3f7217.eml @@ -0,0 +1,291 @@ +Date: Fri, 17 Oct 2025 17:00:09 +0800 +From: =?utf-8?B?5p2o6L2p?= +To: =?utf-8?B?5YiY5by6?= +Cc: =?utf-8?B?5bGI5paw6b6Z?= , =?utf-8?B?5pyx5paM?= + , =?utf-8?B?6ZmI5piO?= , + =?utf-8?Q?xym=40witsoft.cn?= +Message-ID: +Subject: =?utf-8?B?RzXlvIDlj5HlkajmiqXjgJAyMDI1LTEwLTEzIC0tICAyMDI1LTEw?= + =?utf-8?B?LTE344CR?= +MIME-Version: 1.0 +Content-Type: multipart/alternative; boundary="=_mailmaster-6a18e4a4_0_6df1_=" + +--=_mailmaster-6a18e4a4_0_6df1_= +Content-Type: text/plain; charset="utf-8" +Content-Transfer-Encoding: base64 + +5oKo5aW977yB5Lul5LiL5piv5oiR5pys5ZGo55qE5bel5L2c5oC757uT5Y+K5LiL5ZGo6K6h5YiS +77yM6K+35a6h6ZiF44CCCuS4gOOAgeacrOWRqOW3peS9nOaAu+e7kwrph43ngrnlt6XkvZzlrozm +iJDmg4XlhrUK5Lu75YqhMe+8mkc15Li75pWw5o2uNS4yLjHniYjmnKzlvIDlj5EK5Lu75YqhMu+8 +mkc15Li75pWw5o2u5a+55aSW5o6l5Y+j5rWL6K+V5a6M5oiQCuW4uOinhOW3peS9nArml6XluLjk +uovliqEx77yaMjAyNS0xMC0xMyDkuLvmlbDmja7pobXpnaLpnIDmsYLovazmtYtidWfkv67lpI0K +5pel5bi45LqL5YqhMu+8mjIwMjUtMTAtMTQg5Li75pWw5o2u5aSW6YOo5o6l5Y+j5byA5Y+RIArm +l6XluLjkuovliqEz77yaMjAyNS0xMC0xNSDkuLvmlbDmja7lpJbpg6jmjqXlj6PmtYvor5XnlKjk +vovor4TlrqHlkoxidWfkv67lpI0K5pel5bi45LqL5YqhNO+8mjIwMjUtMTAtMTYg5Li75pWw5o2u +5a+55aSW5o6l5Y+j5rWL6K+V77yM6Zeu6aKY5L+u5aSNCuaXpeW4uOS6i+WKoTXvvJoyMDI1LTEw +LTE3IOa1i+ivlemXrumimOS/ruWkje+8jOS4iue6v+aUr+aMgQrkuozjgIHkuIvlkajlt6XkvZzo +rqHliJIK6YeN54K55Lu75YqhCuiuoeWIkjHvvJo1LjIuMueJiOacrOW8gOWPkQrlpIfms6jvvJrm +l6AKQmVzdCByZWdhcmRzLOadqOi9qQrlnLDlnYDvvJrkuK3lm73Ct+WNl+S6rOi9r+S7tuiwt+i9 +r+S7tuWkp+mBkyAxMSDlj7foirHnpZ7lpKfljqYgMi0zRgrmiYvmnLrvvJoxODcyNjEyODQ4OQrp +gq7nrrHvvJp5YW5neHVhbkB3aXRzb2Z0LmNu + +--=_mailmaster-6a18e4a4_0_6df1_= +Content-Type: text/html; charset="utf-8" +Content-Transfer-Encoding: base64 + +PGh0bWw+PGhlYWQ+PG1ldGEgaHR0cC1lcXVpdj0nQ29udGVudC1UeXBlJyBjb250ZW50PSd0ZXh0 +L2h0bWw7IGNoYXJzZXQ9VVRGLTgnPjwvaGVhZD48Ym9keSBzdHlsZT1saW5lLWhlaWdodDogMS41 +O2ZvbnQtZmFtaWx5OiAi5b6u6L2v6ZuF6buRIj48ZGl2ICBzdHlsZT0iZm9udC1mYW1pbHk6IOW+ +rui9r+mbhem7kTsiPjxkaXYgc3R5bGU9IiI+PGRpdiBzdHlsZT0iIj48ZGl2IHN0eWxlPSIiPjxw +IGNpZD0ibjAiIG1kdHlwZT0icGFyYWdyYXBoIiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLXAgbWQt +Zm9jdXMiIHN0eWxlPSJmb250LWZhbWlseTogJnF1b3Q7T3BlbiBTYW5zJnF1b3Q7LCAmcXVvdDtD +bGVhciBTYW5zJnF1b3Q7LCAmcXVvdDtIZWx2ZXRpY2EgTmV1ZSZxdW90OywgSGVsdmV0aWNhLCBB +cmlhbCwgc2Fucy1zZXJpZjsgYm94LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGlu +aGVyaXQ7IG9ycGhhbnM6IDQ7IG1hcmdpbjogMC44ZW0gMHB4OyB3aGl0ZS1zcGFjZTogcHJlLXdy +YXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsgY29sb3I6IHJnYig1MSwgNTEsIDUxKTsgZm9udC1zaXpl +OiAxNnB4OyI+PHNwYW4gbWQtaW5saW5lPSJwbGFpbiIgY2xhc3M9Im1kLXBsYWluIG1kLWV4cGFu +ZCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij7mgqjlpb3vvIHku6XkuIvmmK/miJHm +nKzlkajnmoTlt6XkvZzmgLvnu5Plj4rkuIvlkajorqHliJLvvIzor7flrqHpmIXjgII8L3NwYW4+ +PC9wPjxkaXYgdGFiaW5kZXg9Ii0xIiBjaWQ9Im4yIiBtZHR5cGU9ImhyIiBjbGFzcz0ibWQtaHIg +bWQtZW5kLWJsb2NrIiBzdHlsZT0iZm9udC1mYW1pbHk6ICZxdW90O09wZW4gU2FucyZxdW90Oywg +JnF1b3Q7Q2xlYXIgU2FucyZxdW90OywgJnF1b3Q7SGVsdmV0aWNhIE5ldWUmcXVvdDssIEhlbHZl +dGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7IGNvbG9yOiBy +Z2IoNTEsIDUxLCA1MSk7IGZvbnQtc2l6ZTogMTZweDsiPjxociBzdHlsZT0iYm94LXNpemluZzog +Y29udGVudC1ib3g7IGhlaWdodDogMnB4OyBtYXJnaW46IDE2cHggMHB4OyBib3JkZXI6IDBweCBu +b25lOyBwYWRkaW5nOiAwcHg7IGJhY2tncm91bmQtY29sb3I6IHJnYigyMzEsIDIzMSwgMjMxKTsi +PjwvZGl2PjxoMyBjaWQ9Im4zIiBtZHR5cGU9ImhlYWRpbmciIGNsYXNzPSJtZC1lbmQtYmxvY2sg +bWQtaGVhZGluZyIgc3R5bGU9ImZvbnQtZmFtaWx5OiAmcXVvdDtPcGVuIFNhbnMmcXVvdDssICZx +dW90O0NsZWFyIFNhbnMmcXVvdDssICZxdW90O0hlbHZldGljYSBOZXVlJnF1b3Q7LCBIZWx2ZXRp +Y2EsIEFyaWFsLCBzYW5zLXNlcmlmOyBib3gtc2l6aW5nOiBib3JkZXItYm94OyBicmVhay1hZnRl +cjogYXZvaWQtcGFnZTsgYnJlYWstaW5zaWRlOiBhdm9pZDsgb3JwaGFuczogNDsgZm9udC1zaXpl +OiAxLjVlbTsgbWFyZ2luLXRvcDogMXJlbTsgbWFyZ2luLWJvdHRvbTogMXJlbTsgcG9zaXRpb246 +IHJlbGF0aXZlOyBsaW5lLWhlaWdodDogMS40MzsgY3Vyc29yOiB0ZXh0OyB3aGl0ZS1zcGFjZTog +cHJlLXdyYXA7IGNvbG9yOiByZ2IoNTEsIDUxLCA1MSk7Ij48c3BhbiBtZC1pbmxpbmU9InN0cm9u +ZyIgY2xhc3M9Im1kLXBhaXItcyAiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+PHN0 +cm9uZyBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPjxzcGFuIG1kLWlubGluZT0icGxh +aW4iIGNsYXNzPSJtZC1wbGFpbiIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij7kuIDj +gIHmnKzlkajlt6XkvZzmgLvnu5M8L3NwYW4+PC9zdHJvbmc+PC9zcGFuPjwvaDM+PG9sIGNsYXNz +PSJvbC1saXN0IiBzdGFydD0iIiBjaWQ9Im40IiBtZHR5cGU9Imxpc3QiIHN0eWxlPSJmb250LWZh +bWlseTogJnF1b3Q7T3BlbiBTYW5zJnF1b3Q7LCAmcXVvdDtDbGVhciBTYW5zJnF1b3Q7LCAmcXVv +dDtIZWx2ZXRpY2EgTmV1ZSZxdW90OywgSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjsgYm94 +LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBhZGRpbmctbGVmdDogMzBweDsgcG9z +aXRpb246IHJlbGF0aXZlOyBjb2xvcjogcmdiKDUxLCA1MSwgNTEpOyBmb250LXNpemU6IDE2cHg7 +Ij48bGkgY2xhc3M9Im1kLWxpc3QtaXRlbSIgY2lkPSJuNSIgbWR0eXBlPSJsaXN0X2l0ZW0iIHN0 +eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcG9zaXRpb246IHJlbGF0 +aXZlOyI+PHAgY2lkPSJuNiIgbWR0eXBlPSJwYXJhZ3JhcGgiIGNsYXNzPSJtZC1lbmQtYmxvY2sg +bWQtcCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhlcml0 +OyBvcnBoYW5zOiA0OyBtYXJnaW46IDBweCAwcHggMC41cmVtOyB3aGl0ZS1zcGFjZTogcHJlLXdy +YXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxzcGFuIG1kLWlubGluZT0ic3Ryb25nIiBjbGFzcz0i +bWQtcGFpci1zICIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij48c3Ryb25nIHN0eWxl +PSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+PHNwYW4gbWQtaW5saW5lPSJwbGFpbiIgY2xhc3M9 +Im1kLXBsYWluIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPumHjeeCueW3peS9nOWu +jOaIkOaDheWGtTwvc3Bhbj48L3N0cm9uZz48L3NwYW4+PC9wPjwvbGk+PHVsIGNsYXNzPSJ1bC1s +aXN0IiBjaWQ9Im43IiBtZHR5cGU9Imxpc3QiIGRhdGEtbWFyaz0iLSIgc3R5bGU9ImJveC1zaXpp +bmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBwYWRkaW5nLWxlZnQ6IDMwcHg7IHBvc2l0aW9u +OiByZWxhdGl2ZTsiPjxsaSBjbGFzcz0ibWQtbGlzdC1pdGVtIiBjaWQ9Im44IiBtZHR5cGU9Imxp +c3RfaXRlbSIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBwb3Np +dGlvbjogcmVsYXRpdmU7Ij48cCBjaWQ9Im45IiBtZHR5cGU9InBhcmFncmFwaCIgY2xhc3M9Im1k +LWVuZC1ibG9jayBtZC1wIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1oZWln +aHQ6IGluaGVyaXQ7IG9ycGhhbnM6IDQ7IG1hcmdpbjogMHB4IDBweCAwLjVyZW07IHdoaXRlLXNw +YWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHNwYW4gbWQtaW5saW5lPSJwbGFp +biIgY2xhc3M9Im1kLXBsYWluIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPuS7u+WK +oTHvvJpHNeS4u+aVsOaNrjUuMi4x54mI5pys5byA5Y+RPC9zcGFuPjwvcD48L2xpPjxsaSBjbGFz +cz0ibWQtbGlzdC1pdGVtIiBjaWQ9Im4xMCIgbWR0eXBlPSJsaXN0X2l0ZW0iIHN0eWxlPSJib3gt +c2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHAg +Y2lkPSJuMTEiIG1kdHlwZT0icGFyYWdyYXBoIiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLXAiIHN0 +eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5oZXJpdDsgb3JwaGFu +czogNDsgbWFyZ2luOiAwcHggMHB4IDAuNXJlbTsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyBwb3Np +dGlvbjogcmVsYXRpdmU7Ij48c3BhbiBtZC1pbmxpbmU9InBsYWluIiBjbGFzcz0ibWQtcGxhaW4i +IHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+5Lu75YqhMu+8mjwvc3Bhbj5HNeS4u+aV +sOaNruWvueWkluaOpeWPo+a1i+ivleWujOaIkDwvcD48L2xpPjwvdWw+PGxpIGNsYXNzPSJtZC1s +aXN0LWl0ZW0iIGNpZD0ibjEyIiBtZHR5cGU9Imxpc3RfaXRlbSIgc3R5bGU9ImJveC1zaXppbmc6 +IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48cCBjaWQ9Im4x +MyIgbWR0eXBlPSJwYXJhZ3JhcGgiIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCIgc3R5bGU9ImJv +eC1zaXppbmc6IGJvcmRlci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhlcml0OyBvcnBoYW5zOiA0OyBt +YXJnaW46IDBweCAwcHggMC41cmVtOyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0aW9uOiBy +ZWxhdGl2ZTsiPjxzcGFuIG1kLWlubGluZT0ic3Ryb25nIiBjbGFzcz0ibWQtcGFpci1zICIgc3R5 +bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij48c3Ryb25nIHN0eWxlPSJib3gtc2l6aW5nOiBi +b3JkZXItYm94OyI+PHNwYW4gbWQtaW5saW5lPSJwbGFpbiIgY2xhc3M9Im1kLXBsYWluIiBzdHls +ZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPuW4uOinhOW3peS9nDwvc3Bhbj48L3N0cm9uZz48 +L3NwYW4+PC9wPjwvbGk+PHVsIGNsYXNzPSJ1bC1saXN0IiBjaWQ9Im4xNCIgbWR0eXBlPSJsaXN0 +IiBkYXRhLW1hcms9Ii0iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBw +eDsgcGFkZGluZy1sZWZ0OiAzMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48bGkgY2xhc3M9Im1k +LWxpc3QtaXRlbSIgY2lkPSJuMTUiIG1kdHlwZT0ibGlzdF9pdGVtIiBzdHlsZT0iYm94LXNpemlu +ZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxwIGNpZD0i +bjE2IiBtZHR5cGU9InBhcmFncmFwaCIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1wIiBzdHlsZT0i +Ym94LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IG9ycGhhbnM6IDQ7 +IG1hcmdpbjogMHB4IDBweCAwLjVyZW07IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRpb246 +IHJlbGF0aXZlOyI+PHNwYW4gbWQtaW5saW5lPSJwbGFpbiIgY2xhc3M9Im1kLXBsYWluIiBzdHls +ZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPuaXpeW4uOS6i+WKoTHvvJoyMDI1LTEwLTEzIOS4 +u+aVsOaNrumhtemdoumcgOaxgui9rOa1i2J1Z+S/ruWkjTwvc3Bhbj48L3A+PC9saT48L3VsPjwv +b2w+PG9sIGNsYXNzPSJvbC1saXN0IiBzdGFydD0iIiBjaWQ9Im40IiBtZHR5cGU9Imxpc3QiIHN0 +eWxlPSJmb250LWZhbWlseTog5b6u6L2v6ZuF6buROyBib3gtc2l6aW5nOiBib3JkZXItYm94OyBt +YXJnaW46IDBweDsgcGFkZGluZy1sZWZ0OiAzMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48dWwg +Y2xhc3M9InVsLWxpc3QiIGNpZD0ibjE0IiBtZHR5cGU9Imxpc3QiIGRhdGEtbWFyaz0iLSIgc3R5 +bGU9ImZvbnQtZmFtaWx5OiDlvq7ova/pm4Xpu5E7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1h +cmdpbjogMHB4OyBwYWRkaW5nLWxlZnQ6IDMwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxsaSBj +bGFzcz0ibWQtbGlzdC1pdGVtIiBjaWQ9Im4xNSIgbWR0eXBlPSJsaXN0X2l0ZW0iIHN0eWxlPSJj +b2xvcjogcmdiKDUxLCA1MSwgNTEpOyBmb250LWZhbWlseTogJnF1b3Q7T3BlbiBTYW5zJnF1b3Q7 +LCAmcXVvdDtDbGVhciBTYW5zJnF1b3Q7LCAmcXVvdDtIZWx2ZXRpY2EgTmV1ZSZxdW90OywgSGVs +dmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxNnB4OyBib3gtc2l6aW5nOiBi +b3JkZXItYm94OyBtYXJnaW46IDBweDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHAgY2lkPSJuMTYi +IG1kdHlwZT0icGFyYWdyYXBoIiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLXAiIHN0eWxlPSJib3gt +c2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5oZXJpdDsgb3JwaGFuczogNDsgbWFy +Z2luOiAwcHggMHB4IDAuNXJlbTsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyBwb3NpdGlvbjogcmVs +YXRpdmU7Ij48c3BhbiBtZC1pbmxpbmU9InBsYWluIiBjbGFzcz0ibWQtcGxhaW4iIHN0eWxlPSJi +b3gtc2l6aW5nOiBib3JkZXItYm94OyI+5pel5bi45LqL5YqhMu+8mjIwMjUtMTAtMTQgIOS4u+aV +sOaNruWklumDqOaOpeWPo+W8gOWPkQo8L3NwYW4+PC9wPjwvbGk+PGxpIGNsYXNzPSJtZC1saXN0 +LWl0ZW0iIGNpZD0ibjE3IiBtZHR5cGU9Imxpc3RfaXRlbSIgc3R5bGU9ImNvbG9yOiByZ2IoNTEs +IDUxLCA1MSk7IGZvbnQtZmFtaWx5OiAmcXVvdDtPcGVuIFNhbnMmcXVvdDssICZxdW90O0NsZWFy +IFNhbnMmcXVvdDssICZxdW90O0hlbHZldGljYSBOZXVlJnF1b3Q7LCBIZWx2ZXRpY2EsIEFyaWFs +LCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDE2cHg7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1h +cmdpbjogMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48cCBjaWQ9Im4xOCIgbWR0eXBlPSJwYXJh +Z3JhcGgiIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRl +ci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhlcml0OyBvcnBoYW5zOiA0OyBtYXJnaW46IDBweCAwcHgg +MC41cmVtOyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxzcGFu +IG1kLWlubGluZT0icGxhaW4iIGNsYXNzPSJtZC1wbGFpbiIgc3R5bGU9ImJveC1zaXppbmc6IGJv +cmRlci1ib3g7Ij7ml6XluLjkuovliqEz77yaMjAyNS0xMC0xNSDkuLvmlbDmja7lpJbpg6jmjqXl +j6PmtYvor5XnlKjkvovor4TlrqHlkoxidWfkv67lpI08L3NwYW4+PC9wPjwvbGk+PC91bD48L29s +PjxvbCBjbGFzcz0ib2wtbGlzdCIgc3RhcnQ9IiIgY2lkPSJuNCIgbWR0eXBlPSJsaXN0IiBzdHls +ZT0iZm9udC1mYW1pbHk6IOW+rui9r+mbhem7kTsgYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFy +Z2luOiAwcHg7IHBhZGRpbmctbGVmdDogMzBweDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHVsIGNs +YXNzPSJ1bC1saXN0IiBjaWQ9Im4xNCIgbWR0eXBlPSJsaXN0IiBkYXRhLW1hcms9Ii0iIHN0eWxl +PSJmb250LWZhbWlseTog5b6u6L2v6ZuF6buROyBib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJn +aW46IDBweDsgcGFkZGluZy1sZWZ0OiAzMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48bGkgY2xh +c3M9Im1kLWxpc3QtaXRlbSIgY2lkPSJuMTciIG1kdHlwZT0ibGlzdF9pdGVtIiBzdHlsZT0iY29s +b3I6IHJnYig1MSwgNTEsIDUxKTsgZm9udC1mYW1pbHk6ICZxdW90O09wZW4gU2FucyZxdW90Oywg +JnF1b3Q7Q2xlYXIgU2FucyZxdW90OywgJnF1b3Q7SGVsdmV0aWNhIE5ldWUmcXVvdDssIEhlbHZl +dGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTZweDsgYm94LXNpemluZzogYm9y +ZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxwIGNpZD0ibjE4IiBt +ZHR5cGU9InBhcmFncmFwaCIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1wIiBzdHlsZT0iYm94LXNp +emluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IG9ycGhhbnM6IDQ7IG1hcmdp +bjogMHB4IDBweCAwLjVyZW07IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJlbGF0 +aXZlOyI+PHNwYW4gbWQtaW5saW5lPSJwbGFpbiIgY2xhc3M9Im1kLXBsYWluIiBzdHlsZT0iYm94 +LXNpemluZzogYm9yZGVyLWJveDsiPuaXpeW4uOS6i+WKoTTvvJoyMDI1LTEwLTE2IOS4u+aVsOaN +ruWvueWkluaOpeWPo+a1i+ivle+8jOmXrumimOS/ruWkjTwvc3Bhbj48L3A+PC9saT48bGkgY2xh +c3M9Im1kLWxpc3QtaXRlbSIgY2lkPSJuMTciIG1kdHlwZT0ibGlzdF9pdGVtIiBzdHlsZT0iY29s +b3I6IHJnYig1MSwgNTEsIDUxKTsgZm9udC1mYW1pbHk6ICZxdW90O09wZW4gU2FucyZxdW90Oywg +JnF1b3Q7Q2xlYXIgU2FucyZxdW90OywgJnF1b3Q7SGVsdmV0aWNhIE5ldWUmcXVvdDssIEhlbHZl +dGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTZweDsgYm94LXNpemluZzogYm9y +ZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxwIGNpZD0ibjE4IiBt +ZHR5cGU9InBhcmFncmFwaCIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1wIiBzdHlsZT0iYm94LXNp +emluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IG9ycGhhbnM6IDQ7IG1hcmdp +bjogMHB4IDBweCAwLjVyZW07IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJlbGF0 +aXZlOyI+PHNwYW4gbWQtaW5saW5lPSJwbGFpbiIgY2xhc3M9Im1kLXBsYWluIiBzdHlsZT0iYm94 +LXNpemluZzogYm9yZGVyLWJveDsiPuaXpeW4uOS6i+WKoTXvvJoyMDI1LTEwLTE3IOa1i+ivlemX +rumimOS/ruWkje+8jOS4iue6v+aUr+aMgTwvc3Bhbj48L3A+PC9saT48L3VsPjwvb2w+PGgzIGNp +ZD0ibjI1IiBtZHR5cGU9ImhlYWRpbmciIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtaGVhZGluZyIg +c3R5bGU9ImZvbnQtZmFtaWx5OiAmcXVvdDtPcGVuIFNhbnMmcXVvdDssICZxdW90O0NsZWFyIFNh +bnMmcXVvdDssICZxdW90O0hlbHZldGljYSBOZXVlJnF1b3Q7LCBIZWx2ZXRpY2EsIEFyaWFsLCBz +YW5zLXNlcmlmOyBib3gtc2l6aW5nOiBib3JkZXItYm94OyBicmVhay1hZnRlcjogYXZvaWQtcGFn +ZTsgYnJlYWstaW5zaWRlOiBhdm9pZDsgb3JwaGFuczogNDsgZm9udC1zaXplOiAxLjVlbTsgbWFy +Z2luLXRvcDogMXJlbTsgbWFyZ2luLWJvdHRvbTogMXJlbTsgcG9zaXRpb246IHJlbGF0aXZlOyBs +aW5lLWhlaWdodDogMS40MzsgY3Vyc29yOiB0ZXh0OyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IGNv +bG9yOiByZ2IoNTEsIDUxLCA1MSk7Ij48c3BhbiBtZC1pbmxpbmU9InN0cm9uZyIgY2xhc3M9Im1k +LXBhaXItcyAiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+PHN0cm9uZyBzdHlsZT0i +Ym94LXNpemluZzogYm9yZGVyLWJveDsiPjxzcGFuIG1kLWlubGluZT0icGxhaW4iIGNsYXNzPSJt +ZC1wbGFpbiIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij7kuozjgIHkuIvlkajlt6Xk +vZzorqHliJI8L3NwYW4+PC9zdHJvbmc+PC9zcGFuPjwvaDM+PG9sIGNsYXNzPSJvbC1saXN0IiBz +dGFydD0iIiBjaWQ9Im4yNiIgbWR0eXBlPSJsaXN0IiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVy +LWJveDsgbWFyZ2luOiAwcHg7IHBhZGRpbmctbGVmdDogMzBweDsgcG9zaXRpb246IHJlbGF0aXZl +OyI+PGxpIGNsYXNzPSJtZC1saXN0LWl0ZW0iIGNpZD0ibjI3IiBtZHR5cGU9Imxpc3RfaXRlbSIg +c3R5bGU9ImZvbnQtZmFtaWx5OiAmcXVvdDtPcGVuIFNhbnMmcXVvdDssICZxdW90O0NsZWFyIFNh +bnMmcXVvdDssICZxdW90O0hlbHZldGljYSBOZXVlJnF1b3Q7LCBIZWx2ZXRpY2EsIEFyaWFsLCBz +YW5zLXNlcmlmOyBjb2xvcjogcmdiKDUxLCA1MSwgNTEpOyBmb250LXNpemU6IDE2cHg7IGJveC1z +aXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48cCBj +aWQ9Im4yOCIgbWR0eXBlPSJwYXJhZ3JhcGgiIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCIgc3R5 +bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhlcml0OyBvcnBoYW5z +OiA0OyBtYXJnaW46IDBweCAwcHggMC41cmVtOyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0 +aW9uOiByZWxhdGl2ZTsiPjxzcGFuIG1kLWlubGluZT0ic3Ryb25nIiBjbGFzcz0ibWQtcGFpci1z +ICIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij48c3Ryb25nIHN0eWxlPSJib3gtc2l6 +aW5nOiBib3JkZXItYm94OyI+PHNwYW4gbWQtaW5saW5lPSJwbGFpbiIgY2xhc3M9Im1kLXBsYWlu +IiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPumHjeeCueS7u+WKoTwvc3Bhbj48L3N0 +cm9uZz48L3NwYW4+PC9wPjwvbGk+PHVsIGNsYXNzPSJ1bC1saXN0IiBjaWQ9Im4yOSIgbWR0eXBl +PSJsaXN0IiBkYXRhLW1hcms9Ii0iIHN0eWxlPSJmb250LWZhbWlseTogJnF1b3Q7T3BlbiBTYW5z +JnF1b3Q7LCAmcXVvdDtDbGVhciBTYW5zJnF1b3Q7LCAmcXVvdDtIZWx2ZXRpY2EgTmV1ZSZxdW90 +OywgSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjsgY29sb3I6IHJnYig1MSwgNTEsIDUxKTsg +Zm9udC1zaXplOiAxNnB4OyBib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcGFk +ZGluZy1sZWZ0OiAzMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48bGkgY2xhc3M9Im1kLWxpc3Qt +aXRlbSIgY2lkPSJuMzAiIG1kdHlwZT0ibGlzdF9pdGVtIiBzdHlsZT0iYm94LXNpemluZzogYm9y +ZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxwIGNpZD0ibjMxIiBt +ZHR5cGU9InBhcmFncmFwaCIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1wIiBzdHlsZT0iYm94LXNp +emluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IG9ycGhhbnM6IDQ7IG1hcmdp +bjogMHB4IDBweCAwLjVyZW07IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJlbGF0 +aXZlOyI+PHNwYW4gbWQtaW5saW5lPSJwbGFpbiIgY2xhc3M9Im1kLXBsYWluIiBzdHlsZT0iYm94 +LXNpemluZzogYm9yZGVyLWJveDsiPuiuoeWIkjHvvJo8L3NwYW4+NS4yLjLniYjmnKzlvIDlj5E8 +L3A+PC9saT48L3VsPjwvb2w+PGRpdiB0YWJpbmRleD0iLTEiIGNpZD0ibjM5IiBtZHR5cGU9Imhy +IiBjbGFzcz0ibWQtaHIgbWQtZW5kLWJsb2NrIiBzdHlsZT0iZm9udC1mYW1pbHk6ICZxdW90O09w +ZW4gU2FucyZxdW90OywgJnF1b3Q7Q2xlYXIgU2FucyZxdW90OywgJnF1b3Q7SGVsdmV0aWNhIE5l +dWUmcXVvdDssIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7IGJveC1zaXppbmc6IGJvcmRl +ci1ib3g7IGNvbG9yOiByZ2IoNTEsIDUxLCA1MSk7IGZvbnQtc2l6ZTogMTZweDsiPjxociBzdHls +ZT0iYm94LXNpemluZzogY29udGVudC1ib3g7IGhlaWdodDogMnB4OyBtYXJnaW46IDE2cHggMHB4 +OyBib3JkZXI6IDBweCBub25lOyBwYWRkaW5nOiAwcHg7IGJhY2tncm91bmQtY29sb3I6IHJnYigy +MzEsIDIzMSwgMjMxKTsiPjwvZGl2PjxwIGNpZD0ibjQwIiBtZHR5cGU9InBhcmFncmFwaCIgY2xh +c3M9Im1kLWVuZC1ibG9jayBtZC1wIiBzdHlsZT0iZm9udC1mYW1pbHk6ICZxdW90O09wZW4gU2Fu +cyZxdW90OywgJnF1b3Q7Q2xlYXIgU2FucyZxdW90OywgJnF1b3Q7SGVsdmV0aWNhIE5ldWUmcXVv +dDssIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7 +IGxpbmUtaGVpZ2h0OiBpbmhlcml0OyBvcnBoYW5zOiA0OyBtYXJnaW46IDAuOGVtIDBweDsgd2hp +dGUtc3BhY2U6IHByZS13cmFwOyBwb3NpdGlvbjogcmVsYXRpdmU7IGNvbG9yOiByZ2IoNTEsIDUx +LCA1MSk7IGZvbnQtc2l6ZTogMTZweDsiPjxzcGFuIG1kLWlubGluZT0ic3Ryb25nIiBjbGFzcz0i +bWQtcGFpci1zICIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij48c3Ryb25nIHN0eWxl +PSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+PHNwYW4gbWQtaW5saW5lPSJwbGFpbiIgY2xhc3M9 +Im1kLXBsYWluIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPuWkh+azqDwvc3Bhbj48 +L3N0cm9uZz48L3NwYW4+PHNwYW4gbWQtaW5saW5lPSJwbGFpbiIgY2xhc3M9Im1kLXBsYWluIG1k +LWV4cGFuZCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij7vvJrml6A8L3NwYW4+PC9w +PjwvZGl2PjxkaXYgc3R5bGU9ImZvbnQtZmFtaWx5OiDlvq7ova/pm4Xpu5E7Ij48YnI+PC9kaXY+ +PGRpdiBzcGVsbGNoZWNrPSJmYWxzZSIgaWQ9Im50ZXMtcGNtYWMtc2lnbmF0dXJlIiBzdHlsZT0i +Zm9udC1mYW1pbHk6IOW+rui9r+mbhem7kTsiIGRhdGEtbnRlcy1zaWduYXR1cmU9InRydWUiPjxk +aXYgc3R5bGU9ImZvbnQtc2l6ZToxNHB4O3BhZGRpbmc6MDttYXJnaW46MCI+PGRpdiBzdHlsZT0i +cGFkZGluZy1ib3R0b206MTBweDttYXJnaW4tYm90dG9tOjEwcHg7ZGlzcGxheTppbmxpbmUtYmxv +Y2siPjxkaXYgc3R5bGU9ImZvbnQtZmFtaWx5OiZxdW90O+W+rui9r+mbhem7kSZxdW90OzsgZm9u +dC1zaXplOiAxNHB4OyBjb2xvcjojMDAwMDAwIj4KICAgIDxzdHlsZT4KICAgICAgICBmb250ewog +ICAgICAgICAgICBsaW5lLWhlaWdodDogMS42OwogICAgICAgIH0KICAgIDwvc3R5bGU+CjxkaXYg +c3R5bGU9ImZvbnQtZmFtaWx5OiZxdW90O+W+rui9r+mbhem7kSZxdW90OzsgZm9udC1zaXplOiAx +NHB4OyBjb2xvcjojMDAwMDAwIj4KICAgIDxzdHlsZT4KICAgICAgICBmb250ewogICAgICAgICAg +ICBsaW5lLWhlaWdodDogMS42OwogICAgICAgIH0KICAgIDwvc3R5bGU+CjxkaXYgc3R5bGU9ImZv +bnQtZmFtaWx5OiZxdW90O+W+rui9r+mbhem7kSZxdW90OzsgZm9udC1zaXplOiAxNHB4OyBjb2xv +cjojMDAwMDAwIj4KICAgIDxzdHlsZT4KICAgICAgICBmb250ewogICAgICAgICAgICBsaW5lLWhl +aWdodDogMS42OwogICAgICAgIH0KICAgIDwvc3R5bGU+CjxkaXYgc3R5bGU9ImZvbnQtZmFtaWx5 +OiZxdW90O+W+rui9r+mbhem7kSZxdW90OzsgZm9udC1zaXplOiAxNHB4OyBjb2xvcjojMDAwMDAw +Ij4KICAgIDxzdHlsZT4KICAgICAgICBmb250ewogICAgICAgICAgICBsaW5lLWhlaWdodDogMS42 +OwogICAgICAgIH0KICAgIDwvc3R5bGU+CjxzcGFuIHN0eWxlPSJjb2xvcjogcmdiKDE5MSwgMTkx +LCAxOTEpOyBmb250LWZhbWlseTogJ01pY3Jvc29mdCBZYWhlaSc7IGZvbnQtc2l6ZTogMTNweDsg +b3JwaGFuczogMjsgd2lkb3dzOiAyOyI+QmVzdCByZWdhcmRzLDwvc3Bhbj48ZGl2IHN0eWxlPSJt +YXJnaW46IDBweDsgcGFkZGluZzogMHB4OyBib3JkZXI6IDBweDsgb3V0bGluZTogMHB4OyBmb250 +LWZhbWlseTogVGFob21hLCBBcmlhbCwgU1RIZWl0aSwgU2ltU3VuOyBmb250LXZhcmlhbnQtbGln +YXR1cmVzOiBub3JtYWw7IG9ycGhhbnM6IDI7IHdpZG93czogMjsgY2xlYXI6IGJvdGg7Ij48c3Bh +biBzdHlsZT0ibWFyZ2luOiAwcHg7IHBhZGRpbmc6IDBweDsgYm9yZGVyOiAwcHg7IG91dGxpbmU6 +IDBweDsgZm9udC1mYW1pbHk6ICZxdW90O01pY3Jvc29mdCBZYWhlaSZxdW90OzsgZm9udC1zaXpl +OiAxM3B4OyBjb2xvcjogcmdiKDE5MSwgMTkxLCAxOTEpOyI+5p2o6L2pPC9zcGFuPjwvZGl2Pjxk +aXYgc3R5bGU9Im1hcmdpbjogMHB4OyBwYWRkaW5nOiAwcHg7IGJvcmRlcjogMHB4OyBvdXRsaW5l +OiAwcHg7IGZvbnQtZmFtaWx5OiBUYWhvbWEsIEFyaWFsLCBTVEhlaXRpLCBTaW1TdW47IGZvbnQt +dmFyaWFudC1saWdhdHVyZXM6IG5vcm1hbDsgb3JwaGFuczogMjsgd2lkb3dzOiAyOyBjbGVhcjog +Ym90aDsiPjwvZGl2PjxkaXYgc3R5bGU9Im1hcmdpbjogMHB4OyBwYWRkaW5nOiAwcHg7IGJvcmRl +cjogMHB4OyBvdXRsaW5lOiAwcHg7IGZvbnQtZmFtaWx5OiBUYWhvbWEsIEFyaWFsLCBTVEhlaXRp +LCBTaW1TdW47IGZvbnQtdmFyaWFudC1saWdhdHVyZXM6IG5vcm1hbDsgb3JwaGFuczogMjsgd2lk +b3dzOiAyOyBjbGVhcjogYm90aDsiPjxpbWcgc3R5bGU9Im1heC13aWR0aDogdW5zZXQ7IiBzcmM9 +Imh0dHBzOi8vbWFpbC1vbmxpbmUubm9zZG4uMTI3Lm5ldC93enBtbWMvY2U5ZjhiMzZlMWZmYmU1 +NTMyOWMxOTZjODRmZTUxOTcucG5nIj48L2Rpdj48ZGl2IHN0eWxlPSJtYXJnaW46IDBweDsgcGFk +ZGluZzogMHB4OyBib3JkZXI6IDBweDsgb3V0bGluZTogMHB4OyBmb250LWZhbWlseTogVGFob21h +LCBBcmlhbCwgU1RIZWl0aSwgU2ltU3VuOyBmb250LXZhcmlhbnQtbGlnYXR1cmVzOiBub3JtYWw7 +IG9ycGhhbnM6IDI7IHdpZG93czogMjsgY2xlYXI6IGJvdGg7Ij48c3BhbiBzdHlsZT0ibWFyZ2lu +OiAwcHg7IHBhZGRpbmc6IDBweDsgYm9yZGVyOiAwcHg7IG91dGxpbmU6IDBweDsgZm9udC1mYW1p +bHk6ICZxdW90O01pY3Jvc29mdCBZYWhlaSZxdW90OzsgY29sb3I6IHJnYigxOTEsIDE5MSwgMTkx +KTsiPuWcsOWdgO+8muS4reWbvcK35Y2X5Lqs6L2v5Lu26LC36L2v5Lu25aSn6YGTIDExIOWPt+iK +seelnuWkp+WOpiAyLTNGPC9zcGFuPjwvZGl2PjxkaXYgc3R5bGU9Im1hcmdpbjogMHB4OyBwYWRk +aW5nOiAwcHg7IGJvcmRlcjogMHB4OyBvdXRsaW5lOiAwcHg7IGZvbnQtZmFtaWx5OiBUYWhvbWEs +IEFyaWFsLCBTVEhlaXRpLCBTaW1TdW47IGZvbnQtdmFyaWFudC1saWdhdHVyZXM6IG5vcm1hbDsg +b3JwaGFuczogMjsgd2lkb3dzOiAyOyBjbGVhcjogYm90aDsiPjxzcGFuIHN0eWxlPSJtYXJnaW46 +IDBweDsgcGFkZGluZzogMHB4OyBib3JkZXI6IDBweDsgb3V0bGluZTogMHB4OyBmb250LWZhbWls +eTogJnF1b3Q7TWljcm9zb2Z0IFlhaGVpJnF1b3Q7OyBjb2xvcjogcmdiKDE5MSwgMTkxLCAxOTEp +OyI+5omL5py677yaMTg3MjYxMjg0ODk8L3NwYW4+PC9kaXY+PGRpdiBzdHlsZT0ibWFyZ2luOiAw +cHg7IHBhZGRpbmc6IDBweDsgYm9yZGVyOiAwcHg7IG91dGxpbmU6IDBweDsgZm9udC1mYW1pbHk6 +IFRhaG9tYSwgQXJpYWwsIFNUSGVpdGksIFNpbVN1bjsgZm9udC12YXJpYW50LWxpZ2F0dXJlczog +bm9ybWFsOyBvcnBoYW5zOiAyOyB3aWRvd3M6IDI7IGNsZWFyOiBib3RoOyI+PHNwYW4gc3R5bGU9 +Im1hcmdpbjogMHB4OyBwYWRkaW5nOiAwcHg7IGJvcmRlcjogMHB4OyBvdXRsaW5lOiAwcHg7IGZv +bnQtZmFtaWx5OiAmcXVvdDtNaWNyb3NvZnQgWWFoZWkmcXVvdDs7IGNvbG9yOiByZ2IoMTkxLCAx +OTEsIDE5MSk7Ij7pgq7nrrHvvJp5YW5neHVhbkB3aXRzb2Z0LmNuPC9zcGFuPjwvZGl2Pgo8L2Rp +dj4KPC9kaXY+CjwvZGl2Pgo8L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48IS0t8J+YgC0t +PjwvZGl2PjwvZGl2PjwvYm9keT48L2h0bWw+ + +--=_mailmaster-6a18e4a4_0_6df1_=-- diff --git a/media/inbound/2025-10-24_1700_G5开发周报_2025-10-20_--_2025-10-24---d9b0ed17-8fe6-421c-b542-7945f39d856c.eml b/media/inbound/2025-10-24_1700_G5开发周报_2025-10-20_--_2025-10-24---d9b0ed17-8fe6-421c-b542-7945f39d856c.eml new file mode 100644 index 0000000..e5f348a --- /dev/null +++ b/media/inbound/2025-10-24_1700_G5开发周报_2025-10-20_--_2025-10-24---d9b0ed17-8fe6-421c-b542-7945f39d856c.eml @@ -0,0 +1,291 @@ +Date: Fri, 24 Oct 2025 17:00:04 +0800 +From: =?utf-8?B?5p2o6L2p?= +To: =?utf-8?B?5YiY5by6?= +Cc: =?utf-8?B?5bGI5paw6b6Z?= , =?utf-8?B?5pyx5paM?= + , =?utf-8?B?6ZmI5piO?= , + =?utf-8?Q?xym=40witsoft.cn?= +Message-ID: <825A747A-D36B-4B13-8176-D5D92FF684F8@witsoft.cn> +Subject: =?utf-8?B?RzXlvIDlj5HlkajmiqXjgJAyMDI1LTEwLTIwIC0tICAyMDI1LTEw?= + =?utf-8?B?LTI044CR?= +MIME-Version: 1.0 +Content-Type: multipart/alternative; boundary="=_mailmaster-6a18e4a4_0_5af1_=" + +--=_mailmaster-6a18e4a4_0_5af1_= +Content-Type: text/plain; charset="utf-8" +Content-Transfer-Encoding: base64 + +5oKo5aW977yB5Lul5LiL5piv5oiR5pys5ZGo55qE5bel5L2c5oC757uT5Y+K5LiL5ZGo6K6h5YiS +77yM6K+35a6h6ZiF44CCCuS4gOOAgeacrOWRqOW3peS9nOaAu+e7kwrph43ngrnlt6XkvZzlrozm +iJDmg4XlhrUK5Lu75YqhMe+8mkc15Li75pWw5o2uNS4yLjLniYjmnKzlvIDlj5EK5Lu75YqhMu+8 +mkc15bqT5a2Y6aaW6aG16ZyA5rGC5byA5Y+RCuW4uOinhOW3peS9nArml6XluLjkuovliqEx77ya +MjAyNS0xMC0yMCDosIPkvJEK5pel5bi45LqL5YqhMu+8mjIwMjUtMTAtMjEg5Li75pWw5o2uNS4y +LjLniYjmnKzpnIDmsYLor4TkvLDlkozlvIDlj5EgCuaXpeW4uOS6i+WKoTPvvJoyMDI1LTEwLTIy +IOW6k+WtmOiwg+aLqOafpeivomJ1Z+S/ruWkjeS4jummlumhteaKpeihqOmcgOaxguehruiupOS4 +juW8gOWPkQrml6XluLjkuovliqE077yaMjAyNS0xMC0yMyDkuLvmlbDmja7lr7nlpJbmjqXlj6Pm +tYvor5XvvIzpl67popjkv67lpI0K5pel5bi45LqL5YqhNe+8mjIwMjUtMTAtMjQg5ZGG5rue5oql +6KGo5rWL6K+V77yM5bqT5a2Y6aKE6K2m5oql6KGo5byA5Y+RCuS6jOOAgeS4i+WRqOW3peS9nOiu +oeWIkgrph43ngrnku7vliqEK6K6h5YiSMe+8mjUuMi4z54mI5pys5byA5Y+RCuWkh+azqO+8muaX +oApCZXN0IHJlZ2FyZHMs5p2o6L2pCuWcsOWdgO+8muS4reWbvcK35Y2X5Lqs6L2v5Lu26LC36L2v +5Lu25aSn6YGTIDExIOWPt+iKseelnuWkp+WOpiAyLTNGCuaJi+acuu+8mjE4NzI2MTI4NDg5CumC +rueuse+8mnlhbmd4dWFuQHdpdHNvZnQuY24= + +--=_mailmaster-6a18e4a4_0_5af1_= +Content-Type: text/html; charset="utf-8" +Content-Transfer-Encoding: base64 + +PGh0bWw+PGhlYWQ+PG1ldGEgaHR0cC1lcXVpdj0nQ29udGVudC1UeXBlJyBjb250ZW50PSd0ZXh0 +L2h0bWw7IGNoYXJzZXQ9VVRGLTgnPjwvaGVhZD48Ym9keSBzdHlsZT1saW5lLWhlaWdodDogMS41 +O2ZvbnQtZmFtaWx5OiAi5b6u6L2v6ZuF6buRIj48ZGl2ICBzdHlsZT0iZm9udC1mYW1pbHk6IOW+ +rui9r+mbhem7kTsiPjxkaXYgc3R5bGU9ImZvbnQtZmFtaWx5OiDlvq7ova/pm4Xpu5E7Ij48ZGl2 +IHN0eWxlPSIiPjxkaXYgc3R5bGU9IiI+PHAgY2lkPSJuMCIgbWR0eXBlPSJwYXJhZ3JhcGgiIGNs +YXNzPSJtZC1lbmQtYmxvY2sgbWQtcCBtZC1mb2N1cyIgc3R5bGU9ImZvbnQtZmFtaWx5OiAmcXVv +dDtPcGVuIFNhbnMmcXVvdDssICZxdW90O0NsZWFyIFNhbnMmcXVvdDssICZxdW90O0hlbHZldGlj +YSBOZXVlJnF1b3Q7LCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmOyBib3gtc2l6aW5nOiBi +b3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5oZXJpdDsgb3JwaGFuczogNDsgbWFyZ2luOiAwLjhl +bSAwcHg7IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJlbGF0aXZlOyBjb2xvcjog +cmdiKDUxLCA1MSwgNTEpOyBmb250LXNpemU6IDE2cHg7Ij48c3BhbiBtZC1pbmxpbmU9InBsYWlu +IiBjbGFzcz0ibWQtcGxhaW4gbWQtZXhwYW5kIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJv +eDsiPuaCqOWlve+8geS7peS4i+aYr+aIkeacrOWRqOeahOW3peS9nOaAu+e7k+WPiuS4i+WRqOiu +oeWIku+8jOivt+WuoemYheOAgjwvc3Bhbj48L3A+PGRpdiB0YWJpbmRleD0iLTEiIGNpZD0ibjIi +IG1kdHlwZT0iaHIiIGNsYXNzPSJtZC1ociBtZC1lbmQtYmxvY2siIHN0eWxlPSJmb250LWZhbWls +eTogJnF1b3Q7T3BlbiBTYW5zJnF1b3Q7LCAmcXVvdDtDbGVhciBTYW5zJnF1b3Q7LCAmcXVvdDtI +ZWx2ZXRpY2EgTmV1ZSZxdW90OywgSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjsgYm94LXNp +emluZzogYm9yZGVyLWJveDsgY29sb3I6IHJnYig1MSwgNTEsIDUxKTsgZm9udC1zaXplOiAxNnB4 +OyI+PGhyIHN0eWxlPSJib3gtc2l6aW5nOiBjb250ZW50LWJveDsgaGVpZ2h0OiAycHg7IG1hcmdp +bjogMTZweCAwcHg7IGJvcmRlcjogMHB4IG5vbmU7IHBhZGRpbmc6IDBweDsgYmFja2dyb3VuZC1j +b2xvcjogcmdiKDIzMSwgMjMxLCAyMzEpOyI+PC9kaXY+PGgzIGNpZD0ibjMiIG1kdHlwZT0iaGVh +ZGluZyIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1oZWFkaW5nIiBzdHlsZT0iZm9udC1mYW1pbHk6 +ICZxdW90O09wZW4gU2FucyZxdW90OywgJnF1b3Q7Q2xlYXIgU2FucyZxdW90OywgJnF1b3Q7SGVs +dmV0aWNhIE5ldWUmcXVvdDssIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7IGJveC1zaXpp +bmc6IGJvcmRlci1ib3g7IGJyZWFrLWFmdGVyOiBhdm9pZC1wYWdlOyBicmVhay1pbnNpZGU6IGF2 +b2lkOyBvcnBoYW5zOiA0OyBmb250LXNpemU6IDEuNWVtOyBtYXJnaW4tdG9wOiAxcmVtOyBtYXJn +aW4tYm90dG9tOiAxcmVtOyBwb3NpdGlvbjogcmVsYXRpdmU7IGxpbmUtaGVpZ2h0OiAxLjQzOyBj +dXJzb3I6IHRleHQ7IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgY29sb3I6IHJnYig1MSwgNTEsIDUx +KTsiPjxzcGFuIG1kLWlubGluZT0ic3Ryb25nIiBjbGFzcz0ibWQtcGFpci1zICIgc3R5bGU9ImJv +eC1zaXppbmc6IGJvcmRlci1ib3g7Ij48c3Ryb25nIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXIt +Ym94OyI+PHNwYW4gbWQtaW5saW5lPSJwbGFpbiIgY2xhc3M9Im1kLXBsYWluIiBzdHlsZT0iYm94 +LXNpemluZzogYm9yZGVyLWJveDsiPuS4gOOAgeacrOWRqOW3peS9nOaAu+e7kzwvc3Bhbj48L3N0 +cm9uZz48L3NwYW4+PC9oMz48b2wgY2xhc3M9Im9sLWxpc3QiIHN0YXJ0PSIiIGNpZD0ibjQiIG1k +dHlwZT0ibGlzdCIgc3R5bGU9ImZvbnQtZmFtaWx5OiAmcXVvdDtPcGVuIFNhbnMmcXVvdDssICZx +dW90O0NsZWFyIFNhbnMmcXVvdDssICZxdW90O0hlbHZldGljYSBOZXVlJnF1b3Q7LCBIZWx2ZXRp +Y2EsIEFyaWFsLCBzYW5zLXNlcmlmOyBib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBw +eDsgcGFkZGluZy1sZWZ0OiAzMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7IGNvbG9yOiByZ2IoNTEs +IDUxLCA1MSk7IGZvbnQtc2l6ZTogMTZweDsiPjxsaSBjbGFzcz0ibWQtbGlzdC1pdGVtIiBjaWQ9 +Im41IiBtZHR5cGU9Imxpc3RfaXRlbSIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1h +cmdpbjogMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48cCBjaWQ9Im42IiBtZHR5cGU9InBhcmFn +cmFwaCIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1wIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVy +LWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IG9ycGhhbnM6IDQ7IG1hcmdpbjogMHB4IDBweCAw +LjVyZW07IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHNwYW4g +bWQtaW5saW5lPSJzdHJvbmciIGNsYXNzPSJtZC1wYWlyLXMgIiBzdHlsZT0iYm94LXNpemluZzog +Ym9yZGVyLWJveDsiPjxzdHJvbmcgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij48c3Bh +biBtZC1pbmxpbmU9InBsYWluIiBjbGFzcz0ibWQtcGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBi +b3JkZXItYm94OyI+6YeN54K55bel5L2c5a6M5oiQ5oOF5Ya1PC9zcGFuPjwvc3Ryb25nPjwvc3Bh +bj48L3A+PC9saT48dWwgY2xhc3M9InVsLWxpc3QiIGNpZD0ibjciIG1kdHlwZT0ibGlzdCIgZGF0 +YS1tYXJrPSItIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBh +ZGRpbmctbGVmdDogMzBweDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PGxpIGNsYXNzPSJtZC1saXN0 +LWl0ZW0iIGNpZD0ibjgiIG1kdHlwZT0ibGlzdF9pdGVtIiBzdHlsZT0iYm94LXNpemluZzogYm9y +ZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxwIGNpZD0ibjkiIG1k +dHlwZT0icGFyYWdyYXBoIiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLXAiIHN0eWxlPSJib3gtc2l6 +aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5oZXJpdDsgb3JwaGFuczogNDsgbWFyZ2lu +OiAwcHggMHB4IDAuNXJlbTsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyBwb3NpdGlvbjogcmVsYXRp +dmU7Ij48c3BhbiBtZC1pbmxpbmU9InBsYWluIiBjbGFzcz0ibWQtcGxhaW4iIHN0eWxlPSJib3gt +c2l6aW5nOiBib3JkZXItYm94OyI+5Lu75YqhMe+8mkc15Li75pWw5o2uNS4yLjLniYjmnKzlvIDl +j5E8L3NwYW4+PC9wPjwvbGk+PGxpIGNsYXNzPSJtZC1saXN0LWl0ZW0iIGNpZD0ibjEwIiBtZHR5 +cGU9Imxpc3RfaXRlbSIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4 +OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48cCBjaWQ9Im4xMSIgbWR0eXBlPSJwYXJhZ3JhcGgiIGNs +YXNzPSJtZC1lbmQtYmxvY2sgbWQtcCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGxp +bmUtaGVpZ2h0OiBpbmhlcml0OyBvcnBoYW5zOiA0OyBtYXJnaW46IDBweCAwcHggMC41cmVtOyB3 +aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxzcGFuIG1kLWlubGlu +ZT0icGxhaW4iIGNsYXNzPSJtZC1wbGFpbiIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7 +Ij7ku7vliqEy77yaPC9zcGFuPkc15bqT5a2Y6aaW6aG16ZyA5rGC5byA5Y+RPC9wPjwvbGk+PC91 +bD48bGkgY2xhc3M9Im1kLWxpc3QtaXRlbSIgY2lkPSJuMTIiIG1kdHlwZT0ibGlzdF9pdGVtIiBz +dHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBvc2l0aW9uOiByZWxh +dGl2ZTsiPjxwIGNpZD0ibjEzIiBtZHR5cGU9InBhcmFncmFwaCIgY2xhc3M9Im1kLWVuZC1ibG9j +ayBtZC1wIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGluaGVy +aXQ7IG9ycGhhbnM6IDQ7IG1hcmdpbjogMHB4IDBweCAwLjVyZW07IHdoaXRlLXNwYWNlOiBwcmUt +d3JhcDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHNwYW4gbWQtaW5saW5lPSJzdHJvbmciIGNsYXNz +PSJtZC1wYWlyLXMgIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPjxzdHJvbmcgc3R5 +bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij48c3BhbiBtZC1pbmxpbmU9InBsYWluIiBjbGFz +cz0ibWQtcGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+5bi46KeE5bel5L2c +PC9zcGFuPjwvc3Ryb25nPjwvc3Bhbj48L3A+PC9saT48dWwgY2xhc3M9InVsLWxpc3QiIGNpZD0i +bjE0IiBtZHR5cGU9Imxpc3QiIGRhdGEtbWFyaz0iLSIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRl +ci1ib3g7IG1hcmdpbjogMHB4OyBwYWRkaW5nLWxlZnQ6IDMwcHg7IHBvc2l0aW9uOiByZWxhdGl2 +ZTsiPjxsaSBjbGFzcz0ibWQtbGlzdC1pdGVtIiBjaWQ9Im4xNSIgbWR0eXBlPSJsaXN0X2l0ZW0i +IHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcG9zaXRpb246IHJl +bGF0aXZlOyI+PHAgY2lkPSJuMTYiIG1kdHlwZT0icGFyYWdyYXBoIiBjbGFzcz0ibWQtZW5kLWJs +b2NrIG1kLXAiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5o +ZXJpdDsgb3JwaGFuczogNDsgbWFyZ2luOiAwcHggMHB4IDAuNXJlbTsgd2hpdGUtc3BhY2U6IHBy +ZS13cmFwOyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48c3BhbiBtZC1pbmxpbmU9InBsYWluIiBjbGFz +cz0ibWQtcGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+5pel5bi45LqL5Yqh +Me+8mjIwMjUtMTAtMjAg6LCD5LyRPC9zcGFuPjwvcD48L2xpPjwvdWw+PC9vbD48b2wgY2xhc3M9 +Im9sLWxpc3QiIHN0YXJ0PSIiIGNpZD0ibjQiIG1kdHlwZT0ibGlzdCIgc3R5bGU9ImZvbnQtZmFt +aWx5OiDlvq7ova/pm4Xpu5E7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBw +YWRkaW5nLWxlZnQ6IDMwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjx1bCBjbGFzcz0idWwtbGlz +dCIgY2lkPSJuMTQiIG1kdHlwZT0ibGlzdCIgZGF0YS1tYXJrPSItIiBzdHlsZT0iZm9udC1mYW1p +bHk6IOW+rui9r+mbhem7kTsgYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBh +ZGRpbmctbGVmdDogMzBweDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PGxpIGNsYXNzPSJtZC1saXN0 +LWl0ZW0iIGNpZD0ibjE1IiBtZHR5cGU9Imxpc3RfaXRlbSIgc3R5bGU9ImNvbG9yOiByZ2IoNTEs +IDUxLCA1MSk7IGZvbnQtZmFtaWx5OiAmcXVvdDtPcGVuIFNhbnMmcXVvdDssICZxdW90O0NsZWFy +IFNhbnMmcXVvdDssICZxdW90O0hlbHZldGljYSBOZXVlJnF1b3Q7LCBIZWx2ZXRpY2EsIEFyaWFs +LCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDE2cHg7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1h +cmdpbjogMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48cCBjaWQ9Im4xNiIgbWR0eXBlPSJwYXJh +Z3JhcGgiIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRl +ci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhlcml0OyBvcnBoYW5zOiA0OyBtYXJnaW46IDBweCAwcHgg +MC41cmVtOyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxzcGFu +IG1kLWlubGluZT0icGxhaW4iIGNsYXNzPSJtZC1wbGFpbiIgc3R5bGU9ImJveC1zaXppbmc6IGJv +cmRlci1ib3g7Ij7ml6XluLjkuovliqEy77yaMjAyNS0xMC0yMSDkuLvmlbDmja41LjIuMueJiOac +rOmcgOaxguivhOS8sOWSjOW8gOWPkQo8L3NwYW4+PC9wPjwvbGk+PGxpIGNsYXNzPSJtZC1saXN0 +LWl0ZW0iIGNpZD0ibjE3IiBtZHR5cGU9Imxpc3RfaXRlbSIgc3R5bGU9ImNvbG9yOiByZ2IoNTEs +IDUxLCA1MSk7IGZvbnQtZmFtaWx5OiAmcXVvdDtPcGVuIFNhbnMmcXVvdDssICZxdW90O0NsZWFy +IFNhbnMmcXVvdDssICZxdW90O0hlbHZldGljYSBOZXVlJnF1b3Q7LCBIZWx2ZXRpY2EsIEFyaWFs +LCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDE2cHg7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1h +cmdpbjogMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48cCBjaWQ9Im4xOCIgbWR0eXBlPSJwYXJh +Z3JhcGgiIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRl +ci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhlcml0OyBvcnBoYW5zOiA0OyBtYXJnaW46IDBweCAwcHgg +MC41cmVtOyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxzcGFu +IG1kLWlubGluZT0icGxhaW4iIGNsYXNzPSJtZC1wbGFpbiIgc3R5bGU9ImJveC1zaXppbmc6IGJv +cmRlci1ib3g7Ij7ml6XluLjkuovliqEz77yaMjAyNS0xMC0yMiDlupPlrZjosIPmi6jmn6Xor6Ji +dWfkv67lpI3kuI7pppbpobXmiqXooajpnIDmsYLnoa7orqTkuI7lvIDlj5E8L3NwYW4+PC9wPjwv +bGk+PC91bD48L29sPjxvbCBjbGFzcz0ib2wtbGlzdCIgc3RhcnQ9IiIgY2lkPSJuNCIgbWR0eXBl +PSJsaXN0IiBzdHlsZT0iZm9udC1mYW1pbHk6IOW+rui9r+mbhem7kTsgYm94LXNpemluZzogYm9y +ZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBhZGRpbmctbGVmdDogMzBweDsgcG9zaXRpb246IHJlbGF0 +aXZlOyI+PHVsIGNsYXNzPSJ1bC1saXN0IiBjaWQ9Im4xNCIgbWR0eXBlPSJsaXN0IiBkYXRhLW1h +cms9Ii0iIHN0eWxlPSJmb250LWZhbWlseTog5b6u6L2v6ZuF6buROyBib3gtc2l6aW5nOiBib3Jk +ZXItYm94OyBtYXJnaW46IDBweDsgcGFkZGluZy1sZWZ0OiAzMHB4OyBwb3NpdGlvbjogcmVsYXRp +dmU7Ij48bGkgY2xhc3M9Im1kLWxpc3QtaXRlbSIgY2lkPSJuMTciIG1kdHlwZT0ibGlzdF9pdGVt +IiBzdHlsZT0iY29sb3I6IHJnYig1MSwgNTEsIDUxKTsgZm9udC1mYW1pbHk6ICZxdW90O09wZW4g +U2FucyZxdW90OywgJnF1b3Q7Q2xlYXIgU2FucyZxdW90OywgJnF1b3Q7SGVsdmV0aWNhIE5ldWUm +cXVvdDssIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTZweDsgYm94 +LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxw +IGNpZD0ibjE4IiBtZHR5cGU9InBhcmFncmFwaCIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1wIiBz +dHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IG9ycGhh +bnM6IDQ7IG1hcmdpbjogMHB4IDBweCAwLjVyZW07IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9z +aXRpb246IHJlbGF0aXZlOyI+PHNwYW4gbWQtaW5saW5lPSJwbGFpbiIgY2xhc3M9Im1kLXBsYWlu +IiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPuaXpeW4uOS6i+WKoTTvvJoyMDI1LTEw +LTIzIOS4u+aVsOaNruWvueWkluaOpeWPo+a1i+ivle+8jOmXrumimOS/ruWkjTwvc3Bhbj48L3A+ +PC9saT48bGkgY2xhc3M9Im1kLWxpc3QtaXRlbSIgY2lkPSJuMTciIG1kdHlwZT0ibGlzdF9pdGVt +IiBzdHlsZT0iY29sb3I6IHJnYig1MSwgNTEsIDUxKTsgZm9udC1mYW1pbHk6ICZxdW90O09wZW4g +U2FucyZxdW90OywgJnF1b3Q7Q2xlYXIgU2FucyZxdW90OywgJnF1b3Q7SGVsdmV0aWNhIE5ldWUm +cXVvdDssIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTZweDsgYm94 +LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxw +IGNpZD0ibjE4IiBtZHR5cGU9InBhcmFncmFwaCIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1wIiBz +dHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IG9ycGhh +bnM6IDQ7IG1hcmdpbjogMHB4IDBweCAwLjVyZW07IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9z +aXRpb246IHJlbGF0aXZlOyI+PHNwYW4gbWQtaW5saW5lPSJwbGFpbiIgY2xhc3M9Im1kLXBsYWlu +IiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPuaXpeW4uOS6i+WKoTXvvJoyMDI1LTEw +LTI0IOWRhua7nuaKpeihqOa1i+ivle+8jOW6k+WtmOmihOitpuaKpeihqOW8gOWPkTwvc3Bhbj48 +L3A+PC9saT48L3VsPjwvb2w+PGgzIGNpZD0ibjI1IiBtZHR5cGU9ImhlYWRpbmciIGNsYXNzPSJt +ZC1lbmQtYmxvY2sgbWQtaGVhZGluZyIgc3R5bGU9ImZvbnQtZmFtaWx5OiAmcXVvdDtPcGVuIFNh +bnMmcXVvdDssICZxdW90O0NsZWFyIFNhbnMmcXVvdDssICZxdW90O0hlbHZldGljYSBOZXVlJnF1 +b3Q7LCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmOyBib3gtc2l6aW5nOiBib3JkZXItYm94 +OyBicmVhay1hZnRlcjogYXZvaWQtcGFnZTsgYnJlYWstaW5zaWRlOiBhdm9pZDsgb3JwaGFuczog +NDsgZm9udC1zaXplOiAxLjVlbTsgbWFyZ2luLXRvcDogMXJlbTsgbWFyZ2luLWJvdHRvbTogMXJl +bTsgcG9zaXRpb246IHJlbGF0aXZlOyBsaW5lLWhlaWdodDogMS40MzsgY3Vyc29yOiB0ZXh0OyB3 +aGl0ZS1zcGFjZTogcHJlLXdyYXA7IGNvbG9yOiByZ2IoNTEsIDUxLCA1MSk7Ij48c3BhbiBtZC1p +bmxpbmU9InN0cm9uZyIgY2xhc3M9Im1kLXBhaXItcyAiIHN0eWxlPSJib3gtc2l6aW5nOiBib3Jk +ZXItYm94OyI+PHN0cm9uZyBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPjxzcGFuIG1k +LWlubGluZT0icGxhaW4iIGNsYXNzPSJtZC1wbGFpbiIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRl +ci1ib3g7Ij7kuozjgIHkuIvlkajlt6XkvZzorqHliJI8L3NwYW4+PC9zdHJvbmc+PC9zcGFuPjwv +aDM+PG9sIGNsYXNzPSJvbC1saXN0IiBzdGFydD0iIiBjaWQ9Im4yNiIgbWR0eXBlPSJsaXN0IiBz +dHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBhZGRpbmctbGVmdDog +MzBweDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PGxpIGNsYXNzPSJtZC1saXN0LWl0ZW0iIGNpZD0i +bjI3IiBtZHR5cGU9Imxpc3RfaXRlbSIgc3R5bGU9ImZvbnQtZmFtaWx5OiAmcXVvdDtPcGVuIFNh +bnMmcXVvdDssICZxdW90O0NsZWFyIFNhbnMmcXVvdDssICZxdW90O0hlbHZldGljYSBOZXVlJnF1 +b3Q7LCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmOyBjb2xvcjogcmdiKDUxLCA1MSwgNTEp +OyBmb250LXNpemU6IDE2cHg7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBw +b3NpdGlvbjogcmVsYXRpdmU7Ij48cCBjaWQ9Im4yOCIgbWR0eXBlPSJwYXJhZ3JhcGgiIGNsYXNz +PSJtZC1lbmQtYmxvY2sgbWQtcCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGxpbmUt +aGVpZ2h0OiBpbmhlcml0OyBvcnBoYW5zOiA0OyBtYXJnaW46IDBweCAwcHggMC41cmVtOyB3aGl0 +ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxzcGFuIG1kLWlubGluZT0i +c3Ryb25nIiBjbGFzcz0ibWQtcGFpci1zICIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7 +Ij48c3Ryb25nIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+PHNwYW4gbWQtaW5saW5l +PSJwbGFpbiIgY2xhc3M9Im1kLXBsYWluIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsi +PumHjeeCueS7u+WKoTwvc3Bhbj48L3N0cm9uZz48L3NwYW4+PC9wPjwvbGk+PHVsIGNsYXNzPSJ1 +bC1saXN0IiBjaWQ9Im4yOSIgbWR0eXBlPSJsaXN0IiBkYXRhLW1hcms9Ii0iIHN0eWxlPSJmb250 +LWZhbWlseTogJnF1b3Q7T3BlbiBTYW5zJnF1b3Q7LCAmcXVvdDtDbGVhciBTYW5zJnF1b3Q7LCAm +cXVvdDtIZWx2ZXRpY2EgTmV1ZSZxdW90OywgSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjsg +Y29sb3I6IHJnYig1MSwgNTEsIDUxKTsgZm9udC1zaXplOiAxNnB4OyBib3gtc2l6aW5nOiBib3Jk +ZXItYm94OyBtYXJnaW46IDBweDsgcGFkZGluZy1sZWZ0OiAzMHB4OyBwb3NpdGlvbjogcmVsYXRp +dmU7Ij48bGkgY2xhc3M9Im1kLWxpc3QtaXRlbSIgY2lkPSJuMzAiIG1kdHlwZT0ibGlzdF9pdGVt +IiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBvc2l0aW9uOiBy +ZWxhdGl2ZTsiPjxwIGNpZD0ibjMxIiBtZHR5cGU9InBhcmFncmFwaCIgY2xhc3M9Im1kLWVuZC1i +bG9jayBtZC1wIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGlu +aGVyaXQ7IG9ycGhhbnM6IDQ7IG1hcmdpbjogMHB4IDBweCAwLjVyZW07IHdoaXRlLXNwYWNlOiBw +cmUtd3JhcDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHNwYW4gbWQtaW5saW5lPSJwbGFpbiIgY2xh +c3M9Im1kLXBsYWluIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPuiuoeWIkjHvvJo8 +L3NwYW4+NS4yLjPniYjmnKzlvIDlj5E8L3A+PC9saT48L3VsPjwvb2w+PGRpdiB0YWJpbmRleD0i +LTEiIGNpZD0ibjM5IiBtZHR5cGU9ImhyIiBjbGFzcz0ibWQtaHIgbWQtZW5kLWJsb2NrIiBzdHls +ZT0iZm9udC1mYW1pbHk6ICZxdW90O09wZW4gU2FucyZxdW90OywgJnF1b3Q7Q2xlYXIgU2FucyZx +dW90OywgJnF1b3Q7SGVsdmV0aWNhIE5ldWUmcXVvdDssIEhlbHZldGljYSwgQXJpYWwsIHNhbnMt +c2VyaWY7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7IGNvbG9yOiByZ2IoNTEsIDUxLCA1MSk7IGZv +bnQtc2l6ZTogMTZweDsiPjxociBzdHlsZT0iYm94LXNpemluZzogY29udGVudC1ib3g7IGhlaWdo +dDogMnB4OyBtYXJnaW46IDE2cHggMHB4OyBib3JkZXI6IDBweCBub25lOyBwYWRkaW5nOiAwcHg7 +IGJhY2tncm91bmQtY29sb3I6IHJnYigyMzEsIDIzMSwgMjMxKTsiPjwvZGl2PjxwIGNpZD0ibjQw +IiBtZHR5cGU9InBhcmFncmFwaCIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1wIiBzdHlsZT0iZm9u +dC1mYW1pbHk6ICZxdW90O09wZW4gU2FucyZxdW90OywgJnF1b3Q7Q2xlYXIgU2FucyZxdW90Oywg +JnF1b3Q7SGVsdmV0aWNhIE5ldWUmcXVvdDssIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7 +IGJveC1zaXppbmc6IGJvcmRlci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhlcml0OyBvcnBoYW5zOiA0 +OyBtYXJnaW46IDAuOGVtIDBweDsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyBwb3NpdGlvbjogcmVs +YXRpdmU7IGNvbG9yOiByZ2IoNTEsIDUxLCA1MSk7IGZvbnQtc2l6ZTogMTZweDsiPjxzcGFuIG1k +LWlubGluZT0ic3Ryb25nIiBjbGFzcz0ibWQtcGFpci1zICIgc3R5bGU9ImJveC1zaXppbmc6IGJv +cmRlci1ib3g7Ij48c3Ryb25nIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+PHNwYW4g +bWQtaW5saW5lPSJwbGFpbiIgY2xhc3M9Im1kLXBsYWluIiBzdHlsZT0iYm94LXNpemluZzogYm9y +ZGVyLWJveDsiPuWkh+azqDwvc3Bhbj48L3N0cm9uZz48L3NwYW4+PHNwYW4gbWQtaW5saW5lPSJw +bGFpbiIgY2xhc3M9Im1kLXBsYWluIG1kLWV4cGFuZCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRl +ci1ib3g7Ij7vvJrml6A8L3NwYW4+PC9wPjwvZGl2PjxkaXYgc3R5bGU9ImZvbnQtZmFtaWx5OiDl +vq7ova/pm4Xpu5E7Ij48YnI+PC9kaXY+PGRpdiBzcGVsbGNoZWNrPSJmYWxzZSIgaWQ9Im50ZXMt +cGNtYWMtc2lnbmF0dXJlIiBzdHlsZT0iZm9udC1mYW1pbHk6IOW+rui9r+mbhem7kTsiIGRhdGEt +bnRlcy1zaWduYXR1cmU9InRydWUiPjxkaXYgc3R5bGU9ImZvbnQtc2l6ZToxNHB4O3BhZGRpbmc6 +MDttYXJnaW46MCI+PGRpdiBzdHlsZT0icGFkZGluZy1ib3R0b206MTBweDttYXJnaW4tYm90dG9t +OjEwcHg7ZGlzcGxheTppbmxpbmUtYmxvY2siPjxkaXYgc3R5bGU9ImZvbnQtZmFtaWx5OiZxdW90 +O+W+rui9r+mbhem7kSZxdW90OzsgZm9udC1zaXplOiAxNHB4OyBjb2xvcjojMDAwMDAwIj4KICAg +IDxzdHlsZT4KICAgICAgICBmb250ewogICAgICAgICAgICBsaW5lLWhlaWdodDogMS42OwogICAg +ICAgIH0KICAgIDwvc3R5bGU+CjxkaXYgc3R5bGU9ImZvbnQtZmFtaWx5OiZxdW90O+W+rui9r+mb +hem7kSZxdW90OzsgZm9udC1zaXplOiAxNHB4OyBjb2xvcjojMDAwMDAwIj4KICAgIDxzdHlsZT4K +ICAgICAgICBmb250ewogICAgICAgICAgICBsaW5lLWhlaWdodDogMS42OwogICAgICAgIH0KICAg +IDwvc3R5bGU+CjxkaXYgc3R5bGU9ImZvbnQtZmFtaWx5OiZxdW90O+W+rui9r+mbhem7kSZxdW90 +OzsgZm9udC1zaXplOiAxNHB4OyBjb2xvcjojMDAwMDAwIj4KICAgIDxzdHlsZT4KICAgICAgICBm +b250ewogICAgICAgICAgICBsaW5lLWhlaWdodDogMS42OwogICAgICAgIH0KICAgIDwvc3R5bGU+ +CjxkaXYgc3R5bGU9ImZvbnQtZmFtaWx5OiZxdW90O+W+rui9r+mbhem7kSZxdW90OzsgZm9udC1z +aXplOiAxNHB4OyBjb2xvcjojMDAwMDAwIj4KICAgIDxzdHlsZT4KICAgICAgICBmb250ewogICAg +ICAgICAgICBsaW5lLWhlaWdodDogMS42OwogICAgICAgIH0KICAgIDwvc3R5bGU+CjxzcGFuIHN0 +eWxlPSJjb2xvcjogcmdiKDE5MSwgMTkxLCAxOTEpOyBmb250LWZhbWlseTogJ01pY3Jvc29mdCBZ +YWhlaSc7IGZvbnQtc2l6ZTogMTNweDsgb3JwaGFuczogMjsgd2lkb3dzOiAyOyI+QmVzdCByZWdh +cmRzLDwvc3Bhbj48ZGl2IHN0eWxlPSJtYXJnaW46IDBweDsgcGFkZGluZzogMHB4OyBib3JkZXI6 +IDBweDsgb3V0bGluZTogMHB4OyBmb250LWZhbWlseTogVGFob21hLCBBcmlhbCwgU1RIZWl0aSwg +U2ltU3VuOyBmb250LXZhcmlhbnQtbGlnYXR1cmVzOiBub3JtYWw7IG9ycGhhbnM6IDI7IHdpZG93 +czogMjsgY2xlYXI6IGJvdGg7Ij48c3BhbiBzdHlsZT0ibWFyZ2luOiAwcHg7IHBhZGRpbmc6IDBw +eDsgYm9yZGVyOiAwcHg7IG91dGxpbmU6IDBweDsgZm9udC1mYW1pbHk6ICZxdW90O01pY3Jvc29m +dCBZYWhlaSZxdW90OzsgZm9udC1zaXplOiAxM3B4OyBjb2xvcjogcmdiKDE5MSwgMTkxLCAxOTEp +OyI+5p2o6L2pPC9zcGFuPjwvZGl2PjxkaXYgc3R5bGU9Im1hcmdpbjogMHB4OyBwYWRkaW5nOiAw +cHg7IGJvcmRlcjogMHB4OyBvdXRsaW5lOiAwcHg7IGZvbnQtZmFtaWx5OiBUYWhvbWEsIEFyaWFs +LCBTVEhlaXRpLCBTaW1TdW47IGZvbnQtdmFyaWFudC1saWdhdHVyZXM6IG5vcm1hbDsgb3JwaGFu +czogMjsgd2lkb3dzOiAyOyBjbGVhcjogYm90aDsiPjwvZGl2PjxkaXYgc3R5bGU9Im1hcmdpbjog +MHB4OyBwYWRkaW5nOiAwcHg7IGJvcmRlcjogMHB4OyBvdXRsaW5lOiAwcHg7IGZvbnQtZmFtaWx5 +OiBUYWhvbWEsIEFyaWFsLCBTVEhlaXRpLCBTaW1TdW47IGZvbnQtdmFyaWFudC1saWdhdHVyZXM6 +IG5vcm1hbDsgb3JwaGFuczogMjsgd2lkb3dzOiAyOyBjbGVhcjogYm90aDsiPjxpbWcgc3R5bGU9 +Im1heC13aWR0aDogdW5zZXQ7IiBzcmM9Imh0dHBzOi8vbWFpbC1vbmxpbmUubm9zZG4uMTI3Lm5l +dC93enBtbWMvY2U5ZjhiMzZlMWZmYmU1NTMyOWMxOTZjODRmZTUxOTcucG5nIj48L2Rpdj48ZGl2 +IHN0eWxlPSJtYXJnaW46IDBweDsgcGFkZGluZzogMHB4OyBib3JkZXI6IDBweDsgb3V0bGluZTog +MHB4OyBmb250LWZhbWlseTogVGFob21hLCBBcmlhbCwgU1RIZWl0aSwgU2ltU3VuOyBmb250LXZh +cmlhbnQtbGlnYXR1cmVzOiBub3JtYWw7IG9ycGhhbnM6IDI7IHdpZG93czogMjsgY2xlYXI6IGJv +dGg7Ij48c3BhbiBzdHlsZT0ibWFyZ2luOiAwcHg7IHBhZGRpbmc6IDBweDsgYm9yZGVyOiAwcHg7 +IG91dGxpbmU6IDBweDsgZm9udC1mYW1pbHk6ICZxdW90O01pY3Jvc29mdCBZYWhlaSZxdW90Ozsg +Y29sb3I6IHJnYigxOTEsIDE5MSwgMTkxKTsiPuWcsOWdgO+8muS4reWbvcK35Y2X5Lqs6L2v5Lu2 +6LC36L2v5Lu25aSn6YGTIDExIOWPt+iKseelnuWkp+WOpiAyLTNGPC9zcGFuPjwvZGl2PjxkaXYg +c3R5bGU9Im1hcmdpbjogMHB4OyBwYWRkaW5nOiAwcHg7IGJvcmRlcjogMHB4OyBvdXRsaW5lOiAw +cHg7IGZvbnQtZmFtaWx5OiBUYWhvbWEsIEFyaWFsLCBTVEhlaXRpLCBTaW1TdW47IGZvbnQtdmFy +aWFudC1saWdhdHVyZXM6IG5vcm1hbDsgb3JwaGFuczogMjsgd2lkb3dzOiAyOyBjbGVhcjogYm90 +aDsiPjxzcGFuIHN0eWxlPSJtYXJnaW46IDBweDsgcGFkZGluZzogMHB4OyBib3JkZXI6IDBweDsg +b3V0bGluZTogMHB4OyBmb250LWZhbWlseTogJnF1b3Q7TWljcm9zb2Z0IFlhaGVpJnF1b3Q7OyBj +b2xvcjogcmdiKDE5MSwgMTkxLCAxOTEpOyI+5omL5py677yaMTg3MjYxMjg0ODk8L3NwYW4+PC9k +aXY+PGRpdiBzdHlsZT0ibWFyZ2luOiAwcHg7IHBhZGRpbmc6IDBweDsgYm9yZGVyOiAwcHg7IG91 +dGxpbmU6IDBweDsgZm9udC1mYW1pbHk6IFRhaG9tYSwgQXJpYWwsIFNUSGVpdGksIFNpbVN1bjsg +Zm9udC12YXJpYW50LWxpZ2F0dXJlczogbm9ybWFsOyBvcnBoYW5zOiAyOyB3aWRvd3M6IDI7IGNs +ZWFyOiBib3RoOyI+PHNwYW4gc3R5bGU9Im1hcmdpbjogMHB4OyBwYWRkaW5nOiAwcHg7IGJvcmRl +cjogMHB4OyBvdXRsaW5lOiAwcHg7IGZvbnQtZmFtaWx5OiAmcXVvdDtNaWNyb3NvZnQgWWFoZWkm +cXVvdDs7IGNvbG9yOiByZ2IoMTkxLCAxOTEsIDE5MSk7Ij7pgq7nrrHvvJp5YW5neHVhbkB3aXRz +b2Z0LmNuPC9zcGFuPjwvZGl2Pgo8L2Rpdj4KPC9kaXY+CjwvZGl2Pgo8L2Rpdj48L2Rpdj48L2Rp +dj48L2Rpdj48L2Rpdj48IS0t8J+YgC0tPjwvZGl2PjwvZGl2PjwvYm9keT48L2h0bWw+ + +--=_mailmaster-6a18e4a4_0_5af1_=-- diff --git a/media/inbound/2025-10-31_1700_G5开发周报_2025-10-27_--_2025-10-31---5d2c4d25-dce3-425d-b07a-c8411e0220e5.eml b/media/inbound/2025-10-31_1700_G5开发周报_2025-10-27_--_2025-10-31---5d2c4d25-dce3-425d-b07a-c8411e0220e5.eml new file mode 100644 index 0000000..0bb378d --- /dev/null +++ b/media/inbound/2025-10-31_1700_G5开发周报_2025-10-27_--_2025-10-31---5d2c4d25-dce3-425d-b07a-c8411e0220e5.eml @@ -0,0 +1,292 @@ +Date: Fri, 31 Oct 2025 17:00:07 +0800 +From: =?utf-8?B?5p2o6L2p?= +To: =?utf-8?B?5YiY5by6?= +Cc: =?utf-8?B?5bGI5paw6b6Z?= , =?utf-8?B?5pyx5paM?= + , =?utf-8?B?6ZmI5piO?= , + =?utf-8?Q?xym=40witsoft.cn?= +Message-ID: <263A0B58-6782-4ECA-B5FC-0DBC3D34A8D4@witsoft.cn> +Subject: =?utf-8?B?RzXlvIDlj5HlkajmiqXjgJAyMDI1LTEwLTI3IC0tICAyMDI1LTEw?= + =?utf-8?B?LTMx44CR?= +MIME-Version: 1.0 +Content-Type: multipart/alternative; boundary="=_mailmaster-6a18e4a4_0_41bb_=" + +--=_mailmaster-6a18e4a4_0_41bb_= +Content-Type: text/plain; charset="utf-8" +Content-Transfer-Encoding: base64 + +5oKo5aW977yB5Lul5LiL5piv5oiR5pys5ZGo55qE5bel5L2c5oC757uT5Y+K5LiL5ZGo6K6h5YiS +77yM6K+35a6h6ZiF44CCCuS4gOOAgeacrOWRqOW3peS9nOaAu+e7kwrph43ngrnlt6XkvZzlrozm +iJDmg4XlhrUK5Lu75YqhMe+8mkc15Li75pWw5o2uNS4yLjLniYjmnKzmtYvor5XlrozmiJAK5Lu7 +5YqhMu+8mkc15bqT5a2Y6aaW6aG16ZyA5rGC5rWL6K+V5a6M5oiQCuW4uOinhOW3peS9nArml6Xl +uLjkuovliqEx77yaMjAyNS0xMC0yNyDkuLvmlbDmja7nvJbnoIHmraPliJnop4TojIPpnIDmsYLl +vIDlj5EK5pel5bi45LqL5YqhMu+8mjIwMjUtMTAtMjgg5Li75pWw5o2u55u45YWzYnVn5L+u5aSN +IArml6XluLjkuovliqEz77yaMjAyNS0xMC0yOSDkuLvmlbDmja7lkozlupPlrZjpnIDmsYLmtYvo +r5Xlrozmr5UK5pel5bi45LqL5YqhNO+8mjIwMjUtMTAtMzAg5Li75pWw5o2u5Y2V5L2N5o2i566X +5om56YeP5o6l5Y+j5byA5Y+R5pa55qGICuaXpeW4uOS6i+WKoTXvvJoyMDI1LTEwLTMxIOeJiOac +rOWPkeW4g+aUr+aMgSDkuLvmlbDmja7pnIDmsYLor4TlrqHlkozlvIDlj5HmlrnmoYgK5LqM44CB +5LiL5ZGo5bel5L2c6K6h5YiSCumHjeeCueS7u+WKoQrorqHliJIx77yaNS4yLjPniYjmnKzlvIDl +j5EK5aSH5rOo77ya5pegCkJlc3QgcmVnYXJkcyzmnajovakK5Zyw5Z2A77ya5Lit5Zu9wrfljZfk +uqzova/ku7bosLfova/ku7blpKfpgZMgMTEg5Y+36Iqx56We5aSn5Y6mIDItM0YK5omL5py677ya +MTg3MjYxMjg0ODkK6YKu566x77yaeWFuZ3h1YW5Ad2l0c29mdC5jbg== + +--=_mailmaster-6a18e4a4_0_41bb_= +Content-Type: text/html; charset="utf-8" +Content-Transfer-Encoding: base64 + +PGh0bWw+PGhlYWQ+PG1ldGEgaHR0cC1lcXVpdj0nQ29udGVudC1UeXBlJyBjb250ZW50PSd0ZXh0 +L2h0bWw7IGNoYXJzZXQ9VVRGLTgnPjwvaGVhZD48Ym9keSBzdHlsZT1saW5lLWhlaWdodDogMS41 +O2ZvbnQtZmFtaWx5OiAi5b6u6L2v6ZuF6buRIj48ZGl2ICBzdHlsZT0iZm9udC1mYW1pbHk6IOW+ +rui9r+mbhem7kTsiPjxkaXYgc3R5bGU9ImZvbnQtZmFtaWx5OiDlvq7ova/pm4Xpu5E7Ij48ZGl2 +IHN0eWxlPSIiPjxkaXYgc3R5bGU9IiI+PHAgY2lkPSJuMCIgbWR0eXBlPSJwYXJhZ3JhcGgiIGNs +YXNzPSJtZC1lbmQtYmxvY2sgbWQtcCBtZC1mb2N1cyIgc3R5bGU9ImZvbnQtZmFtaWx5OiAmcXVv +dDtPcGVuIFNhbnMmcXVvdDssICZxdW90O0NsZWFyIFNhbnMmcXVvdDssICZxdW90O0hlbHZldGlj +YSBOZXVlJnF1b3Q7LCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmOyBib3gtc2l6aW5nOiBi +b3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5oZXJpdDsgb3JwaGFuczogNDsgbWFyZ2luOiAwLjhl +bSAwcHg7IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJlbGF0aXZlOyBjb2xvcjog +cmdiKDUxLCA1MSwgNTEpOyBmb250LXNpemU6IDE2cHg7Ij48c3BhbiBtZC1pbmxpbmU9InBsYWlu +IiBjbGFzcz0ibWQtcGxhaW4gbWQtZXhwYW5kIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJv +eDsiPuaCqOWlve+8geS7peS4i+aYr+aIkeacrOWRqOeahOW3peS9nOaAu+e7k+WPiuS4i+WRqOiu +oeWIku+8jOivt+WuoemYheOAgjwvc3Bhbj48L3A+PGRpdiB0YWJpbmRleD0iLTEiIGNpZD0ibjIi +IG1kdHlwZT0iaHIiIGNsYXNzPSJtZC1ociBtZC1lbmQtYmxvY2siIHN0eWxlPSJmb250LWZhbWls +eTogJnF1b3Q7T3BlbiBTYW5zJnF1b3Q7LCAmcXVvdDtDbGVhciBTYW5zJnF1b3Q7LCAmcXVvdDtI +ZWx2ZXRpY2EgTmV1ZSZxdW90OywgSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjsgYm94LXNp +emluZzogYm9yZGVyLWJveDsgY29sb3I6IHJnYig1MSwgNTEsIDUxKTsgZm9udC1zaXplOiAxNnB4 +OyI+PGhyIHN0eWxlPSJib3gtc2l6aW5nOiBjb250ZW50LWJveDsgaGVpZ2h0OiAycHg7IG1hcmdp +bjogMTZweCAwcHg7IGJvcmRlcjogMHB4IG5vbmU7IHBhZGRpbmc6IDBweDsgYmFja2dyb3VuZC1j +b2xvcjogcmdiKDIzMSwgMjMxLCAyMzEpOyI+PC9kaXY+PGgzIGNpZD0ibjMiIG1kdHlwZT0iaGVh +ZGluZyIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1oZWFkaW5nIiBzdHlsZT0iZm9udC1mYW1pbHk6 +ICZxdW90O09wZW4gU2FucyZxdW90OywgJnF1b3Q7Q2xlYXIgU2FucyZxdW90OywgJnF1b3Q7SGVs +dmV0aWNhIE5ldWUmcXVvdDssIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7IGJveC1zaXpp +bmc6IGJvcmRlci1ib3g7IGJyZWFrLWFmdGVyOiBhdm9pZC1wYWdlOyBicmVhay1pbnNpZGU6IGF2 +b2lkOyBvcnBoYW5zOiA0OyBmb250LXNpemU6IDEuNWVtOyBtYXJnaW4tdG9wOiAxcmVtOyBtYXJn +aW4tYm90dG9tOiAxcmVtOyBwb3NpdGlvbjogcmVsYXRpdmU7IGxpbmUtaGVpZ2h0OiAxLjQzOyBj +dXJzb3I6IHRleHQ7IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgY29sb3I6IHJnYig1MSwgNTEsIDUx +KTsiPjxzcGFuIG1kLWlubGluZT0ic3Ryb25nIiBjbGFzcz0ibWQtcGFpci1zICIgc3R5bGU9ImJv +eC1zaXppbmc6IGJvcmRlci1ib3g7Ij48c3Ryb25nIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXIt +Ym94OyI+PHNwYW4gbWQtaW5saW5lPSJwbGFpbiIgY2xhc3M9Im1kLXBsYWluIiBzdHlsZT0iYm94 +LXNpemluZzogYm9yZGVyLWJveDsiPuS4gOOAgeacrOWRqOW3peS9nOaAu+e7kzwvc3Bhbj48L3N0 +cm9uZz48L3NwYW4+PC9oMz48b2wgY2xhc3M9Im9sLWxpc3QiIHN0YXJ0PSIiIGNpZD0ibjQiIG1k +dHlwZT0ibGlzdCIgc3R5bGU9ImZvbnQtZmFtaWx5OiAmcXVvdDtPcGVuIFNhbnMmcXVvdDssICZx +dW90O0NsZWFyIFNhbnMmcXVvdDssICZxdW90O0hlbHZldGljYSBOZXVlJnF1b3Q7LCBIZWx2ZXRp +Y2EsIEFyaWFsLCBzYW5zLXNlcmlmOyBib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBw +eDsgcGFkZGluZy1sZWZ0OiAzMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7IGNvbG9yOiByZ2IoNTEs +IDUxLCA1MSk7IGZvbnQtc2l6ZTogMTZweDsiPjxsaSBjbGFzcz0ibWQtbGlzdC1pdGVtIiBjaWQ9 +Im41IiBtZHR5cGU9Imxpc3RfaXRlbSIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1h +cmdpbjogMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48cCBjaWQ9Im42IiBtZHR5cGU9InBhcmFn +cmFwaCIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1wIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVy +LWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IG9ycGhhbnM6IDQ7IG1hcmdpbjogMHB4IDBweCAw +LjVyZW07IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHNwYW4g +bWQtaW5saW5lPSJzdHJvbmciIGNsYXNzPSJtZC1wYWlyLXMgIiBzdHlsZT0iYm94LXNpemluZzog +Ym9yZGVyLWJveDsiPjxzdHJvbmcgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij48c3Bh +biBtZC1pbmxpbmU9InBsYWluIiBjbGFzcz0ibWQtcGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBi +b3JkZXItYm94OyI+6YeN54K55bel5L2c5a6M5oiQ5oOF5Ya1PC9zcGFuPjwvc3Ryb25nPjwvc3Bh +bj48L3A+PC9saT48dWwgY2xhc3M9InVsLWxpc3QiIGNpZD0ibjciIG1kdHlwZT0ibGlzdCIgZGF0 +YS1tYXJrPSItIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBh +ZGRpbmctbGVmdDogMzBweDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PGxpIGNsYXNzPSJtZC1saXN0 +LWl0ZW0iIGNpZD0ibjgiIG1kdHlwZT0ibGlzdF9pdGVtIiBzdHlsZT0iYm94LXNpemluZzogYm9y +ZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxwIGNpZD0ibjkiIG1k +dHlwZT0icGFyYWdyYXBoIiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLXAiIHN0eWxlPSJib3gtc2l6 +aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5oZXJpdDsgb3JwaGFuczogNDsgbWFyZ2lu +OiAwcHggMHB4IDAuNXJlbTsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyBwb3NpdGlvbjogcmVsYXRp +dmU7Ij48c3BhbiBtZC1pbmxpbmU9InBsYWluIiBjbGFzcz0ibWQtcGxhaW4iIHN0eWxlPSJib3gt +c2l6aW5nOiBib3JkZXItYm94OyI+5Lu75YqhMe+8mkc15Li75pWw5o2uNS4yLjLniYjmnKzmtYvo +r5XlrozmiJA8L3NwYW4+PC9wPjwvbGk+PGxpIGNsYXNzPSJtZC1saXN0LWl0ZW0iIGNpZD0ibjEw +IiBtZHR5cGU9Imxpc3RfaXRlbSIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdp +bjogMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48cCBjaWQ9Im4xMSIgbWR0eXBlPSJwYXJhZ3Jh +cGgiIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1i +b3g7IGxpbmUtaGVpZ2h0OiBpbmhlcml0OyBvcnBoYW5zOiA0OyBtYXJnaW46IDBweCAwcHggMC41 +cmVtOyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxzcGFuIG1k +LWlubGluZT0icGxhaW4iIGNsYXNzPSJtZC1wbGFpbiIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRl +ci1ib3g7Ij7ku7vliqEy77yaPC9zcGFuPkc15bqT5a2Y6aaW6aG16ZyA5rGC5rWL6K+V5a6M5oiQ +PC9wPjwvbGk+PC91bD48bGkgY2xhc3M9Im1kLWxpc3QtaXRlbSIgY2lkPSJuMTIiIG1kdHlwZT0i +bGlzdF9pdGVtIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBv +c2l0aW9uOiByZWxhdGl2ZTsiPjxwIGNpZD0ibjEzIiBtZHR5cGU9InBhcmFncmFwaCIgY2xhc3M9 +Im1kLWVuZC1ibG9jayBtZC1wIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1o +ZWlnaHQ6IGluaGVyaXQ7IG9ycGhhbnM6IDQ7IG1hcmdpbjogMHB4IDBweCAwLjVyZW07IHdoaXRl +LXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHNwYW4gbWQtaW5saW5lPSJz +dHJvbmciIGNsYXNzPSJtZC1wYWlyLXMgIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsi +PjxzdHJvbmcgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij48c3BhbiBtZC1pbmxpbmU9 +InBsYWluIiBjbGFzcz0ibWQtcGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+ +5bi46KeE5bel5L2cPC9zcGFuPjwvc3Ryb25nPjwvc3Bhbj48L3A+PC9saT48dWwgY2xhc3M9InVs +LWxpc3QiIGNpZD0ibjE0IiBtZHR5cGU9Imxpc3QiIGRhdGEtbWFyaz0iLSIgc3R5bGU9ImJveC1z +aXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBwYWRkaW5nLWxlZnQ6IDMwcHg7IHBvc2l0 +aW9uOiByZWxhdGl2ZTsiPjxsaSBjbGFzcz0ibWQtbGlzdC1pdGVtIiBjaWQ9Im4xNSIgbWR0eXBl +PSJsaXN0X2l0ZW0iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsg +cG9zaXRpb246IHJlbGF0aXZlOyI+PHAgY2lkPSJuMTYiIG1kdHlwZT0icGFyYWdyYXBoIiBjbGFz +cz0ibWQtZW5kLWJsb2NrIG1kLXAiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5l +LWhlaWdodDogaW5oZXJpdDsgb3JwaGFuczogNDsgbWFyZ2luOiAwcHggMHB4IDAuNXJlbTsgd2hp +dGUtc3BhY2U6IHByZS13cmFwOyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48c3BhbiBtZC1pbmxpbmU9 +InBsYWluIiBjbGFzcz0ibWQtcGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+ +5pel5bi45LqL5YqhMe+8mjIwMjUtMTAtMjcg5Li75pWw5o2u57yW56CB5q2j5YiZ6KeE6IyD6ZyA +5rGC5byA5Y+RPC9zcGFuPjwvcD48L2xpPjwvdWw+PC9vbD48b2wgY2xhc3M9Im9sLWxpc3QiIHN0 +YXJ0PSIiIGNpZD0ibjQiIG1kdHlwZT0ibGlzdCIgc3R5bGU9ImZvbnQtZmFtaWx5OiDlvq7ova/p +m4Xpu5E7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBwYWRkaW5nLWxlZnQ6 +IDMwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjx1bCBjbGFzcz0idWwtbGlzdCIgY2lkPSJuMTQi +IG1kdHlwZT0ibGlzdCIgZGF0YS1tYXJrPSItIiBzdHlsZT0iZm9udC1mYW1pbHk6IOW+rui9r+mb +hem7kTsgYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBhZGRpbmctbGVmdDog +MzBweDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PGxpIGNsYXNzPSJtZC1saXN0LWl0ZW0iIGNpZD0i +bjE1IiBtZHR5cGU9Imxpc3RfaXRlbSIgc3R5bGU9ImNvbG9yOiByZ2IoNTEsIDUxLCA1MSk7IGZv +bnQtZmFtaWx5OiAmcXVvdDtPcGVuIFNhbnMmcXVvdDssICZxdW90O0NsZWFyIFNhbnMmcXVvdDss +ICZxdW90O0hlbHZldGljYSBOZXVlJnF1b3Q7LCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlm +OyBmb250LXNpemU6IDE2cHg7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBw +b3NpdGlvbjogcmVsYXRpdmU7Ij48cCBjaWQ9Im4xNiIgbWR0eXBlPSJwYXJhZ3JhcGgiIGNsYXNz +PSJtZC1lbmQtYmxvY2sgbWQtcCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGxpbmUt +aGVpZ2h0OiBpbmhlcml0OyBvcnBoYW5zOiA0OyBtYXJnaW46IDBweCAwcHggMC41cmVtOyB3aGl0 +ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxzcGFuIG1kLWlubGluZT0i +cGxhaW4iIGNsYXNzPSJtZC1wbGFpbiIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij7m +l6XluLjkuovliqEy77yaMjAyNS0xMC0yOCDkuLvmlbDmja7nm7jlhbNidWfkv67lpI0KPC9zcGFu +PjwvcD48L2xpPjxsaSBjbGFzcz0ibWQtbGlzdC1pdGVtIiBjaWQ9Im4xNyIgbWR0eXBlPSJsaXN0 +X2l0ZW0iIHN0eWxlPSJjb2xvcjogcmdiKDUxLCA1MSwgNTEpOyBmb250LWZhbWlseTogJnF1b3Q7 +T3BlbiBTYW5zJnF1b3Q7LCAmcXVvdDtDbGVhciBTYW5zJnF1b3Q7LCAmcXVvdDtIZWx2ZXRpY2Eg +TmV1ZSZxdW90OywgSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxNnB4 +OyBib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcG9zaXRpb246IHJlbGF0aXZl +OyI+PHAgY2lkPSJuMTgiIG1kdHlwZT0icGFyYWdyYXBoIiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1k +LXAiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5oZXJpdDsg +b3JwaGFuczogNDsgbWFyZ2luOiAwcHggMHB4IDAuNXJlbTsgd2hpdGUtc3BhY2U6IHByZS13cmFw +OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48c3BhbiBtZC1pbmxpbmU9InBsYWluIiBjbGFzcz0ibWQt +cGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+5pel5bi45LqL5YqhM++8mjIw +MjUtMTAtMjkg5Li75pWw5o2u5ZKM5bqT5a2Y6ZyA5rGC5rWL6K+V5a6M5q+VPC9zcGFuPjwvcD48 +L2xpPjwvdWw+PC9vbD48b2wgY2xhc3M9Im9sLWxpc3QiIHN0YXJ0PSIiIGNpZD0ibjQiIG1kdHlw +ZT0ibGlzdCIgc3R5bGU9ImZvbnQtZmFtaWx5OiDlvq7ova/pm4Xpu5E7IGJveC1zaXppbmc6IGJv +cmRlci1ib3g7IG1hcmdpbjogMHB4OyBwYWRkaW5nLWxlZnQ6IDMwcHg7IHBvc2l0aW9uOiByZWxh +dGl2ZTsiPjx1bCBjbGFzcz0idWwtbGlzdCIgY2lkPSJuMTQiIG1kdHlwZT0ibGlzdCIgZGF0YS1t +YXJrPSItIiBzdHlsZT0iZm9udC1mYW1pbHk6IOW+rui9r+mbhem7kTsgYm94LXNpemluZzogYm9y +ZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBhZGRpbmctbGVmdDogMzBweDsgcG9zaXRpb246IHJlbGF0 +aXZlOyI+PGxpIGNsYXNzPSJtZC1saXN0LWl0ZW0iIGNpZD0ibjE3IiBtZHR5cGU9Imxpc3RfaXRl +bSIgc3R5bGU9ImNvbG9yOiByZ2IoNTEsIDUxLCA1MSk7IGZvbnQtZmFtaWx5OiAmcXVvdDtPcGVu +IFNhbnMmcXVvdDssICZxdW90O0NsZWFyIFNhbnMmcXVvdDssICZxdW90O0hlbHZldGljYSBOZXVl +JnF1b3Q7LCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDE2cHg7IGJv +eC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48 +cCBjaWQ9Im4xOCIgbWR0eXBlPSJwYXJhZ3JhcGgiIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCIg +c3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhlcml0OyBvcnBo +YW5zOiA0OyBtYXJnaW46IDBweCAwcHggMC41cmVtOyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBv +c2l0aW9uOiByZWxhdGl2ZTsiPjxzcGFuIG1kLWlubGluZT0icGxhaW4iIGNsYXNzPSJtZC1wbGFp +biIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij7ml6XluLjkuovliqE077yaMjAyNS0x +MC0zMCDkuLvmlbDmja7ljZXkvY3mjaLnrpfmibnph4/mjqXlj6PlvIDlj5HmlrnmoYg8L3NwYW4+ +PC9wPjwvbGk+PGxpIGNsYXNzPSJtZC1saXN0LWl0ZW0iIGNpZD0ibjE3IiBtZHR5cGU9Imxpc3Rf +aXRlbSIgc3R5bGU9ImNvbG9yOiByZ2IoNTEsIDUxLCA1MSk7IGZvbnQtZmFtaWx5OiAmcXVvdDtP +cGVuIFNhbnMmcXVvdDssICZxdW90O0NsZWFyIFNhbnMmcXVvdDssICZxdW90O0hlbHZldGljYSBO +ZXVlJnF1b3Q7LCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDE2cHg7 +IGJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7 +Ij48cCBjaWQ9Im4xOCIgbWR0eXBlPSJwYXJhZ3JhcGgiIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQt +cCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhlcml0OyBv +cnBoYW5zOiA0OyBtYXJnaW46IDBweCAwcHggMC41cmVtOyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7 +IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxzcGFuIG1kLWlubGluZT0icGxhaW4iIGNsYXNzPSJtZC1w +bGFpbiIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij7ml6XluLjkuovliqE177yaMjAy +NS0xMC0zMSDniYjmnKzlj5HluIPmlK/mjIENIDwvc3Bhbj7kuLvmlbDmja7pnIDmsYLor4TlrqHl +kozlvIDlj5HmlrnmoYg8L3A+PC9saT48L3VsPjwvb2w+PGgzIGNpZD0ibjI1IiBtZHR5cGU9Imhl +YWRpbmciIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtaGVhZGluZyIgc3R5bGU9ImZvbnQtZmFtaWx5 +OiAmcXVvdDtPcGVuIFNhbnMmcXVvdDssICZxdW90O0NsZWFyIFNhbnMmcXVvdDssICZxdW90O0hl +bHZldGljYSBOZXVlJnF1b3Q7LCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmOyBib3gtc2l6 +aW5nOiBib3JkZXItYm94OyBicmVhay1hZnRlcjogYXZvaWQtcGFnZTsgYnJlYWstaW5zaWRlOiBh +dm9pZDsgb3JwaGFuczogNDsgZm9udC1zaXplOiAxLjVlbTsgbWFyZ2luLXRvcDogMXJlbTsgbWFy +Z2luLWJvdHRvbTogMXJlbTsgcG9zaXRpb246IHJlbGF0aXZlOyBsaW5lLWhlaWdodDogMS40Mzsg +Y3Vyc29yOiB0ZXh0OyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IGNvbG9yOiByZ2IoNTEsIDUxLCA1 +MSk7Ij48c3BhbiBtZC1pbmxpbmU9InN0cm9uZyIgY2xhc3M9Im1kLXBhaXItcyAiIHN0eWxlPSJi +b3gtc2l6aW5nOiBib3JkZXItYm94OyI+PHN0cm9uZyBzdHlsZT0iYm94LXNpemluZzogYm9yZGVy +LWJveDsiPjxzcGFuIG1kLWlubGluZT0icGxhaW4iIGNsYXNzPSJtZC1wbGFpbiIgc3R5bGU9ImJv +eC1zaXppbmc6IGJvcmRlci1ib3g7Ij7kuozjgIHkuIvlkajlt6XkvZzorqHliJI8L3NwYW4+PC9z +dHJvbmc+PC9zcGFuPjwvaDM+PG9sIGNsYXNzPSJvbC1saXN0IiBzdGFydD0iIiBjaWQ9Im4yNiIg +bWR0eXBlPSJsaXN0IiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7 +IHBhZGRpbmctbGVmdDogMzBweDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PGxpIGNsYXNzPSJtZC1s +aXN0LWl0ZW0iIGNpZD0ibjI3IiBtZHR5cGU9Imxpc3RfaXRlbSIgc3R5bGU9ImZvbnQtZmFtaWx5 +OiAmcXVvdDtPcGVuIFNhbnMmcXVvdDssICZxdW90O0NsZWFyIFNhbnMmcXVvdDssICZxdW90O0hl +bHZldGljYSBOZXVlJnF1b3Q7LCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmOyBjb2xvcjog +cmdiKDUxLCA1MSwgNTEpOyBmb250LXNpemU6IDE2cHg7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7 +IG1hcmdpbjogMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48cCBjaWQ9Im4yOCIgbWR0eXBlPSJw +YXJhZ3JhcGgiIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCIgc3R5bGU9ImJveC1zaXppbmc6IGJv +cmRlci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhlcml0OyBvcnBoYW5zOiA0OyBtYXJnaW46IDBweCAw +cHggMC41cmVtOyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxz +cGFuIG1kLWlubGluZT0ic3Ryb25nIiBjbGFzcz0ibWQtcGFpci1zICIgc3R5bGU9ImJveC1zaXpp +bmc6IGJvcmRlci1ib3g7Ij48c3Ryb25nIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+ +PHNwYW4gbWQtaW5saW5lPSJwbGFpbiIgY2xhc3M9Im1kLXBsYWluIiBzdHlsZT0iYm94LXNpemlu +ZzogYm9yZGVyLWJveDsiPumHjeeCueS7u+WKoTwvc3Bhbj48L3N0cm9uZz48L3NwYW4+PC9wPjwv +bGk+PHVsIGNsYXNzPSJ1bC1saXN0IiBjaWQ9Im4yOSIgbWR0eXBlPSJsaXN0IiBkYXRhLW1hcms9 +Ii0iIHN0eWxlPSJmb250LWZhbWlseTogJnF1b3Q7T3BlbiBTYW5zJnF1b3Q7LCAmcXVvdDtDbGVh +ciBTYW5zJnF1b3Q7LCAmcXVvdDtIZWx2ZXRpY2EgTmV1ZSZxdW90OywgSGVsdmV0aWNhLCBBcmlh +bCwgc2Fucy1zZXJpZjsgY29sb3I6IHJnYig1MSwgNTEsIDUxKTsgZm9udC1zaXplOiAxNnB4OyBi +b3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcGFkZGluZy1sZWZ0OiAzMHB4OyBw +b3NpdGlvbjogcmVsYXRpdmU7Ij48bGkgY2xhc3M9Im1kLWxpc3QtaXRlbSIgY2lkPSJuMzAiIG1k +dHlwZT0ibGlzdF9pdGVtIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAw +cHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxwIGNpZD0ibjMxIiBtZHR5cGU9InBhcmFncmFwaCIg +Y2xhc3M9Im1kLWVuZC1ibG9jayBtZC1wIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsg +bGluZS1oZWlnaHQ6IGluaGVyaXQ7IG9ycGhhbnM6IDQ7IG1hcmdpbjogMHB4IDBweCAwLjVyZW07 +IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHNwYW4gbWQtaW5s +aW5lPSJwbGFpbiIgY2xhc3M9Im1kLXBsYWluIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJv +eDsiPuiuoeWIkjHvvJo8L3NwYW4+NS4yLjPniYjmnKzlvIDlj5E8L3A+PC9saT48L3VsPjwvb2w+ +PGRpdiB0YWJpbmRleD0iLTEiIGNpZD0ibjM5IiBtZHR5cGU9ImhyIiBjbGFzcz0ibWQtaHIgbWQt +ZW5kLWJsb2NrIiBzdHlsZT0iZm9udC1mYW1pbHk6ICZxdW90O09wZW4gU2FucyZxdW90OywgJnF1 +b3Q7Q2xlYXIgU2FucyZxdW90OywgJnF1b3Q7SGVsdmV0aWNhIE5ldWUmcXVvdDssIEhlbHZldGlj +YSwgQXJpYWwsIHNhbnMtc2VyaWY7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7IGNvbG9yOiByZ2Io +NTEsIDUxLCA1MSk7IGZvbnQtc2l6ZTogMTZweDsiPjxociBzdHlsZT0iYm94LXNpemluZzogY29u +dGVudC1ib3g7IGhlaWdodDogMnB4OyBtYXJnaW46IDE2cHggMHB4OyBib3JkZXI6IDBweCBub25l +OyBwYWRkaW5nOiAwcHg7IGJhY2tncm91bmQtY29sb3I6IHJnYigyMzEsIDIzMSwgMjMxKTsiPjwv +ZGl2PjxwIGNpZD0ibjQwIiBtZHR5cGU9InBhcmFncmFwaCIgY2xhc3M9Im1kLWVuZC1ibG9jayBt +ZC1wIiBzdHlsZT0iZm9udC1mYW1pbHk6ICZxdW90O09wZW4gU2FucyZxdW90OywgJnF1b3Q7Q2xl +YXIgU2FucyZxdW90OywgJnF1b3Q7SGVsdmV0aWNhIE5ldWUmcXVvdDssIEhlbHZldGljYSwgQXJp +YWwsIHNhbnMtc2VyaWY7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhl +cml0OyBvcnBoYW5zOiA0OyBtYXJnaW46IDAuOGVtIDBweDsgd2hpdGUtc3BhY2U6IHByZS13cmFw +OyBwb3NpdGlvbjogcmVsYXRpdmU7IGNvbG9yOiByZ2IoNTEsIDUxLCA1MSk7IGZvbnQtc2l6ZTog +MTZweDsiPjxzcGFuIG1kLWlubGluZT0ic3Ryb25nIiBjbGFzcz0ibWQtcGFpci1zICIgc3R5bGU9 +ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij48c3Ryb25nIHN0eWxlPSJib3gtc2l6aW5nOiBib3Jk +ZXItYm94OyI+PHNwYW4gbWQtaW5saW5lPSJwbGFpbiIgY2xhc3M9Im1kLXBsYWluIiBzdHlsZT0i +Ym94LXNpemluZzogYm9yZGVyLWJveDsiPuWkh+azqDwvc3Bhbj48L3N0cm9uZz48L3NwYW4+PHNw +YW4gbWQtaW5saW5lPSJwbGFpbiIgY2xhc3M9Im1kLXBsYWluIG1kLWV4cGFuZCIgc3R5bGU9ImJv +eC1zaXppbmc6IGJvcmRlci1ib3g7Ij7vvJrml6A8L3NwYW4+PC9wPjwvZGl2PjxkaXYgc3R5bGU9 +ImZvbnQtZmFtaWx5OiDlvq7ova/pm4Xpu5E7Ij48YnI+PC9kaXY+PGRpdiBzcGVsbGNoZWNrPSJm +YWxzZSIgaWQ9Im50ZXMtcGNtYWMtc2lnbmF0dXJlIiBzdHlsZT0iZm9udC1mYW1pbHk6IOW+rui9 +r+mbhem7kTsiIGRhdGEtbnRlcy1zaWduYXR1cmU9InRydWUiPjxkaXYgc3R5bGU9ImZvbnQtc2l6 +ZToxNHB4O3BhZGRpbmc6MDttYXJnaW46MCI+PGRpdiBzdHlsZT0icGFkZGluZy1ib3R0b206MTBw +eDttYXJnaW4tYm90dG9tOjEwcHg7ZGlzcGxheTppbmxpbmUtYmxvY2siPjxkaXYgc3R5bGU9ImZv +bnQtZmFtaWx5OiZxdW90O+W+rui9r+mbhem7kSZxdW90OzsgZm9udC1zaXplOiAxNHB4OyBjb2xv +cjojMDAwMDAwIj4KICAgIDxzdHlsZT4KICAgICAgICBmb250ewogICAgICAgICAgICBsaW5lLWhl +aWdodDogMS42OwogICAgICAgIH0KICAgIDwvc3R5bGU+CjxkaXYgc3R5bGU9ImZvbnQtZmFtaWx5 +OiZxdW90O+W+rui9r+mbhem7kSZxdW90OzsgZm9udC1zaXplOiAxNHB4OyBjb2xvcjojMDAwMDAw +Ij4KICAgIDxzdHlsZT4KICAgICAgICBmb250ewogICAgICAgICAgICBsaW5lLWhlaWdodDogMS42 +OwogICAgICAgIH0KICAgIDwvc3R5bGU+CjxkaXYgc3R5bGU9ImZvbnQtZmFtaWx5OiZxdW90O+W+ +rui9r+mbhem7kSZxdW90OzsgZm9udC1zaXplOiAxNHB4OyBjb2xvcjojMDAwMDAwIj4KICAgIDxz +dHlsZT4KICAgICAgICBmb250ewogICAgICAgICAgICBsaW5lLWhlaWdodDogMS42OwogICAgICAg +IH0KICAgIDwvc3R5bGU+CjxkaXYgc3R5bGU9ImZvbnQtZmFtaWx5OiZxdW90O+W+rui9r+mbhem7 +kSZxdW90OzsgZm9udC1zaXplOiAxNHB4OyBjb2xvcjojMDAwMDAwIj4KICAgIDxzdHlsZT4KICAg +ICAgICBmb250ewogICAgICAgICAgICBsaW5lLWhlaWdodDogMS42OwogICAgICAgIH0KICAgIDwv +c3R5bGU+CjxzcGFuIHN0eWxlPSJjb2xvcjogcmdiKDE5MSwgMTkxLCAxOTEpOyBmb250LWZhbWls +eTogJ01pY3Jvc29mdCBZYWhlaSc7IGZvbnQtc2l6ZTogMTNweDsgb3JwaGFuczogMjsgd2lkb3dz +OiAyOyI+QmVzdCByZWdhcmRzLDwvc3Bhbj48ZGl2IHN0eWxlPSJtYXJnaW46IDBweDsgcGFkZGlu +ZzogMHB4OyBib3JkZXI6IDBweDsgb3V0bGluZTogMHB4OyBmb250LWZhbWlseTogVGFob21hLCBB +cmlhbCwgU1RIZWl0aSwgU2ltU3VuOyBmb250LXZhcmlhbnQtbGlnYXR1cmVzOiBub3JtYWw7IG9y +cGhhbnM6IDI7IHdpZG93czogMjsgY2xlYXI6IGJvdGg7Ij48c3BhbiBzdHlsZT0ibWFyZ2luOiAw +cHg7IHBhZGRpbmc6IDBweDsgYm9yZGVyOiAwcHg7IG91dGxpbmU6IDBweDsgZm9udC1mYW1pbHk6 +ICZxdW90O01pY3Jvc29mdCBZYWhlaSZxdW90OzsgZm9udC1zaXplOiAxM3B4OyBjb2xvcjogcmdi +KDE5MSwgMTkxLCAxOTEpOyI+5p2o6L2pPC9zcGFuPjwvZGl2PjxkaXYgc3R5bGU9Im1hcmdpbjog +MHB4OyBwYWRkaW5nOiAwcHg7IGJvcmRlcjogMHB4OyBvdXRsaW5lOiAwcHg7IGZvbnQtZmFtaWx5 +OiBUYWhvbWEsIEFyaWFsLCBTVEhlaXRpLCBTaW1TdW47IGZvbnQtdmFyaWFudC1saWdhdHVyZXM6 +IG5vcm1hbDsgb3JwaGFuczogMjsgd2lkb3dzOiAyOyBjbGVhcjogYm90aDsiPjwvZGl2PjxkaXYg +c3R5bGU9Im1hcmdpbjogMHB4OyBwYWRkaW5nOiAwcHg7IGJvcmRlcjogMHB4OyBvdXRsaW5lOiAw +cHg7IGZvbnQtZmFtaWx5OiBUYWhvbWEsIEFyaWFsLCBTVEhlaXRpLCBTaW1TdW47IGZvbnQtdmFy +aWFudC1saWdhdHVyZXM6IG5vcm1hbDsgb3JwaGFuczogMjsgd2lkb3dzOiAyOyBjbGVhcjogYm90 +aDsiPjxpbWcgc3R5bGU9Im1heC13aWR0aDogdW5zZXQ7IiBzcmM9Imh0dHBzOi8vbWFpbC1vbmxp +bmUubm9zZG4uMTI3Lm5ldC93enBtbWMvY2U5ZjhiMzZlMWZmYmU1NTMyOWMxOTZjODRmZTUxOTcu +cG5nIj48L2Rpdj48ZGl2IHN0eWxlPSJtYXJnaW46IDBweDsgcGFkZGluZzogMHB4OyBib3JkZXI6 +IDBweDsgb3V0bGluZTogMHB4OyBmb250LWZhbWlseTogVGFob21hLCBBcmlhbCwgU1RIZWl0aSwg +U2ltU3VuOyBmb250LXZhcmlhbnQtbGlnYXR1cmVzOiBub3JtYWw7IG9ycGhhbnM6IDI7IHdpZG93 +czogMjsgY2xlYXI6IGJvdGg7Ij48c3BhbiBzdHlsZT0ibWFyZ2luOiAwcHg7IHBhZGRpbmc6IDBw +eDsgYm9yZGVyOiAwcHg7IG91dGxpbmU6IDBweDsgZm9udC1mYW1pbHk6ICZxdW90O01pY3Jvc29m +dCBZYWhlaSZxdW90OzsgY29sb3I6IHJnYigxOTEsIDE5MSwgMTkxKTsiPuWcsOWdgO+8muS4reWb +vcK35Y2X5Lqs6L2v5Lu26LC36L2v5Lu25aSn6YGTIDExIOWPt+iKseelnuWkp+WOpiAyLTNGPC9z +cGFuPjwvZGl2PjxkaXYgc3R5bGU9Im1hcmdpbjogMHB4OyBwYWRkaW5nOiAwcHg7IGJvcmRlcjog +MHB4OyBvdXRsaW5lOiAwcHg7IGZvbnQtZmFtaWx5OiBUYWhvbWEsIEFyaWFsLCBTVEhlaXRpLCBT +aW1TdW47IGZvbnQtdmFyaWFudC1saWdhdHVyZXM6IG5vcm1hbDsgb3JwaGFuczogMjsgd2lkb3dz +OiAyOyBjbGVhcjogYm90aDsiPjxzcGFuIHN0eWxlPSJtYXJnaW46IDBweDsgcGFkZGluZzogMHB4 +OyBib3JkZXI6IDBweDsgb3V0bGluZTogMHB4OyBmb250LWZhbWlseTogJnF1b3Q7TWljcm9zb2Z0 +IFlhaGVpJnF1b3Q7OyBjb2xvcjogcmdiKDE5MSwgMTkxLCAxOTEpOyI+5omL5py677yaMTg3MjYx +Mjg0ODk8L3NwYW4+PC9kaXY+PGRpdiBzdHlsZT0ibWFyZ2luOiAwcHg7IHBhZGRpbmc6IDBweDsg +Ym9yZGVyOiAwcHg7IG91dGxpbmU6IDBweDsgZm9udC1mYW1pbHk6IFRhaG9tYSwgQXJpYWwsIFNU +SGVpdGksIFNpbVN1bjsgZm9udC12YXJpYW50LWxpZ2F0dXJlczogbm9ybWFsOyBvcnBoYW5zOiAy +OyB3aWRvd3M6IDI7IGNsZWFyOiBib3RoOyI+PHNwYW4gc3R5bGU9Im1hcmdpbjogMHB4OyBwYWRk +aW5nOiAwcHg7IGJvcmRlcjogMHB4OyBvdXRsaW5lOiAwcHg7IGZvbnQtZmFtaWx5OiAmcXVvdDtN +aWNyb3NvZnQgWWFoZWkmcXVvdDs7IGNvbG9yOiByZ2IoMTkxLCAxOTEsIDE5MSk7Ij7pgq7nrrHv +vJp5YW5neHVhbkB3aXRzb2Z0LmNuPC9zcGFuPjwvZGl2Pgo8L2Rpdj4KPC9kaXY+CjwvZGl2Pgo8 +L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48IS0t8J+YgC0tPjwvZGl2PjwvZGl2PjwvYm9k +eT48L2h0bWw+ + +--=_mailmaster-6a18e4a4_0_41bb_=-- diff --git a/media/inbound/2025-11-07_1700_G5开发周报_2025-11-03_--_2025-11-07---86271876-e108-421e-b513-1a6035a56b99.eml b/media/inbound/2025-11-07_1700_G5开发周报_2025-11-03_--_2025-11-07---86271876-e108-421e-b513-1a6035a56b99.eml new file mode 100644 index 0000000..71a9cd4 --- /dev/null +++ b/media/inbound/2025-11-07_1700_G5开发周报_2025-11-03_--_2025-11-07---86271876-e108-421e-b513-1a6035a56b99.eml @@ -0,0 +1,295 @@ +Date: Fri, 7 Nov 2025 17:00:00 +0800 +From: =?utf-8?B?5p2o6L2p?= +To: =?utf-8?B?5YiY5by6?= +Cc: =?utf-8?B?5bGI5paw6b6Z?= , =?utf-8?B?5pyx5paM?= + , =?utf-8?B?6ZmI5piO?= , + =?utf-8?Q?xym=40witsoft.cn?= , =?utf-8?B?5pu+6I6J?= + +Message-ID: +Subject: =?utf-8?B?RzXlvIDlj5HlkajmiqXjgJAyMDI1LTExLTAzIC0tICAyMDI1LTEx?= + =?utf-8?B?LTA344CR?= +MIME-Version: 1.0 +Content-Type: multipart/alternative; boundary="=_mailmaster-6a18e4a4_0_26e9_=" + +--=_mailmaster-6a18e4a4_0_26e9_= +Content-Type: text/plain; charset="utf-8" +Content-Transfer-Encoding: base64 + +5oKo5aW977yB5Lul5LiL5piv5oiR5pys5ZGo55qE5bel5L2c5oC757uT5Y+K5LiL5ZGo6K6h5YiS +77yM6K+35a6h6ZiF44CCCuS4gOOAgeacrOWRqOW3peS9nOaAu+e7kwrph43ngrnlt6XkvZzlrozm +iJDmg4XlhrUK5Lu75YqhMe+8mkc15Li75pWw5o2uNS4yLjPniYjmnKzmtYvor5XlrozmiJAK5Lu7 +5YqhMu+8mkcz5a2Y6LSn6L+B56e75YiwRzUK5bi46KeE5bel5L2cCuaXpeW4uOS6i+WKoTHvvJoy +MDI1LTExLTAzIEJPTee7tOaKpOW8guatpeWvvOWHuumcgOaxguW8gOWPkQrml6XluLjkuovliqEy +77yaMjAyNS0xMS0wNCDmiJDmnKzmoLjnrpdHM+i/geenu+WIsEc1IArml6XluLjkuovliqEz77ya +MjAyNS0xMS0wNSDkuLvmlbDmja7mtYvor5VidWfkv67lpI0K5pel5bi45LqL5YqhNO+8mjIwMjUt +MTAtMDYg5oiQ5pys5qC4566X5Yqf6IO96L2s5rWL5ZKM5Lia5Yqh5Lq65ZGY6YWN572u5byA5Y+R +5pa55qGICuaXpeW4uOS6i+WKoTXvvJoyMDI1LTEwLTA3IOWtmOi0p+a1i+ivlemXrumimOWkhOeQ +huWNs+WOhuWPsumXrumimOS/ruWkjQrkuozjgIHkuIvlkajlt6XkvZzorqHliJIK6YeN54K55Lu7 +5YqhCuiuoeWIkjHvvJpHM+WtmOi0p+i/geenu+WIsEc1IOWPr+eUqOaAp+mXrumimOWkhOeQhuWS +jOS6pOS6kuWujOWWhArlpIfms6jvvJrml6AKQmVzdCByZWdhcmRzLOadqOi9qQrlnLDlnYDvvJrk +uK3lm73Ct+WNl+S6rOS6keWvhuWfjkzmoIs1LzEw5qW8CuaJi+acuu+8mjE4NzI2MTI4NDg5CumC +rueuse+8mnlhbmd4dWFuQHdpdHNvZnQuY24= + +--=_mailmaster-6a18e4a4_0_26e9_= +Content-Type: text/html; charset="utf-8" +Content-Transfer-Encoding: base64 + +PGh0bWw+PGhlYWQ+PG1ldGEgaHR0cC1lcXVpdj0nQ29udGVudC1UeXBlJyBjb250ZW50PSd0ZXh0 +L2h0bWw7IGNoYXJzZXQ9VVRGLTgnPjwvaGVhZD48Ym9keSBzdHlsZT1saW5lLWhlaWdodDogMS41 +O2ZvbnQtZmFtaWx5OiAi5b6u6L2v6ZuF6buRIj48ZGl2ICBzdHlsZT0iZm9udC1mYW1pbHk6IOW+ +rui9r+mbhem7kTsiPjxkaXYgc3R5bGU9ImZvbnQtZmFtaWx5OiDlvq7ova/pm4Xpu5E7Ij48ZGl2 +IHN0eWxlPSIiPjxkaXYgc3R5bGU9IiI+PHAgY2lkPSJuMCIgbWR0eXBlPSJwYXJhZ3JhcGgiIGNs +YXNzPSJtZC1lbmQtYmxvY2sgbWQtcCBtZC1mb2N1cyIgc3R5bGU9ImZvbnQtZmFtaWx5OiAmcXVv +dDtPcGVuIFNhbnMmcXVvdDssICZxdW90O0NsZWFyIFNhbnMmcXVvdDssICZxdW90O0hlbHZldGlj +YSBOZXVlJnF1b3Q7LCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmOyBib3gtc2l6aW5nOiBi +b3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5oZXJpdDsgb3JwaGFuczogNDsgbWFyZ2luOiAwLjhl +bSAwcHg7IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJlbGF0aXZlOyBjb2xvcjog +cmdiKDUxLCA1MSwgNTEpOyBmb250LXNpemU6IDE2cHg7Ij48c3BhbiBtZC1pbmxpbmU9InBsYWlu +IiBjbGFzcz0ibWQtcGxhaW4gbWQtZXhwYW5kIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJv +eDsiPuaCqOWlve+8geS7peS4i+aYr+aIkeacrOWRqOeahOW3peS9nOaAu+e7k+WPiuS4i+WRqOiu +oeWIku+8jOivt+WuoemYheOAgjwvc3Bhbj48L3A+PGRpdiB0YWJpbmRleD0iLTEiIGNpZD0ibjIi +IG1kdHlwZT0iaHIiIGNsYXNzPSJtZC1ociBtZC1lbmQtYmxvY2siIHN0eWxlPSJmb250LWZhbWls +eTogJnF1b3Q7T3BlbiBTYW5zJnF1b3Q7LCAmcXVvdDtDbGVhciBTYW5zJnF1b3Q7LCAmcXVvdDtI +ZWx2ZXRpY2EgTmV1ZSZxdW90OywgSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjsgYm94LXNp +emluZzogYm9yZGVyLWJveDsgY29sb3I6IHJnYig1MSwgNTEsIDUxKTsgZm9udC1zaXplOiAxNnB4 +OyI+PGhyIHN0eWxlPSJib3gtc2l6aW5nOiBjb250ZW50LWJveDsgaGVpZ2h0OiAycHg7IG1hcmdp +bjogMTZweCAwcHg7IGJvcmRlcjogMHB4IG5vbmU7IHBhZGRpbmc6IDBweDsgYmFja2dyb3VuZC1j +b2xvcjogcmdiKDIzMSwgMjMxLCAyMzEpOyI+PC9kaXY+PGgzIGNpZD0ibjMiIG1kdHlwZT0iaGVh +ZGluZyIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1oZWFkaW5nIiBzdHlsZT0iZm9udC1mYW1pbHk6 +ICZxdW90O09wZW4gU2FucyZxdW90OywgJnF1b3Q7Q2xlYXIgU2FucyZxdW90OywgJnF1b3Q7SGVs +dmV0aWNhIE5ldWUmcXVvdDssIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7IGJveC1zaXpp +bmc6IGJvcmRlci1ib3g7IGJyZWFrLWFmdGVyOiBhdm9pZC1wYWdlOyBicmVhay1pbnNpZGU6IGF2 +b2lkOyBvcnBoYW5zOiA0OyBmb250LXNpemU6IDEuNWVtOyBtYXJnaW4tdG9wOiAxcmVtOyBtYXJn +aW4tYm90dG9tOiAxcmVtOyBwb3NpdGlvbjogcmVsYXRpdmU7IGxpbmUtaGVpZ2h0OiAxLjQzOyBj +dXJzb3I6IHRleHQ7IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgY29sb3I6IHJnYig1MSwgNTEsIDUx +KTsiPjxzcGFuIG1kLWlubGluZT0ic3Ryb25nIiBjbGFzcz0ibWQtcGFpci1zICIgc3R5bGU9ImJv +eC1zaXppbmc6IGJvcmRlci1ib3g7Ij48c3Ryb25nIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXIt +Ym94OyI+PHNwYW4gbWQtaW5saW5lPSJwbGFpbiIgY2xhc3M9Im1kLXBsYWluIiBzdHlsZT0iYm94 +LXNpemluZzogYm9yZGVyLWJveDsiPuS4gOOAgeacrOWRqOW3peS9nOaAu+e7kzwvc3Bhbj48L3N0 +cm9uZz48L3NwYW4+PC9oMz48b2wgY2xhc3M9Im9sLWxpc3QiIHN0YXJ0PSIiIGNpZD0ibjQiIG1k +dHlwZT0ibGlzdCIgc3R5bGU9ImZvbnQtZmFtaWx5OiAmcXVvdDtPcGVuIFNhbnMmcXVvdDssICZx +dW90O0NsZWFyIFNhbnMmcXVvdDssICZxdW90O0hlbHZldGljYSBOZXVlJnF1b3Q7LCBIZWx2ZXRp +Y2EsIEFyaWFsLCBzYW5zLXNlcmlmOyBib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBw +eDsgcGFkZGluZy1sZWZ0OiAzMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7IGNvbG9yOiByZ2IoNTEs +IDUxLCA1MSk7IGZvbnQtc2l6ZTogMTZweDsiPjxsaSBjbGFzcz0ibWQtbGlzdC1pdGVtIiBjaWQ9 +Im41IiBtZHR5cGU9Imxpc3RfaXRlbSIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1h +cmdpbjogMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48cCBjaWQ9Im42IiBtZHR5cGU9InBhcmFn +cmFwaCIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1wIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVy +LWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IG9ycGhhbnM6IDQ7IG1hcmdpbjogMHB4IDBweCAw +LjVyZW07IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHNwYW4g +bWQtaW5saW5lPSJzdHJvbmciIGNsYXNzPSJtZC1wYWlyLXMgIiBzdHlsZT0iYm94LXNpemluZzog +Ym9yZGVyLWJveDsiPjxzdHJvbmcgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij48c3Bh +biBtZC1pbmxpbmU9InBsYWluIiBjbGFzcz0ibWQtcGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBi +b3JkZXItYm94OyI+6YeN54K55bel5L2c5a6M5oiQ5oOF5Ya1PC9zcGFuPjwvc3Ryb25nPjwvc3Bh +bj48L3A+PC9saT48dWwgY2xhc3M9InVsLWxpc3QiIGNpZD0ibjciIG1kdHlwZT0ibGlzdCIgZGF0 +YS1tYXJrPSItIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBh +ZGRpbmctbGVmdDogMzBweDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PGxpIGNsYXNzPSJtZC1saXN0 +LWl0ZW0iIGNpZD0ibjgiIG1kdHlwZT0ibGlzdF9pdGVtIiBzdHlsZT0iYm94LXNpemluZzogYm9y +ZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxwIGNpZD0ibjkiIG1k +dHlwZT0icGFyYWdyYXBoIiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLXAiIHN0eWxlPSJib3gtc2l6 +aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5oZXJpdDsgb3JwaGFuczogNDsgbWFyZ2lu +OiAwcHggMHB4IDAuNXJlbTsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyBwb3NpdGlvbjogcmVsYXRp +dmU7Ij48c3BhbiBtZC1pbmxpbmU9InBsYWluIiBjbGFzcz0ibWQtcGxhaW4iIHN0eWxlPSJib3gt +c2l6aW5nOiBib3JkZXItYm94OyI+5Lu75YqhMe+8mkc15Li75pWw5o2uNS4yLjPniYjmnKzmtYvo +r5XlrozmiJA8L3NwYW4+PC9wPjwvbGk+PGxpIGNsYXNzPSJtZC1saXN0LWl0ZW0iIGNpZD0ibjEw +IiBtZHR5cGU9Imxpc3RfaXRlbSIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdp +bjogMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48cCBjaWQ9Im4xMSIgbWR0eXBlPSJwYXJhZ3Jh +cGgiIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1i +b3g7IGxpbmUtaGVpZ2h0OiBpbmhlcml0OyBvcnBoYW5zOiA0OyBtYXJnaW46IDBweCAwcHggMC41 +cmVtOyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxzcGFuIG1k +LWlubGluZT0icGxhaW4iIGNsYXNzPSJtZC1wbGFpbiIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRl +ci1ib3g7Ij7ku7vliqEy77yaPC9zcGFuPkcz5a2Y6LSn6L+B56e75YiwRzU8L3A+PC9saT48L3Vs +PjxsaSBjbGFzcz0ibWQtbGlzdC1pdGVtIiBjaWQ9Im4xMiIgbWR0eXBlPSJsaXN0X2l0ZW0iIHN0 +eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcG9zaXRpb246IHJlbGF0 +aXZlOyI+PHAgY2lkPSJuMTMiIG1kdHlwZT0icGFyYWdyYXBoIiBjbGFzcz0ibWQtZW5kLWJsb2Nr +IG1kLXAiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5oZXJp +dDsgb3JwaGFuczogNDsgbWFyZ2luOiAwcHggMHB4IDAuNXJlbTsgd2hpdGUtc3BhY2U6IHByZS13 +cmFwOyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48c3BhbiBtZC1pbmxpbmU9InN0cm9uZyIgY2xhc3M9 +Im1kLXBhaXItcyAiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+PHN0cm9uZyBzdHls +ZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPjxzcGFuIG1kLWlubGluZT0icGxhaW4iIGNsYXNz +PSJtZC1wbGFpbiIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij7luLjop4Tlt6XkvZw8 +L3NwYW4+PC9zdHJvbmc+PC9zcGFuPjwvcD48L2xpPjx1bCBjbGFzcz0idWwtbGlzdCIgY2lkPSJu +MTQiIG1kdHlwZT0ibGlzdCIgZGF0YS1tYXJrPSItIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVy +LWJveDsgbWFyZ2luOiAwcHg7IHBhZGRpbmctbGVmdDogMzBweDsgcG9zaXRpb246IHJlbGF0aXZl +OyI+PGxpIGNsYXNzPSJtZC1saXN0LWl0ZW0iIGNpZD0ibjE1IiBtZHR5cGU9Imxpc3RfaXRlbSIg +c3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBwb3NpdGlvbjogcmVs +YXRpdmU7Ij48cCBjaWQ9Im4xNiIgbWR0eXBlPSJwYXJhZ3JhcGgiIGNsYXNzPSJtZC1lbmQtYmxv +Y2sgbWQtcCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhl +cml0OyBvcnBoYW5zOiA0OyBtYXJnaW46IDBweCAwcHggMC41cmVtOyB3aGl0ZS1zcGFjZTogcHJl +LXdyYXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxzcGFuIG1kLWlubGluZT0icGxhaW4iIGNsYXNz +PSJtZC1wbGFpbiIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij7ml6XluLjkuovliqEx +77yaMjAyNS0xMS0wMyBCT03nu7TmiqTlvILmraXlr7zlh7rpnIDmsYLlvIDlj5E8L3NwYW4+PC9w +PjwvbGk+PC91bD48L29sPjxvbCBjbGFzcz0ib2wtbGlzdCIgc3RhcnQ9IiIgY2lkPSJuNCIgbWR0 +eXBlPSJsaXN0IiBzdHlsZT0iZm9udC1mYW1pbHk6IOW+rui9r+mbhem7kTsgYm94LXNpemluZzog +Ym9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBhZGRpbmctbGVmdDogMzBweDsgcG9zaXRpb246IHJl +bGF0aXZlOyI+PHVsIGNsYXNzPSJ1bC1saXN0IiBjaWQ9Im4xNCIgbWR0eXBlPSJsaXN0IiBkYXRh +LW1hcms9Ii0iIHN0eWxlPSJmb250LWZhbWlseTog5b6u6L2v6ZuF6buROyBib3gtc2l6aW5nOiBi +b3JkZXItYm94OyBtYXJnaW46IDBweDsgcGFkZGluZy1sZWZ0OiAzMHB4OyBwb3NpdGlvbjogcmVs +YXRpdmU7Ij48bGkgY2xhc3M9Im1kLWxpc3QtaXRlbSIgY2lkPSJuMTUiIG1kdHlwZT0ibGlzdF9p +dGVtIiBzdHlsZT0iY29sb3I6IHJnYig1MSwgNTEsIDUxKTsgZm9udC1mYW1pbHk6ICZxdW90O09w +ZW4gU2FucyZxdW90OywgJnF1b3Q7Q2xlYXIgU2FucyZxdW90OywgJnF1b3Q7SGVsdmV0aWNhIE5l +dWUmcXVvdDssIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTZweDsg +Ym94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsi +PjxwIGNpZD0ibjE2IiBtZHR5cGU9InBhcmFncmFwaCIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1w +IiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IG9y +cGhhbnM6IDQ7IG1hcmdpbjogMHB4IDBweCAwLjVyZW07IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsg +cG9zaXRpb246IHJlbGF0aXZlOyI+PHNwYW4gbWQtaW5saW5lPSJwbGFpbiIgY2xhc3M9Im1kLXBs +YWluIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPuaXpeW4uOS6i+WKoTLvvJoyMDI1 +LTExLTA0IOaIkOacrOaguOeul0cz6L+B56e75YiwRzUKPC9zcGFuPjwvcD48L2xpPjxsaSBjbGFz +cz0ibWQtbGlzdC1pdGVtIiBjaWQ9Im4xNyIgbWR0eXBlPSJsaXN0X2l0ZW0iIHN0eWxlPSJjb2xv +cjogcmdiKDUxLCA1MSwgNTEpOyBmb250LWZhbWlseTogJnF1b3Q7T3BlbiBTYW5zJnF1b3Q7LCAm +cXVvdDtDbGVhciBTYW5zJnF1b3Q7LCAmcXVvdDtIZWx2ZXRpY2EgTmV1ZSZxdW90OywgSGVsdmV0 +aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxNnB4OyBib3gtc2l6aW5nOiBib3Jk +ZXItYm94OyBtYXJnaW46IDBweDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHAgY2lkPSJuMTgiIG1k +dHlwZT0icGFyYWdyYXBoIiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLXAiIHN0eWxlPSJib3gtc2l6 +aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5oZXJpdDsgb3JwaGFuczogNDsgbWFyZ2lu +OiAwcHggMHB4IDAuNXJlbTsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyBwb3NpdGlvbjogcmVsYXRp +dmU7Ij48c3BhbiBtZC1pbmxpbmU9InBsYWluIiBjbGFzcz0ibWQtcGxhaW4iIHN0eWxlPSJib3gt +c2l6aW5nOiBib3JkZXItYm94OyI+5pel5bi45LqL5YqhM++8mjIwMjUtMTEtMDUg5Li75pWw5o2u +5rWL6K+VYnVn5L+u5aSNPC9zcGFuPjwvcD48L2xpPjwvdWw+PC9vbD48b2wgY2xhc3M9Im9sLWxp +c3QiIHN0YXJ0PSIiIGNpZD0ibjQiIG1kdHlwZT0ibGlzdCIgc3R5bGU9ImZvbnQtZmFtaWx5OiDl +vq7ova/pm4Xpu5E7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBwYWRkaW5n +LWxlZnQ6IDMwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjx1bCBjbGFzcz0idWwtbGlzdCIgY2lk +PSJuMTQiIG1kdHlwZT0ibGlzdCIgZGF0YS1tYXJrPSItIiBzdHlsZT0iZm9udC1mYW1pbHk6IOW+ +rui9r+mbhem7kTsgYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBhZGRpbmct +bGVmdDogMzBweDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PGxpIGNsYXNzPSJtZC1saXN0LWl0ZW0i +IGNpZD0ibjE3IiBtZHR5cGU9Imxpc3RfaXRlbSIgc3R5bGU9ImNvbG9yOiByZ2IoNTEsIDUxLCA1 +MSk7IGZvbnQtZmFtaWx5OiAmcXVvdDtPcGVuIFNhbnMmcXVvdDssICZxdW90O0NsZWFyIFNhbnMm +cXVvdDssICZxdW90O0hlbHZldGljYSBOZXVlJnF1b3Q7LCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5z +LXNlcmlmOyBmb250LXNpemU6IDE2cHg7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjog +MHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48cCBjaWQ9Im4xOCIgbWR0eXBlPSJwYXJhZ3JhcGgi +IGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7 +IGxpbmUtaGVpZ2h0OiBpbmhlcml0OyBvcnBoYW5zOiA0OyBtYXJnaW46IDBweCAwcHggMC41cmVt +OyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxzcGFuIG1kLWlu +bGluZT0icGxhaW4iIGNsYXNzPSJtZC1wbGFpbiIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1i +b3g7Ij7ml6XluLjkuovliqE077yaMjAyNS0xMC0wNiDmiJDmnKzmoLjnrpflip/og73ovazmtYvl +kozkuJrliqHkurrlkZjphY3nva7lvIDlj5HmlrnmoYg8L3NwYW4+PC9wPjwvbGk+PGxpIGNsYXNz +PSJtZC1saXN0LWl0ZW0iIGNpZD0ibjE3IiBtZHR5cGU9Imxpc3RfaXRlbSIgc3R5bGU9ImNvbG9y +OiByZ2IoNTEsIDUxLCA1MSk7IGZvbnQtZmFtaWx5OiAmcXVvdDtPcGVuIFNhbnMmcXVvdDssICZx +dW90O0NsZWFyIFNhbnMmcXVvdDssICZxdW90O0hlbHZldGljYSBOZXVlJnF1b3Q7LCBIZWx2ZXRp +Y2EsIEFyaWFsLCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDE2cHg7IGJveC1zaXppbmc6IGJvcmRl +ci1ib3g7IG1hcmdpbjogMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48cCBjaWQ9Im4xOCIgbWR0 +eXBlPSJwYXJhZ3JhcGgiIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCIgc3R5bGU9ImJveC1zaXpp +bmc6IGJvcmRlci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhlcml0OyBvcnBoYW5zOiA0OyBtYXJnaW46 +IDBweCAwcHggMC41cmVtOyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0aW9uOiByZWxhdGl2 +ZTsiPjxzcGFuIG1kLWlubGluZT0icGxhaW4iIGNsYXNzPSJtZC1wbGFpbiIgc3R5bGU9ImJveC1z +aXppbmc6IGJvcmRlci1ib3g7Ij7ml6XluLjkuovliqE177yaMjAyNS0xMC0wNyDlrZjotKfmtYvo +r5Xpl67popjlpITnkIbljbPljoblj7Lpl67popjkv67lpI08YnI+PC9zcGFuPjwvcD48L2xpPjwv +dWw+PC9vbD48aDMgY2lkPSJuMjUiIG1kdHlwZT0iaGVhZGluZyIgY2xhc3M9Im1kLWVuZC1ibG9j +ayBtZC1oZWFkaW5nIiBzdHlsZT0iZm9udC1mYW1pbHk6ICZxdW90O09wZW4gU2FucyZxdW90Oywg +JnF1b3Q7Q2xlYXIgU2FucyZxdW90OywgJnF1b3Q7SGVsdmV0aWNhIE5ldWUmcXVvdDssIEhlbHZl +dGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7IGJyZWFrLWFm +dGVyOiBhdm9pZC1wYWdlOyBicmVhay1pbnNpZGU6IGF2b2lkOyBvcnBoYW5zOiA0OyBmb250LXNp +emU6IDEuNWVtOyBtYXJnaW4tdG9wOiAxcmVtOyBtYXJnaW4tYm90dG9tOiAxcmVtOyBwb3NpdGlv +bjogcmVsYXRpdmU7IGxpbmUtaGVpZ2h0OiAxLjQzOyBjdXJzb3I6IHRleHQ7IHdoaXRlLXNwYWNl +OiBwcmUtd3JhcDsgY29sb3I6IHJnYig1MSwgNTEsIDUxKTsiPjxzcGFuIG1kLWlubGluZT0ic3Ry +b25nIiBjbGFzcz0ibWQtcGFpci1zICIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij48 +c3Ryb25nIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+PHNwYW4gbWQtaW5saW5lPSJw +bGFpbiIgY2xhc3M9Im1kLXBsYWluIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPuS6 +jOOAgeS4i+WRqOW3peS9nOiuoeWIkjwvc3Bhbj48L3N0cm9uZz48L3NwYW4+PC9oMz48b2wgY2xh +c3M9Im9sLWxpc3QiIHN0YXJ0PSIiIGNpZD0ibjI2IiBtZHR5cGU9Imxpc3QiIHN0eWxlPSJib3gt +c2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcGFkZGluZy1sZWZ0OiAzMHB4OyBwb3Np +dGlvbjogcmVsYXRpdmU7Ij48bGkgY2xhc3M9Im1kLWxpc3QtaXRlbSIgY2lkPSJuMjciIG1kdHlw +ZT0ibGlzdF9pdGVtIiBzdHlsZT0iZm9udC1mYW1pbHk6ICZxdW90O09wZW4gU2FucyZxdW90Oywg +JnF1b3Q7Q2xlYXIgU2FucyZxdW90OywgJnF1b3Q7SGVsdmV0aWNhIE5ldWUmcXVvdDssIEhlbHZl +dGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7IGNvbG9yOiByZ2IoNTEsIDUxLCA1MSk7IGZvbnQtc2l6 +ZTogMTZweDsgYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBvc2l0aW9uOiBy +ZWxhdGl2ZTsiPjxwIGNpZD0ibjI4IiBtZHR5cGU9InBhcmFncmFwaCIgY2xhc3M9Im1kLWVuZC1i +bG9jayBtZC1wIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGlu +aGVyaXQ7IG9ycGhhbnM6IDQ7IG1hcmdpbjogMHB4IDBweCAwLjVyZW07IHdoaXRlLXNwYWNlOiBw +cmUtd3JhcDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHNwYW4gbWQtaW5saW5lPSJzdHJvbmciIGNs +YXNzPSJtZC1wYWlyLXMgIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPjxzdHJvbmcg +c3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij48c3BhbiBtZC1pbmxpbmU9InBsYWluIiBj +bGFzcz0ibWQtcGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+6YeN54K55Lu7 +5YqhPC9zcGFuPjwvc3Ryb25nPjwvc3Bhbj48L3A+PC9saT48dWwgY2xhc3M9InVsLWxpc3QiIGNp +ZD0ibjI5IiBtZHR5cGU9Imxpc3QiIGRhdGEtbWFyaz0iLSIgc3R5bGU9ImZvbnQtZmFtaWx5OiAm +cXVvdDtPcGVuIFNhbnMmcXVvdDssICZxdW90O0NsZWFyIFNhbnMmcXVvdDssICZxdW90O0hlbHZl +dGljYSBOZXVlJnF1b3Q7LCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmOyBjb2xvcjogcmdi +KDUxLCA1MSwgNTEpOyBmb250LXNpemU6IDE2cHg7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1h +cmdpbjogMHB4OyBwYWRkaW5nLWxlZnQ6IDMwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxsaSBj +bGFzcz0ibWQtbGlzdC1pdGVtIiBjaWQ9Im4zMCIgbWR0eXBlPSJsaXN0X2l0ZW0iIHN0eWxlPSJi +b3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcG9zaXRpb246IHJlbGF0aXZlOyI+ +PHAgY2lkPSJuMzEiIG1kdHlwZT0icGFyYWdyYXBoIiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLXAi +IHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5oZXJpdDsgb3Jw +aGFuczogNDsgbWFyZ2luOiAwcHggMHB4IDAuNXJlbTsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyBw +b3NpdGlvbjogcmVsYXRpdmU7Ij48c3BhbiBtZC1pbmxpbmU9InBsYWluIiBjbGFzcz0ibWQtcGxh +aW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+6K6h5YiSMe+8mjwvc3Bhbj5HM+Wt +mOi0p+i/geenu+WIsEc1IOWPr+eUqOaAp+mXrumimOWkhOeQhuWSjOS6pOS6kuWujOWWhDwvcD48 +L2xpPjwvdWw+PC9vbD48ZGl2IHRhYmluZGV4PSItMSIgY2lkPSJuMzkiIG1kdHlwZT0iaHIiIGNs +YXNzPSJtZC1ociBtZC1lbmQtYmxvY2siIHN0eWxlPSJmb250LWZhbWlseTogJnF1b3Q7T3BlbiBT +YW5zJnF1b3Q7LCAmcXVvdDtDbGVhciBTYW5zJnF1b3Q7LCAmcXVvdDtIZWx2ZXRpY2EgTmV1ZSZx +dW90OywgSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjsgYm94LXNpemluZzogYm9yZGVyLWJv +eDsgY29sb3I6IHJnYig1MSwgNTEsIDUxKTsgZm9udC1zaXplOiAxNnB4OyI+PGhyIHN0eWxlPSJi +b3gtc2l6aW5nOiBjb250ZW50LWJveDsgaGVpZ2h0OiAycHg7IG1hcmdpbjogMTZweCAwcHg7IGJv +cmRlcjogMHB4IG5vbmU7IHBhZGRpbmc6IDBweDsgYmFja2dyb3VuZC1jb2xvcjogcmdiKDIzMSwg +MjMxLCAyMzEpOyI+PC9kaXY+PHAgY2lkPSJuNDAiIG1kdHlwZT0icGFyYWdyYXBoIiBjbGFzcz0i +bWQtZW5kLWJsb2NrIG1kLXAiIHN0eWxlPSJmb250LWZhbWlseTogJnF1b3Q7T3BlbiBTYW5zJnF1 +b3Q7LCAmcXVvdDtDbGVhciBTYW5zJnF1b3Q7LCAmcXVvdDtIZWx2ZXRpY2EgTmV1ZSZxdW90Oywg +SGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjsgYm94LXNpemluZzogYm9yZGVyLWJveDsgbGlu +ZS1oZWlnaHQ6IGluaGVyaXQ7IG9ycGhhbnM6IDQ7IG1hcmdpbjogMC44ZW0gMHB4OyB3aGl0ZS1z +cGFjZTogcHJlLXdyYXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsgY29sb3I6IHJnYig1MSwgNTEsIDUx +KTsgZm9udC1zaXplOiAxNnB4OyI+PHNwYW4gbWQtaW5saW5lPSJzdHJvbmciIGNsYXNzPSJtZC1w +YWlyLXMgIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPjxzdHJvbmcgc3R5bGU9ImJv +eC1zaXppbmc6IGJvcmRlci1ib3g7Ij48c3BhbiBtZC1pbmxpbmU9InBsYWluIiBjbGFzcz0ibWQt +cGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+5aSH5rOoPC9zcGFuPjwvc3Ry +b25nPjwvc3Bhbj48c3BhbiBtZC1pbmxpbmU9InBsYWluIiBjbGFzcz0ibWQtcGxhaW4gbWQtZXhw +YW5kIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPu+8muaXoDwvc3Bhbj48L3A+PC9k +aXY+PGRpdiBzdHlsZT0iZm9udC1mYW1pbHk6IOW+rui9r+mbhem7kTsiPjxicj48L2Rpdj48ZGl2 +IHNwZWxsY2hlY2s9ImZhbHNlIiBpZD0ibnRlcy1wY21hYy1zaWduYXR1cmUiIHN0eWxlPSJmb250 +LWZhbWlseTog5b6u6L2v6ZuF6buROyIgZGF0YS1udGVzLXNpZ25hdHVyZT0idHJ1ZSI+PGRpdiBz +dHlsZT0iZm9udC1zaXplOjE0cHg7cGFkZGluZzowO21hcmdpbjowIj48ZGl2IHN0eWxlPSJwYWRk +aW5nLWJvdHRvbToxMHB4O21hcmdpbi1ib3R0b206MTBweDtkaXNwbGF5OmlubGluZS1ibG9jayI+ +PGRpdiBzdHlsZT0iZm9udC1mYW1pbHk6JnF1b3Q75b6u6L2v6ZuF6buRJnF1b3Q7OyBmb250LXNp +emU6IDE0cHg7IGNvbG9yOiMwMDAwMDAiPgogICAgPHN0eWxlPgogICAgICAgIGZvbnR7CiAgICAg +ICAgICAgIGxpbmUtaGVpZ2h0OiAxLjY7CiAgICAgICAgfQogICAgPC9zdHlsZT4KPGRpdiBzdHls +ZT0iZm9udC1mYW1pbHk6JnF1b3Q75b6u6L2v6ZuF6buRJnF1b3Q7OyBmb250LXNpemU6IDE0cHg7 +IGNvbG9yOiMwMDAwMDAiPgogICAgPHN0eWxlPgogICAgICAgIGZvbnR7CiAgICAgICAgICAgIGxp +bmUtaGVpZ2h0OiAxLjY7CiAgICAgICAgfQogICAgPC9zdHlsZT4KPGRpdiBzdHlsZT0iZm9udC1m +YW1pbHk6JnF1b3Q75b6u6L2v6ZuF6buRJnF1b3Q7OyBmb250LXNpemU6IDE0cHg7IGNvbG9yOiMw +MDAwMDAiPgogICAgPHN0eWxlPgogICAgICAgIGZvbnR7CiAgICAgICAgICAgIGxpbmUtaGVpZ2h0 +OiAxLjY7CiAgICAgICAgfQogICAgPC9zdHlsZT4KPGRpdiBzdHlsZT0iZm9udC1mYW1pbHk6JnF1 +b3Q75b6u6L2v6ZuF6buRJnF1b3Q7OyBmb250LXNpemU6IDE0cHg7IGNvbG9yOiMwMDAwMDAiPgog +ICAgPHN0eWxlPgogICAgICAgIGZvbnR7CiAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAxLjY7CiAg +ICAgICAgfQogICAgPC9zdHlsZT4KPHNwYW4gc3R5bGU9ImNvbG9yOiByZ2IoMTkxLCAxOTEsIDE5 +MSk7IGZvbnQtZmFtaWx5OiAnTWljcm9zb2Z0IFlhaGVpJzsgZm9udC1zaXplOiAxM3B4OyBvcnBo +YW5zOiAyOyB3aWRvd3M6IDI7Ij5CZXN0IHJlZ2FyZHMsPC9zcGFuPjxkaXYgc3R5bGU9Im1hcmdp +bjogMHB4OyBwYWRkaW5nOiAwcHg7IGJvcmRlcjogMHB4OyBvdXRsaW5lOiAwcHg7IGZvbnQtZmFt +aWx5OiBUYWhvbWEsIEFyaWFsLCBTVEhlaXRpLCBTaW1TdW47IGZvbnQtdmFyaWFudC1saWdhdHVy +ZXM6IG5vcm1hbDsgb3JwaGFuczogMjsgd2lkb3dzOiAyOyBjbGVhcjogYm90aDsiPjxzcGFuIHN0 +eWxlPSJtYXJnaW46IDBweDsgcGFkZGluZzogMHB4OyBib3JkZXI6IDBweDsgb3V0bGluZTogMHB4 +OyBmb250LWZhbWlseTogJnF1b3Q7TWljcm9zb2Z0IFlhaGVpJnF1b3Q7OyBmb250LXNpemU6IDEz +cHg7IGNvbG9yOiByZ2IoMTkxLCAxOTEsIDE5MSk7Ij7mnajovak8L3NwYW4+PC9kaXY+PGRpdiBz +dHlsZT0ibWFyZ2luOiAwcHg7IHBhZGRpbmc6IDBweDsgYm9yZGVyOiAwcHg7IG91dGxpbmU6IDBw +eDsgZm9udC1mYW1pbHk6IFRhaG9tYSwgQXJpYWwsIFNUSGVpdGksIFNpbVN1bjsgZm9udC12YXJp +YW50LWxpZ2F0dXJlczogbm9ybWFsOyBvcnBoYW5zOiAyOyB3aWRvd3M6IDI7IGNsZWFyOiBib3Ro +OyI+PC9kaXY+PGRpdiBzdHlsZT0ibWFyZ2luOiAwcHg7IHBhZGRpbmc6IDBweDsgYm9yZGVyOiAw +cHg7IG91dGxpbmU6IDBweDsgZm9udC1mYW1pbHk6IFRhaG9tYSwgQXJpYWwsIFNUSGVpdGksIFNp +bVN1bjsgZm9udC12YXJpYW50LWxpZ2F0dXJlczogbm9ybWFsOyBvcnBoYW5zOiAyOyB3aWRvd3M6 +IDI7IGNsZWFyOiBib3RoOyI+PGltZyBzdHlsZT0ibWF4LXdpZHRoOiB1bnNldDsiIHNyYz0iaHR0 +cHM6Ly9tYWlsLW9ubGluZS5ub3Nkbi4xMjcubmV0L3d6cG1tYy9jZTlmOGIzNmUxZmZiZTU1MzI5 +YzE5NmM4NGZlNTE5Ny5wbmciIG9yZ3dpZHRoPSIzMTRweCIgb3JnaGVpZ2h0PSI3MnB4Ij48L2Rp +dj48ZGl2IHN0eWxlPSJtYXJnaW46IDBweDsgcGFkZGluZzogMHB4OyBib3JkZXI6IDBweDsgb3V0 +bGluZTogMHB4OyBmb250LWZhbWlseTogVGFob21hLCBBcmlhbCwgU1RIZWl0aSwgU2ltU3VuOyBm +b250LXZhcmlhbnQtbGlnYXR1cmVzOiBub3JtYWw7IG9ycGhhbnM6IDI7IHdpZG93czogMjsgY2xl +YXI6IGJvdGg7Ij48c3BhbiBzdHlsZT0ibWFyZ2luOiAwcHg7IHBhZGRpbmc6IDBweDsgYm9yZGVy +OiAwcHg7IG91dGxpbmU6IDBweDsgZm9udC1mYW1pbHk6ICZxdW90O01pY3Jvc29mdCBZYWhlaSZx +dW90OzsgY29sb3I6IHJnYigxOTEsIDE5MSwgMTkxKTsiPuWcsOWdgO+8mjwvc3Bhbj48c3BhbiBz +dHlsZT0iY29sb3I6IHJnYigxOTEsIDE5MSwgMTkxKTsgZm9udC1mYW1pbHk6ICZxdW90O01pY3Jv +c29mdCBZYWhlaSZxdW90OzsiPuS4reWbvcK35Y2X5Lqs5LqR5a+G5Z+OTOagizUvMTDmpbw8L3Nw +YW4+PC9kaXY+PGRpdiBzdHlsZT0ibWFyZ2luOiAwcHg7IHBhZGRpbmc6IDBweDsgYm9yZGVyOiAw +cHg7IG91dGxpbmU6IDBweDsgZm9udC1mYW1pbHk6IFRhaG9tYSwgQXJpYWwsIFNUSGVpdGksIFNp +bVN1bjsgZm9udC12YXJpYW50LWxpZ2F0dXJlczogbm9ybWFsOyBvcnBoYW5zOiAyOyB3aWRvd3M6 +IDI7IGNsZWFyOiBib3RoOyI+PHNwYW4gc3R5bGU9Im1hcmdpbjogMHB4OyBwYWRkaW5nOiAwcHg7 +IGJvcmRlcjogMHB4OyBvdXRsaW5lOiAwcHg7IGZvbnQtZmFtaWx5OiAmcXVvdDtNaWNyb3NvZnQg +WWFoZWkmcXVvdDs7IGNvbG9yOiByZ2IoMTkxLCAxOTEsIDE5MSk7Ij7miYvmnLrvvJoxODcyNjEy +ODQ4OTwvc3Bhbj48L2Rpdj48ZGl2IHN0eWxlPSJtYXJnaW46IDBweDsgcGFkZGluZzogMHB4OyBi +b3JkZXI6IDBweDsgb3V0bGluZTogMHB4OyBmb250LWZhbWlseTogVGFob21hLCBBcmlhbCwgU1RI +ZWl0aSwgU2ltU3VuOyBmb250LXZhcmlhbnQtbGlnYXR1cmVzOiBub3JtYWw7IG9ycGhhbnM6IDI7 +IHdpZG93czogMjsgY2xlYXI6IGJvdGg7Ij48c3BhbiBzdHlsZT0ibWFyZ2luOiAwcHg7IHBhZGRp +bmc6IDBweDsgYm9yZGVyOiAwcHg7IG91dGxpbmU6IDBweDsgZm9udC1mYW1pbHk6ICZxdW90O01p +Y3Jvc29mdCBZYWhlaSZxdW90OzsgY29sb3I6IHJnYigxOTEsIDE5MSwgMTkxKTsiPumCrueuse+8 +mnlhbmd4dWFuQHdpdHNvZnQuY248L3NwYW4+PC9kaXY+CjwvZGl2Pgo8L2Rpdj4KPC9kaXY+Cjwv +ZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwhLS3wn5iALS0+PC9kaXY+PC9kaXY+PC9ib2R5 +PjwvaHRtbD4= + +--=_mailmaster-6a18e4a4_0_26e9_=-- diff --git a/media/inbound/2025-11-14_1823_G5开发周报_2025-11-10_--_2025-11-14---510df288-27cd-4751-b21a-c477bb93dc90.eml b/media/inbound/2025-11-14_1823_G5开发周报_2025-11-10_--_2025-11-14---510df288-27cd-4751-b21a-c477bb93dc90.eml new file mode 100644 index 0000000..adfea23 --- /dev/null +++ b/media/inbound/2025-11-14_1823_G5开发周报_2025-11-10_--_2025-11-14---510df288-27cd-4751-b21a-c477bb93dc90.eml @@ -0,0 +1,280 @@ +Date: Fri, 14 Nov 2025 18:23:48 +0800 +From: =?utf-8?B?5p2o6L2p?= +To: =?utf-8?B?5YiY5by6?= +Cc: =?utf-8?B?5bGI5paw6b6Z?= , =?utf-8?B?5pyx5paM?= + , =?utf-8?B?6ZmI5piO?= , + =?utf-8?B?5aSP6ZO25pWP?= , =?utf-8?B?5pu+6I6J?= + +Message-ID: <1763115828441.2zmjeymcn4qodygzin2ixpgr@android.mail.163.com> +Subject: =?utf-8?B?RzXlvIDlj5HlkajmiqXjgJAyMDI1LTExLTEwIC0tICAyMDI1LTEx?= + =?utf-8?B?LTE044CR?= +MIME-Version: 1.0 +Content-Type: multipart/alternative; boundary="=_mailmaster-6a18e4a4_0_1eb_=" + +--=_mailmaster-6a18e4a4_0_1eb_= +Content-Type: text/plain; charset="UTF-8" +Content-Transfer-Encoding: base64 + +5oKo5aW977yB5Lul5LiL5piv5oiR5pys5ZGo55qE5bel5L2c5oC757uT5Y+K5LiL5ZGo6K6h5YiS +77yM6K+35a6h6ZiF44CCIOS4gOOAgeacrOWRqOW3peS9nOaAu+e7kyDph43ngrnlt6XkvZzlrozm +iJDmg4XlhrUg5Lu75YqhMe+8mkc15Li75pWw5o2uNS4yLjPniYjmnKzlj5HniYgg5Lu75YqhMu+8 +mkcz5a2Y6LSn6L+B56e75YiwRzUg5bi46KeE5bel5L2cIOaXpeW4uOS6i+WKoTHvvJoyMDI1LTEx +LTEwIOWtmOi0p+i/geenu+mXrumimOWkhOeQhiDml6XluLjkuovliqEy77yaMjAyNS0xMS0xMSDl +haXlupPmiJDmnKznu7TmiqTph43mlrDovazmtYsg5pel5bi45LqL5YqhM++8mjIwMjUtMTEtMTIg +5a2Y6LSn6L+B56e7LeW6k+WtmOebuOWFs+S7o+eggeWkhOeQhiDml6XluLjkuovliqE077yaMjAy +NS0xMC0xMyDkuLvmlbDmja7kuqflk4HlhbPogZTlt6Xoibropobnm5blr7zlhaUg5LqM44CB5LiL +5ZGo5bel5L2c6K6h5YiSIOmHjeeCueS7u+WKoSDorqHliJIx77yaRzPlrZjotKfov4Hnp7vliLBH +NSDlj6/nlKjmgKfpl67popjlpITnkIblkozkuqTkupLlrozlloQg5aSH5rOo77ya5pegIOKAi0Jl +c3QgcmVnYXJkcywg5p2o6L2pIOKAiyDlnLDlnYDvvJrkuK3lm73Ct+WNl+S6rOS6keWvhuWfjkzm +oIs1LzEw5qW8IOaJi+acuu+8mjE4NzI2MTI4NDg5IOmCrueuse+8mnlhbmd4dWFuQHdpdHNvZnQu +Y24= + +--=_mailmaster-6a18e4a4_0_1eb_= +Content-Type: text/html; charset="UTF-8" +Content-Transfer-Encoding: base64 + +PG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJz +ZXQ9VVRGLTgiPjxkaXYgc3R5bGU9ImxpbmUtaGVpZ2h0OiIgMS41O2ZvbnQtZmFtaWx5Oj0iIiAi +5b6u6L2v6ZuF6buRIj0iIj48ZGl2IHN0eWxlPSJmb250LWZhbWlseTog5b6u6L2v6ZuF6buROyI+ +PGRpdiBzdHlsZT0iZm9udC1mYW1pbHk6IOW+rui9r+mbhem7kTsiPjxkaXYgc3R5bGU9IiI+PGRp +diBzdHlsZT0iIj48cCBjaWQ9Im4wIiBtZHR5cGU9InBhcmFncmFwaCIgY2xhc3M9Im1kLWVuZC1i +bG9jayBtZC1wIG1kLWZvY3VzIiBzdHlsZT0iZm9udC1mYW1pbHk6ICZxdW90O09wZW4gU2FucyZx +dW90OywgJnF1b3Q7Q2xlYXIgU2FucyZxdW90OywgJnF1b3Q7SGVsdmV0aWNhIE5ldWUmcXVvdDss +IEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7IGxp +bmUtaGVpZ2h0OiBpbmhlcml0OyBvcnBoYW5zOiA0OyBtYXJnaW46IDAuOGVtIDBweDsgd2hpdGUt +c3BhY2U6IHByZS13cmFwOyBwb3NpdGlvbjogcmVsYXRpdmU7IGNvbG9yOiByZ2IoNTEsIDUxLCA1 +MSk7IGZvbnQtc2l6ZTogMTZweDsiPjxzcGFuIG1kLWlubGluZT0icGxhaW4iIGNsYXNzPSJtZC1w +bGFpbiBtZC1leHBhbmQiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+5oKo5aW977yB +5Lul5LiL5piv5oiR5pys5ZGo55qE5bel5L2c5oC757uT5Y+K5LiL5ZGo6K6h5YiS77yM6K+35a6h +6ZiF44CCPC9zcGFuPjwvcD48ZGl2IHRhYmluZGV4PSItMSIgY2lkPSJuMiIgbWR0eXBlPSJociIg +Y2xhc3M9Im1kLWhyIG1kLWVuZC1ibG9jayIgc3R5bGU9ImZvbnQtZmFtaWx5OiAmcXVvdDtPcGVu +IFNhbnMmcXVvdDssICZxdW90O0NsZWFyIFNhbnMmcXVvdDssICZxdW90O0hlbHZldGljYSBOZXVl +JnF1b3Q7LCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmOyBib3gtc2l6aW5nOiBib3JkZXIt +Ym94OyBjb2xvcjogcmdiKDUxLCA1MSwgNTEpOyBmb250LXNpemU6IDE2cHg7Ij48aHIgc3R5bGU9 +ImJveC1zaXppbmc6IGNvbnRlbnQtYm94OyBoZWlnaHQ6IDJweDsgbWFyZ2luOiAxNnB4IDBweDsg +Ym9yZGVyOiAwcHggbm9uZTsgcGFkZGluZzogMHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjMx +LCAyMzEsIDIzMSk7Ij48L2Rpdj48aDMgY2lkPSJuMyIgbWR0eXBlPSJoZWFkaW5nIiBjbGFzcz0i +bWQtZW5kLWJsb2NrIG1kLWhlYWRpbmciIHN0eWxlPSJmb250LWZhbWlseTogJnF1b3Q7T3BlbiBT +YW5zJnF1b3Q7LCAmcXVvdDtDbGVhciBTYW5zJnF1b3Q7LCAmcXVvdDtIZWx2ZXRpY2EgTmV1ZSZx +dW90OywgSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjsgYm94LXNpemluZzogYm9yZGVyLWJv +eDsgYnJlYWstYWZ0ZXI6IGF2b2lkLXBhZ2U7IGJyZWFrLWluc2lkZTogYXZvaWQ7IG9ycGhhbnM6 +IDQ7IGZvbnQtc2l6ZTogMS41ZW07IG1hcmdpbi10b3A6IDFyZW07IG1hcmdpbi1ib3R0b206IDFy +ZW07IHBvc2l0aW9uOiByZWxhdGl2ZTsgbGluZS1oZWlnaHQ6IDEuNDM7IGN1cnNvcjogdGV4dDsg +d2hpdGUtc3BhY2U6IHByZS13cmFwOyBjb2xvcjogcmdiKDUxLCA1MSwgNTEpOyI+PHNwYW4gbWQt +aW5saW5lPSJzdHJvbmciIGNsYXNzPSJtZC1wYWlyLXMgIiBzdHlsZT0iYm94LXNpemluZzogYm9y +ZGVyLWJveDsiPjxzdHJvbmcgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij48c3BhbiBt +ZC1pbmxpbmU9InBsYWluIiBjbGFzcz0ibWQtcGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3Jk +ZXItYm94OyI+5LiA44CB5pys5ZGo5bel5L2c5oC757uTPC9zcGFuPjwvc3Ryb25nPjwvc3Bhbj48 +L2gzPjxvbCBjbGFzcz0ib2wtbGlzdCIgc3RhcnQ9IiIgY2lkPSJuNCIgbWR0eXBlPSJsaXN0IiBz +dHlsZT0iZm9udC1mYW1pbHk6ICZxdW90O09wZW4gU2FucyZxdW90OywgJnF1b3Q7Q2xlYXIgU2Fu +cyZxdW90OywgJnF1b3Q7SGVsdmV0aWNhIE5ldWUmcXVvdDssIEhlbHZldGljYSwgQXJpYWwsIHNh +bnMtc2VyaWY7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBwYWRkaW5nLWxl +ZnQ6IDMwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsgY29sb3I6IHJnYig1MSwgNTEsIDUxKTsgZm9u +dC1zaXplOiAxNnB4OyI+PGxpIGNsYXNzPSJtZC1saXN0LWl0ZW0iIGNpZD0ibjUiIG1kdHlwZT0i +bGlzdF9pdGVtIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBv +c2l0aW9uOiByZWxhdGl2ZTsiPjxwIGNpZD0ibjYiIG1kdHlwZT0icGFyYWdyYXBoIiBjbGFzcz0i +bWQtZW5kLWJsb2NrIG1kLXAiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhl +aWdodDogaW5oZXJpdDsgb3JwaGFuczogNDsgbWFyZ2luOiAwcHggMHB4IDAuNXJlbTsgd2hpdGUt +c3BhY2U6IHByZS13cmFwOyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48c3BhbiBtZC1pbmxpbmU9InN0 +cm9uZyIgY2xhc3M9Im1kLXBhaXItcyAiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+ +PHN0cm9uZyBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPjxzcGFuIG1kLWlubGluZT0i +cGxhaW4iIGNsYXNzPSJtZC1wbGFpbiIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij7p +h43ngrnlt6XkvZzlrozmiJDmg4XlhrU8L3NwYW4+PC9zdHJvbmc+PC9zcGFuPjwvcD48L2xpPjx1 +bCBjbGFzcz0idWwtbGlzdCIgY2lkPSJuNyIgbWR0eXBlPSJsaXN0IiBkYXRhLW1hcms9Ii0iIHN0 +eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcGFkZGluZy1sZWZ0OiAz +MHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48bGkgY2xhc3M9Im1kLWxpc3QtaXRlbSIgY2lkPSJu +OCIgbWR0eXBlPSJsaXN0X2l0ZW0iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJn +aW46IDBweDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHAgY2lkPSJuOSIgbWR0eXBlPSJwYXJhZ3Jh +cGgiIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1i +b3g7IGxpbmUtaGVpZ2h0OiBpbmhlcml0OyBvcnBoYW5zOiA0OyBtYXJnaW46IDBweCAwcHggMC41 +cmVtOyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxzcGFuIG1k +LWlubGluZT0icGxhaW4iIGNsYXNzPSJtZC1wbGFpbiIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRl +ci1ib3g7Ij7ku7vliqEx77yaRzXkuLvmlbDmja41LjIuM+eJiOacrOWPkeeJiDwvc3Bhbj48L3A+ +PC9saT48bGkgY2xhc3M9Im1kLWxpc3QtaXRlbSIgY2lkPSJuMTAiIG1kdHlwZT0ibGlzdF9pdGVt +IiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBvc2l0aW9uOiBy +ZWxhdGl2ZTsiPjxwIGNpZD0ibjExIiBtZHR5cGU9InBhcmFncmFwaCIgY2xhc3M9Im1kLWVuZC1i +bG9jayBtZC1wIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGlu +aGVyaXQ7IG9ycGhhbnM6IDQ7IG1hcmdpbjogMHB4IDBweCAwLjVyZW07IHdoaXRlLXNwYWNlOiBw +cmUtd3JhcDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHNwYW4gbWQtaW5saW5lPSJwbGFpbiIgY2xh +c3M9Im1kLXBsYWluIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPuS7u+WKoTLvvJo8 +L3NwYW4+RzPlrZjotKfov4Hnp7vliLBHNTwvcD48L2xpPjwvdWw+PGxpIGNsYXNzPSJtZC1saXN0 +LWl0ZW0iIGNpZD0ibjEyIiBtZHR5cGU9Imxpc3RfaXRlbSIgc3R5bGU9ImJveC1zaXppbmc6IGJv +cmRlci1ib3g7IG1hcmdpbjogMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48cCBjaWQ9Im4xMyIg +bWR0eXBlPSJwYXJhZ3JhcGgiIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCIgc3R5bGU9ImJveC1z +aXppbmc6IGJvcmRlci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhlcml0OyBvcnBoYW5zOiA0OyBtYXJn +aW46IDBweCAwcHggMC41cmVtOyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0aW9uOiByZWxh +dGl2ZTsiPjxzcGFuIG1kLWlubGluZT0ic3Ryb25nIiBjbGFzcz0ibWQtcGFpci1zICIgc3R5bGU9 +ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij48c3Ryb25nIHN0eWxlPSJib3gtc2l6aW5nOiBib3Jk +ZXItYm94OyI+PHNwYW4gbWQtaW5saW5lPSJwbGFpbiIgY2xhc3M9Im1kLXBsYWluIiBzdHlsZT0i +Ym94LXNpemluZzogYm9yZGVyLWJveDsiPuW4uOinhOW3peS9nDwvc3Bhbj48L3N0cm9uZz48L3Nw +YW4+PC9wPjwvbGk+PHVsIGNsYXNzPSJ1bC1saXN0IiBjaWQ9Im4xNCIgbWR0eXBlPSJsaXN0IiBk +YXRhLW1hcms9Ii0iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsg +cGFkZGluZy1sZWZ0OiAzMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48bGkgY2xhc3M9Im1kLWxp +c3QtaXRlbSIgY2lkPSJuMTUiIG1kdHlwZT0ibGlzdF9pdGVtIiBzdHlsZT0iYm94LXNpemluZzog +Ym9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxwIGNpZD0ibjE2 +IiBtZHR5cGU9InBhcmFncmFwaCIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1wIiBzdHlsZT0iYm94 +LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IG9ycGhhbnM6IDQ7IG1h +cmdpbjogMHB4IDBweCAwLjVyZW07IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJl +bGF0aXZlOyI+PHNwYW4gbWQtaW5saW5lPSJwbGFpbiIgY2xhc3M9Im1kLXBsYWluIiBzdHlsZT0i +Ym94LXNpemluZzogYm9yZGVyLWJveDsiPuaXpeW4uOS6i+WKoTHvvJoyMDI1LTExLTEwIOWtmOi0 +p+i/geenu+mXrumimOWkhOeQhjwvc3Bhbj48L3A+PC9saT48L3VsPjwvb2w+PG9sIGNsYXNzPSJv +bC1saXN0IiBzdGFydD0iIiBjaWQ9Im40IiBtZHR5cGU9Imxpc3QiIHN0eWxlPSJmb250LWZhbWls +eTog5b6u6L2v6ZuF6buROyBib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcGFk +ZGluZy1sZWZ0OiAzMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48dWwgY2xhc3M9InVsLWxpc3Qi +IGNpZD0ibjE0IiBtZHR5cGU9Imxpc3QiIGRhdGEtbWFyaz0iLSIgc3R5bGU9ImZvbnQtZmFtaWx5 +OiDlvq7ova/pm4Xpu5E7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBwYWRk +aW5nLWxlZnQ6IDMwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxsaSBjbGFzcz0ibWQtbGlzdC1p +dGVtIiBjaWQ9Im4xNSIgbWR0eXBlPSJsaXN0X2l0ZW0iIHN0eWxlPSJjb2xvcjogcmdiKDUxLCA1 +MSwgNTEpOyBmb250LWZhbWlseTogJnF1b3Q7T3BlbiBTYW5zJnF1b3Q7LCAmcXVvdDtDbGVhciBT +YW5zJnF1b3Q7LCAmcXVvdDtIZWx2ZXRpY2EgTmV1ZSZxdW90OywgSGVsdmV0aWNhLCBBcmlhbCwg +c2Fucy1zZXJpZjsgZm9udC1zaXplOiAxNnB4OyBib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJn +aW46IDBweDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHAgY2lkPSJuMTYiIG1kdHlwZT0icGFyYWdy +YXBoIiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLXAiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXIt +Ym94OyBsaW5lLWhlaWdodDogaW5oZXJpdDsgb3JwaGFuczogNDsgbWFyZ2luOiAwcHggMHB4IDAu +NXJlbTsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48c3BhbiBt +ZC1pbmxpbmU9InBsYWluIiBjbGFzcz0ibWQtcGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3Jk +ZXItYm94OyI+5pel5bi45LqL5YqhMu+8mjIwMjUtMTEtMTEg5YWl5bqT5oiQ5pys57u05oqk6YeN +5paw6L2s5rWLCjwvc3Bhbj48L3A+PC9saT48bGkgY2xhc3M9Im1kLWxpc3QtaXRlbSIgY2lkPSJu +MTciIG1kdHlwZT0ibGlzdF9pdGVtIiBzdHlsZT0iY29sb3I6IHJnYig1MSwgNTEsIDUxKTsgZm9u +dC1mYW1pbHk6ICZxdW90O09wZW4gU2FucyZxdW90OywgJnF1b3Q7Q2xlYXIgU2FucyZxdW90Oywg +JnF1b3Q7SGVsdmV0aWNhIE5ldWUmcXVvdDssIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7 +IGZvbnQtc2l6ZTogMTZweDsgYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBv +c2l0aW9uOiByZWxhdGl2ZTsiPjxwIGNpZD0ibjE4IiBtZHR5cGU9InBhcmFncmFwaCIgY2xhc3M9 +Im1kLWVuZC1ibG9jayBtZC1wIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1o +ZWlnaHQ6IGluaGVyaXQ7IG9ycGhhbnM6IDQ7IG1hcmdpbjogMHB4IDBweCAwLjVyZW07IHdoaXRl +LXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHNwYW4gbWQtaW5saW5lPSJw +bGFpbiIgY2xhc3M9Im1kLXBsYWluIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPuaX +peW4uOS6i+WKoTPvvJoyMDI1LTExLTEyIDwvc3Bhbj7lrZjotKfov4Hnp7st5bqT5a2Y55u45YWz +5Luj56CB5aSE55CGPC9wPjwvbGk+PC91bD48L29sPjxvbCBjbGFzcz0ib2wtbGlzdCIgc3RhcnQ9 +IiIgY2lkPSJuNCIgbWR0eXBlPSJsaXN0IiBzdHlsZT0iZm9udC1mYW1pbHk6IOW+rui9r+mbhem7 +kTsgYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBhZGRpbmctbGVmdDogMzBw +eDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHVsIGNsYXNzPSJ1bC1saXN0IiBjaWQ9Im4xNCIgbWR0 +eXBlPSJsaXN0IiBkYXRhLW1hcms9Ii0iIHN0eWxlPSJmb250LWZhbWlseTog5b6u6L2v6ZuF6buR +OyBib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcGFkZGluZy1sZWZ0OiAzMHB4 +OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48bGkgY2xhc3M9Im1kLWxpc3QtaXRlbSIgY2lkPSJuMTci +IG1kdHlwZT0ibGlzdF9pdGVtIiBzdHlsZT0iY29sb3I6IHJnYig1MSwgNTEsIDUxKTsgZm9udC1m +YW1pbHk6ICZxdW90O09wZW4gU2FucyZxdW90OywgJnF1b3Q7Q2xlYXIgU2FucyZxdW90OywgJnF1 +b3Q7SGVsdmV0aWNhIE5ldWUmcXVvdDssIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7IGZv +bnQtc2l6ZTogMTZweDsgYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBvc2l0 +aW9uOiByZWxhdGl2ZTsiPjxwIGNpZD0ibjE4IiBtZHR5cGU9InBhcmFncmFwaCIgY2xhc3M9Im1k +LWVuZC1ibG9jayBtZC1wIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1oZWln +aHQ6IGluaGVyaXQ7IG9ycGhhbnM6IDQ7IG1hcmdpbjogMHB4IDBweCAwLjVyZW07IHdoaXRlLXNw +YWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHNwYW4gbWQtaW5saW5lPSJwbGFp +biIgY2xhc3M9Im1kLXBsYWluIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPuaXpeW4 +uOS6i+WKoTTvvJoyMDI1LTEwLTEzIOS4u+aVsOaNruS6p+WTgeWFs+iBlOW3peiJuuimhuebluWv +vOWFpTwvc3Bhbj48L3A+PC9saT48L3VsPjwvb2w+PGgzIGNpZD0ibjI1IiBtZHR5cGU9ImhlYWRp +bmciIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtaGVhZGluZyIgc3R5bGU9ImZvbnQtZmFtaWx5OiAm +cXVvdDtPcGVuIFNhbnMmcXVvdDssICZxdW90O0NsZWFyIFNhbnMmcXVvdDssICZxdW90O0hlbHZl +dGljYSBOZXVlJnF1b3Q7LCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmOyBib3gtc2l6aW5n +OiBib3JkZXItYm94OyBicmVhay1hZnRlcjogYXZvaWQtcGFnZTsgYnJlYWstaW5zaWRlOiBhdm9p +ZDsgb3JwaGFuczogNDsgZm9udC1zaXplOiAxLjVlbTsgbWFyZ2luLXRvcDogMXJlbTsgbWFyZ2lu +LWJvdHRvbTogMXJlbTsgcG9zaXRpb246IHJlbGF0aXZlOyBsaW5lLWhlaWdodDogMS40MzsgY3Vy +c29yOiB0ZXh0OyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IGNvbG9yOiByZ2IoNTEsIDUxLCA1MSk7 +Ij48c3BhbiBtZC1pbmxpbmU9InN0cm9uZyIgY2xhc3M9Im1kLXBhaXItcyAiIHN0eWxlPSJib3gt +c2l6aW5nOiBib3JkZXItYm94OyI+PHN0cm9uZyBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJv +eDsiPjxzcGFuIG1kLWlubGluZT0icGxhaW4iIGNsYXNzPSJtZC1wbGFpbiIgc3R5bGU9ImJveC1z +aXppbmc6IGJvcmRlci1ib3g7Ij7kuozjgIHkuIvlkajlt6XkvZzorqHliJI8L3NwYW4+PC9zdHJv +bmc+PC9zcGFuPjwvaDM+PG9sIGNsYXNzPSJvbC1saXN0IiBzdGFydD0iIiBjaWQ9Im4yNiIgbWR0 +eXBlPSJsaXN0IiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBh +ZGRpbmctbGVmdDogMzBweDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PGxpIGNsYXNzPSJtZC1saXN0 +LWl0ZW0iIGNpZD0ibjI3IiBtZHR5cGU9Imxpc3RfaXRlbSIgc3R5bGU9ImZvbnQtZmFtaWx5OiAm +cXVvdDtPcGVuIFNhbnMmcXVvdDssICZxdW90O0NsZWFyIFNhbnMmcXVvdDssICZxdW90O0hlbHZl +dGljYSBOZXVlJnF1b3Q7LCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmOyBjb2xvcjogcmdi +KDUxLCA1MSwgNTEpOyBmb250LXNpemU6IDE2cHg7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1h +cmdpbjogMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48cCBjaWQ9Im4yOCIgbWR0eXBlPSJwYXJh +Z3JhcGgiIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRl +ci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhlcml0OyBvcnBoYW5zOiA0OyBtYXJnaW46IDBweCAwcHgg +MC41cmVtOyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxzcGFu +IG1kLWlubGluZT0ic3Ryb25nIiBjbGFzcz0ibWQtcGFpci1zICIgc3R5bGU9ImJveC1zaXppbmc6 +IGJvcmRlci1ib3g7Ij48c3Ryb25nIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+PHNw +YW4gbWQtaW5saW5lPSJwbGFpbiIgY2xhc3M9Im1kLXBsYWluIiBzdHlsZT0iYm94LXNpemluZzog +Ym9yZGVyLWJveDsiPumHjeeCueS7u+WKoTwvc3Bhbj48L3N0cm9uZz48L3NwYW4+PC9wPjwvbGk+ +PHVsIGNsYXNzPSJ1bC1saXN0IiBjaWQ9Im4yOSIgbWR0eXBlPSJsaXN0IiBkYXRhLW1hcms9Ii0i +IHN0eWxlPSJmb250LWZhbWlseTogJnF1b3Q7T3BlbiBTYW5zJnF1b3Q7LCAmcXVvdDtDbGVhciBT +YW5zJnF1b3Q7LCAmcXVvdDtIZWx2ZXRpY2EgTmV1ZSZxdW90OywgSGVsdmV0aWNhLCBBcmlhbCwg +c2Fucy1zZXJpZjsgY29sb3I6IHJnYig1MSwgNTEsIDUxKTsgZm9udC1zaXplOiAxNnB4OyBib3gt +c2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcGFkZGluZy1sZWZ0OiAzMHB4OyBwb3Np +dGlvbjogcmVsYXRpdmU7Ij48bGkgY2xhc3M9Im1kLWxpc3QtaXRlbSIgY2lkPSJuMzAiIG1kdHlw +ZT0ibGlzdF9pdGVtIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7 +IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxwIGNpZD0ibjMxIiBtZHR5cGU9InBhcmFncmFwaCIgY2xh +c3M9Im1kLWVuZC1ibG9jayBtZC1wIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbGlu +ZS1oZWlnaHQ6IGluaGVyaXQ7IG9ycGhhbnM6IDQ7IG1hcmdpbjogMHB4IDBweCAwLjVyZW07IHdo +aXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHNwYW4gbWQtaW5saW5l +PSJwbGFpbiIgY2xhc3M9Im1kLXBsYWluIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsi +PuiuoeWIkjHvvJo8L3NwYW4+RzPlrZjotKfov4Hnp7vliLBHNSDlj6/nlKjmgKfpl67popjlpITn +kIblkozkuqTkupLlrozlloQ8L3A+PC9saT48L3VsPjwvb2w+PGRpdiB0YWJpbmRleD0iLTEiIGNp +ZD0ibjM5IiBtZHR5cGU9ImhyIiBjbGFzcz0ibWQtaHIgbWQtZW5kLWJsb2NrIiBzdHlsZT0iZm9u +dC1mYW1pbHk6ICZxdW90O09wZW4gU2FucyZxdW90OywgJnF1b3Q7Q2xlYXIgU2FucyZxdW90Oywg +JnF1b3Q7SGVsdmV0aWNhIE5ldWUmcXVvdDssIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7 +IGJveC1zaXppbmc6IGJvcmRlci1ib3g7IGNvbG9yOiByZ2IoNTEsIDUxLCA1MSk7IGZvbnQtc2l6 +ZTogMTZweDsiPjxociBzdHlsZT0iYm94LXNpemluZzogY29udGVudC1ib3g7IGhlaWdodDogMnB4 +OyBtYXJnaW46IDE2cHggMHB4OyBib3JkZXI6IDBweCBub25lOyBwYWRkaW5nOiAwcHg7IGJhY2tn +cm91bmQtY29sb3I6IHJnYigyMzEsIDIzMSwgMjMxKTsiPjwvZGl2PjxwIGNpZD0ibjQwIiBtZHR5 +cGU9InBhcmFncmFwaCIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1wIiBzdHlsZT0iZm9udC1mYW1p +bHk6ICZxdW90O09wZW4gU2FucyZxdW90OywgJnF1b3Q7Q2xlYXIgU2FucyZxdW90OywgJnF1b3Q7 +SGVsdmV0aWNhIE5ldWUmcXVvdDssIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7IGJveC1z +aXppbmc6IGJvcmRlci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhlcml0OyBvcnBoYW5zOiA0OyBtYXJn +aW46IDAuOGVtIDBweDsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyBwb3NpdGlvbjogcmVsYXRpdmU7 +IGNvbG9yOiByZ2IoNTEsIDUxLCA1MSk7IGZvbnQtc2l6ZTogMTZweDsiPjxzcGFuIG1kLWlubGlu +ZT0ic3Ryb25nIiBjbGFzcz0ibWQtcGFpci1zICIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1i +b3g7Ij48c3Ryb25nIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+PHNwYW4gbWQtaW5s +aW5lPSJwbGFpbiIgY2xhc3M9Im1kLXBsYWluIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJv +eDsiPuWkh+azqDwvc3Bhbj48L3N0cm9uZz48L3NwYW4+PHNwYW4gbWQtaW5saW5lPSJwbGFpbiIg +Y2xhc3M9Im1kLXBsYWluIG1kLWV4cGFuZCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7 +Ij7vvJrml6A8L3NwYW4+PC9wPjwvZGl2PjxkaXYgc3R5bGU9ImZvbnQtZmFtaWx5OiDlvq7ova/p +m4Xpu5E7Ij48YnI+PC9kaXY+PC9kaXY+PCEtLfCfmIAtLT48L2Rpdj48L2Rpdj48L2Rpdj48ZGl2 +Pjxicj48L2Rpdj48ZGl2Pjxicj48L2Rpdj48ZGl2IGlkPSJpbWFpbF9zaWduYXR1cmUiIGNsYXNz +PSJudGVzLXNpZ25hdHVyZSIgc3R5bGU9Im1hcmdpbjoyMHB4IDA7Ij48ZGl2IHN0eWxlPSJmb250 +LWZhbWlseTomcXVvdDvlvq7ova/pm4Xpu5EmcXVvdDs7IGZvbnQtc2l6ZTogMTRweDsgY29sb3I6 +IzAwMDAwMCI+CiAgICA8c3R5bGU+CiAgICAgICAgZm9udHsKICAgICAgICAgICAgbGluZS1oZWln +aHQ6IDEuNjsKICAgICAgICB9CiAgICA8L3N0eWxlPgo8ZGl2IHN0eWxlPSJmb250LWZhbWlseTom +cXVvdDvlvq7ova/pm4Xpu5EmcXVvdDs7IGZvbnQtc2l6ZTogMTRweDsgY29sb3I6IzAwMDAwMCI+ +CiAgICA8c3R5bGU+CiAgICAgICAgZm9udHsKICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDEuNjsK +ICAgICAgICB9CiAgICA8L3N0eWxlPgo8ZGl2IHN0eWxlPSJmb250LWZhbWlseTomcXVvdDvlvq7o +va/pm4Xpu5EmcXVvdDs7IGZvbnQtc2l6ZTogMTRweDsgY29sb3I6IzAwMDAwMCI+CiAgICA8c3R5 +bGU+CiAgICAgICAgZm9udHsKICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDEuNjsKICAgICAgICB9 +CiAgICA8L3N0eWxlPgo8ZGl2IHN0eWxlPSJmb250LWZhbWlseTomcXVvdDvlvq7ova/pm4Xpu5Em +cXVvdDs7IGZvbnQtc2l6ZTogMTRweDsgY29sb3I6IzAwMDAwMCI+CiAgICA8c3R5bGU+CiAgICAg +ICAgZm9udHsKICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDEuNjsKICAgICAgICB9CiAgICA8L3N0 +eWxlPgo8ZGl2IHN0eWxlPSJmb250LWZhbWlseTomcXVvdDvlvq7ova/pm4Xpu5EmcXVvdDs7IGZv +bnQtc2l6ZTogMTRweDsgY29sb3I6IzAwMDAwMCI+CiAgICA8c3R5bGU+CiAgICAgICAgZm9udHsK +ICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDEuNjsKICAgICAgICB9CiAgICA8L3N0eWxlPgrigIs8 +c3BhbiBzdHlsZT0iY29sb3I6IHJnYigxOTEsIDE5MSwgMTkxKTsgZm9udC1mYW1pbHk6ICdNaWNy +b3NvZnQgWWFoZWknOyBmb250LXNpemU6IDEzcHg7IG9ycGhhbnM6IDI7IHdpZG93czogMjsiPkJl +c3QgcmVnYXJkcyw8L3NwYW4+PGRpdiBzdHlsZT0ibWFyZ2luOiAwcHg7IHBhZGRpbmc6IDBweDsg +Ym9yZGVyOiAwcHg7IG91dGxpbmU6IDBweDsgZm9udC1mYW1pbHk6IFRhaG9tYSwgQXJpYWwsIFNU +SGVpdGksIFNpbVN1bjsgZm9udC12YXJpYW50LWxpZ2F0dXJlczogbm9ybWFsOyBvcnBoYW5zOiAy +OyB3aWRvd3M6IDI7IGNsZWFyOiBib3RoOyI+PHNwYW4gc3R5bGU9Im1hcmdpbjogMHB4OyBwYWRk +aW5nOiAwcHg7IGJvcmRlcjogMHB4OyBvdXRsaW5lOiAwcHg7IGZvbnQtZmFtaWx5OiAmcXVvdDtN +aWNyb3NvZnQgWWFoZWkmcXVvdDs7IGZvbnQtc2l6ZTogMTNweDsgY29sb3I6IHJnYigxOTEsIDE5 +MSwgMTkxKTsiPuadqOi9qTwvc3Bhbj48L2Rpdj48ZGl2IHN0eWxlPSJtYXJnaW46IDBweDsgcGFk +ZGluZzogMHB4OyBib3JkZXI6IDBweDsgb3V0bGluZTogMHB4OyBmb250LWZhbWlseTogVGFob21h +LCBBcmlhbCwgU1RIZWl0aSwgU2ltU3VuOyBmb250LXZhcmlhbnQtbGlnYXR1cmVzOiBub3JtYWw7 +IG9ycGhhbnM6IDI7IHdpZG93czogMjsgY2xlYXI6IGJvdGg7Ij7igIs8L2Rpdj48ZGl2IHN0eWxl +PSJtYXJnaW46IDBweDsgcGFkZGluZzogMHB4OyBib3JkZXI6IDBweDsgb3V0bGluZTogMHB4OyBm +b250LWZhbWlseTogVGFob21hLCBBcmlhbCwgU1RIZWl0aSwgU2ltU3VuOyBmb250LXZhcmlhbnQt +bGlnYXR1cmVzOiBub3JtYWw7IG9ycGhhbnM6IDI7IHdpZG93czogMjsgY2xlYXI6IGJvdGg7Ij48 +aW1nIHNyYz0iaHR0cHM6Ly9tYWlsLW9ubGluZS5ub3Nkbi4xMjcubmV0L3d6cG1tYy9jZTlmOGIz +NmUxZmZiZTU1MzI5YzE5NmM4NGZlNTE5Ny5wbmciIHN0eWxlPSJtYXgtd2lkdGg6IHVuc2V0OyI+ +PC9kaXY+PGRpdiBzdHlsZT0ibWFyZ2luOiAwcHg7IHBhZGRpbmc6IDBweDsgYm9yZGVyOiAwcHg7 +IG91dGxpbmU6IDBweDsgZm9udC1mYW1pbHk6IFRhaG9tYSwgQXJpYWwsIFNUSGVpdGksIFNpbVN1 +bjsgZm9udC12YXJpYW50LWxpZ2F0dXJlczogbm9ybWFsOyBvcnBoYW5zOiAyOyB3aWRvd3M6IDI7 +IGNsZWFyOiBib3RoOyI+PHNwYW4gc3R5bGU9Im1hcmdpbjogMHB4OyBwYWRkaW5nOiAwcHg7IGJv +cmRlcjogMHB4OyBvdXRsaW5lOiAwcHg7IGZvbnQtZmFtaWx5OiAmcXVvdDtNaWNyb3NvZnQgWWFo +ZWkmcXVvdDs7IGNvbG9yOiByZ2IoMTkxLCAxOTEsIDE5MSk7Ij7lnLDlnYDvvJrkuK3lm73Ct+WN +l+S6rOS6keWvhuWfjkzmoIs1LzEw5qW8PC9zcGFuPjwvZGl2PjxkaXYgc3R5bGU9Im1hcmdpbjog +MHB4OyBwYWRkaW5nOiAwcHg7IGJvcmRlcjogMHB4OyBvdXRsaW5lOiAwcHg7IGZvbnQtZmFtaWx5 +OiBUYWhvbWEsIEFyaWFsLCBTVEhlaXRpLCBTaW1TdW47IGZvbnQtdmFyaWFudC1saWdhdHVyZXM6 +IG5vcm1hbDsgb3JwaGFuczogMjsgd2lkb3dzOiAyOyBjbGVhcjogYm90aDsiPjxzcGFuIHN0eWxl +PSJtYXJnaW46IDBweDsgcGFkZGluZzogMHB4OyBib3JkZXI6IDBweDsgb3V0bGluZTogMHB4OyBm +b250LWZhbWlseTogJnF1b3Q7TWljcm9zb2Z0IFlhaGVpJnF1b3Q7OyBjb2xvcjogcmdiKDE5MSwg +MTkxLCAxOTEpOyI+5omL5py677yaMTg3MjYxMjg0ODk8L3NwYW4+PC9kaXY+PGRpdiBzdHlsZT0i +bWFyZ2luOiAwcHg7IHBhZGRpbmc6IDBweDsgYm9yZGVyOiAwcHg7IG91dGxpbmU6IDBweDsgZm9u +dC1mYW1pbHk6IFRhaG9tYSwgQXJpYWwsIFNUSGVpdGksIFNpbVN1bjsgZm9udC12YXJpYW50LWxp +Z2F0dXJlczogbm9ybWFsOyBvcnBoYW5zOiAyOyB3aWRvd3M6IDI7IGNsZWFyOiBib3RoOyI+PHNw +YW4gc3R5bGU9Im1hcmdpbjogMHB4OyBwYWRkaW5nOiAwcHg7IGJvcmRlcjogMHB4OyBvdXRsaW5l +OiAwcHg7IGZvbnQtZmFtaWx5OiAmcXVvdDtNaWNyb3NvZnQgWWFoZWkmcXVvdDs7IGNvbG9yOiBy +Z2IoMTkxLCAxOTEsIDE5MSk7Ij7pgq7nrrHvvJp5YW5neHVhbkB3aXRzb2Z0LmNuPC9zcGFuPjwv +ZGl2Pgo8L2Rpdj4KPC9kaXY+CjwvZGl2Pgo8L2Rpdj4KPC9kaXY+PC9kaXY+ + +--=_mailmaster-6a18e4a4_0_1eb_=-- diff --git a/media/inbound/2025-11-21_1700_G5开发周报_2025-11-17_--_2025-11-21---d5273db7-f480-4bdb-8d5e-3614666cc2a1.eml b/media/inbound/2025-11-21_1700_G5开发周报_2025-11-17_--_2025-11-21---d5273db7-f480-4bdb-8d5e-3614666cc2a1.eml new file mode 100644 index 0000000..ac00fba --- /dev/null +++ b/media/inbound/2025-11-21_1700_G5开发周报_2025-11-17_--_2025-11-21---d5273db7-f480-4bdb-8d5e-3614666cc2a1.eml @@ -0,0 +1,294 @@ +Date: Fri, 21 Nov 2025 17:00:02 +0800 +From: =?utf-8?B?5p2o6L2p?= +To: =?utf-8?B?5YiY5by6?= +Cc: =?utf-8?B?5bGI5paw6b6Z?= , =?utf-8?B?5pyx5paM?= + , =?utf-8?B?6ZmI5piO?= , + =?utf-8?B?5aSP6ZO25pWP?= , =?utf-8?B?5pu+6I6J?= + +Message-ID: <8F9E7854-FA9C-4CBD-A2FA-F09EC014142B@witsoft.cn> +Subject: =?utf-8?B?RzXlvIDlj5HlkajmiqXjgJAyMDI1LTExLTE3IC0tICAyMDI1LTEx?= + =?utf-8?B?LTIx44CR?= +MIME-Version: 1.0 +Content-Type: multipart/alternative; boundary="=_mailmaster-6a18e4a4_0_bb3_=" + +--=_mailmaster-6a18e4a4_0_bb3_= +Content-Type: text/plain; charset="utf-8" +Content-Transfer-Encoding: base64 + +5oKo5aW977yB5Lul5LiL5piv5oiR5pys5ZGo55qE5bel5L2c5oC757uT5Y+K5LiL5ZGo6K6h5YiS +77yM6K+35a6h6ZiF44CCCuS4gOOAgeacrOWRqOW3peS9nOaAu+e7kwrph43ngrnlt6XkvZzlrozm +iJDmg4XlhrUK5Lu75YqhMe+8mkc15Li75pWw5o2uNS4zLjDniYjmnKzlj5HniYgK5Lu75YqhMu+8 +mkc15a2Y6LSn5rWL6K+V6Zeu6aKY5L+u5aSNCuW4uOinhOW3peS9nArml6XluLjkuovliqEx77ya +MjAyNS0xMS0xNyDkuLvmlbDmja7lkozlrZjotKfljoblj7Lpl67popjkv67lpI0K5pel5bi45LqL +5YqhMu+8mjIwMjUtMTEtMTgg5Li75pWw5o2u6ZyA5rGC5byA5Y+RIArml6XluLjkuovliqEz77ya +MjAyNS0xMS0xOSDkuLvmlbDmja7nianmlpnmuIXljZXlpITnkIYK5pel5bi45LqL5YqhNO+8mjIw +MjUtMTAtMjAg54mp5paZ5riF5Y2V5rWL6K+VYnVn5L+u5aSNCuaXpeW4uOS6i+WKoTTvvJoyMDI1 +LTEwLTIxIOS4muWKoeS6uuWRmOmFjee9ruWFs+iBlOWFs+ezu+aUuemAoO+8jOWIneWni+WMlueJ +qeaWmea4heWNlWJ1Z+S/ruWkjQrkuozjgIHkuIvlkajlt6XkvZzorqHliJIK6YeN54K55Lu75Yqh +CuiuoeWIkjHvvJrovazmtYvlj5HluIMK5aSH5rOo77ya5pegCkJlc3QgcmVnYXJkcyzmnajovakK +5Zyw5Z2A77ya5Lit5Zu9wrfljZfkuqzkupHlr4bln45M5qCLNS8xMOalvArmiYvmnLrvvJoxODcy +NjEyODQ4OQrpgq7nrrHvvJp5YW5neHVhbkB3aXRzb2Z0LmNu + +--=_mailmaster-6a18e4a4_0_bb3_= +Content-Type: text/html; charset="utf-8" +Content-Transfer-Encoding: base64 + +PGh0bWw+PGhlYWQ+PG1ldGEgaHR0cC1lcXVpdj0nQ29udGVudC1UeXBlJyBjb250ZW50PSd0ZXh0 +L2h0bWw7IGNoYXJzZXQ9VVRGLTgnPjwvaGVhZD48Ym9keSBzdHlsZT1saW5lLWhlaWdodDogMS41 +O2ZvbnQtZmFtaWx5OiAi5b6u6L2v6ZuF6buRIj48ZGl2ICBzdHlsZT0iZm9udC1mYW1pbHk6IOW+ +rui9r+mbhem7kTsiPjxkaXYgc3R5bGU9ImxpbmUtaGVpZ2h0OiIgMS41O2ZvbnQtZmFtaWx5Oj0i +IiAi5b6u6L2v6ZuF6buRIj0iIj48ZGl2IHN0eWxlPSJmb250LWZhbWlseTog5b6u6L2v6ZuF6buR +OyI+PGRpdiBzdHlsZT0iZm9udC1mYW1pbHk6IOW+rui9r+mbhem7kTsiPjxkaXYgc3R5bGU9IiI+ +PGRpdiBzdHlsZT0iIj48cCBjaWQ9Im4wIiBtZHR5cGU9InBhcmFncmFwaCIgY2xhc3M9Im1kLWVu +ZC1ibG9jayBtZC1wIG1kLWZvY3VzIiBzdHlsZT0iZm9udC1mYW1pbHk6ICZxdW90O09wZW4gU2Fu +cyZxdW90OywgJnF1b3Q7Q2xlYXIgU2FucyZxdW90OywgJnF1b3Q7SGVsdmV0aWNhIE5ldWUmcXVv +dDssIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7 +IGxpbmUtaGVpZ2h0OiBpbmhlcml0OyBvcnBoYW5zOiA0OyBtYXJnaW46IDAuOGVtIDBweDsgd2hp +dGUtc3BhY2U6IHByZS13cmFwOyBwb3NpdGlvbjogcmVsYXRpdmU7IGNvbG9yOiByZ2IoNTEsIDUx +LCA1MSk7IGZvbnQtc2l6ZTogMTZweDsiPjxzcGFuIG1kLWlubGluZT0icGxhaW4iIGNsYXNzPSJt +ZC1wbGFpbiBtZC1leHBhbmQiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+5oKo5aW9 +77yB5Lul5LiL5piv5oiR5pys5ZGo55qE5bel5L2c5oC757uT5Y+K5LiL5ZGo6K6h5YiS77yM6K+3 +5a6h6ZiF44CCPC9zcGFuPjwvcD48ZGl2IHRhYmluZGV4PSItMSIgY2lkPSJuMiIgbWR0eXBlPSJo +ciIgY2xhc3M9Im1kLWhyIG1kLWVuZC1ibG9jayIgc3R5bGU9ImZvbnQtZmFtaWx5OiAmcXVvdDtP +cGVuIFNhbnMmcXVvdDssICZxdW90O0NsZWFyIFNhbnMmcXVvdDssICZxdW90O0hlbHZldGljYSBO +ZXVlJnF1b3Q7LCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmOyBib3gtc2l6aW5nOiBib3Jk +ZXItYm94OyBjb2xvcjogcmdiKDUxLCA1MSwgNTEpOyBmb250LXNpemU6IDE2cHg7Ij48aHIgc3R5 +bGU9ImJveC1zaXppbmc6IGNvbnRlbnQtYm94OyBoZWlnaHQ6IDJweDsgbWFyZ2luOiAxNnB4IDBw +eDsgYm9yZGVyOiAwcHggbm9uZTsgcGFkZGluZzogMHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2Io +MjMxLCAyMzEsIDIzMSk7Ij48L2Rpdj48aDMgY2lkPSJuMyIgbWR0eXBlPSJoZWFkaW5nIiBjbGFz +cz0ibWQtZW5kLWJsb2NrIG1kLWhlYWRpbmciIHN0eWxlPSJmb250LWZhbWlseTogJnF1b3Q7T3Bl +biBTYW5zJnF1b3Q7LCAmcXVvdDtDbGVhciBTYW5zJnF1b3Q7LCAmcXVvdDtIZWx2ZXRpY2EgTmV1 +ZSZxdW90OywgSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjsgYm94LXNpemluZzogYm9yZGVy +LWJveDsgYnJlYWstYWZ0ZXI6IGF2b2lkLXBhZ2U7IGJyZWFrLWluc2lkZTogYXZvaWQ7IG9ycGhh +bnM6IDQ7IGZvbnQtc2l6ZTogMS41ZW07IG1hcmdpbi10b3A6IDFyZW07IG1hcmdpbi1ib3R0b206 +IDFyZW07IHBvc2l0aW9uOiByZWxhdGl2ZTsgbGluZS1oZWlnaHQ6IDEuNDM7IGN1cnNvcjogdGV4 +dDsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyBjb2xvcjogcmdiKDUxLCA1MSwgNTEpOyI+PHNwYW4g +bWQtaW5saW5lPSJzdHJvbmciIGNsYXNzPSJtZC1wYWlyLXMgIiBzdHlsZT0iYm94LXNpemluZzog +Ym9yZGVyLWJveDsiPjxzdHJvbmcgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij48c3Bh +biBtZC1pbmxpbmU9InBsYWluIiBjbGFzcz0ibWQtcGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBi +b3JkZXItYm94OyI+5LiA44CB5pys5ZGo5bel5L2c5oC757uTPC9zcGFuPjwvc3Ryb25nPjwvc3Bh +bj48L2gzPjxvbCBjbGFzcz0ib2wtbGlzdCIgc3RhcnQ9IiIgY2lkPSJuNCIgbWR0eXBlPSJsaXN0 +IiBzdHlsZT0iZm9udC1mYW1pbHk6ICZxdW90O09wZW4gU2FucyZxdW90OywgJnF1b3Q7Q2xlYXIg +U2FucyZxdW90OywgJnF1b3Q7SGVsdmV0aWNhIE5ldWUmcXVvdDssIEhlbHZldGljYSwgQXJpYWws +IHNhbnMtc2VyaWY7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBwYWRkaW5n +LWxlZnQ6IDMwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsgY29sb3I6IHJnYig1MSwgNTEsIDUxKTsg +Zm9udC1zaXplOiAxNnB4OyI+PGxpIGNsYXNzPSJtZC1saXN0LWl0ZW0iIGNpZD0ibjUiIG1kdHlw +ZT0ibGlzdF9pdGVtIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7 +IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxwIGNpZD0ibjYiIG1kdHlwZT0icGFyYWdyYXBoIiBjbGFz +cz0ibWQtZW5kLWJsb2NrIG1kLXAiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5l +LWhlaWdodDogaW5oZXJpdDsgb3JwaGFuczogNDsgbWFyZ2luOiAwcHggMHB4IDAuNXJlbTsgd2hp +dGUtc3BhY2U6IHByZS13cmFwOyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48c3BhbiBtZC1pbmxpbmU9 +InN0cm9uZyIgY2xhc3M9Im1kLXBhaXItcyAiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94 +OyI+PHN0cm9uZyBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPjxzcGFuIG1kLWlubGlu +ZT0icGxhaW4iIGNsYXNzPSJtZC1wbGFpbiIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7 +Ij7ph43ngrnlt6XkvZzlrozmiJDmg4XlhrU8L3NwYW4+PC9zdHJvbmc+PC9zcGFuPjwvcD48L2xp +Pjx1bCBjbGFzcz0idWwtbGlzdCIgY2lkPSJuNyIgbWR0eXBlPSJsaXN0IiBkYXRhLW1hcms9Ii0i +IHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcGFkZGluZy1sZWZ0 +OiAzMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48bGkgY2xhc3M9Im1kLWxpc3QtaXRlbSIgY2lk +PSJuOCIgbWR0eXBlPSJsaXN0X2l0ZW0iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBt +YXJnaW46IDBweDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHAgY2lkPSJuOSIgbWR0eXBlPSJwYXJh +Z3JhcGgiIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRl +ci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhlcml0OyBvcnBoYW5zOiA0OyBtYXJnaW46IDBweCAwcHgg +MC41cmVtOyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxzcGFu +IG1kLWlubGluZT0icGxhaW4iIGNsYXNzPSJtZC1wbGFpbiIgc3R5bGU9ImJveC1zaXppbmc6IGJv +cmRlci1ib3g7Ij7ku7vliqEx77yaRzXkuLvmlbDmja41LjMuMOeJiOacrOWPkeeJiDwvc3Bhbj48 +L3A+PC9saT48bGkgY2xhc3M9Im1kLWxpc3QtaXRlbSIgY2lkPSJuMTAiIG1kdHlwZT0ibGlzdF9p +dGVtIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBvc2l0aW9u +OiByZWxhdGl2ZTsiPjxwIGNpZD0ibjExIiBtZHR5cGU9InBhcmFncmFwaCIgY2xhc3M9Im1kLWVu +ZC1ibG9jayBtZC1wIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6 +IGluaGVyaXQ7IG9ycGhhbnM6IDQ7IG1hcmdpbjogMHB4IDBweCAwLjVyZW07IHdoaXRlLXNwYWNl +OiBwcmUtd3JhcDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHNwYW4gbWQtaW5saW5lPSJwbGFpbiIg +Y2xhc3M9Im1kLXBsYWluIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPuS7u+WKoTLv +vJo8L3NwYW4+RzXlrZjotKfmtYvor5Xpl67popjkv67lpI08L3A+PC9saT48L3VsPjxsaSBjbGFz +cz0ibWQtbGlzdC1pdGVtIiBjaWQ9Im4xMiIgbWR0eXBlPSJsaXN0X2l0ZW0iIHN0eWxlPSJib3gt +c2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHAg +Y2lkPSJuMTMiIG1kdHlwZT0icGFyYWdyYXBoIiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLXAiIHN0 +eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5oZXJpdDsgb3JwaGFu +czogNDsgbWFyZ2luOiAwcHggMHB4IDAuNXJlbTsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyBwb3Np +dGlvbjogcmVsYXRpdmU7Ij48c3BhbiBtZC1pbmxpbmU9InN0cm9uZyIgY2xhc3M9Im1kLXBhaXIt +cyAiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+PHN0cm9uZyBzdHlsZT0iYm94LXNp +emluZzogYm9yZGVyLWJveDsiPjxzcGFuIG1kLWlubGluZT0icGxhaW4iIGNsYXNzPSJtZC1wbGFp +biIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij7luLjop4Tlt6XkvZw8L3NwYW4+PC9z +dHJvbmc+PC9zcGFuPjwvcD48L2xpPjx1bCBjbGFzcz0idWwtbGlzdCIgY2lkPSJuMTQiIG1kdHlw +ZT0ibGlzdCIgZGF0YS1tYXJrPSItIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFy +Z2luOiAwcHg7IHBhZGRpbmctbGVmdDogMzBweDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PGxpIGNs +YXNzPSJtZC1saXN0LWl0ZW0iIGNpZD0ibjE1IiBtZHR5cGU9Imxpc3RfaXRlbSIgc3R5bGU9ImJv +eC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48 +cCBjaWQ9Im4xNiIgbWR0eXBlPSJwYXJhZ3JhcGgiIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCIg +c3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhlcml0OyBvcnBo +YW5zOiA0OyBtYXJnaW46IDBweCAwcHggMC41cmVtOyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBv +c2l0aW9uOiByZWxhdGl2ZTsiPjxzcGFuIG1kLWlubGluZT0icGxhaW4iIGNsYXNzPSJtZC1wbGFp +biIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij7ml6XluLjkuovliqEx77yaMjAyNS0x +MS0xNyDkuLvmlbDmja7lkozlrZjotKfljoblj7Lpl67popjkv67lpI08L3NwYW4+PC9wPjwvbGk+ +PC91bD48L29sPjxvbCBjbGFzcz0ib2wtbGlzdCIgc3RhcnQ9IiIgY2lkPSJuNCIgbWR0eXBlPSJs +aXN0IiBzdHlsZT0iZm9udC1mYW1pbHk6IOW+rui9r+mbhem7kTsgYm94LXNpemluZzogYm9yZGVy +LWJveDsgbWFyZ2luOiAwcHg7IHBhZGRpbmctbGVmdDogMzBweDsgcG9zaXRpb246IHJlbGF0aXZl +OyI+PHVsIGNsYXNzPSJ1bC1saXN0IiBjaWQ9Im4xNCIgbWR0eXBlPSJsaXN0IiBkYXRhLW1hcms9 +Ii0iIHN0eWxlPSJmb250LWZhbWlseTog5b6u6L2v6ZuF6buROyBib3gtc2l6aW5nOiBib3JkZXIt +Ym94OyBtYXJnaW46IDBweDsgcGFkZGluZy1sZWZ0OiAzMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7 +Ij48bGkgY2xhc3M9Im1kLWxpc3QtaXRlbSIgY2lkPSJuMTUiIG1kdHlwZT0ibGlzdF9pdGVtIiBz +dHlsZT0iY29sb3I6IHJnYig1MSwgNTEsIDUxKTsgZm9udC1mYW1pbHk6ICZxdW90O09wZW4gU2Fu +cyZxdW90OywgJnF1b3Q7Q2xlYXIgU2FucyZxdW90OywgJnF1b3Q7SGVsdmV0aWNhIE5ldWUmcXVv +dDssIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTZweDsgYm94LXNp +emluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxwIGNp +ZD0ibjE2IiBtZHR5cGU9InBhcmFncmFwaCIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1wIiBzdHls +ZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IG9ycGhhbnM6 +IDQ7IG1hcmdpbjogMHB4IDBweCAwLjVyZW07IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRp +b246IHJlbGF0aXZlOyI+PHNwYW4gbWQtaW5saW5lPSJwbGFpbiIgY2xhc3M9Im1kLXBsYWluIiBz +dHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPuaXpeW4uOS6i+WKoTLvvJoyMDI1LTExLTE4 +IOS4u+aVsOaNrumcgOaxguW8gOWPkQo8L3NwYW4+PC9wPjwvbGk+PGxpIGNsYXNzPSJtZC1saXN0 +LWl0ZW0iIGNpZD0ibjE3IiBtZHR5cGU9Imxpc3RfaXRlbSIgc3R5bGU9ImNvbG9yOiByZ2IoNTEs +IDUxLCA1MSk7IGZvbnQtZmFtaWx5OiAmcXVvdDtPcGVuIFNhbnMmcXVvdDssICZxdW90O0NsZWFy +IFNhbnMmcXVvdDssICZxdW90O0hlbHZldGljYSBOZXVlJnF1b3Q7LCBIZWx2ZXRpY2EsIEFyaWFs +LCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDE2cHg7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1h +cmdpbjogMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48cCBjaWQ9Im4xOCIgbWR0eXBlPSJwYXJh +Z3JhcGgiIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRl +ci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhlcml0OyBvcnBoYW5zOiA0OyBtYXJnaW46IDBweCAwcHgg +MC41cmVtOyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxzcGFu +IG1kLWlubGluZT0icGxhaW4iIGNsYXNzPSJtZC1wbGFpbiIgc3R5bGU9ImJveC1zaXppbmc6IGJv +cmRlci1ib3g7Ij7ml6XluLjkuovliqEz77yaMjAyNS0xMS0xOSDkuLvmlbDmja7nianmlpnmuIXl +jZXlpITnkIY8L3NwYW4+PC9wPjwvbGk+PC91bD48L29sPjxvbCBjbGFzcz0ib2wtbGlzdCIgc3Rh +cnQ9IiIgY2lkPSJuNCIgbWR0eXBlPSJsaXN0IiBzdHlsZT0iZm9udC1mYW1pbHk6IOW+rui9r+mb +hem7kTsgYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBhZGRpbmctbGVmdDog +MzBweDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHVsIGNsYXNzPSJ1bC1saXN0IiBjaWQ9Im4xNCIg +bWR0eXBlPSJsaXN0IiBkYXRhLW1hcms9Ii0iIHN0eWxlPSJmb250LWZhbWlseTog5b6u6L2v6ZuF +6buROyBib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcGFkZGluZy1sZWZ0OiAz +MHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48bGkgY2xhc3M9Im1kLWxpc3QtaXRlbSIgY2lkPSJu +MTciIG1kdHlwZT0ibGlzdF9pdGVtIiBzdHlsZT0iY29sb3I6IHJnYig1MSwgNTEsIDUxKTsgZm9u +dC1mYW1pbHk6ICZxdW90O09wZW4gU2FucyZxdW90OywgJnF1b3Q7Q2xlYXIgU2FucyZxdW90Oywg +JnF1b3Q7SGVsdmV0aWNhIE5ldWUmcXVvdDssIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7 +IGZvbnQtc2l6ZTogMTZweDsgYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBv +c2l0aW9uOiByZWxhdGl2ZTsiPjxwIGNpZD0ibjE4IiBtZHR5cGU9InBhcmFncmFwaCIgY2xhc3M9 +Im1kLWVuZC1ibG9jayBtZC1wIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1o +ZWlnaHQ6IGluaGVyaXQ7IG9ycGhhbnM6IDQ7IG1hcmdpbjogMHB4IDBweCAwLjVyZW07IHdoaXRl +LXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHNwYW4gbWQtaW5saW5lPSJw +bGFpbiIgY2xhc3M9Im1kLXBsYWluIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPuaX +peW4uOS6i+WKoTTvvJoyMDI1LTEwLTIwIOeJqeaWmea4heWNlea1i+ivlWJ1Z+S/ruWkjTwvc3Bh +bj48L3A+PC9saT48bGkgY2xhc3M9Im1kLWxpc3QtaXRlbSIgY2lkPSJuMTciIG1kdHlwZT0ibGlz +dF9pdGVtIiBzdHlsZT0iY29sb3I6IHJnYig1MSwgNTEsIDUxKTsgZm9udC1mYW1pbHk6ICZxdW90 +O09wZW4gU2FucyZxdW90OywgJnF1b3Q7Q2xlYXIgU2FucyZxdW90OywgJnF1b3Q7SGVsdmV0aWNh +IE5ldWUmcXVvdDssIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTZw +eDsgYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBvc2l0aW9uOiByZWxhdGl2 +ZTsiPjxwIGNpZD0ibjE4IiBtZHR5cGU9InBhcmFncmFwaCIgY2xhc3M9Im1kLWVuZC1ibG9jayBt +ZC1wIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7 +IG9ycGhhbnM6IDQ7IG1hcmdpbjogMHB4IDBweCAwLjVyZW07IHdoaXRlLXNwYWNlOiBwcmUtd3Jh +cDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHNwYW4gbWQtaW5saW5lPSJwbGFpbiIgY2xhc3M9Im1k +LXBsYWluIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPuaXpeW4uOS6i+WKoTTvvJoy +MDI1LTEwLTIxIOS4muWKoeS6uuWRmOmFjee9ruWFs+iBlOWFs+ezu+aUuemAoO+8jOWIneWni+WM +lueJqeaWmea4heWNlWJ1Z+S/ruWkjTwvc3Bhbj48L3A+PC9saT48L3VsPjwvb2w+PGgzIGNpZD0i +bjI1IiBtZHR5cGU9ImhlYWRpbmciIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtaGVhZGluZyIgc3R5 +bGU9ImZvbnQtZmFtaWx5OiAmcXVvdDtPcGVuIFNhbnMmcXVvdDssICZxdW90O0NsZWFyIFNhbnMm +cXVvdDssICZxdW90O0hlbHZldGljYSBOZXVlJnF1b3Q7LCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5z +LXNlcmlmOyBib3gtc2l6aW5nOiBib3JkZXItYm94OyBicmVhay1hZnRlcjogYXZvaWQtcGFnZTsg +YnJlYWstaW5zaWRlOiBhdm9pZDsgb3JwaGFuczogNDsgZm9udC1zaXplOiAxLjVlbTsgbWFyZ2lu +LXRvcDogMXJlbTsgbWFyZ2luLWJvdHRvbTogMXJlbTsgcG9zaXRpb246IHJlbGF0aXZlOyBsaW5l +LWhlaWdodDogMS40MzsgY3Vyc29yOiB0ZXh0OyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IGNvbG9y +OiByZ2IoNTEsIDUxLCA1MSk7Ij48c3BhbiBtZC1pbmxpbmU9InN0cm9uZyIgY2xhc3M9Im1kLXBh +aXItcyAiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+PHN0cm9uZyBzdHlsZT0iYm94 +LXNpemluZzogYm9yZGVyLWJveDsiPjxzcGFuIG1kLWlubGluZT0icGxhaW4iIGNsYXNzPSJtZC1w +bGFpbiIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij7kuozjgIHkuIvlkajlt6XkvZzo +rqHliJI8L3NwYW4+PC9zdHJvbmc+PC9zcGFuPjwvaDM+PG9sIGNsYXNzPSJvbC1saXN0IiBzdGFy +dD0iIiBjaWQ9Im4yNiIgbWR0eXBlPSJsaXN0IiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJv +eDsgbWFyZ2luOiAwcHg7IHBhZGRpbmctbGVmdDogMzBweDsgcG9zaXRpb246IHJlbGF0aXZlOyI+ +PGxpIGNsYXNzPSJtZC1saXN0LWl0ZW0iIGNpZD0ibjI3IiBtZHR5cGU9Imxpc3RfaXRlbSIgc3R5 +bGU9ImZvbnQtZmFtaWx5OiAmcXVvdDtPcGVuIFNhbnMmcXVvdDssICZxdW90O0NsZWFyIFNhbnMm +cXVvdDssICZxdW90O0hlbHZldGljYSBOZXVlJnF1b3Q7LCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5z +LXNlcmlmOyBjb2xvcjogcmdiKDUxLCA1MSwgNTEpOyBmb250LXNpemU6IDE2cHg7IGJveC1zaXpp +bmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48cCBjaWQ9 +Im4yOCIgbWR0eXBlPSJwYXJhZ3JhcGgiIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCIgc3R5bGU9 +ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhlcml0OyBvcnBoYW5zOiA0 +OyBtYXJnaW46IDBweCAwcHggMC41cmVtOyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0aW9u +OiByZWxhdGl2ZTsiPjxzcGFuIG1kLWlubGluZT0ic3Ryb25nIiBjbGFzcz0ibWQtcGFpci1zICIg +c3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij48c3Ryb25nIHN0eWxlPSJib3gtc2l6aW5n +OiBib3JkZXItYm94OyI+PHNwYW4gbWQtaW5saW5lPSJwbGFpbiIgY2xhc3M9Im1kLXBsYWluIiBz +dHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPumHjeeCueS7u+WKoTwvc3Bhbj48L3N0cm9u +Zz48L3NwYW4+PC9wPjwvbGk+PHVsIGNsYXNzPSJ1bC1saXN0IiBjaWQ9Im4yOSIgbWR0eXBlPSJs +aXN0IiBkYXRhLW1hcms9Ii0iIHN0eWxlPSJmb250LWZhbWlseTogJnF1b3Q7T3BlbiBTYW5zJnF1 +b3Q7LCAmcXVvdDtDbGVhciBTYW5zJnF1b3Q7LCAmcXVvdDtIZWx2ZXRpY2EgTmV1ZSZxdW90Oywg +SGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjsgY29sb3I6IHJnYig1MSwgNTEsIDUxKTsgZm9u +dC1zaXplOiAxNnB4OyBib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcGFkZGlu +Zy1sZWZ0OiAzMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48bGkgY2xhc3M9Im1kLWxpc3QtaXRl +bSIgY2lkPSJuMzAiIG1kdHlwZT0ibGlzdF9pdGVtIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVy +LWJveDsgbWFyZ2luOiAwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxwIGNpZD0ibjMxIiBtZHR5 +cGU9InBhcmFncmFwaCIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1wIiBzdHlsZT0iYm94LXNpemlu +ZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IG9ycGhhbnM6IDQ7IG1hcmdpbjog +MHB4IDBweCAwLjVyZW07IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJlbGF0aXZl +OyI+PHNwYW4gbWQtaW5saW5lPSJwbGFpbiIgY2xhc3M9Im1kLXBsYWluIiBzdHlsZT0iYm94LXNp +emluZzogYm9yZGVyLWJveDsiPuiuoeWIkjHvvJrovazmtYvlj5HluIM8L3NwYW4+PC9wPjwvbGk+ +PC91bD48L29sPjxkaXYgdGFiaW5kZXg9Ii0xIiBjaWQ9Im4zOSIgbWR0eXBlPSJociIgY2xhc3M9 +Im1kLWhyIG1kLWVuZC1ibG9jayIgc3R5bGU9ImZvbnQtZmFtaWx5OiAmcXVvdDtPcGVuIFNhbnMm +cXVvdDssICZxdW90O0NsZWFyIFNhbnMmcXVvdDssICZxdW90O0hlbHZldGljYSBOZXVlJnF1b3Q7 +LCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmOyBib3gtc2l6aW5nOiBib3JkZXItYm94OyBj +b2xvcjogcmdiKDUxLCA1MSwgNTEpOyBmb250LXNpemU6IDE2cHg7Ij48aHIgc3R5bGU9ImJveC1z +aXppbmc6IGNvbnRlbnQtYm94OyBoZWlnaHQ6IDJweDsgbWFyZ2luOiAxNnB4IDBweDsgYm9yZGVy +OiAwcHggbm9uZTsgcGFkZGluZzogMHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjMxLCAyMzEs +IDIzMSk7Ij48L2Rpdj48cCBjaWQ9Im40MCIgbWR0eXBlPSJwYXJhZ3JhcGgiIGNsYXNzPSJtZC1l +bmQtYmxvY2sgbWQtcCIgc3R5bGU9ImZvbnQtZmFtaWx5OiAmcXVvdDtPcGVuIFNhbnMmcXVvdDss +ICZxdW90O0NsZWFyIFNhbnMmcXVvdDssICZxdW90O0hlbHZldGljYSBOZXVlJnF1b3Q7LCBIZWx2 +ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmOyBib3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhl +aWdodDogaW5oZXJpdDsgb3JwaGFuczogNDsgbWFyZ2luOiAwLjhlbSAwcHg7IHdoaXRlLXNwYWNl +OiBwcmUtd3JhcDsgcG9zaXRpb246IHJlbGF0aXZlOyBjb2xvcjogcmdiKDUxLCA1MSwgNTEpOyBm +b250LXNpemU6IDE2cHg7Ij48c3BhbiBtZC1pbmxpbmU9InN0cm9uZyIgY2xhc3M9Im1kLXBhaXIt +cyAiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+PHN0cm9uZyBzdHlsZT0iYm94LXNp +emluZzogYm9yZGVyLWJveDsiPjxzcGFuIG1kLWlubGluZT0icGxhaW4iIGNsYXNzPSJtZC1wbGFp +biIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij7lpIfms6g8L3NwYW4+PC9zdHJvbmc+ +PC9zcGFuPjxzcGFuIG1kLWlubGluZT0icGxhaW4iIGNsYXNzPSJtZC1wbGFpbiBtZC1leHBhbmQi +IHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+77ya5pegPC9zcGFuPjwvcD48L2Rpdj48 +ZGl2IHN0eWxlPSJmb250LWZhbWlseTog5b6u6L2v6ZuF6buROyI+PGJyPjwvZGl2PjwvZGl2Pjwh +LS3wn5iALS0+PC9kaXY+PC9kaXY+PC9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdj48YnI+PC9kaXY+ +PGRpdiBpZD0iaW1haWxfc2lnbmF0dXJlIiBjbGFzcz0ibnRlcy1zaWduYXR1cmUiIHN0eWxlPSJt +YXJnaW46MjBweCAwOyIgZGF0YS1udGVzLXNpZ25hdHVyZT0idHJ1ZSIgc3BlbGxjaGVjaz0iZmFs +c2UiPjxkaXYgc3R5bGU9ImZvbnQtZmFtaWx5OiZxdW90O+W+rui9r+mbhem7kSZxdW90OzsgZm9u +dC1zaXplOiAxNHB4OyBjb2xvcjojMDAwMDAwIj4KICAgIDxzdHlsZT4KICAgICAgICBmb250ewog +ICAgICAgICAgICBsaW5lLWhlaWdodDogMS42OwogICAgICAgIH0KICAgIDwvc3R5bGU+CjxkaXYg +c3R5bGU9ImZvbnQtZmFtaWx5OiZxdW90O+W+rui9r+mbhem7kSZxdW90OzsgZm9udC1zaXplOiAx +NHB4OyBjb2xvcjojMDAwMDAwIj4KICAgIDxzdHlsZT4KICAgICAgICBmb250ewogICAgICAgICAg +ICBsaW5lLWhlaWdodDogMS42OwogICAgICAgIH0KICAgIDwvc3R5bGU+CjxkaXYgc3R5bGU9ImZv +bnQtZmFtaWx5OiZxdW90O+W+rui9r+mbhem7kSZxdW90OzsgZm9udC1zaXplOiAxNHB4OyBjb2xv +cjojMDAwMDAwIj4KICAgIDxzdHlsZT4KICAgICAgICBmb250ewogICAgICAgICAgICBsaW5lLWhl +aWdodDogMS42OwogICAgICAgIH0KICAgIDwvc3R5bGU+CjxkaXYgc3R5bGU9ImZvbnQtZmFtaWx5 +OiZxdW90O+W+rui9r+mbhem7kSZxdW90OzsgZm9udC1zaXplOiAxNHB4OyBjb2xvcjojMDAwMDAw +Ij4KICAgIDxzdHlsZT4KICAgICAgICBmb250ewogICAgICAgICAgICBsaW5lLWhlaWdodDogMS42 +OwogICAgICAgIH0KICAgIDwvc3R5bGU+CjxkaXYgc3R5bGU9ImZvbnQtZmFtaWx5OiZxdW90O+W+ +rui9r+mbhem7kSZxdW90OzsgZm9udC1zaXplOiAxNHB4OyBjb2xvcjojMDAwMDAwIj4KICAgIDxz +dHlsZT4KICAgICAgICBmb250ewogICAgICAgICAgICBsaW5lLWhlaWdodDogMS42OwogICAgICAg +IH0KICAgIDwvc3R5bGU+CjxzcGFuIHN0eWxlPSJjb2xvcjogcmdiKDE5MSwgMTkxLCAxOTEpOyBm +b250LWZhbWlseTogJ01pY3Jvc29mdCBZYWhlaSc7IGZvbnQtc2l6ZTogMTNweDsgb3JwaGFuczog +Mjsgd2lkb3dzOiAyOyI+QmVzdCByZWdhcmRzLDwvc3Bhbj48ZGl2IHN0eWxlPSJtYXJnaW46IDBw +eDsgcGFkZGluZzogMHB4OyBib3JkZXI6IDBweDsgb3V0bGluZTogMHB4OyBmb250LWZhbWlseTog +VGFob21hLCBBcmlhbCwgU1RIZWl0aSwgU2ltU3VuOyBmb250LXZhcmlhbnQtbGlnYXR1cmVzOiBu +b3JtYWw7IG9ycGhhbnM6IDI7IHdpZG93czogMjsgY2xlYXI6IGJvdGg7Ij48c3BhbiBzdHlsZT0i +bWFyZ2luOiAwcHg7IHBhZGRpbmc6IDBweDsgYm9yZGVyOiAwcHg7IG91dGxpbmU6IDBweDsgZm9u +dC1mYW1pbHk6ICZxdW90O01pY3Jvc29mdCBZYWhlaSZxdW90OzsgZm9udC1zaXplOiAxM3B4OyBj +b2xvcjogcmdiKDE5MSwgMTkxLCAxOTEpOyI+5p2o6L2pPC9zcGFuPjwvZGl2PjxkaXYgc3R5bGU9 +Im1hcmdpbjogMHB4OyBwYWRkaW5nOiAwcHg7IGJvcmRlcjogMHB4OyBvdXRsaW5lOiAwcHg7IGZv +bnQtZmFtaWx5OiBUYWhvbWEsIEFyaWFsLCBTVEhlaXRpLCBTaW1TdW47IGZvbnQtdmFyaWFudC1s +aWdhdHVyZXM6IG5vcm1hbDsgb3JwaGFuczogMjsgd2lkb3dzOiAyOyBjbGVhcjogYm90aDsiPjwv +ZGl2PjxkaXYgc3R5bGU9Im1hcmdpbjogMHB4OyBwYWRkaW5nOiAwcHg7IGJvcmRlcjogMHB4OyBv +dXRsaW5lOiAwcHg7IGZvbnQtZmFtaWx5OiBUYWhvbWEsIEFyaWFsLCBTVEhlaXRpLCBTaW1TdW47 +IGZvbnQtdmFyaWFudC1saWdhdHVyZXM6IG5vcm1hbDsgb3JwaGFuczogMjsgd2lkb3dzOiAyOyBj +bGVhcjogYm90aDsiPjxpbWcgc3JjPSJodHRwczovL21haWwtb25saW5lLm5vc2RuLjEyNy5uZXQv +d3pwbW1jL2NlOWY4YjM2ZTFmZmJlNTUzMjljMTk2Yzg0ZmU1MTk3LnBuZyIgc3R5bGU9Im1heC13 +aWR0aDogdW5zZXQ7Ij48L2Rpdj48ZGl2IHN0eWxlPSJtYXJnaW46IDBweDsgcGFkZGluZzogMHB4 +OyBib3JkZXI6IDBweDsgb3V0bGluZTogMHB4OyBmb250LWZhbWlseTogVGFob21hLCBBcmlhbCwg +U1RIZWl0aSwgU2ltU3VuOyBmb250LXZhcmlhbnQtbGlnYXR1cmVzOiBub3JtYWw7IG9ycGhhbnM6 +IDI7IHdpZG93czogMjsgY2xlYXI6IGJvdGg7Ij48c3BhbiBzdHlsZT0ibWFyZ2luOiAwcHg7IHBh +ZGRpbmc6IDBweDsgYm9yZGVyOiAwcHg7IG91dGxpbmU6IDBweDsgZm9udC1mYW1pbHk6ICZxdW90 +O01pY3Jvc29mdCBZYWhlaSZxdW90OzsgY29sb3I6IHJnYigxOTEsIDE5MSwgMTkxKTsiPuWcsOWd +gO+8muS4reWbvcK35Y2X5Lqs5LqR5a+G5Z+OTOagizUvMTDmpbw8L3NwYW4+PC9kaXY+PGRpdiBz +dHlsZT0ibWFyZ2luOiAwcHg7IHBhZGRpbmc6IDBweDsgYm9yZGVyOiAwcHg7IG91dGxpbmU6IDBw +eDsgZm9udC1mYW1pbHk6IFRhaG9tYSwgQXJpYWwsIFNUSGVpdGksIFNpbVN1bjsgZm9udC12YXJp +YW50LWxpZ2F0dXJlczogbm9ybWFsOyBvcnBoYW5zOiAyOyB3aWRvd3M6IDI7IGNsZWFyOiBib3Ro +OyI+PHNwYW4gc3R5bGU9Im1hcmdpbjogMHB4OyBwYWRkaW5nOiAwcHg7IGJvcmRlcjogMHB4OyBv +dXRsaW5lOiAwcHg7IGZvbnQtZmFtaWx5OiAmcXVvdDtNaWNyb3NvZnQgWWFoZWkmcXVvdDs7IGNv +bG9yOiByZ2IoMTkxLCAxOTEsIDE5MSk7Ij7miYvmnLrvvJoxODcyNjEyODQ4OTwvc3Bhbj48L2Rp +dj48ZGl2IHN0eWxlPSJtYXJnaW46IDBweDsgcGFkZGluZzogMHB4OyBib3JkZXI6IDBweDsgb3V0 +bGluZTogMHB4OyBmb250LWZhbWlseTogVGFob21hLCBBcmlhbCwgU1RIZWl0aSwgU2ltU3VuOyBm +b250LXZhcmlhbnQtbGlnYXR1cmVzOiBub3JtYWw7IG9ycGhhbnM6IDI7IHdpZG93czogMjsgY2xl +YXI6IGJvdGg7Ij48c3BhbiBzdHlsZT0ibWFyZ2luOiAwcHg7IHBhZGRpbmc6IDBweDsgYm9yZGVy +OiAwcHg7IG91dGxpbmU6IDBweDsgZm9udC1mYW1pbHk6ICZxdW90O01pY3Jvc29mdCBZYWhlaSZx +dW90OzsgY29sb3I6IHJnYigxOTEsIDE5MSwgMTkxKTsiPumCrueuse+8mnlhbmd4dWFuQHdpdHNv +ZnQuY248L3NwYW4+PC9kaXY+CjwvZGl2Pgo8L2Rpdj4KPC9kaXY+CjwvZGl2Pgo8L2Rpdj48L2Rp +dj48L2Rpdj48L2JvZHk+PC9odG1sPg== + +--=_mailmaster-6a18e4a4_0_bb3_=-- diff --git a/media/inbound/2025-11-28_1702_G5开发周报_2025-11-24_--_2025-11-28---8bc66321-ec0d-44b7-b15c-220fa6bd3d03.eml b/media/inbound/2025-11-28_1702_G5开发周报_2025-11-24_--_2025-11-28---8bc66321-ec0d-44b7-b15c-220fa6bd3d03.eml new file mode 100644 index 0000000..ca6deb0 --- /dev/null +++ b/media/inbound/2025-11-28_1702_G5开发周报_2025-11-24_--_2025-11-28---8bc66321-ec0d-44b7-b15c-220fa6bd3d03.eml @@ -0,0 +1,299 @@ +Date: Fri, 28 Nov 2025 17:02:53 +0800 +From: =?utf-8?B?5p2o6L2p?= +To: =?utf-8?B?5YiY5by6?= +Cc: =?utf-8?B?5bGI5paw6b6Z?= , =?utf-8?B?5pyx5paM?= + , =?utf-8?B?6ZmI5piO?= , + =?utf-8?B?5aSP6ZO25pWP?= , =?utf-8?B?5pu+6I6J?= + +Message-ID: +Subject: =?utf-8?B?RzXlvIDlj5HlkajmiqXjgJAyMDI1LTExLTI0IC0tICAyMDI1LTEx?= + =?utf-8?B?LTI444CR?= +MIME-Version: 1.0 +Content-Type: multipart/alternative; boundary="=_mailmaster-6a18e4a4_0_2ea6_=" + +--=_mailmaster-6a18e4a4_0_2ea6_= +Content-Type: text/plain; charset="utf-8" +Content-Transfer-Encoding: base64 + +5oKo5aW977yB5Lul5LiL5piv5oiR5pys5ZGo55qE5bel5L2c5oC757uT5Y+K5LiL5ZGo6K6h5YiS +77yM6K+35a6h6ZiF44CCCuS4gOOAgeacrOWRqOW3peS9nOaAu+e7kwrph43ngrnlt6XkvZzlrozm +iJDmg4XlhrUK5Lu75YqhMe+8mkc15Li75pWw5o2uNS4zLjDmtYvor5XlrozmiJDniYjmnKzlj5Hn +iYgK5Lu75YqhMu+8mkc15a2Y6LSn5rWL6K+V5a6M5oiQCuW4uOinhOW3peS9nArml6XluLjkuovl +iqEx77yaMjAyNS0xMS0yNCDliJ3lp4vljJbnianmlpnmuIXljZXkuI7kuJrliqHkurrlkZjphY3n +va7mtYvor5Xpl67popjkv67lpI0K5pel5bi45LqL5YqhMu+8mjIwMjUtMTEtMjUg5Yid5aeL5YyW +54mp5paZ5riF5Y2V5LiO5Lia5Yqh5Lq65ZGY6YWN572u5rWL6K+V6Zeu6aKY5L+u5aSNIArml6Xl +uLjkuovliqEz77yaMjAyNS0xMS0yNiDkuLvmlbDmja7pnIDmsYLmtYvor5Xpl67popjkv67lpI0g +5pmT6K+a55S15Zmo546w5Zy65omT5Y2w5py66Zeu6aKY5pSv5oyBCuaXpeW4uOS6i+WKoTTvvJoy +MDI1LTEwLTI3IOS4u+aVsOaNrue8uumZt+WkhOeQhiBHNeWtmOi0p+a1i+ivleWujOaIkArml6Xl +uLjkuovliqE077yaMjAyNS0xMC0yOCDniYjmnKzlj5HluIPmlK/mjIHlkozpnIDmsYLor4TlrqEK +5LqM44CB5LiL5ZGo5bel5L2c6K6h5YiSCumHjeeCueS7u+WKoQrorqHliJIx77yaRzXkuLvmlbDm +ja41LjMuMeeJiOacrOW8gOWPkQrlpIfms6jvvJrml6AKQmVzdCByZWdhcmRzLOadqOi9qQrlnLDl +nYDvvJrkuK3lm73Ct+WNl+S6rOS6keWvhuWfjkzmoIs1LzEw5qW8CuaJi+acuu+8mjE4NzI2MTI4 +NDg5CumCrueuse+8mnlhbmd4dWFuQHdpdHNvZnQuY24= + +--=_mailmaster-6a18e4a4_0_2ea6_= +Content-Type: text/html; charset="utf-8" +Content-Transfer-Encoding: base64 + +PGh0bWw+PGhlYWQ+PG1ldGEgaHR0cC1lcXVpdj0nQ29udGVudC1UeXBlJyBjb250ZW50PSd0ZXh0 +L2h0bWw7IGNoYXJzZXQ9VVRGLTgnPjwvaGVhZD48Ym9keSBzdHlsZT1saW5lLWhlaWdodDogMS41 +O2ZvbnQtZmFtaWx5OiAi5b6u6L2v6ZuF6buRIj48ZGl2ICBzdHlsZT0iZm9udC1mYW1pbHk6IOW+ +rui9r+mbhem7kTsiPjxkaXYgc3R5bGU9ImZvbnQtZmFtaWx5OiDlvq7ova/pm4Xpu5E7Ij48ZGl2 +IHN0eWxlPSJsaW5lLWhlaWdodDoiIDEuNTtmb250LWZhbWlseTo9IiIgIuW+rui9r+mbhem7kSI9 +IiI+PGRpdiBzdHlsZT0iZm9udC1mYW1pbHk6IOW+rui9r+mbhem7kTsiPjxkaXYgc3R5bGU9ImZv +bnQtZmFtaWx5OiDlvq7ova/pm4Xpu5E7Ij48ZGl2IHN0eWxlPSIiPjxkaXYgc3R5bGU9IiI+PHAg +Y2lkPSJuMCIgbWR0eXBlPSJwYXJhZ3JhcGgiIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCBtZC1m +b2N1cyIgc3R5bGU9ImZvbnQtZmFtaWx5OiAmcXVvdDtPcGVuIFNhbnMmcXVvdDssICZxdW90O0Ns +ZWFyIFNhbnMmcXVvdDssICZxdW90O0hlbHZldGljYSBOZXVlJnF1b3Q7LCBIZWx2ZXRpY2EsIEFy +aWFsLCBzYW5zLXNlcmlmOyBib3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5o +ZXJpdDsgb3JwaGFuczogNDsgbWFyZ2luOiAwLjhlbSAwcHg7IHdoaXRlLXNwYWNlOiBwcmUtd3Jh +cDsgcG9zaXRpb246IHJlbGF0aXZlOyBjb2xvcjogcmdiKDUxLCA1MSwgNTEpOyBmb250LXNpemU6 +IDE2cHg7Ij48c3BhbiBtZC1pbmxpbmU9InBsYWluIiBjbGFzcz0ibWQtcGxhaW4gbWQtZXhwYW5k +IiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPuaCqOWlve+8geS7peS4i+aYr+aIkeac +rOWRqOeahOW3peS9nOaAu+e7k+WPiuS4i+WRqOiuoeWIku+8jOivt+WuoemYheOAgjwvc3Bhbj48 +L3A+PGRpdiB0YWJpbmRleD0iLTEiIGNpZD0ibjIiIG1kdHlwZT0iaHIiIGNsYXNzPSJtZC1ociBt +ZC1lbmQtYmxvY2siIHN0eWxlPSJmb250LWZhbWlseTogJnF1b3Q7T3BlbiBTYW5zJnF1b3Q7LCAm +cXVvdDtDbGVhciBTYW5zJnF1b3Q7LCAmcXVvdDtIZWx2ZXRpY2EgTmV1ZSZxdW90OywgSGVsdmV0 +aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjsgYm94LXNpemluZzogYm9yZGVyLWJveDsgY29sb3I6IHJn +Yig1MSwgNTEsIDUxKTsgZm9udC1zaXplOiAxNnB4OyI+PGhyIHN0eWxlPSJib3gtc2l6aW5nOiBj +b250ZW50LWJveDsgaGVpZ2h0OiAycHg7IG1hcmdpbjogMTZweCAwcHg7IGJvcmRlcjogMHB4IG5v +bmU7IHBhZGRpbmc6IDBweDsgYmFja2dyb3VuZC1jb2xvcjogcmdiKDIzMSwgMjMxLCAyMzEpOyI+ +PC9kaXY+PGgzIGNpZD0ibjMiIG1kdHlwZT0iaGVhZGluZyIgY2xhc3M9Im1kLWVuZC1ibG9jayBt +ZC1oZWFkaW5nIiBzdHlsZT0iZm9udC1mYW1pbHk6ICZxdW90O09wZW4gU2FucyZxdW90OywgJnF1 +b3Q7Q2xlYXIgU2FucyZxdW90OywgJnF1b3Q7SGVsdmV0aWNhIE5ldWUmcXVvdDssIEhlbHZldGlj +YSwgQXJpYWwsIHNhbnMtc2VyaWY7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7IGJyZWFrLWFmdGVy +OiBhdm9pZC1wYWdlOyBicmVhay1pbnNpZGU6IGF2b2lkOyBvcnBoYW5zOiA0OyBmb250LXNpemU6 +IDEuNWVtOyBtYXJnaW4tdG9wOiAxcmVtOyBtYXJnaW4tYm90dG9tOiAxcmVtOyBwb3NpdGlvbjog +cmVsYXRpdmU7IGxpbmUtaGVpZ2h0OiAxLjQzOyBjdXJzb3I6IHRleHQ7IHdoaXRlLXNwYWNlOiBw +cmUtd3JhcDsgY29sb3I6IHJnYig1MSwgNTEsIDUxKTsiPjxzcGFuIG1kLWlubGluZT0ic3Ryb25n +IiBjbGFzcz0ibWQtcGFpci1zICIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij48c3Ry +b25nIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+PHNwYW4gbWQtaW5saW5lPSJwbGFp +biIgY2xhc3M9Im1kLXBsYWluIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPuS4gOOA +geacrOWRqOW3peS9nOaAu+e7kzwvc3Bhbj48L3N0cm9uZz48L3NwYW4+PC9oMz48b2wgY2xhc3M9 +Im9sLWxpc3QiIHN0YXJ0PSIiIGNpZD0ibjQiIG1kdHlwZT0ibGlzdCIgc3R5bGU9ImZvbnQtZmFt +aWx5OiAmcXVvdDtPcGVuIFNhbnMmcXVvdDssICZxdW90O0NsZWFyIFNhbnMmcXVvdDssICZxdW90 +O0hlbHZldGljYSBOZXVlJnF1b3Q7LCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmOyBib3gt +c2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcGFkZGluZy1sZWZ0OiAzMHB4OyBwb3Np +dGlvbjogcmVsYXRpdmU7IGNvbG9yOiByZ2IoNTEsIDUxLCA1MSk7IGZvbnQtc2l6ZTogMTZweDsi +PjxsaSBjbGFzcz0ibWQtbGlzdC1pdGVtIiBjaWQ9Im41IiBtZHR5cGU9Imxpc3RfaXRlbSIgc3R5 +bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBwb3NpdGlvbjogcmVsYXRp +dmU7Ij48cCBjaWQ9Im42IiBtZHR5cGU9InBhcmFncmFwaCIgY2xhc3M9Im1kLWVuZC1ibG9jayBt +ZC1wIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7 +IG9ycGhhbnM6IDQ7IG1hcmdpbjogMHB4IDBweCAwLjVyZW07IHdoaXRlLXNwYWNlOiBwcmUtd3Jh +cDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHNwYW4gbWQtaW5saW5lPSJzdHJvbmciIGNsYXNzPSJt +ZC1wYWlyLXMgIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPjxzdHJvbmcgc3R5bGU9 +ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij48c3BhbiBtZC1pbmxpbmU9InBsYWluIiBjbGFzcz0i +bWQtcGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+6YeN54K55bel5L2c5a6M +5oiQ5oOF5Ya1PC9zcGFuPjwvc3Ryb25nPjwvc3Bhbj48L3A+PC9saT48dWwgY2xhc3M9InVsLWxp +c3QiIGNpZD0ibjciIG1kdHlwZT0ibGlzdCIgZGF0YS1tYXJrPSItIiBzdHlsZT0iYm94LXNpemlu +ZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBhZGRpbmctbGVmdDogMzBweDsgcG9zaXRpb246 +IHJlbGF0aXZlOyI+PGxpIGNsYXNzPSJtZC1saXN0LWl0ZW0iIGNpZD0ibjgiIG1kdHlwZT0ibGlz +dF9pdGVtIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBvc2l0 +aW9uOiByZWxhdGl2ZTsiPjxwIGNpZD0ibjkiIG1kdHlwZT0icGFyYWdyYXBoIiBjbGFzcz0ibWQt +ZW5kLWJsb2NrIG1kLXAiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdo +dDogaW5oZXJpdDsgb3JwaGFuczogNDsgbWFyZ2luOiAwcHggMHB4IDAuNXJlbTsgd2hpdGUtc3Bh +Y2U6IHByZS13cmFwOyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48c3BhbiBtZC1pbmxpbmU9InBsYWlu +IiBjbGFzcz0ibWQtcGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+5Lu75Yqh +Me+8mkc15Li75pWw5o2uNS4zLjA8L3NwYW4+5rWL6K+V5a6M5oiQ54mI5pys5Y+R54mIPC9wPjwv +bGk+PGxpIGNsYXNzPSJtZC1saXN0LWl0ZW0iIGNpZD0ibjEwIiBtZHR5cGU9Imxpc3RfaXRlbSIg +c3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBwb3NpdGlvbjogcmVs +YXRpdmU7Ij48cCBjaWQ9Im4xMSIgbWR0eXBlPSJwYXJhZ3JhcGgiIGNsYXNzPSJtZC1lbmQtYmxv +Y2sgbWQtcCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhl +cml0OyBvcnBoYW5zOiA0OyBtYXJnaW46IDBweCAwcHggMC41cmVtOyB3aGl0ZS1zcGFjZTogcHJl +LXdyYXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxzcGFuIG1kLWlubGluZT0icGxhaW4iIGNsYXNz +PSJtZC1wbGFpbiIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij7ku7vliqEy77yaPC9z +cGFuPkc15a2Y6LSn5rWL6K+V5a6M5oiQPC9wPjwvbGk+PC91bD48bGkgY2xhc3M9Im1kLWxpc3Qt +aXRlbSIgY2lkPSJuMTIiIG1kdHlwZT0ibGlzdF9pdGVtIiBzdHlsZT0iYm94LXNpemluZzogYm9y +ZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxwIGNpZD0ibjEzIiBt +ZHR5cGU9InBhcmFncmFwaCIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1wIiBzdHlsZT0iYm94LXNp +emluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IG9ycGhhbnM6IDQ7IG1hcmdp +bjogMHB4IDBweCAwLjVyZW07IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJlbGF0 +aXZlOyI+PHNwYW4gbWQtaW5saW5lPSJzdHJvbmciIGNsYXNzPSJtZC1wYWlyLXMgIiBzdHlsZT0i +Ym94LXNpemluZzogYm9yZGVyLWJveDsiPjxzdHJvbmcgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRl +ci1ib3g7Ij48c3BhbiBtZC1pbmxpbmU9InBsYWluIiBjbGFzcz0ibWQtcGxhaW4iIHN0eWxlPSJi +b3gtc2l6aW5nOiBib3JkZXItYm94OyI+5bi46KeE5bel5L2cPC9zcGFuPjwvc3Ryb25nPjwvc3Bh +bj48L3A+PC9saT48dWwgY2xhc3M9InVsLWxpc3QiIGNpZD0ibjE0IiBtZHR5cGU9Imxpc3QiIGRh +dGEtbWFyaz0iLSIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBw +YWRkaW5nLWxlZnQ6IDMwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxsaSBjbGFzcz0ibWQtbGlz +dC1pdGVtIiBjaWQ9Im4xNSIgbWR0eXBlPSJsaXN0X2l0ZW0iIHN0eWxlPSJib3gtc2l6aW5nOiBi +b3JkZXItYm94OyBtYXJnaW46IDBweDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHAgY2lkPSJuMTYi +IG1kdHlwZT0icGFyYWdyYXBoIiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLXAiIHN0eWxlPSJib3gt +c2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5oZXJpdDsgb3JwaGFuczogNDsgbWFy +Z2luOiAwcHggMHB4IDAuNXJlbTsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyBwb3NpdGlvbjogcmVs +YXRpdmU7Ij48c3BhbiBtZC1pbmxpbmU9InBsYWluIiBjbGFzcz0ibWQtcGxhaW4iIHN0eWxlPSJi +b3gtc2l6aW5nOiBib3JkZXItYm94OyI+5pel5bi45LqL5YqhMe+8mjIwMjUtMTEtMjQg5Yid5aeL +5YyW54mp5paZ5riF5Y2V5LiO5Lia5Yqh5Lq65ZGY6YWN572u5rWL6K+V6Zeu6aKY5L+u5aSNPC9z +cGFuPjwvcD48L2xpPjwvdWw+PC9vbD48b2wgY2xhc3M9Im9sLWxpc3QiIHN0YXJ0PSIiIGNpZD0i +bjQiIG1kdHlwZT0ibGlzdCIgc3R5bGU9ImZvbnQtZmFtaWx5OiDlvq7ova/pm4Xpu5E7IGJveC1z +aXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBwYWRkaW5nLWxlZnQ6IDMwcHg7IHBvc2l0 +aW9uOiByZWxhdGl2ZTsiPjx1bCBjbGFzcz0idWwtbGlzdCIgY2lkPSJuMTQiIG1kdHlwZT0ibGlz +dCIgZGF0YS1tYXJrPSItIiBzdHlsZT0iZm9udC1mYW1pbHk6IOW+rui9r+mbhem7kTsgYm94LXNp +emluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBhZGRpbmctbGVmdDogMzBweDsgcG9zaXRp +b246IHJlbGF0aXZlOyI+PGxpIGNsYXNzPSJtZC1saXN0LWl0ZW0iIGNpZD0ibjE1IiBtZHR5cGU9 +Imxpc3RfaXRlbSIgc3R5bGU9ImNvbG9yOiByZ2IoNTEsIDUxLCA1MSk7IGZvbnQtZmFtaWx5OiAm +cXVvdDtPcGVuIFNhbnMmcXVvdDssICZxdW90O0NsZWFyIFNhbnMmcXVvdDssICZxdW90O0hlbHZl +dGljYSBOZXVlJnF1b3Q7LCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmOyBmb250LXNpemU6 +IDE2cHg7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBwb3NpdGlvbjogcmVs +YXRpdmU7Ij48cCBjaWQ9Im4xNiIgbWR0eXBlPSJwYXJhZ3JhcGgiIGNsYXNzPSJtZC1lbmQtYmxv +Y2sgbWQtcCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhl +cml0OyBvcnBoYW5zOiA0OyBtYXJnaW46IDBweCAwcHggMC41cmVtOyB3aGl0ZS1zcGFjZTogcHJl +LXdyYXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxzcGFuIG1kLWlubGluZT0icGxhaW4iIGNsYXNz +PSJtZC1wbGFpbiIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij7ml6XluLjkuovliqEy +77yaMjAyNS0xMS0yNSDliJ3lp4vljJbnianmlpnmuIXljZXkuI7kuJrliqHkurrlkZjphY3nva7m +tYvor5Xpl67popjkv67lpI0KPC9zcGFuPjwvcD48L2xpPjxsaSBjbGFzcz0ibWQtbGlzdC1pdGVt +IiBjaWQ9Im4xNyIgbWR0eXBlPSJsaXN0X2l0ZW0iIHN0eWxlPSJjb2xvcjogcmdiKDUxLCA1MSwg +NTEpOyBmb250LWZhbWlseTogJnF1b3Q7T3BlbiBTYW5zJnF1b3Q7LCAmcXVvdDtDbGVhciBTYW5z +JnF1b3Q7LCAmcXVvdDtIZWx2ZXRpY2EgTmV1ZSZxdW90OywgSGVsdmV0aWNhLCBBcmlhbCwgc2Fu +cy1zZXJpZjsgZm9udC1zaXplOiAxNnB4OyBib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46 +IDBweDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHAgY2lkPSJuMTgiIG1kdHlwZT0icGFyYWdyYXBo +IiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLXAiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94 +OyBsaW5lLWhlaWdodDogaW5oZXJpdDsgb3JwaGFuczogNDsgbWFyZ2luOiAwcHggMHB4IDAuNXJl +bTsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48c3BhbiBtZC1p +bmxpbmU9InBsYWluIiBjbGFzcz0ibWQtcGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXIt +Ym94OyI+5pel5bi45LqL5YqhM++8mjIwMjUtMTEtMjYg5Li75pWw5o2u6ZyA5rGC5rWL6K+V6Zeu +6aKY5L+u5aSNDSA8L3NwYW4+5pmT6K+a55S15Zmo546w5Zy65omT5Y2w5py66Zeu6aKY5pSv5oyB +PC9wPjwvbGk+PC91bD48L29sPjxvbCBjbGFzcz0ib2wtbGlzdCIgc3RhcnQ9IiIgY2lkPSJuNCIg +bWR0eXBlPSJsaXN0IiBzdHlsZT0iZm9udC1mYW1pbHk6IOW+rui9r+mbhem7kTsgYm94LXNpemlu +ZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBhZGRpbmctbGVmdDogMzBweDsgcG9zaXRpb246 +IHJlbGF0aXZlOyI+PHVsIGNsYXNzPSJ1bC1saXN0IiBjaWQ9Im4xNCIgbWR0eXBlPSJsaXN0IiBk +YXRhLW1hcms9Ii0iIHN0eWxlPSJmb250LWZhbWlseTog5b6u6L2v6ZuF6buROyBib3gtc2l6aW5n +OiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcGFkZGluZy1sZWZ0OiAzMHB4OyBwb3NpdGlvbjog +cmVsYXRpdmU7Ij48bGkgY2xhc3M9Im1kLWxpc3QtaXRlbSIgY2lkPSJuMTciIG1kdHlwZT0ibGlz +dF9pdGVtIiBzdHlsZT0iY29sb3I6IHJnYig1MSwgNTEsIDUxKTsgZm9udC1mYW1pbHk6ICZxdW90 +O09wZW4gU2FucyZxdW90OywgJnF1b3Q7Q2xlYXIgU2FucyZxdW90OywgJnF1b3Q7SGVsdmV0aWNh +IE5ldWUmcXVvdDssIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTZw +eDsgYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBvc2l0aW9uOiByZWxhdGl2 +ZTsiPjxwIGNpZD0ibjE4IiBtZHR5cGU9InBhcmFncmFwaCIgY2xhc3M9Im1kLWVuZC1ibG9jayBt +ZC1wIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7 +IG9ycGhhbnM6IDQ7IG1hcmdpbjogMHB4IDBweCAwLjVyZW07IHdoaXRlLXNwYWNlOiBwcmUtd3Jh +cDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHNwYW4gbWQtaW5saW5lPSJwbGFpbiIgY2xhc3M9Im1k +LXBsYWluIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPuaXpeW4uOS6i+WKoTTvvJoy +MDI1LTEwLTI3IOS4u+aVsOaNrue8uumZt+WkhOeQhiBHNeWtmOi0p+a1i+ivleWujOaIkDwvc3Bh +bj48L3A+PC9saT48bGkgY2xhc3M9Im1kLWxpc3QtaXRlbSIgY2lkPSJuMTciIG1kdHlwZT0ibGlz +dF9pdGVtIiBzdHlsZT0iY29sb3I6IHJnYig1MSwgNTEsIDUxKTsgZm9udC1mYW1pbHk6ICZxdW90 +O09wZW4gU2FucyZxdW90OywgJnF1b3Q7Q2xlYXIgU2FucyZxdW90OywgJnF1b3Q7SGVsdmV0aWNh +IE5ldWUmcXVvdDssIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTZw +eDsgYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBvc2l0aW9uOiByZWxhdGl2 +ZTsiPjxwIGNpZD0ibjE4IiBtZHR5cGU9InBhcmFncmFwaCIgY2xhc3M9Im1kLWVuZC1ibG9jayBt +ZC1wIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7 +IG9ycGhhbnM6IDQ7IG1hcmdpbjogMHB4IDBweCAwLjVyZW07IHdoaXRlLXNwYWNlOiBwcmUtd3Jh +cDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHNwYW4gbWQtaW5saW5lPSJwbGFpbiIgY2xhc3M9Im1k +LXBsYWluIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPuaXpeW4uOS6i+WKoTTvvJoy +MDI1LTEwLTI4IOeJiOacrOWPkeW4g+aUr+aMgeWSjOmcgOaxguivhOWuoTwvc3Bhbj48L3A+PC9s +aT48L3VsPjwvb2w+PGgzIGNpZD0ibjI1IiBtZHR5cGU9ImhlYWRpbmciIGNsYXNzPSJtZC1lbmQt +YmxvY2sgbWQtaGVhZGluZyIgc3R5bGU9ImZvbnQtZmFtaWx5OiAmcXVvdDtPcGVuIFNhbnMmcXVv +dDssICZxdW90O0NsZWFyIFNhbnMmcXVvdDssICZxdW90O0hlbHZldGljYSBOZXVlJnF1b3Q7LCBI +ZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmOyBib3gtc2l6aW5nOiBib3JkZXItYm94OyBicmVh +ay1hZnRlcjogYXZvaWQtcGFnZTsgYnJlYWstaW5zaWRlOiBhdm9pZDsgb3JwaGFuczogNDsgZm9u +dC1zaXplOiAxLjVlbTsgbWFyZ2luLXRvcDogMXJlbTsgbWFyZ2luLWJvdHRvbTogMXJlbTsgcG9z +aXRpb246IHJlbGF0aXZlOyBsaW5lLWhlaWdodDogMS40MzsgY3Vyc29yOiB0ZXh0OyB3aGl0ZS1z +cGFjZTogcHJlLXdyYXA7IGNvbG9yOiByZ2IoNTEsIDUxLCA1MSk7Ij48c3BhbiBtZC1pbmxpbmU9 +InN0cm9uZyIgY2xhc3M9Im1kLXBhaXItcyAiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94 +OyI+PHN0cm9uZyBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPjxzcGFuIG1kLWlubGlu +ZT0icGxhaW4iIGNsYXNzPSJtZC1wbGFpbiIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7 +Ij7kuozjgIHkuIvlkajlt6XkvZzorqHliJI8L3NwYW4+PC9zdHJvbmc+PC9zcGFuPjwvaDM+PG9s +IGNsYXNzPSJvbC1saXN0IiBzdGFydD0iIiBjaWQ9Im4yNiIgbWR0eXBlPSJsaXN0IiBzdHlsZT0i +Ym94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBhZGRpbmctbGVmdDogMzBweDsg +cG9zaXRpb246IHJlbGF0aXZlOyI+PGxpIGNsYXNzPSJtZC1saXN0LWl0ZW0iIGNpZD0ibjI3IiBt +ZHR5cGU9Imxpc3RfaXRlbSIgc3R5bGU9ImZvbnQtZmFtaWx5OiAmcXVvdDtPcGVuIFNhbnMmcXVv +dDssICZxdW90O0NsZWFyIFNhbnMmcXVvdDssICZxdW90O0hlbHZldGljYSBOZXVlJnF1b3Q7LCBI +ZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmOyBjb2xvcjogcmdiKDUxLCA1MSwgNTEpOyBmb250 +LXNpemU6IDE2cHg7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBwb3NpdGlv +bjogcmVsYXRpdmU7Ij48cCBjaWQ9Im4yOCIgbWR0eXBlPSJwYXJhZ3JhcGgiIGNsYXNzPSJtZC1l +bmQtYmxvY2sgbWQtcCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGxpbmUtaGVpZ2h0 +OiBpbmhlcml0OyBvcnBoYW5zOiA0OyBtYXJnaW46IDBweCAwcHggMC41cmVtOyB3aGl0ZS1zcGFj +ZTogcHJlLXdyYXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxzcGFuIG1kLWlubGluZT0ic3Ryb25n +IiBjbGFzcz0ibWQtcGFpci1zICIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij48c3Ry +b25nIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+PHNwYW4gbWQtaW5saW5lPSJwbGFp +biIgY2xhc3M9Im1kLXBsYWluIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPumHjeeC +ueS7u+WKoTwvc3Bhbj48L3N0cm9uZz48L3NwYW4+PC9wPjwvbGk+PHVsIGNsYXNzPSJ1bC1saXN0 +IiBjaWQ9Im4yOSIgbWR0eXBlPSJsaXN0IiBkYXRhLW1hcms9Ii0iIHN0eWxlPSJmb250LWZhbWls +eTogJnF1b3Q7T3BlbiBTYW5zJnF1b3Q7LCAmcXVvdDtDbGVhciBTYW5zJnF1b3Q7LCAmcXVvdDtI +ZWx2ZXRpY2EgTmV1ZSZxdW90OywgSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjsgY29sb3I6 +IHJnYig1MSwgNTEsIDUxKTsgZm9udC1zaXplOiAxNnB4OyBib3gtc2l6aW5nOiBib3JkZXItYm94 +OyBtYXJnaW46IDBweDsgcGFkZGluZy1sZWZ0OiAzMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48 +bGkgY2xhc3M9Im1kLWxpc3QtaXRlbSIgY2lkPSJuMzAiIG1kdHlwZT0ibGlzdF9pdGVtIiBzdHls +ZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBvc2l0aW9uOiByZWxhdGl2 +ZTsiPjxwIGNpZD0ibjMxIiBtZHR5cGU9InBhcmFncmFwaCIgY2xhc3M9Im1kLWVuZC1ibG9jayBt +ZC1wIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7 +IG9ycGhhbnM6IDQ7IG1hcmdpbjogMHB4IDBweCAwLjVyZW07IHdoaXRlLXNwYWNlOiBwcmUtd3Jh +cDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHNwYW4gbWQtaW5saW5lPSJwbGFpbiIgY2xhc3M9Im1k +LXBsYWluIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPuiuoeWIkjHvvJpHNeS4u+aV +sOaNrjUuMy4x54mI5pys5byA5Y+RPC9zcGFuPjwvcD48L2xpPjwvdWw+PC9vbD48ZGl2IHRhYmlu +ZGV4PSItMSIgY2lkPSJuMzkiIG1kdHlwZT0iaHIiIGNsYXNzPSJtZC1ociBtZC1lbmQtYmxvY2si +IHN0eWxlPSJmb250LWZhbWlseTogJnF1b3Q7T3BlbiBTYW5zJnF1b3Q7LCAmcXVvdDtDbGVhciBT +YW5zJnF1b3Q7LCAmcXVvdDtIZWx2ZXRpY2EgTmV1ZSZxdW90OywgSGVsdmV0aWNhLCBBcmlhbCwg +c2Fucy1zZXJpZjsgYm94LXNpemluZzogYm9yZGVyLWJveDsgY29sb3I6IHJnYig1MSwgNTEsIDUx +KTsgZm9udC1zaXplOiAxNnB4OyI+PGhyIHN0eWxlPSJib3gtc2l6aW5nOiBjb250ZW50LWJveDsg +aGVpZ2h0OiAycHg7IG1hcmdpbjogMTZweCAwcHg7IGJvcmRlcjogMHB4IG5vbmU7IHBhZGRpbmc6 +IDBweDsgYmFja2dyb3VuZC1jb2xvcjogcmdiKDIzMSwgMjMxLCAyMzEpOyI+PC9kaXY+PHAgY2lk +PSJuNDAiIG1kdHlwZT0icGFyYWdyYXBoIiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLXAiIHN0eWxl +PSJmb250LWZhbWlseTogJnF1b3Q7T3BlbiBTYW5zJnF1b3Q7LCAmcXVvdDtDbGVhciBTYW5zJnF1 +b3Q7LCAmcXVvdDtIZWx2ZXRpY2EgTmV1ZSZxdW90OywgSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1z +ZXJpZjsgYm94LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IG9ycGhh +bnM6IDQ7IG1hcmdpbjogMC44ZW0gMHB4OyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0aW9u +OiByZWxhdGl2ZTsgY29sb3I6IHJnYig1MSwgNTEsIDUxKTsgZm9udC1zaXplOiAxNnB4OyI+PHNw +YW4gbWQtaW5saW5lPSJzdHJvbmciIGNsYXNzPSJtZC1wYWlyLXMgIiBzdHlsZT0iYm94LXNpemlu +ZzogYm9yZGVyLWJveDsiPjxzdHJvbmcgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij48 +c3BhbiBtZC1pbmxpbmU9InBsYWluIiBjbGFzcz0ibWQtcGxhaW4iIHN0eWxlPSJib3gtc2l6aW5n +OiBib3JkZXItYm94OyI+5aSH5rOoPC9zcGFuPjwvc3Ryb25nPjwvc3Bhbj48c3BhbiBtZC1pbmxp +bmU9InBsYWluIiBjbGFzcz0ibWQtcGxhaW4gbWQtZXhwYW5kIiBzdHlsZT0iYm94LXNpemluZzog +Ym9yZGVyLWJveDsiPu+8muaXoDwvc3Bhbj48L3A+PC9kaXY+PGRpdiBzdHlsZT0iZm9udC1mYW1p +bHk6IOW+rui9r+mbhem7kTsiPjxicj48L2Rpdj48L2Rpdj48IS0t8J+YgC0tPjwvZGl2PjwvZGl2 +PjwvZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXYgaWQ9ImltYWlsX3NpZ25h +dHVyZSIgY2xhc3M9Im50ZXMtc2lnbmF0dXJlIiBzdHlsZT0ibWFyZ2luOjIwcHggMDsiIGRhdGEt +bnRlcy1zaWduYXR1cmU9InRydWUiIHNwZWxsY2hlY2s9ImZhbHNlIj48ZGl2IHN0eWxlPSJmb250 +LWZhbWlseTomcXVvdDvlvq7ova/pm4Xpu5EmcXVvdDs7IGZvbnQtc2l6ZTogMTRweDsgY29sb3I6 +IzAwMDAwMCI+CiAgICA8c3R5bGU+CiAgICAgICAgZm9udHsKICAgICAgICAgICAgbGluZS1oZWln +aHQ6IDEuNjsKICAgICAgICB9CiAgICA8L3N0eWxlPgo8ZGl2IHN0eWxlPSJmb250LWZhbWlseTom +cXVvdDvlvq7ova/pm4Xpu5EmcXVvdDs7IGZvbnQtc2l6ZTogMTRweDsgY29sb3I6IzAwMDAwMCI+ +CiAgICA8c3R5bGU+CiAgICAgICAgZm9udHsKICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDEuNjsK +ICAgICAgICB9CiAgICA8L3N0eWxlPgo8ZGl2IHN0eWxlPSJmb250LWZhbWlseTomcXVvdDvlvq7o +va/pm4Xpu5EmcXVvdDs7IGZvbnQtc2l6ZTogMTRweDsgY29sb3I6IzAwMDAwMCI+CiAgICA8c3R5 +bGU+CiAgICAgICAgZm9udHsKICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDEuNjsKICAgICAgICB9 +CiAgICA8L3N0eWxlPgo8ZGl2IHN0eWxlPSJmb250LWZhbWlseTomcXVvdDvlvq7ova/pm4Xpu5Em +cXVvdDs7IGZvbnQtc2l6ZTogMTRweDsgY29sb3I6IzAwMDAwMCI+CiAgICA8c3R5bGU+CiAgICAg +ICAgZm9udHsKICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDEuNjsKICAgICAgICB9CiAgICA8L3N0 +eWxlPgo8ZGl2IHN0eWxlPSJmb250LWZhbWlseTomcXVvdDvlvq7ova/pm4Xpu5EmcXVvdDs7IGZv +bnQtc2l6ZTogMTRweDsgY29sb3I6IzAwMDAwMCI+CiAgICA8c3R5bGU+CiAgICAgICAgZm9udHsK +ICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDEuNjsKICAgICAgICB9CiAgICA8L3N0eWxlPgo8c3Bh +biBzdHlsZT0iY29sb3I6IHJnYigxOTEsIDE5MSwgMTkxKTsgZm9udC1mYW1pbHk6ICdNaWNyb3Nv +ZnQgWWFoZWknOyBmb250LXNpemU6IDEzcHg7IG9ycGhhbnM6IDI7IHdpZG93czogMjsiPkJlc3Qg +cmVnYXJkcyw8L3NwYW4+PGRpdiBzdHlsZT0ibWFyZ2luOiAwcHg7IHBhZGRpbmc6IDBweDsgYm9y +ZGVyOiAwcHg7IG91dGxpbmU6IDBweDsgZm9udC1mYW1pbHk6IFRhaG9tYSwgQXJpYWwsIFNUSGVp +dGksIFNpbVN1bjsgZm9udC12YXJpYW50LWxpZ2F0dXJlczogbm9ybWFsOyBvcnBoYW5zOiAyOyB3 +aWRvd3M6IDI7IGNsZWFyOiBib3RoOyI+PHNwYW4gc3R5bGU9Im1hcmdpbjogMHB4OyBwYWRkaW5n +OiAwcHg7IGJvcmRlcjogMHB4OyBvdXRsaW5lOiAwcHg7IGZvbnQtZmFtaWx5OiAmcXVvdDtNaWNy +b3NvZnQgWWFoZWkmcXVvdDs7IGZvbnQtc2l6ZTogMTNweDsgY29sb3I6IHJnYigxOTEsIDE5MSwg +MTkxKTsiPuadqOi9qTwvc3Bhbj48L2Rpdj48ZGl2IHN0eWxlPSJtYXJnaW46IDBweDsgcGFkZGlu +ZzogMHB4OyBib3JkZXI6IDBweDsgb3V0bGluZTogMHB4OyBmb250LWZhbWlseTogVGFob21hLCBB +cmlhbCwgU1RIZWl0aSwgU2ltU3VuOyBmb250LXZhcmlhbnQtbGlnYXR1cmVzOiBub3JtYWw7IG9y +cGhhbnM6IDI7IHdpZG93czogMjsgY2xlYXI6IGJvdGg7Ij48L2Rpdj48ZGl2IHN0eWxlPSJtYXJn +aW46IDBweDsgcGFkZGluZzogMHB4OyBib3JkZXI6IDBweDsgb3V0bGluZTogMHB4OyBmb250LWZh +bWlseTogVGFob21hLCBBcmlhbCwgU1RIZWl0aSwgU2ltU3VuOyBmb250LXZhcmlhbnQtbGlnYXR1 +cmVzOiBub3JtYWw7IG9ycGhhbnM6IDI7IHdpZG93czogMjsgY2xlYXI6IGJvdGg7Ij48aW1nIHNy +Yz0iaHR0cHM6Ly9tYWlsLW9ubGluZS5ub3Nkbi4xMjcubmV0L3d6cG1tYy9jZTlmOGIzNmUxZmZi +ZTU1MzI5YzE5NmM4NGZlNTE5Ny5wbmciIHN0eWxlPSJtYXgtd2lkdGg6IHVuc2V0OyI+PC9kaXY+ +PGRpdiBzdHlsZT0ibWFyZ2luOiAwcHg7IHBhZGRpbmc6IDBweDsgYm9yZGVyOiAwcHg7IG91dGxp +bmU6IDBweDsgZm9udC1mYW1pbHk6IFRhaG9tYSwgQXJpYWwsIFNUSGVpdGksIFNpbVN1bjsgZm9u +dC12YXJpYW50LWxpZ2F0dXJlczogbm9ybWFsOyBvcnBoYW5zOiAyOyB3aWRvd3M6IDI7IGNsZWFy +OiBib3RoOyI+PHNwYW4gc3R5bGU9Im1hcmdpbjogMHB4OyBwYWRkaW5nOiAwcHg7IGJvcmRlcjog +MHB4OyBvdXRsaW5lOiAwcHg7IGZvbnQtZmFtaWx5OiAmcXVvdDtNaWNyb3NvZnQgWWFoZWkmcXVv +dDs7IGNvbG9yOiByZ2IoMTkxLCAxOTEsIDE5MSk7Ij7lnLDlnYDvvJrkuK3lm73Ct+WNl+S6rOS6 +keWvhuWfjkzmoIs1LzEw5qW8PC9zcGFuPjwvZGl2PjxkaXYgc3R5bGU9Im1hcmdpbjogMHB4OyBw +YWRkaW5nOiAwcHg7IGJvcmRlcjogMHB4OyBvdXRsaW5lOiAwcHg7IGZvbnQtZmFtaWx5OiBUYWhv +bWEsIEFyaWFsLCBTVEhlaXRpLCBTaW1TdW47IGZvbnQtdmFyaWFudC1saWdhdHVyZXM6IG5vcm1h +bDsgb3JwaGFuczogMjsgd2lkb3dzOiAyOyBjbGVhcjogYm90aDsiPjxzcGFuIHN0eWxlPSJtYXJn +aW46IDBweDsgcGFkZGluZzogMHB4OyBib3JkZXI6IDBweDsgb3V0bGluZTogMHB4OyBmb250LWZh +bWlseTogJnF1b3Q7TWljcm9zb2Z0IFlhaGVpJnF1b3Q7OyBjb2xvcjogcmdiKDE5MSwgMTkxLCAx +OTEpOyI+5omL5py677yaMTg3MjYxMjg0ODk8L3NwYW4+PC9kaXY+PGRpdiBzdHlsZT0ibWFyZ2lu +OiAwcHg7IHBhZGRpbmc6IDBweDsgYm9yZGVyOiAwcHg7IG91dGxpbmU6IDBweDsgZm9udC1mYW1p +bHk6IFRhaG9tYSwgQXJpYWwsIFNUSGVpdGksIFNpbVN1bjsgZm9udC12YXJpYW50LWxpZ2F0dXJl +czogbm9ybWFsOyBvcnBoYW5zOiAyOyB3aWRvd3M6IDI7IGNsZWFyOiBib3RoOyI+PHNwYW4gc3R5 +bGU9Im1hcmdpbjogMHB4OyBwYWRkaW5nOiAwcHg7IGJvcmRlcjogMHB4OyBvdXRsaW5lOiAwcHg7 +IGZvbnQtZmFtaWx5OiAmcXVvdDtNaWNyb3NvZnQgWWFoZWkmcXVvdDs7IGNvbG9yOiByZ2IoMTkx +LCAxOTEsIDE5MSk7Ij7pgq7nrrHvvJp5YW5neHVhbkB3aXRzb2Z0LmNuPC9zcGFuPjwvZGl2Pgo8 +L2Rpdj4KPC9kaXY+CjwvZGl2Pgo8L2Rpdj4KPC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9ib2R5 +PjwvaHRtbD4= + +--=_mailmaster-6a18e4a4_0_2ea6_=-- diff --git a/media/inbound/2025-12-05_1703_G5开发周报_2025-12-01_--_2025-12-05---f2e34d1b-a735-4363-87b8-91aed7d222c5.eml b/media/inbound/2025-12-05_1703_G5开发周报_2025-12-01_--_2025-12-05---f2e34d1b-a735-4363-87b8-91aed7d222c5.eml new file mode 100644 index 0000000..8c83297 --- /dev/null +++ b/media/inbound/2025-12-05_1703_G5开发周报_2025-12-01_--_2025-12-05---f2e34d1b-a735-4363-87b8-91aed7d222c5.eml @@ -0,0 +1,292 @@ +Date: Fri, 5 Dec 2025 17:03:29 +0800 +From: =?utf-8?B?5p2o6L2p?= +To: =?utf-8?B?5YiY5by6?= +Cc: =?utf-8?B?5bGI5paw6b6Z?= , =?utf-8?B?5pyx5paM?= + , =?utf-8?B?6ZmI5piO?= , + =?utf-8?B?5aSP6ZO25pWP?= +Message-ID: <6A6CBFA4-6AE4-4AC4-9846-25B17549A903@witsoft.cn> +Subject: =?utf-8?B?RzXlvIDlj5HlkajmiqXjgJAyMDI1LTEyLTAxIC0tICAyMDI1LTEy?= + =?utf-8?B?LTA144CR?= +MIME-Version: 1.0 +Content-Type: multipart/alternative; boundary="=_mailmaster-6a18e4a4_0_12db_=" + +--=_mailmaster-6a18e4a4_0_12db_= +Content-Type: text/plain; charset="utf-8" +Content-Transfer-Encoding: base64 + +5oKo5aW977yB5Lul5LiL5piv5oiR5pys5ZGo55qE5bel5L2c5oC757uT5Y+K5LiL5ZGo6K6h5YiS +77yM6K+35a6h6ZiF44CCCuS4gOOAgeacrOWRqOW3peS9nOaAu+e7kwrph43ngrnlt6XkvZzlrozm +iJDmg4XlhrUK5Lu75YqhMe+8mkc15Li75pWw5o2uNS4zLjHniYjmnKzlvIDlj5EK5bi46KeE5bel +5L2cCuaXpeW4uOS6i+WKoTHvvJoyMDI1LTEyLTAxIOWNleS9jeaNoueul+aJuemHj+aOpeWPowrm +l6XluLjkuovliqEy77yaMjAyNS0xMi0wMiBCT03nu7TmiqTkvJjljJbpnIDmsYLlvIDlj5Hovazm +tYsgCuaXpeW4uOS6i+WKoTPvvJoyMDI1LTEyLTAzIOW3peiJuui3r+e6v+WvvOWHuuWumuWItuS8 +mOWMlgrml6XluLjkuovliqE077yaMjAyNS0xMi0wNCDkuJrliqHkurrlkZjphY3nva7mjqXlj6Pl +vIDlj5HkuI7lt6XoibrpobXpnaLliY3lkI7nq6/ogZTosIMK5pel5bi45LqL5YqhNO+8mjIwMjUt +MTItMDUg55Sf5Lqn566h55CG5o6l5Y+j5byA5Y+R6IGU6LCDCuS6jOOAgeS4i+WRqOW3peS9nOiu +oeWIkgrph43ngrnku7vliqEK6K6h5YiSMe+8mkc15Li75pWw5o2uNS4zLjHniYjmnKzlvIDlj5Hl +rozmiJAg6L2s5rWL5LiK57q/CuWkh+azqO+8muaXoApCZXN0IHJlZ2FyZHMs5p2o6L2pCuWcsOWd +gO+8muS4reWbvcK35Y2X5Lqs5LqR5a+G5Z+OTOagizUvMTDmpbwK5omL5py677yaMTg3MjYxMjg0 +ODkK6YKu566x77yaeWFuZ3h1YW5Ad2l0c29mdC5jbg== + +--=_mailmaster-6a18e4a4_0_12db_= +Content-Type: text/html; charset="utf-8" +Content-Transfer-Encoding: base64 + +PGh0bWw+PGhlYWQ+PG1ldGEgaHR0cC1lcXVpdj0nQ29udGVudC1UeXBlJyBjb250ZW50PSd0ZXh0 +L2h0bWw7IGNoYXJzZXQ9VVRGLTgnPjwvaGVhZD48Ym9keSBzdHlsZT1saW5lLWhlaWdodDogMS41 +O2ZvbnQtZmFtaWx5OiAi5b6u6L2v6ZuF6buRIj48ZGl2ICBzdHlsZT0iZm9udC1mYW1pbHk6IOW+ +rui9r+mbhem7kTsiPjxkaXYgc3R5bGU9ImZvbnQtZmFtaWx5OiDlvq7ova/pm4Xpu5E7Ij48ZGl2 +IHN0eWxlPSJsaW5lLWhlaWdodDoiIDEuNTtmb250LWZhbWlseTo9IiIgIuW+rui9r+mbhem7kSI9 +IiI+PGRpdiBzdHlsZT0iZm9udC1mYW1pbHk6IOW+rui9r+mbhem7kTsiPjxkaXYgc3R5bGU9ImZv +bnQtZmFtaWx5OiDlvq7ova/pm4Xpu5E7Ij48ZGl2IHN0eWxlPSIiPjxkaXYgc3R5bGU9IiI+PHAg +Y2lkPSJuMCIgbWR0eXBlPSJwYXJhZ3JhcGgiIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCBtZC1m +b2N1cyIgc3R5bGU9ImZvbnQtZmFtaWx5OiAmcXVvdDtPcGVuIFNhbnMmcXVvdDssICZxdW90O0Ns +ZWFyIFNhbnMmcXVvdDssICZxdW90O0hlbHZldGljYSBOZXVlJnF1b3Q7LCBIZWx2ZXRpY2EsIEFy +aWFsLCBzYW5zLXNlcmlmOyBib3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5o +ZXJpdDsgb3JwaGFuczogNDsgbWFyZ2luOiAwLjhlbSAwcHg7IHdoaXRlLXNwYWNlOiBwcmUtd3Jh +cDsgcG9zaXRpb246IHJlbGF0aXZlOyBjb2xvcjogcmdiKDUxLCA1MSwgNTEpOyBmb250LXNpemU6 +IDE2cHg7Ij48c3BhbiBtZC1pbmxpbmU9InBsYWluIiBjbGFzcz0ibWQtcGxhaW4gbWQtZXhwYW5k +IiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPuaCqOWlve+8geS7peS4i+aYr+aIkeac +rOWRqOeahOW3peS9nOaAu+e7k+WPiuS4i+WRqOiuoeWIku+8jOivt+WuoemYheOAgjwvc3Bhbj48 +L3A+PGRpdiB0YWJpbmRleD0iLTEiIGNpZD0ibjIiIG1kdHlwZT0iaHIiIGNsYXNzPSJtZC1ociBt +ZC1lbmQtYmxvY2siIHN0eWxlPSJmb250LWZhbWlseTogJnF1b3Q7T3BlbiBTYW5zJnF1b3Q7LCAm +cXVvdDtDbGVhciBTYW5zJnF1b3Q7LCAmcXVvdDtIZWx2ZXRpY2EgTmV1ZSZxdW90OywgSGVsdmV0 +aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjsgYm94LXNpemluZzogYm9yZGVyLWJveDsgY29sb3I6IHJn +Yig1MSwgNTEsIDUxKTsgZm9udC1zaXplOiAxNnB4OyI+PGhyIHN0eWxlPSJib3gtc2l6aW5nOiBj +b250ZW50LWJveDsgaGVpZ2h0OiAycHg7IG1hcmdpbjogMTZweCAwcHg7IGJvcmRlcjogMHB4IG5v +bmU7IHBhZGRpbmc6IDBweDsgYmFja2dyb3VuZC1jb2xvcjogcmdiKDIzMSwgMjMxLCAyMzEpOyI+ +PC9kaXY+PGgzIGNpZD0ibjMiIG1kdHlwZT0iaGVhZGluZyIgY2xhc3M9Im1kLWVuZC1ibG9jayBt +ZC1oZWFkaW5nIiBzdHlsZT0iZm9udC1mYW1pbHk6ICZxdW90O09wZW4gU2FucyZxdW90OywgJnF1 +b3Q7Q2xlYXIgU2FucyZxdW90OywgJnF1b3Q7SGVsdmV0aWNhIE5ldWUmcXVvdDssIEhlbHZldGlj +YSwgQXJpYWwsIHNhbnMtc2VyaWY7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7IGJyZWFrLWFmdGVy +OiBhdm9pZC1wYWdlOyBicmVhay1pbnNpZGU6IGF2b2lkOyBvcnBoYW5zOiA0OyBmb250LXNpemU6 +IDEuNWVtOyBtYXJnaW4tdG9wOiAxcmVtOyBtYXJnaW4tYm90dG9tOiAxcmVtOyBwb3NpdGlvbjog +cmVsYXRpdmU7IGxpbmUtaGVpZ2h0OiAxLjQzOyBjdXJzb3I6IHRleHQ7IHdoaXRlLXNwYWNlOiBw +cmUtd3JhcDsgY29sb3I6IHJnYig1MSwgNTEsIDUxKTsiPjxzcGFuIG1kLWlubGluZT0ic3Ryb25n +IiBjbGFzcz0ibWQtcGFpci1zICIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij48c3Ry +b25nIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+PHNwYW4gbWQtaW5saW5lPSJwbGFp +biIgY2xhc3M9Im1kLXBsYWluIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPuS4gOOA +geacrOWRqOW3peS9nOaAu+e7kzwvc3Bhbj48L3N0cm9uZz48L3NwYW4+PC9oMz48b2wgY2xhc3M9 +Im9sLWxpc3QiIHN0YXJ0PSIiIGNpZD0ibjQiIG1kdHlwZT0ibGlzdCIgc3R5bGU9ImZvbnQtZmFt +aWx5OiAmcXVvdDtPcGVuIFNhbnMmcXVvdDssICZxdW90O0NsZWFyIFNhbnMmcXVvdDssICZxdW90 +O0hlbHZldGljYSBOZXVlJnF1b3Q7LCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmOyBib3gt +c2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcGFkZGluZy1sZWZ0OiAzMHB4OyBwb3Np +dGlvbjogcmVsYXRpdmU7IGNvbG9yOiByZ2IoNTEsIDUxLCA1MSk7IGZvbnQtc2l6ZTogMTZweDsi +PjxsaSBjbGFzcz0ibWQtbGlzdC1pdGVtIiBjaWQ9Im41IiBtZHR5cGU9Imxpc3RfaXRlbSIgc3R5 +bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBwb3NpdGlvbjogcmVsYXRp +dmU7Ij48cCBjaWQ9Im42IiBtZHR5cGU9InBhcmFncmFwaCIgY2xhc3M9Im1kLWVuZC1ibG9jayBt +ZC1wIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7 +IG9ycGhhbnM6IDQ7IG1hcmdpbjogMHB4IDBweCAwLjVyZW07IHdoaXRlLXNwYWNlOiBwcmUtd3Jh +cDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHNwYW4gbWQtaW5saW5lPSJzdHJvbmciIGNsYXNzPSJt +ZC1wYWlyLXMgIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPjxzdHJvbmcgc3R5bGU9 +ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij48c3BhbiBtZC1pbmxpbmU9InBsYWluIiBjbGFzcz0i +bWQtcGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+6YeN54K55bel5L2c5a6M +5oiQ5oOF5Ya1PC9zcGFuPjwvc3Ryb25nPjwvc3Bhbj48L3A+PC9saT48dWwgY2xhc3M9InVsLWxp +c3QiIGNpZD0ibjciIG1kdHlwZT0ibGlzdCIgZGF0YS1tYXJrPSItIiBzdHlsZT0iYm94LXNpemlu +ZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBhZGRpbmctbGVmdDogMzBweDsgcG9zaXRpb246 +IHJlbGF0aXZlOyI+PGxpIGNsYXNzPSJtZC1saXN0LWl0ZW0iIGNpZD0ibjgiIG1kdHlwZT0ibGlz +dF9pdGVtIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBvc2l0 +aW9uOiByZWxhdGl2ZTsiPjxwIGNpZD0ibjkiIG1kdHlwZT0icGFyYWdyYXBoIiBjbGFzcz0ibWQt +ZW5kLWJsb2NrIG1kLXAiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdo +dDogaW5oZXJpdDsgb3JwaGFuczogNDsgbWFyZ2luOiAwcHggMHB4IDAuNXJlbTsgd2hpdGUtc3Bh +Y2U6IHByZS13cmFwOyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48c3BhbiBtZC1pbmxpbmU9InBsYWlu +IiBjbGFzcz0ibWQtcGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+5Lu75Yqh +Me+8mkc15Li75pWw5o2uNS4zLjHniYjmnKzlvIDlj5E8L3NwYW4+PC9wPjwvbGk+PGxpIGNsYXNz +PSJtZC1saXN0LWl0ZW0iIGNpZD0ibjEwIiBtZHR5cGU9Imxpc3RfaXRlbSIgc3R5bGU9ImJveC1z +aXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48cCBj +aWQ9Im4xMSIgbWR0eXBlPSJwYXJhZ3JhcGgiIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCIgc3R5 +bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhlcml0OyBvcnBoYW5z +OiA0OyBtYXJnaW46IDBweCAwcHggMC41cmVtOyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0 +aW9uOiByZWxhdGl2ZTsiPjxicj48L3A+PC9saT48L3VsPjxsaSBjbGFzcz0ibWQtbGlzdC1pdGVt +IiBjaWQ9Im4xMiIgbWR0eXBlPSJsaXN0X2l0ZW0iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXIt +Ym94OyBtYXJnaW46IDBweDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHAgY2lkPSJuMTMiIG1kdHlw +ZT0icGFyYWdyYXBoIiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLXAiIHN0eWxlPSJib3gtc2l6aW5n +OiBib3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5oZXJpdDsgb3JwaGFuczogNDsgbWFyZ2luOiAw +cHggMHB4IDAuNXJlbTsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyBwb3NpdGlvbjogcmVsYXRpdmU7 +Ij48c3BhbiBtZC1pbmxpbmU9InN0cm9uZyIgY2xhc3M9Im1kLXBhaXItcyAiIHN0eWxlPSJib3gt +c2l6aW5nOiBib3JkZXItYm94OyI+PHN0cm9uZyBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJv +eDsiPjxzcGFuIG1kLWlubGluZT0icGxhaW4iIGNsYXNzPSJtZC1wbGFpbiIgc3R5bGU9ImJveC1z +aXppbmc6IGJvcmRlci1ib3g7Ij7luLjop4Tlt6XkvZw8L3NwYW4+PC9zdHJvbmc+PC9zcGFuPjwv +cD48L2xpPjx1bCBjbGFzcz0idWwtbGlzdCIgY2lkPSJuMTQiIG1kdHlwZT0ibGlzdCIgZGF0YS1t +YXJrPSItIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBhZGRp +bmctbGVmdDogMzBweDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PGxpIGNsYXNzPSJtZC1saXN0LWl0 +ZW0iIGNpZD0ibjE1IiBtZHR5cGU9Imxpc3RfaXRlbSIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRl +ci1ib3g7IG1hcmdpbjogMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48cCBjaWQ9Im4xNiIgbWR0 +eXBlPSJwYXJhZ3JhcGgiIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCIgc3R5bGU9ImJveC1zaXpp +bmc6IGJvcmRlci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhlcml0OyBvcnBoYW5zOiA0OyBtYXJnaW46 +IDBweCAwcHggMC41cmVtOyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0aW9uOiByZWxhdGl2 +ZTsiPjxzcGFuIG1kLWlubGluZT0icGxhaW4iIGNsYXNzPSJtZC1wbGFpbiIgc3R5bGU9ImJveC1z +aXppbmc6IGJvcmRlci1ib3g7Ij7ml6XluLjkuovliqEx77yaMjAyNS0xMi0wMSDljZXkvY3mjaLn +rpfmibnph4/mjqXlj6M8L3NwYW4+PC9wPjwvbGk+PC91bD48L29sPjxvbCBjbGFzcz0ib2wtbGlz +dCIgc3RhcnQ9IiIgY2lkPSJuNCIgbWR0eXBlPSJsaXN0IiBzdHlsZT0iZm9udC1mYW1pbHk6IOW+ +rui9r+mbhem7kTsgYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBhZGRpbmct +bGVmdDogMzBweDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHVsIGNsYXNzPSJ1bC1saXN0IiBjaWQ9 +Im4xNCIgbWR0eXBlPSJsaXN0IiBkYXRhLW1hcms9Ii0iIHN0eWxlPSJmb250LWZhbWlseTog5b6u +6L2v6ZuF6buROyBib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcGFkZGluZy1s +ZWZ0OiAzMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48bGkgY2xhc3M9Im1kLWxpc3QtaXRlbSIg +Y2lkPSJuMTUiIG1kdHlwZT0ibGlzdF9pdGVtIiBzdHlsZT0iY29sb3I6IHJnYig1MSwgNTEsIDUx +KTsgZm9udC1mYW1pbHk6ICZxdW90O09wZW4gU2FucyZxdW90OywgJnF1b3Q7Q2xlYXIgU2FucyZx +dW90OywgJnF1b3Q7SGVsdmV0aWNhIE5ldWUmcXVvdDssIEhlbHZldGljYSwgQXJpYWwsIHNhbnMt +c2VyaWY7IGZvbnQtc2l6ZTogMTZweDsgYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAw +cHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxwIGNpZD0ibjE2IiBtZHR5cGU9InBhcmFncmFwaCIg +Y2xhc3M9Im1kLWVuZC1ibG9jayBtZC1wIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsg +bGluZS1oZWlnaHQ6IGluaGVyaXQ7IG9ycGhhbnM6IDQ7IG1hcmdpbjogMHB4IDBweCAwLjVyZW07 +IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHNwYW4gbWQtaW5s +aW5lPSJwbGFpbiIgY2xhc3M9Im1kLXBsYWluIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJv +eDsiPuaXpeW4uOS6i+WKoTLvvJoyMDI1LTEyLTAyIEJPTee7tOaKpOS8mOWMlumcgOaxguW8gOWP +kei9rOa1iwo8L3NwYW4+PC9wPjwvbGk+PGxpIGNsYXNzPSJtZC1saXN0LWl0ZW0iIGNpZD0ibjE3 +IiBtZHR5cGU9Imxpc3RfaXRlbSIgc3R5bGU9ImNvbG9yOiByZ2IoNTEsIDUxLCA1MSk7IGZvbnQt +ZmFtaWx5OiAmcXVvdDtPcGVuIFNhbnMmcXVvdDssICZxdW90O0NsZWFyIFNhbnMmcXVvdDssICZx +dW90O0hlbHZldGljYSBOZXVlJnF1b3Q7LCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmOyBm +b250LXNpemU6IDE2cHg7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBwb3Np +dGlvbjogcmVsYXRpdmU7Ij48cCBjaWQ9Im4xOCIgbWR0eXBlPSJwYXJhZ3JhcGgiIGNsYXNzPSJt +ZC1lbmQtYmxvY2sgbWQtcCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGxpbmUtaGVp +Z2h0OiBpbmhlcml0OyBvcnBoYW5zOiA0OyBtYXJnaW46IDBweCAwcHggMC41cmVtOyB3aGl0ZS1z +cGFjZTogcHJlLXdyYXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxzcGFuIG1kLWlubGluZT0icGxh +aW4iIGNsYXNzPSJtZC1wbGFpbiIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij7ml6Xl +uLjkuovliqEz77yaMjAyNS0xMi0wMyDlt6Xoibrot6/nur/lr7zlh7rlrprliLbkvJjljJY8YnI+ +PC9zcGFuPjwvcD48L2xpPjwvdWw+PC9vbD48b2wgY2xhc3M9Im9sLWxpc3QiIHN0YXJ0PSIiIGNp +ZD0ibjQiIG1kdHlwZT0ibGlzdCIgc3R5bGU9ImZvbnQtZmFtaWx5OiDlvq7ova/pm4Xpu5E7IGJv +eC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBwYWRkaW5nLWxlZnQ6IDMwcHg7IHBv +c2l0aW9uOiByZWxhdGl2ZTsiPjx1bCBjbGFzcz0idWwtbGlzdCIgY2lkPSJuMTQiIG1kdHlwZT0i +bGlzdCIgZGF0YS1tYXJrPSItIiBzdHlsZT0iZm9udC1mYW1pbHk6IOW+rui9r+mbhem7kTsgYm94 +LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBhZGRpbmctbGVmdDogMzBweDsgcG9z +aXRpb246IHJlbGF0aXZlOyI+PGxpIGNsYXNzPSJtZC1saXN0LWl0ZW0iIGNpZD0ibjE3IiBtZHR5 +cGU9Imxpc3RfaXRlbSIgc3R5bGU9ImNvbG9yOiByZ2IoNTEsIDUxLCA1MSk7IGZvbnQtZmFtaWx5 +OiAmcXVvdDtPcGVuIFNhbnMmcXVvdDssICZxdW90O0NsZWFyIFNhbnMmcXVvdDssICZxdW90O0hl +bHZldGljYSBOZXVlJnF1b3Q7LCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmOyBmb250LXNp +emU6IDE2cHg7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBwb3NpdGlvbjog +cmVsYXRpdmU7Ij48cCBjaWQ9Im4xOCIgbWR0eXBlPSJwYXJhZ3JhcGgiIGNsYXNzPSJtZC1lbmQt +YmxvY2sgbWQtcCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGxpbmUtaGVpZ2h0OiBp +bmhlcml0OyBvcnBoYW5zOiA0OyBtYXJnaW46IDBweCAwcHggMC41cmVtOyB3aGl0ZS1zcGFjZTog +cHJlLXdyYXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxzcGFuIG1kLWlubGluZT0icGxhaW4iIGNs +YXNzPSJtZC1wbGFpbiIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij7ml6XluLjkuovl +iqE077yaMjAyNS0xMi0wNCDkuJrliqHkurrlkZjphY3nva7mjqXlj6PlvIDlj5HkuI7lt6Xoibrp +obXpnaLliY3lkI7nq6/ogZTosIM8L3NwYW4+PC9wPjwvbGk+PGxpIGNsYXNzPSJtZC1saXN0LWl0 +ZW0iIGNpZD0ibjE3IiBtZHR5cGU9Imxpc3RfaXRlbSIgc3R5bGU9ImNvbG9yOiByZ2IoNTEsIDUx +LCA1MSk7IGZvbnQtZmFtaWx5OiAmcXVvdDtPcGVuIFNhbnMmcXVvdDssICZxdW90O0NsZWFyIFNh +bnMmcXVvdDssICZxdW90O0hlbHZldGljYSBOZXVlJnF1b3Q7LCBIZWx2ZXRpY2EsIEFyaWFsLCBz +YW5zLXNlcmlmOyBmb250LXNpemU6IDE2cHg7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdp +bjogMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48cCBjaWQ9Im4xOCIgbWR0eXBlPSJwYXJhZ3Jh +cGgiIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1i +b3g7IGxpbmUtaGVpZ2h0OiBpbmhlcml0OyBvcnBoYW5zOiA0OyBtYXJnaW46IDBweCAwcHggMC41 +cmVtOyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxzcGFuIG1k +LWlubGluZT0icGxhaW4iIGNsYXNzPSJtZC1wbGFpbiIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRl +ci1ib3g7Ij7ml6XluLjkuovliqE077yaMjAyNS0xMi0wNSDnlJ/kuqfnrqHnkIbmjqXlj6PlvIDl +j5HogZTosIM8L3NwYW4+PC9wPjwvbGk+PC91bD48L29sPjxoMyBjaWQ9Im4yNSIgbWR0eXBlPSJo +ZWFkaW5nIiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLWhlYWRpbmciIHN0eWxlPSJmb250LWZhbWls +eTogJnF1b3Q7T3BlbiBTYW5zJnF1b3Q7LCAmcXVvdDtDbGVhciBTYW5zJnF1b3Q7LCAmcXVvdDtI +ZWx2ZXRpY2EgTmV1ZSZxdW90OywgSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjsgYm94LXNp +emluZzogYm9yZGVyLWJveDsgYnJlYWstYWZ0ZXI6IGF2b2lkLXBhZ2U7IGJyZWFrLWluc2lkZTog +YXZvaWQ7IG9ycGhhbnM6IDQ7IGZvbnQtc2l6ZTogMS41ZW07IG1hcmdpbi10b3A6IDFyZW07IG1h +cmdpbi1ib3R0b206IDFyZW07IHBvc2l0aW9uOiByZWxhdGl2ZTsgbGluZS1oZWlnaHQ6IDEuNDM7 +IGN1cnNvcjogdGV4dDsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyBjb2xvcjogcmdiKDUxLCA1MSwg +NTEpOyI+PHNwYW4gbWQtaW5saW5lPSJzdHJvbmciIGNsYXNzPSJtZC1wYWlyLXMgIiBzdHlsZT0i +Ym94LXNpemluZzogYm9yZGVyLWJveDsiPjxzdHJvbmcgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRl +ci1ib3g7Ij48c3BhbiBtZC1pbmxpbmU9InBsYWluIiBjbGFzcz0ibWQtcGxhaW4iIHN0eWxlPSJi +b3gtc2l6aW5nOiBib3JkZXItYm94OyI+5LqM44CB5LiL5ZGo5bel5L2c6K6h5YiSPC9zcGFuPjwv +c3Ryb25nPjwvc3Bhbj48L2gzPjxvbCBjbGFzcz0ib2wtbGlzdCIgc3RhcnQ9IiIgY2lkPSJuMjYi +IG1kdHlwZT0ibGlzdCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4 +OyBwYWRkaW5nLWxlZnQ6IDMwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxsaSBjbGFzcz0ibWQt +bGlzdC1pdGVtIiBjaWQ9Im4yNyIgbWR0eXBlPSJsaXN0X2l0ZW0iIHN0eWxlPSJmb250LWZhbWls +eTogJnF1b3Q7T3BlbiBTYW5zJnF1b3Q7LCAmcXVvdDtDbGVhciBTYW5zJnF1b3Q7LCAmcXVvdDtI +ZWx2ZXRpY2EgTmV1ZSZxdW90OywgSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjsgY29sb3I6 +IHJnYig1MSwgNTEsIDUxKTsgZm9udC1zaXplOiAxNnB4OyBib3gtc2l6aW5nOiBib3JkZXItYm94 +OyBtYXJnaW46IDBweDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHAgY2lkPSJuMjgiIG1kdHlwZT0i +cGFyYWdyYXBoIiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLXAiIHN0eWxlPSJib3gtc2l6aW5nOiBi +b3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5oZXJpdDsgb3JwaGFuczogNDsgbWFyZ2luOiAwcHgg +MHB4IDAuNXJlbTsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48 +c3BhbiBtZC1pbmxpbmU9InN0cm9uZyIgY2xhc3M9Im1kLXBhaXItcyAiIHN0eWxlPSJib3gtc2l6 +aW5nOiBib3JkZXItYm94OyI+PHN0cm9uZyBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsi +PjxzcGFuIG1kLWlubGluZT0icGxhaW4iIGNsYXNzPSJtZC1wbGFpbiIgc3R5bGU9ImJveC1zaXpp +bmc6IGJvcmRlci1ib3g7Ij7ph43ngrnku7vliqE8L3NwYW4+PC9zdHJvbmc+PC9zcGFuPjwvcD48 +L2xpPjx1bCBjbGFzcz0idWwtbGlzdCIgY2lkPSJuMjkiIG1kdHlwZT0ibGlzdCIgZGF0YS1tYXJr +PSItIiBzdHlsZT0iZm9udC1mYW1pbHk6ICZxdW90O09wZW4gU2FucyZxdW90OywgJnF1b3Q7Q2xl +YXIgU2FucyZxdW90OywgJnF1b3Q7SGVsdmV0aWNhIE5ldWUmcXVvdDssIEhlbHZldGljYSwgQXJp +YWwsIHNhbnMtc2VyaWY7IGNvbG9yOiByZ2IoNTEsIDUxLCA1MSk7IGZvbnQtc2l6ZTogMTZweDsg +Ym94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBhZGRpbmctbGVmdDogMzBweDsg +cG9zaXRpb246IHJlbGF0aXZlOyI+PGxpIGNsYXNzPSJtZC1saXN0LWl0ZW0iIGNpZD0ibjMwIiBt +ZHR5cGU9Imxpc3RfaXRlbSIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjog +MHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48cCBjaWQ9Im4zMSIgbWR0eXBlPSJwYXJhZ3JhcGgi +IGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7 +IGxpbmUtaGVpZ2h0OiBpbmhlcml0OyBvcnBoYW5zOiA0OyBtYXJnaW46IDBweCAwcHggMC41cmVt +OyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxzcGFuIG1kLWlu +bGluZT0icGxhaW4iIGNsYXNzPSJtZC1wbGFpbiIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1i +b3g7Ij7orqHliJIx77yaRzXkuLvmlbDmja41LjMuMeeJiOacrOW8gOWPkeWujOaIkCDovazmtYvk +uIrnur88L3NwYW4+PC9wPjwvbGk+PC91bD48L29sPjxkaXYgdGFiaW5kZXg9Ii0xIiBjaWQ9Im4z +OSIgbWR0eXBlPSJociIgY2xhc3M9Im1kLWhyIG1kLWVuZC1ibG9jayIgc3R5bGU9ImZvbnQtZmFt +aWx5OiAmcXVvdDtPcGVuIFNhbnMmcXVvdDssICZxdW90O0NsZWFyIFNhbnMmcXVvdDssICZxdW90 +O0hlbHZldGljYSBOZXVlJnF1b3Q7LCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmOyBib3gt +c2l6aW5nOiBib3JkZXItYm94OyBjb2xvcjogcmdiKDUxLCA1MSwgNTEpOyBmb250LXNpemU6IDE2 +cHg7Ij48aHIgc3R5bGU9ImJveC1zaXppbmc6IGNvbnRlbnQtYm94OyBoZWlnaHQ6IDJweDsgbWFy +Z2luOiAxNnB4IDBweDsgYm9yZGVyOiAwcHggbm9uZTsgcGFkZGluZzogMHB4OyBiYWNrZ3JvdW5k +LWNvbG9yOiByZ2IoMjMxLCAyMzEsIDIzMSk7Ij48L2Rpdj48cCBjaWQ9Im40MCIgbWR0eXBlPSJw +YXJhZ3JhcGgiIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCIgc3R5bGU9ImZvbnQtZmFtaWx5OiAm +cXVvdDtPcGVuIFNhbnMmcXVvdDssICZxdW90O0NsZWFyIFNhbnMmcXVvdDssICZxdW90O0hlbHZl +dGljYSBOZXVlJnF1b3Q7LCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmOyBib3gtc2l6aW5n +OiBib3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5oZXJpdDsgb3JwaGFuczogNDsgbWFyZ2luOiAw +LjhlbSAwcHg7IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJlbGF0aXZlOyBjb2xv +cjogcmdiKDUxLCA1MSwgNTEpOyBmb250LXNpemU6IDE2cHg7Ij48c3BhbiBtZC1pbmxpbmU9InN0 +cm9uZyIgY2xhc3M9Im1kLXBhaXItcyAiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+ +PHN0cm9uZyBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPjxzcGFuIG1kLWlubGluZT0i +cGxhaW4iIGNsYXNzPSJtZC1wbGFpbiIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij7l +pIfms6g8L3NwYW4+PC9zdHJvbmc+PC9zcGFuPjxzcGFuIG1kLWlubGluZT0icGxhaW4iIGNsYXNz +PSJtZC1wbGFpbiBtZC1leHBhbmQiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+77ya +5pegPC9zcGFuPjwvcD48L2Rpdj48ZGl2IHN0eWxlPSJmb250LWZhbWlseTog5b6u6L2v6ZuF6buR +OyI+PGJyPjwvZGl2PjwvZGl2PjwhLS3wn5iALS0+PC9kaXY+PC9kaXY+PC9kaXY+PGRpdj48YnI+ +PC9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdiBpZD0iaW1haWxfc2lnbmF0dXJlIiBjbGFzcz0ibnRl +cy1zaWduYXR1cmUiIHN0eWxlPSJtYXJnaW46MjBweCAwOyIgZGF0YS1udGVzLXNpZ25hdHVyZT0i +dHJ1ZSIgc3BlbGxjaGVjaz0iZmFsc2UiPjxkaXYgc3R5bGU9ImZvbnQtZmFtaWx5OiZxdW90O+W+ +rui9r+mbhem7kSZxdW90OzsgZm9udC1zaXplOiAxNHB4OyBjb2xvcjojMDAwMDAwIj4KICAgIDxz +dHlsZT4KICAgICAgICBmb250ewogICAgICAgICAgICBsaW5lLWhlaWdodDogMS42OwogICAgICAg +IH0KICAgIDwvc3R5bGU+CjxkaXYgc3R5bGU9ImZvbnQtZmFtaWx5OiZxdW90O+W+rui9r+mbhem7 +kSZxdW90OzsgZm9udC1zaXplOiAxNHB4OyBjb2xvcjojMDAwMDAwIj4KICAgIDxzdHlsZT4KICAg +ICAgICBmb250ewogICAgICAgICAgICBsaW5lLWhlaWdodDogMS42OwogICAgICAgIH0KICAgIDwv +c3R5bGU+CjxkaXYgc3R5bGU9ImZvbnQtZmFtaWx5OiZxdW90O+W+rui9r+mbhem7kSZxdW90Ozsg +Zm9udC1zaXplOiAxNHB4OyBjb2xvcjojMDAwMDAwIj4KICAgIDxzdHlsZT4KICAgICAgICBmb250 +ewogICAgICAgICAgICBsaW5lLWhlaWdodDogMS42OwogICAgICAgIH0KICAgIDwvc3R5bGU+Cjxk +aXYgc3R5bGU9ImZvbnQtZmFtaWx5OiZxdW90O+W+rui9r+mbhem7kSZxdW90OzsgZm9udC1zaXpl +OiAxNHB4OyBjb2xvcjojMDAwMDAwIj4KICAgIDxzdHlsZT4KICAgICAgICBmb250ewogICAgICAg +ICAgICBsaW5lLWhlaWdodDogMS42OwogICAgICAgIH0KICAgIDwvc3R5bGU+CjxkaXYgc3R5bGU9 +ImZvbnQtZmFtaWx5OiZxdW90O+W+rui9r+mbhem7kSZxdW90OzsgZm9udC1zaXplOiAxNHB4OyBj +b2xvcjojMDAwMDAwIj4KICAgIDxzdHlsZT4KICAgICAgICBmb250ewogICAgICAgICAgICBsaW5l +LWhlaWdodDogMS42OwogICAgICAgIH0KICAgIDwvc3R5bGU+CjxzcGFuIHN0eWxlPSJjb2xvcjog +cmdiKDE5MSwgMTkxLCAxOTEpOyBmb250LWZhbWlseTogJ01pY3Jvc29mdCBZYWhlaSc7IGZvbnQt +c2l6ZTogMTNweDsgb3JwaGFuczogMjsgd2lkb3dzOiAyOyI+QmVzdCByZWdhcmRzLDwvc3Bhbj48 +ZGl2IHN0eWxlPSJtYXJnaW46IDBweDsgcGFkZGluZzogMHB4OyBib3JkZXI6IDBweDsgb3V0bGlu +ZTogMHB4OyBmb250LWZhbWlseTogVGFob21hLCBBcmlhbCwgU1RIZWl0aSwgU2ltU3VuOyBmb250 +LXZhcmlhbnQtbGlnYXR1cmVzOiBub3JtYWw7IG9ycGhhbnM6IDI7IHdpZG93czogMjsgY2xlYXI6 +IGJvdGg7Ij48c3BhbiBzdHlsZT0ibWFyZ2luOiAwcHg7IHBhZGRpbmc6IDBweDsgYm9yZGVyOiAw +cHg7IG91dGxpbmU6IDBweDsgZm9udC1mYW1pbHk6ICZxdW90O01pY3Jvc29mdCBZYWhlaSZxdW90 +OzsgZm9udC1zaXplOiAxM3B4OyBjb2xvcjogcmdiKDE5MSwgMTkxLCAxOTEpOyI+5p2o6L2pPC9z +cGFuPjwvZGl2PjxkaXYgc3R5bGU9Im1hcmdpbjogMHB4OyBwYWRkaW5nOiAwcHg7IGJvcmRlcjog +MHB4OyBvdXRsaW5lOiAwcHg7IGZvbnQtZmFtaWx5OiBUYWhvbWEsIEFyaWFsLCBTVEhlaXRpLCBT +aW1TdW47IGZvbnQtdmFyaWFudC1saWdhdHVyZXM6IG5vcm1hbDsgb3JwaGFuczogMjsgd2lkb3dz +OiAyOyBjbGVhcjogYm90aDsiPjwvZGl2PjxkaXYgc3R5bGU9Im1hcmdpbjogMHB4OyBwYWRkaW5n +OiAwcHg7IGJvcmRlcjogMHB4OyBvdXRsaW5lOiAwcHg7IGZvbnQtZmFtaWx5OiBUYWhvbWEsIEFy +aWFsLCBTVEhlaXRpLCBTaW1TdW47IGZvbnQtdmFyaWFudC1saWdhdHVyZXM6IG5vcm1hbDsgb3Jw +aGFuczogMjsgd2lkb3dzOiAyOyBjbGVhcjogYm90aDsiPjxpbWcgc3JjPSJodHRwczovL21haWwt +b25saW5lLm5vc2RuLjEyNy5uZXQvd3pwbW1jL2NlOWY4YjM2ZTFmZmJlNTUzMjljMTk2Yzg0ZmU1 +MTk3LnBuZyIgc3R5bGU9Im1heC13aWR0aDogdW5zZXQ7Ij48L2Rpdj48ZGl2IHN0eWxlPSJtYXJn +aW46IDBweDsgcGFkZGluZzogMHB4OyBib3JkZXI6IDBweDsgb3V0bGluZTogMHB4OyBmb250LWZh +bWlseTogVGFob21hLCBBcmlhbCwgU1RIZWl0aSwgU2ltU3VuOyBmb250LXZhcmlhbnQtbGlnYXR1 +cmVzOiBub3JtYWw7IG9ycGhhbnM6IDI7IHdpZG93czogMjsgY2xlYXI6IGJvdGg7Ij48c3BhbiBz +dHlsZT0ibWFyZ2luOiAwcHg7IHBhZGRpbmc6IDBweDsgYm9yZGVyOiAwcHg7IG91dGxpbmU6IDBw +eDsgZm9udC1mYW1pbHk6ICZxdW90O01pY3Jvc29mdCBZYWhlaSZxdW90OzsgY29sb3I6IHJnYigx +OTEsIDE5MSwgMTkxKTsiPuWcsOWdgO+8muS4reWbvcK35Y2X5Lqs5LqR5a+G5Z+OTOagizUvMTDm +pbw8L3NwYW4+PC9kaXY+PGRpdiBzdHlsZT0ibWFyZ2luOiAwcHg7IHBhZGRpbmc6IDBweDsgYm9y +ZGVyOiAwcHg7IG91dGxpbmU6IDBweDsgZm9udC1mYW1pbHk6IFRhaG9tYSwgQXJpYWwsIFNUSGVp +dGksIFNpbVN1bjsgZm9udC12YXJpYW50LWxpZ2F0dXJlczogbm9ybWFsOyBvcnBoYW5zOiAyOyB3 +aWRvd3M6IDI7IGNsZWFyOiBib3RoOyI+PHNwYW4gc3R5bGU9Im1hcmdpbjogMHB4OyBwYWRkaW5n +OiAwcHg7IGJvcmRlcjogMHB4OyBvdXRsaW5lOiAwcHg7IGZvbnQtZmFtaWx5OiAmcXVvdDtNaWNy +b3NvZnQgWWFoZWkmcXVvdDs7IGNvbG9yOiByZ2IoMTkxLCAxOTEsIDE5MSk7Ij7miYvmnLrvvJox +ODcyNjEyODQ4OTwvc3Bhbj48L2Rpdj48ZGl2IHN0eWxlPSJtYXJnaW46IDBweDsgcGFkZGluZzog +MHB4OyBib3JkZXI6IDBweDsgb3V0bGluZTogMHB4OyBmb250LWZhbWlseTogVGFob21hLCBBcmlh +bCwgU1RIZWl0aSwgU2ltU3VuOyBmb250LXZhcmlhbnQtbGlnYXR1cmVzOiBub3JtYWw7IG9ycGhh +bnM6IDI7IHdpZG93czogMjsgY2xlYXI6IGJvdGg7Ij48c3BhbiBzdHlsZT0ibWFyZ2luOiAwcHg7 +IHBhZGRpbmc6IDBweDsgYm9yZGVyOiAwcHg7IG91dGxpbmU6IDBweDsgZm9udC1mYW1pbHk6ICZx +dW90O01pY3Jvc29mdCBZYWhlaSZxdW90OzsgY29sb3I6IHJnYigxOTEsIDE5MSwgMTkxKTsiPumC +rueuse+8mnlhbmd4dWFuQHdpdHNvZnQuY248L3NwYW4+PC9kaXY+CjwvZGl2Pgo8L2Rpdj4KPC9k +aXY+CjwvZGl2Pgo8L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48L2JvZHk+PC9odG1sPg== + +--=_mailmaster-6a18e4a4_0_12db_=-- diff --git a/media/inbound/2025-12-12_1715_G5开发周报_2025-12-08_--_2025-12-12---648cc665-1351-4eb0-8c68-03246b955854.eml b/media/inbound/2025-12-12_1715_G5开发周报_2025-12-08_--_2025-12-12---648cc665-1351-4eb0-8c68-03246b955854.eml new file mode 100644 index 0000000..70713bf --- /dev/null +++ b/media/inbound/2025-12-12_1715_G5开发周报_2025-12-08_--_2025-12-12---648cc665-1351-4eb0-8c68-03246b955854.eml @@ -0,0 +1,281 @@ +Date: Fri, 12 Dec 2025 17:15:23 +0800 +From: =?utf-8?B?5p2o6L2p?= +To: =?utf-8?B?5YiY5by6?= +Cc: =?utf-8?B?5bGI5paw6b6Z?= , =?utf-8?B?5pyx5paM?= + , =?utf-8?B?6ZmI5piO?= , + =?utf-8?B?5aSP6ZO25pWP?= +Message-ID: <00E40C42-00B7-42D2-BDCB-900A91CC690E@witsoft.cn> +Subject: =?utf-8?B?RzXlvIDlj5HlkajmiqXjgJAyMDI1LTEyLTA4IC0tICAyMDI1LTEy?= + =?utf-8?B?LTEy44CR?= +MIME-Version: 1.0 +Content-Type: multipart/alternative; boundary="=_mailmaster-6a18e4a4_0_153c_=" + +--=_mailmaster-6a18e4a4_0_153c_= +Content-Type: text/plain; charset="utf-8" +Content-Transfer-Encoding: base64 + +5oKo5aW977yB5Lul5LiL5piv5oiR5pys5ZGo55qE5bel5L2c5oC757uT5Y+K5LiL5ZGo6K6h5YiS +77yM6K+35a6h6ZiF44CCCuS4gOOAgeacrOWRqOW3peS9nOaAu+e7kwrph43ngrnlt6XkvZzlrozm +iJDmg4XlhrUK5Lu75YqhMe+8mkc15Li75pWw5o2uNS4zLjHniYjmnKzmtYvor5XlrozmiJAg5Y+R +5biDCuS7u+WKoTLvvJrplIDllK4g55Sf5LqnIOaOpeWPo+iBlOiwg+WujOaIkArluLjop4Tlt6Xk +vZwK5pel5bi45LqL5YqhMe+8mjIwMjUtMTItMDgg5Li75pWw5o2u5YWo6YOo6L2s5rWLIOmXrumi +mOS/ruWkjQrml6XluLjkuovliqEy77yaMjAyNS0xMi0wOSDkuJrliqHkurrlkZjphY3nva7mjqXl +j6PogZTosIMgCuaXpeW4uOS6i+WKoTPvvJoyMDI1LTEyLTEwIOS4u+aVsOaNruWvueWkluaOpeWP +o+iBlOiwgwrml6XluLjkuovliqE077yaMjAyNS0xMi0xMSDmjqXlj6Plr7nmjqXnvLrpmbflpITn +kIYK5pel5bi45LqL5YqhNO+8mjIwMjUtMTItMTIg5o6l5Y+j5rWL6K+V5a6M5oiQ5LiO54mI5pys +5Y+R5biD5pSv5oyBCumHjeeCueS7u+WKoQrorqHliJIx77yaRzXkuLvmlbDmja41LjQuMOeJiOac +rOW8gOWPkQrlpIfms6jvvJrml6AKQmVzdCByZWdhcmRzLOadqOi9qQrlnLDlnYDvvJrkuK3lm73C +t+WNl+S6rOS6keWvhuWfjkzmoIs1LzEw5qW8CuaJi+acuu+8mjE4NzI2MTI4NDg5CumCrueuse+8 +mnlhbmd4dWFuQHdpdHNvZnQuY24= + +--=_mailmaster-6a18e4a4_0_153c_= +Content-Type: text/html; charset="utf-8" +Content-Transfer-Encoding: base64 + +PGh0bWw+PGhlYWQ+PG1ldGEgaHR0cC1lcXVpdj0nQ29udGVudC1UeXBlJyBjb250ZW50PSd0ZXh0 +L2h0bWw7IGNoYXJzZXQ9VVRGLTgnPjwvaGVhZD48Ym9keSBzdHlsZT1saW5lLWhlaWdodDogMS41 +O2ZvbnQtZmFtaWx5OiAi5b6u6L2v6ZuF6buRIj48ZGl2ICBzdHlsZT0iZm9udC1mYW1pbHk6IOW+ +rui9r+mbhem7kTsiPjxkaXYgc3R5bGU9ImZvbnQtZmFtaWx5OiDlvq7ova/pm4Xpu5E7Ij48ZGl2 +IHN0eWxlPSJsaW5lLWhlaWdodDoiIDEuNTtmb250LWZhbWlseTo9IiIgIuW+rui9r+mbhem7kSI9 +IiI+PGRpdiBzdHlsZT0iZm9udC1mYW1pbHk6IOW+rui9r+mbhem7kTsiPjxkaXYgc3R5bGU9ImZv +bnQtZmFtaWx5OiDlvq7ova/pm4Xpu5E7Ij48ZGl2IHN0eWxlPSIiPjxkaXYgc3R5bGU9IiI+PHAg +Y2lkPSJuMCIgbWR0eXBlPSJwYXJhZ3JhcGgiIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCBtZC1m +b2N1cyIgc3R5bGU9ImZvbnQtZmFtaWx5OiAmcXVvdDtPcGVuIFNhbnMmcXVvdDssICZxdW90O0Ns +ZWFyIFNhbnMmcXVvdDssICZxdW90O0hlbHZldGljYSBOZXVlJnF1b3Q7LCBIZWx2ZXRpY2EsIEFy +aWFsLCBzYW5zLXNlcmlmOyBib3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5o +ZXJpdDsgb3JwaGFuczogNDsgbWFyZ2luOiAwLjhlbSAwcHg7IHdoaXRlLXNwYWNlOiBwcmUtd3Jh +cDsgcG9zaXRpb246IHJlbGF0aXZlOyBjb2xvcjogcmdiKDUxLCA1MSwgNTEpOyBmb250LXNpemU6 +IDE2cHg7Ij48c3BhbiBtZC1pbmxpbmU9InBsYWluIiBjbGFzcz0ibWQtcGxhaW4gbWQtZXhwYW5k +IiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPuaCqOWlve+8geS7peS4i+aYr+aIkeac +rOWRqOeahOW3peS9nOaAu+e7k+WPiuS4i+WRqOiuoeWIku+8jOivt+WuoemYheOAgjwvc3Bhbj48 +L3A+PGRpdiB0YWJpbmRleD0iLTEiIGNpZD0ibjIiIG1kdHlwZT0iaHIiIGNsYXNzPSJtZC1ociBt +ZC1lbmQtYmxvY2siIHN0eWxlPSJmb250LWZhbWlseTogJnF1b3Q7T3BlbiBTYW5zJnF1b3Q7LCAm +cXVvdDtDbGVhciBTYW5zJnF1b3Q7LCAmcXVvdDtIZWx2ZXRpY2EgTmV1ZSZxdW90OywgSGVsdmV0 +aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjsgYm94LXNpemluZzogYm9yZGVyLWJveDsgY29sb3I6IHJn +Yig1MSwgNTEsIDUxKTsgZm9udC1zaXplOiAxNnB4OyI+PGhyIHN0eWxlPSJib3gtc2l6aW5nOiBj +b250ZW50LWJveDsgaGVpZ2h0OiAycHg7IG1hcmdpbjogMTZweCAwcHg7IGJvcmRlcjogMHB4IG5v +bmU7IHBhZGRpbmc6IDBweDsgYmFja2dyb3VuZC1jb2xvcjogcmdiKDIzMSwgMjMxLCAyMzEpOyI+ +PC9kaXY+PGgzIGNpZD0ibjMiIG1kdHlwZT0iaGVhZGluZyIgY2xhc3M9Im1kLWVuZC1ibG9jayBt +ZC1oZWFkaW5nIiBzdHlsZT0iZm9udC1mYW1pbHk6ICZxdW90O09wZW4gU2FucyZxdW90OywgJnF1 +b3Q7Q2xlYXIgU2FucyZxdW90OywgJnF1b3Q7SGVsdmV0aWNhIE5ldWUmcXVvdDssIEhlbHZldGlj +YSwgQXJpYWwsIHNhbnMtc2VyaWY7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7IGJyZWFrLWFmdGVy +OiBhdm9pZC1wYWdlOyBicmVhay1pbnNpZGU6IGF2b2lkOyBvcnBoYW5zOiA0OyBmb250LXNpemU6 +IDEuNWVtOyBtYXJnaW4tdG9wOiAxcmVtOyBtYXJnaW4tYm90dG9tOiAxcmVtOyBwb3NpdGlvbjog +cmVsYXRpdmU7IGxpbmUtaGVpZ2h0OiAxLjQzOyBjdXJzb3I6IHRleHQ7IHdoaXRlLXNwYWNlOiBw +cmUtd3JhcDsgY29sb3I6IHJnYig1MSwgNTEsIDUxKTsiPjxzcGFuIG1kLWlubGluZT0ic3Ryb25n +IiBjbGFzcz0ibWQtcGFpci1zICIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij48c3Ry +b25nIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+PHNwYW4gbWQtaW5saW5lPSJwbGFp +biIgY2xhc3M9Im1kLXBsYWluIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPuS4gOOA +geacrOWRqOW3peS9nOaAu+e7kzwvc3Bhbj48L3N0cm9uZz48L3NwYW4+PC9oMz48b2wgY2xhc3M9 +Im9sLWxpc3QiIHN0YXJ0PSIiIGNpZD0ibjQiIG1kdHlwZT0ibGlzdCIgc3R5bGU9ImZvbnQtZmFt +aWx5OiAmcXVvdDtPcGVuIFNhbnMmcXVvdDssICZxdW90O0NsZWFyIFNhbnMmcXVvdDssICZxdW90 +O0hlbHZldGljYSBOZXVlJnF1b3Q7LCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmOyBib3gt +c2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcGFkZGluZy1sZWZ0OiAzMHB4OyBwb3Np +dGlvbjogcmVsYXRpdmU7IGNvbG9yOiByZ2IoNTEsIDUxLCA1MSk7IGZvbnQtc2l6ZTogMTZweDsi +PjxsaSBjbGFzcz0ibWQtbGlzdC1pdGVtIiBjaWQ9Im41IiBtZHR5cGU9Imxpc3RfaXRlbSIgc3R5 +bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBwb3NpdGlvbjogcmVsYXRp +dmU7Ij48cCBjaWQ9Im42IiBtZHR5cGU9InBhcmFncmFwaCIgY2xhc3M9Im1kLWVuZC1ibG9jayBt +ZC1wIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7 +IG9ycGhhbnM6IDQ7IG1hcmdpbjogMHB4IDBweCAwLjVyZW07IHdoaXRlLXNwYWNlOiBwcmUtd3Jh +cDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHNwYW4gbWQtaW5saW5lPSJzdHJvbmciIGNsYXNzPSJt +ZC1wYWlyLXMgIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPjxzdHJvbmcgc3R5bGU9 +ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij48c3BhbiBtZC1pbmxpbmU9InBsYWluIiBjbGFzcz0i +bWQtcGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+6YeN54K55bel5L2c5a6M +5oiQ5oOF5Ya1PC9zcGFuPjwvc3Ryb25nPjwvc3Bhbj48L3A+PC9saT48dWwgY2xhc3M9InVsLWxp +c3QiIGNpZD0ibjciIG1kdHlwZT0ibGlzdCIgZGF0YS1tYXJrPSItIiBzdHlsZT0iYm94LXNpemlu +ZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBhZGRpbmctbGVmdDogMzBweDsgcG9zaXRpb246 +IHJlbGF0aXZlOyI+PGxpIGNsYXNzPSJtZC1saXN0LWl0ZW0iIGNpZD0ibjgiIG1kdHlwZT0ibGlz +dF9pdGVtIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBvc2l0 +aW9uOiByZWxhdGl2ZTsiPjxwIGNpZD0ibjkiIG1kdHlwZT0icGFyYWdyYXBoIiBjbGFzcz0ibWQt +ZW5kLWJsb2NrIG1kLXAiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdo +dDogaW5oZXJpdDsgb3JwaGFuczogNDsgbWFyZ2luOiAwcHggMHB4IDAuNXJlbTsgd2hpdGUtc3Bh +Y2U6IHByZS13cmFwOyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48c3BhbiBtZC1pbmxpbmU9InBsYWlu +IiBjbGFzcz0ibWQtcGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+5Lu75Yqh +Me+8mkc15Li75pWw5o2uNS4zLjHniYjmnKzmtYvor5XlrozmiJAg5Y+R5biDPC9zcGFuPjwvcD48 +L2xpPjxsaSBjbGFzcz0ibWQtbGlzdC1pdGVtIiBjaWQ9Im4xMCIgbWR0eXBlPSJsaXN0X2l0ZW0i +IHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcG9zaXRpb246IHJl +bGF0aXZlOyI+PHAgY2lkPSJuMTEiIG1kdHlwZT0icGFyYWdyYXBoIiBjbGFzcz0ibWQtZW5kLWJs +b2NrIG1kLXAiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5o +ZXJpdDsgb3JwaGFuczogNDsgbWFyZ2luOiAwcHggMHB4IDAuNXJlbTsgd2hpdGUtc3BhY2U6IHBy +ZS13cmFwOyBwb3NpdGlvbjogcmVsYXRpdmU7Ij7ku7vliqEy77ya6ZSA5ZSuIOeUn+S6pyDmjqXl +j6PogZTosIPlrozmiJA8L3A+PC9saT48L3VsPjxsaSBjbGFzcz0ibWQtbGlzdC1pdGVtIiBjaWQ9 +Im4xMiIgbWR0eXBlPSJsaXN0X2l0ZW0iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBt +YXJnaW46IDBweDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHAgY2lkPSJuMTMiIG1kdHlwZT0icGFy +YWdyYXBoIiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLXAiIHN0eWxlPSJib3gtc2l6aW5nOiBib3Jk +ZXItYm94OyBsaW5lLWhlaWdodDogaW5oZXJpdDsgb3JwaGFuczogNDsgbWFyZ2luOiAwcHggMHB4 +IDAuNXJlbTsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48c3Bh +biBtZC1pbmxpbmU9InN0cm9uZyIgY2xhc3M9Im1kLXBhaXItcyAiIHN0eWxlPSJib3gtc2l6aW5n +OiBib3JkZXItYm94OyI+PHN0cm9uZyBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPjxz +cGFuIG1kLWlubGluZT0icGxhaW4iIGNsYXNzPSJtZC1wbGFpbiIgc3R5bGU9ImJveC1zaXppbmc6 +IGJvcmRlci1ib3g7Ij7luLjop4Tlt6XkvZw8L3NwYW4+PC9zdHJvbmc+PC9zcGFuPjwvcD48L2xp +Pjx1bCBjbGFzcz0idWwtbGlzdCIgY2lkPSJuMTQiIG1kdHlwZT0ibGlzdCIgZGF0YS1tYXJrPSIt +IiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBhZGRpbmctbGVm +dDogMzBweDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PGxpIGNsYXNzPSJtZC1saXN0LWl0ZW0iIGNp +ZD0ibjE1IiBtZHR5cGU9Imxpc3RfaXRlbSIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7 +IG1hcmdpbjogMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48cCBjaWQ9Im4xNiIgbWR0eXBlPSJw +YXJhZ3JhcGgiIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCIgc3R5bGU9ImJveC1zaXppbmc6IGJv +cmRlci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhlcml0OyBvcnBoYW5zOiA0OyBtYXJnaW46IDBweCAw +cHggMC41cmVtOyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxz +cGFuIG1kLWlubGluZT0icGxhaW4iIGNsYXNzPSJtZC1wbGFpbiIgc3R5bGU9ImJveC1zaXppbmc6 +IGJvcmRlci1ib3g7Ij7ml6XluLjkuovliqEx77yaMjAyNS0xMi0wOCDkuLvmlbDmja7lhajpg6jo +vazmtYsg6Zeu6aKY5L+u5aSNPC9zcGFuPjwvcD48L2xpPjwvdWw+PC9vbD48b2wgY2xhc3M9Im9s +LWxpc3QiIHN0YXJ0PSIiIGNpZD0ibjQiIG1kdHlwZT0ibGlzdCIgc3R5bGU9ImZvbnQtZmFtaWx5 +OiDlvq7ova/pm4Xpu5E7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBwYWRk +aW5nLWxlZnQ6IDMwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjx1bCBjbGFzcz0idWwtbGlzdCIg +Y2lkPSJuMTQiIG1kdHlwZT0ibGlzdCIgZGF0YS1tYXJrPSItIiBzdHlsZT0iZm9udC1mYW1pbHk6 +IOW+rui9r+mbhem7kTsgYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBhZGRp +bmctbGVmdDogMzBweDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PGxpIGNsYXNzPSJtZC1saXN0LWl0 +ZW0iIGNpZD0ibjE1IiBtZHR5cGU9Imxpc3RfaXRlbSIgc3R5bGU9ImNvbG9yOiByZ2IoNTEsIDUx +LCA1MSk7IGZvbnQtZmFtaWx5OiAmcXVvdDtPcGVuIFNhbnMmcXVvdDssICZxdW90O0NsZWFyIFNh +bnMmcXVvdDssICZxdW90O0hlbHZldGljYSBOZXVlJnF1b3Q7LCBIZWx2ZXRpY2EsIEFyaWFsLCBz +YW5zLXNlcmlmOyBmb250LXNpemU6IDE2cHg7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdp +bjogMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48cCBjaWQ9Im4xNiIgbWR0eXBlPSJwYXJhZ3Jh +cGgiIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1i +b3g7IGxpbmUtaGVpZ2h0OiBpbmhlcml0OyBvcnBoYW5zOiA0OyBtYXJnaW46IDBweCAwcHggMC41 +cmVtOyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxzcGFuIG1k +LWlubGluZT0icGxhaW4iIGNsYXNzPSJtZC1wbGFpbiIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRl +ci1ib3g7Ij7ml6XluLjkuovliqEy77yaMjAyNS0xMi0wOSDkuJrliqHkurrlkZjphY3nva7mjqXl +j6PogZTosIMKPC9zcGFuPjwvcD48L2xpPjxsaSBjbGFzcz0ibWQtbGlzdC1pdGVtIiBjaWQ9Im4x +NyIgbWR0eXBlPSJsaXN0X2l0ZW0iIHN0eWxlPSJjb2xvcjogcmdiKDUxLCA1MSwgNTEpOyBmb250 +LWZhbWlseTogJnF1b3Q7T3BlbiBTYW5zJnF1b3Q7LCAmcXVvdDtDbGVhciBTYW5zJnF1b3Q7LCAm +cXVvdDtIZWx2ZXRpY2EgTmV1ZSZxdW90OywgSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjsg +Zm9udC1zaXplOiAxNnB4OyBib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcG9z +aXRpb246IHJlbGF0aXZlOyI+PHAgY2lkPSJuMTgiIG1kdHlwZT0icGFyYWdyYXBoIiBjbGFzcz0i +bWQtZW5kLWJsb2NrIG1kLXAiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhl +aWdodDogaW5oZXJpdDsgb3JwaGFuczogNDsgbWFyZ2luOiAwcHggMHB4IDAuNXJlbTsgd2hpdGUt +c3BhY2U6IHByZS13cmFwOyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48c3BhbiBtZC1pbmxpbmU9InBs +YWluIiBjbGFzcz0ibWQtcGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+5pel +5bi45LqL5YqhM++8mjIwMjUtMTItMTAg5Li75pWw5o2u5a+55aSW5o6l5Y+j6IGU6LCDPGJyPjwv +c3Bhbj48L3A+PC9saT48L3VsPjwvb2w+PG9sIGNsYXNzPSJvbC1saXN0IiBzdGFydD0iIiBjaWQ9 +Im40IiBtZHR5cGU9Imxpc3QiIHN0eWxlPSJmb250LWZhbWlseTog5b6u6L2v6ZuF6buROyBib3gt +c2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcGFkZGluZy1sZWZ0OiAzMHB4OyBwb3Np +dGlvbjogcmVsYXRpdmU7Ij48dWwgY2xhc3M9InVsLWxpc3QiIGNpZD0ibjE0IiBtZHR5cGU9Imxp +c3QiIGRhdGEtbWFyaz0iLSIgc3R5bGU9ImZvbnQtZmFtaWx5OiDlvq7ova/pm4Xpu5E7IGJveC1z +aXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBwYWRkaW5nLWxlZnQ6IDMwcHg7IHBvc2l0 +aW9uOiByZWxhdGl2ZTsiPjxsaSBjbGFzcz0ibWQtbGlzdC1pdGVtIiBjaWQ9Im4xNyIgbWR0eXBl +PSJsaXN0X2l0ZW0iIHN0eWxlPSJjb2xvcjogcmdiKDUxLCA1MSwgNTEpOyBmb250LWZhbWlseTog +JnF1b3Q7T3BlbiBTYW5zJnF1b3Q7LCAmcXVvdDtDbGVhciBTYW5zJnF1b3Q7LCAmcXVvdDtIZWx2 +ZXRpY2EgTmV1ZSZxdW90OywgSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjsgZm9udC1zaXpl +OiAxNnB4OyBib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcG9zaXRpb246IHJl +bGF0aXZlOyI+PHAgY2lkPSJuMTgiIG1kdHlwZT0icGFyYWdyYXBoIiBjbGFzcz0ibWQtZW5kLWJs +b2NrIG1kLXAiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5o +ZXJpdDsgb3JwaGFuczogNDsgbWFyZ2luOiAwcHggMHB4IDAuNXJlbTsgd2hpdGUtc3BhY2U6IHBy +ZS13cmFwOyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48c3BhbiBtZC1pbmxpbmU9InBsYWluIiBjbGFz +cz0ibWQtcGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+5pel5bi45LqL5Yqh +NO+8mjIwMjUtMTItMTEg5o6l5Y+j5a+55o6l57y66Zm35aSE55CGPC9zcGFuPjwvcD48L2xpPjxs +aSBjbGFzcz0ibWQtbGlzdC1pdGVtIiBjaWQ9Im4xNyIgbWR0eXBlPSJsaXN0X2l0ZW0iIHN0eWxl +PSJjb2xvcjogcmdiKDUxLCA1MSwgNTEpOyBmb250LWZhbWlseTogJnF1b3Q7T3BlbiBTYW5zJnF1 +b3Q7LCAmcXVvdDtDbGVhciBTYW5zJnF1b3Q7LCAmcXVvdDtIZWx2ZXRpY2EgTmV1ZSZxdW90Oywg +SGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxNnB4OyBib3gtc2l6aW5n +OiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHAgY2lkPSJu +MTgiIG1kdHlwZT0icGFyYWdyYXBoIiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLXAiIHN0eWxlPSJi +b3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5oZXJpdDsgb3JwaGFuczogNDsg +bWFyZ2luOiAwcHggMHB4IDAuNXJlbTsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyBwb3NpdGlvbjog +cmVsYXRpdmU7Ij48c3BhbiBtZC1pbmxpbmU9InBsYWluIiBjbGFzcz0ibWQtcGxhaW4iIHN0eWxl +PSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+5pel5bi45LqL5YqhNO+8mjIwMjUtMTItMTIg5o6l +5Y+j5rWL6K+V5a6M5oiQ5LiO54mI5pys5Y+R5biD5pSv5oyBPC9zcGFuPjwvcD48L2xpPjwvdWw+ +PC9vbD48b2wgY2xhc3M9Im9sLWxpc3QiIHN0YXJ0PSIiIGNpZD0ibjI2IiBtZHR5cGU9Imxpc3Qi +IHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcGFkZGluZy1sZWZ0 +OiAzMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48bGkgY2xhc3M9Im1kLWxpc3QtaXRlbSIgY2lk +PSJuMjciIG1kdHlwZT0ibGlzdF9pdGVtIiBzdHlsZT0iZm9udC1mYW1pbHk6ICZxdW90O09wZW4g +U2FucyZxdW90OywgJnF1b3Q7Q2xlYXIgU2FucyZxdW90OywgJnF1b3Q7SGVsdmV0aWNhIE5ldWUm +cXVvdDssIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7IGNvbG9yOiByZ2IoNTEsIDUxLCA1 +MSk7IGZvbnQtc2l6ZTogMTZweDsgYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7 +IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxwIGNpZD0ibjI4IiBtZHR5cGU9InBhcmFncmFwaCIgY2xh +c3M9Im1kLWVuZC1ibG9jayBtZC1wIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbGlu +ZS1oZWlnaHQ6IGluaGVyaXQ7IG9ycGhhbnM6IDQ7IG1hcmdpbjogMHB4IDBweCAwLjVyZW07IHdo +aXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHNwYW4gbWQtaW5saW5l +PSJzdHJvbmciIGNsYXNzPSJtZC1wYWlyLXMgIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJv +eDsiPjxzdHJvbmcgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij48c3BhbiBtZC1pbmxp +bmU9InBsYWluIiBjbGFzcz0ibWQtcGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94 +OyI+6YeN54K55Lu75YqhPC9zcGFuPjwvc3Ryb25nPjwvc3Bhbj48L3A+PC9saT48dWwgY2xhc3M9 +InVsLWxpc3QiIGNpZD0ibjI5IiBtZHR5cGU9Imxpc3QiIGRhdGEtbWFyaz0iLSIgc3R5bGU9ImZv +bnQtZmFtaWx5OiAmcXVvdDtPcGVuIFNhbnMmcXVvdDssICZxdW90O0NsZWFyIFNhbnMmcXVvdDss +ICZxdW90O0hlbHZldGljYSBOZXVlJnF1b3Q7LCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlm +OyBjb2xvcjogcmdiKDUxLCA1MSwgNTEpOyBmb250LXNpemU6IDE2cHg7IGJveC1zaXppbmc6IGJv +cmRlci1ib3g7IG1hcmdpbjogMHB4OyBwYWRkaW5nLWxlZnQ6IDMwcHg7IHBvc2l0aW9uOiByZWxh +dGl2ZTsiPjxsaSBjbGFzcz0ibWQtbGlzdC1pdGVtIiBjaWQ9Im4zMCIgbWR0eXBlPSJsaXN0X2l0 +ZW0iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcG9zaXRpb246 +IHJlbGF0aXZlOyI+PHAgY2lkPSJuMzEiIG1kdHlwZT0icGFyYWdyYXBoIiBjbGFzcz0ibWQtZW5k +LWJsb2NrIG1kLXAiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdodDog +aW5oZXJpdDsgb3JwaGFuczogNDsgbWFyZ2luOiAwcHggMHB4IDAuNXJlbTsgd2hpdGUtc3BhY2U6 +IHByZS13cmFwOyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48c3BhbiBtZC1pbmxpbmU9InBsYWluIiBj +bGFzcz0ibWQtcGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+6K6h5YiSMe+8 +mkc15Li75pWw5o2uNS40LjDniYjmnKzlvIDlj5E8L3NwYW4+PC9wPjwvbGk+PC91bD48L29sPjxk +aXYgdGFiaW5kZXg9Ii0xIiBjaWQ9Im4zOSIgbWR0eXBlPSJociIgY2xhc3M9Im1kLWhyIG1kLWVu +ZC1ibG9jayIgc3R5bGU9ImZvbnQtZmFtaWx5OiAmcXVvdDtPcGVuIFNhbnMmcXVvdDssICZxdW90 +O0NsZWFyIFNhbnMmcXVvdDssICZxdW90O0hlbHZldGljYSBOZXVlJnF1b3Q7LCBIZWx2ZXRpY2Es +IEFyaWFsLCBzYW5zLXNlcmlmOyBib3gtc2l6aW5nOiBib3JkZXItYm94OyBjb2xvcjogcmdiKDUx +LCA1MSwgNTEpOyBmb250LXNpemU6IDE2cHg7Ij48aHIgc3R5bGU9ImJveC1zaXppbmc6IGNvbnRl +bnQtYm94OyBoZWlnaHQ6IDJweDsgbWFyZ2luOiAxNnB4IDBweDsgYm9yZGVyOiAwcHggbm9uZTsg +cGFkZGluZzogMHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjMxLCAyMzEsIDIzMSk7Ij48L2Rp +dj48cCBjaWQ9Im40MCIgbWR0eXBlPSJwYXJhZ3JhcGgiIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQt +cCIgc3R5bGU9ImZvbnQtZmFtaWx5OiAmcXVvdDtPcGVuIFNhbnMmcXVvdDssICZxdW90O0NsZWFy +IFNhbnMmcXVvdDssICZxdW90O0hlbHZldGljYSBOZXVlJnF1b3Q7LCBIZWx2ZXRpY2EsIEFyaWFs +LCBzYW5zLXNlcmlmOyBib3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5oZXJp +dDsgb3JwaGFuczogNDsgbWFyZ2luOiAwLjhlbSAwcHg7IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsg +cG9zaXRpb246IHJlbGF0aXZlOyBjb2xvcjogcmdiKDUxLCA1MSwgNTEpOyBmb250LXNpemU6IDE2 +cHg7Ij48c3BhbiBtZC1pbmxpbmU9InN0cm9uZyIgY2xhc3M9Im1kLXBhaXItcyAiIHN0eWxlPSJi +b3gtc2l6aW5nOiBib3JkZXItYm94OyI+PHN0cm9uZyBzdHlsZT0iYm94LXNpemluZzogYm9yZGVy +LWJveDsiPjxzcGFuIG1kLWlubGluZT0icGxhaW4iIGNsYXNzPSJtZC1wbGFpbiIgc3R5bGU9ImJv +eC1zaXppbmc6IGJvcmRlci1ib3g7Ij7lpIfms6g8L3NwYW4+PC9zdHJvbmc+PC9zcGFuPjxzcGFu +IG1kLWlubGluZT0icGxhaW4iIGNsYXNzPSJtZC1wbGFpbiBtZC1leHBhbmQiIHN0eWxlPSJib3gt +c2l6aW5nOiBib3JkZXItYm94OyI+77ya5pegPC9zcGFuPjwvcD48L2Rpdj48ZGl2IHN0eWxlPSJm +b250LWZhbWlseTog5b6u6L2v6ZuF6buROyI+PGJyPjwvZGl2PjwvZGl2PjwhLS3wn5iALS0+PC9k +aXY+PC9kaXY+PC9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdiBpZD0iaW1h +aWxfc2lnbmF0dXJlIiBjbGFzcz0ibnRlcy1zaWduYXR1cmUiIHN0eWxlPSJtYXJnaW46MjBweCAw +OyIgZGF0YS1udGVzLXNpZ25hdHVyZT0idHJ1ZSIgc3BlbGxjaGVjaz0iZmFsc2UiPjxkaXYgc3R5 +bGU9ImZvbnQtZmFtaWx5OiZxdW90O+W+rui9r+mbhem7kSZxdW90OzsgZm9udC1zaXplOiAxNHB4 +OyBjb2xvcjojMDAwMDAwIj4KICAgIDxzdHlsZT4KICAgICAgICBmb250ewogICAgICAgICAgICBs +aW5lLWhlaWdodDogMS42OwogICAgICAgIH0KICAgIDwvc3R5bGU+CjxkaXYgc3R5bGU9ImZvbnQt +ZmFtaWx5OiZxdW90O+W+rui9r+mbhem7kSZxdW90OzsgZm9udC1zaXplOiAxNHB4OyBjb2xvcjoj +MDAwMDAwIj4KICAgIDxzdHlsZT4KICAgICAgICBmb250ewogICAgICAgICAgICBsaW5lLWhlaWdo +dDogMS42OwogICAgICAgIH0KICAgIDwvc3R5bGU+CjxkaXYgc3R5bGU9ImZvbnQtZmFtaWx5OiZx +dW90O+W+rui9r+mbhem7kSZxdW90OzsgZm9udC1zaXplOiAxNHB4OyBjb2xvcjojMDAwMDAwIj4K +ICAgIDxzdHlsZT4KICAgICAgICBmb250ewogICAgICAgICAgICBsaW5lLWhlaWdodDogMS42Owog +ICAgICAgIH0KICAgIDwvc3R5bGU+CjxkaXYgc3R5bGU9ImZvbnQtZmFtaWx5OiZxdW90O+W+rui9 +r+mbhem7kSZxdW90OzsgZm9udC1zaXplOiAxNHB4OyBjb2xvcjojMDAwMDAwIj4KICAgIDxzdHls +ZT4KICAgICAgICBmb250ewogICAgICAgICAgICBsaW5lLWhlaWdodDogMS42OwogICAgICAgIH0K +ICAgIDwvc3R5bGU+CjxkaXYgc3R5bGU9ImZvbnQtZmFtaWx5OiZxdW90O+W+rui9r+mbhem7kSZx +dW90OzsgZm9udC1zaXplOiAxNHB4OyBjb2xvcjojMDAwMDAwIj4KICAgIDxzdHlsZT4KICAgICAg +ICBmb250ewogICAgICAgICAgICBsaW5lLWhlaWdodDogMS42OwogICAgICAgIH0KICAgIDwvc3R5 +bGU+CjxzcGFuIHN0eWxlPSJjb2xvcjogcmdiKDE5MSwgMTkxLCAxOTEpOyBmb250LWZhbWlseTog +J01pY3Jvc29mdCBZYWhlaSc7IGZvbnQtc2l6ZTogMTNweDsgb3JwaGFuczogMjsgd2lkb3dzOiAy +OyI+QmVzdCByZWdhcmRzLDwvc3Bhbj48ZGl2IHN0eWxlPSJtYXJnaW46IDBweDsgcGFkZGluZzog +MHB4OyBib3JkZXI6IDBweDsgb3V0bGluZTogMHB4OyBmb250LWZhbWlseTogVGFob21hLCBBcmlh +bCwgU1RIZWl0aSwgU2ltU3VuOyBmb250LXZhcmlhbnQtbGlnYXR1cmVzOiBub3JtYWw7IG9ycGhh +bnM6IDI7IHdpZG93czogMjsgY2xlYXI6IGJvdGg7Ij48c3BhbiBzdHlsZT0ibWFyZ2luOiAwcHg7 +IHBhZGRpbmc6IDBweDsgYm9yZGVyOiAwcHg7IG91dGxpbmU6IDBweDsgZm9udC1mYW1pbHk6ICZx +dW90O01pY3Jvc29mdCBZYWhlaSZxdW90OzsgZm9udC1zaXplOiAxM3B4OyBjb2xvcjogcmdiKDE5 +MSwgMTkxLCAxOTEpOyI+5p2o6L2pPC9zcGFuPjwvZGl2PjxkaXYgc3R5bGU9Im1hcmdpbjogMHB4 +OyBwYWRkaW5nOiAwcHg7IGJvcmRlcjogMHB4OyBvdXRsaW5lOiAwcHg7IGZvbnQtZmFtaWx5OiBU +YWhvbWEsIEFyaWFsLCBTVEhlaXRpLCBTaW1TdW47IGZvbnQtdmFyaWFudC1saWdhdHVyZXM6IG5v +cm1hbDsgb3JwaGFuczogMjsgd2lkb3dzOiAyOyBjbGVhcjogYm90aDsiPjwvZGl2PjxkaXYgc3R5 +bGU9Im1hcmdpbjogMHB4OyBwYWRkaW5nOiAwcHg7IGJvcmRlcjogMHB4OyBvdXRsaW5lOiAwcHg7 +IGZvbnQtZmFtaWx5OiBUYWhvbWEsIEFyaWFsLCBTVEhlaXRpLCBTaW1TdW47IGZvbnQtdmFyaWFu +dC1saWdhdHVyZXM6IG5vcm1hbDsgb3JwaGFuczogMjsgd2lkb3dzOiAyOyBjbGVhcjogYm90aDsi +PjxpbWcgc3JjPSJodHRwczovL21haWwtb25saW5lLm5vc2RuLjEyNy5uZXQvd3pwbW1jL2NlOWY4 +YjM2ZTFmZmJlNTUzMjljMTk2Yzg0ZmU1MTk3LnBuZyIgc3R5bGU9Im1heC13aWR0aDogdW5zZXQ7 +Ij48L2Rpdj48ZGl2IHN0eWxlPSJtYXJnaW46IDBweDsgcGFkZGluZzogMHB4OyBib3JkZXI6IDBw +eDsgb3V0bGluZTogMHB4OyBmb250LWZhbWlseTogVGFob21hLCBBcmlhbCwgU1RIZWl0aSwgU2lt +U3VuOyBmb250LXZhcmlhbnQtbGlnYXR1cmVzOiBub3JtYWw7IG9ycGhhbnM6IDI7IHdpZG93czog +MjsgY2xlYXI6IGJvdGg7Ij48c3BhbiBzdHlsZT0ibWFyZ2luOiAwcHg7IHBhZGRpbmc6IDBweDsg +Ym9yZGVyOiAwcHg7IG91dGxpbmU6IDBweDsgZm9udC1mYW1pbHk6ICZxdW90O01pY3Jvc29mdCBZ +YWhlaSZxdW90OzsgY29sb3I6IHJnYigxOTEsIDE5MSwgMTkxKTsiPuWcsOWdgO+8muS4reWbvcK3 +5Y2X5Lqs5LqR5a+G5Z+OTOagizUvMTDmpbw8L3NwYW4+PC9kaXY+PGRpdiBzdHlsZT0ibWFyZ2lu +OiAwcHg7IHBhZGRpbmc6IDBweDsgYm9yZGVyOiAwcHg7IG91dGxpbmU6IDBweDsgZm9udC1mYW1p +bHk6IFRhaG9tYSwgQXJpYWwsIFNUSGVpdGksIFNpbVN1bjsgZm9udC12YXJpYW50LWxpZ2F0dXJl +czogbm9ybWFsOyBvcnBoYW5zOiAyOyB3aWRvd3M6IDI7IGNsZWFyOiBib3RoOyI+PHNwYW4gc3R5 +bGU9Im1hcmdpbjogMHB4OyBwYWRkaW5nOiAwcHg7IGJvcmRlcjogMHB4OyBvdXRsaW5lOiAwcHg7 +IGZvbnQtZmFtaWx5OiAmcXVvdDtNaWNyb3NvZnQgWWFoZWkmcXVvdDs7IGNvbG9yOiByZ2IoMTkx +LCAxOTEsIDE5MSk7Ij7miYvmnLrvvJoxODcyNjEyODQ4OTwvc3Bhbj48L2Rpdj48ZGl2IHN0eWxl +PSJtYXJnaW46IDBweDsgcGFkZGluZzogMHB4OyBib3JkZXI6IDBweDsgb3V0bGluZTogMHB4OyBm +b250LWZhbWlseTogVGFob21hLCBBcmlhbCwgU1RIZWl0aSwgU2ltU3VuOyBmb250LXZhcmlhbnQt +bGlnYXR1cmVzOiBub3JtYWw7IG9ycGhhbnM6IDI7IHdpZG93czogMjsgY2xlYXI6IGJvdGg7Ij48 +c3BhbiBzdHlsZT0ibWFyZ2luOiAwcHg7IHBhZGRpbmc6IDBweDsgYm9yZGVyOiAwcHg7IG91dGxp +bmU6IDBweDsgZm9udC1mYW1pbHk6ICZxdW90O01pY3Jvc29mdCBZYWhlaSZxdW90OzsgY29sb3I6 +IHJnYigxOTEsIDE5MSwgMTkxKTsiPumCrueuse+8mnlhbmd4dWFuQHdpdHNvZnQuY248L3NwYW4+ +PC9kaXY+CjwvZGl2Pgo8L2Rpdj4KPC9kaXY+CjwvZGl2Pgo8L2Rpdj48L2Rpdj48L2Rpdj48L2Rp +dj48L2JvZHk+PC9odG1sPg== + +--=_mailmaster-6a18e4a4_0_153c_=-- diff --git a/media/inbound/2025-12-19_1702_G5开发周报_2025-12-15_--_2025-12-19---8cf34717-bc2b-4a2d-85a3-37b80b05934e.eml b/media/inbound/2025-12-19_1702_G5开发周报_2025-12-15_--_2025-12-19---8cf34717-bc2b-4a2d-85a3-37b80b05934e.eml new file mode 100644 index 0000000..510da77 --- /dev/null +++ b/media/inbound/2025-12-19_1702_G5开发周报_2025-12-15_--_2025-12-19---8cf34717-bc2b-4a2d-85a3-37b80b05934e.eml @@ -0,0 +1,283 @@ +Date: Fri, 19 Dec 2025 17:02:23 +0800 +From: =?utf-8?B?5p2o6L2p?= +To: =?utf-8?B?5YiY5by6?= +Cc: =?utf-8?B?5bGI5paw6b6Z?= , =?utf-8?B?5pyx5paM?= + , =?utf-8?B?6ZmI5piO?= , + =?utf-8?B?5aSP6ZO25pWP?= +Message-ID: <01387C12-8EA8-4821-B389-FDC87C727440@witsoft.cn> +Subject: =?utf-8?B?RzXlvIDlj5HlkajmiqXjgJAyMDI1LTEyLTE1IC0tICAyMDI1LTEy?= + =?utf-8?B?LTE544CR?= +MIME-Version: 1.0 +Content-Type: multipart/alternative; boundary="=_mailmaster-6a18e4a4_0_7e87_=" + +--=_mailmaster-6a18e4a4_0_7e87_= +Content-Type: text/plain; charset="utf-8" +Content-Transfer-Encoding: base64 + +5oKo5aW977yB5Lul5LiL5piv5oiR5pys5ZGo55qE5bel5L2c5oC757uT5Y+K5LiL5ZGo6K6h5YiS +77yM6K+35a6h6ZiF44CCCuS4gOOAgeacrOWRqOW3peS9nOaAu+e7kwrph43ngrnlt6XkvZzlrozm +iJDmg4XlhrUK5Lu75YqhMe+8mkc15Li75pWw5o2uNS40LjDniYjmnKzlvIDlj5HlrozmiJAg6L2s +5rWLCuS7u+WKoTLvvJrotKLliqHpnIDmsYLlvIDlj5EK5bi46KeE5bel5L2cCuaXpeW4uOS6i+WK +oTHvvJoyMDI1LTEyLTE1IOS4u+aVsOaNrumcgOaxguivhOWuoeW3peaXtuivhOS8sOW8gOWPkeaW +ueahiOiuvuiuoQrml6XluLjkuovliqEy77yaMjAyNS0xMi0xNiDkuLvmlbDmja7lr7nlpJbmjqXl +j6Mg5pe26Ze06IyD5Zu05p+l6K+i5ZKM5qCh6aqMIArml6XluLjkuovliqEz77yaMjAyNS0xMi0x +NyDkuLvmlbDmja7pnIDmsYLlvIDlj5EK5pel5bi45LqL5YqhNO+8mjIwMjUtMTItMTgg5Lia5Yqh +5Lq65ZGY6YWN572u5pS56YCgCuaXpeW4uOS6i+WKoTTvvJoyMDI1LTEyLTE5IOS4muWKoeS6uuWR +mOmFjee9ruaUuemAoOWKn+iDvea1i+ivleWSjOi0ouWKoemcgOaxguW8gOWPkQrph43ngrnku7vl +iqEK6K6h5YiSMe+8mkc15Li75pWw5o2uNS40LjDniYjmnKzmtYvor5Xpl67popjkv67lpI0K5aSH +5rOo77ya5pegCkJlc3QgcmVnYXJkcyzmnajovakK5Zyw5Z2A77ya5Lit5Zu9wrfljZfkuqzkupHl +r4bln45M5qCLNS8xMOalvArmiYvmnLrvvJoxODcyNjEyODQ4OQrpgq7nrrHvvJp5YW5neHVhbkB3 +aXRzb2Z0LmNu + +--=_mailmaster-6a18e4a4_0_7e87_= +Content-Type: text/html; charset="utf-8" +Content-Transfer-Encoding: base64 + +PGh0bWw+PGhlYWQ+PG1ldGEgaHR0cC1lcXVpdj0nQ29udGVudC1UeXBlJyBjb250ZW50PSd0ZXh0 +L2h0bWw7IGNoYXJzZXQ9VVRGLTgnPjwvaGVhZD48Ym9keSBzdHlsZT1saW5lLWhlaWdodDogMS41 +O2ZvbnQtZmFtaWx5OiAi5b6u6L2v6ZuF6buRIj48ZGl2ICBzdHlsZT0iZm9udC1mYW1pbHk6IOW+ +rui9r+mbhem7kTsiPjxkaXYgc3R5bGU9ImZvbnQtZmFtaWx5OiDlvq7ova/pm4Xpu5E7Ij48ZGl2 +IHN0eWxlPSJsaW5lLWhlaWdodDoiIDEuNTtmb250LWZhbWlseTo9IiIgIuW+rui9r+mbhem7kSI9 +IiI+PGRpdiBzdHlsZT0iZm9udC1mYW1pbHk6IOW+rui9r+mbhem7kTsiPjxkaXYgc3R5bGU9ImZv +bnQtZmFtaWx5OiDlvq7ova/pm4Xpu5E7Ij48ZGl2IHN0eWxlPSIiPjxkaXYgc3R5bGU9IiI+PHAg +Y2lkPSJuMCIgbWR0eXBlPSJwYXJhZ3JhcGgiIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCBtZC1m +b2N1cyIgc3R5bGU9ImZvbnQtZmFtaWx5OiAmcXVvdDtPcGVuIFNhbnMmcXVvdDssICZxdW90O0Ns +ZWFyIFNhbnMmcXVvdDssICZxdW90O0hlbHZldGljYSBOZXVlJnF1b3Q7LCBIZWx2ZXRpY2EsIEFy +aWFsLCBzYW5zLXNlcmlmOyBib3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5o +ZXJpdDsgb3JwaGFuczogNDsgbWFyZ2luOiAwLjhlbSAwcHg7IHdoaXRlLXNwYWNlOiBwcmUtd3Jh +cDsgcG9zaXRpb246IHJlbGF0aXZlOyBjb2xvcjogcmdiKDUxLCA1MSwgNTEpOyBmb250LXNpemU6 +IDE2cHg7Ij48c3BhbiBtZC1pbmxpbmU9InBsYWluIiBjbGFzcz0ibWQtcGxhaW4gbWQtZXhwYW5k +IiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPuaCqOWlve+8geS7peS4i+aYr+aIkeac +rOWRqOeahOW3peS9nOaAu+e7k+WPiuS4i+WRqOiuoeWIku+8jOivt+WuoemYheOAgjwvc3Bhbj48 +L3A+PGRpdiB0YWJpbmRleD0iLTEiIGNpZD0ibjIiIG1kdHlwZT0iaHIiIGNsYXNzPSJtZC1ociBt +ZC1lbmQtYmxvY2siIHN0eWxlPSJmb250LWZhbWlseTogJnF1b3Q7T3BlbiBTYW5zJnF1b3Q7LCAm +cXVvdDtDbGVhciBTYW5zJnF1b3Q7LCAmcXVvdDtIZWx2ZXRpY2EgTmV1ZSZxdW90OywgSGVsdmV0 +aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjsgYm94LXNpemluZzogYm9yZGVyLWJveDsgY29sb3I6IHJn +Yig1MSwgNTEsIDUxKTsgZm9udC1zaXplOiAxNnB4OyI+PGhyIHN0eWxlPSJib3gtc2l6aW5nOiBj +b250ZW50LWJveDsgaGVpZ2h0OiAycHg7IG1hcmdpbjogMTZweCAwcHg7IGJvcmRlcjogMHB4IG5v +bmU7IHBhZGRpbmc6IDBweDsgYmFja2dyb3VuZC1jb2xvcjogcmdiKDIzMSwgMjMxLCAyMzEpOyI+ +PC9kaXY+PGgzIGNpZD0ibjMiIG1kdHlwZT0iaGVhZGluZyIgY2xhc3M9Im1kLWVuZC1ibG9jayBt +ZC1oZWFkaW5nIiBzdHlsZT0iZm9udC1mYW1pbHk6ICZxdW90O09wZW4gU2FucyZxdW90OywgJnF1 +b3Q7Q2xlYXIgU2FucyZxdW90OywgJnF1b3Q7SGVsdmV0aWNhIE5ldWUmcXVvdDssIEhlbHZldGlj +YSwgQXJpYWwsIHNhbnMtc2VyaWY7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7IGJyZWFrLWFmdGVy +OiBhdm9pZC1wYWdlOyBicmVhay1pbnNpZGU6IGF2b2lkOyBvcnBoYW5zOiA0OyBmb250LXNpemU6 +IDEuNWVtOyBtYXJnaW4tdG9wOiAxcmVtOyBtYXJnaW4tYm90dG9tOiAxcmVtOyBwb3NpdGlvbjog +cmVsYXRpdmU7IGxpbmUtaGVpZ2h0OiAxLjQzOyBjdXJzb3I6IHRleHQ7IHdoaXRlLXNwYWNlOiBw +cmUtd3JhcDsgY29sb3I6IHJnYig1MSwgNTEsIDUxKTsiPjxzcGFuIG1kLWlubGluZT0ic3Ryb25n +IiBjbGFzcz0ibWQtcGFpci1zICIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij48c3Ry +b25nIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+PHNwYW4gbWQtaW5saW5lPSJwbGFp +biIgY2xhc3M9Im1kLXBsYWluIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPuS4gOOA +geacrOWRqOW3peS9nOaAu+e7kzwvc3Bhbj48L3N0cm9uZz48L3NwYW4+PC9oMz48b2wgY2xhc3M9 +Im9sLWxpc3QiIHN0YXJ0PSIiIGNpZD0ibjQiIG1kdHlwZT0ibGlzdCIgc3R5bGU9ImZvbnQtZmFt +aWx5OiAmcXVvdDtPcGVuIFNhbnMmcXVvdDssICZxdW90O0NsZWFyIFNhbnMmcXVvdDssICZxdW90 +O0hlbHZldGljYSBOZXVlJnF1b3Q7LCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmOyBib3gt +c2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcGFkZGluZy1sZWZ0OiAzMHB4OyBwb3Np +dGlvbjogcmVsYXRpdmU7IGNvbG9yOiByZ2IoNTEsIDUxLCA1MSk7IGZvbnQtc2l6ZTogMTZweDsi +PjxsaSBjbGFzcz0ibWQtbGlzdC1pdGVtIiBjaWQ9Im41IiBtZHR5cGU9Imxpc3RfaXRlbSIgc3R5 +bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBwb3NpdGlvbjogcmVsYXRp +dmU7Ij48cCBjaWQ9Im42IiBtZHR5cGU9InBhcmFncmFwaCIgY2xhc3M9Im1kLWVuZC1ibG9jayBt +ZC1wIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7 +IG9ycGhhbnM6IDQ7IG1hcmdpbjogMHB4IDBweCAwLjVyZW07IHdoaXRlLXNwYWNlOiBwcmUtd3Jh +cDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHNwYW4gbWQtaW5saW5lPSJzdHJvbmciIGNsYXNzPSJt +ZC1wYWlyLXMgIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPjxzdHJvbmcgc3R5bGU9 +ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij48c3BhbiBtZC1pbmxpbmU9InBsYWluIiBjbGFzcz0i +bWQtcGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+6YeN54K55bel5L2c5a6M +5oiQ5oOF5Ya1PC9zcGFuPjwvc3Ryb25nPjwvc3Bhbj48L3A+PC9saT48dWwgY2xhc3M9InVsLWxp +c3QiIGNpZD0ibjciIG1kdHlwZT0ibGlzdCIgZGF0YS1tYXJrPSItIiBzdHlsZT0iYm94LXNpemlu +ZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBhZGRpbmctbGVmdDogMzBweDsgcG9zaXRpb246 +IHJlbGF0aXZlOyI+PGxpIGNsYXNzPSJtZC1saXN0LWl0ZW0iIGNpZD0ibjgiIG1kdHlwZT0ibGlz +dF9pdGVtIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBvc2l0 +aW9uOiByZWxhdGl2ZTsiPjxwIGNpZD0ibjkiIG1kdHlwZT0icGFyYWdyYXBoIiBjbGFzcz0ibWQt +ZW5kLWJsb2NrIG1kLXAiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdo +dDogaW5oZXJpdDsgb3JwaGFuczogNDsgbWFyZ2luOiAwcHggMHB4IDAuNXJlbTsgd2hpdGUtc3Bh +Y2U6IHByZS13cmFwOyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48c3BhbiBtZC1pbmxpbmU9InBsYWlu +IiBjbGFzcz0ibWQtcGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+5Lu75Yqh +Me+8mkc15Li75pWw5o2uNS40LjDniYjmnKzlvIDlj5HlrozmiJAg6L2s5rWLPC9zcGFuPjwvcD48 +L2xpPjxsaSBjbGFzcz0ibWQtbGlzdC1pdGVtIiBjaWQ9Im4xMCIgbWR0eXBlPSJsaXN0X2l0ZW0i +IHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcG9zaXRpb246IHJl +bGF0aXZlOyI+PHAgY2lkPSJuMTEiIG1kdHlwZT0icGFyYWdyYXBoIiBjbGFzcz0ibWQtZW5kLWJs +b2NrIG1kLXAiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5o +ZXJpdDsgb3JwaGFuczogNDsgbWFyZ2luOiAwcHggMHB4IDAuNXJlbTsgd2hpdGUtc3BhY2U6IHBy +ZS13cmFwOyBwb3NpdGlvbjogcmVsYXRpdmU7Ij7ku7vliqEy77ya6LSi5Yqh6ZyA5rGC5byA5Y+R +PC9wPjwvbGk+PC91bD48bGkgY2xhc3M9Im1kLWxpc3QtaXRlbSIgY2lkPSJuMTIiIG1kdHlwZT0i +bGlzdF9pdGVtIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBv +c2l0aW9uOiByZWxhdGl2ZTsiPjxwIGNpZD0ibjEzIiBtZHR5cGU9InBhcmFncmFwaCIgY2xhc3M9 +Im1kLWVuZC1ibG9jayBtZC1wIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1o +ZWlnaHQ6IGluaGVyaXQ7IG9ycGhhbnM6IDQ7IG1hcmdpbjogMHB4IDBweCAwLjVyZW07IHdoaXRl +LXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHNwYW4gbWQtaW5saW5lPSJz +dHJvbmciIGNsYXNzPSJtZC1wYWlyLXMgIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsi +PjxzdHJvbmcgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij48c3BhbiBtZC1pbmxpbmU9 +InBsYWluIiBjbGFzcz0ibWQtcGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+ +5bi46KeE5bel5L2cPC9zcGFuPjwvc3Ryb25nPjwvc3Bhbj48L3A+PC9saT48dWwgY2xhc3M9InVs +LWxpc3QiIGNpZD0ibjE0IiBtZHR5cGU9Imxpc3QiIGRhdGEtbWFyaz0iLSIgc3R5bGU9ImJveC1z +aXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBwYWRkaW5nLWxlZnQ6IDMwcHg7IHBvc2l0 +aW9uOiByZWxhdGl2ZTsiPjxsaSBjbGFzcz0ibWQtbGlzdC1pdGVtIiBjaWQ9Im4xNSIgbWR0eXBl +PSJsaXN0X2l0ZW0iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsg +cG9zaXRpb246IHJlbGF0aXZlOyI+PHAgY2lkPSJuMTYiIG1kdHlwZT0icGFyYWdyYXBoIiBjbGFz +cz0ibWQtZW5kLWJsb2NrIG1kLXAiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5l +LWhlaWdodDogaW5oZXJpdDsgb3JwaGFuczogNDsgbWFyZ2luOiAwcHggMHB4IDAuNXJlbTsgd2hp +dGUtc3BhY2U6IHByZS13cmFwOyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48c3BhbiBtZC1pbmxpbmU9 +InBsYWluIiBjbGFzcz0ibWQtcGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+ +5pel5bi45LqL5YqhMe+8mjIwMjUtMTItMTUg5Li75pWw5o2u6ZyA5rGC6K+E5a6h5bel5pe26K+E +5Lyw5byA5Y+R5pa55qGI6K6+6K6hPC9zcGFuPjwvcD48L2xpPjwvdWw+PC9vbD48b2wgY2xhc3M9 +Im9sLWxpc3QiIHN0YXJ0PSIiIGNpZD0ibjQiIG1kdHlwZT0ibGlzdCIgc3R5bGU9ImZvbnQtZmFt +aWx5OiDlvq7ova/pm4Xpu5E7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBw +YWRkaW5nLWxlZnQ6IDMwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjx1bCBjbGFzcz0idWwtbGlz +dCIgY2lkPSJuMTQiIG1kdHlwZT0ibGlzdCIgZGF0YS1tYXJrPSItIiBzdHlsZT0iZm9udC1mYW1p +bHk6IOW+rui9r+mbhem7kTsgYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBh +ZGRpbmctbGVmdDogMzBweDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PGxpIGNsYXNzPSJtZC1saXN0 +LWl0ZW0iIGNpZD0ibjE1IiBtZHR5cGU9Imxpc3RfaXRlbSIgc3R5bGU9ImNvbG9yOiByZ2IoNTEs +IDUxLCA1MSk7IGZvbnQtZmFtaWx5OiAmcXVvdDtPcGVuIFNhbnMmcXVvdDssICZxdW90O0NsZWFy +IFNhbnMmcXVvdDssICZxdW90O0hlbHZldGljYSBOZXVlJnF1b3Q7LCBIZWx2ZXRpY2EsIEFyaWFs +LCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDE2cHg7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1h +cmdpbjogMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48cCBjaWQ9Im4xNiIgbWR0eXBlPSJwYXJh +Z3JhcGgiIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRl +ci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhlcml0OyBvcnBoYW5zOiA0OyBtYXJnaW46IDBweCAwcHgg +MC41cmVtOyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxzcGFu +IG1kLWlubGluZT0icGxhaW4iIGNsYXNzPSJtZC1wbGFpbiIgc3R5bGU9ImJveC1zaXppbmc6IGJv +cmRlci1ib3g7Ij7ml6XluLjkuovliqEy77yaMjAyNS0xMi0xNiDkuLvmlbDmja7lr7nlpJbmjqXl +j6Mg5pe26Ze06IyD5Zu05p+l6K+i5ZKM5qCh6aqMCjwvc3Bhbj48L3A+PC9saT48bGkgY2xhc3M9 +Im1kLWxpc3QtaXRlbSIgY2lkPSJuMTciIG1kdHlwZT0ibGlzdF9pdGVtIiBzdHlsZT0iY29sb3I6 +IHJnYig1MSwgNTEsIDUxKTsgZm9udC1mYW1pbHk6ICZxdW90O09wZW4gU2FucyZxdW90OywgJnF1 +b3Q7Q2xlYXIgU2FucyZxdW90OywgJnF1b3Q7SGVsdmV0aWNhIE5ldWUmcXVvdDssIEhlbHZldGlj +YSwgQXJpYWwsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTZweDsgYm94LXNpemluZzogYm9yZGVy +LWJveDsgbWFyZ2luOiAwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxwIGNpZD0ibjE4IiBtZHR5 +cGU9InBhcmFncmFwaCIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1wIiBzdHlsZT0iYm94LXNpemlu +ZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IG9ycGhhbnM6IDQ7IG1hcmdpbjog +MHB4IDBweCAwLjVyZW07IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJlbGF0aXZl +OyI+PHNwYW4gbWQtaW5saW5lPSJwbGFpbiIgY2xhc3M9Im1kLXBsYWluIiBzdHlsZT0iYm94LXNp +emluZzogYm9yZGVyLWJveDsiPuaXpeW4uOS6i+WKoTPvvJoyMDI1LTEyLTE3IOS4u+aVsOaNrumc +gOaxguW8gOWPkTxicj48L3NwYW4+PC9wPjwvbGk+PC91bD48L29sPjxvbCBjbGFzcz0ib2wtbGlz +dCIgc3RhcnQ9IiIgY2lkPSJuNCIgbWR0eXBlPSJsaXN0IiBzdHlsZT0iZm9udC1mYW1pbHk6IOW+ +rui9r+mbhem7kTsgYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBhZGRpbmct +bGVmdDogMzBweDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHVsIGNsYXNzPSJ1bC1saXN0IiBjaWQ9 +Im4xNCIgbWR0eXBlPSJsaXN0IiBkYXRhLW1hcms9Ii0iIHN0eWxlPSJmb250LWZhbWlseTog5b6u +6L2v6ZuF6buROyBib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcGFkZGluZy1s +ZWZ0OiAzMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48bGkgY2xhc3M9Im1kLWxpc3QtaXRlbSIg +Y2lkPSJuMTciIG1kdHlwZT0ibGlzdF9pdGVtIiBzdHlsZT0iY29sb3I6IHJnYig1MSwgNTEsIDUx +KTsgZm9udC1mYW1pbHk6ICZxdW90O09wZW4gU2FucyZxdW90OywgJnF1b3Q7Q2xlYXIgU2FucyZx +dW90OywgJnF1b3Q7SGVsdmV0aWNhIE5ldWUmcXVvdDssIEhlbHZldGljYSwgQXJpYWwsIHNhbnMt +c2VyaWY7IGZvbnQtc2l6ZTogMTZweDsgYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAw +cHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxwIGNpZD0ibjE4IiBtZHR5cGU9InBhcmFncmFwaCIg +Y2xhc3M9Im1kLWVuZC1ibG9jayBtZC1wIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsg +bGluZS1oZWlnaHQ6IGluaGVyaXQ7IG9ycGhhbnM6IDQ7IG1hcmdpbjogMHB4IDBweCAwLjVyZW07 +IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHNwYW4gbWQtaW5s +aW5lPSJwbGFpbiIgY2xhc3M9Im1kLXBsYWluIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJv +eDsiPuaXpeW4uOS6i+WKoTTvvJoyMDI1LTEyLTE4IOS4muWKoeS6uuWRmOmFjee9ruaUuemAoDwv +c3Bhbj48L3A+PC9saT48bGkgY2xhc3M9Im1kLWxpc3QtaXRlbSIgY2lkPSJuMTciIG1kdHlwZT0i +bGlzdF9pdGVtIiBzdHlsZT0iY29sb3I6IHJnYig1MSwgNTEsIDUxKTsgZm9udC1mYW1pbHk6ICZx +dW90O09wZW4gU2FucyZxdW90OywgJnF1b3Q7Q2xlYXIgU2FucyZxdW90OywgJnF1b3Q7SGVsdmV0 +aWNhIE5ldWUmcXVvdDssIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTog +MTZweDsgYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBvc2l0aW9uOiByZWxh +dGl2ZTsiPjxwIGNpZD0ibjE4IiBtZHR5cGU9InBhcmFncmFwaCIgY2xhc3M9Im1kLWVuZC1ibG9j +ayBtZC1wIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGluaGVy +aXQ7IG9ycGhhbnM6IDQ7IG1hcmdpbjogMHB4IDBweCAwLjVyZW07IHdoaXRlLXNwYWNlOiBwcmUt +d3JhcDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHNwYW4gbWQtaW5saW5lPSJwbGFpbiIgY2xhc3M9 +Im1kLXBsYWluIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPuaXpeW4uOS6i+WKoTTv +vJoyMDI1LTEyLTE5IOS4muWKoeS6uuWRmOmFjee9ruaUuemAoOWKn+iDvea1i+ivleWSjOi0ouWK +oemcgOaxguW8gOWPkTwvc3Bhbj48L3A+PC9saT48L3VsPjwvb2w+PG9sIGNsYXNzPSJvbC1saXN0 +IiBzdGFydD0iIiBjaWQ9Im4yNiIgbWR0eXBlPSJsaXN0IiBzdHlsZT0iYm94LXNpemluZzogYm9y +ZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBhZGRpbmctbGVmdDogMzBweDsgcG9zaXRpb246IHJlbGF0 +aXZlOyI+PGxpIGNsYXNzPSJtZC1saXN0LWl0ZW0iIGNpZD0ibjI3IiBtZHR5cGU9Imxpc3RfaXRl +bSIgc3R5bGU9ImZvbnQtZmFtaWx5OiAmcXVvdDtPcGVuIFNhbnMmcXVvdDssICZxdW90O0NsZWFy +IFNhbnMmcXVvdDssICZxdW90O0hlbHZldGljYSBOZXVlJnF1b3Q7LCBIZWx2ZXRpY2EsIEFyaWFs +LCBzYW5zLXNlcmlmOyBjb2xvcjogcmdiKDUxLCA1MSwgNTEpOyBmb250LXNpemU6IDE2cHg7IGJv +eC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48 +cCBjaWQ9Im4yOCIgbWR0eXBlPSJwYXJhZ3JhcGgiIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCIg +c3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhlcml0OyBvcnBo +YW5zOiA0OyBtYXJnaW46IDBweCAwcHggMC41cmVtOyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBv +c2l0aW9uOiByZWxhdGl2ZTsiPjxzcGFuIG1kLWlubGluZT0ic3Ryb25nIiBjbGFzcz0ibWQtcGFp +ci1zICIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij48c3Ryb25nIHN0eWxlPSJib3gt +c2l6aW5nOiBib3JkZXItYm94OyI+PHNwYW4gbWQtaW5saW5lPSJwbGFpbiIgY2xhc3M9Im1kLXBs +YWluIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPumHjeeCueS7u+WKoTwvc3Bhbj48 +L3N0cm9uZz48L3NwYW4+PC9wPjwvbGk+PHVsIGNsYXNzPSJ1bC1saXN0IiBjaWQ9Im4yOSIgbWR0 +eXBlPSJsaXN0IiBkYXRhLW1hcms9Ii0iIHN0eWxlPSJmb250LWZhbWlseTogJnF1b3Q7T3BlbiBT +YW5zJnF1b3Q7LCAmcXVvdDtDbGVhciBTYW5zJnF1b3Q7LCAmcXVvdDtIZWx2ZXRpY2EgTmV1ZSZx +dW90OywgSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjsgY29sb3I6IHJnYig1MSwgNTEsIDUx +KTsgZm9udC1zaXplOiAxNnB4OyBib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsg +cGFkZGluZy1sZWZ0OiAzMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48bGkgY2xhc3M9Im1kLWxp +c3QtaXRlbSIgY2lkPSJuMzAiIG1kdHlwZT0ibGlzdF9pdGVtIiBzdHlsZT0iYm94LXNpemluZzog +Ym9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxwIGNpZD0ibjMx +IiBtZHR5cGU9InBhcmFncmFwaCIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1wIiBzdHlsZT0iYm94 +LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IG9ycGhhbnM6IDQ7IG1h +cmdpbjogMHB4IDBweCAwLjVyZW07IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJl +bGF0aXZlOyI+PHNwYW4gbWQtaW5saW5lPSJwbGFpbiIgY2xhc3M9Im1kLXBsYWluIiBzdHlsZT0i +Ym94LXNpemluZzogYm9yZGVyLWJveDsiPuiuoeWIkjHvvJpHNeS4u+aVsOaNrjUuNC4w54mI5pys +5rWL6K+V6Zeu6aKY5L+u5aSNPC9zcGFuPjwvcD48L2xpPjwvdWw+PC9vbD48ZGl2IHRhYmluZGV4 +PSItMSIgY2lkPSJuMzkiIG1kdHlwZT0iaHIiIGNsYXNzPSJtZC1ociBtZC1lbmQtYmxvY2siIHN0 +eWxlPSJmb250LWZhbWlseTogJnF1b3Q7T3BlbiBTYW5zJnF1b3Q7LCAmcXVvdDtDbGVhciBTYW5z +JnF1b3Q7LCAmcXVvdDtIZWx2ZXRpY2EgTmV1ZSZxdW90OywgSGVsdmV0aWNhLCBBcmlhbCwgc2Fu +cy1zZXJpZjsgYm94LXNpemluZzogYm9yZGVyLWJveDsgY29sb3I6IHJnYig1MSwgNTEsIDUxKTsg +Zm9udC1zaXplOiAxNnB4OyI+PGhyIHN0eWxlPSJib3gtc2l6aW5nOiBjb250ZW50LWJveDsgaGVp +Z2h0OiAycHg7IG1hcmdpbjogMTZweCAwcHg7IGJvcmRlcjogMHB4IG5vbmU7IHBhZGRpbmc6IDBw +eDsgYmFja2dyb3VuZC1jb2xvcjogcmdiKDIzMSwgMjMxLCAyMzEpOyI+PC9kaXY+PHAgY2lkPSJu +NDAiIG1kdHlwZT0icGFyYWdyYXBoIiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLXAiIHN0eWxlPSJm +b250LWZhbWlseTogJnF1b3Q7T3BlbiBTYW5zJnF1b3Q7LCAmcXVvdDtDbGVhciBTYW5zJnF1b3Q7 +LCAmcXVvdDtIZWx2ZXRpY2EgTmV1ZSZxdW90OywgSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJp +ZjsgYm94LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IG9ycGhhbnM6 +IDQ7IG1hcmdpbjogMC44ZW0gMHB4OyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0aW9uOiBy +ZWxhdGl2ZTsgY29sb3I6IHJnYig1MSwgNTEsIDUxKTsgZm9udC1zaXplOiAxNnB4OyI+PHNwYW4g +bWQtaW5saW5lPSJzdHJvbmciIGNsYXNzPSJtZC1wYWlyLXMgIiBzdHlsZT0iYm94LXNpemluZzog +Ym9yZGVyLWJveDsiPjxzdHJvbmcgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij48c3Bh +biBtZC1pbmxpbmU9InBsYWluIiBjbGFzcz0ibWQtcGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBi +b3JkZXItYm94OyI+5aSH5rOoPC9zcGFuPjwvc3Ryb25nPjwvc3Bhbj48c3BhbiBtZC1pbmxpbmU9 +InBsYWluIiBjbGFzcz0ibWQtcGxhaW4gbWQtZXhwYW5kIiBzdHlsZT0iYm94LXNpemluZzogYm9y +ZGVyLWJveDsiPu+8muaXoDwvc3Bhbj48L3A+PC9kaXY+PGRpdiBzdHlsZT0iZm9udC1mYW1pbHk6 +IOW+rui9r+mbhem7kTsiPjxicj48L2Rpdj48L2Rpdj48IS0t8J+YgC0tPjwvZGl2PjwvZGl2Pjwv +ZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXYgaWQ9ImltYWlsX3NpZ25hdHVy +ZSIgY2xhc3M9Im50ZXMtc2lnbmF0dXJlIiBzdHlsZT0ibWFyZ2luOjIwcHggMDsiIGRhdGEtbnRl +cy1zaWduYXR1cmU9InRydWUiIHNwZWxsY2hlY2s9ImZhbHNlIj48ZGl2IHN0eWxlPSJmb250LWZh +bWlseTomcXVvdDvlvq7ova/pm4Xpu5EmcXVvdDs7IGZvbnQtc2l6ZTogMTRweDsgY29sb3I6IzAw +MDAwMCI+CiAgICA8c3R5bGU+CiAgICAgICAgZm9udHsKICAgICAgICAgICAgbGluZS1oZWlnaHQ6 +IDEuNjsKICAgICAgICB9CiAgICA8L3N0eWxlPgo8ZGl2IHN0eWxlPSJmb250LWZhbWlseTomcXVv +dDvlvq7ova/pm4Xpu5EmcXVvdDs7IGZvbnQtc2l6ZTogMTRweDsgY29sb3I6IzAwMDAwMCI+CiAg +ICA8c3R5bGU+CiAgICAgICAgZm9udHsKICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDEuNjsKICAg +ICAgICB9CiAgICA8L3N0eWxlPgo8ZGl2IHN0eWxlPSJmb250LWZhbWlseTomcXVvdDvlvq7ova/p +m4Xpu5EmcXVvdDs7IGZvbnQtc2l6ZTogMTRweDsgY29sb3I6IzAwMDAwMCI+CiAgICA8c3R5bGU+ +CiAgICAgICAgZm9udHsKICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDEuNjsKICAgICAgICB9CiAg +ICA8L3N0eWxlPgo8ZGl2IHN0eWxlPSJmb250LWZhbWlseTomcXVvdDvlvq7ova/pm4Xpu5EmcXVv +dDs7IGZvbnQtc2l6ZTogMTRweDsgY29sb3I6IzAwMDAwMCI+CiAgICA8c3R5bGU+CiAgICAgICAg +Zm9udHsKICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDEuNjsKICAgICAgICB9CiAgICA8L3N0eWxl +Pgo8ZGl2IHN0eWxlPSJmb250LWZhbWlseTomcXVvdDvlvq7ova/pm4Xpu5EmcXVvdDs7IGZvbnQt +c2l6ZTogMTRweDsgY29sb3I6IzAwMDAwMCI+CiAgICA8c3R5bGU+CiAgICAgICAgZm9udHsKICAg +ICAgICAgICAgbGluZS1oZWlnaHQ6IDEuNjsKICAgICAgICB9CiAgICA8L3N0eWxlPgo8c3BhbiBz +dHlsZT0iY29sb3I6IHJnYigxOTEsIDE5MSwgMTkxKTsgZm9udC1mYW1pbHk6ICdNaWNyb3NvZnQg +WWFoZWknOyBmb250LXNpemU6IDEzcHg7IG9ycGhhbnM6IDI7IHdpZG93czogMjsiPkJlc3QgcmVn +YXJkcyw8L3NwYW4+PGRpdiBzdHlsZT0ibWFyZ2luOiAwcHg7IHBhZGRpbmc6IDBweDsgYm9yZGVy +OiAwcHg7IG91dGxpbmU6IDBweDsgZm9udC1mYW1pbHk6IFRhaG9tYSwgQXJpYWwsIFNUSGVpdGks +IFNpbVN1bjsgZm9udC12YXJpYW50LWxpZ2F0dXJlczogbm9ybWFsOyBvcnBoYW5zOiAyOyB3aWRv +d3M6IDI7IGNsZWFyOiBib3RoOyI+PHNwYW4gc3R5bGU9Im1hcmdpbjogMHB4OyBwYWRkaW5nOiAw +cHg7IGJvcmRlcjogMHB4OyBvdXRsaW5lOiAwcHg7IGZvbnQtZmFtaWx5OiAmcXVvdDtNaWNyb3Nv +ZnQgWWFoZWkmcXVvdDs7IGZvbnQtc2l6ZTogMTNweDsgY29sb3I6IHJnYigxOTEsIDE5MSwgMTkx +KTsiPuadqOi9qTwvc3Bhbj48L2Rpdj48ZGl2IHN0eWxlPSJtYXJnaW46IDBweDsgcGFkZGluZzog +MHB4OyBib3JkZXI6IDBweDsgb3V0bGluZTogMHB4OyBmb250LWZhbWlseTogVGFob21hLCBBcmlh +bCwgU1RIZWl0aSwgU2ltU3VuOyBmb250LXZhcmlhbnQtbGlnYXR1cmVzOiBub3JtYWw7IG9ycGhh +bnM6IDI7IHdpZG93czogMjsgY2xlYXI6IGJvdGg7Ij48L2Rpdj48ZGl2IHN0eWxlPSJtYXJnaW46 +IDBweDsgcGFkZGluZzogMHB4OyBib3JkZXI6IDBweDsgb3V0bGluZTogMHB4OyBmb250LWZhbWls +eTogVGFob21hLCBBcmlhbCwgU1RIZWl0aSwgU2ltU3VuOyBmb250LXZhcmlhbnQtbGlnYXR1cmVz +OiBub3JtYWw7IG9ycGhhbnM6IDI7IHdpZG93czogMjsgY2xlYXI6IGJvdGg7Ij48aW1nIHNyYz0i +aHR0cHM6Ly9tYWlsLW9ubGluZS5ub3Nkbi4xMjcubmV0L3d6cG1tYy9jZTlmOGIzNmUxZmZiZTU1 +MzI5YzE5NmM4NGZlNTE5Ny5wbmciIHN0eWxlPSJtYXgtd2lkdGg6IHVuc2V0OyI+PC9kaXY+PGRp +diBzdHlsZT0ibWFyZ2luOiAwcHg7IHBhZGRpbmc6IDBweDsgYm9yZGVyOiAwcHg7IG91dGxpbmU6 +IDBweDsgZm9udC1mYW1pbHk6IFRhaG9tYSwgQXJpYWwsIFNUSGVpdGksIFNpbVN1bjsgZm9udC12 +YXJpYW50LWxpZ2F0dXJlczogbm9ybWFsOyBvcnBoYW5zOiAyOyB3aWRvd3M6IDI7IGNsZWFyOiBi +b3RoOyI+PHNwYW4gc3R5bGU9Im1hcmdpbjogMHB4OyBwYWRkaW5nOiAwcHg7IGJvcmRlcjogMHB4 +OyBvdXRsaW5lOiAwcHg7IGZvbnQtZmFtaWx5OiAmcXVvdDtNaWNyb3NvZnQgWWFoZWkmcXVvdDs7 +IGNvbG9yOiByZ2IoMTkxLCAxOTEsIDE5MSk7Ij7lnLDlnYDvvJrkuK3lm73Ct+WNl+S6rOS6keWv +huWfjkzmoIs1LzEw5qW8PC9zcGFuPjwvZGl2PjxkaXYgc3R5bGU9Im1hcmdpbjogMHB4OyBwYWRk +aW5nOiAwcHg7IGJvcmRlcjogMHB4OyBvdXRsaW5lOiAwcHg7IGZvbnQtZmFtaWx5OiBUYWhvbWEs +IEFyaWFsLCBTVEhlaXRpLCBTaW1TdW47IGZvbnQtdmFyaWFudC1saWdhdHVyZXM6IG5vcm1hbDsg +b3JwaGFuczogMjsgd2lkb3dzOiAyOyBjbGVhcjogYm90aDsiPjxzcGFuIHN0eWxlPSJtYXJnaW46 +IDBweDsgcGFkZGluZzogMHB4OyBib3JkZXI6IDBweDsgb3V0bGluZTogMHB4OyBmb250LWZhbWls +eTogJnF1b3Q7TWljcm9zb2Z0IFlhaGVpJnF1b3Q7OyBjb2xvcjogcmdiKDE5MSwgMTkxLCAxOTEp +OyI+5omL5py677yaMTg3MjYxMjg0ODk8L3NwYW4+PC9kaXY+PGRpdiBzdHlsZT0ibWFyZ2luOiAw +cHg7IHBhZGRpbmc6IDBweDsgYm9yZGVyOiAwcHg7IG91dGxpbmU6IDBweDsgZm9udC1mYW1pbHk6 +IFRhaG9tYSwgQXJpYWwsIFNUSGVpdGksIFNpbVN1bjsgZm9udC12YXJpYW50LWxpZ2F0dXJlczog +bm9ybWFsOyBvcnBoYW5zOiAyOyB3aWRvd3M6IDI7IGNsZWFyOiBib3RoOyI+PHNwYW4gc3R5bGU9 +Im1hcmdpbjogMHB4OyBwYWRkaW5nOiAwcHg7IGJvcmRlcjogMHB4OyBvdXRsaW5lOiAwcHg7IGZv +bnQtZmFtaWx5OiAmcXVvdDtNaWNyb3NvZnQgWWFoZWkmcXVvdDs7IGNvbG9yOiByZ2IoMTkxLCAx +OTEsIDE5MSk7Ij7pgq7nrrHvvJp5YW5neHVhbkB3aXRzb2Z0LmNuPC9zcGFuPjwvZGl2Pgo8L2Rp +dj4KPC9kaXY+CjwvZGl2Pgo8L2Rpdj4KPC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9ib2R5Pjwv +aHRtbD4= + +--=_mailmaster-6a18e4a4_0_7e87_=-- diff --git a/media/inbound/2025-12-26_1530_G5开发周报_2025-12-22_--_2025-12-26---c34788ea-7d2d-4dbd-bc1b-8b589eec5b85.eml b/media/inbound/2025-12-26_1530_G5开发周报_2025-12-22_--_2025-12-26---c34788ea-7d2d-4dbd-bc1b-8b589eec5b85.eml new file mode 100644 index 0000000..1a04abe --- /dev/null +++ b/media/inbound/2025-12-26_1530_G5开发周报_2025-12-22_--_2025-12-26---c34788ea-7d2d-4dbd-bc1b-8b589eec5b85.eml @@ -0,0 +1,281 @@ +Date: Fri, 26 Dec 2025 15:30:29 +0800 +From: =?utf-8?B?5p2o6L2p?= +To: =?utf-8?B?5YiY5by6?= +Cc: =?utf-8?B?5bGI5paw6b6Z?= , =?utf-8?B?5pyx5paM?= + , =?utf-8?B?6ZmI5piO?= , + =?utf-8?B?5aSP6ZO25pWP?= +Message-ID: +Subject: =?utf-8?B?RzXlvIDlj5HlkajmiqXjgJAyMDI1LTEyLTIyIC0tICAyMDI1LTEy?= + =?utf-8?B?LTI244CR?= +MIME-Version: 1.0 +Content-Type: multipart/alternative; boundary="=_mailmaster-6a18e4a4_0_390c_=" + +--=_mailmaster-6a18e4a4_0_390c_= +Content-Type: text/plain; charset="utf-8" +Content-Transfer-Encoding: base64 + +5oKo5aW977yB5Lul5LiL5piv5oiR5pys5ZGo55qE5bel5L2c5oC757uT5Y+K5LiL5ZGo6K6h5YiS +77yM6K+35a6h6ZiF44CCCuS4gOOAgeacrOWRqOW3peS9nOaAu+e7kwrph43ngrnlt6XkvZzlrozm +iJDmg4XlhrUK5Lu75YqhMe+8mkc15Li75pWw5o2uNS40LjDniYjmnKzlj5HluIMK5Lu75YqhMu+8 +mui0ouWKoTUuNC4w54mI5pys5Y+R5biDCuW4uOinhOW3peS9nArml6XluLjkuovliqEx77yaMjAy +NS0xMi0yMiDkuLvmlbDmja7otKLliqHovazmtYvpl67popjkv67lpI0K5pel5bi45LqL5YqhMu+8 +mjIwMjUtMTItMjMg5Li75pWw5o2u6LSi5Yqh6L2s5rWL6Zeu6aKY5L+u5aSNIArml6XluLjkuovl +iqEz77yaMjAyNS0xMi0yNCDkuLvmlbDmja7otKLliqHovazmtYvpl67popjkv67lpI0K5pel5bi4 +5LqL5YqhNO+8mjIwMjUtMTItMjUg54mI5pys5rWL6K+V5a6M5oiQCuaXpeW4uOS6i+WKoTTvvJoy +MDI1LTEyLTI2IOeUn+S6p+mXrumimOWIhuaekOS4juW3peWNleWkhOeQhiDniYjmnKzlj5HluIPm +lK/mjIEK6YeN54K55Lu75YqhCuiuoeWIkjHvvJpHNeS4u+aVsOaNrjUuNC4x54mI5pys6ZyA5rGC +5byA5Y+RCuWkh+azqO+8mjIwMjUtMTItMjYg5LiL5Y2I6K+35YGHCkJlc3QgcmVnYXJkcyzmnajo +vakK5Zyw5Z2A77ya5Lit5Zu9wrfljZfkuqzkupHlr4bln45M5qCLNS8xMOalvArmiYvmnLrvvJox +ODcyNjEyODQ4OQrpgq7nrrHvvJp5YW5neHVhbkB3aXRzb2Z0LmNu + +--=_mailmaster-6a18e4a4_0_390c_= +Content-Type: text/html; charset="utf-8" +Content-Transfer-Encoding: base64 + +PGh0bWw+PGhlYWQ+PG1ldGEgaHR0cC1lcXVpdj0nQ29udGVudC1UeXBlJyBjb250ZW50PSd0ZXh0 +L2h0bWw7IGNoYXJzZXQ9VVRGLTgnPjwvaGVhZD48Ym9keSBzdHlsZT1saW5lLWhlaWdodDogMS41 +O2ZvbnQtZmFtaWx5OiAi5b6u6L2v6ZuF6buRIj48ZGl2ICBzdHlsZT0iZm9udC1mYW1pbHk6IOW+ +rui9r+mbhem7kTsiPjxkaXYgc3R5bGU9ImZvbnQtZmFtaWx5OiDlvq7ova/pm4Xpu5E7Ij48ZGl2 +IHN0eWxlPSJsaW5lLWhlaWdodDoiIDEuNTtmb250LWZhbWlseTo9IiIgIuW+rui9r+mbhem7kSI9 +IiI+PGRpdiBzdHlsZT0iZm9udC1mYW1pbHk6IOW+rui9r+mbhem7kTsiPjxkaXYgc3R5bGU9ImZv +bnQtZmFtaWx5OiDlvq7ova/pm4Xpu5E7Ij48ZGl2IHN0eWxlPSIiPjxkaXYgc3R5bGU9IiI+PHAg +Y2lkPSJuMCIgbWR0eXBlPSJwYXJhZ3JhcGgiIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCBtZC1m +b2N1cyIgc3R5bGU9ImZvbnQtZmFtaWx5OiAmcXVvdDtPcGVuIFNhbnMmcXVvdDssICZxdW90O0Ns +ZWFyIFNhbnMmcXVvdDssICZxdW90O0hlbHZldGljYSBOZXVlJnF1b3Q7LCBIZWx2ZXRpY2EsIEFy +aWFsLCBzYW5zLXNlcmlmOyBib3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5o +ZXJpdDsgb3JwaGFuczogNDsgbWFyZ2luOiAwLjhlbSAwcHg7IHdoaXRlLXNwYWNlOiBwcmUtd3Jh +cDsgcG9zaXRpb246IHJlbGF0aXZlOyBjb2xvcjogcmdiKDUxLCA1MSwgNTEpOyBmb250LXNpemU6 +IDE2cHg7Ij48c3BhbiBtZC1pbmxpbmU9InBsYWluIiBjbGFzcz0ibWQtcGxhaW4gbWQtZXhwYW5k +IiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPuaCqOWlve+8geS7peS4i+aYr+aIkeac +rOWRqOeahOW3peS9nOaAu+e7k+WPiuS4i+WRqOiuoeWIku+8jOivt+WuoemYheOAgjwvc3Bhbj48 +L3A+PGRpdiB0YWJpbmRleD0iLTEiIGNpZD0ibjIiIG1kdHlwZT0iaHIiIGNsYXNzPSJtZC1ociBt +ZC1lbmQtYmxvY2siIHN0eWxlPSJmb250LWZhbWlseTogJnF1b3Q7T3BlbiBTYW5zJnF1b3Q7LCAm +cXVvdDtDbGVhciBTYW5zJnF1b3Q7LCAmcXVvdDtIZWx2ZXRpY2EgTmV1ZSZxdW90OywgSGVsdmV0 +aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjsgYm94LXNpemluZzogYm9yZGVyLWJveDsgY29sb3I6IHJn +Yig1MSwgNTEsIDUxKTsgZm9udC1zaXplOiAxNnB4OyI+PGhyIHN0eWxlPSJib3gtc2l6aW5nOiBj +b250ZW50LWJveDsgaGVpZ2h0OiAycHg7IG1hcmdpbjogMTZweCAwcHg7IGJvcmRlcjogMHB4IG5v +bmU7IHBhZGRpbmc6IDBweDsgYmFja2dyb3VuZC1jb2xvcjogcmdiKDIzMSwgMjMxLCAyMzEpOyI+ +PC9kaXY+PGgzIGNpZD0ibjMiIG1kdHlwZT0iaGVhZGluZyIgY2xhc3M9Im1kLWVuZC1ibG9jayBt +ZC1oZWFkaW5nIiBzdHlsZT0iZm9udC1mYW1pbHk6ICZxdW90O09wZW4gU2FucyZxdW90OywgJnF1 +b3Q7Q2xlYXIgU2FucyZxdW90OywgJnF1b3Q7SGVsdmV0aWNhIE5ldWUmcXVvdDssIEhlbHZldGlj +YSwgQXJpYWwsIHNhbnMtc2VyaWY7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7IGJyZWFrLWFmdGVy +OiBhdm9pZC1wYWdlOyBicmVhay1pbnNpZGU6IGF2b2lkOyBvcnBoYW5zOiA0OyBmb250LXNpemU6 +IDEuNWVtOyBtYXJnaW4tdG9wOiAxcmVtOyBtYXJnaW4tYm90dG9tOiAxcmVtOyBwb3NpdGlvbjog +cmVsYXRpdmU7IGxpbmUtaGVpZ2h0OiAxLjQzOyBjdXJzb3I6IHRleHQ7IHdoaXRlLXNwYWNlOiBw +cmUtd3JhcDsgY29sb3I6IHJnYig1MSwgNTEsIDUxKTsiPjxzcGFuIG1kLWlubGluZT0ic3Ryb25n +IiBjbGFzcz0ibWQtcGFpci1zICIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij48c3Ry +b25nIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+PHNwYW4gbWQtaW5saW5lPSJwbGFp +biIgY2xhc3M9Im1kLXBsYWluIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPuS4gOOA +geacrOWRqOW3peS9nOaAu+e7kzwvc3Bhbj48L3N0cm9uZz48L3NwYW4+PC9oMz48b2wgY2xhc3M9 +Im9sLWxpc3QiIHN0YXJ0PSIiIGNpZD0ibjQiIG1kdHlwZT0ibGlzdCIgc3R5bGU9ImZvbnQtZmFt +aWx5OiAmcXVvdDtPcGVuIFNhbnMmcXVvdDssICZxdW90O0NsZWFyIFNhbnMmcXVvdDssICZxdW90 +O0hlbHZldGljYSBOZXVlJnF1b3Q7LCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmOyBib3gt +c2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcGFkZGluZy1sZWZ0OiAzMHB4OyBwb3Np +dGlvbjogcmVsYXRpdmU7IGNvbG9yOiByZ2IoNTEsIDUxLCA1MSk7IGZvbnQtc2l6ZTogMTZweDsi +PjxsaSBjbGFzcz0ibWQtbGlzdC1pdGVtIiBjaWQ9Im41IiBtZHR5cGU9Imxpc3RfaXRlbSIgc3R5 +bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBwb3NpdGlvbjogcmVsYXRp +dmU7Ij48cCBjaWQ9Im42IiBtZHR5cGU9InBhcmFncmFwaCIgY2xhc3M9Im1kLWVuZC1ibG9jayBt +ZC1wIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7 +IG9ycGhhbnM6IDQ7IG1hcmdpbjogMHB4IDBweCAwLjVyZW07IHdoaXRlLXNwYWNlOiBwcmUtd3Jh +cDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHNwYW4gbWQtaW5saW5lPSJzdHJvbmciIGNsYXNzPSJt +ZC1wYWlyLXMgIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPjxzdHJvbmcgc3R5bGU9 +ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij48c3BhbiBtZC1pbmxpbmU9InBsYWluIiBjbGFzcz0i +bWQtcGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+6YeN54K55bel5L2c5a6M +5oiQ5oOF5Ya1PC9zcGFuPjwvc3Ryb25nPjwvc3Bhbj48L3A+PC9saT48dWwgY2xhc3M9InVsLWxp +c3QiIGNpZD0ibjciIG1kdHlwZT0ibGlzdCIgZGF0YS1tYXJrPSItIiBzdHlsZT0iYm94LXNpemlu +ZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBhZGRpbmctbGVmdDogMzBweDsgcG9zaXRpb246 +IHJlbGF0aXZlOyI+PGxpIGNsYXNzPSJtZC1saXN0LWl0ZW0iIGNpZD0ibjgiIG1kdHlwZT0ibGlz +dF9pdGVtIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBvc2l0 +aW9uOiByZWxhdGl2ZTsiPjxwIGNpZD0ibjkiIG1kdHlwZT0icGFyYWdyYXBoIiBjbGFzcz0ibWQt +ZW5kLWJsb2NrIG1kLXAiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdo +dDogaW5oZXJpdDsgb3JwaGFuczogNDsgbWFyZ2luOiAwcHggMHB4IDAuNXJlbTsgd2hpdGUtc3Bh +Y2U6IHByZS13cmFwOyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48c3BhbiBtZC1pbmxpbmU9InBsYWlu +IiBjbGFzcz0ibWQtcGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+5Lu75Yqh +Me+8mkc15Li75pWw5o2uNS40LjDniYjmnKzlj5HluIM8L3NwYW4+PC9wPjwvbGk+PGxpIGNsYXNz +PSJtZC1saXN0LWl0ZW0iIGNpZD0ibjEwIiBtZHR5cGU9Imxpc3RfaXRlbSIgc3R5bGU9ImJveC1z +aXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48cCBj +aWQ9Im4xMSIgbWR0eXBlPSJwYXJhZ3JhcGgiIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCIgc3R5 +bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhlcml0OyBvcnBoYW5z +OiA0OyBtYXJnaW46IDBweCAwcHggMC41cmVtOyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0 +aW9uOiByZWxhdGl2ZTsiPuS7u+WKoTLvvJrotKLliqE1LjQuMOeJiOacrOWPkeW4gzwvcD48L2xp +PjwvdWw+PGxpIGNsYXNzPSJtZC1saXN0LWl0ZW0iIGNpZD0ibjEyIiBtZHR5cGU9Imxpc3RfaXRl +bSIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBwb3NpdGlvbjog +cmVsYXRpdmU7Ij48cCBjaWQ9Im4xMyIgbWR0eXBlPSJwYXJhZ3JhcGgiIGNsYXNzPSJtZC1lbmQt +YmxvY2sgbWQtcCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGxpbmUtaGVpZ2h0OiBp +bmhlcml0OyBvcnBoYW5zOiA0OyBtYXJnaW46IDBweCAwcHggMC41cmVtOyB3aGl0ZS1zcGFjZTog +cHJlLXdyYXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxzcGFuIG1kLWlubGluZT0ic3Ryb25nIiBj +bGFzcz0ibWQtcGFpci1zICIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij48c3Ryb25n +IHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+PHNwYW4gbWQtaW5saW5lPSJwbGFpbiIg +Y2xhc3M9Im1kLXBsYWluIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPuW4uOinhOW3 +peS9nDwvc3Bhbj48L3N0cm9uZz48L3NwYW4+PC9wPjwvbGk+PHVsIGNsYXNzPSJ1bC1saXN0IiBj +aWQ9Im4xNCIgbWR0eXBlPSJsaXN0IiBkYXRhLW1hcms9Ii0iIHN0eWxlPSJib3gtc2l6aW5nOiBi +b3JkZXItYm94OyBtYXJnaW46IDBweDsgcGFkZGluZy1sZWZ0OiAzMHB4OyBwb3NpdGlvbjogcmVs +YXRpdmU7Ij48bGkgY2xhc3M9Im1kLWxpc3QtaXRlbSIgY2lkPSJuMTUiIG1kdHlwZT0ibGlzdF9p +dGVtIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBvc2l0aW9u +OiByZWxhdGl2ZTsiPjxwIGNpZD0ibjE2IiBtZHR5cGU9InBhcmFncmFwaCIgY2xhc3M9Im1kLWVu +ZC1ibG9jayBtZC1wIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6 +IGluaGVyaXQ7IG9ycGhhbnM6IDQ7IG1hcmdpbjogMHB4IDBweCAwLjVyZW07IHdoaXRlLXNwYWNl +OiBwcmUtd3JhcDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHNwYW4gbWQtaW5saW5lPSJwbGFpbiIg +Y2xhc3M9Im1kLXBsYWluIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPuaXpeW4uOS6 +i+WKoTHvvJoyMDI1LTEyLTIyIOS4u+aVsOaNrui0ouWKoei9rOa1i+mXrumimOS/ruWkjTwvc3Bh +bj48L3A+PC9saT48L3VsPjwvb2w+PG9sIGNsYXNzPSJvbC1saXN0IiBzdGFydD0iIiBjaWQ9Im40 +IiBtZHR5cGU9Imxpc3QiIHN0eWxlPSJmb250LWZhbWlseTog5b6u6L2v6ZuF6buROyBib3gtc2l6 +aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcGFkZGluZy1sZWZ0OiAzMHB4OyBwb3NpdGlv +bjogcmVsYXRpdmU7Ij48dWwgY2xhc3M9InVsLWxpc3QiIGNpZD0ibjE0IiBtZHR5cGU9Imxpc3Qi +IGRhdGEtbWFyaz0iLSIgc3R5bGU9ImZvbnQtZmFtaWx5OiDlvq7ova/pm4Xpu5E7IGJveC1zaXpp +bmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBwYWRkaW5nLWxlZnQ6IDMwcHg7IHBvc2l0aW9u +OiByZWxhdGl2ZTsiPjxsaSBjbGFzcz0ibWQtbGlzdC1pdGVtIiBjaWQ9Im4xNSIgbWR0eXBlPSJs +aXN0X2l0ZW0iIHN0eWxlPSJjb2xvcjogcmdiKDUxLCA1MSwgNTEpOyBmb250LWZhbWlseTogJnF1 +b3Q7T3BlbiBTYW5zJnF1b3Q7LCAmcXVvdDtDbGVhciBTYW5zJnF1b3Q7LCAmcXVvdDtIZWx2ZXRp +Y2EgTmV1ZSZxdW90OywgSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjsgZm9udC1zaXplOiAx +NnB4OyBib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcG9zaXRpb246IHJlbGF0 +aXZlOyI+PHAgY2lkPSJuMTYiIG1kdHlwZT0icGFyYWdyYXBoIiBjbGFzcz0ibWQtZW5kLWJsb2Nr +IG1kLXAiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5oZXJp +dDsgb3JwaGFuczogNDsgbWFyZ2luOiAwcHggMHB4IDAuNXJlbTsgd2hpdGUtc3BhY2U6IHByZS13 +cmFwOyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48c3BhbiBtZC1pbmxpbmU9InBsYWluIiBjbGFzcz0i +bWQtcGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+5pel5bi45LqL5YqhMu+8 +mjIwMjUtMTItMjMg5Li75pWw5o2u6LSi5Yqh6L2s5rWL6Zeu6aKY5L+u5aSNCjwvc3Bhbj48L3A+ +PC9saT48bGkgY2xhc3M9Im1kLWxpc3QtaXRlbSIgY2lkPSJuMTciIG1kdHlwZT0ibGlzdF9pdGVt +IiBzdHlsZT0iY29sb3I6IHJnYig1MSwgNTEsIDUxKTsgZm9udC1mYW1pbHk6ICZxdW90O09wZW4g +U2FucyZxdW90OywgJnF1b3Q7Q2xlYXIgU2FucyZxdW90OywgJnF1b3Q7SGVsdmV0aWNhIE5ldWUm +cXVvdDssIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTZweDsgYm94 +LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxw +IGNpZD0ibjE4IiBtZHR5cGU9InBhcmFncmFwaCIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1wIiBz +dHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IG9ycGhh +bnM6IDQ7IG1hcmdpbjogMHB4IDBweCAwLjVyZW07IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9z +aXRpb246IHJlbGF0aXZlOyI+PHNwYW4gbWQtaW5saW5lPSJwbGFpbiIgY2xhc3M9Im1kLXBsYWlu +IiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPuaXpeW4uOS6i+WKoTPvvJoyMDI1LTEy +LTI0IOS4u+aVsOaNrui0ouWKoei9rOa1i+mXrumimOS/ruWkjTxicj48L3NwYW4+PC9wPjwvbGk+ +PC91bD48L29sPjxvbCBjbGFzcz0ib2wtbGlzdCIgc3RhcnQ9IiIgY2lkPSJuNCIgbWR0eXBlPSJs +aXN0IiBzdHlsZT0iZm9udC1mYW1pbHk6IOW+rui9r+mbhem7kTsgYm94LXNpemluZzogYm9yZGVy +LWJveDsgbWFyZ2luOiAwcHg7IHBhZGRpbmctbGVmdDogMzBweDsgcG9zaXRpb246IHJlbGF0aXZl +OyI+PHVsIGNsYXNzPSJ1bC1saXN0IiBjaWQ9Im4xNCIgbWR0eXBlPSJsaXN0IiBkYXRhLW1hcms9 +Ii0iIHN0eWxlPSJmb250LWZhbWlseTog5b6u6L2v6ZuF6buROyBib3gtc2l6aW5nOiBib3JkZXIt +Ym94OyBtYXJnaW46IDBweDsgcGFkZGluZy1sZWZ0OiAzMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7 +Ij48bGkgY2xhc3M9Im1kLWxpc3QtaXRlbSIgY2lkPSJuMTciIG1kdHlwZT0ibGlzdF9pdGVtIiBz +dHlsZT0iY29sb3I6IHJnYig1MSwgNTEsIDUxKTsgZm9udC1mYW1pbHk6ICZxdW90O09wZW4gU2Fu +cyZxdW90OywgJnF1b3Q7Q2xlYXIgU2FucyZxdW90OywgJnF1b3Q7SGVsdmV0aWNhIE5ldWUmcXVv +dDssIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTZweDsgYm94LXNp +emluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxwIGNp +ZD0ibjE4IiBtZHR5cGU9InBhcmFncmFwaCIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1wIiBzdHls +ZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IG9ycGhhbnM6 +IDQ7IG1hcmdpbjogMHB4IDBweCAwLjVyZW07IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRp +b246IHJlbGF0aXZlOyI+PHNwYW4gbWQtaW5saW5lPSJwbGFpbiIgY2xhc3M9Im1kLXBsYWluIiBz +dHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPuaXpeW4uOS6i+WKoTTvvJoyMDI1LTEyLTI1 +IOeJiOacrOa1i+ivleWujOaIkDwvc3Bhbj48L3A+PC9saT48bGkgY2xhc3M9Im1kLWxpc3QtaXRl +bSIgY2lkPSJuMTciIG1kdHlwZT0ibGlzdF9pdGVtIiBzdHlsZT0iY29sb3I6IHJnYig1MSwgNTEs +IDUxKTsgZm9udC1mYW1pbHk6ICZxdW90O09wZW4gU2FucyZxdW90OywgJnF1b3Q7Q2xlYXIgU2Fu +cyZxdW90OywgJnF1b3Q7SGVsdmV0aWNhIE5ldWUmcXVvdDssIEhlbHZldGljYSwgQXJpYWwsIHNh +bnMtc2VyaWY7IGZvbnQtc2l6ZTogMTZweDsgYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2lu +OiAwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxwIGNpZD0ibjE4IiBtZHR5cGU9InBhcmFncmFw +aCIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1wIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJv +eDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IG9ycGhhbnM6IDQ7IG1hcmdpbjogMHB4IDBweCAwLjVy +ZW07IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHNwYW4gbWQt +aW5saW5lPSJwbGFpbiIgY2xhc3M9Im1kLXBsYWluIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVy +LWJveDsiPuaXpeW4uOS6i+WKoTTvvJoyMDI1LTEyLTI2IOeUn+S6p+mXrumimOWIhuaekOS4juW3 +peWNleWkhOeQhiDniYjmnKzlj5HluIPmlK/mjIE8L3NwYW4+PC9wPjwvbGk+PC91bD48L29sPjxv +bCBjbGFzcz0ib2wtbGlzdCIgc3RhcnQ9IiIgY2lkPSJuMjYiIG1kdHlwZT0ibGlzdCIgc3R5bGU9 +ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBwYWRkaW5nLWxlZnQ6IDMwcHg7 +IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxsaSBjbGFzcz0ibWQtbGlzdC1pdGVtIiBjaWQ9Im4yNyIg +bWR0eXBlPSJsaXN0X2l0ZW0iIHN0eWxlPSJmb250LWZhbWlseTogJnF1b3Q7T3BlbiBTYW5zJnF1 +b3Q7LCAmcXVvdDtDbGVhciBTYW5zJnF1b3Q7LCAmcXVvdDtIZWx2ZXRpY2EgTmV1ZSZxdW90Oywg +SGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjsgY29sb3I6IHJnYig1MSwgNTEsIDUxKTsgZm9u +dC1zaXplOiAxNnB4OyBib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcG9zaXRp +b246IHJlbGF0aXZlOyI+PHAgY2lkPSJuMjgiIG1kdHlwZT0icGFyYWdyYXBoIiBjbGFzcz0ibWQt +ZW5kLWJsb2NrIG1kLXAiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdo +dDogaW5oZXJpdDsgb3JwaGFuczogNDsgbWFyZ2luOiAwcHggMHB4IDAuNXJlbTsgd2hpdGUtc3Bh +Y2U6IHByZS13cmFwOyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48c3BhbiBtZC1pbmxpbmU9InN0cm9u +ZyIgY2xhc3M9Im1kLXBhaXItcyAiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+PHN0 +cm9uZyBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPjxzcGFuIG1kLWlubGluZT0icGxh +aW4iIGNsYXNzPSJtZC1wbGFpbiIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij7ph43n +grnku7vliqE8L3NwYW4+PC9zdHJvbmc+PC9zcGFuPjwvcD48L2xpPjx1bCBjbGFzcz0idWwtbGlz +dCIgY2lkPSJuMjkiIG1kdHlwZT0ibGlzdCIgZGF0YS1tYXJrPSItIiBzdHlsZT0iZm9udC1mYW1p +bHk6ICZxdW90O09wZW4gU2FucyZxdW90OywgJnF1b3Q7Q2xlYXIgU2FucyZxdW90OywgJnF1b3Q7 +SGVsdmV0aWNhIE5ldWUmcXVvdDssIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7IGNvbG9y +OiByZ2IoNTEsIDUxLCA1MSk7IGZvbnQtc2l6ZTogMTZweDsgYm94LXNpemluZzogYm9yZGVyLWJv +eDsgbWFyZ2luOiAwcHg7IHBhZGRpbmctbGVmdDogMzBweDsgcG9zaXRpb246IHJlbGF0aXZlOyI+ +PGxpIGNsYXNzPSJtZC1saXN0LWl0ZW0iIGNpZD0ibjMwIiBtZHR5cGU9Imxpc3RfaXRlbSIgc3R5 +bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBwb3NpdGlvbjogcmVsYXRp +dmU7Ij48cCBjaWQ9Im4zMSIgbWR0eXBlPSJwYXJhZ3JhcGgiIGNsYXNzPSJtZC1lbmQtYmxvY2sg +bWQtcCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhlcml0 +OyBvcnBoYW5zOiA0OyBtYXJnaW46IDBweCAwcHggMC41cmVtOyB3aGl0ZS1zcGFjZTogcHJlLXdy +YXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxzcGFuIG1kLWlubGluZT0icGxhaW4iIGNsYXNzPSJt +ZC1wbGFpbiIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij7orqHliJIx77yaRzXkuLvm +lbDmja41LjQuMeeJiOacrOmcgOaxguW8gOWPkTwvc3Bhbj48L3A+PC9saT48L3VsPjwvb2w+PGRp +diB0YWJpbmRleD0iLTEiIGNpZD0ibjM5IiBtZHR5cGU9ImhyIiBjbGFzcz0ibWQtaHIgbWQtZW5k +LWJsb2NrIiBzdHlsZT0iZm9udC1mYW1pbHk6ICZxdW90O09wZW4gU2FucyZxdW90OywgJnF1b3Q7 +Q2xlYXIgU2FucyZxdW90OywgJnF1b3Q7SGVsdmV0aWNhIE5ldWUmcXVvdDssIEhlbHZldGljYSwg +QXJpYWwsIHNhbnMtc2VyaWY7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7IGNvbG9yOiByZ2IoNTEs +IDUxLCA1MSk7IGZvbnQtc2l6ZTogMTZweDsiPjxociBzdHlsZT0iYm94LXNpemluZzogY29udGVu +dC1ib3g7IGhlaWdodDogMnB4OyBtYXJnaW46IDE2cHggMHB4OyBib3JkZXI6IDBweCBub25lOyBw +YWRkaW5nOiAwcHg7IGJhY2tncm91bmQtY29sb3I6IHJnYigyMzEsIDIzMSwgMjMxKTsiPjwvZGl2 +PjxwIGNpZD0ibjQwIiBtZHR5cGU9InBhcmFncmFwaCIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1w +IiBzdHlsZT0iZm9udC1mYW1pbHk6ICZxdW90O09wZW4gU2FucyZxdW90OywgJnF1b3Q7Q2xlYXIg +U2FucyZxdW90OywgJnF1b3Q7SGVsdmV0aWNhIE5ldWUmcXVvdDssIEhlbHZldGljYSwgQXJpYWws +IHNhbnMtc2VyaWY7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhlcml0 +OyBvcnBoYW5zOiA0OyBtYXJnaW46IDAuOGVtIDBweDsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyBw +b3NpdGlvbjogcmVsYXRpdmU7IGNvbG9yOiByZ2IoNTEsIDUxLCA1MSk7IGZvbnQtc2l6ZTogMTZw +eDsiPjxzcGFuIG1kLWlubGluZT0ic3Ryb25nIiBjbGFzcz0ibWQtcGFpci1zICIgc3R5bGU9ImJv +eC1zaXppbmc6IGJvcmRlci1ib3g7Ij48c3Ryb25nIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXIt +Ym94OyI+PHNwYW4gbWQtaW5saW5lPSJwbGFpbiIgY2xhc3M9Im1kLXBsYWluIiBzdHlsZT0iYm94 +LXNpemluZzogYm9yZGVyLWJveDsiPuWkh+azqDwvc3Bhbj48L3N0cm9uZz48L3NwYW4+PHNwYW4g +bWQtaW5saW5lPSJwbGFpbiIgY2xhc3M9Im1kLXBsYWluIG1kLWV4cGFuZCIgc3R5bGU9ImJveC1z +aXppbmc6IGJvcmRlci1ib3g7Ij7vvJo8L3NwYW4+MjAyNS0xMi0yNiDkuIvljYjor7flgYc8L3A+ +PC9kaXY+PGRpdiBzdHlsZT0iZm9udC1mYW1pbHk6IOW+rui9r+mbhem7kTsiPjxicj48L2Rpdj48 +L2Rpdj48IS0t8J+YgC0tPjwvZGl2PjwvZGl2PjwvZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+PGJy +PjwvZGl2PjxkaXYgaWQ9ImltYWlsX3NpZ25hdHVyZSIgY2xhc3M9Im50ZXMtc2lnbmF0dXJlIiBz +dHlsZT0ibWFyZ2luOjIwcHggMDsiIGRhdGEtbnRlcy1zaWduYXR1cmU9InRydWUiIHNwZWxsY2hl +Y2s9ImZhbHNlIj48ZGl2IHN0eWxlPSJmb250LWZhbWlseTomcXVvdDvlvq7ova/pm4Xpu5EmcXVv +dDs7IGZvbnQtc2l6ZTogMTRweDsgY29sb3I6IzAwMDAwMCI+CiAgICA8c3R5bGU+CiAgICAgICAg +Zm9udHsKICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDEuNjsKICAgICAgICB9CiAgICA8L3N0eWxl +Pgo8ZGl2IHN0eWxlPSJmb250LWZhbWlseTomcXVvdDvlvq7ova/pm4Xpu5EmcXVvdDs7IGZvbnQt +c2l6ZTogMTRweDsgY29sb3I6IzAwMDAwMCI+CiAgICA8c3R5bGU+CiAgICAgICAgZm9udHsKICAg +ICAgICAgICAgbGluZS1oZWlnaHQ6IDEuNjsKICAgICAgICB9CiAgICA8L3N0eWxlPgo8ZGl2IHN0 +eWxlPSJmb250LWZhbWlseTomcXVvdDvlvq7ova/pm4Xpu5EmcXVvdDs7IGZvbnQtc2l6ZTogMTRw +eDsgY29sb3I6IzAwMDAwMCI+CiAgICA8c3R5bGU+CiAgICAgICAgZm9udHsKICAgICAgICAgICAg +bGluZS1oZWlnaHQ6IDEuNjsKICAgICAgICB9CiAgICA8L3N0eWxlPgo8ZGl2IHN0eWxlPSJmb250 +LWZhbWlseTomcXVvdDvlvq7ova/pm4Xpu5EmcXVvdDs7IGZvbnQtc2l6ZTogMTRweDsgY29sb3I6 +IzAwMDAwMCI+CiAgICA8c3R5bGU+CiAgICAgICAgZm9udHsKICAgICAgICAgICAgbGluZS1oZWln +aHQ6IDEuNjsKICAgICAgICB9CiAgICA8L3N0eWxlPgo8ZGl2IHN0eWxlPSJmb250LWZhbWlseTom +cXVvdDvlvq7ova/pm4Xpu5EmcXVvdDs7IGZvbnQtc2l6ZTogMTRweDsgY29sb3I6IzAwMDAwMCI+ +CiAgICA8c3R5bGU+CiAgICAgICAgZm9udHsKICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDEuNjsK +ICAgICAgICB9CiAgICA8L3N0eWxlPgo8c3BhbiBzdHlsZT0iY29sb3I6IHJnYigxOTEsIDE5MSwg +MTkxKTsgZm9udC1mYW1pbHk6ICdNaWNyb3NvZnQgWWFoZWknOyBmb250LXNpemU6IDEzcHg7IG9y +cGhhbnM6IDI7IHdpZG93czogMjsiPkJlc3QgcmVnYXJkcyw8L3NwYW4+PGRpdiBzdHlsZT0ibWFy +Z2luOiAwcHg7IHBhZGRpbmc6IDBweDsgYm9yZGVyOiAwcHg7IG91dGxpbmU6IDBweDsgZm9udC1m +YW1pbHk6IFRhaG9tYSwgQXJpYWwsIFNUSGVpdGksIFNpbVN1bjsgZm9udC12YXJpYW50LWxpZ2F0 +dXJlczogbm9ybWFsOyBvcnBoYW5zOiAyOyB3aWRvd3M6IDI7IGNsZWFyOiBib3RoOyI+PHNwYW4g +c3R5bGU9Im1hcmdpbjogMHB4OyBwYWRkaW5nOiAwcHg7IGJvcmRlcjogMHB4OyBvdXRsaW5lOiAw +cHg7IGZvbnQtZmFtaWx5OiAmcXVvdDtNaWNyb3NvZnQgWWFoZWkmcXVvdDs7IGZvbnQtc2l6ZTog +MTNweDsgY29sb3I6IHJnYigxOTEsIDE5MSwgMTkxKTsiPuadqOi9qTwvc3Bhbj48L2Rpdj48ZGl2 +IHN0eWxlPSJtYXJnaW46IDBweDsgcGFkZGluZzogMHB4OyBib3JkZXI6IDBweDsgb3V0bGluZTog +MHB4OyBmb250LWZhbWlseTogVGFob21hLCBBcmlhbCwgU1RIZWl0aSwgU2ltU3VuOyBmb250LXZh +cmlhbnQtbGlnYXR1cmVzOiBub3JtYWw7IG9ycGhhbnM6IDI7IHdpZG93czogMjsgY2xlYXI6IGJv +dGg7Ij48L2Rpdj48ZGl2IHN0eWxlPSJtYXJnaW46IDBweDsgcGFkZGluZzogMHB4OyBib3JkZXI6 +IDBweDsgb3V0bGluZTogMHB4OyBmb250LWZhbWlseTogVGFob21hLCBBcmlhbCwgU1RIZWl0aSwg +U2ltU3VuOyBmb250LXZhcmlhbnQtbGlnYXR1cmVzOiBub3JtYWw7IG9ycGhhbnM6IDI7IHdpZG93 +czogMjsgY2xlYXI6IGJvdGg7Ij48aW1nIHNyYz0iaHR0cHM6Ly9tYWlsLW9ubGluZS5ub3Nkbi4x +MjcubmV0L3d6cG1tYy9jZTlmOGIzNmUxZmZiZTU1MzI5YzE5NmM4NGZlNTE5Ny5wbmciIHN0eWxl +PSJtYXgtd2lkdGg6IHVuc2V0OyI+PC9kaXY+PGRpdiBzdHlsZT0ibWFyZ2luOiAwcHg7IHBhZGRp +bmc6IDBweDsgYm9yZGVyOiAwcHg7IG91dGxpbmU6IDBweDsgZm9udC1mYW1pbHk6IFRhaG9tYSwg +QXJpYWwsIFNUSGVpdGksIFNpbVN1bjsgZm9udC12YXJpYW50LWxpZ2F0dXJlczogbm9ybWFsOyBv +cnBoYW5zOiAyOyB3aWRvd3M6IDI7IGNsZWFyOiBib3RoOyI+PHNwYW4gc3R5bGU9Im1hcmdpbjog +MHB4OyBwYWRkaW5nOiAwcHg7IGJvcmRlcjogMHB4OyBvdXRsaW5lOiAwcHg7IGZvbnQtZmFtaWx5 +OiAmcXVvdDtNaWNyb3NvZnQgWWFoZWkmcXVvdDs7IGNvbG9yOiByZ2IoMTkxLCAxOTEsIDE5MSk7 +Ij7lnLDlnYDvvJrkuK3lm73Ct+WNl+S6rOS6keWvhuWfjkzmoIs1LzEw5qW8PC9zcGFuPjwvZGl2 +PjxkaXYgc3R5bGU9Im1hcmdpbjogMHB4OyBwYWRkaW5nOiAwcHg7IGJvcmRlcjogMHB4OyBvdXRs +aW5lOiAwcHg7IGZvbnQtZmFtaWx5OiBUYWhvbWEsIEFyaWFsLCBTVEhlaXRpLCBTaW1TdW47IGZv +bnQtdmFyaWFudC1saWdhdHVyZXM6IG5vcm1hbDsgb3JwaGFuczogMjsgd2lkb3dzOiAyOyBjbGVh +cjogYm90aDsiPjxzcGFuIHN0eWxlPSJtYXJnaW46IDBweDsgcGFkZGluZzogMHB4OyBib3JkZXI6 +IDBweDsgb3V0bGluZTogMHB4OyBmb250LWZhbWlseTogJnF1b3Q7TWljcm9zb2Z0IFlhaGVpJnF1 +b3Q7OyBjb2xvcjogcmdiKDE5MSwgMTkxLCAxOTEpOyI+5omL5py677yaMTg3MjYxMjg0ODk8L3Nw +YW4+PC9kaXY+PGRpdiBzdHlsZT0ibWFyZ2luOiAwcHg7IHBhZGRpbmc6IDBweDsgYm9yZGVyOiAw +cHg7IG91dGxpbmU6IDBweDsgZm9udC1mYW1pbHk6IFRhaG9tYSwgQXJpYWwsIFNUSGVpdGksIFNp +bVN1bjsgZm9udC12YXJpYW50LWxpZ2F0dXJlczogbm9ybWFsOyBvcnBoYW5zOiAyOyB3aWRvd3M6 +IDI7IGNsZWFyOiBib3RoOyI+PHNwYW4gc3R5bGU9Im1hcmdpbjogMHB4OyBwYWRkaW5nOiAwcHg7 +IGJvcmRlcjogMHB4OyBvdXRsaW5lOiAwcHg7IGZvbnQtZmFtaWx5OiAmcXVvdDtNaWNyb3NvZnQg +WWFoZWkmcXVvdDs7IGNvbG9yOiByZ2IoMTkxLCAxOTEsIDE5MSk7Ij7pgq7nrrHvvJp5YW5neHVh +bkB3aXRzb2Z0LmNuPC9zcGFuPjwvZGl2Pgo8L2Rpdj4KPC9kaXY+CjwvZGl2Pgo8L2Rpdj4KPC9k +aXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9ib2R5PjwvaHRtbD4= + +--=_mailmaster-6a18e4a4_0_390c_=-- diff --git a/media/inbound/2025-12-31_1745_G5开发周报_2025-12-29_--_2025-12-31---81b79e34-7b65-474c-a857-33a2e422ccce.eml b/media/inbound/2025-12-31_1745_G5开发周报_2025-12-29_--_2025-12-31---81b79e34-7b65-474c-a857-33a2e422ccce.eml new file mode 100644 index 0000000..3d16109 --- /dev/null +++ b/media/inbound/2025-12-31_1745_G5开发周报_2025-12-29_--_2025-12-31---81b79e34-7b65-474c-a857-33a2e422ccce.eml @@ -0,0 +1,365 @@ +Date: Wed, 31 Dec 2025 17:45:52 +0800 +From: =?utf-8?B?5p2o6L2p?= +To: =?utf-8?B?5YiY5by6?= +Cc: =?utf-8?B?5bGI5paw6b6Z?= , =?utf-8?B?5pyx5paM?= + , =?utf-8?B?6ZmI5piO?= , + =?utf-8?B?5aSP6ZO25pWP?= +Message-ID: +Subject: =?utf-8?B?RzXlvIDlj5HlkajmiqXjgJAyMDI1LTEyLTI5IC0tICAyMDI1LTEy?= + =?utf-8?B?LTMx44CR?= +MIME-Version: 1.0 +Content-Type: multipart/alternative; boundary="=_mailmaster-6a18e4a4_0_f3e_=" + +--=_mailmaster-6a18e4a4_0_f3e_= +Content-Type: text/plain; charset="utf-8" +Content-Transfer-Encoding: base64 + +5oKo5aW977yB5Lul5LiL5piv5oiR5pys5ZGo55qE5bel5L2c5oC757uT5Y+K5LiL5ZGo6K6h5YiS +77yM6K+35a6h6ZiF44CCCuS4gOOAgeacrOWRqOW3peS9nOaAu+e7kwrph43ngrnlt6XkvZzlrozm +iJDmg4XlhrUK5Lu75YqhMe+8mkc15Li75pWw5o2uNS40LjHniYjmnKzlvIDlj5EK5Lu75YqhMu+8 +mumUgOWUriDph4fotK3pnIDmsYLliIbmnpAK5bi46KeE5bel5L2cCuaXpeW4uOS6i+WKoTHvvJoy +MDI1LTEyLTI5IOS4u+aVsOaNrumcgOaxguivhOWuoeOAgeWKn+iDveW8gOWPkQrml6XluLjkuovl +iqEy77yaMjAyNS0xMi0zMCDkuLvmlbDmja7mnYPpmZDkurrlkZjmjqXlj6Porr7orqHlvIDlj5Eg +CuaXpeW4uOS6i+WKoTPvvJoyMDI1LTEyLTMxIAox44CB6L2m6Ze0L+W3peW6j+acieadg+mZkOea +hOS4muWKoeS6uuWRmOafpeivouaOpeWPo+i9rOa1iyAKMuOAgeS7k+W6k+WIoOmZpOaXtumcgOim +geagoemqjOivpeS7k+W6k+aYr+WQpuiiq+WFtuS7luS4muWKoeS/oeaBr+S9nOS4uuWFs+mUruWF +s+iBlOS9v+eUqO+8iOWFvOWuuTEw5p2h5Zy65pmv77yJIAoz44CB5a6i5oi355qE54mp5paZ5qCH +5Lu35L+d55WZ5bCP5pWw54K55ZCONuS9jSAKNOOAgUJPTeWvvOWHuuWtkOS7tuWinuWKoOeJqeaW +meaPj+i/sOOAgeWbvuWPt+Wtl+autSAKNeOAgeW3peS9nOS4reW/g+S4i+WFs+iBlOeahOW3peS9 +jeWIoOmZpOWQju+8jOWGjeWIoOmZpOW3peS9nOS4reW/g+S7jeeEtuaPkOekuuW3peS9jeacquWI +oOmZpOmXrumimOS/ruWkjei9rOa1iyAKNuOAgeWFs+iBlOS6uuWRmOaTjeS9nOWQjuWFs+iBlOS6 +uuWRmOWIl+ihqOeahGxpc3TmlbDmja7ov5Tlm57kuLpudWxs77yM5a+86Ie05YmN56uv6Kej5p6Q +5byC5bi45L+u5aSN6L2s5rWLIAo344CB5aSE55CG57uT566X5pa55byP5pWw5o2u5a2X5YW455m+ +5YiG5Y+36Zeu6aKYCuaXpeW4uOS6i+WKoTTvvJoK5pel5bi45LqL5YqhNe+8mgrph43ngrnku7vl +iqEK6K6h5YiSMe+8mkc15Li75pWw5o2uNS40LjHniYjmnKzpnIDmsYLlvIDlj5EK5aSH5rOo77ya +MjAyNS0xMi0yNiDkuIvljYjor7flgYcKQmVzdCByZWdhcmRzLOadqOi9qQrlnLDlnYDvvJrkuK3l +m73Ct+WNl+S6rOS6keWvhuWfjkzmoIs1LzEw5qW8CuaJi+acuu+8mjE4NzI2MTI4NDg5CumCrueu +se+8mnlhbmd4dWFuQHdpdHNvZnQuY24= + +--=_mailmaster-6a18e4a4_0_f3e_= +Content-Type: text/html; charset="utf-8" +Content-Transfer-Encoding: base64 + +PGh0bWw+PGhlYWQ+PG1ldGEgaHR0cC1lcXVpdj0nQ29udGVudC1UeXBlJyBjb250ZW50PSd0ZXh0 +L2h0bWw7IGNoYXJzZXQ9VVRGLTgnPjwvaGVhZD48Ym9keSBzdHlsZT1saW5lLWhlaWdodDogMS41 +O2ZvbnQtZmFtaWx5OiAi5b6u6L2v6ZuF6buRIj48ZGl2ICBzdHlsZT0iZm9udC1mYW1pbHk6IOW+ +rui9r+mbhem7kTsiPjxkaXYgc3R5bGU9ImZvbnQtZmFtaWx5OiDlvq7ova/pm4Xpu5E7Ij48ZGl2 +IHN0eWxlPSJsaW5lLWhlaWdodDoiIDEuNTtmb250LWZhbWlseTo9IiIgIuW+rui9r+mbhem7kSI9 +IiI+PGRpdiBzdHlsZT0iZm9udC1mYW1pbHk6IOW+rui9r+mbhem7kTsiPjxkaXYgc3R5bGU9ImZv +bnQtZmFtaWx5OiDlvq7ova/pm4Xpu5E7Ij48ZGl2IHN0eWxlPSIiPjxkaXYgc3R5bGU9IiI+PHAg +Y2lkPSJuMCIgbWR0eXBlPSJwYXJhZ3JhcGgiIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCBtZC1m +b2N1cyIgc3R5bGU9ImZvbnQtZmFtaWx5OiAmcXVvdDtPcGVuIFNhbnMmcXVvdDssICZxdW90O0Ns +ZWFyIFNhbnMmcXVvdDssICZxdW90O0hlbHZldGljYSBOZXVlJnF1b3Q7LCBIZWx2ZXRpY2EsIEFy +aWFsLCBzYW5zLXNlcmlmOyBib3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5o +ZXJpdDsgb3JwaGFuczogNDsgbWFyZ2luOiAwLjhlbSAwcHg7IHdoaXRlLXNwYWNlOiBwcmUtd3Jh +cDsgcG9zaXRpb246IHJlbGF0aXZlOyBjb2xvcjogcmdiKDUxLCA1MSwgNTEpOyBmb250LXNpemU6 +IDE2cHg7Ij48c3BhbiBtZC1pbmxpbmU9InBsYWluIiBjbGFzcz0ibWQtcGxhaW4gbWQtZXhwYW5k +IiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPuaCqOWlve+8geS7peS4i+aYr+aIkeac +rOWRqOeahOW3peS9nOaAu+e7k+WPiuS4i+WRqOiuoeWIku+8jOivt+WuoemYheOAgjwvc3Bhbj48 +L3A+PGRpdiB0YWJpbmRleD0iLTEiIGNpZD0ibjIiIG1kdHlwZT0iaHIiIGNsYXNzPSJtZC1ociBt +ZC1lbmQtYmxvY2siIHN0eWxlPSJmb250LWZhbWlseTogJnF1b3Q7T3BlbiBTYW5zJnF1b3Q7LCAm +cXVvdDtDbGVhciBTYW5zJnF1b3Q7LCAmcXVvdDtIZWx2ZXRpY2EgTmV1ZSZxdW90OywgSGVsdmV0 +aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjsgYm94LXNpemluZzogYm9yZGVyLWJveDsgY29sb3I6IHJn +Yig1MSwgNTEsIDUxKTsgZm9udC1zaXplOiAxNnB4OyI+PGhyIHN0eWxlPSJib3gtc2l6aW5nOiBj +b250ZW50LWJveDsgaGVpZ2h0OiAycHg7IG1hcmdpbjogMTZweCAwcHg7IGJvcmRlcjogMHB4IG5v +bmU7IHBhZGRpbmc6IDBweDsgYmFja2dyb3VuZC1jb2xvcjogcmdiKDIzMSwgMjMxLCAyMzEpOyI+ +PC9kaXY+PGgzIGNpZD0ibjMiIG1kdHlwZT0iaGVhZGluZyIgY2xhc3M9Im1kLWVuZC1ibG9jayBt +ZC1oZWFkaW5nIiBzdHlsZT0iZm9udC1mYW1pbHk6ICZxdW90O09wZW4gU2FucyZxdW90OywgJnF1 +b3Q7Q2xlYXIgU2FucyZxdW90OywgJnF1b3Q7SGVsdmV0aWNhIE5ldWUmcXVvdDssIEhlbHZldGlj +YSwgQXJpYWwsIHNhbnMtc2VyaWY7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7IGJyZWFrLWFmdGVy +OiBhdm9pZC1wYWdlOyBicmVhay1pbnNpZGU6IGF2b2lkOyBvcnBoYW5zOiA0OyBmb250LXNpemU6 +IDEuNWVtOyBtYXJnaW4tdG9wOiAxcmVtOyBtYXJnaW4tYm90dG9tOiAxcmVtOyBwb3NpdGlvbjog +cmVsYXRpdmU7IGxpbmUtaGVpZ2h0OiAxLjQzOyBjdXJzb3I6IHRleHQ7IHdoaXRlLXNwYWNlOiBw +cmUtd3JhcDsgY29sb3I6IHJnYig1MSwgNTEsIDUxKTsiPjxzcGFuIG1kLWlubGluZT0ic3Ryb25n +IiBjbGFzcz0ibWQtcGFpci1zICIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij48c3Ry +b25nIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+PHNwYW4gbWQtaW5saW5lPSJwbGFp +biIgY2xhc3M9Im1kLXBsYWluIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPuS4gOOA +geacrOWRqOW3peS9nOaAu+e7kzwvc3Bhbj48L3N0cm9uZz48L3NwYW4+PC9oMz48b2wgY2xhc3M9 +Im9sLWxpc3QiIHN0YXJ0PSIiIGNpZD0ibjQiIG1kdHlwZT0ibGlzdCIgc3R5bGU9ImZvbnQtZmFt +aWx5OiAmcXVvdDtPcGVuIFNhbnMmcXVvdDssICZxdW90O0NsZWFyIFNhbnMmcXVvdDssICZxdW90 +O0hlbHZldGljYSBOZXVlJnF1b3Q7LCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmOyBib3gt +c2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcGFkZGluZy1sZWZ0OiAzMHB4OyBwb3Np +dGlvbjogcmVsYXRpdmU7IGNvbG9yOiByZ2IoNTEsIDUxLCA1MSk7IGZvbnQtc2l6ZTogMTZweDsi +PjxsaSBjbGFzcz0ibWQtbGlzdC1pdGVtIiBjaWQ9Im41IiBtZHR5cGU9Imxpc3RfaXRlbSIgc3R5 +bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBwb3NpdGlvbjogcmVsYXRp +dmU7Ij48cCBjaWQ9Im42IiBtZHR5cGU9InBhcmFncmFwaCIgY2xhc3M9Im1kLWVuZC1ibG9jayBt +ZC1wIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7 +IG9ycGhhbnM6IDQ7IG1hcmdpbjogMHB4IDBweCAwLjVyZW07IHdoaXRlLXNwYWNlOiBwcmUtd3Jh +cDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHNwYW4gbWQtaW5saW5lPSJzdHJvbmciIGNsYXNzPSJt +ZC1wYWlyLXMgIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPjxzdHJvbmcgc3R5bGU9 +ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij48c3BhbiBtZC1pbmxpbmU9InBsYWluIiBjbGFzcz0i +bWQtcGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+6YeN54K55bel5L2c5a6M +5oiQ5oOF5Ya1PC9zcGFuPjwvc3Ryb25nPjwvc3Bhbj48L3A+PC9saT48dWwgY2xhc3M9InVsLWxp +c3QiIGNpZD0ibjciIG1kdHlwZT0ibGlzdCIgZGF0YS1tYXJrPSItIiBzdHlsZT0iYm94LXNpemlu +ZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBhZGRpbmctbGVmdDogMzBweDsgcG9zaXRpb246 +IHJlbGF0aXZlOyI+PGxpIGNsYXNzPSJtZC1saXN0LWl0ZW0iIGNpZD0ibjgiIG1kdHlwZT0ibGlz +dF9pdGVtIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBvc2l0 +aW9uOiByZWxhdGl2ZTsiPjxwIGNpZD0ibjkiIG1kdHlwZT0icGFyYWdyYXBoIiBjbGFzcz0ibWQt +ZW5kLWJsb2NrIG1kLXAiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdo +dDogaW5oZXJpdDsgb3JwaGFuczogNDsgbWFyZ2luOiAwcHggMHB4IDAuNXJlbTsgd2hpdGUtc3Bh +Y2U6IHByZS13cmFwOyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48c3BhbiBtZC1pbmxpbmU9InBsYWlu +IiBjbGFzcz0ibWQtcGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+5Lu75Yqh +Me+8mkc15Li75pWw5o2uNS40LjHniYjmnKzlvIDlj5E8L3NwYW4+PC9wPjwvbGk+PGxpIGNsYXNz +PSJtZC1saXN0LWl0ZW0iIGNpZD0ibjEwIiBtZHR5cGU9Imxpc3RfaXRlbSIgc3R5bGU9ImJveC1z +aXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48cCBj +aWQ9Im4xMSIgbWR0eXBlPSJwYXJhZ3JhcGgiIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCIgc3R5 +bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhlcml0OyBvcnBoYW5z +OiA0OyBtYXJnaW46IDBweCAwcHggMC41cmVtOyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0 +aW9uOiByZWxhdGl2ZTsiPuS7u+WKoTLvvJrplIDllK4g6YeH6LSt6ZyA5rGC5YiG5p6QPC9wPjwv +bGk+PC91bD48bGkgY2xhc3M9Im1kLWxpc3QtaXRlbSIgY2lkPSJuMTIiIG1kdHlwZT0ibGlzdF9p +dGVtIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBvc2l0aW9u +OiByZWxhdGl2ZTsiPjxwIGNpZD0ibjEzIiBtZHR5cGU9InBhcmFncmFwaCIgY2xhc3M9Im1kLWVu +ZC1ibG9jayBtZC1wIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6 +IGluaGVyaXQ7IG9ycGhhbnM6IDQ7IG1hcmdpbjogMHB4IDBweCAwLjVyZW07IHdoaXRlLXNwYWNl +OiBwcmUtd3JhcDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHNwYW4gbWQtaW5saW5lPSJzdHJvbmci +IGNsYXNzPSJtZC1wYWlyLXMgIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPjxzdHJv +bmcgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij48c3BhbiBtZC1pbmxpbmU9InBsYWlu +IiBjbGFzcz0ibWQtcGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+5bi46KeE +5bel5L2cPC9zcGFuPjwvc3Ryb25nPjwvc3Bhbj48L3A+PC9saT48dWwgY2xhc3M9InVsLWxpc3Qi +IGNpZD0ibjE0IiBtZHR5cGU9Imxpc3QiIGRhdGEtbWFyaz0iLSIgc3R5bGU9ImJveC1zaXppbmc6 +IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBwYWRkaW5nLWxlZnQ6IDMwcHg7IHBvc2l0aW9uOiBy +ZWxhdGl2ZTsiPjxsaSBjbGFzcz0ibWQtbGlzdC1pdGVtIiBjaWQ9Im4xNSIgbWR0eXBlPSJsaXN0 +X2l0ZW0iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcG9zaXRp +b246IHJlbGF0aXZlOyI+PHAgY2lkPSJuMTYiIG1kdHlwZT0icGFyYWdyYXBoIiBjbGFzcz0ibWQt +ZW5kLWJsb2NrIG1kLXAiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdo +dDogaW5oZXJpdDsgb3JwaGFuczogNDsgbWFyZ2luOiAwcHggMHB4IDAuNXJlbTsgd2hpdGUtc3Bh +Y2U6IHByZS13cmFwOyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48c3BhbiBtZC1pbmxpbmU9InBsYWlu +IiBjbGFzcz0ibWQtcGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+5pel5bi4 +5LqL5YqhMe+8mjIwMjUtMTItMjkg5Li75pWw5o2u6ZyA5rGC6K+E5a6h44CB5Yqf6IO95byA5Y+R +PC9zcGFuPjwvcD48L2xpPjwvdWw+PC9vbD48b2wgY2xhc3M9Im9sLWxpc3QiIHN0YXJ0PSIiIGNp +ZD0ibjQiIG1kdHlwZT0ibGlzdCIgc3R5bGU9ImZvbnQtZmFtaWx5OiDlvq7ova/pm4Xpu5E7IGJv +eC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBwYWRkaW5nLWxlZnQ6IDMwcHg7IHBv +c2l0aW9uOiByZWxhdGl2ZTsiPjx1bCBjbGFzcz0idWwtbGlzdCIgY2lkPSJuMTQiIG1kdHlwZT0i +bGlzdCIgZGF0YS1tYXJrPSItIiBzdHlsZT0iZm9udC1mYW1pbHk6IOW+rui9r+mbhem7kTsgYm94 +LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBhZGRpbmctbGVmdDogMzBweDsgcG9z +aXRpb246IHJlbGF0aXZlOyI+PGxpIGNsYXNzPSJtZC1saXN0LWl0ZW0iIGNpZD0ibjE1IiBtZHR5 +cGU9Imxpc3RfaXRlbSIgc3R5bGU9ImNvbG9yOiByZ2IoNTEsIDUxLCA1MSk7IGZvbnQtZmFtaWx5 +OiAmcXVvdDtPcGVuIFNhbnMmcXVvdDssICZxdW90O0NsZWFyIFNhbnMmcXVvdDssICZxdW90O0hl +bHZldGljYSBOZXVlJnF1b3Q7LCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmOyBmb250LXNp +emU6IDE2cHg7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBwb3NpdGlvbjog +cmVsYXRpdmU7Ij48cCBjaWQ9Im4xNiIgbWR0eXBlPSJwYXJhZ3JhcGgiIGNsYXNzPSJtZC1lbmQt +YmxvY2sgbWQtcCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGxpbmUtaGVpZ2h0OiBp +bmhlcml0OyBvcnBoYW5zOiA0OyBtYXJnaW46IDBweCAwcHggMC41cmVtOyB3aGl0ZS1zcGFjZTog +cHJlLXdyYXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxzcGFuIG1kLWlubGluZT0icGxhaW4iIGNs +YXNzPSJtZC1wbGFpbiIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij7ml6XluLjkuovl +iqEy77yaMjAyNS0xMi0zMCDkuLvmlbDmja7mnYPpmZDkurrlkZjmjqXlj6Porr7orqHlvIDlj5EK +PC9zcGFuPjwvcD48L2xpPjxsaSBjbGFzcz0ibWQtbGlzdC1pdGVtIiBjaWQ9Im4xNyIgbWR0eXBl +PSJsaXN0X2l0ZW0iIHN0eWxlPSJjb2xvcjogcmdiKDUxLCA1MSwgNTEpOyBmb250LWZhbWlseTog +JnF1b3Q7T3BlbiBTYW5zJnF1b3Q7LCAmcXVvdDtDbGVhciBTYW5zJnF1b3Q7LCAmcXVvdDtIZWx2 +ZXRpY2EgTmV1ZSZxdW90OywgSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjsgZm9udC1zaXpl +OiAxNnB4OyBib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcG9zaXRpb246IHJl +bGF0aXZlOyI+PHAgY2lkPSJuMTgiIG1kdHlwZT0icGFyYWdyYXBoIiBjbGFzcz0ibWQtZW5kLWJs +b2NrIG1kLXAiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5o +ZXJpdDsgb3JwaGFuczogNDsgbWFyZ2luOiAwcHggMHB4IDAuNXJlbTsgd2hpdGUtc3BhY2U6IHBy +ZS13cmFwOyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48c3BhbiBtZC1pbmxpbmU9InBsYWluIiBjbGFz +cz0ibWQtcGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+5pel5bi45LqL5Yqh +M++8mjIwMjUtMTItMzEgPC9zcGFuPjwvcD48L2xpPjxsaSBjbGFzcz0ibWQtbGlzdC1pdGVtIiBj +aWQ9Im4xNyIgbWR0eXBlPSJsaXN0X2l0ZW0iIHN0eWxlPSJjb2xvcjogcmdiKDUxLCA1MSwgNTEp +OyBmb250LWZhbWlseTogJnF1b3Q7T3BlbiBTYW5zJnF1b3Q7LCAmcXVvdDtDbGVhciBTYW5zJnF1 +b3Q7LCAmcXVvdDtIZWx2ZXRpY2EgTmV1ZSZxdW90OywgSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1z +ZXJpZjsgZm9udC1zaXplOiAxNnB4OyBib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBw +eDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHAgY2lkPSJuMTgiIG1kdHlwZT0icGFyYWdyYXBoIiBj +bGFzcz0ibWQtZW5kLWJsb2NrIG1kLXAiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBs +aW5lLWhlaWdodDogaW5oZXJpdDsgb3JwaGFuczogNDsgbWFyZ2luOiAwcHggMHB4IDAuNXJlbTsg +d2hpdGUtc3BhY2U6IHByZS13cmFwOyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48c3BhbiBtZC1pbmxp +bmU9InBsYWluIiBjbGFzcz0ibWQtcGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94 +OyI+MeOAgei9pumXtC/lt6Xluo/mnInmnYPpmZDnmoTkuJrliqHkurrlkZjmn6Xor6LmjqXlj6Po +vazmtYsNPGJyPjwvc3Bhbj48L3A+PC9saT48bGkgY2xhc3M9Im1kLWxpc3QtaXRlbSIgY2lkPSJu +MTciIG1kdHlwZT0ibGlzdF9pdGVtIiBzdHlsZT0iY29sb3I6IHJnYig1MSwgNTEsIDUxKTsgZm9u +dC1mYW1pbHk6ICZxdW90O09wZW4gU2FucyZxdW90OywgJnF1b3Q7Q2xlYXIgU2FucyZxdW90Oywg +JnF1b3Q7SGVsdmV0aWNhIE5ldWUmcXVvdDssIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7 +IGZvbnQtc2l6ZTogMTZweDsgYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBv +c2l0aW9uOiByZWxhdGl2ZTsiPjxwIGNpZD0ibjE4IiBtZHR5cGU9InBhcmFncmFwaCIgY2xhc3M9 +Im1kLWVuZC1ibG9jayBtZC1wIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1o +ZWlnaHQ6IGluaGVyaXQ7IG9ycGhhbnM6IDQ7IG1hcmdpbjogMHB4IDBweCAwLjVyZW07IHdoaXRl +LXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHNwYW4gbWQtaW5saW5lPSJw +bGFpbiIgY2xhc3M9Im1kLXBsYWluIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPjLj +gIHku5PlupPliKDpmaTml7bpnIDopoHmoKHpqozor6Xku5PlupPmmK/lkKbooqvlhbbku5bkuJrl +iqHkv6Hmga/kvZzkuLrlhbPplK7lhbPogZTkvb/nlKjvvIjlhbzlrrkxMOadoeWcuuaZr++8iQ08 +L3NwYW4+PC9wPjwvbGk+PGxpIGNsYXNzPSJtZC1saXN0LWl0ZW0iIGNpZD0ibjE3IiBtZHR5cGU9 +Imxpc3RfaXRlbSIgc3R5bGU9ImNvbG9yOiByZ2IoNTEsIDUxLCA1MSk7IGZvbnQtZmFtaWx5OiAm +cXVvdDtPcGVuIFNhbnMmcXVvdDssICZxdW90O0NsZWFyIFNhbnMmcXVvdDssICZxdW90O0hlbHZl +dGljYSBOZXVlJnF1b3Q7LCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmOyBmb250LXNpemU6 +IDE2cHg7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBwb3NpdGlvbjogcmVs +YXRpdmU7Ij48cCBjaWQ9Im4xOCIgbWR0eXBlPSJwYXJhZ3JhcGgiIGNsYXNzPSJtZC1lbmQtYmxv +Y2sgbWQtcCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhl +cml0OyBvcnBoYW5zOiA0OyBtYXJnaW46IDBweCAwcHggMC41cmVtOyB3aGl0ZS1zcGFjZTogcHJl +LXdyYXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxzcGFuIG1kLWlubGluZT0icGxhaW4iIGNsYXNz +PSJtZC1wbGFpbiIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij4z44CB5a6i5oi355qE +54mp5paZ5qCH5Lu35L+d55WZ5bCP5pWw54K55ZCONuS9jQ08L3NwYW4+PC9wPjwvbGk+PGxpIGNs +YXNzPSJtZC1saXN0LWl0ZW0iIGNpZD0ibjE3IiBtZHR5cGU9Imxpc3RfaXRlbSIgc3R5bGU9ImNv +bG9yOiByZ2IoNTEsIDUxLCA1MSk7IGZvbnQtZmFtaWx5OiAmcXVvdDtPcGVuIFNhbnMmcXVvdDss +ICZxdW90O0NsZWFyIFNhbnMmcXVvdDssICZxdW90O0hlbHZldGljYSBOZXVlJnF1b3Q7LCBIZWx2 +ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDE2cHg7IGJveC1zaXppbmc6IGJv +cmRlci1ib3g7IG1hcmdpbjogMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48cCBjaWQ9Im4xOCIg +bWR0eXBlPSJwYXJhZ3JhcGgiIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCIgc3R5bGU9ImJveC1z +aXppbmc6IGJvcmRlci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhlcml0OyBvcnBoYW5zOiA0OyBtYXJn +aW46IDBweCAwcHggMC41cmVtOyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0aW9uOiByZWxh +dGl2ZTsiPjxzcGFuIG1kLWlubGluZT0icGxhaW4iIGNsYXNzPSJtZC1wbGFpbiIgc3R5bGU9ImJv +eC1zaXppbmc6IGJvcmRlci1ib3g7Ij4044CBQk9N5a+85Ye65a2Q5Lu25aKe5Yqg54mp5paZ5o+P +6L+w44CB5Zu+5Y+35a2X5q61DTwvc3Bhbj48L3A+PC9saT48bGkgY2xhc3M9Im1kLWxpc3QtaXRl +bSIgY2lkPSJuMTciIG1kdHlwZT0ibGlzdF9pdGVtIiBzdHlsZT0iY29sb3I6IHJnYig1MSwgNTEs +IDUxKTsgZm9udC1mYW1pbHk6ICZxdW90O09wZW4gU2FucyZxdW90OywgJnF1b3Q7Q2xlYXIgU2Fu +cyZxdW90OywgJnF1b3Q7SGVsdmV0aWNhIE5ldWUmcXVvdDssIEhlbHZldGljYSwgQXJpYWwsIHNh +bnMtc2VyaWY7IGZvbnQtc2l6ZTogMTZweDsgYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2lu +OiAwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxwIGNpZD0ibjE4IiBtZHR5cGU9InBhcmFncmFw +aCIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1wIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJv +eDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IG9ycGhhbnM6IDQ7IG1hcmdpbjogMHB4IDBweCAwLjVy +ZW07IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHNwYW4gbWQt +aW5saW5lPSJwbGFpbiIgY2xhc3M9Im1kLXBsYWluIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVy +LWJveDsiPjXjgIHlt6XkvZzkuK3lv4PkuIvlhbPogZTnmoTlt6XkvY3liKDpmaTlkI7vvIzlho3l +iKDpmaTlt6XkvZzkuK3lv4Pku43nhLbmj5DnpLrlt6XkvY3mnKrliKDpmaTpl67popjkv67lpI3o +vazmtYsNPC9zcGFuPjwvcD48L2xpPjxsaSBjbGFzcz0ibWQtbGlzdC1pdGVtIiBjaWQ9Im4xNyIg +bWR0eXBlPSJsaXN0X2l0ZW0iIHN0eWxlPSJjb2xvcjogcmdiKDUxLCA1MSwgNTEpOyBmb250LWZh +bWlseTogJnF1b3Q7T3BlbiBTYW5zJnF1b3Q7LCAmcXVvdDtDbGVhciBTYW5zJnF1b3Q7LCAmcXVv +dDtIZWx2ZXRpY2EgTmV1ZSZxdW90OywgSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjsgZm9u +dC1zaXplOiAxNnB4OyBib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcG9zaXRp +b246IHJlbGF0aXZlOyI+PHAgY2lkPSJuMTgiIG1kdHlwZT0icGFyYWdyYXBoIiBjbGFzcz0ibWQt +ZW5kLWJsb2NrIG1kLXAiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdo +dDogaW5oZXJpdDsgb3JwaGFuczogNDsgbWFyZ2luOiAwcHggMHB4IDAuNXJlbTsgd2hpdGUtc3Bh +Y2U6IHByZS13cmFwOyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48c3BhbiBtZC1pbmxpbmU9InBsYWlu +IiBjbGFzcz0ibWQtcGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+NuOAgeWF +s+iBlOS6uuWRmOaTjeS9nOWQjuWFs+iBlOS6uuWRmOWIl+ihqOeahGxpc3TmlbDmja7ov5Tlm57k +uLpudWxs77yM5a+86Ie05YmN56uv6Kej5p6Q5byC5bi45L+u5aSN6L2s5rWLDTwvc3Bhbj48L3A+ +PC9saT48bGkgY2xhc3M9Im1kLWxpc3QtaXRlbSIgY2lkPSJuMTciIG1kdHlwZT0ibGlzdF9pdGVt +IiBzdHlsZT0iY29sb3I6IHJnYig1MSwgNTEsIDUxKTsgZm9udC1mYW1pbHk6ICZxdW90O09wZW4g +U2FucyZxdW90OywgJnF1b3Q7Q2xlYXIgU2FucyZxdW90OywgJnF1b3Q7SGVsdmV0aWNhIE5ldWUm +cXVvdDssIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTZweDsgYm94 +LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxw +IGNpZD0ibjE4IiBtZHR5cGU9InBhcmFncmFwaCIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1wIiBz +dHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IG9ycGhh +bnM6IDQ7IG1hcmdpbjogMHB4IDBweCAwLjVyZW07IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9z +aXRpb246IHJlbGF0aXZlOyI+PHNwYW4gbWQtaW5saW5lPSJwbGFpbiIgY2xhc3M9Im1kLXBsYWlu +IiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPjfjgIHlpITnkIbnu5PnrpfmlrnlvI/m +lbDmja7lrZflhbjnmb7liIblj7fpl67popg8L3NwYW4+PC9wPjwvbGk+PC91bD48L29sPjxvbCBj +bGFzcz0ib2wtbGlzdCIgc3RhcnQ9IiIgY2lkPSJuNCIgbWR0eXBlPSJsaXN0IiBzdHlsZT0iZm9u +dC1mYW1pbHk6IOW+rui9r+mbhem7kTsgYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAw +cHg7IHBhZGRpbmctbGVmdDogMzBweDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHVsIGNsYXNzPSJ1 +bC1saXN0IiBjaWQ9Im4xNCIgbWR0eXBlPSJsaXN0IiBkYXRhLW1hcms9Ii0iIHN0eWxlPSJmb250 +LWZhbWlseTog5b6u6L2v6ZuF6buROyBib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBw +eDsgcGFkZGluZy1sZWZ0OiAzMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48bGkgY2xhc3M9Im1k +LWxpc3QtaXRlbSIgY2lkPSJuMTciIG1kdHlwZT0ibGlzdF9pdGVtIiBzdHlsZT0iY29sb3I6IHJn +Yig1MSwgNTEsIDUxKTsgZm9udC1mYW1pbHk6ICZxdW90O09wZW4gU2FucyZxdW90OywgJnF1b3Q7 +Q2xlYXIgU2FucyZxdW90OywgJnF1b3Q7SGVsdmV0aWNhIE5ldWUmcXVvdDssIEhlbHZldGljYSwg +QXJpYWwsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTZweDsgYm94LXNpemluZzogYm9yZGVyLWJv +eDsgbWFyZ2luOiAwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxwIGNpZD0ibjE4IiBtZHR5cGU9 +InBhcmFncmFwaCIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1wIiBzdHlsZT0iYm94LXNpemluZzog +Ym9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IG9ycGhhbnM6IDQ7IG1hcmdpbjogMHB4 +IDBweCAwLjVyZW07IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJlbGF0aXZlOyI+ +PHNwYW4gbWQtaW5saW5lPSJwbGFpbiIgY2xhc3M9Im1kLXBsYWluIiBzdHlsZT0iYm94LXNpemlu +ZzogYm9yZGVyLWJveDsiPuaXpeW4uOS6i+WKoTTvvJo8L3NwYW4+PC9wPjwvbGk+PGxpIGNsYXNz +PSJtZC1saXN0LWl0ZW0iIGNpZD0ibjE3IiBtZHR5cGU9Imxpc3RfaXRlbSIgc3R5bGU9ImNvbG9y +OiByZ2IoNTEsIDUxLCA1MSk7IGZvbnQtZmFtaWx5OiAmcXVvdDtPcGVuIFNhbnMmcXVvdDssICZx +dW90O0NsZWFyIFNhbnMmcXVvdDssICZxdW90O0hlbHZldGljYSBOZXVlJnF1b3Q7LCBIZWx2ZXRp +Y2EsIEFyaWFsLCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDE2cHg7IGJveC1zaXppbmc6IGJvcmRl +ci1ib3g7IG1hcmdpbjogMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48cCBjaWQ9Im4xOCIgbWR0 +eXBlPSJwYXJhZ3JhcGgiIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCIgc3R5bGU9ImJveC1zaXpp +bmc6IGJvcmRlci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhlcml0OyBvcnBoYW5zOiA0OyBtYXJnaW46 +IDBweCAwcHggMC41cmVtOyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0aW9uOiByZWxhdGl2 +ZTsiPjxzcGFuIG1kLWlubGluZT0icGxhaW4iIGNsYXNzPSJtZC1wbGFpbiIgc3R5bGU9ImJveC1z +aXppbmc6IGJvcmRlci1ib3g7Ij7ml6XluLjkuovliqE177yaPC9zcGFuPjwvcD48L2xpPjwvdWw+ +PC9vbD48b2wgY2xhc3M9Im9sLWxpc3QiIHN0YXJ0PSIiIGNpZD0ibjI2IiBtZHR5cGU9Imxpc3Qi +IHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcGFkZGluZy1sZWZ0 +OiAzMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48bGkgY2xhc3M9Im1kLWxpc3QtaXRlbSIgY2lk +PSJuMjciIG1kdHlwZT0ibGlzdF9pdGVtIiBzdHlsZT0iZm9udC1mYW1pbHk6ICZxdW90O09wZW4g +U2FucyZxdW90OywgJnF1b3Q7Q2xlYXIgU2FucyZxdW90OywgJnF1b3Q7SGVsdmV0aWNhIE5ldWUm +cXVvdDssIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7IGNvbG9yOiByZ2IoNTEsIDUxLCA1 +MSk7IGZvbnQtc2l6ZTogMTZweDsgYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7 +IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxwIGNpZD0ibjI4IiBtZHR5cGU9InBhcmFncmFwaCIgY2xh +c3M9Im1kLWVuZC1ibG9jayBtZC1wIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbGlu +ZS1oZWlnaHQ6IGluaGVyaXQ7IG9ycGhhbnM6IDQ7IG1hcmdpbjogMHB4IDBweCAwLjVyZW07IHdo +aXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHNwYW4gbWQtaW5saW5l +PSJzdHJvbmciIGNsYXNzPSJtZC1wYWlyLXMgIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJv +eDsiPjxzdHJvbmcgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij48c3BhbiBtZC1pbmxp +bmU9InBsYWluIiBjbGFzcz0ibWQtcGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94 +OyI+6YeN54K55Lu75YqhPC9zcGFuPjwvc3Ryb25nPjwvc3Bhbj48L3A+PC9saT48dWwgY2xhc3M9 +InVsLWxpc3QiIGNpZD0ibjI5IiBtZHR5cGU9Imxpc3QiIGRhdGEtbWFyaz0iLSIgc3R5bGU9ImZv +bnQtZmFtaWx5OiAmcXVvdDtPcGVuIFNhbnMmcXVvdDssICZxdW90O0NsZWFyIFNhbnMmcXVvdDss +ICZxdW90O0hlbHZldGljYSBOZXVlJnF1b3Q7LCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlm +OyBjb2xvcjogcmdiKDUxLCA1MSwgNTEpOyBmb250LXNpemU6IDE2cHg7IGJveC1zaXppbmc6IGJv +cmRlci1ib3g7IG1hcmdpbjogMHB4OyBwYWRkaW5nLWxlZnQ6IDMwcHg7IHBvc2l0aW9uOiByZWxh +dGl2ZTsiPjxsaSBjbGFzcz0ibWQtbGlzdC1pdGVtIiBjaWQ9Im4zMCIgbWR0eXBlPSJsaXN0X2l0 +ZW0iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcG9zaXRpb246 +IHJlbGF0aXZlOyI+PHAgY2lkPSJuMzEiIG1kdHlwZT0icGFyYWdyYXBoIiBjbGFzcz0ibWQtZW5k +LWJsb2NrIG1kLXAiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdodDog +aW5oZXJpdDsgb3JwaGFuczogNDsgbWFyZ2luOiAwcHggMHB4IDAuNXJlbTsgd2hpdGUtc3BhY2U6 +IHByZS13cmFwOyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48c3BhbiBtZC1pbmxpbmU9InBsYWluIiBj +bGFzcz0ibWQtcGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+6K6h5YiSMe+8 +mkc15Li75pWw5o2uNS40LjHniYjmnKzpnIDmsYLlvIDlj5E8L3NwYW4+PC9wPjwvbGk+PC91bD48 +L29sPjxkaXYgdGFiaW5kZXg9Ii0xIiBjaWQ9Im4zOSIgbWR0eXBlPSJociIgY2xhc3M9Im1kLWhy +IG1kLWVuZC1ibG9jayIgc3R5bGU9ImZvbnQtZmFtaWx5OiAmcXVvdDtPcGVuIFNhbnMmcXVvdDss +ICZxdW90O0NsZWFyIFNhbnMmcXVvdDssICZxdW90O0hlbHZldGljYSBOZXVlJnF1b3Q7LCBIZWx2 +ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmOyBib3gtc2l6aW5nOiBib3JkZXItYm94OyBjb2xvcjog +cmdiKDUxLCA1MSwgNTEpOyBmb250LXNpemU6IDE2cHg7Ij48aHIgc3R5bGU9ImJveC1zaXppbmc6 +IGNvbnRlbnQtYm94OyBoZWlnaHQ6IDJweDsgbWFyZ2luOiAxNnB4IDBweDsgYm9yZGVyOiAwcHgg +bm9uZTsgcGFkZGluZzogMHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjMxLCAyMzEsIDIzMSk7 +Ij48L2Rpdj48cCBjaWQ9Im40MCIgbWR0eXBlPSJwYXJhZ3JhcGgiIGNsYXNzPSJtZC1lbmQtYmxv +Y2sgbWQtcCIgc3R5bGU9ImZvbnQtZmFtaWx5OiAmcXVvdDtPcGVuIFNhbnMmcXVvdDssICZxdW90 +O0NsZWFyIFNhbnMmcXVvdDssICZxdW90O0hlbHZldGljYSBOZXVlJnF1b3Q7LCBIZWx2ZXRpY2Es +IEFyaWFsLCBzYW5zLXNlcmlmOyBib3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdodDog +aW5oZXJpdDsgb3JwaGFuczogNDsgbWFyZ2luOiAwLjhlbSAwcHg7IHdoaXRlLXNwYWNlOiBwcmUt +d3JhcDsgcG9zaXRpb246IHJlbGF0aXZlOyBjb2xvcjogcmdiKDUxLCA1MSwgNTEpOyBmb250LXNp +emU6IDE2cHg7Ij48c3BhbiBtZC1pbmxpbmU9InN0cm9uZyIgY2xhc3M9Im1kLXBhaXItcyAiIHN0 +eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+PHN0cm9uZyBzdHlsZT0iYm94LXNpemluZzog +Ym9yZGVyLWJveDsiPjxzcGFuIG1kLWlubGluZT0icGxhaW4iIGNsYXNzPSJtZC1wbGFpbiIgc3R5 +bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij7lpIfms6g8L3NwYW4+PC9zdHJvbmc+PC9zcGFu +PjxzcGFuIG1kLWlubGluZT0icGxhaW4iIGNsYXNzPSJtZC1wbGFpbiBtZC1leHBhbmQiIHN0eWxl +PSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+77yaPC9zcGFuPjIwMjUtMTItMjYg5LiL5Y2I6K+3 +5YGHPC9wPjwvZGl2PjxkaXYgc3R5bGU9ImZvbnQtZmFtaWx5OiDlvq7ova/pm4Xpu5E7Ij48YnI+ +PC9kaXY+PC9kaXY+PCEtLfCfmIAtLT48L2Rpdj48L2Rpdj48L2Rpdj48ZGl2Pjxicj48L2Rpdj48 +ZGl2Pjxicj48L2Rpdj48ZGl2IGlkPSJpbWFpbF9zaWduYXR1cmUiIGNsYXNzPSJudGVzLXNpZ25h +dHVyZSIgc3R5bGU9Im1hcmdpbjoyMHB4IDA7IiBkYXRhLW50ZXMtc2lnbmF0dXJlPSJ0cnVlIiBz +cGVsbGNoZWNrPSJmYWxzZSI+PGRpdiBzdHlsZT0iZm9udC1mYW1pbHk6JnF1b3Q75b6u6L2v6ZuF +6buRJnF1b3Q7OyBmb250LXNpemU6IDE0cHg7IGNvbG9yOiMwMDAwMDAiPgogICAgPHN0eWxlPgog +ICAgICAgIGZvbnR7CiAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAxLjY7CiAgICAgICAgfQogICAg +PC9zdHlsZT4KPGRpdiBzdHlsZT0iZm9udC1mYW1pbHk6JnF1b3Q75b6u6L2v6ZuF6buRJnF1b3Q7 +OyBmb250LXNpemU6IDE0cHg7IGNvbG9yOiMwMDAwMDAiPgogICAgPHN0eWxlPgogICAgICAgIGZv +bnR7CiAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAxLjY7CiAgICAgICAgfQogICAgPC9zdHlsZT4K +PGRpdiBzdHlsZT0iZm9udC1mYW1pbHk6JnF1b3Q75b6u6L2v6ZuF6buRJnF1b3Q7OyBmb250LXNp +emU6IDE0cHg7IGNvbG9yOiMwMDAwMDAiPgogICAgPHN0eWxlPgogICAgICAgIGZvbnR7CiAgICAg +ICAgICAgIGxpbmUtaGVpZ2h0OiAxLjY7CiAgICAgICAgfQogICAgPC9zdHlsZT4KPGRpdiBzdHls +ZT0iZm9udC1mYW1pbHk6JnF1b3Q75b6u6L2v6ZuF6buRJnF1b3Q7OyBmb250LXNpemU6IDE0cHg7 +IGNvbG9yOiMwMDAwMDAiPgogICAgPHN0eWxlPgogICAgICAgIGZvbnR7CiAgICAgICAgICAgIGxp +bmUtaGVpZ2h0OiAxLjY7CiAgICAgICAgfQogICAgPC9zdHlsZT4KPGRpdiBzdHlsZT0iZm9udC1m +YW1pbHk6JnF1b3Q75b6u6L2v6ZuF6buRJnF1b3Q7OyBmb250LXNpemU6IDE0cHg7IGNvbG9yOiMw +MDAwMDAiPgogICAgPHN0eWxlPgogICAgICAgIGZvbnR7CiAgICAgICAgICAgIGxpbmUtaGVpZ2h0 +OiAxLjY7CiAgICAgICAgfQogICAgPC9zdHlsZT4KPHNwYW4gc3R5bGU9ImNvbG9yOiByZ2IoMTkx +LCAxOTEsIDE5MSk7IGZvbnQtZmFtaWx5OiAnTWljcm9zb2Z0IFlhaGVpJzsgZm9udC1zaXplOiAx +M3B4OyBvcnBoYW5zOiAyOyB3aWRvd3M6IDI7Ij5CZXN0IHJlZ2FyZHMsPC9zcGFuPjxkaXYgc3R5 +bGU9Im1hcmdpbjogMHB4OyBwYWRkaW5nOiAwcHg7IGJvcmRlcjogMHB4OyBvdXRsaW5lOiAwcHg7 +IGZvbnQtZmFtaWx5OiBUYWhvbWEsIEFyaWFsLCBTVEhlaXRpLCBTaW1TdW47IGZvbnQtdmFyaWFu +dC1saWdhdHVyZXM6IG5vcm1hbDsgb3JwaGFuczogMjsgd2lkb3dzOiAyOyBjbGVhcjogYm90aDsi +PjxzcGFuIHN0eWxlPSJtYXJnaW46IDBweDsgcGFkZGluZzogMHB4OyBib3JkZXI6IDBweDsgb3V0 +bGluZTogMHB4OyBmb250LWZhbWlseTogJnF1b3Q7TWljcm9zb2Z0IFlhaGVpJnF1b3Q7OyBmb250 +LXNpemU6IDEzcHg7IGNvbG9yOiByZ2IoMTkxLCAxOTEsIDE5MSk7Ij7mnajovak8L3NwYW4+PC9k +aXY+PGRpdiBzdHlsZT0ibWFyZ2luOiAwcHg7IHBhZGRpbmc6IDBweDsgYm9yZGVyOiAwcHg7IG91 +dGxpbmU6IDBweDsgZm9udC1mYW1pbHk6IFRhaG9tYSwgQXJpYWwsIFNUSGVpdGksIFNpbVN1bjsg +Zm9udC12YXJpYW50LWxpZ2F0dXJlczogbm9ybWFsOyBvcnBoYW5zOiAyOyB3aWRvd3M6IDI7IGNs +ZWFyOiBib3RoOyI+PC9kaXY+PGRpdiBzdHlsZT0ibWFyZ2luOiAwcHg7IHBhZGRpbmc6IDBweDsg +Ym9yZGVyOiAwcHg7IG91dGxpbmU6IDBweDsgZm9udC1mYW1pbHk6IFRhaG9tYSwgQXJpYWwsIFNU +SGVpdGksIFNpbVN1bjsgZm9udC12YXJpYW50LWxpZ2F0dXJlczogbm9ybWFsOyBvcnBoYW5zOiAy +OyB3aWRvd3M6IDI7IGNsZWFyOiBib3RoOyI+PGltZyBzcmM9Imh0dHBzOi8vbWFpbC1vbmxpbmUu +bm9zZG4uMTI3Lm5ldC93enBtbWMvY2U5ZjhiMzZlMWZmYmU1NTMyOWMxOTZjODRmZTUxOTcucG5n +IiBzdHlsZT0ibWF4LXdpZHRoOiB1bnNldDsiPjwvZGl2PjxkaXYgc3R5bGU9Im1hcmdpbjogMHB4 +OyBwYWRkaW5nOiAwcHg7IGJvcmRlcjogMHB4OyBvdXRsaW5lOiAwcHg7IGZvbnQtZmFtaWx5OiBU +YWhvbWEsIEFyaWFsLCBTVEhlaXRpLCBTaW1TdW47IGZvbnQtdmFyaWFudC1saWdhdHVyZXM6IG5v +cm1hbDsgb3JwaGFuczogMjsgd2lkb3dzOiAyOyBjbGVhcjogYm90aDsiPjxzcGFuIHN0eWxlPSJt +YXJnaW46IDBweDsgcGFkZGluZzogMHB4OyBib3JkZXI6IDBweDsgb3V0bGluZTogMHB4OyBmb250 +LWZhbWlseTogJnF1b3Q7TWljcm9zb2Z0IFlhaGVpJnF1b3Q7OyBjb2xvcjogcmdiKDE5MSwgMTkx +LCAxOTEpOyI+5Zyw5Z2A77ya5Lit5Zu9wrfljZfkuqzkupHlr4bln45M5qCLNS8xMOalvDwvc3Bh +bj48L2Rpdj48ZGl2IHN0eWxlPSJtYXJnaW46IDBweDsgcGFkZGluZzogMHB4OyBib3JkZXI6IDBw +eDsgb3V0bGluZTogMHB4OyBmb250LWZhbWlseTogVGFob21hLCBBcmlhbCwgU1RIZWl0aSwgU2lt +U3VuOyBmb250LXZhcmlhbnQtbGlnYXR1cmVzOiBub3JtYWw7IG9ycGhhbnM6IDI7IHdpZG93czog +MjsgY2xlYXI6IGJvdGg7Ij48c3BhbiBzdHlsZT0ibWFyZ2luOiAwcHg7IHBhZGRpbmc6IDBweDsg +Ym9yZGVyOiAwcHg7IG91dGxpbmU6IDBweDsgZm9udC1mYW1pbHk6ICZxdW90O01pY3Jvc29mdCBZ +YWhlaSZxdW90OzsgY29sb3I6IHJnYigxOTEsIDE5MSwgMTkxKTsiPuaJi+acuu+8mjE4NzI2MTI4 +NDg5PC9zcGFuPjwvZGl2PjxkaXYgc3R5bGU9Im1hcmdpbjogMHB4OyBwYWRkaW5nOiAwcHg7IGJv +cmRlcjogMHB4OyBvdXRsaW5lOiAwcHg7IGZvbnQtZmFtaWx5OiBUYWhvbWEsIEFyaWFsLCBTVEhl +aXRpLCBTaW1TdW47IGZvbnQtdmFyaWFudC1saWdhdHVyZXM6IG5vcm1hbDsgb3JwaGFuczogMjsg +d2lkb3dzOiAyOyBjbGVhcjogYm90aDsiPjxzcGFuIHN0eWxlPSJtYXJnaW46IDBweDsgcGFkZGlu +ZzogMHB4OyBib3JkZXI6IDBweDsgb3V0bGluZTogMHB4OyBmb250LWZhbWlseTogJnF1b3Q7TWlj +cm9zb2Z0IFlhaGVpJnF1b3Q7OyBjb2xvcjogcmdiKDE5MSwgMTkxLCAxOTEpOyI+6YKu566x77ya +eWFuZ3h1YW5Ad2l0c29mdC5jbjwvc3Bhbj48L2Rpdj4KPC9kaXY+CjwvZGl2Pgo8L2Rpdj4KPC9k +aXY+CjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvYm9keT48L2h0bWw+ + +--=_mailmaster-6a18e4a4_0_f3e_=-- diff --git a/media/inbound/2025年度工作总结-开发二组-杨轩---32ec5e97-70a9-4a40-8e08-6e081a6bb166.pptx b/media/inbound/2025年度工作总结-开发二组-杨轩---32ec5e97-70a9-4a40-8e08-6e081a6bb166.pptx new file mode 100644 index 0000000..a376d0f Binary files /dev/null and b/media/inbound/2025年度工作总结-开发二组-杨轩---32ec5e97-70a9-4a40-8e08-6e081a6bb166.pptx differ diff --git a/media/inbound/2026-01-09_1711_G5开发周报_2026-01-05_--_2026-01-09---23dfffec-eb3c-4ac7-9a2f-8be29a079673.eml b/media/inbound/2026-01-09_1711_G5开发周报_2026-01-05_--_2026-01-09---23dfffec-eb3c-4ac7-9a2f-8be29a079673.eml new file mode 100644 index 0000000..bc5a6a9 --- /dev/null +++ b/media/inbound/2026-01-09_1711_G5开发周报_2026-01-05_--_2026-01-09---23dfffec-eb3c-4ac7-9a2f-8be29a079673.eml @@ -0,0 +1,510 @@ +Date: Fri, 9 Jan 2026 17:11:47 +0800 +From: =?utf-8?B?5p2o6L2p?= +To: =?utf-8?B?5YiY5by6?= +Cc: =?utf-8?B?5bGI5paw6b6Z?= , =?utf-8?B?5pyx5paM?= + , =?utf-8?B?6ZmI5piO?= , + =?utf-8?B?5aSP6ZO25pWP?= , =?utf-8?B?6KKB5pm0?= + , =?utf-8?B?5pu+6I6J?= +Message-ID: +Subject: =?utf-8?B?RzXlvIDlj5HlkajmiqXjgJAyMDI2LTAxLTA1IC0tICAyMDI2LTAx?= + =?utf-8?B?LTA544CR?= +MIME-Version: 1.0 +Content-Type: multipart/alternative; boundary="=_mailmaster-6a18e4a4_0_99_=" + +--=_mailmaster-6a18e4a4_0_99_= +Content-Type: text/plain; charset="utf-8" +Content-Transfer-Encoding: base64 + +5oKo5aW977yB5Lul5LiL5piv5oiR5pys5ZGo55qE5bel5L2c5oC757uT5Y+K5LiL5ZGo6K6h5YiS +77yM6K+35a6h6ZiF44CCCuS4gOOAgeacrOWRqOW3peS9nOaAu+e7kwrph43ngrnlt6XkvZzlrozm +iJDmg4XlhrUK5Lu75YqhMe+8mkc15Li75pWw5o2uNS40LjHniYjmnKzlvIDlj5EK5Lu75YqhMu+8 +mumUgOWUriDph4fotK01LjQuMeeJiOacrOmcgOaxguW8gOWPkQrluLjop4Tlt6XkvZwK5pel5bi4 +5LqL5YqhMe+8mjIwMjYtMDEtMDUg6YeH6LSt566h55CGIOWPkeaWmeivpuaDheaJk+WNsOaOpeWP +owox44CB5piO57uG5aKe5Yqg6YeH6LSt6K6i5Y2V5Y+36YCX5Y+35ou85o6lCjLjgIHln7rmnKzk +v6Hmga/lop7liqDph4fotK3orqLljZXlj7cgCjPjgIHlp5TlpJbkuqflk4Hlkoznianmlpnlop7l +iqDnianmlpnmj4/ov7AgCjTjgIHlp5TlpJbkuqflk4HlhbPogZTplIDllK7orqLljZXlrqLmiLfl +kI3np7DjgIHph4fotK3mlbDph4/vvIjkuLvvvIkK5pel5bi45LqL5YqhMu+8mjIwMjYtMDEtMDYg +CjHjgIHor6Lku7fljZXliJfooajlop7liqDmnZDotKggCjLjgIHor6Lku7fljZXor6bmg4Xlkozn +vJbovpHlop7liqDmnZDotKggCjPjgIHljY/lkIzor6Lku7fliJfooajlop7liqDmnZDotKggCjTj +gIHljY/lkIzor6Lku7fpgInmi6nkuqflk4Hlop7liqDmnZDotKggCjXjgIHor7fotK3ljZXmmI7n +u4bmjqXlj6Mg5Lil5qC85qCh6aqMCuaXpeW4uOS6i+WKoTPvvJoyMDI2LTAxLTA3CjHjgIHlp5Tl +pJbkuqflk4Hph4fotK3orqLljZXlj7fmi7zmjqXlsZXnpLog5Y+R6LSn5Y2V5YWz6IGUIAoy44CB +5aeU5aSW5Lqn5ZOB5o+P6L+w5ou85o6l5bGV56S6IOS6p+WTgee8lueggeWFs+iBlCAKM+OAgeeJ +qeaWmeaYjue7hueahOeJqeaWmeaPj+i/sOWxleekuiAKNOOAgeWFs+iBlOmUgOWUruiuouWNleWu +ouaIt+WQjeensOaLvOaOpeWxleekuiAKNeOAgemHh+i0reaVsOmHj++8iOS4u++8ieWxleekuiAK +NuOAgeebuOWQjOaJueasoeaVsOmHj+WQiOW5tgrml6XluLjkuovliqE077yaMjAyNi0wMS0wOAox +44CB5omT5Y2w5o6l5Y+j5qC55o2u6YeH6LSt5Y2V5YWz6IGU5ZCI5bm26YeH6LSt5pWw6YePIAoy +44CB5omT5Y2w5o6l5Y+j5qC55o2u6ZSA5ZSu6K6i5Y2V5YWz6IGU5ZCI5bm25a6i5oi35ZCN56ew +IAoz44CB5omT5Y2w5o6l5Y+j5qC55o2u5om55qyh5Y+35ZCI5bm25pWw6YePIAo044CB5omT5Y2w +5o6l5Y+j5qC55o2u5ou85o6l6KGM5Y+3CuaXpeW4uOS6i+WKoTXvvJoyMDI2LTAxLTA5CjHjgIHl +iLDotKfljZXor6bmg4XmibnmrKHnoIHmiZPljbDvvIznm7jlkIzmibnmrKHmlbDph4/lkIjlubbv +vJsgCjLjgIHliLDotKfljZXor6bmg4XmibnmrKHnoIHmiZPljbDvvIzkuoznu7TnoIHkuK3ooYzl +j7flkIjlubYgCjPjgIHmtYvor5Xpl67popjkv67lpI0K5LiA44CB5LiL5ZGo6YeN54K55Lu75Yqh +CjUuNC4x54mI5pys5rWL6K+V5a6M5oiQ77yM5Y+R5biD5LiK57q/CuWkh+azqO+8mjIwMjblubQx +5pyIMTLml6Ug5ZGo5LiA6K+35YGHCkJlc3QgcmVnYXJkcyzmnajovakK5Zyw5Z2A77ya5Lit5Zu9 +wrfljZfkuqzkupHlr4bln45M5qCLNS8xMOalvArmiYvmnLrvvJoxODcyNjEyODQ4OQrpgq7nrrHv +vJp5YW5neHVhbkB3aXRzb2Z0LmNu + +--=_mailmaster-6a18e4a4_0_99_= +Content-Type: text/html; charset="utf-8" +Content-Transfer-Encoding: base64 + +PGh0bWw+PGhlYWQ+PG1ldGEgaHR0cC1lcXVpdj0nQ29udGVudC1UeXBlJyBjb250ZW50PSd0ZXh0 +L2h0bWw7IGNoYXJzZXQ9VVRGLTgnPjwvaGVhZD48Ym9keSBzdHlsZT1saW5lLWhlaWdodDogMS41 +O2ZvbnQtZmFtaWx5OiAi5b6u6L2v6ZuF6buRIj48ZGl2ICBzdHlsZT0iZm9udC1mYW1pbHk6IOW+ +rui9r+mbhem7kTsiPjxkaXYgc3R5bGU9IiI+PGRpdiBzdHlsZT0iIiAxLjU7Zm9udC1mYW1pbHk6 +PSIiICLlvq7ova/pm4Xpu5EiPSIiPjxkaXYgc3R5bGU9IiI+PGRpdiBzdHlsZT0iIj48ZGl2IHN0 +eWxlPSIiPjxkaXYgc3R5bGU9IiI+PHAgY2lkPSJuMCIgbWR0eXBlPSJwYXJhZ3JhcGgiIGNsYXNz +PSJtZC1lbmQtYmxvY2sgbWQtcCBtZC1mb2N1cyIgc3R5bGU9ImZvbnQtZmFtaWx5OiAmcXVvdDtP +cGVuIFNhbnMmcXVvdDssICZxdW90O0NsZWFyIFNhbnMmcXVvdDssICZxdW90O0hlbHZldGljYSBO +ZXVlJnF1b3Q7LCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmOyBib3gtc2l6aW5nOiBib3Jk +ZXItYm94OyBsaW5lLWhlaWdodDogaW5oZXJpdDsgb3JwaGFuczogNDsgbWFyZ2luOiAwLjhlbSAw +cHg7IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJlbGF0aXZlOyBjb2xvcjogcmdi +KDUxLCA1MSwgNTEpOyBmb250LXNpemU6IDE2cHg7Ij48c3BhbiBtZC1pbmxpbmU9InBsYWluIiBj +bGFzcz0ibWQtcGxhaW4gbWQtZXhwYW5kIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsi +PuaCqOWlve+8geS7peS4i+aYr+aIkeacrOWRqOeahOW3peS9nOaAu+e7k+WPiuS4i+WRqOiuoeWI +ku+8jOivt+WuoemYheOAgjwvc3Bhbj48L3A+PGRpdiB0YWJpbmRleD0iLTEiIGNpZD0ibjIiIG1k +dHlwZT0iaHIiIGNsYXNzPSJtZC1ociBtZC1lbmQtYmxvY2siIHN0eWxlPSJmb250LWZhbWlseTog +JnF1b3Q7T3BlbiBTYW5zJnF1b3Q7LCAmcXVvdDtDbGVhciBTYW5zJnF1b3Q7LCAmcXVvdDtIZWx2 +ZXRpY2EgTmV1ZSZxdW90OywgSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjsgYm94LXNpemlu +ZzogYm9yZGVyLWJveDsgY29sb3I6IHJnYig1MSwgNTEsIDUxKTsgZm9udC1zaXplOiAxNnB4OyI+ +PGhyIHN0eWxlPSJib3gtc2l6aW5nOiBjb250ZW50LWJveDsgaGVpZ2h0OiAycHg7IG1hcmdpbjog +MTZweCAwcHg7IGJvcmRlcjogMHB4IG5vbmU7IHBhZGRpbmc6IDBweDsgYmFja2dyb3VuZC1jb2xv +cjogcmdiKDIzMSwgMjMxLCAyMzEpOyI+PC9kaXY+PGgzIGNpZD0ibjMiIG1kdHlwZT0iaGVhZGlu +ZyIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1oZWFkaW5nIiBzdHlsZT0iZm9udC1mYW1pbHk6ICZx +dW90O09wZW4gU2FucyZxdW90OywgJnF1b3Q7Q2xlYXIgU2FucyZxdW90OywgJnF1b3Q7SGVsdmV0 +aWNhIE5ldWUmcXVvdDssIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7IGJveC1zaXppbmc6 +IGJvcmRlci1ib3g7IGJyZWFrLWFmdGVyOiBhdm9pZC1wYWdlOyBicmVhay1pbnNpZGU6IGF2b2lk +OyBvcnBoYW5zOiA0OyBmb250LXNpemU6IDEuNWVtOyBtYXJnaW4tdG9wOiAxcmVtOyBtYXJnaW4t +Ym90dG9tOiAxcmVtOyBwb3NpdGlvbjogcmVsYXRpdmU7IGxpbmUtaGVpZ2h0OiAxLjQzOyBjdXJz +b3I6IHRleHQ7IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgY29sb3I6IHJnYig1MSwgNTEsIDUxKTsi +PjxzcGFuIG1kLWlubGluZT0ic3Ryb25nIiBjbGFzcz0ibWQtcGFpci1zICIgc3R5bGU9ImJveC1z +aXppbmc6IGJvcmRlci1ib3g7Ij48c3Ryb25nIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94 +OyI+PHNwYW4gbWQtaW5saW5lPSJwbGFpbiIgY2xhc3M9Im1kLXBsYWluIiBzdHlsZT0iYm94LXNp +emluZzogYm9yZGVyLWJveDsiPuS4gOOAgeacrOWRqOW3peS9nOaAu+e7kzwvc3Bhbj48L3N0cm9u +Zz48L3NwYW4+PC9oMz48b2wgY2xhc3M9Im9sLWxpc3QiIHN0YXJ0PSIiIGNpZD0ibjQiIG1kdHlw +ZT0ibGlzdCIgc3R5bGU9ImZvbnQtZmFtaWx5OiAmcXVvdDtPcGVuIFNhbnMmcXVvdDssICZxdW90 +O0NsZWFyIFNhbnMmcXVvdDssICZxdW90O0hlbHZldGljYSBOZXVlJnF1b3Q7LCBIZWx2ZXRpY2Es +IEFyaWFsLCBzYW5zLXNlcmlmOyBib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsg +cGFkZGluZy1sZWZ0OiAzMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7IGNvbG9yOiByZ2IoNTEsIDUx +LCA1MSk7IGZvbnQtc2l6ZTogMTZweDsiPjxsaSBjbGFzcz0ibWQtbGlzdC1pdGVtIiBjaWQ9Im41 +IiBtZHR5cGU9Imxpc3RfaXRlbSIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdp +bjogMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48cCBjaWQ9Im42IiBtZHR5cGU9InBhcmFncmFw +aCIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1wIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJv +eDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IG9ycGhhbnM6IDQ7IG1hcmdpbjogMHB4IDBweCAwLjVy +ZW07IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHNwYW4gbWQt +aW5saW5lPSJzdHJvbmciIGNsYXNzPSJtZC1wYWlyLXMgIiBzdHlsZT0iYm94LXNpemluZzogYm9y +ZGVyLWJveDsiPjxzdHJvbmcgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij48c3BhbiBt +ZC1pbmxpbmU9InBsYWluIiBjbGFzcz0ibWQtcGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3Jk +ZXItYm94OyI+6YeN54K55bel5L2c5a6M5oiQ5oOF5Ya1PC9zcGFuPjwvc3Ryb25nPjwvc3Bhbj48 +L3A+PC9saT48dWwgY2xhc3M9InVsLWxpc3QiIGNpZD0ibjciIG1kdHlwZT0ibGlzdCIgZGF0YS1t +YXJrPSItIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBhZGRp +bmctbGVmdDogMzBweDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PGxpIGNsYXNzPSJtZC1saXN0LWl0 +ZW0iIGNpZD0ibjgiIG1kdHlwZT0ibGlzdF9pdGVtIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVy +LWJveDsgbWFyZ2luOiAwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxwIGNpZD0ibjkiIG1kdHlw +ZT0icGFyYWdyYXBoIiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLXAiIHN0eWxlPSJib3gtc2l6aW5n +OiBib3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5oZXJpdDsgb3JwaGFuczogNDsgbWFyZ2luOiAw +cHggMHB4IDAuNXJlbTsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyBwb3NpdGlvbjogcmVsYXRpdmU7 +Ij48c3BhbiBtZC1pbmxpbmU9InBsYWluIiBjbGFzcz0ibWQtcGxhaW4iIHN0eWxlPSJib3gtc2l6 +aW5nOiBib3JkZXItYm94OyI+5Lu75YqhMe+8mkc15Li75pWw5o2uNS40LjHniYjmnKzlvIDlj5E8 +L3NwYW4+PC9wPjwvbGk+PGxpIGNsYXNzPSJtZC1saXN0LWl0ZW0iIGNpZD0ibjEwIiBtZHR5cGU9 +Imxpc3RfaXRlbSIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBw +b3NpdGlvbjogcmVsYXRpdmU7Ij48cCBjaWQ9Im4xMSIgbWR0eXBlPSJwYXJhZ3JhcGgiIGNsYXNz +PSJtZC1lbmQtYmxvY2sgbWQtcCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGxpbmUt +aGVpZ2h0OiBpbmhlcml0OyBvcnBoYW5zOiA0OyBtYXJnaW46IDBweCAwcHggMC41cmVtOyB3aGl0 +ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPuS7u+WKoTLvvJrplIDllK4g +6YeH6LStNS40LjHniYjmnKzpnIDmsYLlvIDlj5E8L3A+PC9saT48L3VsPjxsaSBjbGFzcz0ibWQt +bGlzdC1pdGVtIiBjaWQ9Im4xMiIgbWR0eXBlPSJsaXN0X2l0ZW0iIHN0eWxlPSJib3gtc2l6aW5n +OiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHAgY2lkPSJu +MTMiIG1kdHlwZT0icGFyYWdyYXBoIiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLXAiIHN0eWxlPSJi +b3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5oZXJpdDsgb3JwaGFuczogNDsg +bWFyZ2luOiAwcHggMHB4IDAuNXJlbTsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyBwb3NpdGlvbjog +cmVsYXRpdmU7Ij48c3BhbiBtZC1pbmxpbmU9InN0cm9uZyIgY2xhc3M9Im1kLXBhaXItcyAiIHN0 +eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+PHN0cm9uZyBzdHlsZT0iYm94LXNpemluZzog +Ym9yZGVyLWJveDsiPjxzcGFuIG1kLWlubGluZT0icGxhaW4iIGNsYXNzPSJtZC1wbGFpbiIgc3R5 +bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij7luLjop4Tlt6XkvZw8L3NwYW4+PC9zdHJvbmc+ +PC9zcGFuPjwvcD48L2xpPjwvb2w+PG9sIGNsYXNzPSJvbC1saXN0IiBzdGFydD0iIiBjaWQ9Im40 +IiBtZHR5cGU9Imxpc3QiIHN0eWxlPSJmb250LWZhbWlseTogJnF1b3Q7T3BlbiBTYW5zJnF1b3Q7 +LCAmcXVvdDtDbGVhciBTYW5zJnF1b3Q7LCAmcXVvdDtIZWx2ZXRpY2EgTmV1ZSZxdW90OywgSGVs +dmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjsgYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2lu +OiAwcHg7IHBhZGRpbmctbGVmdDogMzBweDsgcG9zaXRpb246IHJlbGF0aXZlOyBjb2xvcjogcmdi +KDUxLCA1MSwgNTEpOyBmb250LXNpemU6IDE2cHg7Ij48dWwgY2xhc3M9InVsLWxpc3QiIGNpZD0i +bjE0IiBtZHR5cGU9Imxpc3QiIGRhdGEtbWFyaz0iLSIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRl +ci1ib3g7IG1hcmdpbjogMHB4OyBwYWRkaW5nLWxlZnQ6IDMwcHg7IHBvc2l0aW9uOiByZWxhdGl2 +ZTsiPjxsaSBjbGFzcz0ibWQtbGlzdC1pdGVtIiBjaWQ9Im4xNSIgbWR0eXBlPSJsaXN0X2l0ZW0i +IHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcG9zaXRpb246IHJl +bGF0aXZlOyI+PHAgY2lkPSJuMTYiIG1kdHlwZT0icGFyYWdyYXBoIiBjbGFzcz0ibWQtZW5kLWJs +b2NrIG1kLXAiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5o +ZXJpdDsgb3JwaGFuczogNDsgbWFyZ2luOiAwcHggMHB4IDAuNXJlbTsgd2hpdGUtc3BhY2U6IHBy +ZS13cmFwOyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48c3BhbiBtZC1pbmxpbmU9InBsYWluIiBjbGFz +cz0ibWQtcGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+5pel5bi45LqL5Yqh +Me+8mjIwMjYtMDEtMDUg6YeH6LSt566h55CGIOWPkeaWmeivpuaDheaJk+WNsOaOpeWPozwvc3Bh +bj48L3A+PC9saT48dWwgc3R5bGU9Imxpc3Qtc3R5bGUtdHlwZTogc3F1YXJlOyI+PGxpIGNsYXNz +PSJtZC1saXN0LWl0ZW0iIGNpZD0ibjE1IiBtZHR5cGU9Imxpc3RfaXRlbSIgc3R5bGU9ImJveC1z +aXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48cCBj +aWQ9Im4xNiIgbWR0eXBlPSJwYXJhZ3JhcGgiIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCIgc3R5 +bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhlcml0OyBvcnBoYW5z +OiA0OyBtYXJnaW46IDBweCAwcHggMC41cmVtOyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0 +aW9uOiByZWxhdGl2ZTsiPjxzcGFuIG1kLWlubGluZT0icGxhaW4iIGNsYXNzPSJtZC1wbGFpbiIg +c3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij4x44CB5piO57uG5aKe5Yqg6YeH6LSt6K6i +5Y2V5Y+36YCX5Y+35ou85o6lPGJyPjwvc3Bhbj48L3A+PC9saT48bGkgY2xhc3M9Im1kLWxpc3Qt +aXRlbSIgY2lkPSJuMTUiIG1kdHlwZT0ibGlzdF9pdGVtIiBzdHlsZT0iYm94LXNpemluZzogYm9y +ZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxwIGNpZD0ibjE2IiBt +ZHR5cGU9InBhcmFncmFwaCIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1wIiBzdHlsZT0iYm94LXNp +emluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IG9ycGhhbnM6IDQ7IG1hcmdp +bjogMHB4IDBweCAwLjVyZW07IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJlbGF0 +aXZlOyI+PHNwYW4gbWQtaW5saW5lPSJwbGFpbiIgY2xhc3M9Im1kLXBsYWluIiBzdHlsZT0iYm94 +LXNpemluZzogYm9yZGVyLWJveDsiPjLjgIHln7rmnKzkv6Hmga/lop7liqDph4fotK3orqLljZXl +j7cKPC9zcGFuPjwvcD48L2xpPjxsaSBjbGFzcz0ibWQtbGlzdC1pdGVtIiBjaWQ9Im4xNSIgbWR0 +eXBlPSJsaXN0X2l0ZW0iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBw +eDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHAgY2lkPSJuMTYiIG1kdHlwZT0icGFyYWdyYXBoIiBj +bGFzcz0ibWQtZW5kLWJsb2NrIG1kLXAiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBs +aW5lLWhlaWdodDogaW5oZXJpdDsgb3JwaGFuczogNDsgbWFyZ2luOiAwcHggMHB4IDAuNXJlbTsg +d2hpdGUtc3BhY2U6IHByZS13cmFwOyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48c3BhbiBtZC1pbmxp +bmU9InBsYWluIiBjbGFzcz0ibWQtcGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94 +OyI+M+OAgeWnlOWkluS6p+WTgeWSjOeJqeaWmeWinuWKoOeJqeaWmeaPj+i/sAo8L3NwYW4+PC9w +PjwvbGk+PGxpIGNsYXNzPSJtZC1saXN0LWl0ZW0iIGNpZD0ibjE1IiBtZHR5cGU9Imxpc3RfaXRl +bSIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBwb3NpdGlvbjog +cmVsYXRpdmU7Ij48cCBjaWQ9Im4xNiIgbWR0eXBlPSJwYXJhZ3JhcGgiIGNsYXNzPSJtZC1lbmQt +YmxvY2sgbWQtcCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGxpbmUtaGVpZ2h0OiBp +bmhlcml0OyBvcnBoYW5zOiA0OyBtYXJnaW46IDBweCAwcHggMC41cmVtOyB3aGl0ZS1zcGFjZTog +cHJlLXdyYXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxzcGFuIG1kLWlubGluZT0icGxhaW4iIGNs +YXNzPSJtZC1wbGFpbiIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij4044CB5aeU5aSW +5Lqn5ZOB5YWz6IGU6ZSA5ZSu6K6i5Y2V5a6i5oi35ZCN56ew44CB6YeH6LSt5pWw6YeP77yI5Li7 +77yJPC9zcGFuPjwvcD48L2xpPjwvdWw+PC91bD48L29sPjxvbCBjbGFzcz0ib2wtbGlzdCIgc3Rh +cnQ9IiIgY2lkPSJuNCIgbWR0eXBlPSJsaXN0IiBzdHlsZT0iZm9udC1mYW1pbHk6IOW+rui9r+mb +hem7kTsgYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBhZGRpbmctbGVmdDog +MzBweDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHVsIGNsYXNzPSJ1bC1saXN0IiBjaWQ9Im4xNCIg +bWR0eXBlPSJsaXN0IiBkYXRhLW1hcms9Ii0iIHN0eWxlPSJmb250LWZhbWlseTog5b6u6L2v6ZuF +6buROyBib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcGFkZGluZy1sZWZ0OiAz +MHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48bGkgY2xhc3M9Im1kLWxpc3QtaXRlbSIgY2lkPSJu +MTUiIG1kdHlwZT0ibGlzdF9pdGVtIiBzdHlsZT0iY29sb3I6IHJnYig1MSwgNTEsIDUxKTsgZm9u +dC1mYW1pbHk6ICZxdW90O09wZW4gU2FucyZxdW90OywgJnF1b3Q7Q2xlYXIgU2FucyZxdW90Oywg +JnF1b3Q7SGVsdmV0aWNhIE5ldWUmcXVvdDssIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7 +IGZvbnQtc2l6ZTogMTZweDsgYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBv +c2l0aW9uOiByZWxhdGl2ZTsiPjxwIGNpZD0ibjE2IiBtZHR5cGU9InBhcmFncmFwaCIgY2xhc3M9 +Im1kLWVuZC1ibG9jayBtZC1wIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1o +ZWlnaHQ6IGluaGVyaXQ7IG9ycGhhbnM6IDQ7IG1hcmdpbjogMHB4IDBweCAwLjVyZW07IHdoaXRl +LXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHNwYW4gbWQtaW5saW5lPSJw +bGFpbiIgY2xhc3M9Im1kLXBsYWluIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPuaX +peW4uOS6i+WKoTLvvJoyMDI2LTAxLTA2IAo8L3NwYW4+PC9wPjwvbGk+PHVsIHN0eWxlPSJsaXN0 +LXN0eWxlLXR5cGU6IHNxdWFyZTsiPjxsaSBjbGFzcz0ibWQtbGlzdC1pdGVtIiBjaWQ9Im4xNSIg +bWR0eXBlPSJsaXN0X2l0ZW0iIHN0eWxlPSJjb2xvcjogcmdiKDUxLCA1MSwgNTEpOyBmb250LWZh +bWlseTogJnF1b3Q7T3BlbiBTYW5zJnF1b3Q7LCAmcXVvdDtDbGVhciBTYW5zJnF1b3Q7LCAmcXVv +dDtIZWx2ZXRpY2EgTmV1ZSZxdW90OywgSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjsgZm9u +dC1zaXplOiAxNnB4OyBib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcG9zaXRp +b246IHJlbGF0aXZlOyI+PHAgY2lkPSJuMTYiIG1kdHlwZT0icGFyYWdyYXBoIiBjbGFzcz0ibWQt +ZW5kLWJsb2NrIG1kLXAiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdo +dDogaW5oZXJpdDsgb3JwaGFuczogNDsgbWFyZ2luOiAwcHggMHB4IDAuNXJlbTsgd2hpdGUtc3Bh +Y2U6IHByZS13cmFwOyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48c3BhbiBtZC1pbmxpbmU9InBsYWlu +IiBjbGFzcz0ibWQtcGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+MeOAgeiv +ouS7t+WNleWIl+ihqOWinuWKoOadkOi0qAo8L3NwYW4+PC9wPjwvbGk+PGxpIGNsYXNzPSJtZC1s +aXN0LWl0ZW0iIGNpZD0ibjE1IiBtZHR5cGU9Imxpc3RfaXRlbSIgc3R5bGU9ImNvbG9yOiByZ2Io +NTEsIDUxLCA1MSk7IGZvbnQtZmFtaWx5OiAmcXVvdDtPcGVuIFNhbnMmcXVvdDssICZxdW90O0Ns +ZWFyIFNhbnMmcXVvdDssICZxdW90O0hlbHZldGljYSBOZXVlJnF1b3Q7LCBIZWx2ZXRpY2EsIEFy +aWFsLCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDE2cHg7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7 +IG1hcmdpbjogMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48cCBjaWQ9Im4xNiIgbWR0eXBlPSJw +YXJhZ3JhcGgiIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCIgc3R5bGU9ImJveC1zaXppbmc6IGJv +cmRlci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhlcml0OyBvcnBoYW5zOiA0OyBtYXJnaW46IDBweCAw +cHggMC41cmVtOyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxz +cGFuIG1kLWlubGluZT0icGxhaW4iIGNsYXNzPSJtZC1wbGFpbiIgc3R5bGU9ImJveC1zaXppbmc6 +IGJvcmRlci1ib3g7Ij4y44CB6K+i5Lu35Y2V6K+m5oOF5ZKM57yW6L6R5aKe5Yqg5p2Q6LSoCjwv +c3Bhbj48L3A+PC9saT48bGkgY2xhc3M9Im1kLWxpc3QtaXRlbSIgY2lkPSJuMTUiIG1kdHlwZT0i +bGlzdF9pdGVtIiBzdHlsZT0iY29sb3I6IHJnYig1MSwgNTEsIDUxKTsgZm9udC1mYW1pbHk6ICZx +dW90O09wZW4gU2FucyZxdW90OywgJnF1b3Q7Q2xlYXIgU2FucyZxdW90OywgJnF1b3Q7SGVsdmV0 +aWNhIE5ldWUmcXVvdDssIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTog +MTZweDsgYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBvc2l0aW9uOiByZWxh +dGl2ZTsiPjxwIGNpZD0ibjE2IiBtZHR5cGU9InBhcmFncmFwaCIgY2xhc3M9Im1kLWVuZC1ibG9j +ayBtZC1wIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGluaGVy +aXQ7IG9ycGhhbnM6IDQ7IG1hcmdpbjogMHB4IDBweCAwLjVyZW07IHdoaXRlLXNwYWNlOiBwcmUt +d3JhcDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHNwYW4gbWQtaW5saW5lPSJwbGFpbiIgY2xhc3M9 +Im1kLXBsYWluIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPjPjgIHljY/lkIzor6Lk +u7fliJfooajlop7liqDmnZDotKgKPC9zcGFuPjwvcD48L2xpPjxsaSBjbGFzcz0ibWQtbGlzdC1p +dGVtIiBjaWQ9Im4xNSIgbWR0eXBlPSJsaXN0X2l0ZW0iIHN0eWxlPSJjb2xvcjogcmdiKDUxLCA1 +MSwgNTEpOyBmb250LWZhbWlseTogJnF1b3Q7T3BlbiBTYW5zJnF1b3Q7LCAmcXVvdDtDbGVhciBT +YW5zJnF1b3Q7LCAmcXVvdDtIZWx2ZXRpY2EgTmV1ZSZxdW90OywgSGVsdmV0aWNhLCBBcmlhbCwg +c2Fucy1zZXJpZjsgZm9udC1zaXplOiAxNnB4OyBib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJn +aW46IDBweDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHAgY2lkPSJuMTYiIG1kdHlwZT0icGFyYWdy +YXBoIiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLXAiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXIt +Ym94OyBsaW5lLWhlaWdodDogaW5oZXJpdDsgb3JwaGFuczogNDsgbWFyZ2luOiAwcHggMHB4IDAu +NXJlbTsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48c3BhbiBt +ZC1pbmxpbmU9InBsYWluIiBjbGFzcz0ibWQtcGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3Jk +ZXItYm94OyI+NOOAgeWNj+WQjOivouS7t+mAieaLqeS6p+WTgeWinuWKoOadkOi0qAo8L3NwYW4+ +PC9wPjwvbGk+PGxpIGNsYXNzPSJtZC1saXN0LWl0ZW0iIGNpZD0ibjE1IiBtZHR5cGU9Imxpc3Rf +aXRlbSIgc3R5bGU9ImNvbG9yOiByZ2IoNTEsIDUxLCA1MSk7IGZvbnQtZmFtaWx5OiAmcXVvdDtP +cGVuIFNhbnMmcXVvdDssICZxdW90O0NsZWFyIFNhbnMmcXVvdDssICZxdW90O0hlbHZldGljYSBO +ZXVlJnF1b3Q7LCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDE2cHg7 +IGJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7 +Ij48cCBjaWQ9Im4xNiIgbWR0eXBlPSJwYXJhZ3JhcGgiIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQt +cCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhlcml0OyBv +cnBoYW5zOiA0OyBtYXJnaW46IDBweCAwcHggMC41cmVtOyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7 +IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxzcGFuIG1kLWlubGluZT0icGxhaW4iIGNsYXNzPSJtZC1w +bGFpbiIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij4144CB6K+36LSt5Y2V5piO57uG +5o6l5Y+jIOS4peagvOagoemqjDwvc3Bhbj48L3A+PC9saT48L3VsPjxsaSBjbGFzcz0ibWQtbGlz +dC1pdGVtIiBjaWQ9Im4xNyIgbWR0eXBlPSJsaXN0X2l0ZW0iIHN0eWxlPSJjb2xvcjogcmdiKDUx +LCA1MSwgNTEpOyBmb250LWZhbWlseTogJnF1b3Q7T3BlbiBTYW5zJnF1b3Q7LCAmcXVvdDtDbGVh +ciBTYW5zJnF1b3Q7LCAmcXVvdDtIZWx2ZXRpY2EgTmV1ZSZxdW90OywgSGVsdmV0aWNhLCBBcmlh +bCwgc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxNnB4OyBib3gtc2l6aW5nOiBib3JkZXItYm94OyBt +YXJnaW46IDBweDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHAgY2lkPSJuMTgiIG1kdHlwZT0icGFy +YWdyYXBoIiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLXAiIHN0eWxlPSJib3gtc2l6aW5nOiBib3Jk +ZXItYm94OyBsaW5lLWhlaWdodDogaW5oZXJpdDsgb3JwaGFuczogNDsgbWFyZ2luOiAwcHggMHB4 +IDAuNXJlbTsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48c3Bh +biBtZC1pbmxpbmU9InBsYWluIiBjbGFzcz0ibWQtcGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBi +b3JkZXItYm94OyI+5pel5bi45LqL5YqhM++8mjIwMjYtMDEtMDc8L3NwYW4+PC9wPjwvbGk+PHVs +IHN0eWxlPSJsaXN0LXN0eWxlLXR5cGU6IHNxdWFyZTsiPjxsaSBjbGFzcz0ibWQtbGlzdC1pdGVt +IiBjaWQ9Im4xNyIgbWR0eXBlPSJsaXN0X2l0ZW0iIHN0eWxlPSJjb2xvcjogcmdiKDUxLCA1MSwg +NTEpOyBmb250LWZhbWlseTogJnF1b3Q7T3BlbiBTYW5zJnF1b3Q7LCAmcXVvdDtDbGVhciBTYW5z +JnF1b3Q7LCAmcXVvdDtIZWx2ZXRpY2EgTmV1ZSZxdW90OywgSGVsdmV0aWNhLCBBcmlhbCwgc2Fu +cy1zZXJpZjsgZm9udC1zaXplOiAxNnB4OyBib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46 +IDBweDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHAgY2lkPSJuMTgiIG1kdHlwZT0icGFyYWdyYXBo +IiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLXAiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94 +OyBsaW5lLWhlaWdodDogaW5oZXJpdDsgb3JwaGFuczogNDsgbWFyZ2luOiAwcHggMHB4IDAuNXJl +bTsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48c3BhbiBtZC1p +bmxpbmU9InBsYWluIiBjbGFzcz0ibWQtcGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXIt +Ym94OyI+MeOAgeWnlOWkluS6p+WTgemHh+i0reiuouWNleWPt+aLvOaOpeWxleekuiDlj5HotKfl +jZXlhbPogZQKPC9zcGFuPjwvcD48L2xpPjxsaSBjbGFzcz0ibWQtbGlzdC1pdGVtIiBjaWQ9Im4x +NyIgbWR0eXBlPSJsaXN0X2l0ZW0iIHN0eWxlPSJjb2xvcjogcmdiKDUxLCA1MSwgNTEpOyBmb250 +LWZhbWlseTogJnF1b3Q7T3BlbiBTYW5zJnF1b3Q7LCAmcXVvdDtDbGVhciBTYW5zJnF1b3Q7LCAm +cXVvdDtIZWx2ZXRpY2EgTmV1ZSZxdW90OywgSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjsg +Zm9udC1zaXplOiAxNnB4OyBib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcG9z +aXRpb246IHJlbGF0aXZlOyI+PHAgY2lkPSJuMTgiIG1kdHlwZT0icGFyYWdyYXBoIiBjbGFzcz0i +bWQtZW5kLWJsb2NrIG1kLXAiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhl +aWdodDogaW5oZXJpdDsgb3JwaGFuczogNDsgbWFyZ2luOiAwcHggMHB4IDAuNXJlbTsgd2hpdGUt +c3BhY2U6IHByZS13cmFwOyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48c3BhbiBtZC1pbmxpbmU9InBs +YWluIiBjbGFzcz0ibWQtcGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+MuOA +geWnlOWkluS6p+WTgeaPj+i/sOaLvOaOpeWxleekuiDkuqflk4HnvJbnoIHlhbPogZQKPC9zcGFu +PjwvcD48L2xpPjxsaSBjbGFzcz0ibWQtbGlzdC1pdGVtIiBjaWQ9Im4xNyIgbWR0eXBlPSJsaXN0 +X2l0ZW0iIHN0eWxlPSJjb2xvcjogcmdiKDUxLCA1MSwgNTEpOyBmb250LWZhbWlseTogJnF1b3Q7 +T3BlbiBTYW5zJnF1b3Q7LCAmcXVvdDtDbGVhciBTYW5zJnF1b3Q7LCAmcXVvdDtIZWx2ZXRpY2Eg +TmV1ZSZxdW90OywgSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxNnB4 +OyBib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcG9zaXRpb246IHJlbGF0aXZl +OyI+PHAgY2lkPSJuMTgiIG1kdHlwZT0icGFyYWdyYXBoIiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1k +LXAiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5oZXJpdDsg +b3JwaGFuczogNDsgbWFyZ2luOiAwcHggMHB4IDAuNXJlbTsgd2hpdGUtc3BhY2U6IHByZS13cmFw +OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48c3BhbiBtZC1pbmxpbmU9InBsYWluIiBjbGFzcz0ibWQt +cGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+M+OAgeeJqeaWmeaYjue7huea +hOeJqeaWmeaPj+i/sOWxleekugo8L3NwYW4+PC9wPjwvbGk+PGxpIGNsYXNzPSJtZC1saXN0LWl0 +ZW0iIGNpZD0ibjE3IiBtZHR5cGU9Imxpc3RfaXRlbSIgc3R5bGU9ImNvbG9yOiByZ2IoNTEsIDUx +LCA1MSk7IGZvbnQtZmFtaWx5OiAmcXVvdDtPcGVuIFNhbnMmcXVvdDssICZxdW90O0NsZWFyIFNh +bnMmcXVvdDssICZxdW90O0hlbHZldGljYSBOZXVlJnF1b3Q7LCBIZWx2ZXRpY2EsIEFyaWFsLCBz +YW5zLXNlcmlmOyBmb250LXNpemU6IDE2cHg7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdp +bjogMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48cCBjaWQ9Im4xOCIgbWR0eXBlPSJwYXJhZ3Jh +cGgiIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1i +b3g7IGxpbmUtaGVpZ2h0OiBpbmhlcml0OyBvcnBoYW5zOiA0OyBtYXJnaW46IDBweCAwcHggMC41 +cmVtOyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxzcGFuIG1k +LWlubGluZT0icGxhaW4iIGNsYXNzPSJtZC1wbGFpbiIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRl +ci1ib3g7Ij4044CB5YWz6IGU6ZSA5ZSu6K6i5Y2V5a6i5oi35ZCN56ew5ou85o6l5bGV56S6Cjwv +c3Bhbj48L3A+PC9saT48bGkgY2xhc3M9Im1kLWxpc3QtaXRlbSIgY2lkPSJuMTciIG1kdHlwZT0i +bGlzdF9pdGVtIiBzdHlsZT0iY29sb3I6IHJnYig1MSwgNTEsIDUxKTsgZm9udC1mYW1pbHk6ICZx +dW90O09wZW4gU2FucyZxdW90OywgJnF1b3Q7Q2xlYXIgU2FucyZxdW90OywgJnF1b3Q7SGVsdmV0 +aWNhIE5ldWUmcXVvdDssIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTog +MTZweDsgYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBvc2l0aW9uOiByZWxh +dGl2ZTsiPjxwIGNpZD0ibjE4IiBtZHR5cGU9InBhcmFncmFwaCIgY2xhc3M9Im1kLWVuZC1ibG9j +ayBtZC1wIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGluaGVy +aXQ7IG9ycGhhbnM6IDQ7IG1hcmdpbjogMHB4IDBweCAwLjVyZW07IHdoaXRlLXNwYWNlOiBwcmUt +d3JhcDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHNwYW4gbWQtaW5saW5lPSJwbGFpbiIgY2xhc3M9 +Im1kLXBsYWluIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPjXjgIHph4fotK3mlbDp +h4/vvIjkuLvvvInlsZXnpLoKPC9zcGFuPjwvcD48L2xpPjxsaSBjbGFzcz0ibWQtbGlzdC1pdGVt +IiBjaWQ9Im4xNyIgbWR0eXBlPSJsaXN0X2l0ZW0iIHN0eWxlPSJjb2xvcjogcmdiKDUxLCA1MSwg +NTEpOyBmb250LWZhbWlseTogJnF1b3Q7T3BlbiBTYW5zJnF1b3Q7LCAmcXVvdDtDbGVhciBTYW5z +JnF1b3Q7LCAmcXVvdDtIZWx2ZXRpY2EgTmV1ZSZxdW90OywgSGVsdmV0aWNhLCBBcmlhbCwgc2Fu +cy1zZXJpZjsgZm9udC1zaXplOiAxNnB4OyBib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46 +IDBweDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHAgY2lkPSJuMTgiIG1kdHlwZT0icGFyYWdyYXBo +IiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLXAiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94 +OyBsaW5lLWhlaWdodDogaW5oZXJpdDsgb3JwaGFuczogNDsgbWFyZ2luOiAwcHggMHB4IDAuNXJl +bTsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48c3BhbiBtZC1p +bmxpbmU9InBsYWluIiBjbGFzcz0ibWQtcGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXIt +Ym94OyI+NuOAgeebuOWQjOaJueasoeaVsOmHj+WQiOW5tjwvc3Bhbj48L3A+PC9saT48L3VsPjwv +dWw+PC9vbD48b2wgY2xhc3M9Im9sLWxpc3QiIHN0YXJ0PSIiIGNpZD0ibjQiIG1kdHlwZT0ibGlz +dCIgc3R5bGU9ImZvbnQtZmFtaWx5OiDlvq7ova/pm4Xpu5E7IGJveC1zaXppbmc6IGJvcmRlci1i +b3g7IG1hcmdpbjogMHB4OyBwYWRkaW5nLWxlZnQ6IDMwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsi +Pjx1bCBjbGFzcz0idWwtbGlzdCIgY2lkPSJuMTQiIG1kdHlwZT0ibGlzdCIgZGF0YS1tYXJrPSIt +IiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBhZGRpbmctbGVm +dDogMzBweDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PGxpIGNsYXNzPSJtZC1saXN0LWl0ZW0iIGNp +ZD0ibjE3IiBtZHR5cGU9Imxpc3RfaXRlbSIgc3R5bGU9ImZvbnQtZmFtaWx5OiAmcXVvdDtPcGVu +IFNhbnMmcXVvdDssICZxdW90O0NsZWFyIFNhbnMmcXVvdDssICZxdW90O0hlbHZldGljYSBOZXVl +JnF1b3Q7LCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmOyBjb2xvcjogcmdiKDUxLCA1MSwg +NTEpOyBmb250LXNpemU6IDE2cHg7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4 +OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48cCBjaWQ9Im4xOCIgbWR0eXBlPSJwYXJhZ3JhcGgiIGNs +YXNzPSJtZC1lbmQtYmxvY2sgbWQtcCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGxp +bmUtaGVpZ2h0OiBpbmhlcml0OyBvcnBoYW5zOiA0OyBtYXJnaW46IDBweCAwcHggMC41cmVtOyB3 +aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxzcGFuIG1kLWlubGlu +ZT0icGxhaW4iIGNsYXNzPSJtZC1wbGFpbiIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7 +Ij7ml6XluLjkuovliqE077yaMjAyNi0wMS0wODwvc3Bhbj48L3A+PC9saT48dWwgc3R5bGU9ImZv +bnQtZmFtaWx5OiDlvq7ova/pm4Xpu5E7IGxpc3Qtc3R5bGUtdHlwZTogc3F1YXJlOyI+PGxpIGNs +YXNzPSJtZC1saXN0LWl0ZW0iIGNpZD0ibjE3IiBtZHR5cGU9Imxpc3RfaXRlbSIgc3R5bGU9ImNv +bG9yOiByZ2IoNTEsIDUxLCA1MSk7IGZvbnQtZmFtaWx5OiAmcXVvdDtPcGVuIFNhbnMmcXVvdDss +ICZxdW90O0NsZWFyIFNhbnMmcXVvdDssICZxdW90O0hlbHZldGljYSBOZXVlJnF1b3Q7LCBIZWx2 +ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDE2cHg7IGJveC1zaXppbmc6IGJv +cmRlci1ib3g7IG1hcmdpbjogMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48cCBjaWQ9Im4xOCIg +bWR0eXBlPSJwYXJhZ3JhcGgiIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCIgc3R5bGU9ImJveC1z +aXppbmc6IGJvcmRlci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhlcml0OyBvcnBoYW5zOiA0OyBtYXJn +aW46IDBweCAwcHggMC41cmVtOyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0aW9uOiByZWxh +dGl2ZTsiPjxzcGFuIG1kLWlubGluZT0icGxhaW4iIGNsYXNzPSJtZC1wbGFpbiIgc3R5bGU9ImJv +eC1zaXppbmc6IGJvcmRlci1ib3g7Ij4x44CB5omT5Y2w5o6l5Y+j5qC55o2u6YeH6LSt5Y2V5YWz +6IGU5ZCI5bm26YeH6LSt5pWw6YePCjwvc3Bhbj48L3A+PC9saT48bGkgY2xhc3M9Im1kLWxpc3Qt +aXRlbSIgY2lkPSJuMTciIG1kdHlwZT0ibGlzdF9pdGVtIiBzdHlsZT0iY29sb3I6IHJnYig1MSwg +NTEsIDUxKTsgZm9udC1mYW1pbHk6ICZxdW90O09wZW4gU2FucyZxdW90OywgJnF1b3Q7Q2xlYXIg +U2FucyZxdW90OywgJnF1b3Q7SGVsdmV0aWNhIE5ldWUmcXVvdDssIEhlbHZldGljYSwgQXJpYWws +IHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTZweDsgYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFy +Z2luOiAwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxwIGNpZD0ibjE4IiBtZHR5cGU9InBhcmFn +cmFwaCIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1wIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVy +LWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IG9ycGhhbnM6IDQ7IG1hcmdpbjogMHB4IDBweCAw +LjVyZW07IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHNwYW4g +bWQtaW5saW5lPSJwbGFpbiIgY2xhc3M9Im1kLXBsYWluIiBzdHlsZT0iYm94LXNpemluZzogYm9y +ZGVyLWJveDsiPjLjgIHmiZPljbDmjqXlj6PmoLnmja7plIDllK7orqLljZXlhbPogZTlkIjlubbl +rqLmiLflkI3np7AKPC9zcGFuPjwvcD48L2xpPjxsaSBjbGFzcz0ibWQtbGlzdC1pdGVtIiBjaWQ9 +Im4xNyIgbWR0eXBlPSJsaXN0X2l0ZW0iIHN0eWxlPSJjb2xvcjogcmdiKDUxLCA1MSwgNTEpOyBm +b250LWZhbWlseTogJnF1b3Q7T3BlbiBTYW5zJnF1b3Q7LCAmcXVvdDtDbGVhciBTYW5zJnF1b3Q7 +LCAmcXVvdDtIZWx2ZXRpY2EgTmV1ZSZxdW90OywgSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJp +ZjsgZm9udC1zaXplOiAxNnB4OyBib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsg +cG9zaXRpb246IHJlbGF0aXZlOyI+PHAgY2lkPSJuMTgiIG1kdHlwZT0icGFyYWdyYXBoIiBjbGFz +cz0ibWQtZW5kLWJsb2NrIG1kLXAiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5l +LWhlaWdodDogaW5oZXJpdDsgb3JwaGFuczogNDsgbWFyZ2luOiAwcHggMHB4IDAuNXJlbTsgd2hp +dGUtc3BhY2U6IHByZS13cmFwOyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48c3BhbiBtZC1pbmxpbmU9 +InBsYWluIiBjbGFzcz0ibWQtcGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+ +M+OAgeaJk+WNsOaOpeWPo+agueaNruaJueasoeWPt+WQiOW5tuaVsOmHjwo8L3NwYW4+PC9wPjwv +bGk+PGxpIGNsYXNzPSJtZC1saXN0LWl0ZW0iIGNpZD0ibjE3IiBtZHR5cGU9Imxpc3RfaXRlbSIg +c3R5bGU9ImNvbG9yOiByZ2IoNTEsIDUxLCA1MSk7IGZvbnQtZmFtaWx5OiAmcXVvdDtPcGVuIFNh +bnMmcXVvdDssICZxdW90O0NsZWFyIFNhbnMmcXVvdDssICZxdW90O0hlbHZldGljYSBOZXVlJnF1 +b3Q7LCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDE2cHg7IGJveC1z +aXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48cCBj +aWQ9Im4xOCIgbWR0eXBlPSJwYXJhZ3JhcGgiIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCIgc3R5 +bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhlcml0OyBvcnBoYW5z +OiA0OyBtYXJnaW46IDBweCAwcHggMC41cmVtOyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0 +aW9uOiByZWxhdGl2ZTsiPjxzcGFuIG1kLWlubGluZT0icGxhaW4iIGNsYXNzPSJtZC1wbGFpbiIg +c3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij4044CB5omT5Y2w5o6l5Y+j5qC55o2u5ou8 +5o6l6KGM5Y+3PC9zcGFuPjwvcD48L2xpPjwvdWw+PGxpIGNsYXNzPSJtZC1saXN0LWl0ZW0iIGNp +ZD0ibjE3IiBtZHR5cGU9Imxpc3RfaXRlbSIgc3R5bGU9ImZvbnQtZmFtaWx5OiAmcXVvdDtPcGVu +IFNhbnMmcXVvdDssICZxdW90O0NsZWFyIFNhbnMmcXVvdDssICZxdW90O0hlbHZldGljYSBOZXVl +JnF1b3Q7LCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmOyBjb2xvcjogcmdiKDUxLCA1MSwg +NTEpOyBmb250LXNpemU6IDE2cHg7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4 +OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48cCBjaWQ9Im4xOCIgbWR0eXBlPSJwYXJhZ3JhcGgiIGNs +YXNzPSJtZC1lbmQtYmxvY2sgbWQtcCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGxp +bmUtaGVpZ2h0OiBpbmhlcml0OyBvcnBoYW5zOiA0OyBtYXJnaW46IDBweCAwcHggMC41cmVtOyB3 +aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxzcGFuIG1kLWlubGlu +ZT0icGxhaW4iIGNsYXNzPSJtZC1wbGFpbiIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7 +Ij7ml6XluLjkuovliqE177yaMjAyNi0wMS0wOTwvc3Bhbj48L3A+PC9saT48dWwgc3R5bGU9ImZv +bnQtZmFtaWx5OiDlvq7ova/pm4Xpu5E7IGxpc3Qtc3R5bGUtdHlwZTogc3F1YXJlOyI+PGxpIGNs +YXNzPSJtZC1saXN0LWl0ZW0iIGNpZD0ibjE3IiBtZHR5cGU9Imxpc3RfaXRlbSIgc3R5bGU9ImZv +bnQtZmFtaWx5OiAmcXVvdDtPcGVuIFNhbnMmcXVvdDssICZxdW90O0NsZWFyIFNhbnMmcXVvdDss +ICZxdW90O0hlbHZldGljYSBOZXVlJnF1b3Q7LCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlm +OyBjb2xvcjogcmdiKDUxLCA1MSwgNTEpOyBmb250LXNpemU6IDE2cHg7IGJveC1zaXppbmc6IGJv +cmRlci1ib3g7IG1hcmdpbjogMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48cCBjaWQ9Im4xOCIg +bWR0eXBlPSJwYXJhZ3JhcGgiIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCIgc3R5bGU9ImJveC1z +aXppbmc6IGJvcmRlci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhlcml0OyBvcnBoYW5zOiA0OyBtYXJn +aW46IDBweCAwcHggMC41cmVtOyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0aW9uOiByZWxh +dGl2ZTsiPjxzcGFuIG1kLWlubGluZT0icGxhaW4iIGNsYXNzPSJtZC1wbGFpbiIgc3R5bGU9ImJv +eC1zaXppbmc6IGJvcmRlci1ib3g7Ij4x44CB5Yiw6LSn5Y2V6K+m5oOF5om55qyh56CB5omT5Y2w +77yM55u45ZCM5om55qyh5pWw6YeP5ZCI5bm277ybCjwvc3Bhbj48L3A+PC9saT48bGkgY2xhc3M9 +Im1kLWxpc3QtaXRlbSIgY2lkPSJuMTciIG1kdHlwZT0ibGlzdF9pdGVtIiBzdHlsZT0iZm9udC1m +YW1pbHk6ICZxdW90O09wZW4gU2FucyZxdW90OywgJnF1b3Q7Q2xlYXIgU2FucyZxdW90OywgJnF1 +b3Q7SGVsdmV0aWNhIE5ldWUmcXVvdDssIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7IGNv +bG9yOiByZ2IoNTEsIDUxLCA1MSk7IGZvbnQtc2l6ZTogMTZweDsgYm94LXNpemluZzogYm9yZGVy +LWJveDsgbWFyZ2luOiAwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxwIGNpZD0ibjE4IiBtZHR5 +cGU9InBhcmFncmFwaCIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1wIiBzdHlsZT0iYm94LXNpemlu +ZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IG9ycGhhbnM6IDQ7IG1hcmdpbjog +MHB4IDBweCAwLjVyZW07IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJlbGF0aXZl +OyI+PHNwYW4gbWQtaW5saW5lPSJwbGFpbiIgY2xhc3M9Im1kLXBsYWluIiBzdHlsZT0iYm94LXNp +emluZzogYm9yZGVyLWJveDsiPjLjgIHliLDotKfljZXor6bmg4XmibnmrKHnoIHmiZPljbDvvIzk +uoznu7TnoIHkuK3ooYzlj7flkIjlubYKPC9zcGFuPjwvcD48L2xpPjxsaSBjbGFzcz0ibWQtbGlz +dC1pdGVtIiBjaWQ9Im4xNyIgbWR0eXBlPSJsaXN0X2l0ZW0iIHN0eWxlPSJmb250LWZhbWlseTog +JnF1b3Q7T3BlbiBTYW5zJnF1b3Q7LCAmcXVvdDtDbGVhciBTYW5zJnF1b3Q7LCAmcXVvdDtIZWx2 +ZXRpY2EgTmV1ZSZxdW90OywgSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjsgY29sb3I6IHJn +Yig1MSwgNTEsIDUxKTsgZm9udC1zaXplOiAxNnB4OyBib3gtc2l6aW5nOiBib3JkZXItYm94OyBt +YXJnaW46IDBweDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHAgY2lkPSJuMTgiIG1kdHlwZT0icGFy +YWdyYXBoIiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLXAiIHN0eWxlPSJib3gtc2l6aW5nOiBib3Jk +ZXItYm94OyBsaW5lLWhlaWdodDogaW5oZXJpdDsgb3JwaGFuczogNDsgbWFyZ2luOiAwcHggMHB4 +IDAuNXJlbTsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48c3Bh +biBtZC1pbmxpbmU9InBsYWluIiBjbGFzcz0ibWQtcGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBi +b3JkZXItYm94OyI+M+OAgea1i+ivlemXrumimOS/ruWkjTwvc3Bhbj48L3A+PC9saT48L3VsPjwv +dWw+PC9vbD48aDMgY2lkPSJuMyIgbWR0eXBlPSJoZWFkaW5nIiBjbGFzcz0ibWQtZW5kLWJsb2Nr +IG1kLWhlYWRpbmciIHN0eWxlPSJmb250LWZhbWlseTogJnF1b3Q7T3BlbiBTYW5zJnF1b3Q7LCAm +cXVvdDtDbGVhciBTYW5zJnF1b3Q7LCAmcXVvdDtIZWx2ZXRpY2EgTmV1ZSZxdW90OywgSGVsdmV0 +aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjsgYm94LXNpemluZzogYm9yZGVyLWJveDsgYnJlYWstYWZ0 +ZXI6IGF2b2lkLXBhZ2U7IGJyZWFrLWluc2lkZTogYXZvaWQ7IG9ycGhhbnM6IDQ7IGZvbnQtc2l6 +ZTogMS41ZW07IG1hcmdpbi10b3A6IDFyZW07IG1hcmdpbi1ib3R0b206IDFyZW07IHBvc2l0aW9u +OiByZWxhdGl2ZTsgbGluZS1oZWlnaHQ6IDEuNDM7IGN1cnNvcjogdGV4dDsgd2hpdGUtc3BhY2U6 +IHByZS13cmFwOyBjb2xvcjogcmdiKDUxLCA1MSwgNTEpOyI+PHNwYW4gbWQtaW5saW5lPSJzdHJv +bmciIGNsYXNzPSJtZC1wYWlyLXMgIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPjxz +dHJvbmcgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij48c3BhbiBtZC1pbmxpbmU9InBs +YWluIiBjbGFzcz0ibWQtcGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+5LiA +44CB5LiL5ZGo6YeN54K55Lu75YqhPC9zcGFuPjwvc3Ryb25nPjwvc3Bhbj48L2gzPjxkaXYgc3R5 +bGU9IiI+NS40LjHniYjmnKzmtYvor5XlrozmiJDvvIzlj5HluIPkuIrnur88L2Rpdj48ZGl2IHRh +YmluZGV4PSItMSIgY2lkPSJuMzkiIG1kdHlwZT0iaHIiIGNsYXNzPSJtZC1ociBtZC1lbmQtYmxv +Y2siIHN0eWxlPSJmb250LWZhbWlseTogJnF1b3Q7T3BlbiBTYW5zJnF1b3Q7LCAmcXVvdDtDbGVh +ciBTYW5zJnF1b3Q7LCAmcXVvdDtIZWx2ZXRpY2EgTmV1ZSZxdW90OywgSGVsdmV0aWNhLCBBcmlh +bCwgc2Fucy1zZXJpZjsgYm94LXNpemluZzogYm9yZGVyLWJveDsgY29sb3I6IHJnYig1MSwgNTEs +IDUxKTsgZm9udC1zaXplOiAxNnB4OyI+PGhyIHN0eWxlPSJib3gtc2l6aW5nOiBjb250ZW50LWJv +eDsgaGVpZ2h0OiAycHg7IG1hcmdpbjogMTZweCAwcHg7IGJvcmRlcjogMHB4IG5vbmU7IHBhZGRp +bmc6IDBweDsgYmFja2dyb3VuZC1jb2xvcjogcmdiKDIzMSwgMjMxLCAyMzEpOyI+PC9kaXY+PHAg +Y2lkPSJuNDAiIG1kdHlwZT0icGFyYWdyYXBoIiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLXAiIHN0 +eWxlPSJmb250LWZhbWlseTogJnF1b3Q7T3BlbiBTYW5zJnF1b3Q7LCAmcXVvdDtDbGVhciBTYW5z +JnF1b3Q7LCAmcXVvdDtIZWx2ZXRpY2EgTmV1ZSZxdW90OywgSGVsdmV0aWNhLCBBcmlhbCwgc2Fu +cy1zZXJpZjsgYm94LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IG9y +cGhhbnM6IDQ7IG1hcmdpbjogMC44ZW0gMHB4OyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0 +aW9uOiByZWxhdGl2ZTsgY29sb3I6IHJnYig1MSwgNTEsIDUxKTsgZm9udC1zaXplOiAxNnB4OyI+ +PHNwYW4gbWQtaW5saW5lPSJzdHJvbmciIGNsYXNzPSJtZC1wYWlyLXMgIiBzdHlsZT0iYm94LXNp +emluZzogYm9yZGVyLWJveDsiPjxzdHJvbmcgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7 +Ij48c3BhbiBtZC1pbmxpbmU9InBsYWluIiBjbGFzcz0ibWQtcGxhaW4iIHN0eWxlPSJib3gtc2l6 +aW5nOiBib3JkZXItYm94OyI+5aSH5rOoPC9zcGFuPjwvc3Ryb25nPjwvc3Bhbj48c3BhbiBtZC1p +bmxpbmU9InBsYWluIiBjbGFzcz0ibWQtcGxhaW4gbWQtZXhwYW5kIiBzdHlsZT0iYm94LXNpemlu +ZzogYm9yZGVyLWJveDsiPu+8mjIwMjblubQx5pyIMTLml6Ug5ZGo5LiA6K+35YGHPC9zcGFuPjwv +cD48L2Rpdj48ZGl2IHN0eWxlPSJmb250LWZhbWlseTog5b6u6L2v6ZuF6buROyI+PGJyPjwvZGl2 +PjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjxkaXYgaWQ9ImltYWlsX3NpZ25hdHVyZSIgY2xhc3M9 +Im50ZXMtc2lnbmF0dXJlIiBzdHlsZT0iZm9udC1mYW1pbHk6IOW+rui9r+mbhem7kTsgbWFyZ2lu +OiAyMHB4IDBweDsiIGRhdGEtbnRlcy1zaWduYXR1cmU9InRydWUiIHNwZWxsY2hlY2s9ImZhbHNl +Ij48ZGl2IHN0eWxlPSJmb250LWZhbWlseTomcXVvdDvlvq7ova/pm4Xpu5EmcXVvdDs7IGZvbnQt +c2l6ZTogMTRweDsgY29sb3I6IzAwMDAwMCI+CiAgICA8c3R5bGU+CiAgICAgICAgZm9udHsKICAg +ICAgICAgICAgbGluZS1oZWlnaHQ6IDEuNjsKICAgICAgICB9CiAgICA8L3N0eWxlPgo8ZGl2IHN0 +eWxlPSJmb250LWZhbWlseTomcXVvdDvlvq7ova/pm4Xpu5EmcXVvdDs7IGZvbnQtc2l6ZTogMTRw +eDsgY29sb3I6IzAwMDAwMCI+CiAgICA8c3R5bGU+CiAgICAgICAgZm9udHsKICAgICAgICAgICAg +bGluZS1oZWlnaHQ6IDEuNjsKICAgICAgICB9CiAgICA8L3N0eWxlPgo8ZGl2IHN0eWxlPSJmb250 +LWZhbWlseTomcXVvdDvlvq7ova/pm4Xpu5EmcXVvdDs7IGZvbnQtc2l6ZTogMTRweDsgY29sb3I6 +IzAwMDAwMCI+CiAgICA8c3R5bGU+CiAgICAgICAgZm9udHsKICAgICAgICAgICAgbGluZS1oZWln +aHQ6IDEuNjsKICAgICAgICB9CiAgICA8L3N0eWxlPgo8ZGl2IHN0eWxlPSJmb250LWZhbWlseTom +cXVvdDvlvq7ova/pm4Xpu5EmcXVvdDs7IGZvbnQtc2l6ZTogMTRweDsgY29sb3I6IzAwMDAwMCI+ +CiAgICA8c3R5bGU+CiAgICAgICAgZm9udHsKICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDEuNjsK +ICAgICAgICB9CiAgICA8L3N0eWxlPgo8ZGl2IHN0eWxlPSJmb250LWZhbWlseTomcXVvdDvlvq7o +va/pm4Xpu5EmcXVvdDs7IGZvbnQtc2l6ZTogMTRweDsgY29sb3I6IzAwMDAwMCI+CiAgICA8c3R5 +bGU+CiAgICAgICAgZm9udHsKICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDEuNjsKICAgICAgICB9 +CiAgICA8L3N0eWxlPgo8c3BhbiBzdHlsZT0iY29sb3I6IHJnYigxOTEsIDE5MSwgMTkxKTsgZm9u +dC1mYW1pbHk6ICdNaWNyb3NvZnQgWWFoZWknOyBmb250LXNpemU6IDEzcHg7IG9ycGhhbnM6IDI7 +IHdpZG93czogMjsiPkJlc3QgcmVnYXJkcyw8L3NwYW4+PGRpdiBzdHlsZT0ibWFyZ2luOiAwcHg7 +IHBhZGRpbmc6IDBweDsgYm9yZGVyOiAwcHg7IG91dGxpbmU6IDBweDsgZm9udC1mYW1pbHk6IFRh +aG9tYSwgQXJpYWwsIFNUSGVpdGksIFNpbVN1bjsgZm9udC12YXJpYW50LWxpZ2F0dXJlczogbm9y +bWFsOyBvcnBoYW5zOiAyOyB3aWRvd3M6IDI7IGNsZWFyOiBib3RoOyI+PHNwYW4gc3R5bGU9Im1h +cmdpbjogMHB4OyBwYWRkaW5nOiAwcHg7IGJvcmRlcjogMHB4OyBvdXRsaW5lOiAwcHg7IGZvbnQt +ZmFtaWx5OiAmcXVvdDtNaWNyb3NvZnQgWWFoZWkmcXVvdDs7IGZvbnQtc2l6ZTogMTNweDsgY29s +b3I6IHJnYigxOTEsIDE5MSwgMTkxKTsiPuadqOi9qTwvc3Bhbj48L2Rpdj48ZGl2IHN0eWxlPSJt +YXJnaW46IDBweDsgcGFkZGluZzogMHB4OyBib3JkZXI6IDBweDsgb3V0bGluZTogMHB4OyBmb250 +LWZhbWlseTogVGFob21hLCBBcmlhbCwgU1RIZWl0aSwgU2ltU3VuOyBmb250LXZhcmlhbnQtbGln +YXR1cmVzOiBub3JtYWw7IG9ycGhhbnM6IDI7IHdpZG93czogMjsgY2xlYXI6IGJvdGg7Ij48L2Rp +dj48ZGl2IHN0eWxlPSJtYXJnaW46IDBweDsgcGFkZGluZzogMHB4OyBib3JkZXI6IDBweDsgb3V0 +bGluZTogMHB4OyBmb250LWZhbWlseTogVGFob21hLCBBcmlhbCwgU1RIZWl0aSwgU2ltU3VuOyBm +b250LXZhcmlhbnQtbGlnYXR1cmVzOiBub3JtYWw7IG9ycGhhbnM6IDI7IHdpZG93czogMjsgY2xl +YXI6IGJvdGg7Ij48aW1nIHNyYz0iaHR0cHM6Ly9tYWlsLW9ubGluZS5ub3Nkbi4xMjcubmV0L3d6 +cG1tYy9jZTlmOGIzNmUxZmZiZTU1MzI5YzE5NmM4NGZlNTE5Ny5wbmciIHN0eWxlPSJtYXgtd2lk +dGg6IHVuc2V0OyI+PC9kaXY+PGRpdiBzdHlsZT0ibWFyZ2luOiAwcHg7IHBhZGRpbmc6IDBweDsg +Ym9yZGVyOiAwcHg7IG91dGxpbmU6IDBweDsgZm9udC1mYW1pbHk6IFRhaG9tYSwgQXJpYWwsIFNU +SGVpdGksIFNpbVN1bjsgZm9udC12YXJpYW50LWxpZ2F0dXJlczogbm9ybWFsOyBvcnBoYW5zOiAy +OyB3aWRvd3M6IDI7IGNsZWFyOiBib3RoOyI+PHNwYW4gc3R5bGU9Im1hcmdpbjogMHB4OyBwYWRk +aW5nOiAwcHg7IGJvcmRlcjogMHB4OyBvdXRsaW5lOiAwcHg7IGZvbnQtZmFtaWx5OiAmcXVvdDtN +aWNyb3NvZnQgWWFoZWkmcXVvdDs7IGNvbG9yOiByZ2IoMTkxLCAxOTEsIDE5MSk7Ij7lnLDlnYDv +vJrkuK3lm73Ct+WNl+S6rOS6keWvhuWfjkzmoIs1LzEw5qW8PC9zcGFuPjwvZGl2PjxkaXYgc3R5 +bGU9Im1hcmdpbjogMHB4OyBwYWRkaW5nOiAwcHg7IGJvcmRlcjogMHB4OyBvdXRsaW5lOiAwcHg7 +IGZvbnQtZmFtaWx5OiBUYWhvbWEsIEFyaWFsLCBTVEhlaXRpLCBTaW1TdW47IGZvbnQtdmFyaWFu +dC1saWdhdHVyZXM6IG5vcm1hbDsgb3JwaGFuczogMjsgd2lkb3dzOiAyOyBjbGVhcjogYm90aDsi +PjxzcGFuIHN0eWxlPSJtYXJnaW46IDBweDsgcGFkZGluZzogMHB4OyBib3JkZXI6IDBweDsgb3V0 +bGluZTogMHB4OyBmb250LWZhbWlseTogJnF1b3Q7TWljcm9zb2Z0IFlhaGVpJnF1b3Q7OyBjb2xv +cjogcmdiKDE5MSwgMTkxLCAxOTEpOyI+5omL5py677yaMTg3MjYxMjg0ODk8L3NwYW4+PC9kaXY+ +PGRpdiBzdHlsZT0ibWFyZ2luOiAwcHg7IHBhZGRpbmc6IDBweDsgYm9yZGVyOiAwcHg7IG91dGxp +bmU6IDBweDsgZm9udC1mYW1pbHk6IFRhaG9tYSwgQXJpYWwsIFNUSGVpdGksIFNpbVN1bjsgZm9u +dC12YXJpYW50LWxpZ2F0dXJlczogbm9ybWFsOyBvcnBoYW5zOiAyOyB3aWRvd3M6IDI7IGNsZWFy +OiBib3RoOyI+PHNwYW4gc3R5bGU9Im1hcmdpbjogMHB4OyBwYWRkaW5nOiAwcHg7IGJvcmRlcjog +MHB4OyBvdXRsaW5lOiAwcHg7IGZvbnQtZmFtaWx5OiAmcXVvdDtNaWNyb3NvZnQgWWFoZWkmcXVv +dDs7IGNvbG9yOiByZ2IoMTkxLCAxOTEsIDE5MSk7Ij7pgq7nrrHvvJp5YW5neHVhbkB3aXRzb2Z0 +LmNuPC9zcGFuPjwvZGl2Pgo8L2Rpdj4KPC9kaXY+CjwvZGl2Pgo8L2Rpdj4KPC9kaXY+PC9kaXY+ +PC9kaXY+PC9kaXY+PCEtLfCfmIAtLT48L2JvZHk+PC9odG1sPg== + +--=_mailmaster-6a18e4a4_0_99_=-- diff --git a/media/inbound/2026-01-16_1702_G5开发周报_2026-01-12_--_2026-01-16---05bf4f39-ec69-4ccb-99c1-8812094a59eb.eml b/media/inbound/2026-01-16_1702_G5开发周报_2026-01-12_--_2026-01-16---05bf4f39-ec69-4ccb-99c1-8812094a59eb.eml new file mode 100644 index 0000000..5745724 --- /dev/null +++ b/media/inbound/2026-01-16_1702_G5开发周报_2026-01-12_--_2026-01-16---05bf4f39-ec69-4ccb-99c1-8812094a59eb.eml @@ -0,0 +1,355 @@ +Date: Fri, 16 Jan 2026 17:02:55 +0800 +From: =?utf-8?B?5p2o6L2p?= +To: =?utf-8?B?5YiY5by6?= +Cc: =?utf-8?B?5bGI5paw6b6Z?= , =?utf-8?B?5pyx5paM?= + , =?utf-8?B?6ZmI5piO?= , + =?utf-8?B?5aSP6ZO25pWP?= , =?utf-8?B?6KKB5pm0?= + +Message-ID: <819A6354-ACC9-49AE-B7AC-AF073B353A5B@witsoft.cn> +Subject: =?utf-8?B?RzXlvIDlj5HlkajmiqXjgJAyMDI2LTAxLTEyIC0tICAyMDI2LTAx?= + =?utf-8?B?LTE244CR?= +MIME-Version: 1.0 +Content-Type: multipart/alternative; boundary="=_mailmaster-6a18e4a4_0_124_=" + +--=_mailmaster-6a18e4a4_0_124_= +Content-Type: text/plain; charset="utf-8" +Content-Transfer-Encoding: base64 + +5oKo5aW977yB5Lul5LiL5piv5oiR5pys5ZGo55qE5bel5L2c5oC757uT5Y+K5LiL5ZGo6K6h5YiS +77yM6K+35a6h6ZiF44CCCuS4gOOAgeacrOWRqOW3peS9nOaAu+e7kwrph43ngrnlt6XkvZzlrozm +iJDmg4XlhrUK5Lu75YqhMe+8mkc15Li75pWw5o2uNS40LjHniYjmnKzlj5HluIMK5Lu75YqhMu+8 +mumUgOWUriDph4fotK01LjQuMeeJiOacrOWPkeW4gwrluLjop4Tlt6XkvZwK5pel5bi45LqL5Yqh +Me+8mjIwMjYtMDEtMTMgCjHjgIHniYjmnKznvLrpmbfkv67lpI0gCjLjgIHljoblj7Lpl67popjl +pITnkIYgCjPjgIHnlJ/miJDpl67popjkv67lpI0K5pel5bi45LqL5YqhMu+8mjIwMjYtMDEtMTQK +MS4g54mI5pys5Yqf6IO95rWL6K+V5a6M5oiQIAoyLiDljoblj7LnvLrpmbfkv67lpI3pqozor4EK +5pel5bi45LqL5YqhM++8mjIwMjYtMDEtMTUKMS4g5Li75pWw5o2u5rWL6K+V5a6M5oiQIAoyLiDp +lIDllK7mtYvor5XlrozmiJAgCjMuIOmHh+i0rea1i+ivleWujOaIkCAKNC4g55Sf5Lqn6Zeu6aKY +6aqM6K+B5a6M5oiQCuaXpeW4uOS6i+WKoTTvvJoyMDI2LTAxLTE2CueJiOacrOWPkeW4g+aUr+aM +geWSjOmcgOaxguivhOWuoQrkuIDjgIHkuIvlkajph43ngrnku7vliqEKNS40LjLniYjmnKzlvIDl +j5EK5aSH5rOo77yaMjAyNuW5tDHmnIgxMuaXpSDlkajkuIDor7flgYcKQmVzdCByZWdhcmRzLOad +qOi9qQrlnLDlnYDvvJrkuK3lm73Ct+WNl+S6rOS6keWvhuWfjkzmoIs1LzEw5qW8CuaJi+acuu+8 +mjE4NzI2MTI4NDg5CumCrueuse+8mnlhbmd4dWFuQHdpdHNvZnQuY24= + +--=_mailmaster-6a18e4a4_0_124_= +Content-Type: text/html; charset="utf-8" +Content-Transfer-Encoding: base64 + +PGh0bWw+PGhlYWQ+PG1ldGEgaHR0cC1lcXVpdj0nQ29udGVudC1UeXBlJyBjb250ZW50PSd0ZXh0 +L2h0bWw7IGNoYXJzZXQ9VVRGLTgnPjwvaGVhZD48Ym9keSBzdHlsZT1saW5lLWhlaWdodDogMS41 +O2ZvbnQtZmFtaWx5OiAi5b6u6L2v6ZuF6buRIj48ZGl2ICBzdHlsZT0iZm9udC1mYW1pbHk6IOW+ +rui9r+mbhem7kTsiPjxkaXYgc3R5bGU9IiI+PGRpdiBzdHlsZT0iIj48ZGl2IHN0eWxlPSIiIDEu +NTtmb250LWZhbWlseTo9IiIgIuW+rui9r+mbhem7kSI9IiI+PGRpdiBzdHlsZT0iIj48ZGl2IHN0 +eWxlPSIiPjxkaXYgc3R5bGU9IiI+PGRpdiBzdHlsZT0iIj48cCBjaWQ9Im4wIiBtZHR5cGU9InBh +cmFncmFwaCIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1wIG1kLWZvY3VzIiBzdHlsZT0iZm9udC1m +YW1pbHk6ICZxdW90O09wZW4gU2FucyZxdW90OywgJnF1b3Q7Q2xlYXIgU2FucyZxdW90OywgJnF1 +b3Q7SGVsdmV0aWNhIE5ldWUmcXVvdDssIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7IGJv +eC1zaXppbmc6IGJvcmRlci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhlcml0OyBvcnBoYW5zOiA0OyBt +YXJnaW46IDAuOGVtIDBweDsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyBwb3NpdGlvbjogcmVsYXRp +dmU7IGNvbG9yOiByZ2IoNTEsIDUxLCA1MSk7IGZvbnQtc2l6ZTogMTZweDsiPjxzcGFuIG1kLWlu +bGluZT0icGxhaW4iIGNsYXNzPSJtZC1wbGFpbiBtZC1leHBhbmQiIHN0eWxlPSJib3gtc2l6aW5n +OiBib3JkZXItYm94OyI+5oKo5aW977yB5Lul5LiL5piv5oiR5pys5ZGo55qE5bel5L2c5oC757uT +5Y+K5LiL5ZGo6K6h5YiS77yM6K+35a6h6ZiF44CCPC9zcGFuPjwvcD48ZGl2IHRhYmluZGV4PSIt +MSIgY2lkPSJuMiIgbWR0eXBlPSJociIgY2xhc3M9Im1kLWhyIG1kLWVuZC1ibG9jayIgc3R5bGU9 +ImZvbnQtZmFtaWx5OiAmcXVvdDtPcGVuIFNhbnMmcXVvdDssICZxdW90O0NsZWFyIFNhbnMmcXVv +dDssICZxdW90O0hlbHZldGljYSBOZXVlJnF1b3Q7LCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNl +cmlmOyBib3gtc2l6aW5nOiBib3JkZXItYm94OyBjb2xvcjogcmdiKDUxLCA1MSwgNTEpOyBmb250 +LXNpemU6IDE2cHg7Ij48aHIgc3R5bGU9ImJveC1zaXppbmc6IGNvbnRlbnQtYm94OyBoZWlnaHQ6 +IDJweDsgbWFyZ2luOiAxNnB4IDBweDsgYm9yZGVyOiAwcHggbm9uZTsgcGFkZGluZzogMHB4OyBi +YWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjMxLCAyMzEsIDIzMSk7Ij48L2Rpdj48aDMgY2lkPSJuMyIg +bWR0eXBlPSJoZWFkaW5nIiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLWhlYWRpbmciIHN0eWxlPSJm +b250LWZhbWlseTogJnF1b3Q7T3BlbiBTYW5zJnF1b3Q7LCAmcXVvdDtDbGVhciBTYW5zJnF1b3Q7 +LCAmcXVvdDtIZWx2ZXRpY2EgTmV1ZSZxdW90OywgSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJp +ZjsgYm94LXNpemluZzogYm9yZGVyLWJveDsgYnJlYWstYWZ0ZXI6IGF2b2lkLXBhZ2U7IGJyZWFr +LWluc2lkZTogYXZvaWQ7IG9ycGhhbnM6IDQ7IGZvbnQtc2l6ZTogMS41ZW07IG1hcmdpbi10b3A6 +IDFyZW07IG1hcmdpbi1ib3R0b206IDFyZW07IHBvc2l0aW9uOiByZWxhdGl2ZTsgbGluZS1oZWln +aHQ6IDEuNDM7IGN1cnNvcjogdGV4dDsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyBjb2xvcjogcmdi +KDUxLCA1MSwgNTEpOyI+PHNwYW4gbWQtaW5saW5lPSJzdHJvbmciIGNsYXNzPSJtZC1wYWlyLXMg +IiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPjxzdHJvbmcgc3R5bGU9ImJveC1zaXpp +bmc6IGJvcmRlci1ib3g7Ij48c3BhbiBtZC1pbmxpbmU9InBsYWluIiBjbGFzcz0ibWQtcGxhaW4i +IHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+5LiA44CB5pys5ZGo5bel5L2c5oC757uT +PC9zcGFuPjwvc3Ryb25nPjwvc3Bhbj48L2gzPjxvbCBjbGFzcz0ib2wtbGlzdCIgc3RhcnQ9IiIg +Y2lkPSJuNCIgbWR0eXBlPSJsaXN0IiBzdHlsZT0iZm9udC1mYW1pbHk6ICZxdW90O09wZW4gU2Fu +cyZxdW90OywgJnF1b3Q7Q2xlYXIgU2FucyZxdW90OywgJnF1b3Q7SGVsdmV0aWNhIE5ldWUmcXVv +dDssIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7 +IG1hcmdpbjogMHB4OyBwYWRkaW5nLWxlZnQ6IDMwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsgY29s +b3I6IHJnYig1MSwgNTEsIDUxKTsgZm9udC1zaXplOiAxNnB4OyI+PGxpIGNsYXNzPSJtZC1saXN0 +LWl0ZW0iIGNpZD0ibjUiIG1kdHlwZT0ibGlzdF9pdGVtIiBzdHlsZT0iYm94LXNpemluZzogYm9y +ZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxwIGNpZD0ibjYiIG1k +dHlwZT0icGFyYWdyYXBoIiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLXAiIHN0eWxlPSJib3gtc2l6 +aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5oZXJpdDsgb3JwaGFuczogNDsgbWFyZ2lu +OiAwcHggMHB4IDAuNXJlbTsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyBwb3NpdGlvbjogcmVsYXRp +dmU7Ij48c3BhbiBtZC1pbmxpbmU9InN0cm9uZyIgY2xhc3M9Im1kLXBhaXItcyAiIHN0eWxlPSJi +b3gtc2l6aW5nOiBib3JkZXItYm94OyI+PHN0cm9uZyBzdHlsZT0iYm94LXNpemluZzogYm9yZGVy +LWJveDsiPjxzcGFuIG1kLWlubGluZT0icGxhaW4iIGNsYXNzPSJtZC1wbGFpbiIgc3R5bGU9ImJv +eC1zaXppbmc6IGJvcmRlci1ib3g7Ij7ph43ngrnlt6XkvZzlrozmiJDmg4XlhrU8L3NwYW4+PC9z +dHJvbmc+PC9zcGFuPjwvcD48L2xpPjx1bCBjbGFzcz0idWwtbGlzdCIgY2lkPSJuNyIgbWR0eXBl +PSJsaXN0IiBkYXRhLW1hcms9Ii0iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJn +aW46IDBweDsgcGFkZGluZy1sZWZ0OiAzMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48bGkgY2xh +c3M9Im1kLWxpc3QtaXRlbSIgY2lkPSJuOCIgbWR0eXBlPSJsaXN0X2l0ZW0iIHN0eWxlPSJib3gt +c2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHAg +Y2lkPSJuOSIgbWR0eXBlPSJwYXJhZ3JhcGgiIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCIgc3R5 +bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhlcml0OyBvcnBoYW5z +OiA0OyBtYXJnaW46IDBweCAwcHggMC41cmVtOyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0 +aW9uOiByZWxhdGl2ZTsiPjxzcGFuIG1kLWlubGluZT0icGxhaW4iIGNsYXNzPSJtZC1wbGFpbiIg +c3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij7ku7vliqEx77yaRzXkuLvmlbDmja41LjQu +MeeJiOacrOWPkeW4gzwvc3Bhbj48L3A+PC9saT48bGkgY2xhc3M9Im1kLWxpc3QtaXRlbSIgY2lk +PSJuMTAiIG1kdHlwZT0ibGlzdF9pdGVtIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsg +bWFyZ2luOiAwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxwIGNpZD0ibjExIiBtZHR5cGU9InBh +cmFncmFwaCIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1wIiBzdHlsZT0iYm94LXNpemluZzogYm9y +ZGVyLWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IG9ycGhhbnM6IDQ7IG1hcmdpbjogMHB4IDBw +eCAwLjVyZW07IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJlbGF0aXZlOyI+5Lu7 +5YqhMu+8mumUgOWUriDph4fotK01LjQuMeeJiOacrOWPkeW4gzwvcD48L2xpPjwvdWw+PGxpIGNs +YXNzPSJtZC1saXN0LWl0ZW0iIGNpZD0ibjEyIiBtZHR5cGU9Imxpc3RfaXRlbSIgc3R5bGU9ImJv +eC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48 +cCBjaWQ9Im4xMyIgbWR0eXBlPSJwYXJhZ3JhcGgiIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCIg +c3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhlcml0OyBvcnBo +YW5zOiA0OyBtYXJnaW46IDBweCAwcHggMC41cmVtOyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBv +c2l0aW9uOiByZWxhdGl2ZTsiPjxzcGFuIG1kLWlubGluZT0ic3Ryb25nIiBjbGFzcz0ibWQtcGFp +ci1zICIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij48c3Ryb25nIHN0eWxlPSJib3gt +c2l6aW5nOiBib3JkZXItYm94OyI+PHNwYW4gbWQtaW5saW5lPSJwbGFpbiIgY2xhc3M9Im1kLXBs +YWluIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPuW4uOinhOW3peS9nDwvc3Bhbj48 +L3N0cm9uZz48L3NwYW4+PC9wPjwvbGk+PC9vbD48b2wgY2xhc3M9Im9sLWxpc3QiIHN0YXJ0PSIi +IGNpZD0ibjQiIG1kdHlwZT0ibGlzdCIgc3R5bGU9ImZvbnQtZmFtaWx5OiAmcXVvdDtPcGVuIFNh +bnMmcXVvdDssICZxdW90O0NsZWFyIFNhbnMmcXVvdDssICZxdW90O0hlbHZldGljYSBOZXVlJnF1 +b3Q7LCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmOyBib3gtc2l6aW5nOiBib3JkZXItYm94 +OyBtYXJnaW46IDBweDsgcGFkZGluZy1sZWZ0OiAzMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7IGNv +bG9yOiByZ2IoNTEsIDUxLCA1MSk7IGZvbnQtc2l6ZTogMTZweDsiPjx1bCBjbGFzcz0idWwtbGlz +dCIgY2lkPSJuMTQiIG1kdHlwZT0ibGlzdCIgZGF0YS1tYXJrPSItIiBzdHlsZT0iYm94LXNpemlu +ZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBhZGRpbmctbGVmdDogMzBweDsgcG9zaXRpb246 +IHJlbGF0aXZlOyI+PGxpIGNsYXNzPSJtZC1saXN0LWl0ZW0iIGNpZD0ibjE1IiBtZHR5cGU9Imxp +c3RfaXRlbSIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBwb3Np +dGlvbjogcmVsYXRpdmU7Ij48cCBjaWQ9Im4xNiIgbWR0eXBlPSJwYXJhZ3JhcGgiIGNsYXNzPSJt +ZC1lbmQtYmxvY2sgbWQtcCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGxpbmUtaGVp +Z2h0OiBpbmhlcml0OyBvcnBoYW5zOiA0OyBtYXJnaW46IDBweCAwcHggMC41cmVtOyB3aGl0ZS1z +cGFjZTogcHJlLXdyYXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxzcGFuIG1kLWlubGluZT0icGxh +aW4iIGNsYXNzPSJtZC1wbGFpbiIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij7ml6Xl +uLjkuovliqEx77yaMjAyNi0wMS0xMyA8L3NwYW4+PC9wPjwvbGk+PHVsIHN0eWxlPSJsaXN0LXN0 +eWxlLXR5cGU6IHNxdWFyZTsiPjxsaSBjbGFzcz0ibWQtbGlzdC1pdGVtIiBjaWQ9Im4xNSIgbWR0 +eXBlPSJsaXN0X2l0ZW0iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBw +eDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHAgY2lkPSJuMTYiIG1kdHlwZT0icGFyYWdyYXBoIiBj +bGFzcz0ibWQtZW5kLWJsb2NrIG1kLXAiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBs +aW5lLWhlaWdodDogaW5oZXJpdDsgb3JwaGFuczogNDsgbWFyZ2luOiAwcHggMHB4IDAuNXJlbTsg +d2hpdGUtc3BhY2U6IHByZS13cmFwOyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48c3BhbiBtZC1pbmxp +bmU9InBsYWluIiBjbGFzcz0ibWQtcGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94 +OyI+MeOAgeeJiOacrOe8uumZt+S/ruWkjQo8L3NwYW4+PC9wPjwvbGk+PGxpIGNsYXNzPSJtZC1s +aXN0LWl0ZW0iIGNpZD0ibjE1IiBtZHR5cGU9Imxpc3RfaXRlbSIgc3R5bGU9ImJveC1zaXppbmc6 +IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48cCBjaWQ9Im4x +NiIgbWR0eXBlPSJwYXJhZ3JhcGgiIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCIgc3R5bGU9ImJv +eC1zaXppbmc6IGJvcmRlci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhlcml0OyBvcnBoYW5zOiA0OyBt +YXJnaW46IDBweCAwcHggMC41cmVtOyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0aW9uOiBy +ZWxhdGl2ZTsiPjxzcGFuIG1kLWlubGluZT0icGxhaW4iIGNsYXNzPSJtZC1wbGFpbiIgc3R5bGU9 +ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij4y44CB5Y6G5Y+y6Zeu6aKY5aSE55CGCjwvc3Bhbj48 +L3A+PC9saT48bGkgY2xhc3M9Im1kLWxpc3QtaXRlbSIgY2lkPSJuMTUiIG1kdHlwZT0ibGlzdF9p +dGVtIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBvc2l0aW9u +OiByZWxhdGl2ZTsiPjxwIGNpZD0ibjE2IiBtZHR5cGU9InBhcmFncmFwaCIgY2xhc3M9Im1kLWVu +ZC1ibG9jayBtZC1wIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6 +IGluaGVyaXQ7IG9ycGhhbnM6IDQ7IG1hcmdpbjogMHB4IDBweCAwLjVyZW07IHdoaXRlLXNwYWNl +OiBwcmUtd3JhcDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHNwYW4gbWQtaW5saW5lPSJwbGFpbiIg +Y2xhc3M9Im1kLXBsYWluIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPjPjgIHnlJ/m +iJDpl67popjkv67lpI08L3NwYW4+PC9wPjwvbGk+PC91bD48L3VsPjwvb2w+PG9sIGNsYXNzPSJv +bC1saXN0IiBzdGFydD0iIiBjaWQ9Im40IiBtZHR5cGU9Imxpc3QiIHN0eWxlPSJmb250LWZhbWls +eTog5b6u6L2v6ZuF6buROyBib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcGFk +ZGluZy1sZWZ0OiAzMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48dWwgY2xhc3M9InVsLWxpc3Qi +IGNpZD0ibjE0IiBtZHR5cGU9Imxpc3QiIGRhdGEtbWFyaz0iLSIgc3R5bGU9ImZvbnQtZmFtaWx5 +OiDlvq7ova/pm4Xpu5E7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBwYWRk +aW5nLWxlZnQ6IDMwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxsaSBjbGFzcz0ibWQtbGlzdC1p +dGVtIiBjaWQ9Im4xNSIgbWR0eXBlPSJsaXN0X2l0ZW0iIHN0eWxlPSJjb2xvcjogcmdiKDUxLCA1 +MSwgNTEpOyBmb250LWZhbWlseTogJnF1b3Q7T3BlbiBTYW5zJnF1b3Q7LCAmcXVvdDtDbGVhciBT +YW5zJnF1b3Q7LCAmcXVvdDtIZWx2ZXRpY2EgTmV1ZSZxdW90OywgSGVsdmV0aWNhLCBBcmlhbCwg +c2Fucy1zZXJpZjsgZm9udC1zaXplOiAxNnB4OyBib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJn +aW46IDBweDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHAgY2lkPSJuMTYiIG1kdHlwZT0icGFyYWdy +YXBoIiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLXAiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXIt +Ym94OyBsaW5lLWhlaWdodDogaW5oZXJpdDsgb3JwaGFuczogNDsgbWFyZ2luOiAwcHggMHB4IDAu +NXJlbTsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48c3BhbiBt +ZC1pbmxpbmU9InBsYWluIiBjbGFzcz0ibWQtcGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3Jk +ZXItYm94OyI+5pel5bi45LqL5YqhMu+8mjIwMjYtMDEtMTQ8L3NwYW4+PC9wPjwvbGk+PHVsIHN0 +eWxlPSJsaXN0LXN0eWxlLXR5cGU6IHNxdWFyZTsiPjxsaSBjbGFzcz0ibWQtbGlzdC1pdGVtIiBj +aWQ9Im4xNSIgbWR0eXBlPSJsaXN0X2l0ZW0iIHN0eWxlPSJjb2xvcjogcmdiKDUxLCA1MSwgNTEp +OyBmb250LWZhbWlseTogJnF1b3Q7T3BlbiBTYW5zJnF1b3Q7LCAmcXVvdDtDbGVhciBTYW5zJnF1 +b3Q7LCAmcXVvdDtIZWx2ZXRpY2EgTmV1ZSZxdW90OywgSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1z +ZXJpZjsgZm9udC1zaXplOiAxNnB4OyBib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBw +eDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHAgY2lkPSJuMTYiIG1kdHlwZT0icGFyYWdyYXBoIiBj +bGFzcz0ibWQtZW5kLWJsb2NrIG1kLXAiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBs +aW5lLWhlaWdodDogaW5oZXJpdDsgb3JwaGFuczogNDsgbWFyZ2luOiAwcHggMHB4IDAuNXJlbTsg +d2hpdGUtc3BhY2U6IHByZS13cmFwOyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48c3BhbiBtZC1pbmxp +bmU9InBsYWluIiBjbGFzcz0ibWQtcGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94 +OyI+MS4g54mI5pys5Yqf6IO95rWL6K+V5a6M5oiQCjwvc3Bhbj48L3A+PC9saT48bGkgY2xhc3M9 +Im1kLWxpc3QtaXRlbSIgY2lkPSJuMTUiIG1kdHlwZT0ibGlzdF9pdGVtIiBzdHlsZT0iY29sb3I6 +IHJnYig1MSwgNTEsIDUxKTsgZm9udC1mYW1pbHk6ICZxdW90O09wZW4gU2FucyZxdW90OywgJnF1 +b3Q7Q2xlYXIgU2FucyZxdW90OywgJnF1b3Q7SGVsdmV0aWNhIE5ldWUmcXVvdDssIEhlbHZldGlj +YSwgQXJpYWwsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTZweDsgYm94LXNpemluZzogYm9yZGVy +LWJveDsgbWFyZ2luOiAwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxwIGNpZD0ibjE2IiBtZHR5 +cGU9InBhcmFncmFwaCIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1wIiBzdHlsZT0iYm94LXNpemlu +ZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IG9ycGhhbnM6IDQ7IG1hcmdpbjog +MHB4IDBweCAwLjVyZW07IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJlbGF0aXZl +OyI+PHNwYW4gbWQtaW5saW5lPSJwbGFpbiIgY2xhc3M9Im1kLXBsYWluIiBzdHlsZT0iYm94LXNp +emluZzogYm9yZGVyLWJveDsiPjIuIOWOhuWPsue8uumZt+S/ruWkjemqjOivgTwvc3Bhbj48L3A+ +PC9saT48L3VsPjxsaSBjbGFzcz0ibWQtbGlzdC1pdGVtIiBjaWQ9Im4xNyIgbWR0eXBlPSJsaXN0 +X2l0ZW0iIHN0eWxlPSJjb2xvcjogcmdiKDUxLCA1MSwgNTEpOyBmb250LWZhbWlseTogJnF1b3Q7 +T3BlbiBTYW5zJnF1b3Q7LCAmcXVvdDtDbGVhciBTYW5zJnF1b3Q7LCAmcXVvdDtIZWx2ZXRpY2Eg +TmV1ZSZxdW90OywgSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxNnB4 +OyBib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcG9zaXRpb246IHJlbGF0aXZl +OyI+PHAgY2lkPSJuMTgiIG1kdHlwZT0icGFyYWdyYXBoIiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1k +LXAiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5oZXJpdDsg +b3JwaGFuczogNDsgbWFyZ2luOiAwcHggMHB4IDAuNXJlbTsgd2hpdGUtc3BhY2U6IHByZS13cmFw +OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48c3BhbiBtZC1pbmxpbmU9InBsYWluIiBjbGFzcz0ibWQt +cGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+5pel5bi45LqL5YqhM++8mjIw +MjYtMDEtMTU8L3NwYW4+PC9wPjwvbGk+PHVsIHN0eWxlPSJsaXN0LXN0eWxlLXR5cGU6IHNxdWFy +ZTsiPjxsaSBjbGFzcz0ibWQtbGlzdC1pdGVtIiBjaWQ9Im4xNyIgbWR0eXBlPSJsaXN0X2l0ZW0i +IHN0eWxlPSJjb2xvcjogcmdiKDUxLCA1MSwgNTEpOyBmb250LWZhbWlseTogJnF1b3Q7T3BlbiBT +YW5zJnF1b3Q7LCAmcXVvdDtDbGVhciBTYW5zJnF1b3Q7LCAmcXVvdDtIZWx2ZXRpY2EgTmV1ZSZx +dW90OywgSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxNnB4OyBib3gt +c2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHAg +Y2lkPSJuMTgiIG1kdHlwZT0icGFyYWdyYXBoIiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLXAiIHN0 +eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5oZXJpdDsgb3JwaGFu +czogNDsgbWFyZ2luOiAwcHggMHB4IDAuNXJlbTsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyBwb3Np +dGlvbjogcmVsYXRpdmU7Ij48c3BhbiBtZC1pbmxpbmU9InBsYWluIiBjbGFzcz0ibWQtcGxhaW4i +IHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+MS4g5Li75pWw5o2u5rWL6K+V5a6M5oiQ +Cjwvc3Bhbj48L3A+PC9saT48bGkgY2xhc3M9Im1kLWxpc3QtaXRlbSIgY2lkPSJuMTciIG1kdHlw +ZT0ibGlzdF9pdGVtIiBzdHlsZT0iY29sb3I6IHJnYig1MSwgNTEsIDUxKTsgZm9udC1mYW1pbHk6 +ICZxdW90O09wZW4gU2FucyZxdW90OywgJnF1b3Q7Q2xlYXIgU2FucyZxdW90OywgJnF1b3Q7SGVs +dmV0aWNhIE5ldWUmcXVvdDssIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7IGZvbnQtc2l6 +ZTogMTZweDsgYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBvc2l0aW9uOiBy +ZWxhdGl2ZTsiPjxwIGNpZD0ibjE4IiBtZHR5cGU9InBhcmFncmFwaCIgY2xhc3M9Im1kLWVuZC1i +bG9jayBtZC1wIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGlu +aGVyaXQ7IG9ycGhhbnM6IDQ7IG1hcmdpbjogMHB4IDBweCAwLjVyZW07IHdoaXRlLXNwYWNlOiBw +cmUtd3JhcDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHNwYW4gbWQtaW5saW5lPSJwbGFpbiIgY2xh +c3M9Im1kLXBsYWluIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPjIuIOmUgOWUrua1 +i+ivleWujOaIkAo8L3NwYW4+PC9wPjwvbGk+PGxpIGNsYXNzPSJtZC1saXN0LWl0ZW0iIGNpZD0i +bjE3IiBtZHR5cGU9Imxpc3RfaXRlbSIgc3R5bGU9ImNvbG9yOiByZ2IoNTEsIDUxLCA1MSk7IGZv +bnQtZmFtaWx5OiAmcXVvdDtPcGVuIFNhbnMmcXVvdDssICZxdW90O0NsZWFyIFNhbnMmcXVvdDss +ICZxdW90O0hlbHZldGljYSBOZXVlJnF1b3Q7LCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlm +OyBmb250LXNpemU6IDE2cHg7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBw +b3NpdGlvbjogcmVsYXRpdmU7Ij48cCBjaWQ9Im4xOCIgbWR0eXBlPSJwYXJhZ3JhcGgiIGNsYXNz +PSJtZC1lbmQtYmxvY2sgbWQtcCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGxpbmUt +aGVpZ2h0OiBpbmhlcml0OyBvcnBoYW5zOiA0OyBtYXJnaW46IDBweCAwcHggMC41cmVtOyB3aGl0 +ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxzcGFuIG1kLWlubGluZT0i +cGxhaW4iIGNsYXNzPSJtZC1wbGFpbiIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij4z +LiDph4fotK3mtYvor5XlrozmiJAKPC9zcGFuPjwvcD48L2xpPjxsaSBjbGFzcz0ibWQtbGlzdC1p +dGVtIiBjaWQ9Im4xNyIgbWR0eXBlPSJsaXN0X2l0ZW0iIHN0eWxlPSJjb2xvcjogcmdiKDUxLCA1 +MSwgNTEpOyBmb250LWZhbWlseTogJnF1b3Q7T3BlbiBTYW5zJnF1b3Q7LCAmcXVvdDtDbGVhciBT +YW5zJnF1b3Q7LCAmcXVvdDtIZWx2ZXRpY2EgTmV1ZSZxdW90OywgSGVsdmV0aWNhLCBBcmlhbCwg +c2Fucy1zZXJpZjsgZm9udC1zaXplOiAxNnB4OyBib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJn +aW46IDBweDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHAgY2lkPSJuMTgiIG1kdHlwZT0icGFyYWdy +YXBoIiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLXAiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXIt +Ym94OyBsaW5lLWhlaWdodDogaW5oZXJpdDsgb3JwaGFuczogNDsgbWFyZ2luOiAwcHggMHB4IDAu +NXJlbTsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48c3BhbiBt +ZC1pbmxpbmU9InBsYWluIiBjbGFzcz0ibWQtcGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3Jk +ZXItYm94OyI+NC4g55Sf5Lqn6Zeu6aKY6aqM6K+B5a6M5oiQPC9zcGFuPjwvcD48L2xpPjwvdWw+ +PC91bD48L29sPjxvbCBjbGFzcz0ib2wtbGlzdCIgc3RhcnQ9IiIgY2lkPSJuNCIgbWR0eXBlPSJs +aXN0IiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBhZGRpbmct +bGVmdDogMzBweDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHVsIGNsYXNzPSJ1bC1saXN0IiBjaWQ9 +Im4xNCIgbWR0eXBlPSJsaXN0IiBkYXRhLW1hcms9Ii0iIHN0eWxlPSJmb250LWZhbWlseTog5b6u +6L2v6ZuF6buROyBib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcGFkZGluZy1s +ZWZ0OiAzMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48bGkgY2xhc3M9Im1kLWxpc3QtaXRlbSIg +Y2lkPSJuMTciIG1kdHlwZT0ibGlzdF9pdGVtIiBzdHlsZT0iZm9udC1mYW1pbHk6ICZxdW90O09w +ZW4gU2FucyZxdW90OywgJnF1b3Q7Q2xlYXIgU2FucyZxdW90OywgJnF1b3Q7SGVsdmV0aWNhIE5l +dWUmcXVvdDssIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7IGNvbG9yOiByZ2IoNTEsIDUx +LCA1MSk7IGZvbnQtc2l6ZTogMTZweDsgYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAw +cHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxwIGNpZD0ibjE4IiBtZHR5cGU9InBhcmFncmFwaCIg +Y2xhc3M9Im1kLWVuZC1ibG9jayBtZC1wIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsg +bGluZS1oZWlnaHQ6IGluaGVyaXQ7IG9ycGhhbnM6IDQ7IG1hcmdpbjogMHB4IDBweCAwLjVyZW07 +IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHNwYW4gbWQtaW5s +aW5lPSJwbGFpbiIgY2xhc3M9Im1kLXBsYWluIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJv +eDsiPuaXpeW4uOS6i+WKoTTvvJoyMDI2LTAxLTE2PC9zcGFuPjwvcD48L2xpPjx1bCBzdHlsZT0i +bGlzdC1zdHlsZS10eXBlOiBzcXVhcmU7Ij48bGkgY2xhc3M9Im1kLWxpc3QtaXRlbSIgY2lkPSJu +MTciIG1kdHlwZT0ibGlzdF9pdGVtIiBzdHlsZT0iZm9udC1mYW1pbHk6ICZxdW90O09wZW4gU2Fu +cyZxdW90OywgJnF1b3Q7Q2xlYXIgU2FucyZxdW90OywgJnF1b3Q7SGVsdmV0aWNhIE5ldWUmcXVv +dDssIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7IGNvbG9yOiByZ2IoNTEsIDUxLCA1MSk7 +IGZvbnQtc2l6ZTogMTZweDsgYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBv +c2l0aW9uOiByZWxhdGl2ZTsiPjxwIGNpZD0ibjE4IiBtZHR5cGU9InBhcmFncmFwaCIgY2xhc3M9 +Im1kLWVuZC1ibG9jayBtZC1wIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1o +ZWlnaHQ6IGluaGVyaXQ7IG9ycGhhbnM6IDQ7IG1hcmdpbjogMHB4IDBweCAwLjVyZW07IHdoaXRl +LXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHNwYW4gbWQtaW5saW5lPSJw +bGFpbiIgY2xhc3M9Im1kLXBsYWluIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPueJ +iOacrOWPkeW4g+aUr+aMgeWSjOmcgOaxguivhOWuoTwvc3Bhbj48L3A+PC9saT48L3VsPjwvdWw+ +PC9vbD48aDMgY2lkPSJuMyIgbWR0eXBlPSJoZWFkaW5nIiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1k +LWhlYWRpbmciIHN0eWxlPSJmb250LWZhbWlseTogJnF1b3Q7T3BlbiBTYW5zJnF1b3Q7LCAmcXVv +dDtDbGVhciBTYW5zJnF1b3Q7LCAmcXVvdDtIZWx2ZXRpY2EgTmV1ZSZxdW90OywgSGVsdmV0aWNh +LCBBcmlhbCwgc2Fucy1zZXJpZjsgYm94LXNpemluZzogYm9yZGVyLWJveDsgYnJlYWstYWZ0ZXI6 +IGF2b2lkLXBhZ2U7IGJyZWFrLWluc2lkZTogYXZvaWQ7IG9ycGhhbnM6IDQ7IGZvbnQtc2l6ZTog +MS41ZW07IG1hcmdpbi10b3A6IDFyZW07IG1hcmdpbi1ib3R0b206IDFyZW07IHBvc2l0aW9uOiBy +ZWxhdGl2ZTsgbGluZS1oZWlnaHQ6IDEuNDM7IGN1cnNvcjogdGV4dDsgd2hpdGUtc3BhY2U6IHBy +ZS13cmFwOyBjb2xvcjogcmdiKDUxLCA1MSwgNTEpOyI+PHNwYW4gbWQtaW5saW5lPSJzdHJvbmci +IGNsYXNzPSJtZC1wYWlyLXMgIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPjxzdHJv +bmcgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij48c3BhbiBtZC1pbmxpbmU9InBsYWlu +IiBjbGFzcz0ibWQtcGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+5LiA44CB +5LiL5ZGo6YeN54K55Lu75YqhPC9zcGFuPjwvc3Ryb25nPjwvc3Bhbj48L2gzPjxkaXYgc3R5bGU9 +ImZvbnQtZmFtaWx5OiDlvq7ova/pm4Xpu5E7Ij41LjQuMueJiOacrOW8gOWPkTwvZGl2PjxkaXYg +dGFiaW5kZXg9Ii0xIiBjaWQ9Im4zOSIgbWR0eXBlPSJociIgY2xhc3M9Im1kLWhyIG1kLWVuZC1i +bG9jayIgc3R5bGU9ImZvbnQtZmFtaWx5OiAmcXVvdDtPcGVuIFNhbnMmcXVvdDssICZxdW90O0Ns +ZWFyIFNhbnMmcXVvdDssICZxdW90O0hlbHZldGljYSBOZXVlJnF1b3Q7LCBIZWx2ZXRpY2EsIEFy +aWFsLCBzYW5zLXNlcmlmOyBib3gtc2l6aW5nOiBib3JkZXItYm94OyBjb2xvcjogcmdiKDUxLCA1 +MSwgNTEpOyBmb250LXNpemU6IDE2cHg7Ij48aHIgc3R5bGU9ImJveC1zaXppbmc6IGNvbnRlbnQt +Ym94OyBoZWlnaHQ6IDJweDsgbWFyZ2luOiAxNnB4IDBweDsgYm9yZGVyOiAwcHggbm9uZTsgcGFk +ZGluZzogMHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjMxLCAyMzEsIDIzMSk7Ij48L2Rpdj48 +cCBjaWQ9Im40MCIgbWR0eXBlPSJwYXJhZ3JhcGgiIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCIg +c3R5bGU9ImZvbnQtZmFtaWx5OiAmcXVvdDtPcGVuIFNhbnMmcXVvdDssICZxdW90O0NsZWFyIFNh +bnMmcXVvdDssICZxdW90O0hlbHZldGljYSBOZXVlJnF1b3Q7LCBIZWx2ZXRpY2EsIEFyaWFsLCBz +YW5zLXNlcmlmOyBib3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5oZXJpdDsg +b3JwaGFuczogNDsgbWFyZ2luOiAwLjhlbSAwcHg7IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9z +aXRpb246IHJlbGF0aXZlOyBjb2xvcjogcmdiKDUxLCA1MSwgNTEpOyBmb250LXNpemU6IDE2cHg7 +Ij48c3BhbiBtZC1pbmxpbmU9InN0cm9uZyIgY2xhc3M9Im1kLXBhaXItcyAiIHN0eWxlPSJib3gt +c2l6aW5nOiBib3JkZXItYm94OyI+PHN0cm9uZyBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJv +eDsiPjxzcGFuIG1kLWlubGluZT0icGxhaW4iIGNsYXNzPSJtZC1wbGFpbiIgc3R5bGU9ImJveC1z +aXppbmc6IGJvcmRlci1ib3g7Ij7lpIfms6g8L3NwYW4+PC9zdHJvbmc+PC9zcGFuPjxzcGFuIG1k +LWlubGluZT0icGxhaW4iIGNsYXNzPSJtZC1wbGFpbiBtZC1leHBhbmQiIHN0eWxlPSJib3gtc2l6 +aW5nOiBib3JkZXItYm94OyI+77yaMjAyNuW5tDHmnIgxMuaXpSDlkajkuIDor7flgYc8L3NwYW4+ +PC9wPjwvZGl2PjxkaXYgc3R5bGU9ImZvbnQtZmFtaWx5OiDlvq7ova/pm4Xpu5E7Ij48YnI+PC9k +aXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PGRpdiBpZD0iaW1haWxfc2lnbmF0dXJlIiBjbGFz +cz0ibnRlcy1zaWduYXR1cmUiIHN0eWxlPSJmb250LWZhbWlseTog5b6u6L2v6ZuF6buROyBtYXJn +aW46IDIwcHggMHB4OyIgZGF0YS1udGVzLXNpZ25hdHVyZT0idHJ1ZSIgc3BlbGxjaGVjaz0iZmFs +c2UiPjxkaXYgc3R5bGU9ImZvbnQtZmFtaWx5OiZxdW90O+W+rui9r+mbhem7kSZxdW90OzsgZm9u +dC1zaXplOiAxNHB4OyBjb2xvcjojMDAwMDAwIj4KICAgIDxzdHlsZT4KICAgICAgICBmb250ewog +ICAgICAgICAgICBsaW5lLWhlaWdodDogMS42OwogICAgICAgIH0KICAgIDwvc3R5bGU+CjxkaXYg +c3R5bGU9ImZvbnQtZmFtaWx5OiZxdW90O+W+rui9r+mbhem7kSZxdW90OzsgZm9udC1zaXplOiAx +NHB4OyBjb2xvcjojMDAwMDAwIj4KICAgIDxzdHlsZT4KICAgICAgICBmb250ewogICAgICAgICAg +ICBsaW5lLWhlaWdodDogMS42OwogICAgICAgIH0KICAgIDwvc3R5bGU+CjxkaXYgc3R5bGU9ImZv +bnQtZmFtaWx5OiZxdW90O+W+rui9r+mbhem7kSZxdW90OzsgZm9udC1zaXplOiAxNHB4OyBjb2xv +cjojMDAwMDAwIj4KICAgIDxzdHlsZT4KICAgICAgICBmb250ewogICAgICAgICAgICBsaW5lLWhl +aWdodDogMS42OwogICAgICAgIH0KICAgIDwvc3R5bGU+CjxkaXYgc3R5bGU9ImZvbnQtZmFtaWx5 +OiZxdW90O+W+rui9r+mbhem7kSZxdW90OzsgZm9udC1zaXplOiAxNHB4OyBjb2xvcjojMDAwMDAw +Ij4KICAgIDxzdHlsZT4KICAgICAgICBmb250ewogICAgICAgICAgICBsaW5lLWhlaWdodDogMS42 +OwogICAgICAgIH0KICAgIDwvc3R5bGU+CjxkaXYgc3R5bGU9ImZvbnQtZmFtaWx5OiZxdW90O+W+ +rui9r+mbhem7kSZxdW90OzsgZm9udC1zaXplOiAxNHB4OyBjb2xvcjojMDAwMDAwIj4KICAgIDxz +dHlsZT4KICAgICAgICBmb250ewogICAgICAgICAgICBsaW5lLWhlaWdodDogMS42OwogICAgICAg +IH0KICAgIDwvc3R5bGU+CjxzcGFuIHN0eWxlPSJjb2xvcjogcmdiKDE5MSwgMTkxLCAxOTEpOyBm +b250LWZhbWlseTogJ01pY3Jvc29mdCBZYWhlaSc7IGZvbnQtc2l6ZTogMTNweDsgb3JwaGFuczog +Mjsgd2lkb3dzOiAyOyI+QmVzdCByZWdhcmRzLDwvc3Bhbj48ZGl2IHN0eWxlPSJtYXJnaW46IDBw +eDsgcGFkZGluZzogMHB4OyBib3JkZXI6IDBweDsgb3V0bGluZTogMHB4OyBmb250LWZhbWlseTog +VGFob21hLCBBcmlhbCwgU1RIZWl0aSwgU2ltU3VuOyBmb250LXZhcmlhbnQtbGlnYXR1cmVzOiBu +b3JtYWw7IG9ycGhhbnM6IDI7IHdpZG93czogMjsgY2xlYXI6IGJvdGg7Ij48c3BhbiBzdHlsZT0i +bWFyZ2luOiAwcHg7IHBhZGRpbmc6IDBweDsgYm9yZGVyOiAwcHg7IG91dGxpbmU6IDBweDsgZm9u +dC1mYW1pbHk6ICZxdW90O01pY3Jvc29mdCBZYWhlaSZxdW90OzsgZm9udC1zaXplOiAxM3B4OyBj +b2xvcjogcmdiKDE5MSwgMTkxLCAxOTEpOyI+5p2o6L2pPC9zcGFuPjwvZGl2PjxkaXYgc3R5bGU9 +Im1hcmdpbjogMHB4OyBwYWRkaW5nOiAwcHg7IGJvcmRlcjogMHB4OyBvdXRsaW5lOiAwcHg7IGZv +bnQtZmFtaWx5OiBUYWhvbWEsIEFyaWFsLCBTVEhlaXRpLCBTaW1TdW47IGZvbnQtdmFyaWFudC1s +aWdhdHVyZXM6IG5vcm1hbDsgb3JwaGFuczogMjsgd2lkb3dzOiAyOyBjbGVhcjogYm90aDsiPjwv +ZGl2PjxkaXYgc3R5bGU9Im1hcmdpbjogMHB4OyBwYWRkaW5nOiAwcHg7IGJvcmRlcjogMHB4OyBv +dXRsaW5lOiAwcHg7IGZvbnQtZmFtaWx5OiBUYWhvbWEsIEFyaWFsLCBTVEhlaXRpLCBTaW1TdW47 +IGZvbnQtdmFyaWFudC1saWdhdHVyZXM6IG5vcm1hbDsgb3JwaGFuczogMjsgd2lkb3dzOiAyOyBj +bGVhcjogYm90aDsiPjxpbWcgc3JjPSJodHRwczovL21haWwtb25saW5lLm5vc2RuLjEyNy5uZXQv +d3pwbW1jL2NlOWY4YjM2ZTFmZmJlNTUzMjljMTk2Yzg0ZmU1MTk3LnBuZyIgc3R5bGU9Im1heC13 +aWR0aDogdW5zZXQ7Ij48L2Rpdj48ZGl2IHN0eWxlPSJtYXJnaW46IDBweDsgcGFkZGluZzogMHB4 +OyBib3JkZXI6IDBweDsgb3V0bGluZTogMHB4OyBmb250LWZhbWlseTogVGFob21hLCBBcmlhbCwg +U1RIZWl0aSwgU2ltU3VuOyBmb250LXZhcmlhbnQtbGlnYXR1cmVzOiBub3JtYWw7IG9ycGhhbnM6 +IDI7IHdpZG93czogMjsgY2xlYXI6IGJvdGg7Ij48c3BhbiBzdHlsZT0ibWFyZ2luOiAwcHg7IHBh +ZGRpbmc6IDBweDsgYm9yZGVyOiAwcHg7IG91dGxpbmU6IDBweDsgZm9udC1mYW1pbHk6ICZxdW90 +O01pY3Jvc29mdCBZYWhlaSZxdW90OzsgY29sb3I6IHJnYigxOTEsIDE5MSwgMTkxKTsiPuWcsOWd +gO+8muS4reWbvcK35Y2X5Lqs5LqR5a+G5Z+OTOagizUvMTDmpbw8L3NwYW4+PC9kaXY+PGRpdiBz +dHlsZT0ibWFyZ2luOiAwcHg7IHBhZGRpbmc6IDBweDsgYm9yZGVyOiAwcHg7IG91dGxpbmU6IDBw +eDsgZm9udC1mYW1pbHk6IFRhaG9tYSwgQXJpYWwsIFNUSGVpdGksIFNpbVN1bjsgZm9udC12YXJp +YW50LWxpZ2F0dXJlczogbm9ybWFsOyBvcnBoYW5zOiAyOyB3aWRvd3M6IDI7IGNsZWFyOiBib3Ro +OyI+PHNwYW4gc3R5bGU9Im1hcmdpbjogMHB4OyBwYWRkaW5nOiAwcHg7IGJvcmRlcjogMHB4OyBv +dXRsaW5lOiAwcHg7IGZvbnQtZmFtaWx5OiAmcXVvdDtNaWNyb3NvZnQgWWFoZWkmcXVvdDs7IGNv +bG9yOiByZ2IoMTkxLCAxOTEsIDE5MSk7Ij7miYvmnLrvvJoxODcyNjEyODQ4OTwvc3Bhbj48L2Rp +dj48ZGl2IHN0eWxlPSJtYXJnaW46IDBweDsgcGFkZGluZzogMHB4OyBib3JkZXI6IDBweDsgb3V0 +bGluZTogMHB4OyBmb250LWZhbWlseTogVGFob21hLCBBcmlhbCwgU1RIZWl0aSwgU2ltU3VuOyBm +b250LXZhcmlhbnQtbGlnYXR1cmVzOiBub3JtYWw7IG9ycGhhbnM6IDI7IHdpZG93czogMjsgY2xl +YXI6IGJvdGg7Ij48c3BhbiBzdHlsZT0ibWFyZ2luOiAwcHg7IHBhZGRpbmc6IDBweDsgYm9yZGVy +OiAwcHg7IG91dGxpbmU6IDBweDsgZm9udC1mYW1pbHk6ICZxdW90O01pY3Jvc29mdCBZYWhlaSZx +dW90OzsgY29sb3I6IHJnYigxOTEsIDE5MSwgMTkxKTsiPumCrueuse+8mnlhbmd4dWFuQHdpdHNv +ZnQuY248L3NwYW4+PC9kaXY+CjwvZGl2Pgo8L2Rpdj4KPC9kaXY+CjwvZGl2Pgo8L2Rpdj48L2Rp +dj48L2Rpdj48L2Rpdj48IS0t8J+YgC0tPjwvZGl2PjwvYm9keT48L2h0bWw+ + +--=_mailmaster-6a18e4a4_0_124_=-- diff --git a/media/inbound/2026-01-23_1709_G5开发周报_2026-01-19_--_2026-01-23---8aebbd5e-7a9c-4b09-a708-9477270fa1c3.eml b/media/inbound/2026-01-23_1709_G5开发周报_2026-01-19_--_2026-01-23---8aebbd5e-7a9c-4b09-a708-9477270fa1c3.eml new file mode 100644 index 0000000..cd2af55 --- /dev/null +++ b/media/inbound/2026-01-23_1709_G5开发周报_2026-01-19_--_2026-01-23---8aebbd5e-7a9c-4b09-a708-9477270fa1c3.eml @@ -0,0 +1,352 @@ +Date: Fri, 23 Jan 2026 17:09:50 +0800 +From: =?utf-8?B?5p2o6L2p?= +To: =?utf-8?B?5YiY5by6?= +Cc: =?utf-8?B?5bGI5paw6b6Z?= , =?utf-8?B?5pyx5paM?= + , =?utf-8?B?6ZmI5piO?= , + =?utf-8?B?6KKB5pm0?= +Message-ID: <6772604B-7435-48E4-8C27-6EEFC3F8DA41@witsoft.cn> +Subject: =?utf-8?B?RzXlvIDlj5HlkajmiqXjgJAyMDI2LTAxLTE5IC0tICAyMDI2LTAx?= + =?utf-8?B?LTIz44CR?= +MIME-Version: 1.0 +Content-Type: multipart/alternative; boundary="=_mailmaster-6a18e4a4_0_305e_=" + +--=_mailmaster-6a18e4a4_0_305e_= +Content-Type: text/plain; charset="utf-8" +Content-Transfer-Encoding: base64 + +5oKo5aW977yB5Lul5LiL5piv5oiR5pys5ZGo55qE5bel5L2c5oC757uT5Y+K5LiL5ZGo6K6h5YiS +77yM6K+35a6h6ZiF44CCCuS4gOOAgeacrOWRqOW3peS9nOaAu+e7kwrph43ngrnlt6XkvZzlrozm +iJDmg4XlhrUK5Lu75YqhMe+8mkc15Li75pWw5o2uNS40LjLniYjmnKzlvIDlj5EK5Lu75YqhMu+8 +mumUgOWUriDph4fotK01LjQuMueJiOacrOW8gOWPkQrluLjop4Tlt6XkvZwK5pel5bi45LqL5Yqh +Me+8mjIwMjYtMDEtMTkKMS4g5Li75pWw5o2u6ZyA5rGC6K+E5a6hIAoyLiDkuLvmlbDmja7pnIDm +sYLlvIDlj5EgCjMuIOmHh+i0remcgOaxguivhOWuoSAK5pel5bi45LqL5YqhMu+8mjIwMjYtMDEt +MjAKMS4g6ZyA5rGC5bel5pe26K+E5LywIAoyLiDlvIDlj5HmlrnmoYjorr7orqEgCjMuIOmcgOax +guW8gOWPkQrml6XluLjkuovliqEz77yaMjAyNi0wMS0yMQoxLiDlj5jmm7Tlp5TlpJbph4fotK3l +jZXoh6rliqjlj5HmlpnliIbmlK/pnIDmsYLlvIDlj5EK5pel5bi45LqL5YqhNO+8mjIwMjYtMDEt +MjIKMS4g5LiL5o6o6YeH6LSt6K6i5Y2V5Zue5YaZ6K+36LSt5Y2V6ZyA5rGC5byA5Y+R6L2s5rWL +CuaXpeW4uOS6i+WKoTXvvJoyMDI2LTAxLTIzCjEuIOmHh+i0remcgOaxguW8gOWPkSAKMi4g6YeH +6LSt5Y6G5Y+y6Zeu6aKY5L+u5aSNIAozLiDkuLvmlbDmja7mi7zpn7Pmn6Xor6LmjpLpmaTkuK3m +lofpmZDliLYK5LiA44CB5LiL5ZGo6YeN54K55Lu75YqhCjUuNC4y54mI5pys5rWL6K+V5a6M5oiQ +IOS4iue6v+aUr+aMgQrlpIfms6jvvJoKQmVzdCByZWdhcmRzLOadqOi9qQrlnLDlnYDvvJrkuK3l +m73Ct+WNl+S6rOS6keWvhuWfjkzmoIs1LzEw5qW8CuaJi+acuu+8mjE4NzI2MTI4NDg5CumCrueu +se+8mnlhbmd4dWFuQHdpdHNvZnQuY24= + +--=_mailmaster-6a18e4a4_0_305e_= +Content-Type: text/html; charset="utf-8" +Content-Transfer-Encoding: base64 + +PGh0bWw+PGhlYWQ+PG1ldGEgaHR0cC1lcXVpdj0nQ29udGVudC1UeXBlJyBjb250ZW50PSd0ZXh0 +L2h0bWw7IGNoYXJzZXQ9VVRGLTgnPjwvaGVhZD48Ym9keSBzdHlsZT1saW5lLWhlaWdodDogMS41 +O2ZvbnQtZmFtaWx5OiAi5b6u6L2v6ZuF6buRIj48ZGl2ICBzdHlsZT0iZm9udC1mYW1pbHk6IOW+ +rui9r+mbhem7kTsiPjxkaXYgc3R5bGU9IiI+PGRpdiBzdHlsZT0iIj48ZGl2IHN0eWxlPSIiPjxk +aXYgc3R5bGU9IiIgMS41O2ZvbnQtZmFtaWx5Oj0iIiAi5b6u6L2v6ZuF6buRIj0iIj48ZGl2IHN0 +eWxlPSIiPjxkaXYgc3R5bGU9IiI+PGRpdiBzdHlsZT0iIj48ZGl2IHN0eWxlPSIiPjxwIGNpZD0i +bjAiIG1kdHlwZT0icGFyYWdyYXBoIiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLXAgbWQtZm9jdXMi +IHN0eWxlPSJmb250LWZhbWlseTogJnF1b3Q7T3BlbiBTYW5zJnF1b3Q7LCAmcXVvdDtDbGVhciBT +YW5zJnF1b3Q7LCAmcXVvdDtIZWx2ZXRpY2EgTmV1ZSZxdW90OywgSGVsdmV0aWNhLCBBcmlhbCwg +c2Fucy1zZXJpZjsgYm94LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7 +IG9ycGhhbnM6IDQ7IG1hcmdpbjogMC44ZW0gMHB4OyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBv +c2l0aW9uOiByZWxhdGl2ZTsgY29sb3I6IHJnYig1MSwgNTEsIDUxKTsgZm9udC1zaXplOiAxNnB4 +OyI+PHNwYW4gbWQtaW5saW5lPSJwbGFpbiIgY2xhc3M9Im1kLXBsYWluIG1kLWV4cGFuZCIgc3R5 +bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij7mgqjlpb3vvIHku6XkuIvmmK/miJHmnKzlkajn +moTlt6XkvZzmgLvnu5Plj4rkuIvlkajorqHliJLvvIzor7flrqHpmIXjgII8L3NwYW4+PC9wPjxk +aXYgdGFiaW5kZXg9Ii0xIiBjaWQ9Im4yIiBtZHR5cGU9ImhyIiBjbGFzcz0ibWQtaHIgbWQtZW5k +LWJsb2NrIiBzdHlsZT0iZm9udC1mYW1pbHk6ICZxdW90O09wZW4gU2FucyZxdW90OywgJnF1b3Q7 +Q2xlYXIgU2FucyZxdW90OywgJnF1b3Q7SGVsdmV0aWNhIE5ldWUmcXVvdDssIEhlbHZldGljYSwg +QXJpYWwsIHNhbnMtc2VyaWY7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7IGNvbG9yOiByZ2IoNTEs +IDUxLCA1MSk7IGZvbnQtc2l6ZTogMTZweDsiPjxociBzdHlsZT0iYm94LXNpemluZzogY29udGVu +dC1ib3g7IGhlaWdodDogMnB4OyBtYXJnaW46IDE2cHggMHB4OyBib3JkZXI6IDBweCBub25lOyBw +YWRkaW5nOiAwcHg7IGJhY2tncm91bmQtY29sb3I6IHJnYigyMzEsIDIzMSwgMjMxKTsiPjwvZGl2 +PjxoMyBjaWQ9Im4zIiBtZHR5cGU9ImhlYWRpbmciIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtaGVh +ZGluZyIgc3R5bGU9ImZvbnQtZmFtaWx5OiAmcXVvdDtPcGVuIFNhbnMmcXVvdDssICZxdW90O0Ns +ZWFyIFNhbnMmcXVvdDssICZxdW90O0hlbHZldGljYSBOZXVlJnF1b3Q7LCBIZWx2ZXRpY2EsIEFy +aWFsLCBzYW5zLXNlcmlmOyBib3gtc2l6aW5nOiBib3JkZXItYm94OyBicmVhay1hZnRlcjogYXZv +aWQtcGFnZTsgYnJlYWstaW5zaWRlOiBhdm9pZDsgb3JwaGFuczogNDsgZm9udC1zaXplOiAxLjVl +bTsgbWFyZ2luLXRvcDogMXJlbTsgbWFyZ2luLWJvdHRvbTogMXJlbTsgcG9zaXRpb246IHJlbGF0 +aXZlOyBsaW5lLWhlaWdodDogMS40MzsgY3Vyc29yOiB0ZXh0OyB3aGl0ZS1zcGFjZTogcHJlLXdy +YXA7IGNvbG9yOiByZ2IoNTEsIDUxLCA1MSk7Ij48c3BhbiBtZC1pbmxpbmU9InN0cm9uZyIgY2xh +c3M9Im1kLXBhaXItcyAiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+PHN0cm9uZyBz +dHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPjxzcGFuIG1kLWlubGluZT0icGxhaW4iIGNs +YXNzPSJtZC1wbGFpbiIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij7kuIDjgIHmnKzl +kajlt6XkvZzmgLvnu5M8L3NwYW4+PC9zdHJvbmc+PC9zcGFuPjwvaDM+PG9sIGNsYXNzPSJvbC1s +aXN0IiBzdGFydD0iIiBjaWQ9Im40IiBtZHR5cGU9Imxpc3QiIHN0eWxlPSJmb250LWZhbWlseTog +JnF1b3Q7T3BlbiBTYW5zJnF1b3Q7LCAmcXVvdDtDbGVhciBTYW5zJnF1b3Q7LCAmcXVvdDtIZWx2 +ZXRpY2EgTmV1ZSZxdW90OywgSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjsgYm94LXNpemlu +ZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBhZGRpbmctbGVmdDogMzBweDsgcG9zaXRpb246 +IHJlbGF0aXZlOyBjb2xvcjogcmdiKDUxLCA1MSwgNTEpOyBmb250LXNpemU6IDE2cHg7Ij48bGkg +Y2xhc3M9Im1kLWxpc3QtaXRlbSIgY2lkPSJuNSIgbWR0eXBlPSJsaXN0X2l0ZW0iIHN0eWxlPSJi +b3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcG9zaXRpb246IHJlbGF0aXZlOyI+ +PHAgY2lkPSJuNiIgbWR0eXBlPSJwYXJhZ3JhcGgiIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCIg +c3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhlcml0OyBvcnBo +YW5zOiA0OyBtYXJnaW46IDBweCAwcHggMC41cmVtOyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBv +c2l0aW9uOiByZWxhdGl2ZTsiPjxzcGFuIG1kLWlubGluZT0ic3Ryb25nIiBjbGFzcz0ibWQtcGFp +ci1zICIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij48c3Ryb25nIHN0eWxlPSJib3gt +c2l6aW5nOiBib3JkZXItYm94OyI+PHNwYW4gbWQtaW5saW5lPSJwbGFpbiIgY2xhc3M9Im1kLXBs +YWluIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPumHjeeCueW3peS9nOWujOaIkOaD +heWGtTwvc3Bhbj48L3N0cm9uZz48L3NwYW4+PC9wPjwvbGk+PHVsIGNsYXNzPSJ1bC1saXN0IiBj +aWQ9Im43IiBtZHR5cGU9Imxpc3QiIGRhdGEtbWFyaz0iLSIgc3R5bGU9ImJveC1zaXppbmc6IGJv +cmRlci1ib3g7IG1hcmdpbjogMHB4OyBwYWRkaW5nLWxlZnQ6IDMwcHg7IHBvc2l0aW9uOiByZWxh +dGl2ZTsiPjxsaSBjbGFzcz0ibWQtbGlzdC1pdGVtIiBjaWQ9Im44IiBtZHR5cGU9Imxpc3RfaXRl +bSIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBwb3NpdGlvbjog +cmVsYXRpdmU7Ij48cCBjaWQ9Im45IiBtZHR5cGU9InBhcmFncmFwaCIgY2xhc3M9Im1kLWVuZC1i +bG9jayBtZC1wIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGlu +aGVyaXQ7IG9ycGhhbnM6IDQ7IG1hcmdpbjogMHB4IDBweCAwLjVyZW07IHdoaXRlLXNwYWNlOiBw +cmUtd3JhcDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHNwYW4gbWQtaW5saW5lPSJwbGFpbiIgY2xh +c3M9Im1kLXBsYWluIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPuS7u+WKoTHvvJpH +NeS4u+aVsOaNrjUuNC4y54mI5pys5byA5Y+RPC9zcGFuPjwvcD48L2xpPjxsaSBjbGFzcz0ibWQt +bGlzdC1pdGVtIiBjaWQ9Im4xMCIgbWR0eXBlPSJsaXN0X2l0ZW0iIHN0eWxlPSJib3gtc2l6aW5n +OiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHAgY2lkPSJu +MTEiIG1kdHlwZT0icGFyYWdyYXBoIiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLXAiIHN0eWxlPSJi +b3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5oZXJpdDsgb3JwaGFuczogNDsg +bWFyZ2luOiAwcHggMHB4IDAuNXJlbTsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyBwb3NpdGlvbjog +cmVsYXRpdmU7Ij7ku7vliqEy77ya6ZSA5ZSuIOmHh+i0rTUuNC4y54mI5pys5byA5Y+RPC9wPjwv +bGk+PC91bD48bGkgY2xhc3M9Im1kLWxpc3QtaXRlbSIgY2lkPSJuMTIiIG1kdHlwZT0ibGlzdF9p +dGVtIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBvc2l0aW9u +OiByZWxhdGl2ZTsiPjxwIGNpZD0ibjEzIiBtZHR5cGU9InBhcmFncmFwaCIgY2xhc3M9Im1kLWVu +ZC1ibG9jayBtZC1wIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6 +IGluaGVyaXQ7IG9ycGhhbnM6IDQ7IG1hcmdpbjogMHB4IDBweCAwLjVyZW07IHdoaXRlLXNwYWNl +OiBwcmUtd3JhcDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHNwYW4gbWQtaW5saW5lPSJzdHJvbmci +IGNsYXNzPSJtZC1wYWlyLXMgIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPjxzdHJv +bmcgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij48c3BhbiBtZC1pbmxpbmU9InBsYWlu +IiBjbGFzcz0ibWQtcGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+5bi46KeE +5bel5L2cPC9zcGFuPjwvc3Ryb25nPjwvc3Bhbj48L3A+PC9saT48L29sPjxvbCBjbGFzcz0ib2wt +bGlzdCIgc3RhcnQ9IiIgY2lkPSJuNCIgbWR0eXBlPSJsaXN0IiBzdHlsZT0iZm9udC1mYW1pbHk6 +ICZxdW90O09wZW4gU2FucyZxdW90OywgJnF1b3Q7Q2xlYXIgU2FucyZxdW90OywgJnF1b3Q7SGVs +dmV0aWNhIE5ldWUmcXVvdDssIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7IGJveC1zaXpp +bmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBwYWRkaW5nLWxlZnQ6IDMwcHg7IHBvc2l0aW9u +OiByZWxhdGl2ZTsgY29sb3I6IHJnYig1MSwgNTEsIDUxKTsgZm9udC1zaXplOiAxNnB4OyI+PHVs +IGNsYXNzPSJ1bC1saXN0IiBjaWQ9Im4xNCIgbWR0eXBlPSJsaXN0IiBkYXRhLW1hcms9Ii0iIHN0 +eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcGFkZGluZy1sZWZ0OiAz +MHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48bGkgY2xhc3M9Im1kLWxpc3QtaXRlbSIgY2lkPSJu +MTUiIG1kdHlwZT0ibGlzdF9pdGVtIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFy +Z2luOiAwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxwIGNpZD0ibjE2IiBtZHR5cGU9InBhcmFn +cmFwaCIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1wIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVy +LWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IG9ycGhhbnM6IDQ7IG1hcmdpbjogMHB4IDBweCAw +LjVyZW07IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHNwYW4g +bWQtaW5saW5lPSJwbGFpbiIgY2xhc3M9Im1kLXBsYWluIiBzdHlsZT0iYm94LXNpemluZzogYm9y +ZGVyLWJveDsiPuaXpeW4uOS6i+WKoTHvvJoyMDI2LTAxLTE5PC9zcGFuPjwvcD48L2xpPjx1bCBz +dHlsZT0ibGlzdC1zdHlsZS10eXBlOiBzcXVhcmU7Ij48bGkgY2xhc3M9Im1kLWxpc3QtaXRlbSIg +Y2lkPSJuMTUiIG1kdHlwZT0ibGlzdF9pdGVtIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJv +eDsgbWFyZ2luOiAwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxwIGNpZD0ibjE2IiBtZHR5cGU9 +InBhcmFncmFwaCIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1wIiBzdHlsZT0iYm94LXNpemluZzog +Ym9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IG9ycGhhbnM6IDQ7IG1hcmdpbjogMHB4 +IDBweCAwLjVyZW07IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJlbGF0aXZlOyI+ +PHNwYW4gbWQtaW5saW5lPSJwbGFpbiIgY2xhc3M9Im1kLXBsYWluIiBzdHlsZT0iYm94LXNpemlu +ZzogYm9yZGVyLWJveDsiPjEuIOS4u+aVsOaNrumcgOaxguivhOWuoQ08L3NwYW4+PC9wPjwvbGk+ +PGxpIGNsYXNzPSJtZC1saXN0LWl0ZW0iIGNpZD0ibjE1IiBtZHR5cGU9Imxpc3RfaXRlbSIgc3R5 +bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBwb3NpdGlvbjogcmVsYXRp +dmU7Ij48cCBjaWQ9Im4xNiIgbWR0eXBlPSJwYXJhZ3JhcGgiIGNsYXNzPSJtZC1lbmQtYmxvY2sg +bWQtcCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhlcml0 +OyBvcnBoYW5zOiA0OyBtYXJnaW46IDBweCAwcHggMC41cmVtOyB3aGl0ZS1zcGFjZTogcHJlLXdy +YXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxzcGFuIG1kLWlubGluZT0icGxhaW4iIGNsYXNzPSJt +ZC1wbGFpbiIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij4yLiDkuLvmlbDmja7pnIDm +sYLlvIDlj5ENPC9zcGFuPjwvcD48L2xpPjxsaSBjbGFzcz0ibWQtbGlzdC1pdGVtIiBjaWQ9Im4x +NSIgbWR0eXBlPSJsaXN0X2l0ZW0iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJn +aW46IDBweDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHAgY2lkPSJuMTYiIG1kdHlwZT0icGFyYWdy +YXBoIiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLXAiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXIt +Ym94OyBsaW5lLWhlaWdodDogaW5oZXJpdDsgb3JwaGFuczogNDsgbWFyZ2luOiAwcHggMHB4IDAu +NXJlbTsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48c3BhbiBt +ZC1pbmxpbmU9InBsYWluIiBjbGFzcz0ibWQtcGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3Jk +ZXItYm94OyI+My4g6YeH6LSt6ZyA5rGC6K+E5a6hIDwvc3Bhbj48L3A+PC9saT48L3VsPjwvdWw+ +PC9vbD48b2wgY2xhc3M9Im9sLWxpc3QiIHN0YXJ0PSIiIGNpZD0ibjQiIG1kdHlwZT0ibGlzdCIg +c3R5bGU9ImZvbnQtZmFtaWx5OiDlvq7ova/pm4Xpu5E7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7 +IG1hcmdpbjogMHB4OyBwYWRkaW5nLWxlZnQ6IDMwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjx1 +bCBjbGFzcz0idWwtbGlzdCIgY2lkPSJuMTQiIG1kdHlwZT0ibGlzdCIgZGF0YS1tYXJrPSItIiBz +dHlsZT0iZm9udC1mYW1pbHk6IOW+rui9r+mbhem7kTsgYm94LXNpemluZzogYm9yZGVyLWJveDsg +bWFyZ2luOiAwcHg7IHBhZGRpbmctbGVmdDogMzBweDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PGxp +IGNsYXNzPSJtZC1saXN0LWl0ZW0iIGNpZD0ibjE1IiBtZHR5cGU9Imxpc3RfaXRlbSIgc3R5bGU9 +ImNvbG9yOiByZ2IoNTEsIDUxLCA1MSk7IGZvbnQtZmFtaWx5OiAmcXVvdDtPcGVuIFNhbnMmcXVv +dDssICZxdW90O0NsZWFyIFNhbnMmcXVvdDssICZxdW90O0hlbHZldGljYSBOZXVlJnF1b3Q7LCBI +ZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDE2cHg7IGJveC1zaXppbmc6 +IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48cCBjaWQ9Im4x +NiIgbWR0eXBlPSJwYXJhZ3JhcGgiIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCIgc3R5bGU9ImJv +eC1zaXppbmc6IGJvcmRlci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhlcml0OyBvcnBoYW5zOiA0OyBt +YXJnaW46IDBweCAwcHggMC41cmVtOyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0aW9uOiBy +ZWxhdGl2ZTsiPjxzcGFuIG1kLWlubGluZT0icGxhaW4iIGNsYXNzPSJtZC1wbGFpbiIgc3R5bGU9 +ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij7ml6XluLjkuovliqEy77yaMjAyNi0wMS0yMDwvc3Bh +bj48L3A+PC9saT48dWwgc3R5bGU9Imxpc3Qtc3R5bGUtdHlwZTogc3F1YXJlOyI+PGxpIGNsYXNz +PSJtZC1saXN0LWl0ZW0iIGNpZD0ibjE1IiBtZHR5cGU9Imxpc3RfaXRlbSIgc3R5bGU9ImNvbG9y +OiByZ2IoNTEsIDUxLCA1MSk7IGZvbnQtZmFtaWx5OiAmcXVvdDtPcGVuIFNhbnMmcXVvdDssICZx +dW90O0NsZWFyIFNhbnMmcXVvdDssICZxdW90O0hlbHZldGljYSBOZXVlJnF1b3Q7LCBIZWx2ZXRp +Y2EsIEFyaWFsLCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDE2cHg7IGJveC1zaXppbmc6IGJvcmRl +ci1ib3g7IG1hcmdpbjogMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48cCBjaWQ9Im4xNiIgbWR0 +eXBlPSJwYXJhZ3JhcGgiIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCIgc3R5bGU9ImJveC1zaXpp +bmc6IGJvcmRlci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhlcml0OyBvcnBoYW5zOiA0OyBtYXJnaW46 +IDBweCAwcHggMC41cmVtOyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0aW9uOiByZWxhdGl2 +ZTsiPjxzcGFuIG1kLWlubGluZT0icGxhaW4iIGNsYXNzPSJtZC1wbGFpbiIgc3R5bGU9ImJveC1z +aXppbmc6IGJvcmRlci1ib3g7Ij4xLiDpnIDmsYLlt6Xml7bor4TkvLANPC9zcGFuPjwvcD48L2xp +PjxsaSBjbGFzcz0ibWQtbGlzdC1pdGVtIiBjaWQ9Im4xNSIgbWR0eXBlPSJsaXN0X2l0ZW0iIHN0 +eWxlPSJjb2xvcjogcmdiKDUxLCA1MSwgNTEpOyBmb250LWZhbWlseTogJnF1b3Q7T3BlbiBTYW5z +JnF1b3Q7LCAmcXVvdDtDbGVhciBTYW5zJnF1b3Q7LCAmcXVvdDtIZWx2ZXRpY2EgTmV1ZSZxdW90 +OywgSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxNnB4OyBib3gtc2l6 +aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHAgY2lk +PSJuMTYiIG1kdHlwZT0icGFyYWdyYXBoIiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLXAiIHN0eWxl +PSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5oZXJpdDsgb3JwaGFuczog +NDsgbWFyZ2luOiAwcHggMHB4IDAuNXJlbTsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyBwb3NpdGlv +bjogcmVsYXRpdmU7Ij48c3BhbiBtZC1pbmxpbmU9InBsYWluIiBjbGFzcz0ibWQtcGxhaW4iIHN0 +eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+Mi4g5byA5Y+R5pa55qGI6K6+6K6hDTwvc3Bh +bj48L3A+PC9saT48bGkgY2xhc3M9Im1kLWxpc3QtaXRlbSIgY2lkPSJuMTUiIG1kdHlwZT0ibGlz +dF9pdGVtIiBzdHlsZT0iY29sb3I6IHJnYig1MSwgNTEsIDUxKTsgZm9udC1mYW1pbHk6ICZxdW90 +O09wZW4gU2FucyZxdW90OywgJnF1b3Q7Q2xlYXIgU2FucyZxdW90OywgJnF1b3Q7SGVsdmV0aWNh +IE5ldWUmcXVvdDssIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTZw +eDsgYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBvc2l0aW9uOiByZWxhdGl2 +ZTsiPjxwIGNpZD0ibjE2IiBtZHR5cGU9InBhcmFncmFwaCIgY2xhc3M9Im1kLWVuZC1ibG9jayBt +ZC1wIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7 +IG9ycGhhbnM6IDQ7IG1hcmdpbjogMHB4IDBweCAwLjVyZW07IHdoaXRlLXNwYWNlOiBwcmUtd3Jh +cDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHNwYW4gbWQtaW5saW5lPSJwbGFpbiIgY2xhc3M9Im1k +LXBsYWluIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPjMuIOmcgOaxguW8gOWPkTwv +c3Bhbj48L3A+PC9saT48L3VsPjxsaSBjbGFzcz0ibWQtbGlzdC1pdGVtIiBjaWQ9Im4xNyIgbWR0 +eXBlPSJsaXN0X2l0ZW0iIHN0eWxlPSJjb2xvcjogcmdiKDUxLCA1MSwgNTEpOyBmb250LWZhbWls +eTogJnF1b3Q7T3BlbiBTYW5zJnF1b3Q7LCAmcXVvdDtDbGVhciBTYW5zJnF1b3Q7LCAmcXVvdDtI +ZWx2ZXRpY2EgTmV1ZSZxdW90OywgSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjsgZm9udC1z +aXplOiAxNnB4OyBib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcG9zaXRpb246 +IHJlbGF0aXZlOyI+PHAgY2lkPSJuMTgiIG1kdHlwZT0icGFyYWdyYXBoIiBjbGFzcz0ibWQtZW5k +LWJsb2NrIG1kLXAiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdodDog +aW5oZXJpdDsgb3JwaGFuczogNDsgbWFyZ2luOiAwcHggMHB4IDAuNXJlbTsgd2hpdGUtc3BhY2U6 +IHByZS13cmFwOyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48c3BhbiBtZC1pbmxpbmU9InBsYWluIiBj +bGFzcz0ibWQtcGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+5pel5bi45LqL +5YqhM++8mjIwMjYtMDEtMjE8L3NwYW4+PC9wPjwvbGk+PHVsIHN0eWxlPSJsaXN0LXN0eWxlLXR5 +cGU6IHNxdWFyZTsiPjxsaSBjbGFzcz0ibWQtbGlzdC1pdGVtIiBjaWQ9Im4xNyIgbWR0eXBlPSJs +aXN0X2l0ZW0iIHN0eWxlPSJjb2xvcjogcmdiKDUxLCA1MSwgNTEpOyBmb250LWZhbWlseTogJnF1 +b3Q7T3BlbiBTYW5zJnF1b3Q7LCAmcXVvdDtDbGVhciBTYW5zJnF1b3Q7LCAmcXVvdDtIZWx2ZXRp +Y2EgTmV1ZSZxdW90OywgSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjsgZm9udC1zaXplOiAx +NnB4OyBib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcG9zaXRpb246IHJlbGF0 +aXZlOyI+PHAgY2lkPSJuMTgiIG1kdHlwZT0icGFyYWdyYXBoIiBjbGFzcz0ibWQtZW5kLWJsb2Nr +IG1kLXAiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5oZXJp +dDsgb3JwaGFuczogNDsgbWFyZ2luOiAwcHggMHB4IDAuNXJlbTsgd2hpdGUtc3BhY2U6IHByZS13 +cmFwOyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48c3BhbiBtZC1pbmxpbmU9InBsYWluIiBjbGFzcz0i +bWQtcGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+MS4g5Y+Y5pu05aeU5aSW +6YeH6LSt5Y2V6Ieq5Yqo5Y+R5paZ5YiG5pSv6ZyA5rGC5byA5Y+RPC9zcGFuPjwvcD48L2xpPjwv +dWw+PC91bD48L29sPjxvbCBjbGFzcz0ib2wtbGlzdCIgc3RhcnQ9IiIgY2lkPSJuNCIgbWR0eXBl +PSJsaXN0IiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBhZGRp +bmctbGVmdDogMzBweDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHVsIGNsYXNzPSJ1bC1saXN0IiBj +aWQ9Im4xNCIgbWR0eXBlPSJsaXN0IiBkYXRhLW1hcms9Ii0iIHN0eWxlPSJib3gtc2l6aW5nOiBi +b3JkZXItYm94OyBtYXJnaW46IDBweDsgcGFkZGluZy1sZWZ0OiAzMHB4OyBwb3NpdGlvbjogcmVs +YXRpdmU7Ij48bGkgY2xhc3M9Im1kLWxpc3QtaXRlbSIgY2lkPSJuMTciIG1kdHlwZT0ibGlzdF9p +dGVtIiBzdHlsZT0iZm9udC1mYW1pbHk6ICZxdW90O09wZW4gU2FucyZxdW90OywgJnF1b3Q7Q2xl +YXIgU2FucyZxdW90OywgJnF1b3Q7SGVsdmV0aWNhIE5ldWUmcXVvdDssIEhlbHZldGljYSwgQXJp +YWwsIHNhbnMtc2VyaWY7IGNvbG9yOiByZ2IoNTEsIDUxLCA1MSk7IGZvbnQtc2l6ZTogMTZweDsg +Ym94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsi +PjxwIGNpZD0ibjE4IiBtZHR5cGU9InBhcmFncmFwaCIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1w +IiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IG9y +cGhhbnM6IDQ7IG1hcmdpbjogMHB4IDBweCAwLjVyZW07IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsg +cG9zaXRpb246IHJlbGF0aXZlOyI+PHNwYW4gbWQtaW5saW5lPSJwbGFpbiIgY2xhc3M9Im1kLXBs +YWluIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPuaXpeW4uOS6i+WKoTTvvJoyMDI2 +LTAxLTIyPC9zcGFuPjwvcD48L2xpPjx1bCBzdHlsZT0ibGlzdC1zdHlsZS10eXBlOiBzcXVhcmU7 +Ij48bGkgY2xhc3M9Im1kLWxpc3QtaXRlbSIgY2lkPSJuMTciIG1kdHlwZT0ibGlzdF9pdGVtIiBz +dHlsZT0iZm9udC1mYW1pbHk6ICZxdW90O09wZW4gU2FucyZxdW90OywgJnF1b3Q7Q2xlYXIgU2Fu +cyZxdW90OywgJnF1b3Q7SGVsdmV0aWNhIE5ldWUmcXVvdDssIEhlbHZldGljYSwgQXJpYWwsIHNh +bnMtc2VyaWY7IGNvbG9yOiByZ2IoNTEsIDUxLCA1MSk7IGZvbnQtc2l6ZTogMTZweDsgYm94LXNp +emluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxwIGNp +ZD0ibjE4IiBtZHR5cGU9InBhcmFncmFwaCIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1wIiBzdHls +ZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IG9ycGhhbnM6 +IDQ7IG1hcmdpbjogMHB4IDBweCAwLjVyZW07IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRp +b246IHJlbGF0aXZlOyI+PHNwYW4gbWQtaW5saW5lPSJwbGFpbiIgY2xhc3M9Im1kLXBsYWluIiBz +dHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPiAxLiDkuIvmjqjph4fotK3orqLljZXlm57l +hpnor7fotK3ljZXpnIDmsYLlvIDlj5HovazmtYs8L3NwYW4+PC9wPjwvbGk+PC91bD48bGkgc3R5 +bGU9IiI+PGZvbnQgY29sb3I9IiMzMzMzMzMiIGZhY2U9Ik9wZW4gU2FucywgQ2xlYXIgU2Fucywg +SGVsdmV0aWNhIE5ldWUsIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWYiPjxzcGFuIHN0eWxl +PSJmb250LXNpemU6IDE2cHg7IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsiPuaXpeW4uOS6i+WKoTXv +vJoyMDI2LTAxLTIzPC9zcGFuPjwvZm9udD48L2xpPjx1bCBzdHlsZT0ibGlzdC1zdHlsZS10eXBl +OiBzcXVhcmU7Ij48bGkgc3R5bGU9IiI+PGZvbnQgY29sb3I9IiMzMzMzMzMiIGZhY2U9Ik9wZW4g +U2FucywgQ2xlYXIgU2FucywgSGVsdmV0aWNhIE5ldWUsIEhlbHZldGljYSwgQXJpYWwsIHNhbnMt +c2VyaWYiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDE2cHg7IHdoaXRlLXNwYWNlOiBwcmUtd3Jh +cDsiPjEuIOmHh+i0remcgOaxguW8gOWPkQ08L3NwYW4+PC9mb250PjwvbGk+PGxpIHN0eWxlPSIi +Pjxmb250IGNvbG9yPSIjMzMzMzMzIiBmYWNlPSJPcGVuIFNhbnMsIENsZWFyIFNhbnMsIEhlbHZl +dGljYSBOZXVlLCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmIj48c3BhbiBzdHlsZT0iZm9u +dC1zaXplOiAxNnB4OyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7Ij4yLiDph4fotK3ljoblj7Lpl67p +opjkv67lpI0NPC9zcGFuPjwvZm9udD48L2xpPjxsaSBzdHlsZT0iIj48Zm9udCBjb2xvcj0iIzMz +MzMzMyIgZmFjZT0iT3BlbiBTYW5zLCBDbGVhciBTYW5zLCBIZWx2ZXRpY2EgTmV1ZSwgSGVsdmV0 +aWNhLCBBcmlhbCwgc2Fucy1zZXJpZiI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTZweDsgd2hp +dGUtc3BhY2U6IHByZS13cmFwOyI+My4g5Li75pWw5o2u5ou86Z+z5p+l6K+i5o6S6Zmk5Lit5paH +6ZmQ5Yi2PC9zcGFuPjwvZm9udD48L2xpPjwvdWw+PC91bD48L29sPjxoMyBjaWQ9Im4zIiBtZHR5 +cGU9ImhlYWRpbmciIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtaGVhZGluZyIgc3R5bGU9ImZvbnQt +ZmFtaWx5OiAmcXVvdDtPcGVuIFNhbnMmcXVvdDssICZxdW90O0NsZWFyIFNhbnMmcXVvdDssICZx +dW90O0hlbHZldGljYSBOZXVlJnF1b3Q7LCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmOyBi +b3gtc2l6aW5nOiBib3JkZXItYm94OyBicmVhay1hZnRlcjogYXZvaWQtcGFnZTsgYnJlYWstaW5z +aWRlOiBhdm9pZDsgb3JwaGFuczogNDsgZm9udC1zaXplOiAxLjVlbTsgbWFyZ2luLXRvcDogMXJl +bTsgbWFyZ2luLWJvdHRvbTogMXJlbTsgcG9zaXRpb246IHJlbGF0aXZlOyBsaW5lLWhlaWdodDog +MS40MzsgY3Vyc29yOiB0ZXh0OyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IGNvbG9yOiByZ2IoNTEs +IDUxLCA1MSk7Ij48c3BhbiBtZC1pbmxpbmU9InN0cm9uZyIgY2xhc3M9Im1kLXBhaXItcyAiIHN0 +eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+PHN0cm9uZyBzdHlsZT0iYm94LXNpemluZzog +Ym9yZGVyLWJveDsiPjxzcGFuIG1kLWlubGluZT0icGxhaW4iIGNsYXNzPSJtZC1wbGFpbiIgc3R5 +bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij7kuIDjgIHkuIvlkajph43ngrnku7vliqE8L3Nw +YW4+PC9zdHJvbmc+PC9zcGFuPjwvaDM+PGRpdiBzdHlsZT0iZm9udC1mYW1pbHk6IOW+rui9r+mb +hem7kTsiPjUuNC4y54mI5pys5rWL6K+V5a6M5oiQIOS4iue6v+aUr+aMgTwvZGl2PjxkaXYgdGFi +aW5kZXg9Ii0xIiBjaWQ9Im4zOSIgbWR0eXBlPSJociIgY2xhc3M9Im1kLWhyIG1kLWVuZC1ibG9j +ayIgc3R5bGU9ImZvbnQtZmFtaWx5OiAmcXVvdDtPcGVuIFNhbnMmcXVvdDssICZxdW90O0NsZWFy +IFNhbnMmcXVvdDssICZxdW90O0hlbHZldGljYSBOZXVlJnF1b3Q7LCBIZWx2ZXRpY2EsIEFyaWFs +LCBzYW5zLXNlcmlmOyBib3gtc2l6aW5nOiBib3JkZXItYm94OyBjb2xvcjogcmdiKDUxLCA1MSwg +NTEpOyBmb250LXNpemU6IDE2cHg7Ij48aHIgc3R5bGU9ImJveC1zaXppbmc6IGNvbnRlbnQtYm94 +OyBoZWlnaHQ6IDJweDsgbWFyZ2luOiAxNnB4IDBweDsgYm9yZGVyOiAwcHggbm9uZTsgcGFkZGlu +ZzogMHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjMxLCAyMzEsIDIzMSk7Ij48L2Rpdj48cCBj +aWQ9Im40MCIgbWR0eXBlPSJwYXJhZ3JhcGgiIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCIgc3R5 +bGU9ImZvbnQtZmFtaWx5OiAmcXVvdDtPcGVuIFNhbnMmcXVvdDssICZxdW90O0NsZWFyIFNhbnMm +cXVvdDssICZxdW90O0hlbHZldGljYSBOZXVlJnF1b3Q7LCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5z +LXNlcmlmOyBib3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5oZXJpdDsgb3Jw +aGFuczogNDsgbWFyZ2luOiAwLjhlbSAwcHg7IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRp +b246IHJlbGF0aXZlOyBjb2xvcjogcmdiKDUxLCA1MSwgNTEpOyBmb250LXNpemU6IDE2cHg7Ij48 +c3BhbiBtZC1pbmxpbmU9InN0cm9uZyIgY2xhc3M9Im1kLXBhaXItcyAiIHN0eWxlPSJib3gtc2l6 +aW5nOiBib3JkZXItYm94OyI+PHN0cm9uZyBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsi +PjxzcGFuIG1kLWlubGluZT0icGxhaW4iIGNsYXNzPSJtZC1wbGFpbiIgc3R5bGU9ImJveC1zaXpp +bmc6IGJvcmRlci1ib3g7Ij7lpIfms6g8L3NwYW4+PC9zdHJvbmc+PC9zcGFuPjxzcGFuIG1kLWlu +bGluZT0icGxhaW4iIGNsYXNzPSJtZC1wbGFpbiBtZC1leHBhbmQiIHN0eWxlPSJib3gtc2l6aW5n +OiBib3JkZXItYm94OyI+77yaPC9zcGFuPjwvcD48L2Rpdj48ZGl2IHN0eWxlPSJmb250LWZhbWls +eTog5b6u6L2v6ZuF6buROyI+PGJyPjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjxkaXYg +aWQ9ImltYWlsX3NpZ25hdHVyZSIgY2xhc3M9Im50ZXMtc2lnbmF0dXJlIiBzdHlsZT0iZm9udC1m +YW1pbHk6IOW+rui9r+mbhem7kTsgbWFyZ2luOiAyMHB4IDBweDsiIGRhdGEtbnRlcy1zaWduYXR1 +cmU9InRydWUiIHNwZWxsY2hlY2s9ImZhbHNlIj48ZGl2IHN0eWxlPSJmb250LWZhbWlseTomcXVv +dDvlvq7ova/pm4Xpu5EmcXVvdDs7IGZvbnQtc2l6ZTogMTRweDsgY29sb3I6IzAwMDAwMCI+CiAg +ICA8c3R5bGU+CiAgICAgICAgZm9udHsKICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDEuNjsKICAg +ICAgICB9CiAgICA8L3N0eWxlPgo8ZGl2IHN0eWxlPSJmb250LWZhbWlseTomcXVvdDvlvq7ova/p +m4Xpu5EmcXVvdDs7IGZvbnQtc2l6ZTogMTRweDsgY29sb3I6IzAwMDAwMCI+CiAgICA8c3R5bGU+ +CiAgICAgICAgZm9udHsKICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDEuNjsKICAgICAgICB9CiAg +ICA8L3N0eWxlPgo8ZGl2IHN0eWxlPSJmb250LWZhbWlseTomcXVvdDvlvq7ova/pm4Xpu5EmcXVv +dDs7IGZvbnQtc2l6ZTogMTRweDsgY29sb3I6IzAwMDAwMCI+CiAgICA8c3R5bGU+CiAgICAgICAg +Zm9udHsKICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDEuNjsKICAgICAgICB9CiAgICA8L3N0eWxl +Pgo8ZGl2IHN0eWxlPSJmb250LWZhbWlseTomcXVvdDvlvq7ova/pm4Xpu5EmcXVvdDs7IGZvbnQt +c2l6ZTogMTRweDsgY29sb3I6IzAwMDAwMCI+CiAgICA8c3R5bGU+CiAgICAgICAgZm9udHsKICAg +ICAgICAgICAgbGluZS1oZWlnaHQ6IDEuNjsKICAgICAgICB9CiAgICA8L3N0eWxlPgo8ZGl2IHN0 +eWxlPSJmb250LWZhbWlseTomcXVvdDvlvq7ova/pm4Xpu5EmcXVvdDs7IGZvbnQtc2l6ZTogMTRw +eDsgY29sb3I6IzAwMDAwMCI+CiAgICA8c3R5bGU+CiAgICAgICAgZm9udHsKICAgICAgICAgICAg +bGluZS1oZWlnaHQ6IDEuNjsKICAgICAgICB9CiAgICA8L3N0eWxlPgo8c3BhbiBzdHlsZT0iY29s +b3I6IHJnYigxOTEsIDE5MSwgMTkxKTsgZm9udC1mYW1pbHk6ICdNaWNyb3NvZnQgWWFoZWknOyBm +b250LXNpemU6IDEzcHg7IG9ycGhhbnM6IDI7IHdpZG93czogMjsiPkJlc3QgcmVnYXJkcyw8L3Nw +YW4+PGRpdiBzdHlsZT0ibWFyZ2luOiAwcHg7IHBhZGRpbmc6IDBweDsgYm9yZGVyOiAwcHg7IG91 +dGxpbmU6IDBweDsgZm9udC1mYW1pbHk6IFRhaG9tYSwgQXJpYWwsIFNUSGVpdGksIFNpbVN1bjsg +Zm9udC12YXJpYW50LWxpZ2F0dXJlczogbm9ybWFsOyBvcnBoYW5zOiAyOyB3aWRvd3M6IDI7IGNs +ZWFyOiBib3RoOyI+PHNwYW4gc3R5bGU9Im1hcmdpbjogMHB4OyBwYWRkaW5nOiAwcHg7IGJvcmRl +cjogMHB4OyBvdXRsaW5lOiAwcHg7IGZvbnQtZmFtaWx5OiAmcXVvdDtNaWNyb3NvZnQgWWFoZWkm +cXVvdDs7IGZvbnQtc2l6ZTogMTNweDsgY29sb3I6IHJnYigxOTEsIDE5MSwgMTkxKTsiPuadqOi9 +qTwvc3Bhbj48L2Rpdj48ZGl2IHN0eWxlPSJtYXJnaW46IDBweDsgcGFkZGluZzogMHB4OyBib3Jk +ZXI6IDBweDsgb3V0bGluZTogMHB4OyBmb250LWZhbWlseTogVGFob21hLCBBcmlhbCwgU1RIZWl0 +aSwgU2ltU3VuOyBmb250LXZhcmlhbnQtbGlnYXR1cmVzOiBub3JtYWw7IG9ycGhhbnM6IDI7IHdp +ZG93czogMjsgY2xlYXI6IGJvdGg7Ij48L2Rpdj48ZGl2IHN0eWxlPSJtYXJnaW46IDBweDsgcGFk +ZGluZzogMHB4OyBib3JkZXI6IDBweDsgb3V0bGluZTogMHB4OyBmb250LWZhbWlseTogVGFob21h +LCBBcmlhbCwgU1RIZWl0aSwgU2ltU3VuOyBmb250LXZhcmlhbnQtbGlnYXR1cmVzOiBub3JtYWw7 +IG9ycGhhbnM6IDI7IHdpZG93czogMjsgY2xlYXI6IGJvdGg7Ij48aW1nIHNyYz0iaHR0cHM6Ly9t +YWlsLW9ubGluZS5ub3Nkbi4xMjcubmV0L3d6cG1tYy9jZTlmOGIzNmUxZmZiZTU1MzI5YzE5NmM4 +NGZlNTE5Ny5wbmciIHN0eWxlPSJtYXgtd2lkdGg6IHVuc2V0OyI+PC9kaXY+PGRpdiBzdHlsZT0i +bWFyZ2luOiAwcHg7IHBhZGRpbmc6IDBweDsgYm9yZGVyOiAwcHg7IG91dGxpbmU6IDBweDsgZm9u +dC1mYW1pbHk6IFRhaG9tYSwgQXJpYWwsIFNUSGVpdGksIFNpbVN1bjsgZm9udC12YXJpYW50LWxp +Z2F0dXJlczogbm9ybWFsOyBvcnBoYW5zOiAyOyB3aWRvd3M6IDI7IGNsZWFyOiBib3RoOyI+PHNw +YW4gc3R5bGU9Im1hcmdpbjogMHB4OyBwYWRkaW5nOiAwcHg7IGJvcmRlcjogMHB4OyBvdXRsaW5l +OiAwcHg7IGZvbnQtZmFtaWx5OiAmcXVvdDtNaWNyb3NvZnQgWWFoZWkmcXVvdDs7IGNvbG9yOiBy +Z2IoMTkxLCAxOTEsIDE5MSk7Ij7lnLDlnYDvvJrkuK3lm73Ct+WNl+S6rOS6keWvhuWfjkzmoIs1 +LzEw5qW8PC9zcGFuPjwvZGl2PjxkaXYgc3R5bGU9Im1hcmdpbjogMHB4OyBwYWRkaW5nOiAwcHg7 +IGJvcmRlcjogMHB4OyBvdXRsaW5lOiAwcHg7IGZvbnQtZmFtaWx5OiBUYWhvbWEsIEFyaWFsLCBT +VEhlaXRpLCBTaW1TdW47IGZvbnQtdmFyaWFudC1saWdhdHVyZXM6IG5vcm1hbDsgb3JwaGFuczog +Mjsgd2lkb3dzOiAyOyBjbGVhcjogYm90aDsiPjxzcGFuIHN0eWxlPSJtYXJnaW46IDBweDsgcGFk +ZGluZzogMHB4OyBib3JkZXI6IDBweDsgb3V0bGluZTogMHB4OyBmb250LWZhbWlseTogJnF1b3Q7 +TWljcm9zb2Z0IFlhaGVpJnF1b3Q7OyBjb2xvcjogcmdiKDE5MSwgMTkxLCAxOTEpOyI+5omL5py6 +77yaMTg3MjYxMjg0ODk8L3NwYW4+PC9kaXY+PGRpdiBzdHlsZT0ibWFyZ2luOiAwcHg7IHBhZGRp +bmc6IDBweDsgYm9yZGVyOiAwcHg7IG91dGxpbmU6IDBweDsgZm9udC1mYW1pbHk6IFRhaG9tYSwg +QXJpYWwsIFNUSGVpdGksIFNpbVN1bjsgZm9udC12YXJpYW50LWxpZ2F0dXJlczogbm9ybWFsOyBv +cnBoYW5zOiAyOyB3aWRvd3M6IDI7IGNsZWFyOiBib3RoOyI+PHNwYW4gc3R5bGU9Im1hcmdpbjog +MHB4OyBwYWRkaW5nOiAwcHg7IGJvcmRlcjogMHB4OyBvdXRsaW5lOiAwcHg7IGZvbnQtZmFtaWx5 +OiAmcXVvdDtNaWNyb3NvZnQgWWFoZWkmcXVvdDs7IGNvbG9yOiByZ2IoMTkxLCAxOTEsIDE5MSk7 +Ij7pgq7nrrHvvJp5YW5neHVhbkB3aXRzb2Z0LmNuPC9zcGFuPjwvZGl2Pgo8L2Rpdj4KPC9kaXY+ +CjwvZGl2Pgo8L2Rpdj4KPC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PCEtLfCfmIAtLT48L2Rpdj48 +L2Rpdj48L2JvZHk+PC9odG1sPg== + +--=_mailmaster-6a18e4a4_0_305e_=-- diff --git a/media/inbound/2026-01-30_1711_G5开发周报_2026-01-26_--_2026-01-30---179e44a1-6133-4978-85bb-4d1a2c936b90.eml b/media/inbound/2026-01-30_1711_G5开发周报_2026-01-26_--_2026-01-30---179e44a1-6133-4978-85bb-4d1a2c936b90.eml new file mode 100644 index 0000000..0bb2e9f --- /dev/null +++ b/media/inbound/2026-01-30_1711_G5开发周报_2026-01-26_--_2026-01-30---179e44a1-6133-4978-85bb-4d1a2c936b90.eml @@ -0,0 +1,348 @@ +Date: Fri, 30 Jan 2026 17:11:37 +0800 +From: =?utf-8?B?5p2o6L2p?= +To: =?utf-8?B?5YiY5by6?= +Cc: =?utf-8?B?5bGI5paw6b6Z?= , =?utf-8?B?5pyx5paM?= + , =?utf-8?B?6ZmI5piO?= , + =?utf-8?B?6KKB5pm0?= +Message-ID: <44A88FAC-9EA7-4BA5-AC6D-67351433E4AD@witsoft.cn> +Subject: =?utf-8?B?RzXlvIDlj5HlkajmiqXjgJAyMDI2LTAxLTI2IC0tICAyMDI2LTAx?= + =?utf-8?B?LTMw44CR?= +MIME-Version: 1.0 +Content-Type: multipart/alternative; boundary="=_mailmaster-6a18e4a4_0_440d_=" + +--=_mailmaster-6a18e4a4_0_440d_= +Content-Type: text/plain; charset="utf-8" +Content-Transfer-Encoding: base64 + +5oKo5aW977yB5Lul5LiL5piv5oiR5pys5ZGo55qE5bel5L2c5oC757uT5Y+K5LiL5ZGo6K6h5YiS +77yM6K+35a6h6ZiF44CCCuS4gOOAgeacrOWRqOW3peS9nOaAu+e7kwrph43ngrnlt6XkvZzlrozm +iJDmg4XlhrUK5Lu75YqhMe+8mkc15Li75pWw5o2uNS40LjLniYjmnKzlj5HluIMK5Lu75YqhMu+8 +mumUgOWUriDph4fotK01LjQuMueJiOacrOWPkeW4gwrluLjop4Tlt6XkvZwK5pel5bi45LqL5Yqh +Me+8mjIwMjYtMDEtMjYKMS4g6K+i5Lu35LiL6L6+5Zue5YaZ6K+36LSt5Y2V5rWB56iL5LyY5YyW +IAoyLiDph4fotK3nvLrpmbfkv67lpI0K5pel5bi45LqL5YqhMu+8mjIwMjYtMDEtMjcKMS4g6YeH +6LSt5rWL6K+V6Zeu6aKY5L+u5aSNIAoyLiDkuLvmlbDmja7mtojmga/mjqjpgIHmjqXlj6PkvJjl +jJYK5pel5bi45LqL5YqhM++8mjIwMjYtMDEtMjgKMS4g6YeH6LSt566h55CG6YCB6LSn5Y2V6ZyA +5rGC5byA5Y+R6L2s5rWLIAoyLiDnvLrpmbfkv67lpI0K5pel5bi45LqL5YqhNO+8mjIwMjYtMDEt +MjkKMS4g6YeH6LSt566h55CG57y66Zm35L+u5aSNIAoyLiDpgIDotKfljZXmiZPljbDlop7liqDl +rZfmrrUK5pel5bi45LqL5YqhNe+8mjIwMjYtMDEtMzAKMS4g54mI5pys5Y+R5biD5pSv5oyBIAoy +LiDpnIDmsYLor4TlrqEgCjMuIOeJqeaWmeS/oeaBr+WvvOWHuuWbvueJh+aKgOacr+mihOeglArk +uIDjgIHkuIvlkajph43ngrnku7vliqEKNS40LjPniYjmnKzlvIDlj5EK5aSH5rOo77yaCkJlc3Qg +cmVnYXJkcyzmnajovakK5Zyw5Z2A77ya5Lit5Zu9wrfljZfkuqzkupHlr4bln45M5qCLNS8xMOal +vArmiYvmnLrvvJoxODcyNjEyODQ4OQrpgq7nrrHvvJp5YW5neHVhbkB3aXRzb2Z0LmNu + +--=_mailmaster-6a18e4a4_0_440d_= +Content-Type: text/html; charset="utf-8" +Content-Transfer-Encoding: base64 + +PGh0bWw+PGhlYWQ+PG1ldGEgaHR0cC1lcXVpdj0nQ29udGVudC1UeXBlJyBjb250ZW50PSd0ZXh0 +L2h0bWw7IGNoYXJzZXQ9VVRGLTgnPjwvaGVhZD48Ym9keSBzdHlsZT1saW5lLWhlaWdodDogMS41 +O2ZvbnQtZmFtaWx5OiAi5b6u6L2v6ZuF6buRIj48ZGl2ICBzdHlsZT0iZm9udC1mYW1pbHk6IOW+ +rui9r+mbhem7kTsiPjxkaXYgc3R5bGU9IiI+PGRpdiBzdHlsZT0iIj48ZGl2IHN0eWxlPSIiPjxk +aXYgc3R5bGU9IiIgMS41O2ZvbnQtZmFtaWx5Oj0iIiAi5b6u6L2v6ZuF6buRIj0iIj48ZGl2IHN0 +eWxlPSIiPjxkaXYgc3R5bGU9IiI+PGRpdiBzdHlsZT0iIj48ZGl2IHN0eWxlPSIiPjxwIGNpZD0i +bjAiIG1kdHlwZT0icGFyYWdyYXBoIiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLXAgbWQtZm9jdXMi +IHN0eWxlPSJmb250LWZhbWlseTogJnF1b3Q7T3BlbiBTYW5zJnF1b3Q7LCAmcXVvdDtDbGVhciBT +YW5zJnF1b3Q7LCAmcXVvdDtIZWx2ZXRpY2EgTmV1ZSZxdW90OywgSGVsdmV0aWNhLCBBcmlhbCwg +c2Fucy1zZXJpZjsgYm94LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7 +IG9ycGhhbnM6IDQ7IG1hcmdpbjogMC44ZW0gMHB4OyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBv +c2l0aW9uOiByZWxhdGl2ZTsgY29sb3I6IHJnYig1MSwgNTEsIDUxKTsgZm9udC1zaXplOiAxNnB4 +OyI+PHNwYW4gbWQtaW5saW5lPSJwbGFpbiIgY2xhc3M9Im1kLXBsYWluIG1kLWV4cGFuZCIgc3R5 +bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij7mgqjlpb3vvIHku6XkuIvmmK/miJHmnKzlkajn +moTlt6XkvZzmgLvnu5Plj4rkuIvlkajorqHliJLvvIzor7flrqHpmIXjgII8L3NwYW4+PC9wPjxk +aXYgdGFiaW5kZXg9Ii0xIiBjaWQ9Im4yIiBtZHR5cGU9ImhyIiBjbGFzcz0ibWQtaHIgbWQtZW5k +LWJsb2NrIiBzdHlsZT0iZm9udC1mYW1pbHk6ICZxdW90O09wZW4gU2FucyZxdW90OywgJnF1b3Q7 +Q2xlYXIgU2FucyZxdW90OywgJnF1b3Q7SGVsdmV0aWNhIE5ldWUmcXVvdDssIEhlbHZldGljYSwg +QXJpYWwsIHNhbnMtc2VyaWY7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7IGNvbG9yOiByZ2IoNTEs +IDUxLCA1MSk7IGZvbnQtc2l6ZTogMTZweDsiPjxociBzdHlsZT0iYm94LXNpemluZzogY29udGVu +dC1ib3g7IGhlaWdodDogMnB4OyBtYXJnaW46IDE2cHggMHB4OyBib3JkZXI6IDBweCBub25lOyBw +YWRkaW5nOiAwcHg7IGJhY2tncm91bmQtY29sb3I6IHJnYigyMzEsIDIzMSwgMjMxKTsiPjwvZGl2 +PjxoMyBjaWQ9Im4zIiBtZHR5cGU9ImhlYWRpbmciIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtaGVh +ZGluZyIgc3R5bGU9ImZvbnQtZmFtaWx5OiAmcXVvdDtPcGVuIFNhbnMmcXVvdDssICZxdW90O0Ns +ZWFyIFNhbnMmcXVvdDssICZxdW90O0hlbHZldGljYSBOZXVlJnF1b3Q7LCBIZWx2ZXRpY2EsIEFy +aWFsLCBzYW5zLXNlcmlmOyBib3gtc2l6aW5nOiBib3JkZXItYm94OyBicmVhay1hZnRlcjogYXZv +aWQtcGFnZTsgYnJlYWstaW5zaWRlOiBhdm9pZDsgb3JwaGFuczogNDsgZm9udC1zaXplOiAxLjVl +bTsgbWFyZ2luLXRvcDogMXJlbTsgbWFyZ2luLWJvdHRvbTogMXJlbTsgcG9zaXRpb246IHJlbGF0 +aXZlOyBsaW5lLWhlaWdodDogMS40MzsgY3Vyc29yOiB0ZXh0OyB3aGl0ZS1zcGFjZTogcHJlLXdy +YXA7IGNvbG9yOiByZ2IoNTEsIDUxLCA1MSk7Ij48c3BhbiBtZC1pbmxpbmU9InN0cm9uZyIgY2xh +c3M9Im1kLXBhaXItcyAiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+PHN0cm9uZyBz +dHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPjxzcGFuIG1kLWlubGluZT0icGxhaW4iIGNs +YXNzPSJtZC1wbGFpbiIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij7kuIDjgIHmnKzl +kajlt6XkvZzmgLvnu5M8L3NwYW4+PC9zdHJvbmc+PC9zcGFuPjwvaDM+PG9sIGNsYXNzPSJvbC1s +aXN0IiBzdGFydD0iIiBjaWQ9Im40IiBtZHR5cGU9Imxpc3QiIHN0eWxlPSJmb250LWZhbWlseTog +JnF1b3Q7T3BlbiBTYW5zJnF1b3Q7LCAmcXVvdDtDbGVhciBTYW5zJnF1b3Q7LCAmcXVvdDtIZWx2 +ZXRpY2EgTmV1ZSZxdW90OywgSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjsgYm94LXNpemlu +ZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBhZGRpbmctbGVmdDogMzBweDsgcG9zaXRpb246 +IHJlbGF0aXZlOyBjb2xvcjogcmdiKDUxLCA1MSwgNTEpOyBmb250LXNpemU6IDE2cHg7Ij48bGkg +Y2xhc3M9Im1kLWxpc3QtaXRlbSIgY2lkPSJuNSIgbWR0eXBlPSJsaXN0X2l0ZW0iIHN0eWxlPSJi +b3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcG9zaXRpb246IHJlbGF0aXZlOyI+ +PHAgY2lkPSJuNiIgbWR0eXBlPSJwYXJhZ3JhcGgiIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCIg +c3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhlcml0OyBvcnBo +YW5zOiA0OyBtYXJnaW46IDBweCAwcHggMC41cmVtOyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBv +c2l0aW9uOiByZWxhdGl2ZTsiPjxzcGFuIG1kLWlubGluZT0ic3Ryb25nIiBjbGFzcz0ibWQtcGFp +ci1zICIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij48c3Ryb25nIHN0eWxlPSJib3gt +c2l6aW5nOiBib3JkZXItYm94OyI+PHNwYW4gbWQtaW5saW5lPSJwbGFpbiIgY2xhc3M9Im1kLXBs +YWluIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPumHjeeCueW3peS9nOWujOaIkOaD +heWGtTwvc3Bhbj48L3N0cm9uZz48L3NwYW4+PC9wPjwvbGk+PHVsIGNsYXNzPSJ1bC1saXN0IiBj +aWQ9Im43IiBtZHR5cGU9Imxpc3QiIGRhdGEtbWFyaz0iLSIgc3R5bGU9ImJveC1zaXppbmc6IGJv +cmRlci1ib3g7IG1hcmdpbjogMHB4OyBwYWRkaW5nLWxlZnQ6IDMwcHg7IHBvc2l0aW9uOiByZWxh +dGl2ZTsiPjxsaSBjbGFzcz0ibWQtbGlzdC1pdGVtIiBjaWQ9Im44IiBtZHR5cGU9Imxpc3RfaXRl +bSIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBwb3NpdGlvbjog +cmVsYXRpdmU7Ij48cCBjaWQ9Im45IiBtZHR5cGU9InBhcmFncmFwaCIgY2xhc3M9Im1kLWVuZC1i +bG9jayBtZC1wIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGlu +aGVyaXQ7IG9ycGhhbnM6IDQ7IG1hcmdpbjogMHB4IDBweCAwLjVyZW07IHdoaXRlLXNwYWNlOiBw +cmUtd3JhcDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHNwYW4gbWQtaW5saW5lPSJwbGFpbiIgY2xh +c3M9Im1kLXBsYWluIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPuS7u+WKoTHvvJpH +NeS4u+aVsOaNrjUuNC4y54mI5pys5Y+R5biDPC9zcGFuPjwvcD48L2xpPjxsaSBjbGFzcz0ibWQt +bGlzdC1pdGVtIiBjaWQ9Im4xMCIgbWR0eXBlPSJsaXN0X2l0ZW0iIHN0eWxlPSJib3gtc2l6aW5n +OiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHAgY2lkPSJu +MTEiIG1kdHlwZT0icGFyYWdyYXBoIiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLXAiIHN0eWxlPSJi +b3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5oZXJpdDsgb3JwaGFuczogNDsg +bWFyZ2luOiAwcHggMHB4IDAuNXJlbTsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyBwb3NpdGlvbjog +cmVsYXRpdmU7Ij7ku7vliqEy77ya6ZSA5ZSuIOmHh+i0rTUuNC4y54mI5pys5Y+R5biDPC9wPjwv +bGk+PC91bD48bGkgY2xhc3M9Im1kLWxpc3QtaXRlbSIgY2lkPSJuMTIiIG1kdHlwZT0ibGlzdF9p +dGVtIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBvc2l0aW9u +OiByZWxhdGl2ZTsiPjxwIGNpZD0ibjEzIiBtZHR5cGU9InBhcmFncmFwaCIgY2xhc3M9Im1kLWVu +ZC1ibG9jayBtZC1wIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6 +IGluaGVyaXQ7IG9ycGhhbnM6IDQ7IG1hcmdpbjogMHB4IDBweCAwLjVyZW07IHdoaXRlLXNwYWNl +OiBwcmUtd3JhcDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHNwYW4gbWQtaW5saW5lPSJzdHJvbmci +IGNsYXNzPSJtZC1wYWlyLXMgIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPjxzdHJv +bmcgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij48c3BhbiBtZC1pbmxpbmU9InBsYWlu +IiBjbGFzcz0ibWQtcGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+5bi46KeE +5bel5L2cPC9zcGFuPjwvc3Ryb25nPjwvc3Bhbj48L3A+PC9saT48L29sPjxvbCBjbGFzcz0ib2wt +bGlzdCIgc3RhcnQ9IiIgY2lkPSJuNCIgbWR0eXBlPSJsaXN0IiBzdHlsZT0iZm9udC1mYW1pbHk6 +ICZxdW90O09wZW4gU2FucyZxdW90OywgJnF1b3Q7Q2xlYXIgU2FucyZxdW90OywgJnF1b3Q7SGVs +dmV0aWNhIE5ldWUmcXVvdDssIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7IGJveC1zaXpp +bmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBwYWRkaW5nLWxlZnQ6IDMwcHg7IHBvc2l0aW9u +OiByZWxhdGl2ZTsgY29sb3I6IHJnYig1MSwgNTEsIDUxKTsgZm9udC1zaXplOiAxNnB4OyI+PHVs +IGNsYXNzPSJ1bC1saXN0IiBjaWQ9Im4xNCIgbWR0eXBlPSJsaXN0IiBkYXRhLW1hcms9Ii0iIHN0 +eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcGFkZGluZy1sZWZ0OiAz +MHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48bGkgY2xhc3M9Im1kLWxpc3QtaXRlbSIgY2lkPSJu +MTUiIG1kdHlwZT0ibGlzdF9pdGVtIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFy +Z2luOiAwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxwIGNpZD0ibjE2IiBtZHR5cGU9InBhcmFn +cmFwaCIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1wIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVy +LWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IG9ycGhhbnM6IDQ7IG1hcmdpbjogMHB4IDBweCAw +LjVyZW07IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHNwYW4g +bWQtaW5saW5lPSJwbGFpbiIgY2xhc3M9Im1kLXBsYWluIiBzdHlsZT0iYm94LXNpemluZzogYm9y +ZGVyLWJveDsiPuaXpeW4uOS6i+WKoTHvvJoyMDI2LTAxLTI2PC9zcGFuPjwvcD48L2xpPjx1bCBz +dHlsZT0ibGlzdC1zdHlsZS10eXBlOiBzcXVhcmU7Ij48bGkgY2xhc3M9Im1kLWxpc3QtaXRlbSIg +Y2lkPSJuMTUiIG1kdHlwZT0ibGlzdF9pdGVtIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJv +eDsgbWFyZ2luOiAwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxwIGNpZD0ibjE2IiBtZHR5cGU9 +InBhcmFncmFwaCIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1wIiBzdHlsZT0iYm94LXNpemluZzog +Ym9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IG9ycGhhbnM6IDQ7IG1hcmdpbjogMHB4 +IDBweCAwLjVyZW07IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJlbGF0aXZlOyI+ +PHNwYW4gbWQtaW5saW5lPSJwbGFpbiIgY2xhc3M9Im1kLXBsYWluIiBzdHlsZT0iYm94LXNpemlu +ZzogYm9yZGVyLWJveDsiPjEuIOivouS7t+S4i+i+vuWbnuWGmeivt+i0reWNlea1geeoi+S8mOWM +lgo8L3NwYW4+PC9wPjwvbGk+PGxpIGNsYXNzPSJtZC1saXN0LWl0ZW0iIGNpZD0ibjE1IiBtZHR5 +cGU9Imxpc3RfaXRlbSIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4 +OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48cCBjaWQ9Im4xNiIgbWR0eXBlPSJwYXJhZ3JhcGgiIGNs +YXNzPSJtZC1lbmQtYmxvY2sgbWQtcCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGxp +bmUtaGVpZ2h0OiBpbmhlcml0OyBvcnBoYW5zOiA0OyBtYXJnaW46IDBweCAwcHggMC41cmVtOyB3 +aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxzcGFuIG1kLWlubGlu +ZT0icGxhaW4iIGNsYXNzPSJtZC1wbGFpbiIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7 +Ij4yLiDph4fotK3nvLrpmbfkv67lpI08L3NwYW4+PC9wPjwvbGk+PC91bD48L3VsPjwvb2w+PG9s +IGNsYXNzPSJvbC1saXN0IiBzdGFydD0iIiBjaWQ9Im40IiBtZHR5cGU9Imxpc3QiIHN0eWxlPSJm +b250LWZhbWlseTog5b6u6L2v6ZuF6buROyBib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46 +IDBweDsgcGFkZGluZy1sZWZ0OiAzMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48dWwgY2xhc3M9 +InVsLWxpc3QiIGNpZD0ibjE0IiBtZHR5cGU9Imxpc3QiIGRhdGEtbWFyaz0iLSIgc3R5bGU9ImZv +bnQtZmFtaWx5OiDlvq7ova/pm4Xpu5E7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjog +MHB4OyBwYWRkaW5nLWxlZnQ6IDMwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxsaSBjbGFzcz0i +bWQtbGlzdC1pdGVtIiBjaWQ9Im4xNSIgbWR0eXBlPSJsaXN0X2l0ZW0iIHN0eWxlPSJjb2xvcjog +cmdiKDUxLCA1MSwgNTEpOyBmb250LWZhbWlseTogJnF1b3Q7T3BlbiBTYW5zJnF1b3Q7LCAmcXVv +dDtDbGVhciBTYW5zJnF1b3Q7LCAmcXVvdDtIZWx2ZXRpY2EgTmV1ZSZxdW90OywgSGVsdmV0aWNh +LCBBcmlhbCwgc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxNnB4OyBib3gtc2l6aW5nOiBib3JkZXIt +Ym94OyBtYXJnaW46IDBweDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHAgY2lkPSJuMTYiIG1kdHlw +ZT0icGFyYWdyYXBoIiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLXAiIHN0eWxlPSJib3gtc2l6aW5n +OiBib3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5oZXJpdDsgb3JwaGFuczogNDsgbWFyZ2luOiAw +cHggMHB4IDAuNXJlbTsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyBwb3NpdGlvbjogcmVsYXRpdmU7 +Ij48c3BhbiBtZC1pbmxpbmU9InBsYWluIiBjbGFzcz0ibWQtcGxhaW4iIHN0eWxlPSJib3gtc2l6 +aW5nOiBib3JkZXItYm94OyI+5pel5bi45LqL5YqhMu+8mjIwMjYtMDEtMjc8L3NwYW4+PC9wPjwv +bGk+PHVsIHN0eWxlPSJsaXN0LXN0eWxlLXR5cGU6IHNxdWFyZTsiPjxsaSBjbGFzcz0ibWQtbGlz +dC1pdGVtIiBjaWQ9Im4xNSIgbWR0eXBlPSJsaXN0X2l0ZW0iIHN0eWxlPSJjb2xvcjogcmdiKDUx +LCA1MSwgNTEpOyBmb250LWZhbWlseTogJnF1b3Q7T3BlbiBTYW5zJnF1b3Q7LCAmcXVvdDtDbGVh +ciBTYW5zJnF1b3Q7LCAmcXVvdDtIZWx2ZXRpY2EgTmV1ZSZxdW90OywgSGVsdmV0aWNhLCBBcmlh +bCwgc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxNnB4OyBib3gtc2l6aW5nOiBib3JkZXItYm94OyBt +YXJnaW46IDBweDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHAgY2lkPSJuMTYiIG1kdHlwZT0icGFy +YWdyYXBoIiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLXAiIHN0eWxlPSJib3gtc2l6aW5nOiBib3Jk +ZXItYm94OyBsaW5lLWhlaWdodDogaW5oZXJpdDsgb3JwaGFuczogNDsgbWFyZ2luOiAwcHggMHB4 +IDAuNXJlbTsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyBwb3NpdGlvbjogcmVsYXRpdmU7Ij4xLiDp +h4fotK3mtYvor5Xpl67popjkv67lpI0NPGJyPjwvcD48L2xpPjxsaSBjbGFzcz0ibWQtbGlzdC1p +dGVtIiBjaWQ9Im4xNSIgbWR0eXBlPSJsaXN0X2l0ZW0iIHN0eWxlPSJjb2xvcjogcmdiKDUxLCA1 +MSwgNTEpOyBmb250LWZhbWlseTogJnF1b3Q7T3BlbiBTYW5zJnF1b3Q7LCAmcXVvdDtDbGVhciBT +YW5zJnF1b3Q7LCAmcXVvdDtIZWx2ZXRpY2EgTmV1ZSZxdW90OywgSGVsdmV0aWNhLCBBcmlhbCwg +c2Fucy1zZXJpZjsgZm9udC1zaXplOiAxNnB4OyBib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJn +aW46IDBweDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHAgY2lkPSJuMTYiIG1kdHlwZT0icGFyYWdy +YXBoIiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLXAiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXIt +Ym94OyBsaW5lLWhlaWdodDogaW5oZXJpdDsgb3JwaGFuczogNDsgbWFyZ2luOiAwcHggMHB4IDAu +NXJlbTsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyBwb3NpdGlvbjogcmVsYXRpdmU7Ij4yLiDkuLvm +lbDmja7mtojmga/mjqjpgIHmjqXlj6PkvJjljJY8L3A+PC9saT48L3VsPjxsaSBjbGFzcz0ibWQt +bGlzdC1pdGVtIiBjaWQ9Im4xNyIgbWR0eXBlPSJsaXN0X2l0ZW0iIHN0eWxlPSJjb2xvcjogcmdi +KDUxLCA1MSwgNTEpOyBmb250LWZhbWlseTogJnF1b3Q7T3BlbiBTYW5zJnF1b3Q7LCAmcXVvdDtD +bGVhciBTYW5zJnF1b3Q7LCAmcXVvdDtIZWx2ZXRpY2EgTmV1ZSZxdW90OywgSGVsdmV0aWNhLCBB +cmlhbCwgc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxNnB4OyBib3gtc2l6aW5nOiBib3JkZXItYm94 +OyBtYXJnaW46IDBweDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHAgY2lkPSJuMTgiIG1kdHlwZT0i +cGFyYWdyYXBoIiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLXAiIHN0eWxlPSJib3gtc2l6aW5nOiBi +b3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5oZXJpdDsgb3JwaGFuczogNDsgbWFyZ2luOiAwcHgg +MHB4IDAuNXJlbTsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48 +c3BhbiBtZC1pbmxpbmU9InBsYWluIiBjbGFzcz0ibWQtcGxhaW4iIHN0eWxlPSJib3gtc2l6aW5n +OiBib3JkZXItYm94OyI+5pel5bi45LqL5YqhM++8mjIwMjYtMDEtMjg8L3NwYW4+PC9wPjwvbGk+ +PHVsIHN0eWxlPSJsaXN0LXN0eWxlLXR5cGU6IHNxdWFyZTsiPjxsaSBjbGFzcz0ibWQtbGlzdC1p +dGVtIiBjaWQ9Im4xNyIgbWR0eXBlPSJsaXN0X2l0ZW0iIHN0eWxlPSJjb2xvcjogcmdiKDUxLCA1 +MSwgNTEpOyBmb250LWZhbWlseTogJnF1b3Q7T3BlbiBTYW5zJnF1b3Q7LCAmcXVvdDtDbGVhciBT +YW5zJnF1b3Q7LCAmcXVvdDtIZWx2ZXRpY2EgTmV1ZSZxdW90OywgSGVsdmV0aWNhLCBBcmlhbCwg +c2Fucy1zZXJpZjsgZm9udC1zaXplOiAxNnB4OyBib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJn +aW46IDBweDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHAgY2lkPSJuMTgiIG1kdHlwZT0icGFyYWdy +YXBoIiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLXAiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXIt +Ym94OyBsaW5lLWhlaWdodDogaW5oZXJpdDsgb3JwaGFuczogNDsgbWFyZ2luOiAwcHggMHB4IDAu +NXJlbTsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyBwb3NpdGlvbjogcmVsYXRpdmU7Ij4xLiDph4fo +tK3nrqHnkIbpgIHotKfljZXpnIDmsYLlvIDlj5HovazmtYsNPC9wPjwvbGk+PGxpIGNsYXNzPSJt +ZC1saXN0LWl0ZW0iIGNpZD0ibjE3IiBtZHR5cGU9Imxpc3RfaXRlbSIgc3R5bGU9ImNvbG9yOiBy +Z2IoNTEsIDUxLCA1MSk7IGZvbnQtZmFtaWx5OiAmcXVvdDtPcGVuIFNhbnMmcXVvdDssICZxdW90 +O0NsZWFyIFNhbnMmcXVvdDssICZxdW90O0hlbHZldGljYSBOZXVlJnF1b3Q7LCBIZWx2ZXRpY2Es +IEFyaWFsLCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDE2cHg7IGJveC1zaXppbmc6IGJvcmRlci1i +b3g7IG1hcmdpbjogMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48cCBjaWQ9Im4xOCIgbWR0eXBl +PSJwYXJhZ3JhcGgiIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCIgc3R5bGU9ImJveC1zaXppbmc6 +IGJvcmRlci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhlcml0OyBvcnBoYW5zOiA0OyBtYXJnaW46IDBw +eCAwcHggMC41cmVtOyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsi +PjIuIOe8uumZt+S/ruWkjTwvcD48L2xpPjwvdWw+PC91bD48L29sPjxvbCBjbGFzcz0ib2wtbGlz +dCIgc3RhcnQ9IiIgY2lkPSJuNCIgbWR0eXBlPSJsaXN0IiBzdHlsZT0iYm94LXNpemluZzogYm9y +ZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBhZGRpbmctbGVmdDogMzBweDsgcG9zaXRpb246IHJlbGF0 +aXZlOyI+PHVsIGNsYXNzPSJ1bC1saXN0IiBjaWQ9Im4xNCIgbWR0eXBlPSJsaXN0IiBkYXRhLW1h +cms9Ii0iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcGFkZGlu +Zy1sZWZ0OiAzMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48bGkgY2xhc3M9Im1kLWxpc3QtaXRl +bSIgY2lkPSJuMTciIG1kdHlwZT0ibGlzdF9pdGVtIiBzdHlsZT0iZm9udC1mYW1pbHk6ICZxdW90 +O09wZW4gU2FucyZxdW90OywgJnF1b3Q7Q2xlYXIgU2FucyZxdW90OywgJnF1b3Q7SGVsdmV0aWNh +IE5ldWUmcXVvdDssIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7IGNvbG9yOiByZ2IoNTEs +IDUxLCA1MSk7IGZvbnQtc2l6ZTogMTZweDsgYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2lu +OiAwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxwIGNpZD0ibjE4IiBtZHR5cGU9InBhcmFncmFw +aCIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1wIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJv +eDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IG9ycGhhbnM6IDQ7IG1hcmdpbjogMHB4IDBweCAwLjVy +ZW07IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHNwYW4gbWQt +aW5saW5lPSJwbGFpbiIgY2xhc3M9Im1kLXBsYWluIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVy +LWJveDsiPuaXpeW4uOS6i+WKoTTvvJoyMDI2LTAxLTI5PC9zcGFuPjwvcD48L2xpPjx1bCBzdHls +ZT0iZm9udC1mYW1pbHk6IOW+rui9r+mbhem7kTsgbGlzdC1zdHlsZS10eXBlOiBzcXVhcmU7Ij48 +bGkgY2xhc3M9Im1kLWxpc3QtaXRlbSIgY2lkPSJuMTciIG1kdHlwZT0ibGlzdF9pdGVtIiBzdHls +ZT0iZm9udC1mYW1pbHk6ICZxdW90O09wZW4gU2FucyZxdW90OywgJnF1b3Q7Q2xlYXIgU2FucyZx +dW90OywgJnF1b3Q7SGVsdmV0aWNhIE5ldWUmcXVvdDssIEhlbHZldGljYSwgQXJpYWwsIHNhbnMt +c2VyaWY7IGNvbG9yOiByZ2IoNTEsIDUxLCA1MSk7IGZvbnQtc2l6ZTogMTZweDsgYm94LXNpemlu +ZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxwIGNpZD0i +bjE4IiBtZHR5cGU9InBhcmFncmFwaCIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1wIiBzdHlsZT0i +Ym94LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IG9ycGhhbnM6IDQ7 +IG1hcmdpbjogMHB4IDBweCAwLjVyZW07IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRpb246 +IHJlbGF0aXZlOyI+PHNwYW4gbWQtaW5saW5lPSJwbGFpbiIgY2xhc3M9Im1kLXBsYWluIiBzdHls +ZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPjEuIOmHh+i0reeuoeeQhue8uumZt+S/ruWkjQ08 +L3NwYW4+PC9wPjwvbGk+PGxpIGNsYXNzPSJtZC1saXN0LWl0ZW0iIGNpZD0ibjE3IiBtZHR5cGU9 +Imxpc3RfaXRlbSIgc3R5bGU9ImZvbnQtZmFtaWx5OiAmcXVvdDtPcGVuIFNhbnMmcXVvdDssICZx +dW90O0NsZWFyIFNhbnMmcXVvdDssICZxdW90O0hlbHZldGljYSBOZXVlJnF1b3Q7LCBIZWx2ZXRp +Y2EsIEFyaWFsLCBzYW5zLXNlcmlmOyBjb2xvcjogcmdiKDUxLCA1MSwgNTEpOyBmb250LXNpemU6 +IDE2cHg7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBwb3NpdGlvbjogcmVs +YXRpdmU7Ij48cCBjaWQ9Im4xOCIgbWR0eXBlPSJwYXJhZ3JhcGgiIGNsYXNzPSJtZC1lbmQtYmxv +Y2sgbWQtcCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhl +cml0OyBvcnBoYW5zOiA0OyBtYXJnaW46IDBweCAwcHggMC41cmVtOyB3aGl0ZS1zcGFjZTogcHJl +LXdyYXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxzcGFuIG1kLWlubGluZT0icGxhaW4iIGNsYXNz +PSJtZC1wbGFpbiIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij4yLiDpgIDotKfljZXm +iZPljbDlop7liqDlrZfmrrU8L3NwYW4+PC9wPjwvbGk+PC91bD48bGkgc3R5bGU9ImZvbnQtZmFt +aWx5OiDlvq7ova/pm4Xpu5E7Ij48Zm9udCBjb2xvcj0iIzMzMzMzMyIgZmFjZT0iT3BlbiBTYW5z +LCBDbGVhciBTYW5zLCBIZWx2ZXRpY2EgTmV1ZSwgSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJp +ZiI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTZweDsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyI+ +5pel5bi45LqL5YqhNe+8mjIwMjYtMDEtMzA8L3NwYW4+PC9mb250PjwvbGk+PHVsIHN0eWxlPSJs +aXN0LXN0eWxlLXR5cGU6IHNxdWFyZTsiPjxsaSBzdHlsZT0iIj48Zm9udCBjb2xvcj0iIzMzMzMz +MyIgZmFjZT0iT3BlbiBTYW5zLCBDbGVhciBTYW5zLCBIZWx2ZXRpY2EgTmV1ZSwgSGVsdmV0aWNh +LCBBcmlhbCwgc2Fucy1zZXJpZiI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTZweDsgd2hpdGUt +c3BhY2U6IHByZS13cmFwOyI+MS4g54mI5pys5Y+R5biD5pSv5oyBDTwvc3Bhbj48L2ZvbnQ+PC9s +aT48bGkgc3R5bGU9IiI+PGZvbnQgY29sb3I9IiMzMzMzMzMiIGZhY2U9Ik9wZW4gU2FucywgQ2xl +YXIgU2FucywgSGVsdmV0aWNhIE5ldWUsIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWYiPjxz +cGFuIHN0eWxlPSJmb250LXNpemU6IDE2cHg7IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsiPjIuIOmc +gOaxguivhOWuoQ08L3NwYW4+PC9mb250PjwvbGk+PGxpIHN0eWxlPSIiPjxmb250IGNvbG9yPSIj +MzMzMzMzIiBmYWNlPSJPcGVuIFNhbnMsIENsZWFyIFNhbnMsIEhlbHZldGljYSBOZXVlLCBIZWx2 +ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmIj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxNnB4OyB3 +aGl0ZS1zcGFjZTogcHJlLXdyYXA7Ij4zLiDnianmlpnkv6Hmga/lr7zlh7rlm77niYfmioDmnK/p +ooTnoJQ8L3NwYW4+PC9mb250PjwvbGk+PC91bD48L3VsPjwvb2w+PGgzIGNpZD0ibjMiIG1kdHlw +ZT0iaGVhZGluZyIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1oZWFkaW5nIiBzdHlsZT0iZm9udC1m +YW1pbHk6ICZxdW90O09wZW4gU2FucyZxdW90OywgJnF1b3Q7Q2xlYXIgU2FucyZxdW90OywgJnF1 +b3Q7SGVsdmV0aWNhIE5ldWUmcXVvdDssIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7IGJv +eC1zaXppbmc6IGJvcmRlci1ib3g7IGJyZWFrLWFmdGVyOiBhdm9pZC1wYWdlOyBicmVhay1pbnNp +ZGU6IGF2b2lkOyBvcnBoYW5zOiA0OyBmb250LXNpemU6IDEuNWVtOyBtYXJnaW4tdG9wOiAxcmVt +OyBtYXJnaW4tYm90dG9tOiAxcmVtOyBwb3NpdGlvbjogcmVsYXRpdmU7IGxpbmUtaGVpZ2h0OiAx +LjQzOyBjdXJzb3I6IHRleHQ7IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgY29sb3I6IHJnYig1MSwg +NTEsIDUxKTsiPjxzcGFuIG1kLWlubGluZT0ic3Ryb25nIiBjbGFzcz0ibWQtcGFpci1zICIgc3R5 +bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij48c3Ryb25nIHN0eWxlPSJib3gtc2l6aW5nOiBi +b3JkZXItYm94OyI+PHNwYW4gbWQtaW5saW5lPSJwbGFpbiIgY2xhc3M9Im1kLXBsYWluIiBzdHls +ZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPuS4gOOAgeS4i+WRqOmHjeeCueS7u+WKoTwvc3Bh +bj48L3N0cm9uZz48L3NwYW4+PC9oMz48ZGl2IHN0eWxlPSJmb250LWZhbWlseTog5b6u6L2v6ZuF +6buROyI+NS40LjPniYjmnKzlvIDlj5E8L2Rpdj48ZGl2IHRhYmluZGV4PSItMSIgY2lkPSJuMzki +IG1kdHlwZT0iaHIiIGNsYXNzPSJtZC1ociBtZC1lbmQtYmxvY2siIHN0eWxlPSJmb250LWZhbWls +eTogJnF1b3Q7T3BlbiBTYW5zJnF1b3Q7LCAmcXVvdDtDbGVhciBTYW5zJnF1b3Q7LCAmcXVvdDtI +ZWx2ZXRpY2EgTmV1ZSZxdW90OywgSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjsgYm94LXNp +emluZzogYm9yZGVyLWJveDsgY29sb3I6IHJnYig1MSwgNTEsIDUxKTsgZm9udC1zaXplOiAxNnB4 +OyI+PGhyIHN0eWxlPSJib3gtc2l6aW5nOiBjb250ZW50LWJveDsgaGVpZ2h0OiAycHg7IG1hcmdp +bjogMTZweCAwcHg7IGJvcmRlcjogMHB4IG5vbmU7IHBhZGRpbmc6IDBweDsgYmFja2dyb3VuZC1j +b2xvcjogcmdiKDIzMSwgMjMxLCAyMzEpOyI+PC9kaXY+PHAgY2lkPSJuNDAiIG1kdHlwZT0icGFy +YWdyYXBoIiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLXAiIHN0eWxlPSJmb250LWZhbWlseTogJnF1 +b3Q7T3BlbiBTYW5zJnF1b3Q7LCAmcXVvdDtDbGVhciBTYW5zJnF1b3Q7LCAmcXVvdDtIZWx2ZXRp +Y2EgTmV1ZSZxdW90OywgSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjsgYm94LXNpemluZzog +Ym9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IG9ycGhhbnM6IDQ7IG1hcmdpbjogMC44 +ZW0gMHB4OyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsgY29sb3I6 +IHJnYig1MSwgNTEsIDUxKTsgZm9udC1zaXplOiAxNnB4OyI+PHNwYW4gbWQtaW5saW5lPSJzdHJv +bmciIGNsYXNzPSJtZC1wYWlyLXMgIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPjxz +dHJvbmcgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij48c3BhbiBtZC1pbmxpbmU9InBs +YWluIiBjbGFzcz0ibWQtcGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+5aSH +5rOoPC9zcGFuPjwvc3Ryb25nPjwvc3Bhbj48c3BhbiBtZC1pbmxpbmU9InBsYWluIiBjbGFzcz0i +bWQtcGxhaW4gbWQtZXhwYW5kIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPu+8mjwv +c3Bhbj48L3A+PC9kaXY+PGRpdiBzdHlsZT0iZm9udC1mYW1pbHk6IOW+rui9r+mbhem7kTsiPjxi +cj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IGlkPSJpbWFpbF9zaWduYXR1cmUi +IGNsYXNzPSJudGVzLXNpZ25hdHVyZSIgc3R5bGU9ImZvbnQtZmFtaWx5OiDlvq7ova/pm4Xpu5E7 +IG1hcmdpbjogMjBweCAwcHg7IiBkYXRhLW50ZXMtc2lnbmF0dXJlPSJ0cnVlIiBzcGVsbGNoZWNr +PSJmYWxzZSI+PGRpdiBzdHlsZT0iZm9udC1mYW1pbHk6JnF1b3Q75b6u6L2v6ZuF6buRJnF1b3Q7 +OyBmb250LXNpemU6IDE0cHg7IGNvbG9yOiMwMDAwMDAiPgogICAgPHN0eWxlPgogICAgICAgIGZv +bnR7CiAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAxLjY7CiAgICAgICAgfQogICAgPC9zdHlsZT4K +PGRpdiBzdHlsZT0iZm9udC1mYW1pbHk6JnF1b3Q75b6u6L2v6ZuF6buRJnF1b3Q7OyBmb250LXNp +emU6IDE0cHg7IGNvbG9yOiMwMDAwMDAiPgogICAgPHN0eWxlPgogICAgICAgIGZvbnR7CiAgICAg +ICAgICAgIGxpbmUtaGVpZ2h0OiAxLjY7CiAgICAgICAgfQogICAgPC9zdHlsZT4KPGRpdiBzdHls +ZT0iZm9udC1mYW1pbHk6JnF1b3Q75b6u6L2v6ZuF6buRJnF1b3Q7OyBmb250LXNpemU6IDE0cHg7 +IGNvbG9yOiMwMDAwMDAiPgogICAgPHN0eWxlPgogICAgICAgIGZvbnR7CiAgICAgICAgICAgIGxp +bmUtaGVpZ2h0OiAxLjY7CiAgICAgICAgfQogICAgPC9zdHlsZT4KPGRpdiBzdHlsZT0iZm9udC1m +YW1pbHk6JnF1b3Q75b6u6L2v6ZuF6buRJnF1b3Q7OyBmb250LXNpemU6IDE0cHg7IGNvbG9yOiMw +MDAwMDAiPgogICAgPHN0eWxlPgogICAgICAgIGZvbnR7CiAgICAgICAgICAgIGxpbmUtaGVpZ2h0 +OiAxLjY7CiAgICAgICAgfQogICAgPC9zdHlsZT4KPGRpdiBzdHlsZT0iZm9udC1mYW1pbHk6JnF1 +b3Q75b6u6L2v6ZuF6buRJnF1b3Q7OyBmb250LXNpemU6IDE0cHg7IGNvbG9yOiMwMDAwMDAiPgog +ICAgPHN0eWxlPgogICAgICAgIGZvbnR7CiAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAxLjY7CiAg +ICAgICAgfQogICAgPC9zdHlsZT4KPHNwYW4gc3R5bGU9ImNvbG9yOiByZ2IoMTkxLCAxOTEsIDE5 +MSk7IGZvbnQtZmFtaWx5OiAnTWljcm9zb2Z0IFlhaGVpJzsgZm9udC1zaXplOiAxM3B4OyBvcnBo +YW5zOiAyOyB3aWRvd3M6IDI7Ij5CZXN0IHJlZ2FyZHMsPC9zcGFuPjxkaXYgc3R5bGU9Im1hcmdp +bjogMHB4OyBwYWRkaW5nOiAwcHg7IGJvcmRlcjogMHB4OyBvdXRsaW5lOiAwcHg7IGZvbnQtZmFt +aWx5OiBUYWhvbWEsIEFyaWFsLCBTVEhlaXRpLCBTaW1TdW47IGZvbnQtdmFyaWFudC1saWdhdHVy +ZXM6IG5vcm1hbDsgb3JwaGFuczogMjsgd2lkb3dzOiAyOyBjbGVhcjogYm90aDsiPjxzcGFuIHN0 +eWxlPSJtYXJnaW46IDBweDsgcGFkZGluZzogMHB4OyBib3JkZXI6IDBweDsgb3V0bGluZTogMHB4 +OyBmb250LWZhbWlseTogJnF1b3Q7TWljcm9zb2Z0IFlhaGVpJnF1b3Q7OyBmb250LXNpemU6IDEz +cHg7IGNvbG9yOiByZ2IoMTkxLCAxOTEsIDE5MSk7Ij7mnajovak8L3NwYW4+PC9kaXY+PGRpdiBz +dHlsZT0ibWFyZ2luOiAwcHg7IHBhZGRpbmc6IDBweDsgYm9yZGVyOiAwcHg7IG91dGxpbmU6IDBw +eDsgZm9udC1mYW1pbHk6IFRhaG9tYSwgQXJpYWwsIFNUSGVpdGksIFNpbVN1bjsgZm9udC12YXJp +YW50LWxpZ2F0dXJlczogbm9ybWFsOyBvcnBoYW5zOiAyOyB3aWRvd3M6IDI7IGNsZWFyOiBib3Ro +OyI+PC9kaXY+PGRpdiBzdHlsZT0ibWFyZ2luOiAwcHg7IHBhZGRpbmc6IDBweDsgYm9yZGVyOiAw +cHg7IG91dGxpbmU6IDBweDsgZm9udC1mYW1pbHk6IFRhaG9tYSwgQXJpYWwsIFNUSGVpdGksIFNp +bVN1bjsgZm9udC12YXJpYW50LWxpZ2F0dXJlczogbm9ybWFsOyBvcnBoYW5zOiAyOyB3aWRvd3M6 +IDI7IGNsZWFyOiBib3RoOyI+PGltZyBzcmM9Imh0dHBzOi8vbWFpbC1vbmxpbmUubm9zZG4uMTI3 +Lm5ldC93enBtbWMvY2U5ZjhiMzZlMWZmYmU1NTMyOWMxOTZjODRmZTUxOTcucG5nIiBzdHlsZT0i +bWF4LXdpZHRoOiB1bnNldDsiPjwvZGl2PjxkaXYgc3R5bGU9Im1hcmdpbjogMHB4OyBwYWRkaW5n +OiAwcHg7IGJvcmRlcjogMHB4OyBvdXRsaW5lOiAwcHg7IGZvbnQtZmFtaWx5OiBUYWhvbWEsIEFy +aWFsLCBTVEhlaXRpLCBTaW1TdW47IGZvbnQtdmFyaWFudC1saWdhdHVyZXM6IG5vcm1hbDsgb3Jw +aGFuczogMjsgd2lkb3dzOiAyOyBjbGVhcjogYm90aDsiPjxzcGFuIHN0eWxlPSJtYXJnaW46IDBw +eDsgcGFkZGluZzogMHB4OyBib3JkZXI6IDBweDsgb3V0bGluZTogMHB4OyBmb250LWZhbWlseTog +JnF1b3Q7TWljcm9zb2Z0IFlhaGVpJnF1b3Q7OyBjb2xvcjogcmdiKDE5MSwgMTkxLCAxOTEpOyI+ +5Zyw5Z2A77ya5Lit5Zu9wrfljZfkuqzkupHlr4bln45M5qCLNS8xMOalvDwvc3Bhbj48L2Rpdj48 +ZGl2IHN0eWxlPSJtYXJnaW46IDBweDsgcGFkZGluZzogMHB4OyBib3JkZXI6IDBweDsgb3V0bGlu +ZTogMHB4OyBmb250LWZhbWlseTogVGFob21hLCBBcmlhbCwgU1RIZWl0aSwgU2ltU3VuOyBmb250 +LXZhcmlhbnQtbGlnYXR1cmVzOiBub3JtYWw7IG9ycGhhbnM6IDI7IHdpZG93czogMjsgY2xlYXI6 +IGJvdGg7Ij48c3BhbiBzdHlsZT0ibWFyZ2luOiAwcHg7IHBhZGRpbmc6IDBweDsgYm9yZGVyOiAw +cHg7IG91dGxpbmU6IDBweDsgZm9udC1mYW1pbHk6ICZxdW90O01pY3Jvc29mdCBZYWhlaSZxdW90 +OzsgY29sb3I6IHJnYigxOTEsIDE5MSwgMTkxKTsiPuaJi+acuu+8mjE4NzI2MTI4NDg5PC9zcGFu +PjwvZGl2PjxkaXYgc3R5bGU9Im1hcmdpbjogMHB4OyBwYWRkaW5nOiAwcHg7IGJvcmRlcjogMHB4 +OyBvdXRsaW5lOiAwcHg7IGZvbnQtZmFtaWx5OiBUYWhvbWEsIEFyaWFsLCBTVEhlaXRpLCBTaW1T +dW47IGZvbnQtdmFyaWFudC1saWdhdHVyZXM6IG5vcm1hbDsgb3JwaGFuczogMjsgd2lkb3dzOiAy +OyBjbGVhcjogYm90aDsiPjxzcGFuIHN0eWxlPSJtYXJnaW46IDBweDsgcGFkZGluZzogMHB4OyBi +b3JkZXI6IDBweDsgb3V0bGluZTogMHB4OyBmb250LWZhbWlseTogJnF1b3Q7TWljcm9zb2Z0IFlh +aGVpJnF1b3Q7OyBjb2xvcjogcmdiKDE5MSwgMTkxLCAxOTEpOyI+6YKu566x77yaeWFuZ3h1YW5A +d2l0c29mdC5jbjwvc3Bhbj48L2Rpdj4KPC9kaXY+CjwvZGl2Pgo8L2Rpdj4KPC9kaXY+CjwvZGl2 +PjwvZGl2PjwvZGl2PjwvZGl2PjwhLS3wn5iALS0+PC9kaXY+PC9kaXY+PC9ib2R5PjwvaHRtbD4= + +--=_mailmaster-6a18e4a4_0_440d_=-- diff --git a/media/inbound/2026-02-06_1701_G5开发周报_2026-02-02_--_2026-02-06---2838d8d2-cc3b-4324-8b8c-e1d0c5dd5a28.eml b/media/inbound/2026-02-06_1701_G5开发周报_2026-02-02_--_2026-02-06---2838d8d2-cc3b-4324-8b8c-e1d0c5dd5a28.eml new file mode 100644 index 0000000..3ae465f --- /dev/null +++ b/media/inbound/2026-02-06_1701_G5开发周报_2026-02-02_--_2026-02-06---2838d8d2-cc3b-4324-8b8c-e1d0c5dd5a28.eml @@ -0,0 +1,345 @@ +Date: Fri, 6 Feb 2026 17:01:12 +0800 +From: =?utf-8?B?5p2o6L2p?= +To: =?utf-8?B?5YiY5by6?= +Cc: =?utf-8?B?5bGI5paw6b6Z?= , =?utf-8?B?5pyx5paM?= + , =?utf-8?B?6ZmI5piO?= , + =?utf-8?B?6KKB5pm0?= +Message-ID: +Subject: =?utf-8?B?RzXlvIDlj5HlkajmiqXjgJAyMDI2LTAyLTAyIC0tICAyMDI2LTAy?= + =?utf-8?B?LTA244CR?= +MIME-Version: 1.0 +Content-Type: multipart/alternative; boundary="=_mailmaster-6a18e4a4_0_491c_=" + +--=_mailmaster-6a18e4a4_0_491c_= +Content-Type: text/plain; charset="utf-8" +Content-Transfer-Encoding: base64 + +5oKo5aW977yB5Lul5LiL5piv5oiR5pys5ZGo55qE5bel5L2c5oC757uT5Y+K5LiL5ZGo6K6h5YiS +77yM6K+35a6h6ZiF44CCCuS4gOOAgeacrOWRqOW3peS9nOaAu+e7kwrph43ngrnlt6XkvZzlrozm +iJDmg4XlhrUK5Lu75YqhMe+8mkc15Li75pWw5o2uNS40LjPniYjmnKzlvIDlj5HovazmtYsK5Lu7 +5YqhMu+8mkc15bqT5a2YNS40LjPniYjmnKzlvIDlj5HovazmtYsK5bi46KeE5bel5L2cCuaXpeW4 +uOS6i+WKoTHvvJoyMDI2LTAyLTAyCjEuIOi/m+mUgOWtmOmcgOaxguivhOWuoSAKMi4g5Li75pWw +5o2u6ZyA5rGC5byA5Y+R6L2s5rWLCuaXpeW4uOS6i+WKoTLvvJoyMDI2LTAyLTAzCjEuIOS4u+aV +sOaNruW3peW6j+aWsOWinuW5v+aSremAmuefpSAKMi4g5bqT5a2Y5qC55o2u5qOA6aqM57uT5p6c +6ZmQ5Yi25Ye65bqT5byA5YWzIAozLiDlh7rlupPmoKHpqozvvIhhcHAgd2Vi77yJCuaXpeW4uOS6 +i+WKoTPvvJoyMDI2LTAyLTA0CjEuIOeUn+S6p+WFpeW6k+S/neWtmOaJueasoeWxnuaApyAKMi4g +5YWl5bqT5Y2V5p+l6K+i5o6l5Y+j5aKe5Yqg5om55qyh5bGe5oCnCuaXpeW4uOS6i+WKoTTvvJoy +MDI2LTAyLTA1CjEuIOS4u+aVsOaNrua1i+ivleWujOaIkCAKMi4g5bqT5a2Y5rWL6K+V6Zeu6aKY +5L+u5aSNCuaXpeW4uOS6i+WKoTXvvJoyMDI2LTAyLTA2CjEuIOW6k+WtmOa1i+ivlemXrumimOS/ +ruWkjQrkuIDjgIHkuIvlkajph43ngrnku7vliqEKNS40LjPniYjmnKzlj5HluIMK5aSH5rOo77ya +CkJlc3QgcmVnYXJkcyzmnajovakK5Zyw5Z2A77ya5Lit5Zu9wrfljZfkuqzkupHlr4bln45M5qCL +NS8xMOalvArmiYvmnLrvvJoxODcyNjEyODQ4OQrpgq7nrrHvvJp5YW5neHVhbkB3aXRzb2Z0LmNu + +--=_mailmaster-6a18e4a4_0_491c_= +Content-Type: text/html; charset="utf-8" +Content-Transfer-Encoding: base64 + +PGh0bWw+PGhlYWQ+PG1ldGEgaHR0cC1lcXVpdj0nQ29udGVudC1UeXBlJyBjb250ZW50PSd0ZXh0 +L2h0bWw7IGNoYXJzZXQ9VVRGLTgnPjwvaGVhZD48Ym9keSBzdHlsZT1saW5lLWhlaWdodDogMS41 +O2ZvbnQtZmFtaWx5OiAi5b6u6L2v6ZuF6buRIj48ZGl2ICBzdHlsZT0iZm9udC1mYW1pbHk6IOW+ +rui9r+mbhem7kTsiPjxkaXYgc3R5bGU9IiI+PGRpdiBzdHlsZT0iIj48ZGl2IHN0eWxlPSIiPjxk +aXYgc3R5bGU9IiIgMS41O2ZvbnQtZmFtaWx5Oj0iIiAi5b6u6L2v6ZuF6buRIj0iIj48ZGl2IHN0 +eWxlPSIiPjxkaXYgc3R5bGU9IiI+PGRpdiBzdHlsZT0iIj48ZGl2IHN0eWxlPSIiPjxwIGNpZD0i +bjAiIG1kdHlwZT0icGFyYWdyYXBoIiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLXAgbWQtZm9jdXMi +IHN0eWxlPSJmb250LWZhbWlseTogJnF1b3Q7T3BlbiBTYW5zJnF1b3Q7LCAmcXVvdDtDbGVhciBT +YW5zJnF1b3Q7LCAmcXVvdDtIZWx2ZXRpY2EgTmV1ZSZxdW90OywgSGVsdmV0aWNhLCBBcmlhbCwg +c2Fucy1zZXJpZjsgYm94LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7 +IG9ycGhhbnM6IDQ7IG1hcmdpbjogMC44ZW0gMHB4OyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBv +c2l0aW9uOiByZWxhdGl2ZTsgY29sb3I6IHJnYig1MSwgNTEsIDUxKTsgZm9udC1zaXplOiAxNnB4 +OyI+PHNwYW4gbWQtaW5saW5lPSJwbGFpbiIgY2xhc3M9Im1kLXBsYWluIG1kLWV4cGFuZCIgc3R5 +bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij7mgqjlpb3vvIHku6XkuIvmmK/miJHmnKzlkajn +moTlt6XkvZzmgLvnu5Plj4rkuIvlkajorqHliJLvvIzor7flrqHpmIXjgII8L3NwYW4+PC9wPjxk +aXYgdGFiaW5kZXg9Ii0xIiBjaWQ9Im4yIiBtZHR5cGU9ImhyIiBjbGFzcz0ibWQtaHIgbWQtZW5k +LWJsb2NrIiBzdHlsZT0iZm9udC1mYW1pbHk6ICZxdW90O09wZW4gU2FucyZxdW90OywgJnF1b3Q7 +Q2xlYXIgU2FucyZxdW90OywgJnF1b3Q7SGVsdmV0aWNhIE5ldWUmcXVvdDssIEhlbHZldGljYSwg +QXJpYWwsIHNhbnMtc2VyaWY7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7IGNvbG9yOiByZ2IoNTEs +IDUxLCA1MSk7IGZvbnQtc2l6ZTogMTZweDsiPjxociBzdHlsZT0iYm94LXNpemluZzogY29udGVu +dC1ib3g7IGhlaWdodDogMnB4OyBtYXJnaW46IDE2cHggMHB4OyBib3JkZXI6IDBweCBub25lOyBw +YWRkaW5nOiAwcHg7IGJhY2tncm91bmQtY29sb3I6IHJnYigyMzEsIDIzMSwgMjMxKTsiPjwvZGl2 +PjxoMyBjaWQ9Im4zIiBtZHR5cGU9ImhlYWRpbmciIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtaGVh +ZGluZyIgc3R5bGU9ImZvbnQtZmFtaWx5OiAmcXVvdDtPcGVuIFNhbnMmcXVvdDssICZxdW90O0Ns +ZWFyIFNhbnMmcXVvdDssICZxdW90O0hlbHZldGljYSBOZXVlJnF1b3Q7LCBIZWx2ZXRpY2EsIEFy +aWFsLCBzYW5zLXNlcmlmOyBib3gtc2l6aW5nOiBib3JkZXItYm94OyBicmVhay1hZnRlcjogYXZv +aWQtcGFnZTsgYnJlYWstaW5zaWRlOiBhdm9pZDsgb3JwaGFuczogNDsgZm9udC1zaXplOiAxLjVl +bTsgbWFyZ2luLXRvcDogMXJlbTsgbWFyZ2luLWJvdHRvbTogMXJlbTsgcG9zaXRpb246IHJlbGF0 +aXZlOyBsaW5lLWhlaWdodDogMS40MzsgY3Vyc29yOiB0ZXh0OyB3aGl0ZS1zcGFjZTogcHJlLXdy +YXA7IGNvbG9yOiByZ2IoNTEsIDUxLCA1MSk7Ij48c3BhbiBtZC1pbmxpbmU9InN0cm9uZyIgY2xh +c3M9Im1kLXBhaXItcyAiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+PHN0cm9uZyBz +dHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPjxzcGFuIG1kLWlubGluZT0icGxhaW4iIGNs +YXNzPSJtZC1wbGFpbiIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij7kuIDjgIHmnKzl +kajlt6XkvZzmgLvnu5M8L3NwYW4+PC9zdHJvbmc+PC9zcGFuPjwvaDM+PG9sIGNsYXNzPSJvbC1s +aXN0IiBzdGFydD0iIiBjaWQ9Im40IiBtZHR5cGU9Imxpc3QiIHN0eWxlPSJmb250LWZhbWlseTog +JnF1b3Q7T3BlbiBTYW5zJnF1b3Q7LCAmcXVvdDtDbGVhciBTYW5zJnF1b3Q7LCAmcXVvdDtIZWx2 +ZXRpY2EgTmV1ZSZxdW90OywgSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjsgYm94LXNpemlu +ZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBhZGRpbmctbGVmdDogMzBweDsgcG9zaXRpb246 +IHJlbGF0aXZlOyBjb2xvcjogcmdiKDUxLCA1MSwgNTEpOyBmb250LXNpemU6IDE2cHg7Ij48bGkg +Y2xhc3M9Im1kLWxpc3QtaXRlbSIgY2lkPSJuNSIgbWR0eXBlPSJsaXN0X2l0ZW0iIHN0eWxlPSJi +b3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcG9zaXRpb246IHJlbGF0aXZlOyI+ +PHAgY2lkPSJuNiIgbWR0eXBlPSJwYXJhZ3JhcGgiIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCIg +c3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhlcml0OyBvcnBo +YW5zOiA0OyBtYXJnaW46IDBweCAwcHggMC41cmVtOyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBv +c2l0aW9uOiByZWxhdGl2ZTsiPjxzcGFuIG1kLWlubGluZT0ic3Ryb25nIiBjbGFzcz0ibWQtcGFp +ci1zICIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij48c3Ryb25nIHN0eWxlPSJib3gt +c2l6aW5nOiBib3JkZXItYm94OyI+PHNwYW4gbWQtaW5saW5lPSJwbGFpbiIgY2xhc3M9Im1kLXBs +YWluIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPumHjeeCueW3peS9nOWujOaIkOaD +heWGtTwvc3Bhbj48L3N0cm9uZz48L3NwYW4+PC9wPjwvbGk+PHVsIGNsYXNzPSJ1bC1saXN0IiBj +aWQ9Im43IiBtZHR5cGU9Imxpc3QiIGRhdGEtbWFyaz0iLSIgc3R5bGU9ImJveC1zaXppbmc6IGJv +cmRlci1ib3g7IG1hcmdpbjogMHB4OyBwYWRkaW5nLWxlZnQ6IDMwcHg7IHBvc2l0aW9uOiByZWxh +dGl2ZTsiPjxsaSBjbGFzcz0ibWQtbGlzdC1pdGVtIiBjaWQ9Im44IiBtZHR5cGU9Imxpc3RfaXRl +bSIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBwb3NpdGlvbjog +cmVsYXRpdmU7Ij48cCBjaWQ9Im45IiBtZHR5cGU9InBhcmFncmFwaCIgY2xhc3M9Im1kLWVuZC1i +bG9jayBtZC1wIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGlu +aGVyaXQ7IG9ycGhhbnM6IDQ7IG1hcmdpbjogMHB4IDBweCAwLjVyZW07IHdoaXRlLXNwYWNlOiBw +cmUtd3JhcDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHNwYW4gbWQtaW5saW5lPSJwbGFpbiIgY2xh +c3M9Im1kLXBsYWluIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPuS7u+WKoTHvvJpH +NeS4u+aVsOaNrjUuNC4z54mI5pys5byA5Y+R6L2s5rWLPC9zcGFuPjwvcD48L2xpPjxsaSBjbGFz +cz0ibWQtbGlzdC1pdGVtIiBjaWQ9Im4xMCIgbWR0eXBlPSJsaXN0X2l0ZW0iIHN0eWxlPSJib3gt +c2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHAg +Y2lkPSJuMTEiIG1kdHlwZT0icGFyYWdyYXBoIiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLXAiIHN0 +eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5oZXJpdDsgb3JwaGFu +czogNDsgbWFyZ2luOiAwcHggMHB4IDAuNXJlbTsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyBwb3Np +dGlvbjogcmVsYXRpdmU7Ij7ku7vliqEy77yaRzXlupPlrZg1LjQuM+eJiOacrOW8gOWPkei9rOa1 +izwvcD48L2xpPjwvdWw+PGxpIGNsYXNzPSJtZC1saXN0LWl0ZW0iIGNpZD0ibjEyIiBtZHR5cGU9 +Imxpc3RfaXRlbSIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBw +b3NpdGlvbjogcmVsYXRpdmU7Ij48cCBjaWQ9Im4xMyIgbWR0eXBlPSJwYXJhZ3JhcGgiIGNsYXNz +PSJtZC1lbmQtYmxvY2sgbWQtcCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGxpbmUt +aGVpZ2h0OiBpbmhlcml0OyBvcnBoYW5zOiA0OyBtYXJnaW46IDBweCAwcHggMC41cmVtOyB3aGl0 +ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxzcGFuIG1kLWlubGluZT0i +c3Ryb25nIiBjbGFzcz0ibWQtcGFpci1zICIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7 +Ij48c3Ryb25nIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+PHNwYW4gbWQtaW5saW5l +PSJwbGFpbiIgY2xhc3M9Im1kLXBsYWluIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsi +PuW4uOinhOW3peS9nDwvc3Bhbj48L3N0cm9uZz48L3NwYW4+PC9wPjwvbGk+PC9vbD48b2wgY2xh +c3M9Im9sLWxpc3QiIHN0YXJ0PSIiIGNpZD0ibjQiIG1kdHlwZT0ibGlzdCIgc3R5bGU9ImZvbnQt +ZmFtaWx5OiAmcXVvdDtPcGVuIFNhbnMmcXVvdDssICZxdW90O0NsZWFyIFNhbnMmcXVvdDssICZx +dW90O0hlbHZldGljYSBOZXVlJnF1b3Q7LCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmOyBi +b3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcGFkZGluZy1sZWZ0OiAzMHB4OyBw +b3NpdGlvbjogcmVsYXRpdmU7IGNvbG9yOiByZ2IoNTEsIDUxLCA1MSk7IGZvbnQtc2l6ZTogMTZw +eDsiPjx1bCBjbGFzcz0idWwtbGlzdCIgY2lkPSJuMTQiIG1kdHlwZT0ibGlzdCIgZGF0YS1tYXJr +PSItIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBhZGRpbmct +bGVmdDogMzBweDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PGxpIGNsYXNzPSJtZC1saXN0LWl0ZW0i +IGNpZD0ibjE1IiBtZHR5cGU9Imxpc3RfaXRlbSIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1i +b3g7IG1hcmdpbjogMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48cCBjaWQ9Im4xNiIgbWR0eXBl +PSJwYXJhZ3JhcGgiIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCIgc3R5bGU9ImJveC1zaXppbmc6 +IGJvcmRlci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhlcml0OyBvcnBoYW5zOiA0OyBtYXJnaW46IDBw +eCAwcHggMC41cmVtOyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsi +PjxzcGFuIG1kLWlubGluZT0icGxhaW4iIGNsYXNzPSJtZC1wbGFpbiIgc3R5bGU9ImJveC1zaXpp +bmc6IGJvcmRlci1ib3g7Ij7ml6XluLjkuovliqEx77yaMjAyNi0wMi0wMjwvc3Bhbj48L3A+PC9s +aT48dWwgc3R5bGU9Imxpc3Qtc3R5bGUtdHlwZTogc3F1YXJlOyI+PGxpIGNsYXNzPSJtZC1saXN0 +LWl0ZW0iIGNpZD0ibjE1IiBtZHR5cGU9Imxpc3RfaXRlbSIgc3R5bGU9ImJveC1zaXppbmc6IGJv +cmRlci1ib3g7IG1hcmdpbjogMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48cCBjaWQ9Im4xNiIg +bWR0eXBlPSJwYXJhZ3JhcGgiIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCIgc3R5bGU9ImJveC1z +aXppbmc6IGJvcmRlci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhlcml0OyBvcnBoYW5zOiA0OyBtYXJn +aW46IDBweCAwcHggMC41cmVtOyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0aW9uOiByZWxh +dGl2ZTsiPjEuIOi/m+mUgOWtmOmcgOaxguivhOWuoQ08L3A+PC9saT48bGkgY2xhc3M9Im1kLWxp +c3QtaXRlbSIgY2lkPSJuMTUiIG1kdHlwZT0ibGlzdF9pdGVtIiBzdHlsZT0iYm94LXNpemluZzog +Ym9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxwIGNpZD0ibjE2 +IiBtZHR5cGU9InBhcmFncmFwaCIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1wIiBzdHlsZT0iYm94 +LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IG9ycGhhbnM6IDQ7IG1h +cmdpbjogMHB4IDBweCAwLjVyZW07IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJl +bGF0aXZlOyI+Mi4g5Li75pWw5o2u6ZyA5rGC5byA5Y+R6L2s5rWLPC9wPjwvbGk+PC91bD48L3Vs +Pjwvb2w+PG9sIGNsYXNzPSJvbC1saXN0IiBzdGFydD0iIiBjaWQ9Im40IiBtZHR5cGU9Imxpc3Qi +IHN0eWxlPSJmb250LWZhbWlseTog5b6u6L2v6ZuF6buROyBib3gtc2l6aW5nOiBib3JkZXItYm94 +OyBtYXJnaW46IDBweDsgcGFkZGluZy1sZWZ0OiAzMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48 +dWwgY2xhc3M9InVsLWxpc3QiIGNpZD0ibjE0IiBtZHR5cGU9Imxpc3QiIGRhdGEtbWFyaz0iLSIg +c3R5bGU9ImZvbnQtZmFtaWx5OiDlvq7ova/pm4Xpu5E7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7 +IG1hcmdpbjogMHB4OyBwYWRkaW5nLWxlZnQ6IDMwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxs +aSBjbGFzcz0ibWQtbGlzdC1pdGVtIiBjaWQ9Im4xNSIgbWR0eXBlPSJsaXN0X2l0ZW0iIHN0eWxl +PSJjb2xvcjogcmdiKDUxLCA1MSwgNTEpOyBmb250LWZhbWlseTogJnF1b3Q7T3BlbiBTYW5zJnF1 +b3Q7LCAmcXVvdDtDbGVhciBTYW5zJnF1b3Q7LCAmcXVvdDtIZWx2ZXRpY2EgTmV1ZSZxdW90Oywg +SGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxNnB4OyBib3gtc2l6aW5n +OiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHAgY2lkPSJu +MTYiIG1kdHlwZT0icGFyYWdyYXBoIiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLXAiIHN0eWxlPSJi +b3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5oZXJpdDsgb3JwaGFuczogNDsg +bWFyZ2luOiAwcHggMHB4IDAuNXJlbTsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyBwb3NpdGlvbjog +cmVsYXRpdmU7Ij48c3BhbiBtZC1pbmxpbmU9InBsYWluIiBjbGFzcz0ibWQtcGxhaW4iIHN0eWxl +PSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+5pel5bi45LqL5YqhMu+8mjIwMjYtMDItMDM8L3Nw +YW4+PC9wPjwvbGk+PHVsIHN0eWxlPSJsaXN0LXN0eWxlLXR5cGU6IHNxdWFyZTsiPjxsaSBjbGFz +cz0ibWQtbGlzdC1pdGVtIiBjaWQ9Im4xNSIgbWR0eXBlPSJsaXN0X2l0ZW0iIHN0eWxlPSJjb2xv +cjogcmdiKDUxLCA1MSwgNTEpOyBmb250LWZhbWlseTogJnF1b3Q7T3BlbiBTYW5zJnF1b3Q7LCAm +cXVvdDtDbGVhciBTYW5zJnF1b3Q7LCAmcXVvdDtIZWx2ZXRpY2EgTmV1ZSZxdW90OywgSGVsdmV0 +aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxNnB4OyBib3gtc2l6aW5nOiBib3Jk +ZXItYm94OyBtYXJnaW46IDBweDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHAgY2lkPSJuMTYiIG1k +dHlwZT0icGFyYWdyYXBoIiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLXAiIHN0eWxlPSJib3gtc2l6 +aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5oZXJpdDsgb3JwaGFuczogNDsgbWFyZ2lu +OiAwcHggMHB4IDAuNXJlbTsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyBwb3NpdGlvbjogcmVsYXRp +dmU7Ij4xLiDkuLvmlbDmja7lt6Xluo/mlrDlop7lub/mkq3pgJrnn6UNPC9wPjwvbGk+PGxpIGNs +YXNzPSJtZC1saXN0LWl0ZW0iIGNpZD0ibjE1IiBtZHR5cGU9Imxpc3RfaXRlbSIgc3R5bGU9ImNv +bG9yOiByZ2IoNTEsIDUxLCA1MSk7IGZvbnQtZmFtaWx5OiAmcXVvdDtPcGVuIFNhbnMmcXVvdDss +ICZxdW90O0NsZWFyIFNhbnMmcXVvdDssICZxdW90O0hlbHZldGljYSBOZXVlJnF1b3Q7LCBIZWx2 +ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDE2cHg7IGJveC1zaXppbmc6IGJv +cmRlci1ib3g7IG1hcmdpbjogMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48cCBjaWQ9Im4xNiIg +bWR0eXBlPSJwYXJhZ3JhcGgiIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCIgc3R5bGU9ImJveC1z +aXppbmc6IGJvcmRlci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhlcml0OyBvcnBoYW5zOiA0OyBtYXJn +aW46IDBweCAwcHggMC41cmVtOyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0aW9uOiByZWxh +dGl2ZTsiPjIuIOW6k+WtmOagueaNruajgOmqjOe7k+aenOmZkOWItuWHuuW6k+W8gOWFsw08L3A+ +PC9saT48bGkgY2xhc3M9Im1kLWxpc3QtaXRlbSIgY2lkPSJuMTUiIG1kdHlwZT0ibGlzdF9pdGVt +IiBzdHlsZT0iY29sb3I6IHJnYig1MSwgNTEsIDUxKTsgZm9udC1mYW1pbHk6ICZxdW90O09wZW4g +U2FucyZxdW90OywgJnF1b3Q7Q2xlYXIgU2FucyZxdW90OywgJnF1b3Q7SGVsdmV0aWNhIE5ldWUm +cXVvdDssIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTZweDsgYm94 +LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxw +IGNpZD0ibjE2IiBtZHR5cGU9InBhcmFncmFwaCIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1wIiBz +dHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IG9ycGhh +bnM6IDQ7IG1hcmdpbjogMHB4IDBweCAwLjVyZW07IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9z +aXRpb246IHJlbGF0aXZlOyI+My4g5Ye65bqT5qCh6aqM77yIYXBwIHdlYu+8iTwvcD48L2xpPjwv +dWw+PGxpIGNsYXNzPSJtZC1saXN0LWl0ZW0iIGNpZD0ibjE3IiBtZHR5cGU9Imxpc3RfaXRlbSIg +c3R5bGU9ImNvbG9yOiByZ2IoNTEsIDUxLCA1MSk7IGZvbnQtZmFtaWx5OiAmcXVvdDtPcGVuIFNh +bnMmcXVvdDssICZxdW90O0NsZWFyIFNhbnMmcXVvdDssICZxdW90O0hlbHZldGljYSBOZXVlJnF1 +b3Q7LCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDE2cHg7IGJveC1z +aXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48cCBj +aWQ9Im4xOCIgbWR0eXBlPSJwYXJhZ3JhcGgiIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCIgc3R5 +bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhlcml0OyBvcnBoYW5z +OiA0OyBtYXJnaW46IDBweCAwcHggMC41cmVtOyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0 +aW9uOiByZWxhdGl2ZTsiPjxzcGFuIG1kLWlubGluZT0icGxhaW4iIGNsYXNzPSJtZC1wbGFpbiIg +c3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij7ml6XluLjkuovliqEz77yaMjAyNi0wMi0w +NDwvc3Bhbj48L3A+PC9saT48dWwgc3R5bGU9Imxpc3Qtc3R5bGUtdHlwZTogc3F1YXJlOyI+PGxp +IGNsYXNzPSJtZC1saXN0LWl0ZW0iIGNpZD0ibjE3IiBtZHR5cGU9Imxpc3RfaXRlbSIgc3R5bGU9 +ImNvbG9yOiByZ2IoNTEsIDUxLCA1MSk7IGZvbnQtZmFtaWx5OiAmcXVvdDtPcGVuIFNhbnMmcXVv +dDssICZxdW90O0NsZWFyIFNhbnMmcXVvdDssICZxdW90O0hlbHZldGljYSBOZXVlJnF1b3Q7LCBI +ZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDE2cHg7IGJveC1zaXppbmc6 +IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48cCBjaWQ9Im4x +OCIgbWR0eXBlPSJwYXJhZ3JhcGgiIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCIgc3R5bGU9ImJv +eC1zaXppbmc6IGJvcmRlci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhlcml0OyBvcnBoYW5zOiA0OyBt +YXJnaW46IDBweCAwcHggMC41cmVtOyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0aW9uOiBy +ZWxhdGl2ZTsiPjEuIOeUn+S6p+WFpeW6k+S/neWtmOaJueasoeWxnuaApw08L3A+PC9saT48bGkg +Y2xhc3M9Im1kLWxpc3QtaXRlbSIgY2lkPSJuMTciIG1kdHlwZT0ibGlzdF9pdGVtIiBzdHlsZT0i +Y29sb3I6IHJnYig1MSwgNTEsIDUxKTsgZm9udC1mYW1pbHk6ICZxdW90O09wZW4gU2FucyZxdW90 +OywgJnF1b3Q7Q2xlYXIgU2FucyZxdW90OywgJnF1b3Q7SGVsdmV0aWNhIE5ldWUmcXVvdDssIEhl +bHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTZweDsgYm94LXNpemluZzog +Ym9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxwIGNpZD0ibjE4 +IiBtZHR5cGU9InBhcmFncmFwaCIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1wIiBzdHlsZT0iYm94 +LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IG9ycGhhbnM6IDQ7IG1h +cmdpbjogMHB4IDBweCAwLjVyZW07IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJl +bGF0aXZlOyI+Mi4g5YWl5bqT5Y2V5p+l6K+i5o6l5Y+j5aKe5Yqg5om55qyh5bGe5oCnPC9wPjwv +bGk+PC91bD48L3VsPjwvb2w+PG9sIGNsYXNzPSJvbC1saXN0IiBzdGFydD0iIiBjaWQ9Im40IiBt +ZHR5cGU9Imxpc3QiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsg +cGFkZGluZy1sZWZ0OiAzMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48dWwgY2xhc3M9InVsLWxp +c3QiIGNpZD0ibjE0IiBtZHR5cGU9Imxpc3QiIGRhdGEtbWFyaz0iLSIgc3R5bGU9ImJveC1zaXpp +bmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBwYWRkaW5nLWxlZnQ6IDMwcHg7IHBvc2l0aW9u +OiByZWxhdGl2ZTsiPjxsaSBjbGFzcz0ibWQtbGlzdC1pdGVtIiBjaWQ9Im4xNyIgbWR0eXBlPSJs +aXN0X2l0ZW0iIHN0eWxlPSJmb250LWZhbWlseTogJnF1b3Q7T3BlbiBTYW5zJnF1b3Q7LCAmcXVv +dDtDbGVhciBTYW5zJnF1b3Q7LCAmcXVvdDtIZWx2ZXRpY2EgTmV1ZSZxdW90OywgSGVsdmV0aWNh +LCBBcmlhbCwgc2Fucy1zZXJpZjsgY29sb3I6IHJnYig1MSwgNTEsIDUxKTsgZm9udC1zaXplOiAx +NnB4OyBib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcG9zaXRpb246IHJlbGF0 +aXZlOyI+PHAgY2lkPSJuMTgiIG1kdHlwZT0icGFyYWdyYXBoIiBjbGFzcz0ibWQtZW5kLWJsb2Nr +IG1kLXAiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5oZXJp +dDsgb3JwaGFuczogNDsgbWFyZ2luOiAwcHggMHB4IDAuNXJlbTsgd2hpdGUtc3BhY2U6IHByZS13 +cmFwOyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48c3BhbiBtZC1pbmxpbmU9InBsYWluIiBjbGFzcz0i +bWQtcGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+5pel5bi45LqL5YqhNO+8 +mjIwMjYtMDItMDU8L3NwYW4+PC9wPjwvbGk+PHVsIHN0eWxlPSJmb250LWZhbWlseTog5b6u6L2v +6ZuF6buROyBsaXN0LXN0eWxlLXR5cGU6IHNxdWFyZTsiPjxsaSBjbGFzcz0ibWQtbGlzdC1pdGVt +IiBjaWQ9Im4xNyIgbWR0eXBlPSJsaXN0X2l0ZW0iIHN0eWxlPSJmb250LWZhbWlseTogJnF1b3Q7 +T3BlbiBTYW5zJnF1b3Q7LCAmcXVvdDtDbGVhciBTYW5zJnF1b3Q7LCAmcXVvdDtIZWx2ZXRpY2Eg +TmV1ZSZxdW90OywgSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjsgY29sb3I6IHJnYig1MSwg +NTEsIDUxKTsgZm9udC1zaXplOiAxNnB4OyBib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46 +IDBweDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHAgY2lkPSJuMTgiIG1kdHlwZT0icGFyYWdyYXBo +IiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLXAiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94 +OyBsaW5lLWhlaWdodDogaW5oZXJpdDsgb3JwaGFuczogNDsgbWFyZ2luOiAwcHggMHB4IDAuNXJl +bTsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyBwb3NpdGlvbjogcmVsYXRpdmU7Ij4xLiDkuLvmlbDm +ja7mtYvor5XlrozmiJANPC9wPjwvbGk+PGxpIGNsYXNzPSJtZC1saXN0LWl0ZW0iIGNpZD0ibjE3 +IiBtZHR5cGU9Imxpc3RfaXRlbSIgc3R5bGU9ImZvbnQtZmFtaWx5OiAmcXVvdDtPcGVuIFNhbnMm +cXVvdDssICZxdW90O0NsZWFyIFNhbnMmcXVvdDssICZxdW90O0hlbHZldGljYSBOZXVlJnF1b3Q7 +LCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmOyBjb2xvcjogcmdiKDUxLCA1MSwgNTEpOyBm +b250LXNpemU6IDE2cHg7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBwb3Np +dGlvbjogcmVsYXRpdmU7Ij48cCBjaWQ9Im4xOCIgbWR0eXBlPSJwYXJhZ3JhcGgiIGNsYXNzPSJt +ZC1lbmQtYmxvY2sgbWQtcCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGxpbmUtaGVp +Z2h0OiBpbmhlcml0OyBvcnBoYW5zOiA0OyBtYXJnaW46IDBweCAwcHggMC41cmVtOyB3aGl0ZS1z +cGFjZTogcHJlLXdyYXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjIuIOW6k+WtmOa1i+ivlemXrumi +mOS/ruWkjTwvcD48L2xpPjwvdWw+PGxpIHN0eWxlPSJmb250LWZhbWlseTog5b6u6L2v6ZuF6buR +OyI+PGZvbnQgY29sb3I9IiMzMzMzMzMiIGZhY2U9Ik9wZW4gU2FucywgQ2xlYXIgU2FucywgSGVs +dmV0aWNhIE5ldWUsIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWYiPjxzcGFuIHN0eWxlPSJm +b250LXNpemU6IDE2cHg7IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsiPuaXpeW4uOS6i+WKoTXvvJoy +MDI2LTAyLTA2PC9zcGFuPjwvZm9udD48L2xpPjx1bCBzdHlsZT0ibGlzdC1zdHlsZS10eXBlOiBz +cXVhcmU7Ij48bGkgc3R5bGU9IiI+PGZvbnQgY29sb3I9IiMzMzMzMzMiIGZhY2U9Ik9wZW4gU2Fu +cywgQ2xlYXIgU2FucywgSGVsdmV0aWNhIE5ldWUsIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2Vy +aWYiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDE2cHg7IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsi +PjEuIOW6k+WtmOa1i+ivlemXrumimOS/ruWkjTwvc3Bhbj48L2ZvbnQ+PC9saT48L3VsPjwvdWw+ +PC9vbD48aDMgY2lkPSJuMyIgbWR0eXBlPSJoZWFkaW5nIiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1k +LWhlYWRpbmciIHN0eWxlPSJmb250LWZhbWlseTogJnF1b3Q7T3BlbiBTYW5zJnF1b3Q7LCAmcXVv +dDtDbGVhciBTYW5zJnF1b3Q7LCAmcXVvdDtIZWx2ZXRpY2EgTmV1ZSZxdW90OywgSGVsdmV0aWNh +LCBBcmlhbCwgc2Fucy1zZXJpZjsgYm94LXNpemluZzogYm9yZGVyLWJveDsgYnJlYWstYWZ0ZXI6 +IGF2b2lkLXBhZ2U7IGJyZWFrLWluc2lkZTogYXZvaWQ7IG9ycGhhbnM6IDQ7IGZvbnQtc2l6ZTog +MS41ZW07IG1hcmdpbi10b3A6IDFyZW07IG1hcmdpbi1ib3R0b206IDFyZW07IHBvc2l0aW9uOiBy +ZWxhdGl2ZTsgbGluZS1oZWlnaHQ6IDEuNDM7IGN1cnNvcjogdGV4dDsgd2hpdGUtc3BhY2U6IHBy +ZS13cmFwOyBjb2xvcjogcmdiKDUxLCA1MSwgNTEpOyI+PHNwYW4gbWQtaW5saW5lPSJzdHJvbmci +IGNsYXNzPSJtZC1wYWlyLXMgIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPjxzdHJv +bmcgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij48c3BhbiBtZC1pbmxpbmU9InBsYWlu +IiBjbGFzcz0ibWQtcGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+5LiA44CB +5LiL5ZGo6YeN54K55Lu75YqhPC9zcGFuPjwvc3Ryb25nPjwvc3Bhbj48L2gzPjxkaXYgc3R5bGU9 +ImZvbnQtZmFtaWx5OiDlvq7ova/pm4Xpu5E7Ij41LjQuM+eJiOacrOWPkeW4gzwvZGl2PjxkaXYg +dGFiaW5kZXg9Ii0xIiBjaWQ9Im4zOSIgbWR0eXBlPSJociIgY2xhc3M9Im1kLWhyIG1kLWVuZC1i +bG9jayIgc3R5bGU9ImZvbnQtZmFtaWx5OiAmcXVvdDtPcGVuIFNhbnMmcXVvdDssICZxdW90O0Ns +ZWFyIFNhbnMmcXVvdDssICZxdW90O0hlbHZldGljYSBOZXVlJnF1b3Q7LCBIZWx2ZXRpY2EsIEFy +aWFsLCBzYW5zLXNlcmlmOyBib3gtc2l6aW5nOiBib3JkZXItYm94OyBjb2xvcjogcmdiKDUxLCA1 +MSwgNTEpOyBmb250LXNpemU6IDE2cHg7Ij48aHIgc3R5bGU9ImJveC1zaXppbmc6IGNvbnRlbnQt +Ym94OyBoZWlnaHQ6IDJweDsgbWFyZ2luOiAxNnB4IDBweDsgYm9yZGVyOiAwcHggbm9uZTsgcGFk +ZGluZzogMHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjMxLCAyMzEsIDIzMSk7Ij48L2Rpdj48 +cCBjaWQ9Im40MCIgbWR0eXBlPSJwYXJhZ3JhcGgiIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCIg +c3R5bGU9ImZvbnQtZmFtaWx5OiAmcXVvdDtPcGVuIFNhbnMmcXVvdDssICZxdW90O0NsZWFyIFNh +bnMmcXVvdDssICZxdW90O0hlbHZldGljYSBOZXVlJnF1b3Q7LCBIZWx2ZXRpY2EsIEFyaWFsLCBz +YW5zLXNlcmlmOyBib3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5oZXJpdDsg +b3JwaGFuczogNDsgbWFyZ2luOiAwLjhlbSAwcHg7IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9z +aXRpb246IHJlbGF0aXZlOyBjb2xvcjogcmdiKDUxLCA1MSwgNTEpOyBmb250LXNpemU6IDE2cHg7 +Ij48c3BhbiBtZC1pbmxpbmU9InN0cm9uZyIgY2xhc3M9Im1kLXBhaXItcyAiIHN0eWxlPSJib3gt +c2l6aW5nOiBib3JkZXItYm94OyI+PHN0cm9uZyBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJv +eDsiPjxzcGFuIG1kLWlubGluZT0icGxhaW4iIGNsYXNzPSJtZC1wbGFpbiIgc3R5bGU9ImJveC1z +aXppbmc6IGJvcmRlci1ib3g7Ij7lpIfms6g8L3NwYW4+PC9zdHJvbmc+PC9zcGFuPjxzcGFuIG1k +LWlubGluZT0icGxhaW4iIGNsYXNzPSJtZC1wbGFpbiBtZC1leHBhbmQiIHN0eWxlPSJib3gtc2l6 +aW5nOiBib3JkZXItYm94OyI+77yaPC9zcGFuPjwvcD48L2Rpdj48ZGl2IHN0eWxlPSJmb250LWZh +bWlseTog5b6u6L2v6ZuF6buROyI+PGJyPjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2Pjxk +aXYgaWQ9ImltYWlsX3NpZ25hdHVyZSIgY2xhc3M9Im50ZXMtc2lnbmF0dXJlIiBzdHlsZT0iZm9u +dC1mYW1pbHk6IOW+rui9r+mbhem7kTsgbWFyZ2luOiAyMHB4IDBweDsiIGRhdGEtbnRlcy1zaWdu +YXR1cmU9InRydWUiIHNwZWxsY2hlY2s9ImZhbHNlIj48ZGl2IHN0eWxlPSJmb250LWZhbWlseTom +cXVvdDvlvq7ova/pm4Xpu5EmcXVvdDs7IGZvbnQtc2l6ZTogMTRweDsgY29sb3I6IzAwMDAwMCI+ +CiAgICA8c3R5bGU+CiAgICAgICAgZm9udHsKICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDEuNjsK +ICAgICAgICB9CiAgICA8L3N0eWxlPgo8ZGl2IHN0eWxlPSJmb250LWZhbWlseTomcXVvdDvlvq7o +va/pm4Xpu5EmcXVvdDs7IGZvbnQtc2l6ZTogMTRweDsgY29sb3I6IzAwMDAwMCI+CiAgICA8c3R5 +bGU+CiAgICAgICAgZm9udHsKICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDEuNjsKICAgICAgICB9 +CiAgICA8L3N0eWxlPgo8ZGl2IHN0eWxlPSJmb250LWZhbWlseTomcXVvdDvlvq7ova/pm4Xpu5Em +cXVvdDs7IGZvbnQtc2l6ZTogMTRweDsgY29sb3I6IzAwMDAwMCI+CiAgICA8c3R5bGU+CiAgICAg +ICAgZm9udHsKICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDEuNjsKICAgICAgICB9CiAgICA8L3N0 +eWxlPgo8ZGl2IHN0eWxlPSJmb250LWZhbWlseTomcXVvdDvlvq7ova/pm4Xpu5EmcXVvdDs7IGZv +bnQtc2l6ZTogMTRweDsgY29sb3I6IzAwMDAwMCI+CiAgICA8c3R5bGU+CiAgICAgICAgZm9udHsK +ICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDEuNjsKICAgICAgICB9CiAgICA8L3N0eWxlPgo8ZGl2 +IHN0eWxlPSJmb250LWZhbWlseTomcXVvdDvlvq7ova/pm4Xpu5EmcXVvdDs7IGZvbnQtc2l6ZTog +MTRweDsgY29sb3I6IzAwMDAwMCI+CiAgICA8c3R5bGU+CiAgICAgICAgZm9udHsKICAgICAgICAg +ICAgbGluZS1oZWlnaHQ6IDEuNjsKICAgICAgICB9CiAgICA8L3N0eWxlPgo8c3BhbiBzdHlsZT0i +Y29sb3I6IHJnYigxOTEsIDE5MSwgMTkxKTsgZm9udC1mYW1pbHk6ICdNaWNyb3NvZnQgWWFoZWkn +OyBmb250LXNpemU6IDEzcHg7IG9ycGhhbnM6IDI7IHdpZG93czogMjsiPkJlc3QgcmVnYXJkcyw8 +L3NwYW4+PGRpdiBzdHlsZT0ibWFyZ2luOiAwcHg7IHBhZGRpbmc6IDBweDsgYm9yZGVyOiAwcHg7 +IG91dGxpbmU6IDBweDsgZm9udC1mYW1pbHk6IFRhaG9tYSwgQXJpYWwsIFNUSGVpdGksIFNpbVN1 +bjsgZm9udC12YXJpYW50LWxpZ2F0dXJlczogbm9ybWFsOyBvcnBoYW5zOiAyOyB3aWRvd3M6IDI7 +IGNsZWFyOiBib3RoOyI+PHNwYW4gc3R5bGU9Im1hcmdpbjogMHB4OyBwYWRkaW5nOiAwcHg7IGJv +cmRlcjogMHB4OyBvdXRsaW5lOiAwcHg7IGZvbnQtZmFtaWx5OiAmcXVvdDtNaWNyb3NvZnQgWWFo +ZWkmcXVvdDs7IGZvbnQtc2l6ZTogMTNweDsgY29sb3I6IHJnYigxOTEsIDE5MSwgMTkxKTsiPuad +qOi9qTwvc3Bhbj48L2Rpdj48ZGl2IHN0eWxlPSJtYXJnaW46IDBweDsgcGFkZGluZzogMHB4OyBi +b3JkZXI6IDBweDsgb3V0bGluZTogMHB4OyBmb250LWZhbWlseTogVGFob21hLCBBcmlhbCwgU1RI +ZWl0aSwgU2ltU3VuOyBmb250LXZhcmlhbnQtbGlnYXR1cmVzOiBub3JtYWw7IG9ycGhhbnM6IDI7 +IHdpZG93czogMjsgY2xlYXI6IGJvdGg7Ij48L2Rpdj48ZGl2IHN0eWxlPSJtYXJnaW46IDBweDsg +cGFkZGluZzogMHB4OyBib3JkZXI6IDBweDsgb3V0bGluZTogMHB4OyBmb250LWZhbWlseTogVGFo +b21hLCBBcmlhbCwgU1RIZWl0aSwgU2ltU3VuOyBmb250LXZhcmlhbnQtbGlnYXR1cmVzOiBub3Jt +YWw7IG9ycGhhbnM6IDI7IHdpZG93czogMjsgY2xlYXI6IGJvdGg7Ij48aW1nIHNyYz0iaHR0cHM6 +Ly9tYWlsLW9ubGluZS5ub3Nkbi4xMjcubmV0L3d6cG1tYy9jZTlmOGIzNmUxZmZiZTU1MzI5YzE5 +NmM4NGZlNTE5Ny5wbmciIHN0eWxlPSJtYXgtd2lkdGg6IHVuc2V0OyI+PC9kaXY+PGRpdiBzdHls +ZT0ibWFyZ2luOiAwcHg7IHBhZGRpbmc6IDBweDsgYm9yZGVyOiAwcHg7IG91dGxpbmU6IDBweDsg +Zm9udC1mYW1pbHk6IFRhaG9tYSwgQXJpYWwsIFNUSGVpdGksIFNpbVN1bjsgZm9udC12YXJpYW50 +LWxpZ2F0dXJlczogbm9ybWFsOyBvcnBoYW5zOiAyOyB3aWRvd3M6IDI7IGNsZWFyOiBib3RoOyI+ +PHNwYW4gc3R5bGU9Im1hcmdpbjogMHB4OyBwYWRkaW5nOiAwcHg7IGJvcmRlcjogMHB4OyBvdXRs +aW5lOiAwcHg7IGZvbnQtZmFtaWx5OiAmcXVvdDtNaWNyb3NvZnQgWWFoZWkmcXVvdDs7IGNvbG9y +OiByZ2IoMTkxLCAxOTEsIDE5MSk7Ij7lnLDlnYDvvJrkuK3lm73Ct+WNl+S6rOS6keWvhuWfjkzm +oIs1LzEw5qW8PC9zcGFuPjwvZGl2PjxkaXYgc3R5bGU9Im1hcmdpbjogMHB4OyBwYWRkaW5nOiAw +cHg7IGJvcmRlcjogMHB4OyBvdXRsaW5lOiAwcHg7IGZvbnQtZmFtaWx5OiBUYWhvbWEsIEFyaWFs +LCBTVEhlaXRpLCBTaW1TdW47IGZvbnQtdmFyaWFudC1saWdhdHVyZXM6IG5vcm1hbDsgb3JwaGFu +czogMjsgd2lkb3dzOiAyOyBjbGVhcjogYm90aDsiPjxzcGFuIHN0eWxlPSJtYXJnaW46IDBweDsg +cGFkZGluZzogMHB4OyBib3JkZXI6IDBweDsgb3V0bGluZTogMHB4OyBmb250LWZhbWlseTogJnF1 +b3Q7TWljcm9zb2Z0IFlhaGVpJnF1b3Q7OyBjb2xvcjogcmdiKDE5MSwgMTkxLCAxOTEpOyI+5omL +5py677yaMTg3MjYxMjg0ODk8L3NwYW4+PC9kaXY+PGRpdiBzdHlsZT0ibWFyZ2luOiAwcHg7IHBh +ZGRpbmc6IDBweDsgYm9yZGVyOiAwcHg7IG91dGxpbmU6IDBweDsgZm9udC1mYW1pbHk6IFRhaG9t +YSwgQXJpYWwsIFNUSGVpdGksIFNpbVN1bjsgZm9udC12YXJpYW50LWxpZ2F0dXJlczogbm9ybWFs +OyBvcnBoYW5zOiAyOyB3aWRvd3M6IDI7IGNsZWFyOiBib3RoOyI+PHNwYW4gc3R5bGU9Im1hcmdp +bjogMHB4OyBwYWRkaW5nOiAwcHg7IGJvcmRlcjogMHB4OyBvdXRsaW5lOiAwcHg7IGZvbnQtZmFt +aWx5OiAmcXVvdDtNaWNyb3NvZnQgWWFoZWkmcXVvdDs7IGNvbG9yOiByZ2IoMTkxLCAxOTEsIDE5 +MSk7Ij7pgq7nrrHvvJp5YW5neHVhbkB3aXRzb2Z0LmNuPC9zcGFuPjwvZGl2Pgo8L2Rpdj4KPC9k +aXY+CjwvZGl2Pgo8L2Rpdj4KPC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PCEtLfCfmIAtLT48L2Rp +dj48L2Rpdj48L2JvZHk+PC9odG1sPg== + +--=_mailmaster-6a18e4a4_0_491c_=-- diff --git a/media/inbound/2026-02-28_1730_G5开发周报_2026-02-24_--_2026-02-28---6fae61d8-b6bd-47df-afa6-45fdc6a90a40.eml b/media/inbound/2026-02-28_1730_G5开发周报_2026-02-24_--_2026-02-28---6fae61d8-b6bd-47df-afa6-45fdc6a90a40.eml new file mode 100644 index 0000000..2b567f8 --- /dev/null +++ b/media/inbound/2026-02-28_1730_G5开发周报_2026-02-24_--_2026-02-28---6fae61d8-b6bd-47df-afa6-45fdc6a90a40.eml @@ -0,0 +1,374 @@ +Date: Sat, 28 Feb 2026 17:30:00 +0800 +From: =?utf-8?B?5p2o6L2p?= +To: =?utf-8?B?5YiY5by6?= +Cc: =?utf-8?B?5bGI5paw6b6Z?= , =?utf-8?B?5pyx5paM?= + , =?utf-8?B?6ZmI5piO?= , + =?utf-8?B?6KKB5pm0?= +Message-ID: <5388AA08-3316-4457-B204-75932A3C228A@witsoft.cn> +Subject: =?utf-8?B?RzXlvIDlj5HlkajmiqXjgJAyMDI2LTAyLTI0IC0tICAyMDI2LTAy?= + =?utf-8?B?LTI444CR?= +MIME-Version: 1.0 +Content-Type: multipart/alternative; boundary="=_mailmaster-6a18e4a4_0_4d06_=" + +--=_mailmaster-6a18e4a4_0_4d06_= +Content-Type: text/plain; charset="utf-8" +Content-Transfer-Encoding: base64 + +5oKo5aW977yB5Lul5LiL5piv5oiR5pys5ZGo55qE5bel5L2c5oC757uT5Y+K5LiL5ZGo6K6h5YiS +77yM6K+35a6h6ZiF44CCCuS4gOOAgeacrOWRqOW3peS9nOaAu+e7kwrph43ngrnlt6XkvZzlrozm +iJDmg4XlhrUK5Lu75YqhMe+8mkc15Li75pWw5o2uNS40LjTmtYvor5XlrozmiJAK5Lu75YqhMu+8 +mkc15bqT5a2YNS40LjTmtYvor5XlrozmiJAK5bi46KeE5bel5L2cCuaXpeW4uOS6i+WKoTHvvJoy +MDI2LTAyLTI0CjEuIOmUgOWUrueuoeeQhi3mlLbmrL7orqHliJLnmoTigJzmlLbmrL7nsbvlnovi +gJ3mlK/mjIHloavlhpnmlbDlrZcgCjIuIOWPkei0p+WNleaJk+WNsOaooeadv+WinuWKoOWPkei0 +p+S/oeaBr+WPkei0p+S/oeaBr+eahOWuouaIt+iBlOezu+S6uuOAgeWuouaIt+iBlOezu+aWueW8 +j+OAgeWuouaIt+WcsOWdgOWtl+autSAKMy4g5peg5rqQ5Y2V5paw5aKe6YCJ5oup5a6i5oi35ZCO +5bim5Ye65a6i5oi36IGU57O75Lq644CB5a6i5oi36IGU57O75pa55byP44CB5a6i5oi35Zyw5Z2A +IAo0LiDmnInmupDljZXvvJrmjInorqLljZXlj5HotKfml7bku47orqLljZXkuK3ojrflj5bkv6Hm +ga8K5pel5bi45LqL5YqhMu+8mjIwMjYtMDItMjUKMS4g5Lqn5ZOB6YCJ6YWN6aG55qCh6aqM6YC7 +6L6R5YiG5p6QIAoyLiDkuLvmlbDmja7lr7zlhaXpl67popjkv67lpI0K5pel5bi45LqL5YqhM++8 +mjIwMjYtMDItMjYKMS4g5Li75pWw5o2u6ZyA5rGC5rWL6K+V5a6M5oiQIAoyLiDplIDllK7nrqHn +kIbpl67popjkv67lpI0gCjMuIOmUgOWUrueuoeeQhuWOhuWPsumXrumimOWkhOeQhgrml6XluLjk +uovliqE077yaMjAyNi0wMi0yNwoxLiDkuLvmlbDmja7mtYvor5XlrozmiJAgCjIuIOmUgOWUruWO +huWPsumXrumimOWkhOeQhgrml6XluLjkuovliqE177yaMjAyNi0wMi0yNwoxLiDkuLvmlbDmja7m +tYvor5XlrozmiJAgCjIuIOmUgOWUrueuoeeQhua1i+ivleWujOaIkCAKMy4g6ZSA5ZSu566h55CG +5Y6G5Y+y6Zeu6aKY5L+u5aSN5a6M5oiQCuS4gOOAgeS4i+WRqOmHjeeCueS7u+WKoQo1LjQuNeeJ +iOacrOW8gOWPkQrlpIfms6jvvJoKQmVzdCByZWdhcmRzLOadqOi9qQrlnLDlnYDvvJrkuK3lm73C +t+WNl+S6rOS6keWvhuWfjkzmoIs1LzEw5qW8CuaJi+acuu+8mjE4NzI2MTI4NDg5CumCrueuse+8 +mnlhbmd4dWFuQHdpdHNvZnQuY24= + +--=_mailmaster-6a18e4a4_0_4d06_= +Content-Type: text/html; charset="utf-8" +Content-Transfer-Encoding: base64 + +PGh0bWw+PGhlYWQ+PG1ldGEgaHR0cC1lcXVpdj0nQ29udGVudC1UeXBlJyBjb250ZW50PSd0ZXh0 +L2h0bWw7IGNoYXJzZXQ9VVRGLTgnPjwvaGVhZD48Ym9keSBzdHlsZT1saW5lLWhlaWdodDogMS41 +O2ZvbnQtZmFtaWx5OiAi5b6u6L2v6ZuF6buRIj48ZGl2ICBzdHlsZT0iZm9udC1mYW1pbHk6IOW+ +rui9r+mbhem7kTsiPjxkaXYgc3R5bGU9IiI+PGRpdiBzdHlsZT0iIj48ZGl2IHN0eWxlPSIiPjxk +aXYgc3R5bGU9IiIgMS41O2ZvbnQtZmFtaWx5Oj0iIiAi5b6u6L2v6ZuF6buRIj0iIj48ZGl2IHN0 +eWxlPSIiPjxkaXYgc3R5bGU9IiI+PGRpdiBzdHlsZT0iIj48ZGl2IHN0eWxlPSIiPjxwIGNpZD0i +bjAiIG1kdHlwZT0icGFyYWdyYXBoIiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLXAgbWQtZm9jdXMi +IHN0eWxlPSJmb250LWZhbWlseTogJnF1b3Q7T3BlbiBTYW5zJnF1b3Q7LCAmcXVvdDtDbGVhciBT +YW5zJnF1b3Q7LCAmcXVvdDtIZWx2ZXRpY2EgTmV1ZSZxdW90OywgSGVsdmV0aWNhLCBBcmlhbCwg +c2Fucy1zZXJpZjsgYm94LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7 +IG9ycGhhbnM6IDQ7IG1hcmdpbjogMC44ZW0gMHB4OyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBv +c2l0aW9uOiByZWxhdGl2ZTsgY29sb3I6IHJnYig1MSwgNTEsIDUxKTsgZm9udC1zaXplOiAxNnB4 +OyI+PHNwYW4gbWQtaW5saW5lPSJwbGFpbiIgY2xhc3M9Im1kLXBsYWluIG1kLWV4cGFuZCIgc3R5 +bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij7mgqjlpb3vvIHku6XkuIvmmK/miJHmnKzlkajn +moTlt6XkvZzmgLvnu5Plj4rkuIvlkajorqHliJLvvIzor7flrqHpmIXjgII8L3NwYW4+PC9wPjxk +aXYgdGFiaW5kZXg9Ii0xIiBjaWQ9Im4yIiBtZHR5cGU9ImhyIiBjbGFzcz0ibWQtaHIgbWQtZW5k +LWJsb2NrIiBzdHlsZT0iZm9udC1mYW1pbHk6ICZxdW90O09wZW4gU2FucyZxdW90OywgJnF1b3Q7 +Q2xlYXIgU2FucyZxdW90OywgJnF1b3Q7SGVsdmV0aWNhIE5ldWUmcXVvdDssIEhlbHZldGljYSwg +QXJpYWwsIHNhbnMtc2VyaWY7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7IGNvbG9yOiByZ2IoNTEs +IDUxLCA1MSk7IGZvbnQtc2l6ZTogMTZweDsiPjxociBzdHlsZT0iYm94LXNpemluZzogY29udGVu +dC1ib3g7IGhlaWdodDogMnB4OyBtYXJnaW46IDE2cHggMHB4OyBib3JkZXI6IDBweCBub25lOyBw +YWRkaW5nOiAwcHg7IGJhY2tncm91bmQtY29sb3I6IHJnYigyMzEsIDIzMSwgMjMxKTsiPjwvZGl2 +PjxoMyBjaWQ9Im4zIiBtZHR5cGU9ImhlYWRpbmciIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtaGVh +ZGluZyIgc3R5bGU9ImZvbnQtZmFtaWx5OiAmcXVvdDtPcGVuIFNhbnMmcXVvdDssICZxdW90O0Ns +ZWFyIFNhbnMmcXVvdDssICZxdW90O0hlbHZldGljYSBOZXVlJnF1b3Q7LCBIZWx2ZXRpY2EsIEFy +aWFsLCBzYW5zLXNlcmlmOyBib3gtc2l6aW5nOiBib3JkZXItYm94OyBicmVhay1hZnRlcjogYXZv +aWQtcGFnZTsgYnJlYWstaW5zaWRlOiBhdm9pZDsgb3JwaGFuczogNDsgZm9udC1zaXplOiAxLjVl +bTsgbWFyZ2luLXRvcDogMXJlbTsgbWFyZ2luLWJvdHRvbTogMXJlbTsgcG9zaXRpb246IHJlbGF0 +aXZlOyBsaW5lLWhlaWdodDogMS40MzsgY3Vyc29yOiB0ZXh0OyB3aGl0ZS1zcGFjZTogcHJlLXdy +YXA7IGNvbG9yOiByZ2IoNTEsIDUxLCA1MSk7Ij48c3BhbiBtZC1pbmxpbmU9InN0cm9uZyIgY2xh +c3M9Im1kLXBhaXItcyAiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+PHN0cm9uZyBz +dHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPjxzcGFuIG1kLWlubGluZT0icGxhaW4iIGNs +YXNzPSJtZC1wbGFpbiIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij7kuIDjgIHmnKzl +kajlt6XkvZzmgLvnu5M8L3NwYW4+PC9zdHJvbmc+PC9zcGFuPjwvaDM+PG9sIGNsYXNzPSJvbC1s +aXN0IiBzdGFydD0iIiBjaWQ9Im40IiBtZHR5cGU9Imxpc3QiIHN0eWxlPSJmb250LWZhbWlseTog +JnF1b3Q7T3BlbiBTYW5zJnF1b3Q7LCAmcXVvdDtDbGVhciBTYW5zJnF1b3Q7LCAmcXVvdDtIZWx2 +ZXRpY2EgTmV1ZSZxdW90OywgSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjsgYm94LXNpemlu +ZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBhZGRpbmctbGVmdDogMzBweDsgcG9zaXRpb246 +IHJlbGF0aXZlOyBjb2xvcjogcmdiKDUxLCA1MSwgNTEpOyBmb250LXNpemU6IDE2cHg7Ij48bGkg +Y2xhc3M9Im1kLWxpc3QtaXRlbSIgY2lkPSJuNSIgbWR0eXBlPSJsaXN0X2l0ZW0iIHN0eWxlPSJi +b3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcG9zaXRpb246IHJlbGF0aXZlOyI+ +PHAgY2lkPSJuNiIgbWR0eXBlPSJwYXJhZ3JhcGgiIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCIg +c3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhlcml0OyBvcnBo +YW5zOiA0OyBtYXJnaW46IDBweCAwcHggMC41cmVtOyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBv +c2l0aW9uOiByZWxhdGl2ZTsiPjxzcGFuIG1kLWlubGluZT0ic3Ryb25nIiBjbGFzcz0ibWQtcGFp +ci1zICIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij48c3Ryb25nIHN0eWxlPSJib3gt +c2l6aW5nOiBib3JkZXItYm94OyI+PHNwYW4gbWQtaW5saW5lPSJwbGFpbiIgY2xhc3M9Im1kLXBs +YWluIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPumHjeeCueW3peS9nOWujOaIkOaD +heWGtTwvc3Bhbj48L3N0cm9uZz48L3NwYW4+PC9wPjwvbGk+PHVsIGNsYXNzPSJ1bC1saXN0IiBj +aWQ9Im43IiBtZHR5cGU9Imxpc3QiIGRhdGEtbWFyaz0iLSIgc3R5bGU9ImJveC1zaXppbmc6IGJv +cmRlci1ib3g7IG1hcmdpbjogMHB4OyBwYWRkaW5nLWxlZnQ6IDMwcHg7IHBvc2l0aW9uOiByZWxh +dGl2ZTsiPjxsaSBjbGFzcz0ibWQtbGlzdC1pdGVtIiBjaWQ9Im44IiBtZHR5cGU9Imxpc3RfaXRl +bSIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBwb3NpdGlvbjog +cmVsYXRpdmU7Ij48cCBjaWQ9Im45IiBtZHR5cGU9InBhcmFncmFwaCIgY2xhc3M9Im1kLWVuZC1i +bG9jayBtZC1wIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGlu +aGVyaXQ7IG9ycGhhbnM6IDQ7IG1hcmdpbjogMHB4IDBweCAwLjVyZW07IHdoaXRlLXNwYWNlOiBw +cmUtd3JhcDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHNwYW4gbWQtaW5saW5lPSJwbGFpbiIgY2xh +c3M9Im1kLXBsYWluIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPuS7u+WKoTHvvJpH +NeS4u+aVsOaNrjUuNC405rWL6K+V5a6M5oiQPC9zcGFuPjwvcD48L2xpPjxsaSBjbGFzcz0ibWQt +bGlzdC1pdGVtIiBjaWQ9Im4xMCIgbWR0eXBlPSJsaXN0X2l0ZW0iIHN0eWxlPSJib3gtc2l6aW5n +OiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHAgY2lkPSJu +MTEiIG1kdHlwZT0icGFyYWdyYXBoIiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLXAiIHN0eWxlPSJi +b3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5oZXJpdDsgb3JwaGFuczogNDsg +bWFyZ2luOiAwcHggMHB4IDAuNXJlbTsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyBwb3NpdGlvbjog +cmVsYXRpdmU7Ij7ku7vliqEy77yaRzXlupPlrZg1LjQuNOa1i+ivleWujOaIkDwvcD48L2xpPjwv +dWw+PGxpIGNsYXNzPSJtZC1saXN0LWl0ZW0iIGNpZD0ibjEyIiBtZHR5cGU9Imxpc3RfaXRlbSIg +c3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBwb3NpdGlvbjogcmVs +YXRpdmU7Ij48cCBjaWQ9Im4xMyIgbWR0eXBlPSJwYXJhZ3JhcGgiIGNsYXNzPSJtZC1lbmQtYmxv +Y2sgbWQtcCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhl +cml0OyBvcnBoYW5zOiA0OyBtYXJnaW46IDBweCAwcHggMC41cmVtOyB3aGl0ZS1zcGFjZTogcHJl +LXdyYXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxzcGFuIG1kLWlubGluZT0ic3Ryb25nIiBjbGFz +cz0ibWQtcGFpci1zICIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij48c3Ryb25nIHN0 +eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+PHNwYW4gbWQtaW5saW5lPSJwbGFpbiIgY2xh +c3M9Im1kLXBsYWluIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPuW4uOinhOW3peS9 +nDwvc3Bhbj48L3N0cm9uZz48L3NwYW4+PC9wPjwvbGk+PC9vbD48b2wgY2xhc3M9Im9sLWxpc3Qi +IHN0YXJ0PSIiIGNpZD0ibjQiIG1kdHlwZT0ibGlzdCIgc3R5bGU9ImZvbnQtZmFtaWx5OiAmcXVv +dDtPcGVuIFNhbnMmcXVvdDssICZxdW90O0NsZWFyIFNhbnMmcXVvdDssICZxdW90O0hlbHZldGlj +YSBOZXVlJnF1b3Q7LCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmOyBib3gtc2l6aW5nOiBi +b3JkZXItYm94OyBtYXJnaW46IDBweDsgcGFkZGluZy1sZWZ0OiAzMHB4OyBwb3NpdGlvbjogcmVs +YXRpdmU7IGNvbG9yOiByZ2IoNTEsIDUxLCA1MSk7IGZvbnQtc2l6ZTogMTZweDsiPjx1bCBjbGFz +cz0idWwtbGlzdCIgY2lkPSJuMTQiIG1kdHlwZT0ibGlzdCIgZGF0YS1tYXJrPSItIiBzdHlsZT0i +Ym94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBhZGRpbmctbGVmdDogMzBweDsg +cG9zaXRpb246IHJlbGF0aXZlOyI+PGxpIGNsYXNzPSJtZC1saXN0LWl0ZW0iIGNpZD0ibjE1IiBt +ZHR5cGU9Imxpc3RfaXRlbSIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjog +MHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48cCBjaWQ9Im4xNiIgbWR0eXBlPSJwYXJhZ3JhcGgi +IGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7 +IGxpbmUtaGVpZ2h0OiBpbmhlcml0OyBvcnBoYW5zOiA0OyBtYXJnaW46IDBweCAwcHggMC41cmVt +OyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxzcGFuIG1kLWlu +bGluZT0icGxhaW4iIGNsYXNzPSJtZC1wbGFpbiIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1i +b3g7Ij7ml6XluLjkuovliqEx77yaMjAyNi0wMi0yNDwvc3Bhbj48L3A+PC9saT48dWwgc3R5bGU9 +Imxpc3Qtc3R5bGUtdHlwZTogc3F1YXJlOyI+PGxpIGNsYXNzPSJtZC1saXN0LWl0ZW0iIGNpZD0i +bjE1IiBtZHR5cGU9Imxpc3RfaXRlbSIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1h +cmdpbjogMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48cCBjaWQ9Im4xNiIgbWR0eXBlPSJwYXJh +Z3JhcGgiIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRl +ci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhlcml0OyBvcnBoYW5zOiA0OyBtYXJnaW46IDBweCAwcHgg +MC41cmVtOyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjEuIOmU +gOWUrueuoeeQhi3mlLbmrL7orqHliJLnmoTigJzmlLbmrL7nsbvlnovigJ3mlK/mjIHloavlhpnm +lbDlrZcNPC9wPjwvbGk+PGxpIGNsYXNzPSJtZC1saXN0LWl0ZW0iIGNpZD0ibjE1IiBtZHR5cGU9 +Imxpc3RfaXRlbSIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBw +b3NpdGlvbjogcmVsYXRpdmU7Ij48cCBjaWQ9Im4xNiIgbWR0eXBlPSJwYXJhZ3JhcGgiIGNsYXNz +PSJtZC1lbmQtYmxvY2sgbWQtcCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGxpbmUt +aGVpZ2h0OiBpbmhlcml0OyBvcnBoYW5zOiA0OyBtYXJnaW46IDBweCAwcHggMC41cmVtOyB3aGl0 +ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjIuIOWPkei0p+WNleaJk+WN +sOaooeadv+WinuWKoOWPkei0p+S/oeaBr+WPkei0p+S/oeaBr+eahOWuouaIt+iBlOezu+S6uuOA +geWuouaIt+iBlOezu+aWueW8j+OAgeWuouaIt+WcsOWdgOWtl+autQ08L3A+PC9saT48bGkgY2xh +c3M9Im1kLWxpc3QtaXRlbSIgY2lkPSJuMTUiIG1kdHlwZT0ibGlzdF9pdGVtIiBzdHlsZT0iYm94 +LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxw +IGNpZD0ibjE2IiBtZHR5cGU9InBhcmFncmFwaCIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1wIiBz +dHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IG9ycGhh +bnM6IDQ7IG1hcmdpbjogMHB4IDBweCAwLjVyZW07IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9z +aXRpb246IHJlbGF0aXZlOyI+My4g5peg5rqQ5Y2V5paw5aKe6YCJ5oup5a6i5oi35ZCO5bim5Ye6 +5a6i5oi36IGU57O75Lq644CB5a6i5oi36IGU57O75pa55byP44CB5a6i5oi35Zyw5Z2ADTwvcD48 +L2xpPjxsaSBjbGFzcz0ibWQtbGlzdC1pdGVtIiBjaWQ9Im4xNSIgbWR0eXBlPSJsaXN0X2l0ZW0i +IHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcG9zaXRpb246IHJl +bGF0aXZlOyI+PHAgY2lkPSJuMTYiIG1kdHlwZT0icGFyYWdyYXBoIiBjbGFzcz0ibWQtZW5kLWJs +b2NrIG1kLXAiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5o +ZXJpdDsgb3JwaGFuczogNDsgbWFyZ2luOiAwcHggMHB4IDAuNXJlbTsgd2hpdGUtc3BhY2U6IHBy +ZS13cmFwOyBwb3NpdGlvbjogcmVsYXRpdmU7Ij40LiDmnInmupDljZXvvJrmjInorqLljZXlj5Ho +tKfml7bku47orqLljZXkuK3ojrflj5bkv6Hmga88L3A+PC9saT48L3VsPjwvdWw+PC9vbD48b2wg +Y2xhc3M9Im9sLWxpc3QiIHN0YXJ0PSIiIGNpZD0ibjQiIG1kdHlwZT0ibGlzdCIgc3R5bGU9ImZv +bnQtZmFtaWx5OiDlvq7ova/pm4Xpu5E7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjog +MHB4OyBwYWRkaW5nLWxlZnQ6IDMwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjx1bCBjbGFzcz0i +dWwtbGlzdCIgY2lkPSJuMTQiIG1kdHlwZT0ibGlzdCIgZGF0YS1tYXJrPSItIiBzdHlsZT0iZm9u +dC1mYW1pbHk6IOW+rui9r+mbhem7kTsgYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAw +cHg7IHBhZGRpbmctbGVmdDogMzBweDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PGxpIGNsYXNzPSJt +ZC1saXN0LWl0ZW0iIGNpZD0ibjE1IiBtZHR5cGU9Imxpc3RfaXRlbSIgc3R5bGU9ImNvbG9yOiBy +Z2IoNTEsIDUxLCA1MSk7IGZvbnQtZmFtaWx5OiAmcXVvdDtPcGVuIFNhbnMmcXVvdDssICZxdW90 +O0NsZWFyIFNhbnMmcXVvdDssICZxdW90O0hlbHZldGljYSBOZXVlJnF1b3Q7LCBIZWx2ZXRpY2Es +IEFyaWFsLCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDE2cHg7IGJveC1zaXppbmc6IGJvcmRlci1i +b3g7IG1hcmdpbjogMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48cCBjaWQ9Im4xNiIgbWR0eXBl +PSJwYXJhZ3JhcGgiIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCIgc3R5bGU9ImJveC1zaXppbmc6 +IGJvcmRlci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhlcml0OyBvcnBoYW5zOiA0OyBtYXJnaW46IDBw +eCAwcHggMC41cmVtOyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsi +PjxzcGFuIG1kLWlubGluZT0icGxhaW4iIGNsYXNzPSJtZC1wbGFpbiIgc3R5bGU9ImJveC1zaXpp +bmc6IGJvcmRlci1ib3g7Ij7ml6XluLjkuovliqEy77yaMjAyNi0wMi0yNTwvc3Bhbj48L3A+PC9s +aT48dWwgc3R5bGU9Imxpc3Qtc3R5bGUtdHlwZTogc3F1YXJlOyI+PGxpIGNsYXNzPSJtZC1saXN0 +LWl0ZW0iIGNpZD0ibjE1IiBtZHR5cGU9Imxpc3RfaXRlbSIgc3R5bGU9ImNvbG9yOiByZ2IoNTEs +IDUxLCA1MSk7IGZvbnQtZmFtaWx5OiAmcXVvdDtPcGVuIFNhbnMmcXVvdDssICZxdW90O0NsZWFy +IFNhbnMmcXVvdDssICZxdW90O0hlbHZldGljYSBOZXVlJnF1b3Q7LCBIZWx2ZXRpY2EsIEFyaWFs +LCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDE2cHg7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1h +cmdpbjogMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48cCBjaWQ9Im4xNiIgbWR0eXBlPSJwYXJh +Z3JhcGgiIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRl +ci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhlcml0OyBvcnBoYW5zOiA0OyBtYXJnaW46IDBweCAwcHgg +MC41cmVtOyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjEuIOS6 +p+WTgemAiemFjemhueagoemqjOmAu+i+keWIhuaekA08L3A+PC9saT48bGkgY2xhc3M9Im1kLWxp +c3QtaXRlbSIgY2lkPSJuMTUiIG1kdHlwZT0ibGlzdF9pdGVtIiBzdHlsZT0iY29sb3I6IHJnYig1 +MSwgNTEsIDUxKTsgZm9udC1mYW1pbHk6ICZxdW90O09wZW4gU2FucyZxdW90OywgJnF1b3Q7Q2xl +YXIgU2FucyZxdW90OywgJnF1b3Q7SGVsdmV0aWNhIE5ldWUmcXVvdDssIEhlbHZldGljYSwgQXJp +YWwsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTZweDsgYm94LXNpemluZzogYm9yZGVyLWJveDsg +bWFyZ2luOiAwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxwIGNpZD0ibjE2IiBtZHR5cGU9InBh +cmFncmFwaCIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1wIiBzdHlsZT0iYm94LXNpemluZzogYm9y +ZGVyLWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IG9ycGhhbnM6IDQ7IG1hcmdpbjogMHB4IDBw +eCAwLjVyZW07IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJlbGF0aXZlOyI+Mi4g +5Li75pWw5o2u5a+85YWl6Zeu6aKY5L+u5aSNPC9wPjwvbGk+PC91bD48bGkgY2xhc3M9Im1kLWxp +c3QtaXRlbSIgY2lkPSJuMTciIG1kdHlwZT0ibGlzdF9pdGVtIiBzdHlsZT0iY29sb3I6IHJnYig1 +MSwgNTEsIDUxKTsgZm9udC1mYW1pbHk6ICZxdW90O09wZW4gU2FucyZxdW90OywgJnF1b3Q7Q2xl +YXIgU2FucyZxdW90OywgJnF1b3Q7SGVsdmV0aWNhIE5ldWUmcXVvdDssIEhlbHZldGljYSwgQXJp +YWwsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTZweDsgYm94LXNpemluZzogYm9yZGVyLWJveDsg +bWFyZ2luOiAwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxwIGNpZD0ibjE4IiBtZHR5cGU9InBh +cmFncmFwaCIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1wIiBzdHlsZT0iYm94LXNpemluZzogYm9y +ZGVyLWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IG9ycGhhbnM6IDQ7IG1hcmdpbjogMHB4IDBw +eCAwLjVyZW07IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHNw +YW4gbWQtaW5saW5lPSJwbGFpbiIgY2xhc3M9Im1kLXBsYWluIiBzdHlsZT0iYm94LXNpemluZzog +Ym9yZGVyLWJveDsiPuaXpeW4uOS6i+WKoTPvvJoyMDI2LTAyLTI2PC9zcGFuPjwvcD48L2xpPjx1 +bCBzdHlsZT0ibGlzdC1zdHlsZS10eXBlOiBzcXVhcmU7Ij48bGkgY2xhc3M9Im1kLWxpc3QtaXRl +bSIgY2lkPSJuMTciIG1kdHlwZT0ibGlzdF9pdGVtIiBzdHlsZT0iY29sb3I6IHJnYig1MSwgNTEs +IDUxKTsgZm9udC1mYW1pbHk6ICZxdW90O09wZW4gU2FucyZxdW90OywgJnF1b3Q7Q2xlYXIgU2Fu +cyZxdW90OywgJnF1b3Q7SGVsdmV0aWNhIE5ldWUmcXVvdDssIEhlbHZldGljYSwgQXJpYWwsIHNh +bnMtc2VyaWY7IGZvbnQtc2l6ZTogMTZweDsgYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2lu +OiAwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxwIGNpZD0ibjE4IiBtZHR5cGU9InBhcmFncmFw +aCIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1wIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJv +eDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IG9ycGhhbnM6IDQ7IG1hcmdpbjogMHB4IDBweCAwLjVy +ZW07IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJlbGF0aXZlOyI+MS4g5Li75pWw +5o2u6ZyA5rGC5rWL6K+V5a6M5oiQDTwvcD48L2xpPjxsaSBjbGFzcz0ibWQtbGlzdC1pdGVtIiBj +aWQ9Im4xNyIgbWR0eXBlPSJsaXN0X2l0ZW0iIHN0eWxlPSJjb2xvcjogcmdiKDUxLCA1MSwgNTEp +OyBmb250LWZhbWlseTogJnF1b3Q7T3BlbiBTYW5zJnF1b3Q7LCAmcXVvdDtDbGVhciBTYW5zJnF1 +b3Q7LCAmcXVvdDtIZWx2ZXRpY2EgTmV1ZSZxdW90OywgSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1z +ZXJpZjsgZm9udC1zaXplOiAxNnB4OyBib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBw +eDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHAgY2lkPSJuMTgiIG1kdHlwZT0icGFyYWdyYXBoIiBj +bGFzcz0ibWQtZW5kLWJsb2NrIG1kLXAiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBs +aW5lLWhlaWdodDogaW5oZXJpdDsgb3JwaGFuczogNDsgbWFyZ2luOiAwcHggMHB4IDAuNXJlbTsg +d2hpdGUtc3BhY2U6IHByZS13cmFwOyBwb3NpdGlvbjogcmVsYXRpdmU7Ij4yLiDplIDllK7nrqHn +kIbpl67popjkv67lpI0NPC9wPjwvbGk+PGxpIGNsYXNzPSJtZC1saXN0LWl0ZW0iIGNpZD0ibjE3 +IiBtZHR5cGU9Imxpc3RfaXRlbSIgc3R5bGU9ImNvbG9yOiByZ2IoNTEsIDUxLCA1MSk7IGZvbnQt +ZmFtaWx5OiAmcXVvdDtPcGVuIFNhbnMmcXVvdDssICZxdW90O0NsZWFyIFNhbnMmcXVvdDssICZx +dW90O0hlbHZldGljYSBOZXVlJnF1b3Q7LCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmOyBm +b250LXNpemU6IDE2cHg7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBwb3Np +dGlvbjogcmVsYXRpdmU7Ij48cCBjaWQ9Im4xOCIgbWR0eXBlPSJwYXJhZ3JhcGgiIGNsYXNzPSJt +ZC1lbmQtYmxvY2sgbWQtcCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGxpbmUtaGVp +Z2h0OiBpbmhlcml0OyBvcnBoYW5zOiA0OyBtYXJnaW46IDBweCAwcHggMC41cmVtOyB3aGl0ZS1z +cGFjZTogcHJlLXdyYXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjMuIOmUgOWUrueuoeeQhuWOhuWP +sumXrumimOWkhOeQhjwvcD48L2xpPjwvdWw+PC91bD48L29sPjxvbCBjbGFzcz0ib2wtbGlzdCIg +c3RhcnQ9IiIgY2lkPSJuNCIgbWR0eXBlPSJsaXN0IiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVy +LWJveDsgbWFyZ2luOiAwcHg7IHBhZGRpbmctbGVmdDogMzBweDsgcG9zaXRpb246IHJlbGF0aXZl +OyI+PHVsIGNsYXNzPSJ1bC1saXN0IiBjaWQ9Im4xNCIgbWR0eXBlPSJsaXN0IiBkYXRhLW1hcms9 +Ii0iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcGFkZGluZy1s +ZWZ0OiAzMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48bGkgY2xhc3M9Im1kLWxpc3QtaXRlbSIg +Y2lkPSJuMTciIG1kdHlwZT0ibGlzdF9pdGVtIiBzdHlsZT0iZm9udC1mYW1pbHk6ICZxdW90O09w +ZW4gU2FucyZxdW90OywgJnF1b3Q7Q2xlYXIgU2FucyZxdW90OywgJnF1b3Q7SGVsdmV0aWNhIE5l +dWUmcXVvdDssIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7IGNvbG9yOiByZ2IoNTEsIDUx +LCA1MSk7IGZvbnQtc2l6ZTogMTZweDsgYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAw +cHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxwIGNpZD0ibjE4IiBtZHR5cGU9InBhcmFncmFwaCIg +Y2xhc3M9Im1kLWVuZC1ibG9jayBtZC1wIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsg +bGluZS1oZWlnaHQ6IGluaGVyaXQ7IG9ycGhhbnM6IDQ7IG1hcmdpbjogMHB4IDBweCAwLjVyZW07 +IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHNwYW4gbWQtaW5s +aW5lPSJwbGFpbiIgY2xhc3M9Im1kLXBsYWluIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJv +eDsiPuaXpeW4uOS6i+WKoTTvvJoyMDI2LTAyLTI3PC9zcGFuPjwvcD48L2xpPjx1bCBzdHlsZT0i +Zm9udC1mYW1pbHk6IOW+rui9r+mbhem7kTsgbGlzdC1zdHlsZS10eXBlOiBzcXVhcmU7Ij48bGkg +Y2xhc3M9Im1kLWxpc3QtaXRlbSIgY2lkPSJuMTciIG1kdHlwZT0ibGlzdF9pdGVtIiBzdHlsZT0i +Zm9udC1mYW1pbHk6ICZxdW90O09wZW4gU2FucyZxdW90OywgJnF1b3Q7Q2xlYXIgU2FucyZxdW90 +OywgJnF1b3Q7SGVsdmV0aWNhIE5ldWUmcXVvdDssIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2Vy +aWY7IGNvbG9yOiByZ2IoNTEsIDUxLCA1MSk7IGZvbnQtc2l6ZTogMTZweDsgYm94LXNpemluZzog +Ym9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxwIGNpZD0ibjE4 +IiBtZHR5cGU9InBhcmFncmFwaCIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1wIiBzdHlsZT0iYm94 +LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IG9ycGhhbnM6IDQ7IG1h +cmdpbjogMHB4IDBweCAwLjVyZW07IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJl +bGF0aXZlOyI+MS4g5Li75pWw5o2u5rWL6K+V5a6M5oiQDTwvcD48L2xpPjxsaSBjbGFzcz0ibWQt +bGlzdC1pdGVtIiBjaWQ9Im4xNyIgbWR0eXBlPSJsaXN0X2l0ZW0iIHN0eWxlPSJmb250LWZhbWls +eTogJnF1b3Q7T3BlbiBTYW5zJnF1b3Q7LCAmcXVvdDtDbGVhciBTYW5zJnF1b3Q7LCAmcXVvdDtI +ZWx2ZXRpY2EgTmV1ZSZxdW90OywgSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjsgY29sb3I6 +IHJnYig1MSwgNTEsIDUxKTsgZm9udC1zaXplOiAxNnB4OyBib3gtc2l6aW5nOiBib3JkZXItYm94 +OyBtYXJnaW46IDBweDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHAgY2lkPSJuMTgiIG1kdHlwZT0i +cGFyYWdyYXBoIiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLXAiIHN0eWxlPSJib3gtc2l6aW5nOiBi +b3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5oZXJpdDsgb3JwaGFuczogNDsgbWFyZ2luOiAwcHgg +MHB4IDAuNXJlbTsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyBwb3NpdGlvbjogcmVsYXRpdmU7Ij4y +LiDplIDllK7ljoblj7Lpl67popjlpITnkIY8L3A+PC9saT48L3VsPjxsaSBzdHlsZT0iZm9udC1m +YW1pbHk6IOW+rui9r+mbhem7kTsiPjxmb250IGNvbG9yPSIjMzMzMzMzIiBmYWNlPSJPcGVuIFNh +bnMsIENsZWFyIFNhbnMsIEhlbHZldGljYSBOZXVlLCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNl +cmlmIj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxNnB4OyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7 +Ij7ml6XluLjkuovliqE177yaMjAyNi0wMi0yNzwvc3Bhbj48L2ZvbnQ+PC9saT48dWwgc3R5bGU9 +Imxpc3Qtc3R5bGUtdHlwZTogc3F1YXJlOyI+PGxpIHN0eWxlPSIiPjxmb250IGNvbG9yPSIjMzMz +MzMzIiBmYWNlPSJPcGVuIFNhbnMsIENsZWFyIFNhbnMsIEhlbHZldGljYSBOZXVlLCBIZWx2ZXRp +Y2EsIEFyaWFsLCBzYW5zLXNlcmlmIj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxNnB4OyB3aGl0 +ZS1zcGFjZTogcHJlLXdyYXA7Ij4xLiDkuLvmlbDmja7mtYvor5XlrozmiJANPC9zcGFuPjwvZm9u +dD48L2xpPjxsaSBzdHlsZT0iIj48Zm9udCBjb2xvcj0iIzMzMzMzMyIgZmFjZT0iT3BlbiBTYW5z +LCBDbGVhciBTYW5zLCBIZWx2ZXRpY2EgTmV1ZSwgSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJp +ZiI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTZweDsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyI+ +Mi4g6ZSA5ZSu566h55CG5rWL6K+V5a6M5oiQDTwvc3Bhbj48L2ZvbnQ+PC9saT48bGkgc3R5bGU9 +IiI+PGZvbnQgY29sb3I9IiMzMzMzMzMiIGZhY2U9Ik9wZW4gU2FucywgQ2xlYXIgU2FucywgSGVs +dmV0aWNhIE5ldWUsIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWYiPjxzcGFuIHN0eWxlPSJm +b250LXNpemU6IDE2cHg7IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsiPjMuIOmUgOWUrueuoeeQhuWO +huWPsumXrumimOS/ruWkjeWujOaIkDwvc3Bhbj48L2ZvbnQ+PC9saT48L3VsPjwvdWw+PC9vbD48 +aDMgY2lkPSJuMyIgbWR0eXBlPSJoZWFkaW5nIiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLWhlYWRp +bmciIHN0eWxlPSJmb250LWZhbWlseTogJnF1b3Q7T3BlbiBTYW5zJnF1b3Q7LCAmcXVvdDtDbGVh +ciBTYW5zJnF1b3Q7LCAmcXVvdDtIZWx2ZXRpY2EgTmV1ZSZxdW90OywgSGVsdmV0aWNhLCBBcmlh +bCwgc2Fucy1zZXJpZjsgYm94LXNpemluZzogYm9yZGVyLWJveDsgYnJlYWstYWZ0ZXI6IGF2b2lk +LXBhZ2U7IGJyZWFrLWluc2lkZTogYXZvaWQ7IG9ycGhhbnM6IDQ7IGZvbnQtc2l6ZTogMS41ZW07 +IG1hcmdpbi10b3A6IDFyZW07IG1hcmdpbi1ib3R0b206IDFyZW07IHBvc2l0aW9uOiByZWxhdGl2 +ZTsgbGluZS1oZWlnaHQ6IDEuNDM7IGN1cnNvcjogdGV4dDsgd2hpdGUtc3BhY2U6IHByZS13cmFw +OyBjb2xvcjogcmdiKDUxLCA1MSwgNTEpOyI+PHNwYW4gbWQtaW5saW5lPSJzdHJvbmciIGNsYXNz +PSJtZC1wYWlyLXMgIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPjxzdHJvbmcgc3R5 +bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij48c3BhbiBtZC1pbmxpbmU9InBsYWluIiBjbGFz +cz0ibWQtcGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+5LiA44CB5LiL5ZGo +6YeN54K55Lu75YqhPC9zcGFuPjwvc3Ryb25nPjwvc3Bhbj48L2gzPjxkaXYgc3R5bGU9ImZvbnQt +ZmFtaWx5OiDlvq7ova/pm4Xpu5E7Ij41LjQuNeeJiOacrOW8gOWPkTwvZGl2PjxkaXYgdGFiaW5k +ZXg9Ii0xIiBjaWQ9Im4zOSIgbWR0eXBlPSJociIgY2xhc3M9Im1kLWhyIG1kLWVuZC1ibG9jayIg +c3R5bGU9ImZvbnQtZmFtaWx5OiAmcXVvdDtPcGVuIFNhbnMmcXVvdDssICZxdW90O0NsZWFyIFNh +bnMmcXVvdDssICZxdW90O0hlbHZldGljYSBOZXVlJnF1b3Q7LCBIZWx2ZXRpY2EsIEFyaWFsLCBz +YW5zLXNlcmlmOyBib3gtc2l6aW5nOiBib3JkZXItYm94OyBjb2xvcjogcmdiKDUxLCA1MSwgNTEp +OyBmb250LXNpemU6IDE2cHg7Ij48aHIgc3R5bGU9ImJveC1zaXppbmc6IGNvbnRlbnQtYm94OyBo +ZWlnaHQ6IDJweDsgbWFyZ2luOiAxNnB4IDBweDsgYm9yZGVyOiAwcHggbm9uZTsgcGFkZGluZzog +MHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjMxLCAyMzEsIDIzMSk7Ij48L2Rpdj48cCBjaWQ9 +Im40MCIgbWR0eXBlPSJwYXJhZ3JhcGgiIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCIgc3R5bGU9 +ImZvbnQtZmFtaWx5OiAmcXVvdDtPcGVuIFNhbnMmcXVvdDssICZxdW90O0NsZWFyIFNhbnMmcXVv +dDssICZxdW90O0hlbHZldGljYSBOZXVlJnF1b3Q7LCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNl +cmlmOyBib3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5oZXJpdDsgb3JwaGFu +czogNDsgbWFyZ2luOiAwLjhlbSAwcHg7IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRpb246 +IHJlbGF0aXZlOyBjb2xvcjogcmdiKDUxLCA1MSwgNTEpOyBmb250LXNpemU6IDE2cHg7Ij48c3Bh +biBtZC1pbmxpbmU9InN0cm9uZyIgY2xhc3M9Im1kLXBhaXItcyAiIHN0eWxlPSJib3gtc2l6aW5n +OiBib3JkZXItYm94OyI+PHN0cm9uZyBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPjxz +cGFuIG1kLWlubGluZT0icGxhaW4iIGNsYXNzPSJtZC1wbGFpbiIgc3R5bGU9ImJveC1zaXppbmc6 +IGJvcmRlci1ib3g7Ij7lpIfms6g8L3NwYW4+PC9zdHJvbmc+PC9zcGFuPjxzcGFuIG1kLWlubGlu +ZT0icGxhaW4iIGNsYXNzPSJtZC1wbGFpbiBtZC1leHBhbmQiIHN0eWxlPSJib3gtc2l6aW5nOiBi +b3JkZXItYm94OyI+77yaPC9zcGFuPjwvcD48L2Rpdj48ZGl2IHN0eWxlPSJmb250LWZhbWlseTog +5b6u6L2v6ZuF6buROyI+PGJyPjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjxkaXYgaWQ9 +ImltYWlsX3NpZ25hdHVyZSIgY2xhc3M9Im50ZXMtc2lnbmF0dXJlIiBzdHlsZT0iZm9udC1mYW1p +bHk6IOW+rui9r+mbhem7kTsgbWFyZ2luOiAyMHB4IDBweDsiIGRhdGEtbnRlcy1zaWduYXR1cmU9 +InRydWUiIHNwZWxsY2hlY2s9ImZhbHNlIj48ZGl2IHN0eWxlPSJmb250LWZhbWlseTomcXVvdDvl +vq7ova/pm4Xpu5EmcXVvdDs7IGZvbnQtc2l6ZTogMTRweDsgY29sb3I6IzAwMDAwMCI+CiAgICA8 +c3R5bGU+CiAgICAgICAgZm9udHsKICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDEuNjsKICAgICAg +ICB9CiAgICA8L3N0eWxlPgo8ZGl2IHN0eWxlPSJmb250LWZhbWlseTomcXVvdDvlvq7ova/pm4Xp +u5EmcXVvdDs7IGZvbnQtc2l6ZTogMTRweDsgY29sb3I6IzAwMDAwMCI+CiAgICA8c3R5bGU+CiAg +ICAgICAgZm9udHsKICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDEuNjsKICAgICAgICB9CiAgICA8 +L3N0eWxlPgo8ZGl2IHN0eWxlPSJmb250LWZhbWlseTomcXVvdDvlvq7ova/pm4Xpu5EmcXVvdDs7 +IGZvbnQtc2l6ZTogMTRweDsgY29sb3I6IzAwMDAwMCI+CiAgICA8c3R5bGU+CiAgICAgICAgZm9u +dHsKICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDEuNjsKICAgICAgICB9CiAgICA8L3N0eWxlPgo8 +ZGl2IHN0eWxlPSJmb250LWZhbWlseTomcXVvdDvlvq7ova/pm4Xpu5EmcXVvdDs7IGZvbnQtc2l6 +ZTogMTRweDsgY29sb3I6IzAwMDAwMCI+CiAgICA8c3R5bGU+CiAgICAgICAgZm9udHsKICAgICAg +ICAgICAgbGluZS1oZWlnaHQ6IDEuNjsKICAgICAgICB9CiAgICA8L3N0eWxlPgo8ZGl2IHN0eWxl +PSJmb250LWZhbWlseTomcXVvdDvlvq7ova/pm4Xpu5EmcXVvdDs7IGZvbnQtc2l6ZTogMTRweDsg +Y29sb3I6IzAwMDAwMCI+CiAgICA8c3R5bGU+CiAgICAgICAgZm9udHsKICAgICAgICAgICAgbGlu +ZS1oZWlnaHQ6IDEuNjsKICAgICAgICB9CiAgICA8L3N0eWxlPgo8c3BhbiBzdHlsZT0iY29sb3I6 +IHJnYigxOTEsIDE5MSwgMTkxKTsgZm9udC1mYW1pbHk6ICdNaWNyb3NvZnQgWWFoZWknOyBmb250 +LXNpemU6IDEzcHg7IG9ycGhhbnM6IDI7IHdpZG93czogMjsiPkJlc3QgcmVnYXJkcyw8L3NwYW4+ +PGRpdiBzdHlsZT0ibWFyZ2luOiAwcHg7IHBhZGRpbmc6IDBweDsgYm9yZGVyOiAwcHg7IG91dGxp +bmU6IDBweDsgZm9udC1mYW1pbHk6IFRhaG9tYSwgQXJpYWwsIFNUSGVpdGksIFNpbVN1bjsgZm9u +dC12YXJpYW50LWxpZ2F0dXJlczogbm9ybWFsOyBvcnBoYW5zOiAyOyB3aWRvd3M6IDI7IGNsZWFy +OiBib3RoOyI+PHNwYW4gc3R5bGU9Im1hcmdpbjogMHB4OyBwYWRkaW5nOiAwcHg7IGJvcmRlcjog +MHB4OyBvdXRsaW5lOiAwcHg7IGZvbnQtZmFtaWx5OiAmcXVvdDtNaWNyb3NvZnQgWWFoZWkmcXVv +dDs7IGZvbnQtc2l6ZTogMTNweDsgY29sb3I6IHJnYigxOTEsIDE5MSwgMTkxKTsiPuadqOi9qTwv +c3Bhbj48L2Rpdj48ZGl2IHN0eWxlPSJtYXJnaW46IDBweDsgcGFkZGluZzogMHB4OyBib3JkZXI6 +IDBweDsgb3V0bGluZTogMHB4OyBmb250LWZhbWlseTogVGFob21hLCBBcmlhbCwgU1RIZWl0aSwg +U2ltU3VuOyBmb250LXZhcmlhbnQtbGlnYXR1cmVzOiBub3JtYWw7IG9ycGhhbnM6IDI7IHdpZG93 +czogMjsgY2xlYXI6IGJvdGg7Ij48L2Rpdj48ZGl2IHN0eWxlPSJtYXJnaW46IDBweDsgcGFkZGlu +ZzogMHB4OyBib3JkZXI6IDBweDsgb3V0bGluZTogMHB4OyBmb250LWZhbWlseTogVGFob21hLCBB +cmlhbCwgU1RIZWl0aSwgU2ltU3VuOyBmb250LXZhcmlhbnQtbGlnYXR1cmVzOiBub3JtYWw7IG9y +cGhhbnM6IDI7IHdpZG93czogMjsgY2xlYXI6IGJvdGg7Ij48aW1nIHNyYz0iaHR0cHM6Ly9tYWls +LW9ubGluZS5ub3Nkbi4xMjcubmV0L3d6cG1tYy9jZTlmOGIzNmUxZmZiZTU1MzI5YzE5NmM4NGZl +NTE5Ny5wbmciIHN0eWxlPSJtYXgtd2lkdGg6IHVuc2V0OyI+PC9kaXY+PGRpdiBzdHlsZT0ibWFy +Z2luOiAwcHg7IHBhZGRpbmc6IDBweDsgYm9yZGVyOiAwcHg7IG91dGxpbmU6IDBweDsgZm9udC1m +YW1pbHk6IFRhaG9tYSwgQXJpYWwsIFNUSGVpdGksIFNpbVN1bjsgZm9udC12YXJpYW50LWxpZ2F0 +dXJlczogbm9ybWFsOyBvcnBoYW5zOiAyOyB3aWRvd3M6IDI7IGNsZWFyOiBib3RoOyI+PHNwYW4g +c3R5bGU9Im1hcmdpbjogMHB4OyBwYWRkaW5nOiAwcHg7IGJvcmRlcjogMHB4OyBvdXRsaW5lOiAw +cHg7IGZvbnQtZmFtaWx5OiAmcXVvdDtNaWNyb3NvZnQgWWFoZWkmcXVvdDs7IGNvbG9yOiByZ2Io +MTkxLCAxOTEsIDE5MSk7Ij7lnLDlnYDvvJrkuK3lm73Ct+WNl+S6rOS6keWvhuWfjkzmoIs1LzEw +5qW8PC9zcGFuPjwvZGl2PjxkaXYgc3R5bGU9Im1hcmdpbjogMHB4OyBwYWRkaW5nOiAwcHg7IGJv +cmRlcjogMHB4OyBvdXRsaW5lOiAwcHg7IGZvbnQtZmFtaWx5OiBUYWhvbWEsIEFyaWFsLCBTVEhl +aXRpLCBTaW1TdW47IGZvbnQtdmFyaWFudC1saWdhdHVyZXM6IG5vcm1hbDsgb3JwaGFuczogMjsg +d2lkb3dzOiAyOyBjbGVhcjogYm90aDsiPjxzcGFuIHN0eWxlPSJtYXJnaW46IDBweDsgcGFkZGlu +ZzogMHB4OyBib3JkZXI6IDBweDsgb3V0bGluZTogMHB4OyBmb250LWZhbWlseTogJnF1b3Q7TWlj +cm9zb2Z0IFlhaGVpJnF1b3Q7OyBjb2xvcjogcmdiKDE5MSwgMTkxLCAxOTEpOyI+5omL5py677ya +MTg3MjYxMjg0ODk8L3NwYW4+PC9kaXY+PGRpdiBzdHlsZT0ibWFyZ2luOiAwcHg7IHBhZGRpbmc6 +IDBweDsgYm9yZGVyOiAwcHg7IG91dGxpbmU6IDBweDsgZm9udC1mYW1pbHk6IFRhaG9tYSwgQXJp +YWwsIFNUSGVpdGksIFNpbVN1bjsgZm9udC12YXJpYW50LWxpZ2F0dXJlczogbm9ybWFsOyBvcnBo +YW5zOiAyOyB3aWRvd3M6IDI7IGNsZWFyOiBib3RoOyI+PHNwYW4gc3R5bGU9Im1hcmdpbjogMHB4 +OyBwYWRkaW5nOiAwcHg7IGJvcmRlcjogMHB4OyBvdXRsaW5lOiAwcHg7IGZvbnQtZmFtaWx5OiAm +cXVvdDtNaWNyb3NvZnQgWWFoZWkmcXVvdDs7IGNvbG9yOiByZ2IoMTkxLCAxOTEsIDE5MSk7Ij7p +gq7nrrHvvJp5YW5neHVhbkB3aXRzb2Z0LmNuPC9zcGFuPjwvZGl2Pgo8L2Rpdj4KPC9kaXY+Cjwv +ZGl2Pgo8L2Rpdj4KPC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PCEtLfCfmIAtLT48L2Rpdj48L2Rp +dj48L2JvZHk+PC9odG1sPg== + +--=_mailmaster-6a18e4a4_0_4d06_=-- diff --git a/media/inbound/2026-03-06_1703_G5开发周报_2026-03-02_--_2026-03-06---79624c86-6ae5-4b39-9e06-4e10dc5fdea2.eml b/media/inbound/2026-03-06_1703_G5开发周报_2026-03-02_--_2026-03-06---79624c86-6ae5-4b39-9e06-4e10dc5fdea2.eml new file mode 100644 index 0000000..71eba01 --- /dev/null +++ b/media/inbound/2026-03-06_1703_G5开发周报_2026-03-02_--_2026-03-06---79624c86-6ae5-4b39-9e06-4e10dc5fdea2.eml @@ -0,0 +1,365 @@ +Date: Fri, 6 Mar 2026 17:03:45 +0800 +From: =?utf-8?B?5p2o6L2p?= +To: =?utf-8?B?5YiY5by6?= +Cc: =?utf-8?B?5bGI5paw6b6Z?= , =?utf-8?B?5pyx5paM?= + , =?utf-8?B?6ZmI5piO?= , + =?utf-8?B?6KKB5pm0?= +Message-ID: <4351C568-815B-42E0-A03D-100812C3A198@witsoft.cn> +Subject: =?utf-8?B?RzXlvIDlj5HlkajmiqXjgJAyMDI2LTAzLTAyIC0tICAyMDI2LTAz?= + =?utf-8?B?LTA244CR?= +MIME-Version: 1.0 +Content-Type: multipart/alternative; boundary="=_mailmaster-6a18e4a4_0_4db7_=" + +--=_mailmaster-6a18e4a4_0_4db7_= +Content-Type: text/plain; charset="utf-8" +Content-Transfer-Encoding: base64 + +5oKo5aW977yB5Lul5LiL5piv5oiR5pys5ZGo55qE5bel5L2c5oC757uT5Y+K5LiL5ZGo6K6h5YiS +77yM6K+35a6h6ZiF44CCCuS4gOOAgeacrOWRqOW3peS9nOaAu+e7kwrph43ngrnlt6XkvZzlrozm +iJDmg4XlhrUK5Lu75YqhMe+8mkc15Li75pWw5o2uNS40LjXpnIDmsYLlvIDlj5EK5Lu75YqhMu+8 +mkc16L+b6ZSA5a2YNS40LjXpnIDmsYLlvIDlj5EK5bi46KeE5bel5L2cCuaXpeW4uOS6i+WKoTHv +vJoyMDI2LTAzLTAyCjEuIOeJiOacrOWPkeW4g+aUr+aMgSAKMi4g6ZyA5rGC5bel5pe26K+E5Lyw +CuaXpeW4uOS6i+WKoTLvvJoyMDI2LTAzLTAzCjEuIOeJqeaWmeS/oeaBr+WvvOWHuuWKoOWFpeaK +peW6n+S7k+W6k++8jOiJr+WTgeS7k+W6k+S7peWPiui/lOW3pei/lOS/ruS7k+W6k+S4ieS4quWt +l+autSAKMi4g5Yid5aeL5YyW6YeH6LSt6K6i5Y2V5bqP5YiX5Y+3IAozLiDpgJrnlKjmiZPljbDm +rKHmlbDntK/orqHlip/og73lvIDlj5EK5pel5bi45LqL5YqhM++8mjIwMjYtMDMtMDQKMS4g6ZSA +5ZSu5omT5Y2w5qyh5pWw5Yqf6IO96L2s5rWLIAoyLiDph4fotK3miZPljbDmrKHmlbDlip/og73o +vazmtYsK5pel5bi45LqL5YqhNO+8mjIwMjYtMDMtMDUKMS4g5Li75pWw5o2u5Zu+54mH5bGV56S6 +5oqA5pyv6aKE56CUIAoyLiDkuLvmlbDmja7mjqXlj6Plm77niYfov5Tlm57mlrnmoYjnoa7orqQg +CjMuIOS4u+aVsOaNrm1pbmlvIOaOpeWPo+aUuemAoArml6XluLjkuovliqE177yaMjAyNi0wMy0w +NgoxLiDlr7zlhaXmlofku7blip/og73mlLnpgKAgCjIuIOWbvueJh+aUuemAoOWujOaIkOi9rOa1 +iwozLiDlupPlrZjmiZPljbDmrKHmlbDlip/og73lvIDlj5EK5LiA44CB5LiL5ZGo6YeN54K55Lu7 +5YqhCjUuNC4154mI5pys5byA5Y+RCuWkh+azqO+8mgpCZXN0IHJlZ2FyZHMs5p2o6L2pCuWcsOWd +gO+8muS4reWbvcK35Y2X5Lqs5LqR5a+G5Z+OTOagizUvMTDmpbwK5omL5py677yaMTg3MjYxMjg0 +ODkK6YKu566x77yaeWFuZ3h1YW5Ad2l0c29mdC5jbg== + +--=_mailmaster-6a18e4a4_0_4db7_= +Content-Type: text/html; charset="utf-8" +Content-Transfer-Encoding: base64 + +PGh0bWw+PGhlYWQ+PG1ldGEgaHR0cC1lcXVpdj0nQ29udGVudC1UeXBlJyBjb250ZW50PSd0ZXh0 +L2h0bWw7IGNoYXJzZXQ9VVRGLTgnPjwvaGVhZD48Ym9keSBzdHlsZT1saW5lLWhlaWdodDogMS41 +O2ZvbnQtZmFtaWx5OiAi5b6u6L2v6ZuF6buRIj48ZGl2ICBzdHlsZT0iZm9udC1mYW1pbHk6IOW+ +rui9r+mbhem7kTsiPjxkaXYgc3R5bGU9IiI+PGRpdiBzdHlsZT0iIj48ZGl2IHN0eWxlPSIiPjxk +aXYgc3R5bGU9IiIgMS41O2ZvbnQtZmFtaWx5Oj0iIiAi5b6u6L2v6ZuF6buRIj0iIj48ZGl2IHN0 +eWxlPSIiPjxkaXYgc3R5bGU9IiI+PGRpdiBzdHlsZT0iIj48ZGl2IHN0eWxlPSIiPjxwIGNpZD0i +bjAiIG1kdHlwZT0icGFyYWdyYXBoIiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLXAgbWQtZm9jdXMi +IHN0eWxlPSJmb250LWZhbWlseTogJnF1b3Q7T3BlbiBTYW5zJnF1b3Q7LCAmcXVvdDtDbGVhciBT +YW5zJnF1b3Q7LCAmcXVvdDtIZWx2ZXRpY2EgTmV1ZSZxdW90OywgSGVsdmV0aWNhLCBBcmlhbCwg +c2Fucy1zZXJpZjsgYm94LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7 +IG9ycGhhbnM6IDQ7IG1hcmdpbjogMC44ZW0gMHB4OyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBv +c2l0aW9uOiByZWxhdGl2ZTsgY29sb3I6IHJnYig1MSwgNTEsIDUxKTsgZm9udC1zaXplOiAxNnB4 +OyI+PHNwYW4gbWQtaW5saW5lPSJwbGFpbiIgY2xhc3M9Im1kLXBsYWluIG1kLWV4cGFuZCIgc3R5 +bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij7mgqjlpb3vvIHku6XkuIvmmK/miJHmnKzlkajn +moTlt6XkvZzmgLvnu5Plj4rkuIvlkajorqHliJLvvIzor7flrqHpmIXjgII8L3NwYW4+PC9wPjxk +aXYgdGFiaW5kZXg9Ii0xIiBjaWQ9Im4yIiBtZHR5cGU9ImhyIiBjbGFzcz0ibWQtaHIgbWQtZW5k +LWJsb2NrIiBzdHlsZT0iZm9udC1mYW1pbHk6ICZxdW90O09wZW4gU2FucyZxdW90OywgJnF1b3Q7 +Q2xlYXIgU2FucyZxdW90OywgJnF1b3Q7SGVsdmV0aWNhIE5ldWUmcXVvdDssIEhlbHZldGljYSwg +QXJpYWwsIHNhbnMtc2VyaWY7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7IGNvbG9yOiByZ2IoNTEs +IDUxLCA1MSk7IGZvbnQtc2l6ZTogMTZweDsiPjxociBzdHlsZT0iYm94LXNpemluZzogY29udGVu +dC1ib3g7IGhlaWdodDogMnB4OyBtYXJnaW46IDE2cHggMHB4OyBib3JkZXI6IDBweCBub25lOyBw +YWRkaW5nOiAwcHg7IGJhY2tncm91bmQtY29sb3I6IHJnYigyMzEsIDIzMSwgMjMxKTsiPjwvZGl2 +PjxoMyBjaWQ9Im4zIiBtZHR5cGU9ImhlYWRpbmciIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtaGVh +ZGluZyIgc3R5bGU9ImZvbnQtZmFtaWx5OiAmcXVvdDtPcGVuIFNhbnMmcXVvdDssICZxdW90O0Ns +ZWFyIFNhbnMmcXVvdDssICZxdW90O0hlbHZldGljYSBOZXVlJnF1b3Q7LCBIZWx2ZXRpY2EsIEFy +aWFsLCBzYW5zLXNlcmlmOyBib3gtc2l6aW5nOiBib3JkZXItYm94OyBicmVhay1hZnRlcjogYXZv +aWQtcGFnZTsgYnJlYWstaW5zaWRlOiBhdm9pZDsgb3JwaGFuczogNDsgZm9udC1zaXplOiAxLjVl +bTsgbWFyZ2luLXRvcDogMXJlbTsgbWFyZ2luLWJvdHRvbTogMXJlbTsgcG9zaXRpb246IHJlbGF0 +aXZlOyBsaW5lLWhlaWdodDogMS40MzsgY3Vyc29yOiB0ZXh0OyB3aGl0ZS1zcGFjZTogcHJlLXdy +YXA7IGNvbG9yOiByZ2IoNTEsIDUxLCA1MSk7Ij48c3BhbiBtZC1pbmxpbmU9InN0cm9uZyIgY2xh +c3M9Im1kLXBhaXItcyAiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+PHN0cm9uZyBz +dHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPjxzcGFuIG1kLWlubGluZT0icGxhaW4iIGNs +YXNzPSJtZC1wbGFpbiIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij7kuIDjgIHmnKzl +kajlt6XkvZzmgLvnu5M8L3NwYW4+PC9zdHJvbmc+PC9zcGFuPjwvaDM+PG9sIGNsYXNzPSJvbC1s +aXN0IiBzdGFydD0iIiBjaWQ9Im40IiBtZHR5cGU9Imxpc3QiIHN0eWxlPSJmb250LWZhbWlseTog +JnF1b3Q7T3BlbiBTYW5zJnF1b3Q7LCAmcXVvdDtDbGVhciBTYW5zJnF1b3Q7LCAmcXVvdDtIZWx2 +ZXRpY2EgTmV1ZSZxdW90OywgSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjsgYm94LXNpemlu +ZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBhZGRpbmctbGVmdDogMzBweDsgcG9zaXRpb246 +IHJlbGF0aXZlOyBjb2xvcjogcmdiKDUxLCA1MSwgNTEpOyBmb250LXNpemU6IDE2cHg7Ij48bGkg +Y2xhc3M9Im1kLWxpc3QtaXRlbSIgY2lkPSJuNSIgbWR0eXBlPSJsaXN0X2l0ZW0iIHN0eWxlPSJi +b3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcG9zaXRpb246IHJlbGF0aXZlOyI+ +PHAgY2lkPSJuNiIgbWR0eXBlPSJwYXJhZ3JhcGgiIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCIg +c3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhlcml0OyBvcnBo +YW5zOiA0OyBtYXJnaW46IDBweCAwcHggMC41cmVtOyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBv +c2l0aW9uOiByZWxhdGl2ZTsiPjxzcGFuIG1kLWlubGluZT0ic3Ryb25nIiBjbGFzcz0ibWQtcGFp +ci1zICIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij48c3Ryb25nIHN0eWxlPSJib3gt +c2l6aW5nOiBib3JkZXItYm94OyI+PHNwYW4gbWQtaW5saW5lPSJwbGFpbiIgY2xhc3M9Im1kLXBs +YWluIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPumHjeeCueW3peS9nOWujOaIkOaD +heWGtTwvc3Bhbj48L3N0cm9uZz48L3NwYW4+PC9wPjwvbGk+PHVsIGNsYXNzPSJ1bC1saXN0IiBj +aWQ9Im43IiBtZHR5cGU9Imxpc3QiIGRhdGEtbWFyaz0iLSIgc3R5bGU9ImJveC1zaXppbmc6IGJv +cmRlci1ib3g7IG1hcmdpbjogMHB4OyBwYWRkaW5nLWxlZnQ6IDMwcHg7IHBvc2l0aW9uOiByZWxh +dGl2ZTsiPjxsaSBjbGFzcz0ibWQtbGlzdC1pdGVtIiBjaWQ9Im44IiBtZHR5cGU9Imxpc3RfaXRl +bSIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBwb3NpdGlvbjog +cmVsYXRpdmU7Ij48cCBjaWQ9Im45IiBtZHR5cGU9InBhcmFncmFwaCIgY2xhc3M9Im1kLWVuZC1i +bG9jayBtZC1wIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGlu +aGVyaXQ7IG9ycGhhbnM6IDQ7IG1hcmdpbjogMHB4IDBweCAwLjVyZW07IHdoaXRlLXNwYWNlOiBw +cmUtd3JhcDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHNwYW4gbWQtaW5saW5lPSJwbGFpbiIgY2xh +c3M9Im1kLXBsYWluIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPuS7u+WKoTHvvJpH +NeS4u+aVsOaNrjUuNC416ZyA5rGC5byA5Y+RPC9zcGFuPjwvcD48L2xpPjxsaSBjbGFzcz0ibWQt +bGlzdC1pdGVtIiBjaWQ9Im4xMCIgbWR0eXBlPSJsaXN0X2l0ZW0iIHN0eWxlPSJib3gtc2l6aW5n +OiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHAgY2lkPSJu +MTEiIG1kdHlwZT0icGFyYWdyYXBoIiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLXAiIHN0eWxlPSJi +b3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5oZXJpdDsgb3JwaGFuczogNDsg +bWFyZ2luOiAwcHggMHB4IDAuNXJlbTsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyBwb3NpdGlvbjog +cmVsYXRpdmU7Ij7ku7vliqEy77yaRzXov5vplIDlrZg1LjQuNemcgOaxguW8gOWPkTwvcD48L2xp +PjwvdWw+PGxpIGNsYXNzPSJtZC1saXN0LWl0ZW0iIGNpZD0ibjEyIiBtZHR5cGU9Imxpc3RfaXRl +bSIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBwb3NpdGlvbjog +cmVsYXRpdmU7Ij48cCBjaWQ9Im4xMyIgbWR0eXBlPSJwYXJhZ3JhcGgiIGNsYXNzPSJtZC1lbmQt +YmxvY2sgbWQtcCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGxpbmUtaGVpZ2h0OiBp +bmhlcml0OyBvcnBoYW5zOiA0OyBtYXJnaW46IDBweCAwcHggMC41cmVtOyB3aGl0ZS1zcGFjZTog +cHJlLXdyYXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxzcGFuIG1kLWlubGluZT0ic3Ryb25nIiBj +bGFzcz0ibWQtcGFpci1zICIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij48c3Ryb25n +IHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+PHNwYW4gbWQtaW5saW5lPSJwbGFpbiIg +Y2xhc3M9Im1kLXBsYWluIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPuW4uOinhOW3 +peS9nDwvc3Bhbj48L3N0cm9uZz48L3NwYW4+PC9wPjwvbGk+PC9vbD48b2wgY2xhc3M9Im9sLWxp +c3QiIHN0YXJ0PSIiIGNpZD0ibjQiIG1kdHlwZT0ibGlzdCIgc3R5bGU9ImZvbnQtZmFtaWx5OiAm +cXVvdDtPcGVuIFNhbnMmcXVvdDssICZxdW90O0NsZWFyIFNhbnMmcXVvdDssICZxdW90O0hlbHZl +dGljYSBOZXVlJnF1b3Q7LCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmOyBib3gtc2l6aW5n +OiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcGFkZGluZy1sZWZ0OiAzMHB4OyBwb3NpdGlvbjog +cmVsYXRpdmU7IGNvbG9yOiByZ2IoNTEsIDUxLCA1MSk7IGZvbnQtc2l6ZTogMTZweDsiPjx1bCBj +bGFzcz0idWwtbGlzdCIgY2lkPSJuMTQiIG1kdHlwZT0ibGlzdCIgZGF0YS1tYXJrPSItIiBzdHls +ZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBhZGRpbmctbGVmdDogMzBw +eDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PGxpIGNsYXNzPSJtZC1saXN0LWl0ZW0iIGNpZD0ibjE1 +IiBtZHR5cGU9Imxpc3RfaXRlbSIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdp +bjogMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48cCBjaWQ9Im4xNiIgbWR0eXBlPSJwYXJhZ3Jh +cGgiIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1i +b3g7IGxpbmUtaGVpZ2h0OiBpbmhlcml0OyBvcnBoYW5zOiA0OyBtYXJnaW46IDBweCAwcHggMC41 +cmVtOyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxzcGFuIG1k +LWlubGluZT0icGxhaW4iIGNsYXNzPSJtZC1wbGFpbiIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRl +ci1ib3g7Ij7ml6XluLjkuovliqEx77yaMjAyNi0wMy0wMjwvc3Bhbj48L3A+PC9saT48dWwgc3R5 +bGU9Imxpc3Qtc3R5bGUtdHlwZTogc3F1YXJlOyI+PGxpIGNsYXNzPSJtZC1saXN0LWl0ZW0iIGNp +ZD0ibjE1IiBtZHR5cGU9Imxpc3RfaXRlbSIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7 +IG1hcmdpbjogMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48cCBjaWQ9Im4xNiIgbWR0eXBlPSJw +YXJhZ3JhcGgiIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCIgc3R5bGU9ImJveC1zaXppbmc6IGJv +cmRlci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhlcml0OyBvcnBoYW5zOiA0OyBtYXJnaW46IDBweCAw +cHggMC41cmVtOyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjEu +IOeJiOacrOWPkeW4g+aUr+aMgQo8L3A+PC9saT48bGkgY2xhc3M9Im1kLWxpc3QtaXRlbSIgY2lk +PSJuMTUiIG1kdHlwZT0ibGlzdF9pdGVtIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsg +bWFyZ2luOiAwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxwIGNpZD0ibjE2IiBtZHR5cGU9InBh +cmFncmFwaCIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1wIiBzdHlsZT0iYm94LXNpemluZzogYm9y +ZGVyLWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IG9ycGhhbnM6IDQ7IG1hcmdpbjogMHB4IDBw +eCAwLjVyZW07IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJlbGF0aXZlOyI+Mi4g +6ZyA5rGC5bel5pe26K+E5LywPC9wPjwvbGk+PC91bD48L3VsPjwvb2w+PG9sIGNsYXNzPSJvbC1s +aXN0IiBzdGFydD0iIiBjaWQ9Im40IiBtZHR5cGU9Imxpc3QiIHN0eWxlPSJmb250LWZhbWlseTog +5b6u6L2v6ZuF6buROyBib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcGFkZGlu +Zy1sZWZ0OiAzMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48dWwgY2xhc3M9InVsLWxpc3QiIGNp +ZD0ibjE0IiBtZHR5cGU9Imxpc3QiIGRhdGEtbWFyaz0iLSIgc3R5bGU9ImZvbnQtZmFtaWx5OiDl +vq7ova/pm4Xpu5E7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBwYWRkaW5n +LWxlZnQ6IDMwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxsaSBjbGFzcz0ibWQtbGlzdC1pdGVt +IiBjaWQ9Im4xNSIgbWR0eXBlPSJsaXN0X2l0ZW0iIHN0eWxlPSJjb2xvcjogcmdiKDUxLCA1MSwg +NTEpOyBmb250LWZhbWlseTogJnF1b3Q7T3BlbiBTYW5zJnF1b3Q7LCAmcXVvdDtDbGVhciBTYW5z +JnF1b3Q7LCAmcXVvdDtIZWx2ZXRpY2EgTmV1ZSZxdW90OywgSGVsdmV0aWNhLCBBcmlhbCwgc2Fu +cy1zZXJpZjsgZm9udC1zaXplOiAxNnB4OyBib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46 +IDBweDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHAgY2lkPSJuMTYiIG1kdHlwZT0icGFyYWdyYXBo +IiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLXAiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94 +OyBsaW5lLWhlaWdodDogaW5oZXJpdDsgb3JwaGFuczogNDsgbWFyZ2luOiAwcHggMHB4IDAuNXJl +bTsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48c3BhbiBtZC1p +bmxpbmU9InBsYWluIiBjbGFzcz0ibWQtcGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXIt +Ym94OyI+5pel5bi45LqL5YqhMu+8mjIwMjYtMDMtMDM8L3NwYW4+PC9wPjwvbGk+PHVsIHN0eWxl +PSJsaXN0LXN0eWxlLXR5cGU6IHNxdWFyZTsiPjxsaSBjbGFzcz0ibWQtbGlzdC1pdGVtIiBjaWQ9 +Im4xNSIgbWR0eXBlPSJsaXN0X2l0ZW0iIHN0eWxlPSJjb2xvcjogcmdiKDUxLCA1MSwgNTEpOyBm +b250LWZhbWlseTogJnF1b3Q7T3BlbiBTYW5zJnF1b3Q7LCAmcXVvdDtDbGVhciBTYW5zJnF1b3Q7 +LCAmcXVvdDtIZWx2ZXRpY2EgTmV1ZSZxdW90OywgSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJp +ZjsgZm9udC1zaXplOiAxNnB4OyBib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsg +cG9zaXRpb246IHJlbGF0aXZlOyI+PHAgY2lkPSJuMTYiIG1kdHlwZT0icGFyYWdyYXBoIiBjbGFz +cz0ibWQtZW5kLWJsb2NrIG1kLXAiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5l +LWhlaWdodDogaW5oZXJpdDsgb3JwaGFuczogNDsgbWFyZ2luOiAwcHggMHB4IDAuNXJlbTsgd2hp +dGUtc3BhY2U6IHByZS13cmFwOyBwb3NpdGlvbjogcmVsYXRpdmU7Ij4xLiDnianmlpnkv6Hmga/l +r7zlh7rliqDlhaXmiqXlup/ku5PlupPvvIzoia/lk4Hku5PlupPku6Xlj4rov5Tlt6Xov5Tkv67k +u5PlupPkuInkuKrlrZfmrrUKPC9wPjwvbGk+PGxpIGNsYXNzPSJtZC1saXN0LWl0ZW0iIGNpZD0i +bjE1IiBtZHR5cGU9Imxpc3RfaXRlbSIgc3R5bGU9ImNvbG9yOiByZ2IoNTEsIDUxLCA1MSk7IGZv +bnQtZmFtaWx5OiAmcXVvdDtPcGVuIFNhbnMmcXVvdDssICZxdW90O0NsZWFyIFNhbnMmcXVvdDss +ICZxdW90O0hlbHZldGljYSBOZXVlJnF1b3Q7LCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlm +OyBmb250LXNpemU6IDE2cHg7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBw +b3NpdGlvbjogcmVsYXRpdmU7Ij48cCBjaWQ9Im4xNiIgbWR0eXBlPSJwYXJhZ3JhcGgiIGNsYXNz +PSJtZC1lbmQtYmxvY2sgbWQtcCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGxpbmUt +aGVpZ2h0OiBpbmhlcml0OyBvcnBoYW5zOiA0OyBtYXJnaW46IDBweCAwcHggMC41cmVtOyB3aGl0 +ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjIuIOWIneWni+WMlumHh+i0 +reiuouWNleW6j+WIl+WPtwo8L3A+PC9saT48bGkgY2xhc3M9Im1kLWxpc3QtaXRlbSIgY2lkPSJu +MTUiIG1kdHlwZT0ibGlzdF9pdGVtIiBzdHlsZT0iY29sb3I6IHJnYig1MSwgNTEsIDUxKTsgZm9u +dC1mYW1pbHk6ICZxdW90O09wZW4gU2FucyZxdW90OywgJnF1b3Q7Q2xlYXIgU2FucyZxdW90Oywg +JnF1b3Q7SGVsdmV0aWNhIE5ldWUmcXVvdDssIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7 +IGZvbnQtc2l6ZTogMTZweDsgYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBv +c2l0aW9uOiByZWxhdGl2ZTsiPjxwIGNpZD0ibjE2IiBtZHR5cGU9InBhcmFncmFwaCIgY2xhc3M9 +Im1kLWVuZC1ibG9jayBtZC1wIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1o +ZWlnaHQ6IGluaGVyaXQ7IG9ycGhhbnM6IDQ7IG1hcmdpbjogMHB4IDBweCAwLjVyZW07IHdoaXRl +LXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJlbGF0aXZlOyI+My4g6YCa55So5omT5Y2w5qyh +5pWw57Sv6K6h5Yqf6IO95byA5Y+RPC9wPjwvbGk+PC91bD48bGkgY2xhc3M9Im1kLWxpc3QtaXRl +bSIgY2lkPSJuMTciIG1kdHlwZT0ibGlzdF9pdGVtIiBzdHlsZT0iY29sb3I6IHJnYig1MSwgNTEs +IDUxKTsgZm9udC1mYW1pbHk6ICZxdW90O09wZW4gU2FucyZxdW90OywgJnF1b3Q7Q2xlYXIgU2Fu +cyZxdW90OywgJnF1b3Q7SGVsdmV0aWNhIE5ldWUmcXVvdDssIEhlbHZldGljYSwgQXJpYWwsIHNh +bnMtc2VyaWY7IGZvbnQtc2l6ZTogMTZweDsgYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2lu +OiAwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxwIGNpZD0ibjE4IiBtZHR5cGU9InBhcmFncmFw +aCIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1wIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJv +eDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IG9ycGhhbnM6IDQ7IG1hcmdpbjogMHB4IDBweCAwLjVy +ZW07IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHNwYW4gbWQt +aW5saW5lPSJwbGFpbiIgY2xhc3M9Im1kLXBsYWluIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVy +LWJveDsiPuaXpeW4uOS6i+WKoTPvvJoyMDI2LTAzLTA0PC9zcGFuPjwvcD48L2xpPjx1bCBzdHls +ZT0ibGlzdC1zdHlsZS10eXBlOiBzcXVhcmU7Ij48bGkgY2xhc3M9Im1kLWxpc3QtaXRlbSIgY2lk +PSJuMTciIG1kdHlwZT0ibGlzdF9pdGVtIiBzdHlsZT0iY29sb3I6IHJnYig1MSwgNTEsIDUxKTsg +Zm9udC1mYW1pbHk6ICZxdW90O09wZW4gU2FucyZxdW90OywgJnF1b3Q7Q2xlYXIgU2FucyZxdW90 +OywgJnF1b3Q7SGVsdmV0aWNhIE5ldWUmcXVvdDssIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2Vy +aWY7IGZvbnQtc2l6ZTogMTZweDsgYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7 +IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxwIGNpZD0ibjE4IiBtZHR5cGU9InBhcmFncmFwaCIgY2xh +c3M9Im1kLWVuZC1ibG9jayBtZC1wIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbGlu +ZS1oZWlnaHQ6IGluaGVyaXQ7IG9ycGhhbnM6IDQ7IG1hcmdpbjogMHB4IDBweCAwLjVyZW07IHdo +aXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJlbGF0aXZlOyI+MS4g6ZSA5ZSu5omT5Y2w +5qyh5pWw5Yqf6IO96L2s5rWLCjwvcD48L2xpPjxsaSBjbGFzcz0ibWQtbGlzdC1pdGVtIiBjaWQ9 +Im4xNyIgbWR0eXBlPSJsaXN0X2l0ZW0iIHN0eWxlPSJjb2xvcjogcmdiKDUxLCA1MSwgNTEpOyBm +b250LWZhbWlseTogJnF1b3Q7T3BlbiBTYW5zJnF1b3Q7LCAmcXVvdDtDbGVhciBTYW5zJnF1b3Q7 +LCAmcXVvdDtIZWx2ZXRpY2EgTmV1ZSZxdW90OywgSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJp +ZjsgZm9udC1zaXplOiAxNnB4OyBib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsg +cG9zaXRpb246IHJlbGF0aXZlOyI+PHAgY2lkPSJuMTgiIG1kdHlwZT0icGFyYWdyYXBoIiBjbGFz +cz0ibWQtZW5kLWJsb2NrIG1kLXAiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5l +LWhlaWdodDogaW5oZXJpdDsgb3JwaGFuczogNDsgbWFyZ2luOiAwcHggMHB4IDAuNXJlbTsgd2hp +dGUtc3BhY2U6IHByZS13cmFwOyBwb3NpdGlvbjogcmVsYXRpdmU7Ij4yLiDph4fotK3miZPljbDm +rKHmlbDlip/og73ovazmtYs8L3A+PC9saT48L3VsPjwvdWw+PC9vbD48b2wgY2xhc3M9Im9sLWxp +c3QiIHN0YXJ0PSIiIGNpZD0ibjQiIG1kdHlwZT0ibGlzdCIgc3R5bGU9ImJveC1zaXppbmc6IGJv +cmRlci1ib3g7IG1hcmdpbjogMHB4OyBwYWRkaW5nLWxlZnQ6IDMwcHg7IHBvc2l0aW9uOiByZWxh +dGl2ZTsiPjx1bCBjbGFzcz0idWwtbGlzdCIgY2lkPSJuMTQiIG1kdHlwZT0ibGlzdCIgZGF0YS1t +YXJrPSItIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBhZGRp +bmctbGVmdDogMzBweDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PGxpIGNsYXNzPSJtZC1saXN0LWl0 +ZW0iIGNpZD0ibjE3IiBtZHR5cGU9Imxpc3RfaXRlbSIgc3R5bGU9ImZvbnQtZmFtaWx5OiAmcXVv +dDtPcGVuIFNhbnMmcXVvdDssICZxdW90O0NsZWFyIFNhbnMmcXVvdDssICZxdW90O0hlbHZldGlj +YSBOZXVlJnF1b3Q7LCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmOyBjb2xvcjogcmdiKDUx +LCA1MSwgNTEpOyBmb250LXNpemU6IDE2cHg7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdp +bjogMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48cCBjaWQ9Im4xOCIgbWR0eXBlPSJwYXJhZ3Jh +cGgiIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1i +b3g7IGxpbmUtaGVpZ2h0OiBpbmhlcml0OyBvcnBoYW5zOiA0OyBtYXJnaW46IDBweCAwcHggMC41 +cmVtOyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxzcGFuIG1k +LWlubGluZT0icGxhaW4iIGNsYXNzPSJtZC1wbGFpbiIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRl +ci1ib3g7Ij7ml6XluLjkuovliqE077yaMjAyNi0wMy0wNTwvc3Bhbj48L3A+PC9saT48dWwgc3R5 +bGU9ImZvbnQtZmFtaWx5OiDlvq7ova/pm4Xpu5E7IGxpc3Qtc3R5bGUtdHlwZTogc3F1YXJlOyI+ +PGxpIGNsYXNzPSJtZC1saXN0LWl0ZW0iIGNpZD0ibjE3IiBtZHR5cGU9Imxpc3RfaXRlbSIgc3R5 +bGU9ImZvbnQtZmFtaWx5OiAmcXVvdDtPcGVuIFNhbnMmcXVvdDssICZxdW90O0NsZWFyIFNhbnMm +cXVvdDssICZxdW90O0hlbHZldGljYSBOZXVlJnF1b3Q7LCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5z +LXNlcmlmOyBjb2xvcjogcmdiKDUxLCA1MSwgNTEpOyBmb250LXNpemU6IDE2cHg7IGJveC1zaXpp +bmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48cCBjaWQ9 +Im4xOCIgbWR0eXBlPSJwYXJhZ3JhcGgiIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCIgc3R5bGU9 +ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhlcml0OyBvcnBoYW5zOiA0 +OyBtYXJnaW46IDBweCAwcHggMC41cmVtOyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0aW9u +OiByZWxhdGl2ZTsiPjEuIOS4u+aVsOaNruWbvueJh+WxleekuuaKgOacr+mihOeglAo8L3A+PC9s +aT48bGkgY2xhc3M9Im1kLWxpc3QtaXRlbSIgY2lkPSJuMTciIG1kdHlwZT0ibGlzdF9pdGVtIiBz +dHlsZT0iZm9udC1mYW1pbHk6ICZxdW90O09wZW4gU2FucyZxdW90OywgJnF1b3Q7Q2xlYXIgU2Fu +cyZxdW90OywgJnF1b3Q7SGVsdmV0aWNhIE5ldWUmcXVvdDssIEhlbHZldGljYSwgQXJpYWwsIHNh +bnMtc2VyaWY7IGNvbG9yOiByZ2IoNTEsIDUxLCA1MSk7IGZvbnQtc2l6ZTogMTZweDsgYm94LXNp +emluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxwIGNp +ZD0ibjE4IiBtZHR5cGU9InBhcmFncmFwaCIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1wIiBzdHls +ZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IG9ycGhhbnM6 +IDQ7IG1hcmdpbjogMHB4IDBweCAwLjVyZW07IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRp +b246IHJlbGF0aXZlOyI+Mi4g5Li75pWw5o2u5o6l5Y+j5Zu+54mH6L+U5Zue5pa55qGI56Gu6K6k +CjwvcD48L2xpPjxsaSBjbGFzcz0ibWQtbGlzdC1pdGVtIiBjaWQ9Im4xNyIgbWR0eXBlPSJsaXN0 +X2l0ZW0iIHN0eWxlPSJmb250LWZhbWlseTogJnF1b3Q7T3BlbiBTYW5zJnF1b3Q7LCAmcXVvdDtD +bGVhciBTYW5zJnF1b3Q7LCAmcXVvdDtIZWx2ZXRpY2EgTmV1ZSZxdW90OywgSGVsdmV0aWNhLCBB +cmlhbCwgc2Fucy1zZXJpZjsgY29sb3I6IHJnYig1MSwgNTEsIDUxKTsgZm9udC1zaXplOiAxNnB4 +OyBib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcG9zaXRpb246IHJlbGF0aXZl +OyI+PHAgY2lkPSJuMTgiIG1kdHlwZT0icGFyYWdyYXBoIiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1k +LXAiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5oZXJpdDsg +b3JwaGFuczogNDsgbWFyZ2luOiAwcHggMHB4IDAuNXJlbTsgd2hpdGUtc3BhY2U6IHByZS13cmFw +OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij4zLiDkuLvmlbDmja5taW5pbyDmjqXlj6PmlLnpgKA8L3A+ +PC9saT48L3VsPjxsaSBzdHlsZT0iZm9udC1mYW1pbHk6IOW+rui9r+mbhem7kTsiPjxmb250IGNv +bG9yPSIjMzMzMzMzIiBmYWNlPSJPcGVuIFNhbnMsIENsZWFyIFNhbnMsIEhlbHZldGljYSBOZXVl +LCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmIj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAx +NnB4OyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7Ij7ml6XluLjkuovliqE177yaMjAyNi0wMy0wNjwv +c3Bhbj48L2ZvbnQ+PC9saT48dWwgc3R5bGU9Imxpc3Qtc3R5bGUtdHlwZTogc3F1YXJlOyI+PGxp +IHN0eWxlPSIiPjxmb250IGNvbG9yPSIjMzMzMzMzIiBmYWNlPSJPcGVuIFNhbnMsIENsZWFyIFNh +bnMsIEhlbHZldGljYSBOZXVlLCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmIj48c3BhbiBz +dHlsZT0iZm9udC1zaXplOiAxNnB4OyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7Ij4xLiDlr7zlhaXm +lofku7blip/og73mlLnpgKAKPC9zcGFuPjwvZm9udD48L2xpPjxsaSBzdHlsZT0iIj48Zm9udCBj +b2xvcj0iIzMzMzMzMyIgZmFjZT0iT3BlbiBTYW5zLCBDbGVhciBTYW5zLCBIZWx2ZXRpY2EgTmV1 +ZSwgSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZiI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTog +MTZweDsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyI+Mi4g5Zu+54mH5pS56YCg5a6M5oiQ6L2s5rWL +PC9zcGFuPjwvZm9udD48L2xpPjxsaSBzdHlsZT0iIj48Zm9udCBjb2xvcj0iIzMzMzMzMyIgZmFj +ZT0iT3BlbiBTYW5zLCBDbGVhciBTYW5zLCBIZWx2ZXRpY2EgTmV1ZSwgSGVsdmV0aWNhLCBBcmlh +bCwgc2Fucy1zZXJpZiI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTZweDsgd2hpdGUtc3BhY2U6 +IHByZS13cmFwOyI+My4g5bqT5a2Y5omT5Y2w5qyh5pWw5Yqf6IO95byA5Y+RPC9zcGFuPjwvZm9u +dD48L2xpPjwvdWw+PC91bD48L29sPjxoMyBjaWQ9Im4zIiBtZHR5cGU9ImhlYWRpbmciIGNsYXNz +PSJtZC1lbmQtYmxvY2sgbWQtaGVhZGluZyIgc3R5bGU9ImZvbnQtZmFtaWx5OiAmcXVvdDtPcGVu +IFNhbnMmcXVvdDssICZxdW90O0NsZWFyIFNhbnMmcXVvdDssICZxdW90O0hlbHZldGljYSBOZXVl +JnF1b3Q7LCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmOyBib3gtc2l6aW5nOiBib3JkZXIt +Ym94OyBicmVhay1hZnRlcjogYXZvaWQtcGFnZTsgYnJlYWstaW5zaWRlOiBhdm9pZDsgb3JwaGFu +czogNDsgZm9udC1zaXplOiAxLjVlbTsgbWFyZ2luLXRvcDogMXJlbTsgbWFyZ2luLWJvdHRvbTog +MXJlbTsgcG9zaXRpb246IHJlbGF0aXZlOyBsaW5lLWhlaWdodDogMS40MzsgY3Vyc29yOiB0ZXh0 +OyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IGNvbG9yOiByZ2IoNTEsIDUxLCA1MSk7Ij48c3BhbiBt +ZC1pbmxpbmU9InN0cm9uZyIgY2xhc3M9Im1kLXBhaXItcyAiIHN0eWxlPSJib3gtc2l6aW5nOiBi +b3JkZXItYm94OyI+PHN0cm9uZyBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPjxzcGFu +IG1kLWlubGluZT0icGxhaW4iIGNsYXNzPSJtZC1wbGFpbiIgc3R5bGU9ImJveC1zaXppbmc6IGJv +cmRlci1ib3g7Ij7kuIDjgIHkuIvlkajph43ngrnku7vliqE8L3NwYW4+PC9zdHJvbmc+PC9zcGFu +PjwvaDM+PGRpdiBzdHlsZT0iZm9udC1mYW1pbHk6IOW+rui9r+mbhem7kTsiPjUuNC4154mI5pys +5byA5Y+RPC9kaXY+PGRpdiB0YWJpbmRleD0iLTEiIGNpZD0ibjM5IiBtZHR5cGU9ImhyIiBjbGFz +cz0ibWQtaHIgbWQtZW5kLWJsb2NrIiBzdHlsZT0iZm9udC1mYW1pbHk6ICZxdW90O09wZW4gU2Fu +cyZxdW90OywgJnF1b3Q7Q2xlYXIgU2FucyZxdW90OywgJnF1b3Q7SGVsdmV0aWNhIE5ldWUmcXVv +dDssIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7 +IGNvbG9yOiByZ2IoNTEsIDUxLCA1MSk7IGZvbnQtc2l6ZTogMTZweDsiPjxociBzdHlsZT0iYm94 +LXNpemluZzogY29udGVudC1ib3g7IGhlaWdodDogMnB4OyBtYXJnaW46IDE2cHggMHB4OyBib3Jk +ZXI6IDBweCBub25lOyBwYWRkaW5nOiAwcHg7IGJhY2tncm91bmQtY29sb3I6IHJnYigyMzEsIDIz +MSwgMjMxKTsiPjwvZGl2PjxwIGNpZD0ibjQwIiBtZHR5cGU9InBhcmFncmFwaCIgY2xhc3M9Im1k +LWVuZC1ibG9jayBtZC1wIiBzdHlsZT0iZm9udC1mYW1pbHk6ICZxdW90O09wZW4gU2FucyZxdW90 +OywgJnF1b3Q7Q2xlYXIgU2FucyZxdW90OywgJnF1b3Q7SGVsdmV0aWNhIE5ldWUmcXVvdDssIEhl +bHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7IGxpbmUt +aGVpZ2h0OiBpbmhlcml0OyBvcnBoYW5zOiA0OyBtYXJnaW46IDAuOGVtIDBweDsgd2hpdGUtc3Bh +Y2U6IHByZS13cmFwOyBwb3NpdGlvbjogcmVsYXRpdmU7IGNvbG9yOiByZ2IoNTEsIDUxLCA1MSk7 +IGZvbnQtc2l6ZTogMTZweDsiPjxzcGFuIG1kLWlubGluZT0ic3Ryb25nIiBjbGFzcz0ibWQtcGFp +ci1zICIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij48c3Ryb25nIHN0eWxlPSJib3gt +c2l6aW5nOiBib3JkZXItYm94OyI+PHNwYW4gbWQtaW5saW5lPSJwbGFpbiIgY2xhc3M9Im1kLXBs +YWluIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPuWkh+azqDwvc3Bhbj48L3N0cm9u +Zz48L3NwYW4+PHNwYW4gbWQtaW5saW5lPSJwbGFpbiIgY2xhc3M9Im1kLXBsYWluIG1kLWV4cGFu +ZCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij7vvJo8L3NwYW4+PC9wPjwvZGl2Pjxk +aXYgc3R5bGU9ImZvbnQtZmFtaWx5OiDlvq7ova/pm4Xpu5E7Ij48YnI+PC9kaXY+PC9kaXY+PC9k +aXY+PC9kaXY+PC9kaXY+PGRpdiBpZD0iaW1haWxfc2lnbmF0dXJlIiBjbGFzcz0ibnRlcy1zaWdu +YXR1cmUiIHN0eWxlPSJmb250LWZhbWlseTog5b6u6L2v6ZuF6buROyBtYXJnaW46IDIwcHggMHB4 +OyIgZGF0YS1udGVzLXNpZ25hdHVyZT0idHJ1ZSIgc3BlbGxjaGVjaz0iZmFsc2UiPjxkaXYgc3R5 +bGU9ImZvbnQtZmFtaWx5OiZxdW90O+W+rui9r+mbhem7kSZxdW90OzsgZm9udC1zaXplOiAxNHB4 +OyBjb2xvcjojMDAwMDAwIj4KICAgIDxzdHlsZT4KICAgICAgICBmb250ewogICAgICAgICAgICBs +aW5lLWhlaWdodDogMS42OwogICAgICAgIH0KICAgIDwvc3R5bGU+CjxkaXYgc3R5bGU9ImZvbnQt +ZmFtaWx5OiZxdW90O+W+rui9r+mbhem7kSZxdW90OzsgZm9udC1zaXplOiAxNHB4OyBjb2xvcjoj +MDAwMDAwIj4KICAgIDxzdHlsZT4KICAgICAgICBmb250ewogICAgICAgICAgICBsaW5lLWhlaWdo +dDogMS42OwogICAgICAgIH0KICAgIDwvc3R5bGU+CjxkaXYgc3R5bGU9ImZvbnQtZmFtaWx5OiZx +dW90O+W+rui9r+mbhem7kSZxdW90OzsgZm9udC1zaXplOiAxNHB4OyBjb2xvcjojMDAwMDAwIj4K +ICAgIDxzdHlsZT4KICAgICAgICBmb250ewogICAgICAgICAgICBsaW5lLWhlaWdodDogMS42Owog +ICAgICAgIH0KICAgIDwvc3R5bGU+CjxkaXYgc3R5bGU9ImZvbnQtZmFtaWx5OiZxdW90O+W+rui9 +r+mbhem7kSZxdW90OzsgZm9udC1zaXplOiAxNHB4OyBjb2xvcjojMDAwMDAwIj4KICAgIDxzdHls +ZT4KICAgICAgICBmb250ewogICAgICAgICAgICBsaW5lLWhlaWdodDogMS42OwogICAgICAgIH0K +ICAgIDwvc3R5bGU+CjxkaXYgc3R5bGU9ImZvbnQtZmFtaWx5OiZxdW90O+W+rui9r+mbhem7kSZx +dW90OzsgZm9udC1zaXplOiAxNHB4OyBjb2xvcjojMDAwMDAwIj4KICAgIDxzdHlsZT4KICAgICAg +ICBmb250ewogICAgICAgICAgICBsaW5lLWhlaWdodDogMS42OwogICAgICAgIH0KICAgIDwvc3R5 +bGU+CjxzcGFuIHN0eWxlPSJjb2xvcjogcmdiKDE5MSwgMTkxLCAxOTEpOyBmb250LWZhbWlseTog +J01pY3Jvc29mdCBZYWhlaSc7IGZvbnQtc2l6ZTogMTNweDsgb3JwaGFuczogMjsgd2lkb3dzOiAy +OyI+QmVzdCByZWdhcmRzLDwvc3Bhbj48ZGl2IHN0eWxlPSJtYXJnaW46IDBweDsgcGFkZGluZzog +MHB4OyBib3JkZXI6IDBweDsgb3V0bGluZTogMHB4OyBmb250LWZhbWlseTogVGFob21hLCBBcmlh +bCwgU1RIZWl0aSwgU2ltU3VuOyBmb250LXZhcmlhbnQtbGlnYXR1cmVzOiBub3JtYWw7IG9ycGhh +bnM6IDI7IHdpZG93czogMjsgY2xlYXI6IGJvdGg7Ij48c3BhbiBzdHlsZT0ibWFyZ2luOiAwcHg7 +IHBhZGRpbmc6IDBweDsgYm9yZGVyOiAwcHg7IG91dGxpbmU6IDBweDsgZm9udC1mYW1pbHk6ICZx +dW90O01pY3Jvc29mdCBZYWhlaSZxdW90OzsgZm9udC1zaXplOiAxM3B4OyBjb2xvcjogcmdiKDE5 +MSwgMTkxLCAxOTEpOyI+5p2o6L2pPC9zcGFuPjwvZGl2PjxkaXYgc3R5bGU9Im1hcmdpbjogMHB4 +OyBwYWRkaW5nOiAwcHg7IGJvcmRlcjogMHB4OyBvdXRsaW5lOiAwcHg7IGZvbnQtZmFtaWx5OiBU +YWhvbWEsIEFyaWFsLCBTVEhlaXRpLCBTaW1TdW47IGZvbnQtdmFyaWFudC1saWdhdHVyZXM6IG5v +cm1hbDsgb3JwaGFuczogMjsgd2lkb3dzOiAyOyBjbGVhcjogYm90aDsiPjwvZGl2PjxkaXYgc3R5 +bGU9Im1hcmdpbjogMHB4OyBwYWRkaW5nOiAwcHg7IGJvcmRlcjogMHB4OyBvdXRsaW5lOiAwcHg7 +IGZvbnQtZmFtaWx5OiBUYWhvbWEsIEFyaWFsLCBTVEhlaXRpLCBTaW1TdW47IGZvbnQtdmFyaWFu +dC1saWdhdHVyZXM6IG5vcm1hbDsgb3JwaGFuczogMjsgd2lkb3dzOiAyOyBjbGVhcjogYm90aDsi +PjxpbWcgc3JjPSJodHRwczovL21haWwtb25saW5lLm5vc2RuLjEyNy5uZXQvd3pwbW1jL2NlOWY4 +YjM2ZTFmZmJlNTUzMjljMTk2Yzg0ZmU1MTk3LnBuZyIgc3R5bGU9Im1heC13aWR0aDogdW5zZXQ7 +Ij48L2Rpdj48ZGl2IHN0eWxlPSJtYXJnaW46IDBweDsgcGFkZGluZzogMHB4OyBib3JkZXI6IDBw +eDsgb3V0bGluZTogMHB4OyBmb250LWZhbWlseTogVGFob21hLCBBcmlhbCwgU1RIZWl0aSwgU2lt +U3VuOyBmb250LXZhcmlhbnQtbGlnYXR1cmVzOiBub3JtYWw7IG9ycGhhbnM6IDI7IHdpZG93czog +MjsgY2xlYXI6IGJvdGg7Ij48c3BhbiBzdHlsZT0ibWFyZ2luOiAwcHg7IHBhZGRpbmc6IDBweDsg +Ym9yZGVyOiAwcHg7IG91dGxpbmU6IDBweDsgZm9udC1mYW1pbHk6ICZxdW90O01pY3Jvc29mdCBZ +YWhlaSZxdW90OzsgY29sb3I6IHJnYigxOTEsIDE5MSwgMTkxKTsiPuWcsOWdgO+8muS4reWbvcK3 +5Y2X5Lqs5LqR5a+G5Z+OTOagizUvMTDmpbw8L3NwYW4+PC9kaXY+PGRpdiBzdHlsZT0ibWFyZ2lu +OiAwcHg7IHBhZGRpbmc6IDBweDsgYm9yZGVyOiAwcHg7IG91dGxpbmU6IDBweDsgZm9udC1mYW1p +bHk6IFRhaG9tYSwgQXJpYWwsIFNUSGVpdGksIFNpbVN1bjsgZm9udC12YXJpYW50LWxpZ2F0dXJl +czogbm9ybWFsOyBvcnBoYW5zOiAyOyB3aWRvd3M6IDI7IGNsZWFyOiBib3RoOyI+PHNwYW4gc3R5 +bGU9Im1hcmdpbjogMHB4OyBwYWRkaW5nOiAwcHg7IGJvcmRlcjogMHB4OyBvdXRsaW5lOiAwcHg7 +IGZvbnQtZmFtaWx5OiAmcXVvdDtNaWNyb3NvZnQgWWFoZWkmcXVvdDs7IGNvbG9yOiByZ2IoMTkx +LCAxOTEsIDE5MSk7Ij7miYvmnLrvvJoxODcyNjEyODQ4OTwvc3Bhbj48L2Rpdj48ZGl2IHN0eWxl +PSJtYXJnaW46IDBweDsgcGFkZGluZzogMHB4OyBib3JkZXI6IDBweDsgb3V0bGluZTogMHB4OyBm +b250LWZhbWlseTogVGFob21hLCBBcmlhbCwgU1RIZWl0aSwgU2ltU3VuOyBmb250LXZhcmlhbnQt +bGlnYXR1cmVzOiBub3JtYWw7IG9ycGhhbnM6IDI7IHdpZG93czogMjsgY2xlYXI6IGJvdGg7Ij48 +c3BhbiBzdHlsZT0ibWFyZ2luOiAwcHg7IHBhZGRpbmc6IDBweDsgYm9yZGVyOiAwcHg7IG91dGxp +bmU6IDBweDsgZm9udC1mYW1pbHk6ICZxdW90O01pY3Jvc29mdCBZYWhlaSZxdW90OzsgY29sb3I6 +IHJnYigxOTEsIDE5MSwgMTkxKTsiPumCrueuse+8mnlhbmd4dWFuQHdpdHNvZnQuY248L3NwYW4+ +PC9kaXY+CjwvZGl2Pgo8L2Rpdj4KPC9kaXY+CjwvZGl2Pgo8L2Rpdj48L2Rpdj48L2Rpdj48L2Rp +dj48IS0t8J+YgC0tPjwvZGl2PjwvZGl2PjwvYm9keT48L2h0bWw+ + +--=_mailmaster-6a18e4a4_0_4db7_=-- diff --git a/media/inbound/2026-03-13_2039_G5开发周报_2026-03-09_--_2026-03-13---8115ca9e-7d00-4a36-8c7d-6b6e366aa384.eml b/media/inbound/2026-03-13_2039_G5开发周报_2026-03-09_--_2026-03-13---8115ca9e-7d00-4a36-8c7d-6b6e366aa384.eml new file mode 100644 index 0000000..aa90367 --- /dev/null +++ b/media/inbound/2026-03-13_2039_G5开发周报_2026-03-09_--_2026-03-13---8115ca9e-7d00-4a36-8c7d-6b6e366aa384.eml @@ -0,0 +1,234 @@ +Date: Fri, 13 Mar 2026 20:39:43 +0800 +From: =?utf-8?B?5p2o6L2p?= +To: =?utf-8?B?5YiY5by6?= +Cc: =?utf-8?B?5bGI5paw6b6Z?= , =?utf-8?B?5pyx5paM?= + , =?utf-8?B?6ZmI5piO?= , + =?utf-8?B?6KKB5pm0?= +Message-ID: <1dc0c9a6-7fdb-4bb4-9b8d-b10042d922f2.yangxuan@witsoft.cn> +In-Reply-To: <4351C568-815B-42E0-A03D-100812C3A198@witsoft.cn> +References: <4351C568-815B-42E0-A03D-100812C3A198@witsoft.cn> +Subject: =?utf-8?B?RzXlvIDlj5HlkajmiqXjgJAyMDI2LTAzLTA5IC0tICAyMDI2LTAz?= + =?utf-8?B?LTEz44CR?= +MIME-Version: 1.0 +Content-Type: multipart/alternative; boundary="=_mailmaster-6a18e4a4_0_1547_=" + +--=_mailmaster-6a18e4a4_0_1547_= +Content-Type: text/plain; charset="UTF-8" +Content-Transfer-Encoding: base64 + +5oKo5aW977yB5Lul5LiL5piv5oiR5pys5ZGo55qE5bel5L2c5oC757uT5Y+K5LiL5ZGo6K6h5YiS +77yM6K+35a6h6ZiF44CCCuS4gOOAgeacrOWRqOW3peS9nOaAu+e7kwoKICogCumHjeeCueW3peS9 +nOWujOaIkOaDheWGtQoKICogCuS7u+WKoTHvvJpHNeS4u+aVsOaNrjUuNC4154mI5pys5Y+R5biD +CgogKiAK5Lu75YqhMu+8mkc16L+b6ZSA5a2YNS40LjXniYjmnKzlj5HluIMKCiAqIArku7vliqEz +77yabWluaW/mlbTkvZPmlLnpgKAKCiAqIArluLjop4Tlt6XkvZwK5pel5bi45LqL5YqhMe+8mjIw +MjYtMDMtMDkKMS4g6ZSA5ZSu5omT5Y2w5qyh5pWw5Yqf6IO95rWL6K+V5a6M5oiQCjIuIOmHh+i0 +reaJk+WNsOasoeaVsOWKn+iDvea1i+ivleWujOaIkAozLiDlupPlrZjmiZPljbDmrKHmlbDlip/o +g73lvIDlj5EK5pel5bi45LqL5YqhMu+8mjIwMjYtMDMtMTAKMS4g5Li75pWw5o2u5Y6G5Y+y6Zeu +6aKY5L+u5aSN6L2s5rWLCjIuIOmUgOWUruWOhuWPsumXrumimOWIhuaekOWkhOeQhgrml6XluLjk +uovliqEz77yaMjAyNi0wMy0xMQoxLiDplIDllK7orqLljZXmlpnlj7fmtYHovawKMi4g6ZSA5ZSu +5Y+R6LSn5Y2V6YCA6LSn5paZ5Y+35rWB6L2sCjMuIOmUgOWUruaXoOa6kOmAgOi0p+aWmeWPt+iO +t+WPlgrkuIDjgIHkuIvlkajph43ngrnku7vliqEKNS40LjbniYjmnKzlvIDlj5EK5aSH5rOo77ya +CjMuMTItLTMuMTMg6LCD5LyR5Lik5aSpCkJlc3QgcmVnYXJkcywK5p2o6L2pCuWcsOWdgO+8muS4 +reWbvcK35Y2X5Lqs5LqR5a+G5Z+OTOagizUvMTDmpbwK5omL5py677yaMTg3MjYxMjg0ODkK6YKu +566x77yaeWFuZ3h1YW5Ad2l0c29mdC5jbgo= + +--=_mailmaster-6a18e4a4_0_1547_= +Content-Type: text/html; charset="UTF-8" +Content-Transfer-Encoding: base64 + +PGRpdiBjbGFzcz0iX19hbGl5dW5fZW1haWxfYm9keV9ibG9jayI+PGRpdiAgc3R5bGU9ImZvbnQt +ZmFtaWx5OiBUYWhvbWEsIEFyaWFsLCBTVEhlaXRpU0MtTGlnaHQsIFNpbVN1biI+PGRpdiAgc3R5 +bGU9ImZvbnQtZmFtaWx5OiDlvq7ova/pm4Xpu5E7Ij48ZGl2ID48ZGl2ID48cCAgY2xhc3M9Im1k +LWVuZC1ibG9jayBtZC1wIG1kLWZvY3VzIF9fYWxpeXVuX25vZGVfaGFzX2NvbG9yIiBzdHlsZT0i +Zm9udC1mYW1pbHk6ICdPcGVuIFNhbnMnLCAnQ2xlYXIgU2FucycsICdIZWx2ZXRpY2EgTmV1ZScs +IEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7IGxp +bmUtaGVpZ2h0OiBpbmhlcml0OyBtYXJnaW46IDEycHggMHB4OyB3aGl0ZS1zcGFjZTogcHJlLXdy +YXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsgY29sb3I6IHJnYig1MSwgNTEsIDUxKTsgZm9udC1zaXpl +OiAxNnB4OyI+PHNwYW4gIGNsYXNzPSJtZC1wbGFpbiBtZC1leHBhbmQiIHN0eWxlPSJib3gtc2l6 +aW5nOiBib3JkZXItYm94OyI+5oKo5aW977yB5Lul5LiL5piv5oiR5pys5ZGo55qE5bel5L2c5oC7 +57uT5Y+K5LiL5ZGo6K6h5YiS77yM6K+35a6h6ZiF44CCPC9zcGFuPjwvcD48ZGl2ICBjbGFzcz0i +bWQtaHIgbWQtZW5kLWJsb2NrIF9fYWxpeXVuX25vZGVfaGFzX2NvbG9yIiBzdHlsZT0iZm9udC1m +YW1pbHk6ICdPcGVuIFNhbnMnLCAnQ2xlYXIgU2FucycsICdIZWx2ZXRpY2EgTmV1ZScsIEhlbHZl +dGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7IGNvbG9yOiBy +Z2IoNTEsIDUxLCA1MSk7IGZvbnQtc2l6ZTogMTZweDsiPjxociAgY2xhc3M9IiBfX2FsaXl1bl9u +b2RlX2hhc19iZ2NvbG9yIiBzdHlsZT0iYm94LXNpemluZzogY29udGVudC1ib3g7IGhlaWdodDog +MnB4OyBtYXJnaW46IDE2cHggMHB4OyBib3JkZXI6IDBweCBub25lOyBwYWRkaW5nOiAwcHg7IGJh +Y2tncm91bmQtY29sb3I6IHJnYigyMzEsIDIzMSwgMjMxKTsiPjwvZGl2PjxoMyAgY2xhc3M9Im1k +LWVuZC1ibG9jayBtZC1oZWFkaW5nIF9fYWxpeXVuX25vZGVfaGFzX2NvbG9yIiBzdHlsZT0iZm9u +dC1mYW1pbHk6ICdPcGVuIFNhbnMnLCAnQ2xlYXIgU2FucycsICdIZWx2ZXRpY2EgTmV1ZScsIEhl +bHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7IGJyZWFr +LWFmdGVyOiBhdm9pZC1wYWdlOyBicmVhay1pbnNpZGU6IGF2b2lkOyBmb250LXNpemU6IDEuNWVt +OyBtYXJnaW4tdG9wOiAxcmVtOyBtYXJnaW4tYm90dG9tOiAxcmVtOyBwb3NpdGlvbjogcmVsYXRp +dmU7IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgY29sb3I6IHJnYig1MSwgNTEsIDUxKTsiPjxzcGFu +ICBjbGFzcz0ibWQtcGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBmb250LXdl +aWdodDogNzAwOyI+5LiA44CB5pys5ZGo5bel5L2c5oC757uTPC9zcGFuPjwvaDM+PG9sICBjbGFz +cz0ib2wtbGlzdCBfX2FsaXl1bl9ub2RlX2hhc19jb2xvciIgc3RhcnQ9IiIgc3R5bGU9ImZvbnQt +ZmFtaWx5OiAnT3BlbiBTYW5zJywgJ0NsZWFyIFNhbnMnLCAnSGVsdmV0aWNhIE5ldWUnLCBIZWx2 +ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmOyBib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46 +IDBweDsgcGFkZGluZy1sZWZ0OiAzMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7IGNvbG9yOiByZ2Io +NTEsIDUxLCA1MSk7IGZvbnQtc2l6ZTogMTZweDsiPjxsaSAgY2xhc3M9Im1kLWxpc3QtaXRlbSIg +c3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBwb3NpdGlvbjogcmVs +YXRpdmU7Ij48cCAgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1wIiBzdHlsZT0iYm94LXNpemluZzog +Ym9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IG1hcmdpbjogMHB4IDBweCA4cHg7IHdo +aXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHNwYW4gIGNsYXNzPSJt +ZC1wbGFpbiIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGZvbnQtd2VpZ2h0OiA3MDA7 +Ij7ph43ngrnlt6XkvZzlrozmiJDmg4XlhrU8L3NwYW4+PC9wPjx1bCAgY2xhc3M9InVsLWxpc3Qi +IHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcGFkZGluZy1sZWZ0 +OiAzMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48bGkgIGNsYXNzPSJtZC1saXN0LWl0ZW0iIHN0 +eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcG9zaXRpb246IHJlbGF0 +aXZlOyI+PHAgIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCIgc3R5bGU9ImJveC1zaXppbmc6IGJv +cmRlci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhlcml0OyBtYXJnaW46IDBweCAwcHggOHB4OyB3aGl0 +ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxzcGFuICBjbGFzcz0ibWQt +cGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+5Lu75YqhMe+8mkc15Li75pWw +5o2uNS40LjXniYjmnKzlj5HluIM8L3NwYW4+PC9wPjwvbGk+PGxpICBjbGFzcz0ibWQtbGlzdC1p +dGVtIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBvc2l0aW9u +OiByZWxhdGl2ZTsiPjxwICBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLXAiIHN0eWxlPSJib3gtc2l6 +aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5oZXJpdDsgbWFyZ2luOiAwcHggMHB4IDhw +eDsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyBwb3NpdGlvbjogcmVsYXRpdmU7Ij7ku7vliqEy77ya +RzXov5vplIDlrZg1LjQuNeeJiOacrOWPkeW4gzwvcD48L2xpPjxsaSAgY2xhc3M9Im1kLWxpc3Qt +aXRlbSIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBwb3NpdGlv +bjogcmVsYXRpdmU7Ij48cCAgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1wIiBzdHlsZT0iYm94LXNp +emluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IG1hcmdpbjogMHB4IDBweCA4 +cHg7IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJlbGF0aXZlOyI+5Lu75YqhM++8 +mm1pbmlv5pW05L2T5pS56YCgPGJyID48L3A+PC9saT48L3VsPjwvbGk+PGxpICBjbGFzcz0ibWQt +bGlzdC1pdGVtIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBv +c2l0aW9uOiByZWxhdGl2ZTsiPjxwICBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLXAiIHN0eWxlPSJi +b3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5oZXJpdDsgbWFyZ2luOiAwcHgg +MHB4IDhweDsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48c3Bh +biAgY2xhc3M9Im1kLXBsYWluIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgZm9udC13 +ZWlnaHQ6IDcwMDsiPuW4uOinhOW3peS9nDwvc3Bhbj48L3A+PHAgIGNsYXNzPSJtZC1lbmQtYmxv +Y2sgbWQtcCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhl +cml0OyBtYXJnaW46IDBweCAwcHggOHB4OyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0aW9u +OiByZWxhdGl2ZTsiPjxzcGFuICBjbGFzcz0ibWQtcGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBi +b3JkZXItYm94OyBmb250LXdlaWdodDogNzAwOyI+PC9zcGFuPjwvcD48L2xpPjxwICBjbGFzcz0i +bWQtZW5kLWJsb2NrIG1kLXAiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhl +aWdodDogaW5oZXJpdDsgbWFyZ2luOiAwcHggMHB4IDhweDsgd2hpdGUtc3BhY2U6IHByZS13cmFw +OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48c3BhbiAgY2xhc3M9Im1kLXBsYWluIiBzdHlsZT0ibWFy +Z2luOiAwcHg7IHBhZGRpbmc6IDBweDsgYm9yZGVyOiAwcHg7IG91dGxpbmU6IDBweDsgYm94LXNp +emluZzogYm9yZGVyLWJveDsiPuaXpeW4uOS6i+WKoTHvvJoyMDI2LTAzLTA5PC9zcGFuPjwvcD48 +ZGl2ICBzdHlsZT0iY2xlYXI6IGJvdGg7IGZvbnQtZmFtaWx5OiAnT3BlbiBTYW5zJywgJ0NsZWFy +IFNhbnMnLCAnSGVsdmV0aWNhIE5ldWUnLCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmOyBm +b250LXNpemU6IDE2cHg7IGZvbnQtd2VpZ2h0OiA0MDA7Ij48c3BhbiAgc3R5bGU9Im1hcmdpbjog +MHB4OyBwYWRkaW5nOiAwcHg7IGJvcmRlcjogMHB4OyBvdXRsaW5lOiAwcHg7Ij4xLiDplIDllK7m +iZPljbDmrKHmlbDlip/og73mtYvor5XlrozmiJA8YnIgPjwvc3Bhbj48L2Rpdj48ZGl2ICBzdHls +ZT0ibWFyZ2luOiAwcHg7IHBhZGRpbmc6IDBweDsgYm9yZGVyOiAwcHg7IG91dGxpbmU6IDBweDsg +Y2xlYXI6IGJvdGg7Ij4yLiDph4fotK3miZPljbDmrKHmlbDlip/og73mtYvor5XlrozmiJA8YnIg +PjwvZGl2PjxkaXYgIHN0eWxlPSJtYXJnaW46IDBweDsgcGFkZGluZzogMHB4OyBib3JkZXI6IDBw +eDsgb3V0bGluZTogMHB4OyBjbGVhcjogYm90aDsiPjxzcGFuICBzdHlsZT0ibWFyZ2luOiAwcHg7 +IHBhZGRpbmc6IDBweDsgYm9yZGVyOiAwcHg7IG91dGxpbmU6IDBweDsiPjMuIOW6k+WtmOaJk+WN +sOasoeaVsOWKn+iDveW8gOWPkTwvc3Bhbj48L2Rpdj48cCAgY2xhc3M9Im1kLWVuZC1ibG9jayBt +ZC1wIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7 +IG1hcmdpbjogMHB4IDBweCA4cHg7IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJl +bGF0aXZlOyI+PHNwYW4gIGNsYXNzPSJtZC1wbGFpbiIgc3R5bGU9Im1hcmdpbjogMHB4OyBwYWRk +aW5nOiAwcHg7IGJvcmRlcjogMHB4OyBvdXRsaW5lOiAwcHg7IGJveC1zaXppbmc6IGJvcmRlci1i +b3g7Ij7ml6XluLjkuovliqEy77yaMjAyNi0wMy0xMDwvc3Bhbj48L3A+PGRpdiAgc3R5bGU9ImNs +ZWFyOiBib3RoOyBmb250LWZhbWlseTogJ09wZW4gU2FucycsICdDbGVhciBTYW5zJywgJ0hlbHZl +dGljYSBOZXVlJywgSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxNnB4 +OyBmb250LXdlaWdodDogNDAwOyI+PHNwYW4gIHN0eWxlPSJtYXJnaW46IDBweDsgcGFkZGluZzog +MHB4OyBib3JkZXI6IDBweDsgb3V0bGluZTogMHB4OyI+MS4g5Li75pWw5o2u5Y6G5Y+y6Zeu6aKY +5L+u5aSN6L2s5rWLPC9zcGFuPjwvZGl2PjxkaXYgIHN0eWxlPSJtYXJnaW46IDBweDsgcGFkZGlu +ZzogMHB4OyBib3JkZXI6IDBweDsgb3V0bGluZTogMHB4OyBjbGVhcjogYm90aDsgZm9udC1mYW1p +bHk6ICdPcGVuIFNhbnMnLCAnQ2xlYXIgU2FucycsICdIZWx2ZXRpY2EgTmV1ZScsIEhlbHZldGlj +YSwgQXJpYWwsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTZweDsiPjxzcGFuICBzdHlsZT0ibWFy +Z2luOiAwcHg7IHBhZGRpbmc6IDBweDsgYm9yZGVyOiAwcHg7IG91dGxpbmU6IDBweDsiPjIuIOmU +gOWUruWOhuWPsumXrumimOWIhuaekOWkhOeQhjwvc3Bhbj48L2Rpdj48cCAgY2xhc3M9Im1kLWVu +ZC1ibG9jayBtZC1wIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6 +IGluaGVyaXQ7IG1hcmdpbjogMHB4IDBweCA4cHg7IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9z +aXRpb246IHJlbGF0aXZlOyI+PHNwYW4gIGNsYXNzPSJtZC1wbGFpbiIgc3R5bGU9Im1hcmdpbjog +MHB4OyBwYWRkaW5nOiAwcHg7IGJvcmRlcjogMHB4OyBvdXRsaW5lOiAwcHg7IGJveC1zaXppbmc6 +IGJvcmRlci1ib3g7Ij7ml6XluLjkuovliqEz77yaMjAyNi0wMy0xMTwvc3Bhbj48L3A+PGRpdiAg +c3R5bGU9ImNsZWFyOiBib3RoOyBmb250LWZhbWlseTogJ09wZW4gU2FucycsICdDbGVhciBTYW5z +JywgJ0hlbHZldGljYSBOZXVlJywgSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjsgZm9udC1z +aXplOiAxNnB4OyBmb250LXdlaWdodDogNDAwOyI+PHNwYW4gIHN0eWxlPSJtYXJnaW46IDBweDsg +cGFkZGluZzogMHB4OyBib3JkZXI6IDBweDsgb3V0bGluZTogMHB4OyI+MS4g6ZSA5ZSu6K6i5Y2V +5paZ5Y+35rWB6L2sPGJyID48L3NwYW4+PC9kaXY+PGRpdiAgc3R5bGU9Im1hcmdpbjogMHB4OyBw +YWRkaW5nOiAwcHg7IGJvcmRlcjogMHB4OyBvdXRsaW5lOiAwcHg7IGNsZWFyOiBib3RoOyI+Mi4g +6ZSA5ZSu5Y+R6LSn5Y2V6YCA6LSn5paZ5Y+35rWB6L2sPGJyID48L2Rpdj48ZGl2ICBzdHlsZT0i +bWFyZ2luOiAwcHg7IHBhZGRpbmc6IDBweDsgYm9yZGVyOiAwcHg7IG91dGxpbmU6IDBweDsgY2xl +YXI6IGJvdGg7IGZvbnQtZmFtaWx5OiAnT3BlbiBTYW5zJywgJ0NsZWFyIFNhbnMnLCAnSGVsdmV0 +aWNhIE5ldWUnLCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDE2cHg7 +Ij48c3BhbiAgc3R5bGU9Im1hcmdpbjogMHB4OyBwYWRkaW5nOiAwcHg7IGJvcmRlcjogMHB4OyBv +dXRsaW5lOiAwcHg7Ij4zLiDplIDllK7ml6DmupDpgIDotKfmlpnlj7fojrflj5Y8L3NwYW4+PC9k +aXY+PC9vbD48aDMgIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtaGVhZGluZyBfX2FsaXl1bl9ub2Rl +X2hhc19jb2xvciIgc3R5bGU9ImZvbnQtZmFtaWx5OiAnT3BlbiBTYW5zJywgJ0NsZWFyIFNhbnMn +LCAnSGVsdmV0aWNhIE5ldWUnLCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmOyBib3gtc2l6 +aW5nOiBib3JkZXItYm94OyBicmVhay1hZnRlcjogYXZvaWQtcGFnZTsgYnJlYWstaW5zaWRlOiBh +dm9pZDsgZm9udC1zaXplOiAxLjVlbTsgbWFyZ2luLXRvcDogMXJlbTsgbWFyZ2luLWJvdHRvbTog +MXJlbTsgcG9zaXRpb246IHJlbGF0aXZlOyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IGNvbG9yOiBy +Z2IoNTEsIDUxLCA1MSk7Ij48c3BhbiAgY2xhc3M9Im1kLXBsYWluIiBzdHlsZT0iYm94LXNpemlu +ZzogYm9yZGVyLWJveDsgZm9udC13ZWlnaHQ6IDcwMDsiPuS4gOOAgeS4i+WRqOmHjeeCueS7u+WK +oTwvc3Bhbj48L2gzPjxkaXYgIHN0eWxlPSJmb250LWZhbWlseTog5b6u6L2v6ZuF6buROyI+NS40 +LjbniYjmnKzlvIDlj5E8L2Rpdj48ZGl2ICBjbGFzcz0ibWQtaHIgbWQtZW5kLWJsb2NrIF9fYWxp +eXVuX25vZGVfaGFzX2NvbG9yIiBzdHlsZT0iZm9udC1mYW1pbHk6ICdPcGVuIFNhbnMnLCAnQ2xl +YXIgU2FucycsICdIZWx2ZXRpY2EgTmV1ZScsIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7 +IGJveC1zaXppbmc6IGJvcmRlci1ib3g7IGNvbG9yOiByZ2IoNTEsIDUxLCA1MSk7IGZvbnQtc2l6 +ZTogMTZweDsiPjxociAgY2xhc3M9IiBfX2FsaXl1bl9ub2RlX2hhc19iZ2NvbG9yIiBzdHlsZT0i +Ym94LXNpemluZzogY29udGVudC1ib3g7IGhlaWdodDogMnB4OyBtYXJnaW46IDE2cHggMHB4OyBi +b3JkZXI6IDBweCBub25lOyBwYWRkaW5nOiAwcHg7IGJhY2tncm91bmQtY29sb3I6IHJnYigyMzEs +IDIzMSwgMjMxKTsiPjwvZGl2PjxwICBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLXAgX19hbGl5dW5f +bm9kZV9oYXNfY29sb3IiIHN0eWxlPSJmb250LWZhbWlseTogJ09wZW4gU2FucycsICdDbGVhciBT +YW5zJywgJ0hlbHZldGljYSBOZXVlJywgSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjsgYm94 +LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IG1hcmdpbjogMTJweCAw +cHg7IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJlbGF0aXZlOyBjb2xvcjogcmdi +KDUxLCA1MSwgNTEpOyBmb250LXNpemU6IDE2cHg7Ij48c3BhbiAgY2xhc3M9Im1kLXBsYWluIiBz +dHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgZm9udC13ZWlnaHQ6IDcwMDsiPuWkh+azqDwv +c3Bhbj48c3BhbiAgY2xhc3M9Im1kLXBsYWluIG1kLWV4cGFuZCIgc3R5bGU9ImJveC1zaXppbmc6 +IGJvcmRlci1ib3g7Ij7vvJo8L3NwYW4+PC9wPjxwICBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLXAg +X19hbGl5dW5fbm9kZV9oYXNfY29sb3IiIHN0eWxlPSJmb250LWZhbWlseTogJ09wZW4gU2Fucycs +ICdDbGVhciBTYW5zJywgJ0hlbHZldGljYSBOZXVlJywgSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1z +ZXJpZjsgYm94LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IG1hcmdp +bjogMTJweCAwcHg7IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJlbGF0aXZlOyBj +b2xvcjogcmdiKDUxLCA1MSwgNTEpOyBmb250LXNpemU6IDE2cHg7Ij48c3BhbiAgY2xhc3M9Im1k +LXBsYWluIG1kLWV4cGFuZCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij4zLjEyLS0z +LjEzIOiwg+S8keS4pOWkqTwvc3Bhbj48L3A+PC9kaXY+PGRpdiAgc3R5bGU9ImZvbnQtZmFtaWx5 +OiDlvq7ova/pm4Xpu5E7Ij48YnIgPjwvZGl2PjwvZGl2PjxkaXYgIGNsYXNzPSIgX19hbGl5dW5f +bm9kZV9oYXNfY29sb3IiIHN0eWxlPSJmb250LWZhbWlseTog5b6u6L2v6ZuF6buROyBtYXJnaW46 +IDIwcHggMHB4OyBmb250LXNpemU6IDE0cHg7IGNvbG9yOiByZ2IoMCwgMCwgMCk7Ij4KICAgIDxk +aXYgIGNsYXNzPSIgX19hbGl5dW5fbm9kZV9oYXNfY29sb3IiIHN0eWxlPSJmb250LWZhbWlseTog +5b6u6L2v6ZuF6buROyBmb250LXNpemU6IDE0cHg7IGNvbG9yOiByZ2IoMCwgMCwgMCk7Ij4KICAg +IDxkaXYgIGNsYXNzPSIgX19hbGl5dW5fbm9kZV9oYXNfY29sb3IiIHN0eWxlPSJmb250LWZhbWls +eTog5b6u6L2v6ZuF6buROyBmb250LXNpemU6IDE0cHg7IGNvbG9yOiByZ2IoMCwgMCwgMCk7Ij4K +ICAgIDxkaXYgIGNsYXNzPSIgX19hbGl5dW5fbm9kZV9oYXNfY29sb3IiIHN0eWxlPSJmb250LWZh +bWlseTog5b6u6L2v6ZuF6buROyBmb250LXNpemU6IDE0cHg7IGNvbG9yOiByZ2IoMCwgMCwgMCk7 +Ij4KICAgIDxkaXYgIGNsYXNzPSIgX19hbGl5dW5fbm9kZV9oYXNfY29sb3IiIHN0eWxlPSJmb250 +LWZhbWlseTog5b6u6L2v6ZuF6buROyBmb250LXNpemU6IDE0cHg7IGNvbG9yOiByZ2IoMCwgMCwg +MCk7Ij4KICAgIDxzcGFuICBjbGFzcz0iIF9fYWxpeXVuX25vZGVfaGFzX2NvbG9yIiBzdHlsZT0i +Y29sb3I6IHJnYigxOTEsIDE5MSwgMTkxKTsgZm9udC1mYW1pbHk6ICdNaWNyb3NvZnQgWWFoZWkn +OyBmb250LXNpemU6IDEzcHg7Ij5CZXN0IHJlZ2FyZHMsPC9zcGFuPjxkaXYgIHN0eWxlPSJtYXJn +aW46IDBweDsgcGFkZGluZzogMHB4OyBib3JkZXI6IDBweDsgb3V0bGluZTogMHB4OyBmb250LWZh +bWlseTogVGFob21hLCBBcmlhbCwgU1RIZWl0aSwgU2ltU3VuOyBmb250LXZhcmlhbnQtbGlnYXR1 +cmVzOiBub3JtYWw7IGNsZWFyOiBib3RoOyI+PHNwYW4gIGNsYXNzPSIgX19hbGl5dW5fbm9kZV9o +YXNfY29sb3IiIHN0eWxlPSJtYXJnaW46IDBweDsgcGFkZGluZzogMHB4OyBib3JkZXI6IDBweDsg +b3V0bGluZTogMHB4OyBmb250LWZhbWlseTogJ01pY3Jvc29mdCBZYWhlaSc7IGZvbnQtc2l6ZTog +MTNweDsgY29sb3I6IHJnYigxOTEsIDE5MSwgMTkxKTsiPuadqOi9qTwvc3Bhbj48L2Rpdj48ZGl2 +ICBzdHlsZT0ibWFyZ2luOiAwcHg7IHBhZGRpbmc6IDBweDsgYm9yZGVyOiAwcHg7IG91dGxpbmU6 +IDBweDsgZm9udC1mYW1pbHk6IFRhaG9tYSwgQXJpYWwsIFNUSGVpdGksIFNpbVN1bjsgZm9udC12 +YXJpYW50LWxpZ2F0dXJlczogbm9ybWFsOyBjbGVhcjogYm90aDsiPjwvZGl2PjxkaXYgIHN0eWxl +PSJtYXJnaW46IDBweDsgcGFkZGluZzogMHB4OyBib3JkZXI6IDBweDsgb3V0bGluZTogMHB4OyBm +b250LWZhbWlseTogVGFob21hLCBBcmlhbCwgU1RIZWl0aSwgU2ltU3VuOyBmb250LXZhcmlhbnQt +bGlnYXR1cmVzOiBub3JtYWw7IGNsZWFyOiBib3RoOyI+PGltZyAgZGF0YS1hbGltYWlsLWltZy1w +cm9jZXNzZWQtc3FtLWVkaXRvcj0idHJ1ZSIgc3JjPSJodHRwczovL21haWwtb25saW5lLm5vc2Ru +LjEyNy5uZXQvd3pwbW1jL2NlOWY4YjM2ZTFmZmJlNTUzMjljMTk2Yzg0ZmU1MTk3LnBuZyIgc3R5 +bGU9Im1heC13aWR0aDogdW5zZXQ7IHZlcnRpY2FsLWFsaWduOiBib3R0b207Ij48L2Rpdj48ZGl2 +ICBzdHlsZT0ibWFyZ2luOiAwcHg7IHBhZGRpbmc6IDBweDsgYm9yZGVyOiAwcHg7IG91dGxpbmU6 +IDBweDsgZm9udC1mYW1pbHk6IFRhaG9tYSwgQXJpYWwsIFNUSGVpdGksIFNpbVN1bjsgZm9udC12 +YXJpYW50LWxpZ2F0dXJlczogbm9ybWFsOyBjbGVhcjogYm90aDsiPjxzcGFuICBjbGFzcz0iIF9f +YWxpeXVuX25vZGVfaGFzX2NvbG9yIiBzdHlsZT0ibWFyZ2luOiAwcHg7IHBhZGRpbmc6IDBweDsg +Ym9yZGVyOiAwcHg7IG91dGxpbmU6IDBweDsgZm9udC1mYW1pbHk6ICdNaWNyb3NvZnQgWWFoZWkn +OyBjb2xvcjogcmdiKDE5MSwgMTkxLCAxOTEpOyI+5Zyw5Z2A77ya5Lit5Zu9wrfljZfkuqzkupHl +r4bln45M5qCLNS8xMOalvDwvc3Bhbj48L2Rpdj48ZGl2ICBzdHlsZT0ibWFyZ2luOiAwcHg7IHBh +ZGRpbmc6IDBweDsgYm9yZGVyOiAwcHg7IG91dGxpbmU6IDBweDsgZm9udC1mYW1pbHk6IFRhaG9t +YSwgQXJpYWwsIFNUSGVpdGksIFNpbVN1bjsgZm9udC12YXJpYW50LWxpZ2F0dXJlczogbm9ybWFs +OyBjbGVhcjogYm90aDsiPjxzcGFuICBjbGFzcz0iIF9fYWxpeXVuX25vZGVfaGFzX2NvbG9yIiBz +dHlsZT0ibWFyZ2luOiAwcHg7IHBhZGRpbmc6IDBweDsgYm9yZGVyOiAwcHg7IG91dGxpbmU6IDBw +eDsgZm9udC1mYW1pbHk6ICdNaWNyb3NvZnQgWWFoZWknOyBjb2xvcjogcmdiKDE5MSwgMTkxLCAx +OTEpOyI+5omL5py677yaMTg3MjYxMjg0ODk8L3NwYW4+PC9kaXY+PGRpdiAgc3R5bGU9Im1hcmdp +bjogMHB4OyBwYWRkaW5nOiAwcHg7IGJvcmRlcjogMHB4OyBvdXRsaW5lOiAwcHg7IGZvbnQtZmFt +aWx5OiBUYWhvbWEsIEFyaWFsLCBTVEhlaXRpLCBTaW1TdW47IGZvbnQtdmFyaWFudC1saWdhdHVy +ZXM6IG5vcm1hbDsgY2xlYXI6IGJvdGg7Ij48c3BhbiAgY2xhc3M9IiBfX2FsaXl1bl9ub2RlX2hh +c19jb2xvciIgc3R5bGU9Im1hcmdpbjogMHB4OyBwYWRkaW5nOiAwcHg7IGJvcmRlcjogMHB4OyBv +dXRsaW5lOiAwcHg7IGZvbnQtZmFtaWx5OiAnTWljcm9zb2Z0IFlhaGVpJzsgY29sb3I6IHJnYigx +OTEsIDE5MSwgMTkxKTsiPumCrueuse+8mnlhbmd4dWFuQHdpdHNvZnQuY248L3NwYW4+PC9kaXY+ +PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+ + +--=_mailmaster-6a18e4a4_0_1547_=-- diff --git a/media/inbound/2026-03-20_1743_G5开发周报_2026-03-16_--_2026-03-20---ffcae827-4989-439f-993d-ac465d47c461.eml b/media/inbound/2026-03-20_1743_G5开发周报_2026-03-16_--_2026-03-20---ffcae827-4989-439f-993d-ac465d47c461.eml new file mode 100644 index 0000000..1b61832 --- /dev/null +++ b/media/inbound/2026-03-20_1743_G5开发周报_2026-03-16_--_2026-03-20---ffcae827-4989-439f-993d-ac465d47c461.eml @@ -0,0 +1,387 @@ +Date: Fri, 20 Mar 2026 17:43:31 +0800 +From: =?utf-8?B?5p2o6L2p?= +To: =?utf-8?B?5YiY5by6?= +Cc: =?utf-8?B?5bGI5paw6b6Z?= , =?utf-8?B?5pyx5paM?= + , =?utf-8?B?6ZmI5piO?= , + =?utf-8?B?6KKB5pm0?= +Message-ID: <118cdc96-acf5-4a97-8eef-75319fd0e336.yangxuan@witsoft.cn> +In-Reply-To: <1dc0c9a6-7fdb-4bb4-9b8d-b10042d922f2.yangxuan@witsoft.cn> +References: <4351C568-815B-42E0-A03D-100812C3A198@witsoft.cn> + <1dc0c9a6-7fdb-4bb4-9b8d-b10042d922f2.yangxuan@witsoft.cn> +Subject: =?utf-8?B?RzXlvIDlj5HlkajmiqXjgJAyMDI2LTAzLTE2IC0tICAyMDI2LTAz?= + =?utf-8?B?LTIw44CR?= +MIME-Version: 1.0 +Content-Type: multipart/alternative; boundary="=_mailmaster-6a18e4a4_0_54de_=" + +--=_mailmaster-6a18e4a4_0_54de_= +Content-Type: text/plain; charset="UTF-8" +Content-Transfer-Encoding: base64 + +5oKo5aW977yB5Lul5LiL5piv5oiR5pys5ZGo55qE5bel5L2c5oC757uT5Y+K5LiL5ZGo6K6h5YiS +77yM6K+35a6h6ZiF44CCCuS4gOOAgeacrOWRqOW3peS9nOaAu+e7kwrmgqjlpb3vvIHku6XkuIvm +mK/miJHmnKzlkajnmoTlt6XkvZzmgLvnu5Plj4rkuIvlkajorqHliJLvvIzor7flrqHpmIXjgIIK +5LiA44CB5pys5ZGo5bel5L2c5oC757uTCgogKiAK6YeN54K55bel5L2c5a6M5oiQ5oOF5Ya1Cgog +KiAK5Lu75YqhMe+8mkc15Li75pWw5o2uNS40LjbniYjmnKzlvIDlj5EKCiAqIArku7vliqEy77ya +RzXov5vplIDlrZg1LjQuNueJiOacrOW8gOWPkQoKICogCuW4uOinhOW3peS9nAoyMDI2LTAzLTE2 +CgogKiAK5Li75pWw5o2u5Y6G5Y+y6Zeu6aKY5YiG5p6QCgogKiAK5Li75pWw5o2u5Y6G5Y+y6Zeu +6aKY5o6l5Y+j5aSE55CGCgogKiAK5Li75pWw5o2u6ZyA5rGC5YiG5p6QCgogKiAK5Li75pWw5o2u +5bel5pe26K+E5LywCgogKiAK5Li75pWw5o2u6ZyA5rGC5byA5Y+RCjIwMjYtMDMtMTcKCiAqIArk +uLvmlbDmja7lvIDlhbPphY3nva7liJ3lp4vljJbmjqXlj6MKCiAqIArkuLvmlbDmja7lvIDlhbPp +hY3nva7liY3lkI7nq6/ogZTosIMKCiAqIArkuLvmlbDmja7lvIDlhbPphY3nva7lr7nlpJbmjqXl +j6MKMjAyNi0wMy0xOAoKICogCumUgOWUruWPkei0p+WNleaJk+WNsOaooeeJiOWtl+autea3u+WK +oOmUgOWUruW4geenjeWtl+autQoKICogCumUgOWUruiuouWNleaWsOWinue8lui+keWPmOabtOeV +jOmdou+8jOS6p+WTgeaYjue7huWinuWKoOmUgOWUruWbvueJh++8jOmcgOaUr+aMgeWkmuS4quWb +vueJh+S4iuS8oO+8jOS4lOaUr+aMgeaJk+WNsAoyMDI2LTAzLTE5CgogKiAK6ZSA5ZSu5Zu+54mH +5YmN5ZCO56uv6IGU6LCDCgogKiAK6ZSA5ZSu5Zu+54mH5omT5Y2wCgogKiAK5bGe5oCn57uE5o6l +5Y+j5byA5Y+RCjIwMjYtMDMtMjAKCiAqIArplIDllK7lm77niYflip/og73ogZTosIMKCiAqIArp +lIDllK7lm77niYflpJrlvKDmiZPljbAKCiAqIArmmI7nu4bliJfooajlsZ7mgKfnu4Tmn6Xor6IK +5LiA44CB5LiL5ZGo6YeN54K55Lu75YqhCjUuNC4254mI5pysCuWkh+azqO+8mgpCZXN0IHJlZ2Fy +ZHMsCuadqOi9qQrlnLDlnYDvvJrkuK3lm73Ct+WNl+S6rOS6keWvhuWfjkzmoIs1LzEw5qW8CuaJ +i+acuu+8mjE4NzI2MTI4NDg5CumCrueuse+8mnlhbmd4dWFuQHdpdHNvZnQuY24K + +--=_mailmaster-6a18e4a4_0_54de_= +Content-Type: text/html; charset="UTF-8" +Content-Transfer-Encoding: base64 + +PGRpdiBjbGFzcz0iX19hbGl5dW5fZW1haWxfYm9keV9ibG9jayI+PGRpdiAgc3R5bGU9ImZvbnQt +ZmFtaWx5OiBUYWhvbWEsIEFyaWFsLCBTVEhlaXRpU0MtTGlnaHQsIFNpbVN1biI+PGRpdiAgc3R5 +bGU9ImZvbnQtZmFtaWx5OiDlvq7ova/pm4Xpu5E7Ij48ZGl2ID48ZGl2ID48cCAgY2xhc3M9Im1k +LWVuZC1ibG9jayBtZC1wIG1kLWZvY3VzIF9fYWxpeXVuX25vZGVfaGFzX2NvbG9yIiBzdHlsZT0i +Zm9udC1mYW1pbHk6ICdPcGVuIFNhbnMnLCAnQ2xlYXIgU2FucycsICdIZWx2ZXRpY2EgTmV1ZScs +IEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7IGxp +bmUtaGVpZ2h0OiBpbmhlcml0OyBtYXJnaW46IDEycHggMHB4OyB3aGl0ZS1zcGFjZTogcHJlLXdy +YXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsgY29sb3I6IHJnYig1MSwgNTEsIDUxKTsgZm9udC1zaXpl +OiAxNnB4OyI+PHNwYW4gIGNsYXNzPSJtZC1wbGFpbiBtZC1leHBhbmQiIHN0eWxlPSJib3gtc2l6 +aW5nOiBib3JkZXItYm94OyI+5oKo5aW977yB5Lul5LiL5piv5oiR5pys5ZGo55qE5bel5L2c5oC7 +57uT5Y+K5LiL5ZGo6K6h5YiS77yM6K+35a6h6ZiF44CCPC9zcGFuPjwvcD48ZGl2ICBjbGFzcz0i +bWQtaHIgbWQtZW5kLWJsb2NrIF9fYWxpeXVuX25vZGVfaGFzX2NvbG9yIiBzdHlsZT0iZm9udC1m +YW1pbHk6ICdPcGVuIFNhbnMnLCAnQ2xlYXIgU2FucycsICdIZWx2ZXRpY2EgTmV1ZScsIEhlbHZl +dGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7IGNvbG9yOiBy +Z2IoNTEsIDUxLCA1MSk7IGZvbnQtc2l6ZTogMTZweDsiPjxociAgY2xhc3M9IiBfX2FsaXl1bl9u +b2RlX2hhc19iZ2NvbG9yIiBzdHlsZT0iYm94LXNpemluZzogY29udGVudC1ib3g7IGhlaWdodDog +MnB4OyBtYXJnaW46IDE2cHggMHB4OyBib3JkZXI6IDBweCBub25lOyBwYWRkaW5nOiAwcHg7IGJh +Y2tncm91bmQtY29sb3I6IHJnYigyMzEsIDIzMSwgMjMxKTsiPjwvZGl2PjxoMyAgY2xhc3M9Im1k +LWVuZC1ibG9jayBtZC1oZWFkaW5nIF9fYWxpeXVuX25vZGVfaGFzX2NvbG9yIiBzdHlsZT0iZm9u +dC1mYW1pbHk6ICdPcGVuIFNhbnMnLCAnQ2xlYXIgU2FucycsICdIZWx2ZXRpY2EgTmV1ZScsIEhl +bHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7IGJyZWFr +LWFmdGVyOiBhdm9pZC1wYWdlOyBicmVhay1pbnNpZGU6IGF2b2lkOyBmb250LXNpemU6IDEuNWVt +OyBtYXJnaW4tdG9wOiAxcmVtOyBtYXJnaW4tYm90dG9tOiAxcmVtOyBwb3NpdGlvbjogcmVsYXRp +dmU7IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgY29sb3I6IHJnYig1MSwgNTEsIDUxKTsiPjxzcGFu +ICBjbGFzcz0ibWQtcGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBmb250LXdl +aWdodDogNzAwOyI+5LiA44CB5pys5ZGo5bel5L2c5oC757uTPC9zcGFuPjwvaDM+PGRpdiAgc3R5 +bGU9ImNsZWFyOiBib3RoOyBmb250LWZhbWlseTogJ09wZW4gU2FucycsICdDbGVhciBTYW5zJywg +J0hlbHZldGljYSBOZXVlJywgSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjsgZm9udC1zaXpl +OiAxNnB4OyI+PHNwYW4gIHN0eWxlPSJmb250LWZhbWlseTogJ09wZW4gU2FucycsICdDbGVhciBT +YW5zJywgJ0hlbHZldGljYSBOZXVlJywgSGVsdmV0aWNhLCBBcmlhbCwgJ1NlZ29lIFVJIEVtb2pp +Jywgc2Fucy1zZXJpZjsgd2hpdGUtc3BhY2UtY29sbGFwc2U6IHByZXNlcnZlOyI+5oKo5aW977yB +5Lul5LiL5piv5oiR5pys5ZGo55qE5bel5L2c5oC757uT5Y+K5LiL5ZGo6K6h5YiS77yM6K+35a6h +6ZiF44CCPC9zcGFuPjwvZGl2PjxoMyAgY2lkPSJuMyIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1o +ZWFkaW5nIiBtZHR5cGU9ImhlYWRpbmciIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBi +cmVhay1hZnRlcjogYXZvaWQtcGFnZTsgYnJlYWstaW5zaWRlOiBhdm9pZDsgZm9udC1zaXplOiAx +LjVlbTsgbWFyZ2luLXRvcDogMXJlbTsgbWFyZ2luLWJvdHRvbTogMXJlbTsgcG9zaXRpb246IHJl +bGF0aXZlOyBmb250LXdlaWdodDogNzAwOyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IGNvbG9yOiBy +Z2IoNTEsIDUxLCA1MSk7IGZvbnQtZmFtaWx5OiAnT3BlbiBTYW5zJywgJ0NsZWFyIFNhbnMnLCAn +SGVsdmV0aWNhIE5ldWUnLCBIZWx2ZXRpY2EsIEFyaWFsLCAnU2Vnb2UgVUkgRW1vamknLCBzYW5z +LXNlcmlmOyBmb250LXN0eWxlOiBub3JtYWw7IGZvbnQtdmFyaWFudC1saWdhdHVyZXM6IG5vcm1h +bDsgZm9udC12YXJpYW50LWNhcHM6IG5vcm1hbDsgbGV0dGVyLXNwYWNpbmc6IG5vcm1hbDsgdGV4 +dC1hbGlnbjogc3RhcnQ7IHRleHQtaW5kZW50OiAwcHg7IHRleHQtdHJhbnNmb3JtOiBub25lOyB3 +b3JkLXNwYWNpbmc6IDBweDsgdGV4dC1kZWNvcmF0aW9uLXRoaWNrbmVzczogaW5pdGlhbDsgdGV4 +dC1kZWNvcmF0aW9uLXN0eWxlOiBpbml0aWFsOyB0ZXh0LWRlY29yYXRpb24tY29sb3I6IGluaXRp +YWw7Ij48c3BhbiAgY2xhc3M9Im1kLXBsYWluIiBtZC1pbmxpbmU9InBsYWluIiBzdHlsZT0iYm94 +LXNpemluZzogYm9yZGVyLWJveDsgZm9udC13ZWlnaHQ6IGJvbGQ7Ij7kuIDjgIHmnKzlkajlt6Xk +vZzmgLvnu5M8L3NwYW4+PC9oMz48b2wgIGNpZD0ibjQiIGNsYXNzPSJvbC1saXN0IiBtZHR5cGU9 +Imxpc3QiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDAuOGVtIDBweDsg +cGFkZGluZy1sZWZ0OiAzMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7IGNvbG9yOiByZ2IoNTEsIDUx +LCA1MSk7IGZvbnQtZmFtaWx5OiAnT3BlbiBTYW5zJywgJ0NsZWFyIFNhbnMnLCAnSGVsdmV0aWNh +IE5ldWUnLCBIZWx2ZXRpY2EsIEFyaWFsLCAnU2Vnb2UgVUkgRW1vamknLCBzYW5zLXNlcmlmOyBm +b250LXNpemU6IDE2cHg7IGZvbnQtc3R5bGU6IG5vcm1hbDsgZm9udC12YXJpYW50LWxpZ2F0dXJl +czogbm9ybWFsOyBmb250LXZhcmlhbnQtY2Fwczogbm9ybWFsOyBmb250LXdlaWdodDogNDAwOyBs +ZXR0ZXItc3BhY2luZzogbm9ybWFsOyB0ZXh0LWFsaWduOiBzdGFydDsgdGV4dC1pbmRlbnQ6IDBw +eDsgdGV4dC10cmFuc2Zvcm06IG5vbmU7IHdoaXRlLXNwYWNlOiBub3JtYWw7IHdvcmQtc3BhY2lu +ZzogMHB4OyB0ZXh0LWRlY29yYXRpb24tdGhpY2tuZXNzOiBpbml0aWFsOyB0ZXh0LWRlY29yYXRp +b24tc3R5bGU6IGluaXRpYWw7IHRleHQtZGVjb3JhdGlvbi1jb2xvcjogaW5pdGlhbDsiPjxsaSAg +Y2lkPSJuNSIgY2xhc3M9Im1kLWxpc3QtaXRlbSIgbWR0eXBlPSJsaXN0X2l0ZW0iIHN0eWxlPSJi +b3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcG9zaXRpb246IHJlbGF0aXZlOyI+ +PHAgIGNpZD0ibjYiIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCIgbWR0eXBlPSJwYXJhZ3JhcGgi +IHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5oZXJpdDsgbWFy +Z2luOiAwcHggMHB4IDAuNXJlbTsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyBwb3NpdGlvbjogcmVs +YXRpdmU7Ij48c3BhbiAgY2xhc3M9Im1kLXBsYWluIiBtZC1pbmxpbmU9InBsYWluIiBzdHlsZT0i +Ym94LXNpemluZzogYm9yZGVyLWJveDsgZm9udC13ZWlnaHQ6IGJvbGQ7Ij7ph43ngrnlt6XkvZzl +rozmiJDmg4XlhrU8L3NwYW4+PC9wPjx1bCAgY2lkPSJuNyIgY2xhc3M9InVsLWxpc3QiIGRhdGEt +bWFyaz0iLSIgbWR0eXBlPSJsaXN0IiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFy +Z2luOiAwcHg7IHBhZGRpbmctbGVmdDogMzBweDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PGxpICBj +aWQ9Im44IiBjbGFzcz0ibWQtbGlzdC1pdGVtIiBtZHR5cGU9Imxpc3RfaXRlbSIgc3R5bGU9ImJv +eC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48 +cCAgY2lkPSJuOSIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1wIiBtZHR5cGU9InBhcmFncmFwaCIg +c3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhlcml0OyBtYXJn +aW46IDBweCAwcHggMC41cmVtOyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0aW9uOiByZWxh +dGl2ZTsiPjxzcGFuICBjbGFzcz0ibWQtcGxhaW4iIG1kLWlubGluZT0icGxhaW4iIHN0eWxlPSJi +b3gtc2l6aW5nOiBib3JkZXItYm94OyI+5Lu75YqhMe+8mkc15Li75pWw5o2uNS40LjbniYjmnKzl +vIDlj5E8L3NwYW4+PC9wPjwvbGk+PGxpICBjaWQ9Im4xMCIgY2xhc3M9Im1kLWxpc3QtaXRlbSIg +bWR0eXBlPSJsaXN0X2l0ZW0iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46 +IDBweDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHAgIGNpZD0ibjExIiBjbGFzcz0ibWQtZW5kLWJs +b2NrIG1kLXAiIG1kdHlwZT0icGFyYWdyYXBoIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJv +eDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IG1hcmdpbjogMHB4IDBweCAwLjVyZW07IHdoaXRlLXNw +YWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHNwYW4gIGNsYXNzPSJtZC1wbGFp +biIgbWQtaW5saW5lPSJwbGFpbiIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij7ku7vl +iqEy77yaRzXov5vplIDlrZg1LjQuNueJiOacrOW8gOWPkTwvc3Bhbj48L3A+PC9saT48L3VsPjwv +bGk+PGxpICBjaWQ9Im4xMiIgY2xhc3M9Im1kLWxpc3QtaXRlbSIgbWR0eXBlPSJsaXN0X2l0ZW0i +IHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcG9zaXRpb246IHJl +bGF0aXZlOyI+PHAgIGNpZD0ibjEzIiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLXAiIG1kdHlwZT0i +cGFyYWdyYXBoIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGlu +aGVyaXQ7IG1hcmdpbjogMHB4IDBweCAwLjVyZW07IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9z +aXRpb246IHJlbGF0aXZlOyI+PHNwYW4gIGNsYXNzPSJtZC1wbGFpbiIgbWQtaW5saW5lPSJwbGFp +biIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGZvbnQtd2VpZ2h0OiBib2xkOyI+5bi4 +6KeE5bel5L2cPC9zcGFuPjwvcD48cCAgY2lkPSJuMTE1IiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1k +LXAiIG1kdHlwZT0icGFyYWdyYXBoIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbGlu +ZS1oZWlnaHQ6IGluaGVyaXQ7IG1hcmdpbjogMC41cmVtIDBweDsgd2hpdGUtc3BhY2U6IHByZS13 +cmFwOyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48c3BhbiAgY2xhc3M9Im1kLXBsYWluIiBtZC1pbmxp +bmU9InBsYWluIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPjIwMjYtMDMtMTY8L3Nw +YW4+PC9wPjxvbCAgY2lkPSJuMTYzIiBjbGFzcz0ib2wtbGlzdCIgbWR0eXBlPSJsaXN0IiBzdGFy +dD0iIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBhZGRpbmct +bGVmdDogMzBweDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PGxpICBjaWQ9Im4xNjUiIGNsYXNzPSJt +ZC1saXN0LWl0ZW0iIG1kdHlwZT0ibGlzdF9pdGVtIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVy +LWJveDsgbWFyZ2luOiAwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxwICBjaWQ9Im4xNjYiIGNs +YXNzPSJtZC1lbmQtYmxvY2sgbWQtcCIgbWR0eXBlPSJwYXJhZ3JhcGgiIHN0eWxlPSJib3gtc2l6 +aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5oZXJpdDsgbWFyZ2luOiAwcHggMHB4IDAu +NXJlbTsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48c3BhbiAg +Y2xhc3M9Im1kLXBsYWluIiBtZC1pbmxpbmU9InBsYWluIiBzdHlsZT0iYm94LXNpemluZzogYm9y +ZGVyLWJveDsiPuS4u+aVsOaNruWOhuWPsumXrumimOWIhuaekDwvc3Bhbj48L3A+PC9saT48bGkg +IGNpZD0ibjE2NyIgY2xhc3M9Im1kLWxpc3QtaXRlbSIgbWR0eXBlPSJsaXN0X2l0ZW0iIHN0eWxl +PSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcG9zaXRpb246IHJlbGF0aXZl +OyI+PHAgIGNpZD0ibjE2OCIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1wIiBtZHR5cGU9InBhcmFn +cmFwaCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhlcml0 +OyBtYXJnaW46IDBweCAwcHggMC41cmVtOyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0aW9u +OiByZWxhdGl2ZTsiPjxzcGFuICBjbGFzcz0ibWQtcGxhaW4iIG1kLWlubGluZT0icGxhaW4iIHN0 +eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+5Li75pWw5o2u5Y6G5Y+y6Zeu6aKY5o6l5Y+j +5aSE55CGPC9zcGFuPjwvcD48L2xpPjxsaSAgY2lkPSJuMTY5IiBjbGFzcz0ibWQtbGlzdC1pdGVt +IiBtZHR5cGU9Imxpc3RfaXRlbSIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdp +bjogMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48cCAgY2lkPSJuMTcwIiBjbGFzcz0ibWQtZW5k +LWJsb2NrIG1kLXAiIG1kdHlwZT0icGFyYWdyYXBoIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVy +LWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IG1hcmdpbjogMHB4IDBweCAwLjVyZW07IHdoaXRl +LXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHNwYW4gIGNsYXNzPSJtZC1w +bGFpbiIgbWQtaW5saW5lPSJwbGFpbiIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij7k +uLvmlbDmja7pnIDmsYLliIbmnpA8L3NwYW4+PC9wPjwvbGk+PGxpICBjaWQ9Im4xNzEiIGNsYXNz +PSJtZC1saXN0LWl0ZW0iIG1kdHlwZT0ibGlzdF9pdGVtIiBzdHlsZT0iYm94LXNpemluZzogYm9y +ZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxwICBjaWQ9Im4xNzIi +IGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCIgbWR0eXBlPSJwYXJhZ3JhcGgiIHN0eWxlPSJib3gt +c2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5oZXJpdDsgbWFyZ2luOiAwcHggMHB4 +IDAuNXJlbTsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48c3Bh +biAgY2xhc3M9Im1kLXBsYWluIiBtZC1pbmxpbmU9InBsYWluIiBzdHlsZT0iYm94LXNpemluZzog +Ym9yZGVyLWJveDsiPuS4u+aVsOaNruW3peaXtuivhOS8sDwvc3Bhbj48L3A+PC9saT48bGkgIGNp +ZD0ibjE3MyIgY2xhc3M9Im1kLWxpc3QtaXRlbSIgbWR0eXBlPSJsaXN0X2l0ZW0iIHN0eWxlPSJi +b3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcG9zaXRpb246IHJlbGF0aXZlOyI+ +PHAgIGNpZD0ibjE3NCIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1wIiBtZHR5cGU9InBhcmFncmFw +aCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhlcml0OyBt +YXJnaW46IDBweCAwcHggMC41cmVtOyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0aW9uOiBy +ZWxhdGl2ZTsiPjxzcGFuICBjbGFzcz0ibWQtcGxhaW4iIG1kLWlubGluZT0icGxhaW4iIHN0eWxl +PSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+5Li75pWw5o2u6ZyA5rGC5byA5Y+RPC9zcGFuPjwv +cD48L2xpPjwvb2w+PHAgIGNpZD0ibjEyMyIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1wIiBtZHR5 +cGU9InBhcmFncmFwaCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGxpbmUtaGVpZ2h0 +OiBpbmhlcml0OyBtYXJnaW46IDAuNXJlbSAwcHg7IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9z +aXRpb246IHJlbGF0aXZlOyI+PHNwYW4gIGNsYXNzPSJtZC1wbGFpbiIgbWQtaW5saW5lPSJwbGFp +biIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij4yMDI2LTAzLTE3PC9zcGFuPjwvcD48 +b2wgIGNpZD0ibjE4MCIgY2xhc3M9Im9sLWxpc3QiIG1kdHlwZT0ibGlzdCIgc3RhcnQ9IiIgc3R5 +bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBwYWRkaW5nLWxlZnQ6IDMw +cHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxsaSAgY2lkPSJuMTgyIiBjbGFzcz0ibWQtbGlzdC1p +dGVtIiBtZHR5cGU9Imxpc3RfaXRlbSIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1h +cmdpbjogMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48cCAgY2lkPSJuMTgzIiBjbGFzcz0ibWQt +ZW5kLWJsb2NrIG1kLXAiIG1kdHlwZT0icGFyYWdyYXBoIiBzdHlsZT0iYm94LXNpemluZzogYm9y +ZGVyLWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IG1hcmdpbjogMHB4IDBweCAwLjVyZW07IHdo +aXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHNwYW4gIGNsYXNzPSJt +ZC1wbGFpbiIgbWQtaW5saW5lPSJwbGFpbiIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7 +Ij7kuLvmlbDmja7lvIDlhbPphY3nva7liJ3lp4vljJbmjqXlj6M8L3NwYW4+PC9wPjwvbGk+PGxp +ICBjaWQ9Im4xODQiIGNsYXNzPSJtZC1saXN0LWl0ZW0iIG1kdHlwZT0ibGlzdF9pdGVtIiBzdHls +ZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBvc2l0aW9uOiByZWxhdGl2 +ZTsiPjxwICBjaWQ9Im4xODUiIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCIgbWR0eXBlPSJwYXJh +Z3JhcGgiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5oZXJp +dDsgbWFyZ2luOiAwcHggMHB4IDAuNXJlbTsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyBwb3NpdGlv +bjogcmVsYXRpdmU7Ij48c3BhbiAgY2xhc3M9Im1kLXBsYWluIiBtZC1pbmxpbmU9InBsYWluIiBz +dHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPuS4u+aVsOaNruW8gOWFs+mFjee9ruWJjeWQ +juerr+iBlOiwgzwvc3Bhbj48L3A+PC9saT48bGkgIGNpZD0ibjE4NiIgY2xhc3M9Im1kLWxpc3Qt +aXRlbSIgbWR0eXBlPSJsaXN0X2l0ZW0iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBt +YXJnaW46IDBweDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHAgIGNpZD0ibjE4NyIgY2xhc3M9Im1k +LWVuZC1ibG9jayBtZC1wIiBtZHR5cGU9InBhcmFncmFwaCIgc3R5bGU9ImJveC1zaXppbmc6IGJv +cmRlci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhlcml0OyBtYXJnaW46IDBweCAwcHggMC41cmVtOyB3 +aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxzcGFuICBjbGFzcz0i +bWQtcGxhaW4iIG1kLWlubGluZT0icGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94 +OyI+5Li75pWw5o2u5byA5YWz6YWN572u5a+55aSW5o6l5Y+jPC9zcGFuPjwvcD48L2xpPjwvb2w+ +PHAgIGNpZD0ibjEyNiIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1wIG1kLWZvY3VzIiBtZHR5cGU9 +InBhcmFncmFwaCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGxpbmUtaGVpZ2h0OiBp +bmhlcml0OyBtYXJnaW46IDAuNXJlbSAwcHg7IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRp +b246IHJlbGF0aXZlOyI+PHNwYW4gIGNsYXNzPSJtZC1wbGFpbiIgbWQtaW5saW5lPSJwbGFpbiIg +c3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij4yMDI2LTAzLTE4PC9zcGFuPjwvcD48b2wg +IGNpZD0ibjE5MyIgY2xhc3M9Im9sLWxpc3QiIG1kdHlwZT0ibGlzdCIgc3RhcnQ9IiIgc3R5bGU9 +ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBwYWRkaW5nLWxlZnQ6IDMwcHg7 +IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxsaSAgY2lkPSJuMTk1IiBjbGFzcz0ibWQtbGlzdC1pdGVt +IiBtZHR5cGU9Imxpc3RfaXRlbSIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdp +bjogMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48cCAgY2lkPSJuMTk2IiBjbGFzcz0ibWQtZW5k +LWJsb2NrIG1kLXAiIG1kdHlwZT0icGFyYWdyYXBoIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVy +LWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IG1hcmdpbjogMHB4IDBweCAwLjVyZW07IHdoaXRl +LXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHNwYW4gIGNsYXNzPSJtZC1w +bGFpbiIgbWQtaW5saW5lPSJwbGFpbiIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij7p +lIDllK7lj5HotKfljZXmiZPljbDmqKHniYjlrZfmrrXmt7vliqDplIDllK7luIHnp43lrZfmrrU8 +L3NwYW4+PC9wPjwvbGk+PGxpICBjaWQ9Im4xOTciIGNsYXNzPSJtZC1saXN0LWl0ZW0iIG1kdHlw +ZT0ibGlzdF9pdGVtIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7 +IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxwICBjaWQ9Im4xOTgiIGNsYXNzPSJtZC1lbmQtYmxvY2sg +bWQtcCIgbWR0eXBlPSJwYXJhZ3JhcGgiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBs +aW5lLWhlaWdodDogaW5oZXJpdDsgbWFyZ2luOiAwcHggMHB4IDAuNXJlbTsgd2hpdGUtc3BhY2U6 +IHByZS13cmFwOyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48c3BhbiAgY2xhc3M9Im1kLXBsYWluIiBt +ZC1pbmxpbmU9InBsYWluIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPumUgOWUruiu +ouWNleaWsOWinue8lui+keWPmOabtOeVjOmdou+8jOS6p+WTgeaYjue7huWinuWKoOmUgOWUruWb +vueJh++8jOmcgOaUr+aMgeWkmuS4quWbvueJh+S4iuS8oO+8jOS4lOaUr+aMgeaJk+WNsDwvc3Bh +bj48L3A+PC9saT48L29sPjxwICBjaWQ9Im4xMzAiIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCIg +bWR0eXBlPSJwYXJhZ3JhcGgiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhl +aWdodDogaW5oZXJpdDsgbWFyZ2luOiAwLjVyZW0gMHB4OyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7 +IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxzcGFuICBjbGFzcz0ibWQtcGxhaW4iIG1kLWlubGluZT0i +cGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+MjAyNi0wMy0xOTwvc3Bhbj48 +L3A+PG9sICBjaWQ9Im4yMDQiIGNsYXNzPSJvbC1saXN0IiBtZHR5cGU9Imxpc3QiIHN0YXJ0PSIi +IHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcGFkZGluZy1sZWZ0 +OiAzMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48bGkgIGNpZD0ibjIwNiIgY2xhc3M9Im1kLWxp +c3QtaXRlbSIgbWR0eXBlPSJsaXN0X2l0ZW0iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94 +OyBtYXJnaW46IDBweDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHAgIGNpZD0ibjIwNyIgY2xhc3M9 +Im1kLWVuZC1ibG9jayBtZC1wIiBtZHR5cGU9InBhcmFncmFwaCIgc3R5bGU9ImJveC1zaXppbmc6 +IGJvcmRlci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhlcml0OyBtYXJnaW46IDBweCAwcHggMC41cmVt +OyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxzcGFuICBjbGFz +cz0ibWQtcGxhaW4iIG1kLWlubGluZT0icGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXIt +Ym94OyI+6ZSA5ZSu5Zu+54mH5YmN5ZCO56uv6IGU6LCDPC9zcGFuPjwvcD48L2xpPjxsaSAgY2lk +PSJuMjA4IiBjbGFzcz0ibWQtbGlzdC1pdGVtIiBtZHR5cGU9Imxpc3RfaXRlbSIgc3R5bGU9ImJv +eC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48 +cCAgY2lkPSJuMjA5IiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLXAiIG1kdHlwZT0icGFyYWdyYXBo +IiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IG1h +cmdpbjogMHB4IDBweCAwLjVyZW07IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJl +bGF0aXZlOyI+PHNwYW4gIGNsYXNzPSJtZC1wbGFpbiIgbWQtaW5saW5lPSJwbGFpbiIgc3R5bGU9 +ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij7plIDllK7lm77niYfmiZPljbA8L3NwYW4+PC9wPjwv +bGk+PGxpICBjaWQ9Im4yMTAiIGNsYXNzPSJtZC1saXN0LWl0ZW0iIG1kdHlwZT0ibGlzdF9pdGVt +IiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBvc2l0aW9uOiBy +ZWxhdGl2ZTsiPjxwICBjaWQ9Im4yMTEiIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCIgbWR0eXBl +PSJwYXJhZ3JhcGgiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdodDog +aW5oZXJpdDsgbWFyZ2luOiAwcHggMHB4IDAuNXJlbTsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyBw +b3NpdGlvbjogcmVsYXRpdmU7Ij48c3BhbiAgY2xhc3M9Im1kLXBsYWluIiBtZC1pbmxpbmU9InBs +YWluIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPuWxnuaAp+e7hOaOpeWPo+W8gOWP +kTwvc3Bhbj48L3A+PC9saT48L29sPjxwICBjaWQ9Im4xMzQiIGNsYXNzPSJtZC1lbmQtYmxvY2sg +bWQtcCIgbWR0eXBlPSJwYXJhZ3JhcGgiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBs +aW5lLWhlaWdodDogaW5oZXJpdDsgbWFyZ2luOiAwLjVyZW0gMHB4OyB3aGl0ZS1zcGFjZTogcHJl +LXdyYXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxzcGFuICBjbGFzcz0ibWQtcGxhaW4iIG1kLWlu +bGluZT0icGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+MjAyNi0wMy0yMDwv +c3Bhbj48L3A+PG9sICBjaWQ9Im4yMTciIGNsYXNzPSJvbC1saXN0IiBtZHR5cGU9Imxpc3QiIHN0 +YXJ0PSIiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcGFkZGlu +Zy1sZWZ0OiAzMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48bGkgIGNpZD0ibjIxOSIgY2xhc3M9 +Im1kLWxpc3QtaXRlbSIgbWR0eXBlPSJsaXN0X2l0ZW0iIHN0eWxlPSJib3gtc2l6aW5nOiBib3Jk +ZXItYm94OyBtYXJnaW46IDBweDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHAgIGNpZD0ibjIyMCIg +Y2xhc3M9Im1kLWVuZC1ibG9jayBtZC1wIiBtZHR5cGU9InBhcmFncmFwaCIgc3R5bGU9ImJveC1z +aXppbmc6IGJvcmRlci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhlcml0OyBtYXJnaW46IDBweCAwcHgg +MC41cmVtOyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxzcGFu +ICBjbGFzcz0ibWQtcGxhaW4iIG1kLWlubGluZT0icGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBi +b3JkZXItYm94OyI+6ZSA5ZSu5Zu+54mH5Yqf6IO96IGU6LCDPC9zcGFuPjwvcD48L2xpPjxsaSAg +Y2lkPSJuMjIxIiBjbGFzcz0ibWQtbGlzdC1pdGVtIiBtZHR5cGU9Imxpc3RfaXRlbSIgc3R5bGU9 +ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7 +Ij48cCAgY2lkPSJuMjIyIiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLXAiIG1kdHlwZT0icGFyYWdy +YXBoIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7 +IG1hcmdpbjogMHB4IDBweCAwLjVyZW07IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRpb246 +IHJlbGF0aXZlOyI+PHNwYW4gIGNsYXNzPSJtZC1wbGFpbiIgbWQtaW5saW5lPSJwbGFpbiIgc3R5 +bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij7plIDllK7lm77niYflpJrlvKDmiZPljbA8L3Nw +YW4+PC9wPjwvbGk+PGxpICBjaWQ9Im4yMjMiIGNsYXNzPSJtZC1saXN0LWl0ZW0iIG1kdHlwZT0i +bGlzdF9pdGVtIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBv +c2l0aW9uOiByZWxhdGl2ZTsiPjxwICBjaWQ9Im4yMjQiIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQt +cCIgbWR0eXBlPSJwYXJhZ3JhcGgiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5l +LWhlaWdodDogaW5oZXJpdDsgbWFyZ2luOiAwcHggMHB4IDAuNXJlbTsgd2hpdGUtc3BhY2U6IHBy +ZS13cmFwOyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48c3BhbiAgY2xhc3M9Im1kLXBsYWluIG1kLWV4 +cGFuZCIgbWQtaW5saW5lPSJwbGFpbiIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij7m +mI7nu4bliJfooajlsZ7mgKfnu4Tmn6Xor6I8L3NwYW4+PC9wPjwvbGk+PC9vbD48L2xpPjwvb2w+ +PGgzICBjaWQ9Im40MSIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1oZWFkaW5nIiBtZHR5cGU9Imhl +YWRpbmciIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBicmVhay1hZnRlcjogYXZvaWQt +cGFnZTsgYnJlYWstaW5zaWRlOiBhdm9pZDsgZm9udC1zaXplOiAxLjVlbTsgbWFyZ2luLXRvcDog +MXJlbTsgbWFyZ2luLWJvdHRvbTogMXJlbTsgcG9zaXRpb246IHJlbGF0aXZlOyBmb250LXdlaWdo +dDogNzAwOyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IGNvbG9yOiByZ2IoNTEsIDUxLCA1MSk7IGZv +bnQtZmFtaWx5OiAnT3BlbiBTYW5zJywgJ0NsZWFyIFNhbnMnLCAnSGVsdmV0aWNhIE5ldWUnLCBI +ZWx2ZXRpY2EsIEFyaWFsLCAnU2Vnb2UgVUkgRW1vamknLCBzYW5zLXNlcmlmOyBmb250LXN0eWxl +OiBub3JtYWw7IGZvbnQtdmFyaWFudC1saWdhdHVyZXM6IG5vcm1hbDsgZm9udC12YXJpYW50LWNh +cHM6IG5vcm1hbDsgbGV0dGVyLXNwYWNpbmc6IG5vcm1hbDsgdGV4dC1hbGlnbjogc3RhcnQ7IHRl +eHQtaW5kZW50OiAwcHg7IHRleHQtdHJhbnNmb3JtOiBub25lOyB3b3JkLXNwYWNpbmc6IDBweDsg +dGV4dC1kZWNvcmF0aW9uLXRoaWNrbmVzczogaW5pdGlhbDsgdGV4dC1kZWNvcmF0aW9uLXN0eWxl +OiBpbml0aWFsOyB0ZXh0LWRlY29yYXRpb24tY29sb3I6IGluaXRpYWw7Ij48c3BhbiAgY2xhc3M9 +Im1kLXBsYWluIiBtZC1pbmxpbmU9InBsYWluIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJv +eDsgZm9udC13ZWlnaHQ6IGJvbGQ7Ij7kuIDjgIHkuIvlkajph43ngrnku7vliqE8L3NwYW4+PC9o +Mz48cCAgY2lkPSJuNDIiIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCIgbWR0eXBlPSJwYXJhZ3Jh +cGgiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5oZXJpdDsg +bWFyZ2luOiAwLjhlbSAwcHg7IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJlbGF0 +aXZlOyBjb2xvcjogcmdiKDUxLCA1MSwgNTEpOyBmb250LWZhbWlseTogJ09wZW4gU2FucycsICdD +bGVhciBTYW5zJywgJ0hlbHZldGljYSBOZXVlJywgSGVsdmV0aWNhLCBBcmlhbCwgJ1NlZ29lIFVJ +IEVtb2ppJywgc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxNnB4OyBmb250LXN0eWxlOiBub3JtYWw7 +IGZvbnQtdmFyaWFudC1saWdhdHVyZXM6IG5vcm1hbDsgZm9udC12YXJpYW50LWNhcHM6IG5vcm1h +bDsgZm9udC13ZWlnaHQ6IDQwMDsgbGV0dGVyLXNwYWNpbmc6IG5vcm1hbDsgdGV4dC1hbGlnbjog +c3RhcnQ7IHRleHQtaW5kZW50OiAwcHg7IHRleHQtdHJhbnNmb3JtOiBub25lOyB3b3JkLXNwYWNp +bmc6IDBweDsgdGV4dC1kZWNvcmF0aW9uLXRoaWNrbmVzczogaW5pdGlhbDsgdGV4dC1kZWNvcmF0 +aW9uLXN0eWxlOiBpbml0aWFsOyB0ZXh0LWRlY29yYXRpb24tY29sb3I6IGluaXRpYWw7Ij48c3Bh +biAgY2xhc3M9Im1kLXBsYWluIiBtZC1pbmxpbmU9InBsYWluIiBzdHlsZT0iYm94LXNpemluZzog +Ym9yZGVyLWJveDsiPjUuNC4254mI5pysPC9zcGFuPjwvcD48ZGl2ICBjbGFzcz0ibWQtaHIgbWQt +ZW5kLWJsb2NrIF9fYWxpeXVuX25vZGVfaGFzX2NvbG9yIiBzdHlsZT0iZm9udC1mYW1pbHk6ICdP +cGVuIFNhbnMnLCAnQ2xlYXIgU2FucycsICdIZWx2ZXRpY2EgTmV1ZScsIEhlbHZldGljYSwgQXJp +YWwsIHNhbnMtc2VyaWY7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7IGNvbG9yOiByZ2IoNTEsIDUx +LCA1MSk7IGZvbnQtc2l6ZTogMTZweDsiPjxociAgY2xhc3M9IiBfX2FsaXl1bl9ub2RlX2hhc19i +Z2NvbG9yIiBzdHlsZT0iYm94LXNpemluZzogY29udGVudC1ib3g7IGhlaWdodDogMnB4OyBtYXJn +aW46IDE2cHggMHB4OyBib3JkZXI6IDBweCBub25lOyBwYWRkaW5nOiAwcHg7IGJhY2tncm91bmQt +Y29sb3I6IHJnYigyMzEsIDIzMSwgMjMxKTsiPjwvZGl2PjxwICBjbGFzcz0ibWQtZW5kLWJsb2Nr +IG1kLXAgX19hbGl5dW5fbm9kZV9oYXNfY29sb3IiIHN0eWxlPSJmb250LWZhbWlseTogJ09wZW4g +U2FucycsICdDbGVhciBTYW5zJywgJ0hlbHZldGljYSBOZXVlJywgSGVsdmV0aWNhLCBBcmlhbCwg +c2Fucy1zZXJpZjsgYm94LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7 +IG1hcmdpbjogMTJweCAwcHg7IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJlbGF0 +aXZlOyBjb2xvcjogcmdiKDUxLCA1MSwgNTEpOyBmb250LXNpemU6IDE2cHg7Ij48c3BhbiAgY2xh +c3M9Im1kLXBsYWluIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgZm9udC13ZWlnaHQ6 +IDcwMDsiPuWkh+azqDwvc3Bhbj48c3BhbiAgY2xhc3M9Im1kLXBsYWluIG1kLWV4cGFuZCIgc3R5 +bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij7vvJo8L3NwYW4+PC9wPjxwICBjbGFzcz0ibWQt +ZW5kLWJsb2NrIG1kLXAgX19hbGl5dW5fbm9kZV9oYXNfY29sb3IiIHN0eWxlPSJmb250LWZhbWls +eTogJ09wZW4gU2FucycsICdDbGVhciBTYW5zJywgJ0hlbHZldGljYSBOZXVlJywgSGVsdmV0aWNh +LCBBcmlhbCwgc2Fucy1zZXJpZjsgYm94LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6 +IGluaGVyaXQ7IG1hcmdpbjogMTJweCAwcHg7IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRp +b246IHJlbGF0aXZlOyBjb2xvcjogcmdiKDUxLCA1MSwgNTEpOyBmb250LXNpemU6IDE2cHg7Ij48 +YnIgPjwvcD48L2Rpdj48ZGl2ICBzdHlsZT0iZm9udC1mYW1pbHk6IOW+rui9r+mbhem7kTsiPjxi +ciA+PC9kaXY+PC9kaXY+PGRpdiAgY2xhc3M9IiBfX2FsaXl1bl9ub2RlX2hhc19jb2xvciIgc3R5 +bGU9ImZvbnQtZmFtaWx5OiDlvq7ova/pm4Xpu5E7IG1hcmdpbjogMjBweCAwcHg7IGZvbnQtc2l6 +ZTogMTRweDsgY29sb3I6IHJnYigwLCAwLCAwKTsiPgogICAgPGRpdiAgY2xhc3M9IiBfX2FsaXl1 +bl9ub2RlX2hhc19jb2xvciIgc3R5bGU9ImZvbnQtZmFtaWx5OiDlvq7ova/pm4Xpu5E7IGZvbnQt +c2l6ZTogMTRweDsgY29sb3I6IHJnYigwLCAwLCAwKTsiPgogICAgPGRpdiAgY2xhc3M9IiBfX2Fs +aXl1bl9ub2RlX2hhc19jb2xvciIgc3R5bGU9ImZvbnQtZmFtaWx5OiDlvq7ova/pm4Xpu5E7IGZv +bnQtc2l6ZTogMTRweDsgY29sb3I6IHJnYigwLCAwLCAwKTsiPgogICAgPGRpdiAgY2xhc3M9IiBf +X2FsaXl1bl9ub2RlX2hhc19jb2xvciIgc3R5bGU9ImZvbnQtZmFtaWx5OiDlvq7ova/pm4Xpu5E7 +IGZvbnQtc2l6ZTogMTRweDsgY29sb3I6IHJnYigwLCAwLCAwKTsiPgogICAgPGRpdiAgY2xhc3M9 +IiBfX2FsaXl1bl9ub2RlX2hhc19jb2xvciIgc3R5bGU9ImZvbnQtZmFtaWx5OiDlvq7ova/pm4Xp +u5E7IGZvbnQtc2l6ZTogMTRweDsgY29sb3I6IHJnYigwLCAwLCAwKTsiPgogICAgPHNwYW4gIGNs +YXNzPSIgX19hbGl5dW5fbm9kZV9oYXNfY29sb3IiIHN0eWxlPSJjb2xvcjogcmdiKDE5MSwgMTkx +LCAxOTEpOyBmb250LWZhbWlseTogJ01pY3Jvc29mdCBZYWhlaSc7IGZvbnQtc2l6ZTogMTNweDsi +PkJlc3QgcmVnYXJkcyw8L3NwYW4+PGRpdiAgc3R5bGU9Im1hcmdpbjogMHB4OyBwYWRkaW5nOiAw +cHg7IGJvcmRlcjogMHB4OyBvdXRsaW5lOiAwcHg7IGZvbnQtZmFtaWx5OiBUYWhvbWEsIEFyaWFs +LCBTVEhlaXRpLCBTaW1TdW47IGZvbnQtdmFyaWFudC1saWdhdHVyZXM6IG5vcm1hbDsgY2xlYXI6 +IGJvdGg7Ij48c3BhbiAgY2xhc3M9IiBfX2FsaXl1bl9ub2RlX2hhc19jb2xvciIgc3R5bGU9Im1h +cmdpbjogMHB4OyBwYWRkaW5nOiAwcHg7IGJvcmRlcjogMHB4OyBvdXRsaW5lOiAwcHg7IGZvbnQt +ZmFtaWx5OiAnTWljcm9zb2Z0IFlhaGVpJzsgZm9udC1zaXplOiAxM3B4OyBjb2xvcjogcmdiKDE5 +MSwgMTkxLCAxOTEpOyI+5p2o6L2pPC9zcGFuPjwvZGl2PjxkaXYgIHN0eWxlPSJtYXJnaW46IDBw +eDsgcGFkZGluZzogMHB4OyBib3JkZXI6IDBweDsgb3V0bGluZTogMHB4OyBmb250LWZhbWlseTog +VGFob21hLCBBcmlhbCwgU1RIZWl0aSwgU2ltU3VuOyBmb250LXZhcmlhbnQtbGlnYXR1cmVzOiBu +b3JtYWw7IGNsZWFyOiBib3RoOyI+PGltZyAgZGF0YS1hbGltYWlsLWltZy1wcm9jZXNzZWQtc3Ft +LWVkaXRvcj0idHJ1ZSIgc3JjPSJodHRwczovL21haWwtb25saW5lLm5vc2RuLjEyNy5uZXQvd3pw +bW1jL2NlOWY4YjM2ZTFmZmJlNTUzMjljMTk2Yzg0ZmU1MTk3LnBuZyIgc3R5bGU9Im1heC13aWR0 +aDogdW5zZXQ7IHZlcnRpY2FsLWFsaWduOiBib3R0b207Ij48L2Rpdj48ZGl2ICBzdHlsZT0ibWFy +Z2luOiAwcHg7IHBhZGRpbmc6IDBweDsgYm9yZGVyOiAwcHg7IG91dGxpbmU6IDBweDsgZm9udC1m +YW1pbHk6IFRhaG9tYSwgQXJpYWwsIFNUSGVpdGksIFNpbVN1bjsgZm9udC12YXJpYW50LWxpZ2F0 +dXJlczogbm9ybWFsOyBjbGVhcjogYm90aDsiPjxzcGFuICBjbGFzcz0iIF9fYWxpeXVuX25vZGVf +aGFzX2NvbG9yIiBzdHlsZT0ibWFyZ2luOiAwcHg7IHBhZGRpbmc6IDBweDsgYm9yZGVyOiAwcHg7 +IG91dGxpbmU6IDBweDsgZm9udC1mYW1pbHk6ICdNaWNyb3NvZnQgWWFoZWknOyBjb2xvcjogcmdi +KDE5MSwgMTkxLCAxOTEpOyI+5Zyw5Z2A77ya5Lit5Zu9wrfljZfkuqzkupHlr4bln45M5qCLNS8x +MOalvDwvc3Bhbj48L2Rpdj48ZGl2ICBzdHlsZT0ibWFyZ2luOiAwcHg7IHBhZGRpbmc6IDBweDsg +Ym9yZGVyOiAwcHg7IG91dGxpbmU6IDBweDsgZm9udC1mYW1pbHk6IFRhaG9tYSwgQXJpYWwsIFNU +SGVpdGksIFNpbVN1bjsgZm9udC12YXJpYW50LWxpZ2F0dXJlczogbm9ybWFsOyBjbGVhcjogYm90 +aDsiPjxzcGFuICBjbGFzcz0iIF9fYWxpeXVuX25vZGVfaGFzX2NvbG9yIiBzdHlsZT0ibWFyZ2lu +OiAwcHg7IHBhZGRpbmc6IDBweDsgYm9yZGVyOiAwcHg7IG91dGxpbmU6IDBweDsgZm9udC1mYW1p +bHk6ICdNaWNyb3NvZnQgWWFoZWknOyBjb2xvcjogcmdiKDE5MSwgMTkxLCAxOTEpOyI+5omL5py6 +77yaMTg3MjYxMjg0ODk8L3NwYW4+PC9kaXY+PGRpdiAgc3R5bGU9Im1hcmdpbjogMHB4OyBwYWRk +aW5nOiAwcHg7IGJvcmRlcjogMHB4OyBvdXRsaW5lOiAwcHg7IGZvbnQtZmFtaWx5OiBUYWhvbWEs +IEFyaWFsLCBTVEhlaXRpLCBTaW1TdW47IGZvbnQtdmFyaWFudC1saWdhdHVyZXM6IG5vcm1hbDsg +Y2xlYXI6IGJvdGg7Ij48c3BhbiAgY2xhc3M9IiBfX2FsaXl1bl9ub2RlX2hhc19jb2xvciIgc3R5 +bGU9Im1hcmdpbjogMHB4OyBwYWRkaW5nOiAwcHg7IGJvcmRlcjogMHB4OyBvdXRsaW5lOiAwcHg7 +IGZvbnQtZmFtaWx5OiAnTWljcm9zb2Z0IFlhaGVpJzsgY29sb3I6IHJnYigxOTEsIDE5MSwgMTkx +KTsiPumCrueuse+8mnlhbmd4dWFuQHdpdHNvZnQuY248L3NwYW4+PC9kaXY+PC9kaXY+PC9kaXY+ +PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+ + +--=_mailmaster-6a18e4a4_0_54de_=-- diff --git a/media/inbound/2026-03-27_1708_G5开发周报_2026-03-23_--_2026-03-27---af4d900a-4ff5-4ac7-9f02-4a1730679954.eml b/media/inbound/2026-03-27_1708_G5开发周报_2026-03-23_--_2026-03-27---af4d900a-4ff5-4ac7-9f02-4a1730679954.eml new file mode 100644 index 0000000..5078ca9 --- /dev/null +++ b/media/inbound/2026-03-27_1708_G5开发周报_2026-03-23_--_2026-03-27---af4d900a-4ff5-4ac7-9f02-4a1730679954.eml @@ -0,0 +1,620 @@ +Date: Fri, 27 Mar 2026 17:08:25 +0800 +From: =?utf-8?B?5p2o6L2p?= +To: =?utf-8?B?5YiY5by6?= +Cc: =?utf-8?B?5bGI5paw6b6Z?= , =?utf-8?B?5pyx5paM?= + , =?utf-8?B?6ZmI5piO?= , + =?utf-8?B?6KKB5pm0?= , =?utf-8?B?5pu+6I6J?= + +Message-ID: <9f95f2c3-8860-4631-99a7-30f110eb3cee.yangxuan@witsoft.cn> +In-Reply-To: <118cdc96-acf5-4a97-8eef-75319fd0e336.yangxuan@witsoft.cn> +References: <4351C568-815B-42E0-A03D-100812C3A198@witsoft.cn> + <1dc0c9a6-7fdb-4bb4-9b8d-b10042d922f2.yangxuan@witsoft.cn> + <118cdc96-acf5-4a97-8eef-75319fd0e336.yangxuan@witsoft.cn> +Subject: =?utf-8?B?RzXlvIDlj5HlkajmiqXjgJAyMDI2LTAzLTIzIC0tICAyMDI2LTAz?= + =?utf-8?B?LTI344CR?= +MIME-Version: 1.0 +Content-Type: multipart/related; boundary="=_mailmaster-6a18e4a4_0_2d12_=" + +--=_mailmaster-6a18e4a4_0_2d12_= +Content-Type: multipart/alternative; boundary="=_mailmaster-6a18e4a4_0_39b3_=" + +--=_mailmaster-6a18e4a4_0_39b3_= +Content-Type: text/plain; charset="UTF-8" +Content-Transfer-Encoding: base64 + +5oKo5aW977yB5Lul5LiL5piv5oiR5pys5ZGo55qE5bel5L2c5oC757uT5Y+K5LiL5ZGo6K6h5YiS +77yM6K+35a6h6ZiF44CCCuacrOWRqOW3peS9nOaAu+e7kwrkuIDjgIHph43ngrnlt6XkvZzlrozm +iJDmg4XlhrUKCiAqIApHNeS4u+aVsOaNriA1LjQuNiDniYjmnKzlj5HluIMKCiAqIApHNei/m+mU +gOWtmCA1LjQuNiDniYjmnKzlj5HluIMK5LqM44CB5bi46KeE5bel5L2c5piO57uGCjIwMjYtMDMt +MjMKCiAqIArljZXmmI7nu4bjgIHlj5HotKfmmI7nu4bliJfooajmlK/mjIHlsZ7mgKfnu4Tmn6Xo +r6IKCiAqIArplIDllK7lm77niYfogZTosIPovazmtYsKCiAqIArkuLvmlbDmja7nvLrpmbfkv67l +pI0KMjAyNi0wMy0yNAoKICogCuiuouWNleaYjue7huOAgeWPkei0p+aYjue7huWIl+ihqOaUr+aM +geWxnuaAp+e7hOafpeivouWvvOWHuuiHqua1i+i9rOa1iwoKICogCuS6p+WTgeaYjue7huWinuWK +oOmUgOWUruWbvueJh+mcgOaxgui9rOa1iwoKICogCumUgOWUruWOhuWPsumXrumimOWkhOeQhgoy +MDI2LTAzLTI1CgogKiAK6ZyA5rGC5rWL6K+V6Zeu6aKY5L+u5aSNCgogKiAK5paZ5Y+36LWL5YC8 +5aSE55CGCjIwMjYtMDMtMjYKCiAqIArplIDllK7nvLrpmbfkv67lpI0KCiAqIArplIDllK7orqLl +jZXmlrDlop7jgIHnvJbovpHjgIHlj5jmm7TjgIHmlpnlj7fkvJjljJYKMjAyNi0wMy0yNwoKICog +CuS4u+aVsOaNrueJiOacrOWPkeW4g+aUr+aMgQoKICogCumUgOWUrueuoeeQhueJiOacrOWPkeW4 +g+aUr+aMgQoKICogCuW6k+WtmOmcgOaxguivhOWuoQoKICogCuW6k+WtmOW3peaXtuivhOS8sArk +uIvlkajph43ngrnku7vliqEKCiAqIAo1LjQuNyDniYjmnKzlvIDlj5EKQmVzdCByZWdhcmRzLArm +najovakK5Zyw5Z2A77ya5Lit5Zu9wrfljZfkuqzova/ku7bosLfova/ku7blpKfpgZMxMeWPt+iK +seelnuWkp+WOpjNGCuaJi+acuu+8mjE4NzI2MTI4NDg5CumCrueuse+8mnlhbmd4dWFuQHdpdHNv +ZnQuY24K + +--=_mailmaster-6a18e4a4_0_39b3_= +Content-Type: text/html; charset="UTF-8" +Content-Transfer-Encoding: base64 + +PGRpdiBjbGFzcz0iX19hbGl5dW5fZW1haWxfYm9keV9ibG9jayI+PGRpdiAgc3R5bGU9ImZvbnQt +ZmFtaWx5OiBUYWhvbWEsIEFyaWFsLCBTVEhlaXRpU0MtTGlnaHQsIFNpbVN1biI+PGRpdiAgc3R5 +bGU9ImZvbnQtZmFtaWx5OiDlvq7ova/pm4Xpu5E7Ij48cCAgY2xhc3M9Im1kLWVuZC1ibG9jayBt +ZC1wIG1kLWZvY3VzIF9fYWxpeXVuX25vZGVfaGFzX2NvbG9yIiBzdHlsZT0iZm9udC1mYW1pbHk6 +ICdPcGVuIFNhbnMnLCAnQ2xlYXIgU2FucycsICdIZWx2ZXRpY2EgTmV1ZScsIEhlbHZldGljYSwg +QXJpYWwsIHNhbnMtc2VyaWY7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7IGxpbmUtaGVpZ2h0OiBp +bmhlcml0OyBtYXJnaW46IDEycHggMHB4OyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0aW9u +OiByZWxhdGl2ZTsgY29sb3I6IHJnYig1MSwgNTEsIDUxKTsgZm9udC1zaXplOiAxNnB4OyI+PC9w +PjxwICBjaWQ9Im4xNzciIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCIgbWR0eXBlPSJwYXJhZ3Jh +cGgiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5oZXJpdDsg +bWFyZ2luOiAwLjhlbSAwcHg7IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJlbGF0 +aXZlOyBjb2xvcjogcmdiKDUxLCA1MSwgNTEpOyBmb250LWZhbWlseTogJ09wZW4gU2FucycsICdD +bGVhciBTYW5zJywgJ0hlbHZldGljYSBOZXVlJywgSGVsdmV0aWNhLCBBcmlhbCwgJ1NlZ29lIFVJ +IEVtb2ppJywgc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxNnB4OyBmb250LXN0eWxlOiBub3JtYWw7 +IGZvbnQtdmFyaWFudC1saWdhdHVyZXM6IG5vcm1hbDsgZm9udC12YXJpYW50LWNhcHM6IG5vcm1h +bDsgZm9udC13ZWlnaHQ6IDQwMDsgbGV0dGVyLXNwYWNpbmc6IG5vcm1hbDsgdGV4dC1hbGlnbjog +c3RhcnQ7IHRleHQtaW5kZW50OiAwcHg7IHRleHQtdHJhbnNmb3JtOiBub25lOyB3b3JkLXNwYWNp +bmc6IDBweDsgdGV4dC1kZWNvcmF0aW9uLXRoaWNrbmVzczogaW5pdGlhbDsgdGV4dC1kZWNvcmF0 +aW9uLXN0eWxlOiBpbml0aWFsOyB0ZXh0LWRlY29yYXRpb24tY29sb3I6IGluaXRpYWw7Ij48c3Bh +biAgY2xhc3M9Im1kLXBsYWluIG1kLWV4cGFuZCIgbWQtaW5saW5lPSJwbGFpbiIgc3R5bGU9ImJv +eC1zaXppbmc6IGJvcmRlci1ib3g7Ij7mgqjlpb3vvIHku6XkuIvmmK/miJHmnKzlkajnmoTlt6Xk +vZzmgLvnu5Plj4rkuIvlkajorqHliJLvvIzor7flrqHpmIXjgII8L3NwYW4+PC9wPjxkaXYgIGNp +ZD0ibjI5MiIgY2xhc3M9Im1kLWhyIG1kLWVuZC1ibG9jayIgbWR0eXBlPSJociIgdGFiaW5kZXg9 +Ii0xIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgY29sb3I6IHJnYig1MSwgNTEsIDUx +KTsgZm9udC1mYW1pbHk6ICdPcGVuIFNhbnMnLCAnQ2xlYXIgU2FucycsICdIZWx2ZXRpY2EgTmV1 +ZScsIEhlbHZldGljYSwgQXJpYWwsICdTZWdvZSBVSSBFbW9qaScsIHNhbnMtc2VyaWY7IGZvbnQt +c2l6ZTogMTZweDsgZm9udC1zdHlsZTogbm9ybWFsOyBmb250LXZhcmlhbnQtbGlnYXR1cmVzOiBu +b3JtYWw7IGZvbnQtdmFyaWFudC1jYXBzOiBub3JtYWw7IGZvbnQtd2VpZ2h0OiA0MDA7IGxldHRl +ci1zcGFjaW5nOiBub3JtYWw7IHRleHQtYWxpZ246IHN0YXJ0OyB0ZXh0LWluZGVudDogMHB4OyB0 +ZXh0LXRyYW5zZm9ybTogbm9uZTsgd2hpdGUtc3BhY2U6IG5vcm1hbDsgd29yZC1zcGFjaW5nOiAw +cHg7IHRleHQtZGVjb3JhdGlvbi10aGlja25lc3M6IGluaXRpYWw7IHRleHQtZGVjb3JhdGlvbi1z +dHlsZTogaW5pdGlhbDsgdGV4dC1kZWNvcmF0aW9uLWNvbG9yOiBpbml0aWFsOyI+PGhyICBzdHls +ZT0iYm94LXNpemluZzogY29udGVudC1ib3g7IGhlaWdodDogMnB4OyBtYXJnaW46IDE2cHggMHB4 +OyBib3JkZXI6IDBweCBub25lOyBwYWRkaW5nOiAwcHg7IGJhY2tncm91bmQtY29sb3I6IHJnYigy +MzEsIDIzMSwgMjMxKTsgb3ZlcmZsb3c6IGhpZGRlbjsiPjwvZGl2PjxoMyAgY2lkPSJuMjkzIiBj +bGFzcz0ibWQtZW5kLWJsb2NrIG1kLWhlYWRpbmciIG1kdHlwZT0iaGVhZGluZyIgc3R5bGU9ImJv +eC1zaXppbmc6IGJvcmRlci1ib3g7IGJyZWFrLWFmdGVyOiBhdm9pZC1wYWdlOyBicmVhay1pbnNp +ZGU6IGF2b2lkOyBmb250LXNpemU6IDEuNWVtOyBtYXJnaW4tdG9wOiAxcmVtOyBtYXJnaW4tYm90 +dG9tOiAxcmVtOyBwb3NpdGlvbjogcmVsYXRpdmU7IGZvbnQtd2VpZ2h0OiA3MDA7IHdoaXRlLXNw +YWNlOiBwcmUtd3JhcDsgY29sb3I6IHJnYig1MSwgNTEsIDUxKTsgZm9udC1mYW1pbHk6ICdPcGVu +IFNhbnMnLCAnQ2xlYXIgU2FucycsICdIZWx2ZXRpY2EgTmV1ZScsIEhlbHZldGljYSwgQXJpYWws +ICdTZWdvZSBVSSBFbW9qaScsIHNhbnMtc2VyaWY7IGZvbnQtc3R5bGU6IG5vcm1hbDsgZm9udC12 +YXJpYW50LWxpZ2F0dXJlczogbm9ybWFsOyBmb250LXZhcmlhbnQtY2Fwczogbm9ybWFsOyBsZXR0 +ZXItc3BhY2luZzogbm9ybWFsOyB0ZXh0LWFsaWduOiBzdGFydDsgdGV4dC1pbmRlbnQ6IDBweDsg +dGV4dC10cmFuc2Zvcm06IG5vbmU7IHdvcmQtc3BhY2luZzogMHB4OyB0ZXh0LWRlY29yYXRpb24t +dGhpY2tuZXNzOiBpbml0aWFsOyB0ZXh0LWRlY29yYXRpb24tc3R5bGU6IGluaXRpYWw7IHRleHQt +ZGVjb3JhdGlvbi1jb2xvcjogaW5pdGlhbDsiPjxzcGFuICBjbGFzcz0ibWQtcGxhaW4iIG1kLWlu +bGluZT0icGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBmb250LXdlaWdodDog +Ym9sZDsiPuacrOWRqOW3peS9nOaAu+e7kzwvc3Bhbj48L2gzPjxoNCAgY2lkPSJuMjk0IiBjbGFz +cz0ibWQtZW5kLWJsb2NrIG1kLWhlYWRpbmciIG1kdHlwZT0iaGVhZGluZyIgc3R5bGU9ImJveC1z +aXppbmc6IGJvcmRlci1ib3g7IGJyZWFrLWFmdGVyOiBhdm9pZC1wYWdlOyBicmVhay1pbnNpZGU6 +IGF2b2lkOyBmb250LXNpemU6IDEuMjVlbTsgbWFyZ2luLXRvcDogMXJlbTsgbWFyZ2luLWJvdHRv +bTogMXJlbTsgcG9zaXRpb246IHJlbGF0aXZlOyBmb250LXdlaWdodDogNzAwOyB3aGl0ZS1zcGFj +ZTogcHJlLXdyYXA7IGNvbG9yOiByZ2IoNTEsIDUxLCA1MSk7IGZvbnQtZmFtaWx5OiAnT3BlbiBT +YW5zJywgJ0NsZWFyIFNhbnMnLCAnSGVsdmV0aWNhIE5ldWUnLCBIZWx2ZXRpY2EsIEFyaWFsLCAn +U2Vnb2UgVUkgRW1vamknLCBzYW5zLXNlcmlmOyBmb250LXN0eWxlOiBub3JtYWw7IGZvbnQtdmFy +aWFudC1saWdhdHVyZXM6IG5vcm1hbDsgZm9udC12YXJpYW50LWNhcHM6IG5vcm1hbDsgbGV0dGVy +LXNwYWNpbmc6IG5vcm1hbDsgdGV4dC1hbGlnbjogc3RhcnQ7IHRleHQtaW5kZW50OiAwcHg7IHRl +eHQtdHJhbnNmb3JtOiBub25lOyB3b3JkLXNwYWNpbmc6IDBweDsgdGV4dC1kZWNvcmF0aW9uLXRo +aWNrbmVzczogaW5pdGlhbDsgdGV4dC1kZWNvcmF0aW9uLXN0eWxlOiBpbml0aWFsOyB0ZXh0LWRl +Y29yYXRpb24tY29sb3I6IGluaXRpYWw7Ij48c3BhbiAgY2xhc3M9Im1kLXBsYWluIiBtZC1pbmxp +bmU9InBsYWluIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPuS4gOOAgemHjeeCueW3 +peS9nOWujOaIkOaDheWGtTwvc3Bhbj48L2g0PjxvbCAgY2lkPSJuMjk1IiBjbGFzcz0ib2wtbGlz +dCIgbWR0eXBlPSJsaXN0IiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAw +LjhlbSAwcHg7IHBhZGRpbmctbGVmdDogMzBweDsgcG9zaXRpb246IHJlbGF0aXZlOyBjb2xvcjog +cmdiKDUxLCA1MSwgNTEpOyBmb250LWZhbWlseTogJ09wZW4gU2FucycsICdDbGVhciBTYW5zJywg +J0hlbHZldGljYSBOZXVlJywgSGVsdmV0aWNhLCBBcmlhbCwgJ1NlZ29lIFVJIEVtb2ppJywgc2Fu +cy1zZXJpZjsgZm9udC1zaXplOiAxNnB4OyBmb250LXN0eWxlOiBub3JtYWw7IGZvbnQtdmFyaWFu +dC1saWdhdHVyZXM6IG5vcm1hbDsgZm9udC12YXJpYW50LWNhcHM6IG5vcm1hbDsgZm9udC13ZWln +aHQ6IDQwMDsgbGV0dGVyLXNwYWNpbmc6IG5vcm1hbDsgdGV4dC1hbGlnbjogc3RhcnQ7IHRleHQt +aW5kZW50OiAwcHg7IHRleHQtdHJhbnNmb3JtOiBub25lOyB3aGl0ZS1zcGFjZTogbm9ybWFsOyB3 +b3JkLXNwYWNpbmc6IDBweDsgdGV4dC1kZWNvcmF0aW9uLXRoaWNrbmVzczogaW5pdGlhbDsgdGV4 +dC1kZWNvcmF0aW9uLXN0eWxlOiBpbml0aWFsOyB0ZXh0LWRlY29yYXRpb24tY29sb3I6IGluaXRp +YWw7Ij48bGkgIGNpZD0ibjI5NiIgY2xhc3M9Im1kLWxpc3QtaXRlbSIgbWR0eXBlPSJsaXN0X2l0 +ZW0iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcG9zaXRpb246 +IHJlbGF0aXZlOyI+PHAgIGNpZD0ibjI5NyIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1wIiBtZHR5 +cGU9InBhcmFncmFwaCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGxpbmUtaGVpZ2h0 +OiBpbmhlcml0OyBtYXJnaW46IDBweCAwcHggMC41cmVtOyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7 +IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxzcGFuICBjbGFzcz0ibWQtcGxhaW4iIG1kLWlubGluZT0i +cGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+RzXkuLvmlbDmja4gNS40LjYg +54mI5pys5Y+R5biDPC9zcGFuPjwvcD48L2xpPjxsaSAgY2lkPSJuMjk4IiBjbGFzcz0ibWQtbGlz +dC1pdGVtIiBtZHR5cGU9Imxpc3RfaXRlbSIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7 +IG1hcmdpbjogMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48cCAgY2lkPSJuMjk5IiBjbGFzcz0i +bWQtZW5kLWJsb2NrIG1kLXAiIG1kdHlwZT0icGFyYWdyYXBoIiBzdHlsZT0iYm94LXNpemluZzog +Ym9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IG1hcmdpbjogMHB4IDBweCAwLjVyZW07 +IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHNwYW4gIGNsYXNz +PSJtZC1wbGFpbiIgbWQtaW5saW5lPSJwbGFpbiIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1i +b3g7Ij5HNei/m+mUgOWtmCA1LjQuNiDniYjmnKzlj5HluIM8L3NwYW4+PC9wPjwvbGk+PC9vbD48 +ZGl2ICBjaWQ9Im4zMDAiIGNsYXNzPSJtZC1ociBtZC1lbmQtYmxvY2siIG1kdHlwZT0iaHIiIHRh +YmluZGV4PSItMSIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGNvbG9yOiByZ2IoNTEs +IDUxLCA1MSk7IGZvbnQtZmFtaWx5OiAnT3BlbiBTYW5zJywgJ0NsZWFyIFNhbnMnLCAnSGVsdmV0 +aWNhIE5ldWUnLCBIZWx2ZXRpY2EsIEFyaWFsLCAnU2Vnb2UgVUkgRW1vamknLCBzYW5zLXNlcmlm +OyBmb250LXNpemU6IDE2cHg7IGZvbnQtc3R5bGU6IG5vcm1hbDsgZm9udC12YXJpYW50LWxpZ2F0 +dXJlczogbm9ybWFsOyBmb250LXZhcmlhbnQtY2Fwczogbm9ybWFsOyBmb250LXdlaWdodDogNDAw +OyBsZXR0ZXItc3BhY2luZzogbm9ybWFsOyB0ZXh0LWFsaWduOiBzdGFydDsgdGV4dC1pbmRlbnQ6 +IDBweDsgdGV4dC10cmFuc2Zvcm06IG5vbmU7IHdoaXRlLXNwYWNlOiBub3JtYWw7IHdvcmQtc3Bh +Y2luZzogMHB4OyB0ZXh0LWRlY29yYXRpb24tdGhpY2tuZXNzOiBpbml0aWFsOyB0ZXh0LWRlY29y +YXRpb24tc3R5bGU6IGluaXRpYWw7IHRleHQtZGVjb3JhdGlvbi1jb2xvcjogaW5pdGlhbDsiPjxo +ciAgc3R5bGU9ImJveC1zaXppbmc6IGNvbnRlbnQtYm94OyBoZWlnaHQ6IDJweDsgbWFyZ2luOiAx +NnB4IDBweDsgYm9yZGVyOiAwcHggbm9uZTsgcGFkZGluZzogMHB4OyBiYWNrZ3JvdW5kLWNvbG9y +OiByZ2IoMjMxLCAyMzEsIDIzMSk7IG92ZXJmbG93OiBoaWRkZW47Ij48L2Rpdj48aDQgIGNpZD0i +bjMwMSIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1oZWFkaW5nIiBtZHR5cGU9ImhlYWRpbmciIHN0 +eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBicmVhay1hZnRlcjogYXZvaWQtcGFnZTsgYnJl +YWstaW5zaWRlOiBhdm9pZDsgZm9udC1zaXplOiAxLjI1ZW07IG1hcmdpbi10b3A6IDFyZW07IG1h +cmdpbi1ib3R0b206IDFyZW07IHBvc2l0aW9uOiByZWxhdGl2ZTsgZm9udC13ZWlnaHQ6IDcwMDsg +d2hpdGUtc3BhY2U6IHByZS13cmFwOyBjb2xvcjogcmdiKDUxLCA1MSwgNTEpOyBmb250LWZhbWls +eTogJ09wZW4gU2FucycsICdDbGVhciBTYW5zJywgJ0hlbHZldGljYSBOZXVlJywgSGVsdmV0aWNh +LCBBcmlhbCwgJ1NlZ29lIFVJIEVtb2ppJywgc2Fucy1zZXJpZjsgZm9udC1zdHlsZTogbm9ybWFs +OyBmb250LXZhcmlhbnQtbGlnYXR1cmVzOiBub3JtYWw7IGZvbnQtdmFyaWFudC1jYXBzOiBub3Jt +YWw7IGxldHRlci1zcGFjaW5nOiBub3JtYWw7IHRleHQtYWxpZ246IHN0YXJ0OyB0ZXh0LWluZGVu +dDogMHB4OyB0ZXh0LXRyYW5zZm9ybTogbm9uZTsgd29yZC1zcGFjaW5nOiAwcHg7IHRleHQtZGVj +b3JhdGlvbi10aGlja25lc3M6IGluaXRpYWw7IHRleHQtZGVjb3JhdGlvbi1zdHlsZTogaW5pdGlh +bDsgdGV4dC1kZWNvcmF0aW9uLWNvbG9yOiBpbml0aWFsOyI+PHNwYW4gIGNsYXNzPSJtZC1wbGFp +biIgbWQtaW5saW5lPSJwbGFpbiIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij7kuozj +gIHluLjop4Tlt6XkvZzmmI7nu4Y8L3NwYW4+PC9oND48cCAgY2lkPSJuMzAyIiBjbGFzcz0ibWQt +ZW5kLWJsb2NrIG1kLXAiIG1kdHlwZT0icGFyYWdyYXBoIiBzdHlsZT0iYm94LXNpemluZzogYm9y +ZGVyLWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IG1hcmdpbjogMC44ZW0gMHB4OyB3aGl0ZS1z +cGFjZTogcHJlLXdyYXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsgY29sb3I6IHJnYig1MSwgNTEsIDUx +KTsgZm9udC1mYW1pbHk6ICdPcGVuIFNhbnMnLCAnQ2xlYXIgU2FucycsICdIZWx2ZXRpY2EgTmV1 +ZScsIEhlbHZldGljYSwgQXJpYWwsICdTZWdvZSBVSSBFbW9qaScsIHNhbnMtc2VyaWY7IGZvbnQt +c2l6ZTogMTZweDsgZm9udC1zdHlsZTogbm9ybWFsOyBmb250LXZhcmlhbnQtbGlnYXR1cmVzOiBu +b3JtYWw7IGZvbnQtdmFyaWFudC1jYXBzOiBub3JtYWw7IGZvbnQtd2VpZ2h0OiA0MDA7IGxldHRl +ci1zcGFjaW5nOiBub3JtYWw7IHRleHQtYWxpZ246IHN0YXJ0OyB0ZXh0LWluZGVudDogMHB4OyB0 +ZXh0LXRyYW5zZm9ybTogbm9uZTsgd29yZC1zcGFjaW5nOiAwcHg7IHRleHQtZGVjb3JhdGlvbi10 +aGlja25lc3M6IGluaXRpYWw7IHRleHQtZGVjb3JhdGlvbi1zdHlsZTogaW5pdGlhbDsgdGV4dC1k +ZWNvcmF0aW9uLWNvbG9yOiBpbml0aWFsOyI+PHNwYW4gIGNsYXNzPSJtZC1wbGFpbiIgbWQtaW5s +aW5lPSJwbGFpbiIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGZvbnQtd2VpZ2h0OiBi +b2xkOyI+MjAyNi0wMy0yMzwvc3Bhbj48L3A+PHVsICBjaWQ9Im4zMDMiIGNsYXNzPSJ1bC1saXN0 +IiBkYXRhLW1hcms9Ii0iIG1kdHlwZT0ibGlzdCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1i +b3g7IG1hcmdpbjogMC44ZW0gMHB4OyBwYWRkaW5nLWxlZnQ6IDMwcHg7IHBvc2l0aW9uOiByZWxh +dGl2ZTsgY29sb3I6IHJnYig1MSwgNTEsIDUxKTsgZm9udC1mYW1pbHk6ICdPcGVuIFNhbnMnLCAn +Q2xlYXIgU2FucycsICdIZWx2ZXRpY2EgTmV1ZScsIEhlbHZldGljYSwgQXJpYWwsICdTZWdvZSBV +SSBFbW9qaScsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTZweDsgZm9udC1zdHlsZTogbm9ybWFs +OyBmb250LXZhcmlhbnQtbGlnYXR1cmVzOiBub3JtYWw7IGZvbnQtdmFyaWFudC1jYXBzOiBub3Jt +YWw7IGZvbnQtd2VpZ2h0OiA0MDA7IGxldHRlci1zcGFjaW5nOiBub3JtYWw7IHRleHQtYWxpZ246 +IHN0YXJ0OyB0ZXh0LWluZGVudDogMHB4OyB0ZXh0LXRyYW5zZm9ybTogbm9uZTsgd2hpdGUtc3Bh +Y2U6IG5vcm1hbDsgd29yZC1zcGFjaW5nOiAwcHg7IHRleHQtZGVjb3JhdGlvbi10aGlja25lc3M6 +IGluaXRpYWw7IHRleHQtZGVjb3JhdGlvbi1zdHlsZTogaW5pdGlhbDsgdGV4dC1kZWNvcmF0aW9u +LWNvbG9yOiBpbml0aWFsOyI+PGxpICBjaWQ9Im4zMDQiIGNsYXNzPSJtZC1saXN0LWl0ZW0iIG1k +dHlwZT0ibGlzdF9pdGVtIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAw +cHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxwICBjaWQ9Im4zMDUiIGNsYXNzPSJtZC1lbmQtYmxv +Y2sgbWQtcCIgbWR0eXBlPSJwYXJhZ3JhcGgiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94 +OyBsaW5lLWhlaWdodDogaW5oZXJpdDsgbWFyZ2luOiAwcHggMHB4IDAuNXJlbTsgd2hpdGUtc3Bh +Y2U6IHByZS13cmFwOyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48c3BhbiAgY2xhc3M9Im1kLXBsYWlu +IiBtZC1pbmxpbmU9InBsYWluIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPuWNleaY +jue7huOAgeWPkei0p+aYjue7huWIl+ihqOaUr+aMgeWxnuaAp+e7hOafpeivojwvc3Bhbj48L3A+ +PC9saT48bGkgIGNpZD0ibjMwNiIgY2xhc3M9Im1kLWxpc3QtaXRlbSIgbWR0eXBlPSJsaXN0X2l0 +ZW0iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcG9zaXRpb246 +IHJlbGF0aXZlOyI+PHAgIGNpZD0ibjMwNyIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1wIiBtZHR5 +cGU9InBhcmFncmFwaCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGxpbmUtaGVpZ2h0 +OiBpbmhlcml0OyBtYXJnaW46IDBweCAwcHggMC41cmVtOyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7 +IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxzcGFuICBjbGFzcz0ibWQtcGxhaW4iIG1kLWlubGluZT0i +cGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+6ZSA5ZSu5Zu+54mH6IGU6LCD +6L2s5rWLPC9zcGFuPjwvcD48L2xpPjxsaSAgY2lkPSJuMzA4IiBjbGFzcz0ibWQtbGlzdC1pdGVt +IiBtZHR5cGU9Imxpc3RfaXRlbSIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdp +bjogMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48cCAgY2lkPSJuMzA5IiBjbGFzcz0ibWQtZW5k +LWJsb2NrIG1kLXAiIG1kdHlwZT0icGFyYWdyYXBoIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVy +LWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IG1hcmdpbjogMHB4IDBweCAwLjVyZW07IHdoaXRl +LXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHNwYW4gIGNsYXNzPSJtZC1w +bGFpbiIgbWQtaW5saW5lPSJwbGFpbiIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij7k +uLvmlbDmja7nvLrpmbfkv67lpI08L3NwYW4+PC9wPjwvbGk+PC91bD48cCAgY2lkPSJuMzEwIiBj +bGFzcz0ibWQtZW5kLWJsb2NrIG1kLXAiIG1kdHlwZT0icGFyYWdyYXBoIiBzdHlsZT0iYm94LXNp +emluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IG1hcmdpbjogMC44ZW0gMHB4 +OyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsgY29sb3I6IHJnYig1 +MSwgNTEsIDUxKTsgZm9udC1mYW1pbHk6ICdPcGVuIFNhbnMnLCAnQ2xlYXIgU2FucycsICdIZWx2 +ZXRpY2EgTmV1ZScsIEhlbHZldGljYSwgQXJpYWwsICdTZWdvZSBVSSBFbW9qaScsIHNhbnMtc2Vy +aWY7IGZvbnQtc2l6ZTogMTZweDsgZm9udC1zdHlsZTogbm9ybWFsOyBmb250LXZhcmlhbnQtbGln +YXR1cmVzOiBub3JtYWw7IGZvbnQtdmFyaWFudC1jYXBzOiBub3JtYWw7IGZvbnQtd2VpZ2h0OiA0 +MDA7IGxldHRlci1zcGFjaW5nOiBub3JtYWw7IHRleHQtYWxpZ246IHN0YXJ0OyB0ZXh0LWluZGVu +dDogMHB4OyB0ZXh0LXRyYW5zZm9ybTogbm9uZTsgd29yZC1zcGFjaW5nOiAwcHg7IHRleHQtZGVj +b3JhdGlvbi10aGlja25lc3M6IGluaXRpYWw7IHRleHQtZGVjb3JhdGlvbi1zdHlsZTogaW5pdGlh +bDsgdGV4dC1kZWNvcmF0aW9uLWNvbG9yOiBpbml0aWFsOyI+PHNwYW4gIGNsYXNzPSJtZC1wbGFp +biIgbWQtaW5saW5lPSJwbGFpbiIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGZvbnQt +d2VpZ2h0OiBib2xkOyI+MjAyNi0wMy0yNDwvc3Bhbj48L3A+PHVsICBjaWQ9Im4zMTEiIGNsYXNz +PSJ1bC1saXN0IiBkYXRhLW1hcms9Ii0iIG1kdHlwZT0ibGlzdCIgc3R5bGU9ImJveC1zaXppbmc6 +IGJvcmRlci1ib3g7IG1hcmdpbjogMC44ZW0gMHB4OyBwYWRkaW5nLWxlZnQ6IDMwcHg7IHBvc2l0 +aW9uOiByZWxhdGl2ZTsgY29sb3I6IHJnYig1MSwgNTEsIDUxKTsgZm9udC1mYW1pbHk6ICdPcGVu +IFNhbnMnLCAnQ2xlYXIgU2FucycsICdIZWx2ZXRpY2EgTmV1ZScsIEhlbHZldGljYSwgQXJpYWws +ICdTZWdvZSBVSSBFbW9qaScsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTZweDsgZm9udC1zdHls +ZTogbm9ybWFsOyBmb250LXZhcmlhbnQtbGlnYXR1cmVzOiBub3JtYWw7IGZvbnQtdmFyaWFudC1j +YXBzOiBub3JtYWw7IGZvbnQtd2VpZ2h0OiA0MDA7IGxldHRlci1zcGFjaW5nOiBub3JtYWw7IHRl +eHQtYWxpZ246IHN0YXJ0OyB0ZXh0LWluZGVudDogMHB4OyB0ZXh0LXRyYW5zZm9ybTogbm9uZTsg +d2hpdGUtc3BhY2U6IG5vcm1hbDsgd29yZC1zcGFjaW5nOiAwcHg7IHRleHQtZGVjb3JhdGlvbi10 +aGlja25lc3M6IGluaXRpYWw7IHRleHQtZGVjb3JhdGlvbi1zdHlsZTogaW5pdGlhbDsgdGV4dC1k +ZWNvcmF0aW9uLWNvbG9yOiBpbml0aWFsOyI+PGxpICBjaWQ9Im4zMTIiIGNsYXNzPSJtZC1saXN0 +LWl0ZW0iIG1kdHlwZT0ibGlzdF9pdGVtIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsg +bWFyZ2luOiAwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxwICBjaWQ9Im4zMTMiIGNsYXNzPSJt +ZC1lbmQtYmxvY2sgbWQtcCIgbWR0eXBlPSJwYXJhZ3JhcGgiIHN0eWxlPSJib3gtc2l6aW5nOiBi +b3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5oZXJpdDsgbWFyZ2luOiAwcHggMHB4IDAuNXJlbTsg +d2hpdGUtc3BhY2U6IHByZS13cmFwOyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48c3BhbiAgY2xhc3M9 +Im1kLXBsYWluIiBtZC1pbmxpbmU9InBsYWluIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJv +eDsiPuiuouWNleaYjue7huOAgeWPkei0p+aYjue7huWIl+ihqOaUr+aMgeWxnuaAp+e7hOafpeiv +ouWvvOWHuuiHqua1i+i9rOa1izwvc3Bhbj48L3A+PC9saT48bGkgIGNpZD0ibjMxNCIgY2xhc3M9 +Im1kLWxpc3QtaXRlbSIgbWR0eXBlPSJsaXN0X2l0ZW0iIHN0eWxlPSJib3gtc2l6aW5nOiBib3Jk +ZXItYm94OyBtYXJnaW46IDBweDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHAgIGNpZD0ibjMxNSIg +Y2xhc3M9Im1kLWVuZC1ibG9jayBtZC1wIiBtZHR5cGU9InBhcmFncmFwaCIgc3R5bGU9ImJveC1z +aXppbmc6IGJvcmRlci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhlcml0OyBtYXJnaW46IDBweCAwcHgg +MC41cmVtOyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxzcGFu +ICBjbGFzcz0ibWQtcGxhaW4iIG1kLWlubGluZT0icGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBi +b3JkZXItYm94OyI+5Lqn5ZOB5piO57uG5aKe5Yqg6ZSA5ZSu5Zu+54mH6ZyA5rGC6L2s5rWLPC9z +cGFuPjwvcD48L2xpPjxsaSAgY2lkPSJuMzE2IiBjbGFzcz0ibWQtbGlzdC1pdGVtIiBtZHR5cGU9 +Imxpc3RfaXRlbSIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBw +b3NpdGlvbjogcmVsYXRpdmU7Ij48cCAgY2lkPSJuMzE3IiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1k +LXAiIG1kdHlwZT0icGFyYWdyYXBoIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbGlu +ZS1oZWlnaHQ6IGluaGVyaXQ7IG1hcmdpbjogMHB4IDBweCAwLjVyZW07IHdoaXRlLXNwYWNlOiBw +cmUtd3JhcDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHNwYW4gIGNsYXNzPSJtZC1wbGFpbiIgbWQt +aW5saW5lPSJwbGFpbiIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij7plIDllK7ljobl +j7Lpl67popjlpITnkIY8L3NwYW4+PC9wPjwvbGk+PC91bD48cCAgY2lkPSJuMzE4IiBjbGFzcz0i +bWQtZW5kLWJsb2NrIG1kLXAiIG1kdHlwZT0icGFyYWdyYXBoIiBzdHlsZT0iYm94LXNpemluZzog +Ym9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IG1hcmdpbjogMC44ZW0gMHB4OyB3aGl0 +ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsgY29sb3I6IHJnYig1MSwgNTEs +IDUxKTsgZm9udC1mYW1pbHk6ICdPcGVuIFNhbnMnLCAnQ2xlYXIgU2FucycsICdIZWx2ZXRpY2Eg +TmV1ZScsIEhlbHZldGljYSwgQXJpYWwsICdTZWdvZSBVSSBFbW9qaScsIHNhbnMtc2VyaWY7IGZv +bnQtc2l6ZTogMTZweDsgZm9udC1zdHlsZTogbm9ybWFsOyBmb250LXZhcmlhbnQtbGlnYXR1cmVz +OiBub3JtYWw7IGZvbnQtdmFyaWFudC1jYXBzOiBub3JtYWw7IGZvbnQtd2VpZ2h0OiA0MDA7IGxl +dHRlci1zcGFjaW5nOiBub3JtYWw7IHRleHQtYWxpZ246IHN0YXJ0OyB0ZXh0LWluZGVudDogMHB4 +OyB0ZXh0LXRyYW5zZm9ybTogbm9uZTsgd29yZC1zcGFjaW5nOiAwcHg7IHRleHQtZGVjb3JhdGlv +bi10aGlja25lc3M6IGluaXRpYWw7IHRleHQtZGVjb3JhdGlvbi1zdHlsZTogaW5pdGlhbDsgdGV4 +dC1kZWNvcmF0aW9uLWNvbG9yOiBpbml0aWFsOyI+PHNwYW4gIGNsYXNzPSJtZC1wbGFpbiIgbWQt +aW5saW5lPSJwbGFpbiIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGZvbnQtd2VpZ2h0 +OiBib2xkOyI+MjAyNi0wMy0yNTwvc3Bhbj48L3A+PHVsICBjaWQ9Im4zMTkiIGNsYXNzPSJ1bC1s +aXN0IiBkYXRhLW1hcms9Ii0iIG1kdHlwZT0ibGlzdCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRl +ci1ib3g7IG1hcmdpbjogMC44ZW0gMHB4OyBwYWRkaW5nLWxlZnQ6IDMwcHg7IHBvc2l0aW9uOiBy +ZWxhdGl2ZTsgY29sb3I6IHJnYig1MSwgNTEsIDUxKTsgZm9udC1mYW1pbHk6ICdPcGVuIFNhbnMn +LCAnQ2xlYXIgU2FucycsICdIZWx2ZXRpY2EgTmV1ZScsIEhlbHZldGljYSwgQXJpYWwsICdTZWdv +ZSBVSSBFbW9qaScsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTZweDsgZm9udC1zdHlsZTogbm9y +bWFsOyBmb250LXZhcmlhbnQtbGlnYXR1cmVzOiBub3JtYWw7IGZvbnQtdmFyaWFudC1jYXBzOiBu +b3JtYWw7IGZvbnQtd2VpZ2h0OiA0MDA7IGxldHRlci1zcGFjaW5nOiBub3JtYWw7IHRleHQtYWxp +Z246IHN0YXJ0OyB0ZXh0LWluZGVudDogMHB4OyB0ZXh0LXRyYW5zZm9ybTogbm9uZTsgd2hpdGUt +c3BhY2U6IG5vcm1hbDsgd29yZC1zcGFjaW5nOiAwcHg7IHRleHQtZGVjb3JhdGlvbi10aGlja25l +c3M6IGluaXRpYWw7IHRleHQtZGVjb3JhdGlvbi1zdHlsZTogaW5pdGlhbDsgdGV4dC1kZWNvcmF0 +aW9uLWNvbG9yOiBpbml0aWFsOyI+PGxpICBjaWQ9Im4zMjAiIGNsYXNzPSJtZC1saXN0LWl0ZW0i +IG1kdHlwZT0ibGlzdF9pdGVtIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2lu +OiAwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxwICBjaWQ9Im4zMjEiIGNsYXNzPSJtZC1lbmQt +YmxvY2sgbWQtcCIgbWR0eXBlPSJwYXJhZ3JhcGgiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXIt +Ym94OyBsaW5lLWhlaWdodDogaW5oZXJpdDsgbWFyZ2luOiAwcHggMHB4IDAuNXJlbTsgd2hpdGUt +c3BhY2U6IHByZS13cmFwOyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48c3BhbiAgY2xhc3M9Im1kLXBs +YWluIiBtZC1pbmxpbmU9InBsYWluIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPumc +gOaxgua1i+ivlemXrumimOS/ruWkjTwvc3Bhbj48L3A+PC9saT48bGkgIGNpZD0ibjMyMiIgY2xh +c3M9Im1kLWxpc3QtaXRlbSIgbWR0eXBlPSJsaXN0X2l0ZW0iIHN0eWxlPSJib3gtc2l6aW5nOiBi +b3JkZXItYm94OyBtYXJnaW46IDBweDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHAgIGNpZD0ibjMy +MyIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1wIiBtZHR5cGU9InBhcmFncmFwaCIgc3R5bGU9ImJv +eC1zaXppbmc6IGJvcmRlci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhlcml0OyBtYXJnaW46IDBweCAw +cHggMC41cmVtOyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxz +cGFuICBjbGFzcz0ibWQtcGxhaW4iIG1kLWlubGluZT0icGxhaW4iIHN0eWxlPSJib3gtc2l6aW5n +OiBib3JkZXItYm94OyI+5paZ5Y+36LWL5YC85aSE55CGPC9zcGFuPjwvcD48L2xpPjwvdWw+PHAg +IGNpZD0ibjMyNCIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1wIiBtZHR5cGU9InBhcmFncmFwaCIg +c3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhlcml0OyBtYXJn +aW46IDAuOGVtIDBweDsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyBwb3NpdGlvbjogcmVsYXRpdmU7 +IGNvbG9yOiByZ2IoNTEsIDUxLCA1MSk7IGZvbnQtZmFtaWx5OiAnT3BlbiBTYW5zJywgJ0NsZWFy +IFNhbnMnLCAnSGVsdmV0aWNhIE5ldWUnLCBIZWx2ZXRpY2EsIEFyaWFsLCAnU2Vnb2UgVUkgRW1v +amknLCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDE2cHg7IGZvbnQtc3R5bGU6IG5vcm1hbDsgZm9u +dC12YXJpYW50LWxpZ2F0dXJlczogbm9ybWFsOyBmb250LXZhcmlhbnQtY2Fwczogbm9ybWFsOyBm +b250LXdlaWdodDogNDAwOyBsZXR0ZXItc3BhY2luZzogbm9ybWFsOyB0ZXh0LWFsaWduOiBzdGFy +dDsgdGV4dC1pbmRlbnQ6IDBweDsgdGV4dC10cmFuc2Zvcm06IG5vbmU7IHdvcmQtc3BhY2luZzog +MHB4OyB0ZXh0LWRlY29yYXRpb24tdGhpY2tuZXNzOiBpbml0aWFsOyB0ZXh0LWRlY29yYXRpb24t +c3R5bGU6IGluaXRpYWw7IHRleHQtZGVjb3JhdGlvbi1jb2xvcjogaW5pdGlhbDsiPjxzcGFuICBj +bGFzcz0ibWQtcGxhaW4iIG1kLWlubGluZT0icGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3Jk +ZXItYm94OyBmb250LXdlaWdodDogYm9sZDsiPjIwMjYtMDMtMjY8L3NwYW4+PC9wPjx1bCAgY2lk +PSJuMzI1IiBjbGFzcz0idWwtbGlzdCIgZGF0YS1tYXJrPSItIiBtZHR5cGU9Imxpc3QiIHN0eWxl +PSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDAuOGVtIDBweDsgcGFkZGluZy1sZWZ0 +OiAzMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7IGNvbG9yOiByZ2IoNTEsIDUxLCA1MSk7IGZvbnQt +ZmFtaWx5OiAnT3BlbiBTYW5zJywgJ0NsZWFyIFNhbnMnLCAnSGVsdmV0aWNhIE5ldWUnLCBIZWx2 +ZXRpY2EsIEFyaWFsLCAnU2Vnb2UgVUkgRW1vamknLCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDE2 +cHg7IGZvbnQtc3R5bGU6IG5vcm1hbDsgZm9udC12YXJpYW50LWxpZ2F0dXJlczogbm9ybWFsOyBm +b250LXZhcmlhbnQtY2Fwczogbm9ybWFsOyBmb250LXdlaWdodDogNDAwOyBsZXR0ZXItc3BhY2lu +Zzogbm9ybWFsOyB0ZXh0LWFsaWduOiBzdGFydDsgdGV4dC1pbmRlbnQ6IDBweDsgdGV4dC10cmFu +c2Zvcm06IG5vbmU7IHdoaXRlLXNwYWNlOiBub3JtYWw7IHdvcmQtc3BhY2luZzogMHB4OyB0ZXh0 +LWRlY29yYXRpb24tdGhpY2tuZXNzOiBpbml0aWFsOyB0ZXh0LWRlY29yYXRpb24tc3R5bGU6IGlu +aXRpYWw7IHRleHQtZGVjb3JhdGlvbi1jb2xvcjogaW5pdGlhbDsiPjxsaSAgY2lkPSJuMzI2IiBj +bGFzcz0ibWQtbGlzdC1pdGVtIiBtZHR5cGU9Imxpc3RfaXRlbSIgc3R5bGU9ImJveC1zaXppbmc6 +IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48cCAgY2lkPSJu +MzI3IiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLXAiIG1kdHlwZT0icGFyYWdyYXBoIiBzdHlsZT0i +Ym94LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IG1hcmdpbjogMHB4 +IDBweCAwLjVyZW07IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJlbGF0aXZlOyI+ +PHNwYW4gIGNsYXNzPSJtZC1wbGFpbiIgbWQtaW5saW5lPSJwbGFpbiIgc3R5bGU9ImJveC1zaXpp +bmc6IGJvcmRlci1ib3g7Ij7plIDllK7nvLrpmbfkv67lpI08L3NwYW4+PC9wPjwvbGk+PGxpICBj +aWQ9Im4zMjgiIGNsYXNzPSJtZC1saXN0LWl0ZW0iIG1kdHlwZT0ibGlzdF9pdGVtIiBzdHlsZT0i +Ym94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsi +PjxwICBjaWQ9Im4zMjkiIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCIgbWR0eXBlPSJwYXJhZ3Jh +cGgiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5oZXJpdDsg +bWFyZ2luOiAwcHggMHB4IDAuNXJlbTsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyBwb3NpdGlvbjog +cmVsYXRpdmU7Ij48c3BhbiAgY2xhc3M9Im1kLXBsYWluIiBtZC1pbmxpbmU9InBsYWluIiBzdHls +ZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPumUgOWUruiuouWNleaWsOWinuOAgee8lui+keOA +geWPmOabtOOAgeaWmeWPt+S8mOWMljwvc3Bhbj48L3A+PC9saT48L3VsPjxwICBjaWQ9Im4zMzAi +IGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCIgbWR0eXBlPSJwYXJhZ3JhcGgiIHN0eWxlPSJib3gt +c2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5oZXJpdDsgbWFyZ2luOiAwLjhlbSAw +cHg7IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJlbGF0aXZlOyBjb2xvcjogcmdi +KDUxLCA1MSwgNTEpOyBmb250LWZhbWlseTogJ09wZW4gU2FucycsICdDbGVhciBTYW5zJywgJ0hl +bHZldGljYSBOZXVlJywgSGVsdmV0aWNhLCBBcmlhbCwgJ1NlZ29lIFVJIEVtb2ppJywgc2Fucy1z +ZXJpZjsgZm9udC1zaXplOiAxNnB4OyBmb250LXN0eWxlOiBub3JtYWw7IGZvbnQtdmFyaWFudC1s +aWdhdHVyZXM6IG5vcm1hbDsgZm9udC12YXJpYW50LWNhcHM6IG5vcm1hbDsgZm9udC13ZWlnaHQ6 +IDQwMDsgbGV0dGVyLXNwYWNpbmc6IG5vcm1hbDsgdGV4dC1hbGlnbjogc3RhcnQ7IHRleHQtaW5k +ZW50OiAwcHg7IHRleHQtdHJhbnNmb3JtOiBub25lOyB3b3JkLXNwYWNpbmc6IDBweDsgdGV4dC1k +ZWNvcmF0aW9uLXRoaWNrbmVzczogaW5pdGlhbDsgdGV4dC1kZWNvcmF0aW9uLXN0eWxlOiBpbml0 +aWFsOyB0ZXh0LWRlY29yYXRpb24tY29sb3I6IGluaXRpYWw7Ij48c3BhbiAgY2xhc3M9Im1kLXBs +YWluIiBtZC1pbmxpbmU9InBsYWluIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgZm9u +dC13ZWlnaHQ6IGJvbGQ7Ij4yMDI2LTAzLTI3PC9zcGFuPjwvcD48dWwgIGNpZD0ibjMzMSIgY2xh +c3M9InVsLWxpc3QiIGRhdGEtbWFyaz0iLSIgbWR0eXBlPSJsaXN0IiBzdHlsZT0iYm94LXNpemlu +ZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwLjhlbSAwcHg7IHBhZGRpbmctbGVmdDogMzBweDsgcG9z +aXRpb246IHJlbGF0aXZlOyBjb2xvcjogcmdiKDUxLCA1MSwgNTEpOyBmb250LWZhbWlseTogJ09w +ZW4gU2FucycsICdDbGVhciBTYW5zJywgJ0hlbHZldGljYSBOZXVlJywgSGVsdmV0aWNhLCBBcmlh +bCwgJ1NlZ29lIFVJIEVtb2ppJywgc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxNnB4OyBmb250LXN0 +eWxlOiBub3JtYWw7IGZvbnQtdmFyaWFudC1saWdhdHVyZXM6IG5vcm1hbDsgZm9udC12YXJpYW50 +LWNhcHM6IG5vcm1hbDsgZm9udC13ZWlnaHQ6IDQwMDsgbGV0dGVyLXNwYWNpbmc6IG5vcm1hbDsg +dGV4dC1hbGlnbjogc3RhcnQ7IHRleHQtaW5kZW50OiAwcHg7IHRleHQtdHJhbnNmb3JtOiBub25l +OyB3aGl0ZS1zcGFjZTogbm9ybWFsOyB3b3JkLXNwYWNpbmc6IDBweDsgdGV4dC1kZWNvcmF0aW9u +LXRoaWNrbmVzczogaW5pdGlhbDsgdGV4dC1kZWNvcmF0aW9uLXN0eWxlOiBpbml0aWFsOyB0ZXh0 +LWRlY29yYXRpb24tY29sb3I6IGluaXRpYWw7Ij48bGkgIGNpZD0ibjMzMiIgY2xhc3M9Im1kLWxp +c3QtaXRlbSIgbWR0eXBlPSJsaXN0X2l0ZW0iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94 +OyBtYXJnaW46IDBweDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHAgIGNpZD0ibjMzMyIgY2xhc3M9 +Im1kLWVuZC1ibG9jayBtZC1wIiBtZHR5cGU9InBhcmFncmFwaCIgc3R5bGU9ImJveC1zaXppbmc6 +IGJvcmRlci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhlcml0OyBtYXJnaW46IDBweCAwcHggMC41cmVt +OyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxzcGFuICBjbGFz +cz0ibWQtcGxhaW4iIG1kLWlubGluZT0icGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXIt +Ym94OyI+5Li75pWw5o2u54mI5pys5Y+R5biD5pSv5oyBPC9zcGFuPjwvcD48L2xpPjxsaSAgY2lk +PSJuMzM0IiBjbGFzcz0ibWQtbGlzdC1pdGVtIiBtZHR5cGU9Imxpc3RfaXRlbSIgc3R5bGU9ImJv +eC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48 +cCAgY2lkPSJuMzM1IiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLXAiIG1kdHlwZT0icGFyYWdyYXBo +IiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IG1h +cmdpbjogMHB4IDBweCAwLjVyZW07IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJl +bGF0aXZlOyI+PHNwYW4gIGNsYXNzPSJtZC1wbGFpbiIgbWQtaW5saW5lPSJwbGFpbiIgc3R5bGU9 +ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij7plIDllK7nrqHnkIbniYjmnKzlj5HluIPmlK/mjIE8 +L3NwYW4+PC9wPjwvbGk+PGxpICBjaWQ9Im4zMzYiIGNsYXNzPSJtZC1saXN0LWl0ZW0iIG1kdHlw +ZT0ibGlzdF9pdGVtIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7 +IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxwICBjaWQ9Im4zMzciIGNsYXNzPSJtZC1lbmQtYmxvY2sg +bWQtcCIgbWR0eXBlPSJwYXJhZ3JhcGgiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBs +aW5lLWhlaWdodDogaW5oZXJpdDsgbWFyZ2luOiAwcHggMHB4IDAuNXJlbTsgd2hpdGUtc3BhY2U6 +IHByZS13cmFwOyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48c3BhbiAgY2xhc3M9Im1kLXBsYWluIiBt +ZC1pbmxpbmU9InBsYWluIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPuW6k+WtmOmc +gOaxguivhOWuoTwvc3Bhbj48L3A+PC9saT48bGkgIGNpZD0ibjMzOCIgY2xhc3M9Im1kLWxpc3Qt +aXRlbSIgbWR0eXBlPSJsaXN0X2l0ZW0iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBt +YXJnaW46IDBweDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHAgIGNpZD0ibjMzOSIgY2xhc3M9Im1k +LWVuZC1ibG9jayBtZC1wIiBtZHR5cGU9InBhcmFncmFwaCIgc3R5bGU9ImJveC1zaXppbmc6IGJv +cmRlci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhlcml0OyBtYXJnaW46IDBweCAwcHggMC41cmVtOyB3 +aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxzcGFuICBjbGFzcz0i +bWQtcGxhaW4iIG1kLWlubGluZT0icGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94 +OyI+5bqT5a2Y5bel5pe26K+E5LywPC9zcGFuPjwvcD48L2xpPjwvdWw+PGRpdiAgY2lkPSJuMzQw +IiBjbGFzcz0ibWQtaHIgbWQtZW5kLWJsb2NrIiBtZHR5cGU9ImhyIiB0YWJpbmRleD0iLTEiIHN0 +eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBjb2xvcjogcmdiKDUxLCA1MSwgNTEpOyBmb250 +LWZhbWlseTogJ09wZW4gU2FucycsICdDbGVhciBTYW5zJywgJ0hlbHZldGljYSBOZXVlJywgSGVs +dmV0aWNhLCBBcmlhbCwgJ1NlZ29lIFVJIEVtb2ppJywgc2Fucy1zZXJpZjsgZm9udC1zaXplOiAx +NnB4OyBmb250LXN0eWxlOiBub3JtYWw7IGZvbnQtdmFyaWFudC1saWdhdHVyZXM6IG5vcm1hbDsg +Zm9udC12YXJpYW50LWNhcHM6IG5vcm1hbDsgZm9udC13ZWlnaHQ6IDQwMDsgbGV0dGVyLXNwYWNp +bmc6IG5vcm1hbDsgdGV4dC1hbGlnbjogc3RhcnQ7IHRleHQtaW5kZW50OiAwcHg7IHRleHQtdHJh +bnNmb3JtOiBub25lOyB3aGl0ZS1zcGFjZTogbm9ybWFsOyB3b3JkLXNwYWNpbmc6IDBweDsgdGV4 +dC1kZWNvcmF0aW9uLXRoaWNrbmVzczogaW5pdGlhbDsgdGV4dC1kZWNvcmF0aW9uLXN0eWxlOiBp +bml0aWFsOyB0ZXh0LWRlY29yYXRpb24tY29sb3I6IGluaXRpYWw7Ij48aHIgIHN0eWxlPSJib3gt +c2l6aW5nOiBjb250ZW50LWJveDsgaGVpZ2h0OiAycHg7IG1hcmdpbjogMTZweCAwcHg7IGJvcmRl +cjogMHB4IG5vbmU7IHBhZGRpbmc6IDBweDsgYmFja2dyb3VuZC1jb2xvcjogcmdiKDIzMSwgMjMx +LCAyMzEpOyBvdmVyZmxvdzogaGlkZGVuOyI+PC9kaXY+PGgzICBjaWQ9Im4zNDEiIGNsYXNzPSJt +ZC1lbmQtYmxvY2sgbWQtaGVhZGluZyIgbWR0eXBlPSJoZWFkaW5nIiBzdHlsZT0iYm94LXNpemlu +ZzogYm9yZGVyLWJveDsgYnJlYWstYWZ0ZXI6IGF2b2lkLXBhZ2U7IGJyZWFrLWluc2lkZTogYXZv +aWQ7IGZvbnQtc2l6ZTogMS41ZW07IG1hcmdpbi10b3A6IDFyZW07IG1hcmdpbi1ib3R0b206IDFy +ZW07IHBvc2l0aW9uOiByZWxhdGl2ZTsgZm9udC13ZWlnaHQ6IDcwMDsgd2hpdGUtc3BhY2U6IHBy +ZS13cmFwOyBjb2xvcjogcmdiKDUxLCA1MSwgNTEpOyBmb250LWZhbWlseTogJ09wZW4gU2Fucycs +ICdDbGVhciBTYW5zJywgJ0hlbHZldGljYSBOZXVlJywgSGVsdmV0aWNhLCBBcmlhbCwgJ1NlZ29l +IFVJIEVtb2ppJywgc2Fucy1zZXJpZjsgZm9udC1zdHlsZTogbm9ybWFsOyBmb250LXZhcmlhbnQt +bGlnYXR1cmVzOiBub3JtYWw7IGZvbnQtdmFyaWFudC1jYXBzOiBub3JtYWw7IGxldHRlci1zcGFj +aW5nOiBub3JtYWw7IHRleHQtYWxpZ246IHN0YXJ0OyB0ZXh0LWluZGVudDogMHB4OyB0ZXh0LXRy +YW5zZm9ybTogbm9uZTsgd29yZC1zcGFjaW5nOiAwcHg7IHRleHQtZGVjb3JhdGlvbi10aGlja25l +c3M6IGluaXRpYWw7IHRleHQtZGVjb3JhdGlvbi1zdHlsZTogaW5pdGlhbDsgdGV4dC1kZWNvcmF0 +aW9uLWNvbG9yOiBpbml0aWFsOyI+PHNwYW4gIGNsYXNzPSJtZC1wbGFpbiIgbWQtaW5saW5lPSJw +bGFpbiIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGZvbnQtd2VpZ2h0OiBib2xkOyI+ +5LiL5ZGo6YeN54K55Lu75YqhPC9zcGFuPjwvaDM+PHVsICBjaWQ9Im4zNDIiIGNsYXNzPSJ1bC1s +aXN0IiBkYXRhLW1hcms9Ii0iIG1kdHlwZT0ibGlzdCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRl +ci1ib3g7IG1hcmdpbjogMC44ZW0gMHB4OyBwYWRkaW5nLWxlZnQ6IDMwcHg7IHBvc2l0aW9uOiBy +ZWxhdGl2ZTsgY29sb3I6IHJnYig1MSwgNTEsIDUxKTsgZm9udC1mYW1pbHk6ICdPcGVuIFNhbnMn +LCAnQ2xlYXIgU2FucycsICdIZWx2ZXRpY2EgTmV1ZScsIEhlbHZldGljYSwgQXJpYWwsICdTZWdv +ZSBVSSBFbW9qaScsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTZweDsgZm9udC1zdHlsZTogbm9y +bWFsOyBmb250LXZhcmlhbnQtbGlnYXR1cmVzOiBub3JtYWw7IGZvbnQtdmFyaWFudC1jYXBzOiBu +b3JtYWw7IGZvbnQtd2VpZ2h0OiA0MDA7IGxldHRlci1zcGFjaW5nOiBub3JtYWw7IHRleHQtYWxp +Z246IHN0YXJ0OyB0ZXh0LWluZGVudDogMHB4OyB0ZXh0LXRyYW5zZm9ybTogbm9uZTsgd2hpdGUt +c3BhY2U6IG5vcm1hbDsgd29yZC1zcGFjaW5nOiAwcHg7IHRleHQtZGVjb3JhdGlvbi10aGlja25l +c3M6IGluaXRpYWw7IHRleHQtZGVjb3JhdGlvbi1zdHlsZTogaW5pdGlhbDsgdGV4dC1kZWNvcmF0 +aW9uLWNvbG9yOiBpbml0aWFsOyI+PGxpICBjaWQ9Im4zNDMiIGNsYXNzPSJtZC1saXN0LWl0ZW0i +IG1kdHlwZT0ibGlzdF9pdGVtIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2lu +OiAwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxwICBjaWQ9Im4zNDQiIGNsYXNzPSJtZC1lbmQt +YmxvY2sgbWQtcCIgbWR0eXBlPSJwYXJhZ3JhcGgiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXIt +Ym94OyBsaW5lLWhlaWdodDogaW5oZXJpdDsgbWFyZ2luOiAwcHggMHB4IDAuNXJlbTsgd2hpdGUt +c3BhY2U6IHByZS13cmFwOyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48c3BhbiAgY2xhc3M9Im1kLXBs +YWluIiBtZC1pbmxpbmU9InBsYWluIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPjUu +NC43IOeJiOacrOW8gOWPkTwvc3Bhbj48L3A+PC9saT48L3VsPjxkaXYgPjxkaXYgIHN0eWxlPSJj +bGVhcjogYm90aDsgZm9udC1mYW1pbHk6IFRhaG9tYSwgQXJpYWwsIFNUSGVpdGlTQy1MaWdodCwg +U2ltU3VuOyI+PHNwYW4gPjxiciA+PC9zcGFuPjwvZGl2PjxkaXYgIHN0eWxlPSJjbGVhcjogYm90 +aDsiPjxkaXYgIGNsYXNzPSIgX19hbGl5dW5fbm9kZV9oYXNfY29sb3IiIHN0eWxlPSJtYXJnaW46 +IDBweDsgcGFkZGluZzogMHB4OyBib3JkZXI6IDBweDsgb3V0bGluZTogMHB4OyBjb2xvcjogcmdi +KDAsIDAsIDApOyBmb250LWZhbWlseTogVGFob21hLCBBcmlhbCwgU1RIZWl0aSwgU2ltU3VuOyBm +b250LXNpemU6IDE0cHg7IGZvbnQtc3R5bGU6IG5vcm1hbDsgZm9udC12YXJpYW50LWxpZ2F0dXJl +czogbm9ybWFsOyBmb250LXZhcmlhbnQtY2Fwczogbm9ybWFsOyBmb250LXdlaWdodDogNDAwOyB0 +ZXh0LWFsaWduOiBzdGFydDsgdGV4dC1pbmRlbnQ6IDBweDsgdGV4dC10cmFuc2Zvcm06IG5vbmU7 +IHRleHQtZGVjb3JhdGlvbi10aGlja25lc3M6IGluaXRpYWw7IHRleHQtZGVjb3JhdGlvbi1zdHls +ZTogaW5pdGlhbDsgdGV4dC1kZWNvcmF0aW9uLWNvbG9yOiBpbml0aWFsOyBjbGVhcjogYm90aDsi +PjxzcGFuICBjbGFzcz0iIF9fYWxpeXVuX25vZGVfaGFzX2NvbG9yIiBzdHlsZT0ibWFyZ2luOiAw +cHg7IHBhZGRpbmc6IDBweDsgYm9yZGVyOiAwcHg7IG91dGxpbmU6IDBweDsgZm9udC1mYW1pbHk6 +ICdNaWNyb3NvZnQgWWFoZWknOyBmb250LXNpemU6IDEzcHg7IGNvbG9yOiByZ2IoMTkxLCAxOTEs +IDE5MSk7Ij5CZXN0IHJlZ2FyZHMsPC9zcGFuPjwvZGl2PjxkaXYgIGNsYXNzPSIgX19hbGl5dW5f +bm9kZV9oYXNfY29sb3IiIHN0eWxlPSJtYXJnaW46IDBweDsgcGFkZGluZzogMHB4OyBib3JkZXI6 +IDBweDsgb3V0bGluZTogMHB4OyBjb2xvcjogcmdiKDAsIDAsIDApOyBmb250LWZhbWlseTogVGFo +b21hLCBBcmlhbCwgU1RIZWl0aSwgU2ltU3VuOyBmb250LXNpemU6IDE0cHg7IGZvbnQtc3R5bGU6 +IG5vcm1hbDsgZm9udC12YXJpYW50LWxpZ2F0dXJlczogbm9ybWFsOyBmb250LXZhcmlhbnQtY2Fw +czogbm9ybWFsOyBmb250LXdlaWdodDogNDAwOyB0ZXh0LWFsaWduOiBzdGFydDsgdGV4dC1pbmRl +bnQ6IDBweDsgdGV4dC10cmFuc2Zvcm06IG5vbmU7IHRleHQtZGVjb3JhdGlvbi10aGlja25lc3M6 +IGluaXRpYWw7IHRleHQtZGVjb3JhdGlvbi1zdHlsZTogaW5pdGlhbDsgdGV4dC1kZWNvcmF0aW9u +LWNvbG9yOiBpbml0aWFsOyBjbGVhcjogYm90aDsiPjxzcGFuICBjbGFzcz0iIF9fYWxpeXVuX25v +ZGVfaGFzX2NvbG9yIiBzdHlsZT0ibWFyZ2luOiAwcHg7IHBhZGRpbmc6IDBweDsgYm9yZGVyOiAw +cHg7IG91dGxpbmU6IDBweDsgZm9udC1mYW1pbHk6ICdNaWNyb3NvZnQgWWFoZWknOyBmb250LXNp +emU6IDEzcHg7IGNvbG9yOiByZ2IoMTkxLCAxOTEsIDE5MSk7Ij7mnajovak8L3NwYW4+PC9kaXY+ +PGRpdiAgY2xhc3M9IiBfX2FsaXl1bl9ub2RlX2hhc19jb2xvciIgc3R5bGU9Im1hcmdpbjogMHB4 +OyBwYWRkaW5nOiAwcHg7IGJvcmRlcjogMHB4OyBvdXRsaW5lOiAwcHg7IGNvbG9yOiByZ2IoMCwg +MCwgMCk7IGZvbnQtZmFtaWx5OiBUYWhvbWEsIEFyaWFsLCBTVEhlaXRpLCBTaW1TdW47IGZvbnQt +c2l6ZTogMTRweDsgZm9udC1zdHlsZTogbm9ybWFsOyBmb250LXZhcmlhbnQtbGlnYXR1cmVzOiBu +b3JtYWw7IGZvbnQtdmFyaWFudC1jYXBzOiBub3JtYWw7IGZvbnQtd2VpZ2h0OiA0MDA7IHRleHQt +YWxpZ246IHN0YXJ0OyB0ZXh0LWluZGVudDogMHB4OyB0ZXh0LXRyYW5zZm9ybTogbm9uZTsgdGV4 +dC1kZWNvcmF0aW9uLXRoaWNrbmVzczogaW5pdGlhbDsgdGV4dC1kZWNvcmF0aW9uLXN0eWxlOiBp +bml0aWFsOyB0ZXh0LWRlY29yYXRpb24tY29sb3I6IGluaXRpYWw7IGNsZWFyOiBib3RoOyI+PGlt +ZyAgZGF0YS1hbGltYWlsLWltZy1wcm9jZXNzZWQtc3FtLWVkaXRvcj0idHJ1ZSIgaGVpZ2h0PSI2 +OCIgc3JjPSJjaWQ6X19hbGl5dW4xNzc0NjAyNTA1NDYwNTAwNTEiIHdpZHRoPSIzMDAiIHN0eWxl +PSJtYXJnaW46IDBweDsgcGFkZGluZzogMHB4OyBib3JkZXI6IDBweDsgb3V0bGluZTogMHB4OyB2 +ZXJ0aWNhbC1hbGlnbjogYm90dG9tOyI+Jm5ic3A7PC9kaXY+PGRpdiAgY2xhc3M9IiBfX2FsaXl1 +bl9ub2RlX2hhc19jb2xvciIgc3R5bGU9Im1hcmdpbjogMHB4OyBwYWRkaW5nOiAwcHg7IGJvcmRl +cjogMHB4OyBvdXRsaW5lOiAwcHg7IGNvbG9yOiByZ2IoMCwgMCwgMCk7IGZvbnQtZmFtaWx5OiBU +YWhvbWEsIEFyaWFsLCBTVEhlaXRpLCBTaW1TdW47IGZvbnQtc2l6ZTogMTRweDsgZm9udC1zdHls +ZTogbm9ybWFsOyBmb250LXZhcmlhbnQtbGlnYXR1cmVzOiBub3JtYWw7IGZvbnQtdmFyaWFudC1j +YXBzOiBub3JtYWw7IGZvbnQtd2VpZ2h0OiA0MDA7IHRleHQtYWxpZ246IHN0YXJ0OyB0ZXh0LWlu +ZGVudDogMHB4OyB0ZXh0LXRyYW5zZm9ybTogbm9uZTsgdGV4dC1kZWNvcmF0aW9uLXRoaWNrbmVz +czogaW5pdGlhbDsgdGV4dC1kZWNvcmF0aW9uLXN0eWxlOiBpbml0aWFsOyB0ZXh0LWRlY29yYXRp +b24tY29sb3I6IGluaXRpYWw7IGNsZWFyOiBib3RoOyI+PHNwYW4gIGNsYXNzPSIgX19hbGl5dW5f +bm9kZV9oYXNfY29sb3IiIHN0eWxlPSJtYXJnaW46IDBweDsgcGFkZGluZzogMHB4OyBib3JkZXI6 +IDBweDsgb3V0bGluZTogMHB4OyBmb250LWZhbWlseTogJ01pY3Jvc29mdCBZYWhlaSc7IGNvbG9y +OiByZ2IoMTkxLCAxOTEsIDE5MSk7Ij7lnLDlnYDvvJrkuK3lm73Ct+WNl+S6rOi9r+S7tuiwt+i9 +r+S7tuWkp+mBkzEx5Y+36Iqx56We5aSn5Y6mM0Y8L3NwYW4+PC9kaXY+PGRpdiAgY2xhc3M9IiBf +X2FsaXl1bl9ub2RlX2hhc19jb2xvciIgc3R5bGU9Im1hcmdpbjogMHB4OyBwYWRkaW5nOiAwcHg7 +IGJvcmRlcjogMHB4OyBvdXRsaW5lOiAwcHg7IGNvbG9yOiByZ2IoMCwgMCwgMCk7IGZvbnQtZmFt +aWx5OiBUYWhvbWEsIEFyaWFsLCBTVEhlaXRpLCBTaW1TdW47IGZvbnQtc2l6ZTogMTRweDsgZm9u +dC1zdHlsZTogbm9ybWFsOyBmb250LXZhcmlhbnQtbGlnYXR1cmVzOiBub3JtYWw7IGZvbnQtdmFy +aWFudC1jYXBzOiBub3JtYWw7IGZvbnQtd2VpZ2h0OiA0MDA7IHRleHQtYWxpZ246IHN0YXJ0OyB0 +ZXh0LWluZGVudDogMHB4OyB0ZXh0LXRyYW5zZm9ybTogbm9uZTsgdGV4dC1kZWNvcmF0aW9uLXRo +aWNrbmVzczogaW5pdGlhbDsgdGV4dC1kZWNvcmF0aW9uLXN0eWxlOiBpbml0aWFsOyB0ZXh0LWRl +Y29yYXRpb24tY29sb3I6IGluaXRpYWw7IGNsZWFyOiBib3RoOyI+PHNwYW4gIGNsYXNzPSIgX19h +bGl5dW5fbm9kZV9oYXNfY29sb3IiIHN0eWxlPSJtYXJnaW46IDBweDsgcGFkZGluZzogMHB4OyBi +b3JkZXI6IDBweDsgb3V0bGluZTogMHB4OyBmb250LWZhbWlseTogJ01pY3Jvc29mdCBZYWhlaSc7 +IGNvbG9yOiByZ2IoMTkxLCAxOTEsIDE5MSk7Ij7miYvmnLrvvJoxODcyNjEyODQ4OTwvc3Bhbj48 +L2Rpdj48ZGl2ICBjbGFzcz0iIF9fYWxpeXVuX25vZGVfaGFzX2NvbG9yIiBzdHlsZT0ibWFyZ2lu +OiAwcHg7IHBhZGRpbmc6IDBweDsgYm9yZGVyOiAwcHg7IG91dGxpbmU6IDBweDsgY29sb3I6IHJn +YigwLCAwLCAwKTsgZm9udC1mYW1pbHk6IFRhaG9tYSwgQXJpYWwsIFNUSGVpdGksIFNpbVN1bjsg +Zm9udC1zaXplOiAxNHB4OyBmb250LXN0eWxlOiBub3JtYWw7IGZvbnQtdmFyaWFudC1saWdhdHVy +ZXM6IG5vcm1hbDsgZm9udC12YXJpYW50LWNhcHM6IG5vcm1hbDsgZm9udC13ZWlnaHQ6IDQwMDsg +dGV4dC1hbGlnbjogc3RhcnQ7IHRleHQtaW5kZW50OiAwcHg7IHRleHQtdHJhbnNmb3JtOiBub25l +OyB0ZXh0LWRlY29yYXRpb24tdGhpY2tuZXNzOiBpbml0aWFsOyB0ZXh0LWRlY29yYXRpb24tc3R5 +bGU6IGluaXRpYWw7IHRleHQtZGVjb3JhdGlvbi1jb2xvcjogaW5pdGlhbDsgY2xlYXI6IGJvdGg7 +Ij48c3BhbiAgY2xhc3M9IiBfX2FsaXl1bl9ub2RlX2hhc19jb2xvciIgc3R5bGU9Im1hcmdpbjog +MHB4OyBwYWRkaW5nOiAwcHg7IGJvcmRlcjogMHB4OyBvdXRsaW5lOiAwcHg7IGZvbnQtZmFtaWx5 +OiAnTWljcm9zb2Z0IFlhaGVpJzsgY29sb3I6IHJnYigxOTEsIDE5MSwgMTkxKTsiPumCrueuse+8 +mnlhbmd4dWFuQHdpdHNvZnQuY248L3NwYW4+PC9kaXY+PC9kaXY+PC9kaXY+PHAgIGNsYXNzPSJt +ZC1lbmQtYmxvY2sgbWQtcCBtZC1mb2N1cyBfX2FsaXl1bl9ub2RlX2hhc19jb2xvciIgc3R5bGU9 +ImZvbnQtZmFtaWx5OiAnT3BlbiBTYW5zJywgJ0NsZWFyIFNhbnMnLCAnSGVsdmV0aWNhIE5ldWUn +LCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmOyBib3gtc2l6aW5nOiBib3JkZXItYm94OyBs +aW5lLWhlaWdodDogaW5oZXJpdDsgbWFyZ2luOiAxMnB4IDBweDsgd2hpdGUtc3BhY2U6IHByZS13 +cmFwOyBwb3NpdGlvbjogcmVsYXRpdmU7IGNvbG9yOiByZ2IoNTEsIDUxLCA1MSk7IGZvbnQtc2l6 +ZTogMTZweDsiPjxiciA+PC9wPjwvZGl2PjwvZGl2PjwvZGl2Pg== + +--=_mailmaster-6a18e4a4_0_39b3_=-- + +--=_mailmaster-6a18e4a4_0_2d12_= +Content-Type: application/octet-stream +Content-Transfer-Encoding: base64 +Content-ID: <__aliyun177460250546050051> +Content-Disposition: inline; + filename="=?utf-8?B?57u05ouT56eR5oqALemCruS7tuetvuWQjWxvZ28ucG5n?=" + +iVBORw0KGgoAAAANSUhEUgAAASwAAABECAYAAAA7rQj2AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJ +bWFnZVJlYWR5ccllPAAAA4RpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdp +bj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6 +eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTQ1IDc5LjE2 +MzQ5OSwgMjAxOC8wOC8xMy0xNjo0MDoyMiAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJo +dHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlw +dGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEu +MC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVz +b3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1N +Ok9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDplYjhjYzQwMy1lNzZjLTQ5NDgtODFmOC1kNDIy +MmRkMTdhYjgiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NkVENzExMzg1MzBEMTFFQTg4QjNF +NEJFMUQyRjc1RkIiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NkVENzExMzc1MzBEMTFFQTg4 +QjNFNEJFMUQyRjc1RkIiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTkg +KFdpbmRvd3MpIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6 +ZmNkNTdlM2UtZThjYS05ZjQ2LWEzZTUtMWJlYmE2NjA5Y2FmIiBzdFJlZjpkb2N1bWVudElEPSJh +ZG9iZTpkb2NpZDpwaG90b3Nob3A6MzZkNmNjNTUtNTY3Yi01MTQ2LWEwYWYtMzBlMzEwMTMxNDFk +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 + +--=_mailmaster-6a18e4a4_0_2d12_=-- diff --git a/media/inbound/2026-04-03_1702_G5开发周报_2026-03-23_--_2026-03-27---c09a3d3c-05e1-4677-b4fe-3b5de8e190a1.eml b/media/inbound/2026-04-03_1702_G5开发周报_2026-03-23_--_2026-03-27---c09a3d3c-05e1-4677-b4fe-3b5de8e190a1.eml new file mode 100644 index 0000000..3a217e3 --- /dev/null +++ b/media/inbound/2026-04-03_1702_G5开发周报_2026-03-23_--_2026-03-27---c09a3d3c-05e1-4677-b4fe-3b5de8e190a1.eml @@ -0,0 +1,572 @@ +Date: Fri, 3 Apr 2026 17:02:51 +0800 +From: =?utf-8?B?5p2o6L2p?= +To: =?utf-8?B?5YiY5by6?= +Cc: =?utf-8?B?5bGI5paw6b6Z?= , =?utf-8?B?6ZmI5piO?= + , =?utf-8?B?5pu+6I6J?= +Message-ID: +In-Reply-To: <9f95f2c3-8860-4631-99a7-30f110eb3cee.yangxuan@witsoft.cn> +References: <4351C568-815B-42E0-A03D-100812C3A198@witsoft.cn> + <1dc0c9a6-7fdb-4bb4-9b8d-b10042d922f2.yangxuan@witsoft.cn> + <118cdc96-acf5-4a97-8eef-75319fd0e336.yangxuan@witsoft.cn> + <9f95f2c3-8860-4631-99a7-30f110eb3cee.yangxuan@witsoft.cn> +Subject: =?utf-8?B?RzXlvIDlj5HlkajmiqXjgJAyMDI2LTAzLTIzIC0tICAyMDI2LTAz?= + =?utf-8?B?LTI344CR?= +MIME-Version: 1.0 +Content-Type: multipart/related; boundary="=_mailmaster-6a18e4a4_0_4dc8_=" + +--=_mailmaster-6a18e4a4_0_4dc8_= +Content-Type: multipart/alternative; boundary="=_mailmaster-6a18e4a4_0_74d_=" + +--=_mailmaster-6a18e4a4_0_74d_= +Content-Type: text/plain; charset="UTF-8" +Content-Transfer-Encoding: base64 + +5oKo5aW977yB5Lul5LiL5piv5oiR5pys5ZGo55qE5bel5L2c5oC757uT5Y+K5LiL5ZGo6K6h5YiS +77yM6K+35a6h6ZiF44CCCuacrOWRqOW3peS9nOaAu+e7kwrkuIDjgIHph43ngrnlt6XkvZzlrozm +iJDmg4XlhrUKCiAqIApHNei/m+mUgOWtmCA1LjQuNyDniYjmnKzlvIDlj5EK5LqM44CB5bi46KeE +5bel5L2c5piO57uGCjIwMjYtMDMtMzAKCiAqIArlupPlrZjlvIDlj5HmlrnmoYjor4TlrqEKCiAq +IArlupPlrZjpnIDmsYLlvIDlj5EKMjAyNi0wMy0zMQoKICogCuWHuuWFpeW6k+afpeivoua3u+WK +oOWkh+azqOafpeivogoKICogCuafpeivouWPr+eUqOW6k+WtmOeahOaOpeWPo+aOkumZpOWnlOWk +luS7kwoKICogCuWHuuWFpeW6k+WNleaNruaYjue7huafpeivogoyMDI2LTA0LTAxCgogKiAK5Ye6 +5YWl5bqT5Y2V5o2u5piO57uG5byA5Y+RCjIwMjYtMDQtMDIKCiAqIArmgKfog73kvJjljJYKCiAq +IArlvILmraXlr7zlh7oKCiAqIArmlrDlop7lsI/mlbDkvY3mlbAg5Y2V5L2N57K+5bqm5o6n5Yi2 +CgogKiAK5Ye65YWl5bqT5YWz6IGU5a6i5oi35oiW6ICF5L6b5bqU5ZWG5Yik5patCgogKiAK5Ye6 +5YWl5bqT5Y2V5o2u5piO57uG5p+l6K+i6Ieq5rWL6IGU6LCDCjIwMjYtMDQtMDMKCiAqIAroh6rl +iqjlhaXlupPnrZbnlaXmoLflvI/osIPmlbQKCiAqIArlt6Xluo/lp5TlpJboh6rliqjlhaXlupPp +gLvovpHosIPmlbQKCiAqIArljZXmja7mn6Xor6Loh6rmtYvlkozlr7zlh7rkvJjljJYK5LiL5ZGo +6YeN54K55Lu75YqhCgogKiAKNS40Ljcg54mI5pys5byA5Y+RCkJlc3QgcmVnYXJkcywK5p2o6L2p +CuWcsOWdgO+8muS4reWbvcK35Y2X5Lqs6L2v5Lu26LC36L2v5Lu25aSn6YGTMTHlj7foirHnpZ7l +pKfljqYzRgrmiYvmnLrvvJoxODcyNjEyODQ4OQrpgq7nrrHvvJp5YW5neHVhbkB3aXRzb2Z0LmNu +Cg== + +--=_mailmaster-6a18e4a4_0_74d_= +Content-Type: text/html; charset="UTF-8" +Content-Transfer-Encoding: base64 + +PGRpdiBjbGFzcz0iX19hbGl5dW5fZW1haWxfYm9keV9ibG9jayI+PGRpdiAgc3R5bGU9ImZvbnQt +ZmFtaWx5OiBUYWhvbWEsIEFyaWFsLCBTVEhlaXRpU0MtTGlnaHQsIFNpbVN1biI+PGRpdiAgc3R5 +bGU9ImZvbnQtZmFtaWx5OiDlvq7ova/pm4Xpu5E7Ij48cCAgY2lkPSJuMiIgY2xhc3M9Im1kLWVu +ZC1ibG9jayBtZC1wIiBtZHR5cGU9InBhcmFncmFwaCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRl +ci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhlcml0OyBtYXJnaW46IDAuOGVtIDBweDsgd2hpdGUtc3Bh +Y2U6IHByZS13cmFwOyBwb3NpdGlvbjogcmVsYXRpdmU7IGNvbG9yOiByZ2IoNTEsIDUxLCA1MSk7 +IGZvbnQtZmFtaWx5OiAnT3BlbiBTYW5zJywgJ0NsZWFyIFNhbnMnLCAnSGVsdmV0aWNhIE5ldWUn +LCBIZWx2ZXRpY2EsIEFyaWFsLCAnU2Vnb2UgVUkgRW1vamknLCBzYW5zLXNlcmlmOyBmb250LXNp +emU6IDE2cHg7IGZvbnQtc3R5bGU6IG5vcm1hbDsgZm9udC12YXJpYW50LWxpZ2F0dXJlczogbm9y +bWFsOyBmb250LXZhcmlhbnQtY2Fwczogbm9ybWFsOyBmb250LXdlaWdodDogNDAwOyBsZXR0ZXIt +c3BhY2luZzogbm9ybWFsOyB0ZXh0LWFsaWduOiBzdGFydDsgdGV4dC1pbmRlbnQ6IDBweDsgdGV4 +dC10cmFuc2Zvcm06IG5vbmU7IHdvcmQtc3BhY2luZzogMHB4OyB0ZXh0LWRlY29yYXRpb24tdGhp +Y2tuZXNzOiBpbml0aWFsOyB0ZXh0LWRlY29yYXRpb24tc3R5bGU6IGluaXRpYWw7IHRleHQtZGVj +b3JhdGlvbi1jb2xvcjogaW5pdGlhbDsiPjxzcGFuICBjbGFzcz0ibWQtcGxhaW4gbWQtZXhwYW5k +IiBtZC1pbmxpbmU9InBsYWluIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPuaCqOWl +ve+8geS7peS4i+aYr+aIkeacrOWRqOeahOW3peS9nOaAu+e7k+WPiuS4i+WRqOiuoeWIku+8jOiv +t+WuoemYheOAgjwvc3Bhbj48L3A+PGgzICBjaWQ9Im4zIiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1k +LWhlYWRpbmciIG1kdHlwZT0iaGVhZGluZyIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7 +IGJyZWFrLWFmdGVyOiBhdm9pZC1wYWdlOyBicmVhay1pbnNpZGU6IGF2b2lkOyBmb250LXNpemU6 +IDEuNWVtOyBtYXJnaW4tdG9wOiAxcmVtOyBtYXJnaW4tYm90dG9tOiAxcmVtOyBwb3NpdGlvbjog +cmVsYXRpdmU7IGZvbnQtd2VpZ2h0OiA3MDA7IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgY29sb3I6 +IHJnYig1MSwgNTEsIDUxKTsgZm9udC1mYW1pbHk6ICdPcGVuIFNhbnMnLCAnQ2xlYXIgU2Fucycs +ICdIZWx2ZXRpY2EgTmV1ZScsIEhlbHZldGljYSwgQXJpYWwsICdTZWdvZSBVSSBFbW9qaScsIHNh +bnMtc2VyaWY7IGZvbnQtc3R5bGU6IG5vcm1hbDsgZm9udC12YXJpYW50LWxpZ2F0dXJlczogbm9y +bWFsOyBmb250LXZhcmlhbnQtY2Fwczogbm9ybWFsOyBsZXR0ZXItc3BhY2luZzogbm9ybWFsOyB0 +ZXh0LWFsaWduOiBzdGFydDsgdGV4dC1pbmRlbnQ6IDBweDsgdGV4dC10cmFuc2Zvcm06IG5vbmU7 +IHdvcmQtc3BhY2luZzogMHB4OyB0ZXh0LWRlY29yYXRpb24tdGhpY2tuZXNzOiBpbml0aWFsOyB0 +ZXh0LWRlY29yYXRpb24tc3R5bGU6IGluaXRpYWw7IHRleHQtZGVjb3JhdGlvbi1jb2xvcjogaW5p +dGlhbDsiPjxzcGFuICBjbGFzcz0ibWQtcGxhaW4iIG1kLWlubGluZT0icGxhaW4iIHN0eWxlPSJi +b3gtc2l6aW5nOiBib3JkZXItYm94OyBmb250LXdlaWdodDogNzAwOyI+5pys5ZGo5bel5L2c5oC7 +57uTPC9zcGFuPjwvaDM+PGg0ICBjaWQ9Im40IiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLWhlYWRp +bmciIG1kdHlwZT0iaGVhZGluZyIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGJyZWFr +LWFmdGVyOiBhdm9pZC1wYWdlOyBicmVhay1pbnNpZGU6IGF2b2lkOyBmb250LXNpemU6IDEuMjVl +bTsgbWFyZ2luLXRvcDogMXJlbTsgbWFyZ2luLWJvdHRvbTogMXJlbTsgcG9zaXRpb246IHJlbGF0 +aXZlOyBmb250LXdlaWdodDogNzAwOyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IGNvbG9yOiByZ2Io +NTEsIDUxLCA1MSk7IGZvbnQtZmFtaWx5OiAnT3BlbiBTYW5zJywgJ0NsZWFyIFNhbnMnLCAnSGVs +dmV0aWNhIE5ldWUnLCBIZWx2ZXRpY2EsIEFyaWFsLCAnU2Vnb2UgVUkgRW1vamknLCBzYW5zLXNl +cmlmOyBmb250LXN0eWxlOiBub3JtYWw7IGZvbnQtdmFyaWFudC1saWdhdHVyZXM6IG5vcm1hbDsg +Zm9udC12YXJpYW50LWNhcHM6IG5vcm1hbDsgbGV0dGVyLXNwYWNpbmc6IG5vcm1hbDsgdGV4dC1h +bGlnbjogc3RhcnQ7IHRleHQtaW5kZW50OiAwcHg7IHRleHQtdHJhbnNmb3JtOiBub25lOyB3b3Jk +LXNwYWNpbmc6IDBweDsgdGV4dC1kZWNvcmF0aW9uLXRoaWNrbmVzczogaW5pdGlhbDsgdGV4dC1k +ZWNvcmF0aW9uLXN0eWxlOiBpbml0aWFsOyB0ZXh0LWRlY29yYXRpb24tY29sb3I6IGluaXRpYWw7 +Ij48c3BhbiAgY2xhc3M9Im1kLXBsYWluIiBtZC1pbmxpbmU9InBsYWluIiBzdHlsZT0iYm94LXNp +emluZzogYm9yZGVyLWJveDsiPuS4gOOAgemHjeeCueW3peS9nOWujOaIkOaDheWGtTwvc3Bhbj48 +L2g0PjxvbCAgY2lkPSJuNjEiIGNsYXNzPSJvbC1saXN0IiBtZHR5cGU9Imxpc3QiIHN0eWxlPSJi +b3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDAuOGVtIDBweDsgcGFkZGluZy1sZWZ0OiAz +MHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7IGNvbG9yOiByZ2IoNTEsIDUxLCA1MSk7IGZvbnQtZmFt +aWx5OiAnT3BlbiBTYW5zJywgJ0NsZWFyIFNhbnMnLCAnSGVsdmV0aWNhIE5ldWUnLCBIZWx2ZXRp +Y2EsIEFyaWFsLCAnU2Vnb2UgVUkgRW1vamknLCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDE2cHg7 +IGZvbnQtc3R5bGU6IG5vcm1hbDsgZm9udC12YXJpYW50LWxpZ2F0dXJlczogbm9ybWFsOyBmb250 +LXZhcmlhbnQtY2Fwczogbm9ybWFsOyBmb250LXdlaWdodDogNDAwOyBsZXR0ZXItc3BhY2luZzog +bm9ybWFsOyB0ZXh0LWFsaWduOiBzdGFydDsgdGV4dC1pbmRlbnQ6IDBweDsgdGV4dC10cmFuc2Zv +cm06IG5vbmU7IHdoaXRlLXNwYWNlOiBub3JtYWw7IHdvcmQtc3BhY2luZzogMHB4OyB0ZXh0LWRl +Y29yYXRpb24tdGhpY2tuZXNzOiBpbml0aWFsOyB0ZXh0LWRlY29yYXRpb24tc3R5bGU6IGluaXRp +YWw7IHRleHQtZGVjb3JhdGlvbi1jb2xvcjogaW5pdGlhbDsiPjxsaSAgY2lkPSJuOCIgY2xhc3M9 +Im1kLWxpc3QtaXRlbSIgbWR0eXBlPSJsaXN0X2l0ZW0iIHN0eWxlPSJib3gtc2l6aW5nOiBib3Jk +ZXItYm94OyBtYXJnaW46IDBweDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHAgIGNpZD0ibjkiIGNs +YXNzPSJtZC1lbmQtYmxvY2sgbWQtcCIgbWR0eXBlPSJwYXJhZ3JhcGgiIHN0eWxlPSJib3gtc2l6 +aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5oZXJpdDsgbWFyZ2luOiAwcHggMHB4IDAu +NXJlbTsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48c3BhbiAg +Y2xhc3M9Im1kLXBsYWluIiBtZC1pbmxpbmU9InBsYWluIiBzdHlsZT0iYm94LXNpemluZzogYm9y +ZGVyLWJveDsiPkc16L+b6ZSA5a2YIDUuNC43IOeJiOacrOW8gOWPkTwvc3Bhbj48L3A+PC9saT48 +L29sPjxoNCAgY2lkPSJuMTAiIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtaGVhZGluZyIgbWR0eXBl +PSJoZWFkaW5nIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgYnJlYWstYWZ0ZXI6IGF2 +b2lkLXBhZ2U7IGJyZWFrLWluc2lkZTogYXZvaWQ7IGZvbnQtc2l6ZTogMS4yNWVtOyBtYXJnaW4t +dG9wOiAxcmVtOyBtYXJnaW4tYm90dG9tOiAxcmVtOyBwb3NpdGlvbjogcmVsYXRpdmU7IGZvbnQt +d2VpZ2h0OiA3MDA7IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgY29sb3I6IHJnYig1MSwgNTEsIDUx +KTsgZm9udC1mYW1pbHk6ICdPcGVuIFNhbnMnLCAnQ2xlYXIgU2FucycsICdIZWx2ZXRpY2EgTmV1 +ZScsIEhlbHZldGljYSwgQXJpYWwsICdTZWdvZSBVSSBFbW9qaScsIHNhbnMtc2VyaWY7IGZvbnQt +c3R5bGU6IG5vcm1hbDsgZm9udC12YXJpYW50LWxpZ2F0dXJlczogbm9ybWFsOyBmb250LXZhcmlh +bnQtY2Fwczogbm9ybWFsOyBsZXR0ZXItc3BhY2luZzogbm9ybWFsOyB0ZXh0LWFsaWduOiBzdGFy +dDsgdGV4dC1pbmRlbnQ6IDBweDsgdGV4dC10cmFuc2Zvcm06IG5vbmU7IHdvcmQtc3BhY2luZzog +MHB4OyB0ZXh0LWRlY29yYXRpb24tdGhpY2tuZXNzOiBpbml0aWFsOyB0ZXh0LWRlY29yYXRpb24t +c3R5bGU6IGluaXRpYWw7IHRleHQtZGVjb3JhdGlvbi1jb2xvcjogaW5pdGlhbDsiPjxzcGFuICBj +bGFzcz0ibWQtcGxhaW4iIG1kLWlubGluZT0icGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3Jk +ZXItYm94OyI+5LqM44CB5bi46KeE5bel5L2c5piO57uGPC9zcGFuPjwvaDQ+PHAgIGNpZD0ibjEx +IiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLXAiIG1kdHlwZT0icGFyYWdyYXBoIiBzdHlsZT0iYm94 +LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IG1hcmdpbjogMC44ZW0g +MHB4OyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsgY29sb3I6IHJn +Yig1MSwgNTEsIDUxKTsgZm9udC1mYW1pbHk6ICdPcGVuIFNhbnMnLCAnQ2xlYXIgU2FucycsICdI +ZWx2ZXRpY2EgTmV1ZScsIEhlbHZldGljYSwgQXJpYWwsICdTZWdvZSBVSSBFbW9qaScsIHNhbnMt +c2VyaWY7IGZvbnQtc2l6ZTogMTZweDsgZm9udC1zdHlsZTogbm9ybWFsOyBmb250LXZhcmlhbnQt +bGlnYXR1cmVzOiBub3JtYWw7IGZvbnQtdmFyaWFudC1jYXBzOiBub3JtYWw7IGZvbnQtd2VpZ2h0 +OiA0MDA7IGxldHRlci1zcGFjaW5nOiBub3JtYWw7IHRleHQtYWxpZ246IHN0YXJ0OyB0ZXh0LWlu +ZGVudDogMHB4OyB0ZXh0LXRyYW5zZm9ybTogbm9uZTsgd29yZC1zcGFjaW5nOiAwcHg7IHRleHQt +ZGVjb3JhdGlvbi10aGlja25lc3M6IGluaXRpYWw7IHRleHQtZGVjb3JhdGlvbi1zdHlsZTogaW5p +dGlhbDsgdGV4dC1kZWNvcmF0aW9uLWNvbG9yOiBpbml0aWFsOyI+PHNwYW4gIGNsYXNzPSJtZC1w +bGFpbiIgbWQtaW5saW5lPSJwbGFpbiIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGZv +bnQtd2VpZ2h0OiA3MDA7Ij4yMDI2LTAzLTMwPC9zcGFuPjwvcD48dWwgIGNpZD0ibjEyIiBjbGFz +cz0idWwtbGlzdCIgZGF0YS1tYXJrPSItIiBtZHR5cGU9Imxpc3QiIHN0eWxlPSJib3gtc2l6aW5n +OiBib3JkZXItYm94OyBtYXJnaW46IDAuOGVtIDBweDsgcGFkZGluZy1sZWZ0OiAzMHB4OyBwb3Np +dGlvbjogcmVsYXRpdmU7IGNvbG9yOiByZ2IoNTEsIDUxLCA1MSk7IGZvbnQtZmFtaWx5OiAnT3Bl +biBTYW5zJywgJ0NsZWFyIFNhbnMnLCAnSGVsdmV0aWNhIE5ldWUnLCBIZWx2ZXRpY2EsIEFyaWFs +LCAnU2Vnb2UgVUkgRW1vamknLCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDE2cHg7IGZvbnQtc3R5 +bGU6IG5vcm1hbDsgZm9udC12YXJpYW50LWxpZ2F0dXJlczogbm9ybWFsOyBmb250LXZhcmlhbnQt +Y2Fwczogbm9ybWFsOyBmb250LXdlaWdodDogNDAwOyBsZXR0ZXItc3BhY2luZzogbm9ybWFsOyB0 +ZXh0LWFsaWduOiBzdGFydDsgdGV4dC1pbmRlbnQ6IDBweDsgdGV4dC10cmFuc2Zvcm06IG5vbmU7 +IHdoaXRlLXNwYWNlOiBub3JtYWw7IHdvcmQtc3BhY2luZzogMHB4OyB0ZXh0LWRlY29yYXRpb24t +dGhpY2tuZXNzOiBpbml0aWFsOyB0ZXh0LWRlY29yYXRpb24tc3R5bGU6IGluaXRpYWw7IHRleHQt +ZGVjb3JhdGlvbi1jb2xvcjogaW5pdGlhbDsiPjxsaSAgY2lkPSJuMTMiIGNsYXNzPSJtZC1saXN0 +LWl0ZW0iIG1kdHlwZT0ibGlzdF9pdGVtIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsg +bWFyZ2luOiAwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxwICBjaWQ9Im4xNCIgY2xhc3M9Im1k +LWVuZC1ibG9jayBtZC1wIiBtZHR5cGU9InBhcmFncmFwaCIgc3R5bGU9ImJveC1zaXppbmc6IGJv +cmRlci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhlcml0OyBtYXJnaW46IDBweCAwcHggMC41cmVtOyB3 +aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxzcGFuICBjbGFzcz0i +bWQtcGxhaW4iIG1kLWlubGluZT0icGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94 +OyI+5bqT5a2Y5byA5Y+R5pa55qGI6K+E5a6hPC9zcGFuPjwvcD48L2xpPjxsaSAgY2lkPSJuNzEi +IGNsYXNzPSJtZC1saXN0LWl0ZW0iIG1kdHlwZT0ibGlzdF9pdGVtIiBzdHlsZT0iYm94LXNpemlu +ZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxwICBjaWQ9 +Im43MiIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1wIiBtZHR5cGU9InBhcmFncmFwaCIgc3R5bGU9 +ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhlcml0OyBtYXJnaW46IDBw +eCAwcHggMC41cmVtOyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsi +PjxzcGFuICBjbGFzcz0ibWQtcGxhaW4iIG1kLWlubGluZT0icGxhaW4iIHN0eWxlPSJib3gtc2l6 +aW5nOiBib3JkZXItYm94OyI+5bqT5a2Y6ZyA5rGC5byA5Y+RPC9zcGFuPjwvcD48L2xpPjwvdWw+ +PHAgIGNpZD0ibjE5IiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLXAiIG1kdHlwZT0icGFyYWdyYXBo +IiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IG1h +cmdpbjogMC44ZW0gMHB4OyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0aW9uOiByZWxhdGl2 +ZTsgY29sb3I6IHJnYig1MSwgNTEsIDUxKTsgZm9udC1mYW1pbHk6ICdPcGVuIFNhbnMnLCAnQ2xl +YXIgU2FucycsICdIZWx2ZXRpY2EgTmV1ZScsIEhlbHZldGljYSwgQXJpYWwsICdTZWdvZSBVSSBF +bW9qaScsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTZweDsgZm9udC1zdHlsZTogbm9ybWFsOyBm +b250LXZhcmlhbnQtbGlnYXR1cmVzOiBub3JtYWw7IGZvbnQtdmFyaWFudC1jYXBzOiBub3JtYWw7 +IGZvbnQtd2VpZ2h0OiA0MDA7IGxldHRlci1zcGFjaW5nOiBub3JtYWw7IHRleHQtYWxpZ246IHN0 +YXJ0OyB0ZXh0LWluZGVudDogMHB4OyB0ZXh0LXRyYW5zZm9ybTogbm9uZTsgd29yZC1zcGFjaW5n +OiAwcHg7IHRleHQtZGVjb3JhdGlvbi10aGlja25lc3M6IGluaXRpYWw7IHRleHQtZGVjb3JhdGlv +bi1zdHlsZTogaW5pdGlhbDsgdGV4dC1kZWNvcmF0aW9uLWNvbG9yOiBpbml0aWFsOyI+PHNwYW4g +IGNsYXNzPSJtZC1wbGFpbiIgbWQtaW5saW5lPSJwbGFpbiIgc3R5bGU9ImJveC1zaXppbmc6IGJv +cmRlci1ib3g7IGZvbnQtd2VpZ2h0OiA3MDA7Ij4yMDI2LTAzLTMxPC9zcGFuPjwvcD48dWwgIGNp +ZD0ibjIwIiBjbGFzcz0idWwtbGlzdCIgZGF0YS1tYXJrPSItIiBtZHR5cGU9Imxpc3QiIHN0eWxl +PSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDAuOGVtIDBweDsgcGFkZGluZy1sZWZ0 +OiAzMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7IGNvbG9yOiByZ2IoNTEsIDUxLCA1MSk7IGZvbnQt +ZmFtaWx5OiAnT3BlbiBTYW5zJywgJ0NsZWFyIFNhbnMnLCAnSGVsdmV0aWNhIE5ldWUnLCBIZWx2 +ZXRpY2EsIEFyaWFsLCAnU2Vnb2UgVUkgRW1vamknLCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDE2 +cHg7IGZvbnQtc3R5bGU6IG5vcm1hbDsgZm9udC12YXJpYW50LWxpZ2F0dXJlczogbm9ybWFsOyBm +b250LXZhcmlhbnQtY2Fwczogbm9ybWFsOyBmb250LXdlaWdodDogNDAwOyBsZXR0ZXItc3BhY2lu +Zzogbm9ybWFsOyB0ZXh0LWFsaWduOiBzdGFydDsgdGV4dC1pbmRlbnQ6IDBweDsgdGV4dC10cmFu +c2Zvcm06IG5vbmU7IHdoaXRlLXNwYWNlOiBub3JtYWw7IHdvcmQtc3BhY2luZzogMHB4OyB0ZXh0 +LWRlY29yYXRpb24tdGhpY2tuZXNzOiBpbml0aWFsOyB0ZXh0LWRlY29yYXRpb24tc3R5bGU6IGlu +aXRpYWw7IHRleHQtZGVjb3JhdGlvbi1jb2xvcjogaW5pdGlhbDsiPjxsaSAgY2lkPSJuMjEiIGNs +YXNzPSJtZC1saXN0LWl0ZW0iIG1kdHlwZT0ibGlzdF9pdGVtIiBzdHlsZT0iYm94LXNpemluZzog +Ym9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxwICBjaWQ9Im4y +MiIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1wIiBtZHR5cGU9InBhcmFncmFwaCIgc3R5bGU9ImJv +eC1zaXppbmc6IGJvcmRlci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhlcml0OyBtYXJnaW46IDBweCAw +cHggMC41cmVtOyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxz +cGFuICBjbGFzcz0ibWQtcGxhaW4iIG1kLWlubGluZT0icGxhaW4iIHN0eWxlPSJib3gtc2l6aW5n +OiBib3JkZXItYm94OyI+5Ye65YWl5bqT5p+l6K+i5re75Yqg5aSH5rOo5p+l6K+iPC9zcGFuPjwv +cD48L2xpPjxsaSAgY2lkPSJuODAiIGNsYXNzPSJtZC1saXN0LWl0ZW0iIG1kdHlwZT0ibGlzdF9p +dGVtIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBvc2l0aW9u +OiByZWxhdGl2ZTsiPjxwICBjaWQ9Im44MSIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1wIiBtZHR5 +cGU9InBhcmFncmFwaCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGxpbmUtaGVpZ2h0 +OiBpbmhlcml0OyBtYXJnaW46IDBweCAwcHggMC41cmVtOyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7 +IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxzcGFuICBjbGFzcz0ibWQtcGxhaW4iIG1kLWlubGluZT0i +cGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+5p+l6K+i5Y+v55So5bqT5a2Y +55qE5o6l5Y+j5o6S6Zmk5aeU5aSW5LuTPC9zcGFuPjwvcD48L2xpPjxsaSAgY2lkPSJuODIiIGNs +YXNzPSJtZC1saXN0LWl0ZW0iIG1kdHlwZT0ibGlzdF9pdGVtIiBzdHlsZT0iYm94LXNpemluZzog +Ym9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxwICBjaWQ9Im44 +MyIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1wIiBtZHR5cGU9InBhcmFncmFwaCIgc3R5bGU9ImJv +eC1zaXppbmc6IGJvcmRlci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhlcml0OyBtYXJnaW46IDBweCAw +cHggMC41cmVtOyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxz +cGFuICBjbGFzcz0ibWQtcGxhaW4iIG1kLWlubGluZT0icGxhaW4iIHN0eWxlPSJib3gtc2l6aW5n +OiBib3JkZXItYm94OyI+5Ye65YWl5bqT5Y2V5o2u5piO57uG5p+l6K+iPC9zcGFuPjwvcD48L2xp +PjwvdWw+PHAgIGNpZD0ibjI3IiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLXAiIG1kdHlwZT0icGFy +YWdyYXBoIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGluaGVy +aXQ7IG1hcmdpbjogMC44ZW0gMHB4OyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0aW9uOiBy +ZWxhdGl2ZTsgY29sb3I6IHJnYig1MSwgNTEsIDUxKTsgZm9udC1mYW1pbHk6ICdPcGVuIFNhbnMn +LCAnQ2xlYXIgU2FucycsICdIZWx2ZXRpY2EgTmV1ZScsIEhlbHZldGljYSwgQXJpYWwsICdTZWdv +ZSBVSSBFbW9qaScsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTZweDsgZm9udC1zdHlsZTogbm9y +bWFsOyBmb250LXZhcmlhbnQtbGlnYXR1cmVzOiBub3JtYWw7IGZvbnQtdmFyaWFudC1jYXBzOiBu +b3JtYWw7IGZvbnQtd2VpZ2h0OiA0MDA7IGxldHRlci1zcGFjaW5nOiBub3JtYWw7IHRleHQtYWxp +Z246IHN0YXJ0OyB0ZXh0LWluZGVudDogMHB4OyB0ZXh0LXRyYW5zZm9ybTogbm9uZTsgd29yZC1z +cGFjaW5nOiAwcHg7IHRleHQtZGVjb3JhdGlvbi10aGlja25lc3M6IGluaXRpYWw7IHRleHQtZGVj +b3JhdGlvbi1zdHlsZTogaW5pdGlhbDsgdGV4dC1kZWNvcmF0aW9uLWNvbG9yOiBpbml0aWFsOyI+ +PHNwYW4gIGNsYXNzPSJtZC1wbGFpbiIgbWQtaW5saW5lPSJwbGFpbiIgc3R5bGU9ImJveC1zaXpp +bmc6IGJvcmRlci1ib3g7IGZvbnQtd2VpZ2h0OiA3MDA7Ij4yMDI2LTA0LTAxPC9zcGFuPjwvcD48 +dWwgIGNpZD0ibjI4IiBjbGFzcz0idWwtbGlzdCIgZGF0YS1tYXJrPSItIiBtZHR5cGU9Imxpc3Qi +IHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDAuOGVtIDBweDsgcGFkZGlu +Zy1sZWZ0OiAzMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7IGNvbG9yOiByZ2IoNTEsIDUxLCA1MSk7 +IGZvbnQtZmFtaWx5OiAnT3BlbiBTYW5zJywgJ0NsZWFyIFNhbnMnLCAnSGVsdmV0aWNhIE5ldWUn +LCBIZWx2ZXRpY2EsIEFyaWFsLCAnU2Vnb2UgVUkgRW1vamknLCBzYW5zLXNlcmlmOyBmb250LXNp +emU6IDE2cHg7IGZvbnQtc3R5bGU6IG5vcm1hbDsgZm9udC12YXJpYW50LWxpZ2F0dXJlczogbm9y +bWFsOyBmb250LXZhcmlhbnQtY2Fwczogbm9ybWFsOyBmb250LXdlaWdodDogNDAwOyBsZXR0ZXIt +c3BhY2luZzogbm9ybWFsOyB0ZXh0LWFsaWduOiBzdGFydDsgdGV4dC1pbmRlbnQ6IDBweDsgdGV4 +dC10cmFuc2Zvcm06IG5vbmU7IHdoaXRlLXNwYWNlOiBub3JtYWw7IHdvcmQtc3BhY2luZzogMHB4 +OyB0ZXh0LWRlY29yYXRpb24tdGhpY2tuZXNzOiBpbml0aWFsOyB0ZXh0LWRlY29yYXRpb24tc3R5 +bGU6IGluaXRpYWw7IHRleHQtZGVjb3JhdGlvbi1jb2xvcjogaW5pdGlhbDsiPjxsaSAgY2lkPSJu +MjkiIGNsYXNzPSJtZC1saXN0LWl0ZW0iIG1kdHlwZT0ibGlzdF9pdGVtIiBzdHlsZT0iYm94LXNp +emluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxwICBj +aWQ9Im4zMCIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1wIiBtZHR5cGU9InBhcmFncmFwaCIgc3R5 +bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhlcml0OyBtYXJnaW46 +IDBweCAwcHggMC41cmVtOyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0aW9uOiByZWxhdGl2 +ZTsiPjxzcGFuICBjbGFzcz0ibWQtcGxhaW4iIG1kLWlubGluZT0icGxhaW4iIHN0eWxlPSJib3gt +c2l6aW5nOiBib3JkZXItYm94OyI+5Ye65YWl5bqT5Y2V5o2u5piO57uG5byA5Y+RPC9zcGFuPjwv +cD48L2xpPjwvdWw+PHAgIGNpZD0ibjMzIiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLXAiIG1kdHlw +ZT0icGFyYWdyYXBoIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6 +IGluaGVyaXQ7IG1hcmdpbjogMC44ZW0gMHB4OyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0 +aW9uOiByZWxhdGl2ZTsgY29sb3I6IHJnYig1MSwgNTEsIDUxKTsgZm9udC1mYW1pbHk6ICdPcGVu +IFNhbnMnLCAnQ2xlYXIgU2FucycsICdIZWx2ZXRpY2EgTmV1ZScsIEhlbHZldGljYSwgQXJpYWws +ICdTZWdvZSBVSSBFbW9qaScsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTZweDsgZm9udC1zdHls +ZTogbm9ybWFsOyBmb250LXZhcmlhbnQtbGlnYXR1cmVzOiBub3JtYWw7IGZvbnQtdmFyaWFudC1j +YXBzOiBub3JtYWw7IGZvbnQtd2VpZ2h0OiA0MDA7IGxldHRlci1zcGFjaW5nOiBub3JtYWw7IHRl +eHQtYWxpZ246IHN0YXJ0OyB0ZXh0LWluZGVudDogMHB4OyB0ZXh0LXRyYW5zZm9ybTogbm9uZTsg +d29yZC1zcGFjaW5nOiAwcHg7IHRleHQtZGVjb3JhdGlvbi10aGlja25lc3M6IGluaXRpYWw7IHRl +eHQtZGVjb3JhdGlvbi1zdHlsZTogaW5pdGlhbDsgdGV4dC1kZWNvcmF0aW9uLWNvbG9yOiBpbml0 +aWFsOyI+PHNwYW4gIGNsYXNzPSJtZC1wbGFpbiIgbWQtaW5saW5lPSJwbGFpbiIgc3R5bGU9ImJv +eC1zaXppbmc6IGJvcmRlci1ib3g7IGZvbnQtd2VpZ2h0OiA3MDA7Ij4yMDI2LTA0LTAyPC9zcGFu +PjwvcD48dWwgIGNpZD0ibjM0IiBjbGFzcz0idWwtbGlzdCIgZGF0YS1tYXJrPSItIiBtZHR5cGU9 +Imxpc3QiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDAuOGVtIDBweDsg +cGFkZGluZy1sZWZ0OiAzMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7IGNvbG9yOiByZ2IoNTEsIDUx +LCA1MSk7IGZvbnQtZmFtaWx5OiAnT3BlbiBTYW5zJywgJ0NsZWFyIFNhbnMnLCAnSGVsdmV0aWNh +IE5ldWUnLCBIZWx2ZXRpY2EsIEFyaWFsLCAnU2Vnb2UgVUkgRW1vamknLCBzYW5zLXNlcmlmOyBm +b250LXNpemU6IDE2cHg7IGZvbnQtc3R5bGU6IG5vcm1hbDsgZm9udC12YXJpYW50LWxpZ2F0dXJl +czogbm9ybWFsOyBmb250LXZhcmlhbnQtY2Fwczogbm9ybWFsOyBmb250LXdlaWdodDogNDAwOyBs +ZXR0ZXItc3BhY2luZzogbm9ybWFsOyB0ZXh0LWFsaWduOiBzdGFydDsgdGV4dC1pbmRlbnQ6IDBw +eDsgdGV4dC10cmFuc2Zvcm06IG5vbmU7IHdoaXRlLXNwYWNlOiBub3JtYWw7IHdvcmQtc3BhY2lu +ZzogMHB4OyB0ZXh0LWRlY29yYXRpb24tdGhpY2tuZXNzOiBpbml0aWFsOyB0ZXh0LWRlY29yYXRp +b24tc3R5bGU6IGluaXRpYWw7IHRleHQtZGVjb3JhdGlvbi1jb2xvcjogaW5pdGlhbDsiPjxsaSAg +Y2lkPSJuMzUiIGNsYXNzPSJtZC1saXN0LWl0ZW0iIG1kdHlwZT0ibGlzdF9pdGVtIiBzdHlsZT0i +Ym94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsi +PjxwICBjaWQ9Im4zNiIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1wIiBtZHR5cGU9InBhcmFncmFw +aCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhlcml0OyBt +YXJnaW46IDBweCAwcHggMC41cmVtOyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0aW9uOiBy +ZWxhdGl2ZTsiPjxzcGFuICBjbGFzcz0ibWQtcGxhaW4iIG1kLWlubGluZT0icGxhaW4iIHN0eWxl +PSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+5oCn6IO95LyY5YyWPC9zcGFuPjwvcD48L2xpPjxs +aSAgY2lkPSJuOTUiIGNsYXNzPSJtZC1saXN0LWl0ZW0iIG1kdHlwZT0ibGlzdF9pdGVtIiBzdHls +ZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBvc2l0aW9uOiByZWxhdGl2 +ZTsiPjxwICBjaWQ9Im45NiIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1wIiBtZHR5cGU9InBhcmFn +cmFwaCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhlcml0 +OyBtYXJnaW46IDBweCAwcHggMC41cmVtOyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0aW9u +OiByZWxhdGl2ZTsiPjxzcGFuICBjbGFzcz0ibWQtcGxhaW4iIG1kLWlubGluZT0icGxhaW4iIHN0 +eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+5byC5q2l5a+85Ye6PC9zcGFuPjwvcD48L2xp +PjxsaSAgY2lkPSJuOTciIGNsYXNzPSJtZC1saXN0LWl0ZW0iIG1kdHlwZT0ibGlzdF9pdGVtIiBz +dHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBvc2l0aW9uOiByZWxh +dGl2ZTsiPjxwICBjaWQ9Im45OCIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1wIiBtZHR5cGU9InBh +cmFncmFwaCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhl +cml0OyBtYXJnaW46IDBweCAwcHggMC41cmVtOyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0 +aW9uOiByZWxhdGl2ZTsiPjxzcGFuICBjbGFzcz0ibWQtcGxhaW4iIG1kLWlubGluZT0icGxhaW4i +IHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+5paw5aKe5bCP5pWw5L2N5pWwIOWNleS9 +jeeyvuW6puaOp+WItjwvc3Bhbj48L3A+PC9saT48bGkgIGNpZD0ibjk5IiBjbGFzcz0ibWQtbGlz +dC1pdGVtIG1kLWZvY3VzLWNvbnRhaW5lciIgbWR0eXBlPSJsaXN0X2l0ZW0iIHN0eWxlPSJib3gt +c2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHAg +IGNpZD0ibjEwMCIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1wIG1kLWZvY3VzIiBtZHR5cGU9InBh +cmFncmFwaCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhl +cml0OyBtYXJnaW46IDBweCAwcHggMC41cmVtOyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0 +aW9uOiByZWxhdGl2ZTsiPjxzcGFuICBjbGFzcz0ibWQtcGxhaW4gbWQtZXhwYW5kIiBtZC1pbmxp +bmU9InBsYWluIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPuWHuuWFpeW6k+WFs+iB +lOWuouaIt+aIluiAheS+m+W6lOWVhuWIpOaWrTwvc3Bhbj48L3A+PC9saT48bGkgIGNpZD0ibjEw +MSIgY2xhc3M9Im1kLWxpc3QtaXRlbSIgbWR0eXBlPSJsaXN0X2l0ZW0iIHN0eWxlPSJib3gtc2l6 +aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHAgIGNp +ZD0ibjEwMiIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1wIiBtZHR5cGU9InBhcmFncmFwaCIgc3R5 +bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhlcml0OyBtYXJnaW46 +IDBweCAwcHggMC41cmVtOyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0aW9uOiByZWxhdGl2 +ZTsiPjxzcGFuICBjbGFzcz0ibWQtcGxhaW4iIG1kLWlubGluZT0icGxhaW4iIHN0eWxlPSJib3gt +c2l6aW5nOiBib3JkZXItYm94OyI+5Ye65YWl5bqT5Y2V5o2u5piO57uG5p+l6K+i6Ieq5rWL6IGU +6LCDPC9zcGFuPjwvcD48L2xpPjwvdWw+PHAgIGNpZD0ibjM5IiBjbGFzcz0ibWQtZW5kLWJsb2Nr +IG1kLXAiIG1kdHlwZT0icGFyYWdyYXBoIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsg +bGluZS1oZWlnaHQ6IGluaGVyaXQ7IG1hcmdpbjogMC44ZW0gMHB4OyB3aGl0ZS1zcGFjZTogcHJl +LXdyYXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsgY29sb3I6IHJnYig1MSwgNTEsIDUxKTsgZm9udC1m +YW1pbHk6ICdPcGVuIFNhbnMnLCAnQ2xlYXIgU2FucycsICdIZWx2ZXRpY2EgTmV1ZScsIEhlbHZl +dGljYSwgQXJpYWwsICdTZWdvZSBVSSBFbW9qaScsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTZw +eDsgZm9udC1zdHlsZTogbm9ybWFsOyBmb250LXZhcmlhbnQtbGlnYXR1cmVzOiBub3JtYWw7IGZv +bnQtdmFyaWFudC1jYXBzOiBub3JtYWw7IGZvbnQtd2VpZ2h0OiA0MDA7IGxldHRlci1zcGFjaW5n +OiBub3JtYWw7IHRleHQtYWxpZ246IHN0YXJ0OyB0ZXh0LWluZGVudDogMHB4OyB0ZXh0LXRyYW5z +Zm9ybTogbm9uZTsgd29yZC1zcGFjaW5nOiAwcHg7IHRleHQtZGVjb3JhdGlvbi10aGlja25lc3M6 +IGluaXRpYWw7IHRleHQtZGVjb3JhdGlvbi1zdHlsZTogaW5pdGlhbDsgdGV4dC1kZWNvcmF0aW9u +LWNvbG9yOiBpbml0aWFsOyI+PHNwYW4gIGNsYXNzPSJtZC1wbGFpbiIgbWQtaW5saW5lPSJwbGFp +biIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGZvbnQtd2VpZ2h0OiA3MDA7Ij4yMDI2 +LTA0LTAzPC9zcGFuPjwvcD48dWwgIGNpZD0ibjQwIiBjbGFzcz0idWwtbGlzdCIgZGF0YS1tYXJr +PSItIiBtZHR5cGU9Imxpc3QiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46 +IDAuOGVtIDBweDsgcGFkZGluZy1sZWZ0OiAzMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7IGNvbG9y +OiByZ2IoNTEsIDUxLCA1MSk7IGZvbnQtZmFtaWx5OiAnT3BlbiBTYW5zJywgJ0NsZWFyIFNhbnMn +LCAnSGVsdmV0aWNhIE5ldWUnLCBIZWx2ZXRpY2EsIEFyaWFsLCAnU2Vnb2UgVUkgRW1vamknLCBz +YW5zLXNlcmlmOyBmb250LXNpemU6IDE2cHg7IGZvbnQtc3R5bGU6IG5vcm1hbDsgZm9udC12YXJp +YW50LWxpZ2F0dXJlczogbm9ybWFsOyBmb250LXZhcmlhbnQtY2Fwczogbm9ybWFsOyBmb250LXdl +aWdodDogNDAwOyBsZXR0ZXItc3BhY2luZzogbm9ybWFsOyB0ZXh0LWFsaWduOiBzdGFydDsgdGV4 +dC1pbmRlbnQ6IDBweDsgdGV4dC10cmFuc2Zvcm06IG5vbmU7IHdoaXRlLXNwYWNlOiBub3JtYWw7 +IHdvcmQtc3BhY2luZzogMHB4OyB0ZXh0LWRlY29yYXRpb24tdGhpY2tuZXNzOiBpbml0aWFsOyB0 +ZXh0LWRlY29yYXRpb24tc3R5bGU6IGluaXRpYWw7IHRleHQtZGVjb3JhdGlvbi1jb2xvcjogaW5p +dGlhbDsiPjxsaSAgY2lkPSJuNDEiIGNsYXNzPSJtZC1saXN0LWl0ZW0iIG1kdHlwZT0ibGlzdF9p +dGVtIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBvc2l0aW9u +OiByZWxhdGl2ZTsiPjxwICBjaWQ9Im40MiIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1wIiBtZHR5 +cGU9InBhcmFncmFwaCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGxpbmUtaGVpZ2h0 +OiBpbmhlcml0OyBtYXJnaW46IDBweCAwcHggMC41cmVtOyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7 +IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxzcGFuICBjbGFzcz0ibWQtcGxhaW4iIG1kLWlubGluZT0i +cGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+6Ieq5Yqo5YWl5bqT562W55Wl +5qC35byP6LCD5pW0PC9zcGFuPjwvcD48L2xpPjxsaSAgY2lkPSJuMTEwIiBjbGFzcz0ibWQtbGlz +dC1pdGVtIiBtZHR5cGU9Imxpc3RfaXRlbSIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7 +IG1hcmdpbjogMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48cCAgY2lkPSJuMTExIiBjbGFzcz0i +bWQtZW5kLWJsb2NrIG1kLXAiIG1kdHlwZT0icGFyYWdyYXBoIiBzdHlsZT0iYm94LXNpemluZzog +Ym9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IG1hcmdpbjogMHB4IDBweCAwLjVyZW07 +IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHNwYW4gIGNsYXNz +PSJtZC1wbGFpbiIgbWQtaW5saW5lPSJwbGFpbiIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1i +b3g7Ij7lt6Xluo/lp5TlpJboh6rliqjlhaXlupPpgLvovpHosIPmlbQ8L3NwYW4+PC9wPjwvbGk+ +PGxpICBjaWQ9Im4xMTIiIGNsYXNzPSJtZC1saXN0LWl0ZW0iIG1kdHlwZT0ibGlzdF9pdGVtIiBz +dHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBvc2l0aW9uOiByZWxh +dGl2ZTsiPjxwICBjaWQ9Im4xMTMiIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCIgbWR0eXBlPSJw +YXJhZ3JhcGgiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5o +ZXJpdDsgbWFyZ2luOiAwcHggMHB4IDAuNXJlbTsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyBwb3Np +dGlvbjogcmVsYXRpdmU7Ij48c3BhbiAgY2xhc3M9Im1kLXBsYWluIiBtZC1pbmxpbmU9InBsYWlu +IiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPuWNleaNruafpeivouiHqua1i+WSjOWv +vOWHuuS8mOWMljwvc3Bhbj48L3A+PC9saT48L3VsPjxoMyAgY2lkPSJuNDkiIGNsYXNzPSJtZC1l +bmQtYmxvY2sgbWQtaGVhZGluZyIgbWR0eXBlPSJoZWFkaW5nIiBzdHlsZT0iYm94LXNpemluZzog +Ym9yZGVyLWJveDsgYnJlYWstYWZ0ZXI6IGF2b2lkLXBhZ2U7IGJyZWFrLWluc2lkZTogYXZvaWQ7 +IGZvbnQtc2l6ZTogMS41ZW07IG1hcmdpbi10b3A6IDFyZW07IG1hcmdpbi1ib3R0b206IDFyZW07 +IHBvc2l0aW9uOiByZWxhdGl2ZTsgZm9udC13ZWlnaHQ6IDcwMDsgd2hpdGUtc3BhY2U6IHByZS13 +cmFwOyBjb2xvcjogcmdiKDUxLCA1MSwgNTEpOyBmb250LWZhbWlseTogJ09wZW4gU2FucycsICdD +bGVhciBTYW5zJywgJ0hlbHZldGljYSBOZXVlJywgSGVsdmV0aWNhLCBBcmlhbCwgJ1NlZ29lIFVJ +IEVtb2ppJywgc2Fucy1zZXJpZjsgZm9udC1zdHlsZTogbm9ybWFsOyBmb250LXZhcmlhbnQtbGln +YXR1cmVzOiBub3JtYWw7IGZvbnQtdmFyaWFudC1jYXBzOiBub3JtYWw7IGxldHRlci1zcGFjaW5n +OiBub3JtYWw7IHRleHQtYWxpZ246IHN0YXJ0OyB0ZXh0LWluZGVudDogMHB4OyB0ZXh0LXRyYW5z +Zm9ybTogbm9uZTsgd29yZC1zcGFjaW5nOiAwcHg7IHRleHQtZGVjb3JhdGlvbi10aGlja25lc3M6 +IGluaXRpYWw7IHRleHQtZGVjb3JhdGlvbi1zdHlsZTogaW5pdGlhbDsgdGV4dC1kZWNvcmF0aW9u +LWNvbG9yOiBpbml0aWFsOyI+PHNwYW4gIGNsYXNzPSJtZC1wbGFpbiIgbWQtaW5saW5lPSJwbGFp +biIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGZvbnQtd2VpZ2h0OiA3MDA7Ij7kuIvl +kajph43ngrnku7vliqE8L3NwYW4+PC9oMz48dWwgIGNpZD0ibjUwIiBjbGFzcz0idWwtbGlzdCIg +ZGF0YS1tYXJrPSItIiBtZHR5cGU9Imxpc3QiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94 +OyBtYXJnaW46IDAuOGVtIDBweDsgcGFkZGluZy1sZWZ0OiAzMHB4OyBwb3NpdGlvbjogcmVsYXRp +dmU7IGNvbG9yOiByZ2IoNTEsIDUxLCA1MSk7IGZvbnQtZmFtaWx5OiAnT3BlbiBTYW5zJywgJ0Ns +ZWFyIFNhbnMnLCAnSGVsdmV0aWNhIE5ldWUnLCBIZWx2ZXRpY2EsIEFyaWFsLCAnU2Vnb2UgVUkg +RW1vamknLCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDE2cHg7IGZvbnQtc3R5bGU6IG5vcm1hbDsg +Zm9udC12YXJpYW50LWxpZ2F0dXJlczogbm9ybWFsOyBmb250LXZhcmlhbnQtY2Fwczogbm9ybWFs +OyBmb250LXdlaWdodDogNDAwOyBsZXR0ZXItc3BhY2luZzogbm9ybWFsOyB0ZXh0LWFsaWduOiBz +dGFydDsgdGV4dC1pbmRlbnQ6IDBweDsgdGV4dC10cmFuc2Zvcm06IG5vbmU7IHdoaXRlLXNwYWNl +OiBub3JtYWw7IHdvcmQtc3BhY2luZzogMHB4OyB0ZXh0LWRlY29yYXRpb24tdGhpY2tuZXNzOiBp +bml0aWFsOyB0ZXh0LWRlY29yYXRpb24tc3R5bGU6IGluaXRpYWw7IHRleHQtZGVjb3JhdGlvbi1j +b2xvcjogaW5pdGlhbDsiPjxsaSAgY2lkPSJuNTEiIGNsYXNzPSJtZC1saXN0LWl0ZW0iIG1kdHlw +ZT0ibGlzdF9pdGVtIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7 +IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxwICBjaWQ9Im41MiIgY2xhc3M9Im1kLWVuZC1ibG9jayBt +ZC1wIiBtZHR5cGU9InBhcmFncmFwaCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGxp +bmUtaGVpZ2h0OiBpbmhlcml0OyBtYXJnaW46IDBweCAwcHggMC41cmVtOyB3aGl0ZS1zcGFjZTog +cHJlLXdyYXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxzcGFuICBjbGFzcz0ibWQtcGxhaW4iIG1k +LWlubGluZT0icGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+NS40Ljcg54mI +5pys5byA5Y+RPC9zcGFuPjwvcD48L2xpPjwvdWw+PGRpdiA+PGRpdiAgc3R5bGU9ImNsZWFyOiBi +b3RoOyBmb250LWZhbWlseTogVGFob21hLCBBcmlhbCwgU1RIZWl0aVNDLUxpZ2h0LCBTaW1TdW47 +Ij48c3BhbiA+PGJyID48L3NwYW4+PC9kaXY+PGRpdiAgc3R5bGU9ImNsZWFyOiBib3RoOyI+PGRp +diAgY2xhc3M9IiBfX2FsaXl1bl9ub2RlX2hhc19jb2xvciIgc3R5bGU9Im1hcmdpbjogMHB4OyBw +YWRkaW5nOiAwcHg7IGJvcmRlcjogMHB4OyBvdXRsaW5lOiAwcHg7IGNvbG9yOiByZ2IoMCwgMCwg +MCk7IGZvbnQtZmFtaWx5OiBUYWhvbWEsIEFyaWFsLCBTVEhlaXRpLCBTaW1TdW47IGZvbnQtc2l6 +ZTogMTRweDsgZm9udC1zdHlsZTogbm9ybWFsOyBmb250LXZhcmlhbnQtbGlnYXR1cmVzOiBub3Jt +YWw7IGZvbnQtdmFyaWFudC1jYXBzOiBub3JtYWw7IGZvbnQtd2VpZ2h0OiA0MDA7IHRleHQtYWxp +Z246IHN0YXJ0OyB0ZXh0LWluZGVudDogMHB4OyB0ZXh0LXRyYW5zZm9ybTogbm9uZTsgdGV4dC1k +ZWNvcmF0aW9uLXRoaWNrbmVzczogaW5pdGlhbDsgdGV4dC1kZWNvcmF0aW9uLXN0eWxlOiBpbml0 +aWFsOyB0ZXh0LWRlY29yYXRpb24tY29sb3I6IGluaXRpYWw7IGNsZWFyOiBib3RoOyI+PHNwYW4g +IGNsYXNzPSIgX19hbGl5dW5fbm9kZV9oYXNfY29sb3IiIHN0eWxlPSJtYXJnaW46IDBweDsgcGFk +ZGluZzogMHB4OyBib3JkZXI6IDBweDsgb3V0bGluZTogMHB4OyBmb250LWZhbWlseTogJ01pY3Jv +c29mdCBZYWhlaSc7IGZvbnQtc2l6ZTogMTNweDsgY29sb3I6IHJnYigxOTEsIDE5MSwgMTkxKTsi +PkJlc3QgcmVnYXJkcyw8L3NwYW4+PC9kaXY+PGRpdiAgY2xhc3M9IiBfX2FsaXl1bl9ub2RlX2hh +c19jb2xvciIgc3R5bGU9Im1hcmdpbjogMHB4OyBwYWRkaW5nOiAwcHg7IGJvcmRlcjogMHB4OyBv +dXRsaW5lOiAwcHg7IGNvbG9yOiByZ2IoMCwgMCwgMCk7IGZvbnQtZmFtaWx5OiBUYWhvbWEsIEFy +aWFsLCBTVEhlaXRpLCBTaW1TdW47IGZvbnQtc2l6ZTogMTRweDsgZm9udC1zdHlsZTogbm9ybWFs +OyBmb250LXZhcmlhbnQtbGlnYXR1cmVzOiBub3JtYWw7IGZvbnQtdmFyaWFudC1jYXBzOiBub3Jt +YWw7IGZvbnQtd2VpZ2h0OiA0MDA7IHRleHQtYWxpZ246IHN0YXJ0OyB0ZXh0LWluZGVudDogMHB4 +OyB0ZXh0LXRyYW5zZm9ybTogbm9uZTsgdGV4dC1kZWNvcmF0aW9uLXRoaWNrbmVzczogaW5pdGlh +bDsgdGV4dC1kZWNvcmF0aW9uLXN0eWxlOiBpbml0aWFsOyB0ZXh0LWRlY29yYXRpb24tY29sb3I6 +IGluaXRpYWw7IGNsZWFyOiBib3RoOyI+PHNwYW4gIGNsYXNzPSIgX19hbGl5dW5fbm9kZV9oYXNf +Y29sb3IiIHN0eWxlPSJtYXJnaW46IDBweDsgcGFkZGluZzogMHB4OyBib3JkZXI6IDBweDsgb3V0 +bGluZTogMHB4OyBmb250LWZhbWlseTogJ01pY3Jvc29mdCBZYWhlaSc7IGZvbnQtc2l6ZTogMTNw +eDsgY29sb3I6IHJnYigxOTEsIDE5MSwgMTkxKTsiPuadqOi9qTwvc3Bhbj48L2Rpdj48ZGl2ICBj +bGFzcz0iIF9fYWxpeXVuX25vZGVfaGFzX2NvbG9yIiBzdHlsZT0ibWFyZ2luOiAwcHg7IHBhZGRp +bmc6IDBweDsgYm9yZGVyOiAwcHg7IG91dGxpbmU6IDBweDsgY29sb3I6IHJnYigwLCAwLCAwKTsg +Zm9udC1mYW1pbHk6IFRhaG9tYSwgQXJpYWwsIFNUSGVpdGksIFNpbVN1bjsgZm9udC1zaXplOiAx +NHB4OyBmb250LXN0eWxlOiBub3JtYWw7IGZvbnQtdmFyaWFudC1saWdhdHVyZXM6IG5vcm1hbDsg +Zm9udC12YXJpYW50LWNhcHM6IG5vcm1hbDsgZm9udC13ZWlnaHQ6IDQwMDsgdGV4dC1hbGlnbjog +c3RhcnQ7IHRleHQtaW5kZW50OiAwcHg7IHRleHQtdHJhbnNmb3JtOiBub25lOyB0ZXh0LWRlY29y +YXRpb24tdGhpY2tuZXNzOiBpbml0aWFsOyB0ZXh0LWRlY29yYXRpb24tc3R5bGU6IGluaXRpYWw7 +IHRleHQtZGVjb3JhdGlvbi1jb2xvcjogaW5pdGlhbDsgY2xlYXI6IGJvdGg7Ij48aW1nICBkYXRh +LWFsaW1haWwtaW1nLXByb2Nlc3NlZC1zcW0tZWRpdG9yPSJ0cnVlIiBoZWlnaHQ9IjY4IiBzcmM9 +ImNpZDpfX2FsaXl1bjE3NzUyMDY5NzEwMzg1ODI2MSIgd2lkdGg9IjMwMCIgc3R5bGU9Im1hcmdp +bjogMHB4OyBwYWRkaW5nOiAwcHg7IGJvcmRlcjogMHB4OyBvdXRsaW5lOiAwcHg7IHZlcnRpY2Fs +LWFsaWduOiBib3R0b207Ij4mbmJzcDs8L2Rpdj48ZGl2ICBjbGFzcz0iIF9fYWxpeXVuX25vZGVf +aGFzX2NvbG9yIiBzdHlsZT0ibWFyZ2luOiAwcHg7IHBhZGRpbmc6IDBweDsgYm9yZGVyOiAwcHg7 +IG91dGxpbmU6IDBweDsgY29sb3I6IHJnYigwLCAwLCAwKTsgZm9udC1mYW1pbHk6IFRhaG9tYSwg +QXJpYWwsIFNUSGVpdGksIFNpbVN1bjsgZm9udC1zaXplOiAxNHB4OyBmb250LXN0eWxlOiBub3Jt +YWw7IGZvbnQtdmFyaWFudC1saWdhdHVyZXM6IG5vcm1hbDsgZm9udC12YXJpYW50LWNhcHM6IG5v +cm1hbDsgZm9udC13ZWlnaHQ6IDQwMDsgdGV4dC1hbGlnbjogc3RhcnQ7IHRleHQtaW5kZW50OiAw +cHg7IHRleHQtdHJhbnNmb3JtOiBub25lOyB0ZXh0LWRlY29yYXRpb24tdGhpY2tuZXNzOiBpbml0 +aWFsOyB0ZXh0LWRlY29yYXRpb24tc3R5bGU6IGluaXRpYWw7IHRleHQtZGVjb3JhdGlvbi1jb2xv +cjogaW5pdGlhbDsgY2xlYXI6IGJvdGg7Ij48c3BhbiAgY2xhc3M9IiBfX2FsaXl1bl9ub2RlX2hh +c19jb2xvciIgc3R5bGU9Im1hcmdpbjogMHB4OyBwYWRkaW5nOiAwcHg7IGJvcmRlcjogMHB4OyBv +dXRsaW5lOiAwcHg7IGZvbnQtZmFtaWx5OiAnTWljcm9zb2Z0IFlhaGVpJzsgY29sb3I6IHJnYigx +OTEsIDE5MSwgMTkxKTsiPuWcsOWdgO+8muS4reWbvcK35Y2X5Lqs6L2v5Lu26LC36L2v5Lu25aSn +6YGTMTHlj7foirHnpZ7lpKfljqYzRjwvc3Bhbj48L2Rpdj48ZGl2ICBjbGFzcz0iIF9fYWxpeXVu +X25vZGVfaGFzX2NvbG9yIiBzdHlsZT0ibWFyZ2luOiAwcHg7IHBhZGRpbmc6IDBweDsgYm9yZGVy +OiAwcHg7IG91dGxpbmU6IDBweDsgY29sb3I6IHJnYigwLCAwLCAwKTsgZm9udC1mYW1pbHk6IFRh +aG9tYSwgQXJpYWwsIFNUSGVpdGksIFNpbVN1bjsgZm9udC1zaXplOiAxNHB4OyBmb250LXN0eWxl +OiBub3JtYWw7IGZvbnQtdmFyaWFudC1saWdhdHVyZXM6IG5vcm1hbDsgZm9udC12YXJpYW50LWNh +cHM6IG5vcm1hbDsgZm9udC13ZWlnaHQ6IDQwMDsgdGV4dC1hbGlnbjogc3RhcnQ7IHRleHQtaW5k +ZW50OiAwcHg7IHRleHQtdHJhbnNmb3JtOiBub25lOyB0ZXh0LWRlY29yYXRpb24tdGhpY2tuZXNz +OiBpbml0aWFsOyB0ZXh0LWRlY29yYXRpb24tc3R5bGU6IGluaXRpYWw7IHRleHQtZGVjb3JhdGlv +bi1jb2xvcjogaW5pdGlhbDsgY2xlYXI6IGJvdGg7Ij48c3BhbiAgY2xhc3M9IiBfX2FsaXl1bl9u +b2RlX2hhc19jb2xvciIgc3R5bGU9Im1hcmdpbjogMHB4OyBwYWRkaW5nOiAwcHg7IGJvcmRlcjog +MHB4OyBvdXRsaW5lOiAwcHg7IGZvbnQtZmFtaWx5OiAnTWljcm9zb2Z0IFlhaGVpJzsgY29sb3I6 +IHJnYigxOTEsIDE5MSwgMTkxKTsiPuaJi+acuu+8mjE4NzI2MTI4NDg5PC9zcGFuPjwvZGl2Pjxk +aXYgIGNsYXNzPSIgX19hbGl5dW5fbm9kZV9oYXNfY29sb3IiIHN0eWxlPSJtYXJnaW46IDBweDsg +cGFkZGluZzogMHB4OyBib3JkZXI6IDBweDsgb3V0bGluZTogMHB4OyBjb2xvcjogcmdiKDAsIDAs +IDApOyBmb250LWZhbWlseTogVGFob21hLCBBcmlhbCwgU1RIZWl0aSwgU2ltU3VuOyBmb250LXNp +emU6IDE0cHg7IGZvbnQtc3R5bGU6IG5vcm1hbDsgZm9udC12YXJpYW50LWxpZ2F0dXJlczogbm9y +bWFsOyBmb250LXZhcmlhbnQtY2Fwczogbm9ybWFsOyBmb250LXdlaWdodDogNDAwOyB0ZXh0LWFs +aWduOiBzdGFydDsgdGV4dC1pbmRlbnQ6IDBweDsgdGV4dC10cmFuc2Zvcm06IG5vbmU7IHRleHQt +ZGVjb3JhdGlvbi10aGlja25lc3M6IGluaXRpYWw7IHRleHQtZGVjb3JhdGlvbi1zdHlsZTogaW5p +dGlhbDsgdGV4dC1kZWNvcmF0aW9uLWNvbG9yOiBpbml0aWFsOyBjbGVhcjogYm90aDsiPjxzcGFu +ICBjbGFzcz0iIF9fYWxpeXVuX25vZGVfaGFzX2NvbG9yIiBzdHlsZT0ibWFyZ2luOiAwcHg7IHBh +ZGRpbmc6IDBweDsgYm9yZGVyOiAwcHg7IG91dGxpbmU6IDBweDsgZm9udC1mYW1pbHk6ICdNaWNy +b3NvZnQgWWFoZWknOyBjb2xvcjogcmdiKDE5MSwgMTkxLCAxOTEpOyI+6YKu566x77yaeWFuZ3h1 +YW5Ad2l0c29mdC5jbjwvc3Bhbj48L2Rpdj48L2Rpdj48L2Rpdj48ZGl2ID48YnIgPjwvZGl2Pjxw +ICBjaWQ9Im4yIiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLXAiIG1kdHlwZT0icGFyYWdyYXBoIiBz +dHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IG1hcmdp +bjogMC44ZW0gMHB4OyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsg +Y29sb3I6IHJnYig1MSwgNTEsIDUxKTsgZm9udC1mYW1pbHk6ICdPcGVuIFNhbnMnLCAnQ2xlYXIg +U2FucycsICdIZWx2ZXRpY2EgTmV1ZScsIEhlbHZldGljYSwgQXJpYWwsICdTZWdvZSBVSSBFbW9q +aScsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTZweDsgZm9udC1zdHlsZTogbm9ybWFsOyBmb250 +LXZhcmlhbnQtbGlnYXR1cmVzOiBub3JtYWw7IGZvbnQtdmFyaWFudC1jYXBzOiBub3JtYWw7IGZv +bnQtd2VpZ2h0OiA0MDA7IGxldHRlci1zcGFjaW5nOiBub3JtYWw7IHRleHQtYWxpZ246IHN0YXJ0 +OyB0ZXh0LWluZGVudDogMHB4OyB0ZXh0LXRyYW5zZm9ybTogbm9uZTsgd29yZC1zcGFjaW5nOiAw +cHg7IHRleHQtZGVjb3JhdGlvbi10aGlja25lc3M6IGluaXRpYWw7IHRleHQtZGVjb3JhdGlvbi1z +dHlsZTogaW5pdGlhbDsgdGV4dC1kZWNvcmF0aW9uLWNvbG9yOiBpbml0aWFsOyI+PGJyID48L3A+ +PC9kaXY+PC9kaXY+PC9kaXY+ + +--=_mailmaster-6a18e4a4_0_74d_=-- + +--=_mailmaster-6a18e4a4_0_4dc8_= +Content-Type: application/octet-stream +Content-Transfer-Encoding: base64 +Content-ID: <__aliyun177520697103858261> +Content-Disposition: inline; + filename="=?utf-8?B?57u05ouT56eR5oqALemCruS7tuetvuWQjWxvZ28ucG5n?=" + +iVBORw0KGgoAAAANSUhEUgAAASwAAABECAYAAAA7rQj2AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJ +bWFnZVJlYWR5ccllPAAAA4RpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdp +bj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6 +eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTQ1IDc5LjE2 +MzQ5OSwgMjAxOC8wOC8xMy0xNjo0MDoyMiAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJo +dHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlw +dGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEu +MC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVz +b3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1N +Ok9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDplYjhjYzQwMy1lNzZjLTQ5NDgtODFmOC1kNDIy +MmRkMTdhYjgiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NkVENzExMzg1MzBEMTFFQTg4QjNF +NEJFMUQyRjc1RkIiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NkVENzExMzc1MzBEMTFFQTg4 +QjNFNEJFMUQyRjc1RkIiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTkg +KFdpbmRvd3MpIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6 +ZmNkNTdlM2UtZThjYS05ZjQ2LWEzZTUtMWJlYmE2NjA5Y2FmIiBzdFJlZjpkb2N1bWVudElEPSJh +ZG9iZTpkb2NpZDpwaG90b3Nob3A6MzZkNmNjNTUtNTY3Yi01MTQ2LWEwYWYtMzBlMzEwMTMxNDFk +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 + +--=_mailmaster-6a18e4a4_0_4dc8_=-- diff --git a/media/inbound/2026-04-03_1721_G5开发周报_2026-03-30_--_2026-04-03---5a895038-1884-4e49-a024-657bf2419dbd.eml b/media/inbound/2026-04-03_1721_G5开发周报_2026-03-30_--_2026-04-03---5a895038-1884-4e49-a024-657bf2419dbd.eml new file mode 100644 index 0000000..ad827be --- /dev/null +++ b/media/inbound/2026-04-03_1721_G5开发周报_2026-03-30_--_2026-04-03---5a895038-1884-4e49-a024-657bf2419dbd.eml @@ -0,0 +1,545 @@ +Date: Fri, 3 Apr 2026 17:21:37 +0800 +From: =?utf-8?B?5p2o6L2p?= +To: =?utf-8?B?5YiY5by6?= +Cc: =?utf-8?B?5bGI5paw6b6Z?= , =?utf-8?B?6ZmI5piO?= + , =?utf-8?B?5pu+6I6J?= +Message-ID: <53fadfca-4b2d-4128-b29a-94601b90264b.yangxuan@witsoft.cn> +In-Reply-To: +References: <4351C568-815B-42E0-A03D-100812C3A198@witsoft.cn> + <1dc0c9a6-7fdb-4bb4-9b8d-b10042d922f2.yangxuan@witsoft.cn> + <118cdc96-acf5-4a97-8eef-75319fd0e336.yangxuan@witsoft.cn> + <9f95f2c3-8860-4631-99a7-30f110eb3cee.yangxuan@witsoft.cn> + +Subject: =?utf-8?B?RzXlvIDlj5HlkajmiqXjgJAyMDI2LTAzLTMwIC0tICAyMDI2LTA0?= + =?utf-8?B?LTAz44CR?= +MIME-Version: 1.0 +Content-Type: multipart/related; boundary="=_mailmaster-6a18e4a4_0_66bb_=" + +--=_mailmaster-6a18e4a4_0_66bb_= +Content-Type: multipart/alternative; boundary="=_mailmaster-6a18e4a4_0_6443_=" + +--=_mailmaster-6a18e4a4_0_6443_= +Content-Type: text/plain; charset="UTF-8" +Content-Transfer-Encoding: base64 + +5oKo5aW977yB5Lul5LiL5piv5oiR5pys5ZGo55qE5bel5L2c5oC757uT5Y+K5LiL5ZGo6K6h5YiS +77yM6K+35a6h6ZiF44CCCuacrOWRqOW3peS9nOaAu+e7kwrkuIDjgIHph43ngrnlt6XkvZzlrozm +iJDmg4XlhrUKCiAqIApHNei/m+mUgOWtmCA1LjQuNyDniYjmnKzlvIDlj5EK5LqM44CB5bi46KeE +5bel5L2c5piO57uGCjIwMjYtMDMtMzAKCiAqIArlupPlrZjlvIDlj5HmlrnmoYjor4TlrqEKCiAq +IArlupPlrZjpnIDmsYLlvIDlj5EKMjAyNi0wMy0zMQoKICogCuWHuuWFpeW6k+afpeivoua3u+WK +oOWkh+azqOafpeivogoKICogCuafpeivouWPr+eUqOW6k+WtmOeahOaOpeWPo+aOkumZpOWnlOWk +luS7kwoKICogCuWHuuWFpeW6k+WNleaNruaYjue7huafpeivogoyMDI2LTA0LTAxCgogKiAK5Ye6 +5YWl5bqT5Y2V5o2u5piO57uG5byA5Y+RCjIwMjYtMDQtMDIKCiAqIArmgKfog73kvJjljJYKCiAq +IArlvILmraXlr7zlh7oKCiAqIArmlrDlop7lsI/mlbDkvY3mlbAg5Y2V5L2N57K+5bqm5o6n5Yi2 +CgogKiAK5Ye65YWl5bqT5YWz6IGU5a6i5oi35oiW6ICF5L6b5bqU5ZWG5Yik5patCgogKiAK5Ye6 +5YWl5bqT5Y2V5o2u5piO57uG5p+l6K+i6Ieq5rWL6IGU6LCDCjIwMjYtMDQtMDMKCiAqIAroh6rl +iqjlhaXlupPnrZbnlaXmoLflvI/osIPmlbQKCiAqIArlt6Xluo/lp5TlpJboh6rliqjlhaXlupPp +gLvovpHosIPmlbQKCiAqIArljZXmja7mn6Xor6Loh6rmtYvlkozlr7zlh7rkvJjljJYK5LiL5ZGo +6YeN54K55Lu75YqhCgogKiAKNS40Ljcg54mI5pys5byA5Y+RCkJlc3QgcmVnYXJkcywK5p2o6L2p +CuWcsOWdgO+8muS4reWbvcK35Y2X5Lqs6L2v5Lu26LC36L2v5Lu25aSn6YGTMTHlj7foirHnpZ7l +pKfljqYzRgrmiYvmnLrvvJoxODcyNjEyODQ4OQrpgq7nrrHvvJp5YW5neHVhbkB3aXRzb2Z0LmNu +Cg== + +--=_mailmaster-6a18e4a4_0_6443_= +Content-Type: text/html; charset="UTF-8" +Content-Transfer-Encoding: base64 + +PGRpdiBjbGFzcz0iX19hbGl5dW5fZW1haWxfYm9keV9ibG9jayI+PGRpdiAgc3R5bGU9ImZvbnQt +ZmFtaWx5OiBUYWhvbWEsIEFyaWFsLCBTVEhlaXRpU0MtTGlnaHQsIFNpbVN1biI+PGRpdiAgc3R5 +bGU9ImZvbnQtZmFtaWx5OiDlvq7ova/pm4Xpu5E7Ij48cCAgY2xhc3M9Im1kLWVuZC1ibG9jayBt +ZC1wIF9fYWxpeXVuX25vZGVfaGFzX2NvbG9yIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJv +eDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IG1hcmdpbjogMTJweCAwcHg7IHdoaXRlLXNwYWNlOiBw +cmUtd3JhcDsgcG9zaXRpb246IHJlbGF0aXZlOyBjb2xvcjogcmdiKDUxLCA1MSwgNTEpOyBmb250 +LWZhbWlseTogJ09wZW4gU2FucycsICdDbGVhciBTYW5zJywgJ0hlbHZldGljYSBOZXVlJywgSGVs +dmV0aWNhLCBBcmlhbCwgJ1NlZ29lIFVJIEVtb2ppJywgc2Fucy1zZXJpZjsgZm9udC1zaXplOiAx +NnB4OyBmb250LXN0eWxlOiBub3JtYWw7IGZvbnQtdmFyaWFudC1saWdhdHVyZXM6IG5vcm1hbDsg +Zm9udC12YXJpYW50LWNhcHM6IG5vcm1hbDsgZm9udC13ZWlnaHQ6IDQwMDsgbGV0dGVyLXNwYWNp +bmc6IG5vcm1hbDsgdGV4dC1hbGlnbjogc3RhcnQ7IHRleHQtaW5kZW50OiAwcHg7IHRleHQtdHJh +bnNmb3JtOiBub25lOyB3b3JkLXNwYWNpbmc6IDBweDsgdGV4dC1kZWNvcmF0aW9uLXRoaWNrbmVz +czogaW5pdGlhbDsgdGV4dC1kZWNvcmF0aW9uLXN0eWxlOiBpbml0aWFsOyB0ZXh0LWRlY29yYXRp +b24tY29sb3I6IGluaXRpYWw7Ij48c3BhbiAgY2xhc3M9Im1kLXBsYWluIG1kLWV4cGFuZCIgc3R5 +bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij7mgqjlpb3vvIHku6XkuIvmmK/miJHmnKzlkajn +moTlt6XkvZzmgLvnu5Plj4rkuIvlkajorqHliJLvvIzor7flrqHpmIXjgII8L3NwYW4+PC9wPjxo +MyAgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1oZWFkaW5nIF9fYWxpeXVuX25vZGVfaGFzX2NvbG9y +IiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgYnJlYWstYWZ0ZXI6IGF2b2lkLXBhZ2U7 +IGJyZWFrLWluc2lkZTogYXZvaWQ7IGZvbnQtc2l6ZTogMS41ZW07IG1hcmdpbi10b3A6IDFyZW07 +IG1hcmdpbi1ib3R0b206IDFyZW07IHBvc2l0aW9uOiByZWxhdGl2ZTsgZm9udC13ZWlnaHQ6IDcw +MDsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyBjb2xvcjogcmdiKDUxLCA1MSwgNTEpOyBmb250LWZh +bWlseTogJ09wZW4gU2FucycsICdDbGVhciBTYW5zJywgJ0hlbHZldGljYSBOZXVlJywgSGVsdmV0 +aWNhLCBBcmlhbCwgJ1NlZ29lIFVJIEVtb2ppJywgc2Fucy1zZXJpZjsgZm9udC1zdHlsZTogbm9y +bWFsOyBmb250LXZhcmlhbnQtbGlnYXR1cmVzOiBub3JtYWw7IGZvbnQtdmFyaWFudC1jYXBzOiBu +b3JtYWw7IGxldHRlci1zcGFjaW5nOiBub3JtYWw7IHRleHQtYWxpZ246IHN0YXJ0OyB0ZXh0LWlu +ZGVudDogMHB4OyB0ZXh0LXRyYW5zZm9ybTogbm9uZTsgd29yZC1zcGFjaW5nOiAwcHg7IHRleHQt +ZGVjb3JhdGlvbi10aGlja25lc3M6IGluaXRpYWw7IHRleHQtZGVjb3JhdGlvbi1zdHlsZTogaW5p +dGlhbDsgdGV4dC1kZWNvcmF0aW9uLWNvbG9yOiBpbml0aWFsOyI+PHNwYW4gIGNsYXNzPSJtZC1w +bGFpbiIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGZvbnQtd2VpZ2h0OiA3MDA7Ij7m +nKzlkajlt6XkvZzmgLvnu5M8L3NwYW4+PC9oMz48aDQgIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQt +aGVhZGluZyBfX2FsaXl1bl9ub2RlX2hhc19jb2xvciIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRl +ci1ib3g7IGJyZWFrLWFmdGVyOiBhdm9pZC1wYWdlOyBicmVhay1pbnNpZGU6IGF2b2lkOyBmb250 +LXNpemU6IDEuMjVlbTsgbWFyZ2luLXRvcDogMXJlbTsgbWFyZ2luLWJvdHRvbTogMXJlbTsgcG9z +aXRpb246IHJlbGF0aXZlOyBmb250LXdlaWdodDogNzAwOyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7 +IGNvbG9yOiByZ2IoNTEsIDUxLCA1MSk7IGZvbnQtZmFtaWx5OiAnT3BlbiBTYW5zJywgJ0NsZWFy +IFNhbnMnLCAnSGVsdmV0aWNhIE5ldWUnLCBIZWx2ZXRpY2EsIEFyaWFsLCAnU2Vnb2UgVUkgRW1v +amknLCBzYW5zLXNlcmlmOyBmb250LXN0eWxlOiBub3JtYWw7IGZvbnQtdmFyaWFudC1saWdhdHVy +ZXM6IG5vcm1hbDsgZm9udC12YXJpYW50LWNhcHM6IG5vcm1hbDsgbGV0dGVyLXNwYWNpbmc6IG5v +cm1hbDsgdGV4dC1hbGlnbjogc3RhcnQ7IHRleHQtaW5kZW50OiAwcHg7IHRleHQtdHJhbnNmb3Jt +OiBub25lOyB3b3JkLXNwYWNpbmc6IDBweDsgdGV4dC1kZWNvcmF0aW9uLXRoaWNrbmVzczogaW5p +dGlhbDsgdGV4dC1kZWNvcmF0aW9uLXN0eWxlOiBpbml0aWFsOyB0ZXh0LWRlY29yYXRpb24tY29s +b3I6IGluaXRpYWw7Ij48c3BhbiAgY2xhc3M9Im1kLXBsYWluIiBzdHlsZT0iYm94LXNpemluZzog +Ym9yZGVyLWJveDsiPuS4gOOAgemHjeeCueW3peS9nOWujOaIkOaDheWGtTwvc3Bhbj48L2g0Pjxv +bCAgY2xhc3M9Im9sLWxpc3QgX19hbGl5dW5fbm9kZV9oYXNfY29sb3IiIHN0eWxlPSJib3gtc2l6 +aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDAuOGVtIDBweDsgcGFkZGluZy1sZWZ0OiAzMHB4OyBw +b3NpdGlvbjogcmVsYXRpdmU7IGNvbG9yOiByZ2IoNTEsIDUxLCA1MSk7IGZvbnQtZmFtaWx5OiAn +T3BlbiBTYW5zJywgJ0NsZWFyIFNhbnMnLCAnSGVsdmV0aWNhIE5ldWUnLCBIZWx2ZXRpY2EsIEFy +aWFsLCAnU2Vnb2UgVUkgRW1vamknLCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDE2cHg7IGZvbnQt +c3R5bGU6IG5vcm1hbDsgZm9udC12YXJpYW50LWxpZ2F0dXJlczogbm9ybWFsOyBmb250LXZhcmlh +bnQtY2Fwczogbm9ybWFsOyBmb250LXdlaWdodDogNDAwOyBsZXR0ZXItc3BhY2luZzogbm9ybWFs +OyB0ZXh0LWFsaWduOiBzdGFydDsgdGV4dC1pbmRlbnQ6IDBweDsgdGV4dC10cmFuc2Zvcm06IG5v +bmU7IHdoaXRlLXNwYWNlOiBub3JtYWw7IHdvcmQtc3BhY2luZzogMHB4OyB0ZXh0LWRlY29yYXRp +b24tdGhpY2tuZXNzOiBpbml0aWFsOyB0ZXh0LWRlY29yYXRpb24tc3R5bGU6IGluaXRpYWw7IHRl +eHQtZGVjb3JhdGlvbi1jb2xvcjogaW5pdGlhbDsiPjxsaSAgY2xhc3M9Im1kLWxpc3QtaXRlbSIg +c3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBwb3NpdGlvbjogcmVs +YXRpdmU7Ij48cCAgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1wIiBzdHlsZT0iYm94LXNpemluZzog +Ym9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IG1hcmdpbjogMHB4IDBweCA4cHg7IHdo +aXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHNwYW4gIGNsYXNzPSJt +ZC1wbGFpbiIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij5HNei/m+mUgOWtmCA1LjQu +NyDniYjmnKzlvIDlj5E8L3NwYW4+PC9wPjwvbGk+PC9vbD48aDQgIGNsYXNzPSJtZC1lbmQtYmxv +Y2sgbWQtaGVhZGluZyBfX2FsaXl1bl9ub2RlX2hhc19jb2xvciIgc3R5bGU9ImJveC1zaXppbmc6 +IGJvcmRlci1ib3g7IGJyZWFrLWFmdGVyOiBhdm9pZC1wYWdlOyBicmVhay1pbnNpZGU6IGF2b2lk +OyBmb250LXNpemU6IDEuMjVlbTsgbWFyZ2luLXRvcDogMXJlbTsgbWFyZ2luLWJvdHRvbTogMXJl +bTsgcG9zaXRpb246IHJlbGF0aXZlOyBmb250LXdlaWdodDogNzAwOyB3aGl0ZS1zcGFjZTogcHJl +LXdyYXA7IGNvbG9yOiByZ2IoNTEsIDUxLCA1MSk7IGZvbnQtZmFtaWx5OiAnT3BlbiBTYW5zJywg +J0NsZWFyIFNhbnMnLCAnSGVsdmV0aWNhIE5ldWUnLCBIZWx2ZXRpY2EsIEFyaWFsLCAnU2Vnb2Ug +VUkgRW1vamknLCBzYW5zLXNlcmlmOyBmb250LXN0eWxlOiBub3JtYWw7IGZvbnQtdmFyaWFudC1s +aWdhdHVyZXM6IG5vcm1hbDsgZm9udC12YXJpYW50LWNhcHM6IG5vcm1hbDsgbGV0dGVyLXNwYWNp +bmc6IG5vcm1hbDsgdGV4dC1hbGlnbjogc3RhcnQ7IHRleHQtaW5kZW50OiAwcHg7IHRleHQtdHJh +bnNmb3JtOiBub25lOyB3b3JkLXNwYWNpbmc6IDBweDsgdGV4dC1kZWNvcmF0aW9uLXRoaWNrbmVz +czogaW5pdGlhbDsgdGV4dC1kZWNvcmF0aW9uLXN0eWxlOiBpbml0aWFsOyB0ZXh0LWRlY29yYXRp +b24tY29sb3I6IGluaXRpYWw7Ij48c3BhbiAgY2xhc3M9Im1kLXBsYWluIiBzdHlsZT0iYm94LXNp +emluZzogYm9yZGVyLWJveDsiPuS6jOOAgeW4uOinhOW3peS9nOaYjue7hjwvc3Bhbj48L2g0Pjxw +ICBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLXAgX19hbGl5dW5fbm9kZV9oYXNfY29sb3IiIHN0eWxl +PSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5oZXJpdDsgbWFyZ2luOiAx +MnB4IDBweDsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyBwb3NpdGlvbjogcmVsYXRpdmU7IGNvbG9y +OiByZ2IoNTEsIDUxLCA1MSk7IGZvbnQtZmFtaWx5OiAnT3BlbiBTYW5zJywgJ0NsZWFyIFNhbnMn +LCAnSGVsdmV0aWNhIE5ldWUnLCBIZWx2ZXRpY2EsIEFyaWFsLCAnU2Vnb2UgVUkgRW1vamknLCBz +YW5zLXNlcmlmOyBmb250LXNpemU6IDE2cHg7IGZvbnQtc3R5bGU6IG5vcm1hbDsgZm9udC12YXJp +YW50LWxpZ2F0dXJlczogbm9ybWFsOyBmb250LXZhcmlhbnQtY2Fwczogbm9ybWFsOyBmb250LXdl +aWdodDogNDAwOyBsZXR0ZXItc3BhY2luZzogbm9ybWFsOyB0ZXh0LWFsaWduOiBzdGFydDsgdGV4 +dC1pbmRlbnQ6IDBweDsgdGV4dC10cmFuc2Zvcm06IG5vbmU7IHdvcmQtc3BhY2luZzogMHB4OyB0 +ZXh0LWRlY29yYXRpb24tdGhpY2tuZXNzOiBpbml0aWFsOyB0ZXh0LWRlY29yYXRpb24tc3R5bGU6 +IGluaXRpYWw7IHRleHQtZGVjb3JhdGlvbi1jb2xvcjogaW5pdGlhbDsiPjxzcGFuICBjbGFzcz0i +bWQtcGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBmb250LXdlaWdodDogNzAw +OyI+MjAyNi0wMy0zMDwvc3Bhbj48L3A+PHVsICBjbGFzcz0idWwtbGlzdCBfX2FsaXl1bl9ub2Rl +X2hhc19jb2xvciIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMC44ZW0g +MHB4OyBwYWRkaW5nLWxlZnQ6IDMwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsgY29sb3I6IHJnYig1 +MSwgNTEsIDUxKTsgZm9udC1mYW1pbHk6ICdPcGVuIFNhbnMnLCAnQ2xlYXIgU2FucycsICdIZWx2 +ZXRpY2EgTmV1ZScsIEhlbHZldGljYSwgQXJpYWwsICdTZWdvZSBVSSBFbW9qaScsIHNhbnMtc2Vy +aWY7IGZvbnQtc2l6ZTogMTZweDsgZm9udC1zdHlsZTogbm9ybWFsOyBmb250LXZhcmlhbnQtbGln +YXR1cmVzOiBub3JtYWw7IGZvbnQtdmFyaWFudC1jYXBzOiBub3JtYWw7IGZvbnQtd2VpZ2h0OiA0 +MDA7IGxldHRlci1zcGFjaW5nOiBub3JtYWw7IHRleHQtYWxpZ246IHN0YXJ0OyB0ZXh0LWluZGVu +dDogMHB4OyB0ZXh0LXRyYW5zZm9ybTogbm9uZTsgd2hpdGUtc3BhY2U6IG5vcm1hbDsgd29yZC1z +cGFjaW5nOiAwcHg7IHRleHQtZGVjb3JhdGlvbi10aGlja25lc3M6IGluaXRpYWw7IHRleHQtZGVj +b3JhdGlvbi1zdHlsZTogaW5pdGlhbDsgdGV4dC1kZWNvcmF0aW9uLWNvbG9yOiBpbml0aWFsOyI+ +PGxpICBjbGFzcz0ibWQtbGlzdC1pdGVtIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsg +bWFyZ2luOiAwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxwICBjbGFzcz0ibWQtZW5kLWJsb2Nr +IG1kLXAiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5oZXJp +dDsgbWFyZ2luOiAwcHggMHB4IDhweDsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyBwb3NpdGlvbjog +cmVsYXRpdmU7Ij48c3BhbiAgY2xhc3M9Im1kLXBsYWluIiBzdHlsZT0iYm94LXNpemluZzogYm9y +ZGVyLWJveDsiPuW6k+WtmOW8gOWPkeaWueahiOivhOWuoTwvc3Bhbj48L3A+PC9saT48bGkgIGNs +YXNzPSJtZC1saXN0LWl0ZW0iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46 +IDBweDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHAgIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCIg +c3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhlcml0OyBtYXJn +aW46IDBweCAwcHggOHB4OyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0aW9uOiByZWxhdGl2 +ZTsiPjxzcGFuICBjbGFzcz0ibWQtcGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94 +OyI+5bqT5a2Y6ZyA5rGC5byA5Y+RPC9zcGFuPjwvcD48L2xpPjwvdWw+PHAgIGNsYXNzPSJtZC1l +bmQtYmxvY2sgbWQtcCBfX2FsaXl1bl9ub2RlX2hhc19jb2xvciIgc3R5bGU9ImJveC1zaXppbmc6 +IGJvcmRlci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhlcml0OyBtYXJnaW46IDEycHggMHB4OyB3aGl0 +ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsgY29sb3I6IHJnYig1MSwgNTEs +IDUxKTsgZm9udC1mYW1pbHk6ICdPcGVuIFNhbnMnLCAnQ2xlYXIgU2FucycsICdIZWx2ZXRpY2Eg +TmV1ZScsIEhlbHZldGljYSwgQXJpYWwsICdTZWdvZSBVSSBFbW9qaScsIHNhbnMtc2VyaWY7IGZv +bnQtc2l6ZTogMTZweDsgZm9udC1zdHlsZTogbm9ybWFsOyBmb250LXZhcmlhbnQtbGlnYXR1cmVz +OiBub3JtYWw7IGZvbnQtdmFyaWFudC1jYXBzOiBub3JtYWw7IGZvbnQtd2VpZ2h0OiA0MDA7IGxl +dHRlci1zcGFjaW5nOiBub3JtYWw7IHRleHQtYWxpZ246IHN0YXJ0OyB0ZXh0LWluZGVudDogMHB4 +OyB0ZXh0LXRyYW5zZm9ybTogbm9uZTsgd29yZC1zcGFjaW5nOiAwcHg7IHRleHQtZGVjb3JhdGlv +bi10aGlja25lc3M6IGluaXRpYWw7IHRleHQtZGVjb3JhdGlvbi1zdHlsZTogaW5pdGlhbDsgdGV4 +dC1kZWNvcmF0aW9uLWNvbG9yOiBpbml0aWFsOyI+PHNwYW4gIGNsYXNzPSJtZC1wbGFpbiIgc3R5 +bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGZvbnQtd2VpZ2h0OiA3MDA7Ij4yMDI2LTAzLTMx +PC9zcGFuPjwvcD48dWwgIGNsYXNzPSJ1bC1saXN0IF9fYWxpeXVuX25vZGVfaGFzX2NvbG9yIiBz +dHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwLjhlbSAwcHg7IHBhZGRpbmct +bGVmdDogMzBweDsgcG9zaXRpb246IHJlbGF0aXZlOyBjb2xvcjogcmdiKDUxLCA1MSwgNTEpOyBm +b250LWZhbWlseTogJ09wZW4gU2FucycsICdDbGVhciBTYW5zJywgJ0hlbHZldGljYSBOZXVlJywg +SGVsdmV0aWNhLCBBcmlhbCwgJ1NlZ29lIFVJIEVtb2ppJywgc2Fucy1zZXJpZjsgZm9udC1zaXpl +OiAxNnB4OyBmb250LXN0eWxlOiBub3JtYWw7IGZvbnQtdmFyaWFudC1saWdhdHVyZXM6IG5vcm1h +bDsgZm9udC12YXJpYW50LWNhcHM6IG5vcm1hbDsgZm9udC13ZWlnaHQ6IDQwMDsgbGV0dGVyLXNw +YWNpbmc6IG5vcm1hbDsgdGV4dC1hbGlnbjogc3RhcnQ7IHRleHQtaW5kZW50OiAwcHg7IHRleHQt +dHJhbnNmb3JtOiBub25lOyB3aGl0ZS1zcGFjZTogbm9ybWFsOyB3b3JkLXNwYWNpbmc6IDBweDsg +dGV4dC1kZWNvcmF0aW9uLXRoaWNrbmVzczogaW5pdGlhbDsgdGV4dC1kZWNvcmF0aW9uLXN0eWxl +OiBpbml0aWFsOyB0ZXh0LWRlY29yYXRpb24tY29sb3I6IGluaXRpYWw7Ij48bGkgIGNsYXNzPSJt +ZC1saXN0LWl0ZW0iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsg +cG9zaXRpb246IHJlbGF0aXZlOyI+PHAgIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCIgc3R5bGU9 +ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhlcml0OyBtYXJnaW46IDBw +eCAwcHggOHB4OyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxz +cGFuICBjbGFzcz0ibWQtcGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+5Ye6 +5YWl5bqT5p+l6K+i5re75Yqg5aSH5rOo5p+l6K+iPC9zcGFuPjwvcD48L2xpPjxsaSAgY2xhc3M9 +Im1kLWxpc3QtaXRlbSIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4 +OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48cCAgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1wIiBzdHls +ZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IG1hcmdpbjog +MHB4IDBweCA4cHg7IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJlbGF0aXZlOyI+ +PHNwYW4gIGNsYXNzPSJtZC1wbGFpbiIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij7m +n6Xor6Llj6/nlKjlupPlrZjnmoTmjqXlj6PmjpLpmaTlp5TlpJbku5M8L3NwYW4+PC9wPjwvbGk+ +PGxpICBjbGFzcz0ibWQtbGlzdC1pdGVtIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsg +bWFyZ2luOiAwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxwICBjbGFzcz0ibWQtZW5kLWJsb2Nr +IG1kLXAiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5oZXJp +dDsgbWFyZ2luOiAwcHggMHB4IDhweDsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyBwb3NpdGlvbjog +cmVsYXRpdmU7Ij48c3BhbiAgY2xhc3M9Im1kLXBsYWluIiBzdHlsZT0iYm94LXNpemluZzogYm9y +ZGVyLWJveDsiPuWHuuWFpeW6k+WNleaNruaYjue7huafpeivojwvc3Bhbj48L3A+PC9saT48L3Vs +PjxwICBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLXAgX19hbGl5dW5fbm9kZV9oYXNfY29sb3IiIHN0 +eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5oZXJpdDsgbWFyZ2lu +OiAxMnB4IDBweDsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyBwb3NpdGlvbjogcmVsYXRpdmU7IGNv +bG9yOiByZ2IoNTEsIDUxLCA1MSk7IGZvbnQtZmFtaWx5OiAnT3BlbiBTYW5zJywgJ0NsZWFyIFNh +bnMnLCAnSGVsdmV0aWNhIE5ldWUnLCBIZWx2ZXRpY2EsIEFyaWFsLCAnU2Vnb2UgVUkgRW1vamkn +LCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDE2cHg7IGZvbnQtc3R5bGU6IG5vcm1hbDsgZm9udC12 +YXJpYW50LWxpZ2F0dXJlczogbm9ybWFsOyBmb250LXZhcmlhbnQtY2Fwczogbm9ybWFsOyBmb250 +LXdlaWdodDogNDAwOyBsZXR0ZXItc3BhY2luZzogbm9ybWFsOyB0ZXh0LWFsaWduOiBzdGFydDsg +dGV4dC1pbmRlbnQ6IDBweDsgdGV4dC10cmFuc2Zvcm06IG5vbmU7IHdvcmQtc3BhY2luZzogMHB4 +OyB0ZXh0LWRlY29yYXRpb24tdGhpY2tuZXNzOiBpbml0aWFsOyB0ZXh0LWRlY29yYXRpb24tc3R5 +bGU6IGluaXRpYWw7IHRleHQtZGVjb3JhdGlvbi1jb2xvcjogaW5pdGlhbDsiPjxzcGFuICBjbGFz +cz0ibWQtcGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBmb250LXdlaWdodDog +NzAwOyI+MjAyNi0wNC0wMTwvc3Bhbj48L3A+PHVsICBjbGFzcz0idWwtbGlzdCBfX2FsaXl1bl9u +b2RlX2hhc19jb2xvciIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMC44 +ZW0gMHB4OyBwYWRkaW5nLWxlZnQ6IDMwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsgY29sb3I6IHJn +Yig1MSwgNTEsIDUxKTsgZm9udC1mYW1pbHk6ICdPcGVuIFNhbnMnLCAnQ2xlYXIgU2FucycsICdI +ZWx2ZXRpY2EgTmV1ZScsIEhlbHZldGljYSwgQXJpYWwsICdTZWdvZSBVSSBFbW9qaScsIHNhbnMt +c2VyaWY7IGZvbnQtc2l6ZTogMTZweDsgZm9udC1zdHlsZTogbm9ybWFsOyBmb250LXZhcmlhbnQt +bGlnYXR1cmVzOiBub3JtYWw7IGZvbnQtdmFyaWFudC1jYXBzOiBub3JtYWw7IGZvbnQtd2VpZ2h0 +OiA0MDA7IGxldHRlci1zcGFjaW5nOiBub3JtYWw7IHRleHQtYWxpZ246IHN0YXJ0OyB0ZXh0LWlu +ZGVudDogMHB4OyB0ZXh0LXRyYW5zZm9ybTogbm9uZTsgd2hpdGUtc3BhY2U6IG5vcm1hbDsgd29y +ZC1zcGFjaW5nOiAwcHg7IHRleHQtZGVjb3JhdGlvbi10aGlja25lc3M6IGluaXRpYWw7IHRleHQt +ZGVjb3JhdGlvbi1zdHlsZTogaW5pdGlhbDsgdGV4dC1kZWNvcmF0aW9uLWNvbG9yOiBpbml0aWFs +OyI+PGxpICBjbGFzcz0ibWQtbGlzdC1pdGVtIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJv +eDsgbWFyZ2luOiAwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxwICBjbGFzcz0ibWQtZW5kLWJs +b2NrIG1kLXAiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5o +ZXJpdDsgbWFyZ2luOiAwcHggMHB4IDhweDsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyBwb3NpdGlv +bjogcmVsYXRpdmU7Ij48c3BhbiAgY2xhc3M9Im1kLXBsYWluIiBzdHlsZT0iYm94LXNpemluZzog +Ym9yZGVyLWJveDsiPuWHuuWFpeW6k+WNleaNruaYjue7huW8gOWPkTwvc3Bhbj48L3A+PC9saT48 +L3VsPjxwICBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLXAgX19hbGl5dW5fbm9kZV9oYXNfY29sb3Ii +IHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5oZXJpdDsgbWFy +Z2luOiAxMnB4IDBweDsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyBwb3NpdGlvbjogcmVsYXRpdmU7 +IGNvbG9yOiByZ2IoNTEsIDUxLCA1MSk7IGZvbnQtZmFtaWx5OiAnT3BlbiBTYW5zJywgJ0NsZWFy +IFNhbnMnLCAnSGVsdmV0aWNhIE5ldWUnLCBIZWx2ZXRpY2EsIEFyaWFsLCAnU2Vnb2UgVUkgRW1v +amknLCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDE2cHg7IGZvbnQtc3R5bGU6IG5vcm1hbDsgZm9u +dC12YXJpYW50LWxpZ2F0dXJlczogbm9ybWFsOyBmb250LXZhcmlhbnQtY2Fwczogbm9ybWFsOyBm +b250LXdlaWdodDogNDAwOyBsZXR0ZXItc3BhY2luZzogbm9ybWFsOyB0ZXh0LWFsaWduOiBzdGFy +dDsgdGV4dC1pbmRlbnQ6IDBweDsgdGV4dC10cmFuc2Zvcm06IG5vbmU7IHdvcmQtc3BhY2luZzog +MHB4OyB0ZXh0LWRlY29yYXRpb24tdGhpY2tuZXNzOiBpbml0aWFsOyB0ZXh0LWRlY29yYXRpb24t +c3R5bGU6IGluaXRpYWw7IHRleHQtZGVjb3JhdGlvbi1jb2xvcjogaW5pdGlhbDsiPjxzcGFuICBj +bGFzcz0ibWQtcGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBmb250LXdlaWdo +dDogNzAwOyI+MjAyNi0wNC0wMjwvc3Bhbj48L3A+PHVsICBjbGFzcz0idWwtbGlzdCBfX2FsaXl1 +bl9ub2RlX2hhc19jb2xvciIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjog +MC44ZW0gMHB4OyBwYWRkaW5nLWxlZnQ6IDMwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsgY29sb3I6 +IHJnYig1MSwgNTEsIDUxKTsgZm9udC1mYW1pbHk6ICdPcGVuIFNhbnMnLCAnQ2xlYXIgU2Fucycs +ICdIZWx2ZXRpY2EgTmV1ZScsIEhlbHZldGljYSwgQXJpYWwsICdTZWdvZSBVSSBFbW9qaScsIHNh +bnMtc2VyaWY7IGZvbnQtc2l6ZTogMTZweDsgZm9udC1zdHlsZTogbm9ybWFsOyBmb250LXZhcmlh +bnQtbGlnYXR1cmVzOiBub3JtYWw7IGZvbnQtdmFyaWFudC1jYXBzOiBub3JtYWw7IGZvbnQtd2Vp +Z2h0OiA0MDA7IGxldHRlci1zcGFjaW5nOiBub3JtYWw7IHRleHQtYWxpZ246IHN0YXJ0OyB0ZXh0 +LWluZGVudDogMHB4OyB0ZXh0LXRyYW5zZm9ybTogbm9uZTsgd2hpdGUtc3BhY2U6IG5vcm1hbDsg +d29yZC1zcGFjaW5nOiAwcHg7IHRleHQtZGVjb3JhdGlvbi10aGlja25lc3M6IGluaXRpYWw7IHRl +eHQtZGVjb3JhdGlvbi1zdHlsZTogaW5pdGlhbDsgdGV4dC1kZWNvcmF0aW9uLWNvbG9yOiBpbml0 +aWFsOyI+PGxpICBjbGFzcz0ibWQtbGlzdC1pdGVtIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVy +LWJveDsgbWFyZ2luOiAwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxwICBjbGFzcz0ibWQtZW5k +LWJsb2NrIG1kLXAiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdodDog +aW5oZXJpdDsgbWFyZ2luOiAwcHggMHB4IDhweDsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyBwb3Np +dGlvbjogcmVsYXRpdmU7Ij48c3BhbiAgY2xhc3M9Im1kLXBsYWluIiBzdHlsZT0iYm94LXNpemlu +ZzogYm9yZGVyLWJveDsiPuaAp+iDveS8mOWMljwvc3Bhbj48L3A+PC9saT48bGkgIGNsYXNzPSJt +ZC1saXN0LWl0ZW0iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsg +cG9zaXRpb246IHJlbGF0aXZlOyI+PHAgIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCIgc3R5bGU9 +ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhlcml0OyBtYXJnaW46IDBw +eCAwcHggOHB4OyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxz +cGFuICBjbGFzcz0ibWQtcGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+5byC +5q2l5a+85Ye6PC9zcGFuPjwvcD48L2xpPjxsaSAgY2xhc3M9Im1kLWxpc3QtaXRlbSIgc3R5bGU9 +ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7 +Ij48cCAgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1wIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVy +LWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IG1hcmdpbjogMHB4IDBweCA4cHg7IHdoaXRlLXNw +YWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHNwYW4gIGNsYXNzPSJtZC1wbGFp +biIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij7mlrDlop7lsI/mlbDkvY3mlbAg5Y2V +5L2N57K+5bqm5o6n5Yi2PC9zcGFuPjwvcD48L2xpPjxsaSAgY2xhc3M9Im1kLWxpc3QtaXRlbSBt +ZC1mb2N1cy1jb250YWluZXIiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46 +IDBweDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHAgIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCBt +ZC1mb2N1cyIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhl +cml0OyBtYXJnaW46IDBweCAwcHggOHB4OyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0aW9u +OiByZWxhdGl2ZTsiPjxzcGFuICBjbGFzcz0ibWQtcGxhaW4gbWQtZXhwYW5kIiBzdHlsZT0iYm94 +LXNpemluZzogYm9yZGVyLWJveDsiPuWHuuWFpeW6k+WFs+iBlOWuouaIt+aIluiAheS+m+W6lOWV +huWIpOaWrTwvc3Bhbj48L3A+PC9saT48bGkgIGNsYXNzPSJtZC1saXN0LWl0ZW0iIHN0eWxlPSJi +b3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcG9zaXRpb246IHJlbGF0aXZlOyI+ +PHAgIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1i +b3g7IGxpbmUtaGVpZ2h0OiBpbmhlcml0OyBtYXJnaW46IDBweCAwcHggOHB4OyB3aGl0ZS1zcGFj +ZTogcHJlLXdyYXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxzcGFuICBjbGFzcz0ibWQtcGxhaW4i +IHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+5Ye65YWl5bqT5Y2V5o2u5piO57uG5p+l +6K+i6Ieq5rWL6IGU6LCDPC9zcGFuPjwvcD48L2xpPjwvdWw+PHAgIGNsYXNzPSJtZC1lbmQtYmxv +Y2sgbWQtcCBfX2FsaXl1bl9ub2RlX2hhc19jb2xvciIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRl +ci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhlcml0OyBtYXJnaW46IDEycHggMHB4OyB3aGl0ZS1zcGFj +ZTogcHJlLXdyYXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsgY29sb3I6IHJnYig1MSwgNTEsIDUxKTsg +Zm9udC1mYW1pbHk6ICdPcGVuIFNhbnMnLCAnQ2xlYXIgU2FucycsICdIZWx2ZXRpY2EgTmV1ZScs +IEhlbHZldGljYSwgQXJpYWwsICdTZWdvZSBVSSBFbW9qaScsIHNhbnMtc2VyaWY7IGZvbnQtc2l6 +ZTogMTZweDsgZm9udC1zdHlsZTogbm9ybWFsOyBmb250LXZhcmlhbnQtbGlnYXR1cmVzOiBub3Jt +YWw7IGZvbnQtdmFyaWFudC1jYXBzOiBub3JtYWw7IGZvbnQtd2VpZ2h0OiA0MDA7IGxldHRlci1z +cGFjaW5nOiBub3JtYWw7IHRleHQtYWxpZ246IHN0YXJ0OyB0ZXh0LWluZGVudDogMHB4OyB0ZXh0 +LXRyYW5zZm9ybTogbm9uZTsgd29yZC1zcGFjaW5nOiAwcHg7IHRleHQtZGVjb3JhdGlvbi10aGlj +a25lc3M6IGluaXRpYWw7IHRleHQtZGVjb3JhdGlvbi1zdHlsZTogaW5pdGlhbDsgdGV4dC1kZWNv +cmF0aW9uLWNvbG9yOiBpbml0aWFsOyI+PHNwYW4gIGNsYXNzPSJtZC1wbGFpbiIgc3R5bGU9ImJv +eC1zaXppbmc6IGJvcmRlci1ib3g7IGZvbnQtd2VpZ2h0OiA3MDA7Ij4yMDI2LTA0LTAzPC9zcGFu +PjwvcD48dWwgIGNsYXNzPSJ1bC1saXN0IF9fYWxpeXVuX25vZGVfaGFzX2NvbG9yIiBzdHlsZT0i +Ym94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwLjhlbSAwcHg7IHBhZGRpbmctbGVmdDog +MzBweDsgcG9zaXRpb246IHJlbGF0aXZlOyBjb2xvcjogcmdiKDUxLCA1MSwgNTEpOyBmb250LWZh +bWlseTogJ09wZW4gU2FucycsICdDbGVhciBTYW5zJywgJ0hlbHZldGljYSBOZXVlJywgSGVsdmV0 +aWNhLCBBcmlhbCwgJ1NlZ29lIFVJIEVtb2ppJywgc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxNnB4 +OyBmb250LXN0eWxlOiBub3JtYWw7IGZvbnQtdmFyaWFudC1saWdhdHVyZXM6IG5vcm1hbDsgZm9u +dC12YXJpYW50LWNhcHM6IG5vcm1hbDsgZm9udC13ZWlnaHQ6IDQwMDsgbGV0dGVyLXNwYWNpbmc6 +IG5vcm1hbDsgdGV4dC1hbGlnbjogc3RhcnQ7IHRleHQtaW5kZW50OiAwcHg7IHRleHQtdHJhbnNm +b3JtOiBub25lOyB3aGl0ZS1zcGFjZTogbm9ybWFsOyB3b3JkLXNwYWNpbmc6IDBweDsgdGV4dC1k +ZWNvcmF0aW9uLXRoaWNrbmVzczogaW5pdGlhbDsgdGV4dC1kZWNvcmF0aW9uLXN0eWxlOiBpbml0 +aWFsOyB0ZXh0LWRlY29yYXRpb24tY29sb3I6IGluaXRpYWw7Ij48bGkgIGNsYXNzPSJtZC1saXN0 +LWl0ZW0iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcG9zaXRp +b246IHJlbGF0aXZlOyI+PHAgIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCIgc3R5bGU9ImJveC1z +aXppbmc6IGJvcmRlci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhlcml0OyBtYXJnaW46IDBweCAwcHgg +OHB4OyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxzcGFuICBj +bGFzcz0ibWQtcGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+6Ieq5Yqo5YWl +5bqT562W55Wl5qC35byP6LCD5pW0PC9zcGFuPjwvcD48L2xpPjxsaSAgY2xhc3M9Im1kLWxpc3Qt +aXRlbSIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBwb3NpdGlv +bjogcmVsYXRpdmU7Ij48cCAgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1wIiBzdHlsZT0iYm94LXNp +emluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IG1hcmdpbjogMHB4IDBweCA4 +cHg7IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHNwYW4gIGNs +YXNzPSJtZC1wbGFpbiIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij7lt6Xluo/lp5Tl +pJboh6rliqjlhaXlupPpgLvovpHosIPmlbQ8L3NwYW4+PC9wPjwvbGk+PGxpICBjbGFzcz0ibWQt +bGlzdC1pdGVtIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBv +c2l0aW9uOiByZWxhdGl2ZTsiPjxwICBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLXAiIHN0eWxlPSJi +b3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5oZXJpdDsgbWFyZ2luOiAwcHgg +MHB4IDhweDsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48c3Bh +biAgY2xhc3M9Im1kLXBsYWluIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPuWNleaN +ruafpeivouiHqua1i+WSjOWvvOWHuuS8mOWMljwvc3Bhbj48L3A+PC9saT48L3VsPjxoMyAgY2xh +c3M9Im1kLWVuZC1ibG9jayBtZC1oZWFkaW5nIF9fYWxpeXVuX25vZGVfaGFzX2NvbG9yIiBzdHls +ZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgYnJlYWstYWZ0ZXI6IGF2b2lkLXBhZ2U7IGJyZWFr +LWluc2lkZTogYXZvaWQ7IGZvbnQtc2l6ZTogMS41ZW07IG1hcmdpbi10b3A6IDFyZW07IG1hcmdp +bi1ib3R0b206IDFyZW07IHBvc2l0aW9uOiByZWxhdGl2ZTsgZm9udC13ZWlnaHQ6IDcwMDsgd2hp +dGUtc3BhY2U6IHByZS13cmFwOyBjb2xvcjogcmdiKDUxLCA1MSwgNTEpOyBmb250LWZhbWlseTog +J09wZW4gU2FucycsICdDbGVhciBTYW5zJywgJ0hlbHZldGljYSBOZXVlJywgSGVsdmV0aWNhLCBB +cmlhbCwgJ1NlZ29lIFVJIEVtb2ppJywgc2Fucy1zZXJpZjsgZm9udC1zdHlsZTogbm9ybWFsOyBm +b250LXZhcmlhbnQtbGlnYXR1cmVzOiBub3JtYWw7IGZvbnQtdmFyaWFudC1jYXBzOiBub3JtYWw7 +IGxldHRlci1zcGFjaW5nOiBub3JtYWw7IHRleHQtYWxpZ246IHN0YXJ0OyB0ZXh0LWluZGVudDog +MHB4OyB0ZXh0LXRyYW5zZm9ybTogbm9uZTsgd29yZC1zcGFjaW5nOiAwcHg7IHRleHQtZGVjb3Jh +dGlvbi10aGlja25lc3M6IGluaXRpYWw7IHRleHQtZGVjb3JhdGlvbi1zdHlsZTogaW5pdGlhbDsg +dGV4dC1kZWNvcmF0aW9uLWNvbG9yOiBpbml0aWFsOyI+PHNwYW4gIGNsYXNzPSJtZC1wbGFpbiIg +c3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGZvbnQtd2VpZ2h0OiA3MDA7Ij7kuIvlkajp +h43ngrnku7vliqE8L3NwYW4+PC9oMz48dWwgIGNsYXNzPSJ1bC1saXN0IF9fYWxpeXVuX25vZGVf +aGFzX2NvbG9yIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwLjhlbSAw +cHg7IHBhZGRpbmctbGVmdDogMzBweDsgcG9zaXRpb246IHJlbGF0aXZlOyBjb2xvcjogcmdiKDUx +LCA1MSwgNTEpOyBmb250LWZhbWlseTogJ09wZW4gU2FucycsICdDbGVhciBTYW5zJywgJ0hlbHZl +dGljYSBOZXVlJywgSGVsdmV0aWNhLCBBcmlhbCwgJ1NlZ29lIFVJIEVtb2ppJywgc2Fucy1zZXJp +ZjsgZm9udC1zaXplOiAxNnB4OyBmb250LXN0eWxlOiBub3JtYWw7IGZvbnQtdmFyaWFudC1saWdh +dHVyZXM6IG5vcm1hbDsgZm9udC12YXJpYW50LWNhcHM6IG5vcm1hbDsgZm9udC13ZWlnaHQ6IDQw +MDsgbGV0dGVyLXNwYWNpbmc6IG5vcm1hbDsgdGV4dC1hbGlnbjogc3RhcnQ7IHRleHQtaW5kZW50 +OiAwcHg7IHRleHQtdHJhbnNmb3JtOiBub25lOyB3aGl0ZS1zcGFjZTogbm9ybWFsOyB3b3JkLXNw +YWNpbmc6IDBweDsgdGV4dC1kZWNvcmF0aW9uLXRoaWNrbmVzczogaW5pdGlhbDsgdGV4dC1kZWNv +cmF0aW9uLXN0eWxlOiBpbml0aWFsOyB0ZXh0LWRlY29yYXRpb24tY29sb3I6IGluaXRpYWw7Ij48 +bGkgIGNsYXNzPSJtZC1saXN0LWl0ZW0iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBt +YXJnaW46IDBweDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHAgIGNsYXNzPSJtZC1lbmQtYmxvY2sg +bWQtcCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhlcml0 +OyBtYXJnaW46IDBweCAwcHggOHB4OyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0aW9uOiBy +ZWxhdGl2ZTsiPjxzcGFuICBjbGFzcz0ibWQtcGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3Jk +ZXItYm94OyI+NS40Ljcg54mI5pys5byA5Y+RPC9zcGFuPjwvcD48L2xpPjwvdWw+PGRpdiA+PGRp +diAgc3R5bGU9ImNsZWFyOiBib3RoOyBmb250LWZhbWlseTogVGFob21hLCBBcmlhbCwgU1RIZWl0 +aVNDLUxpZ2h0LCBTaW1TdW47Ij48c3BhbiA+PGJyID48L3NwYW4+PC9kaXY+PGRpdiAgc3R5bGU9 +ImNsZWFyOiBib3RoOyI+PGRpdiAgY2xhc3M9IiBfX2FsaXl1bl9ub2RlX2hhc19jb2xvciIgc3R5 +bGU9Im1hcmdpbjogMHB4OyBwYWRkaW5nOiAwcHg7IGJvcmRlcjogMHB4OyBvdXRsaW5lOiAwcHg7 +IGNvbG9yOiByZ2IoMCwgMCwgMCk7IGZvbnQtZmFtaWx5OiBUYWhvbWEsIEFyaWFsLCBTVEhlaXRp +LCBTaW1TdW47IGZvbnQtc2l6ZTogMTRweDsgZm9udC1zdHlsZTogbm9ybWFsOyBmb250LXZhcmlh +bnQtbGlnYXR1cmVzOiBub3JtYWw7IGZvbnQtdmFyaWFudC1jYXBzOiBub3JtYWw7IGZvbnQtd2Vp +Z2h0OiA0MDA7IHRleHQtYWxpZ246IHN0YXJ0OyB0ZXh0LWluZGVudDogMHB4OyB0ZXh0LXRyYW5z +Zm9ybTogbm9uZTsgdGV4dC1kZWNvcmF0aW9uLXRoaWNrbmVzczogaW5pdGlhbDsgdGV4dC1kZWNv +cmF0aW9uLXN0eWxlOiBpbml0aWFsOyB0ZXh0LWRlY29yYXRpb24tY29sb3I6IGluaXRpYWw7IGNs +ZWFyOiBib3RoOyI+PHNwYW4gIGNsYXNzPSIgX19hbGl5dW5fbm9kZV9oYXNfY29sb3IiIHN0eWxl +PSJtYXJnaW46IDBweDsgcGFkZGluZzogMHB4OyBib3JkZXI6IDBweDsgb3V0bGluZTogMHB4OyBm +b250LWZhbWlseTogJ01pY3Jvc29mdCBZYWhlaSc7IGZvbnQtc2l6ZTogMTNweDsgY29sb3I6IHJn +YigxOTEsIDE5MSwgMTkxKTsiPkJlc3QgcmVnYXJkcyw8L3NwYW4+PC9kaXY+PGRpdiAgY2xhc3M9 +IiBfX2FsaXl1bl9ub2RlX2hhc19jb2xvciIgc3R5bGU9Im1hcmdpbjogMHB4OyBwYWRkaW5nOiAw +cHg7IGJvcmRlcjogMHB4OyBvdXRsaW5lOiAwcHg7IGNvbG9yOiByZ2IoMCwgMCwgMCk7IGZvbnQt +ZmFtaWx5OiBUYWhvbWEsIEFyaWFsLCBTVEhlaXRpLCBTaW1TdW47IGZvbnQtc2l6ZTogMTRweDsg +Zm9udC1zdHlsZTogbm9ybWFsOyBmb250LXZhcmlhbnQtbGlnYXR1cmVzOiBub3JtYWw7IGZvbnQt +dmFyaWFudC1jYXBzOiBub3JtYWw7IGZvbnQtd2VpZ2h0OiA0MDA7IHRleHQtYWxpZ246IHN0YXJ0 +OyB0ZXh0LWluZGVudDogMHB4OyB0ZXh0LXRyYW5zZm9ybTogbm9uZTsgdGV4dC1kZWNvcmF0aW9u +LXRoaWNrbmVzczogaW5pdGlhbDsgdGV4dC1kZWNvcmF0aW9uLXN0eWxlOiBpbml0aWFsOyB0ZXh0 +LWRlY29yYXRpb24tY29sb3I6IGluaXRpYWw7IGNsZWFyOiBib3RoOyI+PHNwYW4gIGNsYXNzPSIg +X19hbGl5dW5fbm9kZV9oYXNfY29sb3IiIHN0eWxlPSJtYXJnaW46IDBweDsgcGFkZGluZzogMHB4 +OyBib3JkZXI6IDBweDsgb3V0bGluZTogMHB4OyBmb250LWZhbWlseTogJ01pY3Jvc29mdCBZYWhl +aSc7IGZvbnQtc2l6ZTogMTNweDsgY29sb3I6IHJnYigxOTEsIDE5MSwgMTkxKTsiPuadqOi9qTwv +c3Bhbj48L2Rpdj48ZGl2ICBjbGFzcz0iIF9fYWxpeXVuX25vZGVfaGFzX2NvbG9yIiBzdHlsZT0i +bWFyZ2luOiAwcHg7IHBhZGRpbmc6IDBweDsgYm9yZGVyOiAwcHg7IG91dGxpbmU6IDBweDsgY29s +b3I6IHJnYigwLCAwLCAwKTsgZm9udC1mYW1pbHk6IFRhaG9tYSwgQXJpYWwsIFNUSGVpdGksIFNp +bVN1bjsgZm9udC1zaXplOiAxNHB4OyBmb250LXN0eWxlOiBub3JtYWw7IGZvbnQtdmFyaWFudC1s +aWdhdHVyZXM6IG5vcm1hbDsgZm9udC12YXJpYW50LWNhcHM6IG5vcm1hbDsgZm9udC13ZWlnaHQ6 +IDQwMDsgdGV4dC1hbGlnbjogc3RhcnQ7IHRleHQtaW5kZW50OiAwcHg7IHRleHQtdHJhbnNmb3Jt +OiBub25lOyB0ZXh0LWRlY29yYXRpb24tdGhpY2tuZXNzOiBpbml0aWFsOyB0ZXh0LWRlY29yYXRp +b24tc3R5bGU6IGluaXRpYWw7IHRleHQtZGVjb3JhdGlvbi1jb2xvcjogaW5pdGlhbDsgY2xlYXI6 +IGJvdGg7Ij48aW1nICBkYXRhLWFsaW1haWwtaW1nLXByb2Nlc3NlZC1zcW0tZWRpdG9yPSJ0cnVl +IiBoZWlnaHQ9IjY4IiBzcmM9ImNpZDpfX2FsaXl1bjE3NzUyMDgwOTc3OTQ3OTIxIiB3aWR0aD0i +MzAwIiBzdHlsZT0ibWFyZ2luOiAwcHg7IHBhZGRpbmc6IDBweDsgYm9yZGVyOiAwcHg7IG91dGxp +bmU6IDBweDsgdmVydGljYWwtYWxpZ246IGJvdHRvbTsiPiZuYnNwOzwvZGl2PjxkaXYgIGNsYXNz +PSIgX19hbGl5dW5fbm9kZV9oYXNfY29sb3IiIHN0eWxlPSJtYXJnaW46IDBweDsgcGFkZGluZzog +MHB4OyBib3JkZXI6IDBweDsgb3V0bGluZTogMHB4OyBjb2xvcjogcmdiKDAsIDAsIDApOyBmb250 +LWZhbWlseTogVGFob21hLCBBcmlhbCwgU1RIZWl0aSwgU2ltU3VuOyBmb250LXNpemU6IDE0cHg7 +IGZvbnQtc3R5bGU6IG5vcm1hbDsgZm9udC12YXJpYW50LWxpZ2F0dXJlczogbm9ybWFsOyBmb250 +LXZhcmlhbnQtY2Fwczogbm9ybWFsOyBmb250LXdlaWdodDogNDAwOyB0ZXh0LWFsaWduOiBzdGFy +dDsgdGV4dC1pbmRlbnQ6IDBweDsgdGV4dC10cmFuc2Zvcm06IG5vbmU7IHRleHQtZGVjb3JhdGlv +bi10aGlja25lc3M6IGluaXRpYWw7IHRleHQtZGVjb3JhdGlvbi1zdHlsZTogaW5pdGlhbDsgdGV4 +dC1kZWNvcmF0aW9uLWNvbG9yOiBpbml0aWFsOyBjbGVhcjogYm90aDsiPjxzcGFuICBjbGFzcz0i +IF9fYWxpeXVuX25vZGVfaGFzX2NvbG9yIiBzdHlsZT0ibWFyZ2luOiAwcHg7IHBhZGRpbmc6IDBw +eDsgYm9yZGVyOiAwcHg7IG91dGxpbmU6IDBweDsgZm9udC1mYW1pbHk6ICdNaWNyb3NvZnQgWWFo +ZWknOyBjb2xvcjogcmdiKDE5MSwgMTkxLCAxOTEpOyI+5Zyw5Z2A77ya5Lit5Zu9wrfljZfkuqzo +va/ku7bosLfova/ku7blpKfpgZMxMeWPt+iKseelnuWkp+WOpjNGPC9zcGFuPjwvZGl2PjxkaXYg +IGNsYXNzPSIgX19hbGl5dW5fbm9kZV9oYXNfY29sb3IiIHN0eWxlPSJtYXJnaW46IDBweDsgcGFk +ZGluZzogMHB4OyBib3JkZXI6IDBweDsgb3V0bGluZTogMHB4OyBjb2xvcjogcmdiKDAsIDAsIDAp +OyBmb250LWZhbWlseTogVGFob21hLCBBcmlhbCwgU1RIZWl0aSwgU2ltU3VuOyBmb250LXNpemU6 +IDE0cHg7IGZvbnQtc3R5bGU6IG5vcm1hbDsgZm9udC12YXJpYW50LWxpZ2F0dXJlczogbm9ybWFs +OyBmb250LXZhcmlhbnQtY2Fwczogbm9ybWFsOyBmb250LXdlaWdodDogNDAwOyB0ZXh0LWFsaWdu +OiBzdGFydDsgdGV4dC1pbmRlbnQ6IDBweDsgdGV4dC10cmFuc2Zvcm06IG5vbmU7IHRleHQtZGVj +b3JhdGlvbi10aGlja25lc3M6IGluaXRpYWw7IHRleHQtZGVjb3JhdGlvbi1zdHlsZTogaW5pdGlh +bDsgdGV4dC1kZWNvcmF0aW9uLWNvbG9yOiBpbml0aWFsOyBjbGVhcjogYm90aDsiPjxzcGFuICBj +bGFzcz0iIF9fYWxpeXVuX25vZGVfaGFzX2NvbG9yIiBzdHlsZT0ibWFyZ2luOiAwcHg7IHBhZGRp +bmc6IDBweDsgYm9yZGVyOiAwcHg7IG91dGxpbmU6IDBweDsgZm9udC1mYW1pbHk6ICdNaWNyb3Nv +ZnQgWWFoZWknOyBjb2xvcjogcmdiKDE5MSwgMTkxLCAxOTEpOyI+5omL5py677yaMTg3MjYxMjg0 +ODk8L3NwYW4+PC9kaXY+PGRpdiAgY2xhc3M9IiBfX2FsaXl1bl9ub2RlX2hhc19jb2xvciIgc3R5 +bGU9Im1hcmdpbjogMHB4OyBwYWRkaW5nOiAwcHg7IGJvcmRlcjogMHB4OyBvdXRsaW5lOiAwcHg7 +IGNvbG9yOiByZ2IoMCwgMCwgMCk7IGZvbnQtZmFtaWx5OiBUYWhvbWEsIEFyaWFsLCBTVEhlaXRp +LCBTaW1TdW47IGZvbnQtc2l6ZTogMTRweDsgZm9udC1zdHlsZTogbm9ybWFsOyBmb250LXZhcmlh +bnQtbGlnYXR1cmVzOiBub3JtYWw7IGZvbnQtdmFyaWFudC1jYXBzOiBub3JtYWw7IGZvbnQtd2Vp +Z2h0OiA0MDA7IHRleHQtYWxpZ246IHN0YXJ0OyB0ZXh0LWluZGVudDogMHB4OyB0ZXh0LXRyYW5z +Zm9ybTogbm9uZTsgdGV4dC1kZWNvcmF0aW9uLXRoaWNrbmVzczogaW5pdGlhbDsgdGV4dC1kZWNv +cmF0aW9uLXN0eWxlOiBpbml0aWFsOyB0ZXh0LWRlY29yYXRpb24tY29sb3I6IGluaXRpYWw7IGNs +ZWFyOiBib3RoOyI+PHNwYW4gIGNsYXNzPSIgX19hbGl5dW5fbm9kZV9oYXNfY29sb3IiIHN0eWxl +PSJtYXJnaW46IDBweDsgcGFkZGluZzogMHB4OyBib3JkZXI6IDBweDsgb3V0bGluZTogMHB4OyBm +b250LWZhbWlseTogJ01pY3Jvc29mdCBZYWhlaSc7IGNvbG9yOiByZ2IoMTkxLCAxOTEsIDE5MSk7 +Ij7pgq7nrrHvvJp5YW5neHVhbkB3aXRzb2Z0LmNuPC9zcGFuPjwvZGl2PjwvZGl2PjwvZGl2Pjxk +aXYgPjxiciA+PC9kaXY+PHAgIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCBfX2FsaXl1bl9ub2Rl +X2hhc19jb2xvciIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGxpbmUtaGVpZ2h0OiBp +bmhlcml0OyBtYXJnaW46IDEycHggMHB4OyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0aW9u +OiByZWxhdGl2ZTsgY29sb3I6IHJnYig1MSwgNTEsIDUxKTsgZm9udC1mYW1pbHk6ICdPcGVuIFNh +bnMnLCAnQ2xlYXIgU2FucycsICdIZWx2ZXRpY2EgTmV1ZScsIEhlbHZldGljYSwgQXJpYWwsICdT +ZWdvZSBVSSBFbW9qaScsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTZweDsgZm9udC1zdHlsZTog +bm9ybWFsOyBmb250LXZhcmlhbnQtbGlnYXR1cmVzOiBub3JtYWw7IGZvbnQtdmFyaWFudC1jYXBz +OiBub3JtYWw7IGZvbnQtd2VpZ2h0OiA0MDA7IGxldHRlci1zcGFjaW5nOiBub3JtYWw7IHRleHQt +YWxpZ246IHN0YXJ0OyB0ZXh0LWluZGVudDogMHB4OyB0ZXh0LXRyYW5zZm9ybTogbm9uZTsgd29y +ZC1zcGFjaW5nOiAwcHg7IHRleHQtZGVjb3JhdGlvbi10aGlja25lc3M6IGluaXRpYWw7IHRleHQt +ZGVjb3JhdGlvbi1zdHlsZTogaW5pdGlhbDsgdGV4dC1kZWNvcmF0aW9uLWNvbG9yOiBpbml0aWFs +OyI+PGJyID48L3A+PC9kaXY+PC9kaXY+PC9kaXY+ + +--=_mailmaster-6a18e4a4_0_6443_=-- + +--=_mailmaster-6a18e4a4_0_66bb_= +Content-Type: application/octet-stream +Content-Transfer-Encoding: base64 +Content-ID: <__aliyun17752080977947921> +Content-Disposition: inline; + filename="=?utf-8?B?57u05ouT56eR5oqALemCruS7tuetvuWQjWxvZ28ucG5n?=" + +iVBORw0KGgoAAAANSUhEUgAAASwAAABECAYAAAA7rQj2AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJ +bWFnZVJlYWR5ccllPAAAA4RpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdp +bj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6 +eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTQ1IDc5LjE2 +MzQ5OSwgMjAxOC8wOC8xMy0xNjo0MDoyMiAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJo +dHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlw +dGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEu +MC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVz +b3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1N +Ok9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDplYjhjYzQwMy1lNzZjLTQ5NDgtODFmOC1kNDIy +MmRkMTdhYjgiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NkVENzExMzg1MzBEMTFFQTg4QjNF +NEJFMUQyRjc1RkIiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NkVENzExMzc1MzBEMTFFQTg4 +QjNFNEJFMUQyRjc1RkIiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTkg +KFdpbmRvd3MpIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6 +ZmNkNTdlM2UtZThjYS05ZjQ2LWEzZTUtMWJlYmE2NjA5Y2FmIiBzdFJlZjpkb2N1bWVudElEPSJh +ZG9iZTpkb2NpZDpwaG90b3Nob3A6MzZkNmNjNTUtNTY3Yi01MTQ2LWEwYWYtMzBlMzEwMTMxNDFk +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 + +--=_mailmaster-6a18e4a4_0_66bb_=-- diff --git a/media/inbound/2026-04-10_1728_G5开发周报_2026-04-07_--_2026-04-10---2cb66da3-3b72-4277-ae1c-b5ca5d4e8f62.eml b/media/inbound/2026-04-10_1728_G5开发周报_2026-04-07_--_2026-04-10---2cb66da3-3b72-4277-ae1c-b5ca5d4e8f62.eml new file mode 100644 index 0000000..a3e7d32 --- /dev/null +++ b/media/inbound/2026-04-10_1728_G5开发周报_2026-04-07_--_2026-04-10---2cb66da3-3b72-4277-ae1c-b5ca5d4e8f62.eml @@ -0,0 +1,494 @@ +Date: Fri, 10 Apr 2026 17:28:34 +0800 +From: =?utf-8?B?5p2o6L2p?= +To: =?utf-8?B?5YiY5by6?= +Cc: =?utf-8?B?5bGI5paw6b6Z?= , =?utf-8?B?6ZmI5piO?= + , =?utf-8?B?5pu+6I6J?= +Message-ID: <4cb27326-57ed-4130-91ed-1a88eb2fa132.yangxuan@witsoft.cn> +In-Reply-To: <53fadfca-4b2d-4128-b29a-94601b90264b.yangxuan@witsoft.cn> +References: <53fadfca-4b2d-4128-b29a-94601b90264b.yangxuan@witsoft.cn> +Subject: =?utf-8?B?RzXlvIDlj5HlkajmiqXjgJAyMDI2LTA0LTA3IC0tICAyMDI2LTA0?= + =?utf-8?B?LTEw44CR?= +MIME-Version: 1.0 +Content-Type: multipart/related; boundary="=_mailmaster-6a18e4a4_0_26a6_=" + +--=_mailmaster-6a18e4a4_0_26a6_= +Content-Type: multipart/alternative; boundary="=_mailmaster-6a18e4a4_0_428b_=" + +--=_mailmaster-6a18e4a4_0_428b_= +Content-Type: text/plain; charset="UTF-8" +Content-Transfer-Encoding: base64 + +5oKo5aW977yB5Lul5LiL5piv5oiR5pys5ZGo55qE5bel5L2c5oC757uT5Y+K5LiL5ZGo6K6h5YiS +77yM6K+35a6h6ZiF44CCCuacrOWRqOW3peS9nOaAu+e7kwrkuIDjgIHph43ngrnlt6XkvZzlrozm +iJDmg4XlhrUKCiAqIApHNei/m+mUgOWtmCA1LjQuNyDniYjmnKzlj5HluIMK5LqM44CB5bi46KeE +5bel5L2c5piO57uGCjIwMjYtMDQtMDcKCiAqIAroh6rliqjlhaXlupPpgLvovpHmorPnkIbkuI7k +vJjljJYKMjAyNi0wNC0wOAoKICogCuW3peW6j+WnlOWkli3lp5TlpJbmlLbmlpkv6YCA5paZ6Ieq +5Yqo5YWl5bqT6IGU6LCD5a6M5oiQCgogKiAK5bqT5a2Y6ZyA5rGC6Ieq5rWL5a6M5oiQCjIwMjYt +MDQtMDkKCiAqIArovazmtYvpl67popjkv67lpI0KCiAqIArlhaXlupPmtYHnqIvmorPnkIYKCiAq +IArlhaXlupPooajnu5PmnoTms6jph4oKMjAyNi0wNC0xMAoKICogCua1i+ivlemXrumimOS/ruWk +jQoKICogCuWQhOexu+Wei+WFpeW6k+WuouWVhuS/oeaBr+ais+eQhgoKICogCuWQhOexu+Wei+WH +uuWFpeW6k+aJueasoeWFs+iBlOais+eQhgrkuIvlkajph43ngrnku7vliqEKCiAqIAo1LjQuNyDn +iYjmnKzlvIDlj5HluIMKQmVzdCByZWdhcmRzLArmnajovakK5Zyw5Z2A77ya5Lit5Zu9wrfljZfk +uqzova/ku7bosLfova/ku7blpKfpgZMxMeWPt+iKseelnuWkp+WOpjNGCuaJi+acuu+8mjE4NzI2 +MTI4NDg5CumCrueuse+8mnlhbmd4dWFuQHdpdHNvZnQuY24K + +--=_mailmaster-6a18e4a4_0_428b_= +Content-Type: text/html; charset="UTF-8" +Content-Transfer-Encoding: base64 + +PGRpdiBjbGFzcz0iX19hbGl5dW5fZW1haWxfYm9keV9ibG9jayI+PGRpdiAgc3R5bGU9ImZvbnQt +ZmFtaWx5OiBUYWhvbWEsIEFyaWFsLCBTVEhlaXRpU0MtTGlnaHQsIFNpbVN1biI+PGRpdiAgc3R5 +bGU9ImNsZWFyOiBib3RoOyI+PHAgIGNpZD0ibjk5IiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLXAi +IG1kdHlwZT0icGFyYWdyYXBoIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1o +ZWlnaHQ6IGluaGVyaXQ7IG1hcmdpbjogMC44ZW0gMHB4OyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7 +IHBvc2l0aW9uOiByZWxhdGl2ZTsgY29sb3I6IHJnYig1MSwgNTEsIDUxKTsgZm9udC1mYW1pbHk6 +ICdPcGVuIFNhbnMnLCAnQ2xlYXIgU2FucycsICdIZWx2ZXRpY2EgTmV1ZScsIEhlbHZldGljYSwg +QXJpYWwsICdTZWdvZSBVSSBFbW9qaScsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTZweDsgZm9u +dC1zdHlsZTogbm9ybWFsOyBmb250LXZhcmlhbnQtbGlnYXR1cmVzOiBub3JtYWw7IGZvbnQtdmFy +aWFudC1jYXBzOiBub3JtYWw7IGZvbnQtd2VpZ2h0OiA0MDA7IGxldHRlci1zcGFjaW5nOiBub3Jt +YWw7IHRleHQtYWxpZ246IHN0YXJ0OyB0ZXh0LWluZGVudDogMHB4OyB0ZXh0LXRyYW5zZm9ybTog +bm9uZTsgd29yZC1zcGFjaW5nOiAwcHg7IHRleHQtZGVjb3JhdGlvbi10aGlja25lc3M6IGluaXRp +YWw7IHRleHQtZGVjb3JhdGlvbi1zdHlsZTogaW5pdGlhbDsgdGV4dC1kZWNvcmF0aW9uLWNvbG9y +OiBpbml0aWFsOyI+PHNwYW4gIGNsYXNzPSJtZC1wbGFpbiBtZC1leHBhbmQiIG1kLWlubGluZT0i +cGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+5oKo5aW977yB5Lul5LiL5piv +5oiR5pys5ZGo55qE5bel5L2c5oC757uT5Y+K5LiL5ZGo6K6h5YiS77yM6K+35a6h6ZiF44CCPC9z +cGFuPjwvcD48aDMgIGNpZD0ibjEwMSIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1oZWFkaW5nIiBt +ZHR5cGU9ImhlYWRpbmciIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBicmVhay1hZnRl +cjogYXZvaWQtcGFnZTsgYnJlYWstaW5zaWRlOiBhdm9pZDsgZm9udC1zaXplOiAxLjVlbTsgbWFy +Z2luLXRvcDogMXJlbTsgbWFyZ2luLWJvdHRvbTogMXJlbTsgcG9zaXRpb246IHJlbGF0aXZlOyBm +b250LXdlaWdodDogNzAwOyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IGNvbG9yOiByZ2IoNTEsIDUx +LCA1MSk7IGZvbnQtZmFtaWx5OiAnT3BlbiBTYW5zJywgJ0NsZWFyIFNhbnMnLCAnSGVsdmV0aWNh +IE5ldWUnLCBIZWx2ZXRpY2EsIEFyaWFsLCAnU2Vnb2UgVUkgRW1vamknLCBzYW5zLXNlcmlmOyBm +b250LXN0eWxlOiBub3JtYWw7IGZvbnQtdmFyaWFudC1saWdhdHVyZXM6IG5vcm1hbDsgZm9udC12 +YXJpYW50LWNhcHM6IG5vcm1hbDsgbGV0dGVyLXNwYWNpbmc6IG5vcm1hbDsgdGV4dC1hbGlnbjog +c3RhcnQ7IHRleHQtaW5kZW50OiAwcHg7IHRleHQtdHJhbnNmb3JtOiBub25lOyB3b3JkLXNwYWNp +bmc6IDBweDsgdGV4dC1kZWNvcmF0aW9uLXRoaWNrbmVzczogaW5pdGlhbDsgdGV4dC1kZWNvcmF0 +aW9uLXN0eWxlOiBpbml0aWFsOyB0ZXh0LWRlY29yYXRpb24tY29sb3I6IGluaXRpYWw7Ij48c3Bh +biAgY2xhc3M9Im1kLXBsYWluIiBtZC1pbmxpbmU9InBsYWluIiBzdHlsZT0iYm94LXNpemluZzog +Ym9yZGVyLWJveDsgZm9udC13ZWlnaHQ6IGJvbGQ7Ij7mnKzlkajlt6XkvZzmgLvnu5M8L3NwYW4+ +PC9oMz48aDQgIGNpZD0ibjEwMiIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1oZWFkaW5nIiBtZHR5 +cGU9ImhlYWRpbmciIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBicmVhay1hZnRlcjog +YXZvaWQtcGFnZTsgYnJlYWstaW5zaWRlOiBhdm9pZDsgZm9udC1zaXplOiAxLjI1ZW07IG1hcmdp +bi10b3A6IDFyZW07IG1hcmdpbi1ib3R0b206IDFyZW07IHBvc2l0aW9uOiByZWxhdGl2ZTsgZm9u +dC13ZWlnaHQ6IDcwMDsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyBjb2xvcjogcmdiKDUxLCA1MSwg +NTEpOyBmb250LWZhbWlseTogJ09wZW4gU2FucycsICdDbGVhciBTYW5zJywgJ0hlbHZldGljYSBO +ZXVlJywgSGVsdmV0aWNhLCBBcmlhbCwgJ1NlZ29lIFVJIEVtb2ppJywgc2Fucy1zZXJpZjsgZm9u +dC1zdHlsZTogbm9ybWFsOyBmb250LXZhcmlhbnQtbGlnYXR1cmVzOiBub3JtYWw7IGZvbnQtdmFy +aWFudC1jYXBzOiBub3JtYWw7IGxldHRlci1zcGFjaW5nOiBub3JtYWw7IHRleHQtYWxpZ246IHN0 +YXJ0OyB0ZXh0LWluZGVudDogMHB4OyB0ZXh0LXRyYW5zZm9ybTogbm9uZTsgd29yZC1zcGFjaW5n +OiAwcHg7IHRleHQtZGVjb3JhdGlvbi10aGlja25lc3M6IGluaXRpYWw7IHRleHQtZGVjb3JhdGlv +bi1zdHlsZTogaW5pdGlhbDsgdGV4dC1kZWNvcmF0aW9uLWNvbG9yOiBpbml0aWFsOyI+PHNwYW4g +IGNsYXNzPSJtZC1wbGFpbiIgbWQtaW5saW5lPSJwbGFpbiIgc3R5bGU9ImJveC1zaXppbmc6IGJv +cmRlci1ib3g7Ij7kuIDjgIHph43ngrnlt6XkvZzlrozmiJDmg4XlhrU8L3NwYW4+PC9oND48b2wg +IGNpZD0ibjEwMyIgY2xhc3M9Im9sLWxpc3QiIG1kdHlwZT0ibGlzdCIgc3RhcnQ9IiIgc3R5bGU9 +ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMC44ZW0gMHB4OyBwYWRkaW5nLWxlZnQ6 +IDMwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsgY29sb3I6IHJnYig1MSwgNTEsIDUxKTsgZm9udC1m +YW1pbHk6ICdPcGVuIFNhbnMnLCAnQ2xlYXIgU2FucycsICdIZWx2ZXRpY2EgTmV1ZScsIEhlbHZl +dGljYSwgQXJpYWwsICdTZWdvZSBVSSBFbW9qaScsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTZw +eDsgZm9udC1zdHlsZTogbm9ybWFsOyBmb250LXZhcmlhbnQtbGlnYXR1cmVzOiBub3JtYWw7IGZv +bnQtdmFyaWFudC1jYXBzOiBub3JtYWw7IGZvbnQtd2VpZ2h0OiA0MDA7IGxldHRlci1zcGFjaW5n +OiBub3JtYWw7IHRleHQtYWxpZ246IHN0YXJ0OyB0ZXh0LWluZGVudDogMHB4OyB0ZXh0LXRyYW5z +Zm9ybTogbm9uZTsgd2hpdGUtc3BhY2U6IG5vcm1hbDsgd29yZC1zcGFjaW5nOiAwcHg7IHRleHQt +ZGVjb3JhdGlvbi10aGlja25lc3M6IGluaXRpYWw7IHRleHQtZGVjb3JhdGlvbi1zdHlsZTogaW5p +dGlhbDsgdGV4dC1kZWNvcmF0aW9uLWNvbG9yOiBpbml0aWFsOyI+PGxpICBjaWQ9Im4xMDQiIGNs +YXNzPSJtZC1saXN0LWl0ZW0iIG1kdHlwZT0ibGlzdF9pdGVtIiBzdHlsZT0iYm94LXNpemluZzog +Ym9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxwICBjaWQ9Im4x +MDUiIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCIgbWR0eXBlPSJwYXJhZ3JhcGgiIHN0eWxlPSJi +b3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5oZXJpdDsgbWFyZ2luOiAwcHgg +MHB4IDAuNXJlbTsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48 +c3BhbiAgY2xhc3M9Im1kLXBsYWluIiBtZC1pbmxpbmU9InBsYWluIiBzdHlsZT0iYm94LXNpemlu +ZzogYm9yZGVyLWJveDsiPkc16L+b6ZSA5a2YIDUuNC43IOeJiOacrOWPkeW4gzwvc3Bhbj48L3A+ +PC9saT48L29sPjxoNCAgY2lkPSJuMTA2IiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLWhlYWRpbmci +IG1kdHlwZT0iaGVhZGluZyIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGJyZWFrLWFm +dGVyOiBhdm9pZC1wYWdlOyBicmVhay1pbnNpZGU6IGF2b2lkOyBmb250LXNpemU6IDEuMjVlbTsg +bWFyZ2luLXRvcDogMXJlbTsgbWFyZ2luLWJvdHRvbTogMXJlbTsgcG9zaXRpb246IHJlbGF0aXZl +OyBmb250LXdlaWdodDogNzAwOyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IGNvbG9yOiByZ2IoNTEs +IDUxLCA1MSk7IGZvbnQtZmFtaWx5OiAnT3BlbiBTYW5zJywgJ0NsZWFyIFNhbnMnLCAnSGVsdmV0 +aWNhIE5ldWUnLCBIZWx2ZXRpY2EsIEFyaWFsLCAnU2Vnb2UgVUkgRW1vamknLCBzYW5zLXNlcmlm +OyBmb250LXN0eWxlOiBub3JtYWw7IGZvbnQtdmFyaWFudC1saWdhdHVyZXM6IG5vcm1hbDsgZm9u +dC12YXJpYW50LWNhcHM6IG5vcm1hbDsgbGV0dGVyLXNwYWNpbmc6IG5vcm1hbDsgdGV4dC1hbGln +bjogc3RhcnQ7IHRleHQtaW5kZW50OiAwcHg7IHRleHQtdHJhbnNmb3JtOiBub25lOyB3b3JkLXNw +YWNpbmc6IDBweDsgdGV4dC1kZWNvcmF0aW9uLXRoaWNrbmVzczogaW5pdGlhbDsgdGV4dC1kZWNv +cmF0aW9uLXN0eWxlOiBpbml0aWFsOyB0ZXh0LWRlY29yYXRpb24tY29sb3I6IGluaXRpYWw7Ij48 +c3BhbiAgY2xhc3M9Im1kLXBsYWluIiBtZC1pbmxpbmU9InBsYWluIiBzdHlsZT0iYm94LXNpemlu +ZzogYm9yZGVyLWJveDsiPuS6jOOAgeW4uOinhOW3peS9nOaYjue7hjwvc3Bhbj48L2g0PjxwICBj +aWQ9Im4xMDciIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCIgbWR0eXBlPSJwYXJhZ3JhcGgiIHN0 +eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5oZXJpdDsgbWFyZ2lu +OiAwLjhlbSAwcHg7IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJlbGF0aXZlOyBj +b2xvcjogcmdiKDUxLCA1MSwgNTEpOyBmb250LWZhbWlseTogJ09wZW4gU2FucycsICdDbGVhciBT +YW5zJywgJ0hlbHZldGljYSBOZXVlJywgSGVsdmV0aWNhLCBBcmlhbCwgJ1NlZ29lIFVJIEVtb2pp +Jywgc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxNnB4OyBmb250LXN0eWxlOiBub3JtYWw7IGZvbnQt +dmFyaWFudC1saWdhdHVyZXM6IG5vcm1hbDsgZm9udC12YXJpYW50LWNhcHM6IG5vcm1hbDsgZm9u +dC13ZWlnaHQ6IDQwMDsgbGV0dGVyLXNwYWNpbmc6IG5vcm1hbDsgdGV4dC1hbGlnbjogc3RhcnQ7 +IHRleHQtaW5kZW50OiAwcHg7IHRleHQtdHJhbnNmb3JtOiBub25lOyB3b3JkLXNwYWNpbmc6IDBw +eDsgdGV4dC1kZWNvcmF0aW9uLXRoaWNrbmVzczogaW5pdGlhbDsgdGV4dC1kZWNvcmF0aW9uLXN0 +eWxlOiBpbml0aWFsOyB0ZXh0LWRlY29yYXRpb24tY29sb3I6IGluaXRpYWw7Ij48c3BhbiAgY2xh +c3M9Im1kLXBsYWluIiBtZC1pbmxpbmU9InBsYWluIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVy +LWJveDsgZm9udC13ZWlnaHQ6IGJvbGQ7Ij4yMDI2LTA0LTA3PC9zcGFuPjwvcD48b2wgIGNpZD0i +bjEwOCIgY2xhc3M9Im9sLWxpc3QiIG1kdHlwZT0ibGlzdCIgc3RhcnQ9IiIgc3R5bGU9ImJveC1z +aXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMC44ZW0gMHB4OyBwYWRkaW5nLWxlZnQ6IDMwcHg7 +IHBvc2l0aW9uOiByZWxhdGl2ZTsgY29sb3I6IHJnYig1MSwgNTEsIDUxKTsgZm9udC1mYW1pbHk6 +ICdPcGVuIFNhbnMnLCAnQ2xlYXIgU2FucycsICdIZWx2ZXRpY2EgTmV1ZScsIEhlbHZldGljYSwg +QXJpYWwsICdTZWdvZSBVSSBFbW9qaScsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTZweDsgZm9u +dC1zdHlsZTogbm9ybWFsOyBmb250LXZhcmlhbnQtbGlnYXR1cmVzOiBub3JtYWw7IGZvbnQtdmFy +aWFudC1jYXBzOiBub3JtYWw7IGZvbnQtd2VpZ2h0OiA0MDA7IGxldHRlci1zcGFjaW5nOiBub3Jt +YWw7IHRleHQtYWxpZ246IHN0YXJ0OyB0ZXh0LWluZGVudDogMHB4OyB0ZXh0LXRyYW5zZm9ybTog +bm9uZTsgd2hpdGUtc3BhY2U6IG5vcm1hbDsgd29yZC1zcGFjaW5nOiAwcHg7IHRleHQtZGVjb3Jh +dGlvbi10aGlja25lc3M6IGluaXRpYWw7IHRleHQtZGVjb3JhdGlvbi1zdHlsZTogaW5pdGlhbDsg +dGV4dC1kZWNvcmF0aW9uLWNvbG9yOiBpbml0aWFsOyI+PGxpICBjaWQ9Im4xMDkiIGNsYXNzPSJt +ZC1saXN0LWl0ZW0iIG1kdHlwZT0ibGlzdF9pdGVtIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVy +LWJveDsgbWFyZ2luOiAwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxwICBjaWQ9Im4xMTAiIGNs +YXNzPSJtZC1lbmQtYmxvY2sgbWQtcCIgbWR0eXBlPSJwYXJhZ3JhcGgiIHN0eWxlPSJib3gtc2l6 +aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5oZXJpdDsgbWFyZ2luOiAwcHggMHB4IDAu +NXJlbTsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48c3BhbiAg +Y2xhc3M9Im1kLXBsYWluIiBtZC1pbmxpbmU9InBsYWluIiBzdHlsZT0iYm94LXNpemluZzogYm9y +ZGVyLWJveDsiPuiHquWKqOWFpeW6k+mAu+i+keais+eQhuS4juS8mOWMljwvc3Bhbj48L3A+PC9s +aT48L29sPjxwICBjaWQ9Im4xMTEiIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCIgbWR0eXBlPSJw +YXJhZ3JhcGgiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5o +ZXJpdDsgbWFyZ2luOiAwLjhlbSAwcHg7IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRpb246 +IHJlbGF0aXZlOyBjb2xvcjogcmdiKDUxLCA1MSwgNTEpOyBmb250LWZhbWlseTogJ09wZW4gU2Fu +cycsICdDbGVhciBTYW5zJywgJ0hlbHZldGljYSBOZXVlJywgSGVsdmV0aWNhLCBBcmlhbCwgJ1Nl +Z29lIFVJIEVtb2ppJywgc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxNnB4OyBmb250LXN0eWxlOiBu +b3JtYWw7IGZvbnQtdmFyaWFudC1saWdhdHVyZXM6IG5vcm1hbDsgZm9udC12YXJpYW50LWNhcHM6 +IG5vcm1hbDsgZm9udC13ZWlnaHQ6IDQwMDsgbGV0dGVyLXNwYWNpbmc6IG5vcm1hbDsgdGV4dC1h +bGlnbjogc3RhcnQ7IHRleHQtaW5kZW50OiAwcHg7IHRleHQtdHJhbnNmb3JtOiBub25lOyB3b3Jk +LXNwYWNpbmc6IDBweDsgdGV4dC1kZWNvcmF0aW9uLXRoaWNrbmVzczogaW5pdGlhbDsgdGV4dC1k +ZWNvcmF0aW9uLXN0eWxlOiBpbml0aWFsOyB0ZXh0LWRlY29yYXRpb24tY29sb3I6IGluaXRpYWw7 +Ij48c3BhbiAgY2xhc3M9Im1kLXBsYWluIiBtZC1pbmxpbmU9InBsYWluIiBzdHlsZT0iYm94LXNp +emluZzogYm9yZGVyLWJveDsgZm9udC13ZWlnaHQ6IGJvbGQ7Ij4yMDI2LTA0LTA4PC9zcGFuPjwv +cD48b2wgIGNpZD0ibjExMiIgY2xhc3M9Im9sLWxpc3QiIG1kdHlwZT0ibGlzdCIgc3RhcnQ9IiIg +c3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMC44ZW0gMHB4OyBwYWRkaW5n +LWxlZnQ6IDMwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsgY29sb3I6IHJnYig1MSwgNTEsIDUxKTsg +Zm9udC1mYW1pbHk6ICdPcGVuIFNhbnMnLCAnQ2xlYXIgU2FucycsICdIZWx2ZXRpY2EgTmV1ZScs +IEhlbHZldGljYSwgQXJpYWwsICdTZWdvZSBVSSBFbW9qaScsIHNhbnMtc2VyaWY7IGZvbnQtc2l6 +ZTogMTZweDsgZm9udC1zdHlsZTogbm9ybWFsOyBmb250LXZhcmlhbnQtbGlnYXR1cmVzOiBub3Jt +YWw7IGZvbnQtdmFyaWFudC1jYXBzOiBub3JtYWw7IGZvbnQtd2VpZ2h0OiA0MDA7IGxldHRlci1z +cGFjaW5nOiBub3JtYWw7IHRleHQtYWxpZ246IHN0YXJ0OyB0ZXh0LWluZGVudDogMHB4OyB0ZXh0 +LXRyYW5zZm9ybTogbm9uZTsgd2hpdGUtc3BhY2U6IG5vcm1hbDsgd29yZC1zcGFjaW5nOiAwcHg7 +IHRleHQtZGVjb3JhdGlvbi10aGlja25lc3M6IGluaXRpYWw7IHRleHQtZGVjb3JhdGlvbi1zdHls +ZTogaW5pdGlhbDsgdGV4dC1kZWNvcmF0aW9uLWNvbG9yOiBpbml0aWFsOyI+PGxpICBjaWQ9Im4x +MTMiIGNsYXNzPSJtZC1saXN0LWl0ZW0iIG1kdHlwZT0ibGlzdF9pdGVtIiBzdHlsZT0iYm94LXNp +emluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxwICBj +aWQ9Im4xMTQiIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCIgbWR0eXBlPSJwYXJhZ3JhcGgiIHN0 +eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5oZXJpdDsgbWFyZ2lu +OiAwcHggMHB4IDAuNXJlbTsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyBwb3NpdGlvbjogcmVsYXRp +dmU7Ij48c3BhbiAgY2xhc3M9Im1kLXBsYWluIiBtZC1pbmxpbmU9InBsYWluIiBzdHlsZT0iYm94 +LXNpemluZzogYm9yZGVyLWJveDsiPuW3peW6j+WnlOWkli3lp5TlpJbmlLbmlpkv6YCA5paZ6Ieq +5Yqo5YWl5bqT6IGU6LCD5a6M5oiQPC9zcGFuPjwvcD48L2xpPjxsaSAgY2lkPSJuMTE1IiBjbGFz +cz0ibWQtbGlzdC1pdGVtIiBtZHR5cGU9Imxpc3RfaXRlbSIgc3R5bGU9ImJveC1zaXppbmc6IGJv +cmRlci1ib3g7IG1hcmdpbjogMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48cCAgY2lkPSJuMTE2 +IiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLXAiIG1kdHlwZT0icGFyYWdyYXBoIiBzdHlsZT0iYm94 +LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IG1hcmdpbjogMHB4IDBw +eCAwLjVyZW07IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHNw +YW4gIGNsYXNzPSJtZC1wbGFpbiIgbWQtaW5saW5lPSJwbGFpbiIgc3R5bGU9ImJveC1zaXppbmc6 +IGJvcmRlci1ib3g7Ij7lupPlrZjpnIDmsYLoh6rmtYvlrozmiJA8L3NwYW4+PC9wPjwvbGk+PC9v +bD48cCAgY2lkPSJuMTE3IiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLXAiIG1kdHlwZT0icGFyYWdy +YXBoIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7 +IG1hcmdpbjogMC44ZW0gMHB4OyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0aW9uOiByZWxh +dGl2ZTsgY29sb3I6IHJnYig1MSwgNTEsIDUxKTsgZm9udC1mYW1pbHk6ICdPcGVuIFNhbnMnLCAn +Q2xlYXIgU2FucycsICdIZWx2ZXRpY2EgTmV1ZScsIEhlbHZldGljYSwgQXJpYWwsICdTZWdvZSBV +SSBFbW9qaScsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTZweDsgZm9udC1zdHlsZTogbm9ybWFs +OyBmb250LXZhcmlhbnQtbGlnYXR1cmVzOiBub3JtYWw7IGZvbnQtdmFyaWFudC1jYXBzOiBub3Jt +YWw7IGZvbnQtd2VpZ2h0OiA0MDA7IGxldHRlci1zcGFjaW5nOiBub3JtYWw7IHRleHQtYWxpZ246 +IHN0YXJ0OyB0ZXh0LWluZGVudDogMHB4OyB0ZXh0LXRyYW5zZm9ybTogbm9uZTsgd29yZC1zcGFj +aW5nOiAwcHg7IHRleHQtZGVjb3JhdGlvbi10aGlja25lc3M6IGluaXRpYWw7IHRleHQtZGVjb3Jh +dGlvbi1zdHlsZTogaW5pdGlhbDsgdGV4dC1kZWNvcmF0aW9uLWNvbG9yOiBpbml0aWFsOyI+PHNw +YW4gIGNsYXNzPSJtZC1wbGFpbiIgbWQtaW5saW5lPSJwbGFpbiIgc3R5bGU9ImJveC1zaXppbmc6 +IGJvcmRlci1ib3g7IGZvbnQtd2VpZ2h0OiBib2xkOyI+MjAyNi0wNC0wOTwvc3Bhbj48L3A+PG9s +ICBjaWQ9Im4xMTgiIGNsYXNzPSJvbC1saXN0IiBtZHR5cGU9Imxpc3QiIHN0YXJ0PSIiIHN0eWxl +PSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDAuOGVtIDBweDsgcGFkZGluZy1sZWZ0 +OiAzMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7IGNvbG9yOiByZ2IoNTEsIDUxLCA1MSk7IGZvbnQt +ZmFtaWx5OiAnT3BlbiBTYW5zJywgJ0NsZWFyIFNhbnMnLCAnSGVsdmV0aWNhIE5ldWUnLCBIZWx2 +ZXRpY2EsIEFyaWFsLCAnU2Vnb2UgVUkgRW1vamknLCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDE2 +cHg7IGZvbnQtc3R5bGU6IG5vcm1hbDsgZm9udC12YXJpYW50LWxpZ2F0dXJlczogbm9ybWFsOyBm +b250LXZhcmlhbnQtY2Fwczogbm9ybWFsOyBmb250LXdlaWdodDogNDAwOyBsZXR0ZXItc3BhY2lu +Zzogbm9ybWFsOyB0ZXh0LWFsaWduOiBzdGFydDsgdGV4dC1pbmRlbnQ6IDBweDsgdGV4dC10cmFu +c2Zvcm06IG5vbmU7IHdoaXRlLXNwYWNlOiBub3JtYWw7IHdvcmQtc3BhY2luZzogMHB4OyB0ZXh0 +LWRlY29yYXRpb24tdGhpY2tuZXNzOiBpbml0aWFsOyB0ZXh0LWRlY29yYXRpb24tc3R5bGU6IGlu +aXRpYWw7IHRleHQtZGVjb3JhdGlvbi1jb2xvcjogaW5pdGlhbDsiPjxsaSAgY2lkPSJuMTE5IiBj +bGFzcz0ibWQtbGlzdC1pdGVtIiBtZHR5cGU9Imxpc3RfaXRlbSIgc3R5bGU9ImJveC1zaXppbmc6 +IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48cCAgY2lkPSJu +MTIwIiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLXAiIG1kdHlwZT0icGFyYWdyYXBoIiBzdHlsZT0i +Ym94LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IG1hcmdpbjogMHB4 +IDBweCAwLjVyZW07IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJlbGF0aXZlOyI+ +PHNwYW4gIGNsYXNzPSJtZC1wbGFpbiIgbWQtaW5saW5lPSJwbGFpbiIgc3R5bGU9ImJveC1zaXpp +bmc6IGJvcmRlci1ib3g7Ij7ovazmtYvpl67popjkv67lpI08L3NwYW4+PC9wPjwvbGk+PGxpICBj +aWQ9Im4xMjEiIGNsYXNzPSJtZC1saXN0LWl0ZW0iIG1kdHlwZT0ibGlzdF9pdGVtIiBzdHlsZT0i +Ym94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsi +PjxwICBjaWQ9Im4xMjIiIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCIgbWR0eXBlPSJwYXJhZ3Jh +cGgiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5oZXJpdDsg +bWFyZ2luOiAwcHggMHB4IDAuNXJlbTsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyBwb3NpdGlvbjog +cmVsYXRpdmU7Ij48c3BhbiAgY2xhc3M9Im1kLXBsYWluIiBtZC1pbmxpbmU9InBsYWluIiBzdHls +ZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPuWFpeW6k+a1geeoi+ais+eQhjwvc3Bhbj48L3A+ +PC9saT48bGkgIGNpZD0ibjEyMyIgY2xhc3M9Im1kLWxpc3QtaXRlbSIgbWR0eXBlPSJsaXN0X2l0 +ZW0iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcG9zaXRpb246 +IHJlbGF0aXZlOyI+PHAgIGNpZD0ibjEyNCIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1wIiBtZHR5 +cGU9InBhcmFncmFwaCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGxpbmUtaGVpZ2h0 +OiBpbmhlcml0OyBtYXJnaW46IDBweCAwcHggMC41cmVtOyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7 +IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxzcGFuICBjbGFzcz0ibWQtcGxhaW4iIG1kLWlubGluZT0i +cGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+5YWl5bqT6KGo57uT5p6E5rOo +6YeKPC9zcGFuPjwvcD48L2xpPjwvb2w+PHAgIGNpZD0ibjEyNSIgY2xhc3M9Im1kLWVuZC1ibG9j +ayBtZC1wIiBtZHR5cGU9InBhcmFncmFwaCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7 +IGxpbmUtaGVpZ2h0OiBpbmhlcml0OyBtYXJnaW46IDAuOGVtIDBweDsgd2hpdGUtc3BhY2U6IHBy +ZS13cmFwOyBwb3NpdGlvbjogcmVsYXRpdmU7IGNvbG9yOiByZ2IoNTEsIDUxLCA1MSk7IGZvbnQt +ZmFtaWx5OiAnT3BlbiBTYW5zJywgJ0NsZWFyIFNhbnMnLCAnSGVsdmV0aWNhIE5ldWUnLCBIZWx2 +ZXRpY2EsIEFyaWFsLCAnU2Vnb2UgVUkgRW1vamknLCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDE2 +cHg7IGZvbnQtc3R5bGU6IG5vcm1hbDsgZm9udC12YXJpYW50LWxpZ2F0dXJlczogbm9ybWFsOyBm +b250LXZhcmlhbnQtY2Fwczogbm9ybWFsOyBmb250LXdlaWdodDogNDAwOyBsZXR0ZXItc3BhY2lu +Zzogbm9ybWFsOyB0ZXh0LWFsaWduOiBzdGFydDsgdGV4dC1pbmRlbnQ6IDBweDsgdGV4dC10cmFu +c2Zvcm06IG5vbmU7IHdvcmQtc3BhY2luZzogMHB4OyB0ZXh0LWRlY29yYXRpb24tdGhpY2tuZXNz +OiBpbml0aWFsOyB0ZXh0LWRlY29yYXRpb24tc3R5bGU6IGluaXRpYWw7IHRleHQtZGVjb3JhdGlv +bi1jb2xvcjogaW5pdGlhbDsiPjxzcGFuICBjbGFzcz0ibWQtcGxhaW4iIG1kLWlubGluZT0icGxh +aW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBmb250LXdlaWdodDogYm9sZDsiPjIw +MjYtMDQtMTA8L3NwYW4+PC9wPjxvbCAgY2lkPSJuMTI2IiBjbGFzcz0ib2wtbGlzdCIgbWR0eXBl +PSJsaXN0IiBzdGFydD0iIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAw +LjhlbSAwcHg7IHBhZGRpbmctbGVmdDogMzBweDsgcG9zaXRpb246IHJlbGF0aXZlOyBjb2xvcjog +cmdiKDUxLCA1MSwgNTEpOyBmb250LWZhbWlseTogJ09wZW4gU2FucycsICdDbGVhciBTYW5zJywg +J0hlbHZldGljYSBOZXVlJywgSGVsdmV0aWNhLCBBcmlhbCwgJ1NlZ29lIFVJIEVtb2ppJywgc2Fu +cy1zZXJpZjsgZm9udC1zaXplOiAxNnB4OyBmb250LXN0eWxlOiBub3JtYWw7IGZvbnQtdmFyaWFu +dC1saWdhdHVyZXM6IG5vcm1hbDsgZm9udC12YXJpYW50LWNhcHM6IG5vcm1hbDsgZm9udC13ZWln +aHQ6IDQwMDsgbGV0dGVyLXNwYWNpbmc6IG5vcm1hbDsgdGV4dC1hbGlnbjogc3RhcnQ7IHRleHQt +aW5kZW50OiAwcHg7IHRleHQtdHJhbnNmb3JtOiBub25lOyB3aGl0ZS1zcGFjZTogbm9ybWFsOyB3 +b3JkLXNwYWNpbmc6IDBweDsgdGV4dC1kZWNvcmF0aW9uLXRoaWNrbmVzczogaW5pdGlhbDsgdGV4 +dC1kZWNvcmF0aW9uLXN0eWxlOiBpbml0aWFsOyB0ZXh0LWRlY29yYXRpb24tY29sb3I6IGluaXRp +YWw7Ij48bGkgIGNpZD0ibjEyNyIgY2xhc3M9Im1kLWxpc3QtaXRlbSBtZC1mb2N1cy1jb250YWlu +ZXIiIG1kdHlwZT0ibGlzdF9pdGVtIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFy +Z2luOiAwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxwICBjaWQ9Im4xMjgiIGNsYXNzPSJtZC1l +bmQtYmxvY2sgbWQtcCBtZC1mb2N1cyIgbWR0eXBlPSJwYXJhZ3JhcGgiIHN0eWxlPSJib3gtc2l6 +aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5oZXJpdDsgbWFyZ2luOiAwcHggMHB4IDAu +NXJlbTsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48c3BhbiAg +Y2xhc3M9Im1kLXBsYWluIG1kLWV4cGFuZCIgbWQtaW5saW5lPSJwbGFpbiIgc3R5bGU9ImJveC1z +aXppbmc6IGJvcmRlci1ib3g7Ij7mtYvor5Xpl67popjkv67lpI08L3NwYW4+PC9wPjwvbGk+PGxp +ICBjaWQ9Im4xMjkiIGNsYXNzPSJtZC1saXN0LWl0ZW0iIG1kdHlwZT0ibGlzdF9pdGVtIiBzdHls +ZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBvc2l0aW9uOiByZWxhdGl2 +ZTsiPjxwICBjaWQ9Im4xMzAiIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCIgbWR0eXBlPSJwYXJh +Z3JhcGgiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5oZXJp +dDsgbWFyZ2luOiAwcHggMHB4IDAuNXJlbTsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyBwb3NpdGlv +bjogcmVsYXRpdmU7Ij48c3BhbiAgY2xhc3M9Im1kLXBsYWluIiBtZC1pbmxpbmU9InBsYWluIiBz +dHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPuWQhOexu+Wei+WFpeW6k+WuouWVhuS/oeaB +r+ais+eQhjwvc3Bhbj48L3A+PC9saT48bGkgIGNpZD0ibjEzMSIgY2xhc3M9Im1kLWxpc3QtaXRl +bSIgbWR0eXBlPSJsaXN0X2l0ZW0iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJn +aW46IDBweDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHAgIGNpZD0ibjEzMiIgY2xhc3M9Im1kLWVu +ZC1ibG9jayBtZC1wIiBtZHR5cGU9InBhcmFncmFwaCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRl +ci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhlcml0OyBtYXJnaW46IDBweCAwcHggMC41cmVtOyB3aGl0 +ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxzcGFuICBjbGFzcz0ibWQt +cGxhaW4iIG1kLWlubGluZT0icGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+ +5ZCE57G75Z6L5Ye65YWl5bqT5om55qyh5YWz6IGU5qKz55CGPC9zcGFuPjwvcD48L2xpPjwvb2w+ +PGgzICBjaWQ9Im4xMzMiIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtaGVhZGluZyIgbWR0eXBlPSJo +ZWFkaW5nIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgYnJlYWstYWZ0ZXI6IGF2b2lk +LXBhZ2U7IGJyZWFrLWluc2lkZTogYXZvaWQ7IGZvbnQtc2l6ZTogMS41ZW07IG1hcmdpbi10b3A6 +IDFyZW07IG1hcmdpbi1ib3R0b206IDFyZW07IHBvc2l0aW9uOiByZWxhdGl2ZTsgZm9udC13ZWln +aHQ6IDcwMDsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyBjb2xvcjogcmdiKDUxLCA1MSwgNTEpOyBm +b250LWZhbWlseTogJ09wZW4gU2FucycsICdDbGVhciBTYW5zJywgJ0hlbHZldGljYSBOZXVlJywg +SGVsdmV0aWNhLCBBcmlhbCwgJ1NlZ29lIFVJIEVtb2ppJywgc2Fucy1zZXJpZjsgZm9udC1zdHls +ZTogbm9ybWFsOyBmb250LXZhcmlhbnQtbGlnYXR1cmVzOiBub3JtYWw7IGZvbnQtdmFyaWFudC1j +YXBzOiBub3JtYWw7IGxldHRlci1zcGFjaW5nOiBub3JtYWw7IHRleHQtYWxpZ246IHN0YXJ0OyB0 +ZXh0LWluZGVudDogMHB4OyB0ZXh0LXRyYW5zZm9ybTogbm9uZTsgd29yZC1zcGFjaW5nOiAwcHg7 +IHRleHQtZGVjb3JhdGlvbi10aGlja25lc3M6IGluaXRpYWw7IHRleHQtZGVjb3JhdGlvbi1zdHls +ZTogaW5pdGlhbDsgdGV4dC1kZWNvcmF0aW9uLWNvbG9yOiBpbml0aWFsOyI+PHNwYW4gIGNsYXNz +PSJtZC1wbGFpbiIgbWQtaW5saW5lPSJwbGFpbiIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1i +b3g7IGZvbnQtd2VpZ2h0OiBib2xkOyI+5LiL5ZGo6YeN54K55Lu75YqhPC9zcGFuPjwvaDM+PHVs +ICBjaWQ9Im4xMzQiIGNsYXNzPSJ1bC1saXN0IiBkYXRhLW1hcms9Ii0iIG1kdHlwZT0ibGlzdCIg +c3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMC44ZW0gMHB4OyBwYWRkaW5n +LWxlZnQ6IDMwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsgY29sb3I6IHJnYig1MSwgNTEsIDUxKTsg +Zm9udC1mYW1pbHk6ICdPcGVuIFNhbnMnLCAnQ2xlYXIgU2FucycsICdIZWx2ZXRpY2EgTmV1ZScs +IEhlbHZldGljYSwgQXJpYWwsICdTZWdvZSBVSSBFbW9qaScsIHNhbnMtc2VyaWY7IGZvbnQtc2l6 +ZTogMTZweDsgZm9udC1zdHlsZTogbm9ybWFsOyBmb250LXZhcmlhbnQtbGlnYXR1cmVzOiBub3Jt +YWw7IGZvbnQtdmFyaWFudC1jYXBzOiBub3JtYWw7IGZvbnQtd2VpZ2h0OiA0MDA7IGxldHRlci1z +cGFjaW5nOiBub3JtYWw7IHRleHQtYWxpZ246IHN0YXJ0OyB0ZXh0LWluZGVudDogMHB4OyB0ZXh0 +LXRyYW5zZm9ybTogbm9uZTsgd2hpdGUtc3BhY2U6IG5vcm1hbDsgd29yZC1zcGFjaW5nOiAwcHg7 +IHRleHQtZGVjb3JhdGlvbi10aGlja25lc3M6IGluaXRpYWw7IHRleHQtZGVjb3JhdGlvbi1zdHls +ZTogaW5pdGlhbDsgdGV4dC1kZWNvcmF0aW9uLWNvbG9yOiBpbml0aWFsOyI+PGxpICBjaWQ9Im4x +MzUiIGNsYXNzPSJtZC1saXN0LWl0ZW0iIG1kdHlwZT0ibGlzdF9pdGVtIiBzdHlsZT0iYm94LXNp +emluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxwICBj +aWQ9Im4xMzYiIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCIgbWR0eXBlPSJwYXJhZ3JhcGgiIHN0 +eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5oZXJpdDsgbWFyZ2lu +OiAwcHggMHB4IDAuNXJlbTsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyBwb3NpdGlvbjogcmVsYXRp +dmU7Ij48c3BhbiAgY2xhc3M9Im1kLXBsYWluIiBtZC1pbmxpbmU9InBsYWluIiBzdHlsZT0iYm94 +LXNpemluZzogYm9yZGVyLWJveDsiPjUuNC43IOeJiOacrOW8gOWPkeW4gzwvc3Bhbj48L3A+PC9s +aT48L3VsPjxiciAgY2xhc3M9IkFwcGxlLWludGVyY2hhbmdlLW5ld2xpbmUiPjxkaXYgIHN0eWxl +PSJjbGVhcjogYm90aDsgZm9udC1mYW1pbHk6IFRhaG9tYSwgQXJpYWwsIFNUSGVpdGlTQy1MaWdo +dCwgU2ltU3VuOyI+PHNwYW4gPjxiciA+PC9zcGFuPjwvZGl2PjxkaXYgIHN0eWxlPSJjbGVhcjog +Ym90aDsiPjxkaXYgIGNsYXNzPSIgX19hbGl5dW5fbm9kZV9oYXNfY29sb3IiIHN0eWxlPSJtYXJn +aW46IDBweDsgcGFkZGluZzogMHB4OyBib3JkZXI6IDBweDsgb3V0bGluZTogMHB4OyBjb2xvcjog +cmdiKDAsIDAsIDApOyBmb250LWZhbWlseTogVGFob21hLCBBcmlhbCwgU1RIZWl0aSwgU2ltU3Vu +OyBmb250LXNpemU6IDE0cHg7IGZvbnQtc3R5bGU6IG5vcm1hbDsgZm9udC12YXJpYW50LWxpZ2F0 +dXJlczogbm9ybWFsOyBmb250LXZhcmlhbnQtY2Fwczogbm9ybWFsOyBmb250LXdlaWdodDogNDAw +OyB0ZXh0LWFsaWduOiBzdGFydDsgdGV4dC1pbmRlbnQ6IDBweDsgdGV4dC10cmFuc2Zvcm06IG5v +bmU7IHRleHQtZGVjb3JhdGlvbi10aGlja25lc3M6IGluaXRpYWw7IHRleHQtZGVjb3JhdGlvbi1z +dHlsZTogaW5pdGlhbDsgdGV4dC1kZWNvcmF0aW9uLWNvbG9yOiBpbml0aWFsOyBjbGVhcjogYm90 +aDsiPjxzcGFuICBjbGFzcz0iIF9fYWxpeXVuX25vZGVfaGFzX2NvbG9yIiBzdHlsZT0ibWFyZ2lu +OiAwcHg7IHBhZGRpbmc6IDBweDsgYm9yZGVyOiAwcHg7IG91dGxpbmU6IDBweDsgZm9udC1mYW1p +bHk6ICdNaWNyb3NvZnQgWWFoZWknOyBmb250LXNpemU6IDEzcHg7IGNvbG9yOiByZ2IoMTkxLCAx +OTEsIDE5MSk7Ij5CZXN0IHJlZ2FyZHMsPC9zcGFuPjwvZGl2PjxkaXYgIGNsYXNzPSIgX19hbGl5 +dW5fbm9kZV9oYXNfY29sb3IiIHN0eWxlPSJtYXJnaW46IDBweDsgcGFkZGluZzogMHB4OyBib3Jk +ZXI6IDBweDsgb3V0bGluZTogMHB4OyBjb2xvcjogcmdiKDAsIDAsIDApOyBmb250LWZhbWlseTog +VGFob21hLCBBcmlhbCwgU1RIZWl0aSwgU2ltU3VuOyBmb250LXNpemU6IDE0cHg7IGZvbnQtc3R5 +bGU6IG5vcm1hbDsgZm9udC12YXJpYW50LWxpZ2F0dXJlczogbm9ybWFsOyBmb250LXZhcmlhbnQt +Y2Fwczogbm9ybWFsOyBmb250LXdlaWdodDogNDAwOyB0ZXh0LWFsaWduOiBzdGFydDsgdGV4dC1p +bmRlbnQ6IDBweDsgdGV4dC10cmFuc2Zvcm06IG5vbmU7IHRleHQtZGVjb3JhdGlvbi10aGlja25l +c3M6IGluaXRpYWw7IHRleHQtZGVjb3JhdGlvbi1zdHlsZTogaW5pdGlhbDsgdGV4dC1kZWNvcmF0 +aW9uLWNvbG9yOiBpbml0aWFsOyBjbGVhcjogYm90aDsiPjxzcGFuICBjbGFzcz0iIF9fYWxpeXVu +X25vZGVfaGFzX2NvbG9yIiBzdHlsZT0ibWFyZ2luOiAwcHg7IHBhZGRpbmc6IDBweDsgYm9yZGVy +OiAwcHg7IG91dGxpbmU6IDBweDsgZm9udC1mYW1pbHk6ICdNaWNyb3NvZnQgWWFoZWknOyBmb250 +LXNpemU6IDEzcHg7IGNvbG9yOiByZ2IoMTkxLCAxOTEsIDE5MSk7Ij7mnajovak8L3NwYW4+PC9k +aXY+PGRpdiAgY2xhc3M9IiBfX2FsaXl1bl9ub2RlX2hhc19jb2xvciIgc3R5bGU9Im1hcmdpbjog +MHB4OyBwYWRkaW5nOiAwcHg7IGJvcmRlcjogMHB4OyBvdXRsaW5lOiAwcHg7IGNvbG9yOiByZ2Io +MCwgMCwgMCk7IGZvbnQtZmFtaWx5OiBUYWhvbWEsIEFyaWFsLCBTVEhlaXRpLCBTaW1TdW47IGZv +bnQtc2l6ZTogMTRweDsgZm9udC1zdHlsZTogbm9ybWFsOyBmb250LXZhcmlhbnQtbGlnYXR1cmVz +OiBub3JtYWw7IGZvbnQtdmFyaWFudC1jYXBzOiBub3JtYWw7IGZvbnQtd2VpZ2h0OiA0MDA7IHRl +eHQtYWxpZ246IHN0YXJ0OyB0ZXh0LWluZGVudDogMHB4OyB0ZXh0LXRyYW5zZm9ybTogbm9uZTsg +dGV4dC1kZWNvcmF0aW9uLXRoaWNrbmVzczogaW5pdGlhbDsgdGV4dC1kZWNvcmF0aW9uLXN0eWxl +OiBpbml0aWFsOyB0ZXh0LWRlY29yYXRpb24tY29sb3I6IGluaXRpYWw7IGNsZWFyOiBib3RoOyI+ +PGltZyAgZGF0YS1hbGltYWlsLWltZy1wcm9jZXNzZWQtc3FtLWVkaXRvcj0idHJ1ZSIgaGVpZ2h0 +PSI2OCIgc3JjPSJjaWQ6X19hbGl5dW4xNzc1ODEzMzEzOTcyNjY3NzEiIHdpZHRoPSIzMDAiIHN0 +eWxlPSJtYXJnaW46IDBweDsgcGFkZGluZzogMHB4OyBib3JkZXI6IDBweDsgb3V0bGluZTogMHB4 +OyB2ZXJ0aWNhbC1hbGlnbjogYm90dG9tOyI+Jm5ic3A7PC9kaXY+PGRpdiAgY2xhc3M9IiBfX2Fs +aXl1bl9ub2RlX2hhc19jb2xvciIgc3R5bGU9Im1hcmdpbjogMHB4OyBwYWRkaW5nOiAwcHg7IGJv +cmRlcjogMHB4OyBvdXRsaW5lOiAwcHg7IGNvbG9yOiByZ2IoMCwgMCwgMCk7IGZvbnQtZmFtaWx5 +OiBUYWhvbWEsIEFyaWFsLCBTVEhlaXRpLCBTaW1TdW47IGZvbnQtc2l6ZTogMTRweDsgZm9udC1z +dHlsZTogbm9ybWFsOyBmb250LXZhcmlhbnQtbGlnYXR1cmVzOiBub3JtYWw7IGZvbnQtdmFyaWFu +dC1jYXBzOiBub3JtYWw7IGZvbnQtd2VpZ2h0OiA0MDA7IHRleHQtYWxpZ246IHN0YXJ0OyB0ZXh0 +LWluZGVudDogMHB4OyB0ZXh0LXRyYW5zZm9ybTogbm9uZTsgdGV4dC1kZWNvcmF0aW9uLXRoaWNr +bmVzczogaW5pdGlhbDsgdGV4dC1kZWNvcmF0aW9uLXN0eWxlOiBpbml0aWFsOyB0ZXh0LWRlY29y +YXRpb24tY29sb3I6IGluaXRpYWw7IGNsZWFyOiBib3RoOyI+PHNwYW4gIGNsYXNzPSIgX19hbGl5 +dW5fbm9kZV9oYXNfY29sb3IiIHN0eWxlPSJtYXJnaW46IDBweDsgcGFkZGluZzogMHB4OyBib3Jk +ZXI6IDBweDsgb3V0bGluZTogMHB4OyBmb250LWZhbWlseTogJ01pY3Jvc29mdCBZYWhlaSc7IGNv +bG9yOiByZ2IoMTkxLCAxOTEsIDE5MSk7Ij7lnLDlnYDvvJrkuK3lm73Ct+WNl+S6rOi9r+S7tuiw +t+i9r+S7tuWkp+mBkzEx5Y+36Iqx56We5aSn5Y6mM0Y8L3NwYW4+PC9kaXY+PGRpdiAgY2xhc3M9 +IiBfX2FsaXl1bl9ub2RlX2hhc19jb2xvciIgc3R5bGU9Im1hcmdpbjogMHB4OyBwYWRkaW5nOiAw +cHg7IGJvcmRlcjogMHB4OyBvdXRsaW5lOiAwcHg7IGNvbG9yOiByZ2IoMCwgMCwgMCk7IGZvbnQt +ZmFtaWx5OiBUYWhvbWEsIEFyaWFsLCBTVEhlaXRpLCBTaW1TdW47IGZvbnQtc2l6ZTogMTRweDsg +Zm9udC1zdHlsZTogbm9ybWFsOyBmb250LXZhcmlhbnQtbGlnYXR1cmVzOiBub3JtYWw7IGZvbnQt +dmFyaWFudC1jYXBzOiBub3JtYWw7IGZvbnQtd2VpZ2h0OiA0MDA7IHRleHQtYWxpZ246IHN0YXJ0 +OyB0ZXh0LWluZGVudDogMHB4OyB0ZXh0LXRyYW5zZm9ybTogbm9uZTsgdGV4dC1kZWNvcmF0aW9u +LXRoaWNrbmVzczogaW5pdGlhbDsgdGV4dC1kZWNvcmF0aW9uLXN0eWxlOiBpbml0aWFsOyB0ZXh0 +LWRlY29yYXRpb24tY29sb3I6IGluaXRpYWw7IGNsZWFyOiBib3RoOyI+PHNwYW4gIGNsYXNzPSIg +X19hbGl5dW5fbm9kZV9oYXNfY29sb3IiIHN0eWxlPSJtYXJnaW46IDBweDsgcGFkZGluZzogMHB4 +OyBib3JkZXI6IDBweDsgb3V0bGluZTogMHB4OyBmb250LWZhbWlseTogJ01pY3Jvc29mdCBZYWhl +aSc7IGNvbG9yOiByZ2IoMTkxLCAxOTEsIDE5MSk7Ij7miYvmnLrvvJoxODcyNjEyODQ4OTwvc3Bh +bj48L2Rpdj48ZGl2ICBjbGFzcz0iIF9fYWxpeXVuX25vZGVfaGFzX2NvbG9yIiBzdHlsZT0ibWFy +Z2luOiAwcHg7IHBhZGRpbmc6IDBweDsgYm9yZGVyOiAwcHg7IG91dGxpbmU6IDBweDsgY29sb3I6 +IHJnYigwLCAwLCAwKTsgZm9udC1mYW1pbHk6IFRhaG9tYSwgQXJpYWwsIFNUSGVpdGksIFNpbVN1 +bjsgZm9udC1zaXplOiAxNHB4OyBmb250LXN0eWxlOiBub3JtYWw7IGZvbnQtdmFyaWFudC1saWdh +dHVyZXM6IG5vcm1hbDsgZm9udC12YXJpYW50LWNhcHM6IG5vcm1hbDsgZm9udC13ZWlnaHQ6IDQw +MDsgdGV4dC1hbGlnbjogc3RhcnQ7IHRleHQtaW5kZW50OiAwcHg7IHRleHQtdHJhbnNmb3JtOiBu +b25lOyB0ZXh0LWRlY29yYXRpb24tdGhpY2tuZXNzOiBpbml0aWFsOyB0ZXh0LWRlY29yYXRpb24t +c3R5bGU6IGluaXRpYWw7IHRleHQtZGVjb3JhdGlvbi1jb2xvcjogaW5pdGlhbDsgY2xlYXI6IGJv +dGg7Ij48c3BhbiAgY2xhc3M9IiBfX2FsaXl1bl9ub2RlX2hhc19jb2xvciIgc3R5bGU9Im1hcmdp +bjogMHB4OyBwYWRkaW5nOiAwcHg7IGJvcmRlcjogMHB4OyBvdXRsaW5lOiAwcHg7IGZvbnQtZmFt +aWx5OiAnTWljcm9zb2Z0IFlhaGVpJzsgY29sb3I6IHJnYigxOTEsIDE5MSwgMTkxKTsiPumCrueu +se+8mnlhbmd4dWFuQHdpdHNvZnQuY248L3NwYW4+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9k +aXY+ + +--=_mailmaster-6a18e4a4_0_428b_=-- + +--=_mailmaster-6a18e4a4_0_26a6_= +Content-Type: application/octet-stream +Content-Transfer-Encoding: base64 +Content-ID: <__aliyun177581331397266771> +Content-Disposition: inline; + filename="=?utf-8?B?57u05ouT56eR5oqALemCruS7tuetvuWQjWxvZ28ucG5n?=" + +iVBORw0KGgoAAAANSUhEUgAAASwAAABECAYAAAA7rQj2AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJ +bWFnZVJlYWR5ccllPAAAA4RpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdp +bj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6 +eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTQ1IDc5LjE2 +MzQ5OSwgMjAxOC8wOC8xMy0xNjo0MDoyMiAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJo +dHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlw +dGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEu +MC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVz +b3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1N +Ok9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDplYjhjYzQwMy1lNzZjLTQ5NDgtODFmOC1kNDIy +MmRkMTdhYjgiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NkVENzExMzg1MzBEMTFFQTg4QjNF +NEJFMUQyRjc1RkIiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NkVENzExMzc1MzBEMTFFQTg4 +QjNFNEJFMUQyRjc1RkIiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTkg +KFdpbmRvd3MpIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6 +ZmNkNTdlM2UtZThjYS05ZjQ2LWEzZTUtMWJlYmE2NjA5Y2FmIiBzdFJlZjpkb2N1bWVudElEPSJh +ZG9iZTpkb2NpZDpwaG90b3Nob3A6MzZkNmNjNTUtNTY3Yi01MTQ2LWEwYWYtMzBlMzEwMTMxNDFk +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 + +--=_mailmaster-6a18e4a4_0_26a6_=-- diff --git a/media/inbound/2026-04-10_1728_G5开发周报_2026-04-07_--_2026-04-10---fc28eb43-a45d-4183-b122-250986e9851e.eml b/media/inbound/2026-04-10_1728_G5开发周报_2026-04-07_--_2026-04-10---fc28eb43-a45d-4183-b122-250986e9851e.eml new file mode 100644 index 0000000..a3e7d32 --- /dev/null +++ b/media/inbound/2026-04-10_1728_G5开发周报_2026-04-07_--_2026-04-10---fc28eb43-a45d-4183-b122-250986e9851e.eml @@ -0,0 +1,494 @@ +Date: Fri, 10 Apr 2026 17:28:34 +0800 +From: =?utf-8?B?5p2o6L2p?= +To: =?utf-8?B?5YiY5by6?= +Cc: =?utf-8?B?5bGI5paw6b6Z?= , =?utf-8?B?6ZmI5piO?= + , =?utf-8?B?5pu+6I6J?= +Message-ID: <4cb27326-57ed-4130-91ed-1a88eb2fa132.yangxuan@witsoft.cn> +In-Reply-To: <53fadfca-4b2d-4128-b29a-94601b90264b.yangxuan@witsoft.cn> +References: <53fadfca-4b2d-4128-b29a-94601b90264b.yangxuan@witsoft.cn> +Subject: =?utf-8?B?RzXlvIDlj5HlkajmiqXjgJAyMDI2LTA0LTA3IC0tICAyMDI2LTA0?= + =?utf-8?B?LTEw44CR?= +MIME-Version: 1.0 +Content-Type: multipart/related; boundary="=_mailmaster-6a18e4a4_0_26a6_=" + +--=_mailmaster-6a18e4a4_0_26a6_= +Content-Type: multipart/alternative; boundary="=_mailmaster-6a18e4a4_0_428b_=" + +--=_mailmaster-6a18e4a4_0_428b_= +Content-Type: text/plain; charset="UTF-8" +Content-Transfer-Encoding: base64 + +5oKo5aW977yB5Lul5LiL5piv5oiR5pys5ZGo55qE5bel5L2c5oC757uT5Y+K5LiL5ZGo6K6h5YiS +77yM6K+35a6h6ZiF44CCCuacrOWRqOW3peS9nOaAu+e7kwrkuIDjgIHph43ngrnlt6XkvZzlrozm +iJDmg4XlhrUKCiAqIApHNei/m+mUgOWtmCA1LjQuNyDniYjmnKzlj5HluIMK5LqM44CB5bi46KeE +5bel5L2c5piO57uGCjIwMjYtMDQtMDcKCiAqIAroh6rliqjlhaXlupPpgLvovpHmorPnkIbkuI7k +vJjljJYKMjAyNi0wNC0wOAoKICogCuW3peW6j+WnlOWkli3lp5TlpJbmlLbmlpkv6YCA5paZ6Ieq +5Yqo5YWl5bqT6IGU6LCD5a6M5oiQCgogKiAK5bqT5a2Y6ZyA5rGC6Ieq5rWL5a6M5oiQCjIwMjYt +MDQtMDkKCiAqIArovazmtYvpl67popjkv67lpI0KCiAqIArlhaXlupPmtYHnqIvmorPnkIYKCiAq +IArlhaXlupPooajnu5PmnoTms6jph4oKMjAyNi0wNC0xMAoKICogCua1i+ivlemXrumimOS/ruWk +jQoKICogCuWQhOexu+Wei+WFpeW6k+WuouWVhuS/oeaBr+ais+eQhgoKICogCuWQhOexu+Wei+WH +uuWFpeW6k+aJueasoeWFs+iBlOais+eQhgrkuIvlkajph43ngrnku7vliqEKCiAqIAo1LjQuNyDn +iYjmnKzlvIDlj5HluIMKQmVzdCByZWdhcmRzLArmnajovakK5Zyw5Z2A77ya5Lit5Zu9wrfljZfk +uqzova/ku7bosLfova/ku7blpKfpgZMxMeWPt+iKseelnuWkp+WOpjNGCuaJi+acuu+8mjE4NzI2 +MTI4NDg5CumCrueuse+8mnlhbmd4dWFuQHdpdHNvZnQuY24K + +--=_mailmaster-6a18e4a4_0_428b_= +Content-Type: text/html; charset="UTF-8" +Content-Transfer-Encoding: base64 + +PGRpdiBjbGFzcz0iX19hbGl5dW5fZW1haWxfYm9keV9ibG9jayI+PGRpdiAgc3R5bGU9ImZvbnQt +ZmFtaWx5OiBUYWhvbWEsIEFyaWFsLCBTVEhlaXRpU0MtTGlnaHQsIFNpbVN1biI+PGRpdiAgc3R5 +bGU9ImNsZWFyOiBib3RoOyI+PHAgIGNpZD0ibjk5IiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLXAi +IG1kdHlwZT0icGFyYWdyYXBoIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1o +ZWlnaHQ6IGluaGVyaXQ7IG1hcmdpbjogMC44ZW0gMHB4OyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7 +IHBvc2l0aW9uOiByZWxhdGl2ZTsgY29sb3I6IHJnYig1MSwgNTEsIDUxKTsgZm9udC1mYW1pbHk6 +ICdPcGVuIFNhbnMnLCAnQ2xlYXIgU2FucycsICdIZWx2ZXRpY2EgTmV1ZScsIEhlbHZldGljYSwg +QXJpYWwsICdTZWdvZSBVSSBFbW9qaScsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTZweDsgZm9u +dC1zdHlsZTogbm9ybWFsOyBmb250LXZhcmlhbnQtbGlnYXR1cmVzOiBub3JtYWw7IGZvbnQtdmFy +aWFudC1jYXBzOiBub3JtYWw7IGZvbnQtd2VpZ2h0OiA0MDA7IGxldHRlci1zcGFjaW5nOiBub3Jt +YWw7IHRleHQtYWxpZ246IHN0YXJ0OyB0ZXh0LWluZGVudDogMHB4OyB0ZXh0LXRyYW5zZm9ybTog +bm9uZTsgd29yZC1zcGFjaW5nOiAwcHg7IHRleHQtZGVjb3JhdGlvbi10aGlja25lc3M6IGluaXRp +YWw7IHRleHQtZGVjb3JhdGlvbi1zdHlsZTogaW5pdGlhbDsgdGV4dC1kZWNvcmF0aW9uLWNvbG9y +OiBpbml0aWFsOyI+PHNwYW4gIGNsYXNzPSJtZC1wbGFpbiBtZC1leHBhbmQiIG1kLWlubGluZT0i +cGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+5oKo5aW977yB5Lul5LiL5piv +5oiR5pys5ZGo55qE5bel5L2c5oC757uT5Y+K5LiL5ZGo6K6h5YiS77yM6K+35a6h6ZiF44CCPC9z +cGFuPjwvcD48aDMgIGNpZD0ibjEwMSIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1oZWFkaW5nIiBt +ZHR5cGU9ImhlYWRpbmciIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBicmVhay1hZnRl +cjogYXZvaWQtcGFnZTsgYnJlYWstaW5zaWRlOiBhdm9pZDsgZm9udC1zaXplOiAxLjVlbTsgbWFy +Z2luLXRvcDogMXJlbTsgbWFyZ2luLWJvdHRvbTogMXJlbTsgcG9zaXRpb246IHJlbGF0aXZlOyBm +b250LXdlaWdodDogNzAwOyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IGNvbG9yOiByZ2IoNTEsIDUx +LCA1MSk7IGZvbnQtZmFtaWx5OiAnT3BlbiBTYW5zJywgJ0NsZWFyIFNhbnMnLCAnSGVsdmV0aWNh +IE5ldWUnLCBIZWx2ZXRpY2EsIEFyaWFsLCAnU2Vnb2UgVUkgRW1vamknLCBzYW5zLXNlcmlmOyBm +b250LXN0eWxlOiBub3JtYWw7IGZvbnQtdmFyaWFudC1saWdhdHVyZXM6IG5vcm1hbDsgZm9udC12 +YXJpYW50LWNhcHM6IG5vcm1hbDsgbGV0dGVyLXNwYWNpbmc6IG5vcm1hbDsgdGV4dC1hbGlnbjog +c3RhcnQ7IHRleHQtaW5kZW50OiAwcHg7IHRleHQtdHJhbnNmb3JtOiBub25lOyB3b3JkLXNwYWNp +bmc6IDBweDsgdGV4dC1kZWNvcmF0aW9uLXRoaWNrbmVzczogaW5pdGlhbDsgdGV4dC1kZWNvcmF0 +aW9uLXN0eWxlOiBpbml0aWFsOyB0ZXh0LWRlY29yYXRpb24tY29sb3I6IGluaXRpYWw7Ij48c3Bh +biAgY2xhc3M9Im1kLXBsYWluIiBtZC1pbmxpbmU9InBsYWluIiBzdHlsZT0iYm94LXNpemluZzog +Ym9yZGVyLWJveDsgZm9udC13ZWlnaHQ6IGJvbGQ7Ij7mnKzlkajlt6XkvZzmgLvnu5M8L3NwYW4+ +PC9oMz48aDQgIGNpZD0ibjEwMiIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1oZWFkaW5nIiBtZHR5 +cGU9ImhlYWRpbmciIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBicmVhay1hZnRlcjog +YXZvaWQtcGFnZTsgYnJlYWstaW5zaWRlOiBhdm9pZDsgZm9udC1zaXplOiAxLjI1ZW07IG1hcmdp +bi10b3A6IDFyZW07IG1hcmdpbi1ib3R0b206IDFyZW07IHBvc2l0aW9uOiByZWxhdGl2ZTsgZm9u +dC13ZWlnaHQ6IDcwMDsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyBjb2xvcjogcmdiKDUxLCA1MSwg +NTEpOyBmb250LWZhbWlseTogJ09wZW4gU2FucycsICdDbGVhciBTYW5zJywgJ0hlbHZldGljYSBO +ZXVlJywgSGVsdmV0aWNhLCBBcmlhbCwgJ1NlZ29lIFVJIEVtb2ppJywgc2Fucy1zZXJpZjsgZm9u +dC1zdHlsZTogbm9ybWFsOyBmb250LXZhcmlhbnQtbGlnYXR1cmVzOiBub3JtYWw7IGZvbnQtdmFy +aWFudC1jYXBzOiBub3JtYWw7IGxldHRlci1zcGFjaW5nOiBub3JtYWw7IHRleHQtYWxpZ246IHN0 +YXJ0OyB0ZXh0LWluZGVudDogMHB4OyB0ZXh0LXRyYW5zZm9ybTogbm9uZTsgd29yZC1zcGFjaW5n +OiAwcHg7IHRleHQtZGVjb3JhdGlvbi10aGlja25lc3M6IGluaXRpYWw7IHRleHQtZGVjb3JhdGlv +bi1zdHlsZTogaW5pdGlhbDsgdGV4dC1kZWNvcmF0aW9uLWNvbG9yOiBpbml0aWFsOyI+PHNwYW4g +IGNsYXNzPSJtZC1wbGFpbiIgbWQtaW5saW5lPSJwbGFpbiIgc3R5bGU9ImJveC1zaXppbmc6IGJv +cmRlci1ib3g7Ij7kuIDjgIHph43ngrnlt6XkvZzlrozmiJDmg4XlhrU8L3NwYW4+PC9oND48b2wg +IGNpZD0ibjEwMyIgY2xhc3M9Im9sLWxpc3QiIG1kdHlwZT0ibGlzdCIgc3RhcnQ9IiIgc3R5bGU9 +ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMC44ZW0gMHB4OyBwYWRkaW5nLWxlZnQ6 +IDMwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsgY29sb3I6IHJnYig1MSwgNTEsIDUxKTsgZm9udC1m +YW1pbHk6ICdPcGVuIFNhbnMnLCAnQ2xlYXIgU2FucycsICdIZWx2ZXRpY2EgTmV1ZScsIEhlbHZl +dGljYSwgQXJpYWwsICdTZWdvZSBVSSBFbW9qaScsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTZw +eDsgZm9udC1zdHlsZTogbm9ybWFsOyBmb250LXZhcmlhbnQtbGlnYXR1cmVzOiBub3JtYWw7IGZv +bnQtdmFyaWFudC1jYXBzOiBub3JtYWw7IGZvbnQtd2VpZ2h0OiA0MDA7IGxldHRlci1zcGFjaW5n +OiBub3JtYWw7IHRleHQtYWxpZ246IHN0YXJ0OyB0ZXh0LWluZGVudDogMHB4OyB0ZXh0LXRyYW5z +Zm9ybTogbm9uZTsgd2hpdGUtc3BhY2U6IG5vcm1hbDsgd29yZC1zcGFjaW5nOiAwcHg7IHRleHQt +ZGVjb3JhdGlvbi10aGlja25lc3M6IGluaXRpYWw7IHRleHQtZGVjb3JhdGlvbi1zdHlsZTogaW5p +dGlhbDsgdGV4dC1kZWNvcmF0aW9uLWNvbG9yOiBpbml0aWFsOyI+PGxpICBjaWQ9Im4xMDQiIGNs +YXNzPSJtZC1saXN0LWl0ZW0iIG1kdHlwZT0ibGlzdF9pdGVtIiBzdHlsZT0iYm94LXNpemluZzog +Ym9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxwICBjaWQ9Im4x +MDUiIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCIgbWR0eXBlPSJwYXJhZ3JhcGgiIHN0eWxlPSJi +b3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5oZXJpdDsgbWFyZ2luOiAwcHgg +MHB4IDAuNXJlbTsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48 +c3BhbiAgY2xhc3M9Im1kLXBsYWluIiBtZC1pbmxpbmU9InBsYWluIiBzdHlsZT0iYm94LXNpemlu +ZzogYm9yZGVyLWJveDsiPkc16L+b6ZSA5a2YIDUuNC43IOeJiOacrOWPkeW4gzwvc3Bhbj48L3A+ +PC9saT48L29sPjxoNCAgY2lkPSJuMTA2IiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLWhlYWRpbmci +IG1kdHlwZT0iaGVhZGluZyIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGJyZWFrLWFm +dGVyOiBhdm9pZC1wYWdlOyBicmVhay1pbnNpZGU6IGF2b2lkOyBmb250LXNpemU6IDEuMjVlbTsg +bWFyZ2luLXRvcDogMXJlbTsgbWFyZ2luLWJvdHRvbTogMXJlbTsgcG9zaXRpb246IHJlbGF0aXZl +OyBmb250LXdlaWdodDogNzAwOyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IGNvbG9yOiByZ2IoNTEs +IDUxLCA1MSk7IGZvbnQtZmFtaWx5OiAnT3BlbiBTYW5zJywgJ0NsZWFyIFNhbnMnLCAnSGVsdmV0 +aWNhIE5ldWUnLCBIZWx2ZXRpY2EsIEFyaWFsLCAnU2Vnb2UgVUkgRW1vamknLCBzYW5zLXNlcmlm +OyBmb250LXN0eWxlOiBub3JtYWw7IGZvbnQtdmFyaWFudC1saWdhdHVyZXM6IG5vcm1hbDsgZm9u +dC12YXJpYW50LWNhcHM6IG5vcm1hbDsgbGV0dGVyLXNwYWNpbmc6IG5vcm1hbDsgdGV4dC1hbGln +bjogc3RhcnQ7IHRleHQtaW5kZW50OiAwcHg7IHRleHQtdHJhbnNmb3JtOiBub25lOyB3b3JkLXNw +YWNpbmc6IDBweDsgdGV4dC1kZWNvcmF0aW9uLXRoaWNrbmVzczogaW5pdGlhbDsgdGV4dC1kZWNv +cmF0aW9uLXN0eWxlOiBpbml0aWFsOyB0ZXh0LWRlY29yYXRpb24tY29sb3I6IGluaXRpYWw7Ij48 +c3BhbiAgY2xhc3M9Im1kLXBsYWluIiBtZC1pbmxpbmU9InBsYWluIiBzdHlsZT0iYm94LXNpemlu +ZzogYm9yZGVyLWJveDsiPuS6jOOAgeW4uOinhOW3peS9nOaYjue7hjwvc3Bhbj48L2g0PjxwICBj +aWQ9Im4xMDciIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCIgbWR0eXBlPSJwYXJhZ3JhcGgiIHN0 +eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5oZXJpdDsgbWFyZ2lu +OiAwLjhlbSAwcHg7IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJlbGF0aXZlOyBj +b2xvcjogcmdiKDUxLCA1MSwgNTEpOyBmb250LWZhbWlseTogJ09wZW4gU2FucycsICdDbGVhciBT +YW5zJywgJ0hlbHZldGljYSBOZXVlJywgSGVsdmV0aWNhLCBBcmlhbCwgJ1NlZ29lIFVJIEVtb2pp +Jywgc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxNnB4OyBmb250LXN0eWxlOiBub3JtYWw7IGZvbnQt +dmFyaWFudC1saWdhdHVyZXM6IG5vcm1hbDsgZm9udC12YXJpYW50LWNhcHM6IG5vcm1hbDsgZm9u +dC13ZWlnaHQ6IDQwMDsgbGV0dGVyLXNwYWNpbmc6IG5vcm1hbDsgdGV4dC1hbGlnbjogc3RhcnQ7 +IHRleHQtaW5kZW50OiAwcHg7IHRleHQtdHJhbnNmb3JtOiBub25lOyB3b3JkLXNwYWNpbmc6IDBw +eDsgdGV4dC1kZWNvcmF0aW9uLXRoaWNrbmVzczogaW5pdGlhbDsgdGV4dC1kZWNvcmF0aW9uLXN0 +eWxlOiBpbml0aWFsOyB0ZXh0LWRlY29yYXRpb24tY29sb3I6IGluaXRpYWw7Ij48c3BhbiAgY2xh +c3M9Im1kLXBsYWluIiBtZC1pbmxpbmU9InBsYWluIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVy +LWJveDsgZm9udC13ZWlnaHQ6IGJvbGQ7Ij4yMDI2LTA0LTA3PC9zcGFuPjwvcD48b2wgIGNpZD0i +bjEwOCIgY2xhc3M9Im9sLWxpc3QiIG1kdHlwZT0ibGlzdCIgc3RhcnQ9IiIgc3R5bGU9ImJveC1z +aXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMC44ZW0gMHB4OyBwYWRkaW5nLWxlZnQ6IDMwcHg7 +IHBvc2l0aW9uOiByZWxhdGl2ZTsgY29sb3I6IHJnYig1MSwgNTEsIDUxKTsgZm9udC1mYW1pbHk6 +ICdPcGVuIFNhbnMnLCAnQ2xlYXIgU2FucycsICdIZWx2ZXRpY2EgTmV1ZScsIEhlbHZldGljYSwg +QXJpYWwsICdTZWdvZSBVSSBFbW9qaScsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTZweDsgZm9u +dC1zdHlsZTogbm9ybWFsOyBmb250LXZhcmlhbnQtbGlnYXR1cmVzOiBub3JtYWw7IGZvbnQtdmFy +aWFudC1jYXBzOiBub3JtYWw7IGZvbnQtd2VpZ2h0OiA0MDA7IGxldHRlci1zcGFjaW5nOiBub3Jt +YWw7IHRleHQtYWxpZ246IHN0YXJ0OyB0ZXh0LWluZGVudDogMHB4OyB0ZXh0LXRyYW5zZm9ybTog +bm9uZTsgd2hpdGUtc3BhY2U6IG5vcm1hbDsgd29yZC1zcGFjaW5nOiAwcHg7IHRleHQtZGVjb3Jh +dGlvbi10aGlja25lc3M6IGluaXRpYWw7IHRleHQtZGVjb3JhdGlvbi1zdHlsZTogaW5pdGlhbDsg +dGV4dC1kZWNvcmF0aW9uLWNvbG9yOiBpbml0aWFsOyI+PGxpICBjaWQ9Im4xMDkiIGNsYXNzPSJt +ZC1saXN0LWl0ZW0iIG1kdHlwZT0ibGlzdF9pdGVtIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVy +LWJveDsgbWFyZ2luOiAwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxwICBjaWQ9Im4xMTAiIGNs +YXNzPSJtZC1lbmQtYmxvY2sgbWQtcCIgbWR0eXBlPSJwYXJhZ3JhcGgiIHN0eWxlPSJib3gtc2l6 +aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5oZXJpdDsgbWFyZ2luOiAwcHggMHB4IDAu +NXJlbTsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48c3BhbiAg +Y2xhc3M9Im1kLXBsYWluIiBtZC1pbmxpbmU9InBsYWluIiBzdHlsZT0iYm94LXNpemluZzogYm9y +ZGVyLWJveDsiPuiHquWKqOWFpeW6k+mAu+i+keais+eQhuS4juS8mOWMljwvc3Bhbj48L3A+PC9s +aT48L29sPjxwICBjaWQ9Im4xMTEiIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCIgbWR0eXBlPSJw +YXJhZ3JhcGgiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5o +ZXJpdDsgbWFyZ2luOiAwLjhlbSAwcHg7IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRpb246 +IHJlbGF0aXZlOyBjb2xvcjogcmdiKDUxLCA1MSwgNTEpOyBmb250LWZhbWlseTogJ09wZW4gU2Fu +cycsICdDbGVhciBTYW5zJywgJ0hlbHZldGljYSBOZXVlJywgSGVsdmV0aWNhLCBBcmlhbCwgJ1Nl +Z29lIFVJIEVtb2ppJywgc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxNnB4OyBmb250LXN0eWxlOiBu +b3JtYWw7IGZvbnQtdmFyaWFudC1saWdhdHVyZXM6IG5vcm1hbDsgZm9udC12YXJpYW50LWNhcHM6 +IG5vcm1hbDsgZm9udC13ZWlnaHQ6IDQwMDsgbGV0dGVyLXNwYWNpbmc6IG5vcm1hbDsgdGV4dC1h +bGlnbjogc3RhcnQ7IHRleHQtaW5kZW50OiAwcHg7IHRleHQtdHJhbnNmb3JtOiBub25lOyB3b3Jk +LXNwYWNpbmc6IDBweDsgdGV4dC1kZWNvcmF0aW9uLXRoaWNrbmVzczogaW5pdGlhbDsgdGV4dC1k +ZWNvcmF0aW9uLXN0eWxlOiBpbml0aWFsOyB0ZXh0LWRlY29yYXRpb24tY29sb3I6IGluaXRpYWw7 +Ij48c3BhbiAgY2xhc3M9Im1kLXBsYWluIiBtZC1pbmxpbmU9InBsYWluIiBzdHlsZT0iYm94LXNp +emluZzogYm9yZGVyLWJveDsgZm9udC13ZWlnaHQ6IGJvbGQ7Ij4yMDI2LTA0LTA4PC9zcGFuPjwv +cD48b2wgIGNpZD0ibjExMiIgY2xhc3M9Im9sLWxpc3QiIG1kdHlwZT0ibGlzdCIgc3RhcnQ9IiIg +c3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMC44ZW0gMHB4OyBwYWRkaW5n +LWxlZnQ6IDMwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsgY29sb3I6IHJnYig1MSwgNTEsIDUxKTsg +Zm9udC1mYW1pbHk6ICdPcGVuIFNhbnMnLCAnQ2xlYXIgU2FucycsICdIZWx2ZXRpY2EgTmV1ZScs +IEhlbHZldGljYSwgQXJpYWwsICdTZWdvZSBVSSBFbW9qaScsIHNhbnMtc2VyaWY7IGZvbnQtc2l6 +ZTogMTZweDsgZm9udC1zdHlsZTogbm9ybWFsOyBmb250LXZhcmlhbnQtbGlnYXR1cmVzOiBub3Jt +YWw7IGZvbnQtdmFyaWFudC1jYXBzOiBub3JtYWw7IGZvbnQtd2VpZ2h0OiA0MDA7IGxldHRlci1z +cGFjaW5nOiBub3JtYWw7IHRleHQtYWxpZ246IHN0YXJ0OyB0ZXh0LWluZGVudDogMHB4OyB0ZXh0 +LXRyYW5zZm9ybTogbm9uZTsgd2hpdGUtc3BhY2U6IG5vcm1hbDsgd29yZC1zcGFjaW5nOiAwcHg7 +IHRleHQtZGVjb3JhdGlvbi10aGlja25lc3M6IGluaXRpYWw7IHRleHQtZGVjb3JhdGlvbi1zdHls +ZTogaW5pdGlhbDsgdGV4dC1kZWNvcmF0aW9uLWNvbG9yOiBpbml0aWFsOyI+PGxpICBjaWQ9Im4x +MTMiIGNsYXNzPSJtZC1saXN0LWl0ZW0iIG1kdHlwZT0ibGlzdF9pdGVtIiBzdHlsZT0iYm94LXNp +emluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxwICBj +aWQ9Im4xMTQiIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCIgbWR0eXBlPSJwYXJhZ3JhcGgiIHN0 +eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5oZXJpdDsgbWFyZ2lu +OiAwcHggMHB4IDAuNXJlbTsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyBwb3NpdGlvbjogcmVsYXRp +dmU7Ij48c3BhbiAgY2xhc3M9Im1kLXBsYWluIiBtZC1pbmxpbmU9InBsYWluIiBzdHlsZT0iYm94 +LXNpemluZzogYm9yZGVyLWJveDsiPuW3peW6j+WnlOWkli3lp5TlpJbmlLbmlpkv6YCA5paZ6Ieq +5Yqo5YWl5bqT6IGU6LCD5a6M5oiQPC9zcGFuPjwvcD48L2xpPjxsaSAgY2lkPSJuMTE1IiBjbGFz +cz0ibWQtbGlzdC1pdGVtIiBtZHR5cGU9Imxpc3RfaXRlbSIgc3R5bGU9ImJveC1zaXppbmc6IGJv +cmRlci1ib3g7IG1hcmdpbjogMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48cCAgY2lkPSJuMTE2 +IiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLXAiIG1kdHlwZT0icGFyYWdyYXBoIiBzdHlsZT0iYm94 +LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IG1hcmdpbjogMHB4IDBw +eCAwLjVyZW07IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHNw +YW4gIGNsYXNzPSJtZC1wbGFpbiIgbWQtaW5saW5lPSJwbGFpbiIgc3R5bGU9ImJveC1zaXppbmc6 +IGJvcmRlci1ib3g7Ij7lupPlrZjpnIDmsYLoh6rmtYvlrozmiJA8L3NwYW4+PC9wPjwvbGk+PC9v +bD48cCAgY2lkPSJuMTE3IiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLXAiIG1kdHlwZT0icGFyYWdy +YXBoIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7 +IG1hcmdpbjogMC44ZW0gMHB4OyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0aW9uOiByZWxh +dGl2ZTsgY29sb3I6IHJnYig1MSwgNTEsIDUxKTsgZm9udC1mYW1pbHk6ICdPcGVuIFNhbnMnLCAn +Q2xlYXIgU2FucycsICdIZWx2ZXRpY2EgTmV1ZScsIEhlbHZldGljYSwgQXJpYWwsICdTZWdvZSBV +SSBFbW9qaScsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTZweDsgZm9udC1zdHlsZTogbm9ybWFs +OyBmb250LXZhcmlhbnQtbGlnYXR1cmVzOiBub3JtYWw7IGZvbnQtdmFyaWFudC1jYXBzOiBub3Jt +YWw7IGZvbnQtd2VpZ2h0OiA0MDA7IGxldHRlci1zcGFjaW5nOiBub3JtYWw7IHRleHQtYWxpZ246 +IHN0YXJ0OyB0ZXh0LWluZGVudDogMHB4OyB0ZXh0LXRyYW5zZm9ybTogbm9uZTsgd29yZC1zcGFj +aW5nOiAwcHg7IHRleHQtZGVjb3JhdGlvbi10aGlja25lc3M6IGluaXRpYWw7IHRleHQtZGVjb3Jh +dGlvbi1zdHlsZTogaW5pdGlhbDsgdGV4dC1kZWNvcmF0aW9uLWNvbG9yOiBpbml0aWFsOyI+PHNw +YW4gIGNsYXNzPSJtZC1wbGFpbiIgbWQtaW5saW5lPSJwbGFpbiIgc3R5bGU9ImJveC1zaXppbmc6 +IGJvcmRlci1ib3g7IGZvbnQtd2VpZ2h0OiBib2xkOyI+MjAyNi0wNC0wOTwvc3Bhbj48L3A+PG9s +ICBjaWQ9Im4xMTgiIGNsYXNzPSJvbC1saXN0IiBtZHR5cGU9Imxpc3QiIHN0YXJ0PSIiIHN0eWxl +PSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDAuOGVtIDBweDsgcGFkZGluZy1sZWZ0 +OiAzMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7IGNvbG9yOiByZ2IoNTEsIDUxLCA1MSk7IGZvbnQt +ZmFtaWx5OiAnT3BlbiBTYW5zJywgJ0NsZWFyIFNhbnMnLCAnSGVsdmV0aWNhIE5ldWUnLCBIZWx2 +ZXRpY2EsIEFyaWFsLCAnU2Vnb2UgVUkgRW1vamknLCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDE2 +cHg7IGZvbnQtc3R5bGU6IG5vcm1hbDsgZm9udC12YXJpYW50LWxpZ2F0dXJlczogbm9ybWFsOyBm +b250LXZhcmlhbnQtY2Fwczogbm9ybWFsOyBmb250LXdlaWdodDogNDAwOyBsZXR0ZXItc3BhY2lu +Zzogbm9ybWFsOyB0ZXh0LWFsaWduOiBzdGFydDsgdGV4dC1pbmRlbnQ6IDBweDsgdGV4dC10cmFu +c2Zvcm06IG5vbmU7IHdoaXRlLXNwYWNlOiBub3JtYWw7IHdvcmQtc3BhY2luZzogMHB4OyB0ZXh0 +LWRlY29yYXRpb24tdGhpY2tuZXNzOiBpbml0aWFsOyB0ZXh0LWRlY29yYXRpb24tc3R5bGU6IGlu +aXRpYWw7IHRleHQtZGVjb3JhdGlvbi1jb2xvcjogaW5pdGlhbDsiPjxsaSAgY2lkPSJuMTE5IiBj +bGFzcz0ibWQtbGlzdC1pdGVtIiBtZHR5cGU9Imxpc3RfaXRlbSIgc3R5bGU9ImJveC1zaXppbmc6 +IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48cCAgY2lkPSJu +MTIwIiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLXAiIG1kdHlwZT0icGFyYWdyYXBoIiBzdHlsZT0i +Ym94LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IG1hcmdpbjogMHB4 +IDBweCAwLjVyZW07IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJlbGF0aXZlOyI+ +PHNwYW4gIGNsYXNzPSJtZC1wbGFpbiIgbWQtaW5saW5lPSJwbGFpbiIgc3R5bGU9ImJveC1zaXpp +bmc6IGJvcmRlci1ib3g7Ij7ovazmtYvpl67popjkv67lpI08L3NwYW4+PC9wPjwvbGk+PGxpICBj +aWQ9Im4xMjEiIGNsYXNzPSJtZC1saXN0LWl0ZW0iIG1kdHlwZT0ibGlzdF9pdGVtIiBzdHlsZT0i +Ym94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsi +PjxwICBjaWQ9Im4xMjIiIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCIgbWR0eXBlPSJwYXJhZ3Jh +cGgiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5oZXJpdDsg +bWFyZ2luOiAwcHggMHB4IDAuNXJlbTsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyBwb3NpdGlvbjog +cmVsYXRpdmU7Ij48c3BhbiAgY2xhc3M9Im1kLXBsYWluIiBtZC1pbmxpbmU9InBsYWluIiBzdHls +ZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPuWFpeW6k+a1geeoi+ais+eQhjwvc3Bhbj48L3A+ +PC9saT48bGkgIGNpZD0ibjEyMyIgY2xhc3M9Im1kLWxpc3QtaXRlbSIgbWR0eXBlPSJsaXN0X2l0 +ZW0iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcG9zaXRpb246 +IHJlbGF0aXZlOyI+PHAgIGNpZD0ibjEyNCIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1wIiBtZHR5 +cGU9InBhcmFncmFwaCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGxpbmUtaGVpZ2h0 +OiBpbmhlcml0OyBtYXJnaW46IDBweCAwcHggMC41cmVtOyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7 +IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxzcGFuICBjbGFzcz0ibWQtcGxhaW4iIG1kLWlubGluZT0i +cGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+5YWl5bqT6KGo57uT5p6E5rOo +6YeKPC9zcGFuPjwvcD48L2xpPjwvb2w+PHAgIGNpZD0ibjEyNSIgY2xhc3M9Im1kLWVuZC1ibG9j +ayBtZC1wIiBtZHR5cGU9InBhcmFncmFwaCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7 +IGxpbmUtaGVpZ2h0OiBpbmhlcml0OyBtYXJnaW46IDAuOGVtIDBweDsgd2hpdGUtc3BhY2U6IHBy +ZS13cmFwOyBwb3NpdGlvbjogcmVsYXRpdmU7IGNvbG9yOiByZ2IoNTEsIDUxLCA1MSk7IGZvbnQt +ZmFtaWx5OiAnT3BlbiBTYW5zJywgJ0NsZWFyIFNhbnMnLCAnSGVsdmV0aWNhIE5ldWUnLCBIZWx2 +ZXRpY2EsIEFyaWFsLCAnU2Vnb2UgVUkgRW1vamknLCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDE2 +cHg7IGZvbnQtc3R5bGU6IG5vcm1hbDsgZm9udC12YXJpYW50LWxpZ2F0dXJlczogbm9ybWFsOyBm +b250LXZhcmlhbnQtY2Fwczogbm9ybWFsOyBmb250LXdlaWdodDogNDAwOyBsZXR0ZXItc3BhY2lu +Zzogbm9ybWFsOyB0ZXh0LWFsaWduOiBzdGFydDsgdGV4dC1pbmRlbnQ6IDBweDsgdGV4dC10cmFu +c2Zvcm06IG5vbmU7IHdvcmQtc3BhY2luZzogMHB4OyB0ZXh0LWRlY29yYXRpb24tdGhpY2tuZXNz +OiBpbml0aWFsOyB0ZXh0LWRlY29yYXRpb24tc3R5bGU6IGluaXRpYWw7IHRleHQtZGVjb3JhdGlv +bi1jb2xvcjogaW5pdGlhbDsiPjxzcGFuICBjbGFzcz0ibWQtcGxhaW4iIG1kLWlubGluZT0icGxh +aW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBmb250LXdlaWdodDogYm9sZDsiPjIw +MjYtMDQtMTA8L3NwYW4+PC9wPjxvbCAgY2lkPSJuMTI2IiBjbGFzcz0ib2wtbGlzdCIgbWR0eXBl +PSJsaXN0IiBzdGFydD0iIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAw +LjhlbSAwcHg7IHBhZGRpbmctbGVmdDogMzBweDsgcG9zaXRpb246IHJlbGF0aXZlOyBjb2xvcjog +cmdiKDUxLCA1MSwgNTEpOyBmb250LWZhbWlseTogJ09wZW4gU2FucycsICdDbGVhciBTYW5zJywg +J0hlbHZldGljYSBOZXVlJywgSGVsdmV0aWNhLCBBcmlhbCwgJ1NlZ29lIFVJIEVtb2ppJywgc2Fu +cy1zZXJpZjsgZm9udC1zaXplOiAxNnB4OyBmb250LXN0eWxlOiBub3JtYWw7IGZvbnQtdmFyaWFu +dC1saWdhdHVyZXM6IG5vcm1hbDsgZm9udC12YXJpYW50LWNhcHM6IG5vcm1hbDsgZm9udC13ZWln +aHQ6IDQwMDsgbGV0dGVyLXNwYWNpbmc6IG5vcm1hbDsgdGV4dC1hbGlnbjogc3RhcnQ7IHRleHQt +aW5kZW50OiAwcHg7IHRleHQtdHJhbnNmb3JtOiBub25lOyB3aGl0ZS1zcGFjZTogbm9ybWFsOyB3 +b3JkLXNwYWNpbmc6IDBweDsgdGV4dC1kZWNvcmF0aW9uLXRoaWNrbmVzczogaW5pdGlhbDsgdGV4 +dC1kZWNvcmF0aW9uLXN0eWxlOiBpbml0aWFsOyB0ZXh0LWRlY29yYXRpb24tY29sb3I6IGluaXRp +YWw7Ij48bGkgIGNpZD0ibjEyNyIgY2xhc3M9Im1kLWxpc3QtaXRlbSBtZC1mb2N1cy1jb250YWlu +ZXIiIG1kdHlwZT0ibGlzdF9pdGVtIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFy +Z2luOiAwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxwICBjaWQ9Im4xMjgiIGNsYXNzPSJtZC1l +bmQtYmxvY2sgbWQtcCBtZC1mb2N1cyIgbWR0eXBlPSJwYXJhZ3JhcGgiIHN0eWxlPSJib3gtc2l6 +aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5oZXJpdDsgbWFyZ2luOiAwcHggMHB4IDAu +NXJlbTsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48c3BhbiAg +Y2xhc3M9Im1kLXBsYWluIG1kLWV4cGFuZCIgbWQtaW5saW5lPSJwbGFpbiIgc3R5bGU9ImJveC1z +aXppbmc6IGJvcmRlci1ib3g7Ij7mtYvor5Xpl67popjkv67lpI08L3NwYW4+PC9wPjwvbGk+PGxp +ICBjaWQ9Im4xMjkiIGNsYXNzPSJtZC1saXN0LWl0ZW0iIG1kdHlwZT0ibGlzdF9pdGVtIiBzdHls +ZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBvc2l0aW9uOiByZWxhdGl2 +ZTsiPjxwICBjaWQ9Im4xMzAiIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCIgbWR0eXBlPSJwYXJh +Z3JhcGgiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5oZXJp +dDsgbWFyZ2luOiAwcHggMHB4IDAuNXJlbTsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyBwb3NpdGlv +bjogcmVsYXRpdmU7Ij48c3BhbiAgY2xhc3M9Im1kLXBsYWluIiBtZC1pbmxpbmU9InBsYWluIiBz +dHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPuWQhOexu+Wei+WFpeW6k+WuouWVhuS/oeaB +r+ais+eQhjwvc3Bhbj48L3A+PC9saT48bGkgIGNpZD0ibjEzMSIgY2xhc3M9Im1kLWxpc3QtaXRl +bSIgbWR0eXBlPSJsaXN0X2l0ZW0iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJn +aW46IDBweDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHAgIGNpZD0ibjEzMiIgY2xhc3M9Im1kLWVu +ZC1ibG9jayBtZC1wIiBtZHR5cGU9InBhcmFncmFwaCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRl +ci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhlcml0OyBtYXJnaW46IDBweCAwcHggMC41cmVtOyB3aGl0 +ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxzcGFuICBjbGFzcz0ibWQt +cGxhaW4iIG1kLWlubGluZT0icGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+ +5ZCE57G75Z6L5Ye65YWl5bqT5om55qyh5YWz6IGU5qKz55CGPC9zcGFuPjwvcD48L2xpPjwvb2w+ +PGgzICBjaWQ9Im4xMzMiIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtaGVhZGluZyIgbWR0eXBlPSJo +ZWFkaW5nIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgYnJlYWstYWZ0ZXI6IGF2b2lk +LXBhZ2U7IGJyZWFrLWluc2lkZTogYXZvaWQ7IGZvbnQtc2l6ZTogMS41ZW07IG1hcmdpbi10b3A6 +IDFyZW07IG1hcmdpbi1ib3R0b206IDFyZW07IHBvc2l0aW9uOiByZWxhdGl2ZTsgZm9udC13ZWln +aHQ6IDcwMDsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyBjb2xvcjogcmdiKDUxLCA1MSwgNTEpOyBm +b250LWZhbWlseTogJ09wZW4gU2FucycsICdDbGVhciBTYW5zJywgJ0hlbHZldGljYSBOZXVlJywg +SGVsdmV0aWNhLCBBcmlhbCwgJ1NlZ29lIFVJIEVtb2ppJywgc2Fucy1zZXJpZjsgZm9udC1zdHls +ZTogbm9ybWFsOyBmb250LXZhcmlhbnQtbGlnYXR1cmVzOiBub3JtYWw7IGZvbnQtdmFyaWFudC1j +YXBzOiBub3JtYWw7IGxldHRlci1zcGFjaW5nOiBub3JtYWw7IHRleHQtYWxpZ246IHN0YXJ0OyB0 +ZXh0LWluZGVudDogMHB4OyB0ZXh0LXRyYW5zZm9ybTogbm9uZTsgd29yZC1zcGFjaW5nOiAwcHg7 +IHRleHQtZGVjb3JhdGlvbi10aGlja25lc3M6IGluaXRpYWw7IHRleHQtZGVjb3JhdGlvbi1zdHls +ZTogaW5pdGlhbDsgdGV4dC1kZWNvcmF0aW9uLWNvbG9yOiBpbml0aWFsOyI+PHNwYW4gIGNsYXNz +PSJtZC1wbGFpbiIgbWQtaW5saW5lPSJwbGFpbiIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1i +b3g7IGZvbnQtd2VpZ2h0OiBib2xkOyI+5LiL5ZGo6YeN54K55Lu75YqhPC9zcGFuPjwvaDM+PHVs +ICBjaWQ9Im4xMzQiIGNsYXNzPSJ1bC1saXN0IiBkYXRhLW1hcms9Ii0iIG1kdHlwZT0ibGlzdCIg +c3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMC44ZW0gMHB4OyBwYWRkaW5n +LWxlZnQ6IDMwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsgY29sb3I6IHJnYig1MSwgNTEsIDUxKTsg +Zm9udC1mYW1pbHk6ICdPcGVuIFNhbnMnLCAnQ2xlYXIgU2FucycsICdIZWx2ZXRpY2EgTmV1ZScs +IEhlbHZldGljYSwgQXJpYWwsICdTZWdvZSBVSSBFbW9qaScsIHNhbnMtc2VyaWY7IGZvbnQtc2l6 +ZTogMTZweDsgZm9udC1zdHlsZTogbm9ybWFsOyBmb250LXZhcmlhbnQtbGlnYXR1cmVzOiBub3Jt +YWw7IGZvbnQtdmFyaWFudC1jYXBzOiBub3JtYWw7IGZvbnQtd2VpZ2h0OiA0MDA7IGxldHRlci1z +cGFjaW5nOiBub3JtYWw7IHRleHQtYWxpZ246IHN0YXJ0OyB0ZXh0LWluZGVudDogMHB4OyB0ZXh0 +LXRyYW5zZm9ybTogbm9uZTsgd2hpdGUtc3BhY2U6IG5vcm1hbDsgd29yZC1zcGFjaW5nOiAwcHg7 +IHRleHQtZGVjb3JhdGlvbi10aGlja25lc3M6IGluaXRpYWw7IHRleHQtZGVjb3JhdGlvbi1zdHls +ZTogaW5pdGlhbDsgdGV4dC1kZWNvcmF0aW9uLWNvbG9yOiBpbml0aWFsOyI+PGxpICBjaWQ9Im4x +MzUiIGNsYXNzPSJtZC1saXN0LWl0ZW0iIG1kdHlwZT0ibGlzdF9pdGVtIiBzdHlsZT0iYm94LXNp +emluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxwICBj +aWQ9Im4xMzYiIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCIgbWR0eXBlPSJwYXJhZ3JhcGgiIHN0 +eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5oZXJpdDsgbWFyZ2lu +OiAwcHggMHB4IDAuNXJlbTsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyBwb3NpdGlvbjogcmVsYXRp +dmU7Ij48c3BhbiAgY2xhc3M9Im1kLXBsYWluIiBtZC1pbmxpbmU9InBsYWluIiBzdHlsZT0iYm94 +LXNpemluZzogYm9yZGVyLWJveDsiPjUuNC43IOeJiOacrOW8gOWPkeW4gzwvc3Bhbj48L3A+PC9s +aT48L3VsPjxiciAgY2xhc3M9IkFwcGxlLWludGVyY2hhbmdlLW5ld2xpbmUiPjxkaXYgIHN0eWxl +PSJjbGVhcjogYm90aDsgZm9udC1mYW1pbHk6IFRhaG9tYSwgQXJpYWwsIFNUSGVpdGlTQy1MaWdo +dCwgU2ltU3VuOyI+PHNwYW4gPjxiciA+PC9zcGFuPjwvZGl2PjxkaXYgIHN0eWxlPSJjbGVhcjog +Ym90aDsiPjxkaXYgIGNsYXNzPSIgX19hbGl5dW5fbm9kZV9oYXNfY29sb3IiIHN0eWxlPSJtYXJn +aW46IDBweDsgcGFkZGluZzogMHB4OyBib3JkZXI6IDBweDsgb3V0bGluZTogMHB4OyBjb2xvcjog +cmdiKDAsIDAsIDApOyBmb250LWZhbWlseTogVGFob21hLCBBcmlhbCwgU1RIZWl0aSwgU2ltU3Vu +OyBmb250LXNpemU6IDE0cHg7IGZvbnQtc3R5bGU6IG5vcm1hbDsgZm9udC12YXJpYW50LWxpZ2F0 +dXJlczogbm9ybWFsOyBmb250LXZhcmlhbnQtY2Fwczogbm9ybWFsOyBmb250LXdlaWdodDogNDAw +OyB0ZXh0LWFsaWduOiBzdGFydDsgdGV4dC1pbmRlbnQ6IDBweDsgdGV4dC10cmFuc2Zvcm06IG5v +bmU7IHRleHQtZGVjb3JhdGlvbi10aGlja25lc3M6IGluaXRpYWw7IHRleHQtZGVjb3JhdGlvbi1z +dHlsZTogaW5pdGlhbDsgdGV4dC1kZWNvcmF0aW9uLWNvbG9yOiBpbml0aWFsOyBjbGVhcjogYm90 +aDsiPjxzcGFuICBjbGFzcz0iIF9fYWxpeXVuX25vZGVfaGFzX2NvbG9yIiBzdHlsZT0ibWFyZ2lu +OiAwcHg7IHBhZGRpbmc6IDBweDsgYm9yZGVyOiAwcHg7IG91dGxpbmU6IDBweDsgZm9udC1mYW1p +bHk6ICdNaWNyb3NvZnQgWWFoZWknOyBmb250LXNpemU6IDEzcHg7IGNvbG9yOiByZ2IoMTkxLCAx +OTEsIDE5MSk7Ij5CZXN0IHJlZ2FyZHMsPC9zcGFuPjwvZGl2PjxkaXYgIGNsYXNzPSIgX19hbGl5 +dW5fbm9kZV9oYXNfY29sb3IiIHN0eWxlPSJtYXJnaW46IDBweDsgcGFkZGluZzogMHB4OyBib3Jk +ZXI6IDBweDsgb3V0bGluZTogMHB4OyBjb2xvcjogcmdiKDAsIDAsIDApOyBmb250LWZhbWlseTog +VGFob21hLCBBcmlhbCwgU1RIZWl0aSwgU2ltU3VuOyBmb250LXNpemU6IDE0cHg7IGZvbnQtc3R5 +bGU6IG5vcm1hbDsgZm9udC12YXJpYW50LWxpZ2F0dXJlczogbm9ybWFsOyBmb250LXZhcmlhbnQt +Y2Fwczogbm9ybWFsOyBmb250LXdlaWdodDogNDAwOyB0ZXh0LWFsaWduOiBzdGFydDsgdGV4dC1p +bmRlbnQ6IDBweDsgdGV4dC10cmFuc2Zvcm06IG5vbmU7IHRleHQtZGVjb3JhdGlvbi10aGlja25l +c3M6IGluaXRpYWw7IHRleHQtZGVjb3JhdGlvbi1zdHlsZTogaW5pdGlhbDsgdGV4dC1kZWNvcmF0 +aW9uLWNvbG9yOiBpbml0aWFsOyBjbGVhcjogYm90aDsiPjxzcGFuICBjbGFzcz0iIF9fYWxpeXVu +X25vZGVfaGFzX2NvbG9yIiBzdHlsZT0ibWFyZ2luOiAwcHg7IHBhZGRpbmc6IDBweDsgYm9yZGVy +OiAwcHg7IG91dGxpbmU6IDBweDsgZm9udC1mYW1pbHk6ICdNaWNyb3NvZnQgWWFoZWknOyBmb250 +LXNpemU6IDEzcHg7IGNvbG9yOiByZ2IoMTkxLCAxOTEsIDE5MSk7Ij7mnajovak8L3NwYW4+PC9k +aXY+PGRpdiAgY2xhc3M9IiBfX2FsaXl1bl9ub2RlX2hhc19jb2xvciIgc3R5bGU9Im1hcmdpbjog +MHB4OyBwYWRkaW5nOiAwcHg7IGJvcmRlcjogMHB4OyBvdXRsaW5lOiAwcHg7IGNvbG9yOiByZ2Io +MCwgMCwgMCk7IGZvbnQtZmFtaWx5OiBUYWhvbWEsIEFyaWFsLCBTVEhlaXRpLCBTaW1TdW47IGZv +bnQtc2l6ZTogMTRweDsgZm9udC1zdHlsZTogbm9ybWFsOyBmb250LXZhcmlhbnQtbGlnYXR1cmVz +OiBub3JtYWw7IGZvbnQtdmFyaWFudC1jYXBzOiBub3JtYWw7IGZvbnQtd2VpZ2h0OiA0MDA7IHRl +eHQtYWxpZ246IHN0YXJ0OyB0ZXh0LWluZGVudDogMHB4OyB0ZXh0LXRyYW5zZm9ybTogbm9uZTsg +dGV4dC1kZWNvcmF0aW9uLXRoaWNrbmVzczogaW5pdGlhbDsgdGV4dC1kZWNvcmF0aW9uLXN0eWxl +OiBpbml0aWFsOyB0ZXh0LWRlY29yYXRpb24tY29sb3I6IGluaXRpYWw7IGNsZWFyOiBib3RoOyI+ +PGltZyAgZGF0YS1hbGltYWlsLWltZy1wcm9jZXNzZWQtc3FtLWVkaXRvcj0idHJ1ZSIgaGVpZ2h0 +PSI2OCIgc3JjPSJjaWQ6X19hbGl5dW4xNzc1ODEzMzEzOTcyNjY3NzEiIHdpZHRoPSIzMDAiIHN0 +eWxlPSJtYXJnaW46IDBweDsgcGFkZGluZzogMHB4OyBib3JkZXI6IDBweDsgb3V0bGluZTogMHB4 +OyB2ZXJ0aWNhbC1hbGlnbjogYm90dG9tOyI+Jm5ic3A7PC9kaXY+PGRpdiAgY2xhc3M9IiBfX2Fs +aXl1bl9ub2RlX2hhc19jb2xvciIgc3R5bGU9Im1hcmdpbjogMHB4OyBwYWRkaW5nOiAwcHg7IGJv +cmRlcjogMHB4OyBvdXRsaW5lOiAwcHg7IGNvbG9yOiByZ2IoMCwgMCwgMCk7IGZvbnQtZmFtaWx5 +OiBUYWhvbWEsIEFyaWFsLCBTVEhlaXRpLCBTaW1TdW47IGZvbnQtc2l6ZTogMTRweDsgZm9udC1z +dHlsZTogbm9ybWFsOyBmb250LXZhcmlhbnQtbGlnYXR1cmVzOiBub3JtYWw7IGZvbnQtdmFyaWFu +dC1jYXBzOiBub3JtYWw7IGZvbnQtd2VpZ2h0OiA0MDA7IHRleHQtYWxpZ246IHN0YXJ0OyB0ZXh0 +LWluZGVudDogMHB4OyB0ZXh0LXRyYW5zZm9ybTogbm9uZTsgdGV4dC1kZWNvcmF0aW9uLXRoaWNr +bmVzczogaW5pdGlhbDsgdGV4dC1kZWNvcmF0aW9uLXN0eWxlOiBpbml0aWFsOyB0ZXh0LWRlY29y +YXRpb24tY29sb3I6IGluaXRpYWw7IGNsZWFyOiBib3RoOyI+PHNwYW4gIGNsYXNzPSIgX19hbGl5 +dW5fbm9kZV9oYXNfY29sb3IiIHN0eWxlPSJtYXJnaW46IDBweDsgcGFkZGluZzogMHB4OyBib3Jk +ZXI6IDBweDsgb3V0bGluZTogMHB4OyBmb250LWZhbWlseTogJ01pY3Jvc29mdCBZYWhlaSc7IGNv +bG9yOiByZ2IoMTkxLCAxOTEsIDE5MSk7Ij7lnLDlnYDvvJrkuK3lm73Ct+WNl+S6rOi9r+S7tuiw +t+i9r+S7tuWkp+mBkzEx5Y+36Iqx56We5aSn5Y6mM0Y8L3NwYW4+PC9kaXY+PGRpdiAgY2xhc3M9 +IiBfX2FsaXl1bl9ub2RlX2hhc19jb2xvciIgc3R5bGU9Im1hcmdpbjogMHB4OyBwYWRkaW5nOiAw +cHg7IGJvcmRlcjogMHB4OyBvdXRsaW5lOiAwcHg7IGNvbG9yOiByZ2IoMCwgMCwgMCk7IGZvbnQt +ZmFtaWx5OiBUYWhvbWEsIEFyaWFsLCBTVEhlaXRpLCBTaW1TdW47IGZvbnQtc2l6ZTogMTRweDsg +Zm9udC1zdHlsZTogbm9ybWFsOyBmb250LXZhcmlhbnQtbGlnYXR1cmVzOiBub3JtYWw7IGZvbnQt +dmFyaWFudC1jYXBzOiBub3JtYWw7IGZvbnQtd2VpZ2h0OiA0MDA7IHRleHQtYWxpZ246IHN0YXJ0 +OyB0ZXh0LWluZGVudDogMHB4OyB0ZXh0LXRyYW5zZm9ybTogbm9uZTsgdGV4dC1kZWNvcmF0aW9u +LXRoaWNrbmVzczogaW5pdGlhbDsgdGV4dC1kZWNvcmF0aW9uLXN0eWxlOiBpbml0aWFsOyB0ZXh0 +LWRlY29yYXRpb24tY29sb3I6IGluaXRpYWw7IGNsZWFyOiBib3RoOyI+PHNwYW4gIGNsYXNzPSIg +X19hbGl5dW5fbm9kZV9oYXNfY29sb3IiIHN0eWxlPSJtYXJnaW46IDBweDsgcGFkZGluZzogMHB4 +OyBib3JkZXI6IDBweDsgb3V0bGluZTogMHB4OyBmb250LWZhbWlseTogJ01pY3Jvc29mdCBZYWhl +aSc7IGNvbG9yOiByZ2IoMTkxLCAxOTEsIDE5MSk7Ij7miYvmnLrvvJoxODcyNjEyODQ4OTwvc3Bh +bj48L2Rpdj48ZGl2ICBjbGFzcz0iIF9fYWxpeXVuX25vZGVfaGFzX2NvbG9yIiBzdHlsZT0ibWFy +Z2luOiAwcHg7IHBhZGRpbmc6IDBweDsgYm9yZGVyOiAwcHg7IG91dGxpbmU6IDBweDsgY29sb3I6 +IHJnYigwLCAwLCAwKTsgZm9udC1mYW1pbHk6IFRhaG9tYSwgQXJpYWwsIFNUSGVpdGksIFNpbVN1 +bjsgZm9udC1zaXplOiAxNHB4OyBmb250LXN0eWxlOiBub3JtYWw7IGZvbnQtdmFyaWFudC1saWdh +dHVyZXM6IG5vcm1hbDsgZm9udC12YXJpYW50LWNhcHM6IG5vcm1hbDsgZm9udC13ZWlnaHQ6IDQw +MDsgdGV4dC1hbGlnbjogc3RhcnQ7IHRleHQtaW5kZW50OiAwcHg7IHRleHQtdHJhbnNmb3JtOiBu +b25lOyB0ZXh0LWRlY29yYXRpb24tdGhpY2tuZXNzOiBpbml0aWFsOyB0ZXh0LWRlY29yYXRpb24t +c3R5bGU6IGluaXRpYWw7IHRleHQtZGVjb3JhdGlvbi1jb2xvcjogaW5pdGlhbDsgY2xlYXI6IGJv +dGg7Ij48c3BhbiAgY2xhc3M9IiBfX2FsaXl1bl9ub2RlX2hhc19jb2xvciIgc3R5bGU9Im1hcmdp +bjogMHB4OyBwYWRkaW5nOiAwcHg7IGJvcmRlcjogMHB4OyBvdXRsaW5lOiAwcHg7IGZvbnQtZmFt +aWx5OiAnTWljcm9zb2Z0IFlhaGVpJzsgY29sb3I6IHJnYigxOTEsIDE5MSwgMTkxKTsiPumCrueu +se+8mnlhbmd4dWFuQHdpdHNvZnQuY248L3NwYW4+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9k +aXY+ + +--=_mailmaster-6a18e4a4_0_428b_=-- + +--=_mailmaster-6a18e4a4_0_26a6_= +Content-Type: application/octet-stream +Content-Transfer-Encoding: base64 +Content-ID: <__aliyun177581331397266771> +Content-Disposition: inline; + filename="=?utf-8?B?57u05ouT56eR5oqALemCruS7tuetvuWQjWxvZ28ucG5n?=" + +iVBORw0KGgoAAAANSUhEUgAAASwAAABECAYAAAA7rQj2AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJ +bWFnZVJlYWR5ccllPAAAA4RpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdp +bj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6 +eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTQ1IDc5LjE2 +MzQ5OSwgMjAxOC8wOC8xMy0xNjo0MDoyMiAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJo +dHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlw +dGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEu +MC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVz +b3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1N +Ok9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDplYjhjYzQwMy1lNzZjLTQ5NDgtODFmOC1kNDIy +MmRkMTdhYjgiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NkVENzExMzg1MzBEMTFFQTg4QjNF +NEJFMUQyRjc1RkIiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NkVENzExMzc1MzBEMTFFQTg4 +QjNFNEJFMUQyRjc1RkIiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTkg +KFdpbmRvd3MpIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6 +ZmNkNTdlM2UtZThjYS05ZjQ2LWEzZTUtMWJlYmE2NjA5Y2FmIiBzdFJlZjpkb2N1bWVudElEPSJh +ZG9iZTpkb2NpZDpwaG90b3Nob3A6MzZkNmNjNTUtNTY3Yi01MTQ2LWEwYWYtMzBlMzEwMTMxNDFk +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 + +--=_mailmaster-6a18e4a4_0_26a6_=-- diff --git a/media/inbound/2026-04-10_1732_G5开发周报_2026-04-07_--_2026-04-10---82832618-29e2-4b87-b89f-43c356734bc3.eml b/media/inbound/2026-04-10_1732_G5开发周报_2026-04-07_--_2026-04-10---82832618-29e2-4b87-b89f-43c356734bc3.eml new file mode 100644 index 0000000..f33c742 --- /dev/null +++ b/media/inbound/2026-04-10_1732_G5开发周报_2026-04-07_--_2026-04-10---82832618-29e2-4b87-b89f-43c356734bc3.eml @@ -0,0 +1,507 @@ +Date: Fri, 10 Apr 2026 17:32:10 +0800 +From: =?utf-8?B?5p2o6L2p?= +To: =?utf-8?B?5YiY5by6?= +Cc: =?utf-8?B?5bGI5paw6b6Z?= , =?utf-8?B?6ZmI5piO?= + , =?utf-8?B?5pu+6I6J?= +Message-ID: <1b9956c8-581a-410f-9464-1150b26151c2.yangxuan@witsoft.cn> +In-Reply-To: <4cb27326-57ed-4130-91ed-1a88eb2fa132.yangxuan@witsoft.cn> +References: <4cb27326-57ed-4130-91ed-1a88eb2fa132.yangxuan@witsoft.cn> +Subject: =?utf-8?B?RzXlvIDlj5HlkajmiqXjgJAyMDI2LTA0LTA3IC0tICAyMDI2LTA0?= + =?utf-8?B?LTEw44CR?= +MIME-Version: 1.0 +Content-Type: multipart/related; boundary="=_mailmaster-6a18e4a4_0_5d03_=" + +--=_mailmaster-6a18e4a4_0_5d03_= +Content-Type: multipart/alternative; boundary="=_mailmaster-6a18e4a4_0_701f_=" + +--=_mailmaster-6a18e4a4_0_701f_= +Content-Type: text/plain; charset="UTF-8" +Content-Transfer-Encoding: base64 + +5oKo5aW977yB5Lul5LiL5piv5oiR5pys5ZGo55qE5bel5L2c5oC757uT5Y+K5LiL5ZGo6K6h5YiS +77yM6K+35a6h6ZiF44CCCuacrOWRqOW3peS9nOaAu+e7kwrkuIDjgIHph43ngrnlt6XkvZzlrozm +iJDmg4XlhrUKCiAqIApHNei/m+mUgOWtmCA1LjQuNyDniYjmnKwK5LqM44CB5bi46KeE5bel5L2c +5piO57uGKioKMjAyNi0wNC0wNwoKICogCuiHquWKqOWFpeW6k+mAu+i+keais+eQhuS4juS8mOWM +lgoyMDI2LTA0LTA4CgogKiAK5bel5bqP5aeU5aSWLeWnlOWkluaUtuaWmS/pgIDmlpnoh6rliqjl +haXlupPogZTosIPlrozmiJAKCiAqIArlupPlrZjpnIDmsYLoh6rmtYvlrozmiJAKMjAyNi0wNC0w +OQoKICogCui9rOa1i+mXrumimOS/ruWkjQoKICogCuWFpeW6k+a1geeoi+ais+eQhgoKICogCuWF +peW6k+ihqOe7k+aehOazqOmHigoyMDI2LTA0LTEwCgogKiAK5rWL6K+V6Zeu6aKY5L+u5aSNCgog +KiAK5ZCE57G75Z6L5YWl5bqT5a6i5ZWG5L+h5oGv5qKz55CGCgogKiAK5ZCE57G75Z6L5Ye65YWl +5bqT5om55qyh5YWz6IGU5qKz55CGCuS4i+WRqOmHjeeCueS7u+WKoQoKICogCkc16L+b6ZSA5a2Y +IDUuNC43IOeJiOacrApCZXN0IHJlZ2FyZHMsCuadqOi9qQrlnLDlnYDvvJrkuK3lm73Ct+WNl+S6 +rOi9r+S7tuiwt+i9r+S7tuWkp+mBkzEx5Y+36Iqx56We5aSn5Y6mM0YK5omL5py677yaMTg3MjYx +Mjg0ODkK6YKu566x77yaeWFuZ3h1YW5Ad2l0c29mdC5jbgo= + +--=_mailmaster-6a18e4a4_0_701f_= +Content-Type: text/html; charset="UTF-8" +Content-Transfer-Encoding: base64 + +PGRpdiBjbGFzcz0iX19hbGl5dW5fZW1haWxfYm9keV9ibG9jayI+PGh0bWwgPjxoZWFkID48L2hl +YWQ+PGJvZHkgPjxkaXYgIHN0eWxlPSJmb250LWZhbWlseTogVGFob21hLCBBcmlhbCwgU1RIZWl0 +aVNDLUxpZ2h0LCBTaW1TdW4iPjxkaXYgIHN0eWxlPSJmb250LWZhbWlseTogVGFob21hLCBBcmlh +bCwgU1RIZWl0aVNDLUxpZ2h0LCBTaW1TdW47IGNsZWFyOiBib3RoOyI+PHAgIGNsYXNzPSJtZC1l +bmQtYmxvY2sgbWQtcCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGxpbmUtaGVpZ2h0 +OiBpbmhlcml0OyBtYXJnaW46IDEycHggMHB4OyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0 +aW9uOiByZWxhdGl2ZTsgY29sb3I6IHJnYig1MSwgNTEsIDUxKTsgZm9udC1mYW1pbHk6ICdPcGVu +IFNhbnMnLCAnQ2xlYXIgU2FucycsICdIZWx2ZXRpY2EgTmV1ZScsIEhlbHZldGljYSwgQXJpYWws +ICdTZWdvZSBVSSBFbW9qaScsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTZweDsgZm9udC1zdHls +ZTogbm9ybWFsOyBmb250LXZhcmlhbnQtbGlnYXR1cmVzOiBub3JtYWw7IGZvbnQtdmFyaWFudC1j +YXBzOiBub3JtYWw7IGZvbnQtd2VpZ2h0OiA0MDA7IGxldHRlci1zcGFjaW5nOiBub3JtYWw7IHRl +eHQtYWxpZ246IHN0YXJ0OyB0ZXh0LWluZGVudDogMHB4OyB0ZXh0LXRyYW5zZm9ybTogbm9uZTsg +d29yZC1zcGFjaW5nOiAwcHg7IHRleHQtZGVjb3JhdGlvbi10aGlja25lc3M6IGluaXRpYWw7IHRl +eHQtZGVjb3JhdGlvbi1zdHlsZTogaW5pdGlhbDsgdGV4dC1kZWNvcmF0aW9uLWNvbG9yOiBpbml0 +aWFsOyI+PC9wPjxwICBjaWQ9Im4xNzYiIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCBtZC1mb2N1 +cyIgbWR0eXBlPSJwYXJhZ3JhcGgiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5l +LWhlaWdodDogaW5oZXJpdDsgbWFyZ2luOiAwLjhlbSAwcHg7IHdoaXRlLXNwYWNlOiBwcmUtd3Jh +cDsgcG9zaXRpb246IHJlbGF0aXZlOyBjb2xvcjogcmdiKDUxLCA1MSwgNTEpOyBmb250LWZhbWls +eTogJ09wZW4gU2FucycsICdDbGVhciBTYW5zJywgJ0hlbHZldGljYSBOZXVlJywgSGVsdmV0aWNh +LCBBcmlhbCwgJ1NlZ29lIFVJIEVtb2ppJywgc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxNnB4OyBm +b250LXN0eWxlOiBub3JtYWw7IGZvbnQtdmFyaWFudC1saWdhdHVyZXM6IG5vcm1hbDsgZm9udC12 +YXJpYW50LWNhcHM6IG5vcm1hbDsgZm9udC13ZWlnaHQ6IDQwMDsgbGV0dGVyLXNwYWNpbmc6IG5v +cm1hbDsgdGV4dC1hbGlnbjogc3RhcnQ7IHRleHQtaW5kZW50OiAwcHg7IHRleHQtdHJhbnNmb3Jt +OiBub25lOyB3b3JkLXNwYWNpbmc6IDBweDsgdGV4dC1kZWNvcmF0aW9uLXRoaWNrbmVzczogaW5p +dGlhbDsgdGV4dC1kZWNvcmF0aW9uLXN0eWxlOiBpbml0aWFsOyB0ZXh0LWRlY29yYXRpb24tY29s +b3I6IGluaXRpYWw7Ij48c3BhbiAgY2xhc3M9Im1kLXBsYWluIiBtZC1pbmxpbmU9InBsYWluIiBz +dHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPuaCqOWlve+8geS7peS4i+aYr+aIkeacrOWR +qOeahOW3peS9nOaAu+e7k+WPiuS4i+WRqOiuoeWIku+8jOivt+WuoemYheOAgjwvc3Bhbj48L3A+ +PGgzICBjaWQ9Im4xNzciIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtaGVhZGluZyIgbWR0eXBlPSJo +ZWFkaW5nIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgYnJlYWstYWZ0ZXI6IGF2b2lk +LXBhZ2U7IGJyZWFrLWluc2lkZTogYXZvaWQ7IGZvbnQtc2l6ZTogMS41ZW07IG1hcmdpbi10b3A6 +IDFyZW07IG1hcmdpbi1ib3R0b206IDFyZW07IHBvc2l0aW9uOiByZWxhdGl2ZTsgZm9udC13ZWln +aHQ6IDcwMDsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyBjb2xvcjogcmdiKDUxLCA1MSwgNTEpOyBm +b250LWZhbWlseTogJ09wZW4gU2FucycsICdDbGVhciBTYW5zJywgJ0hlbHZldGljYSBOZXVlJywg +SGVsdmV0aWNhLCBBcmlhbCwgJ1NlZ29lIFVJIEVtb2ppJywgc2Fucy1zZXJpZjsgZm9udC1zdHls +ZTogbm9ybWFsOyBmb250LXZhcmlhbnQtbGlnYXR1cmVzOiBub3JtYWw7IGZvbnQtdmFyaWFudC1j +YXBzOiBub3JtYWw7IGxldHRlci1zcGFjaW5nOiBub3JtYWw7IHRleHQtYWxpZ246IHN0YXJ0OyB0 +ZXh0LWluZGVudDogMHB4OyB0ZXh0LXRyYW5zZm9ybTogbm9uZTsgd29yZC1zcGFjaW5nOiAwcHg7 +IHRleHQtZGVjb3JhdGlvbi10aGlja25lc3M6IGluaXRpYWw7IHRleHQtZGVjb3JhdGlvbi1zdHls +ZTogaW5pdGlhbDsgdGV4dC1kZWNvcmF0aW9uLWNvbG9yOiBpbml0aWFsOyI+PHNwYW4gIGNsYXNz +PSJtZC1wbGFpbiIgbWQtaW5saW5lPSJwbGFpbiIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1i +b3g7IGZvbnQtd2VpZ2h0OiBib2xkOyI+5pys5ZGo5bel5L2c5oC757uTPC9zcGFuPjwvaDM+PGg0 +ICBjaWQ9Im4xNzgiIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtaGVhZGluZyIgbWR0eXBlPSJoZWFk +aW5nIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgYnJlYWstYWZ0ZXI6IGF2b2lkLXBh +Z2U7IGJyZWFrLWluc2lkZTogYXZvaWQ7IGZvbnQtc2l6ZTogMS4yNWVtOyBtYXJnaW4tdG9wOiAx +cmVtOyBtYXJnaW4tYm90dG9tOiAxcmVtOyBwb3NpdGlvbjogcmVsYXRpdmU7IGZvbnQtd2VpZ2h0 +OiA3MDA7IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgY29sb3I6IHJnYig1MSwgNTEsIDUxKTsgZm9u +dC1mYW1pbHk6ICdPcGVuIFNhbnMnLCAnQ2xlYXIgU2FucycsICdIZWx2ZXRpY2EgTmV1ZScsIEhl +bHZldGljYSwgQXJpYWwsICdTZWdvZSBVSSBFbW9qaScsIHNhbnMtc2VyaWY7IGZvbnQtc3R5bGU6 +IG5vcm1hbDsgZm9udC12YXJpYW50LWxpZ2F0dXJlczogbm9ybWFsOyBmb250LXZhcmlhbnQtY2Fw +czogbm9ybWFsOyBsZXR0ZXItc3BhY2luZzogbm9ybWFsOyB0ZXh0LWFsaWduOiBzdGFydDsgdGV4 +dC1pbmRlbnQ6IDBweDsgdGV4dC10cmFuc2Zvcm06IG5vbmU7IHdvcmQtc3BhY2luZzogMHB4OyB0 +ZXh0LWRlY29yYXRpb24tdGhpY2tuZXNzOiBpbml0aWFsOyB0ZXh0LWRlY29yYXRpb24tc3R5bGU6 +IGluaXRpYWw7IHRleHQtZGVjb3JhdGlvbi1jb2xvcjogaW5pdGlhbDsiPjxzcGFuICBjbGFzcz0i +bWQtcGxhaW4iIG1kLWlubGluZT0icGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94 +OyI+5LiA44CB6YeN54K55bel5L2c5a6M5oiQ5oOF5Ya1PC9zcGFuPjwvaDQ+PHVsICBjaWQ9Im4x +NzkiIGNsYXNzPSJ1bC1saXN0IiBkYXRhLW1hcms9Ii0iIG1kdHlwZT0ibGlzdCIgc3R5bGU9ImJv +eC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMC44ZW0gMHB4OyBwYWRkaW5nLWxlZnQ6IDMw +cHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsgY29sb3I6IHJnYig1MSwgNTEsIDUxKTsgZm9udC1mYW1p +bHk6ICdPcGVuIFNhbnMnLCAnQ2xlYXIgU2FucycsICdIZWx2ZXRpY2EgTmV1ZScsIEhlbHZldGlj +YSwgQXJpYWwsICdTZWdvZSBVSSBFbW9qaScsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTZweDsg +Zm9udC1zdHlsZTogbm9ybWFsOyBmb250LXZhcmlhbnQtbGlnYXR1cmVzOiBub3JtYWw7IGZvbnQt +dmFyaWFudC1jYXBzOiBub3JtYWw7IGZvbnQtd2VpZ2h0OiA0MDA7IGxldHRlci1zcGFjaW5nOiBu +b3JtYWw7IHRleHQtYWxpZ246IHN0YXJ0OyB0ZXh0LWluZGVudDogMHB4OyB0ZXh0LXRyYW5zZm9y +bTogbm9uZTsgd2hpdGUtc3BhY2U6IG5vcm1hbDsgd29yZC1zcGFjaW5nOiAwcHg7IHRleHQtZGVj +b3JhdGlvbi10aGlja25lc3M6IGluaXRpYWw7IHRleHQtZGVjb3JhdGlvbi1zdHlsZTogaW5pdGlh +bDsgdGV4dC1kZWNvcmF0aW9uLWNvbG9yOiBpbml0aWFsOyI+PGxpICBjaWQ9Im4xODAiIGNsYXNz +PSJtZC1saXN0LWl0ZW0iIG1kdHlwZT0ibGlzdF9pdGVtIiBzdHlsZT0iYm94LXNpemluZzogYm9y +ZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxwICBjaWQ9Im4xODEi +IGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCIgbWR0eXBlPSJwYXJhZ3JhcGgiIHN0eWxlPSJib3gt +c2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5oZXJpdDsgbWFyZ2luOiAwcHggMHB4 +IDAuNXJlbTsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48c3Bh +biAgY2xhc3M9Im1kLXBsYWluIiBtZC1pbmxpbmU9InBsYWluIiBzdHlsZT0iYm94LXNpemluZzog +Ym9yZGVyLWJveDsiPkc16L+b6ZSA5a2YIDUuNC43IOeJiOacrDwvc3Bhbj48L3A+PC9saT48L3Vs +PjxoNCAgY2lkPSJuMTgyIiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLWhlYWRpbmciIG1kdHlwZT0i +aGVhZGluZyIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGJyZWFrLWFmdGVyOiBhdm9p +ZC1wYWdlOyBicmVhay1pbnNpZGU6IGF2b2lkOyBmb250LXNpemU6IDEuMjVlbTsgbWFyZ2luLXRv +cDogMXJlbTsgbWFyZ2luLWJvdHRvbTogMXJlbTsgcG9zaXRpb246IHJlbGF0aXZlOyBmb250LXdl +aWdodDogNzAwOyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IGNvbG9yOiByZ2IoNTEsIDUxLCA1MSk7 +IGZvbnQtZmFtaWx5OiAnT3BlbiBTYW5zJywgJ0NsZWFyIFNhbnMnLCAnSGVsdmV0aWNhIE5ldWUn +LCBIZWx2ZXRpY2EsIEFyaWFsLCAnU2Vnb2UgVUkgRW1vamknLCBzYW5zLXNlcmlmOyBmb250LXN0 +eWxlOiBub3JtYWw7IGZvbnQtdmFyaWFudC1saWdhdHVyZXM6IG5vcm1hbDsgZm9udC12YXJpYW50 +LWNhcHM6IG5vcm1hbDsgbGV0dGVyLXNwYWNpbmc6IG5vcm1hbDsgdGV4dC1hbGlnbjogc3RhcnQ7 +IHRleHQtaW5kZW50OiAwcHg7IHRleHQtdHJhbnNmb3JtOiBub25lOyB3b3JkLXNwYWNpbmc6IDBw +eDsgdGV4dC1kZWNvcmF0aW9uLXRoaWNrbmVzczogaW5pdGlhbDsgdGV4dC1kZWNvcmF0aW9uLXN0 +eWxlOiBpbml0aWFsOyB0ZXh0LWRlY29yYXRpb24tY29sb3I6IGluaXRpYWw7Ij48c3Ryb25nICBz +dHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPjxzcGFuICBjbGFzcz0ibWQtcGxhaW4iIG1k +LWlubGluZT0icGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+5LqM44CB5bi4 +6KeE5bel5L2c5piO57uGPC9zcGFuPjxzcGFuICBtZC1pbmxpbmU9ImVzY2FwZSIgc3R5bGU9ImJv +eC1zaXppbmc6IGJvcmRlci1ib3g7Ij4qPC9zcGFuPjxzcGFuICBtZC1pbmxpbmU9ImVzY2FwZSIg +c3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGZvbnQtc3R5bGU6IGl0YWxpYzsiPio8L3Nw +YW4+PC9zdHJvbmc+PC9oND48cCAgY2lkPSJuMTgzIiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLXAi +IG1kdHlwZT0icGFyYWdyYXBoIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1o +ZWlnaHQ6IGluaGVyaXQ7IG1hcmdpbjogMC44ZW0gMHB4OyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7 +IHBvc2l0aW9uOiByZWxhdGl2ZTsgY29sb3I6IHJnYig1MSwgNTEsIDUxKTsgZm9udC1mYW1pbHk6 +ICdPcGVuIFNhbnMnLCAnQ2xlYXIgU2FucycsICdIZWx2ZXRpY2EgTmV1ZScsIEhlbHZldGljYSwg +QXJpYWwsICdTZWdvZSBVSSBFbW9qaScsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTZweDsgZm9u +dC1zdHlsZTogbm9ybWFsOyBmb250LXZhcmlhbnQtbGlnYXR1cmVzOiBub3JtYWw7IGZvbnQtdmFy +aWFudC1jYXBzOiBub3JtYWw7IGZvbnQtd2VpZ2h0OiA0MDA7IGxldHRlci1zcGFjaW5nOiBub3Jt +YWw7IHRleHQtYWxpZ246IHN0YXJ0OyB0ZXh0LWluZGVudDogMHB4OyB0ZXh0LXRyYW5zZm9ybTog +bm9uZTsgd29yZC1zcGFjaW5nOiAwcHg7IHRleHQtZGVjb3JhdGlvbi10aGlja25lc3M6IGluaXRp +YWw7IHRleHQtZGVjb3JhdGlvbi1zdHlsZTogaW5pdGlhbDsgdGV4dC1kZWNvcmF0aW9uLWNvbG9y +OiBpbml0aWFsOyI+PHNwYW4gIGNsYXNzPSJtZC1wbGFpbiIgbWQtaW5saW5lPSJwbGFpbiIgc3R5 +bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGZvbnQtd2VpZ2h0OiBib2xkOyI+MjAyNi0wNC0w +Nzwvc3Bhbj48L3A+PG9sICBjaWQ9Im4xODQiIGNsYXNzPSJvbC1saXN0IiBtZHR5cGU9Imxpc3Qi +IHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDAuOGVtIDBweDsgcGFkZGlu +Zy1sZWZ0OiAzMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7IGNvbG9yOiByZ2IoNTEsIDUxLCA1MSk7 +IGZvbnQtZmFtaWx5OiAnT3BlbiBTYW5zJywgJ0NsZWFyIFNhbnMnLCAnSGVsdmV0aWNhIE5ldWUn +LCBIZWx2ZXRpY2EsIEFyaWFsLCAnU2Vnb2UgVUkgRW1vamknLCBzYW5zLXNlcmlmOyBmb250LXNp +emU6IDE2cHg7IGZvbnQtc3R5bGU6IG5vcm1hbDsgZm9udC12YXJpYW50LWxpZ2F0dXJlczogbm9y +bWFsOyBmb250LXZhcmlhbnQtY2Fwczogbm9ybWFsOyBmb250LXdlaWdodDogNDAwOyBsZXR0ZXIt +c3BhY2luZzogbm9ybWFsOyB0ZXh0LWFsaWduOiBzdGFydDsgdGV4dC1pbmRlbnQ6IDBweDsgdGV4 +dC10cmFuc2Zvcm06IG5vbmU7IHdoaXRlLXNwYWNlOiBub3JtYWw7IHdvcmQtc3BhY2luZzogMHB4 +OyB0ZXh0LWRlY29yYXRpb24tdGhpY2tuZXNzOiBpbml0aWFsOyB0ZXh0LWRlY29yYXRpb24tc3R5 +bGU6IGluaXRpYWw7IHRleHQtZGVjb3JhdGlvbi1jb2xvcjogaW5pdGlhbDsiPjxsaSAgY2lkPSJu +MTg1IiBjbGFzcz0ibWQtbGlzdC1pdGVtIiBtZHR5cGU9Imxpc3RfaXRlbSIgc3R5bGU9ImJveC1z +aXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48cCAg +Y2lkPSJuMTg2IiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLXAiIG1kdHlwZT0icGFyYWdyYXBoIiBz +dHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IG1hcmdp +bjogMHB4IDBweCAwLjVyZW07IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJlbGF0 +aXZlOyI+PHNwYW4gIGNsYXNzPSJtZC1wbGFpbiIgbWQtaW5saW5lPSJwbGFpbiIgc3R5bGU9ImJv +eC1zaXppbmc6IGJvcmRlci1ib3g7Ij7oh6rliqjlhaXlupPpgLvovpHmorPnkIbkuI7kvJjljJY8 +L3NwYW4+PC9wPjwvbGk+PC9vbD48cCAgY2lkPSJuMTg3IiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1k +LXAiIG1kdHlwZT0icGFyYWdyYXBoIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbGlu +ZS1oZWlnaHQ6IGluaGVyaXQ7IG1hcmdpbjogMC44ZW0gMHB4OyB3aGl0ZS1zcGFjZTogcHJlLXdy +YXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsgY29sb3I6IHJnYig1MSwgNTEsIDUxKTsgZm9udC1mYW1p +bHk6ICdPcGVuIFNhbnMnLCAnQ2xlYXIgU2FucycsICdIZWx2ZXRpY2EgTmV1ZScsIEhlbHZldGlj +YSwgQXJpYWwsICdTZWdvZSBVSSBFbW9qaScsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTZweDsg +Zm9udC1zdHlsZTogbm9ybWFsOyBmb250LXZhcmlhbnQtbGlnYXR1cmVzOiBub3JtYWw7IGZvbnQt +dmFyaWFudC1jYXBzOiBub3JtYWw7IGZvbnQtd2VpZ2h0OiA0MDA7IGxldHRlci1zcGFjaW5nOiBu +b3JtYWw7IHRleHQtYWxpZ246IHN0YXJ0OyB0ZXh0LWluZGVudDogMHB4OyB0ZXh0LXRyYW5zZm9y +bTogbm9uZTsgd29yZC1zcGFjaW5nOiAwcHg7IHRleHQtZGVjb3JhdGlvbi10aGlja25lc3M6IGlu +aXRpYWw7IHRleHQtZGVjb3JhdGlvbi1zdHlsZTogaW5pdGlhbDsgdGV4dC1kZWNvcmF0aW9uLWNv +bG9yOiBpbml0aWFsOyI+PHNwYW4gIGNsYXNzPSJtZC1wbGFpbiIgbWQtaW5saW5lPSJwbGFpbiIg +c3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGZvbnQtd2VpZ2h0OiBib2xkOyI+MjAyNi0w +NC0wODwvc3Bhbj48L3A+PG9sICBjaWQ9Im4xODgiIGNsYXNzPSJvbC1saXN0IiBtZHR5cGU9Imxp +c3QiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDAuOGVtIDBweDsgcGFk +ZGluZy1sZWZ0OiAzMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7IGNvbG9yOiByZ2IoNTEsIDUxLCA1 +MSk7IGZvbnQtZmFtaWx5OiAnT3BlbiBTYW5zJywgJ0NsZWFyIFNhbnMnLCAnSGVsdmV0aWNhIE5l +dWUnLCBIZWx2ZXRpY2EsIEFyaWFsLCAnU2Vnb2UgVUkgRW1vamknLCBzYW5zLXNlcmlmOyBmb250 +LXNpemU6IDE2cHg7IGZvbnQtc3R5bGU6IG5vcm1hbDsgZm9udC12YXJpYW50LWxpZ2F0dXJlczog +bm9ybWFsOyBmb250LXZhcmlhbnQtY2Fwczogbm9ybWFsOyBmb250LXdlaWdodDogNDAwOyBsZXR0 +ZXItc3BhY2luZzogbm9ybWFsOyB0ZXh0LWFsaWduOiBzdGFydDsgdGV4dC1pbmRlbnQ6IDBweDsg +dGV4dC10cmFuc2Zvcm06IG5vbmU7IHdoaXRlLXNwYWNlOiBub3JtYWw7IHdvcmQtc3BhY2luZzog +MHB4OyB0ZXh0LWRlY29yYXRpb24tdGhpY2tuZXNzOiBpbml0aWFsOyB0ZXh0LWRlY29yYXRpb24t +c3R5bGU6IGluaXRpYWw7IHRleHQtZGVjb3JhdGlvbi1jb2xvcjogaW5pdGlhbDsiPjxsaSAgY2lk +PSJuMTg5IiBjbGFzcz0ibWQtbGlzdC1pdGVtIiBtZHR5cGU9Imxpc3RfaXRlbSIgc3R5bGU9ImJv +eC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48 +cCAgY2lkPSJuMTkwIiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLXAiIG1kdHlwZT0icGFyYWdyYXBo +IiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IG1h +cmdpbjogMHB4IDBweCAwLjVyZW07IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJl +bGF0aXZlOyI+PHNwYW4gIGNsYXNzPSJtZC1wbGFpbiIgbWQtaW5saW5lPSJwbGFpbiIgc3R5bGU9 +ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij7lt6Xluo/lp5TlpJYt5aeU5aSW5pS25paZL+mAgOaW +meiHquWKqOWFpeW6k+iBlOiwg+WujOaIkDwvc3Bhbj48L3A+PC9saT48bGkgIGNpZD0ibjE5MSIg +Y2xhc3M9Im1kLWxpc3QtaXRlbSIgbWR0eXBlPSJsaXN0X2l0ZW0iIHN0eWxlPSJib3gtc2l6aW5n +OiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHAgIGNpZD0i +bjE5MiIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1wIiBtZHR5cGU9InBhcmFncmFwaCIgc3R5bGU9 +ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhlcml0OyBtYXJnaW46IDBw +eCAwcHggMC41cmVtOyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsi +PjxzcGFuICBjbGFzcz0ibWQtcGxhaW4iIG1kLWlubGluZT0icGxhaW4iIHN0eWxlPSJib3gtc2l6 +aW5nOiBib3JkZXItYm94OyI+5bqT5a2Y6ZyA5rGC6Ieq5rWL5a6M5oiQPC9zcGFuPjwvcD48L2xp +Pjwvb2w+PHAgIGNpZD0ibjE5MyIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1wIiBtZHR5cGU9InBh +cmFncmFwaCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhl +cml0OyBtYXJnaW46IDAuOGVtIDBweDsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyBwb3NpdGlvbjog +cmVsYXRpdmU7IGNvbG9yOiByZ2IoNTEsIDUxLCA1MSk7IGZvbnQtZmFtaWx5OiAnT3BlbiBTYW5z +JywgJ0NsZWFyIFNhbnMnLCAnSGVsdmV0aWNhIE5ldWUnLCBIZWx2ZXRpY2EsIEFyaWFsLCAnU2Vn +b2UgVUkgRW1vamknLCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDE2cHg7IGZvbnQtc3R5bGU6IG5v +cm1hbDsgZm9udC12YXJpYW50LWxpZ2F0dXJlczogbm9ybWFsOyBmb250LXZhcmlhbnQtY2Fwczog +bm9ybWFsOyBmb250LXdlaWdodDogNDAwOyBsZXR0ZXItc3BhY2luZzogbm9ybWFsOyB0ZXh0LWFs +aWduOiBzdGFydDsgdGV4dC1pbmRlbnQ6IDBweDsgdGV4dC10cmFuc2Zvcm06IG5vbmU7IHdvcmQt +c3BhY2luZzogMHB4OyB0ZXh0LWRlY29yYXRpb24tdGhpY2tuZXNzOiBpbml0aWFsOyB0ZXh0LWRl +Y29yYXRpb24tc3R5bGU6IGluaXRpYWw7IHRleHQtZGVjb3JhdGlvbi1jb2xvcjogaW5pdGlhbDsi +PjxzcGFuICBjbGFzcz0ibWQtcGxhaW4iIG1kLWlubGluZT0icGxhaW4iIHN0eWxlPSJib3gtc2l6 +aW5nOiBib3JkZXItYm94OyBmb250LXdlaWdodDogYm9sZDsiPjIwMjYtMDQtMDk8L3NwYW4+PC9w +PjxvbCAgY2lkPSJuMTk0IiBjbGFzcz0ib2wtbGlzdCIgbWR0eXBlPSJsaXN0IiBzdHlsZT0iYm94 +LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwLjhlbSAwcHg7IHBhZGRpbmctbGVmdDogMzBw +eDsgcG9zaXRpb246IHJlbGF0aXZlOyBjb2xvcjogcmdiKDUxLCA1MSwgNTEpOyBmb250LWZhbWls +eTogJ09wZW4gU2FucycsICdDbGVhciBTYW5zJywgJ0hlbHZldGljYSBOZXVlJywgSGVsdmV0aWNh +LCBBcmlhbCwgJ1NlZ29lIFVJIEVtb2ppJywgc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxNnB4OyBm +b250LXN0eWxlOiBub3JtYWw7IGZvbnQtdmFyaWFudC1saWdhdHVyZXM6IG5vcm1hbDsgZm9udC12 +YXJpYW50LWNhcHM6IG5vcm1hbDsgZm9udC13ZWlnaHQ6IDQwMDsgbGV0dGVyLXNwYWNpbmc6IG5v +cm1hbDsgdGV4dC1hbGlnbjogc3RhcnQ7IHRleHQtaW5kZW50OiAwcHg7IHRleHQtdHJhbnNmb3Jt +OiBub25lOyB3aGl0ZS1zcGFjZTogbm9ybWFsOyB3b3JkLXNwYWNpbmc6IDBweDsgdGV4dC1kZWNv +cmF0aW9uLXRoaWNrbmVzczogaW5pdGlhbDsgdGV4dC1kZWNvcmF0aW9uLXN0eWxlOiBpbml0aWFs +OyB0ZXh0LWRlY29yYXRpb24tY29sb3I6IGluaXRpYWw7Ij48bGkgIGNpZD0ibjE5NSIgY2xhc3M9 +Im1kLWxpc3QtaXRlbSIgbWR0eXBlPSJsaXN0X2l0ZW0iIHN0eWxlPSJib3gtc2l6aW5nOiBib3Jk +ZXItYm94OyBtYXJnaW46IDBweDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHAgIGNpZD0ibjE5NiIg +Y2xhc3M9Im1kLWVuZC1ibG9jayBtZC1wIiBtZHR5cGU9InBhcmFncmFwaCIgc3R5bGU9ImJveC1z +aXppbmc6IGJvcmRlci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhlcml0OyBtYXJnaW46IDBweCAwcHgg +MC41cmVtOyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxzcGFu +ICBjbGFzcz0ibWQtcGxhaW4iIG1kLWlubGluZT0icGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBi +b3JkZXItYm94OyI+6L2s5rWL6Zeu6aKY5L+u5aSNPC9zcGFuPjwvcD48L2xpPjxsaSAgY2lkPSJu +MTk3IiBjbGFzcz0ibWQtbGlzdC1pdGVtIiBtZHR5cGU9Imxpc3RfaXRlbSIgc3R5bGU9ImJveC1z +aXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48cCAg +Y2lkPSJuMTk4IiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLXAiIG1kdHlwZT0icGFyYWdyYXBoIiBz +dHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IG1hcmdp +bjogMHB4IDBweCAwLjVyZW07IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJlbGF0 +aXZlOyI+PHNwYW4gIGNsYXNzPSJtZC1wbGFpbiIgbWQtaW5saW5lPSJwbGFpbiIgc3R5bGU9ImJv +eC1zaXppbmc6IGJvcmRlci1ib3g7Ij7lhaXlupPmtYHnqIvmorPnkIY8L3NwYW4+PC9wPjwvbGk+ +PGxpICBjaWQ9Im4xOTkiIGNsYXNzPSJtZC1saXN0LWl0ZW0iIG1kdHlwZT0ibGlzdF9pdGVtIiBz +dHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBvc2l0aW9uOiByZWxh +dGl2ZTsiPjxwICBjaWQ9Im4yMDAiIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCIgbWR0eXBlPSJw +YXJhZ3JhcGgiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5o +ZXJpdDsgbWFyZ2luOiAwcHggMHB4IDAuNXJlbTsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyBwb3Np +dGlvbjogcmVsYXRpdmU7Ij48c3BhbiAgY2xhc3M9Im1kLXBsYWluIiBtZC1pbmxpbmU9InBsYWlu +IiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPuWFpeW6k+ihqOe7k+aehOazqOmHijwv +c3Bhbj48L3A+PC9saT48L29sPjxwICBjaWQ9Im4yMDEiIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQt +cCIgbWR0eXBlPSJwYXJhZ3JhcGgiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5l +LWhlaWdodDogaW5oZXJpdDsgbWFyZ2luOiAwLjhlbSAwcHg7IHdoaXRlLXNwYWNlOiBwcmUtd3Jh +cDsgcG9zaXRpb246IHJlbGF0aXZlOyBjb2xvcjogcmdiKDUxLCA1MSwgNTEpOyBmb250LWZhbWls +eTogJ09wZW4gU2FucycsICdDbGVhciBTYW5zJywgJ0hlbHZldGljYSBOZXVlJywgSGVsdmV0aWNh +LCBBcmlhbCwgJ1NlZ29lIFVJIEVtb2ppJywgc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxNnB4OyBm +b250LXN0eWxlOiBub3JtYWw7IGZvbnQtdmFyaWFudC1saWdhdHVyZXM6IG5vcm1hbDsgZm9udC12 +YXJpYW50LWNhcHM6IG5vcm1hbDsgZm9udC13ZWlnaHQ6IDQwMDsgbGV0dGVyLXNwYWNpbmc6IG5v +cm1hbDsgdGV4dC1hbGlnbjogc3RhcnQ7IHRleHQtaW5kZW50OiAwcHg7IHRleHQtdHJhbnNmb3Jt +OiBub25lOyB3b3JkLXNwYWNpbmc6IDBweDsgdGV4dC1kZWNvcmF0aW9uLXRoaWNrbmVzczogaW5p +dGlhbDsgdGV4dC1kZWNvcmF0aW9uLXN0eWxlOiBpbml0aWFsOyB0ZXh0LWRlY29yYXRpb24tY29s +b3I6IGluaXRpYWw7Ij48c3BhbiAgY2xhc3M9Im1kLXBsYWluIiBtZC1pbmxpbmU9InBsYWluIiBz +dHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgZm9udC13ZWlnaHQ6IGJvbGQ7Ij4yMDI2LTA0 +LTEwPC9zcGFuPjwvcD48b2wgIGNpZD0ibjIwMiIgY2xhc3M9Im9sLWxpc3QiIG1kdHlwZT0ibGlz +dCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMC44ZW0gMHB4OyBwYWRk +aW5nLWxlZnQ6IDMwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsgY29sb3I6IHJnYig1MSwgNTEsIDUx +KTsgZm9udC1mYW1pbHk6ICdPcGVuIFNhbnMnLCAnQ2xlYXIgU2FucycsICdIZWx2ZXRpY2EgTmV1 +ZScsIEhlbHZldGljYSwgQXJpYWwsICdTZWdvZSBVSSBFbW9qaScsIHNhbnMtc2VyaWY7IGZvbnQt +c2l6ZTogMTZweDsgZm9udC1zdHlsZTogbm9ybWFsOyBmb250LXZhcmlhbnQtbGlnYXR1cmVzOiBu +b3JtYWw7IGZvbnQtdmFyaWFudC1jYXBzOiBub3JtYWw7IGZvbnQtd2VpZ2h0OiA0MDA7IGxldHRl +ci1zcGFjaW5nOiBub3JtYWw7IHRleHQtYWxpZ246IHN0YXJ0OyB0ZXh0LWluZGVudDogMHB4OyB0 +ZXh0LXRyYW5zZm9ybTogbm9uZTsgd2hpdGUtc3BhY2U6IG5vcm1hbDsgd29yZC1zcGFjaW5nOiAw +cHg7IHRleHQtZGVjb3JhdGlvbi10aGlja25lc3M6IGluaXRpYWw7IHRleHQtZGVjb3JhdGlvbi1z +dHlsZTogaW5pdGlhbDsgdGV4dC1kZWNvcmF0aW9uLWNvbG9yOiBpbml0aWFsOyI+PGxpICBjaWQ9 +Im4yMDMiIGNsYXNzPSJtZC1saXN0LWl0ZW0iIG1kdHlwZT0ibGlzdF9pdGVtIiBzdHlsZT0iYm94 +LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxw +ICBjaWQ9Im4yMDQiIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCIgbWR0eXBlPSJwYXJhZ3JhcGgi +IHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5oZXJpdDsgbWFy +Z2luOiAwcHggMHB4IDAuNXJlbTsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyBwb3NpdGlvbjogcmVs +YXRpdmU7Ij48c3BhbiAgY2xhc3M9Im1kLXBsYWluIiBtZC1pbmxpbmU9InBsYWluIiBzdHlsZT0i +Ym94LXNpemluZzogYm9yZGVyLWJveDsiPua1i+ivlemXrumimOS/ruWkjTwvc3Bhbj48L3A+PC9s +aT48bGkgIGNpZD0ibjIwNSIgY2xhc3M9Im1kLWxpc3QtaXRlbSIgbWR0eXBlPSJsaXN0X2l0ZW0i +IHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcG9zaXRpb246IHJl +bGF0aXZlOyI+PHAgIGNpZD0ibjIwNiIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1wIiBtZHR5cGU9 +InBhcmFncmFwaCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGxpbmUtaGVpZ2h0OiBp +bmhlcml0OyBtYXJnaW46IDBweCAwcHggMC41cmVtOyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBv +c2l0aW9uOiByZWxhdGl2ZTsiPjxzcGFuICBjbGFzcz0ibWQtcGxhaW4iIG1kLWlubGluZT0icGxh +aW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+5ZCE57G75Z6L5YWl5bqT5a6i5ZWG +5L+h5oGv5qKz55CGPC9zcGFuPjwvcD48L2xpPjxsaSAgY2lkPSJuMjA3IiBjbGFzcz0ibWQtbGlz +dC1pdGVtIiBtZHR5cGU9Imxpc3RfaXRlbSIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7 +IG1hcmdpbjogMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48cCAgY2lkPSJuMjA4IiBjbGFzcz0i +bWQtZW5kLWJsb2NrIG1kLXAiIG1kdHlwZT0icGFyYWdyYXBoIiBzdHlsZT0iYm94LXNpemluZzog +Ym9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IG1hcmdpbjogMHB4IDBweCAwLjVyZW07 +IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHNwYW4gIGNsYXNz +PSJtZC1wbGFpbiIgbWQtaW5saW5lPSJwbGFpbiIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1i +b3g7Ij7lkITnsbvlnovlh7rlhaXlupPmibnmrKHlhbPogZTmorPnkIY8L3NwYW4+PC9wPjwvbGk+ +PC9vbD48aDMgIGNpZD0ibjIwOSIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1oZWFkaW5nIiBtZHR5 +cGU9ImhlYWRpbmciIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBicmVhay1hZnRlcjog +YXZvaWQtcGFnZTsgYnJlYWstaW5zaWRlOiBhdm9pZDsgZm9udC1zaXplOiAxLjVlbTsgbWFyZ2lu +LXRvcDogMXJlbTsgbWFyZ2luLWJvdHRvbTogMXJlbTsgcG9zaXRpb246IHJlbGF0aXZlOyBmb250 +LXdlaWdodDogNzAwOyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IGNvbG9yOiByZ2IoNTEsIDUxLCA1 +MSk7IGZvbnQtZmFtaWx5OiAnT3BlbiBTYW5zJywgJ0NsZWFyIFNhbnMnLCAnSGVsdmV0aWNhIE5l +dWUnLCBIZWx2ZXRpY2EsIEFyaWFsLCAnU2Vnb2UgVUkgRW1vamknLCBzYW5zLXNlcmlmOyBmb250 +LXN0eWxlOiBub3JtYWw7IGZvbnQtdmFyaWFudC1saWdhdHVyZXM6IG5vcm1hbDsgZm9udC12YXJp +YW50LWNhcHM6IG5vcm1hbDsgbGV0dGVyLXNwYWNpbmc6IG5vcm1hbDsgdGV4dC1hbGlnbjogc3Rh +cnQ7IHRleHQtaW5kZW50OiAwcHg7IHRleHQtdHJhbnNmb3JtOiBub25lOyB3b3JkLXNwYWNpbmc6 +IDBweDsgdGV4dC1kZWNvcmF0aW9uLXRoaWNrbmVzczogaW5pdGlhbDsgdGV4dC1kZWNvcmF0aW9u +LXN0eWxlOiBpbml0aWFsOyB0ZXh0LWRlY29yYXRpb24tY29sb3I6IGluaXRpYWw7Ij48c3BhbiAg +Y2xhc3M9Im1kLXBsYWluIiBtZC1pbmxpbmU9InBsYWluIiBzdHlsZT0iYm94LXNpemluZzogYm9y +ZGVyLWJveDsgZm9udC13ZWlnaHQ6IGJvbGQ7Ij7kuIvlkajph43ngrnku7vliqE8L3NwYW4+PC9o +Mz48dWwgIGNpZD0ibjIxMCIgY2xhc3M9InVsLWxpc3QiIGRhdGEtbWFyaz0iLSIgbWR0eXBlPSJs +aXN0IiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwLjhlbSAwcHggMHB4 +OyBwYWRkaW5nLWxlZnQ6IDMwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsgY29sb3I6IHJnYig1MSwg +NTEsIDUxKTsgZm9udC1mYW1pbHk6ICdPcGVuIFNhbnMnLCAnQ2xlYXIgU2FucycsICdIZWx2ZXRp +Y2EgTmV1ZScsIEhlbHZldGljYSwgQXJpYWwsICdTZWdvZSBVSSBFbW9qaScsIHNhbnMtc2VyaWY7 +IGZvbnQtc2l6ZTogMTZweDsgZm9udC1zdHlsZTogbm9ybWFsOyBmb250LXZhcmlhbnQtbGlnYXR1 +cmVzOiBub3JtYWw7IGZvbnQtdmFyaWFudC1jYXBzOiBub3JtYWw7IGZvbnQtd2VpZ2h0OiA0MDA7 +IGxldHRlci1zcGFjaW5nOiBub3JtYWw7IHRleHQtYWxpZ246IHN0YXJ0OyB0ZXh0LWluZGVudDog +MHB4OyB0ZXh0LXRyYW5zZm9ybTogbm9uZTsgd2hpdGUtc3BhY2U6IG5vcm1hbDsgd29yZC1zcGFj +aW5nOiAwcHg7IHRleHQtZGVjb3JhdGlvbi10aGlja25lc3M6IGluaXRpYWw7IHRleHQtZGVjb3Jh +dGlvbi1zdHlsZTogaW5pdGlhbDsgdGV4dC1kZWNvcmF0aW9uLWNvbG9yOiBpbml0aWFsOyI+PGxp +ICBjaWQ9Im4yMTEiIGNsYXNzPSJtZC1saXN0LWl0ZW0iIG1kdHlwZT0ibGlzdF9pdGVtIiBzdHls +ZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBvc2l0aW9uOiByZWxhdGl2 +ZTsiPjxwICBjaWQ9Im4yMTIiIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCIgbWR0eXBlPSJwYXJh +Z3JhcGgiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5oZXJp +dDsgbWFyZ2luOiAwcHggMHB4IDAuNXJlbTsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyBwb3NpdGlv +bjogcmVsYXRpdmU7Ij48c3BhbiAgY2xhc3M9Im1kLXBsYWluIiBtZC1pbmxpbmU9InBsYWluIiBz +dHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPkc16L+b6ZSA5a2YIDUuNC43IOeJiOacrDwv +c3Bhbj48L3A+PC9saT48L3VsPjxkaXYgIHN0eWxlPSJjbGVhcjogYm90aDsgZm9udC1mYW1pbHk6 +IFRhaG9tYSwgQXJpYWwsIFNUSGVpdGlTQy1MaWdodCwgU2ltU3VuOyI+PHNwYW4gPjxiciA+PC9z +cGFuPjwvZGl2PjxkaXYgIHN0eWxlPSJjbGVhcjogYm90aDsiPjxkaXYgIGNsYXNzPSIgX19hbGl5 +dW5fbm9kZV9oYXNfY29sb3IiIHN0eWxlPSJtYXJnaW46IDBweDsgcGFkZGluZzogMHB4OyBib3Jk +ZXI6IDBweDsgb3V0bGluZTogMHB4OyBjb2xvcjogcmdiKDAsIDAsIDApOyBmb250LWZhbWlseTog +VGFob21hLCBBcmlhbCwgU1RIZWl0aSwgU2ltU3VuOyBmb250LXNpemU6IDE0cHg7IGZvbnQtc3R5 +bGU6IG5vcm1hbDsgZm9udC12YXJpYW50LWxpZ2F0dXJlczogbm9ybWFsOyBmb250LXZhcmlhbnQt +Y2Fwczogbm9ybWFsOyBmb250LXdlaWdodDogNDAwOyB0ZXh0LWFsaWduOiBzdGFydDsgdGV4dC1p +bmRlbnQ6IDBweDsgdGV4dC10cmFuc2Zvcm06IG5vbmU7IHRleHQtZGVjb3JhdGlvbi10aGlja25l +c3M6IGluaXRpYWw7IHRleHQtZGVjb3JhdGlvbi1zdHlsZTogaW5pdGlhbDsgdGV4dC1kZWNvcmF0 +aW9uLWNvbG9yOiBpbml0aWFsOyBjbGVhcjogYm90aDsiPjxzcGFuICBjbGFzcz0iIF9fYWxpeXVu +X25vZGVfaGFzX2NvbG9yIiBzdHlsZT0ibWFyZ2luOiAwcHg7IHBhZGRpbmc6IDBweDsgYm9yZGVy +OiAwcHg7IG91dGxpbmU6IDBweDsgZm9udC1mYW1pbHk6ICdNaWNyb3NvZnQgWWFoZWknOyBmb250 +LXNpemU6IDEzcHg7IGNvbG9yOiByZ2IoMTkxLCAxOTEsIDE5MSk7Ij5CZXN0IHJlZ2FyZHMsPC9z +cGFuPjwvZGl2PjxkaXYgIGNsYXNzPSIgX19hbGl5dW5fbm9kZV9oYXNfY29sb3IiIHN0eWxlPSJt +YXJnaW46IDBweDsgcGFkZGluZzogMHB4OyBib3JkZXI6IDBweDsgb3V0bGluZTogMHB4OyBjb2xv +cjogcmdiKDAsIDAsIDApOyBmb250LWZhbWlseTogVGFob21hLCBBcmlhbCwgU1RIZWl0aSwgU2lt +U3VuOyBmb250LXNpemU6IDE0cHg7IGZvbnQtc3R5bGU6IG5vcm1hbDsgZm9udC12YXJpYW50LWxp +Z2F0dXJlczogbm9ybWFsOyBmb250LXZhcmlhbnQtY2Fwczogbm9ybWFsOyBmb250LXdlaWdodDog +NDAwOyB0ZXh0LWFsaWduOiBzdGFydDsgdGV4dC1pbmRlbnQ6IDBweDsgdGV4dC10cmFuc2Zvcm06 +IG5vbmU7IHRleHQtZGVjb3JhdGlvbi10aGlja25lc3M6IGluaXRpYWw7IHRleHQtZGVjb3JhdGlv +bi1zdHlsZTogaW5pdGlhbDsgdGV4dC1kZWNvcmF0aW9uLWNvbG9yOiBpbml0aWFsOyBjbGVhcjog +Ym90aDsiPjxzcGFuICBjbGFzcz0iIF9fYWxpeXVuX25vZGVfaGFzX2NvbG9yIiBzdHlsZT0ibWFy +Z2luOiAwcHg7IHBhZGRpbmc6IDBweDsgYm9yZGVyOiAwcHg7IG91dGxpbmU6IDBweDsgZm9udC1m +YW1pbHk6ICdNaWNyb3NvZnQgWWFoZWknOyBmb250LXNpemU6IDEzcHg7IGNvbG9yOiByZ2IoMTkx +LCAxOTEsIDE5MSk7Ij7mnajovak8L3NwYW4+PC9kaXY+PGRpdiAgY2xhc3M9IiBfX2FsaXl1bl9u +b2RlX2hhc19jb2xvciIgc3R5bGU9Im1hcmdpbjogMHB4OyBwYWRkaW5nOiAwcHg7IGJvcmRlcjog +MHB4OyBvdXRsaW5lOiAwcHg7IGNvbG9yOiByZ2IoMCwgMCwgMCk7IGZvbnQtZmFtaWx5OiBUYWhv +bWEsIEFyaWFsLCBTVEhlaXRpLCBTaW1TdW47IGZvbnQtc2l6ZTogMTRweDsgZm9udC1zdHlsZTog +bm9ybWFsOyBmb250LXZhcmlhbnQtbGlnYXR1cmVzOiBub3JtYWw7IGZvbnQtdmFyaWFudC1jYXBz +OiBub3JtYWw7IGZvbnQtd2VpZ2h0OiA0MDA7IHRleHQtYWxpZ246IHN0YXJ0OyB0ZXh0LWluZGVu +dDogMHB4OyB0ZXh0LXRyYW5zZm9ybTogbm9uZTsgdGV4dC1kZWNvcmF0aW9uLXRoaWNrbmVzczog +aW5pdGlhbDsgdGV4dC1kZWNvcmF0aW9uLXN0eWxlOiBpbml0aWFsOyB0ZXh0LWRlY29yYXRpb24t +Y29sb3I6IGluaXRpYWw7IGNsZWFyOiBib3RoOyI+PGltZyAgZGF0YS1hbGltYWlsLWltZy1wcm9j +ZXNzZWQtc3FtLWVkaXRvcj0idHJ1ZSIgaGVpZ2h0PSI2OCIgc3JjPSJjaWQ6ZTk5ZDMxZDItZThi +ZC00ZTRlLTlkMWQtMTU4MjdhZTNkMDEwIiB3aWR0aD0iMzAwIiBzdHlsZT0ibWFyZ2luOiAwcHg7 +IHBhZGRpbmc6IDBweDsgYm9yZGVyOiAwcHg7IG91dGxpbmU6IDBweDsgdmVydGljYWwtYWxpZ246 +IGJvdHRvbTsiPiZuYnNwOzwvZGl2PjxkaXYgIGNsYXNzPSIgX19hbGl5dW5fbm9kZV9oYXNfY29s +b3IiIHN0eWxlPSJtYXJnaW46IDBweDsgcGFkZGluZzogMHB4OyBib3JkZXI6IDBweDsgb3V0bGlu +ZTogMHB4OyBjb2xvcjogcmdiKDAsIDAsIDApOyBmb250LWZhbWlseTogVGFob21hLCBBcmlhbCwg +U1RIZWl0aSwgU2ltU3VuOyBmb250LXNpemU6IDE0cHg7IGZvbnQtc3R5bGU6IG5vcm1hbDsgZm9u +dC12YXJpYW50LWxpZ2F0dXJlczogbm9ybWFsOyBmb250LXZhcmlhbnQtY2Fwczogbm9ybWFsOyBm +b250LXdlaWdodDogNDAwOyB0ZXh0LWFsaWduOiBzdGFydDsgdGV4dC1pbmRlbnQ6IDBweDsgdGV4 +dC10cmFuc2Zvcm06IG5vbmU7IHRleHQtZGVjb3JhdGlvbi10aGlja25lc3M6IGluaXRpYWw7IHRl +eHQtZGVjb3JhdGlvbi1zdHlsZTogaW5pdGlhbDsgdGV4dC1kZWNvcmF0aW9uLWNvbG9yOiBpbml0 +aWFsOyBjbGVhcjogYm90aDsiPjxzcGFuICBjbGFzcz0iIF9fYWxpeXVuX25vZGVfaGFzX2NvbG9y +IiBzdHlsZT0ibWFyZ2luOiAwcHg7IHBhZGRpbmc6IDBweDsgYm9yZGVyOiAwcHg7IG91dGxpbmU6 +IDBweDsgZm9udC1mYW1pbHk6ICdNaWNyb3NvZnQgWWFoZWknOyBjb2xvcjogcmdiKDE5MSwgMTkx +LCAxOTEpOyI+5Zyw5Z2A77ya5Lit5Zu9wrfljZfkuqzova/ku7bosLfova/ku7blpKfpgZMxMeWP +t+iKseelnuWkp+WOpjNGPC9zcGFuPjwvZGl2PjxkaXYgIGNsYXNzPSIgX19hbGl5dW5fbm9kZV9o +YXNfY29sb3IiIHN0eWxlPSJtYXJnaW46IDBweDsgcGFkZGluZzogMHB4OyBib3JkZXI6IDBweDsg +b3V0bGluZTogMHB4OyBjb2xvcjogcmdiKDAsIDAsIDApOyBmb250LWZhbWlseTogVGFob21hLCBB +cmlhbCwgU1RIZWl0aSwgU2ltU3VuOyBmb250LXNpemU6IDE0cHg7IGZvbnQtc3R5bGU6IG5vcm1h +bDsgZm9udC12YXJpYW50LWxpZ2F0dXJlczogbm9ybWFsOyBmb250LXZhcmlhbnQtY2Fwczogbm9y +bWFsOyBmb250LXdlaWdodDogNDAwOyB0ZXh0LWFsaWduOiBzdGFydDsgdGV4dC1pbmRlbnQ6IDBw +eDsgdGV4dC10cmFuc2Zvcm06IG5vbmU7IHRleHQtZGVjb3JhdGlvbi10aGlja25lc3M6IGluaXRp +YWw7IHRleHQtZGVjb3JhdGlvbi1zdHlsZTogaW5pdGlhbDsgdGV4dC1kZWNvcmF0aW9uLWNvbG9y +OiBpbml0aWFsOyBjbGVhcjogYm90aDsiPjxzcGFuICBjbGFzcz0iIF9fYWxpeXVuX25vZGVfaGFz +X2NvbG9yIiBzdHlsZT0ibWFyZ2luOiAwcHg7IHBhZGRpbmc6IDBweDsgYm9yZGVyOiAwcHg7IG91 +dGxpbmU6IDBweDsgZm9udC1mYW1pbHk6ICdNaWNyb3NvZnQgWWFoZWknOyBjb2xvcjogcmdiKDE5 +MSwgMTkxLCAxOTEpOyI+5omL5py677yaMTg3MjYxMjg0ODk8L3NwYW4+PC9kaXY+PGRpdiAgY2xh +c3M9IiBfX2FsaXl1bl9ub2RlX2hhc19jb2xvciIgc3R5bGU9Im1hcmdpbjogMHB4OyBwYWRkaW5n +OiAwcHg7IGJvcmRlcjogMHB4OyBvdXRsaW5lOiAwcHg7IGNvbG9yOiByZ2IoMCwgMCwgMCk7IGZv +bnQtZmFtaWx5OiBUYWhvbWEsIEFyaWFsLCBTVEhlaXRpLCBTaW1TdW47IGZvbnQtc2l6ZTogMTRw +eDsgZm9udC1zdHlsZTogbm9ybWFsOyBmb250LXZhcmlhbnQtbGlnYXR1cmVzOiBub3JtYWw7IGZv +bnQtdmFyaWFudC1jYXBzOiBub3JtYWw7IGZvbnQtd2VpZ2h0OiA0MDA7IHRleHQtYWxpZ246IHN0 +YXJ0OyB0ZXh0LWluZGVudDogMHB4OyB0ZXh0LXRyYW5zZm9ybTogbm9uZTsgdGV4dC1kZWNvcmF0 +aW9uLXRoaWNrbmVzczogaW5pdGlhbDsgdGV4dC1kZWNvcmF0aW9uLXN0eWxlOiBpbml0aWFsOyB0 +ZXh0LWRlY29yYXRpb24tY29sb3I6IGluaXRpYWw7IGNsZWFyOiBib3RoOyI+PHNwYW4gIGNsYXNz +PSIgX19hbGl5dW5fbm9kZV9oYXNfY29sb3IiIHN0eWxlPSJtYXJnaW46IDBweDsgcGFkZGluZzog +MHB4OyBib3JkZXI6IDBweDsgb3V0bGluZTogMHB4OyBmb250LWZhbWlseTogJ01pY3Jvc29mdCBZ +YWhlaSc7IGNvbG9yOiByZ2IoMTkxLCAxOTEsIDE5MSk7Ij7pgq7nrrHvvJp5YW5neHVhbkB3aXRz +b2Z0LmNuPC9zcGFuPjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvYm9keT48L2h0bWw+PC9kaXY+ + +--=_mailmaster-6a18e4a4_0_701f_=-- + +--=_mailmaster-6a18e4a4_0_5d03_= +Content-Type: application/octet-stream +Content-Transfer-Encoding: base64 +Content-ID: +Content-Disposition: inline; + filename="=?utf-8?B?57u05ouT56eR5oqALemCruS7tuetvuWQjWxvZ28ucG5n?=" + +iVBORw0KGgoAAAANSUhEUgAAASwAAABECAYAAAA7rQj2AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJ +bWFnZVJlYWR5ccllPAAAA4RpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdp +bj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6 +eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTQ1IDc5LjE2 +MzQ5OSwgMjAxOC8wOC8xMy0xNjo0MDoyMiAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJo +dHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlw +dGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEu +MC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVz +b3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1N +Ok9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDplYjhjYzQwMy1lNzZjLTQ5NDgtODFmOC1kNDIy +MmRkMTdhYjgiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NkVENzExMzg1MzBEMTFFQTg4QjNF +NEJFMUQyRjc1RkIiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NkVENzExMzc1MzBEMTFFQTg4 +QjNFNEJFMUQyRjc1RkIiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTkg +KFdpbmRvd3MpIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6 +ZmNkNTdlM2UtZThjYS05ZjQ2LWEzZTUtMWJlYmE2NjA5Y2FmIiBzdFJlZjpkb2N1bWVudElEPSJh +ZG9iZTpkb2NpZDpwaG90b3Nob3A6MzZkNmNjNTUtNTY3Yi01MTQ2LWEwYWYtMzBlMzEwMTMxNDFk +Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQg +ZW5kPSJyIj8+0WEjogAAEjpJREFUeNrsXQuMXFUZPitFCq1lahR5dwoNoIZ0iw8Qkc5qkGIi3RUM +SITtAhLAars0ipCS3Q1qUCK7DSWAgN2taHnpziqoAclOFaIikakkBbXYKUKtPKelLS1tWf9/9zs7 +/5495947s49Ou/+XnNy59557XnPPd7//P+eeW9PX12cUCoViX8B7tAkUCoUSlkKhUChhKRQKJSyF +QqFQwlIoFAolLIVCoYSlUCgUSlgKhUKhhKVQKJSwFAqFQglLoVAolLAUCoUSlkKhUFQDJq1atUou +17CLwnsp/JTCV6vk+P1VVBY9PvrHGe6SIddS+KEe1+Pu8RpdXkahUKhJqFAoFEpYCoVCCUuhUCiU +sBQKhUIJS6FQKGEpFAqFEpZCoVAoYSkUCiUshUKhqCpM0iZQVCuef/75IfsnnXSSNooqLIWi6qHv +jylUYSkmFqY0LG+nTa1zOE+hbXv2G0V74JD6WzlOOx2rC6Vl4/D1FK/ZObeANo0Uuuhcp+faFciz +4Bxvpc1sOt4QyNNXfi53jy8fX16030ubZtrPe+K2otxpCgWUvzVQNx98bZGhTcZNB+e6abNmW/fC +1sD/1V9WOp9XhaWYiKhFR2wTgTtnrxMvxZ0sJi0bZzF1vJRzbhHOpT2dNI0O7JIVp9HC19Dv+jLK +38PECSJJklcGZfcR23wKDRS/hre8j+MSOZF3AWnZ/S5PmRsRz82vHu3TQsSUCtR3WFlVYSkmGjbQ +EzsnnuL89H6TlQB11FwF6WXRsbKCeNLo2D7UB84x4bBKWo1Ong2V3y0n5Tkb13QmzMt4VBDHnWmV +JiswOs4Kcz1tu2yeIL+CuC4d0271IDMfkS2jMBd170jS2KqwFIqSaVUJeqBMZAfNRsSfi2uMR5X1 +4Np6qKOkSAXKH8rLRx5ZaRaDnIooT2MlDQOzueBRk2nRTj2oeyKowlJMNMwgVZVxiCLv8+mUobDY +t9SE/fkwjRZ5OnAKHbXJYx4xQViV1onrm30kBF+TJCUmhrokeQWQhrLzKjrkUQkaAwqP69bJhNjX +15dl3yKFelK+WSUshWK4X0Sql3zCTu0FdzoihxxIhzsnm5YNtL8okPcwJYOOXRREZMmmOSLrQ2FK +cZ5zXBUTkdd4t3VTwPzlNmslorLqtjFGmQ4Q1vSGW9wh45nF7JL+yqfqf8QZSofkZjo36ASj8/z7 +zdD1G2ed5aY958h1j+VxLceZMYqNU0f5em1pyusI2nxIHFpPcTeP5j9DeRxAm5PFoRcpjzf21V5N +9ZlFm6nif18fEXcybSZjdzfF3erGqaKVbbvkqFRNTc1opLkayioV4zOa7yoZYR5JP88aVk3sSPeM +/q22I27sW0L/5H7aGZdXBLhPzg6cm43z5ZqDXK+0q1wxOFBEHaVZzc73NP03BVVYxjxA4Qzbd0CU +m6mj5UxpmPhFJlTqbHvoeAeeAhafoePPxuTxPgrPiP0mexNRenzujxWUu5ny7UUap9DmevxnU7Hl +dJkop5kBf2SR4tdS3Nvo91FI42k69l2kwXVakYTkCXcLU6AHnSqE75iBES7beTMTTLVlhQnYE6M4 +2nxqwzN9wCqvzgh1x45xTo9HCXOe0cC2hOVn5zc712slwcAH1e+Mr1BdZQNm4uB0CfsgI7KyzvfW +aiGsjUwSe0EpnCjIivE76qT/oePzHNuc1dANdJx/fwCS2+JWkJvFTZTGDqFEFlI4yMn6IjrHf/h1 +IJXZFRRfluFYCuclvO5VClfj9zlUjjuovK8laCtuk3nYnSVOnQwSZzxF4deok8VkeU9BeQ/pWxTe +2ddYyPEVGRBLzkMcBYpbjDLj0PmLHtOtMUAsTFQtrFQ818i8OyjOfDyI6mLyCqXB5ecHbC8IMI8H +OT+EmpOm41F4XR7VFTITu5DfXiUsvlF5cthKCo+TObhnL9x3X3P278FWNswGtEVLII25Drlx592B +30cb/yjHWQicz7vIg1XQMSLObgovx7TfoDkOGb0VCssS4HMgET7+ilBHS0Eq/GWaS83AV0ficFqg +LseJ43xjfTuCgD/tcRM0RSmF8TQHjWdOkAeFBOrEjdMME6gYyCvlpokO3OVTIiCRZlOaxBlVfm7f +BYLcUhHlb/OlwaYnXV8Agc5HnIaYKQu5iPZc4zGP0xEEyG2QdszCYWWtoafhWPqwphJJbQ08zT9i +Sp95cnEkhUecY2dSeCui8da5vhPK40AQwgdx6BUQzOco/FZEvYrChSb5aMh0yqsYaKOouExgj8oO +ROcWVKAaZZ7LKI3FnjhZUxpuXw/FdEmUSUjXtEaQtuz0tWUqxqY3u68pm7DEu4R8j9aMxbuEo+TD +UlSIcn2bY6qwQmTFoI6yNqJD+kY2nrUdvwycK8jKEsQudEyXIC83JSezS5h3UrhD7Evi/DNs/GmO +I/FbFB6isCVC7d1dBknNgwKyT6pBVSTqs4nqdwftHwuzzRIWl+/sBNl0CCV0H4VT8fsxClfg91ak +Jdt1nkj/BQrLnXSf0q6pGA2MuQ+LOs8U2PYsNZckcF6PJi53zUEqD9f5SjPgBLcENY3KtS6CMJkI +8gHiZdOw4PHbvGaVJtI8zAx1XD9H558ooy7zAubaqYJY1oBYfwIVKXElzHMT8RDhels1uENaDLIu +hJ85/3FKENZLFNcza/ka7W2K6iYsupH5aX2eIIYDxqtilPcxjqrYZgYc4Fb97HHiLzQlR/M0lywc +QrqOOuXbMUU4Aw78J0CGbI4dWIm6Al4WCo7b83hLjMIP9g9sb3cI64sg6IYKm/NUmJiMXVBRkx3f +l8Us4aC3+LmqLMW+oLAa92Ld2NEsHRRTUJ61RCCvgkwkzjdhH5ZUMQw2weII6zIQxQmUV43HHKz1 +dGwX91hFStubKf4uQV4PCLXzV5ho1q/1K1aFFA7H/kV0/cOeOifF4cK8ZH8ZO3lDPqyjPEowr4Sl +GA3sz+8SngJF8j/neNc4luE6TFBlIjzBOXcxOnZUOF4oQJ7i0I5wmJPWEhyvA7ntchTc+TBJR4oH +KG2es8M+vM0x4R3tXorxVlgvmYFJZRZv7ysVo441Hx2dHcZ2ljtPL7g3cMmFwsw52gyd6MltINXQ +Fs/1k539v5jSiNxlo1ClKY55azzlOdQxOa/HQ+lAKM5NI8j/OVEPJsjT8fuf1Na/cczrg6GqLEn/ +TbuaYqwIKyU6/TqYACEc4jm2rVoqRx1nhuPLeYzqtDFAcJvEdcNOO05nH1yv8l10TR+l9X76/WVP +/BvNgHPcNUtvTtDW7gRcOxp7sKjPBsqbpyjMChBqVLudAIUq/9PzxbSRN1BOvn/4zYCzxIx8Nn/v +FGTFE3X/rk53xWgR1sum9BqHNaWSvjv0MWd/J4XXq6h+rh9rZUQnrdjpjtn0LrHvEabfQZ4s33BJ +kNKJmo0+NeKhYPcPoTT4v7RTDh524p3r7M/CiOgmS9gY1f2lGXjtx+L3choKP8goHhMuT+zjgZQs +7X+ejrOqvAl1tkS6ULuZ5+mDdbM879rVVrJyRKXrecXNpB9hHWPLhMX7MnKlBp482n9Te94rZMJ6 +2iGsyzxP/hBcU4ffW3u3StQVm0JNTqfuBfHs9FwyEqf7MjN0BFDi8lGq0qGCCF3/0HZBtDwCmnR9 +obuwbTOlmf987KMJrv0ezMKzke+jGEm8RMS5hO6HF6qFJKgj1BpnBUu8szcMSTo/XduH1Tnt0sNt +cdfh5d88ysEKuE4c44cHTz2ZWQH5reCZ8XaJmjKue4a2czCzPsNliloa2qlHWhzq9BBfL175yUWQ +IrtN1tB/kyOCstOJFoh+xv8bbzuZwJiwfmGGLkB2Ot14V9CN9uMYQmhwrjMmZp7POINnlR/j+IA2 +CoIZLWI81wQmZeKlZ/sqEKu3r4/kgeWYf8ZjIk4xlS9EZ1XmV5LExUviF5iBmfufBGlJsrqa4lTT +/cDgUWJ3TXS77LDbbrkxKkMe/aTZqhA8YJgkkq4Q2hpIdxHeIxxSjwgSrY8iE6TFKqkj0JZ2NQh+ +0Oec5ZTl4JZ3bS+7cgOvnsGkxEvNyJU0aH8BSJ3Ll7UKi4fHf0DhCJHWclYoPGs6cGNfYIa+4mE7 +zT1VdHOWq2wqdbrb97b42mudTv2WvQ6v04yEsKYE/FeuD2u5Ca8rNM8pYzNu9AJeY5pmSu+g8c0y +I4a0eMULXqnhccf0zpvxHY1NBOoMzR7VlUgZWfPJxC8JbJVLxlU7OJ5Cu6eF2rNtzgKgFmpt8D/y +mIgtZvi7gms8RZkbQ74tJrAWmFVtUQTKKy7IteRdZcYEhncUM570F9v8QUxsQSxmpSXK1gkiT+HB +kp9EN91Ouum4Ae8T6fHNezsdb7SSzQy8z/VhMKtPMi6t4NWZsQQ/xR4JnFtrhi4fU7HTnY6vxDUp +l7AqwEEJfFjbfX3RxsFAybrAgybtPpWd5WW+L+JmogiLzrOf7AYzsCpEjUe1rKU4PFH3/mpxE4wC +0ugPcSZbPVSF++CQH7dYBFVn9/tXexAmZitIIOTP6vCoRYlCEpMugny5nkX3KzgRSquR0mzx5NOL +bdGpS9GUVoWwD+L+pXLMwBI9bVZt8WqkIPPOSeh099PNdaYpLUlicZoZOos5hAcp3FZlN9d7KzCH +KnW68xynT5VZPrv8jMRnnf2dHh+WbxR2e6DclZiF3GF4xYUTPekblJn9ZF8yQ0ce/wS13oqyMtnx +DPcb6ZpVILd9Gty52efFq4vG+IoafW4H+Ik6QAYFENh8qJxFVsXBRJsdUqlMajDXfC+qWzXS5vu0 +llBP7aFbAKZdOiBMQhj8UIVdeBA+vrpAHToD69Y3gcQbsRqpVZ5d1iS0+KYZmLNzZZn/I9+kF/MQ +fpXdXysizvl8WCNxunNeXwiYaSF8AiEEXgXjyTJ9WAePQrtxPdzRRbmyBd9MF4n9/6I97mYlReTE +9wM75HmkkEcQefLr0v2BsMS9E1zOF0RS6+uoMI1WwCQsgnCaQR6rkab1qaWjVBLUSp1HNbVHkRXQ +DnNrcYDsON+6cpdX5u8mQpFFLjzomKR1TrnY+d4BskoJf1jnEMJiJyptrqIb7g+0vcWUXusI4XXc +iHdWIVmNGzCl4RznML9O8+gIkv0XhUupXbc4amsDzu3AbwbPiXoF+3FTSraK64wpreklsUT83g3T +416PonsSxx+UahPz3Jow7YGnlZznqLV9Hf0fnfB8i9AIU68zQqHNwS6vTjsHpFAn/Dr8LcC88Ux5 +iCGLxSCKOQmmKRRhfi0Wisv6lPKhD7kmgLUY0jBp8wmmaWQcwhz0K9rPscEk5HjZSR6fzCoMT18I +2f9xQV7cIXgaBL+rttK3drcD9ymzLmHFN3mu3Vpm402POLcTpGxfTdoCEzLp5EpJJDyP7Tixz8S/ +EQ8AiSdiyiT/g6Ln2C0os/SnmIh9X7q83M1DMdEulQ8lDBxI8LSHWz31c/P6Nx5oSzFaul8AZl3O ++JeBTsM3OjNCfbWjY3LottMqoMiyII0NEQqu1USvWbbenaph/WJi345Q2jJ1Q1U1mTLe/wXRFQKE +mIPFkopJRvrQhsw6wNeNWtCu/WWeFFhA621I1xXRecXOXs5VcI198ld6rWy0KLw4slv3GkmkWxOU +dbdJPOVgr84KL8SUZVsFZXxrPxPWDfhajq/tpodMKazB3r8UscFHS+3cJ0GGeezPDKTRajzLCAsn +fWuZBNxfJqi/TEC5FT0fw8iDtItm+LSQItLrn0aC5aMLgXYZprCEm6UIEzxr52jph1QVivJVVrGS +c6JTFmBWWnXTHGFejUd9chGn5wausb4qLudc34x9KEUePKiPqE9OBNl2bBLOocBEWQszUb9LqJgY +wFyfxgAxtEMFDFEQ7pC+b8KmOMZmS6OjUoZN2rTOcorXDT+WneFuMDpXhGnGM9dTHmXjmmSWJHlk +dqQfeSnC/5QR5JoxnvXh7fwrNmW5DaDE7ByyDBSSHaBggvYupWT9VPiPQhZSBu2khKWYMMiZZB+g +SOpSME5Hjp0oi2H8ReiAPaY0hF+PL9/0kxVMxSJIqxChgDi9Z2CaDjrvR6C08vjWofSRLfOopxSI +qMGaoSC5Jph+8lNh/V+mjlKeRFRMbgvw/+TRNt2CwIo2r/5F4DVomKhhPMGExcrEN8IoZ4w7BDeW +5cns7adIuf9XTRV9kVehUCgioU53hUKhhKVQKBRKWAqFQglLoVAolLAUCoVCCUuhUChhKRQKhRKW +QqFQjAz/F2AAAzYRUAxFcqwAAAAASUVORK5CYII= + +--=_mailmaster-6a18e4a4_0_5d03_=-- diff --git a/media/inbound/2026-04-10_1732_G5开发周报_2026-04-07_--_2026-04-10---b1412ac7-631c-47c7-882a-738c85cf0ba5.eml b/media/inbound/2026-04-10_1732_G5开发周报_2026-04-07_--_2026-04-10---b1412ac7-631c-47c7-882a-738c85cf0ba5.eml new file mode 100644 index 0000000..f33c742 --- /dev/null +++ b/media/inbound/2026-04-10_1732_G5开发周报_2026-04-07_--_2026-04-10---b1412ac7-631c-47c7-882a-738c85cf0ba5.eml @@ -0,0 +1,507 @@ +Date: Fri, 10 Apr 2026 17:32:10 +0800 +From: =?utf-8?B?5p2o6L2p?= +To: =?utf-8?B?5YiY5by6?= +Cc: =?utf-8?B?5bGI5paw6b6Z?= , =?utf-8?B?6ZmI5piO?= + , =?utf-8?B?5pu+6I6J?= +Message-ID: <1b9956c8-581a-410f-9464-1150b26151c2.yangxuan@witsoft.cn> +In-Reply-To: <4cb27326-57ed-4130-91ed-1a88eb2fa132.yangxuan@witsoft.cn> +References: <4cb27326-57ed-4130-91ed-1a88eb2fa132.yangxuan@witsoft.cn> +Subject: =?utf-8?B?RzXlvIDlj5HlkajmiqXjgJAyMDI2LTA0LTA3IC0tICAyMDI2LTA0?= + =?utf-8?B?LTEw44CR?= +MIME-Version: 1.0 +Content-Type: multipart/related; boundary="=_mailmaster-6a18e4a4_0_5d03_=" + +--=_mailmaster-6a18e4a4_0_5d03_= +Content-Type: multipart/alternative; boundary="=_mailmaster-6a18e4a4_0_701f_=" + +--=_mailmaster-6a18e4a4_0_701f_= +Content-Type: text/plain; charset="UTF-8" +Content-Transfer-Encoding: base64 + +5oKo5aW977yB5Lul5LiL5piv5oiR5pys5ZGo55qE5bel5L2c5oC757uT5Y+K5LiL5ZGo6K6h5YiS +77yM6K+35a6h6ZiF44CCCuacrOWRqOW3peS9nOaAu+e7kwrkuIDjgIHph43ngrnlt6XkvZzlrozm +iJDmg4XlhrUKCiAqIApHNei/m+mUgOWtmCA1LjQuNyDniYjmnKwK5LqM44CB5bi46KeE5bel5L2c +5piO57uGKioKMjAyNi0wNC0wNwoKICogCuiHquWKqOWFpeW6k+mAu+i+keais+eQhuS4juS8mOWM +lgoyMDI2LTA0LTA4CgogKiAK5bel5bqP5aeU5aSWLeWnlOWkluaUtuaWmS/pgIDmlpnoh6rliqjl +haXlupPogZTosIPlrozmiJAKCiAqIArlupPlrZjpnIDmsYLoh6rmtYvlrozmiJAKMjAyNi0wNC0w +OQoKICogCui9rOa1i+mXrumimOS/ruWkjQoKICogCuWFpeW6k+a1geeoi+ais+eQhgoKICogCuWF +peW6k+ihqOe7k+aehOazqOmHigoyMDI2LTA0LTEwCgogKiAK5rWL6K+V6Zeu6aKY5L+u5aSNCgog +KiAK5ZCE57G75Z6L5YWl5bqT5a6i5ZWG5L+h5oGv5qKz55CGCgogKiAK5ZCE57G75Z6L5Ye65YWl +5bqT5om55qyh5YWz6IGU5qKz55CGCuS4i+WRqOmHjeeCueS7u+WKoQoKICogCkc16L+b6ZSA5a2Y +IDUuNC43IOeJiOacrApCZXN0IHJlZ2FyZHMsCuadqOi9qQrlnLDlnYDvvJrkuK3lm73Ct+WNl+S6 +rOi9r+S7tuiwt+i9r+S7tuWkp+mBkzEx5Y+36Iqx56We5aSn5Y6mM0YK5omL5py677yaMTg3MjYx +Mjg0ODkK6YKu566x77yaeWFuZ3h1YW5Ad2l0c29mdC5jbgo= + +--=_mailmaster-6a18e4a4_0_701f_= +Content-Type: text/html; charset="UTF-8" +Content-Transfer-Encoding: base64 + +PGRpdiBjbGFzcz0iX19hbGl5dW5fZW1haWxfYm9keV9ibG9jayI+PGh0bWwgPjxoZWFkID48L2hl +YWQ+PGJvZHkgPjxkaXYgIHN0eWxlPSJmb250LWZhbWlseTogVGFob21hLCBBcmlhbCwgU1RIZWl0 +aVNDLUxpZ2h0LCBTaW1TdW4iPjxkaXYgIHN0eWxlPSJmb250LWZhbWlseTogVGFob21hLCBBcmlh +bCwgU1RIZWl0aVNDLUxpZ2h0LCBTaW1TdW47IGNsZWFyOiBib3RoOyI+PHAgIGNsYXNzPSJtZC1l +bmQtYmxvY2sgbWQtcCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGxpbmUtaGVpZ2h0 +OiBpbmhlcml0OyBtYXJnaW46IDEycHggMHB4OyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0 +aW9uOiByZWxhdGl2ZTsgY29sb3I6IHJnYig1MSwgNTEsIDUxKTsgZm9udC1mYW1pbHk6ICdPcGVu +IFNhbnMnLCAnQ2xlYXIgU2FucycsICdIZWx2ZXRpY2EgTmV1ZScsIEhlbHZldGljYSwgQXJpYWws +ICdTZWdvZSBVSSBFbW9qaScsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTZweDsgZm9udC1zdHls +ZTogbm9ybWFsOyBmb250LXZhcmlhbnQtbGlnYXR1cmVzOiBub3JtYWw7IGZvbnQtdmFyaWFudC1j +YXBzOiBub3JtYWw7IGZvbnQtd2VpZ2h0OiA0MDA7IGxldHRlci1zcGFjaW5nOiBub3JtYWw7IHRl +eHQtYWxpZ246IHN0YXJ0OyB0ZXh0LWluZGVudDogMHB4OyB0ZXh0LXRyYW5zZm9ybTogbm9uZTsg +d29yZC1zcGFjaW5nOiAwcHg7IHRleHQtZGVjb3JhdGlvbi10aGlja25lc3M6IGluaXRpYWw7IHRl +eHQtZGVjb3JhdGlvbi1zdHlsZTogaW5pdGlhbDsgdGV4dC1kZWNvcmF0aW9uLWNvbG9yOiBpbml0 +aWFsOyI+PC9wPjxwICBjaWQ9Im4xNzYiIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCBtZC1mb2N1 +cyIgbWR0eXBlPSJwYXJhZ3JhcGgiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5l +LWhlaWdodDogaW5oZXJpdDsgbWFyZ2luOiAwLjhlbSAwcHg7IHdoaXRlLXNwYWNlOiBwcmUtd3Jh +cDsgcG9zaXRpb246IHJlbGF0aXZlOyBjb2xvcjogcmdiKDUxLCA1MSwgNTEpOyBmb250LWZhbWls +eTogJ09wZW4gU2FucycsICdDbGVhciBTYW5zJywgJ0hlbHZldGljYSBOZXVlJywgSGVsdmV0aWNh +LCBBcmlhbCwgJ1NlZ29lIFVJIEVtb2ppJywgc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxNnB4OyBm +b250LXN0eWxlOiBub3JtYWw7IGZvbnQtdmFyaWFudC1saWdhdHVyZXM6IG5vcm1hbDsgZm9udC12 +YXJpYW50LWNhcHM6IG5vcm1hbDsgZm9udC13ZWlnaHQ6IDQwMDsgbGV0dGVyLXNwYWNpbmc6IG5v +cm1hbDsgdGV4dC1hbGlnbjogc3RhcnQ7IHRleHQtaW5kZW50OiAwcHg7IHRleHQtdHJhbnNmb3Jt +OiBub25lOyB3b3JkLXNwYWNpbmc6IDBweDsgdGV4dC1kZWNvcmF0aW9uLXRoaWNrbmVzczogaW5p +dGlhbDsgdGV4dC1kZWNvcmF0aW9uLXN0eWxlOiBpbml0aWFsOyB0ZXh0LWRlY29yYXRpb24tY29s +b3I6IGluaXRpYWw7Ij48c3BhbiAgY2xhc3M9Im1kLXBsYWluIiBtZC1pbmxpbmU9InBsYWluIiBz +dHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPuaCqOWlve+8geS7peS4i+aYr+aIkeacrOWR +qOeahOW3peS9nOaAu+e7k+WPiuS4i+WRqOiuoeWIku+8jOivt+WuoemYheOAgjwvc3Bhbj48L3A+ +PGgzICBjaWQ9Im4xNzciIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtaGVhZGluZyIgbWR0eXBlPSJo +ZWFkaW5nIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgYnJlYWstYWZ0ZXI6IGF2b2lk +LXBhZ2U7IGJyZWFrLWluc2lkZTogYXZvaWQ7IGZvbnQtc2l6ZTogMS41ZW07IG1hcmdpbi10b3A6 +IDFyZW07IG1hcmdpbi1ib3R0b206IDFyZW07IHBvc2l0aW9uOiByZWxhdGl2ZTsgZm9udC13ZWln +aHQ6IDcwMDsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyBjb2xvcjogcmdiKDUxLCA1MSwgNTEpOyBm +b250LWZhbWlseTogJ09wZW4gU2FucycsICdDbGVhciBTYW5zJywgJ0hlbHZldGljYSBOZXVlJywg +SGVsdmV0aWNhLCBBcmlhbCwgJ1NlZ29lIFVJIEVtb2ppJywgc2Fucy1zZXJpZjsgZm9udC1zdHls +ZTogbm9ybWFsOyBmb250LXZhcmlhbnQtbGlnYXR1cmVzOiBub3JtYWw7IGZvbnQtdmFyaWFudC1j +YXBzOiBub3JtYWw7IGxldHRlci1zcGFjaW5nOiBub3JtYWw7IHRleHQtYWxpZ246IHN0YXJ0OyB0 +ZXh0LWluZGVudDogMHB4OyB0ZXh0LXRyYW5zZm9ybTogbm9uZTsgd29yZC1zcGFjaW5nOiAwcHg7 +IHRleHQtZGVjb3JhdGlvbi10aGlja25lc3M6IGluaXRpYWw7IHRleHQtZGVjb3JhdGlvbi1zdHls +ZTogaW5pdGlhbDsgdGV4dC1kZWNvcmF0aW9uLWNvbG9yOiBpbml0aWFsOyI+PHNwYW4gIGNsYXNz +PSJtZC1wbGFpbiIgbWQtaW5saW5lPSJwbGFpbiIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1i +b3g7IGZvbnQtd2VpZ2h0OiBib2xkOyI+5pys5ZGo5bel5L2c5oC757uTPC9zcGFuPjwvaDM+PGg0 +ICBjaWQ9Im4xNzgiIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtaGVhZGluZyIgbWR0eXBlPSJoZWFk +aW5nIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgYnJlYWstYWZ0ZXI6IGF2b2lkLXBh +Z2U7IGJyZWFrLWluc2lkZTogYXZvaWQ7IGZvbnQtc2l6ZTogMS4yNWVtOyBtYXJnaW4tdG9wOiAx +cmVtOyBtYXJnaW4tYm90dG9tOiAxcmVtOyBwb3NpdGlvbjogcmVsYXRpdmU7IGZvbnQtd2VpZ2h0 +OiA3MDA7IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgY29sb3I6IHJnYig1MSwgNTEsIDUxKTsgZm9u +dC1mYW1pbHk6ICdPcGVuIFNhbnMnLCAnQ2xlYXIgU2FucycsICdIZWx2ZXRpY2EgTmV1ZScsIEhl +bHZldGljYSwgQXJpYWwsICdTZWdvZSBVSSBFbW9qaScsIHNhbnMtc2VyaWY7IGZvbnQtc3R5bGU6 +IG5vcm1hbDsgZm9udC12YXJpYW50LWxpZ2F0dXJlczogbm9ybWFsOyBmb250LXZhcmlhbnQtY2Fw +czogbm9ybWFsOyBsZXR0ZXItc3BhY2luZzogbm9ybWFsOyB0ZXh0LWFsaWduOiBzdGFydDsgdGV4 +dC1pbmRlbnQ6IDBweDsgdGV4dC10cmFuc2Zvcm06IG5vbmU7IHdvcmQtc3BhY2luZzogMHB4OyB0 +ZXh0LWRlY29yYXRpb24tdGhpY2tuZXNzOiBpbml0aWFsOyB0ZXh0LWRlY29yYXRpb24tc3R5bGU6 +IGluaXRpYWw7IHRleHQtZGVjb3JhdGlvbi1jb2xvcjogaW5pdGlhbDsiPjxzcGFuICBjbGFzcz0i +bWQtcGxhaW4iIG1kLWlubGluZT0icGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94 +OyI+5LiA44CB6YeN54K55bel5L2c5a6M5oiQ5oOF5Ya1PC9zcGFuPjwvaDQ+PHVsICBjaWQ9Im4x +NzkiIGNsYXNzPSJ1bC1saXN0IiBkYXRhLW1hcms9Ii0iIG1kdHlwZT0ibGlzdCIgc3R5bGU9ImJv +eC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMC44ZW0gMHB4OyBwYWRkaW5nLWxlZnQ6IDMw +cHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsgY29sb3I6IHJnYig1MSwgNTEsIDUxKTsgZm9udC1mYW1p +bHk6ICdPcGVuIFNhbnMnLCAnQ2xlYXIgU2FucycsICdIZWx2ZXRpY2EgTmV1ZScsIEhlbHZldGlj +YSwgQXJpYWwsICdTZWdvZSBVSSBFbW9qaScsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTZweDsg +Zm9udC1zdHlsZTogbm9ybWFsOyBmb250LXZhcmlhbnQtbGlnYXR1cmVzOiBub3JtYWw7IGZvbnQt +dmFyaWFudC1jYXBzOiBub3JtYWw7IGZvbnQtd2VpZ2h0OiA0MDA7IGxldHRlci1zcGFjaW5nOiBu +b3JtYWw7IHRleHQtYWxpZ246IHN0YXJ0OyB0ZXh0LWluZGVudDogMHB4OyB0ZXh0LXRyYW5zZm9y +bTogbm9uZTsgd2hpdGUtc3BhY2U6IG5vcm1hbDsgd29yZC1zcGFjaW5nOiAwcHg7IHRleHQtZGVj +b3JhdGlvbi10aGlja25lc3M6IGluaXRpYWw7IHRleHQtZGVjb3JhdGlvbi1zdHlsZTogaW5pdGlh +bDsgdGV4dC1kZWNvcmF0aW9uLWNvbG9yOiBpbml0aWFsOyI+PGxpICBjaWQ9Im4xODAiIGNsYXNz +PSJtZC1saXN0LWl0ZW0iIG1kdHlwZT0ibGlzdF9pdGVtIiBzdHlsZT0iYm94LXNpemluZzogYm9y +ZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxwICBjaWQ9Im4xODEi +IGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCIgbWR0eXBlPSJwYXJhZ3JhcGgiIHN0eWxlPSJib3gt +c2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5oZXJpdDsgbWFyZ2luOiAwcHggMHB4 +IDAuNXJlbTsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48c3Bh +biAgY2xhc3M9Im1kLXBsYWluIiBtZC1pbmxpbmU9InBsYWluIiBzdHlsZT0iYm94LXNpemluZzog +Ym9yZGVyLWJveDsiPkc16L+b6ZSA5a2YIDUuNC43IOeJiOacrDwvc3Bhbj48L3A+PC9saT48L3Vs +PjxoNCAgY2lkPSJuMTgyIiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLWhlYWRpbmciIG1kdHlwZT0i +aGVhZGluZyIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGJyZWFrLWFmdGVyOiBhdm9p +ZC1wYWdlOyBicmVhay1pbnNpZGU6IGF2b2lkOyBmb250LXNpemU6IDEuMjVlbTsgbWFyZ2luLXRv +cDogMXJlbTsgbWFyZ2luLWJvdHRvbTogMXJlbTsgcG9zaXRpb246IHJlbGF0aXZlOyBmb250LXdl +aWdodDogNzAwOyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IGNvbG9yOiByZ2IoNTEsIDUxLCA1MSk7 +IGZvbnQtZmFtaWx5OiAnT3BlbiBTYW5zJywgJ0NsZWFyIFNhbnMnLCAnSGVsdmV0aWNhIE5ldWUn +LCBIZWx2ZXRpY2EsIEFyaWFsLCAnU2Vnb2UgVUkgRW1vamknLCBzYW5zLXNlcmlmOyBmb250LXN0 +eWxlOiBub3JtYWw7IGZvbnQtdmFyaWFudC1saWdhdHVyZXM6IG5vcm1hbDsgZm9udC12YXJpYW50 +LWNhcHM6IG5vcm1hbDsgbGV0dGVyLXNwYWNpbmc6IG5vcm1hbDsgdGV4dC1hbGlnbjogc3RhcnQ7 +IHRleHQtaW5kZW50OiAwcHg7IHRleHQtdHJhbnNmb3JtOiBub25lOyB3b3JkLXNwYWNpbmc6IDBw +eDsgdGV4dC1kZWNvcmF0aW9uLXRoaWNrbmVzczogaW5pdGlhbDsgdGV4dC1kZWNvcmF0aW9uLXN0 +eWxlOiBpbml0aWFsOyB0ZXh0LWRlY29yYXRpb24tY29sb3I6IGluaXRpYWw7Ij48c3Ryb25nICBz +dHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPjxzcGFuICBjbGFzcz0ibWQtcGxhaW4iIG1k +LWlubGluZT0icGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+5LqM44CB5bi4 +6KeE5bel5L2c5piO57uGPC9zcGFuPjxzcGFuICBtZC1pbmxpbmU9ImVzY2FwZSIgc3R5bGU9ImJv +eC1zaXppbmc6IGJvcmRlci1ib3g7Ij4qPC9zcGFuPjxzcGFuICBtZC1pbmxpbmU9ImVzY2FwZSIg +c3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGZvbnQtc3R5bGU6IGl0YWxpYzsiPio8L3Nw +YW4+PC9zdHJvbmc+PC9oND48cCAgY2lkPSJuMTgzIiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLXAi +IG1kdHlwZT0icGFyYWdyYXBoIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1o +ZWlnaHQ6IGluaGVyaXQ7IG1hcmdpbjogMC44ZW0gMHB4OyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7 +IHBvc2l0aW9uOiByZWxhdGl2ZTsgY29sb3I6IHJnYig1MSwgNTEsIDUxKTsgZm9udC1mYW1pbHk6 +ICdPcGVuIFNhbnMnLCAnQ2xlYXIgU2FucycsICdIZWx2ZXRpY2EgTmV1ZScsIEhlbHZldGljYSwg +QXJpYWwsICdTZWdvZSBVSSBFbW9qaScsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTZweDsgZm9u +dC1zdHlsZTogbm9ybWFsOyBmb250LXZhcmlhbnQtbGlnYXR1cmVzOiBub3JtYWw7IGZvbnQtdmFy +aWFudC1jYXBzOiBub3JtYWw7IGZvbnQtd2VpZ2h0OiA0MDA7IGxldHRlci1zcGFjaW5nOiBub3Jt +YWw7IHRleHQtYWxpZ246IHN0YXJ0OyB0ZXh0LWluZGVudDogMHB4OyB0ZXh0LXRyYW5zZm9ybTog +bm9uZTsgd29yZC1zcGFjaW5nOiAwcHg7IHRleHQtZGVjb3JhdGlvbi10aGlja25lc3M6IGluaXRp +YWw7IHRleHQtZGVjb3JhdGlvbi1zdHlsZTogaW5pdGlhbDsgdGV4dC1kZWNvcmF0aW9uLWNvbG9y +OiBpbml0aWFsOyI+PHNwYW4gIGNsYXNzPSJtZC1wbGFpbiIgbWQtaW5saW5lPSJwbGFpbiIgc3R5 +bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGZvbnQtd2VpZ2h0OiBib2xkOyI+MjAyNi0wNC0w +Nzwvc3Bhbj48L3A+PG9sICBjaWQ9Im4xODQiIGNsYXNzPSJvbC1saXN0IiBtZHR5cGU9Imxpc3Qi +IHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDAuOGVtIDBweDsgcGFkZGlu +Zy1sZWZ0OiAzMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7IGNvbG9yOiByZ2IoNTEsIDUxLCA1MSk7 +IGZvbnQtZmFtaWx5OiAnT3BlbiBTYW5zJywgJ0NsZWFyIFNhbnMnLCAnSGVsdmV0aWNhIE5ldWUn +LCBIZWx2ZXRpY2EsIEFyaWFsLCAnU2Vnb2UgVUkgRW1vamknLCBzYW5zLXNlcmlmOyBmb250LXNp +emU6IDE2cHg7IGZvbnQtc3R5bGU6IG5vcm1hbDsgZm9udC12YXJpYW50LWxpZ2F0dXJlczogbm9y +bWFsOyBmb250LXZhcmlhbnQtY2Fwczogbm9ybWFsOyBmb250LXdlaWdodDogNDAwOyBsZXR0ZXIt +c3BhY2luZzogbm9ybWFsOyB0ZXh0LWFsaWduOiBzdGFydDsgdGV4dC1pbmRlbnQ6IDBweDsgdGV4 +dC10cmFuc2Zvcm06IG5vbmU7IHdoaXRlLXNwYWNlOiBub3JtYWw7IHdvcmQtc3BhY2luZzogMHB4 +OyB0ZXh0LWRlY29yYXRpb24tdGhpY2tuZXNzOiBpbml0aWFsOyB0ZXh0LWRlY29yYXRpb24tc3R5 +bGU6IGluaXRpYWw7IHRleHQtZGVjb3JhdGlvbi1jb2xvcjogaW5pdGlhbDsiPjxsaSAgY2lkPSJu +MTg1IiBjbGFzcz0ibWQtbGlzdC1pdGVtIiBtZHR5cGU9Imxpc3RfaXRlbSIgc3R5bGU9ImJveC1z +aXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48cCAg +Y2lkPSJuMTg2IiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLXAiIG1kdHlwZT0icGFyYWdyYXBoIiBz +dHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IG1hcmdp +bjogMHB4IDBweCAwLjVyZW07IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJlbGF0 +aXZlOyI+PHNwYW4gIGNsYXNzPSJtZC1wbGFpbiIgbWQtaW5saW5lPSJwbGFpbiIgc3R5bGU9ImJv +eC1zaXppbmc6IGJvcmRlci1ib3g7Ij7oh6rliqjlhaXlupPpgLvovpHmorPnkIbkuI7kvJjljJY8 +L3NwYW4+PC9wPjwvbGk+PC9vbD48cCAgY2lkPSJuMTg3IiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1k +LXAiIG1kdHlwZT0icGFyYWdyYXBoIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbGlu +ZS1oZWlnaHQ6IGluaGVyaXQ7IG1hcmdpbjogMC44ZW0gMHB4OyB3aGl0ZS1zcGFjZTogcHJlLXdy +YXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsgY29sb3I6IHJnYig1MSwgNTEsIDUxKTsgZm9udC1mYW1p +bHk6ICdPcGVuIFNhbnMnLCAnQ2xlYXIgU2FucycsICdIZWx2ZXRpY2EgTmV1ZScsIEhlbHZldGlj +YSwgQXJpYWwsICdTZWdvZSBVSSBFbW9qaScsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTZweDsg +Zm9udC1zdHlsZTogbm9ybWFsOyBmb250LXZhcmlhbnQtbGlnYXR1cmVzOiBub3JtYWw7IGZvbnQt +dmFyaWFudC1jYXBzOiBub3JtYWw7IGZvbnQtd2VpZ2h0OiA0MDA7IGxldHRlci1zcGFjaW5nOiBu +b3JtYWw7IHRleHQtYWxpZ246IHN0YXJ0OyB0ZXh0LWluZGVudDogMHB4OyB0ZXh0LXRyYW5zZm9y +bTogbm9uZTsgd29yZC1zcGFjaW5nOiAwcHg7IHRleHQtZGVjb3JhdGlvbi10aGlja25lc3M6IGlu +aXRpYWw7IHRleHQtZGVjb3JhdGlvbi1zdHlsZTogaW5pdGlhbDsgdGV4dC1kZWNvcmF0aW9uLWNv +bG9yOiBpbml0aWFsOyI+PHNwYW4gIGNsYXNzPSJtZC1wbGFpbiIgbWQtaW5saW5lPSJwbGFpbiIg +c3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGZvbnQtd2VpZ2h0OiBib2xkOyI+MjAyNi0w +NC0wODwvc3Bhbj48L3A+PG9sICBjaWQ9Im4xODgiIGNsYXNzPSJvbC1saXN0IiBtZHR5cGU9Imxp +c3QiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDAuOGVtIDBweDsgcGFk +ZGluZy1sZWZ0OiAzMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7IGNvbG9yOiByZ2IoNTEsIDUxLCA1 +MSk7IGZvbnQtZmFtaWx5OiAnT3BlbiBTYW5zJywgJ0NsZWFyIFNhbnMnLCAnSGVsdmV0aWNhIE5l +dWUnLCBIZWx2ZXRpY2EsIEFyaWFsLCAnU2Vnb2UgVUkgRW1vamknLCBzYW5zLXNlcmlmOyBmb250 +LXNpemU6IDE2cHg7IGZvbnQtc3R5bGU6IG5vcm1hbDsgZm9udC12YXJpYW50LWxpZ2F0dXJlczog +bm9ybWFsOyBmb250LXZhcmlhbnQtY2Fwczogbm9ybWFsOyBmb250LXdlaWdodDogNDAwOyBsZXR0 +ZXItc3BhY2luZzogbm9ybWFsOyB0ZXh0LWFsaWduOiBzdGFydDsgdGV4dC1pbmRlbnQ6IDBweDsg +dGV4dC10cmFuc2Zvcm06IG5vbmU7IHdoaXRlLXNwYWNlOiBub3JtYWw7IHdvcmQtc3BhY2luZzog +MHB4OyB0ZXh0LWRlY29yYXRpb24tdGhpY2tuZXNzOiBpbml0aWFsOyB0ZXh0LWRlY29yYXRpb24t +c3R5bGU6IGluaXRpYWw7IHRleHQtZGVjb3JhdGlvbi1jb2xvcjogaW5pdGlhbDsiPjxsaSAgY2lk +PSJuMTg5IiBjbGFzcz0ibWQtbGlzdC1pdGVtIiBtZHR5cGU9Imxpc3RfaXRlbSIgc3R5bGU9ImJv +eC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48 +cCAgY2lkPSJuMTkwIiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLXAiIG1kdHlwZT0icGFyYWdyYXBo +IiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IG1h +cmdpbjogMHB4IDBweCAwLjVyZW07IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJl +bGF0aXZlOyI+PHNwYW4gIGNsYXNzPSJtZC1wbGFpbiIgbWQtaW5saW5lPSJwbGFpbiIgc3R5bGU9 +ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij7lt6Xluo/lp5TlpJYt5aeU5aSW5pS25paZL+mAgOaW +meiHquWKqOWFpeW6k+iBlOiwg+WujOaIkDwvc3Bhbj48L3A+PC9saT48bGkgIGNpZD0ibjE5MSIg +Y2xhc3M9Im1kLWxpc3QtaXRlbSIgbWR0eXBlPSJsaXN0X2l0ZW0iIHN0eWxlPSJib3gtc2l6aW5n +OiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHAgIGNpZD0i +bjE5MiIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1wIiBtZHR5cGU9InBhcmFncmFwaCIgc3R5bGU9 +ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhlcml0OyBtYXJnaW46IDBw +eCAwcHggMC41cmVtOyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsi +PjxzcGFuICBjbGFzcz0ibWQtcGxhaW4iIG1kLWlubGluZT0icGxhaW4iIHN0eWxlPSJib3gtc2l6 +aW5nOiBib3JkZXItYm94OyI+5bqT5a2Y6ZyA5rGC6Ieq5rWL5a6M5oiQPC9zcGFuPjwvcD48L2xp +Pjwvb2w+PHAgIGNpZD0ibjE5MyIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1wIiBtZHR5cGU9InBh +cmFncmFwaCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhl +cml0OyBtYXJnaW46IDAuOGVtIDBweDsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyBwb3NpdGlvbjog +cmVsYXRpdmU7IGNvbG9yOiByZ2IoNTEsIDUxLCA1MSk7IGZvbnQtZmFtaWx5OiAnT3BlbiBTYW5z +JywgJ0NsZWFyIFNhbnMnLCAnSGVsdmV0aWNhIE5ldWUnLCBIZWx2ZXRpY2EsIEFyaWFsLCAnU2Vn +b2UgVUkgRW1vamknLCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDE2cHg7IGZvbnQtc3R5bGU6IG5v +cm1hbDsgZm9udC12YXJpYW50LWxpZ2F0dXJlczogbm9ybWFsOyBmb250LXZhcmlhbnQtY2Fwczog +bm9ybWFsOyBmb250LXdlaWdodDogNDAwOyBsZXR0ZXItc3BhY2luZzogbm9ybWFsOyB0ZXh0LWFs +aWduOiBzdGFydDsgdGV4dC1pbmRlbnQ6IDBweDsgdGV4dC10cmFuc2Zvcm06IG5vbmU7IHdvcmQt +c3BhY2luZzogMHB4OyB0ZXh0LWRlY29yYXRpb24tdGhpY2tuZXNzOiBpbml0aWFsOyB0ZXh0LWRl +Y29yYXRpb24tc3R5bGU6IGluaXRpYWw7IHRleHQtZGVjb3JhdGlvbi1jb2xvcjogaW5pdGlhbDsi +PjxzcGFuICBjbGFzcz0ibWQtcGxhaW4iIG1kLWlubGluZT0icGxhaW4iIHN0eWxlPSJib3gtc2l6 +aW5nOiBib3JkZXItYm94OyBmb250LXdlaWdodDogYm9sZDsiPjIwMjYtMDQtMDk8L3NwYW4+PC9w +PjxvbCAgY2lkPSJuMTk0IiBjbGFzcz0ib2wtbGlzdCIgbWR0eXBlPSJsaXN0IiBzdHlsZT0iYm94 +LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwLjhlbSAwcHg7IHBhZGRpbmctbGVmdDogMzBw +eDsgcG9zaXRpb246IHJlbGF0aXZlOyBjb2xvcjogcmdiKDUxLCA1MSwgNTEpOyBmb250LWZhbWls +eTogJ09wZW4gU2FucycsICdDbGVhciBTYW5zJywgJ0hlbHZldGljYSBOZXVlJywgSGVsdmV0aWNh +LCBBcmlhbCwgJ1NlZ29lIFVJIEVtb2ppJywgc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxNnB4OyBm +b250LXN0eWxlOiBub3JtYWw7IGZvbnQtdmFyaWFudC1saWdhdHVyZXM6IG5vcm1hbDsgZm9udC12 +YXJpYW50LWNhcHM6IG5vcm1hbDsgZm9udC13ZWlnaHQ6IDQwMDsgbGV0dGVyLXNwYWNpbmc6IG5v +cm1hbDsgdGV4dC1hbGlnbjogc3RhcnQ7IHRleHQtaW5kZW50OiAwcHg7IHRleHQtdHJhbnNmb3Jt +OiBub25lOyB3aGl0ZS1zcGFjZTogbm9ybWFsOyB3b3JkLXNwYWNpbmc6IDBweDsgdGV4dC1kZWNv +cmF0aW9uLXRoaWNrbmVzczogaW5pdGlhbDsgdGV4dC1kZWNvcmF0aW9uLXN0eWxlOiBpbml0aWFs +OyB0ZXh0LWRlY29yYXRpb24tY29sb3I6IGluaXRpYWw7Ij48bGkgIGNpZD0ibjE5NSIgY2xhc3M9 +Im1kLWxpc3QtaXRlbSIgbWR0eXBlPSJsaXN0X2l0ZW0iIHN0eWxlPSJib3gtc2l6aW5nOiBib3Jk +ZXItYm94OyBtYXJnaW46IDBweDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHAgIGNpZD0ibjE5NiIg +Y2xhc3M9Im1kLWVuZC1ibG9jayBtZC1wIiBtZHR5cGU9InBhcmFncmFwaCIgc3R5bGU9ImJveC1z +aXppbmc6IGJvcmRlci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhlcml0OyBtYXJnaW46IDBweCAwcHgg +MC41cmVtOyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxzcGFu +ICBjbGFzcz0ibWQtcGxhaW4iIG1kLWlubGluZT0icGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBi +b3JkZXItYm94OyI+6L2s5rWL6Zeu6aKY5L+u5aSNPC9zcGFuPjwvcD48L2xpPjxsaSAgY2lkPSJu +MTk3IiBjbGFzcz0ibWQtbGlzdC1pdGVtIiBtZHR5cGU9Imxpc3RfaXRlbSIgc3R5bGU9ImJveC1z +aXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48cCAg +Y2lkPSJuMTk4IiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLXAiIG1kdHlwZT0icGFyYWdyYXBoIiBz +dHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IG1hcmdp +bjogMHB4IDBweCAwLjVyZW07IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJlbGF0 +aXZlOyI+PHNwYW4gIGNsYXNzPSJtZC1wbGFpbiIgbWQtaW5saW5lPSJwbGFpbiIgc3R5bGU9ImJv +eC1zaXppbmc6IGJvcmRlci1ib3g7Ij7lhaXlupPmtYHnqIvmorPnkIY8L3NwYW4+PC9wPjwvbGk+ +PGxpICBjaWQ9Im4xOTkiIGNsYXNzPSJtZC1saXN0LWl0ZW0iIG1kdHlwZT0ibGlzdF9pdGVtIiBz +dHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBvc2l0aW9uOiByZWxh +dGl2ZTsiPjxwICBjaWQ9Im4yMDAiIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCIgbWR0eXBlPSJw +YXJhZ3JhcGgiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5o +ZXJpdDsgbWFyZ2luOiAwcHggMHB4IDAuNXJlbTsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyBwb3Np +dGlvbjogcmVsYXRpdmU7Ij48c3BhbiAgY2xhc3M9Im1kLXBsYWluIiBtZC1pbmxpbmU9InBsYWlu +IiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPuWFpeW6k+ihqOe7k+aehOazqOmHijwv +c3Bhbj48L3A+PC9saT48L29sPjxwICBjaWQ9Im4yMDEiIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQt +cCIgbWR0eXBlPSJwYXJhZ3JhcGgiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5l +LWhlaWdodDogaW5oZXJpdDsgbWFyZ2luOiAwLjhlbSAwcHg7IHdoaXRlLXNwYWNlOiBwcmUtd3Jh +cDsgcG9zaXRpb246IHJlbGF0aXZlOyBjb2xvcjogcmdiKDUxLCA1MSwgNTEpOyBmb250LWZhbWls +eTogJ09wZW4gU2FucycsICdDbGVhciBTYW5zJywgJ0hlbHZldGljYSBOZXVlJywgSGVsdmV0aWNh +LCBBcmlhbCwgJ1NlZ29lIFVJIEVtb2ppJywgc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxNnB4OyBm +b250LXN0eWxlOiBub3JtYWw7IGZvbnQtdmFyaWFudC1saWdhdHVyZXM6IG5vcm1hbDsgZm9udC12 +YXJpYW50LWNhcHM6IG5vcm1hbDsgZm9udC13ZWlnaHQ6IDQwMDsgbGV0dGVyLXNwYWNpbmc6IG5v +cm1hbDsgdGV4dC1hbGlnbjogc3RhcnQ7IHRleHQtaW5kZW50OiAwcHg7IHRleHQtdHJhbnNmb3Jt +OiBub25lOyB3b3JkLXNwYWNpbmc6IDBweDsgdGV4dC1kZWNvcmF0aW9uLXRoaWNrbmVzczogaW5p +dGlhbDsgdGV4dC1kZWNvcmF0aW9uLXN0eWxlOiBpbml0aWFsOyB0ZXh0LWRlY29yYXRpb24tY29s +b3I6IGluaXRpYWw7Ij48c3BhbiAgY2xhc3M9Im1kLXBsYWluIiBtZC1pbmxpbmU9InBsYWluIiBz +dHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgZm9udC13ZWlnaHQ6IGJvbGQ7Ij4yMDI2LTA0 +LTEwPC9zcGFuPjwvcD48b2wgIGNpZD0ibjIwMiIgY2xhc3M9Im9sLWxpc3QiIG1kdHlwZT0ibGlz +dCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMC44ZW0gMHB4OyBwYWRk +aW5nLWxlZnQ6IDMwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsgY29sb3I6IHJnYig1MSwgNTEsIDUx +KTsgZm9udC1mYW1pbHk6ICdPcGVuIFNhbnMnLCAnQ2xlYXIgU2FucycsICdIZWx2ZXRpY2EgTmV1 +ZScsIEhlbHZldGljYSwgQXJpYWwsICdTZWdvZSBVSSBFbW9qaScsIHNhbnMtc2VyaWY7IGZvbnQt +c2l6ZTogMTZweDsgZm9udC1zdHlsZTogbm9ybWFsOyBmb250LXZhcmlhbnQtbGlnYXR1cmVzOiBu +b3JtYWw7IGZvbnQtdmFyaWFudC1jYXBzOiBub3JtYWw7IGZvbnQtd2VpZ2h0OiA0MDA7IGxldHRl +ci1zcGFjaW5nOiBub3JtYWw7IHRleHQtYWxpZ246IHN0YXJ0OyB0ZXh0LWluZGVudDogMHB4OyB0 +ZXh0LXRyYW5zZm9ybTogbm9uZTsgd2hpdGUtc3BhY2U6IG5vcm1hbDsgd29yZC1zcGFjaW5nOiAw +cHg7IHRleHQtZGVjb3JhdGlvbi10aGlja25lc3M6IGluaXRpYWw7IHRleHQtZGVjb3JhdGlvbi1z +dHlsZTogaW5pdGlhbDsgdGV4dC1kZWNvcmF0aW9uLWNvbG9yOiBpbml0aWFsOyI+PGxpICBjaWQ9 +Im4yMDMiIGNsYXNzPSJtZC1saXN0LWl0ZW0iIG1kdHlwZT0ibGlzdF9pdGVtIiBzdHlsZT0iYm94 +LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxw +ICBjaWQ9Im4yMDQiIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCIgbWR0eXBlPSJwYXJhZ3JhcGgi +IHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5oZXJpdDsgbWFy +Z2luOiAwcHggMHB4IDAuNXJlbTsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyBwb3NpdGlvbjogcmVs +YXRpdmU7Ij48c3BhbiAgY2xhc3M9Im1kLXBsYWluIiBtZC1pbmxpbmU9InBsYWluIiBzdHlsZT0i +Ym94LXNpemluZzogYm9yZGVyLWJveDsiPua1i+ivlemXrumimOS/ruWkjTwvc3Bhbj48L3A+PC9s +aT48bGkgIGNpZD0ibjIwNSIgY2xhc3M9Im1kLWxpc3QtaXRlbSIgbWR0eXBlPSJsaXN0X2l0ZW0i +IHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcG9zaXRpb246IHJl +bGF0aXZlOyI+PHAgIGNpZD0ibjIwNiIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1wIiBtZHR5cGU9 +InBhcmFncmFwaCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGxpbmUtaGVpZ2h0OiBp +bmhlcml0OyBtYXJnaW46IDBweCAwcHggMC41cmVtOyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBv +c2l0aW9uOiByZWxhdGl2ZTsiPjxzcGFuICBjbGFzcz0ibWQtcGxhaW4iIG1kLWlubGluZT0icGxh +aW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+5ZCE57G75Z6L5YWl5bqT5a6i5ZWG +5L+h5oGv5qKz55CGPC9zcGFuPjwvcD48L2xpPjxsaSAgY2lkPSJuMjA3IiBjbGFzcz0ibWQtbGlz +dC1pdGVtIiBtZHR5cGU9Imxpc3RfaXRlbSIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7 +IG1hcmdpbjogMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48cCAgY2lkPSJuMjA4IiBjbGFzcz0i +bWQtZW5kLWJsb2NrIG1kLXAiIG1kdHlwZT0icGFyYWdyYXBoIiBzdHlsZT0iYm94LXNpemluZzog +Ym9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IG1hcmdpbjogMHB4IDBweCAwLjVyZW07 +IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHNwYW4gIGNsYXNz +PSJtZC1wbGFpbiIgbWQtaW5saW5lPSJwbGFpbiIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1i +b3g7Ij7lkITnsbvlnovlh7rlhaXlupPmibnmrKHlhbPogZTmorPnkIY8L3NwYW4+PC9wPjwvbGk+ +PC9vbD48aDMgIGNpZD0ibjIwOSIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1oZWFkaW5nIiBtZHR5 +cGU9ImhlYWRpbmciIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBicmVhay1hZnRlcjog +YXZvaWQtcGFnZTsgYnJlYWstaW5zaWRlOiBhdm9pZDsgZm9udC1zaXplOiAxLjVlbTsgbWFyZ2lu +LXRvcDogMXJlbTsgbWFyZ2luLWJvdHRvbTogMXJlbTsgcG9zaXRpb246IHJlbGF0aXZlOyBmb250 +LXdlaWdodDogNzAwOyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IGNvbG9yOiByZ2IoNTEsIDUxLCA1 +MSk7IGZvbnQtZmFtaWx5OiAnT3BlbiBTYW5zJywgJ0NsZWFyIFNhbnMnLCAnSGVsdmV0aWNhIE5l +dWUnLCBIZWx2ZXRpY2EsIEFyaWFsLCAnU2Vnb2UgVUkgRW1vamknLCBzYW5zLXNlcmlmOyBmb250 +LXN0eWxlOiBub3JtYWw7IGZvbnQtdmFyaWFudC1saWdhdHVyZXM6IG5vcm1hbDsgZm9udC12YXJp +YW50LWNhcHM6IG5vcm1hbDsgbGV0dGVyLXNwYWNpbmc6IG5vcm1hbDsgdGV4dC1hbGlnbjogc3Rh +cnQ7IHRleHQtaW5kZW50OiAwcHg7IHRleHQtdHJhbnNmb3JtOiBub25lOyB3b3JkLXNwYWNpbmc6 +IDBweDsgdGV4dC1kZWNvcmF0aW9uLXRoaWNrbmVzczogaW5pdGlhbDsgdGV4dC1kZWNvcmF0aW9u +LXN0eWxlOiBpbml0aWFsOyB0ZXh0LWRlY29yYXRpb24tY29sb3I6IGluaXRpYWw7Ij48c3BhbiAg +Y2xhc3M9Im1kLXBsYWluIiBtZC1pbmxpbmU9InBsYWluIiBzdHlsZT0iYm94LXNpemluZzogYm9y +ZGVyLWJveDsgZm9udC13ZWlnaHQ6IGJvbGQ7Ij7kuIvlkajph43ngrnku7vliqE8L3NwYW4+PC9o +Mz48dWwgIGNpZD0ibjIxMCIgY2xhc3M9InVsLWxpc3QiIGRhdGEtbWFyaz0iLSIgbWR0eXBlPSJs +aXN0IiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwLjhlbSAwcHggMHB4 +OyBwYWRkaW5nLWxlZnQ6IDMwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsgY29sb3I6IHJnYig1MSwg +NTEsIDUxKTsgZm9udC1mYW1pbHk6ICdPcGVuIFNhbnMnLCAnQ2xlYXIgU2FucycsICdIZWx2ZXRp +Y2EgTmV1ZScsIEhlbHZldGljYSwgQXJpYWwsICdTZWdvZSBVSSBFbW9qaScsIHNhbnMtc2VyaWY7 +IGZvbnQtc2l6ZTogMTZweDsgZm9udC1zdHlsZTogbm9ybWFsOyBmb250LXZhcmlhbnQtbGlnYXR1 +cmVzOiBub3JtYWw7IGZvbnQtdmFyaWFudC1jYXBzOiBub3JtYWw7IGZvbnQtd2VpZ2h0OiA0MDA7 +IGxldHRlci1zcGFjaW5nOiBub3JtYWw7IHRleHQtYWxpZ246IHN0YXJ0OyB0ZXh0LWluZGVudDog +MHB4OyB0ZXh0LXRyYW5zZm9ybTogbm9uZTsgd2hpdGUtc3BhY2U6IG5vcm1hbDsgd29yZC1zcGFj +aW5nOiAwcHg7IHRleHQtZGVjb3JhdGlvbi10aGlja25lc3M6IGluaXRpYWw7IHRleHQtZGVjb3Jh +dGlvbi1zdHlsZTogaW5pdGlhbDsgdGV4dC1kZWNvcmF0aW9uLWNvbG9yOiBpbml0aWFsOyI+PGxp +ICBjaWQ9Im4yMTEiIGNsYXNzPSJtZC1saXN0LWl0ZW0iIG1kdHlwZT0ibGlzdF9pdGVtIiBzdHls +ZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBvc2l0aW9uOiByZWxhdGl2 +ZTsiPjxwICBjaWQ9Im4yMTIiIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCIgbWR0eXBlPSJwYXJh +Z3JhcGgiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5oZXJp +dDsgbWFyZ2luOiAwcHggMHB4IDAuNXJlbTsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyBwb3NpdGlv +bjogcmVsYXRpdmU7Ij48c3BhbiAgY2xhc3M9Im1kLXBsYWluIiBtZC1pbmxpbmU9InBsYWluIiBz +dHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPkc16L+b6ZSA5a2YIDUuNC43IOeJiOacrDwv +c3Bhbj48L3A+PC9saT48L3VsPjxkaXYgIHN0eWxlPSJjbGVhcjogYm90aDsgZm9udC1mYW1pbHk6 +IFRhaG9tYSwgQXJpYWwsIFNUSGVpdGlTQy1MaWdodCwgU2ltU3VuOyI+PHNwYW4gPjxiciA+PC9z +cGFuPjwvZGl2PjxkaXYgIHN0eWxlPSJjbGVhcjogYm90aDsiPjxkaXYgIGNsYXNzPSIgX19hbGl5 +dW5fbm9kZV9oYXNfY29sb3IiIHN0eWxlPSJtYXJnaW46IDBweDsgcGFkZGluZzogMHB4OyBib3Jk +ZXI6IDBweDsgb3V0bGluZTogMHB4OyBjb2xvcjogcmdiKDAsIDAsIDApOyBmb250LWZhbWlseTog +VGFob21hLCBBcmlhbCwgU1RIZWl0aSwgU2ltU3VuOyBmb250LXNpemU6IDE0cHg7IGZvbnQtc3R5 +bGU6IG5vcm1hbDsgZm9udC12YXJpYW50LWxpZ2F0dXJlczogbm9ybWFsOyBmb250LXZhcmlhbnQt +Y2Fwczogbm9ybWFsOyBmb250LXdlaWdodDogNDAwOyB0ZXh0LWFsaWduOiBzdGFydDsgdGV4dC1p +bmRlbnQ6IDBweDsgdGV4dC10cmFuc2Zvcm06IG5vbmU7IHRleHQtZGVjb3JhdGlvbi10aGlja25l +c3M6IGluaXRpYWw7IHRleHQtZGVjb3JhdGlvbi1zdHlsZTogaW5pdGlhbDsgdGV4dC1kZWNvcmF0 +aW9uLWNvbG9yOiBpbml0aWFsOyBjbGVhcjogYm90aDsiPjxzcGFuICBjbGFzcz0iIF9fYWxpeXVu +X25vZGVfaGFzX2NvbG9yIiBzdHlsZT0ibWFyZ2luOiAwcHg7IHBhZGRpbmc6IDBweDsgYm9yZGVy +OiAwcHg7IG91dGxpbmU6IDBweDsgZm9udC1mYW1pbHk6ICdNaWNyb3NvZnQgWWFoZWknOyBmb250 +LXNpemU6IDEzcHg7IGNvbG9yOiByZ2IoMTkxLCAxOTEsIDE5MSk7Ij5CZXN0IHJlZ2FyZHMsPC9z +cGFuPjwvZGl2PjxkaXYgIGNsYXNzPSIgX19hbGl5dW5fbm9kZV9oYXNfY29sb3IiIHN0eWxlPSJt +YXJnaW46IDBweDsgcGFkZGluZzogMHB4OyBib3JkZXI6IDBweDsgb3V0bGluZTogMHB4OyBjb2xv +cjogcmdiKDAsIDAsIDApOyBmb250LWZhbWlseTogVGFob21hLCBBcmlhbCwgU1RIZWl0aSwgU2lt +U3VuOyBmb250LXNpemU6IDE0cHg7IGZvbnQtc3R5bGU6IG5vcm1hbDsgZm9udC12YXJpYW50LWxp +Z2F0dXJlczogbm9ybWFsOyBmb250LXZhcmlhbnQtY2Fwczogbm9ybWFsOyBmb250LXdlaWdodDog +NDAwOyB0ZXh0LWFsaWduOiBzdGFydDsgdGV4dC1pbmRlbnQ6IDBweDsgdGV4dC10cmFuc2Zvcm06 +IG5vbmU7IHRleHQtZGVjb3JhdGlvbi10aGlja25lc3M6IGluaXRpYWw7IHRleHQtZGVjb3JhdGlv +bi1zdHlsZTogaW5pdGlhbDsgdGV4dC1kZWNvcmF0aW9uLWNvbG9yOiBpbml0aWFsOyBjbGVhcjog +Ym90aDsiPjxzcGFuICBjbGFzcz0iIF9fYWxpeXVuX25vZGVfaGFzX2NvbG9yIiBzdHlsZT0ibWFy +Z2luOiAwcHg7IHBhZGRpbmc6IDBweDsgYm9yZGVyOiAwcHg7IG91dGxpbmU6IDBweDsgZm9udC1m +YW1pbHk6ICdNaWNyb3NvZnQgWWFoZWknOyBmb250LXNpemU6IDEzcHg7IGNvbG9yOiByZ2IoMTkx +LCAxOTEsIDE5MSk7Ij7mnajovak8L3NwYW4+PC9kaXY+PGRpdiAgY2xhc3M9IiBfX2FsaXl1bl9u +b2RlX2hhc19jb2xvciIgc3R5bGU9Im1hcmdpbjogMHB4OyBwYWRkaW5nOiAwcHg7IGJvcmRlcjog +MHB4OyBvdXRsaW5lOiAwcHg7IGNvbG9yOiByZ2IoMCwgMCwgMCk7IGZvbnQtZmFtaWx5OiBUYWhv +bWEsIEFyaWFsLCBTVEhlaXRpLCBTaW1TdW47IGZvbnQtc2l6ZTogMTRweDsgZm9udC1zdHlsZTog +bm9ybWFsOyBmb250LXZhcmlhbnQtbGlnYXR1cmVzOiBub3JtYWw7IGZvbnQtdmFyaWFudC1jYXBz +OiBub3JtYWw7IGZvbnQtd2VpZ2h0OiA0MDA7IHRleHQtYWxpZ246IHN0YXJ0OyB0ZXh0LWluZGVu +dDogMHB4OyB0ZXh0LXRyYW5zZm9ybTogbm9uZTsgdGV4dC1kZWNvcmF0aW9uLXRoaWNrbmVzczog +aW5pdGlhbDsgdGV4dC1kZWNvcmF0aW9uLXN0eWxlOiBpbml0aWFsOyB0ZXh0LWRlY29yYXRpb24t +Y29sb3I6IGluaXRpYWw7IGNsZWFyOiBib3RoOyI+PGltZyAgZGF0YS1hbGltYWlsLWltZy1wcm9j +ZXNzZWQtc3FtLWVkaXRvcj0idHJ1ZSIgaGVpZ2h0PSI2OCIgc3JjPSJjaWQ6ZTk5ZDMxZDItZThi +ZC00ZTRlLTlkMWQtMTU4MjdhZTNkMDEwIiB3aWR0aD0iMzAwIiBzdHlsZT0ibWFyZ2luOiAwcHg7 +IHBhZGRpbmc6IDBweDsgYm9yZGVyOiAwcHg7IG91dGxpbmU6IDBweDsgdmVydGljYWwtYWxpZ246 +IGJvdHRvbTsiPiZuYnNwOzwvZGl2PjxkaXYgIGNsYXNzPSIgX19hbGl5dW5fbm9kZV9oYXNfY29s +b3IiIHN0eWxlPSJtYXJnaW46IDBweDsgcGFkZGluZzogMHB4OyBib3JkZXI6IDBweDsgb3V0bGlu +ZTogMHB4OyBjb2xvcjogcmdiKDAsIDAsIDApOyBmb250LWZhbWlseTogVGFob21hLCBBcmlhbCwg +U1RIZWl0aSwgU2ltU3VuOyBmb250LXNpemU6IDE0cHg7IGZvbnQtc3R5bGU6IG5vcm1hbDsgZm9u +dC12YXJpYW50LWxpZ2F0dXJlczogbm9ybWFsOyBmb250LXZhcmlhbnQtY2Fwczogbm9ybWFsOyBm +b250LXdlaWdodDogNDAwOyB0ZXh0LWFsaWduOiBzdGFydDsgdGV4dC1pbmRlbnQ6IDBweDsgdGV4 +dC10cmFuc2Zvcm06IG5vbmU7IHRleHQtZGVjb3JhdGlvbi10aGlja25lc3M6IGluaXRpYWw7IHRl +eHQtZGVjb3JhdGlvbi1zdHlsZTogaW5pdGlhbDsgdGV4dC1kZWNvcmF0aW9uLWNvbG9yOiBpbml0 +aWFsOyBjbGVhcjogYm90aDsiPjxzcGFuICBjbGFzcz0iIF9fYWxpeXVuX25vZGVfaGFzX2NvbG9y +IiBzdHlsZT0ibWFyZ2luOiAwcHg7IHBhZGRpbmc6IDBweDsgYm9yZGVyOiAwcHg7IG91dGxpbmU6 +IDBweDsgZm9udC1mYW1pbHk6ICdNaWNyb3NvZnQgWWFoZWknOyBjb2xvcjogcmdiKDE5MSwgMTkx +LCAxOTEpOyI+5Zyw5Z2A77ya5Lit5Zu9wrfljZfkuqzova/ku7bosLfova/ku7blpKfpgZMxMeWP +t+iKseelnuWkp+WOpjNGPC9zcGFuPjwvZGl2PjxkaXYgIGNsYXNzPSIgX19hbGl5dW5fbm9kZV9o +YXNfY29sb3IiIHN0eWxlPSJtYXJnaW46IDBweDsgcGFkZGluZzogMHB4OyBib3JkZXI6IDBweDsg +b3V0bGluZTogMHB4OyBjb2xvcjogcmdiKDAsIDAsIDApOyBmb250LWZhbWlseTogVGFob21hLCBB +cmlhbCwgU1RIZWl0aSwgU2ltU3VuOyBmb250LXNpemU6IDE0cHg7IGZvbnQtc3R5bGU6IG5vcm1h +bDsgZm9udC12YXJpYW50LWxpZ2F0dXJlczogbm9ybWFsOyBmb250LXZhcmlhbnQtY2Fwczogbm9y +bWFsOyBmb250LXdlaWdodDogNDAwOyB0ZXh0LWFsaWduOiBzdGFydDsgdGV4dC1pbmRlbnQ6IDBw +eDsgdGV4dC10cmFuc2Zvcm06IG5vbmU7IHRleHQtZGVjb3JhdGlvbi10aGlja25lc3M6IGluaXRp +YWw7IHRleHQtZGVjb3JhdGlvbi1zdHlsZTogaW5pdGlhbDsgdGV4dC1kZWNvcmF0aW9uLWNvbG9y +OiBpbml0aWFsOyBjbGVhcjogYm90aDsiPjxzcGFuICBjbGFzcz0iIF9fYWxpeXVuX25vZGVfaGFz +X2NvbG9yIiBzdHlsZT0ibWFyZ2luOiAwcHg7IHBhZGRpbmc6IDBweDsgYm9yZGVyOiAwcHg7IG91 +dGxpbmU6IDBweDsgZm9udC1mYW1pbHk6ICdNaWNyb3NvZnQgWWFoZWknOyBjb2xvcjogcmdiKDE5 +MSwgMTkxLCAxOTEpOyI+5omL5py677yaMTg3MjYxMjg0ODk8L3NwYW4+PC9kaXY+PGRpdiAgY2xh +c3M9IiBfX2FsaXl1bl9ub2RlX2hhc19jb2xvciIgc3R5bGU9Im1hcmdpbjogMHB4OyBwYWRkaW5n +OiAwcHg7IGJvcmRlcjogMHB4OyBvdXRsaW5lOiAwcHg7IGNvbG9yOiByZ2IoMCwgMCwgMCk7IGZv +bnQtZmFtaWx5OiBUYWhvbWEsIEFyaWFsLCBTVEhlaXRpLCBTaW1TdW47IGZvbnQtc2l6ZTogMTRw +eDsgZm9udC1zdHlsZTogbm9ybWFsOyBmb250LXZhcmlhbnQtbGlnYXR1cmVzOiBub3JtYWw7IGZv +bnQtdmFyaWFudC1jYXBzOiBub3JtYWw7IGZvbnQtd2VpZ2h0OiA0MDA7IHRleHQtYWxpZ246IHN0 +YXJ0OyB0ZXh0LWluZGVudDogMHB4OyB0ZXh0LXRyYW5zZm9ybTogbm9uZTsgdGV4dC1kZWNvcmF0 +aW9uLXRoaWNrbmVzczogaW5pdGlhbDsgdGV4dC1kZWNvcmF0aW9uLXN0eWxlOiBpbml0aWFsOyB0 +ZXh0LWRlY29yYXRpb24tY29sb3I6IGluaXRpYWw7IGNsZWFyOiBib3RoOyI+PHNwYW4gIGNsYXNz +PSIgX19hbGl5dW5fbm9kZV9oYXNfY29sb3IiIHN0eWxlPSJtYXJnaW46IDBweDsgcGFkZGluZzog +MHB4OyBib3JkZXI6IDBweDsgb3V0bGluZTogMHB4OyBmb250LWZhbWlseTogJ01pY3Jvc29mdCBZ +YWhlaSc7IGNvbG9yOiByZ2IoMTkxLCAxOTEsIDE5MSk7Ij7pgq7nrrHvvJp5YW5neHVhbkB3aXRz +b2Z0LmNuPC9zcGFuPjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvYm9keT48L2h0bWw+PC9kaXY+ + +--=_mailmaster-6a18e4a4_0_701f_=-- + +--=_mailmaster-6a18e4a4_0_5d03_= +Content-Type: application/octet-stream +Content-Transfer-Encoding: base64 +Content-ID: +Content-Disposition: inline; + filename="=?utf-8?B?57u05ouT56eR5oqALemCruS7tuetvuWQjWxvZ28ucG5n?=" + +iVBORw0KGgoAAAANSUhEUgAAASwAAABECAYAAAA7rQj2AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJ +bWFnZVJlYWR5ccllPAAAA4RpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdp +bj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6 +eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTQ1IDc5LjE2 +MzQ5OSwgMjAxOC8wOC8xMy0xNjo0MDoyMiAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJo +dHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlw +dGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEu +MC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVz +b3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1N +Ok9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDplYjhjYzQwMy1lNzZjLTQ5NDgtODFmOC1kNDIy +MmRkMTdhYjgiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NkVENzExMzg1MzBEMTFFQTg4QjNF +NEJFMUQyRjc1RkIiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NkVENzExMzc1MzBEMTFFQTg4 +QjNFNEJFMUQyRjc1RkIiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTkg +KFdpbmRvd3MpIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6 +ZmNkNTdlM2UtZThjYS05ZjQ2LWEzZTUtMWJlYmE2NjA5Y2FmIiBzdFJlZjpkb2N1bWVudElEPSJh +ZG9iZTpkb2NpZDpwaG90b3Nob3A6MzZkNmNjNTUtNTY3Yi01MTQ2LWEwYWYtMzBlMzEwMTMxNDFk +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 + +--=_mailmaster-6a18e4a4_0_5d03_=-- diff --git a/media/inbound/2026-04-17_1707_G5开发周报_2026-04-13_--_2026-04-17---3d56b9e5-3dfb-4127-a963-1f7184e1aad2.eml b/media/inbound/2026-04-17_1707_G5开发周报_2026-04-13_--_2026-04-17---3d56b9e5-3dfb-4127-a963-1f7184e1aad2.eml new file mode 100644 index 0000000..e6aed3e --- /dev/null +++ b/media/inbound/2026-04-17_1707_G5开发周报_2026-04-13_--_2026-04-17---3d56b9e5-3dfb-4127-a963-1f7184e1aad2.eml @@ -0,0 +1,536 @@ +Date: Fri, 17 Apr 2026 17:07:00 +0800 +From: =?utf-8?B?5p2o6L2p?= +To: =?utf-8?B?5YiY5by6?= +Cc: =?utf-8?B?5ZC0552/5Lic?= , =?utf-8?B?6ZmI5piO?= + , =?utf-8?B?5pu+6I6J?= +Message-ID: <6f5f5097-3c47-4d2e-bed8-db3387ffe5bb.yangxuan@witsoft.cn> +In-Reply-To: <1b9956c8-581a-410f-9464-1150b26151c2.yangxuan@witsoft.cn> +References: <1b9956c8-581a-410f-9464-1150b26151c2.yangxuan@witsoft.cn> +Subject: =?utf-8?B?RzXlvIDlj5HlkajmiqXjgJAyMDI2LTA0LTEzIC0tIDIwMjYtMDQt?= + =?utf-8?B?MTfjgJE=?= +MIME-Version: 1.0 +Content-Type: multipart/related; boundary="=_mailmaster-6a18e4a4_0_767d_=" + +--=_mailmaster-6a18e4a4_0_767d_= +Content-Type: multipart/alternative; boundary="=_mailmaster-6a18e4a4_0_7a5a_=" + +--=_mailmaster-6a18e4a4_0_7a5a_= +Content-Type: text/plain; charset="UTF-8" +Content-Transfer-Encoding: base64 + +6aG555uu77yaIOe7tOS6keaZuumAoEc177yI5bqT5a2Y566h55CG77yJCuaXpeacnwrkuLvopoHl +t6XkvZwK5ZGo5LiA77yIMDQuMTPvvIkKMS4g5Y2V5o2u5p+l6K+i57y66Zm35L+u5aSNCjIuIOW6 +k+WtmOWOhuWPsumXrumimOS/ruWkjQozLiDmlrDlop7lip/og73ngrnlvIDlj5HovazmtYsK5ZGo +5LqM77yIMDQuMTTvvIkKMS4g5Y2V5o2u5p+l6K+i5rWL6K+V5a6M5oiQCjIuIOWFpeW6k+a1geeo +i+ais+eQhgozLiDlh7rlhaXlupPljZXmja7lhbPogZTmibnmrKHlj7fpgLvovpEK5ZGo5LiJ77yI +MDQuMTXvvIkKMS4g5Y2V5o2u5p+l6K+i5rWL6K+V5a6M5oiQCjIuIOWFpeW6k+a1geeoi+ais+eQ +hgozLiDlvIDlj5HmlrnmoYgK5ZGo5Zub77yIMDQuMTbvvIkKMS4g5bqT5a2Y566h55CG6ZyA5rGC +6K+E5a6hCjIuIOW3peaXtuivhOS8sAozLiBBSeWIhuaekOmcgOaxggrlkajkupTvvIgwNC4xN++8 +iQoxLiDlvIDlj5HmlrnmoYjorr7orqEKMi4gQUnor7TmmI7mlofmoaMKMy4g6ZyA5rGC5Yqf6IO9 +5paH5qGjCjQuIOWKn+iDveeCueaVsOaNruWkhOeQhuWIhuaekOaWh+ahowrmnKzlkajph43ngrnm +iJDmnpzvvJoKCiAqIArlrozmiJDljZXmja7mn6Xor6LmtYvor5Xlj4rnvLrpmbfkv67lpI0KCiAq +IArlrozmiJDlhaXlupPmtYHnqIvmorPnkIblj4rmibnmrKHlhbPogZTpgLvovpHmorPnkIYKCiAq +IArlrozmiJDlupPlrZjnrqHnkIbpnIDmsYLor4TlrqHkuI7mioDmnK/mlrnmoYjorr7orqEKCiAq +IArovpPlh7pBSeivtOaYjuaWh+aho+OAgemcgOaxguWKn+iDveaWh+aho+etiemFjeWll+aWh+ah +owrlrZjlnKjpl67popjvvJog5pegCkJlc3QgcmVnYXJkcywK5p2o6L2pCuWcsOWdgO+8muS4reWb +vcK35Y2X5Lqs6L2v5Lu26LC36L2v5Lu25aSn6YGTMTHlj7foirHnpZ7lpKfljqYzRgrmiYvmnLrv +vJoxODcyNjEyODQ4OQrpgq7nrrHvvJp5YW5neHVhbkB3aXRzb2Z0LmNuCg== + +--=_mailmaster-6a18e4a4_0_7a5a_= +Content-Type: text/html; charset="UTF-8" +Content-Transfer-Encoding: base64 + +PGRpdiBjbGFzcz0iX19hbGl5dW5fZW1haWxfYm9keV9ibG9jayI+PGh0bWwgPjxoZWFkID48L2hl +YWQ+PGJvZHkgPjxkaXYgIHN0eWxlPSJmb250LWZhbWlseTogVGFob21hLCBBcmlhbCwgU1RIZWl0 +aVNDLUxpZ2h0LCBTaW1TdW4iPjxkaXYgIHN0eWxlPSJmb250LWZhbWlseTogVGFob21hLCBBcmlh +bCwgU1RIZWl0aVNDLUxpZ2h0LCBTaW1TdW47IGNsZWFyOiBib3RoOyI+PHAgIGNsYXNzPSJtZC1l +bmQtYmxvY2sgbWQtcCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGxpbmUtaGVpZ2h0 +OiBpbmhlcml0OyBtYXJnaW46IDEycHggMHB4OyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0 +aW9uOiByZWxhdGl2ZTsgY29sb3I6IHJnYig1MSwgNTEsIDUxKTsgZm9udC1mYW1pbHk6ICdPcGVu +IFNhbnMnLCAnQ2xlYXIgU2FucycsICdIZWx2ZXRpY2EgTmV1ZScsIEhlbHZldGljYSwgQXJpYWws +ICdTZWdvZSBVSSBFbW9qaScsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTZweDsgZm9udC1zdHls +ZTogbm9ybWFsOyBmb250LXZhcmlhbnQtbGlnYXR1cmVzOiBub3JtYWw7IGZvbnQtdmFyaWFudC1j +YXBzOiBub3JtYWw7IGZvbnQtd2VpZ2h0OiA0MDA7IGxldHRlci1zcGFjaW5nOiBub3JtYWw7IHRl +eHQtYWxpZ246IHN0YXJ0OyB0ZXh0LWluZGVudDogMHB4OyB0ZXh0LXRyYW5zZm9ybTogbm9uZTsg +d29yZC1zcGFjaW5nOiAwcHg7IHRleHQtZGVjb3JhdGlvbi10aGlja25lc3M6IGluaXRpYWw7IHRl +eHQtZGVjb3JhdGlvbi1zdHlsZTogaW5pdGlhbDsgdGV4dC1kZWNvcmF0aW9uLWNvbG9yOiBpbml0 +aWFsOyI+PC9wPjxwICBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLXAgbWQtZm9jdXMiIHN0eWxlPSJi +b3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5oZXJpdDsgbWFyZ2luOiAxMnB4 +IDBweDsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyBwb3NpdGlvbjogcmVsYXRpdmU7IGNvbG9yOiBy +Z2IoNTEsIDUxLCA1MSk7IGZvbnQtZmFtaWx5OiAnT3BlbiBTYW5zJywgJ0NsZWFyIFNhbnMnLCAn +SGVsdmV0aWNhIE5ldWUnLCBIZWx2ZXRpY2EsIEFyaWFsLCAnU2Vnb2UgVUkgRW1vamknLCBzYW5z +LXNlcmlmOyBmb250LXNpemU6IDE2cHg7IGZvbnQtc3R5bGU6IG5vcm1hbDsgZm9udC12YXJpYW50 +LWxpZ2F0dXJlczogbm9ybWFsOyBmb250LXZhcmlhbnQtY2Fwczogbm9ybWFsOyBmb250LXdlaWdo +dDogNDAwOyBsZXR0ZXItc3BhY2luZzogbm9ybWFsOyB0ZXh0LWFsaWduOiBzdGFydDsgdGV4dC1p +bmRlbnQ6IDBweDsgdGV4dC10cmFuc2Zvcm06IG5vbmU7IHdvcmQtc3BhY2luZzogMHB4OyB0ZXh0 +LWRlY29yYXRpb24tdGhpY2tuZXNzOiBpbml0aWFsOyB0ZXh0LWRlY29yYXRpb24tc3R5bGU6IGlu +aXRpYWw7IHRleHQtZGVjb3JhdGlvbi1jb2xvcjogaW5pdGlhbDsiPjwvcD48cCAgY2lkPSJuNSIg +Y2xhc3M9Im1kLWVuZC1ibG9jayBtZC1wIiBtZHR5cGU9InBhcmFncmFwaCIgc3R5bGU9ImJveC1z +aXppbmc6IGJvcmRlci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhlcml0OyBtYXJnaW46IDAuOGVtIDBw +eDsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyBwb3NpdGlvbjogcmVsYXRpdmU7IGNvbG9yOiByZ2Io +NTEsIDUxLCA1MSk7IGZvbnQtZmFtaWx5OiAnT3BlbiBTYW5zJywgJ0NsZWFyIFNhbnMnLCAnSGVs +dmV0aWNhIE5ldWUnLCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDE2 +cHg7IGZvbnQtc3R5bGU6IG5vcm1hbDsgZm9udC12YXJpYW50LWxpZ2F0dXJlczogbm9ybWFsOyBm +b250LXZhcmlhbnQtY2Fwczogbm9ybWFsOyBmb250LXdlaWdodDogNDAwOyBsZXR0ZXItc3BhY2lu +Zzogbm9ybWFsOyB0ZXh0LWFsaWduOiBzdGFydDsgdGV4dC1pbmRlbnQ6IDBweDsgdGV4dC10cmFu +c2Zvcm06IG5vbmU7IHdvcmQtc3BhY2luZzogMHB4OyB0ZXh0LWRlY29yYXRpb24tc3R5bGU6IGlu +aXRpYWw7IHRleHQtZGVjb3JhdGlvbi1jb2xvcjogaW5pdGlhbDsiPjxzcGFuICBjbGFzcz0ibWQt +cGxhaW4iIG1kLWlubGluZT0icGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBm +b250LXdlaWdodDogYm9sZDsiPumhueebru+8mjwvc3Bhbj48c3BhbiAgY2xhc3M9Im1kLXBsYWlu +IiBtZC1pbmxpbmU9InBsYWluIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPiDnu7Tk +upHmmbrpgKBHNe+8iOW6k+WtmOeuoeeQhu+8iTwvc3Bhbj48L3A+PGRpdiA+PGZpZ3VyZSAgY2lk +PSJuNiIgY2xhc3M9Im1kLXRhYmxlLWZpZyIgbWR0eXBlPSJ0YWJsZSIgc3R5bGU9ImJveC1zaXpp +bmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMS4yZW0gMHB4OyBvdmVyZmxvdy14OiBhdXRvOyBwYWRk +aW5nOiAwcHg7IGNvbG9yOiByZ2IoNTEsIDUxLCA1MSk7IGZvbnQtZmFtaWx5OiAnT3BlbiBTYW5z +JywgJ0NsZWFyIFNhbnMnLCAnSGVsdmV0aWNhIE5ldWUnLCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5z +LXNlcmlmOyBmb250LXNpemU6IDE2cHg7IGZvbnQtc3R5bGU6IG5vcm1hbDsgZm9udC12YXJpYW50 +LWxpZ2F0dXJlczogbm9ybWFsOyBmb250LXZhcmlhbnQtY2Fwczogbm9ybWFsOyBmb250LXdlaWdo +dDogNDAwOyBsZXR0ZXItc3BhY2luZzogbm9ybWFsOyB0ZXh0LWFsaWduOiBzdGFydDsgdGV4dC1p +bmRlbnQ6IDBweDsgdGV4dC10cmFuc2Zvcm06IG5vbmU7IHdoaXRlLXNwYWNlOiBub3JtYWw7IHdv +cmQtc3BhY2luZzogMHB4OyB0ZXh0LWRlY29yYXRpb24tc3R5bGU6IGluaXRpYWw7IHRleHQtZGVj +b3JhdGlvbi1jb2xvcjogaW5pdGlhbDsiPjx0YWJsZSAgY2xhc3M9Im1kLXRhYmxlIiBzdHlsZT0i +Ym94LXNpemluZzogYm9yZGVyLWJveDsgYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTsgYm9yZGVy +LXNwYWNpbmc6IDBweDsgd2lkdGg6IDk2NHB4OyBvdmVyZmxvdzogYXV0bzsgYnJlYWstaW5zaWRl +OiBhdXRvOyB0ZXh0LWFsaWduOiBsZWZ0OyBtYXJnaW46IDBweDsgcGFkZGluZzogMHB4OyB3b3Jk +LWJyZWFrOiBpbml0aWFsOyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7Ij48dGhlYWQgIHN0eWxlPSJi +b3gtc2l6aW5nOiBib3JkZXItYm94OyBkaXNwbGF5OiB0YWJsZS1oZWFkZXItZ3JvdXA7IGJhY2tn +cm91bmQtY29sb3I6IHJnYigyNDgsIDI0OCwgMjQ4KTsiPjx0ciAgY2lkPSJuNyIgY2xhc3M9Im1k +LWVuZC1ibG9jayIgbWR0eXBlPSJ0YWJsZV9yb3ciIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXIt +Ym94OyBicmVhay1pbnNpZGU6IGF2b2lkOyBicmVhay1hZnRlcjogYXV0bzsgYm9yZGVyLXRvcDog +MXB4IHNvbGlkIHJnYigyMjMsIDIyNiwgMjI5KTsgbWFyZ2luOiAwcHg7IHBhZGRpbmc6IDBweDsi +Pjx0ZCAgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IHBhZGRpbmc6IDZweCAxM3B4OyBi +b3JkZXItd2lkdGg6IDFweCAxcHggMHB4OyBib3JkZXItdG9wLXN0eWxlOiBzb2xpZDsgYm9yZGVy +LXJpZ2h0LXN0eWxlOiBzb2xpZDsgYm9yZGVyLWxlZnQtc3R5bGU6IHNvbGlkOyBib3JkZXItdG9w +LWNvbG9yOiByZ2IoMjIzLCAyMjYsIDIyOSk7IGJvcmRlci1yaWdodC1jb2xvcjogcmdiKDIyMywg +MjI2LCAyMjkpOyBib3JkZXItbGVmdC1jb2xvcjogcmdiKDIyMywgMjI2LCAyMjkpOyBib3JkZXIt +aW1hZ2U6IGluaXRpYWw7IGJvcmRlci1ib3R0b20tc3R5bGU6IGluaXRpYWw7IGJvcmRlci1ib3R0 +b20tY29sb3I6IGluaXRpYWw7IG1hcmdpbjogMHB4OyI+PGRpdiAgc3R5bGU9ImZvbnQtd2VpZ2h0 +OiA3MDA7IHRleHQtYWxpZ246IGNlbnRlcjsiPjxzcGFuICBjbGFzcz0ibWQtcGxhaW4iIG1kLWlu +bGluZT0icGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBkaXNwbGF5OiBpbmxp +bmUtYmxvY2s7IG1pbi13aWR0aDogMWNoOyB3aWR0aDogMzE4cHg7IG1pbi1oZWlnaHQ6IDEwcHg7 +Ij7ml6XmnJ88L3NwYW4+PC9kaXY+PC90ZD48dGQgIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXIt +Ym94OyBwYWRkaW5nOiA2cHggMTNweDsgYm9yZGVyLXdpZHRoOiAxcHggMXB4IDBweDsgYm9yZGVy +LXRvcC1zdHlsZTogc29saWQ7IGJvcmRlci1yaWdodC1zdHlsZTogc29saWQ7IGJvcmRlci1sZWZ0 +LXN0eWxlOiBzb2xpZDsgYm9yZGVyLXRvcC1jb2xvcjogcmdiKDIyMywgMjI2LCAyMjkpOyBib3Jk +ZXItcmlnaHQtY29sb3I6IHJnYigyMjMsIDIyNiwgMjI5KTsgYm9yZGVyLWxlZnQtY29sb3I6IHJn +YigyMjMsIDIyNiwgMjI5KTsgYm9yZGVyLWltYWdlOiBpbml0aWFsOyBib3JkZXItYm90dG9tLXN0 +eWxlOiBpbml0aWFsOyBib3JkZXItYm90dG9tLWNvbG9yOiBpbml0aWFsOyBtYXJnaW46IDBweDsi +PjxkaXYgIHN0eWxlPSJmb250LXdlaWdodDogNzAwOyB0ZXh0LWFsaWduOiBjZW50ZXI7Ij48c3Bh +biAgY2xhc3M9Im1kLXBsYWluIiBtZC1pbmxpbmU9InBsYWluIiBzdHlsZT0iYm94LXNpemluZzog +Ym9yZGVyLWJveDsgZGlzcGxheTogaW5saW5lLWJsb2NrOyBtaW4td2lkdGg6IDFjaDsgd2lkdGg6 +IDU5MnB4OyBtaW4taGVpZ2h0OiAxMHB4OyI+5Li76KaB5bel5L2cPC9zcGFuPjwvZGl2PjwvdGQ+ +PC90cj48L3RoZWFkPjx0Ym9keSAgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij48dHIg +IGNpZD0ibjEwIiBjbGFzcz0ibWQtZW5kLWJsb2NrIiBtZHR5cGU9InRhYmxlX3JvdyIgc3R5bGU9 +ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGJyZWFrLWluc2lkZTogYXZvaWQ7IGJyZWFrLWFmdGVy +OiBhdXRvOyBib3JkZXItdG9wOiAxcHggc29saWQgcmdiKDIyMywgMjI2LCAyMjkpOyBtYXJnaW46 +IDBweDsgcGFkZGluZzogMHB4OyI+PHRkICBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsg +cGFkZGluZzogNnB4IDEzcHg7IGJvcmRlcjogMXB4IHNvbGlkIHJnYigyMjMsIDIyNiwgMjI5KTsg +bWFyZ2luOiAwcHg7Ij48c3BhbiAgY2xhc3M9Im1kLXBsYWluIiBtZC1pbmxpbmU9InBsYWluIiBz +dHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgZGlzcGxheTogaW5saW5lLWJsb2NrOyBtaW4t +d2lkdGg6IDFjaDsgd2lkdGg6IDMxOHB4OyBtaW4taGVpZ2h0OiAxMHB4OyI+5ZGo5LiA77yIMDQu +MTPvvIk8L3NwYW4+PC90ZD48dGQgIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBwYWRk +aW5nOiA2cHggMTNweDsgYm9yZGVyOiAxcHggc29saWQgcmdiKDIyMywgMjI2LCAyMjkpOyBtYXJn +aW46IDBweDsiPjxkaXYgIHN0eWxlPSJjbGVhcjogYm90aDsiPjxzcGFuICBjaWQ9Im4xMiIgY2xh +c3M9InRkLXNwYW4iIG1kdHlwZT0idGFibGVfY2VsbCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRl +ci1ib3g7IGRpc3BsYXk6IGlubGluZS1ibG9jazsgbWluLXdpZHRoOiAxY2g7IHdpZHRoOiA1OTJw +eDsgbWluLWhlaWdodDogMTBweDsiPjxzcGFuICBjbGFzcz0ibWQtcGxhaW4iIG1kLWlubGluZT0i +cGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+MS4g5Y2V5o2u5p+l6K+i57y6 +6Zm35L+u5aSNPC9zcGFuPjwvc3Bhbj48L2Rpdj48ZGl2ICBzdHlsZT0iY2xlYXI6IGJvdGg7Ij48 +c3BhbiAgY2lkPSJuMTIiIGNsYXNzPSJ0ZC1zcGFuIiBtZHR5cGU9InRhYmxlX2NlbGwiIHN0eWxl +PSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IG1pbi13aWR0 +aDogMWNoOyB3aWR0aDogNTkycHg7IG1pbi1oZWlnaHQ6IDEwcHg7Ij48c3BhbiAgY2xhc3M9Im1k +LXBsYWluIiBtZC1pbmxpbmU9InBsYWluIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsi +PjIuIOW6k+WtmOWOhuWPsumXrumimOS/ruWkjTwvc3Bhbj48L3NwYW4+PC9kaXY+PGRpdiAgc3R5 +bGU9ImNsZWFyOiBib3RoOyI+PHNwYW4gIGNpZD0ibjEyIiBjbGFzcz0idGQtc3BhbiIgbWR0eXBl +PSJ0YWJsZV9jZWxsIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgZGlzcGxheTogaW5s +aW5lLWJsb2NrOyBtaW4td2lkdGg6IDFjaDsgd2lkdGg6IDU5MnB4OyBtaW4taGVpZ2h0OiAxMHB4 +OyI+PHNwYW4gIGNsYXNzPSJtZC1wbGFpbiIgbWQtaW5saW5lPSJwbGFpbiIgc3R5bGU9ImJveC1z +aXppbmc6IGJvcmRlci1ib3g7Ij4zLiDmlrDlop7lip/og73ngrnlvIDlj5HovazmtYs8L3NwYW4+ +PC9zcGFuPjwvZGl2PjwvdGQ+PC90cj48dHIgIGNpZD0ibjEzIiBjbGFzcz0ibWQtZW5kLWJsb2Nr +IiBtZHR5cGU9InRhYmxlX3JvdyIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGJyZWFr +LWluc2lkZTogYXZvaWQ7IGJyZWFrLWFmdGVyOiBhdXRvOyBib3JkZXItdG9wOiAxcHggc29saWQg +cmdiKDIyMywgMjI2LCAyMjkpOyBtYXJnaW46IDBweDsgcGFkZGluZzogMHB4OyBiYWNrZ3JvdW5k +LWNvbG9yOiByZ2IoMjQ4LCAyNDgsIDI0OCk7Ij48dGQgIHN0eWxlPSJib3gtc2l6aW5nOiBib3Jk +ZXItYm94OyBwYWRkaW5nOiA2cHggMTNweDsgYm9yZGVyOiAxcHggc29saWQgcmdiKDIyMywgMjI2 +LCAyMjkpOyBtYXJnaW46IDBweDsiPjxzcGFuICBjbGFzcz0ibWQtcGxhaW4iIG1kLWlubGluZT0i +cGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBkaXNwbGF5OiBpbmxpbmUtYmxv +Y2s7IG1pbi13aWR0aDogMWNoOyB3aWR0aDogMzE4cHg7IG1pbi1oZWlnaHQ6IDEwcHg7Ij7lkajk +uozvvIgwNC4xNO+8iTwvc3Bhbj48L3RkPjx0ZCAgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1i +b3g7IHBhZGRpbmc6IDZweCAxM3B4OyBib3JkZXI6IDFweCBzb2xpZCByZ2IoMjIzLCAyMjYsIDIy +OSk7IG1hcmdpbjogMHB4OyI+PGRpdiAgc3R5bGU9ImNsZWFyOiBib3RoOyI+PHNwYW4gIGNpZD0i +bjE1IiBjbGFzcz0idGQtc3BhbiIgbWR0eXBlPSJ0YWJsZV9jZWxsIiBzdHlsZT0iYm94LXNpemlu +ZzogYm9yZGVyLWJveDsgZGlzcGxheTogaW5saW5lLWJsb2NrOyBtaW4td2lkdGg6IDFjaDsgd2lk +dGg6IDU5MnB4OyBtaW4taGVpZ2h0OiAxMHB4OyI+PHNwYW4gIGNsYXNzPSJtZC1wbGFpbiIgbWQt +aW5saW5lPSJwbGFpbiIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij4xLiDljZXmja7m +n6Xor6LmtYvor5XlrozmiJA8L3NwYW4+PC9zcGFuPjwvZGl2PjxkaXYgIHN0eWxlPSJjbGVhcjog +Ym90aDsiPjxzcGFuICBjaWQ9Im4xNSIgY2xhc3M9InRkLXNwYW4iIG1kdHlwZT0idGFibGVfY2Vs +bCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGRpc3BsYXk6IGlubGluZS1ibG9jazsg +bWluLXdpZHRoOiAxY2g7IHdpZHRoOiA1OTJweDsgbWluLWhlaWdodDogMTBweDsiPjxzcGFuICBj +bGFzcz0ibWQtcGxhaW4iIG1kLWlubGluZT0icGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3Jk +ZXItYm94OyI+Mi4g5YWl5bqT5rWB56iL5qKz55CGPC9zcGFuPjwvc3Bhbj48L2Rpdj48ZGl2ICBz +dHlsZT0iY2xlYXI6IGJvdGg7Ij48c3BhbiAgY2lkPSJuMTUiIGNsYXNzPSJ0ZC1zcGFuIiBtZHR5 +cGU9InRhYmxlX2NlbGwiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBkaXNwbGF5OiBp +bmxpbmUtYmxvY2s7IG1pbi13aWR0aDogMWNoOyB3aWR0aDogNTkycHg7IG1pbi1oZWlnaHQ6IDEw +cHg7Ij48c3BhbiAgY2xhc3M9Im1kLXBsYWluIiBtZC1pbmxpbmU9InBsYWluIiBzdHlsZT0iYm94 +LXNpemluZzogYm9yZGVyLWJveDsiPjMuIOWHuuWFpeW6k+WNleaNruWFs+iBlOaJueasoeWPt+mA +u+i+kTwvc3Bhbj48L3NwYW4+PC9kaXY+PC90ZD48L3RyPjx0ciAgY2lkPSJuMTYiIGNsYXNzPSJt +ZC1lbmQtYmxvY2siIG1kdHlwZT0idGFibGVfcm93IiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVy +LWJveDsgYnJlYWstaW5zaWRlOiBhdm9pZDsgYnJlYWstYWZ0ZXI6IGF1dG87IGJvcmRlci10b3A6 +IDFweCBzb2xpZCByZ2IoMjIzLCAyMjYsIDIyOSk7IG1hcmdpbjogMHB4OyBwYWRkaW5nOiAwcHg7 +Ij48dGQgIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBwYWRkaW5nOiA2cHggMTNweDsg +Ym9yZGVyOiAxcHggc29saWQgcmdiKDIyMywgMjI2LCAyMjkpOyBtYXJnaW46IDBweDsiPjxzcGFu +ICBjbGFzcz0ibWQtcGxhaW4iIG1kLWlubGluZT0icGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBi +b3JkZXItYm94OyBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IG1pbi13aWR0aDogMWNoOyB3aWR0aDog +MzE4cHg7IG1pbi1oZWlnaHQ6IDEwcHg7Ij7lkajkuInvvIgwNC4xNe+8iTwvc3Bhbj48L3RkPjx0 +ZCAgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IHBhZGRpbmc6IDZweCAxM3B4OyBib3Jk +ZXI6IDFweCBzb2xpZCByZ2IoMjIzLCAyMjYsIDIyOSk7IG1hcmdpbjogMHB4OyI+PGRpdiAgc3R5 +bGU9ImNsZWFyOiBib3RoOyI+PHNwYW4gIGNpZD0ibjE4IiBjbGFzcz0idGQtc3BhbiIgbWR0eXBl +PSJ0YWJsZV9jZWxsIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgZGlzcGxheTogaW5s +aW5lLWJsb2NrOyBtaW4td2lkdGg6IDFjaDsgd2lkdGg6IDU5MnB4OyBtaW4taGVpZ2h0OiAxMHB4 +OyI+PHNwYW4gIGNsYXNzPSJtZC1wbGFpbiIgbWQtaW5saW5lPSJwbGFpbiIgc3R5bGU9ImJveC1z +aXppbmc6IGJvcmRlci1ib3g7Ij4xLiDljZXmja7mn6Xor6LmtYvor5XlrozmiJA8L3NwYW4+PC9z +cGFuPjwvZGl2PjxkaXYgIHN0eWxlPSJjbGVhcjogYm90aDsiPjxzcGFuICBjaWQ9Im4xOCIgY2xh +c3M9InRkLXNwYW4iIG1kdHlwZT0idGFibGVfY2VsbCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRl +ci1ib3g7IGRpc3BsYXk6IGlubGluZS1ibG9jazsgbWluLXdpZHRoOiAxY2g7IHdpZHRoOiA1OTJw +eDsgbWluLWhlaWdodDogMTBweDsiPjxzcGFuICBjbGFzcz0ibWQtcGxhaW4iIG1kLWlubGluZT0i +cGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+Mi4g5YWl5bqT5rWB56iL5qKz +55CGPC9zcGFuPjwvc3Bhbj48L2Rpdj48ZGl2ICBzdHlsZT0iY2xlYXI6IGJvdGg7Ij48c3BhbiAg +Y2lkPSJuMTgiIGNsYXNzPSJ0ZC1zcGFuIiBtZHR5cGU9InRhYmxlX2NlbGwiIHN0eWxlPSJib3gt +c2l6aW5nOiBib3JkZXItYm94OyBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IG1pbi13aWR0aDogMWNo +OyB3aWR0aDogNTkycHg7IG1pbi1oZWlnaHQ6IDEwcHg7Ij48c3BhbiAgY2xhc3M9Im1kLXBsYWlu +IiBtZC1pbmxpbmU9InBsYWluIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPjMuIOW8 +gOWPkeaWueahiDwvc3Bhbj48L3NwYW4+PC9kaXY+PC90ZD48L3RyPjx0ciAgY2lkPSJuMTkiIGNs +YXNzPSJtZC1lbmQtYmxvY2siIG1kdHlwZT0idGFibGVfcm93IiBzdHlsZT0iYm94LXNpemluZzog +Ym9yZGVyLWJveDsgYnJlYWstaW5zaWRlOiBhdm9pZDsgYnJlYWstYWZ0ZXI6IGF1dG87IGJvcmRl +ci10b3A6IDFweCBzb2xpZCByZ2IoMjIzLCAyMjYsIDIyOSk7IG1hcmdpbjogMHB4OyBwYWRkaW5n +OiAwcHg7IGJhY2tncm91bmQtY29sb3I6IHJnYigyNDgsIDI0OCwgMjQ4KTsiPjx0ZCAgc3R5bGU9 +ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IHBhZGRpbmc6IDZweCAxM3B4OyBib3JkZXI6IDFweCBz +b2xpZCByZ2IoMjIzLCAyMjYsIDIyOSk7IG1hcmdpbjogMHB4OyI+PHNwYW4gIGNsYXNzPSJtZC1w +bGFpbiIgbWQtaW5saW5lPSJwbGFpbiIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGRp +c3BsYXk6IGlubGluZS1ibG9jazsgbWluLXdpZHRoOiAxY2g7IHdpZHRoOiAzMThweDsgbWluLWhl +aWdodDogMTBweDsiPuWRqOWbm++8iDA0LjE277yJPC9zcGFuPjwvdGQ+PHRkICBzdHlsZT0iYm94 +LXNpemluZzogYm9yZGVyLWJveDsgcGFkZGluZzogNnB4IDEzcHg7IGJvcmRlcjogMXB4IHNvbGlk +IHJnYigyMjMsIDIyNiwgMjI5KTsgbWFyZ2luOiAwcHg7Ij48ZGl2ICBzdHlsZT0iY2xlYXI6IGJv +dGg7Ij48c3BhbiAgY2lkPSJuMjEiIGNsYXNzPSJ0ZC1zcGFuIiBtZHR5cGU9InRhYmxlX2NlbGwi +IHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IG1p +bi13aWR0aDogMWNoOyB3aWR0aDogNTkycHg7IG1pbi1oZWlnaHQ6IDEwcHg7Ij48c3BhbiAgY2xh +c3M9Im1kLXBsYWluIiBtZC1pbmxpbmU9InBsYWluIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVy +LWJveDsiPjEuIOW6k+WtmOeuoeeQhumcgOaxguivhOWuoTwvc3Bhbj48L3NwYW4+PC9kaXY+PGRp +diAgc3R5bGU9ImNsZWFyOiBib3RoOyI+PHNwYW4gIGNpZD0ibjIxIiBjbGFzcz0idGQtc3BhbiIg +bWR0eXBlPSJ0YWJsZV9jZWxsIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgZGlzcGxh +eTogaW5saW5lLWJsb2NrOyBtaW4td2lkdGg6IDFjaDsgd2lkdGg6IDU5MnB4OyBtaW4taGVpZ2h0 +OiAxMHB4OyI+PHNwYW4gIGNsYXNzPSJtZC1wbGFpbiIgbWQtaW5saW5lPSJwbGFpbiIgc3R5bGU9 +ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij4yLiDlt6Xml7bor4TkvLA8L3NwYW4+PC9zcGFuPjwv +ZGl2PjxkaXYgIHN0eWxlPSJjbGVhcjogYm90aDsiPjxzcGFuICBjaWQ9Im4yMSIgY2xhc3M9InRk +LXNwYW4iIG1kdHlwZT0idGFibGVfY2VsbCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7 +IGRpc3BsYXk6IGlubGluZS1ibG9jazsgbWluLXdpZHRoOiAxY2g7IHdpZHRoOiA1OTJweDsgbWlu +LWhlaWdodDogMTBweDsiPjxzcGFuICBjbGFzcz0ibWQtcGxhaW4iIG1kLWlubGluZT0icGxhaW4i +IHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+My4gQUnliIbmnpDpnIDmsYI8L3NwYW4+ +PC9zcGFuPjwvZGl2PjwvdGQ+PC90cj48dHIgIGNpZD0ibjIyIiBjbGFzcz0ibWQtZW5kLWJsb2Nr +IiBtZHR5cGU9InRhYmxlX3JvdyIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGJyZWFr +LWluc2lkZTogYXZvaWQ7IGJyZWFrLWFmdGVyOiBhdXRvOyBib3JkZXItdG9wOiAxcHggc29saWQg +cmdiKDIyMywgMjI2LCAyMjkpOyBtYXJnaW46IDBweDsgcGFkZGluZzogMHB4OyI+PHRkICBzdHls +ZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgcGFkZGluZzogNnB4IDEzcHg7IGJvcmRlcjogMXB4 +IHNvbGlkIHJnYigyMjMsIDIyNiwgMjI5KTsgbWFyZ2luOiAwcHg7Ij48c3BhbiAgY2xhc3M9Im1k +LXBsYWluIiBtZC1pbmxpbmU9InBsYWluIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsg +ZGlzcGxheTogaW5saW5lLWJsb2NrOyBtaW4td2lkdGg6IDFjaDsgd2lkdGg6IDMxOHB4OyBtaW4t +aGVpZ2h0OiAxMHB4OyI+5ZGo5LqU77yIMDQuMTfvvIk8L3NwYW4+PC90ZD48dGQgIHN0eWxlPSJi +b3gtc2l6aW5nOiBib3JkZXItYm94OyBwYWRkaW5nOiA2cHggMTNweDsgYm9yZGVyOiAxcHggc29s +aWQgcmdiKDIyMywgMjI2LCAyMjkpOyBtYXJnaW46IDBweDsiPjxkaXYgIHN0eWxlPSJjbGVhcjog +Ym90aDsiPjxzcGFuICBjaWQ9Im4yNCIgY2xhc3M9InRkLXNwYW4iIG1kdHlwZT0idGFibGVfY2Vs +bCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGRpc3BsYXk6IGlubGluZS1ibG9jazsg +bWluLXdpZHRoOiAxY2g7IHdpZHRoOiA1OTJweDsgbWluLWhlaWdodDogMTBweDsiPjxzcGFuICBj +bGFzcz0ibWQtcGxhaW4iIG1kLWlubGluZT0icGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3Jk +ZXItYm94OyI+MS4g5byA5Y+R5pa55qGI6K6+6K6hPC9zcGFuPjwvc3Bhbj48L2Rpdj48ZGl2ICBz +dHlsZT0iY2xlYXI6IGJvdGg7Ij48c3BhbiAgY2lkPSJuMjQiIGNsYXNzPSJ0ZC1zcGFuIiBtZHR5 +cGU9InRhYmxlX2NlbGwiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBkaXNwbGF5OiBp +bmxpbmUtYmxvY2s7IG1pbi13aWR0aDogMWNoOyB3aWR0aDogNTkycHg7IG1pbi1oZWlnaHQ6IDEw +cHg7Ij48c3BhbiAgY2xhc3M9Im1kLXBsYWluIiBtZC1pbmxpbmU9InBsYWluIiBzdHlsZT0iYm94 +LXNpemluZzogYm9yZGVyLWJveDsiPjIuIEFJ6K+05piO5paH5qGjPC9zcGFuPjwvc3Bhbj48L2Rp +dj48ZGl2ICBzdHlsZT0iY2xlYXI6IGJvdGg7Ij48c3BhbiAgY2lkPSJuMjQiIGNsYXNzPSJ0ZC1z +cGFuIiBtZHR5cGU9InRhYmxlX2NlbGwiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBk +aXNwbGF5OiBpbmxpbmUtYmxvY2s7IG1pbi13aWR0aDogMWNoOyB3aWR0aDogNTkycHg7IG1pbi1o +ZWlnaHQ6IDEwcHg7Ij48c3BhbiAgY2xhc3M9Im1kLXBsYWluIiBtZC1pbmxpbmU9InBsYWluIiBz +dHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPjMuIOmcgOaxguWKn+iDveaWh+ahozwvc3Bh +bj48L3NwYW4+PC9kaXY+PGRpdiAgc3R5bGU9ImNsZWFyOiBib3RoOyI+PHNwYW4gIGNpZD0ibjI0 +IiBjbGFzcz0idGQtc3BhbiIgbWR0eXBlPSJ0YWJsZV9jZWxsIiBzdHlsZT0iYm94LXNpemluZzog +Ym9yZGVyLWJveDsgZGlzcGxheTogaW5saW5lLWJsb2NrOyBtaW4td2lkdGg6IDFjaDsgd2lkdGg6 +IDU5MnB4OyBtaW4taGVpZ2h0OiAxMHB4OyI+PHNwYW4gIGNsYXNzPSJtZC1wbGFpbiIgbWQtaW5s +aW5lPSJwbGFpbiIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij40LiDlip/og73ngrnm +lbDmja7lpITnkIbliIbmnpDmlofmoaM8L3NwYW4+PC9zcGFuPjwvZGl2PjwvdGQ+PC90cj48L3Ri +b2R5PjwvdGFibGU+PC9maWd1cmU+PC9kaXY+PGRpdiAgY2lkPSJuMjUiIGNsYXNzPSJtZC1ociBt +ZC1lbmQtYmxvY2siIG1kdHlwZT0iaHIiIHRhYmluZGV4PSItMSIgc3R5bGU9ImJveC1zaXppbmc6 +IGJvcmRlci1ib3g7IGNvbG9yOiByZ2IoNTEsIDUxLCA1MSk7IGZvbnQtZmFtaWx5OiAnT3BlbiBT +YW5zJywgJ0NsZWFyIFNhbnMnLCAnSGVsdmV0aWNhIE5ldWUnLCBIZWx2ZXRpY2EsIEFyaWFsLCBz +YW5zLXNlcmlmOyBmb250LXNpemU6IDE2cHg7IGZvbnQtc3R5bGU6IG5vcm1hbDsgZm9udC12YXJp +YW50LWxpZ2F0dXJlczogbm9ybWFsOyBmb250LXZhcmlhbnQtY2Fwczogbm9ybWFsOyBmb250LXdl +aWdodDogNDAwOyBsZXR0ZXItc3BhY2luZzogbm9ybWFsOyB0ZXh0LWFsaWduOiBzdGFydDsgdGV4 +dC1pbmRlbnQ6IDBweDsgdGV4dC10cmFuc2Zvcm06IG5vbmU7IHdoaXRlLXNwYWNlOiBub3JtYWw7 +IHdvcmQtc3BhY2luZzogMHB4OyB0ZXh0LWRlY29yYXRpb24tc3R5bGU6IGluaXRpYWw7IHRleHQt +ZGVjb3JhdGlvbi1jb2xvcjogaW5pdGlhbDsiPjxociAgc3R5bGU9ImJveC1zaXppbmc6IGNvbnRl +bnQtYm94OyBoZWlnaHQ6IDJweDsgbWFyZ2luOiAxNnB4IDBweDsgYm9yZGVyOiAwcHggbm9uZTsg +cGFkZGluZzogMHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjMxLCAyMzEsIDIzMSk7IG92ZXJm +bG93OiBoaWRkZW47Ij48L2Rpdj48cCAgY2lkPSJuMjYiIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQt +cCIgbWR0eXBlPSJwYXJhZ3JhcGgiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5l +LWhlaWdodDogaW5oZXJpdDsgbWFyZ2luOiAwLjhlbSAwcHg7IHdoaXRlLXNwYWNlOiBwcmUtd3Jh +cDsgcG9zaXRpb246IHJlbGF0aXZlOyBjb2xvcjogcmdiKDUxLCA1MSwgNTEpOyBmb250LWZhbWls +eTogJ09wZW4gU2FucycsICdDbGVhciBTYW5zJywgJ0hlbHZldGljYSBOZXVlJywgSGVsdmV0aWNh +LCBBcmlhbCwgc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxNnB4OyBmb250LXN0eWxlOiBub3JtYWw7 +IGZvbnQtdmFyaWFudC1saWdhdHVyZXM6IG5vcm1hbDsgZm9udC12YXJpYW50LWNhcHM6IG5vcm1h +bDsgZm9udC13ZWlnaHQ6IDQwMDsgbGV0dGVyLXNwYWNpbmc6IG5vcm1hbDsgdGV4dC1hbGlnbjog +c3RhcnQ7IHRleHQtaW5kZW50OiAwcHg7IHRleHQtdHJhbnNmb3JtOiBub25lOyB3b3JkLXNwYWNp +bmc6IDBweDsgdGV4dC1kZWNvcmF0aW9uLXN0eWxlOiBpbml0aWFsOyB0ZXh0LWRlY29yYXRpb24t +Y29sb3I6IGluaXRpYWw7Ij48c3BhbiAgY2xhc3M9Im1kLXBsYWluIiBtZC1pbmxpbmU9InBsYWlu +IiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgZm9udC13ZWlnaHQ6IGJvbGQ7Ij7mnKzl +kajph43ngrnmiJDmnpzvvJo8L3NwYW4+PC9wPjx1bCAgY2lkPSJuMjciIGNsYXNzPSJ1bC1saXN0 +IiBkYXRhLW1hcms9Ii0iIG1kdHlwZT0ibGlzdCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1i +b3g7IG1hcmdpbjogMC44ZW0gMHB4OyBwYWRkaW5nLWxlZnQ6IDMwcHg7IHBvc2l0aW9uOiByZWxh +dGl2ZTsgY29sb3I6IHJnYig1MSwgNTEsIDUxKTsgZm9udC1mYW1pbHk6ICdPcGVuIFNhbnMnLCAn +Q2xlYXIgU2FucycsICdIZWx2ZXRpY2EgTmV1ZScsIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2Vy +aWY7IGZvbnQtc2l6ZTogMTZweDsgZm9udC1zdHlsZTogbm9ybWFsOyBmb250LXZhcmlhbnQtbGln +YXR1cmVzOiBub3JtYWw7IGZvbnQtdmFyaWFudC1jYXBzOiBub3JtYWw7IGZvbnQtd2VpZ2h0OiA0 +MDA7IGxldHRlci1zcGFjaW5nOiBub3JtYWw7IHRleHQtYWxpZ246IHN0YXJ0OyB0ZXh0LWluZGVu +dDogMHB4OyB0ZXh0LXRyYW5zZm9ybTogbm9uZTsgd2hpdGUtc3BhY2U6IG5vcm1hbDsgd29yZC1z +cGFjaW5nOiAwcHg7IHRleHQtZGVjb3JhdGlvbi1zdHlsZTogaW5pdGlhbDsgdGV4dC1kZWNvcmF0 +aW9uLWNvbG9yOiBpbml0aWFsOyI+PGxpICBjaWQ9Im4yOCIgY2xhc3M9Im1kLWxpc3QtaXRlbSIg +bWR0eXBlPSJsaXN0X2l0ZW0iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46 +IDBweDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHAgIGNpZD0ibjI5IiBjbGFzcz0ibWQtZW5kLWJs +b2NrIG1kLXAiIG1kdHlwZT0icGFyYWdyYXBoIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJv +eDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IG1hcmdpbjogMHB4IDBweCAwLjVyZW07IHdoaXRlLXNw +YWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHNwYW4gIGNsYXNzPSJtZC1wbGFp +biIgbWQtaW5saW5lPSJwbGFpbiIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij7lrozm +iJDljZXmja7mn6Xor6LmtYvor5Xlj4rnvLrpmbfkv67lpI08L3NwYW4+PC9wPjwvbGk+PGxpICBj +aWQ9Im4zMCIgY2xhc3M9Im1kLWxpc3QtaXRlbSBtZC1mb2N1cy1jb250YWluZXIiIG1kdHlwZT0i +bGlzdF9pdGVtIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBv +c2l0aW9uOiByZWxhdGl2ZTsiPjxwICBjaWQ9Im4zMSIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1w +IG1kLWZvY3VzIiBtZHR5cGU9InBhcmFncmFwaCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1i +b3g7IGxpbmUtaGVpZ2h0OiBpbmhlcml0OyBtYXJnaW46IDBweCAwcHggMC41cmVtOyB3aGl0ZS1z +cGFjZTogcHJlLXdyYXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxzcGFuICBjbGFzcz0ibWQtcGxh +aW4gbWQtZXhwYW5kIiBtZC1pbmxpbmU9InBsYWluIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVy +LWJveDsiPuWujOaIkOWFpeW6k+a1geeoi+ais+eQhuWPiuaJueasoeWFs+iBlOmAu+i+keais+eQ +hjwvc3Bhbj48L3A+PC9saT48bGkgIGNpZD0ibjMyIiBjbGFzcz0ibWQtbGlzdC1pdGVtIiBtZHR5 +cGU9Imxpc3RfaXRlbSIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4 +OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48cCAgY2lkPSJuMzMiIGNsYXNzPSJtZC1lbmQtYmxvY2sg +bWQtcCIgbWR0eXBlPSJwYXJhZ3JhcGgiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBs +aW5lLWhlaWdodDogaW5oZXJpdDsgbWFyZ2luOiAwcHggMHB4IDAuNXJlbTsgd2hpdGUtc3BhY2U6 +IHByZS13cmFwOyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48c3BhbiAgY2xhc3M9Im1kLXBsYWluIiBt +ZC1pbmxpbmU9InBsYWluIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPuWujOaIkOW6 +k+WtmOeuoeeQhumcgOaxguivhOWuoeS4juaKgOacr+aWueahiOiuvuiuoTwvc3Bhbj48L3A+PC9s +aT48bGkgIGNpZD0ibjM0IiBjbGFzcz0ibWQtbGlzdC1pdGVtIiBtZHR5cGU9Imxpc3RfaXRlbSIg +c3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBwb3NpdGlvbjogcmVs +YXRpdmU7Ij48cCAgY2lkPSJuMzUiIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCIgbWR0eXBlPSJw +YXJhZ3JhcGgiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5o +ZXJpdDsgbWFyZ2luOiAwcHggMHB4IDAuNXJlbTsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyBwb3Np +dGlvbjogcmVsYXRpdmU7Ij48c3BhbiAgY2xhc3M9Im1kLXBsYWluIiBtZC1pbmxpbmU9InBsYWlu +IiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPui+k+WHukFJ6K+05piO5paH5qGj44CB +6ZyA5rGC5Yqf6IO95paH5qGj562J6YWN5aWX5paH5qGjPC9zcGFuPjwvcD48L2xpPjwvdWw+PHAg +IGNpZD0ibjM2IiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLXAiIG1kdHlwZT0icGFyYWdyYXBoIiBz +dHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IG1hcmdp +bjogMC44ZW0gMHB4OyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsg +Y29sb3I6IHJnYig1MSwgNTEsIDUxKTsgZm9udC1mYW1pbHk6ICdPcGVuIFNhbnMnLCAnQ2xlYXIg +U2FucycsICdIZWx2ZXRpY2EgTmV1ZScsIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7IGZv +bnQtc2l6ZTogMTZweDsgZm9udC1zdHlsZTogbm9ybWFsOyBmb250LXZhcmlhbnQtbGlnYXR1cmVz +OiBub3JtYWw7IGZvbnQtdmFyaWFudC1jYXBzOiBub3JtYWw7IGZvbnQtd2VpZ2h0OiA0MDA7IGxl +dHRlci1zcGFjaW5nOiBub3JtYWw7IHRleHQtYWxpZ246IHN0YXJ0OyB0ZXh0LWluZGVudDogMHB4 +OyB0ZXh0LXRyYW5zZm9ybTogbm9uZTsgd29yZC1zcGFjaW5nOiAwcHg7IHRleHQtZGVjb3JhdGlv +bi1zdHlsZTogaW5pdGlhbDsgdGV4dC1kZWNvcmF0aW9uLWNvbG9yOiBpbml0aWFsOyI+PHNwYW4g +IGNsYXNzPSJtZC1wbGFpbiIgbWQtaW5saW5lPSJwbGFpbiIgc3R5bGU9ImJveC1zaXppbmc6IGJv +cmRlci1ib3g7IGZvbnQtd2VpZ2h0OiBib2xkOyI+5a2Y5Zyo6Zeu6aKY77yaPC9zcGFuPjxzcGFu +ICBjbGFzcz0ibWQtcGxhaW4gbWQtZXhwYW5kIiBtZC1pbmxpbmU9InBsYWluIiBzdHlsZT0iYm94 +LXNpemluZzogYm9yZGVyLWJveDsiPiDml6A8L3NwYW4+PC9wPjxkaXYgPjwvZGl2PjxwICBjbGFz +cz0ibWQtZW5kLWJsb2NrIG1kLXAgbWQtZm9jdXMiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXIt +Ym94OyBsaW5lLWhlaWdodDogaW5oZXJpdDsgbWFyZ2luOiAxMnB4IDBweDsgd2hpdGUtc3BhY2U6 +IHByZS13cmFwOyBwb3NpdGlvbjogcmVsYXRpdmU7IGNvbG9yOiByZ2IoNTEsIDUxLCA1MSk7IGZv +bnQtZmFtaWx5OiAnT3BlbiBTYW5zJywgJ0NsZWFyIFNhbnMnLCAnSGVsdmV0aWNhIE5ldWUnLCBI +ZWx2ZXRpY2EsIEFyaWFsLCAnU2Vnb2UgVUkgRW1vamknLCBzYW5zLXNlcmlmOyBmb250LXNpemU6 +IDE2cHg7IGZvbnQtc3R5bGU6IG5vcm1hbDsgZm9udC12YXJpYW50LWxpZ2F0dXJlczogbm9ybWFs +OyBmb250LXZhcmlhbnQtY2Fwczogbm9ybWFsOyBmb250LXdlaWdodDogNDAwOyBsZXR0ZXItc3Bh +Y2luZzogbm9ybWFsOyB0ZXh0LWFsaWduOiBzdGFydDsgdGV4dC1pbmRlbnQ6IDBweDsgdGV4dC10 +cmFuc2Zvcm06IG5vbmU7IHdvcmQtc3BhY2luZzogMHB4OyB0ZXh0LWRlY29yYXRpb24tdGhpY2tu +ZXNzOiBpbml0aWFsOyB0ZXh0LWRlY29yYXRpb24tc3R5bGU6IGluaXRpYWw7IHRleHQtZGVjb3Jh +dGlvbi1jb2xvcjogaW5pdGlhbDsiPjxiciA+PC9wPjxkaXYgIHN0eWxlPSJjbGVhcjogYm90aDsg +Zm9udC1mYW1pbHk6IFRhaG9tYSwgQXJpYWwsIFNUSGVpdGlTQy1MaWdodCwgU2ltU3VuOyI+PHNw +YW4gPjxiciA+PC9zcGFuPjwvZGl2PjxkaXYgIHN0eWxlPSJjbGVhcjogYm90aDsiPjxkaXYgIGNs +YXNzPSIgX19hbGl5dW5fbm9kZV9oYXNfY29sb3IiIHN0eWxlPSJtYXJnaW46IDBweDsgcGFkZGlu +ZzogMHB4OyBib3JkZXI6IDBweDsgb3V0bGluZTogMHB4OyBjb2xvcjogcmdiKDAsIDAsIDApOyBm +b250LWZhbWlseTogVGFob21hLCBBcmlhbCwgU1RIZWl0aSwgU2ltU3VuOyBmb250LXNpemU6IDE0 +cHg7IGZvbnQtc3R5bGU6IG5vcm1hbDsgZm9udC12YXJpYW50LWxpZ2F0dXJlczogbm9ybWFsOyBm +b250LXZhcmlhbnQtY2Fwczogbm9ybWFsOyBmb250LXdlaWdodDogNDAwOyB0ZXh0LWFsaWduOiBz +dGFydDsgdGV4dC1pbmRlbnQ6IDBweDsgdGV4dC10cmFuc2Zvcm06IG5vbmU7IHRleHQtZGVjb3Jh +dGlvbi10aGlja25lc3M6IGluaXRpYWw7IHRleHQtZGVjb3JhdGlvbi1zdHlsZTogaW5pdGlhbDsg +dGV4dC1kZWNvcmF0aW9uLWNvbG9yOiBpbml0aWFsOyBjbGVhcjogYm90aDsiPjxzcGFuICBjbGFz +cz0iIF9fYWxpeXVuX25vZGVfaGFzX2NvbG9yIiBzdHlsZT0ibWFyZ2luOiAwcHg7IHBhZGRpbmc6 +IDBweDsgYm9yZGVyOiAwcHg7IG91dGxpbmU6IDBweDsgZm9udC1mYW1pbHk6ICdNaWNyb3NvZnQg +WWFoZWknOyBmb250LXNpemU6IDEzcHg7IGNvbG9yOiByZ2IoMTkxLCAxOTEsIDE5MSk7Ij5CZXN0 +IHJlZ2FyZHMsPC9zcGFuPjwvZGl2PjxkaXYgIGNsYXNzPSIgX19hbGl5dW5fbm9kZV9oYXNfY29s +b3IiIHN0eWxlPSJtYXJnaW46IDBweDsgcGFkZGluZzogMHB4OyBib3JkZXI6IDBweDsgb3V0bGlu +ZTogMHB4OyBjb2xvcjogcmdiKDAsIDAsIDApOyBmb250LWZhbWlseTogVGFob21hLCBBcmlhbCwg +U1RIZWl0aSwgU2ltU3VuOyBmb250LXNpemU6IDE0cHg7IGZvbnQtc3R5bGU6IG5vcm1hbDsgZm9u +dC12YXJpYW50LWxpZ2F0dXJlczogbm9ybWFsOyBmb250LXZhcmlhbnQtY2Fwczogbm9ybWFsOyBm +b250LXdlaWdodDogNDAwOyB0ZXh0LWFsaWduOiBzdGFydDsgdGV4dC1pbmRlbnQ6IDBweDsgdGV4 +dC10cmFuc2Zvcm06IG5vbmU7IHRleHQtZGVjb3JhdGlvbi10aGlja25lc3M6IGluaXRpYWw7IHRl +eHQtZGVjb3JhdGlvbi1zdHlsZTogaW5pdGlhbDsgdGV4dC1kZWNvcmF0aW9uLWNvbG9yOiBpbml0 +aWFsOyBjbGVhcjogYm90aDsiPjxzcGFuICBjbGFzcz0iIF9fYWxpeXVuX25vZGVfaGFzX2NvbG9y +IiBzdHlsZT0ibWFyZ2luOiAwcHg7IHBhZGRpbmc6IDBweDsgYm9yZGVyOiAwcHg7IG91dGxpbmU6 +IDBweDsgZm9udC1mYW1pbHk6ICdNaWNyb3NvZnQgWWFoZWknOyBmb250LXNpemU6IDEzcHg7IGNv +bG9yOiByZ2IoMTkxLCAxOTEsIDE5MSk7Ij7mnajovak8L3NwYW4+PC9kaXY+PGRpdiAgY2xhc3M9 +IiBfX2FsaXl1bl9ub2RlX2hhc19jb2xvciIgc3R5bGU9Im1hcmdpbjogMHB4OyBwYWRkaW5nOiAw +cHg7IGJvcmRlcjogMHB4OyBvdXRsaW5lOiAwcHg7IGNvbG9yOiByZ2IoMCwgMCwgMCk7IGZvbnQt +ZmFtaWx5OiBUYWhvbWEsIEFyaWFsLCBTVEhlaXRpLCBTaW1TdW47IGZvbnQtc2l6ZTogMTRweDsg +Zm9udC1zdHlsZTogbm9ybWFsOyBmb250LXZhcmlhbnQtbGlnYXR1cmVzOiBub3JtYWw7IGZvbnQt +dmFyaWFudC1jYXBzOiBub3JtYWw7IGZvbnQtd2VpZ2h0OiA0MDA7IHRleHQtYWxpZ246IHN0YXJ0 +OyB0ZXh0LWluZGVudDogMHB4OyB0ZXh0LXRyYW5zZm9ybTogbm9uZTsgdGV4dC1kZWNvcmF0aW9u +LXRoaWNrbmVzczogaW5pdGlhbDsgdGV4dC1kZWNvcmF0aW9uLXN0eWxlOiBpbml0aWFsOyB0ZXh0 +LWRlY29yYXRpb24tY29sb3I6IGluaXRpYWw7IGNsZWFyOiBib3RoOyI+PGltZyAgZGF0YS1hbGlt +YWlsLWltZy1wcm9jZXNzZWQtc3FtLWVkaXRvcj0idHJ1ZSIgaGVpZ2h0PSI2OCIgc3JjPSJjaWQ6 +MzZkMGQ1OTAtMjBlNi00YzI2LWExYzgtOWFjNTY4M2VjOGU3IiB3aWR0aD0iMzAwIiBzdHlsZT0i +bWFyZ2luOiAwcHg7IHBhZGRpbmc6IDBweDsgYm9yZGVyOiAwcHg7IG91dGxpbmU6IDBweDsgdmVy +dGljYWwtYWxpZ246IGJvdHRvbTsiPiZuYnNwOzwvZGl2PjxkaXYgIGNsYXNzPSIgX19hbGl5dW5f +bm9kZV9oYXNfY29sb3IiIHN0eWxlPSJtYXJnaW46IDBweDsgcGFkZGluZzogMHB4OyBib3JkZXI6 +IDBweDsgb3V0bGluZTogMHB4OyBjb2xvcjogcmdiKDAsIDAsIDApOyBmb250LWZhbWlseTogVGFo +b21hLCBBcmlhbCwgU1RIZWl0aSwgU2ltU3VuOyBmb250LXNpemU6IDE0cHg7IGZvbnQtc3R5bGU6 +IG5vcm1hbDsgZm9udC12YXJpYW50LWxpZ2F0dXJlczogbm9ybWFsOyBmb250LXZhcmlhbnQtY2Fw +czogbm9ybWFsOyBmb250LXdlaWdodDogNDAwOyB0ZXh0LWFsaWduOiBzdGFydDsgdGV4dC1pbmRl +bnQ6IDBweDsgdGV4dC10cmFuc2Zvcm06IG5vbmU7IHRleHQtZGVjb3JhdGlvbi10aGlja25lc3M6 +IGluaXRpYWw7IHRleHQtZGVjb3JhdGlvbi1zdHlsZTogaW5pdGlhbDsgdGV4dC1kZWNvcmF0aW9u +LWNvbG9yOiBpbml0aWFsOyBjbGVhcjogYm90aDsiPjxzcGFuICBjbGFzcz0iIF9fYWxpeXVuX25v +ZGVfaGFzX2NvbG9yIiBzdHlsZT0ibWFyZ2luOiAwcHg7IHBhZGRpbmc6IDBweDsgYm9yZGVyOiAw +cHg7IG91dGxpbmU6IDBweDsgZm9udC1mYW1pbHk6ICdNaWNyb3NvZnQgWWFoZWknOyBjb2xvcjog +cmdiKDE5MSwgMTkxLCAxOTEpOyI+5Zyw5Z2A77ya5Lit5Zu9wrfljZfkuqzova/ku7bosLfova/k +u7blpKfpgZMxMeWPt+iKseelnuWkp+WOpjNGPC9zcGFuPjwvZGl2PjxkaXYgIGNsYXNzPSIgX19h +bGl5dW5fbm9kZV9oYXNfY29sb3IiIHN0eWxlPSJtYXJnaW46IDBweDsgcGFkZGluZzogMHB4OyBi +b3JkZXI6IDBweDsgb3V0bGluZTogMHB4OyBjb2xvcjogcmdiKDAsIDAsIDApOyBmb250LWZhbWls +eTogVGFob21hLCBBcmlhbCwgU1RIZWl0aSwgU2ltU3VuOyBmb250LXNpemU6IDE0cHg7IGZvbnQt +c3R5bGU6IG5vcm1hbDsgZm9udC12YXJpYW50LWxpZ2F0dXJlczogbm9ybWFsOyBmb250LXZhcmlh +bnQtY2Fwczogbm9ybWFsOyBmb250LXdlaWdodDogNDAwOyB0ZXh0LWFsaWduOiBzdGFydDsgdGV4 +dC1pbmRlbnQ6IDBweDsgdGV4dC10cmFuc2Zvcm06IG5vbmU7IHRleHQtZGVjb3JhdGlvbi10aGlj +a25lc3M6IGluaXRpYWw7IHRleHQtZGVjb3JhdGlvbi1zdHlsZTogaW5pdGlhbDsgdGV4dC1kZWNv +cmF0aW9uLWNvbG9yOiBpbml0aWFsOyBjbGVhcjogYm90aDsiPjxzcGFuICBjbGFzcz0iIF9fYWxp +eXVuX25vZGVfaGFzX2NvbG9yIiBzdHlsZT0ibWFyZ2luOiAwcHg7IHBhZGRpbmc6IDBweDsgYm9y +ZGVyOiAwcHg7IG91dGxpbmU6IDBweDsgZm9udC1mYW1pbHk6ICdNaWNyb3NvZnQgWWFoZWknOyBj +b2xvcjogcmdiKDE5MSwgMTkxLCAxOTEpOyI+5omL5py677yaMTg3MjYxMjg0ODk8L3NwYW4+PC9k +aXY+PGRpdiAgY2xhc3M9IiBfX2FsaXl1bl9ub2RlX2hhc19jb2xvciIgc3R5bGU9Im1hcmdpbjog +MHB4OyBwYWRkaW5nOiAwcHg7IGJvcmRlcjogMHB4OyBvdXRsaW5lOiAwcHg7IGNvbG9yOiByZ2Io +MCwgMCwgMCk7IGZvbnQtZmFtaWx5OiBUYWhvbWEsIEFyaWFsLCBTVEhlaXRpLCBTaW1TdW47IGZv +bnQtc2l6ZTogMTRweDsgZm9udC1zdHlsZTogbm9ybWFsOyBmb250LXZhcmlhbnQtbGlnYXR1cmVz +OiBub3JtYWw7IGZvbnQtdmFyaWFudC1jYXBzOiBub3JtYWw7IGZvbnQtd2VpZ2h0OiA0MDA7IHRl +eHQtYWxpZ246IHN0YXJ0OyB0ZXh0LWluZGVudDogMHB4OyB0ZXh0LXRyYW5zZm9ybTogbm9uZTsg +dGV4dC1kZWNvcmF0aW9uLXRoaWNrbmVzczogaW5pdGlhbDsgdGV4dC1kZWNvcmF0aW9uLXN0eWxl +OiBpbml0aWFsOyB0ZXh0LWRlY29yYXRpb24tY29sb3I6IGluaXRpYWw7IGNsZWFyOiBib3RoOyI+ +PHNwYW4gIGNsYXNzPSIgX19hbGl5dW5fbm9kZV9oYXNfY29sb3IiIHN0eWxlPSJtYXJnaW46IDBw +eDsgcGFkZGluZzogMHB4OyBib3JkZXI6IDBweDsgb3V0bGluZTogMHB4OyBmb250LWZhbWlseTog +J01pY3Jvc29mdCBZYWhlaSc7IGNvbG9yOiByZ2IoMTkxLCAxOTEsIDE5MSk7Ij7pgq7nrrHvvJp5 +YW5neHVhbkB3aXRzb2Z0LmNuPC9zcGFuPjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvYm9keT48 +L2h0bWw+PC9kaXY+ + +--=_mailmaster-6a18e4a4_0_7a5a_=-- + +--=_mailmaster-6a18e4a4_0_767d_= +Content-Type: application/octet-stream +Content-Transfer-Encoding: base64 +Content-ID: <36d0d590-20e6-4c26-a1c8-9ac5683ec8e7> +Content-Disposition: inline; + filename="=?utf-8?B?57u05ouT56eR5oqALemCruS7tuetvuWQjWxvZ28ucG5n?=" + +iVBORw0KGgoAAAANSUhEUgAAASwAAABECAYAAAA7rQj2AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJ +bWFnZVJlYWR5ccllPAAAA4RpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdp +bj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6 +eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTQ1IDc5LjE2 +MzQ5OSwgMjAxOC8wOC8xMy0xNjo0MDoyMiAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJo +dHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlw +dGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEu +MC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVz +b3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1N +Ok9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDplYjhjYzQwMy1lNzZjLTQ5NDgtODFmOC1kNDIy +MmRkMTdhYjgiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NkVENzExMzg1MzBEMTFFQTg4QjNF +NEJFMUQyRjc1RkIiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NkVENzExMzc1MzBEMTFFQTg4 +QjNFNEJFMUQyRjc1RkIiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTkg +KFdpbmRvd3MpIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6 +ZmNkNTdlM2UtZThjYS05ZjQ2LWEzZTUtMWJlYmE2NjA5Y2FmIiBzdFJlZjpkb2N1bWVudElEPSJh +ZG9iZTpkb2NpZDpwaG90b3Nob3A6MzZkNmNjNTUtNTY3Yi01MTQ2LWEwYWYtMzBlMzEwMTMxNDFk +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 + +--=_mailmaster-6a18e4a4_0_767d_=-- diff --git a/media/inbound/2026-04-17_1707_G5开发周报_2026-04-13_--_2026-04-17---a15b3d7f-2cae-40a1-9d65-0f03c823f35d.eml b/media/inbound/2026-04-17_1707_G5开发周报_2026-04-13_--_2026-04-17---a15b3d7f-2cae-40a1-9d65-0f03c823f35d.eml new file mode 100644 index 0000000..e6aed3e --- /dev/null +++ b/media/inbound/2026-04-17_1707_G5开发周报_2026-04-13_--_2026-04-17---a15b3d7f-2cae-40a1-9d65-0f03c823f35d.eml @@ -0,0 +1,536 @@ +Date: Fri, 17 Apr 2026 17:07:00 +0800 +From: =?utf-8?B?5p2o6L2p?= +To: =?utf-8?B?5YiY5by6?= +Cc: =?utf-8?B?5ZC0552/5Lic?= , =?utf-8?B?6ZmI5piO?= + , =?utf-8?B?5pu+6I6J?= +Message-ID: <6f5f5097-3c47-4d2e-bed8-db3387ffe5bb.yangxuan@witsoft.cn> +In-Reply-To: <1b9956c8-581a-410f-9464-1150b26151c2.yangxuan@witsoft.cn> +References: <1b9956c8-581a-410f-9464-1150b26151c2.yangxuan@witsoft.cn> +Subject: =?utf-8?B?RzXlvIDlj5HlkajmiqXjgJAyMDI2LTA0LTEzIC0tIDIwMjYtMDQt?= + =?utf-8?B?MTfjgJE=?= +MIME-Version: 1.0 +Content-Type: multipart/related; boundary="=_mailmaster-6a18e4a4_0_767d_=" + +--=_mailmaster-6a18e4a4_0_767d_= +Content-Type: multipart/alternative; boundary="=_mailmaster-6a18e4a4_0_7a5a_=" + +--=_mailmaster-6a18e4a4_0_7a5a_= +Content-Type: text/plain; charset="UTF-8" +Content-Transfer-Encoding: base64 + +6aG555uu77yaIOe7tOS6keaZuumAoEc177yI5bqT5a2Y566h55CG77yJCuaXpeacnwrkuLvopoHl +t6XkvZwK5ZGo5LiA77yIMDQuMTPvvIkKMS4g5Y2V5o2u5p+l6K+i57y66Zm35L+u5aSNCjIuIOW6 +k+WtmOWOhuWPsumXrumimOS/ruWkjQozLiDmlrDlop7lip/og73ngrnlvIDlj5HovazmtYsK5ZGo +5LqM77yIMDQuMTTvvIkKMS4g5Y2V5o2u5p+l6K+i5rWL6K+V5a6M5oiQCjIuIOWFpeW6k+a1geeo +i+ais+eQhgozLiDlh7rlhaXlupPljZXmja7lhbPogZTmibnmrKHlj7fpgLvovpEK5ZGo5LiJ77yI +MDQuMTXvvIkKMS4g5Y2V5o2u5p+l6K+i5rWL6K+V5a6M5oiQCjIuIOWFpeW6k+a1geeoi+ais+eQ +hgozLiDlvIDlj5HmlrnmoYgK5ZGo5Zub77yIMDQuMTbvvIkKMS4g5bqT5a2Y566h55CG6ZyA5rGC +6K+E5a6hCjIuIOW3peaXtuivhOS8sAozLiBBSeWIhuaekOmcgOaxggrlkajkupTvvIgwNC4xN++8 +iQoxLiDlvIDlj5HmlrnmoYjorr7orqEKMi4gQUnor7TmmI7mlofmoaMKMy4g6ZyA5rGC5Yqf6IO9 +5paH5qGjCjQuIOWKn+iDveeCueaVsOaNruWkhOeQhuWIhuaekOaWh+ahowrmnKzlkajph43ngrnm +iJDmnpzvvJoKCiAqIArlrozmiJDljZXmja7mn6Xor6LmtYvor5Xlj4rnvLrpmbfkv67lpI0KCiAq +IArlrozmiJDlhaXlupPmtYHnqIvmorPnkIblj4rmibnmrKHlhbPogZTpgLvovpHmorPnkIYKCiAq +IArlrozmiJDlupPlrZjnrqHnkIbpnIDmsYLor4TlrqHkuI7mioDmnK/mlrnmoYjorr7orqEKCiAq +IArovpPlh7pBSeivtOaYjuaWh+aho+OAgemcgOaxguWKn+iDveaWh+aho+etiemFjeWll+aWh+ah +owrlrZjlnKjpl67popjvvJog5pegCkJlc3QgcmVnYXJkcywK5p2o6L2pCuWcsOWdgO+8muS4reWb +vcK35Y2X5Lqs6L2v5Lu26LC36L2v5Lu25aSn6YGTMTHlj7foirHnpZ7lpKfljqYzRgrmiYvmnLrv +vJoxODcyNjEyODQ4OQrpgq7nrrHvvJp5YW5neHVhbkB3aXRzb2Z0LmNuCg== + +--=_mailmaster-6a18e4a4_0_7a5a_= +Content-Type: text/html; charset="UTF-8" +Content-Transfer-Encoding: base64 + +PGRpdiBjbGFzcz0iX19hbGl5dW5fZW1haWxfYm9keV9ibG9jayI+PGh0bWwgPjxoZWFkID48L2hl +YWQ+PGJvZHkgPjxkaXYgIHN0eWxlPSJmb250LWZhbWlseTogVGFob21hLCBBcmlhbCwgU1RIZWl0 +aVNDLUxpZ2h0LCBTaW1TdW4iPjxkaXYgIHN0eWxlPSJmb250LWZhbWlseTogVGFob21hLCBBcmlh +bCwgU1RIZWl0aVNDLUxpZ2h0LCBTaW1TdW47IGNsZWFyOiBib3RoOyI+PHAgIGNsYXNzPSJtZC1l +bmQtYmxvY2sgbWQtcCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGxpbmUtaGVpZ2h0 +OiBpbmhlcml0OyBtYXJnaW46IDEycHggMHB4OyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0 +aW9uOiByZWxhdGl2ZTsgY29sb3I6IHJnYig1MSwgNTEsIDUxKTsgZm9udC1mYW1pbHk6ICdPcGVu +IFNhbnMnLCAnQ2xlYXIgU2FucycsICdIZWx2ZXRpY2EgTmV1ZScsIEhlbHZldGljYSwgQXJpYWws +ICdTZWdvZSBVSSBFbW9qaScsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTZweDsgZm9udC1zdHls +ZTogbm9ybWFsOyBmb250LXZhcmlhbnQtbGlnYXR1cmVzOiBub3JtYWw7IGZvbnQtdmFyaWFudC1j +YXBzOiBub3JtYWw7IGZvbnQtd2VpZ2h0OiA0MDA7IGxldHRlci1zcGFjaW5nOiBub3JtYWw7IHRl +eHQtYWxpZ246IHN0YXJ0OyB0ZXh0LWluZGVudDogMHB4OyB0ZXh0LXRyYW5zZm9ybTogbm9uZTsg +d29yZC1zcGFjaW5nOiAwcHg7IHRleHQtZGVjb3JhdGlvbi10aGlja25lc3M6IGluaXRpYWw7IHRl +eHQtZGVjb3JhdGlvbi1zdHlsZTogaW5pdGlhbDsgdGV4dC1kZWNvcmF0aW9uLWNvbG9yOiBpbml0 +aWFsOyI+PC9wPjxwICBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLXAgbWQtZm9jdXMiIHN0eWxlPSJi +b3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5oZXJpdDsgbWFyZ2luOiAxMnB4 +IDBweDsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyBwb3NpdGlvbjogcmVsYXRpdmU7IGNvbG9yOiBy +Z2IoNTEsIDUxLCA1MSk7IGZvbnQtZmFtaWx5OiAnT3BlbiBTYW5zJywgJ0NsZWFyIFNhbnMnLCAn +SGVsdmV0aWNhIE5ldWUnLCBIZWx2ZXRpY2EsIEFyaWFsLCAnU2Vnb2UgVUkgRW1vamknLCBzYW5z +LXNlcmlmOyBmb250LXNpemU6IDE2cHg7IGZvbnQtc3R5bGU6IG5vcm1hbDsgZm9udC12YXJpYW50 +LWxpZ2F0dXJlczogbm9ybWFsOyBmb250LXZhcmlhbnQtY2Fwczogbm9ybWFsOyBmb250LXdlaWdo +dDogNDAwOyBsZXR0ZXItc3BhY2luZzogbm9ybWFsOyB0ZXh0LWFsaWduOiBzdGFydDsgdGV4dC1p +bmRlbnQ6IDBweDsgdGV4dC10cmFuc2Zvcm06IG5vbmU7IHdvcmQtc3BhY2luZzogMHB4OyB0ZXh0 +LWRlY29yYXRpb24tdGhpY2tuZXNzOiBpbml0aWFsOyB0ZXh0LWRlY29yYXRpb24tc3R5bGU6IGlu +aXRpYWw7IHRleHQtZGVjb3JhdGlvbi1jb2xvcjogaW5pdGlhbDsiPjwvcD48cCAgY2lkPSJuNSIg +Y2xhc3M9Im1kLWVuZC1ibG9jayBtZC1wIiBtZHR5cGU9InBhcmFncmFwaCIgc3R5bGU9ImJveC1z +aXppbmc6IGJvcmRlci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhlcml0OyBtYXJnaW46IDAuOGVtIDBw +eDsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyBwb3NpdGlvbjogcmVsYXRpdmU7IGNvbG9yOiByZ2Io +NTEsIDUxLCA1MSk7IGZvbnQtZmFtaWx5OiAnT3BlbiBTYW5zJywgJ0NsZWFyIFNhbnMnLCAnSGVs +dmV0aWNhIE5ldWUnLCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDE2 +cHg7IGZvbnQtc3R5bGU6IG5vcm1hbDsgZm9udC12YXJpYW50LWxpZ2F0dXJlczogbm9ybWFsOyBm +b250LXZhcmlhbnQtY2Fwczogbm9ybWFsOyBmb250LXdlaWdodDogNDAwOyBsZXR0ZXItc3BhY2lu +Zzogbm9ybWFsOyB0ZXh0LWFsaWduOiBzdGFydDsgdGV4dC1pbmRlbnQ6IDBweDsgdGV4dC10cmFu +c2Zvcm06IG5vbmU7IHdvcmQtc3BhY2luZzogMHB4OyB0ZXh0LWRlY29yYXRpb24tc3R5bGU6IGlu +aXRpYWw7IHRleHQtZGVjb3JhdGlvbi1jb2xvcjogaW5pdGlhbDsiPjxzcGFuICBjbGFzcz0ibWQt +cGxhaW4iIG1kLWlubGluZT0icGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBm +b250LXdlaWdodDogYm9sZDsiPumhueebru+8mjwvc3Bhbj48c3BhbiAgY2xhc3M9Im1kLXBsYWlu +IiBtZC1pbmxpbmU9InBsYWluIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPiDnu7Tk +upHmmbrpgKBHNe+8iOW6k+WtmOeuoeeQhu+8iTwvc3Bhbj48L3A+PGRpdiA+PGZpZ3VyZSAgY2lk +PSJuNiIgY2xhc3M9Im1kLXRhYmxlLWZpZyIgbWR0eXBlPSJ0YWJsZSIgc3R5bGU9ImJveC1zaXpp +bmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMS4yZW0gMHB4OyBvdmVyZmxvdy14OiBhdXRvOyBwYWRk +aW5nOiAwcHg7IGNvbG9yOiByZ2IoNTEsIDUxLCA1MSk7IGZvbnQtZmFtaWx5OiAnT3BlbiBTYW5z +JywgJ0NsZWFyIFNhbnMnLCAnSGVsdmV0aWNhIE5ldWUnLCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5z +LXNlcmlmOyBmb250LXNpemU6IDE2cHg7IGZvbnQtc3R5bGU6IG5vcm1hbDsgZm9udC12YXJpYW50 +LWxpZ2F0dXJlczogbm9ybWFsOyBmb250LXZhcmlhbnQtY2Fwczogbm9ybWFsOyBmb250LXdlaWdo +dDogNDAwOyBsZXR0ZXItc3BhY2luZzogbm9ybWFsOyB0ZXh0LWFsaWduOiBzdGFydDsgdGV4dC1p +bmRlbnQ6IDBweDsgdGV4dC10cmFuc2Zvcm06IG5vbmU7IHdoaXRlLXNwYWNlOiBub3JtYWw7IHdv +cmQtc3BhY2luZzogMHB4OyB0ZXh0LWRlY29yYXRpb24tc3R5bGU6IGluaXRpYWw7IHRleHQtZGVj +b3JhdGlvbi1jb2xvcjogaW5pdGlhbDsiPjx0YWJsZSAgY2xhc3M9Im1kLXRhYmxlIiBzdHlsZT0i +Ym94LXNpemluZzogYm9yZGVyLWJveDsgYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTsgYm9yZGVy +LXNwYWNpbmc6IDBweDsgd2lkdGg6IDk2NHB4OyBvdmVyZmxvdzogYXV0bzsgYnJlYWstaW5zaWRl +OiBhdXRvOyB0ZXh0LWFsaWduOiBsZWZ0OyBtYXJnaW46IDBweDsgcGFkZGluZzogMHB4OyB3b3Jk +LWJyZWFrOiBpbml0aWFsOyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7Ij48dGhlYWQgIHN0eWxlPSJi +b3gtc2l6aW5nOiBib3JkZXItYm94OyBkaXNwbGF5OiB0YWJsZS1oZWFkZXItZ3JvdXA7IGJhY2tn +cm91bmQtY29sb3I6IHJnYigyNDgsIDI0OCwgMjQ4KTsiPjx0ciAgY2lkPSJuNyIgY2xhc3M9Im1k +LWVuZC1ibG9jayIgbWR0eXBlPSJ0YWJsZV9yb3ciIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXIt +Ym94OyBicmVhay1pbnNpZGU6IGF2b2lkOyBicmVhay1hZnRlcjogYXV0bzsgYm9yZGVyLXRvcDog +MXB4IHNvbGlkIHJnYigyMjMsIDIyNiwgMjI5KTsgbWFyZ2luOiAwcHg7IHBhZGRpbmc6IDBweDsi +Pjx0ZCAgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IHBhZGRpbmc6IDZweCAxM3B4OyBi +b3JkZXItd2lkdGg6IDFweCAxcHggMHB4OyBib3JkZXItdG9wLXN0eWxlOiBzb2xpZDsgYm9yZGVy +LXJpZ2h0LXN0eWxlOiBzb2xpZDsgYm9yZGVyLWxlZnQtc3R5bGU6IHNvbGlkOyBib3JkZXItdG9w +LWNvbG9yOiByZ2IoMjIzLCAyMjYsIDIyOSk7IGJvcmRlci1yaWdodC1jb2xvcjogcmdiKDIyMywg +MjI2LCAyMjkpOyBib3JkZXItbGVmdC1jb2xvcjogcmdiKDIyMywgMjI2LCAyMjkpOyBib3JkZXIt +aW1hZ2U6IGluaXRpYWw7IGJvcmRlci1ib3R0b20tc3R5bGU6IGluaXRpYWw7IGJvcmRlci1ib3R0 +b20tY29sb3I6IGluaXRpYWw7IG1hcmdpbjogMHB4OyI+PGRpdiAgc3R5bGU9ImZvbnQtd2VpZ2h0 +OiA3MDA7IHRleHQtYWxpZ246IGNlbnRlcjsiPjxzcGFuICBjbGFzcz0ibWQtcGxhaW4iIG1kLWlu +bGluZT0icGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBkaXNwbGF5OiBpbmxp +bmUtYmxvY2s7IG1pbi13aWR0aDogMWNoOyB3aWR0aDogMzE4cHg7IG1pbi1oZWlnaHQ6IDEwcHg7 +Ij7ml6XmnJ88L3NwYW4+PC9kaXY+PC90ZD48dGQgIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXIt +Ym94OyBwYWRkaW5nOiA2cHggMTNweDsgYm9yZGVyLXdpZHRoOiAxcHggMXB4IDBweDsgYm9yZGVy +LXRvcC1zdHlsZTogc29saWQ7IGJvcmRlci1yaWdodC1zdHlsZTogc29saWQ7IGJvcmRlci1sZWZ0 +LXN0eWxlOiBzb2xpZDsgYm9yZGVyLXRvcC1jb2xvcjogcmdiKDIyMywgMjI2LCAyMjkpOyBib3Jk +ZXItcmlnaHQtY29sb3I6IHJnYigyMjMsIDIyNiwgMjI5KTsgYm9yZGVyLWxlZnQtY29sb3I6IHJn +YigyMjMsIDIyNiwgMjI5KTsgYm9yZGVyLWltYWdlOiBpbml0aWFsOyBib3JkZXItYm90dG9tLXN0 +eWxlOiBpbml0aWFsOyBib3JkZXItYm90dG9tLWNvbG9yOiBpbml0aWFsOyBtYXJnaW46IDBweDsi +PjxkaXYgIHN0eWxlPSJmb250LXdlaWdodDogNzAwOyB0ZXh0LWFsaWduOiBjZW50ZXI7Ij48c3Bh +biAgY2xhc3M9Im1kLXBsYWluIiBtZC1pbmxpbmU9InBsYWluIiBzdHlsZT0iYm94LXNpemluZzog +Ym9yZGVyLWJveDsgZGlzcGxheTogaW5saW5lLWJsb2NrOyBtaW4td2lkdGg6IDFjaDsgd2lkdGg6 +IDU5MnB4OyBtaW4taGVpZ2h0OiAxMHB4OyI+5Li76KaB5bel5L2cPC9zcGFuPjwvZGl2PjwvdGQ+ +PC90cj48L3RoZWFkPjx0Ym9keSAgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij48dHIg +IGNpZD0ibjEwIiBjbGFzcz0ibWQtZW5kLWJsb2NrIiBtZHR5cGU9InRhYmxlX3JvdyIgc3R5bGU9 +ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGJyZWFrLWluc2lkZTogYXZvaWQ7IGJyZWFrLWFmdGVy +OiBhdXRvOyBib3JkZXItdG9wOiAxcHggc29saWQgcmdiKDIyMywgMjI2LCAyMjkpOyBtYXJnaW46 +IDBweDsgcGFkZGluZzogMHB4OyI+PHRkICBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsg +cGFkZGluZzogNnB4IDEzcHg7IGJvcmRlcjogMXB4IHNvbGlkIHJnYigyMjMsIDIyNiwgMjI5KTsg +bWFyZ2luOiAwcHg7Ij48c3BhbiAgY2xhc3M9Im1kLXBsYWluIiBtZC1pbmxpbmU9InBsYWluIiBz +dHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgZGlzcGxheTogaW5saW5lLWJsb2NrOyBtaW4t +d2lkdGg6IDFjaDsgd2lkdGg6IDMxOHB4OyBtaW4taGVpZ2h0OiAxMHB4OyI+5ZGo5LiA77yIMDQu +MTPvvIk8L3NwYW4+PC90ZD48dGQgIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBwYWRk +aW5nOiA2cHggMTNweDsgYm9yZGVyOiAxcHggc29saWQgcmdiKDIyMywgMjI2LCAyMjkpOyBtYXJn +aW46IDBweDsiPjxkaXYgIHN0eWxlPSJjbGVhcjogYm90aDsiPjxzcGFuICBjaWQ9Im4xMiIgY2xh +c3M9InRkLXNwYW4iIG1kdHlwZT0idGFibGVfY2VsbCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRl +ci1ib3g7IGRpc3BsYXk6IGlubGluZS1ibG9jazsgbWluLXdpZHRoOiAxY2g7IHdpZHRoOiA1OTJw +eDsgbWluLWhlaWdodDogMTBweDsiPjxzcGFuICBjbGFzcz0ibWQtcGxhaW4iIG1kLWlubGluZT0i +cGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+MS4g5Y2V5o2u5p+l6K+i57y6 +6Zm35L+u5aSNPC9zcGFuPjwvc3Bhbj48L2Rpdj48ZGl2ICBzdHlsZT0iY2xlYXI6IGJvdGg7Ij48 +c3BhbiAgY2lkPSJuMTIiIGNsYXNzPSJ0ZC1zcGFuIiBtZHR5cGU9InRhYmxlX2NlbGwiIHN0eWxl +PSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IG1pbi13aWR0 +aDogMWNoOyB3aWR0aDogNTkycHg7IG1pbi1oZWlnaHQ6IDEwcHg7Ij48c3BhbiAgY2xhc3M9Im1k +LXBsYWluIiBtZC1pbmxpbmU9InBsYWluIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsi +PjIuIOW6k+WtmOWOhuWPsumXrumimOS/ruWkjTwvc3Bhbj48L3NwYW4+PC9kaXY+PGRpdiAgc3R5 +bGU9ImNsZWFyOiBib3RoOyI+PHNwYW4gIGNpZD0ibjEyIiBjbGFzcz0idGQtc3BhbiIgbWR0eXBl +PSJ0YWJsZV9jZWxsIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgZGlzcGxheTogaW5s +aW5lLWJsb2NrOyBtaW4td2lkdGg6IDFjaDsgd2lkdGg6IDU5MnB4OyBtaW4taGVpZ2h0OiAxMHB4 +OyI+PHNwYW4gIGNsYXNzPSJtZC1wbGFpbiIgbWQtaW5saW5lPSJwbGFpbiIgc3R5bGU9ImJveC1z +aXppbmc6IGJvcmRlci1ib3g7Ij4zLiDmlrDlop7lip/og73ngrnlvIDlj5HovazmtYs8L3NwYW4+ +PC9zcGFuPjwvZGl2PjwvdGQ+PC90cj48dHIgIGNpZD0ibjEzIiBjbGFzcz0ibWQtZW5kLWJsb2Nr +IiBtZHR5cGU9InRhYmxlX3JvdyIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGJyZWFr +LWluc2lkZTogYXZvaWQ7IGJyZWFrLWFmdGVyOiBhdXRvOyBib3JkZXItdG9wOiAxcHggc29saWQg +cmdiKDIyMywgMjI2LCAyMjkpOyBtYXJnaW46IDBweDsgcGFkZGluZzogMHB4OyBiYWNrZ3JvdW5k +LWNvbG9yOiByZ2IoMjQ4LCAyNDgsIDI0OCk7Ij48dGQgIHN0eWxlPSJib3gtc2l6aW5nOiBib3Jk +ZXItYm94OyBwYWRkaW5nOiA2cHggMTNweDsgYm9yZGVyOiAxcHggc29saWQgcmdiKDIyMywgMjI2 +LCAyMjkpOyBtYXJnaW46IDBweDsiPjxzcGFuICBjbGFzcz0ibWQtcGxhaW4iIG1kLWlubGluZT0i +cGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBkaXNwbGF5OiBpbmxpbmUtYmxv +Y2s7IG1pbi13aWR0aDogMWNoOyB3aWR0aDogMzE4cHg7IG1pbi1oZWlnaHQ6IDEwcHg7Ij7lkajk +uozvvIgwNC4xNO+8iTwvc3Bhbj48L3RkPjx0ZCAgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1i +b3g7IHBhZGRpbmc6IDZweCAxM3B4OyBib3JkZXI6IDFweCBzb2xpZCByZ2IoMjIzLCAyMjYsIDIy +OSk7IG1hcmdpbjogMHB4OyI+PGRpdiAgc3R5bGU9ImNsZWFyOiBib3RoOyI+PHNwYW4gIGNpZD0i +bjE1IiBjbGFzcz0idGQtc3BhbiIgbWR0eXBlPSJ0YWJsZV9jZWxsIiBzdHlsZT0iYm94LXNpemlu +ZzogYm9yZGVyLWJveDsgZGlzcGxheTogaW5saW5lLWJsb2NrOyBtaW4td2lkdGg6IDFjaDsgd2lk +dGg6IDU5MnB4OyBtaW4taGVpZ2h0OiAxMHB4OyI+PHNwYW4gIGNsYXNzPSJtZC1wbGFpbiIgbWQt +aW5saW5lPSJwbGFpbiIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij4xLiDljZXmja7m +n6Xor6LmtYvor5XlrozmiJA8L3NwYW4+PC9zcGFuPjwvZGl2PjxkaXYgIHN0eWxlPSJjbGVhcjog +Ym90aDsiPjxzcGFuICBjaWQ9Im4xNSIgY2xhc3M9InRkLXNwYW4iIG1kdHlwZT0idGFibGVfY2Vs +bCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGRpc3BsYXk6IGlubGluZS1ibG9jazsg +bWluLXdpZHRoOiAxY2g7IHdpZHRoOiA1OTJweDsgbWluLWhlaWdodDogMTBweDsiPjxzcGFuICBj +bGFzcz0ibWQtcGxhaW4iIG1kLWlubGluZT0icGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3Jk +ZXItYm94OyI+Mi4g5YWl5bqT5rWB56iL5qKz55CGPC9zcGFuPjwvc3Bhbj48L2Rpdj48ZGl2ICBz +dHlsZT0iY2xlYXI6IGJvdGg7Ij48c3BhbiAgY2lkPSJuMTUiIGNsYXNzPSJ0ZC1zcGFuIiBtZHR5 +cGU9InRhYmxlX2NlbGwiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBkaXNwbGF5OiBp +bmxpbmUtYmxvY2s7IG1pbi13aWR0aDogMWNoOyB3aWR0aDogNTkycHg7IG1pbi1oZWlnaHQ6IDEw +cHg7Ij48c3BhbiAgY2xhc3M9Im1kLXBsYWluIiBtZC1pbmxpbmU9InBsYWluIiBzdHlsZT0iYm94 +LXNpemluZzogYm9yZGVyLWJveDsiPjMuIOWHuuWFpeW6k+WNleaNruWFs+iBlOaJueasoeWPt+mA +u+i+kTwvc3Bhbj48L3NwYW4+PC9kaXY+PC90ZD48L3RyPjx0ciAgY2lkPSJuMTYiIGNsYXNzPSJt +ZC1lbmQtYmxvY2siIG1kdHlwZT0idGFibGVfcm93IiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVy +LWJveDsgYnJlYWstaW5zaWRlOiBhdm9pZDsgYnJlYWstYWZ0ZXI6IGF1dG87IGJvcmRlci10b3A6 +IDFweCBzb2xpZCByZ2IoMjIzLCAyMjYsIDIyOSk7IG1hcmdpbjogMHB4OyBwYWRkaW5nOiAwcHg7 +Ij48dGQgIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBwYWRkaW5nOiA2cHggMTNweDsg +Ym9yZGVyOiAxcHggc29saWQgcmdiKDIyMywgMjI2LCAyMjkpOyBtYXJnaW46IDBweDsiPjxzcGFu +ICBjbGFzcz0ibWQtcGxhaW4iIG1kLWlubGluZT0icGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBi +b3JkZXItYm94OyBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IG1pbi13aWR0aDogMWNoOyB3aWR0aDog +MzE4cHg7IG1pbi1oZWlnaHQ6IDEwcHg7Ij7lkajkuInvvIgwNC4xNe+8iTwvc3Bhbj48L3RkPjx0 +ZCAgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IHBhZGRpbmc6IDZweCAxM3B4OyBib3Jk +ZXI6IDFweCBzb2xpZCByZ2IoMjIzLCAyMjYsIDIyOSk7IG1hcmdpbjogMHB4OyI+PGRpdiAgc3R5 +bGU9ImNsZWFyOiBib3RoOyI+PHNwYW4gIGNpZD0ibjE4IiBjbGFzcz0idGQtc3BhbiIgbWR0eXBl +PSJ0YWJsZV9jZWxsIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgZGlzcGxheTogaW5s +aW5lLWJsb2NrOyBtaW4td2lkdGg6IDFjaDsgd2lkdGg6IDU5MnB4OyBtaW4taGVpZ2h0OiAxMHB4 +OyI+PHNwYW4gIGNsYXNzPSJtZC1wbGFpbiIgbWQtaW5saW5lPSJwbGFpbiIgc3R5bGU9ImJveC1z +aXppbmc6IGJvcmRlci1ib3g7Ij4xLiDljZXmja7mn6Xor6LmtYvor5XlrozmiJA8L3NwYW4+PC9z +cGFuPjwvZGl2PjxkaXYgIHN0eWxlPSJjbGVhcjogYm90aDsiPjxzcGFuICBjaWQ9Im4xOCIgY2xh +c3M9InRkLXNwYW4iIG1kdHlwZT0idGFibGVfY2VsbCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRl +ci1ib3g7IGRpc3BsYXk6IGlubGluZS1ibG9jazsgbWluLXdpZHRoOiAxY2g7IHdpZHRoOiA1OTJw +eDsgbWluLWhlaWdodDogMTBweDsiPjxzcGFuICBjbGFzcz0ibWQtcGxhaW4iIG1kLWlubGluZT0i +cGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+Mi4g5YWl5bqT5rWB56iL5qKz +55CGPC9zcGFuPjwvc3Bhbj48L2Rpdj48ZGl2ICBzdHlsZT0iY2xlYXI6IGJvdGg7Ij48c3BhbiAg +Y2lkPSJuMTgiIGNsYXNzPSJ0ZC1zcGFuIiBtZHR5cGU9InRhYmxlX2NlbGwiIHN0eWxlPSJib3gt +c2l6aW5nOiBib3JkZXItYm94OyBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IG1pbi13aWR0aDogMWNo +OyB3aWR0aDogNTkycHg7IG1pbi1oZWlnaHQ6IDEwcHg7Ij48c3BhbiAgY2xhc3M9Im1kLXBsYWlu +IiBtZC1pbmxpbmU9InBsYWluIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPjMuIOW8 +gOWPkeaWueahiDwvc3Bhbj48L3NwYW4+PC9kaXY+PC90ZD48L3RyPjx0ciAgY2lkPSJuMTkiIGNs +YXNzPSJtZC1lbmQtYmxvY2siIG1kdHlwZT0idGFibGVfcm93IiBzdHlsZT0iYm94LXNpemluZzog +Ym9yZGVyLWJveDsgYnJlYWstaW5zaWRlOiBhdm9pZDsgYnJlYWstYWZ0ZXI6IGF1dG87IGJvcmRl +ci10b3A6IDFweCBzb2xpZCByZ2IoMjIzLCAyMjYsIDIyOSk7IG1hcmdpbjogMHB4OyBwYWRkaW5n +OiAwcHg7IGJhY2tncm91bmQtY29sb3I6IHJnYigyNDgsIDI0OCwgMjQ4KTsiPjx0ZCAgc3R5bGU9 +ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IHBhZGRpbmc6IDZweCAxM3B4OyBib3JkZXI6IDFweCBz +b2xpZCByZ2IoMjIzLCAyMjYsIDIyOSk7IG1hcmdpbjogMHB4OyI+PHNwYW4gIGNsYXNzPSJtZC1w +bGFpbiIgbWQtaW5saW5lPSJwbGFpbiIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGRp +c3BsYXk6IGlubGluZS1ibG9jazsgbWluLXdpZHRoOiAxY2g7IHdpZHRoOiAzMThweDsgbWluLWhl +aWdodDogMTBweDsiPuWRqOWbm++8iDA0LjE277yJPC9zcGFuPjwvdGQ+PHRkICBzdHlsZT0iYm94 +LXNpemluZzogYm9yZGVyLWJveDsgcGFkZGluZzogNnB4IDEzcHg7IGJvcmRlcjogMXB4IHNvbGlk +IHJnYigyMjMsIDIyNiwgMjI5KTsgbWFyZ2luOiAwcHg7Ij48ZGl2ICBzdHlsZT0iY2xlYXI6IGJv +dGg7Ij48c3BhbiAgY2lkPSJuMjEiIGNsYXNzPSJ0ZC1zcGFuIiBtZHR5cGU9InRhYmxlX2NlbGwi +IHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IG1p +bi13aWR0aDogMWNoOyB3aWR0aDogNTkycHg7IG1pbi1oZWlnaHQ6IDEwcHg7Ij48c3BhbiAgY2xh +c3M9Im1kLXBsYWluIiBtZC1pbmxpbmU9InBsYWluIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVy +LWJveDsiPjEuIOW6k+WtmOeuoeeQhumcgOaxguivhOWuoTwvc3Bhbj48L3NwYW4+PC9kaXY+PGRp +diAgc3R5bGU9ImNsZWFyOiBib3RoOyI+PHNwYW4gIGNpZD0ibjIxIiBjbGFzcz0idGQtc3BhbiIg +bWR0eXBlPSJ0YWJsZV9jZWxsIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgZGlzcGxh +eTogaW5saW5lLWJsb2NrOyBtaW4td2lkdGg6IDFjaDsgd2lkdGg6IDU5MnB4OyBtaW4taGVpZ2h0 +OiAxMHB4OyI+PHNwYW4gIGNsYXNzPSJtZC1wbGFpbiIgbWQtaW5saW5lPSJwbGFpbiIgc3R5bGU9 +ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij4yLiDlt6Xml7bor4TkvLA8L3NwYW4+PC9zcGFuPjwv +ZGl2PjxkaXYgIHN0eWxlPSJjbGVhcjogYm90aDsiPjxzcGFuICBjaWQ9Im4yMSIgY2xhc3M9InRk +LXNwYW4iIG1kdHlwZT0idGFibGVfY2VsbCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7 +IGRpc3BsYXk6IGlubGluZS1ibG9jazsgbWluLXdpZHRoOiAxY2g7IHdpZHRoOiA1OTJweDsgbWlu +LWhlaWdodDogMTBweDsiPjxzcGFuICBjbGFzcz0ibWQtcGxhaW4iIG1kLWlubGluZT0icGxhaW4i +IHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+My4gQUnliIbmnpDpnIDmsYI8L3NwYW4+ +PC9zcGFuPjwvZGl2PjwvdGQ+PC90cj48dHIgIGNpZD0ibjIyIiBjbGFzcz0ibWQtZW5kLWJsb2Nr +IiBtZHR5cGU9InRhYmxlX3JvdyIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGJyZWFr +LWluc2lkZTogYXZvaWQ7IGJyZWFrLWFmdGVyOiBhdXRvOyBib3JkZXItdG9wOiAxcHggc29saWQg +cmdiKDIyMywgMjI2LCAyMjkpOyBtYXJnaW46IDBweDsgcGFkZGluZzogMHB4OyI+PHRkICBzdHls +ZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgcGFkZGluZzogNnB4IDEzcHg7IGJvcmRlcjogMXB4 +IHNvbGlkIHJnYigyMjMsIDIyNiwgMjI5KTsgbWFyZ2luOiAwcHg7Ij48c3BhbiAgY2xhc3M9Im1k +LXBsYWluIiBtZC1pbmxpbmU9InBsYWluIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsg +ZGlzcGxheTogaW5saW5lLWJsb2NrOyBtaW4td2lkdGg6IDFjaDsgd2lkdGg6IDMxOHB4OyBtaW4t +aGVpZ2h0OiAxMHB4OyI+5ZGo5LqU77yIMDQuMTfvvIk8L3NwYW4+PC90ZD48dGQgIHN0eWxlPSJi +b3gtc2l6aW5nOiBib3JkZXItYm94OyBwYWRkaW5nOiA2cHggMTNweDsgYm9yZGVyOiAxcHggc29s +aWQgcmdiKDIyMywgMjI2LCAyMjkpOyBtYXJnaW46IDBweDsiPjxkaXYgIHN0eWxlPSJjbGVhcjog +Ym90aDsiPjxzcGFuICBjaWQ9Im4yNCIgY2xhc3M9InRkLXNwYW4iIG1kdHlwZT0idGFibGVfY2Vs +bCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGRpc3BsYXk6IGlubGluZS1ibG9jazsg +bWluLXdpZHRoOiAxY2g7IHdpZHRoOiA1OTJweDsgbWluLWhlaWdodDogMTBweDsiPjxzcGFuICBj +bGFzcz0ibWQtcGxhaW4iIG1kLWlubGluZT0icGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3Jk +ZXItYm94OyI+MS4g5byA5Y+R5pa55qGI6K6+6K6hPC9zcGFuPjwvc3Bhbj48L2Rpdj48ZGl2ICBz +dHlsZT0iY2xlYXI6IGJvdGg7Ij48c3BhbiAgY2lkPSJuMjQiIGNsYXNzPSJ0ZC1zcGFuIiBtZHR5 +cGU9InRhYmxlX2NlbGwiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBkaXNwbGF5OiBp +bmxpbmUtYmxvY2s7IG1pbi13aWR0aDogMWNoOyB3aWR0aDogNTkycHg7IG1pbi1oZWlnaHQ6IDEw +cHg7Ij48c3BhbiAgY2xhc3M9Im1kLXBsYWluIiBtZC1pbmxpbmU9InBsYWluIiBzdHlsZT0iYm94 +LXNpemluZzogYm9yZGVyLWJveDsiPjIuIEFJ6K+05piO5paH5qGjPC9zcGFuPjwvc3Bhbj48L2Rp +dj48ZGl2ICBzdHlsZT0iY2xlYXI6IGJvdGg7Ij48c3BhbiAgY2lkPSJuMjQiIGNsYXNzPSJ0ZC1z +cGFuIiBtZHR5cGU9InRhYmxlX2NlbGwiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBk +aXNwbGF5OiBpbmxpbmUtYmxvY2s7IG1pbi13aWR0aDogMWNoOyB3aWR0aDogNTkycHg7IG1pbi1o +ZWlnaHQ6IDEwcHg7Ij48c3BhbiAgY2xhc3M9Im1kLXBsYWluIiBtZC1pbmxpbmU9InBsYWluIiBz +dHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPjMuIOmcgOaxguWKn+iDveaWh+ahozwvc3Bh +bj48L3NwYW4+PC9kaXY+PGRpdiAgc3R5bGU9ImNsZWFyOiBib3RoOyI+PHNwYW4gIGNpZD0ibjI0 +IiBjbGFzcz0idGQtc3BhbiIgbWR0eXBlPSJ0YWJsZV9jZWxsIiBzdHlsZT0iYm94LXNpemluZzog +Ym9yZGVyLWJveDsgZGlzcGxheTogaW5saW5lLWJsb2NrOyBtaW4td2lkdGg6IDFjaDsgd2lkdGg6 +IDU5MnB4OyBtaW4taGVpZ2h0OiAxMHB4OyI+PHNwYW4gIGNsYXNzPSJtZC1wbGFpbiIgbWQtaW5s +aW5lPSJwbGFpbiIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij40LiDlip/og73ngrnm +lbDmja7lpITnkIbliIbmnpDmlofmoaM8L3NwYW4+PC9zcGFuPjwvZGl2PjwvdGQ+PC90cj48L3Ri +b2R5PjwvdGFibGU+PC9maWd1cmU+PC9kaXY+PGRpdiAgY2lkPSJuMjUiIGNsYXNzPSJtZC1ociBt +ZC1lbmQtYmxvY2siIG1kdHlwZT0iaHIiIHRhYmluZGV4PSItMSIgc3R5bGU9ImJveC1zaXppbmc6 +IGJvcmRlci1ib3g7IGNvbG9yOiByZ2IoNTEsIDUxLCA1MSk7IGZvbnQtZmFtaWx5OiAnT3BlbiBT +YW5zJywgJ0NsZWFyIFNhbnMnLCAnSGVsdmV0aWNhIE5ldWUnLCBIZWx2ZXRpY2EsIEFyaWFsLCBz +YW5zLXNlcmlmOyBmb250LXNpemU6IDE2cHg7IGZvbnQtc3R5bGU6IG5vcm1hbDsgZm9udC12YXJp +YW50LWxpZ2F0dXJlczogbm9ybWFsOyBmb250LXZhcmlhbnQtY2Fwczogbm9ybWFsOyBmb250LXdl +aWdodDogNDAwOyBsZXR0ZXItc3BhY2luZzogbm9ybWFsOyB0ZXh0LWFsaWduOiBzdGFydDsgdGV4 +dC1pbmRlbnQ6IDBweDsgdGV4dC10cmFuc2Zvcm06IG5vbmU7IHdoaXRlLXNwYWNlOiBub3JtYWw7 +IHdvcmQtc3BhY2luZzogMHB4OyB0ZXh0LWRlY29yYXRpb24tc3R5bGU6IGluaXRpYWw7IHRleHQt +ZGVjb3JhdGlvbi1jb2xvcjogaW5pdGlhbDsiPjxociAgc3R5bGU9ImJveC1zaXppbmc6IGNvbnRl +bnQtYm94OyBoZWlnaHQ6IDJweDsgbWFyZ2luOiAxNnB4IDBweDsgYm9yZGVyOiAwcHggbm9uZTsg +cGFkZGluZzogMHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjMxLCAyMzEsIDIzMSk7IG92ZXJm +bG93OiBoaWRkZW47Ij48L2Rpdj48cCAgY2lkPSJuMjYiIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQt +cCIgbWR0eXBlPSJwYXJhZ3JhcGgiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5l +LWhlaWdodDogaW5oZXJpdDsgbWFyZ2luOiAwLjhlbSAwcHg7IHdoaXRlLXNwYWNlOiBwcmUtd3Jh +cDsgcG9zaXRpb246IHJlbGF0aXZlOyBjb2xvcjogcmdiKDUxLCA1MSwgNTEpOyBmb250LWZhbWls +eTogJ09wZW4gU2FucycsICdDbGVhciBTYW5zJywgJ0hlbHZldGljYSBOZXVlJywgSGVsdmV0aWNh +LCBBcmlhbCwgc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxNnB4OyBmb250LXN0eWxlOiBub3JtYWw7 +IGZvbnQtdmFyaWFudC1saWdhdHVyZXM6IG5vcm1hbDsgZm9udC12YXJpYW50LWNhcHM6IG5vcm1h +bDsgZm9udC13ZWlnaHQ6IDQwMDsgbGV0dGVyLXNwYWNpbmc6IG5vcm1hbDsgdGV4dC1hbGlnbjog +c3RhcnQ7IHRleHQtaW5kZW50OiAwcHg7IHRleHQtdHJhbnNmb3JtOiBub25lOyB3b3JkLXNwYWNp +bmc6IDBweDsgdGV4dC1kZWNvcmF0aW9uLXN0eWxlOiBpbml0aWFsOyB0ZXh0LWRlY29yYXRpb24t +Y29sb3I6IGluaXRpYWw7Ij48c3BhbiAgY2xhc3M9Im1kLXBsYWluIiBtZC1pbmxpbmU9InBsYWlu +IiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgZm9udC13ZWlnaHQ6IGJvbGQ7Ij7mnKzl +kajph43ngrnmiJDmnpzvvJo8L3NwYW4+PC9wPjx1bCAgY2lkPSJuMjciIGNsYXNzPSJ1bC1saXN0 +IiBkYXRhLW1hcms9Ii0iIG1kdHlwZT0ibGlzdCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1i +b3g7IG1hcmdpbjogMC44ZW0gMHB4OyBwYWRkaW5nLWxlZnQ6IDMwcHg7IHBvc2l0aW9uOiByZWxh +dGl2ZTsgY29sb3I6IHJnYig1MSwgNTEsIDUxKTsgZm9udC1mYW1pbHk6ICdPcGVuIFNhbnMnLCAn +Q2xlYXIgU2FucycsICdIZWx2ZXRpY2EgTmV1ZScsIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2Vy +aWY7IGZvbnQtc2l6ZTogMTZweDsgZm9udC1zdHlsZTogbm9ybWFsOyBmb250LXZhcmlhbnQtbGln +YXR1cmVzOiBub3JtYWw7IGZvbnQtdmFyaWFudC1jYXBzOiBub3JtYWw7IGZvbnQtd2VpZ2h0OiA0 +MDA7IGxldHRlci1zcGFjaW5nOiBub3JtYWw7IHRleHQtYWxpZ246IHN0YXJ0OyB0ZXh0LWluZGVu +dDogMHB4OyB0ZXh0LXRyYW5zZm9ybTogbm9uZTsgd2hpdGUtc3BhY2U6IG5vcm1hbDsgd29yZC1z +cGFjaW5nOiAwcHg7IHRleHQtZGVjb3JhdGlvbi1zdHlsZTogaW5pdGlhbDsgdGV4dC1kZWNvcmF0 +aW9uLWNvbG9yOiBpbml0aWFsOyI+PGxpICBjaWQ9Im4yOCIgY2xhc3M9Im1kLWxpc3QtaXRlbSIg +bWR0eXBlPSJsaXN0X2l0ZW0iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46 +IDBweDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHAgIGNpZD0ibjI5IiBjbGFzcz0ibWQtZW5kLWJs +b2NrIG1kLXAiIG1kdHlwZT0icGFyYWdyYXBoIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJv +eDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IG1hcmdpbjogMHB4IDBweCAwLjVyZW07IHdoaXRlLXNw +YWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHNwYW4gIGNsYXNzPSJtZC1wbGFp +biIgbWQtaW5saW5lPSJwbGFpbiIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij7lrozm +iJDljZXmja7mn6Xor6LmtYvor5Xlj4rnvLrpmbfkv67lpI08L3NwYW4+PC9wPjwvbGk+PGxpICBj +aWQ9Im4zMCIgY2xhc3M9Im1kLWxpc3QtaXRlbSBtZC1mb2N1cy1jb250YWluZXIiIG1kdHlwZT0i +bGlzdF9pdGVtIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBv +c2l0aW9uOiByZWxhdGl2ZTsiPjxwICBjaWQ9Im4zMSIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1w +IG1kLWZvY3VzIiBtZHR5cGU9InBhcmFncmFwaCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1i +b3g7IGxpbmUtaGVpZ2h0OiBpbmhlcml0OyBtYXJnaW46IDBweCAwcHggMC41cmVtOyB3aGl0ZS1z +cGFjZTogcHJlLXdyYXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxzcGFuICBjbGFzcz0ibWQtcGxh +aW4gbWQtZXhwYW5kIiBtZC1pbmxpbmU9InBsYWluIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVy +LWJveDsiPuWujOaIkOWFpeW6k+a1geeoi+ais+eQhuWPiuaJueasoeWFs+iBlOmAu+i+keais+eQ +hjwvc3Bhbj48L3A+PC9saT48bGkgIGNpZD0ibjMyIiBjbGFzcz0ibWQtbGlzdC1pdGVtIiBtZHR5 +cGU9Imxpc3RfaXRlbSIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4 +OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48cCAgY2lkPSJuMzMiIGNsYXNzPSJtZC1lbmQtYmxvY2sg +bWQtcCIgbWR0eXBlPSJwYXJhZ3JhcGgiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBs +aW5lLWhlaWdodDogaW5oZXJpdDsgbWFyZ2luOiAwcHggMHB4IDAuNXJlbTsgd2hpdGUtc3BhY2U6 +IHByZS13cmFwOyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48c3BhbiAgY2xhc3M9Im1kLXBsYWluIiBt +ZC1pbmxpbmU9InBsYWluIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPuWujOaIkOW6 +k+WtmOeuoeeQhumcgOaxguivhOWuoeS4juaKgOacr+aWueahiOiuvuiuoTwvc3Bhbj48L3A+PC9s +aT48bGkgIGNpZD0ibjM0IiBjbGFzcz0ibWQtbGlzdC1pdGVtIiBtZHR5cGU9Imxpc3RfaXRlbSIg +c3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBwb3NpdGlvbjogcmVs +YXRpdmU7Ij48cCAgY2lkPSJuMzUiIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCIgbWR0eXBlPSJw +YXJhZ3JhcGgiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5o +ZXJpdDsgbWFyZ2luOiAwcHggMHB4IDAuNXJlbTsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyBwb3Np +dGlvbjogcmVsYXRpdmU7Ij48c3BhbiAgY2xhc3M9Im1kLXBsYWluIiBtZC1pbmxpbmU9InBsYWlu +IiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPui+k+WHukFJ6K+05piO5paH5qGj44CB +6ZyA5rGC5Yqf6IO95paH5qGj562J6YWN5aWX5paH5qGjPC9zcGFuPjwvcD48L2xpPjwvdWw+PHAg +IGNpZD0ibjM2IiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLXAiIG1kdHlwZT0icGFyYWdyYXBoIiBz +dHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IG1hcmdp +bjogMC44ZW0gMHB4OyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsg +Y29sb3I6IHJnYig1MSwgNTEsIDUxKTsgZm9udC1mYW1pbHk6ICdPcGVuIFNhbnMnLCAnQ2xlYXIg +U2FucycsICdIZWx2ZXRpY2EgTmV1ZScsIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7IGZv +bnQtc2l6ZTogMTZweDsgZm9udC1zdHlsZTogbm9ybWFsOyBmb250LXZhcmlhbnQtbGlnYXR1cmVz +OiBub3JtYWw7IGZvbnQtdmFyaWFudC1jYXBzOiBub3JtYWw7IGZvbnQtd2VpZ2h0OiA0MDA7IGxl +dHRlci1zcGFjaW5nOiBub3JtYWw7IHRleHQtYWxpZ246IHN0YXJ0OyB0ZXh0LWluZGVudDogMHB4 +OyB0ZXh0LXRyYW5zZm9ybTogbm9uZTsgd29yZC1zcGFjaW5nOiAwcHg7IHRleHQtZGVjb3JhdGlv +bi1zdHlsZTogaW5pdGlhbDsgdGV4dC1kZWNvcmF0aW9uLWNvbG9yOiBpbml0aWFsOyI+PHNwYW4g +IGNsYXNzPSJtZC1wbGFpbiIgbWQtaW5saW5lPSJwbGFpbiIgc3R5bGU9ImJveC1zaXppbmc6IGJv +cmRlci1ib3g7IGZvbnQtd2VpZ2h0OiBib2xkOyI+5a2Y5Zyo6Zeu6aKY77yaPC9zcGFuPjxzcGFu +ICBjbGFzcz0ibWQtcGxhaW4gbWQtZXhwYW5kIiBtZC1pbmxpbmU9InBsYWluIiBzdHlsZT0iYm94 +LXNpemluZzogYm9yZGVyLWJveDsiPiDml6A8L3NwYW4+PC9wPjxkaXYgPjwvZGl2PjxwICBjbGFz +cz0ibWQtZW5kLWJsb2NrIG1kLXAgbWQtZm9jdXMiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXIt +Ym94OyBsaW5lLWhlaWdodDogaW5oZXJpdDsgbWFyZ2luOiAxMnB4IDBweDsgd2hpdGUtc3BhY2U6 +IHByZS13cmFwOyBwb3NpdGlvbjogcmVsYXRpdmU7IGNvbG9yOiByZ2IoNTEsIDUxLCA1MSk7IGZv +bnQtZmFtaWx5OiAnT3BlbiBTYW5zJywgJ0NsZWFyIFNhbnMnLCAnSGVsdmV0aWNhIE5ldWUnLCBI +ZWx2ZXRpY2EsIEFyaWFsLCAnU2Vnb2UgVUkgRW1vamknLCBzYW5zLXNlcmlmOyBmb250LXNpemU6 +IDE2cHg7IGZvbnQtc3R5bGU6IG5vcm1hbDsgZm9udC12YXJpYW50LWxpZ2F0dXJlczogbm9ybWFs +OyBmb250LXZhcmlhbnQtY2Fwczogbm9ybWFsOyBmb250LXdlaWdodDogNDAwOyBsZXR0ZXItc3Bh +Y2luZzogbm9ybWFsOyB0ZXh0LWFsaWduOiBzdGFydDsgdGV4dC1pbmRlbnQ6IDBweDsgdGV4dC10 +cmFuc2Zvcm06IG5vbmU7IHdvcmQtc3BhY2luZzogMHB4OyB0ZXh0LWRlY29yYXRpb24tdGhpY2tu +ZXNzOiBpbml0aWFsOyB0ZXh0LWRlY29yYXRpb24tc3R5bGU6IGluaXRpYWw7IHRleHQtZGVjb3Jh +dGlvbi1jb2xvcjogaW5pdGlhbDsiPjxiciA+PC9wPjxkaXYgIHN0eWxlPSJjbGVhcjogYm90aDsg +Zm9udC1mYW1pbHk6IFRhaG9tYSwgQXJpYWwsIFNUSGVpdGlTQy1MaWdodCwgU2ltU3VuOyI+PHNw +YW4gPjxiciA+PC9zcGFuPjwvZGl2PjxkaXYgIHN0eWxlPSJjbGVhcjogYm90aDsiPjxkaXYgIGNs +YXNzPSIgX19hbGl5dW5fbm9kZV9oYXNfY29sb3IiIHN0eWxlPSJtYXJnaW46IDBweDsgcGFkZGlu +ZzogMHB4OyBib3JkZXI6IDBweDsgb3V0bGluZTogMHB4OyBjb2xvcjogcmdiKDAsIDAsIDApOyBm +b250LWZhbWlseTogVGFob21hLCBBcmlhbCwgU1RIZWl0aSwgU2ltU3VuOyBmb250LXNpemU6IDE0 +cHg7IGZvbnQtc3R5bGU6IG5vcm1hbDsgZm9udC12YXJpYW50LWxpZ2F0dXJlczogbm9ybWFsOyBm +b250LXZhcmlhbnQtY2Fwczogbm9ybWFsOyBmb250LXdlaWdodDogNDAwOyB0ZXh0LWFsaWduOiBz +dGFydDsgdGV4dC1pbmRlbnQ6IDBweDsgdGV4dC10cmFuc2Zvcm06IG5vbmU7IHRleHQtZGVjb3Jh +dGlvbi10aGlja25lc3M6IGluaXRpYWw7IHRleHQtZGVjb3JhdGlvbi1zdHlsZTogaW5pdGlhbDsg +dGV4dC1kZWNvcmF0aW9uLWNvbG9yOiBpbml0aWFsOyBjbGVhcjogYm90aDsiPjxzcGFuICBjbGFz +cz0iIF9fYWxpeXVuX25vZGVfaGFzX2NvbG9yIiBzdHlsZT0ibWFyZ2luOiAwcHg7IHBhZGRpbmc6 +IDBweDsgYm9yZGVyOiAwcHg7IG91dGxpbmU6IDBweDsgZm9udC1mYW1pbHk6ICdNaWNyb3NvZnQg +WWFoZWknOyBmb250LXNpemU6IDEzcHg7IGNvbG9yOiByZ2IoMTkxLCAxOTEsIDE5MSk7Ij5CZXN0 +IHJlZ2FyZHMsPC9zcGFuPjwvZGl2PjxkaXYgIGNsYXNzPSIgX19hbGl5dW5fbm9kZV9oYXNfY29s +b3IiIHN0eWxlPSJtYXJnaW46IDBweDsgcGFkZGluZzogMHB4OyBib3JkZXI6IDBweDsgb3V0bGlu +ZTogMHB4OyBjb2xvcjogcmdiKDAsIDAsIDApOyBmb250LWZhbWlseTogVGFob21hLCBBcmlhbCwg +U1RIZWl0aSwgU2ltU3VuOyBmb250LXNpemU6IDE0cHg7IGZvbnQtc3R5bGU6IG5vcm1hbDsgZm9u +dC12YXJpYW50LWxpZ2F0dXJlczogbm9ybWFsOyBmb250LXZhcmlhbnQtY2Fwczogbm9ybWFsOyBm +b250LXdlaWdodDogNDAwOyB0ZXh0LWFsaWduOiBzdGFydDsgdGV4dC1pbmRlbnQ6IDBweDsgdGV4 +dC10cmFuc2Zvcm06IG5vbmU7IHRleHQtZGVjb3JhdGlvbi10aGlja25lc3M6IGluaXRpYWw7IHRl +eHQtZGVjb3JhdGlvbi1zdHlsZTogaW5pdGlhbDsgdGV4dC1kZWNvcmF0aW9uLWNvbG9yOiBpbml0 +aWFsOyBjbGVhcjogYm90aDsiPjxzcGFuICBjbGFzcz0iIF9fYWxpeXVuX25vZGVfaGFzX2NvbG9y +IiBzdHlsZT0ibWFyZ2luOiAwcHg7IHBhZGRpbmc6IDBweDsgYm9yZGVyOiAwcHg7IG91dGxpbmU6 +IDBweDsgZm9udC1mYW1pbHk6ICdNaWNyb3NvZnQgWWFoZWknOyBmb250LXNpemU6IDEzcHg7IGNv +bG9yOiByZ2IoMTkxLCAxOTEsIDE5MSk7Ij7mnajovak8L3NwYW4+PC9kaXY+PGRpdiAgY2xhc3M9 +IiBfX2FsaXl1bl9ub2RlX2hhc19jb2xvciIgc3R5bGU9Im1hcmdpbjogMHB4OyBwYWRkaW5nOiAw +cHg7IGJvcmRlcjogMHB4OyBvdXRsaW5lOiAwcHg7IGNvbG9yOiByZ2IoMCwgMCwgMCk7IGZvbnQt +ZmFtaWx5OiBUYWhvbWEsIEFyaWFsLCBTVEhlaXRpLCBTaW1TdW47IGZvbnQtc2l6ZTogMTRweDsg +Zm9udC1zdHlsZTogbm9ybWFsOyBmb250LXZhcmlhbnQtbGlnYXR1cmVzOiBub3JtYWw7IGZvbnQt +dmFyaWFudC1jYXBzOiBub3JtYWw7IGZvbnQtd2VpZ2h0OiA0MDA7IHRleHQtYWxpZ246IHN0YXJ0 +OyB0ZXh0LWluZGVudDogMHB4OyB0ZXh0LXRyYW5zZm9ybTogbm9uZTsgdGV4dC1kZWNvcmF0aW9u +LXRoaWNrbmVzczogaW5pdGlhbDsgdGV4dC1kZWNvcmF0aW9uLXN0eWxlOiBpbml0aWFsOyB0ZXh0 +LWRlY29yYXRpb24tY29sb3I6IGluaXRpYWw7IGNsZWFyOiBib3RoOyI+PGltZyAgZGF0YS1hbGlt +YWlsLWltZy1wcm9jZXNzZWQtc3FtLWVkaXRvcj0idHJ1ZSIgaGVpZ2h0PSI2OCIgc3JjPSJjaWQ6 +MzZkMGQ1OTAtMjBlNi00YzI2LWExYzgtOWFjNTY4M2VjOGU3IiB3aWR0aD0iMzAwIiBzdHlsZT0i +bWFyZ2luOiAwcHg7IHBhZGRpbmc6IDBweDsgYm9yZGVyOiAwcHg7IG91dGxpbmU6IDBweDsgdmVy +dGljYWwtYWxpZ246IGJvdHRvbTsiPiZuYnNwOzwvZGl2PjxkaXYgIGNsYXNzPSIgX19hbGl5dW5f +bm9kZV9oYXNfY29sb3IiIHN0eWxlPSJtYXJnaW46IDBweDsgcGFkZGluZzogMHB4OyBib3JkZXI6 +IDBweDsgb3V0bGluZTogMHB4OyBjb2xvcjogcmdiKDAsIDAsIDApOyBmb250LWZhbWlseTogVGFo +b21hLCBBcmlhbCwgU1RIZWl0aSwgU2ltU3VuOyBmb250LXNpemU6IDE0cHg7IGZvbnQtc3R5bGU6 +IG5vcm1hbDsgZm9udC12YXJpYW50LWxpZ2F0dXJlczogbm9ybWFsOyBmb250LXZhcmlhbnQtY2Fw +czogbm9ybWFsOyBmb250LXdlaWdodDogNDAwOyB0ZXh0LWFsaWduOiBzdGFydDsgdGV4dC1pbmRl +bnQ6IDBweDsgdGV4dC10cmFuc2Zvcm06IG5vbmU7IHRleHQtZGVjb3JhdGlvbi10aGlja25lc3M6 +IGluaXRpYWw7IHRleHQtZGVjb3JhdGlvbi1zdHlsZTogaW5pdGlhbDsgdGV4dC1kZWNvcmF0aW9u +LWNvbG9yOiBpbml0aWFsOyBjbGVhcjogYm90aDsiPjxzcGFuICBjbGFzcz0iIF9fYWxpeXVuX25v +ZGVfaGFzX2NvbG9yIiBzdHlsZT0ibWFyZ2luOiAwcHg7IHBhZGRpbmc6IDBweDsgYm9yZGVyOiAw +cHg7IG91dGxpbmU6IDBweDsgZm9udC1mYW1pbHk6ICdNaWNyb3NvZnQgWWFoZWknOyBjb2xvcjog +cmdiKDE5MSwgMTkxLCAxOTEpOyI+5Zyw5Z2A77ya5Lit5Zu9wrfljZfkuqzova/ku7bosLfova/k +u7blpKfpgZMxMeWPt+iKseelnuWkp+WOpjNGPC9zcGFuPjwvZGl2PjxkaXYgIGNsYXNzPSIgX19h +bGl5dW5fbm9kZV9oYXNfY29sb3IiIHN0eWxlPSJtYXJnaW46IDBweDsgcGFkZGluZzogMHB4OyBi +b3JkZXI6IDBweDsgb3V0bGluZTogMHB4OyBjb2xvcjogcmdiKDAsIDAsIDApOyBmb250LWZhbWls +eTogVGFob21hLCBBcmlhbCwgU1RIZWl0aSwgU2ltU3VuOyBmb250LXNpemU6IDE0cHg7IGZvbnQt +c3R5bGU6IG5vcm1hbDsgZm9udC12YXJpYW50LWxpZ2F0dXJlczogbm9ybWFsOyBmb250LXZhcmlh +bnQtY2Fwczogbm9ybWFsOyBmb250LXdlaWdodDogNDAwOyB0ZXh0LWFsaWduOiBzdGFydDsgdGV4 +dC1pbmRlbnQ6IDBweDsgdGV4dC10cmFuc2Zvcm06IG5vbmU7IHRleHQtZGVjb3JhdGlvbi10aGlj +a25lc3M6IGluaXRpYWw7IHRleHQtZGVjb3JhdGlvbi1zdHlsZTogaW5pdGlhbDsgdGV4dC1kZWNv +cmF0aW9uLWNvbG9yOiBpbml0aWFsOyBjbGVhcjogYm90aDsiPjxzcGFuICBjbGFzcz0iIF9fYWxp +eXVuX25vZGVfaGFzX2NvbG9yIiBzdHlsZT0ibWFyZ2luOiAwcHg7IHBhZGRpbmc6IDBweDsgYm9y +ZGVyOiAwcHg7IG91dGxpbmU6IDBweDsgZm9udC1mYW1pbHk6ICdNaWNyb3NvZnQgWWFoZWknOyBj +b2xvcjogcmdiKDE5MSwgMTkxLCAxOTEpOyI+5omL5py677yaMTg3MjYxMjg0ODk8L3NwYW4+PC9k +aXY+PGRpdiAgY2xhc3M9IiBfX2FsaXl1bl9ub2RlX2hhc19jb2xvciIgc3R5bGU9Im1hcmdpbjog +MHB4OyBwYWRkaW5nOiAwcHg7IGJvcmRlcjogMHB4OyBvdXRsaW5lOiAwcHg7IGNvbG9yOiByZ2Io +MCwgMCwgMCk7IGZvbnQtZmFtaWx5OiBUYWhvbWEsIEFyaWFsLCBTVEhlaXRpLCBTaW1TdW47IGZv +bnQtc2l6ZTogMTRweDsgZm9udC1zdHlsZTogbm9ybWFsOyBmb250LXZhcmlhbnQtbGlnYXR1cmVz +OiBub3JtYWw7IGZvbnQtdmFyaWFudC1jYXBzOiBub3JtYWw7IGZvbnQtd2VpZ2h0OiA0MDA7IHRl +eHQtYWxpZ246IHN0YXJ0OyB0ZXh0LWluZGVudDogMHB4OyB0ZXh0LXRyYW5zZm9ybTogbm9uZTsg +dGV4dC1kZWNvcmF0aW9uLXRoaWNrbmVzczogaW5pdGlhbDsgdGV4dC1kZWNvcmF0aW9uLXN0eWxl +OiBpbml0aWFsOyB0ZXh0LWRlY29yYXRpb24tY29sb3I6IGluaXRpYWw7IGNsZWFyOiBib3RoOyI+ +PHNwYW4gIGNsYXNzPSIgX19hbGl5dW5fbm9kZV9oYXNfY29sb3IiIHN0eWxlPSJtYXJnaW46IDBw +eDsgcGFkZGluZzogMHB4OyBib3JkZXI6IDBweDsgb3V0bGluZTogMHB4OyBmb250LWZhbWlseTog +J01pY3Jvc29mdCBZYWhlaSc7IGNvbG9yOiByZ2IoMTkxLCAxOTEsIDE5MSk7Ij7pgq7nrrHvvJp5 +YW5neHVhbkB3aXRzb2Z0LmNuPC9zcGFuPjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvYm9keT48 +L2h0bWw+PC9kaXY+ + +--=_mailmaster-6a18e4a4_0_7a5a_=-- + +--=_mailmaster-6a18e4a4_0_767d_= +Content-Type: application/octet-stream +Content-Transfer-Encoding: base64 +Content-ID: <36d0d590-20e6-4c26-a1c8-9ac5683ec8e7> +Content-Disposition: inline; + filename="=?utf-8?B?57u05ouT56eR5oqALemCruS7tuetvuWQjWxvZ28ucG5n?=" + +iVBORw0KGgoAAAANSUhEUgAAASwAAABECAYAAAA7rQj2AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJ +bWFnZVJlYWR5ccllPAAAA4RpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdp +bj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6 +eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTQ1IDc5LjE2 +MzQ5OSwgMjAxOC8wOC8xMy0xNjo0MDoyMiAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJo +dHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlw +dGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEu +MC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVz +b3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1N +Ok9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDplYjhjYzQwMy1lNzZjLTQ5NDgtODFmOC1kNDIy +MmRkMTdhYjgiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NkVENzExMzg1MzBEMTFFQTg4QjNF +NEJFMUQyRjc1RkIiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NkVENzExMzc1MzBEMTFFQTg4 +QjNFNEJFMUQyRjc1RkIiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTkg +KFdpbmRvd3MpIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6 +ZmNkNTdlM2UtZThjYS05ZjQ2LWEzZTUtMWJlYmE2NjA5Y2FmIiBzdFJlZjpkb2N1bWVudElEPSJh +ZG9iZTpkb2NpZDpwaG90b3Nob3A6MzZkNmNjNTUtNTY3Yi01MTQ2LWEwYWYtMzBlMzEwMTMxNDFk +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 + +--=_mailmaster-6a18e4a4_0_767d_=-- diff --git a/media/inbound/2026-04-24_1804_G5开发周报_2026-04-20_--_2026-04-24---36e09d03-c17e-4fe7-bf46-1b4ebb1a769a.eml b/media/inbound/2026-04-24_1804_G5开发周报_2026-04-20_--_2026-04-24---36e09d03-c17e-4fe7-bf46-1b4ebb1a769a.eml new file mode 100644 index 0000000..d71f27b --- /dev/null +++ b/media/inbound/2026-04-24_1804_G5开发周报_2026-04-20_--_2026-04-24---36e09d03-c17e-4fe7-bf46-1b4ebb1a769a.eml @@ -0,0 +1,559 @@ +Date: Fri, 24 Apr 2026 18:04:54 +0800 +From: =?utf-8?B?5p2o6L2p?= +To: =?utf-8?B?5YiY5by6?= +Cc: =?utf-8?B?5ZC0552/5Lic?= , =?utf-8?B?6ZmI5piO?= + , =?utf-8?B?5pu+6I6J?= +Message-ID: <0fd0cf13-9972-45a7-937c-4de189ac1ef9.yangxuan@witsoft.cn> +In-Reply-To: <6f5f5097-3c47-4d2e-bed8-db3387ffe5bb.yangxuan@witsoft.cn> +References: <6f5f5097-3c47-4d2e-bed8-db3387ffe5bb.yangxuan@witsoft.cn> +Subject: =?utf-8?B?RzXlvIDlj5HlkajmiqXjgJAyMDI2LTA0LTIwIC0tIDIwMjYtMDQt?= + =?utf-8?B?MjTjgJE=?= +MIME-Version: 1.0 +Content-Type: multipart/related; boundary="=_mailmaster-6a18e4a4_0_1238_=" + +--=_mailmaster-6a18e4a4_0_1238_= +Content-Type: multipart/alternative; boundary="=_mailmaster-6a18e4a4_0_4509_=" + +--=_mailmaster-6a18e4a4_0_4509_= +Content-Type: text/plain; charset="UTF-8" +Content-Transfer-Encoding: base64 + +6aG555uu77yaIOe7tOS6keaZuumAoEc177yI5bqT5a2Y566h55CG77yJCuaXpeacnwrkuLvopoHl +t6XkvZwK5ZGo5LiA77yIMDQuMjDvvIkKMS4gQUnlr7nor53pgJDmraXlrozmiJDpnIDmsYLlvIDl +j5EKMi4g55Sf5Lqn5YWl5bqT5aKe5Yqg6ZSA5ZSu5Y2V5Y+35p+l6K+iCjMuIOWIhuaekHdlYuWn +lOWklumAgOaWmeagoemqjOinhOWImSDmoLnmja7op4TliJnlop7liqDmoKHpqowKNC4g5Y676Zmk +QUnlvILluLjpgLvovpEK5ZGo5LqM77yIMDQuMjHvvIkKMS4g5byA5Y+R5pa55qGI6K+E5a6hCjIu +IOa1i+ivleeUqOS+i+ivhOWuoQozLiDlhaXlupPmjqXlj6PkvJjljJbpnIDmsYLlvIDlj5EK5ZGo +5LiJ77yIMDQuMjLvvIkKMS4g5omr56CB5Ye65YWl5bqTIOiwg+aLqOWFpeW6kwoyLiDmiavnoIHl +h7rlhaXlupMg5aeU5aSW6YCA5paZ5Y2VCuWRqOWbm++8iDA0LjIz77yJCjEuIG9wZW5hcGnmjqXl +j6Poh6rmtYsKMi4gYXBwIOiHquWKqOWFpeW6k+iBlOiwgwrlkajkupTvvIgwNC4yNO+8iQoxLiDn +lJ/kuqflhaXlupPigJzplIDllK7orqLljZXlj7figJ3mn6Xor6LovazmtYsKMi4g5aeU5aSW6YCA +5paZ5a+55aSW5o6l5Y+j6L2s5rWLCjMuIOmHh+i0reWFpeW6kyDnlJ/kuqflhaXlupMg5om55qyh +5Y+35aSE55CGIOi9rOa1iwo0LiDosIPmi6jlhaXlupPjgIHlp5TlpJbpgIDmlpnljZXjgIHnlJ/k +uqfpgIDmlpnjgIHmiqXlup/lhaXlupMg5omr56CB5Ye65YWl5bqT6L2s5rWLCuacrOWRqOmHjeeC +ueaIkOaenO+8mgoKICogCuWFpeW6k+S4juafpeivouWKn+iDveWinuW8ugoKICogCueUn+S6p+WF +peW6k+WinuWKoOKAnOmUgOWUruiuouWNleWPt+KAneafpeivou+8jOWujOaIkOi9rOa1i+OAggoK +ICogCuWFpeW6k+aOpeWPo+S8mOWMlumcgOaxguW8gOWPkeWujOaIkOOAggoKICogCuWnlOWklumA +gOaWmeS4muWKoeWujOWWhAoKICogCuWIhuaekFdlYuerr+WnlOWklumAgOaWmeagoemqjOinhOWI +me+8jOW5tuaMieinhOWImeWinuWKoOebuOW6lOagoemqjOOAggoKICogCuWnlOWklumAgOaWmeWv +ueWkluaOpeWPo+WujOaIkOi9rOa1i+OAggoKICogCuaJq+eggeWHuuWFpeW6k+WKn+iDveaJqeWx +lQoKICogCuWujOaIkOaJq+eggeWHuuWFpeW6k+S4reiwg+aLqOWFpeW6k+OAgeWnlOWklumAgOaW +meWNleeahOW8gOWPkeS4jui9rOa1i+OAggoKICogCuWQjOaXtuWujOaIkOeUn+S6p+mAgOaWmeOA +geaKpeW6n+WFpeW6k+eahOaJq+eggeWHuuWFpeW6k+i9rOa1i+OAggrlrZjlnKjpl67popjvvJog +5pegCkJlc3QgcmVnYXJkcywK5p2o6L2pCuWcsOWdgO+8muS4reWbvcK35Y2X5Lqs6L2v5Lu26LC3 +6L2v5Lu25aSn6YGTMTHlj7foirHnpZ7lpKfljqYzRgrmiYvmnLrvvJoxODcyNjEyODQ4OQrpgq7n +rrHvvJp5YW5neHVhbkB3aXRzb2Z0LmNuCg== + +--=_mailmaster-6a18e4a4_0_4509_= +Content-Type: text/html; charset="UTF-8" +Content-Transfer-Encoding: base64 + +PGRpdiBjbGFzcz0iX19hbGl5dW5fZW1haWxfYm9keV9ibG9jayI+PGh0bWwgPjxoZWFkID48L2hl +YWQ+PGJvZHkgPjxkaXYgIHN0eWxlPSJmb250LWZhbWlseTogVGFob21hLCBBcmlhbCwgU1RIZWl0 +aVNDLUxpZ2h0LCBTaW1TdW4iPjxkaXYgIHN0eWxlPSJmb250LWZhbWlseTogVGFob21hLCBBcmlh +bCwgU1RIZWl0aVNDLUxpZ2h0LCBTaW1TdW47IGNsZWFyOiBib3RoOyI+PHAgIGNsYXNzPSJtZC1l +bmQtYmxvY2sgbWQtcCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGxpbmUtaGVpZ2h0 +OiBpbmhlcml0OyBtYXJnaW46IDEycHggMHB4OyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0 +aW9uOiByZWxhdGl2ZTsgY29sb3I6IHJnYig1MSwgNTEsIDUxKTsgZm9udC1mYW1pbHk6ICdPcGVu +IFNhbnMnLCAnQ2xlYXIgU2FucycsICdIZWx2ZXRpY2EgTmV1ZScsIEhlbHZldGljYSwgQXJpYWws +IHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTZweDsgZm9udC1zdHlsZTogbm9ybWFsOyBmb250LXZh +cmlhbnQtbGlnYXR1cmVzOiBub3JtYWw7IGZvbnQtdmFyaWFudC1jYXBzOiBub3JtYWw7IGZvbnQt +d2VpZ2h0OiA0MDA7IGxldHRlci1zcGFjaW5nOiBub3JtYWw7IHRleHQtYWxpZ246IHN0YXJ0OyB0 +ZXh0LWluZGVudDogMHB4OyB0ZXh0LXRyYW5zZm9ybTogbm9uZTsgd29yZC1zcGFjaW5nOiAwcHg7 +IHRleHQtZGVjb3JhdGlvbi1zdHlsZTogaW5pdGlhbDsgdGV4dC1kZWNvcmF0aW9uLWNvbG9yOiBp +bml0aWFsOyI+PHNwYW4gIGNsYXNzPSJtZC1wbGFpbiIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRl +ci1ib3g7IGZvbnQtd2VpZ2h0OiA3MDA7Ij7pobnnm67vvJo8L3NwYW4+PHNwYW4gIGNsYXNzPSJt +ZC1wbGFpbiIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij4g57u05LqR5pm66YCgRzXv +vIjlupPlrZjnrqHnkIbvvIk8L3NwYW4+PC9wPjxkaXYgPjx0YWJsZSAgY2xhc3M9Im1kLXRhYmxl +IiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBz +ZTsgYm9yZGVyLXNwYWNpbmc6IDBweDsgb3ZlcmZsb3c6IGF1dG87IGJyZWFrLWluc2lkZTogYXV0 +bzsgdGV4dC1hbGlnbjogbGVmdDsgbWFyZ2luOiAwcHg7IHBhZGRpbmc6IDBweDsgd29yZC1icmVh +azogaW5pdGlhbDsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyB3aWR0aDogNzMxcHg7Ij48dGhlYWQg +IHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBkaXNwbGF5OiB0YWJsZS1oZWFkZXItZ3Jv +dXA7IGJhY2tncm91bmQtY29sb3I6IHJnYigyNDgsIDI0OCwgMjQ4KTsiPjx0ciAgY2xhc3M9Im1k +LWVuZC1ibG9jayIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGJyZWFrLWluc2lkZTog +YXZvaWQ7IGJyZWFrLWFmdGVyOiBhdXRvOyBib3JkZXItdG9wOiAxcHggc29saWQgcmdiKDIyMywg +MjI2LCAyMjkpOyBtYXJnaW46IDBweDsgcGFkZGluZzogMHB4OyI+PHRkICBzdHlsZT0iYm94LXNp +emluZzogYm9yZGVyLWJveDsgcGFkZGluZzogNnB4IDEzcHg7IGJvcmRlci13aWR0aDogMXB4IDFw +eCAwcHg7IGJvcmRlci10b3Atc3R5bGU6IHNvbGlkOyBib3JkZXItcmlnaHQtc3R5bGU6IHNvbGlk +OyBib3JkZXItbGVmdC1zdHlsZTogc29saWQ7IGJvcmRlci10b3AtY29sb3I6IHJnYigyMjMsIDIy +NiwgMjI5KTsgYm9yZGVyLXJpZ2h0LWNvbG9yOiByZ2IoMjIzLCAyMjYsIDIyOSk7IGJvcmRlci1s +ZWZ0LWNvbG9yOiByZ2IoMjIzLCAyMjYsIDIyOSk7IGJvcmRlci1pbWFnZTogaW5pdGlhbDsgYm9y +ZGVyLWJvdHRvbS1zdHlsZTogaW5pdGlhbDsgYm9yZGVyLWJvdHRvbS1jb2xvcjogaW5pdGlhbDsg +bWFyZ2luOiAwcHg7Ij48ZGl2ICBzdHlsZT0iZm9udC13ZWlnaHQ6IDcwMDsgdGV4dC1hbGlnbjog +Y2VudGVyOyI+PHNwYW4gIGNsYXNzPSJtZC1wbGFpbiIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRl +ci1ib3g7IGRpc3BsYXk6IGlubGluZS1ibG9jazsgbWluLXdpZHRoOiAxY2g7IHdpZHRoOiAzMThw +eDsgbWluLWhlaWdodDogMTBweDsiPuaXpeacnzwvc3Bhbj48L2Rpdj48L3RkPjx0ZCAgd2lkdGg9 +IjM1NyIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IHBhZGRpbmc6IDZweCAxM3B4OyBi +b3JkZXItd2lkdGg6IDFweCAxcHggMHB4OyBib3JkZXItdG9wLXN0eWxlOiBzb2xpZDsgYm9yZGVy +LXJpZ2h0LXN0eWxlOiBzb2xpZDsgYm9yZGVyLWxlZnQtc3R5bGU6IHNvbGlkOyBib3JkZXItdG9w +LWNvbG9yOiByZ2IoMjIzLCAyMjYsIDIyOSk7IGJvcmRlci1yaWdodC1jb2xvcjogcmdiKDIyMywg +MjI2LCAyMjkpOyBib3JkZXItbGVmdC1jb2xvcjogcmdiKDIyMywgMjI2LCAyMjkpOyBib3JkZXIt +aW1hZ2U6IGluaXRpYWw7IGJvcmRlci1ib3R0b20tc3R5bGU6IGluaXRpYWw7IGJvcmRlci1ib3R0 +b20tY29sb3I6IGluaXRpYWw7IG1hcmdpbjogMHB4OyI+PGRpdiAgc3R5bGU9ImZvbnQtd2VpZ2h0 +OiA3MDA7IHRleHQtYWxpZ246IGNlbnRlcjsiPjxzcGFuICBjbGFzcz0ibWQtcGxhaW4iIHN0eWxl +PSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IG1pbi13aWR0 +aDogMWNoOyB3aWR0aDogNTkycHg7IG1pbi1oZWlnaHQ6IDEwcHg7Ij7kuLvopoHlt6XkvZw8L3Nw +YW4+PC9kaXY+PC90ZD48L3RyPjwvdGhlYWQ+PHRib2R5ICBzdHlsZT0iYm94LXNpemluZzogYm9y +ZGVyLWJveDsiPjx0ciAgY2xhc3M9Im1kLWVuZC1ibG9jayIgc3R5bGU9ImJveC1zaXppbmc6IGJv +cmRlci1ib3g7IGJyZWFrLWluc2lkZTogYXZvaWQ7IGJyZWFrLWFmdGVyOiBhdXRvOyBib3JkZXIt +dG9wOiAxcHggc29saWQgcmdiKDIyMywgMjI2LCAyMjkpOyBtYXJnaW46IDBweDsgcGFkZGluZzog +MHB4OyI+PHRkICBjbGFzcz0iIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgcGFkZGlu +ZzogNnB4IDEzcHg7IGJvcmRlcjogMXB4IHNvbGlkIHJnYigyMjMsIDIyNiwgMjI5KTsgbWFyZ2lu +OiAwcHg7Ij48c3BhbiAgY2xhc3M9Im1kLXBsYWluIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVy +LWJveDsgZGlzcGxheTogaW5saW5lLWJsb2NrOyBtaW4td2lkdGg6IDFjaDsgd2lkdGg6IDMxOHB4 +OyBtaW4taGVpZ2h0OiAxMHB4OyI+5ZGo5LiA77yIMDQuMjDvvIk8L3NwYW4+PC90ZD48dGQgIGNs +YXNzPSIiIHdpZHRoPSIzNTciIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBwYWRkaW5n +OiA2cHggMTNweDsgYm9yZGVyOiAxcHggc29saWQgcmdiKDIyMywgMjI2LCAyMjkpOyBtYXJnaW46 +IDBweDsiPjxkaXYgIGNsYXNzPSIiPjxzcGFuICBjbGFzcz0ibWQtcGxhaW4iIHN0eWxlPSJib3gt +c2l6aW5nOiBib3JkZXItYm94OyBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IG1pbi13aWR0aDogMWNo +OyB3aWR0aDogMzE4cHg7IG1pbi1oZWlnaHQ6IDEwcHg7Ij4xLiZuYnNwO0FJ5a+56K+d6YCQ5q2l +5a6M5oiQ6ZyA5rGC5byA5Y+RPGJyICBzdHlsZT0iY29sb3I6IHJnYigwLCAwLCAwKTsgZm9udC1m +YW1pbHk6IGFyaWFsLCBoZWx2ZXRpY2EsIGNsZWFuLCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDEy +cHg7IGZvbnQtc3R5bGU6IG5vcm1hbDsgZm9udC12YXJpYW50LWxpZ2F0dXJlczogbm9ybWFsOyBm +b250LXZhcmlhbnQtY2Fwczogbm9ybWFsOyBmb250LXdlaWdodDogNDAwOyBsZXR0ZXItc3BhY2lu +Zzogbm9ybWFsOyBvcnBoYW5zOiAyOyB0ZXh0LWFsaWduOiBsZWZ0OyB0ZXh0LWluZGVudDogMHB4 +OyB0ZXh0LXRyYW5zZm9ybTogbm9uZTsgd2lkb3dzOiAyOyB3b3JkLXNwYWNpbmc6IDBweDsgLXdl +YmtpdC10ZXh0LXN0cm9rZS13aWR0aDogMHB4OyB3aGl0ZS1zcGFjZTogbm9ybWFsOyBiYWNrZ3Jv +dW5kLWNvbG9yOiByZ2IoMjQ1LCAyNDUsIDI0NSk7IHRleHQtZGVjb3JhdGlvbi10aGlja25lc3M6 +IGluaXRpYWw7IHRleHQtZGVjb3JhdGlvbi1zdHlsZTogaW5pdGlhbDsgdGV4dC1kZWNvcmF0aW9u +LWNvbG9yOiBpbml0aWFsOyI+Mi4mbmJzcDvnlJ/kuqflhaXlupPlop7liqDplIDllK7ljZXlj7fm +n6Xor6I8YnIgIHN0eWxlPSJjb2xvcjogcmdiKDAsIDAsIDApOyBmb250LWZhbWlseTogYXJpYWws +IGhlbHZldGljYSwgY2xlYW4sIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTJweDsgZm9udC1zdHls +ZTogbm9ybWFsOyBmb250LXZhcmlhbnQtbGlnYXR1cmVzOiBub3JtYWw7IGZvbnQtdmFyaWFudC1j +YXBzOiBub3JtYWw7IGZvbnQtd2VpZ2h0OiA0MDA7IGxldHRlci1zcGFjaW5nOiBub3JtYWw7IG9y +cGhhbnM6IDI7IHRleHQtYWxpZ246IGxlZnQ7IHRleHQtaW5kZW50OiAwcHg7IHRleHQtdHJhbnNm +b3JtOiBub25lOyB3aWRvd3M6IDI7IHdvcmQtc3BhY2luZzogMHB4OyAtd2Via2l0LXRleHQtc3Ry +b2tlLXdpZHRoOiAwcHg7IHdoaXRlLXNwYWNlOiBub3JtYWw7IGJhY2tncm91bmQtY29sb3I6IHJn +YigyNDUsIDI0NSwgMjQ1KTsgdGV4dC1kZWNvcmF0aW9uLXRoaWNrbmVzczogaW5pdGlhbDsgdGV4 +dC1kZWNvcmF0aW9uLXN0eWxlOiBpbml0aWFsOyB0ZXh0LWRlY29yYXRpb24tY29sb3I6IGluaXRp +YWw7Ij4zLiZuYnNwO+WIhuaekHdlYuWnlOWklumAgOaWmeagoemqjOinhOWImSZuYnNwO+agueaN +ruinhOWImeWinuWKoOagoemqjDxiciAgc3R5bGU9ImNvbG9yOiByZ2IoMCwgMCwgMCk7IGZvbnQt +ZmFtaWx5OiBhcmlhbCwgaGVsdmV0aWNhLCBjbGVhbiwgc2Fucy1zZXJpZjsgZm9udC1zaXplOiAx +MnB4OyBmb250LXN0eWxlOiBub3JtYWw7IGZvbnQtdmFyaWFudC1saWdhdHVyZXM6IG5vcm1hbDsg +Zm9udC12YXJpYW50LWNhcHM6IG5vcm1hbDsgZm9udC13ZWlnaHQ6IDQwMDsgbGV0dGVyLXNwYWNp +bmc6IG5vcm1hbDsgb3JwaGFuczogMjsgdGV4dC1hbGlnbjogbGVmdDsgdGV4dC1pbmRlbnQ6IDBw +eDsgdGV4dC10cmFuc2Zvcm06IG5vbmU7IHdpZG93czogMjsgd29yZC1zcGFjaW5nOiAwcHg7IC13 +ZWJraXQtdGV4dC1zdHJva2Utd2lkdGg6IDBweDsgd2hpdGUtc3BhY2U6IG5vcm1hbDsgYmFja2dy +b3VuZC1jb2xvcjogcmdiKDI0NSwgMjQ1LCAyNDUpOyB0ZXh0LWRlY29yYXRpb24tdGhpY2tuZXNz +OiBpbml0aWFsOyB0ZXh0LWRlY29yYXRpb24tc3R5bGU6IGluaXRpYWw7IHRleHQtZGVjb3JhdGlv +bi1jb2xvcjogaW5pdGlhbDsiPjQuJm5ic3A75Y676ZmkQUnlvILluLjpgLvovpE8L3NwYW4+PC9k +aXY+PC90ZD48L3RyPjx0ciAgY2xhc3M9Im1kLWVuZC1ibG9jayIgc3R5bGU9ImJveC1zaXppbmc6 +IGJvcmRlci1ib3g7IGJyZWFrLWluc2lkZTogYXZvaWQ7IGJyZWFrLWFmdGVyOiBhdXRvOyBib3Jk +ZXItdG9wOiAxcHggc29saWQgcmdiKDIyMywgMjI2LCAyMjkpOyBtYXJnaW46IDBweDsgcGFkZGlu +ZzogMHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjQ4LCAyNDgsIDI0OCk7Ij48dGQgIGNsYXNz +PSIiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBwYWRkaW5nOiA2cHggMTNweDsgYm9y +ZGVyOiAxcHggc29saWQgcmdiKDIyMywgMjI2LCAyMjkpOyBtYXJnaW46IDBweDsiPjxzcGFuICBj +bGFzcz0ibWQtcGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBkaXNwbGF5OiBp +bmxpbmUtYmxvY2s7IG1pbi13aWR0aDogMWNoOyB3aWR0aDogMzE4cHg7IG1pbi1oZWlnaHQ6IDEw +cHg7Ij7lkajkuozvvIgwNC4yMe+8iTwvc3Bhbj48L3RkPjx0ZCAgY2xhc3M9IiIgd2lkdGg9IjM1 +NyIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IHBhZGRpbmc6IDZweCAxM3B4OyBib3Jk +ZXI6IDFweCBzb2xpZCByZ2IoMjIzLCAyMjYsIDIyOSk7IG1hcmdpbjogMHB4OyI+PGRpdiAgY2xh +c3M9IiI+PHNwYW4gIGNsYXNzPSJtZC1wbGFpbiIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1i +b3g7IGRpc3BsYXk6IGlubGluZS1ibG9jazsgbWluLXdpZHRoOiAxY2g7IHdpZHRoOiAzMThweDsg +bWluLWhlaWdodDogMTBweDsiPjEuJm5ic3A75byA5Y+R5pa55qGI6K+E5a6hPGJyICBzdHlsZT0i +Y29sb3I6IHJnYigwLCAwLCAwKTsgZm9udC1mYW1pbHk6IGFyaWFsLCBoZWx2ZXRpY2EsIGNsZWFu +LCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDEycHg7IGZvbnQtc3R5bGU6IG5vcm1hbDsgZm9udC12 +YXJpYW50LWxpZ2F0dXJlczogbm9ybWFsOyBmb250LXZhcmlhbnQtY2Fwczogbm9ybWFsOyBmb250 +LXdlaWdodDogNDAwOyBsZXR0ZXItc3BhY2luZzogbm9ybWFsOyBvcnBoYW5zOiAyOyB0ZXh0LWFs +aWduOiBsZWZ0OyB0ZXh0LWluZGVudDogMHB4OyB0ZXh0LXRyYW5zZm9ybTogbm9uZTsgd2lkb3dz +OiAyOyB3b3JkLXNwYWNpbmc6IDBweDsgLXdlYmtpdC10ZXh0LXN0cm9rZS13aWR0aDogMHB4OyB3 +aGl0ZS1zcGFjZTogbm9ybWFsOyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjQ1LCAyNDUsIDI0NSk7 +IHRleHQtZGVjb3JhdGlvbi10aGlja25lc3M6IGluaXRpYWw7IHRleHQtZGVjb3JhdGlvbi1zdHls +ZTogaW5pdGlhbDsgdGV4dC1kZWNvcmF0aW9uLWNvbG9yOiBpbml0aWFsOyI+Mi4mbmJzcDvmtYvo +r5XnlKjkvovor4TlrqE8YnIgIHN0eWxlPSJjb2xvcjogcmdiKDAsIDAsIDApOyBmb250LWZhbWls +eTogYXJpYWwsIGhlbHZldGljYSwgY2xlYW4sIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTJweDsg +Zm9udC1zdHlsZTogbm9ybWFsOyBmb250LXZhcmlhbnQtbGlnYXR1cmVzOiBub3JtYWw7IGZvbnQt +dmFyaWFudC1jYXBzOiBub3JtYWw7IGZvbnQtd2VpZ2h0OiA0MDA7IGxldHRlci1zcGFjaW5nOiBu +b3JtYWw7IG9ycGhhbnM6IDI7IHRleHQtYWxpZ246IGxlZnQ7IHRleHQtaW5kZW50OiAwcHg7IHRl +eHQtdHJhbnNmb3JtOiBub25lOyB3aWRvd3M6IDI7IHdvcmQtc3BhY2luZzogMHB4OyAtd2Via2l0 +LXRleHQtc3Ryb2tlLXdpZHRoOiAwcHg7IHdoaXRlLXNwYWNlOiBub3JtYWw7IGJhY2tncm91bmQt +Y29sb3I6IHJnYigyNDUsIDI0NSwgMjQ1KTsgdGV4dC1kZWNvcmF0aW9uLXRoaWNrbmVzczogaW5p +dGlhbDsgdGV4dC1kZWNvcmF0aW9uLXN0eWxlOiBpbml0aWFsOyB0ZXh0LWRlY29yYXRpb24tY29s +b3I6IGluaXRpYWw7Ij4zLiZuYnNwO+WFpeW6k+aOpeWPo+S8mOWMlumcgOaxguW8gOWPkTwvc3Bh +bj48L2Rpdj48L3RkPjwvdHI+PHRyICBjbGFzcz0ibWQtZW5kLWJsb2NrIiBzdHlsZT0iYm94LXNp +emluZzogYm9yZGVyLWJveDsgYnJlYWstaW5zaWRlOiBhdm9pZDsgYnJlYWstYWZ0ZXI6IGF1dG87 +IGJvcmRlci10b3A6IDFweCBzb2xpZCByZ2IoMjIzLCAyMjYsIDIyOSk7IG1hcmdpbjogMHB4OyBw +YWRkaW5nOiAwcHg7Ij48dGQgIGNsYXNzPSIiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94 +OyBwYWRkaW5nOiA2cHggMTNweDsgYm9yZGVyOiAxcHggc29saWQgcmdiKDIyMywgMjI2LCAyMjkp +OyBtYXJnaW46IDBweDsiPjxzcGFuICBjbGFzcz0ibWQtcGxhaW4iIHN0eWxlPSJib3gtc2l6aW5n +OiBib3JkZXItYm94OyBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IG1pbi13aWR0aDogMWNoOyB3aWR0 +aDogMzE4cHg7IG1pbi1oZWlnaHQ6IDEwcHg7Ij7lkajkuInvvIgwNC4yMu+8iTwvc3Bhbj48L3Rk +Pjx0ZCAgY2xhc3M9IiIgd2lkdGg9IjM1NyIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7 +IHBhZGRpbmc6IDZweCAxM3B4OyBib3JkZXI6IDFweCBzb2xpZCByZ2IoMjIzLCAyMjYsIDIyOSk7 +IG1hcmdpbjogMHB4OyI+PGRpdiAgY2xhc3M9IiI+PHNwYW4gIGNsYXNzPSJtZC1wbGFpbiIgc3R5 +bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGRpc3BsYXk6IGlubGluZS1ibG9jazsgbWluLXdp +ZHRoOiAxY2g7IHdpZHRoOiAzMThweDsgbWluLWhlaWdodDogMTBweDsiPjEuJm5ic3A75omr56CB +5Ye65YWl5bqTJm5ic3A76LCD5ouo5YWl5bqTPGJyICBzdHlsZT0iY29sb3I6IHJnYigwLCAwLCAw +KTsgZm9udC1mYW1pbHk6IGFyaWFsLCBoZWx2ZXRpY2EsIGNsZWFuLCBzYW5zLXNlcmlmOyBmb250 +LXNpemU6IDEycHg7IGZvbnQtc3R5bGU6IG5vcm1hbDsgZm9udC12YXJpYW50LWxpZ2F0dXJlczog +bm9ybWFsOyBmb250LXZhcmlhbnQtY2Fwczogbm9ybWFsOyBmb250LXdlaWdodDogNDAwOyBsZXR0 +ZXItc3BhY2luZzogbm9ybWFsOyBvcnBoYW5zOiAyOyB0ZXh0LWFsaWduOiBsZWZ0OyB0ZXh0LWlu +ZGVudDogMHB4OyB0ZXh0LXRyYW5zZm9ybTogbm9uZTsgd2lkb3dzOiAyOyB3b3JkLXNwYWNpbmc6 +IDBweDsgLXdlYmtpdC10ZXh0LXN0cm9rZS13aWR0aDogMHB4OyB3aGl0ZS1zcGFjZTogbm9ybWFs +OyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjQ1LCAyNDUsIDI0NSk7IHRleHQtZGVjb3JhdGlvbi10 +aGlja25lc3M6IGluaXRpYWw7IHRleHQtZGVjb3JhdGlvbi1zdHlsZTogaW5pdGlhbDsgdGV4dC1k +ZWNvcmF0aW9uLWNvbG9yOiBpbml0aWFsOyI+Mi4mbmJzcDvmiavnoIHlh7rlhaXlupMmbmJzcDvl +p5TlpJbpgIDmlpnljZU8L3NwYW4+PC9kaXY+PC90ZD48L3RyPjx0ciAgY2xhc3M9Im1kLWVuZC1i +bG9jayIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGJyZWFrLWluc2lkZTogYXZvaWQ7 +IGJyZWFrLWFmdGVyOiBhdXRvOyBib3JkZXItdG9wOiAxcHggc29saWQgcmdiKDIyMywgMjI2LCAy +MjkpOyBtYXJnaW46IDBweDsgcGFkZGluZzogMHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjQ4 +LCAyNDgsIDI0OCk7Ij48dGQgIGNsYXNzPSIiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94 +OyBwYWRkaW5nOiA2cHggMTNweDsgYm9yZGVyOiAxcHggc29saWQgcmdiKDIyMywgMjI2LCAyMjkp +OyBtYXJnaW46IDBweDsiPjxzcGFuICBjbGFzcz0ibWQtcGxhaW4iIHN0eWxlPSJib3gtc2l6aW5n +OiBib3JkZXItYm94OyBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IG1pbi13aWR0aDogMWNoOyB3aWR0 +aDogMzE4cHg7IG1pbi1oZWlnaHQ6IDEwcHg7Ij7lkajlm5vvvIgwNC4yM++8iTwvc3Bhbj48L3Rk +Pjx0ZCAgY2xhc3M9IiIgd2lkdGg9IjM1NyIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7 +IHBhZGRpbmc6IDZweCAxM3B4OyBib3JkZXI6IDFweCBzb2xpZCByZ2IoMjIzLCAyMjYsIDIyOSk7 +IG1hcmdpbjogMHB4OyI+PGRpdiAgY2xhc3M9IiI+PHNwYW4gIGNsYXNzPSJtZC1wbGFpbiIgc3R5 +bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGRpc3BsYXk6IGlubGluZS1ibG9jazsgbWluLXdp +ZHRoOiAxY2g7IHdpZHRoOiAzMThweDsgbWluLWhlaWdodDogMTBweDsiPjEuJm5ic3A7b3BlbmFw +aeaOpeWPo+iHqua1izxiciAgc3R5bGU9ImNvbG9yOiByZ2IoMCwgMCwgMCk7IGZvbnQtZmFtaWx5 +OiBhcmlhbCwgaGVsdmV0aWNhLCBjbGVhbiwgc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMnB4OyBm +b250LXN0eWxlOiBub3JtYWw7IGZvbnQtdmFyaWFudC1saWdhdHVyZXM6IG5vcm1hbDsgZm9udC12 +YXJpYW50LWNhcHM6IG5vcm1hbDsgZm9udC13ZWlnaHQ6IDQwMDsgbGV0dGVyLXNwYWNpbmc6IG5v +cm1hbDsgb3JwaGFuczogMjsgdGV4dC1hbGlnbjogbGVmdDsgdGV4dC1pbmRlbnQ6IDBweDsgdGV4 +dC10cmFuc2Zvcm06IG5vbmU7IHdpZG93czogMjsgd29yZC1zcGFjaW5nOiAwcHg7IC13ZWJraXQt +dGV4dC1zdHJva2Utd2lkdGg6IDBweDsgd2hpdGUtc3BhY2U6IG5vcm1hbDsgYmFja2dyb3VuZC1j +b2xvcjogcmdiKDI0NSwgMjQ1LCAyNDUpOyB0ZXh0LWRlY29yYXRpb24tdGhpY2tuZXNzOiBpbml0 +aWFsOyB0ZXh0LWRlY29yYXRpb24tc3R5bGU6IGluaXRpYWw7IHRleHQtZGVjb3JhdGlvbi1jb2xv +cjogaW5pdGlhbDsiPjIuJm5ic3A7YXBwJm5ic3A76Ieq5Yqo5YWl5bqT6IGU6LCDPC9zcGFuPjwv +ZGl2PjwvdGQ+PC90cj48dHIgIGNsYXNzPSJtZC1lbmQtYmxvY2siIHN0eWxlPSJib3gtc2l6aW5n +OiBib3JkZXItYm94OyBicmVhay1pbnNpZGU6IGF2b2lkOyBicmVhay1hZnRlcjogYXV0bzsgYm9y +ZGVyLXRvcDogMXB4IHNvbGlkIHJnYigyMjMsIDIyNiwgMjI5KTsgbWFyZ2luOiAwcHg7IHBhZGRp +bmc6IDBweDsiPjx0ZCAgY2xhc3M9IiIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IHBh +ZGRpbmc6IDZweCAxM3B4OyBib3JkZXI6IDFweCBzb2xpZCByZ2IoMjIzLCAyMjYsIDIyOSk7IG1h +cmdpbjogMHB4OyI+PHNwYW4gIGNsYXNzPSJtZC1wbGFpbiIgc3R5bGU9ImJveC1zaXppbmc6IGJv +cmRlci1ib3g7IGRpc3BsYXk6IGlubGluZS1ibG9jazsgbWluLXdpZHRoOiAxY2g7IHdpZHRoOiAz +MThweDsgbWluLWhlaWdodDogMTBweDsiPuWRqOS6lO+8iDA0LjI077yJPC9zcGFuPjwvdGQ+PHRk +ICBjbGFzcz0iIiB3aWR0aD0iMzU3IiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgcGFk +ZGluZzogNnB4IDEzcHg7IGJvcmRlcjogMXB4IHNvbGlkIHJnYigyMjMsIDIyNiwgMjI5KTsgbWFy +Z2luOiAwcHg7Ij48ZGl2ICBjbGFzcz0iIj48c3BhbiAgY2xhc3M9Im1kLXBsYWluIiBzdHlsZT0i +Ym94LXNpemluZzogYm9yZGVyLWJveDsgZGlzcGxheTogaW5saW5lLWJsb2NrOyBtaW4td2lkdGg6 +IDFjaDsgd2lkdGg6IDMxOHB4OyBtaW4taGVpZ2h0OiAxMHB4OyI+MS4mbmJzcDvnlJ/kuqflhaXl +upPigJzplIDllK7orqLljZXlj7figJ3mn6Xor6LovazmtYs8YnIgIHN0eWxlPSJjb2xvcjogcmdi +KDAsIDAsIDApOyBmb250LWZhbWlseTogYXJpYWwsIGhlbHZldGljYSwgY2xlYW4sIHNhbnMtc2Vy +aWY7IGZvbnQtc2l6ZTogMTJweDsgZm9udC1zdHlsZTogbm9ybWFsOyBmb250LXZhcmlhbnQtbGln +YXR1cmVzOiBub3JtYWw7IGZvbnQtdmFyaWFudC1jYXBzOiBub3JtYWw7IGZvbnQtd2VpZ2h0OiA0 +MDA7IGxldHRlci1zcGFjaW5nOiBub3JtYWw7IG9ycGhhbnM6IDI7IHRleHQtYWxpZ246IGxlZnQ7 +IHRleHQtaW5kZW50OiAwcHg7IHRleHQtdHJhbnNmb3JtOiBub25lOyB3aWRvd3M6IDI7IHdvcmQt +c3BhY2luZzogMHB4OyAtd2Via2l0LXRleHQtc3Ryb2tlLXdpZHRoOiAwcHg7IHdoaXRlLXNwYWNl +OiBub3JtYWw7IGJhY2tncm91bmQtY29sb3I6IHJnYigyNDUsIDI0NSwgMjQ1KTsgdGV4dC1kZWNv +cmF0aW9uLXRoaWNrbmVzczogaW5pdGlhbDsgdGV4dC1kZWNvcmF0aW9uLXN0eWxlOiBpbml0aWFs +OyB0ZXh0LWRlY29yYXRpb24tY29sb3I6IGluaXRpYWw7Ij4yLiZuYnNwO+WnlOWklumAgOaWmeWv +ueWkluaOpeWPo+i9rOa1izxiciAgc3R5bGU9ImNvbG9yOiByZ2IoMCwgMCwgMCk7IGZvbnQtZmFt +aWx5OiBhcmlhbCwgaGVsdmV0aWNhLCBjbGVhbiwgc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMnB4 +OyBmb250LXN0eWxlOiBub3JtYWw7IGZvbnQtdmFyaWFudC1saWdhdHVyZXM6IG5vcm1hbDsgZm9u +dC12YXJpYW50LWNhcHM6IG5vcm1hbDsgZm9udC13ZWlnaHQ6IDQwMDsgbGV0dGVyLXNwYWNpbmc6 +IG5vcm1hbDsgb3JwaGFuczogMjsgdGV4dC1hbGlnbjogbGVmdDsgdGV4dC1pbmRlbnQ6IDBweDsg +dGV4dC10cmFuc2Zvcm06IG5vbmU7IHdpZG93czogMjsgd29yZC1zcGFjaW5nOiAwcHg7IC13ZWJr +aXQtdGV4dC1zdHJva2Utd2lkdGg6IDBweDsgd2hpdGUtc3BhY2U6IG5vcm1hbDsgYmFja2dyb3Vu +ZC1jb2xvcjogcmdiKDI0NSwgMjQ1LCAyNDUpOyB0ZXh0LWRlY29yYXRpb24tdGhpY2tuZXNzOiBp +bml0aWFsOyB0ZXh0LWRlY29yYXRpb24tc3R5bGU6IGluaXRpYWw7IHRleHQtZGVjb3JhdGlvbi1j +b2xvcjogaW5pdGlhbDsiPjMuJm5ic3A76YeH6LSt5YWl5bqTJm5ic3A755Sf5Lqn5YWl5bqTJm5i +c3A75om55qyh5Y+35aSE55CGJm5ic3A76L2s5rWLPGJyICBzdHlsZT0iY29sb3I6IHJnYigwLCAw +LCAwKTsgZm9udC1mYW1pbHk6IGFyaWFsLCBoZWx2ZXRpY2EsIGNsZWFuLCBzYW5zLXNlcmlmOyBm +b250LXNpemU6IDEycHg7IGZvbnQtc3R5bGU6IG5vcm1hbDsgZm9udC12YXJpYW50LWxpZ2F0dXJl +czogbm9ybWFsOyBmb250LXZhcmlhbnQtY2Fwczogbm9ybWFsOyBmb250LXdlaWdodDogNDAwOyBs +ZXR0ZXItc3BhY2luZzogbm9ybWFsOyBvcnBoYW5zOiAyOyB0ZXh0LWFsaWduOiBsZWZ0OyB0ZXh0 +LWluZGVudDogMHB4OyB0ZXh0LXRyYW5zZm9ybTogbm9uZTsgd2lkb3dzOiAyOyB3b3JkLXNwYWNp +bmc6IDBweDsgLXdlYmtpdC10ZXh0LXN0cm9rZS13aWR0aDogMHB4OyB3aGl0ZS1zcGFjZTogbm9y +bWFsOyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjQ1LCAyNDUsIDI0NSk7IHRleHQtZGVjb3JhdGlv +bi10aGlja25lc3M6IGluaXRpYWw7IHRleHQtZGVjb3JhdGlvbi1zdHlsZTogaW5pdGlhbDsgdGV4 +dC1kZWNvcmF0aW9uLWNvbG9yOiBpbml0aWFsOyI+NC4mbmJzcDvosIPmi6jlhaXlupPjgIHlp5Tl +pJbpgIDmlpnljZXjgIHnlJ/kuqfpgIDmlpnjgIHmiqXlup/lhaXlupMmbmJzcDvmiavnoIHlh7rl +haXlupPovazmtYs8L3NwYW4+PC9kaXY+PC90ZD48L3RyPjwvdGJvZHk+PC90YWJsZT48L2Rpdj48 +ZGl2ICBjbGFzcz0ibWQtaHIgbWQtZW5kLWJsb2NrIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVy +LWJveDsgY29sb3I6IHJnYig1MSwgNTEsIDUxKTsgZm9udC1mYW1pbHk6ICdPcGVuIFNhbnMnLCAn +Q2xlYXIgU2FucycsICdIZWx2ZXRpY2EgTmV1ZScsIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2Vy +aWY7IGZvbnQtc2l6ZTogMTZweDsgZm9udC1zdHlsZTogbm9ybWFsOyBmb250LXZhcmlhbnQtbGln +YXR1cmVzOiBub3JtYWw7IGZvbnQtdmFyaWFudC1jYXBzOiBub3JtYWw7IGZvbnQtd2VpZ2h0OiA0 +MDA7IGxldHRlci1zcGFjaW5nOiBub3JtYWw7IHRleHQtYWxpZ246IHN0YXJ0OyB0ZXh0LWluZGVu +dDogMHB4OyB0ZXh0LXRyYW5zZm9ybTogbm9uZTsgd2hpdGUtc3BhY2U6IG5vcm1hbDsgd29yZC1z +cGFjaW5nOiAwcHg7IHRleHQtZGVjb3JhdGlvbi1zdHlsZTogaW5pdGlhbDsgdGV4dC1kZWNvcmF0 +aW9uLWNvbG9yOiBpbml0aWFsOyI+PGhyICBzdHlsZT0iYm94LXNpemluZzogY29udGVudC1ib3g7 +IGhlaWdodDogMnB4OyBtYXJnaW46IDE2cHggMHB4OyBib3JkZXI6IDBweCBub25lOyBwYWRkaW5n +OiAwcHg7IGJhY2tncm91bmQtY29sb3I6IHJnYigyMzEsIDIzMSwgMjMxKTsgb3ZlcmZsb3c6IGhp +ZGRlbjsiPjwvZGl2PjxwICBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLXAiIHN0eWxlPSJib3gtc2l6 +aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5oZXJpdDsgbWFyZ2luOiAxMnB4IDBweDsg +d2hpdGUtc3BhY2U6IHByZS13cmFwOyBwb3NpdGlvbjogcmVsYXRpdmU7IGNvbG9yOiByZ2IoNTEs +IDUxLCA1MSk7IGZvbnQtZmFtaWx5OiAnT3BlbiBTYW5zJywgJ0NsZWFyIFNhbnMnLCAnSGVsdmV0 +aWNhIE5ldWUnLCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDE2cHg7 +IGZvbnQtc3R5bGU6IG5vcm1hbDsgZm9udC12YXJpYW50LWxpZ2F0dXJlczogbm9ybWFsOyBmb250 +LXZhcmlhbnQtY2Fwczogbm9ybWFsOyBmb250LXdlaWdodDogNDAwOyBsZXR0ZXItc3BhY2luZzog +bm9ybWFsOyB0ZXh0LWFsaWduOiBzdGFydDsgdGV4dC1pbmRlbnQ6IDBweDsgdGV4dC10cmFuc2Zv +cm06IG5vbmU7IHdvcmQtc3BhY2luZzogMHB4OyB0ZXh0LWRlY29yYXRpb24tc3R5bGU6IGluaXRp +YWw7IHRleHQtZGVjb3JhdGlvbi1jb2xvcjogaW5pdGlhbDsiPjxzcGFuICBjbGFzcz0ibWQtcGxh +aW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBmb250LXdlaWdodDogNzAwOyI+5pys +5ZGo6YeN54K55oiQ5p6c77yaPC9zcGFuPjwvcD48cCAgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1w +IiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IG1h +cmdpbjogMHB4IDBweCA4cHg7IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJlbGF0 +aXZlOyI+PHNwYW4gIGNsYXNzPSJheW1fYm9va21hcmsiIGlkPSJfYXltX2Jvb2ttYXJrX3NxbV8x +MjgiIHN0eWxlPSJkaXNwbGF5Om5vbmUiPjwvc3Bhbj48L3A+PG9sICBzdGFydD0iMSIgc3R5bGU9 +Im1hcmdpbjogMTZweCAwcHg7IHBhZGRpbmctbGVmdDogMThweDsgY29sb3I6IHJnYigxNSwgMTcs +IDIxKTsgZm9udC1mYW1pbHk6IHF1b3RlLWNqay1wYXRjaCwgSW50ZXIsIHN5c3RlbS11aSwgLWFw +cGxlLXN5c3RlbSwgQmxpbmtNYWNTeXN0ZW1Gb250LCAnU2Vnb2UgVUknLCBSb2JvdG8sIE94eWdl +biwgVWJ1bnR1LCBDYW50YXJlbGwsICdPcGVuIFNhbnMnLCAnSGVsdmV0aWNhIE5ldWUnLCBzYW5z +LXNlcmlmOyBmb250LXNpemU6IDE2cHg7IGZvbnQtc3R5bGU6IG5vcm1hbDsgZm9udC12YXJpYW50 +LWxpZ2F0dXJlczogbm9ybWFsOyBmb250LXZhcmlhbnQtY2Fwczogbm9ybWFsOyBmb250LXdlaWdo +dDogNDAwOyBsZXR0ZXItc3BhY2luZzogbm9ybWFsOyB0ZXh0LWFsaWduOiBzdGFydDsgdGV4dC1p +bmRlbnQ6IDBweDsgdGV4dC10cmFuc2Zvcm06IG5vbmU7IHdvcmQtc3BhY2luZzogMHB4OyB3aGl0 +ZS1zcGFjZTogbm9ybWFsOyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjU1LCAyNTUsIDI1NSk7IHRl +eHQtZGVjb3JhdGlvbi10aGlja25lc3M6IGluaXRpYWw7IHRleHQtZGVjb3JhdGlvbi1zdHlsZTog +aW5pdGlhbDsgdGV4dC1kZWNvcmF0aW9uLWNvbG9yOiBpbml0aWFsOyI+PGxpICBzdHlsZT0ibWFy +Z2luLXRvcDogNnB4OyI+PHAgIGNsYXNzPSJkcy1tYXJrZG93bi1wYXJhZ3JhcGgiIHN0eWxlPSJt +YXJnaW4tcmlnaHQ6IDBweDsgbWFyZ2luLWJvdHRvbTogOHB4OyBtYXJnaW4tbGVmdDogMHB4OyBt +YXJnaW4tdG9wOiAwcHggIWltcG9ydGFudDsiPjxzcGFuICBzdHlsZT0iZm9udC13ZWlnaHQ6IDQw +MDsiPuWFpeW6k+S4juafpeivouWKn+iDveWinuW8ujwvc3Bhbj48L3A+PHVsICBzdHlsZT0ibWFy +Z2luOiA0cHggMHB4IDBweDsgcGFkZGluZy1sZWZ0OiAxOHB4OyI+PGxpID48cCAgY2xhc3M9ImRz +LW1hcmtkb3duLXBhcmFncmFwaCIgc3R5bGU9Im1hcmdpbi1yaWdodDogMHB4OyBtYXJnaW4tYm90 +dG9tOiAwcHg7IG1hcmdpbi1sZWZ0OiAwcHg7IG1hcmdpbi10b3A6IDBweCAhaW1wb3J0YW50OyI+ +PHNwYW4gPueUn+S6p+WFpeW6k+WinuWKoOKAnOmUgOWUruiuouWNleWPt+KAneafpeivou+8jOWu +jOaIkOi9rOa1i+OAgjwvc3Bhbj48L3A+PC9saT48bGkgIHN0eWxlPSJtYXJnaW4tdG9wOiA2cHg7 +Ij48cCAgY2xhc3M9ImRzLW1hcmtkb3duLXBhcmFncmFwaCIgc3R5bGU9Im1hcmdpbi1yaWdodDog +MHB4OyBtYXJnaW4tYm90dG9tOiAwcHg7IG1hcmdpbi1sZWZ0OiAwcHg7IG1hcmdpbi10b3A6IDBw +eCAhaW1wb3J0YW50OyI+PHNwYW4gPuWFpeW6k+aOpeWPo+S8mOWMlumcgOaxguW8gOWPkeWujOaI +kOOAgjwvc3Bhbj48L3A+PC9saT48L3VsPjwvbGk+PGxpICBzdHlsZT0ibWFyZ2luLXRvcDogNnB4 +OyI+PHAgIGNsYXNzPSJkcy1tYXJrZG93bi1wYXJhZ3JhcGgiIHN0eWxlPSJtYXJnaW4tcmlnaHQ6 +IDBweDsgbWFyZ2luLWJvdHRvbTogOHB4OyBtYXJnaW4tbGVmdDogMHB4OyBtYXJnaW4tdG9wOiAw +cHggIWltcG9ydGFudDsiPjxzcGFuICBzdHlsZT0iZm9udC13ZWlnaHQ6IDQwMDsiPuWnlOWklumA +gOaWmeS4muWKoeWujOWWhDwvc3Bhbj48L3A+PHVsICBzdHlsZT0ibWFyZ2luOiA0cHggMHB4IDBw +eDsgcGFkZGluZy1sZWZ0OiAxOHB4OyI+PGxpID48cCAgY2xhc3M9ImRzLW1hcmtkb3duLXBhcmFn +cmFwaCIgc3R5bGU9Im1hcmdpbi1yaWdodDogMHB4OyBtYXJnaW4tYm90dG9tOiAwcHg7IG1hcmdp +bi1sZWZ0OiAwcHg7IG1hcmdpbi10b3A6IDBweCAhaW1wb3J0YW50OyI+PHNwYW4gPuWIhuaekFdl +Yuerr+WnlOWklumAgOaWmeagoemqjOinhOWIme+8jOW5tuaMieinhOWImeWinuWKoOebuOW6lOag +oemqjOOAgjwvc3Bhbj48L3A+PC9saT48bGkgIHN0eWxlPSJtYXJnaW4tdG9wOiA2cHg7Ij48cCAg +Y2xhc3M9ImRzLW1hcmtkb3duLXBhcmFncmFwaCIgc3R5bGU9Im1hcmdpbi1yaWdodDogMHB4OyBt +YXJnaW4tYm90dG9tOiAwcHg7IG1hcmdpbi1sZWZ0OiAwcHg7IG1hcmdpbi10b3A6IDBweCAhaW1w +b3J0YW50OyI+PHNwYW4gPuWnlOWklumAgOaWmeWvueWkluaOpeWPo+WujOaIkOi9rOa1i+OAgjwv +c3Bhbj48L3A+PC9saT48L3VsPjwvbGk+PGxpICBzdHlsZT0ibWFyZ2luLXRvcDogNnB4OyI+PHAg +IGNsYXNzPSJkcy1tYXJrZG93bi1wYXJhZ3JhcGgiIHN0eWxlPSJtYXJnaW4tcmlnaHQ6IDBweDsg +bWFyZ2luLWJvdHRvbTogOHB4OyBtYXJnaW4tbGVmdDogMHB4OyBtYXJnaW4tdG9wOiAwcHggIWlt +cG9ydGFudDsiPjxzcGFuICBzdHlsZT0iZm9udC13ZWlnaHQ6IDQwMDsiPuaJq+eggeWHuuWFpeW6 +k+WKn+iDveaJqeWxlTwvc3Bhbj48L3A+PHVsICBzdHlsZT0ibWFyZ2luOiA0cHggMHB4IDBweDsg +cGFkZGluZy1sZWZ0OiAxOHB4OyI+PGxpID48cCAgY2xhc3M9ImRzLW1hcmtkb3duLXBhcmFncmFw +aCIgc3R5bGU9Im1hcmdpbi1yaWdodDogMHB4OyBtYXJnaW4tYm90dG9tOiAwcHg7IG1hcmdpbi1s +ZWZ0OiAwcHg7IG1hcmdpbi10b3A6IDBweCAhaW1wb3J0YW50OyI+PHNwYW4gPuWujOaIkOaJq+eg +geWHuuWFpeW6k+S4rTwvc3Bhbj48c3BhbiAgc3R5bGU9ImZvbnQtd2VpZ2h0OiA0MDA7Ij7osIPm +i6jlhaXlupM8L3NwYW4+PHNwYW4gPuOAgTwvc3Bhbj48c3BhbiAgc3R5bGU9ImZvbnQtd2VpZ2h0 +OiA0MDA7Ij7lp5TlpJbpgIDmlpnljZU8L3NwYW4+PHNwYW4gPueahOW8gOWPkeS4jui9rOa1i+OA +gjwvc3Bhbj48L3A+PC9saT48bGkgIHN0eWxlPSJtYXJnaW4tdG9wOiA2cHg7Ij48cCAgY2xhc3M9 +ImRzLW1hcmtkb3duLXBhcmFncmFwaCIgc3R5bGU9Im1hcmdpbi1yaWdodDogMHB4OyBtYXJnaW4t +Ym90dG9tOiAwcHg7IG1hcmdpbi1sZWZ0OiAwcHg7IG1hcmdpbi10b3A6IDBweCAhaW1wb3J0YW50 +OyI+PHNwYW4gPuWQjOaXtuWujOaIkDwvc3Bhbj48c3BhbiAgc3R5bGU9ImZvbnQtd2VpZ2h0OiA0 +MDA7Ij7nlJ/kuqfpgIDmlpk8L3NwYW4+PHNwYW4gPuOAgTwvc3Bhbj48c3BhbiAgc3R5bGU9ImZv +bnQtd2VpZ2h0OiA0MDA7Ij7miqXlup/lhaXlupM8L3NwYW4+PHNwYW4gPueahOaJq+eggeWHuuWF +peW6k+i9rOa1i+OAgjwvc3Bhbj48L3A+PC9saT48L3VsPjwvbGk+PC9vbD48ZGl2ID48c3BhbiAg +Y2xhc3M9ImF5bV9ib29rbWFyayIgaWQ9Il9heW1fYm9va21hcmtfc3FtXzEyOSIgc3R5bGU9ImRp +c3BsYXk6bm9uZSI+PC9zcGFuPjwvZGl2PjxwICBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLXAiIHN0 +eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5oZXJpdDsgbWFyZ2lu +OiAwcHggMHB4IDhweDsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyBwb3NpdGlvbjogcmVsYXRpdmU7 +Ij48YnIgPjwvcD48cCAgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1wIiBzdHlsZT0iYm94LXNpemlu +ZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IG1hcmdpbjogMTJweCAwcHg7IHdo +aXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJlbGF0aXZlOyBjb2xvcjogcmdiKDUxLCA1 +MSwgNTEpOyBmb250LWZhbWlseTogJ09wZW4gU2FucycsICdDbGVhciBTYW5zJywgJ0hlbHZldGlj +YSBOZXVlJywgSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxNnB4OyBm +b250LXN0eWxlOiBub3JtYWw7IGZvbnQtdmFyaWFudC1saWdhdHVyZXM6IG5vcm1hbDsgZm9udC12 +YXJpYW50LWNhcHM6IG5vcm1hbDsgZm9udC13ZWlnaHQ6IDQwMDsgbGV0dGVyLXNwYWNpbmc6IG5v +cm1hbDsgdGV4dC1hbGlnbjogc3RhcnQ7IHRleHQtaW5kZW50OiAwcHg7IHRleHQtdHJhbnNmb3Jt +OiBub25lOyB3b3JkLXNwYWNpbmc6IDBweDsgdGV4dC1kZWNvcmF0aW9uLXN0eWxlOiBpbml0aWFs +OyB0ZXh0LWRlY29yYXRpb24tY29sb3I6IGluaXRpYWw7Ij48c3BhbiAgY2xhc3M9Im1kLXBsYWlu +IiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgZm9udC13ZWlnaHQ6IDcwMDsiPuWtmOWc +qOmXrumimO+8mjwvc3Bhbj48c3BhbiAgY2xhc3M9Im1kLXBsYWluIG1kLWV4cGFuZCIgc3R5bGU9 +ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij4g5pegPC9zcGFuPjwvcD48cCAgY2xhc3M9Im1kLWVu +ZC1ibG9jayBtZC1wIG1kLWZvY3VzIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbGlu +ZS1oZWlnaHQ6IGluaGVyaXQ7IG1hcmdpbjogMTJweCAwcHg7IHdoaXRlLXNwYWNlOiBwcmUtd3Jh +cDsgcG9zaXRpb246IHJlbGF0aXZlOyBjb2xvcjogcmdiKDUxLCA1MSwgNTEpOyBmb250LWZhbWls +eTogJ09wZW4gU2FucycsICdDbGVhciBTYW5zJywgJ0hlbHZldGljYSBOZXVlJywgSGVsdmV0aWNh +LCBBcmlhbCwgJ1NlZ29lIFVJIEVtb2ppJywgc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxNnB4OyBm +b250LXN0eWxlOiBub3JtYWw7IGZvbnQtdmFyaWFudC1saWdhdHVyZXM6IG5vcm1hbDsgZm9udC12 +YXJpYW50LWNhcHM6IG5vcm1hbDsgZm9udC13ZWlnaHQ6IDQwMDsgbGV0dGVyLXNwYWNpbmc6IG5v +cm1hbDsgdGV4dC1hbGlnbjogc3RhcnQ7IHRleHQtaW5kZW50OiAwcHg7IHRleHQtdHJhbnNmb3Jt +OiBub25lOyB3b3JkLXNwYWNpbmc6IDBweDsgdGV4dC1kZWNvcmF0aW9uLXRoaWNrbmVzczogaW5p +dGlhbDsgdGV4dC1kZWNvcmF0aW9uLXN0eWxlOiBpbml0aWFsOyB0ZXh0LWRlY29yYXRpb24tY29s +b3I6IGluaXRpYWw7Ij48YnIgPjwvcD48ZGl2ICBzdHlsZT0iY2xlYXI6IGJvdGg7IGZvbnQtZmFt +aWx5OiBUYWhvbWEsIEFyaWFsLCBTVEhlaXRpU0MtTGlnaHQsIFNpbVN1bjsiPjxzcGFuID48YnIg +Pjwvc3Bhbj48L2Rpdj48ZGl2ICBzdHlsZT0iY2xlYXI6IGJvdGg7Ij48ZGl2ICBjbGFzcz0iIF9f +YWxpeXVuX25vZGVfaGFzX2NvbG9yIiBzdHlsZT0ibWFyZ2luOiAwcHg7IHBhZGRpbmc6IDBweDsg +Ym9yZGVyOiAwcHg7IG91dGxpbmU6IDBweDsgY29sb3I6IHJnYigwLCAwLCAwKTsgZm9udC1mYW1p +bHk6IFRhaG9tYSwgQXJpYWwsIFNUSGVpdGksIFNpbVN1bjsgZm9udC1zaXplOiAxNHB4OyBmb250 +LXN0eWxlOiBub3JtYWw7IGZvbnQtdmFyaWFudC1saWdhdHVyZXM6IG5vcm1hbDsgZm9udC12YXJp +YW50LWNhcHM6IG5vcm1hbDsgZm9udC13ZWlnaHQ6IDQwMDsgdGV4dC1hbGlnbjogc3RhcnQ7IHRl +eHQtaW5kZW50OiAwcHg7IHRleHQtdHJhbnNmb3JtOiBub25lOyB0ZXh0LWRlY29yYXRpb24tdGhp +Y2tuZXNzOiBpbml0aWFsOyB0ZXh0LWRlY29yYXRpb24tc3R5bGU6IGluaXRpYWw7IHRleHQtZGVj +b3JhdGlvbi1jb2xvcjogaW5pdGlhbDsgY2xlYXI6IGJvdGg7Ij48c3BhbiAgY2xhc3M9IiBfX2Fs +aXl1bl9ub2RlX2hhc19jb2xvciIgc3R5bGU9Im1hcmdpbjogMHB4OyBwYWRkaW5nOiAwcHg7IGJv +cmRlcjogMHB4OyBvdXRsaW5lOiAwcHg7IGZvbnQtZmFtaWx5OiAnTWljcm9zb2Z0IFlhaGVpJzsg +Zm9udC1zaXplOiAxM3B4OyBjb2xvcjogcmdiKDE5MSwgMTkxLCAxOTEpOyI+QmVzdCByZWdhcmRz +LDwvc3Bhbj48L2Rpdj48ZGl2ICBjbGFzcz0iIF9fYWxpeXVuX25vZGVfaGFzX2NvbG9yIiBzdHls +ZT0ibWFyZ2luOiAwcHg7IHBhZGRpbmc6IDBweDsgYm9yZGVyOiAwcHg7IG91dGxpbmU6IDBweDsg +Y29sb3I6IHJnYigwLCAwLCAwKTsgZm9udC1mYW1pbHk6IFRhaG9tYSwgQXJpYWwsIFNUSGVpdGks +IFNpbVN1bjsgZm9udC1zaXplOiAxNHB4OyBmb250LXN0eWxlOiBub3JtYWw7IGZvbnQtdmFyaWFu +dC1saWdhdHVyZXM6IG5vcm1hbDsgZm9udC12YXJpYW50LWNhcHM6IG5vcm1hbDsgZm9udC13ZWln +aHQ6IDQwMDsgdGV4dC1hbGlnbjogc3RhcnQ7IHRleHQtaW5kZW50OiAwcHg7IHRleHQtdHJhbnNm +b3JtOiBub25lOyB0ZXh0LWRlY29yYXRpb24tdGhpY2tuZXNzOiBpbml0aWFsOyB0ZXh0LWRlY29y +YXRpb24tc3R5bGU6IGluaXRpYWw7IHRleHQtZGVjb3JhdGlvbi1jb2xvcjogaW5pdGlhbDsgY2xl +YXI6IGJvdGg7Ij48c3BhbiAgY2xhc3M9IiBfX2FsaXl1bl9ub2RlX2hhc19jb2xvciIgc3R5bGU9 +Im1hcmdpbjogMHB4OyBwYWRkaW5nOiAwcHg7IGJvcmRlcjogMHB4OyBvdXRsaW5lOiAwcHg7IGZv +bnQtZmFtaWx5OiAnTWljcm9zb2Z0IFlhaGVpJzsgZm9udC1zaXplOiAxM3B4OyBjb2xvcjogcmdi +KDE5MSwgMTkxLCAxOTEpOyI+5p2o6L2pPC9zcGFuPjwvZGl2PjxkaXYgIGNsYXNzPSIgX19hbGl5 +dW5fbm9kZV9oYXNfY29sb3IiIHN0eWxlPSJtYXJnaW46IDBweDsgcGFkZGluZzogMHB4OyBib3Jk +ZXI6IDBweDsgb3V0bGluZTogMHB4OyBjb2xvcjogcmdiKDAsIDAsIDApOyBmb250LWZhbWlseTog +VGFob21hLCBBcmlhbCwgU1RIZWl0aSwgU2ltU3VuOyBmb250LXNpemU6IDE0cHg7IGZvbnQtc3R5 +bGU6IG5vcm1hbDsgZm9udC12YXJpYW50LWxpZ2F0dXJlczogbm9ybWFsOyBmb250LXZhcmlhbnQt +Y2Fwczogbm9ybWFsOyBmb250LXdlaWdodDogNDAwOyB0ZXh0LWFsaWduOiBzdGFydDsgdGV4dC1p +bmRlbnQ6IDBweDsgdGV4dC10cmFuc2Zvcm06IG5vbmU7IHRleHQtZGVjb3JhdGlvbi10aGlja25l +c3M6IGluaXRpYWw7IHRleHQtZGVjb3JhdGlvbi1zdHlsZTogaW5pdGlhbDsgdGV4dC1kZWNvcmF0 +aW9uLWNvbG9yOiBpbml0aWFsOyBjbGVhcjogYm90aDsiPjxpbWcgIGRhdGEtYWxpbWFpbC1pbWct +cHJvY2Vzc2VkLXNxbS1lZGl0b3I9InRydWUiIGhlaWdodD0iNjgiIHNyYz0iY2lkOmQzNzI0YTgz +LWZhNWYtNGEzZS04N2M3LWU4NjdjNzUyNmFkYyIgd2lkdGg9IjMwMCIgc3R5bGU9Im1hcmdpbjog +MHB4OyBwYWRkaW5nOiAwcHg7IGJvcmRlcjogMHB4OyBvdXRsaW5lOiAwcHg7IHZlcnRpY2FsLWFs +aWduOiBib3R0b207Ij4mbmJzcDs8L2Rpdj48ZGl2ICBjbGFzcz0iIF9fYWxpeXVuX25vZGVfaGFz +X2NvbG9yIiBzdHlsZT0ibWFyZ2luOiAwcHg7IHBhZGRpbmc6IDBweDsgYm9yZGVyOiAwcHg7IG91 +dGxpbmU6IDBweDsgY29sb3I6IHJnYigwLCAwLCAwKTsgZm9udC1mYW1pbHk6IFRhaG9tYSwgQXJp +YWwsIFNUSGVpdGksIFNpbVN1bjsgZm9udC1zaXplOiAxNHB4OyBmb250LXN0eWxlOiBub3JtYWw7 +IGZvbnQtdmFyaWFudC1saWdhdHVyZXM6IG5vcm1hbDsgZm9udC12YXJpYW50LWNhcHM6IG5vcm1h +bDsgZm9udC13ZWlnaHQ6IDQwMDsgdGV4dC1hbGlnbjogc3RhcnQ7IHRleHQtaW5kZW50OiAwcHg7 +IHRleHQtdHJhbnNmb3JtOiBub25lOyB0ZXh0LWRlY29yYXRpb24tdGhpY2tuZXNzOiBpbml0aWFs +OyB0ZXh0LWRlY29yYXRpb24tc3R5bGU6IGluaXRpYWw7IHRleHQtZGVjb3JhdGlvbi1jb2xvcjog +aW5pdGlhbDsgY2xlYXI6IGJvdGg7Ij48c3BhbiAgY2xhc3M9IiBfX2FsaXl1bl9ub2RlX2hhc19j +b2xvciIgc3R5bGU9Im1hcmdpbjogMHB4OyBwYWRkaW5nOiAwcHg7IGJvcmRlcjogMHB4OyBvdXRs +aW5lOiAwcHg7IGZvbnQtZmFtaWx5OiAnTWljcm9zb2Z0IFlhaGVpJzsgY29sb3I6IHJnYigxOTEs +IDE5MSwgMTkxKTsiPuWcsOWdgO+8muS4reWbvcK35Y2X5Lqs6L2v5Lu26LC36L2v5Lu25aSn6YGT +MTHlj7foirHnpZ7lpKfljqYzRjwvc3Bhbj48L2Rpdj48ZGl2ICBjbGFzcz0iIF9fYWxpeXVuX25v +ZGVfaGFzX2NvbG9yIiBzdHlsZT0ibWFyZ2luOiAwcHg7IHBhZGRpbmc6IDBweDsgYm9yZGVyOiAw +cHg7IG91dGxpbmU6IDBweDsgY29sb3I6IHJnYigwLCAwLCAwKTsgZm9udC1mYW1pbHk6IFRhaG9t +YSwgQXJpYWwsIFNUSGVpdGksIFNpbVN1bjsgZm9udC1zaXplOiAxNHB4OyBmb250LXN0eWxlOiBu +b3JtYWw7IGZvbnQtdmFyaWFudC1saWdhdHVyZXM6IG5vcm1hbDsgZm9udC12YXJpYW50LWNhcHM6 +IG5vcm1hbDsgZm9udC13ZWlnaHQ6IDQwMDsgdGV4dC1hbGlnbjogc3RhcnQ7IHRleHQtaW5kZW50 +OiAwcHg7IHRleHQtdHJhbnNmb3JtOiBub25lOyB0ZXh0LWRlY29yYXRpb24tdGhpY2tuZXNzOiBp +bml0aWFsOyB0ZXh0LWRlY29yYXRpb24tc3R5bGU6IGluaXRpYWw7IHRleHQtZGVjb3JhdGlvbi1j +b2xvcjogaW5pdGlhbDsgY2xlYXI6IGJvdGg7Ij48c3BhbiAgY2xhc3M9IiBfX2FsaXl1bl9ub2Rl +X2hhc19jb2xvciIgc3R5bGU9Im1hcmdpbjogMHB4OyBwYWRkaW5nOiAwcHg7IGJvcmRlcjogMHB4 +OyBvdXRsaW5lOiAwcHg7IGZvbnQtZmFtaWx5OiAnTWljcm9zb2Z0IFlhaGVpJzsgY29sb3I6IHJn +YigxOTEsIDE5MSwgMTkxKTsiPuaJi+acuu+8mjE4NzI2MTI4NDg5PC9zcGFuPjwvZGl2PjxkaXYg +IGNsYXNzPSIgX19hbGl5dW5fbm9kZV9oYXNfY29sb3IiIHN0eWxlPSJtYXJnaW46IDBweDsgcGFk +ZGluZzogMHB4OyBib3JkZXI6IDBweDsgb3V0bGluZTogMHB4OyBjb2xvcjogcmdiKDAsIDAsIDAp +OyBmb250LWZhbWlseTogVGFob21hLCBBcmlhbCwgU1RIZWl0aSwgU2ltU3VuOyBmb250LXNpemU6 +IDE0cHg7IGZvbnQtc3R5bGU6IG5vcm1hbDsgZm9udC12YXJpYW50LWxpZ2F0dXJlczogbm9ybWFs +OyBmb250LXZhcmlhbnQtY2Fwczogbm9ybWFsOyBmb250LXdlaWdodDogNDAwOyB0ZXh0LWFsaWdu +OiBzdGFydDsgdGV4dC1pbmRlbnQ6IDBweDsgdGV4dC10cmFuc2Zvcm06IG5vbmU7IHRleHQtZGVj +b3JhdGlvbi10aGlja25lc3M6IGluaXRpYWw7IHRleHQtZGVjb3JhdGlvbi1zdHlsZTogaW5pdGlh +bDsgdGV4dC1kZWNvcmF0aW9uLWNvbG9yOiBpbml0aWFsOyBjbGVhcjogYm90aDsiPjxzcGFuICBj +bGFzcz0iIF9fYWxpeXVuX25vZGVfaGFzX2NvbG9yIiBzdHlsZT0ibWFyZ2luOiAwcHg7IHBhZGRp +bmc6IDBweDsgYm9yZGVyOiAwcHg7IG91dGxpbmU6IDBweDsgZm9udC1mYW1pbHk6ICdNaWNyb3Nv +ZnQgWWFoZWknOyBjb2xvcjogcmdiKDE5MSwgMTkxLCAxOTEpOyI+6YKu566x77yaeWFuZ3h1YW5A +d2l0c29mdC5jbjwvc3Bhbj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48L2JvZHk+PC9odG1sPjwv +ZGl2Pg== + +--=_mailmaster-6a18e4a4_0_4509_=-- + +--=_mailmaster-6a18e4a4_0_1238_= +Content-Type: application/octet-stream +Content-Transfer-Encoding: base64 +Content-ID: +Content-Disposition: inline; + filename="=?utf-8?B?57u05ouT56eR5oqALemCruS7tuetvuWQjWxvZ28ucG5n?=" + +iVBORw0KGgoAAAANSUhEUgAAASwAAABECAYAAAA7rQj2AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJ +bWFnZVJlYWR5ccllPAAAA4RpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdp +bj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6 +eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTQ1IDc5LjE2 +MzQ5OSwgMjAxOC8wOC8xMy0xNjo0MDoyMiAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJo +dHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlw +dGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEu +MC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVz +b3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1N +Ok9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDplYjhjYzQwMy1lNzZjLTQ5NDgtODFmOC1kNDIy +MmRkMTdhYjgiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NkVENzExMzg1MzBEMTFFQTg4QjNF +NEJFMUQyRjc1RkIiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NkVENzExMzc1MzBEMTFFQTg4 +QjNFNEJFMUQyRjc1RkIiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTkg +KFdpbmRvd3MpIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6 +ZmNkNTdlM2UtZThjYS05ZjQ2LWEzZTUtMWJlYmE2NjA5Y2FmIiBzdFJlZjpkb2N1bWVudElEPSJh +ZG9iZTpkb2NpZDpwaG90b3Nob3A6MzZkNmNjNTUtNTY3Yi01MTQ2LWEwYWYtMzBlMzEwMTMxNDFk +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 + +--=_mailmaster-6a18e4a4_0_1238_=-- diff --git a/media/inbound/2026-04-24_1804_G5开发周报_2026-04-20_--_2026-04-24---9d312031-4efc-45bf-9324-f4d152fe4ccd.eml b/media/inbound/2026-04-24_1804_G5开发周报_2026-04-20_--_2026-04-24---9d312031-4efc-45bf-9324-f4d152fe4ccd.eml new file mode 100644 index 0000000..d71f27b --- /dev/null +++ b/media/inbound/2026-04-24_1804_G5开发周报_2026-04-20_--_2026-04-24---9d312031-4efc-45bf-9324-f4d152fe4ccd.eml @@ -0,0 +1,559 @@ +Date: Fri, 24 Apr 2026 18:04:54 +0800 +From: =?utf-8?B?5p2o6L2p?= +To: =?utf-8?B?5YiY5by6?= +Cc: =?utf-8?B?5ZC0552/5Lic?= , =?utf-8?B?6ZmI5piO?= + , =?utf-8?B?5pu+6I6J?= +Message-ID: <0fd0cf13-9972-45a7-937c-4de189ac1ef9.yangxuan@witsoft.cn> +In-Reply-To: <6f5f5097-3c47-4d2e-bed8-db3387ffe5bb.yangxuan@witsoft.cn> +References: <6f5f5097-3c47-4d2e-bed8-db3387ffe5bb.yangxuan@witsoft.cn> +Subject: =?utf-8?B?RzXlvIDlj5HlkajmiqXjgJAyMDI2LTA0LTIwIC0tIDIwMjYtMDQt?= + =?utf-8?B?MjTjgJE=?= +MIME-Version: 1.0 +Content-Type: multipart/related; boundary="=_mailmaster-6a18e4a4_0_1238_=" + +--=_mailmaster-6a18e4a4_0_1238_= +Content-Type: multipart/alternative; boundary="=_mailmaster-6a18e4a4_0_4509_=" + +--=_mailmaster-6a18e4a4_0_4509_= +Content-Type: text/plain; charset="UTF-8" +Content-Transfer-Encoding: base64 + +6aG555uu77yaIOe7tOS6keaZuumAoEc177yI5bqT5a2Y566h55CG77yJCuaXpeacnwrkuLvopoHl +t6XkvZwK5ZGo5LiA77yIMDQuMjDvvIkKMS4gQUnlr7nor53pgJDmraXlrozmiJDpnIDmsYLlvIDl +j5EKMi4g55Sf5Lqn5YWl5bqT5aKe5Yqg6ZSA5ZSu5Y2V5Y+35p+l6K+iCjMuIOWIhuaekHdlYuWn +lOWklumAgOaWmeagoemqjOinhOWImSDmoLnmja7op4TliJnlop7liqDmoKHpqowKNC4g5Y676Zmk +QUnlvILluLjpgLvovpEK5ZGo5LqM77yIMDQuMjHvvIkKMS4g5byA5Y+R5pa55qGI6K+E5a6hCjIu +IOa1i+ivleeUqOS+i+ivhOWuoQozLiDlhaXlupPmjqXlj6PkvJjljJbpnIDmsYLlvIDlj5EK5ZGo +5LiJ77yIMDQuMjLvvIkKMS4g5omr56CB5Ye65YWl5bqTIOiwg+aLqOWFpeW6kwoyLiDmiavnoIHl +h7rlhaXlupMg5aeU5aSW6YCA5paZ5Y2VCuWRqOWbm++8iDA0LjIz77yJCjEuIG9wZW5hcGnmjqXl +j6Poh6rmtYsKMi4gYXBwIOiHquWKqOWFpeW6k+iBlOiwgwrlkajkupTvvIgwNC4yNO+8iQoxLiDn +lJ/kuqflhaXlupPigJzplIDllK7orqLljZXlj7figJ3mn6Xor6LovazmtYsKMi4g5aeU5aSW6YCA +5paZ5a+55aSW5o6l5Y+j6L2s5rWLCjMuIOmHh+i0reWFpeW6kyDnlJ/kuqflhaXlupMg5om55qyh +5Y+35aSE55CGIOi9rOa1iwo0LiDosIPmi6jlhaXlupPjgIHlp5TlpJbpgIDmlpnljZXjgIHnlJ/k +uqfpgIDmlpnjgIHmiqXlup/lhaXlupMg5omr56CB5Ye65YWl5bqT6L2s5rWLCuacrOWRqOmHjeeC +ueaIkOaenO+8mgoKICogCuWFpeW6k+S4juafpeivouWKn+iDveWinuW8ugoKICogCueUn+S6p+WF +peW6k+WinuWKoOKAnOmUgOWUruiuouWNleWPt+KAneafpeivou+8jOWujOaIkOi9rOa1i+OAggoK +ICogCuWFpeW6k+aOpeWPo+S8mOWMlumcgOaxguW8gOWPkeWujOaIkOOAggoKICogCuWnlOWklumA +gOaWmeS4muWKoeWujOWWhAoKICogCuWIhuaekFdlYuerr+WnlOWklumAgOaWmeagoemqjOinhOWI +me+8jOW5tuaMieinhOWImeWinuWKoOebuOW6lOagoemqjOOAggoKICogCuWnlOWklumAgOaWmeWv +ueWkluaOpeWPo+WujOaIkOi9rOa1i+OAggoKICogCuaJq+eggeWHuuWFpeW6k+WKn+iDveaJqeWx +lQoKICogCuWujOaIkOaJq+eggeWHuuWFpeW6k+S4reiwg+aLqOWFpeW6k+OAgeWnlOWklumAgOaW +meWNleeahOW8gOWPkeS4jui9rOa1i+OAggoKICogCuWQjOaXtuWujOaIkOeUn+S6p+mAgOaWmeOA +geaKpeW6n+WFpeW6k+eahOaJq+eggeWHuuWFpeW6k+i9rOa1i+OAggrlrZjlnKjpl67popjvvJog +5pegCkJlc3QgcmVnYXJkcywK5p2o6L2pCuWcsOWdgO+8muS4reWbvcK35Y2X5Lqs6L2v5Lu26LC3 +6L2v5Lu25aSn6YGTMTHlj7foirHnpZ7lpKfljqYzRgrmiYvmnLrvvJoxODcyNjEyODQ4OQrpgq7n +rrHvvJp5YW5neHVhbkB3aXRzb2Z0LmNuCg== + +--=_mailmaster-6a18e4a4_0_4509_= +Content-Type: text/html; charset="UTF-8" +Content-Transfer-Encoding: base64 + +PGRpdiBjbGFzcz0iX19hbGl5dW5fZW1haWxfYm9keV9ibG9jayI+PGh0bWwgPjxoZWFkID48L2hl +YWQ+PGJvZHkgPjxkaXYgIHN0eWxlPSJmb250LWZhbWlseTogVGFob21hLCBBcmlhbCwgU1RIZWl0 +aVNDLUxpZ2h0LCBTaW1TdW4iPjxkaXYgIHN0eWxlPSJmb250LWZhbWlseTogVGFob21hLCBBcmlh +bCwgU1RIZWl0aVNDLUxpZ2h0LCBTaW1TdW47IGNsZWFyOiBib3RoOyI+PHAgIGNsYXNzPSJtZC1l +bmQtYmxvY2sgbWQtcCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGxpbmUtaGVpZ2h0 +OiBpbmhlcml0OyBtYXJnaW46IDEycHggMHB4OyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0 +aW9uOiByZWxhdGl2ZTsgY29sb3I6IHJnYig1MSwgNTEsIDUxKTsgZm9udC1mYW1pbHk6ICdPcGVu +IFNhbnMnLCAnQ2xlYXIgU2FucycsICdIZWx2ZXRpY2EgTmV1ZScsIEhlbHZldGljYSwgQXJpYWws +IHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTZweDsgZm9udC1zdHlsZTogbm9ybWFsOyBmb250LXZh +cmlhbnQtbGlnYXR1cmVzOiBub3JtYWw7IGZvbnQtdmFyaWFudC1jYXBzOiBub3JtYWw7IGZvbnQt +d2VpZ2h0OiA0MDA7IGxldHRlci1zcGFjaW5nOiBub3JtYWw7IHRleHQtYWxpZ246IHN0YXJ0OyB0 +ZXh0LWluZGVudDogMHB4OyB0ZXh0LXRyYW5zZm9ybTogbm9uZTsgd29yZC1zcGFjaW5nOiAwcHg7 +IHRleHQtZGVjb3JhdGlvbi1zdHlsZTogaW5pdGlhbDsgdGV4dC1kZWNvcmF0aW9uLWNvbG9yOiBp +bml0aWFsOyI+PHNwYW4gIGNsYXNzPSJtZC1wbGFpbiIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRl +ci1ib3g7IGZvbnQtd2VpZ2h0OiA3MDA7Ij7pobnnm67vvJo8L3NwYW4+PHNwYW4gIGNsYXNzPSJt +ZC1wbGFpbiIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij4g57u05LqR5pm66YCgRzXv +vIjlupPlrZjnrqHnkIbvvIk8L3NwYW4+PC9wPjxkaXYgPjx0YWJsZSAgY2xhc3M9Im1kLXRhYmxl +IiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBz +ZTsgYm9yZGVyLXNwYWNpbmc6IDBweDsgb3ZlcmZsb3c6IGF1dG87IGJyZWFrLWluc2lkZTogYXV0 +bzsgdGV4dC1hbGlnbjogbGVmdDsgbWFyZ2luOiAwcHg7IHBhZGRpbmc6IDBweDsgd29yZC1icmVh +azogaW5pdGlhbDsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyB3aWR0aDogNzMxcHg7Ij48dGhlYWQg +IHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBkaXNwbGF5OiB0YWJsZS1oZWFkZXItZ3Jv +dXA7IGJhY2tncm91bmQtY29sb3I6IHJnYigyNDgsIDI0OCwgMjQ4KTsiPjx0ciAgY2xhc3M9Im1k +LWVuZC1ibG9jayIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGJyZWFrLWluc2lkZTog +YXZvaWQ7IGJyZWFrLWFmdGVyOiBhdXRvOyBib3JkZXItdG9wOiAxcHggc29saWQgcmdiKDIyMywg +MjI2LCAyMjkpOyBtYXJnaW46IDBweDsgcGFkZGluZzogMHB4OyI+PHRkICBzdHlsZT0iYm94LXNp +emluZzogYm9yZGVyLWJveDsgcGFkZGluZzogNnB4IDEzcHg7IGJvcmRlci13aWR0aDogMXB4IDFw +eCAwcHg7IGJvcmRlci10b3Atc3R5bGU6IHNvbGlkOyBib3JkZXItcmlnaHQtc3R5bGU6IHNvbGlk +OyBib3JkZXItbGVmdC1zdHlsZTogc29saWQ7IGJvcmRlci10b3AtY29sb3I6IHJnYigyMjMsIDIy +NiwgMjI5KTsgYm9yZGVyLXJpZ2h0LWNvbG9yOiByZ2IoMjIzLCAyMjYsIDIyOSk7IGJvcmRlci1s +ZWZ0LWNvbG9yOiByZ2IoMjIzLCAyMjYsIDIyOSk7IGJvcmRlci1pbWFnZTogaW5pdGlhbDsgYm9y +ZGVyLWJvdHRvbS1zdHlsZTogaW5pdGlhbDsgYm9yZGVyLWJvdHRvbS1jb2xvcjogaW5pdGlhbDsg +bWFyZ2luOiAwcHg7Ij48ZGl2ICBzdHlsZT0iZm9udC13ZWlnaHQ6IDcwMDsgdGV4dC1hbGlnbjog +Y2VudGVyOyI+PHNwYW4gIGNsYXNzPSJtZC1wbGFpbiIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRl +ci1ib3g7IGRpc3BsYXk6IGlubGluZS1ibG9jazsgbWluLXdpZHRoOiAxY2g7IHdpZHRoOiAzMThw +eDsgbWluLWhlaWdodDogMTBweDsiPuaXpeacnzwvc3Bhbj48L2Rpdj48L3RkPjx0ZCAgd2lkdGg9 +IjM1NyIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IHBhZGRpbmc6IDZweCAxM3B4OyBi +b3JkZXItd2lkdGg6IDFweCAxcHggMHB4OyBib3JkZXItdG9wLXN0eWxlOiBzb2xpZDsgYm9yZGVy +LXJpZ2h0LXN0eWxlOiBzb2xpZDsgYm9yZGVyLWxlZnQtc3R5bGU6IHNvbGlkOyBib3JkZXItdG9w +LWNvbG9yOiByZ2IoMjIzLCAyMjYsIDIyOSk7IGJvcmRlci1yaWdodC1jb2xvcjogcmdiKDIyMywg +MjI2LCAyMjkpOyBib3JkZXItbGVmdC1jb2xvcjogcmdiKDIyMywgMjI2LCAyMjkpOyBib3JkZXIt +aW1hZ2U6IGluaXRpYWw7IGJvcmRlci1ib3R0b20tc3R5bGU6IGluaXRpYWw7IGJvcmRlci1ib3R0 +b20tY29sb3I6IGluaXRpYWw7IG1hcmdpbjogMHB4OyI+PGRpdiAgc3R5bGU9ImZvbnQtd2VpZ2h0 +OiA3MDA7IHRleHQtYWxpZ246IGNlbnRlcjsiPjxzcGFuICBjbGFzcz0ibWQtcGxhaW4iIHN0eWxl +PSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IG1pbi13aWR0 +aDogMWNoOyB3aWR0aDogNTkycHg7IG1pbi1oZWlnaHQ6IDEwcHg7Ij7kuLvopoHlt6XkvZw8L3Nw +YW4+PC9kaXY+PC90ZD48L3RyPjwvdGhlYWQ+PHRib2R5ICBzdHlsZT0iYm94LXNpemluZzogYm9y +ZGVyLWJveDsiPjx0ciAgY2xhc3M9Im1kLWVuZC1ibG9jayIgc3R5bGU9ImJveC1zaXppbmc6IGJv +cmRlci1ib3g7IGJyZWFrLWluc2lkZTogYXZvaWQ7IGJyZWFrLWFmdGVyOiBhdXRvOyBib3JkZXIt +dG9wOiAxcHggc29saWQgcmdiKDIyMywgMjI2LCAyMjkpOyBtYXJnaW46IDBweDsgcGFkZGluZzog +MHB4OyI+PHRkICBjbGFzcz0iIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgcGFkZGlu +ZzogNnB4IDEzcHg7IGJvcmRlcjogMXB4IHNvbGlkIHJnYigyMjMsIDIyNiwgMjI5KTsgbWFyZ2lu +OiAwcHg7Ij48c3BhbiAgY2xhc3M9Im1kLXBsYWluIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVy +LWJveDsgZGlzcGxheTogaW5saW5lLWJsb2NrOyBtaW4td2lkdGg6IDFjaDsgd2lkdGg6IDMxOHB4 +OyBtaW4taGVpZ2h0OiAxMHB4OyI+5ZGo5LiA77yIMDQuMjDvvIk8L3NwYW4+PC90ZD48dGQgIGNs +YXNzPSIiIHdpZHRoPSIzNTciIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBwYWRkaW5n +OiA2cHggMTNweDsgYm9yZGVyOiAxcHggc29saWQgcmdiKDIyMywgMjI2LCAyMjkpOyBtYXJnaW46 +IDBweDsiPjxkaXYgIGNsYXNzPSIiPjxzcGFuICBjbGFzcz0ibWQtcGxhaW4iIHN0eWxlPSJib3gt +c2l6aW5nOiBib3JkZXItYm94OyBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IG1pbi13aWR0aDogMWNo +OyB3aWR0aDogMzE4cHg7IG1pbi1oZWlnaHQ6IDEwcHg7Ij4xLiZuYnNwO0FJ5a+56K+d6YCQ5q2l +5a6M5oiQ6ZyA5rGC5byA5Y+RPGJyICBzdHlsZT0iY29sb3I6IHJnYigwLCAwLCAwKTsgZm9udC1m +YW1pbHk6IGFyaWFsLCBoZWx2ZXRpY2EsIGNsZWFuLCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDEy +cHg7IGZvbnQtc3R5bGU6IG5vcm1hbDsgZm9udC12YXJpYW50LWxpZ2F0dXJlczogbm9ybWFsOyBm +b250LXZhcmlhbnQtY2Fwczogbm9ybWFsOyBmb250LXdlaWdodDogNDAwOyBsZXR0ZXItc3BhY2lu +Zzogbm9ybWFsOyBvcnBoYW5zOiAyOyB0ZXh0LWFsaWduOiBsZWZ0OyB0ZXh0LWluZGVudDogMHB4 +OyB0ZXh0LXRyYW5zZm9ybTogbm9uZTsgd2lkb3dzOiAyOyB3b3JkLXNwYWNpbmc6IDBweDsgLXdl +YmtpdC10ZXh0LXN0cm9rZS13aWR0aDogMHB4OyB3aGl0ZS1zcGFjZTogbm9ybWFsOyBiYWNrZ3Jv +dW5kLWNvbG9yOiByZ2IoMjQ1LCAyNDUsIDI0NSk7IHRleHQtZGVjb3JhdGlvbi10aGlja25lc3M6 +IGluaXRpYWw7IHRleHQtZGVjb3JhdGlvbi1zdHlsZTogaW5pdGlhbDsgdGV4dC1kZWNvcmF0aW9u +LWNvbG9yOiBpbml0aWFsOyI+Mi4mbmJzcDvnlJ/kuqflhaXlupPlop7liqDplIDllK7ljZXlj7fm +n6Xor6I8YnIgIHN0eWxlPSJjb2xvcjogcmdiKDAsIDAsIDApOyBmb250LWZhbWlseTogYXJpYWws +IGhlbHZldGljYSwgY2xlYW4sIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTJweDsgZm9udC1zdHls +ZTogbm9ybWFsOyBmb250LXZhcmlhbnQtbGlnYXR1cmVzOiBub3JtYWw7IGZvbnQtdmFyaWFudC1j +YXBzOiBub3JtYWw7IGZvbnQtd2VpZ2h0OiA0MDA7IGxldHRlci1zcGFjaW5nOiBub3JtYWw7IG9y +cGhhbnM6IDI7IHRleHQtYWxpZ246IGxlZnQ7IHRleHQtaW5kZW50OiAwcHg7IHRleHQtdHJhbnNm +b3JtOiBub25lOyB3aWRvd3M6IDI7IHdvcmQtc3BhY2luZzogMHB4OyAtd2Via2l0LXRleHQtc3Ry +b2tlLXdpZHRoOiAwcHg7IHdoaXRlLXNwYWNlOiBub3JtYWw7IGJhY2tncm91bmQtY29sb3I6IHJn +YigyNDUsIDI0NSwgMjQ1KTsgdGV4dC1kZWNvcmF0aW9uLXRoaWNrbmVzczogaW5pdGlhbDsgdGV4 +dC1kZWNvcmF0aW9uLXN0eWxlOiBpbml0aWFsOyB0ZXh0LWRlY29yYXRpb24tY29sb3I6IGluaXRp +YWw7Ij4zLiZuYnNwO+WIhuaekHdlYuWnlOWklumAgOaWmeagoemqjOinhOWImSZuYnNwO+agueaN +ruinhOWImeWinuWKoOagoemqjDxiciAgc3R5bGU9ImNvbG9yOiByZ2IoMCwgMCwgMCk7IGZvbnQt +ZmFtaWx5OiBhcmlhbCwgaGVsdmV0aWNhLCBjbGVhbiwgc2Fucy1zZXJpZjsgZm9udC1zaXplOiAx +MnB4OyBmb250LXN0eWxlOiBub3JtYWw7IGZvbnQtdmFyaWFudC1saWdhdHVyZXM6IG5vcm1hbDsg +Zm9udC12YXJpYW50LWNhcHM6IG5vcm1hbDsgZm9udC13ZWlnaHQ6IDQwMDsgbGV0dGVyLXNwYWNp +bmc6IG5vcm1hbDsgb3JwaGFuczogMjsgdGV4dC1hbGlnbjogbGVmdDsgdGV4dC1pbmRlbnQ6IDBw +eDsgdGV4dC10cmFuc2Zvcm06IG5vbmU7IHdpZG93czogMjsgd29yZC1zcGFjaW5nOiAwcHg7IC13 +ZWJraXQtdGV4dC1zdHJva2Utd2lkdGg6IDBweDsgd2hpdGUtc3BhY2U6IG5vcm1hbDsgYmFja2dy +b3VuZC1jb2xvcjogcmdiKDI0NSwgMjQ1LCAyNDUpOyB0ZXh0LWRlY29yYXRpb24tdGhpY2tuZXNz +OiBpbml0aWFsOyB0ZXh0LWRlY29yYXRpb24tc3R5bGU6IGluaXRpYWw7IHRleHQtZGVjb3JhdGlv +bi1jb2xvcjogaW5pdGlhbDsiPjQuJm5ic3A75Y676ZmkQUnlvILluLjpgLvovpE8L3NwYW4+PC9k +aXY+PC90ZD48L3RyPjx0ciAgY2xhc3M9Im1kLWVuZC1ibG9jayIgc3R5bGU9ImJveC1zaXppbmc6 +IGJvcmRlci1ib3g7IGJyZWFrLWluc2lkZTogYXZvaWQ7IGJyZWFrLWFmdGVyOiBhdXRvOyBib3Jk +ZXItdG9wOiAxcHggc29saWQgcmdiKDIyMywgMjI2LCAyMjkpOyBtYXJnaW46IDBweDsgcGFkZGlu +ZzogMHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjQ4LCAyNDgsIDI0OCk7Ij48dGQgIGNsYXNz +PSIiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBwYWRkaW5nOiA2cHggMTNweDsgYm9y +ZGVyOiAxcHggc29saWQgcmdiKDIyMywgMjI2LCAyMjkpOyBtYXJnaW46IDBweDsiPjxzcGFuICBj +bGFzcz0ibWQtcGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBkaXNwbGF5OiBp +bmxpbmUtYmxvY2s7IG1pbi13aWR0aDogMWNoOyB3aWR0aDogMzE4cHg7IG1pbi1oZWlnaHQ6IDEw +cHg7Ij7lkajkuozvvIgwNC4yMe+8iTwvc3Bhbj48L3RkPjx0ZCAgY2xhc3M9IiIgd2lkdGg9IjM1 +NyIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IHBhZGRpbmc6IDZweCAxM3B4OyBib3Jk +ZXI6IDFweCBzb2xpZCByZ2IoMjIzLCAyMjYsIDIyOSk7IG1hcmdpbjogMHB4OyI+PGRpdiAgY2xh +c3M9IiI+PHNwYW4gIGNsYXNzPSJtZC1wbGFpbiIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1i +b3g7IGRpc3BsYXk6IGlubGluZS1ibG9jazsgbWluLXdpZHRoOiAxY2g7IHdpZHRoOiAzMThweDsg +bWluLWhlaWdodDogMTBweDsiPjEuJm5ic3A75byA5Y+R5pa55qGI6K+E5a6hPGJyICBzdHlsZT0i +Y29sb3I6IHJnYigwLCAwLCAwKTsgZm9udC1mYW1pbHk6IGFyaWFsLCBoZWx2ZXRpY2EsIGNsZWFu +LCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDEycHg7IGZvbnQtc3R5bGU6IG5vcm1hbDsgZm9udC12 +YXJpYW50LWxpZ2F0dXJlczogbm9ybWFsOyBmb250LXZhcmlhbnQtY2Fwczogbm9ybWFsOyBmb250 +LXdlaWdodDogNDAwOyBsZXR0ZXItc3BhY2luZzogbm9ybWFsOyBvcnBoYW5zOiAyOyB0ZXh0LWFs +aWduOiBsZWZ0OyB0ZXh0LWluZGVudDogMHB4OyB0ZXh0LXRyYW5zZm9ybTogbm9uZTsgd2lkb3dz +OiAyOyB3b3JkLXNwYWNpbmc6IDBweDsgLXdlYmtpdC10ZXh0LXN0cm9rZS13aWR0aDogMHB4OyB3 +aGl0ZS1zcGFjZTogbm9ybWFsOyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjQ1LCAyNDUsIDI0NSk7 +IHRleHQtZGVjb3JhdGlvbi10aGlja25lc3M6IGluaXRpYWw7IHRleHQtZGVjb3JhdGlvbi1zdHls +ZTogaW5pdGlhbDsgdGV4dC1kZWNvcmF0aW9uLWNvbG9yOiBpbml0aWFsOyI+Mi4mbmJzcDvmtYvo +r5XnlKjkvovor4TlrqE8YnIgIHN0eWxlPSJjb2xvcjogcmdiKDAsIDAsIDApOyBmb250LWZhbWls +eTogYXJpYWwsIGhlbHZldGljYSwgY2xlYW4sIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTJweDsg +Zm9udC1zdHlsZTogbm9ybWFsOyBmb250LXZhcmlhbnQtbGlnYXR1cmVzOiBub3JtYWw7IGZvbnQt +dmFyaWFudC1jYXBzOiBub3JtYWw7IGZvbnQtd2VpZ2h0OiA0MDA7IGxldHRlci1zcGFjaW5nOiBu +b3JtYWw7IG9ycGhhbnM6IDI7IHRleHQtYWxpZ246IGxlZnQ7IHRleHQtaW5kZW50OiAwcHg7IHRl +eHQtdHJhbnNmb3JtOiBub25lOyB3aWRvd3M6IDI7IHdvcmQtc3BhY2luZzogMHB4OyAtd2Via2l0 +LXRleHQtc3Ryb2tlLXdpZHRoOiAwcHg7IHdoaXRlLXNwYWNlOiBub3JtYWw7IGJhY2tncm91bmQt +Y29sb3I6IHJnYigyNDUsIDI0NSwgMjQ1KTsgdGV4dC1kZWNvcmF0aW9uLXRoaWNrbmVzczogaW5p +dGlhbDsgdGV4dC1kZWNvcmF0aW9uLXN0eWxlOiBpbml0aWFsOyB0ZXh0LWRlY29yYXRpb24tY29s +b3I6IGluaXRpYWw7Ij4zLiZuYnNwO+WFpeW6k+aOpeWPo+S8mOWMlumcgOaxguW8gOWPkTwvc3Bh +bj48L2Rpdj48L3RkPjwvdHI+PHRyICBjbGFzcz0ibWQtZW5kLWJsb2NrIiBzdHlsZT0iYm94LXNp +emluZzogYm9yZGVyLWJveDsgYnJlYWstaW5zaWRlOiBhdm9pZDsgYnJlYWstYWZ0ZXI6IGF1dG87 +IGJvcmRlci10b3A6IDFweCBzb2xpZCByZ2IoMjIzLCAyMjYsIDIyOSk7IG1hcmdpbjogMHB4OyBw +YWRkaW5nOiAwcHg7Ij48dGQgIGNsYXNzPSIiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94 +OyBwYWRkaW5nOiA2cHggMTNweDsgYm9yZGVyOiAxcHggc29saWQgcmdiKDIyMywgMjI2LCAyMjkp +OyBtYXJnaW46IDBweDsiPjxzcGFuICBjbGFzcz0ibWQtcGxhaW4iIHN0eWxlPSJib3gtc2l6aW5n +OiBib3JkZXItYm94OyBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IG1pbi13aWR0aDogMWNoOyB3aWR0 +aDogMzE4cHg7IG1pbi1oZWlnaHQ6IDEwcHg7Ij7lkajkuInvvIgwNC4yMu+8iTwvc3Bhbj48L3Rk +Pjx0ZCAgY2xhc3M9IiIgd2lkdGg9IjM1NyIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7 +IHBhZGRpbmc6IDZweCAxM3B4OyBib3JkZXI6IDFweCBzb2xpZCByZ2IoMjIzLCAyMjYsIDIyOSk7 +IG1hcmdpbjogMHB4OyI+PGRpdiAgY2xhc3M9IiI+PHNwYW4gIGNsYXNzPSJtZC1wbGFpbiIgc3R5 +bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGRpc3BsYXk6IGlubGluZS1ibG9jazsgbWluLXdp +ZHRoOiAxY2g7IHdpZHRoOiAzMThweDsgbWluLWhlaWdodDogMTBweDsiPjEuJm5ic3A75omr56CB +5Ye65YWl5bqTJm5ic3A76LCD5ouo5YWl5bqTPGJyICBzdHlsZT0iY29sb3I6IHJnYigwLCAwLCAw +KTsgZm9udC1mYW1pbHk6IGFyaWFsLCBoZWx2ZXRpY2EsIGNsZWFuLCBzYW5zLXNlcmlmOyBmb250 +LXNpemU6IDEycHg7IGZvbnQtc3R5bGU6IG5vcm1hbDsgZm9udC12YXJpYW50LWxpZ2F0dXJlczog +bm9ybWFsOyBmb250LXZhcmlhbnQtY2Fwczogbm9ybWFsOyBmb250LXdlaWdodDogNDAwOyBsZXR0 +ZXItc3BhY2luZzogbm9ybWFsOyBvcnBoYW5zOiAyOyB0ZXh0LWFsaWduOiBsZWZ0OyB0ZXh0LWlu +ZGVudDogMHB4OyB0ZXh0LXRyYW5zZm9ybTogbm9uZTsgd2lkb3dzOiAyOyB3b3JkLXNwYWNpbmc6 +IDBweDsgLXdlYmtpdC10ZXh0LXN0cm9rZS13aWR0aDogMHB4OyB3aGl0ZS1zcGFjZTogbm9ybWFs +OyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjQ1LCAyNDUsIDI0NSk7IHRleHQtZGVjb3JhdGlvbi10 +aGlja25lc3M6IGluaXRpYWw7IHRleHQtZGVjb3JhdGlvbi1zdHlsZTogaW5pdGlhbDsgdGV4dC1k +ZWNvcmF0aW9uLWNvbG9yOiBpbml0aWFsOyI+Mi4mbmJzcDvmiavnoIHlh7rlhaXlupMmbmJzcDvl +p5TlpJbpgIDmlpnljZU8L3NwYW4+PC9kaXY+PC90ZD48L3RyPjx0ciAgY2xhc3M9Im1kLWVuZC1i +bG9jayIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGJyZWFrLWluc2lkZTogYXZvaWQ7 +IGJyZWFrLWFmdGVyOiBhdXRvOyBib3JkZXItdG9wOiAxcHggc29saWQgcmdiKDIyMywgMjI2LCAy +MjkpOyBtYXJnaW46IDBweDsgcGFkZGluZzogMHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjQ4 +LCAyNDgsIDI0OCk7Ij48dGQgIGNsYXNzPSIiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94 +OyBwYWRkaW5nOiA2cHggMTNweDsgYm9yZGVyOiAxcHggc29saWQgcmdiKDIyMywgMjI2LCAyMjkp +OyBtYXJnaW46IDBweDsiPjxzcGFuICBjbGFzcz0ibWQtcGxhaW4iIHN0eWxlPSJib3gtc2l6aW5n +OiBib3JkZXItYm94OyBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IG1pbi13aWR0aDogMWNoOyB3aWR0 +aDogMzE4cHg7IG1pbi1oZWlnaHQ6IDEwcHg7Ij7lkajlm5vvvIgwNC4yM++8iTwvc3Bhbj48L3Rk +Pjx0ZCAgY2xhc3M9IiIgd2lkdGg9IjM1NyIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7 +IHBhZGRpbmc6IDZweCAxM3B4OyBib3JkZXI6IDFweCBzb2xpZCByZ2IoMjIzLCAyMjYsIDIyOSk7 +IG1hcmdpbjogMHB4OyI+PGRpdiAgY2xhc3M9IiI+PHNwYW4gIGNsYXNzPSJtZC1wbGFpbiIgc3R5 +bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGRpc3BsYXk6IGlubGluZS1ibG9jazsgbWluLXdp +ZHRoOiAxY2g7IHdpZHRoOiAzMThweDsgbWluLWhlaWdodDogMTBweDsiPjEuJm5ic3A7b3BlbmFw +aeaOpeWPo+iHqua1izxiciAgc3R5bGU9ImNvbG9yOiByZ2IoMCwgMCwgMCk7IGZvbnQtZmFtaWx5 +OiBhcmlhbCwgaGVsdmV0aWNhLCBjbGVhbiwgc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMnB4OyBm +b250LXN0eWxlOiBub3JtYWw7IGZvbnQtdmFyaWFudC1saWdhdHVyZXM6IG5vcm1hbDsgZm9udC12 +YXJpYW50LWNhcHM6IG5vcm1hbDsgZm9udC13ZWlnaHQ6IDQwMDsgbGV0dGVyLXNwYWNpbmc6IG5v +cm1hbDsgb3JwaGFuczogMjsgdGV4dC1hbGlnbjogbGVmdDsgdGV4dC1pbmRlbnQ6IDBweDsgdGV4 +dC10cmFuc2Zvcm06IG5vbmU7IHdpZG93czogMjsgd29yZC1zcGFjaW5nOiAwcHg7IC13ZWJraXQt +dGV4dC1zdHJva2Utd2lkdGg6IDBweDsgd2hpdGUtc3BhY2U6IG5vcm1hbDsgYmFja2dyb3VuZC1j +b2xvcjogcmdiKDI0NSwgMjQ1LCAyNDUpOyB0ZXh0LWRlY29yYXRpb24tdGhpY2tuZXNzOiBpbml0 +aWFsOyB0ZXh0LWRlY29yYXRpb24tc3R5bGU6IGluaXRpYWw7IHRleHQtZGVjb3JhdGlvbi1jb2xv +cjogaW5pdGlhbDsiPjIuJm5ic3A7YXBwJm5ic3A76Ieq5Yqo5YWl5bqT6IGU6LCDPC9zcGFuPjwv +ZGl2PjwvdGQ+PC90cj48dHIgIGNsYXNzPSJtZC1lbmQtYmxvY2siIHN0eWxlPSJib3gtc2l6aW5n +OiBib3JkZXItYm94OyBicmVhay1pbnNpZGU6IGF2b2lkOyBicmVhay1hZnRlcjogYXV0bzsgYm9y +ZGVyLXRvcDogMXB4IHNvbGlkIHJnYigyMjMsIDIyNiwgMjI5KTsgbWFyZ2luOiAwcHg7IHBhZGRp +bmc6IDBweDsiPjx0ZCAgY2xhc3M9IiIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IHBh +ZGRpbmc6IDZweCAxM3B4OyBib3JkZXI6IDFweCBzb2xpZCByZ2IoMjIzLCAyMjYsIDIyOSk7IG1h +cmdpbjogMHB4OyI+PHNwYW4gIGNsYXNzPSJtZC1wbGFpbiIgc3R5bGU9ImJveC1zaXppbmc6IGJv +cmRlci1ib3g7IGRpc3BsYXk6IGlubGluZS1ibG9jazsgbWluLXdpZHRoOiAxY2g7IHdpZHRoOiAz +MThweDsgbWluLWhlaWdodDogMTBweDsiPuWRqOS6lO+8iDA0LjI077yJPC9zcGFuPjwvdGQ+PHRk +ICBjbGFzcz0iIiB3aWR0aD0iMzU3IiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgcGFk +ZGluZzogNnB4IDEzcHg7IGJvcmRlcjogMXB4IHNvbGlkIHJnYigyMjMsIDIyNiwgMjI5KTsgbWFy +Z2luOiAwcHg7Ij48ZGl2ICBjbGFzcz0iIj48c3BhbiAgY2xhc3M9Im1kLXBsYWluIiBzdHlsZT0i +Ym94LXNpemluZzogYm9yZGVyLWJveDsgZGlzcGxheTogaW5saW5lLWJsb2NrOyBtaW4td2lkdGg6 +IDFjaDsgd2lkdGg6IDMxOHB4OyBtaW4taGVpZ2h0OiAxMHB4OyI+MS4mbmJzcDvnlJ/kuqflhaXl +upPigJzplIDllK7orqLljZXlj7figJ3mn6Xor6LovazmtYs8YnIgIHN0eWxlPSJjb2xvcjogcmdi +KDAsIDAsIDApOyBmb250LWZhbWlseTogYXJpYWwsIGhlbHZldGljYSwgY2xlYW4sIHNhbnMtc2Vy +aWY7IGZvbnQtc2l6ZTogMTJweDsgZm9udC1zdHlsZTogbm9ybWFsOyBmb250LXZhcmlhbnQtbGln +YXR1cmVzOiBub3JtYWw7IGZvbnQtdmFyaWFudC1jYXBzOiBub3JtYWw7IGZvbnQtd2VpZ2h0OiA0 +MDA7IGxldHRlci1zcGFjaW5nOiBub3JtYWw7IG9ycGhhbnM6IDI7IHRleHQtYWxpZ246IGxlZnQ7 +IHRleHQtaW5kZW50OiAwcHg7IHRleHQtdHJhbnNmb3JtOiBub25lOyB3aWRvd3M6IDI7IHdvcmQt +c3BhY2luZzogMHB4OyAtd2Via2l0LXRleHQtc3Ryb2tlLXdpZHRoOiAwcHg7IHdoaXRlLXNwYWNl +OiBub3JtYWw7IGJhY2tncm91bmQtY29sb3I6IHJnYigyNDUsIDI0NSwgMjQ1KTsgdGV4dC1kZWNv +cmF0aW9uLXRoaWNrbmVzczogaW5pdGlhbDsgdGV4dC1kZWNvcmF0aW9uLXN0eWxlOiBpbml0aWFs +OyB0ZXh0LWRlY29yYXRpb24tY29sb3I6IGluaXRpYWw7Ij4yLiZuYnNwO+WnlOWklumAgOaWmeWv +ueWkluaOpeWPo+i9rOa1izxiciAgc3R5bGU9ImNvbG9yOiByZ2IoMCwgMCwgMCk7IGZvbnQtZmFt +aWx5OiBhcmlhbCwgaGVsdmV0aWNhLCBjbGVhbiwgc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMnB4 +OyBmb250LXN0eWxlOiBub3JtYWw7IGZvbnQtdmFyaWFudC1saWdhdHVyZXM6IG5vcm1hbDsgZm9u +dC12YXJpYW50LWNhcHM6IG5vcm1hbDsgZm9udC13ZWlnaHQ6IDQwMDsgbGV0dGVyLXNwYWNpbmc6 +IG5vcm1hbDsgb3JwaGFuczogMjsgdGV4dC1hbGlnbjogbGVmdDsgdGV4dC1pbmRlbnQ6IDBweDsg +dGV4dC10cmFuc2Zvcm06IG5vbmU7IHdpZG93czogMjsgd29yZC1zcGFjaW5nOiAwcHg7IC13ZWJr +aXQtdGV4dC1zdHJva2Utd2lkdGg6IDBweDsgd2hpdGUtc3BhY2U6IG5vcm1hbDsgYmFja2dyb3Vu +ZC1jb2xvcjogcmdiKDI0NSwgMjQ1LCAyNDUpOyB0ZXh0LWRlY29yYXRpb24tdGhpY2tuZXNzOiBp +bml0aWFsOyB0ZXh0LWRlY29yYXRpb24tc3R5bGU6IGluaXRpYWw7IHRleHQtZGVjb3JhdGlvbi1j +b2xvcjogaW5pdGlhbDsiPjMuJm5ic3A76YeH6LSt5YWl5bqTJm5ic3A755Sf5Lqn5YWl5bqTJm5i +c3A75om55qyh5Y+35aSE55CGJm5ic3A76L2s5rWLPGJyICBzdHlsZT0iY29sb3I6IHJnYigwLCAw +LCAwKTsgZm9udC1mYW1pbHk6IGFyaWFsLCBoZWx2ZXRpY2EsIGNsZWFuLCBzYW5zLXNlcmlmOyBm +b250LXNpemU6IDEycHg7IGZvbnQtc3R5bGU6IG5vcm1hbDsgZm9udC12YXJpYW50LWxpZ2F0dXJl +czogbm9ybWFsOyBmb250LXZhcmlhbnQtY2Fwczogbm9ybWFsOyBmb250LXdlaWdodDogNDAwOyBs +ZXR0ZXItc3BhY2luZzogbm9ybWFsOyBvcnBoYW5zOiAyOyB0ZXh0LWFsaWduOiBsZWZ0OyB0ZXh0 +LWluZGVudDogMHB4OyB0ZXh0LXRyYW5zZm9ybTogbm9uZTsgd2lkb3dzOiAyOyB3b3JkLXNwYWNp +bmc6IDBweDsgLXdlYmtpdC10ZXh0LXN0cm9rZS13aWR0aDogMHB4OyB3aGl0ZS1zcGFjZTogbm9y +bWFsOyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjQ1LCAyNDUsIDI0NSk7IHRleHQtZGVjb3JhdGlv +bi10aGlja25lc3M6IGluaXRpYWw7IHRleHQtZGVjb3JhdGlvbi1zdHlsZTogaW5pdGlhbDsgdGV4 +dC1kZWNvcmF0aW9uLWNvbG9yOiBpbml0aWFsOyI+NC4mbmJzcDvosIPmi6jlhaXlupPjgIHlp5Tl +pJbpgIDmlpnljZXjgIHnlJ/kuqfpgIDmlpnjgIHmiqXlup/lhaXlupMmbmJzcDvmiavnoIHlh7rl +haXlupPovazmtYs8L3NwYW4+PC9kaXY+PC90ZD48L3RyPjwvdGJvZHk+PC90YWJsZT48L2Rpdj48 +ZGl2ICBjbGFzcz0ibWQtaHIgbWQtZW5kLWJsb2NrIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVy +LWJveDsgY29sb3I6IHJnYig1MSwgNTEsIDUxKTsgZm9udC1mYW1pbHk6ICdPcGVuIFNhbnMnLCAn +Q2xlYXIgU2FucycsICdIZWx2ZXRpY2EgTmV1ZScsIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2Vy +aWY7IGZvbnQtc2l6ZTogMTZweDsgZm9udC1zdHlsZTogbm9ybWFsOyBmb250LXZhcmlhbnQtbGln +YXR1cmVzOiBub3JtYWw7IGZvbnQtdmFyaWFudC1jYXBzOiBub3JtYWw7IGZvbnQtd2VpZ2h0OiA0 +MDA7IGxldHRlci1zcGFjaW5nOiBub3JtYWw7IHRleHQtYWxpZ246IHN0YXJ0OyB0ZXh0LWluZGVu +dDogMHB4OyB0ZXh0LXRyYW5zZm9ybTogbm9uZTsgd2hpdGUtc3BhY2U6IG5vcm1hbDsgd29yZC1z +cGFjaW5nOiAwcHg7IHRleHQtZGVjb3JhdGlvbi1zdHlsZTogaW5pdGlhbDsgdGV4dC1kZWNvcmF0 +aW9uLWNvbG9yOiBpbml0aWFsOyI+PGhyICBzdHlsZT0iYm94LXNpemluZzogY29udGVudC1ib3g7 +IGhlaWdodDogMnB4OyBtYXJnaW46IDE2cHggMHB4OyBib3JkZXI6IDBweCBub25lOyBwYWRkaW5n +OiAwcHg7IGJhY2tncm91bmQtY29sb3I6IHJnYigyMzEsIDIzMSwgMjMxKTsgb3ZlcmZsb3c6IGhp +ZGRlbjsiPjwvZGl2PjxwICBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLXAiIHN0eWxlPSJib3gtc2l6 +aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5oZXJpdDsgbWFyZ2luOiAxMnB4IDBweDsg +d2hpdGUtc3BhY2U6IHByZS13cmFwOyBwb3NpdGlvbjogcmVsYXRpdmU7IGNvbG9yOiByZ2IoNTEs +IDUxLCA1MSk7IGZvbnQtZmFtaWx5OiAnT3BlbiBTYW5zJywgJ0NsZWFyIFNhbnMnLCAnSGVsdmV0 +aWNhIE5ldWUnLCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDE2cHg7 +IGZvbnQtc3R5bGU6IG5vcm1hbDsgZm9udC12YXJpYW50LWxpZ2F0dXJlczogbm9ybWFsOyBmb250 +LXZhcmlhbnQtY2Fwczogbm9ybWFsOyBmb250LXdlaWdodDogNDAwOyBsZXR0ZXItc3BhY2luZzog +bm9ybWFsOyB0ZXh0LWFsaWduOiBzdGFydDsgdGV4dC1pbmRlbnQ6IDBweDsgdGV4dC10cmFuc2Zv +cm06IG5vbmU7IHdvcmQtc3BhY2luZzogMHB4OyB0ZXh0LWRlY29yYXRpb24tc3R5bGU6IGluaXRp +YWw7IHRleHQtZGVjb3JhdGlvbi1jb2xvcjogaW5pdGlhbDsiPjxzcGFuICBjbGFzcz0ibWQtcGxh +aW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBmb250LXdlaWdodDogNzAwOyI+5pys +5ZGo6YeN54K55oiQ5p6c77yaPC9zcGFuPjwvcD48cCAgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1w +IiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IG1h +cmdpbjogMHB4IDBweCA4cHg7IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJlbGF0 +aXZlOyI+PHNwYW4gIGNsYXNzPSJheW1fYm9va21hcmsiIGlkPSJfYXltX2Jvb2ttYXJrX3NxbV8x +MjgiIHN0eWxlPSJkaXNwbGF5Om5vbmUiPjwvc3Bhbj48L3A+PG9sICBzdGFydD0iMSIgc3R5bGU9 +Im1hcmdpbjogMTZweCAwcHg7IHBhZGRpbmctbGVmdDogMThweDsgY29sb3I6IHJnYigxNSwgMTcs +IDIxKTsgZm9udC1mYW1pbHk6IHF1b3RlLWNqay1wYXRjaCwgSW50ZXIsIHN5c3RlbS11aSwgLWFw +cGxlLXN5c3RlbSwgQmxpbmtNYWNTeXN0ZW1Gb250LCAnU2Vnb2UgVUknLCBSb2JvdG8sIE94eWdl +biwgVWJ1bnR1LCBDYW50YXJlbGwsICdPcGVuIFNhbnMnLCAnSGVsdmV0aWNhIE5ldWUnLCBzYW5z +LXNlcmlmOyBmb250LXNpemU6IDE2cHg7IGZvbnQtc3R5bGU6IG5vcm1hbDsgZm9udC12YXJpYW50 +LWxpZ2F0dXJlczogbm9ybWFsOyBmb250LXZhcmlhbnQtY2Fwczogbm9ybWFsOyBmb250LXdlaWdo +dDogNDAwOyBsZXR0ZXItc3BhY2luZzogbm9ybWFsOyB0ZXh0LWFsaWduOiBzdGFydDsgdGV4dC1p +bmRlbnQ6IDBweDsgdGV4dC10cmFuc2Zvcm06IG5vbmU7IHdvcmQtc3BhY2luZzogMHB4OyB3aGl0 +ZS1zcGFjZTogbm9ybWFsOyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjU1LCAyNTUsIDI1NSk7IHRl +eHQtZGVjb3JhdGlvbi10aGlja25lc3M6IGluaXRpYWw7IHRleHQtZGVjb3JhdGlvbi1zdHlsZTog +aW5pdGlhbDsgdGV4dC1kZWNvcmF0aW9uLWNvbG9yOiBpbml0aWFsOyI+PGxpICBzdHlsZT0ibWFy +Z2luLXRvcDogNnB4OyI+PHAgIGNsYXNzPSJkcy1tYXJrZG93bi1wYXJhZ3JhcGgiIHN0eWxlPSJt +YXJnaW4tcmlnaHQ6IDBweDsgbWFyZ2luLWJvdHRvbTogOHB4OyBtYXJnaW4tbGVmdDogMHB4OyBt +YXJnaW4tdG9wOiAwcHggIWltcG9ydGFudDsiPjxzcGFuICBzdHlsZT0iZm9udC13ZWlnaHQ6IDQw +MDsiPuWFpeW6k+S4juafpeivouWKn+iDveWinuW8ujwvc3Bhbj48L3A+PHVsICBzdHlsZT0ibWFy +Z2luOiA0cHggMHB4IDBweDsgcGFkZGluZy1sZWZ0OiAxOHB4OyI+PGxpID48cCAgY2xhc3M9ImRz +LW1hcmtkb3duLXBhcmFncmFwaCIgc3R5bGU9Im1hcmdpbi1yaWdodDogMHB4OyBtYXJnaW4tYm90 +dG9tOiAwcHg7IG1hcmdpbi1sZWZ0OiAwcHg7IG1hcmdpbi10b3A6IDBweCAhaW1wb3J0YW50OyI+ +PHNwYW4gPueUn+S6p+WFpeW6k+WinuWKoOKAnOmUgOWUruiuouWNleWPt+KAneafpeivou+8jOWu +jOaIkOi9rOa1i+OAgjwvc3Bhbj48L3A+PC9saT48bGkgIHN0eWxlPSJtYXJnaW4tdG9wOiA2cHg7 +Ij48cCAgY2xhc3M9ImRzLW1hcmtkb3duLXBhcmFncmFwaCIgc3R5bGU9Im1hcmdpbi1yaWdodDog +MHB4OyBtYXJnaW4tYm90dG9tOiAwcHg7IG1hcmdpbi1sZWZ0OiAwcHg7IG1hcmdpbi10b3A6IDBw +eCAhaW1wb3J0YW50OyI+PHNwYW4gPuWFpeW6k+aOpeWPo+S8mOWMlumcgOaxguW8gOWPkeWujOaI +kOOAgjwvc3Bhbj48L3A+PC9saT48L3VsPjwvbGk+PGxpICBzdHlsZT0ibWFyZ2luLXRvcDogNnB4 +OyI+PHAgIGNsYXNzPSJkcy1tYXJrZG93bi1wYXJhZ3JhcGgiIHN0eWxlPSJtYXJnaW4tcmlnaHQ6 +IDBweDsgbWFyZ2luLWJvdHRvbTogOHB4OyBtYXJnaW4tbGVmdDogMHB4OyBtYXJnaW4tdG9wOiAw +cHggIWltcG9ydGFudDsiPjxzcGFuICBzdHlsZT0iZm9udC13ZWlnaHQ6IDQwMDsiPuWnlOWklumA +gOaWmeS4muWKoeWujOWWhDwvc3Bhbj48L3A+PHVsICBzdHlsZT0ibWFyZ2luOiA0cHggMHB4IDBw +eDsgcGFkZGluZy1sZWZ0OiAxOHB4OyI+PGxpID48cCAgY2xhc3M9ImRzLW1hcmtkb3duLXBhcmFn +cmFwaCIgc3R5bGU9Im1hcmdpbi1yaWdodDogMHB4OyBtYXJnaW4tYm90dG9tOiAwcHg7IG1hcmdp +bi1sZWZ0OiAwcHg7IG1hcmdpbi10b3A6IDBweCAhaW1wb3J0YW50OyI+PHNwYW4gPuWIhuaekFdl +Yuerr+WnlOWklumAgOaWmeagoemqjOinhOWIme+8jOW5tuaMieinhOWImeWinuWKoOebuOW6lOag +oemqjOOAgjwvc3Bhbj48L3A+PC9saT48bGkgIHN0eWxlPSJtYXJnaW4tdG9wOiA2cHg7Ij48cCAg +Y2xhc3M9ImRzLW1hcmtkb3duLXBhcmFncmFwaCIgc3R5bGU9Im1hcmdpbi1yaWdodDogMHB4OyBt +YXJnaW4tYm90dG9tOiAwcHg7IG1hcmdpbi1sZWZ0OiAwcHg7IG1hcmdpbi10b3A6IDBweCAhaW1w +b3J0YW50OyI+PHNwYW4gPuWnlOWklumAgOaWmeWvueWkluaOpeWPo+WujOaIkOi9rOa1i+OAgjwv +c3Bhbj48L3A+PC9saT48L3VsPjwvbGk+PGxpICBzdHlsZT0ibWFyZ2luLXRvcDogNnB4OyI+PHAg +IGNsYXNzPSJkcy1tYXJrZG93bi1wYXJhZ3JhcGgiIHN0eWxlPSJtYXJnaW4tcmlnaHQ6IDBweDsg +bWFyZ2luLWJvdHRvbTogOHB4OyBtYXJnaW4tbGVmdDogMHB4OyBtYXJnaW4tdG9wOiAwcHggIWlt +cG9ydGFudDsiPjxzcGFuICBzdHlsZT0iZm9udC13ZWlnaHQ6IDQwMDsiPuaJq+eggeWHuuWFpeW6 +k+WKn+iDveaJqeWxlTwvc3Bhbj48L3A+PHVsICBzdHlsZT0ibWFyZ2luOiA0cHggMHB4IDBweDsg +cGFkZGluZy1sZWZ0OiAxOHB4OyI+PGxpID48cCAgY2xhc3M9ImRzLW1hcmtkb3duLXBhcmFncmFw +aCIgc3R5bGU9Im1hcmdpbi1yaWdodDogMHB4OyBtYXJnaW4tYm90dG9tOiAwcHg7IG1hcmdpbi1s +ZWZ0OiAwcHg7IG1hcmdpbi10b3A6IDBweCAhaW1wb3J0YW50OyI+PHNwYW4gPuWujOaIkOaJq+eg +geWHuuWFpeW6k+S4rTwvc3Bhbj48c3BhbiAgc3R5bGU9ImZvbnQtd2VpZ2h0OiA0MDA7Ij7osIPm +i6jlhaXlupM8L3NwYW4+PHNwYW4gPuOAgTwvc3Bhbj48c3BhbiAgc3R5bGU9ImZvbnQtd2VpZ2h0 +OiA0MDA7Ij7lp5TlpJbpgIDmlpnljZU8L3NwYW4+PHNwYW4gPueahOW8gOWPkeS4jui9rOa1i+OA +gjwvc3Bhbj48L3A+PC9saT48bGkgIHN0eWxlPSJtYXJnaW4tdG9wOiA2cHg7Ij48cCAgY2xhc3M9 +ImRzLW1hcmtkb3duLXBhcmFncmFwaCIgc3R5bGU9Im1hcmdpbi1yaWdodDogMHB4OyBtYXJnaW4t +Ym90dG9tOiAwcHg7IG1hcmdpbi1sZWZ0OiAwcHg7IG1hcmdpbi10b3A6IDBweCAhaW1wb3J0YW50 +OyI+PHNwYW4gPuWQjOaXtuWujOaIkDwvc3Bhbj48c3BhbiAgc3R5bGU9ImZvbnQtd2VpZ2h0OiA0 +MDA7Ij7nlJ/kuqfpgIDmlpk8L3NwYW4+PHNwYW4gPuOAgTwvc3Bhbj48c3BhbiAgc3R5bGU9ImZv +bnQtd2VpZ2h0OiA0MDA7Ij7miqXlup/lhaXlupM8L3NwYW4+PHNwYW4gPueahOaJq+eggeWHuuWF +peW6k+i9rOa1i+OAgjwvc3Bhbj48L3A+PC9saT48L3VsPjwvbGk+PC9vbD48ZGl2ID48c3BhbiAg +Y2xhc3M9ImF5bV9ib29rbWFyayIgaWQ9Il9heW1fYm9va21hcmtfc3FtXzEyOSIgc3R5bGU9ImRp +c3BsYXk6bm9uZSI+PC9zcGFuPjwvZGl2PjxwICBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLXAiIHN0 +eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5oZXJpdDsgbWFyZ2lu +OiAwcHggMHB4IDhweDsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyBwb3NpdGlvbjogcmVsYXRpdmU7 +Ij48YnIgPjwvcD48cCAgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1wIiBzdHlsZT0iYm94LXNpemlu +ZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IG1hcmdpbjogMTJweCAwcHg7IHdo +aXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJlbGF0aXZlOyBjb2xvcjogcmdiKDUxLCA1 +MSwgNTEpOyBmb250LWZhbWlseTogJ09wZW4gU2FucycsICdDbGVhciBTYW5zJywgJ0hlbHZldGlj +YSBOZXVlJywgSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxNnB4OyBm +b250LXN0eWxlOiBub3JtYWw7IGZvbnQtdmFyaWFudC1saWdhdHVyZXM6IG5vcm1hbDsgZm9udC12 +YXJpYW50LWNhcHM6IG5vcm1hbDsgZm9udC13ZWlnaHQ6IDQwMDsgbGV0dGVyLXNwYWNpbmc6IG5v +cm1hbDsgdGV4dC1hbGlnbjogc3RhcnQ7IHRleHQtaW5kZW50OiAwcHg7IHRleHQtdHJhbnNmb3Jt +OiBub25lOyB3b3JkLXNwYWNpbmc6IDBweDsgdGV4dC1kZWNvcmF0aW9uLXN0eWxlOiBpbml0aWFs +OyB0ZXh0LWRlY29yYXRpb24tY29sb3I6IGluaXRpYWw7Ij48c3BhbiAgY2xhc3M9Im1kLXBsYWlu +IiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgZm9udC13ZWlnaHQ6IDcwMDsiPuWtmOWc +qOmXrumimO+8mjwvc3Bhbj48c3BhbiAgY2xhc3M9Im1kLXBsYWluIG1kLWV4cGFuZCIgc3R5bGU9 +ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij4g5pegPC9zcGFuPjwvcD48cCAgY2xhc3M9Im1kLWVu +ZC1ibG9jayBtZC1wIG1kLWZvY3VzIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbGlu +ZS1oZWlnaHQ6IGluaGVyaXQ7IG1hcmdpbjogMTJweCAwcHg7IHdoaXRlLXNwYWNlOiBwcmUtd3Jh +cDsgcG9zaXRpb246IHJlbGF0aXZlOyBjb2xvcjogcmdiKDUxLCA1MSwgNTEpOyBmb250LWZhbWls +eTogJ09wZW4gU2FucycsICdDbGVhciBTYW5zJywgJ0hlbHZldGljYSBOZXVlJywgSGVsdmV0aWNh +LCBBcmlhbCwgJ1NlZ29lIFVJIEVtb2ppJywgc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxNnB4OyBm +b250LXN0eWxlOiBub3JtYWw7IGZvbnQtdmFyaWFudC1saWdhdHVyZXM6IG5vcm1hbDsgZm9udC12 +YXJpYW50LWNhcHM6IG5vcm1hbDsgZm9udC13ZWlnaHQ6IDQwMDsgbGV0dGVyLXNwYWNpbmc6IG5v +cm1hbDsgdGV4dC1hbGlnbjogc3RhcnQ7IHRleHQtaW5kZW50OiAwcHg7IHRleHQtdHJhbnNmb3Jt +OiBub25lOyB3b3JkLXNwYWNpbmc6IDBweDsgdGV4dC1kZWNvcmF0aW9uLXRoaWNrbmVzczogaW5p +dGlhbDsgdGV4dC1kZWNvcmF0aW9uLXN0eWxlOiBpbml0aWFsOyB0ZXh0LWRlY29yYXRpb24tY29s +b3I6IGluaXRpYWw7Ij48YnIgPjwvcD48ZGl2ICBzdHlsZT0iY2xlYXI6IGJvdGg7IGZvbnQtZmFt +aWx5OiBUYWhvbWEsIEFyaWFsLCBTVEhlaXRpU0MtTGlnaHQsIFNpbVN1bjsiPjxzcGFuID48YnIg +Pjwvc3Bhbj48L2Rpdj48ZGl2ICBzdHlsZT0iY2xlYXI6IGJvdGg7Ij48ZGl2ICBjbGFzcz0iIF9f +YWxpeXVuX25vZGVfaGFzX2NvbG9yIiBzdHlsZT0ibWFyZ2luOiAwcHg7IHBhZGRpbmc6IDBweDsg +Ym9yZGVyOiAwcHg7IG91dGxpbmU6IDBweDsgY29sb3I6IHJnYigwLCAwLCAwKTsgZm9udC1mYW1p +bHk6IFRhaG9tYSwgQXJpYWwsIFNUSGVpdGksIFNpbVN1bjsgZm9udC1zaXplOiAxNHB4OyBmb250 +LXN0eWxlOiBub3JtYWw7IGZvbnQtdmFyaWFudC1saWdhdHVyZXM6IG5vcm1hbDsgZm9udC12YXJp +YW50LWNhcHM6IG5vcm1hbDsgZm9udC13ZWlnaHQ6IDQwMDsgdGV4dC1hbGlnbjogc3RhcnQ7IHRl +eHQtaW5kZW50OiAwcHg7IHRleHQtdHJhbnNmb3JtOiBub25lOyB0ZXh0LWRlY29yYXRpb24tdGhp +Y2tuZXNzOiBpbml0aWFsOyB0ZXh0LWRlY29yYXRpb24tc3R5bGU6IGluaXRpYWw7IHRleHQtZGVj +b3JhdGlvbi1jb2xvcjogaW5pdGlhbDsgY2xlYXI6IGJvdGg7Ij48c3BhbiAgY2xhc3M9IiBfX2Fs +aXl1bl9ub2RlX2hhc19jb2xvciIgc3R5bGU9Im1hcmdpbjogMHB4OyBwYWRkaW5nOiAwcHg7IGJv +cmRlcjogMHB4OyBvdXRsaW5lOiAwcHg7IGZvbnQtZmFtaWx5OiAnTWljcm9zb2Z0IFlhaGVpJzsg +Zm9udC1zaXplOiAxM3B4OyBjb2xvcjogcmdiKDE5MSwgMTkxLCAxOTEpOyI+QmVzdCByZWdhcmRz +LDwvc3Bhbj48L2Rpdj48ZGl2ICBjbGFzcz0iIF9fYWxpeXVuX25vZGVfaGFzX2NvbG9yIiBzdHls +ZT0ibWFyZ2luOiAwcHg7IHBhZGRpbmc6IDBweDsgYm9yZGVyOiAwcHg7IG91dGxpbmU6IDBweDsg +Y29sb3I6IHJnYigwLCAwLCAwKTsgZm9udC1mYW1pbHk6IFRhaG9tYSwgQXJpYWwsIFNUSGVpdGks +IFNpbVN1bjsgZm9udC1zaXplOiAxNHB4OyBmb250LXN0eWxlOiBub3JtYWw7IGZvbnQtdmFyaWFu +dC1saWdhdHVyZXM6IG5vcm1hbDsgZm9udC12YXJpYW50LWNhcHM6IG5vcm1hbDsgZm9udC13ZWln +aHQ6IDQwMDsgdGV4dC1hbGlnbjogc3RhcnQ7IHRleHQtaW5kZW50OiAwcHg7IHRleHQtdHJhbnNm +b3JtOiBub25lOyB0ZXh0LWRlY29yYXRpb24tdGhpY2tuZXNzOiBpbml0aWFsOyB0ZXh0LWRlY29y +YXRpb24tc3R5bGU6IGluaXRpYWw7IHRleHQtZGVjb3JhdGlvbi1jb2xvcjogaW5pdGlhbDsgY2xl +YXI6IGJvdGg7Ij48c3BhbiAgY2xhc3M9IiBfX2FsaXl1bl9ub2RlX2hhc19jb2xvciIgc3R5bGU9 +Im1hcmdpbjogMHB4OyBwYWRkaW5nOiAwcHg7IGJvcmRlcjogMHB4OyBvdXRsaW5lOiAwcHg7IGZv +bnQtZmFtaWx5OiAnTWljcm9zb2Z0IFlhaGVpJzsgZm9udC1zaXplOiAxM3B4OyBjb2xvcjogcmdi +KDE5MSwgMTkxLCAxOTEpOyI+5p2o6L2pPC9zcGFuPjwvZGl2PjxkaXYgIGNsYXNzPSIgX19hbGl5 +dW5fbm9kZV9oYXNfY29sb3IiIHN0eWxlPSJtYXJnaW46IDBweDsgcGFkZGluZzogMHB4OyBib3Jk +ZXI6IDBweDsgb3V0bGluZTogMHB4OyBjb2xvcjogcmdiKDAsIDAsIDApOyBmb250LWZhbWlseTog +VGFob21hLCBBcmlhbCwgU1RIZWl0aSwgU2ltU3VuOyBmb250LXNpemU6IDE0cHg7IGZvbnQtc3R5 +bGU6IG5vcm1hbDsgZm9udC12YXJpYW50LWxpZ2F0dXJlczogbm9ybWFsOyBmb250LXZhcmlhbnQt +Y2Fwczogbm9ybWFsOyBmb250LXdlaWdodDogNDAwOyB0ZXh0LWFsaWduOiBzdGFydDsgdGV4dC1p +bmRlbnQ6IDBweDsgdGV4dC10cmFuc2Zvcm06IG5vbmU7IHRleHQtZGVjb3JhdGlvbi10aGlja25l +c3M6IGluaXRpYWw7IHRleHQtZGVjb3JhdGlvbi1zdHlsZTogaW5pdGlhbDsgdGV4dC1kZWNvcmF0 +aW9uLWNvbG9yOiBpbml0aWFsOyBjbGVhcjogYm90aDsiPjxpbWcgIGRhdGEtYWxpbWFpbC1pbWct +cHJvY2Vzc2VkLXNxbS1lZGl0b3I9InRydWUiIGhlaWdodD0iNjgiIHNyYz0iY2lkOmQzNzI0YTgz +LWZhNWYtNGEzZS04N2M3LWU4NjdjNzUyNmFkYyIgd2lkdGg9IjMwMCIgc3R5bGU9Im1hcmdpbjog +MHB4OyBwYWRkaW5nOiAwcHg7IGJvcmRlcjogMHB4OyBvdXRsaW5lOiAwcHg7IHZlcnRpY2FsLWFs +aWduOiBib3R0b207Ij4mbmJzcDs8L2Rpdj48ZGl2ICBjbGFzcz0iIF9fYWxpeXVuX25vZGVfaGFz +X2NvbG9yIiBzdHlsZT0ibWFyZ2luOiAwcHg7IHBhZGRpbmc6IDBweDsgYm9yZGVyOiAwcHg7IG91 +dGxpbmU6IDBweDsgY29sb3I6IHJnYigwLCAwLCAwKTsgZm9udC1mYW1pbHk6IFRhaG9tYSwgQXJp +YWwsIFNUSGVpdGksIFNpbVN1bjsgZm9udC1zaXplOiAxNHB4OyBmb250LXN0eWxlOiBub3JtYWw7 +IGZvbnQtdmFyaWFudC1saWdhdHVyZXM6IG5vcm1hbDsgZm9udC12YXJpYW50LWNhcHM6IG5vcm1h +bDsgZm9udC13ZWlnaHQ6IDQwMDsgdGV4dC1hbGlnbjogc3RhcnQ7IHRleHQtaW5kZW50OiAwcHg7 +IHRleHQtdHJhbnNmb3JtOiBub25lOyB0ZXh0LWRlY29yYXRpb24tdGhpY2tuZXNzOiBpbml0aWFs +OyB0ZXh0LWRlY29yYXRpb24tc3R5bGU6IGluaXRpYWw7IHRleHQtZGVjb3JhdGlvbi1jb2xvcjog +aW5pdGlhbDsgY2xlYXI6IGJvdGg7Ij48c3BhbiAgY2xhc3M9IiBfX2FsaXl1bl9ub2RlX2hhc19j +b2xvciIgc3R5bGU9Im1hcmdpbjogMHB4OyBwYWRkaW5nOiAwcHg7IGJvcmRlcjogMHB4OyBvdXRs +aW5lOiAwcHg7IGZvbnQtZmFtaWx5OiAnTWljcm9zb2Z0IFlhaGVpJzsgY29sb3I6IHJnYigxOTEs +IDE5MSwgMTkxKTsiPuWcsOWdgO+8muS4reWbvcK35Y2X5Lqs6L2v5Lu26LC36L2v5Lu25aSn6YGT +MTHlj7foirHnpZ7lpKfljqYzRjwvc3Bhbj48L2Rpdj48ZGl2ICBjbGFzcz0iIF9fYWxpeXVuX25v +ZGVfaGFzX2NvbG9yIiBzdHlsZT0ibWFyZ2luOiAwcHg7IHBhZGRpbmc6IDBweDsgYm9yZGVyOiAw +cHg7IG91dGxpbmU6IDBweDsgY29sb3I6IHJnYigwLCAwLCAwKTsgZm9udC1mYW1pbHk6IFRhaG9t +YSwgQXJpYWwsIFNUSGVpdGksIFNpbVN1bjsgZm9udC1zaXplOiAxNHB4OyBmb250LXN0eWxlOiBu +b3JtYWw7IGZvbnQtdmFyaWFudC1saWdhdHVyZXM6IG5vcm1hbDsgZm9udC12YXJpYW50LWNhcHM6 +IG5vcm1hbDsgZm9udC13ZWlnaHQ6IDQwMDsgdGV4dC1hbGlnbjogc3RhcnQ7IHRleHQtaW5kZW50 +OiAwcHg7IHRleHQtdHJhbnNmb3JtOiBub25lOyB0ZXh0LWRlY29yYXRpb24tdGhpY2tuZXNzOiBp +bml0aWFsOyB0ZXh0LWRlY29yYXRpb24tc3R5bGU6IGluaXRpYWw7IHRleHQtZGVjb3JhdGlvbi1j +b2xvcjogaW5pdGlhbDsgY2xlYXI6IGJvdGg7Ij48c3BhbiAgY2xhc3M9IiBfX2FsaXl1bl9ub2Rl +X2hhc19jb2xvciIgc3R5bGU9Im1hcmdpbjogMHB4OyBwYWRkaW5nOiAwcHg7IGJvcmRlcjogMHB4 +OyBvdXRsaW5lOiAwcHg7IGZvbnQtZmFtaWx5OiAnTWljcm9zb2Z0IFlhaGVpJzsgY29sb3I6IHJn +YigxOTEsIDE5MSwgMTkxKTsiPuaJi+acuu+8mjE4NzI2MTI4NDg5PC9zcGFuPjwvZGl2PjxkaXYg +IGNsYXNzPSIgX19hbGl5dW5fbm9kZV9oYXNfY29sb3IiIHN0eWxlPSJtYXJnaW46IDBweDsgcGFk +ZGluZzogMHB4OyBib3JkZXI6IDBweDsgb3V0bGluZTogMHB4OyBjb2xvcjogcmdiKDAsIDAsIDAp +OyBmb250LWZhbWlseTogVGFob21hLCBBcmlhbCwgU1RIZWl0aSwgU2ltU3VuOyBmb250LXNpemU6 +IDE0cHg7IGZvbnQtc3R5bGU6IG5vcm1hbDsgZm9udC12YXJpYW50LWxpZ2F0dXJlczogbm9ybWFs +OyBmb250LXZhcmlhbnQtY2Fwczogbm9ybWFsOyBmb250LXdlaWdodDogNDAwOyB0ZXh0LWFsaWdu +OiBzdGFydDsgdGV4dC1pbmRlbnQ6IDBweDsgdGV4dC10cmFuc2Zvcm06IG5vbmU7IHRleHQtZGVj +b3JhdGlvbi10aGlja25lc3M6IGluaXRpYWw7IHRleHQtZGVjb3JhdGlvbi1zdHlsZTogaW5pdGlh +bDsgdGV4dC1kZWNvcmF0aW9uLWNvbG9yOiBpbml0aWFsOyBjbGVhcjogYm90aDsiPjxzcGFuICBj +bGFzcz0iIF9fYWxpeXVuX25vZGVfaGFzX2NvbG9yIiBzdHlsZT0ibWFyZ2luOiAwcHg7IHBhZGRp +bmc6IDBweDsgYm9yZGVyOiAwcHg7IG91dGxpbmU6IDBweDsgZm9udC1mYW1pbHk6ICdNaWNyb3Nv +ZnQgWWFoZWknOyBjb2xvcjogcmdiKDE5MSwgMTkxLCAxOTEpOyI+6YKu566x77yaeWFuZ3h1YW5A +d2l0c29mdC5jbjwvc3Bhbj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48L2JvZHk+PC9odG1sPjwv +ZGl2Pg== + +--=_mailmaster-6a18e4a4_0_4509_=-- + +--=_mailmaster-6a18e4a4_0_1238_= +Content-Type: application/octet-stream +Content-Transfer-Encoding: base64 +Content-ID: +Content-Disposition: inline; + filename="=?utf-8?B?57u05ouT56eR5oqALemCruS7tuetvuWQjWxvZ28ucG5n?=" + +iVBORw0KGgoAAAANSUhEUgAAASwAAABECAYAAAA7rQj2AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJ +bWFnZVJlYWR5ccllPAAAA4RpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdp +bj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6 +eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTQ1IDc5LjE2 +MzQ5OSwgMjAxOC8wOC8xMy0xNjo0MDoyMiAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJo +dHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlw +dGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEu +MC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVz +b3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1N +Ok9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDplYjhjYzQwMy1lNzZjLTQ5NDgtODFmOC1kNDIy +MmRkMTdhYjgiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NkVENzExMzg1MzBEMTFFQTg4QjNF +NEJFMUQyRjc1RkIiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NkVENzExMzc1MzBEMTFFQTg4 +QjNFNEJFMUQyRjc1RkIiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTkg +KFdpbmRvd3MpIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6 +ZmNkNTdlM2UtZThjYS05ZjQ2LWEzZTUtMWJlYmE2NjA5Y2FmIiBzdFJlZjpkb2N1bWVudElEPSJh +ZG9iZTpkb2NpZDpwaG90b3Nob3A6MzZkNmNjNTUtNTY3Yi01MTQ2LWEwYWYtMzBlMzEwMTMxNDFk +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 + +--=_mailmaster-6a18e4a4_0_1238_=-- diff --git a/media/inbound/2026-04-30_1703_G5开发周报_2026-04-27_--_2026-04-30---0d6284bc-df6d-4023-a45c-bf61d9ce58c0.eml b/media/inbound/2026-04-30_1703_G5开发周报_2026-04-27_--_2026-04-30---0d6284bc-df6d-4023-a45c-bf61d9ce58c0.eml new file mode 100644 index 0000000..7afa2ce --- /dev/null +++ b/media/inbound/2026-04-30_1703_G5开发周报_2026-04-27_--_2026-04-30---0d6284bc-df6d-4023-a45c-bf61d9ce58c0.eml @@ -0,0 +1,475 @@ +Date: Thu, 30 Apr 2026 17:03:00 +0800 +From: =?utf-8?B?5p2o6L2p?= +To: =?utf-8?B?5YiY5by6?= +Cc: =?utf-8?B?5ZC0552/5Lic?= , =?utf-8?B?6ZmI5piO?= + , =?utf-8?B?5pu+6I6J?= +Message-ID: <6479174f-0102-4fa1-bd1e-241c028ef7cc.yangxuan@witsoft.cn> +In-Reply-To: <0fd0cf13-9972-45a7-937c-4de189ac1ef9.yangxuan@witsoft.cn> +References: <0fd0cf13-9972-45a7-937c-4de189ac1ef9.yangxuan@witsoft.cn> +Subject: =?utf-8?B?RzXlvIDlj5HlkajmiqXjgJAyMDI2LTA0LTI3IC0tIDIwMjYtMDQt?= + =?utf-8?B?MzDjgJE=?= +MIME-Version: 1.0 +Content-Type: multipart/related; boundary="=_mailmaster-6a18e4a4_0_1e1f_=" + +--=_mailmaster-6a18e4a4_0_1e1f_= +Content-Type: multipart/alternative; boundary="=_mailmaster-6a18e4a4_0_3b25_=" + +--=_mailmaster-6a18e4a4_0_3b25_= +Content-Type: text/plain; charset="UTF-8" +Content-Transfer-Encoding: base64 + +6aG555uu77yaIOe7tOS6keaZuumAoEc177yI5bqT5a2Y566h55CG77yJCuaXpeacnwrkuLvopoHl +t6XkvZwK5ZGo5LiA77yIMDQuMjfvvIkKMS4g54mI5pys57y66Zm35L+u5aSNCjIuIEFJ5pW055CG +5YWl5bqT5rWB56iLCjMuIOWOhuWPsumXrumimOWkhOeQhgrlkajkuozvvIgwNC4yOO+8iQoxLiDm +tYvor5Xpl67popjkv67lpI0KMi4g5Li75pWw5o2u5qih5Z2X5o6l5Y+j5pW055CGCuWRqOS4ie+8 +iDA0LjI577yJCjEuIOW6k+WtmOe8uumZt+S/ruWkjQrlkajlm5vvvIgwNC4zMO+8iQoxLiDlupPl +rZjpnIDmsYLor4TlrqHlkozlt6XkvZzph4/or4TkvLAK5pys5ZGo6YeN54K55oiQ5p6c77yaCgog +KiAK5o6o6L+b5bqT5a2Y5qih5Z2X5bel5L2cCgogKiAK5a6M5oiQ5bqT5a2Y6ZyA5rGC6K+E5a6h +5LiO5bel5L2c6YeP6K+E5Lyw77yIMDQuMjPvvIkKCiAqIArkv67lpI3lupPlrZjnm7jlhbPnvLrp +mbfvvIgwNC4yOe+8iQoKICogCuaPkOWNh+eJiOacrOi0qOmHjwoKICogCuS/ruWkjeeJiOacrOe8 +uumZt+S4jua1i+ivlemXrumimAoKICogCuWkhOeQhuWOhuWPsumBl+eVmemXrumimAoKICogCuaU +r+aSkUFJ5LiO5pWw5o2u6IO95YqbCgogKiAK5a6M5oiQQUnmlbTnkIblhaXlupPmtYHnqIvnm7jl +hbPlt6XkvZwKCiAqIArlrozlloTkuLvmlbDmja7og73lipsKCiAqIArmlbTnkIbkuLvmlbDmja7m +qKHlnZfmjqXlj6PvvIzkuLrlkI7nu63lvIDlj5Hmj5Dkvpvkvp3mja4K5a2Y5Zyo6Zeu6aKY77ya +IOaXoApCZXN0IHJlZ2FyZHMsCuadqOi9qQrlnLDlnYDvvJrkuK3lm73Ct+WNl+S6rOi9r+S7tuiw +t+i9r+S7tuWkp+mBkzEx5Y+36Iqx56We5aSn5Y6mM0YK5omL5py677yaMTg3MjYxMjg0ODkK6YKu +566x77yaeWFuZ3h1YW5Ad2l0c29mdC5jbgo= + +--=_mailmaster-6a18e4a4_0_3b25_= +Content-Type: text/html; charset="UTF-8" +Content-Transfer-Encoding: base64 + +PGRpdiBjbGFzcz0iX19hbGl5dW5fZW1haWxfYm9keV9ibG9jayI+PGh0bWwgPjxoZWFkID48L2hl +YWQ+PGJvZHkgPjxkaXYgIHN0eWxlPSJmb250LWZhbWlseTogVGFob21hLCBBcmlhbCwgU1RIZWl0 +aVNDLUxpZ2h0LCBTaW1TdW4iPjxkaXYgIHN0eWxlPSJjbGVhcjogYm90aDsiPjxwICBjbGFzcz0i +bWQtZW5kLWJsb2NrIG1kLXAiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhl +aWdodDogaW5oZXJpdDsgbWFyZ2luOiAxMnB4IDBweDsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyBw +b3NpdGlvbjogcmVsYXRpdmU7IGZvbnQtdmFyaWFudC1saWdhdHVyZXM6IG5vcm1hbDsgZm9udC12 +YXJpYW50LWNhcHM6IG5vcm1hbDsgbGV0dGVyLXNwYWNpbmc6IG5vcm1hbDsgdGV4dC1hbGlnbjog +c3RhcnQ7IHRleHQtaW5kZW50OiAwcHg7IHdvcmQtc3BhY2luZzogMHB4OyB0ZXh0LWRlY29yYXRp +b24tc3R5bGU6IGluaXRpYWw7IHRleHQtZGVjb3JhdGlvbi1jb2xvcjogaW5pdGlhbDsiPjxzcGFu +ICBzdHlsZT0iZm9udC1mYW1pbHk6ICdtaWNyb3NvZnQgeWFoZWknOyI+PHNwYW4gIGNsYXNzPSJt +ZC1wbGFpbiIgc3R5bGU9ImZvbnQtZmFtaWx5OiAnbWljcm9zb2Z0IHlhaGVpJzsgY29sb3I6IHJn +Yig1MSwgNTEsIDUxKTsgZm9udC1zaXplOiAxNnB4OyBmb250LXN0eWxlOiBub3JtYWw7IHRleHQt +dHJhbnNmb3JtOiBub25lOyBib3gtc2l6aW5nOiBib3JkZXItYm94OyBmb250LXdlaWdodDogNzAw +OyI+6aG555uu77yaPC9zcGFuPjxzcGFuICBjbGFzcz0ibWQtcGxhaW4iIHN0eWxlPSJmb250LWZh +bWlseTogJ21pY3Jvc29mdCB5YWhlaSc7IGNvbG9yOiByZ2IoNTEsIDUxLCA1MSk7IGZvbnQtc2l6 +ZTogMTZweDsgZm9udC1zdHlsZTogbm9ybWFsOyBmb250LXdlaWdodDogNDAwOyB0ZXh0LXRyYW5z +Zm9ybTogbm9uZTsgYm94LXNpemluZzogYm9yZGVyLWJveDsiPiDnu7TkupHmmbrpgKBHNe+8iOW6 +k+WtmOeuoeeQhu+8iTwvc3Bhbj48L3NwYW4+PC9wPjxkaXYgPjx0YWJsZSAgY2xhc3M9Im1kLXRh +YmxlIiBzdHlsZT0iZm9udC1mYW1pbHk6IFRhaG9tYSwgQXJpYWwsIFNUSGVpdGlTQy1MaWdodCwg +U2ltU3VuOyBib3gtc2l6aW5nOiBib3JkZXItYm94OyBib3JkZXItY29sbGFwc2U6IGNvbGxhcHNl +OyBib3JkZXItc3BhY2luZzogMHB4OyBvdmVyZmxvdzogYXV0bzsgYnJlYWstaW5zaWRlOiBhdXRv +OyB0ZXh0LWFsaWduOiBsZWZ0OyBtYXJnaW46IDBweDsgcGFkZGluZzogMHB4OyB3b3JkLWJyZWFr +OiBpbml0aWFsOyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHdpZHRoOiA3MzFweDsiPjx0aGVhZCAg +c3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGRpc3BsYXk6IHRhYmxlLWhlYWRlci1ncm91 +cDsgYmFja2dyb3VuZC1jb2xvcjogcmdiKDI0OCwgMjQ4LCAyNDgpOyI+PHRyICBjbGFzcz0ibWQt +ZW5kLWJsb2NrIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgYnJlYWstaW5zaWRlOiBh +dm9pZDsgYnJlYWstYWZ0ZXI6IGF1dG87IGJvcmRlci10b3A6IDFweCBzb2xpZCByZ2IoMjIzLCAy +MjYsIDIyOSk7IG1hcmdpbjogMHB4OyBwYWRkaW5nOiAwcHg7Ij48dGQgIHN0eWxlPSJib3gtc2l6 +aW5nOiBib3JkZXItYm94OyBwYWRkaW5nOiA2cHggMTNweDsgYm9yZGVyLXdpZHRoOiAxcHggMXB4 +IDBweDsgYm9yZGVyLXRvcC1zdHlsZTogc29saWQ7IGJvcmRlci1yaWdodC1zdHlsZTogc29saWQ7 +IGJvcmRlci1sZWZ0LXN0eWxlOiBzb2xpZDsgYm9yZGVyLXRvcC1jb2xvcjogcmdiKDIyMywgMjI2 +LCAyMjkpOyBib3JkZXItcmlnaHQtY29sb3I6IHJnYigyMjMsIDIyNiwgMjI5KTsgYm9yZGVyLWxl +ZnQtY29sb3I6IHJnYigyMjMsIDIyNiwgMjI5KTsgYm9yZGVyLWltYWdlOiBpbml0aWFsOyBib3Jk +ZXItYm90dG9tLXN0eWxlOiBpbml0aWFsOyBib3JkZXItYm90dG9tLWNvbG9yOiBpbml0aWFsOyBt +YXJnaW46IDBweDsiPjxkaXYgIHN0eWxlPSJ0ZXh0LWFsaWduOiBjZW50ZXI7Ij48c3BhbiAgc3R5 +bGU9ImZvbnQtd2VpZ2h0OiA3MDA7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7IGRpc3BsYXk6IGlu +bGluZS1ibG9jazsgbWluLXdpZHRoOiAxY2g7IHdpZHRoOiAzMThweDsgbWluLWhlaWdodDogMTBw +eDsgZm9udC1mYW1pbHk6ICdtaWNyb3NvZnQgeWFoZWknOyI+5pel5pyfPC9zcGFuPjwvZGl2Pjwv +dGQ+PHRkICB3aWR0aD0iMzU3IiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgcGFkZGlu +ZzogNnB4IDEzcHg7IGJvcmRlci13aWR0aDogMXB4IDFweCAwcHg7IGJvcmRlci10b3Atc3R5bGU6 +IHNvbGlkOyBib3JkZXItcmlnaHQtc3R5bGU6IHNvbGlkOyBib3JkZXItbGVmdC1zdHlsZTogc29s +aWQ7IGJvcmRlci10b3AtY29sb3I6IHJnYigyMjMsIDIyNiwgMjI5KTsgYm9yZGVyLXJpZ2h0LWNv +bG9yOiByZ2IoMjIzLCAyMjYsIDIyOSk7IGJvcmRlci1sZWZ0LWNvbG9yOiByZ2IoMjIzLCAyMjYs +IDIyOSk7IGJvcmRlci1pbWFnZTogaW5pdGlhbDsgYm9yZGVyLWJvdHRvbS1zdHlsZTogaW5pdGlh +bDsgYm9yZGVyLWJvdHRvbS1jb2xvcjogaW5pdGlhbDsgbWFyZ2luOiAwcHg7Ij48ZGl2ICBzdHls +ZT0idGV4dC1hbGlnbjogY2VudGVyOyI+PHNwYW4gIHN0eWxlPSJmb250LXdlaWdodDogNzAwOyBi +b3gtc2l6aW5nOiBib3JkZXItYm94OyBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IG1pbi13aWR0aDog +MWNoOyB3aWR0aDogNTkycHg7IG1pbi1oZWlnaHQ6IDEwcHg7IGZvbnQtZmFtaWx5OiAnbWljcm9z +b2Z0IHlhaGVpJzsiPuS4u+imgeW3peS9nDwvc3Bhbj48L2Rpdj48L3RkPjwvdHI+PC90aGVhZD48 +dGJvZHkgIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+PHRyICBjbGFzcz0ibWQtZW5k +LWJsb2NrIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgYnJlYWstaW5zaWRlOiBhdm9p +ZDsgYnJlYWstYWZ0ZXI6IGF1dG87IGJvcmRlci10b3A6IDFweCBzb2xpZCByZ2IoMjIzLCAyMjYs +IDIyOSk7IG1hcmdpbjogMHB4OyBwYWRkaW5nOiAwcHg7Ij48dGQgIGNsYXNzPSIiIHN0eWxlPSJi +b3gtc2l6aW5nOiBib3JkZXItYm94OyBwYWRkaW5nOiA2cHggMTNweDsgYm9yZGVyOiAxcHggc29s +aWQgcmdiKDIyMywgMjI2LCAyMjkpOyBtYXJnaW46IDBweDsiPjxzcGFuICBzdHlsZT0iYm94LXNp +emluZzogYm9yZGVyLWJveDsgZGlzcGxheTogaW5saW5lLWJsb2NrOyBtaW4td2lkdGg6IDFjaDsg +d2lkdGg6IDMxOHB4OyBtaW4taGVpZ2h0OiAxMHB4OyBmb250LWZhbWlseTogJ21pY3Jvc29mdCB5 +YWhlaSc7Ij7lkajkuIDvvIgwNC4yN++8iTwvc3Bhbj48L3RkPjx0ZCAgY2xhc3M9IiIgd2lkdGg9 +IjM1NyIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IHBhZGRpbmc6IDZweCAxM3B4OyBi +b3JkZXI6IDFweCBzb2xpZCByZ2IoMjIzLCAyMjYsIDIyOSk7IG1hcmdpbjogMHB4OyI+PGRpdiAg +Y2xhc3M9IiI+PHNwYW4gIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBkaXNwbGF5OiBp +bmxpbmUtYmxvY2s7IG1pbi13aWR0aDogMWNoOyB3aWR0aDogMzE4cHg7IG1pbi1oZWlnaHQ6IDEw +cHg7IGZvbnQtZmFtaWx5OiAnbWljcm9zb2Z0IHlhaGVpJzsiPjEuJm5ic3A754mI5pys57y66Zm3 +5L+u5aSNPGJyICBzdHlsZT0iY29sb3I6IHJnYigwLCAwLCAwKTsgZm9udC1zaXplOiAxMnB4OyBm +b250LXN0eWxlOiBub3JtYWw7IGZvbnQtdmFyaWFudC1saWdhdHVyZXM6IG5vcm1hbDsgZm9udC12 +YXJpYW50LWNhcHM6IG5vcm1hbDsgZm9udC13ZWlnaHQ6IDQwMDsgbGV0dGVyLXNwYWNpbmc6IG5v +cm1hbDsgb3JwaGFuczogMjsgdGV4dC1hbGlnbjogbGVmdDsgdGV4dC1pbmRlbnQ6IDBweDsgdGV4 +dC10cmFuc2Zvcm06IG5vbmU7IHdpZG93czogMjsgd29yZC1zcGFjaW5nOiAwcHg7IC13ZWJraXQt +dGV4dC1zdHJva2Utd2lkdGg6IDBweDsgd2hpdGUtc3BhY2U6IG5vcm1hbDsgYmFja2dyb3VuZC1j +b2xvcjogcmdiKDI0NSwgMjQ1LCAyNDUpOyB0ZXh0LWRlY29yYXRpb24tdGhpY2tuZXNzOiBpbml0 +aWFsOyB0ZXh0LWRlY29yYXRpb24tc3R5bGU6IGluaXRpYWw7IHRleHQtZGVjb3JhdGlvbi1jb2xv +cjogaW5pdGlhbDsiPjIuJm5ic3A7QUnmlbTnkIblhaXlupPmtYHnqIs8YnIgIHN0eWxlPSJjb2xv +cjogcmdiKDAsIDAsIDApOyBmb250LXNpemU6IDEycHg7IGZvbnQtc3R5bGU6IG5vcm1hbDsgZm9u +dC12YXJpYW50LWxpZ2F0dXJlczogbm9ybWFsOyBmb250LXZhcmlhbnQtY2Fwczogbm9ybWFsOyBm +b250LXdlaWdodDogNDAwOyBsZXR0ZXItc3BhY2luZzogbm9ybWFsOyBvcnBoYW5zOiAyOyB0ZXh0 +LWFsaWduOiBsZWZ0OyB0ZXh0LWluZGVudDogMHB4OyB0ZXh0LXRyYW5zZm9ybTogbm9uZTsgd2lk +b3dzOiAyOyB3b3JkLXNwYWNpbmc6IDBweDsgLXdlYmtpdC10ZXh0LXN0cm9rZS13aWR0aDogMHB4 +OyB3aGl0ZS1zcGFjZTogbm9ybWFsOyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjQ1LCAyNDUsIDI0 +NSk7IHRleHQtZGVjb3JhdGlvbi10aGlja25lc3M6IGluaXRpYWw7IHRleHQtZGVjb3JhdGlvbi1z +dHlsZTogaW5pdGlhbDsgdGV4dC1kZWNvcmF0aW9uLWNvbG9yOiBpbml0aWFsOyI+My4mbmJzcDvl +joblj7Lpl67popjlpITnkIY8L3NwYW4+PC9kaXY+PC90ZD48L3RyPjx0ciAgY2xhc3M9Im1kLWVu +ZC1ibG9jayIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGJyZWFrLWluc2lkZTogYXZv +aWQ7IGJyZWFrLWFmdGVyOiBhdXRvOyBib3JkZXItdG9wOiAxcHggc29saWQgcmdiKDIyMywgMjI2 +LCAyMjkpOyBtYXJnaW46IDBweDsgcGFkZGluZzogMHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2Io +MjQ4LCAyNDgsIDI0OCk7Ij48dGQgIGNsYXNzPSIiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXIt +Ym94OyBwYWRkaW5nOiA2cHggMTNweDsgYm9yZGVyOiAxcHggc29saWQgcmdiKDIyMywgMjI2LCAy +MjkpOyBtYXJnaW46IDBweDsiPjxzcGFuICBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsg +ZGlzcGxheTogaW5saW5lLWJsb2NrOyBtaW4td2lkdGg6IDFjaDsgd2lkdGg6IDMxOHB4OyBtaW4t +aGVpZ2h0OiAxMHB4OyBmb250LWZhbWlseTogJ21pY3Jvc29mdCB5YWhlaSc7Ij7lkajkuozvvIgw +NC4yOO+8iTwvc3Bhbj48L3RkPjx0ZCAgY2xhc3M9IiIgd2lkdGg9IjM1NyIgc3R5bGU9ImJveC1z +aXppbmc6IGJvcmRlci1ib3g7IHBhZGRpbmc6IDZweCAxM3B4OyBib3JkZXI6IDFweCBzb2xpZCBy +Z2IoMjIzLCAyMjYsIDIyOSk7IG1hcmdpbjogMHB4OyI+PGRpdiAgY2xhc3M9IiI+PHNwYW4gIHN0 +eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IG1pbi13 +aWR0aDogMWNoOyB3aWR0aDogMzE4cHg7IG1pbi1oZWlnaHQ6IDEwcHg7IGZvbnQtZmFtaWx5OiAn +bWljcm9zb2Z0IHlhaGVpJzsiPjEuJm5ic3A75rWL6K+V6Zeu6aKY5L+u5aSNPGJyICBzdHlsZT0i +Y29sb3I6IHJnYigwLCAwLCAwKTsgZm9udC1zaXplOiAxMnB4OyBmb250LXN0eWxlOiBub3JtYWw7 +IGZvbnQtdmFyaWFudC1saWdhdHVyZXM6IG5vcm1hbDsgZm9udC12YXJpYW50LWNhcHM6IG5vcm1h +bDsgZm9udC13ZWlnaHQ6IDQwMDsgbGV0dGVyLXNwYWNpbmc6IG5vcm1hbDsgb3JwaGFuczogMjsg +dGV4dC1hbGlnbjogbGVmdDsgdGV4dC1pbmRlbnQ6IDBweDsgdGV4dC10cmFuc2Zvcm06IG5vbmU7 +IHdpZG93czogMjsgd29yZC1zcGFjaW5nOiAwcHg7IC13ZWJraXQtdGV4dC1zdHJva2Utd2lkdGg6 +IDBweDsgd2hpdGUtc3BhY2U6IG5vcm1hbDsgYmFja2dyb3VuZC1jb2xvcjogcmdiKDI0NSwgMjQ1 +LCAyNDUpOyB0ZXh0LWRlY29yYXRpb24tdGhpY2tuZXNzOiBpbml0aWFsOyB0ZXh0LWRlY29yYXRp +b24tc3R5bGU6IGluaXRpYWw7IHRleHQtZGVjb3JhdGlvbi1jb2xvcjogaW5pdGlhbDsiPjIuJm5i +c3A75Li75pWw5o2u5qih5Z2X5o6l5Y+j5pW055CGPC9zcGFuPjwvZGl2PjwvdGQ+PC90cj48dHIg +IGNsYXNzPSJtZC1lbmQtYmxvY2siIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBicmVh +ay1pbnNpZGU6IGF2b2lkOyBicmVhay1hZnRlcjogYXV0bzsgYm9yZGVyLXRvcDogMXB4IHNvbGlk +IHJnYigyMjMsIDIyNiwgMjI5KTsgbWFyZ2luOiAwcHg7IHBhZGRpbmc6IDBweDsiPjx0ZCAgY2xh +c3M9IiIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IHBhZGRpbmc6IDZweCAxM3B4OyBi +b3JkZXI6IDFweCBzb2xpZCByZ2IoMjIzLCAyMjYsIDIyOSk7IG1hcmdpbjogMHB4OyI+PHNwYW4g +IHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IG1p +bi13aWR0aDogMWNoOyB3aWR0aDogMzE4cHg7IG1pbi1oZWlnaHQ6IDEwcHg7IGZvbnQtZmFtaWx5 +OiAnbWljcm9zb2Z0IHlhaGVpJzsiPuWRqOS4ie+8iDA0LjI577yJPC9zcGFuPjwvdGQ+PHRkICBj +bGFzcz0iIiB3aWR0aD0iMzU3IiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgcGFkZGlu +ZzogNnB4IDEzcHg7IGJvcmRlcjogMXB4IHNvbGlkIHJnYigyMjMsIDIyNiwgMjI5KTsgbWFyZ2lu +OiAwcHg7Ij48ZGl2ICBjbGFzcz0iIj48c3BhbiAgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1i +b3g7IGRpc3BsYXk6IGlubGluZS1ibG9jazsgbWluLXdpZHRoOiAxY2g7IHdpZHRoOiAzMThweDsg +bWluLWhlaWdodDogMTBweDsgZm9udC1mYW1pbHk6ICdtaWNyb3NvZnQgeWFoZWknOyI+MS4mbmJz +cDvlupPlrZjnvLrpmbfkv67lpI08L3NwYW4+PC9kaXY+PC90ZD48L3RyPjx0ciAgY2xhc3M9Im1k +LWVuZC1ibG9jayIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGJyZWFrLWluc2lkZTog +YXZvaWQ7IGJyZWFrLWFmdGVyOiBhdXRvOyBib3JkZXItdG9wOiAxcHggc29saWQgcmdiKDIyMywg +MjI2LCAyMjkpOyBtYXJnaW46IDBweDsgcGFkZGluZzogMHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiBy +Z2IoMjQ4LCAyNDgsIDI0OCk7Ij48dGQgIGNsYXNzPSIiIHN0eWxlPSJib3gtc2l6aW5nOiBib3Jk +ZXItYm94OyBwYWRkaW5nOiA2cHggMTNweDsgYm9yZGVyOiAxcHggc29saWQgcmdiKDIyMywgMjI2 +LCAyMjkpOyBtYXJnaW46IDBweDsiPjxzcGFuICBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJv +eDsgZGlzcGxheTogaW5saW5lLWJsb2NrOyBtaW4td2lkdGg6IDFjaDsgd2lkdGg6IDMxOHB4OyBt +aW4taGVpZ2h0OiAxMHB4OyBmb250LWZhbWlseTogJ21pY3Jvc29mdCB5YWhlaSc7Ij7lkajlm5vv +vIgwNC4zMO+8iTwvc3Bhbj48L3RkPjx0ZCAgY2xhc3M9IiIgd2lkdGg9IjM1NyIgc3R5bGU9ImJv +eC1zaXppbmc6IGJvcmRlci1ib3g7IHBhZGRpbmc6IDZweCAxM3B4OyBib3JkZXI6IDFweCBzb2xp +ZCByZ2IoMjIzLCAyMjYsIDIyOSk7IG1hcmdpbjogMHB4OyI+PGRpdiAgY2xhc3M9IiI+PHNwYW4g +IHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IG1p +bi13aWR0aDogMWNoOyB3aWR0aDogMzE4cHg7IG1pbi1oZWlnaHQ6IDEwcHg7IGZvbnQtZmFtaWx5 +OiAnbWljcm9zb2Z0IHlhaGVpJzsiPjEuJm5ic3A75bqT5a2Y6ZyA5rGC6K+E5a6h5ZKM5bel5L2c +6YeP6K+E5LywPC9zcGFuPjwvZGl2PjwvdGQ+PC90cj48L3Rib2R5PjwvdGFibGU+PC9kaXY+PGRp +diAgY2xhc3M9Im1kLWhyIG1kLWVuZC1ibG9jayIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1i +b3g7IGZvbnQtdmFyaWFudC1saWdhdHVyZXM6IG5vcm1hbDsgZm9udC12YXJpYW50LWNhcHM6IG5v +cm1hbDsgbGV0dGVyLXNwYWNpbmc6IG5vcm1hbDsgdGV4dC1hbGlnbjogc3RhcnQ7IHRleHQtaW5k +ZW50OiAwcHg7IHdoaXRlLXNwYWNlOiBub3JtYWw7IHdvcmQtc3BhY2luZzogMHB4OyB0ZXh0LWRl +Y29yYXRpb24tc3R5bGU6IGluaXRpYWw7IHRleHQtZGVjb3JhdGlvbi1jb2xvcjogaW5pdGlhbDsi +PjxociAgc3R5bGU9ImNvbG9yOiByZ2IoNTEsIDUxLCA1MSk7IGZvbnQtZmFtaWx5OiAnT3BlbiBT +YW5zJywgJ0NsZWFyIFNhbnMnLCAnSGVsdmV0aWNhIE5ldWUnLCBIZWx2ZXRpY2EsIEFyaWFsLCBz +YW5zLXNlcmlmOyBmb250LXNpemU6IDE2cHg7IGZvbnQtc3R5bGU6IG5vcm1hbDsgZm9udC13ZWln +aHQ6IDQwMDsgdGV4dC10cmFuc2Zvcm06IG5vbmU7IGJveC1zaXppbmc6IGNvbnRlbnQtYm94OyBo +ZWlnaHQ6IDJweDsgbWFyZ2luOiAxNnB4IDBweDsgYm9yZGVyOiAwcHggbm9uZTsgcGFkZGluZzog +MHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjMxLCAyMzEsIDIzMSk7IG92ZXJmbG93OiBoaWRk +ZW47Ij48L2Rpdj48cCAgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1wIiBzdHlsZT0iYm94LXNpemlu +ZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IG1hcmdpbjogMTJweCAwcHg7IHdo +aXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJlbGF0aXZlOyBmb250LXZhcmlhbnQtbGln +YXR1cmVzOiBub3JtYWw7IGZvbnQtdmFyaWFudC1jYXBzOiBub3JtYWw7IGxldHRlci1zcGFjaW5n +OiBub3JtYWw7IHRleHQtYWxpZ246IHN0YXJ0OyB0ZXh0LWluZGVudDogMHB4OyB3b3JkLXNwYWNp +bmc6IDBweDsgdGV4dC1kZWNvcmF0aW9uLXN0eWxlOiBpbml0aWFsOyB0ZXh0LWRlY29yYXRpb24t +Y29sb3I6IGluaXRpYWw7Ij48c3BhbiAgc3R5bGU9ImNvbG9yOiByZ2IoNTEsIDUxLCA1MSk7IGZv +bnQtc2l6ZTogMTZweDsgZm9udC1zdHlsZTogbm9ybWFsOyB0ZXh0LXRyYW5zZm9ybTogbm9uZTsg +Ym94LXNpemluZzogYm9yZGVyLWJveDsgZm9udC13ZWlnaHQ6IDcwMDsgZm9udC1mYW1pbHk6ICdt +aWNyb3NvZnQgeWFoZWknOyI+5pys5ZGo6YeN54K55oiQ5p6c77yaPC9zcGFuPjwvcD48cCAgY2xh +c3M9Im1kLWVuZC1ibG9jayBtZC1wIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbGlu +ZS1oZWlnaHQ6IGluaGVyaXQ7IG1hcmdpbjogMHB4IDBweCA4cHg7IHdoaXRlLXNwYWNlOiBwcmUt +d3JhcDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHNwYW4gIHN0eWxlPSJmb250LWZhbWlseTogJ21p +Y3Jvc29mdCB5YWhlaSc7Ij48c3BhbiAgY2xhc3M9ImF5bV9ib29rbWFyayIgaWQ9Il9heW1fYm9v +a21hcmtfc3FtXzEyOCIgc3R5bGU9ImRpc3BsYXk6bm9uZSI+PC9zcGFuPjwvc3Bhbj48L3A+PHAg +IGNsYXNzPSJkcy1tYXJrZG93bi1wYXJhZ3JhcGgiIHN0eWxlPSJtYXJnaW4tcmlnaHQ6IDBweDsg +bWFyZ2luLWJvdHRvbTogOHB4OyBtYXJnaW4tbGVmdDogMHB4OyBtYXJnaW4tdG9wOiAwcHggIWlt +cG9ydGFudDsiPjwvcD48b2wgIHN0YXJ0PSIxIiBzdHlsZT0ibWFyZ2luOiAxNnB4IDBweDsgcGFk +ZGluZy1sZWZ0OiAxOHB4OyBjb2xvcjogcmdiKDE1LCAxNywgMjEpOyBmb250LWZhbWlseTogcXVv +dGUtY2prLXBhdGNoLCBJbnRlciwgc3lzdGVtLXVpLCAtYXBwbGUtc3lzdGVtLCBCbGlua01hY1N5 +c3RlbUZvbnQsICdTZWdvZSBVSScsIFJvYm90bywgT3h5Z2VuLCBVYnVudHUsIENhbnRhcmVsbCwg +J09wZW4gU2FucycsICdIZWx2ZXRpY2EgTmV1ZScsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTZw +eDsgZm9udC1zdHlsZTogbm9ybWFsOyBmb250LXZhcmlhbnQtbGlnYXR1cmVzOiBub3JtYWw7IGZv +bnQtdmFyaWFudC1jYXBzOiBub3JtYWw7IGZvbnQtd2VpZ2h0OiA0MDA7IGxldHRlci1zcGFjaW5n +OiBub3JtYWw7IHRleHQtYWxpZ246IHN0YXJ0OyB0ZXh0LWluZGVudDogMHB4OyB0ZXh0LXRyYW5z +Zm9ybTogbm9uZTsgd29yZC1zcGFjaW5nOiAwcHg7IHdoaXRlLXNwYWNlOiBub3JtYWw7IGJhY2tn +cm91bmQtY29sb3I6IHJnYigyNTUsIDI1NSwgMjU1KTsgdGV4dC1kZWNvcmF0aW9uLXRoaWNrbmVz +czogaW5pdGlhbDsgdGV4dC1kZWNvcmF0aW9uLXN0eWxlOiBpbml0aWFsOyB0ZXh0LWRlY29yYXRp +b24tY29sb3I6IGluaXRpYWw7Ij48bGkgPjxwICBjbGFzcz0iZHMtbWFya2Rvd24tcGFyYWdyYXBo +IiBzdHlsZT0ibWFyZ2luLXJpZ2h0OiAwcHg7IG1hcmdpbi1ib3R0b206IDhweDsgbWFyZ2luLWxl +ZnQ6IDBweDsgbWFyZ2luLXRvcDogMHB4ICFpbXBvcnRhbnQ7Ij48c3BhbiAgc3R5bGU9ImZvbnQt +d2VpZ2h0OiA0MDA7IGZvbnQtZmFtaWx5OiAnbWljcm9zb2Z0IHlhaGVpJzsiPuaOqOi/m+W6k+Wt +mOaooeWdl+W3peS9nDwvc3Bhbj48L3A+PHVsICBzdHlsZT0ibWFyZ2luOiA0cHggMHB4IDBweDsg +cGFkZGluZy1sZWZ0OiAxOHB4OyI+PGxpID48cCAgY2xhc3M9ImRzLW1hcmtkb3duLXBhcmFncmFw +aCIgc3R5bGU9Im1hcmdpbi1yaWdodDogMHB4OyBtYXJnaW4tYm90dG9tOiAwcHg7IG1hcmdpbi1s +ZWZ0OiAwcHg7IG1hcmdpbi10b3A6IDBweCAhaW1wb3J0YW50OyI+PHNwYW4gIHN0eWxlPSJmb250 +LWZhbWlseTogJ21pY3Jvc29mdCB5YWhlaSc7Ij7lrozmiJDlupPlrZjpnIDmsYLor4TlrqHkuI7l +t6XkvZzph4/or4TkvLDvvIgwNC4yM++8iTwvc3Bhbj48L3A+PC9saT48bGkgIHN0eWxlPSJtYXJn +aW4tdG9wOiA2cHg7Ij48cCAgY2xhc3M9ImRzLW1hcmtkb3duLXBhcmFncmFwaCIgc3R5bGU9Im1h +cmdpbi1yaWdodDogMHB4OyBtYXJnaW4tYm90dG9tOiAwcHg7IG1hcmdpbi1sZWZ0OiAwcHg7IG1h +cmdpbi10b3A6IDBweCAhaW1wb3J0YW50OyI+PHNwYW4gIHN0eWxlPSJmb250LWZhbWlseTogJ21p +Y3Jvc29mdCB5YWhlaSc7Ij7kv67lpI3lupPlrZjnm7jlhbPnvLrpmbfvvIgwNC4yOe+8iTwvc3Bh +bj48L3A+PC9saT48L3VsPjwvbGk+PGxpICBzdHlsZT0ibWFyZ2luLXRvcDogNnB4OyI+PHAgIGNs +YXNzPSJkcy1tYXJrZG93bi1wYXJhZ3JhcGgiIHN0eWxlPSJtYXJnaW4tcmlnaHQ6IDBweDsgbWFy +Z2luLWJvdHRvbTogOHB4OyBtYXJnaW4tbGVmdDogMHB4OyBtYXJnaW4tdG9wOiAwcHggIWltcG9y +dGFudDsiPjxzcGFuICBzdHlsZT0iZm9udC13ZWlnaHQ6IDQwMDsgZm9udC1mYW1pbHk6ICdtaWNy +b3NvZnQgeWFoZWknOyI+5o+Q5Y2H54mI5pys6LSo6YePPC9zcGFuPjwvcD48dWwgIHN0eWxlPSJt +YXJnaW46IDRweCAwcHggMHB4OyBwYWRkaW5nLWxlZnQ6IDE4cHg7Ij48bGkgPjxwICBjbGFzcz0i +ZHMtbWFya2Rvd24tcGFyYWdyYXBoIiBzdHlsZT0ibWFyZ2luLXJpZ2h0OiAwcHg7IG1hcmdpbi1i +b3R0b206IDBweDsgbWFyZ2luLWxlZnQ6IDBweDsgbWFyZ2luLXRvcDogMHB4ICFpbXBvcnRhbnQ7 +Ij48c3BhbiAgc3R5bGU9ImZvbnQtZmFtaWx5OiAnbWljcm9zb2Z0IHlhaGVpJzsiPuS/ruWkjeeJ +iOacrOe8uumZt+S4jua1i+ivlemXrumimDwvc3Bhbj48L3A+PC9saT48bGkgIHN0eWxlPSJtYXJn +aW4tdG9wOiA2cHg7Ij48cCAgY2xhc3M9ImRzLW1hcmtkb3duLXBhcmFncmFwaCIgc3R5bGU9Im1h +cmdpbi1yaWdodDogMHB4OyBtYXJnaW4tYm90dG9tOiAwcHg7IG1hcmdpbi1sZWZ0OiAwcHg7IG1h +cmdpbi10b3A6IDBweCAhaW1wb3J0YW50OyI+PHNwYW4gIHN0eWxlPSJmb250LWZhbWlseTogJ21p +Y3Jvc29mdCB5YWhlaSc7Ij7lpITnkIbljoblj7LpgZfnlZnpl67popg8L3NwYW4+PC9wPjwvbGk+ +PC91bD48L2xpPjxsaSAgc3R5bGU9Im1hcmdpbi10b3A6IDZweDsiPjxwICBjbGFzcz0iZHMtbWFy +a2Rvd24tcGFyYWdyYXBoIiBzdHlsZT0ibWFyZ2luLXJpZ2h0OiAwcHg7IG1hcmdpbi1ib3R0b206 +IDhweDsgbWFyZ2luLWxlZnQ6IDBweDsgbWFyZ2luLXRvcDogMHB4ICFpbXBvcnRhbnQ7Ij48c3Bh +biAgc3R5bGU9ImZvbnQtd2VpZ2h0OiA0MDA7IGZvbnQtZmFtaWx5OiAnbWljcm9zb2Z0IHlhaGVp +JzsiPuaUr+aSkUFJ5LiO5pWw5o2u6IO95YqbPC9zcGFuPjwvcD48dWwgIHN0eWxlPSJtYXJnaW46 +IDRweCAwcHggMHB4OyBwYWRkaW5nLWxlZnQ6IDE4cHg7Ij48bGkgPjxwICBjbGFzcz0iZHMtbWFy +a2Rvd24tcGFyYWdyYXBoIiBzdHlsZT0ibWFyZ2luLXJpZ2h0OiAwcHg7IG1hcmdpbi1ib3R0b206 +IDBweDsgbWFyZ2luLWxlZnQ6IDBweDsgbWFyZ2luLXRvcDogMHB4ICFpbXBvcnRhbnQ7Ij48c3Bh +biAgc3R5bGU9ImZvbnQtZmFtaWx5OiAnbWljcm9zb2Z0IHlhaGVpJzsiPuWujOaIkEFJ5pW055CG +5YWl5bqT5rWB56iL55u45YWz5bel5L2cPC9zcGFuPjwvcD48L2xpPjwvdWw+PC9saT48bGkgIHN0 +eWxlPSJtYXJnaW4tdG9wOiA2cHg7Ij48cCAgY2xhc3M9ImRzLW1hcmtkb3duLXBhcmFncmFwaCIg +c3R5bGU9Im1hcmdpbi1yaWdodDogMHB4OyBtYXJnaW4tYm90dG9tOiA4cHg7IG1hcmdpbi1sZWZ0 +OiAwcHg7IG1hcmdpbi10b3A6IDBweCAhaW1wb3J0YW50OyI+PHNwYW4gIHN0eWxlPSJmb250LXdl +aWdodDogNDAwOyBmb250LWZhbWlseTogJ21pY3Jvc29mdCB5YWhlaSc7Ij7lrozlloTkuLvmlbDm +ja7og73lips8L3NwYW4+PC9wPjx1bCAgc3R5bGU9Im1hcmdpbjogNHB4IDBweCAwcHg7IHBhZGRp +bmctbGVmdDogMThweDsiPjxsaSA+PHAgIGNsYXNzPSJkcy1tYXJrZG93bi1wYXJhZ3JhcGgiIHN0 +eWxlPSJtYXJnaW4tcmlnaHQ6IDBweDsgbWFyZ2luLWJvdHRvbTogMHB4OyBtYXJnaW4tbGVmdDog +MHB4OyBtYXJnaW4tdG9wOiAwcHggIWltcG9ydGFudDsiPjxzcGFuICBzdHlsZT0iZm9udC1mYW1p +bHk6ICdtaWNyb3NvZnQgeWFoZWknOyI+5pW055CG5Li75pWw5o2u5qih5Z2X5o6l5Y+j77yM5Li6 +5ZCO57ut5byA5Y+R5o+Q5L6b5L6d5o2uPC9zcGFuPjwvcD48L2xpPjwvdWw+PC9saT48L29sPjxk +aXYgPjxzcGFuICBzdHlsZT0iZm9udC1mYW1pbHk6ICdtaWNyb3NvZnQgeWFoZWknOyI+PHNwYW4g +IGNsYXNzPSJheW1fYm9va21hcmsiIGlkPSJfYXltX2Jvb2ttYXJrX3NxbV8xMjkiIHN0eWxlPSJk +aXNwbGF5Om5vbmUiPjwvc3Bhbj48L3NwYW4+PC9kaXY+PHAgIGNsYXNzPSJtZC1lbmQtYmxvY2sg +bWQtcCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhlcml0 +OyBtYXJnaW46IDBweCAwcHggOHB4OyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0aW9uOiBy +ZWxhdGl2ZTsiPjxzcGFuICBzdHlsZT0iZm9udC1mYW1pbHk6ICdtaWNyb3NvZnQgeWFoZWknOyI+ +PGJyID48L3NwYW4+PC9wPjxwICBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLXAiIHN0eWxlPSJib3gt +c2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5oZXJpdDsgbWFyZ2luOiAxMnB4IDBw +eDsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyBwb3NpdGlvbjogcmVsYXRpdmU7IGZvbnQtdmFyaWFu +dC1saWdhdHVyZXM6IG5vcm1hbDsgZm9udC12YXJpYW50LWNhcHM6IG5vcm1hbDsgbGV0dGVyLXNw +YWNpbmc6IG5vcm1hbDsgdGV4dC1hbGlnbjogc3RhcnQ7IHRleHQtaW5kZW50OiAwcHg7IHdvcmQt +c3BhY2luZzogMHB4OyB0ZXh0LWRlY29yYXRpb24tc3R5bGU6IGluaXRpYWw7IHRleHQtZGVjb3Jh +dGlvbi1jb2xvcjogaW5pdGlhbDsiPjxzcGFuICBzdHlsZT0iZm9udC1mYW1pbHk6ICdtaWNyb3Nv +ZnQgeWFoZWknOyI+PHNwYW4gIGNsYXNzPSJtZC1wbGFpbiIgc3R5bGU9ImZvbnQtZmFtaWx5OiAn +bWljcm9zb2Z0IHlhaGVpJzsgY29sb3I6IHJnYig1MSwgNTEsIDUxKTsgZm9udC1zaXplOiAxNnB4 +OyBmb250LXN0eWxlOiBub3JtYWw7IHRleHQtdHJhbnNmb3JtOiBub25lOyBib3gtc2l6aW5nOiBi +b3JkZXItYm94OyBmb250LXdlaWdodDogNzAwOyI+5a2Y5Zyo6Zeu6aKY77yaPC9zcGFuPjxzcGFu +ICBjbGFzcz0ibWQtcGxhaW4gbWQtZXhwYW5kIiBzdHlsZT0iZm9udC1mYW1pbHk6ICdtaWNyb3Nv +ZnQgeWFoZWknOyBjb2xvcjogcmdiKDUxLCA1MSwgNTEpOyBmb250LXNpemU6IDE2cHg7IGZvbnQt +c3R5bGU6IG5vcm1hbDsgZm9udC13ZWlnaHQ6IDQwMDsgdGV4dC10cmFuc2Zvcm06IG5vbmU7IGJv +eC1zaXppbmc6IGJvcmRlci1ib3g7Ij4g5pegPC9zcGFuPjwvc3Bhbj48L3A+PHAgIGNsYXNzPSJt +ZC1lbmQtYmxvY2sgbWQtcCBtZC1mb2N1cyIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7 +IGxpbmUtaGVpZ2h0OiBpbmhlcml0OyBtYXJnaW46IDEycHggMHB4OyB3aGl0ZS1zcGFjZTogcHJl +LXdyYXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsgZm9udC12YXJpYW50LWxpZ2F0dXJlczogbm9ybWFs +OyBmb250LXZhcmlhbnQtY2Fwczogbm9ybWFsOyBsZXR0ZXItc3BhY2luZzogbm9ybWFsOyB0ZXh0 +LWFsaWduOiBzdGFydDsgdGV4dC1pbmRlbnQ6IDBweDsgd29yZC1zcGFjaW5nOiAwcHg7IHRleHQt +ZGVjb3JhdGlvbi10aGlja25lc3M6IGluaXRpYWw7IHRleHQtZGVjb3JhdGlvbi1zdHlsZTogaW5p +dGlhbDsgdGV4dC1kZWNvcmF0aW9uLWNvbG9yOiBpbml0aWFsOyI+PHNwYW4gIHN0eWxlPSJjb2xv +cjogcmdiKDUxLCA1MSwgNTEpOyBmb250LWZhbWlseTogJ09wZW4gU2FucycsICdDbGVhciBTYW5z +JywgJ0hlbHZldGljYSBOZXVlJywgSGVsdmV0aWNhLCBBcmlhbCwgJ1NlZ29lIFVJIEVtb2ppJywg +c2Fucy1zZXJpZjsgZm9udC1zaXplOiAxNnB4OyBmb250LXN0eWxlOiBub3JtYWw7IGZvbnQtd2Vp +Z2h0OiA0MDA7IHRleHQtdHJhbnNmb3JtOiBub25lOyI+PGJyID48L3NwYW4+PC9wPjxkaXYgIHN0 +eWxlPSJjbGVhcjogYm90aDsiPjxzcGFuICBzdHlsZT0iZm9udC1mYW1pbHk6IFRhaG9tYSwgQXJp +YWwsIFNUSGVpdGlTQy1MaWdodCwgU2ltU3VuOyI+PGJyID48L3NwYW4+PC9kaXY+PGRpdiAgc3R5 +bGU9ImNsZWFyOiBib3RoOyI+PGRpdiAgY2xhc3M9IiBfX2FsaXl1bl9ub2RlX2hhc19jb2xvciIg +c3R5bGU9Im1hcmdpbjogMHB4OyBwYWRkaW5nOiAwcHg7IGJvcmRlcjogMHB4OyBvdXRsaW5lOiAw +cHg7IGZvbnQtdmFyaWFudC1saWdhdHVyZXM6IG5vcm1hbDsgZm9udC12YXJpYW50LWNhcHM6IG5v +cm1hbDsgdGV4dC1hbGlnbjogc3RhcnQ7IHRleHQtaW5kZW50OiAwcHg7IHRleHQtZGVjb3JhdGlv +bi10aGlja25lc3M6IGluaXRpYWw7IHRleHQtZGVjb3JhdGlvbi1zdHlsZTogaW5pdGlhbDsgdGV4 +dC1kZWNvcmF0aW9uLWNvbG9yOiBpbml0aWFsOyBjbGVhcjogYm90aDsiPjxzcGFuICBjbGFzcz0i +IF9fYWxpeXVuX25vZGVfaGFzX2NvbG9yIiBzdHlsZT0iZm9udC1zdHlsZTogbm9ybWFsOyBmb250 +LXdlaWdodDogNDAwOyB0ZXh0LXRyYW5zZm9ybTogbm9uZTsgbWFyZ2luOiAwcHg7IHBhZGRpbmc6 +IDBweDsgYm9yZGVyOiAwcHg7IG91dGxpbmU6IDBweDsgZm9udC1mYW1pbHk6ICdNaWNyb3NvZnQg +WWFoZWknOyBmb250LXNpemU6IDEzcHg7IGNvbG9yOiByZ2IoMTkxLCAxOTEsIDE5MSk7Ij5CZXN0 +IHJlZ2FyZHMsPC9zcGFuPjwvZGl2PjxkaXYgIGNsYXNzPSIgX19hbGl5dW5fbm9kZV9oYXNfY29s +b3IiIHN0eWxlPSJtYXJnaW46IDBweDsgcGFkZGluZzogMHB4OyBib3JkZXI6IDBweDsgb3V0bGlu +ZTogMHB4OyBmb250LXZhcmlhbnQtbGlnYXR1cmVzOiBub3JtYWw7IGZvbnQtdmFyaWFudC1jYXBz +OiBub3JtYWw7IHRleHQtYWxpZ246IHN0YXJ0OyB0ZXh0LWluZGVudDogMHB4OyB0ZXh0LWRlY29y +YXRpb24tdGhpY2tuZXNzOiBpbml0aWFsOyB0ZXh0LWRlY29yYXRpb24tc3R5bGU6IGluaXRpYWw7 +IHRleHQtZGVjb3JhdGlvbi1jb2xvcjogaW5pdGlhbDsgY2xlYXI6IGJvdGg7Ij48c3BhbiAgY2xh +c3M9IiBfX2FsaXl1bl9ub2RlX2hhc19jb2xvciIgc3R5bGU9ImZvbnQtc3R5bGU6IG5vcm1hbDsg +Zm9udC13ZWlnaHQ6IDQwMDsgdGV4dC10cmFuc2Zvcm06IG5vbmU7IG1hcmdpbjogMHB4OyBwYWRk +aW5nOiAwcHg7IGJvcmRlcjogMHB4OyBvdXRsaW5lOiAwcHg7IGZvbnQtZmFtaWx5OiAnTWljcm9z +b2Z0IFlhaGVpJzsgZm9udC1zaXplOiAxM3B4OyBjb2xvcjogcmdiKDE5MSwgMTkxLCAxOTEpOyI+ +5p2o6L2pPC9zcGFuPjwvZGl2PjxkaXYgIGNsYXNzPSIgX19hbGl5dW5fbm9kZV9oYXNfY29sb3Ii +IHN0eWxlPSJtYXJnaW46IDBweDsgcGFkZGluZzogMHB4OyBib3JkZXI6IDBweDsgb3V0bGluZTog +MHB4OyBmb250LXZhcmlhbnQtbGlnYXR1cmVzOiBub3JtYWw7IGZvbnQtdmFyaWFudC1jYXBzOiBu +b3JtYWw7IHRleHQtYWxpZ246IHN0YXJ0OyB0ZXh0LWluZGVudDogMHB4OyB0ZXh0LWRlY29yYXRp +b24tdGhpY2tuZXNzOiBpbml0aWFsOyB0ZXh0LWRlY29yYXRpb24tc3R5bGU6IGluaXRpYWw7IHRl +eHQtZGVjb3JhdGlvbi1jb2xvcjogaW5pdGlhbDsgY2xlYXI6IGJvdGg7Ij48aW1nICBkYXRhLWFs +aW1haWwtaW1nLXByb2Nlc3NlZC1zcW0tZWRpdG9yPSJ0cnVlIiBoZWlnaHQ9IjY4IiBzcmM9ImNp +ZDo2ZmUzODEzZi1mMzg5LTQyMjQtYWRjOC1lZDY0Zjc2MDQ0NjciIHdpZHRoPSIzMDAiIHN0eWxl +PSJjb2xvcjogcmdiKDAsIDAsIDApOyBmb250LWZhbWlseTogVGFob21hLCBBcmlhbCwgU1RIZWl0 +aSwgU2ltU3VuOyBmb250LXNpemU6IDE0cHg7IGZvbnQtc3R5bGU6IG5vcm1hbDsgZm9udC13ZWln +aHQ6IDQwMDsgdGV4dC10cmFuc2Zvcm06IG5vbmU7IG1hcmdpbjogMHB4OyBwYWRkaW5nOiAwcHg7 +IGJvcmRlcjogMHB4OyBvdXRsaW5lOiAwcHg7IHZlcnRpY2FsLWFsaWduOiBib3R0b207Ij48c3Bh +biAgc3R5bGU9ImNvbG9yOiByZ2IoMCwgMCwgMCk7IGZvbnQtZmFtaWx5OiBUYWhvbWEsIEFyaWFs +LCBTVEhlaXRpLCBTaW1TdW47IGZvbnQtc2l6ZTogMTRweDsgZm9udC1zdHlsZTogbm9ybWFsOyBm +b250LXdlaWdodDogNDAwOyB0ZXh0LXRyYW5zZm9ybTogbm9uZTsiPiZuYnNwOzwvc3Bhbj48L2Rp +dj48ZGl2ICBjbGFzcz0iIF9fYWxpeXVuX25vZGVfaGFzX2NvbG9yIiBzdHlsZT0ibWFyZ2luOiAw +cHg7IHBhZGRpbmc6IDBweDsgYm9yZGVyOiAwcHg7IG91dGxpbmU6IDBweDsgZm9udC12YXJpYW50 +LWxpZ2F0dXJlczogbm9ybWFsOyBmb250LXZhcmlhbnQtY2Fwczogbm9ybWFsOyB0ZXh0LWFsaWdu +OiBzdGFydDsgdGV4dC1pbmRlbnQ6IDBweDsgdGV4dC1kZWNvcmF0aW9uLXRoaWNrbmVzczogaW5p +dGlhbDsgdGV4dC1kZWNvcmF0aW9uLXN0eWxlOiBpbml0aWFsOyB0ZXh0LWRlY29yYXRpb24tY29s +b3I6IGluaXRpYWw7IGNsZWFyOiBib3RoOyI+PHNwYW4gIGNsYXNzPSIgX19hbGl5dW5fbm9kZV9o +YXNfY29sb3IiIHN0eWxlPSJmb250LXNpemU6IDE0cHg7IGZvbnQtc3R5bGU6IG5vcm1hbDsgZm9u +dC13ZWlnaHQ6IDQwMDsgdGV4dC10cmFuc2Zvcm06IG5vbmU7IG1hcmdpbjogMHB4OyBwYWRkaW5n +OiAwcHg7IGJvcmRlcjogMHB4OyBvdXRsaW5lOiAwcHg7IGZvbnQtZmFtaWx5OiAnTWljcm9zb2Z0 +IFlhaGVpJzsgY29sb3I6IHJnYigxOTEsIDE5MSwgMTkxKTsiPuWcsOWdgO+8muS4reWbvcK35Y2X +5Lqs6L2v5Lu26LC36L2v5Lu25aSn6YGTMTHlj7foirHnpZ7lpKfljqYzRjwvc3Bhbj48L2Rpdj48 +ZGl2ICBjbGFzcz0iIF9fYWxpeXVuX25vZGVfaGFzX2NvbG9yIiBzdHlsZT0ibWFyZ2luOiAwcHg7 +IHBhZGRpbmc6IDBweDsgYm9yZGVyOiAwcHg7IG91dGxpbmU6IDBweDsgZm9udC12YXJpYW50LWxp +Z2F0dXJlczogbm9ybWFsOyBmb250LXZhcmlhbnQtY2Fwczogbm9ybWFsOyB0ZXh0LWFsaWduOiBz +dGFydDsgdGV4dC1pbmRlbnQ6IDBweDsgdGV4dC1kZWNvcmF0aW9uLXRoaWNrbmVzczogaW5pdGlh +bDsgdGV4dC1kZWNvcmF0aW9uLXN0eWxlOiBpbml0aWFsOyB0ZXh0LWRlY29yYXRpb24tY29sb3I6 +IGluaXRpYWw7IGNsZWFyOiBib3RoOyI+PHNwYW4gIGNsYXNzPSIgX19hbGl5dW5fbm9kZV9oYXNf +Y29sb3IiIHN0eWxlPSJmb250LXNpemU6IDE0cHg7IGZvbnQtc3R5bGU6IG5vcm1hbDsgZm9udC13 +ZWlnaHQ6IDQwMDsgdGV4dC10cmFuc2Zvcm06IG5vbmU7IG1hcmdpbjogMHB4OyBwYWRkaW5nOiAw +cHg7IGJvcmRlcjogMHB4OyBvdXRsaW5lOiAwcHg7IGZvbnQtZmFtaWx5OiAnTWljcm9zb2Z0IFlh +aGVpJzsgY29sb3I6IHJnYigxOTEsIDE5MSwgMTkxKTsiPuaJi+acuu+8mjE4NzI2MTI4NDg5PC9z +cGFuPjwvZGl2PjxkaXYgIGNsYXNzPSIgX19hbGl5dW5fbm9kZV9oYXNfY29sb3IiIHN0eWxlPSJt +YXJnaW46IDBweDsgcGFkZGluZzogMHB4OyBib3JkZXI6IDBweDsgb3V0bGluZTogMHB4OyBmb250 +LXZhcmlhbnQtbGlnYXR1cmVzOiBub3JtYWw7IGZvbnQtdmFyaWFudC1jYXBzOiBub3JtYWw7IHRl +eHQtYWxpZ246IHN0YXJ0OyB0ZXh0LWluZGVudDogMHB4OyB0ZXh0LWRlY29yYXRpb24tdGhpY2tu +ZXNzOiBpbml0aWFsOyB0ZXh0LWRlY29yYXRpb24tc3R5bGU6IGluaXRpYWw7IHRleHQtZGVjb3Jh +dGlvbi1jb2xvcjogaW5pdGlhbDsgY2xlYXI6IGJvdGg7Ij48c3BhbiAgY2xhc3M9IiBfX2FsaXl1 +bl9ub2RlX2hhc19jb2xvciIgc3R5bGU9ImZvbnQtc2l6ZTogMTRweDsgZm9udC1zdHlsZTogbm9y +bWFsOyBmb250LXdlaWdodDogNDAwOyB0ZXh0LXRyYW5zZm9ybTogbm9uZTsgbWFyZ2luOiAwcHg7 +IHBhZGRpbmc6IDBweDsgYm9yZGVyOiAwcHg7IG91dGxpbmU6IDBweDsgZm9udC1mYW1pbHk6ICdN +aWNyb3NvZnQgWWFoZWknOyBjb2xvcjogcmdiKDE5MSwgMTkxLCAxOTEpOyI+6YKu566x77yaeWFu +Z3h1YW5Ad2l0c29mdC5jbjwvc3Bhbj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48L2JvZHk+PC9o +dG1sPjwvZGl2Pg== + +--=_mailmaster-6a18e4a4_0_3b25_=-- + +--=_mailmaster-6a18e4a4_0_1e1f_= +Content-Type: application/octet-stream +Content-Transfer-Encoding: base64 +Content-ID: <6fe3813f-f389-4224-adc8-ed64f7604467> +Content-Disposition: inline; + filename="=?utf-8?B?57u05ouT56eR5oqALemCruS7tuetvuWQjWxvZ28ucG5n?=" + +iVBORw0KGgoAAAANSUhEUgAAASwAAABECAYAAAA7rQj2AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJ +bWFnZVJlYWR5ccllPAAAA4RpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdp +bj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6 +eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTQ1IDc5LjE2 +MzQ5OSwgMjAxOC8wOC8xMy0xNjo0MDoyMiAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJo +dHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlw +dGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEu +MC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVz +b3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1N +Ok9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDplYjhjYzQwMy1lNzZjLTQ5NDgtODFmOC1kNDIy +MmRkMTdhYjgiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NkVENzExMzg1MzBEMTFFQTg4QjNF +NEJFMUQyRjc1RkIiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NkVENzExMzc1MzBEMTFFQTg4 +QjNFNEJFMUQyRjc1RkIiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTkg +KFdpbmRvd3MpIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6 +ZmNkNTdlM2UtZThjYS05ZjQ2LWEzZTUtMWJlYmE2NjA5Y2FmIiBzdFJlZjpkb2N1bWVudElEPSJh +ZG9iZTpkb2NpZDpwaG90b3Nob3A6MzZkNmNjNTUtNTY3Yi01MTQ2LWEwYWYtMzBlMzEwMTMxNDFk +Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQg +ZW5kPSJyIj8+0WEjogAAEjpJREFUeNrsXQuMXFUZPitFCq1lahR5dwoNoIZ0iw8Qkc5qkGIi3RUM +SITtAhLAars0ipCS3Q1qUCK7DSWAgN2taHnpziqoAclOFaIikakkBbXYKUKtPKelLS1tWf9/9zs7 +/5495947s49Ou/+XnNy59557XnPPd7//P+eeW9PX12cUCoViX8B7tAkUCoUSlkKhUChhKRQKJSyF +QqFQwlIoFAolLIVCoYSlUCgUSlgKhUKhhKVQKJSwFAqFQglLoVAolLAUCoUSlkKhUFQDJq1atUou +17CLwnsp/JTCV6vk+P1VVBY9PvrHGe6SIddS+KEe1+Pu8RpdXkahUKhJqFAoFEpYCoVCCUuhUCiU +sBQKhUIJS6FQKGEpFAqFEpZCoVAoYSkUCiUshUKhqCpM0iZQVCuef/75IfsnnXSSNooqLIWi6qHv +jylUYSkmFqY0LG+nTa1zOE+hbXv2G0V74JD6WzlOOx2rC6Vl4/D1FK/ZObeANo0Uuuhcp+faFciz +4Bxvpc1sOt4QyNNXfi53jy8fX16030ubZtrPe+K2otxpCgWUvzVQNx98bZGhTcZNB+e6abNmW/fC +1sD/1V9WOp9XhaWYiKhFR2wTgTtnrxMvxZ0sJi0bZzF1vJRzbhHOpT2dNI0O7JIVp9HC19Dv+jLK +38PECSJJklcGZfcR23wKDRS/hre8j+MSOZF3AWnZ/S5PmRsRz82vHu3TQsSUCtR3WFlVYSkmGjbQ +EzsnnuL89H6TlQB11FwF6WXRsbKCeNLo2D7UB84x4bBKWo1Ong2V3y0n5Tkb13QmzMt4VBDHnWmV +JiswOs4Kcz1tu2yeIL+CuC4d0271IDMfkS2jMBd170jS2KqwFIqSaVUJeqBMZAfNRsSfi2uMR5X1 +4Np6qKOkSAXKH8rLRx5ZaRaDnIooT2MlDQOzueBRk2nRTj2oeyKowlJMNMwgVZVxiCLv8+mUobDY +t9SE/fkwjRZ5OnAKHbXJYx4xQViV1onrm30kBF+TJCUmhrokeQWQhrLzKjrkUQkaAwqP69bJhNjX +15dl3yKFelK+WSUshWK4X0Sql3zCTu0FdzoihxxIhzsnm5YNtL8okPcwJYOOXRREZMmmOSLrQ2FK +cZ5zXBUTkdd4t3VTwPzlNmslorLqtjFGmQ4Q1vSGW9wh45nF7JL+yqfqf8QZSofkZjo36ASj8/z7 +zdD1G2ed5aY958h1j+VxLceZMYqNU0f5em1pyusI2nxIHFpPcTeP5j9DeRxAm5PFoRcpjzf21V5N +9ZlFm6nif18fEXcybSZjdzfF3erGqaKVbbvkqFRNTc1opLkayioV4zOa7yoZYR5JP88aVk3sSPeM +/q22I27sW0L/5H7aGZdXBLhPzg6cm43z5ZqDXK+0q1wxOFBEHaVZzc73NP03BVVYxjxA4Qzbd0CU +m6mj5UxpmPhFJlTqbHvoeAeeAhafoePPxuTxPgrPiP0mexNRenzujxWUu5ny7UUap9DmevxnU7Hl +dJkop5kBf2SR4tdS3Nvo91FI42k69l2kwXVakYTkCXcLU6AHnSqE75iBES7beTMTTLVlhQnYE6M4 +2nxqwzN9wCqvzgh1x45xTo9HCXOe0cC2hOVn5zc712slwcAH1e+Mr1BdZQNm4uB0CfsgI7KyzvfW +aiGsjUwSe0EpnCjIivE76qT/oePzHNuc1dANdJx/fwCS2+JWkJvFTZTGDqFEFlI4yMn6IjrHf/h1 +IJXZFRRfluFYCuclvO5VClfj9zlUjjuovK8laCtuk3nYnSVOnQwSZzxF4deok8VkeU9BeQ/pWxTe +2ddYyPEVGRBLzkMcBYpbjDLj0PmLHtOtMUAsTFQtrFQ818i8OyjOfDyI6mLyCqXB5ecHbC8IMI8H +OT+EmpOm41F4XR7VFTITu5DfXiUsvlF5cthKCo+TObhnL9x3X3P278FWNswGtEVLII25Drlx592B +30cb/yjHWQicz7vIg1XQMSLObgovx7TfoDkOGb0VCssS4HMgET7+ilBHS0Eq/GWaS83AV0ficFqg +LseJ43xjfTuCgD/tcRM0RSmF8TQHjWdOkAeFBOrEjdMME6gYyCvlpokO3OVTIiCRZlOaxBlVfm7f +BYLcUhHlb/OlwaYnXV8Agc5HnIaYKQu5iPZc4zGP0xEEyG2QdszCYWWtoafhWPqwphJJbQ08zT9i +Sp95cnEkhUecY2dSeCui8da5vhPK40AQwgdx6BUQzOco/FZEvYrChSb5aMh0yqsYaKOouExgj8oO +ROcWVKAaZZ7LKI3FnjhZUxpuXw/FdEmUSUjXtEaQtuz0tWUqxqY3u68pm7DEu4R8j9aMxbuEo+TD +UlSIcn2bY6qwQmTFoI6yNqJD+kY2nrUdvwycK8jKEsQudEyXIC83JSezS5h3UrhD7Evi/DNs/GmO +I/FbFB6isCVC7d1dBknNgwKyT6pBVSTqs4nqdwftHwuzzRIWl+/sBNl0CCV0H4VT8fsxClfg91ak +Jdt1nkj/BQrLnXSf0q6pGA2MuQ+LOs8U2PYsNZckcF6PJi53zUEqD9f5SjPgBLcENY3KtS6CMJkI +8gHiZdOw4PHbvGaVJtI8zAx1XD9H558ooy7zAubaqYJY1oBYfwIVKXElzHMT8RDhels1uENaDLIu +hJ85/3FKENZLFNcza/ka7W2K6iYsupH5aX2eIIYDxqtilPcxjqrYZgYc4Fb97HHiLzQlR/M0lywc +QrqOOuXbMUU4Aw78J0CGbI4dWIm6Al4WCo7b83hLjMIP9g9sb3cI64sg6IYKm/NUmJiMXVBRkx3f +l8Us4aC3+LmqLMW+oLAa92Ld2NEsHRRTUJ61RCCvgkwkzjdhH5ZUMQw2weII6zIQxQmUV43HHKz1 +dGwX91hFStubKf4uQV4PCLXzV5ho1q/1K1aFFA7H/kV0/cOeOifF4cK8ZH8ZO3lDPqyjPEowr4Sl +GA3sz+8SngJF8j/neNc4luE6TFBlIjzBOXcxOnZUOF4oQJ7i0I5wmJPWEhyvA7ntchTc+TBJR4oH +KG2es8M+vM0x4R3tXorxVlgvmYFJZRZv7ysVo441Hx2dHcZ2ljtPL7g3cMmFwsw52gyd6MltINXQ +Fs/1k539v5jSiNxlo1ClKY55azzlOdQxOa/HQ+lAKM5NI8j/OVEPJsjT8fuf1Na/cczrg6GqLEn/ +TbuaYqwIKyU6/TqYACEc4jm2rVoqRx1nhuPLeYzqtDFAcJvEdcNOO05nH1yv8l10TR+l9X76/WVP +/BvNgHPcNUtvTtDW7gRcOxp7sKjPBsqbpyjMChBqVLudAIUq/9PzxbSRN1BOvn/4zYCzxIx8Nn/v +FGTFE3X/rk53xWgR1sum9BqHNaWSvjv0MWd/J4XXq6h+rh9rZUQnrdjpjtn0LrHvEabfQZ4s33BJ +kNKJmo0+NeKhYPcPoTT4v7RTDh524p3r7M/CiOgmS9gY1f2lGXjtx+L3choKP8goHhMuT+zjgZQs +7X+ejrOqvAl1tkS6ULuZ5+mDdbM879rVVrJyRKXrecXNpB9hHWPLhMX7MnKlBp482n9Te94rZMJ6 +2iGsyzxP/hBcU4ffW3u3StQVm0JNTqfuBfHs9FwyEqf7MjN0BFDi8lGq0qGCCF3/0HZBtDwCmnR9 +obuwbTOlmf987KMJrv0ezMKzke+jGEm8RMS5hO6HF6qFJKgj1BpnBUu8szcMSTo/XduH1Tnt0sNt +cdfh5d88ysEKuE4c44cHTz2ZWQH5reCZ8XaJmjKue4a2czCzPsNliloa2qlHWhzq9BBfL175yUWQ +IrtN1tB/kyOCstOJFoh+xv8bbzuZwJiwfmGGLkB2Ot14V9CN9uMYQmhwrjMmZp7POINnlR/j+IA2 +CoIZLWI81wQmZeKlZ/sqEKu3r4/kgeWYf8ZjIk4xlS9EZ1XmV5LExUviF5iBmfufBGlJsrqa4lTT +/cDgUWJ3TXS77LDbbrkxKkMe/aTZqhA8YJgkkq4Q2hpIdxHeIxxSjwgSrY8iE6TFKqkj0JZ2NQh+ +0Oec5ZTl4JZ3bS+7cgOvnsGkxEvNyJU0aH8BSJ3Ll7UKi4fHf0DhCJHWclYoPGs6cGNfYIa+4mE7 +zT1VdHOWq2wqdbrb97b42mudTv2WvQ6v04yEsKYE/FeuD2u5Ca8rNM8pYzNu9AJeY5pmSu+g8c0y +I4a0eMULXqnhccf0zpvxHY1NBOoMzR7VlUgZWfPJxC8JbJVLxlU7OJ5Cu6eF2rNtzgKgFmpt8D/y +mIgtZvi7gms8RZkbQ74tJrAWmFVtUQTKKy7IteRdZcYEhncUM570F9v8QUxsQSxmpSXK1gkiT+HB +kp9EN91Ouum4Ae8T6fHNezsdb7SSzQy8z/VhMKtPMi6t4NWZsQQ/xR4JnFtrhi4fU7HTnY6vxDUp +l7AqwEEJfFjbfX3RxsFAybrAgybtPpWd5WW+L+JmogiLzrOf7AYzsCpEjUe1rKU4PFH3/mpxE4wC +0ugPcSZbPVSF++CQH7dYBFVn9/tXexAmZitIIOTP6vCoRYlCEpMugny5nkX3KzgRSquR0mzx5NOL +bdGpS9GUVoWwD+L+pXLMwBI9bVZt8WqkIPPOSeh099PNdaYpLUlicZoZOos5hAcp3FZlN9d7KzCH +KnW68xynT5VZPrv8jMRnnf2dHh+WbxR2e6DclZiF3GF4xYUTPekblJn9ZF8yQ0ce/wS13oqyMtnx +DPcb6ZpVILd9Gty52efFq4vG+IoafW4H+Ik6QAYFENh8qJxFVsXBRJsdUqlMajDXfC+qWzXS5vu0 +llBP7aFbAKZdOiBMQhj8UIVdeBA+vrpAHToD69Y3gcQbsRqpVZ5d1iS0+KYZmLNzZZn/I9+kF/MQ +fpXdXysizvl8WCNxunNeXwiYaSF8AiEEXgXjyTJ9WAePQrtxPdzRRbmyBd9MF4n9/6I97mYlReTE +9wM75HmkkEcQefLr0v2BsMS9E1zOF0RS6+uoMI1WwCQsgnCaQR6rkab1qaWjVBLUSp1HNbVHkRXQ +DnNrcYDsON+6cpdX5u8mQpFFLjzomKR1TrnY+d4BskoJf1jnEMJiJyptrqIb7g+0vcWUXusI4XXc +iHdWIVmNGzCl4RznML9O8+gIkv0XhUupXbc4amsDzu3AbwbPiXoF+3FTSraK64wpreklsUT83g3T +416PonsSxx+UahPz3Jow7YGnlZznqLV9Hf0fnfB8i9AIU68zQqHNwS6vTjsHpFAn/Dr8LcC88Ux5 +iCGLxSCKOQmmKRRhfi0Wisv6lPKhD7kmgLUY0jBp8wmmaWQcwhz0K9rPscEk5HjZSR6fzCoMT18I +2f9xQV7cIXgaBL+rttK3drcD9ymzLmHFN3mu3Vpm402POLcTpGxfTdoCEzLp5EpJJDyP7Tixz8S/ +EQ8AiSdiyiT/g6Ln2C0os/SnmIh9X7q83M1DMdEulQ8lDBxI8LSHWz31c/P6Nx5oSzFaul8AZl3O ++JeBTsM3OjNCfbWjY3LottMqoMiyII0NEQqu1USvWbbenaph/WJi345Q2jJ1Q1U1mTLe/wXRFQKE +mIPFkopJRvrQhsw6wNeNWtCu/WWeFFhA621I1xXRecXOXs5VcI198ld6rWy0KLw4slv3GkmkWxOU +dbdJPOVgr84KL8SUZVsFZXxrPxPWDfhajq/tpodMKazB3r8UscFHS+3cJ0GGeezPDKTRajzLCAsn +fWuZBNxfJqi/TEC5FT0fw8iDtItm+LSQItLrn0aC5aMLgXYZprCEm6UIEzxr52jph1QVivJVVrGS +c6JTFmBWWnXTHGFejUd9chGn5wausb4qLudc34x9KEUePKiPqE9OBNl2bBLOocBEWQszUb9LqJgY +wFyfxgAxtEMFDFEQ7pC+b8KmOMZmS6OjUoZN2rTOcorXDT+WneFuMDpXhGnGM9dTHmXjmmSWJHlk +dqQfeSnC/5QR5JoxnvXh7fwrNmW5DaDE7ByyDBSSHaBggvYupWT9VPiPQhZSBu2khKWYMMiZZB+g +SOpSME5Hjp0oi2H8ReiAPaY0hF+PL9/0kxVMxSJIqxChgDi9Z2CaDjrvR6C08vjWofSRLfOopxSI +qMGaoSC5Jph+8lNh/V+mjlKeRFRMbgvw/+TRNt2CwIo2r/5F4DVomKhhPMGExcrEN8IoZ4w7BDeW +5cns7adIuf9XTRV9kVehUCgioU53hUKhhKVQKBRKWAqFQglLoVAolLAUCoVCCUuhUChhKRQKhRKW +QqFQjAz/F2AAAzYRUAxFcqwAAAAASUVORK5CYII= + +--=_mailmaster-6a18e4a4_0_1e1f_=-- diff --git a/media/inbound/2026-04-30_1703_G5开发周报_2026-04-27_--_2026-04-30---57a46f37-820e-431d-bb09-2c9f4b019797.eml b/media/inbound/2026-04-30_1703_G5开发周报_2026-04-27_--_2026-04-30---57a46f37-820e-431d-bb09-2c9f4b019797.eml new file mode 100644 index 0000000..7afa2ce --- /dev/null +++ b/media/inbound/2026-04-30_1703_G5开发周报_2026-04-27_--_2026-04-30---57a46f37-820e-431d-bb09-2c9f4b019797.eml @@ -0,0 +1,475 @@ +Date: Thu, 30 Apr 2026 17:03:00 +0800 +From: =?utf-8?B?5p2o6L2p?= +To: =?utf-8?B?5YiY5by6?= +Cc: =?utf-8?B?5ZC0552/5Lic?= , =?utf-8?B?6ZmI5piO?= + , =?utf-8?B?5pu+6I6J?= +Message-ID: <6479174f-0102-4fa1-bd1e-241c028ef7cc.yangxuan@witsoft.cn> +In-Reply-To: <0fd0cf13-9972-45a7-937c-4de189ac1ef9.yangxuan@witsoft.cn> +References: <0fd0cf13-9972-45a7-937c-4de189ac1ef9.yangxuan@witsoft.cn> +Subject: =?utf-8?B?RzXlvIDlj5HlkajmiqXjgJAyMDI2LTA0LTI3IC0tIDIwMjYtMDQt?= + =?utf-8?B?MzDjgJE=?= +MIME-Version: 1.0 +Content-Type: multipart/related; boundary="=_mailmaster-6a18e4a4_0_1e1f_=" + +--=_mailmaster-6a18e4a4_0_1e1f_= +Content-Type: multipart/alternative; boundary="=_mailmaster-6a18e4a4_0_3b25_=" + +--=_mailmaster-6a18e4a4_0_3b25_= +Content-Type: text/plain; charset="UTF-8" +Content-Transfer-Encoding: base64 + +6aG555uu77yaIOe7tOS6keaZuumAoEc177yI5bqT5a2Y566h55CG77yJCuaXpeacnwrkuLvopoHl +t6XkvZwK5ZGo5LiA77yIMDQuMjfvvIkKMS4g54mI5pys57y66Zm35L+u5aSNCjIuIEFJ5pW055CG +5YWl5bqT5rWB56iLCjMuIOWOhuWPsumXrumimOWkhOeQhgrlkajkuozvvIgwNC4yOO+8iQoxLiDm +tYvor5Xpl67popjkv67lpI0KMi4g5Li75pWw5o2u5qih5Z2X5o6l5Y+j5pW055CGCuWRqOS4ie+8 +iDA0LjI577yJCjEuIOW6k+WtmOe8uumZt+S/ruWkjQrlkajlm5vvvIgwNC4zMO+8iQoxLiDlupPl +rZjpnIDmsYLor4TlrqHlkozlt6XkvZzph4/or4TkvLAK5pys5ZGo6YeN54K55oiQ5p6c77yaCgog +KiAK5o6o6L+b5bqT5a2Y5qih5Z2X5bel5L2cCgogKiAK5a6M5oiQ5bqT5a2Y6ZyA5rGC6K+E5a6h +5LiO5bel5L2c6YeP6K+E5Lyw77yIMDQuMjPvvIkKCiAqIArkv67lpI3lupPlrZjnm7jlhbPnvLrp +mbfvvIgwNC4yOe+8iQoKICogCuaPkOWNh+eJiOacrOi0qOmHjwoKICogCuS/ruWkjeeJiOacrOe8 +uumZt+S4jua1i+ivlemXrumimAoKICogCuWkhOeQhuWOhuWPsumBl+eVmemXrumimAoKICogCuaU +r+aSkUFJ5LiO5pWw5o2u6IO95YqbCgogKiAK5a6M5oiQQUnmlbTnkIblhaXlupPmtYHnqIvnm7jl +hbPlt6XkvZwKCiAqIArlrozlloTkuLvmlbDmja7og73lipsKCiAqIArmlbTnkIbkuLvmlbDmja7m +qKHlnZfmjqXlj6PvvIzkuLrlkI7nu63lvIDlj5Hmj5Dkvpvkvp3mja4K5a2Y5Zyo6Zeu6aKY77ya +IOaXoApCZXN0IHJlZ2FyZHMsCuadqOi9qQrlnLDlnYDvvJrkuK3lm73Ct+WNl+S6rOi9r+S7tuiw +t+i9r+S7tuWkp+mBkzEx5Y+36Iqx56We5aSn5Y6mM0YK5omL5py677yaMTg3MjYxMjg0ODkK6YKu +566x77yaeWFuZ3h1YW5Ad2l0c29mdC5jbgo= + +--=_mailmaster-6a18e4a4_0_3b25_= +Content-Type: text/html; charset="UTF-8" +Content-Transfer-Encoding: base64 + +PGRpdiBjbGFzcz0iX19hbGl5dW5fZW1haWxfYm9keV9ibG9jayI+PGh0bWwgPjxoZWFkID48L2hl +YWQ+PGJvZHkgPjxkaXYgIHN0eWxlPSJmb250LWZhbWlseTogVGFob21hLCBBcmlhbCwgU1RIZWl0 +aVNDLUxpZ2h0LCBTaW1TdW4iPjxkaXYgIHN0eWxlPSJjbGVhcjogYm90aDsiPjxwICBjbGFzcz0i +bWQtZW5kLWJsb2NrIG1kLXAiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhl +aWdodDogaW5oZXJpdDsgbWFyZ2luOiAxMnB4IDBweDsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyBw +b3NpdGlvbjogcmVsYXRpdmU7IGZvbnQtdmFyaWFudC1saWdhdHVyZXM6IG5vcm1hbDsgZm9udC12 +YXJpYW50LWNhcHM6IG5vcm1hbDsgbGV0dGVyLXNwYWNpbmc6IG5vcm1hbDsgdGV4dC1hbGlnbjog +c3RhcnQ7IHRleHQtaW5kZW50OiAwcHg7IHdvcmQtc3BhY2luZzogMHB4OyB0ZXh0LWRlY29yYXRp +b24tc3R5bGU6IGluaXRpYWw7IHRleHQtZGVjb3JhdGlvbi1jb2xvcjogaW5pdGlhbDsiPjxzcGFu +ICBzdHlsZT0iZm9udC1mYW1pbHk6ICdtaWNyb3NvZnQgeWFoZWknOyI+PHNwYW4gIGNsYXNzPSJt +ZC1wbGFpbiIgc3R5bGU9ImZvbnQtZmFtaWx5OiAnbWljcm9zb2Z0IHlhaGVpJzsgY29sb3I6IHJn +Yig1MSwgNTEsIDUxKTsgZm9udC1zaXplOiAxNnB4OyBmb250LXN0eWxlOiBub3JtYWw7IHRleHQt +dHJhbnNmb3JtOiBub25lOyBib3gtc2l6aW5nOiBib3JkZXItYm94OyBmb250LXdlaWdodDogNzAw +OyI+6aG555uu77yaPC9zcGFuPjxzcGFuICBjbGFzcz0ibWQtcGxhaW4iIHN0eWxlPSJmb250LWZh +bWlseTogJ21pY3Jvc29mdCB5YWhlaSc7IGNvbG9yOiByZ2IoNTEsIDUxLCA1MSk7IGZvbnQtc2l6 +ZTogMTZweDsgZm9udC1zdHlsZTogbm9ybWFsOyBmb250LXdlaWdodDogNDAwOyB0ZXh0LXRyYW5z +Zm9ybTogbm9uZTsgYm94LXNpemluZzogYm9yZGVyLWJveDsiPiDnu7TkupHmmbrpgKBHNe+8iOW6 +k+WtmOeuoeeQhu+8iTwvc3Bhbj48L3NwYW4+PC9wPjxkaXYgPjx0YWJsZSAgY2xhc3M9Im1kLXRh +YmxlIiBzdHlsZT0iZm9udC1mYW1pbHk6IFRhaG9tYSwgQXJpYWwsIFNUSGVpdGlTQy1MaWdodCwg +U2ltU3VuOyBib3gtc2l6aW5nOiBib3JkZXItYm94OyBib3JkZXItY29sbGFwc2U6IGNvbGxhcHNl +OyBib3JkZXItc3BhY2luZzogMHB4OyBvdmVyZmxvdzogYXV0bzsgYnJlYWstaW5zaWRlOiBhdXRv +OyB0ZXh0LWFsaWduOiBsZWZ0OyBtYXJnaW46IDBweDsgcGFkZGluZzogMHB4OyB3b3JkLWJyZWFr +OiBpbml0aWFsOyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHdpZHRoOiA3MzFweDsiPjx0aGVhZCAg +c3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGRpc3BsYXk6IHRhYmxlLWhlYWRlci1ncm91 +cDsgYmFja2dyb3VuZC1jb2xvcjogcmdiKDI0OCwgMjQ4LCAyNDgpOyI+PHRyICBjbGFzcz0ibWQt +ZW5kLWJsb2NrIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgYnJlYWstaW5zaWRlOiBh +dm9pZDsgYnJlYWstYWZ0ZXI6IGF1dG87IGJvcmRlci10b3A6IDFweCBzb2xpZCByZ2IoMjIzLCAy +MjYsIDIyOSk7IG1hcmdpbjogMHB4OyBwYWRkaW5nOiAwcHg7Ij48dGQgIHN0eWxlPSJib3gtc2l6 +aW5nOiBib3JkZXItYm94OyBwYWRkaW5nOiA2cHggMTNweDsgYm9yZGVyLXdpZHRoOiAxcHggMXB4 +IDBweDsgYm9yZGVyLXRvcC1zdHlsZTogc29saWQ7IGJvcmRlci1yaWdodC1zdHlsZTogc29saWQ7 +IGJvcmRlci1sZWZ0LXN0eWxlOiBzb2xpZDsgYm9yZGVyLXRvcC1jb2xvcjogcmdiKDIyMywgMjI2 +LCAyMjkpOyBib3JkZXItcmlnaHQtY29sb3I6IHJnYigyMjMsIDIyNiwgMjI5KTsgYm9yZGVyLWxl +ZnQtY29sb3I6IHJnYigyMjMsIDIyNiwgMjI5KTsgYm9yZGVyLWltYWdlOiBpbml0aWFsOyBib3Jk +ZXItYm90dG9tLXN0eWxlOiBpbml0aWFsOyBib3JkZXItYm90dG9tLWNvbG9yOiBpbml0aWFsOyBt +YXJnaW46IDBweDsiPjxkaXYgIHN0eWxlPSJ0ZXh0LWFsaWduOiBjZW50ZXI7Ij48c3BhbiAgc3R5 +bGU9ImZvbnQtd2VpZ2h0OiA3MDA7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7IGRpc3BsYXk6IGlu +bGluZS1ibG9jazsgbWluLXdpZHRoOiAxY2g7IHdpZHRoOiAzMThweDsgbWluLWhlaWdodDogMTBw +eDsgZm9udC1mYW1pbHk6ICdtaWNyb3NvZnQgeWFoZWknOyI+5pel5pyfPC9zcGFuPjwvZGl2Pjwv +dGQ+PHRkICB3aWR0aD0iMzU3IiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgcGFkZGlu +ZzogNnB4IDEzcHg7IGJvcmRlci13aWR0aDogMXB4IDFweCAwcHg7IGJvcmRlci10b3Atc3R5bGU6 +IHNvbGlkOyBib3JkZXItcmlnaHQtc3R5bGU6IHNvbGlkOyBib3JkZXItbGVmdC1zdHlsZTogc29s +aWQ7IGJvcmRlci10b3AtY29sb3I6IHJnYigyMjMsIDIyNiwgMjI5KTsgYm9yZGVyLXJpZ2h0LWNv +bG9yOiByZ2IoMjIzLCAyMjYsIDIyOSk7IGJvcmRlci1sZWZ0LWNvbG9yOiByZ2IoMjIzLCAyMjYs +IDIyOSk7IGJvcmRlci1pbWFnZTogaW5pdGlhbDsgYm9yZGVyLWJvdHRvbS1zdHlsZTogaW5pdGlh +bDsgYm9yZGVyLWJvdHRvbS1jb2xvcjogaW5pdGlhbDsgbWFyZ2luOiAwcHg7Ij48ZGl2ICBzdHls +ZT0idGV4dC1hbGlnbjogY2VudGVyOyI+PHNwYW4gIHN0eWxlPSJmb250LXdlaWdodDogNzAwOyBi +b3gtc2l6aW5nOiBib3JkZXItYm94OyBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IG1pbi13aWR0aDog +MWNoOyB3aWR0aDogNTkycHg7IG1pbi1oZWlnaHQ6IDEwcHg7IGZvbnQtZmFtaWx5OiAnbWljcm9z +b2Z0IHlhaGVpJzsiPuS4u+imgeW3peS9nDwvc3Bhbj48L2Rpdj48L3RkPjwvdHI+PC90aGVhZD48 +dGJvZHkgIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+PHRyICBjbGFzcz0ibWQtZW5k +LWJsb2NrIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgYnJlYWstaW5zaWRlOiBhdm9p +ZDsgYnJlYWstYWZ0ZXI6IGF1dG87IGJvcmRlci10b3A6IDFweCBzb2xpZCByZ2IoMjIzLCAyMjYs +IDIyOSk7IG1hcmdpbjogMHB4OyBwYWRkaW5nOiAwcHg7Ij48dGQgIGNsYXNzPSIiIHN0eWxlPSJi +b3gtc2l6aW5nOiBib3JkZXItYm94OyBwYWRkaW5nOiA2cHggMTNweDsgYm9yZGVyOiAxcHggc29s +aWQgcmdiKDIyMywgMjI2LCAyMjkpOyBtYXJnaW46IDBweDsiPjxzcGFuICBzdHlsZT0iYm94LXNp +emluZzogYm9yZGVyLWJveDsgZGlzcGxheTogaW5saW5lLWJsb2NrOyBtaW4td2lkdGg6IDFjaDsg +d2lkdGg6IDMxOHB4OyBtaW4taGVpZ2h0OiAxMHB4OyBmb250LWZhbWlseTogJ21pY3Jvc29mdCB5 +YWhlaSc7Ij7lkajkuIDvvIgwNC4yN++8iTwvc3Bhbj48L3RkPjx0ZCAgY2xhc3M9IiIgd2lkdGg9 +IjM1NyIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IHBhZGRpbmc6IDZweCAxM3B4OyBi +b3JkZXI6IDFweCBzb2xpZCByZ2IoMjIzLCAyMjYsIDIyOSk7IG1hcmdpbjogMHB4OyI+PGRpdiAg +Y2xhc3M9IiI+PHNwYW4gIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBkaXNwbGF5OiBp +bmxpbmUtYmxvY2s7IG1pbi13aWR0aDogMWNoOyB3aWR0aDogMzE4cHg7IG1pbi1oZWlnaHQ6IDEw +cHg7IGZvbnQtZmFtaWx5OiAnbWljcm9zb2Z0IHlhaGVpJzsiPjEuJm5ic3A754mI5pys57y66Zm3 +5L+u5aSNPGJyICBzdHlsZT0iY29sb3I6IHJnYigwLCAwLCAwKTsgZm9udC1zaXplOiAxMnB4OyBm +b250LXN0eWxlOiBub3JtYWw7IGZvbnQtdmFyaWFudC1saWdhdHVyZXM6IG5vcm1hbDsgZm9udC12 +YXJpYW50LWNhcHM6IG5vcm1hbDsgZm9udC13ZWlnaHQ6IDQwMDsgbGV0dGVyLXNwYWNpbmc6IG5v +cm1hbDsgb3JwaGFuczogMjsgdGV4dC1hbGlnbjogbGVmdDsgdGV4dC1pbmRlbnQ6IDBweDsgdGV4 +dC10cmFuc2Zvcm06IG5vbmU7IHdpZG93czogMjsgd29yZC1zcGFjaW5nOiAwcHg7IC13ZWJraXQt +dGV4dC1zdHJva2Utd2lkdGg6IDBweDsgd2hpdGUtc3BhY2U6IG5vcm1hbDsgYmFja2dyb3VuZC1j +b2xvcjogcmdiKDI0NSwgMjQ1LCAyNDUpOyB0ZXh0LWRlY29yYXRpb24tdGhpY2tuZXNzOiBpbml0 +aWFsOyB0ZXh0LWRlY29yYXRpb24tc3R5bGU6IGluaXRpYWw7IHRleHQtZGVjb3JhdGlvbi1jb2xv +cjogaW5pdGlhbDsiPjIuJm5ic3A7QUnmlbTnkIblhaXlupPmtYHnqIs8YnIgIHN0eWxlPSJjb2xv +cjogcmdiKDAsIDAsIDApOyBmb250LXNpemU6IDEycHg7IGZvbnQtc3R5bGU6IG5vcm1hbDsgZm9u +dC12YXJpYW50LWxpZ2F0dXJlczogbm9ybWFsOyBmb250LXZhcmlhbnQtY2Fwczogbm9ybWFsOyBm +b250LXdlaWdodDogNDAwOyBsZXR0ZXItc3BhY2luZzogbm9ybWFsOyBvcnBoYW5zOiAyOyB0ZXh0 +LWFsaWduOiBsZWZ0OyB0ZXh0LWluZGVudDogMHB4OyB0ZXh0LXRyYW5zZm9ybTogbm9uZTsgd2lk +b3dzOiAyOyB3b3JkLXNwYWNpbmc6IDBweDsgLXdlYmtpdC10ZXh0LXN0cm9rZS13aWR0aDogMHB4 +OyB3aGl0ZS1zcGFjZTogbm9ybWFsOyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjQ1LCAyNDUsIDI0 +NSk7IHRleHQtZGVjb3JhdGlvbi10aGlja25lc3M6IGluaXRpYWw7IHRleHQtZGVjb3JhdGlvbi1z +dHlsZTogaW5pdGlhbDsgdGV4dC1kZWNvcmF0aW9uLWNvbG9yOiBpbml0aWFsOyI+My4mbmJzcDvl +joblj7Lpl67popjlpITnkIY8L3NwYW4+PC9kaXY+PC90ZD48L3RyPjx0ciAgY2xhc3M9Im1kLWVu +ZC1ibG9jayIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGJyZWFrLWluc2lkZTogYXZv +aWQ7IGJyZWFrLWFmdGVyOiBhdXRvOyBib3JkZXItdG9wOiAxcHggc29saWQgcmdiKDIyMywgMjI2 +LCAyMjkpOyBtYXJnaW46IDBweDsgcGFkZGluZzogMHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2Io +MjQ4LCAyNDgsIDI0OCk7Ij48dGQgIGNsYXNzPSIiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXIt +Ym94OyBwYWRkaW5nOiA2cHggMTNweDsgYm9yZGVyOiAxcHggc29saWQgcmdiKDIyMywgMjI2LCAy +MjkpOyBtYXJnaW46IDBweDsiPjxzcGFuICBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsg +ZGlzcGxheTogaW5saW5lLWJsb2NrOyBtaW4td2lkdGg6IDFjaDsgd2lkdGg6IDMxOHB4OyBtaW4t +aGVpZ2h0OiAxMHB4OyBmb250LWZhbWlseTogJ21pY3Jvc29mdCB5YWhlaSc7Ij7lkajkuozvvIgw +NC4yOO+8iTwvc3Bhbj48L3RkPjx0ZCAgY2xhc3M9IiIgd2lkdGg9IjM1NyIgc3R5bGU9ImJveC1z +aXppbmc6IGJvcmRlci1ib3g7IHBhZGRpbmc6IDZweCAxM3B4OyBib3JkZXI6IDFweCBzb2xpZCBy +Z2IoMjIzLCAyMjYsIDIyOSk7IG1hcmdpbjogMHB4OyI+PGRpdiAgY2xhc3M9IiI+PHNwYW4gIHN0 +eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IG1pbi13 +aWR0aDogMWNoOyB3aWR0aDogMzE4cHg7IG1pbi1oZWlnaHQ6IDEwcHg7IGZvbnQtZmFtaWx5OiAn +bWljcm9zb2Z0IHlhaGVpJzsiPjEuJm5ic3A75rWL6K+V6Zeu6aKY5L+u5aSNPGJyICBzdHlsZT0i +Y29sb3I6IHJnYigwLCAwLCAwKTsgZm9udC1zaXplOiAxMnB4OyBmb250LXN0eWxlOiBub3JtYWw7 +IGZvbnQtdmFyaWFudC1saWdhdHVyZXM6IG5vcm1hbDsgZm9udC12YXJpYW50LWNhcHM6IG5vcm1h +bDsgZm9udC13ZWlnaHQ6IDQwMDsgbGV0dGVyLXNwYWNpbmc6IG5vcm1hbDsgb3JwaGFuczogMjsg +dGV4dC1hbGlnbjogbGVmdDsgdGV4dC1pbmRlbnQ6IDBweDsgdGV4dC10cmFuc2Zvcm06IG5vbmU7 +IHdpZG93czogMjsgd29yZC1zcGFjaW5nOiAwcHg7IC13ZWJraXQtdGV4dC1zdHJva2Utd2lkdGg6 +IDBweDsgd2hpdGUtc3BhY2U6IG5vcm1hbDsgYmFja2dyb3VuZC1jb2xvcjogcmdiKDI0NSwgMjQ1 +LCAyNDUpOyB0ZXh0LWRlY29yYXRpb24tdGhpY2tuZXNzOiBpbml0aWFsOyB0ZXh0LWRlY29yYXRp +b24tc3R5bGU6IGluaXRpYWw7IHRleHQtZGVjb3JhdGlvbi1jb2xvcjogaW5pdGlhbDsiPjIuJm5i +c3A75Li75pWw5o2u5qih5Z2X5o6l5Y+j5pW055CGPC9zcGFuPjwvZGl2PjwvdGQ+PC90cj48dHIg +IGNsYXNzPSJtZC1lbmQtYmxvY2siIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBicmVh +ay1pbnNpZGU6IGF2b2lkOyBicmVhay1hZnRlcjogYXV0bzsgYm9yZGVyLXRvcDogMXB4IHNvbGlk +IHJnYigyMjMsIDIyNiwgMjI5KTsgbWFyZ2luOiAwcHg7IHBhZGRpbmc6IDBweDsiPjx0ZCAgY2xh +c3M9IiIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IHBhZGRpbmc6IDZweCAxM3B4OyBi +b3JkZXI6IDFweCBzb2xpZCByZ2IoMjIzLCAyMjYsIDIyOSk7IG1hcmdpbjogMHB4OyI+PHNwYW4g +IHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IG1p +bi13aWR0aDogMWNoOyB3aWR0aDogMzE4cHg7IG1pbi1oZWlnaHQ6IDEwcHg7IGZvbnQtZmFtaWx5 +OiAnbWljcm9zb2Z0IHlhaGVpJzsiPuWRqOS4ie+8iDA0LjI577yJPC9zcGFuPjwvdGQ+PHRkICBj +bGFzcz0iIiB3aWR0aD0iMzU3IiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgcGFkZGlu +ZzogNnB4IDEzcHg7IGJvcmRlcjogMXB4IHNvbGlkIHJnYigyMjMsIDIyNiwgMjI5KTsgbWFyZ2lu +OiAwcHg7Ij48ZGl2ICBjbGFzcz0iIj48c3BhbiAgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1i +b3g7IGRpc3BsYXk6IGlubGluZS1ibG9jazsgbWluLXdpZHRoOiAxY2g7IHdpZHRoOiAzMThweDsg +bWluLWhlaWdodDogMTBweDsgZm9udC1mYW1pbHk6ICdtaWNyb3NvZnQgeWFoZWknOyI+MS4mbmJz +cDvlupPlrZjnvLrpmbfkv67lpI08L3NwYW4+PC9kaXY+PC90ZD48L3RyPjx0ciAgY2xhc3M9Im1k +LWVuZC1ibG9jayIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGJyZWFrLWluc2lkZTog +YXZvaWQ7IGJyZWFrLWFmdGVyOiBhdXRvOyBib3JkZXItdG9wOiAxcHggc29saWQgcmdiKDIyMywg +MjI2LCAyMjkpOyBtYXJnaW46IDBweDsgcGFkZGluZzogMHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiBy +Z2IoMjQ4LCAyNDgsIDI0OCk7Ij48dGQgIGNsYXNzPSIiIHN0eWxlPSJib3gtc2l6aW5nOiBib3Jk +ZXItYm94OyBwYWRkaW5nOiA2cHggMTNweDsgYm9yZGVyOiAxcHggc29saWQgcmdiKDIyMywgMjI2 +LCAyMjkpOyBtYXJnaW46IDBweDsiPjxzcGFuICBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJv +eDsgZGlzcGxheTogaW5saW5lLWJsb2NrOyBtaW4td2lkdGg6IDFjaDsgd2lkdGg6IDMxOHB4OyBt +aW4taGVpZ2h0OiAxMHB4OyBmb250LWZhbWlseTogJ21pY3Jvc29mdCB5YWhlaSc7Ij7lkajlm5vv +vIgwNC4zMO+8iTwvc3Bhbj48L3RkPjx0ZCAgY2xhc3M9IiIgd2lkdGg9IjM1NyIgc3R5bGU9ImJv +eC1zaXppbmc6IGJvcmRlci1ib3g7IHBhZGRpbmc6IDZweCAxM3B4OyBib3JkZXI6IDFweCBzb2xp +ZCByZ2IoMjIzLCAyMjYsIDIyOSk7IG1hcmdpbjogMHB4OyI+PGRpdiAgY2xhc3M9IiI+PHNwYW4g +IHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IG1p +bi13aWR0aDogMWNoOyB3aWR0aDogMzE4cHg7IG1pbi1oZWlnaHQ6IDEwcHg7IGZvbnQtZmFtaWx5 +OiAnbWljcm9zb2Z0IHlhaGVpJzsiPjEuJm5ic3A75bqT5a2Y6ZyA5rGC6K+E5a6h5ZKM5bel5L2c +6YeP6K+E5LywPC9zcGFuPjwvZGl2PjwvdGQ+PC90cj48L3Rib2R5PjwvdGFibGU+PC9kaXY+PGRp +diAgY2xhc3M9Im1kLWhyIG1kLWVuZC1ibG9jayIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1i +b3g7IGZvbnQtdmFyaWFudC1saWdhdHVyZXM6IG5vcm1hbDsgZm9udC12YXJpYW50LWNhcHM6IG5v +cm1hbDsgbGV0dGVyLXNwYWNpbmc6IG5vcm1hbDsgdGV4dC1hbGlnbjogc3RhcnQ7IHRleHQtaW5k +ZW50OiAwcHg7IHdoaXRlLXNwYWNlOiBub3JtYWw7IHdvcmQtc3BhY2luZzogMHB4OyB0ZXh0LWRl +Y29yYXRpb24tc3R5bGU6IGluaXRpYWw7IHRleHQtZGVjb3JhdGlvbi1jb2xvcjogaW5pdGlhbDsi +PjxociAgc3R5bGU9ImNvbG9yOiByZ2IoNTEsIDUxLCA1MSk7IGZvbnQtZmFtaWx5OiAnT3BlbiBT +YW5zJywgJ0NsZWFyIFNhbnMnLCAnSGVsdmV0aWNhIE5ldWUnLCBIZWx2ZXRpY2EsIEFyaWFsLCBz +YW5zLXNlcmlmOyBmb250LXNpemU6IDE2cHg7IGZvbnQtc3R5bGU6IG5vcm1hbDsgZm9udC13ZWln +aHQ6IDQwMDsgdGV4dC10cmFuc2Zvcm06IG5vbmU7IGJveC1zaXppbmc6IGNvbnRlbnQtYm94OyBo +ZWlnaHQ6IDJweDsgbWFyZ2luOiAxNnB4IDBweDsgYm9yZGVyOiAwcHggbm9uZTsgcGFkZGluZzog +MHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjMxLCAyMzEsIDIzMSk7IG92ZXJmbG93OiBoaWRk +ZW47Ij48L2Rpdj48cCAgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1wIiBzdHlsZT0iYm94LXNpemlu +ZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IG1hcmdpbjogMTJweCAwcHg7IHdo +aXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJlbGF0aXZlOyBmb250LXZhcmlhbnQtbGln +YXR1cmVzOiBub3JtYWw7IGZvbnQtdmFyaWFudC1jYXBzOiBub3JtYWw7IGxldHRlci1zcGFjaW5n +OiBub3JtYWw7IHRleHQtYWxpZ246IHN0YXJ0OyB0ZXh0LWluZGVudDogMHB4OyB3b3JkLXNwYWNp +bmc6IDBweDsgdGV4dC1kZWNvcmF0aW9uLXN0eWxlOiBpbml0aWFsOyB0ZXh0LWRlY29yYXRpb24t +Y29sb3I6IGluaXRpYWw7Ij48c3BhbiAgc3R5bGU9ImNvbG9yOiByZ2IoNTEsIDUxLCA1MSk7IGZv +bnQtc2l6ZTogMTZweDsgZm9udC1zdHlsZTogbm9ybWFsOyB0ZXh0LXRyYW5zZm9ybTogbm9uZTsg +Ym94LXNpemluZzogYm9yZGVyLWJveDsgZm9udC13ZWlnaHQ6IDcwMDsgZm9udC1mYW1pbHk6ICdt +aWNyb3NvZnQgeWFoZWknOyI+5pys5ZGo6YeN54K55oiQ5p6c77yaPC9zcGFuPjwvcD48cCAgY2xh +c3M9Im1kLWVuZC1ibG9jayBtZC1wIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbGlu +ZS1oZWlnaHQ6IGluaGVyaXQ7IG1hcmdpbjogMHB4IDBweCA4cHg7IHdoaXRlLXNwYWNlOiBwcmUt +d3JhcDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHNwYW4gIHN0eWxlPSJmb250LWZhbWlseTogJ21p +Y3Jvc29mdCB5YWhlaSc7Ij48c3BhbiAgY2xhc3M9ImF5bV9ib29rbWFyayIgaWQ9Il9heW1fYm9v +a21hcmtfc3FtXzEyOCIgc3R5bGU9ImRpc3BsYXk6bm9uZSI+PC9zcGFuPjwvc3Bhbj48L3A+PHAg +IGNsYXNzPSJkcy1tYXJrZG93bi1wYXJhZ3JhcGgiIHN0eWxlPSJtYXJnaW4tcmlnaHQ6IDBweDsg +bWFyZ2luLWJvdHRvbTogOHB4OyBtYXJnaW4tbGVmdDogMHB4OyBtYXJnaW4tdG9wOiAwcHggIWlt +cG9ydGFudDsiPjwvcD48b2wgIHN0YXJ0PSIxIiBzdHlsZT0ibWFyZ2luOiAxNnB4IDBweDsgcGFk +ZGluZy1sZWZ0OiAxOHB4OyBjb2xvcjogcmdiKDE1LCAxNywgMjEpOyBmb250LWZhbWlseTogcXVv +dGUtY2prLXBhdGNoLCBJbnRlciwgc3lzdGVtLXVpLCAtYXBwbGUtc3lzdGVtLCBCbGlua01hY1N5 +c3RlbUZvbnQsICdTZWdvZSBVSScsIFJvYm90bywgT3h5Z2VuLCBVYnVudHUsIENhbnRhcmVsbCwg +J09wZW4gU2FucycsICdIZWx2ZXRpY2EgTmV1ZScsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTZw +eDsgZm9udC1zdHlsZTogbm9ybWFsOyBmb250LXZhcmlhbnQtbGlnYXR1cmVzOiBub3JtYWw7IGZv +bnQtdmFyaWFudC1jYXBzOiBub3JtYWw7IGZvbnQtd2VpZ2h0OiA0MDA7IGxldHRlci1zcGFjaW5n +OiBub3JtYWw7IHRleHQtYWxpZ246IHN0YXJ0OyB0ZXh0LWluZGVudDogMHB4OyB0ZXh0LXRyYW5z +Zm9ybTogbm9uZTsgd29yZC1zcGFjaW5nOiAwcHg7IHdoaXRlLXNwYWNlOiBub3JtYWw7IGJhY2tn +cm91bmQtY29sb3I6IHJnYigyNTUsIDI1NSwgMjU1KTsgdGV4dC1kZWNvcmF0aW9uLXRoaWNrbmVz +czogaW5pdGlhbDsgdGV4dC1kZWNvcmF0aW9uLXN0eWxlOiBpbml0aWFsOyB0ZXh0LWRlY29yYXRp +b24tY29sb3I6IGluaXRpYWw7Ij48bGkgPjxwICBjbGFzcz0iZHMtbWFya2Rvd24tcGFyYWdyYXBo +IiBzdHlsZT0ibWFyZ2luLXJpZ2h0OiAwcHg7IG1hcmdpbi1ib3R0b206IDhweDsgbWFyZ2luLWxl +ZnQ6IDBweDsgbWFyZ2luLXRvcDogMHB4ICFpbXBvcnRhbnQ7Ij48c3BhbiAgc3R5bGU9ImZvbnQt +d2VpZ2h0OiA0MDA7IGZvbnQtZmFtaWx5OiAnbWljcm9zb2Z0IHlhaGVpJzsiPuaOqOi/m+W6k+Wt +mOaooeWdl+W3peS9nDwvc3Bhbj48L3A+PHVsICBzdHlsZT0ibWFyZ2luOiA0cHggMHB4IDBweDsg +cGFkZGluZy1sZWZ0OiAxOHB4OyI+PGxpID48cCAgY2xhc3M9ImRzLW1hcmtkb3duLXBhcmFncmFw +aCIgc3R5bGU9Im1hcmdpbi1yaWdodDogMHB4OyBtYXJnaW4tYm90dG9tOiAwcHg7IG1hcmdpbi1s +ZWZ0OiAwcHg7IG1hcmdpbi10b3A6IDBweCAhaW1wb3J0YW50OyI+PHNwYW4gIHN0eWxlPSJmb250 +LWZhbWlseTogJ21pY3Jvc29mdCB5YWhlaSc7Ij7lrozmiJDlupPlrZjpnIDmsYLor4TlrqHkuI7l +t6XkvZzph4/or4TkvLDvvIgwNC4yM++8iTwvc3Bhbj48L3A+PC9saT48bGkgIHN0eWxlPSJtYXJn +aW4tdG9wOiA2cHg7Ij48cCAgY2xhc3M9ImRzLW1hcmtkb3duLXBhcmFncmFwaCIgc3R5bGU9Im1h +cmdpbi1yaWdodDogMHB4OyBtYXJnaW4tYm90dG9tOiAwcHg7IG1hcmdpbi1sZWZ0OiAwcHg7IG1h +cmdpbi10b3A6IDBweCAhaW1wb3J0YW50OyI+PHNwYW4gIHN0eWxlPSJmb250LWZhbWlseTogJ21p +Y3Jvc29mdCB5YWhlaSc7Ij7kv67lpI3lupPlrZjnm7jlhbPnvLrpmbfvvIgwNC4yOe+8iTwvc3Bh +bj48L3A+PC9saT48L3VsPjwvbGk+PGxpICBzdHlsZT0ibWFyZ2luLXRvcDogNnB4OyI+PHAgIGNs +YXNzPSJkcy1tYXJrZG93bi1wYXJhZ3JhcGgiIHN0eWxlPSJtYXJnaW4tcmlnaHQ6IDBweDsgbWFy +Z2luLWJvdHRvbTogOHB4OyBtYXJnaW4tbGVmdDogMHB4OyBtYXJnaW4tdG9wOiAwcHggIWltcG9y +dGFudDsiPjxzcGFuICBzdHlsZT0iZm9udC13ZWlnaHQ6IDQwMDsgZm9udC1mYW1pbHk6ICdtaWNy +b3NvZnQgeWFoZWknOyI+5o+Q5Y2H54mI5pys6LSo6YePPC9zcGFuPjwvcD48dWwgIHN0eWxlPSJt +YXJnaW46IDRweCAwcHggMHB4OyBwYWRkaW5nLWxlZnQ6IDE4cHg7Ij48bGkgPjxwICBjbGFzcz0i +ZHMtbWFya2Rvd24tcGFyYWdyYXBoIiBzdHlsZT0ibWFyZ2luLXJpZ2h0OiAwcHg7IG1hcmdpbi1i +b3R0b206IDBweDsgbWFyZ2luLWxlZnQ6IDBweDsgbWFyZ2luLXRvcDogMHB4ICFpbXBvcnRhbnQ7 +Ij48c3BhbiAgc3R5bGU9ImZvbnQtZmFtaWx5OiAnbWljcm9zb2Z0IHlhaGVpJzsiPuS/ruWkjeeJ +iOacrOe8uumZt+S4jua1i+ivlemXrumimDwvc3Bhbj48L3A+PC9saT48bGkgIHN0eWxlPSJtYXJn +aW4tdG9wOiA2cHg7Ij48cCAgY2xhc3M9ImRzLW1hcmtkb3duLXBhcmFncmFwaCIgc3R5bGU9Im1h +cmdpbi1yaWdodDogMHB4OyBtYXJnaW4tYm90dG9tOiAwcHg7IG1hcmdpbi1sZWZ0OiAwcHg7IG1h +cmdpbi10b3A6IDBweCAhaW1wb3J0YW50OyI+PHNwYW4gIHN0eWxlPSJmb250LWZhbWlseTogJ21p +Y3Jvc29mdCB5YWhlaSc7Ij7lpITnkIbljoblj7LpgZfnlZnpl67popg8L3NwYW4+PC9wPjwvbGk+ +PC91bD48L2xpPjxsaSAgc3R5bGU9Im1hcmdpbi10b3A6IDZweDsiPjxwICBjbGFzcz0iZHMtbWFy +a2Rvd24tcGFyYWdyYXBoIiBzdHlsZT0ibWFyZ2luLXJpZ2h0OiAwcHg7IG1hcmdpbi1ib3R0b206 +IDhweDsgbWFyZ2luLWxlZnQ6IDBweDsgbWFyZ2luLXRvcDogMHB4ICFpbXBvcnRhbnQ7Ij48c3Bh +biAgc3R5bGU9ImZvbnQtd2VpZ2h0OiA0MDA7IGZvbnQtZmFtaWx5OiAnbWljcm9zb2Z0IHlhaGVp +JzsiPuaUr+aSkUFJ5LiO5pWw5o2u6IO95YqbPC9zcGFuPjwvcD48dWwgIHN0eWxlPSJtYXJnaW46 +IDRweCAwcHggMHB4OyBwYWRkaW5nLWxlZnQ6IDE4cHg7Ij48bGkgPjxwICBjbGFzcz0iZHMtbWFy +a2Rvd24tcGFyYWdyYXBoIiBzdHlsZT0ibWFyZ2luLXJpZ2h0OiAwcHg7IG1hcmdpbi1ib3R0b206 +IDBweDsgbWFyZ2luLWxlZnQ6IDBweDsgbWFyZ2luLXRvcDogMHB4ICFpbXBvcnRhbnQ7Ij48c3Bh +biAgc3R5bGU9ImZvbnQtZmFtaWx5OiAnbWljcm9zb2Z0IHlhaGVpJzsiPuWujOaIkEFJ5pW055CG +5YWl5bqT5rWB56iL55u45YWz5bel5L2cPC9zcGFuPjwvcD48L2xpPjwvdWw+PC9saT48bGkgIHN0 +eWxlPSJtYXJnaW4tdG9wOiA2cHg7Ij48cCAgY2xhc3M9ImRzLW1hcmtkb3duLXBhcmFncmFwaCIg +c3R5bGU9Im1hcmdpbi1yaWdodDogMHB4OyBtYXJnaW4tYm90dG9tOiA4cHg7IG1hcmdpbi1sZWZ0 +OiAwcHg7IG1hcmdpbi10b3A6IDBweCAhaW1wb3J0YW50OyI+PHNwYW4gIHN0eWxlPSJmb250LXdl +aWdodDogNDAwOyBmb250LWZhbWlseTogJ21pY3Jvc29mdCB5YWhlaSc7Ij7lrozlloTkuLvmlbDm +ja7og73lips8L3NwYW4+PC9wPjx1bCAgc3R5bGU9Im1hcmdpbjogNHB4IDBweCAwcHg7IHBhZGRp +bmctbGVmdDogMThweDsiPjxsaSA+PHAgIGNsYXNzPSJkcy1tYXJrZG93bi1wYXJhZ3JhcGgiIHN0 +eWxlPSJtYXJnaW4tcmlnaHQ6IDBweDsgbWFyZ2luLWJvdHRvbTogMHB4OyBtYXJnaW4tbGVmdDog +MHB4OyBtYXJnaW4tdG9wOiAwcHggIWltcG9ydGFudDsiPjxzcGFuICBzdHlsZT0iZm9udC1mYW1p +bHk6ICdtaWNyb3NvZnQgeWFoZWknOyI+5pW055CG5Li75pWw5o2u5qih5Z2X5o6l5Y+j77yM5Li6 +5ZCO57ut5byA5Y+R5o+Q5L6b5L6d5o2uPC9zcGFuPjwvcD48L2xpPjwvdWw+PC9saT48L29sPjxk +aXYgPjxzcGFuICBzdHlsZT0iZm9udC1mYW1pbHk6ICdtaWNyb3NvZnQgeWFoZWknOyI+PHNwYW4g +IGNsYXNzPSJheW1fYm9va21hcmsiIGlkPSJfYXltX2Jvb2ttYXJrX3NxbV8xMjkiIHN0eWxlPSJk +aXNwbGF5Om5vbmUiPjwvc3Bhbj48L3NwYW4+PC9kaXY+PHAgIGNsYXNzPSJtZC1lbmQtYmxvY2sg +bWQtcCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhlcml0 +OyBtYXJnaW46IDBweCAwcHggOHB4OyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0aW9uOiBy +ZWxhdGl2ZTsiPjxzcGFuICBzdHlsZT0iZm9udC1mYW1pbHk6ICdtaWNyb3NvZnQgeWFoZWknOyI+ +PGJyID48L3NwYW4+PC9wPjxwICBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLXAiIHN0eWxlPSJib3gt +c2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5oZXJpdDsgbWFyZ2luOiAxMnB4IDBw +eDsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyBwb3NpdGlvbjogcmVsYXRpdmU7IGZvbnQtdmFyaWFu +dC1saWdhdHVyZXM6IG5vcm1hbDsgZm9udC12YXJpYW50LWNhcHM6IG5vcm1hbDsgbGV0dGVyLXNw +YWNpbmc6IG5vcm1hbDsgdGV4dC1hbGlnbjogc3RhcnQ7IHRleHQtaW5kZW50OiAwcHg7IHdvcmQt +c3BhY2luZzogMHB4OyB0ZXh0LWRlY29yYXRpb24tc3R5bGU6IGluaXRpYWw7IHRleHQtZGVjb3Jh +dGlvbi1jb2xvcjogaW5pdGlhbDsiPjxzcGFuICBzdHlsZT0iZm9udC1mYW1pbHk6ICdtaWNyb3Nv +ZnQgeWFoZWknOyI+PHNwYW4gIGNsYXNzPSJtZC1wbGFpbiIgc3R5bGU9ImZvbnQtZmFtaWx5OiAn +bWljcm9zb2Z0IHlhaGVpJzsgY29sb3I6IHJnYig1MSwgNTEsIDUxKTsgZm9udC1zaXplOiAxNnB4 +OyBmb250LXN0eWxlOiBub3JtYWw7IHRleHQtdHJhbnNmb3JtOiBub25lOyBib3gtc2l6aW5nOiBi +b3JkZXItYm94OyBmb250LXdlaWdodDogNzAwOyI+5a2Y5Zyo6Zeu6aKY77yaPC9zcGFuPjxzcGFu +ICBjbGFzcz0ibWQtcGxhaW4gbWQtZXhwYW5kIiBzdHlsZT0iZm9udC1mYW1pbHk6ICdtaWNyb3Nv +ZnQgeWFoZWknOyBjb2xvcjogcmdiKDUxLCA1MSwgNTEpOyBmb250LXNpemU6IDE2cHg7IGZvbnQt +c3R5bGU6IG5vcm1hbDsgZm9udC13ZWlnaHQ6IDQwMDsgdGV4dC10cmFuc2Zvcm06IG5vbmU7IGJv +eC1zaXppbmc6IGJvcmRlci1ib3g7Ij4g5pegPC9zcGFuPjwvc3Bhbj48L3A+PHAgIGNsYXNzPSJt +ZC1lbmQtYmxvY2sgbWQtcCBtZC1mb2N1cyIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7 +IGxpbmUtaGVpZ2h0OiBpbmhlcml0OyBtYXJnaW46IDEycHggMHB4OyB3aGl0ZS1zcGFjZTogcHJl +LXdyYXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsgZm9udC12YXJpYW50LWxpZ2F0dXJlczogbm9ybWFs +OyBmb250LXZhcmlhbnQtY2Fwczogbm9ybWFsOyBsZXR0ZXItc3BhY2luZzogbm9ybWFsOyB0ZXh0 +LWFsaWduOiBzdGFydDsgdGV4dC1pbmRlbnQ6IDBweDsgd29yZC1zcGFjaW5nOiAwcHg7IHRleHQt +ZGVjb3JhdGlvbi10aGlja25lc3M6IGluaXRpYWw7IHRleHQtZGVjb3JhdGlvbi1zdHlsZTogaW5p +dGlhbDsgdGV4dC1kZWNvcmF0aW9uLWNvbG9yOiBpbml0aWFsOyI+PHNwYW4gIHN0eWxlPSJjb2xv +cjogcmdiKDUxLCA1MSwgNTEpOyBmb250LWZhbWlseTogJ09wZW4gU2FucycsICdDbGVhciBTYW5z +JywgJ0hlbHZldGljYSBOZXVlJywgSGVsdmV0aWNhLCBBcmlhbCwgJ1NlZ29lIFVJIEVtb2ppJywg +c2Fucy1zZXJpZjsgZm9udC1zaXplOiAxNnB4OyBmb250LXN0eWxlOiBub3JtYWw7IGZvbnQtd2Vp +Z2h0OiA0MDA7IHRleHQtdHJhbnNmb3JtOiBub25lOyI+PGJyID48L3NwYW4+PC9wPjxkaXYgIHN0 +eWxlPSJjbGVhcjogYm90aDsiPjxzcGFuICBzdHlsZT0iZm9udC1mYW1pbHk6IFRhaG9tYSwgQXJp +YWwsIFNUSGVpdGlTQy1MaWdodCwgU2ltU3VuOyI+PGJyID48L3NwYW4+PC9kaXY+PGRpdiAgc3R5 +bGU9ImNsZWFyOiBib3RoOyI+PGRpdiAgY2xhc3M9IiBfX2FsaXl1bl9ub2RlX2hhc19jb2xvciIg +c3R5bGU9Im1hcmdpbjogMHB4OyBwYWRkaW5nOiAwcHg7IGJvcmRlcjogMHB4OyBvdXRsaW5lOiAw +cHg7IGZvbnQtdmFyaWFudC1saWdhdHVyZXM6IG5vcm1hbDsgZm9udC12YXJpYW50LWNhcHM6IG5v +cm1hbDsgdGV4dC1hbGlnbjogc3RhcnQ7IHRleHQtaW5kZW50OiAwcHg7IHRleHQtZGVjb3JhdGlv +bi10aGlja25lc3M6IGluaXRpYWw7IHRleHQtZGVjb3JhdGlvbi1zdHlsZTogaW5pdGlhbDsgdGV4 +dC1kZWNvcmF0aW9uLWNvbG9yOiBpbml0aWFsOyBjbGVhcjogYm90aDsiPjxzcGFuICBjbGFzcz0i +IF9fYWxpeXVuX25vZGVfaGFzX2NvbG9yIiBzdHlsZT0iZm9udC1zdHlsZTogbm9ybWFsOyBmb250 +LXdlaWdodDogNDAwOyB0ZXh0LXRyYW5zZm9ybTogbm9uZTsgbWFyZ2luOiAwcHg7IHBhZGRpbmc6 +IDBweDsgYm9yZGVyOiAwcHg7IG91dGxpbmU6IDBweDsgZm9udC1mYW1pbHk6ICdNaWNyb3NvZnQg +WWFoZWknOyBmb250LXNpemU6IDEzcHg7IGNvbG9yOiByZ2IoMTkxLCAxOTEsIDE5MSk7Ij5CZXN0 +IHJlZ2FyZHMsPC9zcGFuPjwvZGl2PjxkaXYgIGNsYXNzPSIgX19hbGl5dW5fbm9kZV9oYXNfY29s +b3IiIHN0eWxlPSJtYXJnaW46IDBweDsgcGFkZGluZzogMHB4OyBib3JkZXI6IDBweDsgb3V0bGlu +ZTogMHB4OyBmb250LXZhcmlhbnQtbGlnYXR1cmVzOiBub3JtYWw7IGZvbnQtdmFyaWFudC1jYXBz +OiBub3JtYWw7IHRleHQtYWxpZ246IHN0YXJ0OyB0ZXh0LWluZGVudDogMHB4OyB0ZXh0LWRlY29y +YXRpb24tdGhpY2tuZXNzOiBpbml0aWFsOyB0ZXh0LWRlY29yYXRpb24tc3R5bGU6IGluaXRpYWw7 +IHRleHQtZGVjb3JhdGlvbi1jb2xvcjogaW5pdGlhbDsgY2xlYXI6IGJvdGg7Ij48c3BhbiAgY2xh +c3M9IiBfX2FsaXl1bl9ub2RlX2hhc19jb2xvciIgc3R5bGU9ImZvbnQtc3R5bGU6IG5vcm1hbDsg +Zm9udC13ZWlnaHQ6IDQwMDsgdGV4dC10cmFuc2Zvcm06IG5vbmU7IG1hcmdpbjogMHB4OyBwYWRk +aW5nOiAwcHg7IGJvcmRlcjogMHB4OyBvdXRsaW5lOiAwcHg7IGZvbnQtZmFtaWx5OiAnTWljcm9z +b2Z0IFlhaGVpJzsgZm9udC1zaXplOiAxM3B4OyBjb2xvcjogcmdiKDE5MSwgMTkxLCAxOTEpOyI+ +5p2o6L2pPC9zcGFuPjwvZGl2PjxkaXYgIGNsYXNzPSIgX19hbGl5dW5fbm9kZV9oYXNfY29sb3Ii +IHN0eWxlPSJtYXJnaW46IDBweDsgcGFkZGluZzogMHB4OyBib3JkZXI6IDBweDsgb3V0bGluZTog +MHB4OyBmb250LXZhcmlhbnQtbGlnYXR1cmVzOiBub3JtYWw7IGZvbnQtdmFyaWFudC1jYXBzOiBu +b3JtYWw7IHRleHQtYWxpZ246IHN0YXJ0OyB0ZXh0LWluZGVudDogMHB4OyB0ZXh0LWRlY29yYXRp +b24tdGhpY2tuZXNzOiBpbml0aWFsOyB0ZXh0LWRlY29yYXRpb24tc3R5bGU6IGluaXRpYWw7IHRl +eHQtZGVjb3JhdGlvbi1jb2xvcjogaW5pdGlhbDsgY2xlYXI6IGJvdGg7Ij48aW1nICBkYXRhLWFs +aW1haWwtaW1nLXByb2Nlc3NlZC1zcW0tZWRpdG9yPSJ0cnVlIiBoZWlnaHQ9IjY4IiBzcmM9ImNp +ZDo2ZmUzODEzZi1mMzg5LTQyMjQtYWRjOC1lZDY0Zjc2MDQ0NjciIHdpZHRoPSIzMDAiIHN0eWxl +PSJjb2xvcjogcmdiKDAsIDAsIDApOyBmb250LWZhbWlseTogVGFob21hLCBBcmlhbCwgU1RIZWl0 +aSwgU2ltU3VuOyBmb250LXNpemU6IDE0cHg7IGZvbnQtc3R5bGU6IG5vcm1hbDsgZm9udC13ZWln +aHQ6IDQwMDsgdGV4dC10cmFuc2Zvcm06IG5vbmU7IG1hcmdpbjogMHB4OyBwYWRkaW5nOiAwcHg7 +IGJvcmRlcjogMHB4OyBvdXRsaW5lOiAwcHg7IHZlcnRpY2FsLWFsaWduOiBib3R0b207Ij48c3Bh +biAgc3R5bGU9ImNvbG9yOiByZ2IoMCwgMCwgMCk7IGZvbnQtZmFtaWx5OiBUYWhvbWEsIEFyaWFs +LCBTVEhlaXRpLCBTaW1TdW47IGZvbnQtc2l6ZTogMTRweDsgZm9udC1zdHlsZTogbm9ybWFsOyBm +b250LXdlaWdodDogNDAwOyB0ZXh0LXRyYW5zZm9ybTogbm9uZTsiPiZuYnNwOzwvc3Bhbj48L2Rp +dj48ZGl2ICBjbGFzcz0iIF9fYWxpeXVuX25vZGVfaGFzX2NvbG9yIiBzdHlsZT0ibWFyZ2luOiAw +cHg7IHBhZGRpbmc6IDBweDsgYm9yZGVyOiAwcHg7IG91dGxpbmU6IDBweDsgZm9udC12YXJpYW50 +LWxpZ2F0dXJlczogbm9ybWFsOyBmb250LXZhcmlhbnQtY2Fwczogbm9ybWFsOyB0ZXh0LWFsaWdu +OiBzdGFydDsgdGV4dC1pbmRlbnQ6IDBweDsgdGV4dC1kZWNvcmF0aW9uLXRoaWNrbmVzczogaW5p +dGlhbDsgdGV4dC1kZWNvcmF0aW9uLXN0eWxlOiBpbml0aWFsOyB0ZXh0LWRlY29yYXRpb24tY29s +b3I6IGluaXRpYWw7IGNsZWFyOiBib3RoOyI+PHNwYW4gIGNsYXNzPSIgX19hbGl5dW5fbm9kZV9o +YXNfY29sb3IiIHN0eWxlPSJmb250LXNpemU6IDE0cHg7IGZvbnQtc3R5bGU6IG5vcm1hbDsgZm9u +dC13ZWlnaHQ6IDQwMDsgdGV4dC10cmFuc2Zvcm06IG5vbmU7IG1hcmdpbjogMHB4OyBwYWRkaW5n +OiAwcHg7IGJvcmRlcjogMHB4OyBvdXRsaW5lOiAwcHg7IGZvbnQtZmFtaWx5OiAnTWljcm9zb2Z0 +IFlhaGVpJzsgY29sb3I6IHJnYigxOTEsIDE5MSwgMTkxKTsiPuWcsOWdgO+8muS4reWbvcK35Y2X +5Lqs6L2v5Lu26LC36L2v5Lu25aSn6YGTMTHlj7foirHnpZ7lpKfljqYzRjwvc3Bhbj48L2Rpdj48 +ZGl2ICBjbGFzcz0iIF9fYWxpeXVuX25vZGVfaGFzX2NvbG9yIiBzdHlsZT0ibWFyZ2luOiAwcHg7 +IHBhZGRpbmc6IDBweDsgYm9yZGVyOiAwcHg7IG91dGxpbmU6IDBweDsgZm9udC12YXJpYW50LWxp +Z2F0dXJlczogbm9ybWFsOyBmb250LXZhcmlhbnQtY2Fwczogbm9ybWFsOyB0ZXh0LWFsaWduOiBz +dGFydDsgdGV4dC1pbmRlbnQ6IDBweDsgdGV4dC1kZWNvcmF0aW9uLXRoaWNrbmVzczogaW5pdGlh +bDsgdGV4dC1kZWNvcmF0aW9uLXN0eWxlOiBpbml0aWFsOyB0ZXh0LWRlY29yYXRpb24tY29sb3I6 +IGluaXRpYWw7IGNsZWFyOiBib3RoOyI+PHNwYW4gIGNsYXNzPSIgX19hbGl5dW5fbm9kZV9oYXNf +Y29sb3IiIHN0eWxlPSJmb250LXNpemU6IDE0cHg7IGZvbnQtc3R5bGU6IG5vcm1hbDsgZm9udC13 +ZWlnaHQ6IDQwMDsgdGV4dC10cmFuc2Zvcm06IG5vbmU7IG1hcmdpbjogMHB4OyBwYWRkaW5nOiAw +cHg7IGJvcmRlcjogMHB4OyBvdXRsaW5lOiAwcHg7IGZvbnQtZmFtaWx5OiAnTWljcm9zb2Z0IFlh +aGVpJzsgY29sb3I6IHJnYigxOTEsIDE5MSwgMTkxKTsiPuaJi+acuu+8mjE4NzI2MTI4NDg5PC9z +cGFuPjwvZGl2PjxkaXYgIGNsYXNzPSIgX19hbGl5dW5fbm9kZV9oYXNfY29sb3IiIHN0eWxlPSJt +YXJnaW46IDBweDsgcGFkZGluZzogMHB4OyBib3JkZXI6IDBweDsgb3V0bGluZTogMHB4OyBmb250 +LXZhcmlhbnQtbGlnYXR1cmVzOiBub3JtYWw7IGZvbnQtdmFyaWFudC1jYXBzOiBub3JtYWw7IHRl +eHQtYWxpZ246IHN0YXJ0OyB0ZXh0LWluZGVudDogMHB4OyB0ZXh0LWRlY29yYXRpb24tdGhpY2tu +ZXNzOiBpbml0aWFsOyB0ZXh0LWRlY29yYXRpb24tc3R5bGU6IGluaXRpYWw7IHRleHQtZGVjb3Jh +dGlvbi1jb2xvcjogaW5pdGlhbDsgY2xlYXI6IGJvdGg7Ij48c3BhbiAgY2xhc3M9IiBfX2FsaXl1 +bl9ub2RlX2hhc19jb2xvciIgc3R5bGU9ImZvbnQtc2l6ZTogMTRweDsgZm9udC1zdHlsZTogbm9y +bWFsOyBmb250LXdlaWdodDogNDAwOyB0ZXh0LXRyYW5zZm9ybTogbm9uZTsgbWFyZ2luOiAwcHg7 +IHBhZGRpbmc6IDBweDsgYm9yZGVyOiAwcHg7IG91dGxpbmU6IDBweDsgZm9udC1mYW1pbHk6ICdN +aWNyb3NvZnQgWWFoZWknOyBjb2xvcjogcmdiKDE5MSwgMTkxLCAxOTEpOyI+6YKu566x77yaeWFu +Z3h1YW5Ad2l0c29mdC5jbjwvc3Bhbj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48L2JvZHk+PC9o +dG1sPjwvZGl2Pg== + +--=_mailmaster-6a18e4a4_0_3b25_=-- + +--=_mailmaster-6a18e4a4_0_1e1f_= +Content-Type: application/octet-stream +Content-Transfer-Encoding: base64 +Content-ID: <6fe3813f-f389-4224-adc8-ed64f7604467> +Content-Disposition: inline; + filename="=?utf-8?B?57u05ouT56eR5oqALemCruS7tuetvuWQjWxvZ28ucG5n?=" + +iVBORw0KGgoAAAANSUhEUgAAASwAAABECAYAAAA7rQj2AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJ +bWFnZVJlYWR5ccllPAAAA4RpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdp +bj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6 +eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTQ1IDc5LjE2 +MzQ5OSwgMjAxOC8wOC8xMy0xNjo0MDoyMiAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJo +dHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlw +dGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEu +MC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVz +b3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1N +Ok9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDplYjhjYzQwMy1lNzZjLTQ5NDgtODFmOC1kNDIy +MmRkMTdhYjgiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NkVENzExMzg1MzBEMTFFQTg4QjNF +NEJFMUQyRjc1RkIiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NkVENzExMzc1MzBEMTFFQTg4 +QjNFNEJFMUQyRjc1RkIiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTkg +KFdpbmRvd3MpIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6 +ZmNkNTdlM2UtZThjYS05ZjQ2LWEzZTUtMWJlYmE2NjA5Y2FmIiBzdFJlZjpkb2N1bWVudElEPSJh +ZG9iZTpkb2NpZDpwaG90b3Nob3A6MzZkNmNjNTUtNTY3Yi01MTQ2LWEwYWYtMzBlMzEwMTMxNDFk +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 + +--=_mailmaster-6a18e4a4_0_1e1f_=-- diff --git a/media/inbound/2026-05-09_1712_G5开发周报_2026-05-06_--_2026-05-09---2fc4dc86-10a7-4839-9d4f-eb8a0aac0732.eml b/media/inbound/2026-05-09_1712_G5开发周报_2026-05-06_--_2026-05-09---2fc4dc86-10a7-4839-9d4f-eb8a0aac0732.eml new file mode 100644 index 0000000..72e422c --- /dev/null +++ b/media/inbound/2026-05-09_1712_G5开发周报_2026-05-06_--_2026-05-09---2fc4dc86-10a7-4839-9d4f-eb8a0aac0732.eml @@ -0,0 +1,594 @@ +Date: Sat, 9 May 2026 17:12:00 +0800 +From: =?utf-8?B?5p2o6L2p?= +To: =?utf-8?B?5YiY5by6?= +Cc: =?utf-8?B?5ZC0552/5Lic?= , =?utf-8?B?6ZmI5piO?= + , =?utf-8?B?5pu+6I6J?= +Message-ID: +Subject: =?utf-8?B?RzXlvIDlj5HlkajmiqXjgJAyMDI2LTA1LTA2IC0tIDIwMjYtMDUt?= + =?utf-8?B?MDnjgJE=?= +MIME-Version: 1.0 +Content-Type: multipart/related; boundary="=_mailmaster-6a18e4a4_0_1ad4_=" + +--=_mailmaster-6a18e4a4_0_1ad4_= +Content-Type: multipart/alternative; boundary="=_mailmaster-6a18e4a4_0_6e5d_=" + +--=_mailmaster-6a18e4a4_0_6e5d_= +Content-Type: text/plain; charset="UTF-8" +Content-Transfer-Encoding: base64 + +5pys5ZGo5bel5L2c5pGY6KaBCjEuIOW6k+WtmDUuNC4554mI5pys5qC45b+D6ZyA5rGC5byA5Y+R +5LiO5o6o6L+bCgogKiAK5a6M5oiQ5bqT5a2Y6aKE6K2m5LyY5YyW55qE5pa55qGI6K6+6K6h5LiO +6K+E5a6h77yM5bm26L+b5YWl5byA5Y+R44CB6Ieq5rWL5LiO6L2s5rWL6Zi25q61CgogKiAK5a6e +546w6ZSA5ZSu5Ye65bqT57qi5Yay5Yqf6IO977yM5pSv5oyBIEFwcCDmiavnoIHlh7rlhaXlupPk +uK3nmoTojrflj5bor6bmg4XkuI7lh7rlupPmk43kvZwKCiAqIArlrozmiJDnlJ/kuqfpoobmlpnm +t7vliqDpmYTku7blip/og70KCiAqIArnvJblhpnlupPlrZjpnIDmsYLlvIDlj5HmlrnmoYjmj5Dn +pLror43vvIzov5vooYzphY3mlrnpnIDmsYLliIbmnpDnmoTku6PnoIHliIbmnpAKMi4g5Li05pe2 +5paw5aKe6ZyA5rGC5b+r6YCf5ZON5bqU77yINeaciDnml6XvvIkKCiAqIArlrozmiJDlupPlrZjp +ooTorabkvJjljJbpnIDmsYLliankvZnlvIDlj5Hlt6XkvZwKCiAqIArnoa7orqTlubbokL3lnLAz +5Liq6YeN6KaB5Yqf6IO954K577yaCgogKiAK562W55Wl6YWN572u5oyB5LmF5YyW5pyJ5pWI5bqT +5a2Y5YWs5byPCgogKiAK6YeH6LSt5pyq5Yiw6LSn5pWw6YeP5Li76YC76L6RCgogKiAK57uf5LiA +5pyJ5pWI5bqT5a2Y6K6h566X5Y+j5b6ECgogKiAK5a6M5oiQ6Ieq5rWL5LiO6L2s5rWLCuavj+aX +peW3peS9nOaDheWGtQrlkajkuInvvIg15pyINuaXpe+8iQrku7vliqHlkI3np7DvvJog5bqT5a2Y +NS40LjnpnIDmsYLlvIDlj5HvvIjnu7TkupHmmbrpgKBHNe+8iQrmiafooYzlhoXlrrnvvJoKCiAq +IArlupPlrZjpnIDmsYLlvIDlj5HmlrnmoYjmj5DnpLror43nvJblhpkKCiAqIArphY3mlrnpnIDm +sYLliIbmnpDku6PnoIHliIbmnpAK5ZGo5Zub77yINeaciDfml6XvvIkK5Lu75Yqh5ZCN56ew77ya +IOW6k+WtmDUuNC456ZyA5rGC5byA5Y+R77yI57u05LqR5pm66YCgRzXvvIkK5omn6KGM5YaF5a65 +77yaCgogKiAK6ZSA5ZSu5Ye65bqT57qi5YayIEFwcCDmiavnoIHlh7rlhaXlupPvvJrojrflj5bo +r6bmg4XkuI7lh7rlupPmk43kvZwKCiAqIArnlJ/kuqfpoobmlpnmt7vliqDpmYTku7blip/og70K +5ZGo5LqU77yINeaciDjml6XvvIkK5Lu75Yqh5ZCN56ew77yaIOW6k+WtmDUuNC456ZyA5rGC5byA +5Y+R77yI57u05LqR5pm66YCgRzXvvIkK5omn6KGM5YaF5a6577yaCgogKiAK5bqT5a2Y6aKE6K2m +5LyY5YyW5byA5Y+R5pa55qGI6K6+6K6h5LiO6K+E5a6hCgogKiAK5bqT5a2Y6aKE6K2m5Yqf6IO9 +5byA5Y+RCuWRqOWFre+8iDXmnIg55pel77yJCuS7u+WKoeWQjeensO+8miDlupPlrZjnrqHnkIbk +uLTml7bmlrDlop7mm7/mjaLpnIDmsYLmorPnkIblkozlvIDlj5HvvIjnu7TkupHmmbrpgKBHNe+8 +iQrmiafooYzlhoXlrrnvvJoKCiAqIArlupPlrZjpooTorabkvJjljJbpnIDmsYLlvIDlj5EKCiAq +IArmlrDlop7lip/og73ngrnnoa7orqTvvJrnrZbnlaXphY3nva7mjIHkuYXljJbmnInmlYjlupPl +rZjlhazlvI8KCiAqIArmlrDlop7lip/og73ngrnnoa7orqTvvJrph4fotK3mnKrliLDotKfmlbDp +h4/kuLsKCiAqIArnu5/kuIDorqHnrpfmnInmlYjlupPlrZgKCiAqIAroh6rmtYsgJiDovazmtYsK +5a2Y5Zyo6Zeu6aKYCgogKiAK5pegCkJlc3QgcmVnYXJkcywK5p2o6L2pCuWcsOWdgO+8muS4reWb +vcK35Y2X5Lqs6L2v5Lu26LC36L2v5Lu25aSn6YGTMTHlj7foirHnpZ7lpKfljqYzRgrmiYvmnLrv +vJoxODcyNjEyODQ4OQrpgq7nrrHvvJp5YW5neHVhbkB3aXRzb2Z0LmNuCg== + +--=_mailmaster-6a18e4a4_0_6e5d_= +Content-Type: text/html; charset="UTF-8" +Content-Transfer-Encoding: base64 + +PGRpdiBjbGFzcz0iX19hbGl5dW5fZW1haWxfYm9keV9ibG9jayI+PGh0bWwgPjxoZWFkID48L2hl +YWQ+PGJvZHkgPjxkaXYgIHN0eWxlPSJmb250LWZhbWlseTogVGFob21hLCBBcmlhbCwgU1RIZWl0 +aVNDLUxpZ2h0LCBTaW1TdW4iPjxkaXYgIHN0eWxlPSJmb250LWZhbWlseTogVGFob21hLCBBcmlh +bCwgU1RIZWl0aVNDLUxpZ2h0LCBTaW1TdW47IGNsZWFyOiBib3RoOyI+PGRpdiAgc3R5bGU9ImNs +ZWFyOiBib3RoOyBmb250LWZhbWlseTogVGFob21hLCBBcmlhbCwgU1RIZWl0aVNDLUxpZ2h0LCBT +aW1TdW47Ij48c3BhbiA+PC9zcGFuPjxoMiAgc3R5bGU9ImZvbnQ6IDcwMCAyMnB4IC8gMzJweCBx +dW90ZS1jamstcGF0Y2gsIEludGVyLCBzeXN0ZW0tdWksIC1hcHBsZS1zeXN0ZW0sIEJsaW5rTWFj +U3lzdGVtRm9udCwgJ1NlZ29lIFVJJywgUm9ib3RvLCBPeHlnZW4sIFVidW50dSwgQ2FudGFyZWxs +LCAnT3BlbiBTYW5zJywgJ0hlbHZldGljYSBOZXVlJywgc2Fucy1zZXJpZjsgbWFyZ2luOiAzMnB4 +IDBweCAxNnB4OyBjb2xvcjogcmdiKDE1LCAxNywgMjEpOyBsZXR0ZXItc3BhY2luZzogbm9ybWFs +OyB0ZXh0LWFsaWduOiBzdGFydDsgdGV4dC1pbmRlbnQ6IDBweDsgdGV4dC10cmFuc2Zvcm06IG5v +bmU7IHdvcmQtc3BhY2luZzogMHB4OyB3aGl0ZS1zcGFjZTogbm9ybWFsOyBiYWNrZ3JvdW5kLWNv +bG9yOiByZ2IoMjU1LCAyNTUsIDI1NSk7IHRleHQtZGVjb3JhdGlvbi10aGlja25lc3M6IGluaXRp +YWw7IHRleHQtZGVjb3JhdGlvbi1zdHlsZTogaW5pdGlhbDsgdGV4dC1kZWNvcmF0aW9uLWNvbG9y +OiBpbml0aWFsOyI+PHNwYW4gPuacrOWRqOW3peS9nOaRmOimgTwvc3Bhbj48L2gyPjxwICBjbGFz +cz0iZHMtbWFya2Rvd24tcGFyYWdyYXBoIiBzdHlsZT0ibWFyZ2luOiAxNnB4IDBweDsgY29sb3I6 +IHJnYigxNSwgMTcsIDIxKTsgZm9udC1mYW1pbHk6IHF1b3RlLWNqay1wYXRjaCwgSW50ZXIsIHN5 +c3RlbS11aSwgLWFwcGxlLXN5c3RlbSwgQmxpbmtNYWNTeXN0ZW1Gb250LCAnU2Vnb2UgVUknLCBS +b2JvdG8sIE94eWdlbiwgVWJ1bnR1LCBDYW50YXJlbGwsICdPcGVuIFNhbnMnLCAnSGVsdmV0aWNh +IE5ldWUnLCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDE2cHg7IGZvbnQtc3R5bGU6IG5vcm1hbDsg +Zm9udC12YXJpYW50LWxpZ2F0dXJlczogbm9ybWFsOyBmb250LXZhcmlhbnQtY2Fwczogbm9ybWFs +OyBmb250LXdlaWdodDogNDAwOyBsZXR0ZXItc3BhY2luZzogbm9ybWFsOyB0ZXh0LWFsaWduOiBz +dGFydDsgdGV4dC1pbmRlbnQ6IDBweDsgdGV4dC10cmFuc2Zvcm06IG5vbmU7IHdvcmQtc3BhY2lu +ZzogMHB4OyB3aGl0ZS1zcGFjZTogbm9ybWFsOyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjU1LCAy +NTUsIDI1NSk7IHRleHQtZGVjb3JhdGlvbi10aGlja25lc3M6IGluaXRpYWw7IHRleHQtZGVjb3Jh +dGlvbi1zdHlsZTogaW5pdGlhbDsgdGV4dC1kZWNvcmF0aW9uLWNvbG9yOiBpbml0aWFsOyI+PHNw +YW4gIHN0eWxlPSJmb250LXdlaWdodDogNDAwOyI+MS4g5bqT5a2YNS40LjnniYjmnKzmoLjlv4Pp +nIDmsYLlvIDlj5HkuI7mjqjov5s8L3NwYW4+PC9wPjx1bCAgc3R5bGU9Im1hcmdpbjogMTZweCAw +cHg7IHBhZGRpbmctbGVmdDogMThweDsgY29sb3I6IHJnYigxNSwgMTcsIDIxKTsgZm9udC1mYW1p +bHk6IHF1b3RlLWNqay1wYXRjaCwgSW50ZXIsIHN5c3RlbS11aSwgLWFwcGxlLXN5c3RlbSwgQmxp +bmtNYWNTeXN0ZW1Gb250LCAnU2Vnb2UgVUknLCBSb2JvdG8sIE94eWdlbiwgVWJ1bnR1LCBDYW50 +YXJlbGwsICdPcGVuIFNhbnMnLCAnSGVsdmV0aWNhIE5ldWUnLCBzYW5zLXNlcmlmOyBmb250LXNp +emU6IDE2cHg7IGZvbnQtc3R5bGU6IG5vcm1hbDsgZm9udC12YXJpYW50LWxpZ2F0dXJlczogbm9y +bWFsOyBmb250LXZhcmlhbnQtY2Fwczogbm9ybWFsOyBmb250LXdlaWdodDogNDAwOyBsZXR0ZXIt +c3BhY2luZzogbm9ybWFsOyB0ZXh0LWFsaWduOiBzdGFydDsgdGV4dC1pbmRlbnQ6IDBweDsgdGV4 +dC10cmFuc2Zvcm06IG5vbmU7IHdvcmQtc3BhY2luZzogMHB4OyB3aGl0ZS1zcGFjZTogbm9ybWFs +OyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjU1LCAyNTUsIDI1NSk7IHRleHQtZGVjb3JhdGlvbi10 +aGlja25lc3M6IGluaXRpYWw7IHRleHQtZGVjb3JhdGlvbi1zdHlsZTogaW5pdGlhbDsgdGV4dC1k +ZWNvcmF0aW9uLWNvbG9yOiBpbml0aWFsOyI+PGxpID48cCAgY2xhc3M9ImRzLW1hcmtkb3duLXBh +cmFncmFwaCIgc3R5bGU9Im1hcmdpbi1yaWdodDogMHB4OyBtYXJnaW4tYm90dG9tOiAwcHg7IG1h +cmdpbi1sZWZ0OiAwcHg7IG1hcmdpbi10b3A6IDBweCAhaW1wb3J0YW50OyI+PHNwYW4gPuWujOaI +kOW6k+WtmOmihOitpuS8mOWMlueahDwvc3Bhbj48c3BhbiAgc3R5bGU9ImZvbnQtd2VpZ2h0OiA0 +MDA7Ij7mlrnmoYjorr7orqHkuI7or4TlrqE8L3NwYW4+PHNwYW4gPu+8jOW5tui/m+WFpeW8gOWP +keOAgeiHqua1i+S4jui9rOa1i+mYtuautTwvc3Bhbj48L3A+PC9saT48bGkgIHN0eWxlPSJtYXJn +aW4tdG9wOiA2cHg7Ij48cCAgY2xhc3M9ImRzLW1hcmtkb3duLXBhcmFncmFwaCIgc3R5bGU9Im1h +cmdpbi1yaWdodDogMHB4OyBtYXJnaW4tYm90dG9tOiAwcHg7IG1hcmdpbi1sZWZ0OiAwcHg7IG1h +cmdpbi10b3A6IDBweCAhaW1wb3J0YW50OyI+PHNwYW4gPuWunueOsDwvc3Bhbj48c3BhbiAgc3R5 +bGU9ImZvbnQtd2VpZ2h0OiA0MDA7Ij7plIDllK7lh7rlupPnuqLlhrI8L3NwYW4+PHNwYW4gPuWK +n+iDve+8jOaUr+aMgSBBcHAg5omr56CB5Ye65YWl5bqT5Lit55qE6I635Y+W6K+m5oOF5LiO5Ye6 +5bqT5pON5L2cPC9zcGFuPjwvcD48L2xpPjxsaSAgc3R5bGU9Im1hcmdpbi10b3A6IDZweDsiPjxw +ICBjbGFzcz0iZHMtbWFya2Rvd24tcGFyYWdyYXBoIiBzdHlsZT0ibWFyZ2luLXJpZ2h0OiAwcHg7 +IG1hcmdpbi1ib3R0b206IDBweDsgbWFyZ2luLWxlZnQ6IDBweDsgbWFyZ2luLXRvcDogMHB4ICFp +bXBvcnRhbnQ7Ij48c3BhbiA+5a6M5oiQPC9zcGFuPjxzcGFuICBzdHlsZT0iZm9udC13ZWlnaHQ6 +IDQwMDsiPueUn+S6p+mihuaWmea3u+WKoOmZhOS7tjwvc3Bhbj48c3BhbiA+5Yqf6IO9PC9zcGFu +PjwvcD48L2xpPjxsaSAgc3R5bGU9Im1hcmdpbi10b3A6IDZweDsiPjxwICBjbGFzcz0iZHMtbWFy +a2Rvd24tcGFyYWdyYXBoIiBzdHlsZT0ibWFyZ2luLXJpZ2h0OiAwcHg7IG1hcmdpbi1ib3R0b206 +IDBweDsgbWFyZ2luLWxlZnQ6IDBweDsgbWFyZ2luLXRvcDogMHB4ICFpbXBvcnRhbnQ7Ij48c3Bh +biA+57yW5YaZ5bqT5a2Y6ZyA5rGC5byA5Y+R5pa55qGI5o+Q56S66K+N77yM6L+b6KGM6YWN5pa5 +6ZyA5rGC5YiG5p6Q55qE5Luj56CB5YiG5p6QPC9zcGFuPjwvcD48L2xpPjwvdWw+PHAgIGNsYXNz +PSJkcy1tYXJrZG93bi1wYXJhZ3JhcGgiIHN0eWxlPSJtYXJnaW46IDE2cHggMHB4OyBjb2xvcjog +cmdiKDE1LCAxNywgMjEpOyBmb250LWZhbWlseTogcXVvdGUtY2prLXBhdGNoLCBJbnRlciwgc3lz +dGVtLXVpLCAtYXBwbGUtc3lzdGVtLCBCbGlua01hY1N5c3RlbUZvbnQsICdTZWdvZSBVSScsIFJv +Ym90bywgT3h5Z2VuLCBVYnVudHUsIENhbnRhcmVsbCwgJ09wZW4gU2FucycsICdIZWx2ZXRpY2Eg +TmV1ZScsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTZweDsgZm9udC1zdHlsZTogbm9ybWFsOyBm +b250LXZhcmlhbnQtbGlnYXR1cmVzOiBub3JtYWw7IGZvbnQtdmFyaWFudC1jYXBzOiBub3JtYWw7 +IGZvbnQtd2VpZ2h0OiA0MDA7IGxldHRlci1zcGFjaW5nOiBub3JtYWw7IHRleHQtYWxpZ246IHN0 +YXJ0OyB0ZXh0LWluZGVudDogMHB4OyB0ZXh0LXRyYW5zZm9ybTogbm9uZTsgd29yZC1zcGFjaW5n +OiAwcHg7IHdoaXRlLXNwYWNlOiBub3JtYWw7IGJhY2tncm91bmQtY29sb3I6IHJnYigyNTUsIDI1 +NSwgMjU1KTsgdGV4dC1kZWNvcmF0aW9uLXRoaWNrbmVzczogaW5pdGlhbDsgdGV4dC1kZWNvcmF0 +aW9uLXN0eWxlOiBpbml0aWFsOyB0ZXh0LWRlY29yYXRpb24tY29sb3I6IGluaXRpYWw7Ij48c3Bh +biAgc3R5bGU9ImZvbnQtd2VpZ2h0OiA0MDA7Ij4yLiDkuLTml7bmlrDlop7pnIDmsYLlv6vpgJ/l +k43lupQ8L3NwYW4+PHNwYW4gPu+8iDXmnIg55pel77yJPC9zcGFuPjwvcD48dWwgIHN0eWxlPSJt +YXJnaW46IDE2cHggMHB4OyBwYWRkaW5nLWxlZnQ6IDE4cHg7IGNvbG9yOiByZ2IoMTUsIDE3LCAy +MSk7IGZvbnQtZmFtaWx5OiBxdW90ZS1jamstcGF0Y2gsIEludGVyLCBzeXN0ZW0tdWksIC1hcHBs +ZS1zeXN0ZW0sIEJsaW5rTWFjU3lzdGVtRm9udCwgJ1NlZ29lIFVJJywgUm9ib3RvLCBPeHlnZW4s +IFVidW50dSwgQ2FudGFyZWxsLCAnT3BlbiBTYW5zJywgJ0hlbHZldGljYSBOZXVlJywgc2Fucy1z +ZXJpZjsgZm9udC1zaXplOiAxNnB4OyBmb250LXN0eWxlOiBub3JtYWw7IGZvbnQtdmFyaWFudC1s +aWdhdHVyZXM6IG5vcm1hbDsgZm9udC12YXJpYW50LWNhcHM6IG5vcm1hbDsgZm9udC13ZWlnaHQ6 +IDQwMDsgbGV0dGVyLXNwYWNpbmc6IG5vcm1hbDsgdGV4dC1hbGlnbjogc3RhcnQ7IHRleHQtaW5k +ZW50OiAwcHg7IHRleHQtdHJhbnNmb3JtOiBub25lOyB3b3JkLXNwYWNpbmc6IDBweDsgd2hpdGUt +c3BhY2U6IG5vcm1hbDsgYmFja2dyb3VuZC1jb2xvcjogcmdiKDI1NSwgMjU1LCAyNTUpOyB0ZXh0 +LWRlY29yYXRpb24tdGhpY2tuZXNzOiBpbml0aWFsOyB0ZXh0LWRlY29yYXRpb24tc3R5bGU6IGlu +aXRpYWw7IHRleHQtZGVjb3JhdGlvbi1jb2xvcjogaW5pdGlhbDsiPjxsaSA+PHAgIGNsYXNzPSJk +cy1tYXJrZG93bi1wYXJhZ3JhcGgiIHN0eWxlPSJtYXJnaW4tcmlnaHQ6IDBweDsgbWFyZ2luLWJv +dHRvbTogMHB4OyBtYXJnaW4tbGVmdDogMHB4OyBtYXJnaW4tdG9wOiAwcHggIWltcG9ydGFudDsi +PjxzcGFuID7lrozmiJA8L3NwYW4+PHNwYW4gIHN0eWxlPSJmb250LXdlaWdodDogNDAwOyI+5bqT +5a2Y6aKE6K2m5LyY5YyW6ZyA5rGCPC9zcGFuPjxzcGFuID7liankvZnlvIDlj5Hlt6XkvZw8L3Nw +YW4+PC9wPjwvbGk+PGxpICBzdHlsZT0ibWFyZ2luLXRvcDogNnB4OyI+PHAgIGNsYXNzPSJkcy1t +YXJrZG93bi1wYXJhZ3JhcGgiIHN0eWxlPSJtYXJnaW4tcmlnaHQ6IDBweDsgbWFyZ2luLWJvdHRv +bTogOHB4OyBtYXJnaW4tbGVmdDogMHB4OyBtYXJnaW4tdG9wOiAwcHggIWltcG9ydGFudDsiPjxz +cGFuID7noa7orqTlubbokL3lnLAz5Liq6YeN6KaB5Yqf6IO954K577yaPC9zcGFuPjwvcD48dWwg +IHN0eWxlPSJtYXJnaW46IDRweCAwcHggMHB4OyBwYWRkaW5nLWxlZnQ6IDE4cHg7Ij48bGkgPjxw +ICBjbGFzcz0iZHMtbWFya2Rvd24tcGFyYWdyYXBoIiBzdHlsZT0ibWFyZ2luLXJpZ2h0OiAwcHg7 +IG1hcmdpbi1ib3R0b206IDBweDsgbWFyZ2luLWxlZnQ6IDBweDsgbWFyZ2luLXRvcDogMHB4ICFp +bXBvcnRhbnQ7Ij48c3BhbiA+562W55Wl6YWN572u5oyB5LmF5YyW5pyJ5pWI5bqT5a2Y5YWs5byP +PC9zcGFuPjwvcD48L2xpPjxsaSAgc3R5bGU9Im1hcmdpbi10b3A6IDZweDsiPjxwICBjbGFzcz0i +ZHMtbWFya2Rvd24tcGFyYWdyYXBoIiBzdHlsZT0ibWFyZ2luLXJpZ2h0OiAwcHg7IG1hcmdpbi1i +b3R0b206IDBweDsgbWFyZ2luLWxlZnQ6IDBweDsgbWFyZ2luLXRvcDogMHB4ICFpbXBvcnRhbnQ7 +Ij48c3BhbiA+6YeH6LSt5pyq5Yiw6LSn5pWw6YeP5Li76YC76L6RPC9zcGFuPjwvcD48L2xpPjxs +aSAgc3R5bGU9Im1hcmdpbi10b3A6IDZweDsiPjxwICBjbGFzcz0iZHMtbWFya2Rvd24tcGFyYWdy +YXBoIiBzdHlsZT0ibWFyZ2luLXJpZ2h0OiAwcHg7IG1hcmdpbi1ib3R0b206IDBweDsgbWFyZ2lu +LWxlZnQ6IDBweDsgbWFyZ2luLXRvcDogMHB4ICFpbXBvcnRhbnQ7Ij48c3BhbiA+57uf5LiA5pyJ +5pWI5bqT5a2Y6K6h566X5Y+j5b6EPC9zcGFuPjwvcD48L2xpPjwvdWw+PC9saT48bGkgIHN0eWxl +PSJtYXJnaW4tdG9wOiA2cHg7Ij48cCAgY2xhc3M9ImRzLW1hcmtkb3duLXBhcmFncmFwaCIgc3R5 +bGU9Im1hcmdpbi1yaWdodDogMHB4OyBtYXJnaW4tYm90dG9tOiAwcHg7IG1hcmdpbi1sZWZ0OiAw +cHg7IG1hcmdpbi10b3A6IDBweCAhaW1wb3J0YW50OyI+PHNwYW4gPuWujOaIkOiHqua1i+S4jui9 +rOa1izwvc3Bhbj48L3A+PC9saT48L3VsPjxociAgc3R5bGU9ImJhY2tncm91bmQ6IG5vbmUgMCUg +MCUgLyBhdXRvIHJlcGVhdCBzY3JvbGwgcGFkZGluZy1ib3ggYm9yZGVyLWJveCByZ2JhKDAsIDAs +IDAsIDAuMSk7IGJvcmRlcjogbm9uZTsgaGVpZ2h0OiAxcHg7IG1hcmdpbjogMzJweCAwcHg7IGRp +c3BsYXk6IGJsb2NrOyBmb250LWZhbWlseTogcXVvdGUtY2prLXBhdGNoLCBJbnRlciwgc3lzdGVt +LXVpLCAtYXBwbGUtc3lzdGVtLCBCbGlua01hY1N5c3RlbUZvbnQsICdTZWdvZSBVSScsIFJvYm90 +bywgT3h5Z2VuLCBVYnVudHUsIENhbnRhcmVsbCwgJ09wZW4gU2FucycsICdIZWx2ZXRpY2EgTmV1 +ZScsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTZweDsgZm9udC1zdHlsZTogbm9ybWFsOyBmb250 +LXZhcmlhbnQtbGlnYXR1cmVzOiBub3JtYWw7IGZvbnQtdmFyaWFudC1jYXBzOiBub3JtYWw7IGZv +bnQtd2VpZ2h0OiA0MDA7IGxldHRlci1zcGFjaW5nOiBub3JtYWw7IG9ycGhhbnM6IDI7IHRleHQt +YWxpZ246IHN0YXJ0OyB0ZXh0LWluZGVudDogMHB4OyB0ZXh0LXRyYW5zZm9ybTogbm9uZTsgd2lk +b3dzOiAyOyB3b3JkLXNwYWNpbmc6IDBweDsgLXdlYmtpdC10ZXh0LXN0cm9rZS13aWR0aDogMHB4 +OyB3aGl0ZS1zcGFjZTogbm9ybWFsOyB0ZXh0LWRlY29yYXRpb24tdGhpY2tuZXNzOiBpbml0aWFs +OyB0ZXh0LWRlY29yYXRpb24tc3R5bGU6IGluaXRpYWw7IHRleHQtZGVjb3JhdGlvbi1jb2xvcjog +aW5pdGlhbDsiPjxoMiAgc3R5bGU9ImZvbnQ6IDcwMCAyMnB4IC8gMzJweCBxdW90ZS1jamstcGF0 +Y2gsIEludGVyLCBzeXN0ZW0tdWksIC1hcHBsZS1zeXN0ZW0sIEJsaW5rTWFjU3lzdGVtRm9udCwg +J1NlZ29lIFVJJywgUm9ib3RvLCBPeHlnZW4sIFVidW50dSwgQ2FudGFyZWxsLCAnT3BlbiBTYW5z +JywgJ0hlbHZldGljYSBOZXVlJywgc2Fucy1zZXJpZjsgbWFyZ2luOiAzMnB4IDBweCAxNnB4OyBj +b2xvcjogcmdiKDE1LCAxNywgMjEpOyBsZXR0ZXItc3BhY2luZzogbm9ybWFsOyB0ZXh0LWFsaWdu +OiBzdGFydDsgdGV4dC1pbmRlbnQ6IDBweDsgdGV4dC10cmFuc2Zvcm06IG5vbmU7IHdvcmQtc3Bh +Y2luZzogMHB4OyB3aGl0ZS1zcGFjZTogbm9ybWFsOyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjU1 +LCAyNTUsIDI1NSk7IHRleHQtZGVjb3JhdGlvbi10aGlja25lc3M6IGluaXRpYWw7IHRleHQtZGVj +b3JhdGlvbi1zdHlsZTogaW5pdGlhbDsgdGV4dC1kZWNvcmF0aW9uLWNvbG9yOiBpbml0aWFsOyI+ +PHNwYW4gPuavj+aXpeW3peS9nOaDheWGtTwvc3Bhbj48L2gyPjxoMyAgc3R5bGU9ImZvbnQ6IDcw +MCAyMHB4IC8gMzBweCBxdW90ZS1jamstcGF0Y2gsIEludGVyLCBzeXN0ZW0tdWksIC1hcHBsZS1z +eXN0ZW0sIEJsaW5rTWFjU3lzdGVtRm9udCwgJ1NlZ29lIFVJJywgUm9ib3RvLCBPeHlnZW4sIFVi +dW50dSwgQ2FudGFyZWxsLCAnT3BlbiBTYW5zJywgJ0hlbHZldGljYSBOZXVlJywgc2Fucy1zZXJp +ZjsgbWFyZ2luOiAzMnB4IDBweCAxNnB4OyBjb2xvcjogcmdiKDE1LCAxNywgMjEpOyBsZXR0ZXIt +c3BhY2luZzogbm9ybWFsOyB0ZXh0LWFsaWduOiBzdGFydDsgdGV4dC1pbmRlbnQ6IDBweDsgdGV4 +dC10cmFuc2Zvcm06IG5vbmU7IHdvcmQtc3BhY2luZzogMHB4OyB3aGl0ZS1zcGFjZTogbm9ybWFs +OyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjU1LCAyNTUsIDI1NSk7IHRleHQtZGVjb3JhdGlvbi10 +aGlja25lc3M6IGluaXRpYWw7IHRleHQtZGVjb3JhdGlvbi1zdHlsZTogaW5pdGlhbDsgdGV4dC1k +ZWNvcmF0aW9uLWNvbG9yOiBpbml0aWFsOyI+PHNwYW4gPuWRqOS4ie+8iDXmnIg25pel77yJPC9z +cGFuPjwvaDM+PHAgIGNsYXNzPSJkcy1tYXJrZG93bi1wYXJhZ3JhcGgiIHN0eWxlPSJtYXJnaW46 +IDE2cHggMHB4OyBjb2xvcjogcmdiKDE1LCAxNywgMjEpOyBmb250LWZhbWlseTogcXVvdGUtY2pr +LXBhdGNoLCBJbnRlciwgc3lzdGVtLXVpLCAtYXBwbGUtc3lzdGVtLCBCbGlua01hY1N5c3RlbUZv +bnQsICdTZWdvZSBVSScsIFJvYm90bywgT3h5Z2VuLCBVYnVudHUsIENhbnRhcmVsbCwgJ09wZW4g +U2FucycsICdIZWx2ZXRpY2EgTmV1ZScsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTZweDsgZm9u +dC1zdHlsZTogbm9ybWFsOyBmb250LXZhcmlhbnQtbGlnYXR1cmVzOiBub3JtYWw7IGZvbnQtdmFy +aWFudC1jYXBzOiBub3JtYWw7IGZvbnQtd2VpZ2h0OiA0MDA7IGxldHRlci1zcGFjaW5nOiBub3Jt +YWw7IHRleHQtYWxpZ246IHN0YXJ0OyB0ZXh0LWluZGVudDogMHB4OyB0ZXh0LXRyYW5zZm9ybTog +bm9uZTsgd29yZC1zcGFjaW5nOiAwcHg7IHdoaXRlLXNwYWNlOiBub3JtYWw7IGJhY2tncm91bmQt +Y29sb3I6IHJnYigyNTUsIDI1NSwgMjU1KTsgdGV4dC1kZWNvcmF0aW9uLXRoaWNrbmVzczogaW5p +dGlhbDsgdGV4dC1kZWNvcmF0aW9uLXN0eWxlOiBpbml0aWFsOyB0ZXh0LWRlY29yYXRpb24tY29s +b3I6IGluaXRpYWw7Ij48c3BhbiAgc3R5bGU9ImZvbnQtd2VpZ2h0OiA0MDA7Ij7ku7vliqHlkI3n +p7DvvJo8L3NwYW4+PHNwYW4gPjxzcGFuID4mbmJzcDs8L3NwYW4+5bqT5a2YNS40LjnpnIDmsYLl +vIDlj5HvvIjnu7TkupHmmbrpgKBHNe+8iTwvc3Bhbj48YnIgPjxzcGFuICBzdHlsZT0iZm9udC13 +ZWlnaHQ6IDQwMDsiPuaJp+ihjOWGheWuue+8mjwvc3Bhbj48L3A+PG9sICBzdGFydD0iMSIgc3R5 +bGU9Im1hcmdpbjogMTZweCAwcHg7IHBhZGRpbmctbGVmdDogMThweDsgY29sb3I6IHJnYigxNSwg +MTcsIDIxKTsgZm9udC1mYW1pbHk6IHF1b3RlLWNqay1wYXRjaCwgSW50ZXIsIHN5c3RlbS11aSwg +LWFwcGxlLXN5c3RlbSwgQmxpbmtNYWNTeXN0ZW1Gb250LCAnU2Vnb2UgVUknLCBSb2JvdG8sIE94 +eWdlbiwgVWJ1bnR1LCBDYW50YXJlbGwsICdPcGVuIFNhbnMnLCAnSGVsdmV0aWNhIE5ldWUnLCBz +YW5zLXNlcmlmOyBmb250LXNpemU6IDE2cHg7IGZvbnQtc3R5bGU6IG5vcm1hbDsgZm9udC12YXJp +YW50LWxpZ2F0dXJlczogbm9ybWFsOyBmb250LXZhcmlhbnQtY2Fwczogbm9ybWFsOyBmb250LXdl +aWdodDogNDAwOyBsZXR0ZXItc3BhY2luZzogbm9ybWFsOyB0ZXh0LWFsaWduOiBzdGFydDsgdGV4 +dC1pbmRlbnQ6IDBweDsgdGV4dC10cmFuc2Zvcm06IG5vbmU7IHdvcmQtc3BhY2luZzogMHB4OyB3 +aGl0ZS1zcGFjZTogbm9ybWFsOyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjU1LCAyNTUsIDI1NSk7 +IHRleHQtZGVjb3JhdGlvbi10aGlja25lc3M6IGluaXRpYWw7IHRleHQtZGVjb3JhdGlvbi1zdHls +ZTogaW5pdGlhbDsgdGV4dC1kZWNvcmF0aW9uLWNvbG9yOiBpbml0aWFsOyI+PGxpID48cCAgY2xh +c3M9ImRzLW1hcmtkb3duLXBhcmFncmFwaCIgc3R5bGU9Im1hcmdpbi1yaWdodDogMHB4OyBtYXJn +aW4tYm90dG9tOiAwcHg7IG1hcmdpbi1sZWZ0OiAwcHg7IG1hcmdpbi10b3A6IDBweCAhaW1wb3J0 +YW50OyI+PHNwYW4gPuW6k+WtmOmcgOaxguW8gOWPkeaWueahiOaPkOekuuivjee8luWGmTwvc3Bh +bj48L3A+PC9saT48bGkgIHN0eWxlPSJtYXJnaW4tdG9wOiA2cHg7Ij48cCAgY2xhc3M9ImRzLW1h +cmtkb3duLXBhcmFncmFwaCIgc3R5bGU9Im1hcmdpbi1yaWdodDogMHB4OyBtYXJnaW4tYm90dG9t +OiAwcHg7IG1hcmdpbi1sZWZ0OiAwcHg7IG1hcmdpbi10b3A6IDBweCAhaW1wb3J0YW50OyI+PHNw +YW4gPumFjeaWuemcgOaxguWIhuaekOS7o+eggeWIhuaekDwvc3Bhbj48L3A+PC9saT48L29sPjxo +MyAgc3R5bGU9ImZvbnQ6IDcwMCAyMHB4IC8gMzBweCBxdW90ZS1jamstcGF0Y2gsIEludGVyLCBz +eXN0ZW0tdWksIC1hcHBsZS1zeXN0ZW0sIEJsaW5rTWFjU3lzdGVtRm9udCwgJ1NlZ29lIFVJJywg +Um9ib3RvLCBPeHlnZW4sIFVidW50dSwgQ2FudGFyZWxsLCAnT3BlbiBTYW5zJywgJ0hlbHZldGlj +YSBOZXVlJywgc2Fucy1zZXJpZjsgbWFyZ2luOiAzMnB4IDBweCAxNnB4OyBjb2xvcjogcmdiKDE1 +LCAxNywgMjEpOyBsZXR0ZXItc3BhY2luZzogbm9ybWFsOyB0ZXh0LWFsaWduOiBzdGFydDsgdGV4 +dC1pbmRlbnQ6IDBweDsgdGV4dC10cmFuc2Zvcm06IG5vbmU7IHdvcmQtc3BhY2luZzogMHB4OyB3 +aGl0ZS1zcGFjZTogbm9ybWFsOyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjU1LCAyNTUsIDI1NSk7 +IHRleHQtZGVjb3JhdGlvbi10aGlja25lc3M6IGluaXRpYWw7IHRleHQtZGVjb3JhdGlvbi1zdHls +ZTogaW5pdGlhbDsgdGV4dC1kZWNvcmF0aW9uLWNvbG9yOiBpbml0aWFsOyI+PHNwYW4gPuWRqOWb +m++8iDXmnIg35pel77yJPC9zcGFuPjwvaDM+PHAgIGNsYXNzPSJkcy1tYXJrZG93bi1wYXJhZ3Jh +cGgiIHN0eWxlPSJtYXJnaW46IDE2cHggMHB4OyBjb2xvcjogcmdiKDE1LCAxNywgMjEpOyBmb250 +LWZhbWlseTogcXVvdGUtY2prLXBhdGNoLCBJbnRlciwgc3lzdGVtLXVpLCAtYXBwbGUtc3lzdGVt +LCBCbGlua01hY1N5c3RlbUZvbnQsICdTZWdvZSBVSScsIFJvYm90bywgT3h5Z2VuLCBVYnVudHUs +IENhbnRhcmVsbCwgJ09wZW4gU2FucycsICdIZWx2ZXRpY2EgTmV1ZScsIHNhbnMtc2VyaWY7IGZv +bnQtc2l6ZTogMTZweDsgZm9udC1zdHlsZTogbm9ybWFsOyBmb250LXZhcmlhbnQtbGlnYXR1cmVz +OiBub3JtYWw7IGZvbnQtdmFyaWFudC1jYXBzOiBub3JtYWw7IGZvbnQtd2VpZ2h0OiA0MDA7IGxl +dHRlci1zcGFjaW5nOiBub3JtYWw7IHRleHQtYWxpZ246IHN0YXJ0OyB0ZXh0LWluZGVudDogMHB4 +OyB0ZXh0LXRyYW5zZm9ybTogbm9uZTsgd29yZC1zcGFjaW5nOiAwcHg7IHdoaXRlLXNwYWNlOiBu +b3JtYWw7IGJhY2tncm91bmQtY29sb3I6IHJnYigyNTUsIDI1NSwgMjU1KTsgdGV4dC1kZWNvcmF0 +aW9uLXRoaWNrbmVzczogaW5pdGlhbDsgdGV4dC1kZWNvcmF0aW9uLXN0eWxlOiBpbml0aWFsOyB0 +ZXh0LWRlY29yYXRpb24tY29sb3I6IGluaXRpYWw7Ij48c3BhbiAgc3R5bGU9ImZvbnQtd2VpZ2h0 +OiA0MDA7Ij7ku7vliqHlkI3np7DvvJo8L3NwYW4+PHNwYW4gPjxzcGFuID4mbmJzcDs8L3NwYW4+ +5bqT5a2YNS40LjnpnIDmsYLlvIDlj5HvvIjnu7TkupHmmbrpgKBHNe+8iTwvc3Bhbj48YnIgPjxz +cGFuICBzdHlsZT0iZm9udC13ZWlnaHQ6IDQwMDsiPuaJp+ihjOWGheWuue+8mjwvc3Bhbj48L3A+ +PG9sICBzdGFydD0iMSIgc3R5bGU9Im1hcmdpbjogMTZweCAwcHg7IHBhZGRpbmctbGVmdDogMThw +eDsgY29sb3I6IHJnYigxNSwgMTcsIDIxKTsgZm9udC1mYW1pbHk6IHF1b3RlLWNqay1wYXRjaCwg +SW50ZXIsIHN5c3RlbS11aSwgLWFwcGxlLXN5c3RlbSwgQmxpbmtNYWNTeXN0ZW1Gb250LCAnU2Vn +b2UgVUknLCBSb2JvdG8sIE94eWdlbiwgVWJ1bnR1LCBDYW50YXJlbGwsICdPcGVuIFNhbnMnLCAn +SGVsdmV0aWNhIE5ldWUnLCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDE2cHg7IGZvbnQtc3R5bGU6 +IG5vcm1hbDsgZm9udC12YXJpYW50LWxpZ2F0dXJlczogbm9ybWFsOyBmb250LXZhcmlhbnQtY2Fw +czogbm9ybWFsOyBmb250LXdlaWdodDogNDAwOyBsZXR0ZXItc3BhY2luZzogbm9ybWFsOyB0ZXh0 +LWFsaWduOiBzdGFydDsgdGV4dC1pbmRlbnQ6IDBweDsgdGV4dC10cmFuc2Zvcm06IG5vbmU7IHdv +cmQtc3BhY2luZzogMHB4OyB3aGl0ZS1zcGFjZTogbm9ybWFsOyBiYWNrZ3JvdW5kLWNvbG9yOiBy +Z2IoMjU1LCAyNTUsIDI1NSk7IHRleHQtZGVjb3JhdGlvbi10aGlja25lc3M6IGluaXRpYWw7IHRl +eHQtZGVjb3JhdGlvbi1zdHlsZTogaW5pdGlhbDsgdGV4dC1kZWNvcmF0aW9uLWNvbG9yOiBpbml0 +aWFsOyI+PGxpID48cCAgY2xhc3M9ImRzLW1hcmtkb3duLXBhcmFncmFwaCIgc3R5bGU9Im1hcmdp +bi1yaWdodDogMHB4OyBtYXJnaW4tYm90dG9tOiAwcHg7IG1hcmdpbi1sZWZ0OiAwcHg7IG1hcmdp +bi10b3A6IDBweCAhaW1wb3J0YW50OyI+PHNwYW4gPumUgOWUruWHuuW6k+e6ouWGsiBBcHAg5omr +56CB5Ye65YWl5bqT77ya6I635Y+W6K+m5oOF5LiO5Ye65bqT5pON5L2cPC9zcGFuPjwvcD48L2xp +PjxsaSAgc3R5bGU9Im1hcmdpbi10b3A6IDZweDsiPjxwICBjbGFzcz0iZHMtbWFya2Rvd24tcGFy +YWdyYXBoIiBzdHlsZT0ibWFyZ2luLXJpZ2h0OiAwcHg7IG1hcmdpbi1ib3R0b206IDBweDsgbWFy +Z2luLWxlZnQ6IDBweDsgbWFyZ2luLXRvcDogMHB4ICFpbXBvcnRhbnQ7Ij48c3BhbiA+55Sf5Lqn +6aKG5paZ5re75Yqg6ZmE5Lu25Yqf6IO9PC9zcGFuPjwvcD48L2xpPjwvb2w+PGgzICBzdHlsZT0i +Zm9udDogNzAwIDIwcHggLyAzMHB4IHF1b3RlLWNqay1wYXRjaCwgSW50ZXIsIHN5c3RlbS11aSwg +LWFwcGxlLXN5c3RlbSwgQmxpbmtNYWNTeXN0ZW1Gb250LCAnU2Vnb2UgVUknLCBSb2JvdG8sIE94 +eWdlbiwgVWJ1bnR1LCBDYW50YXJlbGwsICdPcGVuIFNhbnMnLCAnSGVsdmV0aWNhIE5ldWUnLCBz +YW5zLXNlcmlmOyBtYXJnaW46IDMycHggMHB4IDE2cHg7IGNvbG9yOiByZ2IoMTUsIDE3LCAyMSk7 +IGxldHRlci1zcGFjaW5nOiBub3JtYWw7IHRleHQtYWxpZ246IHN0YXJ0OyB0ZXh0LWluZGVudDog +MHB4OyB0ZXh0LXRyYW5zZm9ybTogbm9uZTsgd29yZC1zcGFjaW5nOiAwcHg7IHdoaXRlLXNwYWNl +OiBub3JtYWw7IGJhY2tncm91bmQtY29sb3I6IHJnYigyNTUsIDI1NSwgMjU1KTsgdGV4dC1kZWNv +cmF0aW9uLXRoaWNrbmVzczogaW5pdGlhbDsgdGV4dC1kZWNvcmF0aW9uLXN0eWxlOiBpbml0aWFs +OyB0ZXh0LWRlY29yYXRpb24tY29sb3I6IGluaXRpYWw7Ij48c3BhbiA+5ZGo5LqU77yINeaciDjm +l6XvvIk8L3NwYW4+PC9oMz48cCAgY2xhc3M9ImRzLW1hcmtkb3duLXBhcmFncmFwaCIgc3R5bGU9 +Im1hcmdpbjogMTZweCAwcHg7IGNvbG9yOiByZ2IoMTUsIDE3LCAyMSk7IGZvbnQtZmFtaWx5OiBx +dW90ZS1jamstcGF0Y2gsIEludGVyLCBzeXN0ZW0tdWksIC1hcHBsZS1zeXN0ZW0sIEJsaW5rTWFj +U3lzdGVtRm9udCwgJ1NlZ29lIFVJJywgUm9ib3RvLCBPeHlnZW4sIFVidW50dSwgQ2FudGFyZWxs +LCAnT3BlbiBTYW5zJywgJ0hlbHZldGljYSBOZXVlJywgc2Fucy1zZXJpZjsgZm9udC1zaXplOiAx +NnB4OyBmb250LXN0eWxlOiBub3JtYWw7IGZvbnQtdmFyaWFudC1saWdhdHVyZXM6IG5vcm1hbDsg +Zm9udC12YXJpYW50LWNhcHM6IG5vcm1hbDsgZm9udC13ZWlnaHQ6IDQwMDsgbGV0dGVyLXNwYWNp +bmc6IG5vcm1hbDsgdGV4dC1hbGlnbjogc3RhcnQ7IHRleHQtaW5kZW50OiAwcHg7IHRleHQtdHJh +bnNmb3JtOiBub25lOyB3b3JkLXNwYWNpbmc6IDBweDsgd2hpdGUtc3BhY2U6IG5vcm1hbDsgYmFj +a2dyb3VuZC1jb2xvcjogcmdiKDI1NSwgMjU1LCAyNTUpOyB0ZXh0LWRlY29yYXRpb24tdGhpY2tu +ZXNzOiBpbml0aWFsOyB0ZXh0LWRlY29yYXRpb24tc3R5bGU6IGluaXRpYWw7IHRleHQtZGVjb3Jh +dGlvbi1jb2xvcjogaW5pdGlhbDsiPjxzcGFuICBzdHlsZT0iZm9udC13ZWlnaHQ6IDQwMDsiPuS7 +u+WKoeWQjeensO+8mjwvc3Bhbj48c3BhbiA+PHNwYW4gPiZuYnNwOzwvc3Bhbj7lupPlrZg1LjQu +OemcgOaxguW8gOWPke+8iOe7tOS6keaZuumAoEc177yJPC9zcGFuPjxiciA+PHNwYW4gIHN0eWxl +PSJmb250LXdlaWdodDogNDAwOyI+5omn6KGM5YaF5a6577yaPC9zcGFuPjwvcD48b2wgIHN0YXJ0 +PSIxIiBzdHlsZT0ibWFyZ2luOiAxNnB4IDBweDsgcGFkZGluZy1sZWZ0OiAxOHB4OyBjb2xvcjog +cmdiKDE1LCAxNywgMjEpOyBmb250LWZhbWlseTogcXVvdGUtY2prLXBhdGNoLCBJbnRlciwgc3lz +dGVtLXVpLCAtYXBwbGUtc3lzdGVtLCBCbGlua01hY1N5c3RlbUZvbnQsICdTZWdvZSBVSScsIFJv +Ym90bywgT3h5Z2VuLCBVYnVudHUsIENhbnRhcmVsbCwgJ09wZW4gU2FucycsICdIZWx2ZXRpY2Eg +TmV1ZScsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTZweDsgZm9udC1zdHlsZTogbm9ybWFsOyBm +b250LXZhcmlhbnQtbGlnYXR1cmVzOiBub3JtYWw7IGZvbnQtdmFyaWFudC1jYXBzOiBub3JtYWw7 +IGZvbnQtd2VpZ2h0OiA0MDA7IGxldHRlci1zcGFjaW5nOiBub3JtYWw7IHRleHQtYWxpZ246IHN0 +YXJ0OyB0ZXh0LWluZGVudDogMHB4OyB0ZXh0LXRyYW5zZm9ybTogbm9uZTsgd29yZC1zcGFjaW5n +OiAwcHg7IHdoaXRlLXNwYWNlOiBub3JtYWw7IGJhY2tncm91bmQtY29sb3I6IHJnYigyNTUsIDI1 +NSwgMjU1KTsgdGV4dC1kZWNvcmF0aW9uLXRoaWNrbmVzczogaW5pdGlhbDsgdGV4dC1kZWNvcmF0 +aW9uLXN0eWxlOiBpbml0aWFsOyB0ZXh0LWRlY29yYXRpb24tY29sb3I6IGluaXRpYWw7Ij48bGkg +PjxwICBjbGFzcz0iZHMtbWFya2Rvd24tcGFyYWdyYXBoIiBzdHlsZT0ibWFyZ2luLXJpZ2h0OiAw +cHg7IG1hcmdpbi1ib3R0b206IDBweDsgbWFyZ2luLWxlZnQ6IDBweDsgbWFyZ2luLXRvcDogMHB4 +ICFpbXBvcnRhbnQ7Ij48c3BhbiA+5bqT5a2Y6aKE6K2m5LyY5YyW5byA5Y+R5pa55qGI6K6+6K6h +5LiO6K+E5a6hPC9zcGFuPjwvcD48L2xpPjxsaSAgc3R5bGU9Im1hcmdpbi10b3A6IDZweDsiPjxw +ICBjbGFzcz0iZHMtbWFya2Rvd24tcGFyYWdyYXBoIiBzdHlsZT0ibWFyZ2luLXJpZ2h0OiAwcHg7 +IG1hcmdpbi1ib3R0b206IDBweDsgbWFyZ2luLWxlZnQ6IDBweDsgbWFyZ2luLXRvcDogMHB4ICFp +bXBvcnRhbnQ7Ij48c3BhbiA+5bqT5a2Y6aKE6K2m5Yqf6IO95byA5Y+RPC9zcGFuPjwvcD48L2xp +Pjwvb2w+PGgzICBzdHlsZT0iZm9udDogNzAwIDIwcHggLyAzMHB4IHF1b3RlLWNqay1wYXRjaCwg +SW50ZXIsIHN5c3RlbS11aSwgLWFwcGxlLXN5c3RlbSwgQmxpbmtNYWNTeXN0ZW1Gb250LCAnU2Vn +b2UgVUknLCBSb2JvdG8sIE94eWdlbiwgVWJ1bnR1LCBDYW50YXJlbGwsICdPcGVuIFNhbnMnLCAn +SGVsdmV0aWNhIE5ldWUnLCBzYW5zLXNlcmlmOyBtYXJnaW46IDMycHggMHB4IDE2cHg7IGNvbG9y +OiByZ2IoMTUsIDE3LCAyMSk7IGxldHRlci1zcGFjaW5nOiBub3JtYWw7IHRleHQtYWxpZ246IHN0 +YXJ0OyB0ZXh0LWluZGVudDogMHB4OyB0ZXh0LXRyYW5zZm9ybTogbm9uZTsgd29yZC1zcGFjaW5n +OiAwcHg7IHdoaXRlLXNwYWNlOiBub3JtYWw7IGJhY2tncm91bmQtY29sb3I6IHJnYigyNTUsIDI1 +NSwgMjU1KTsgdGV4dC1kZWNvcmF0aW9uLXRoaWNrbmVzczogaW5pdGlhbDsgdGV4dC1kZWNvcmF0 +aW9uLXN0eWxlOiBpbml0aWFsOyB0ZXh0LWRlY29yYXRpb24tY29sb3I6IGluaXRpYWw7Ij48c3Bh +biA+5ZGo5YWt77yINeaciDnml6XvvIk8L3NwYW4+PC9oMz48cCAgY2xhc3M9ImRzLW1hcmtkb3du +LXBhcmFncmFwaCIgc3R5bGU9Im1hcmdpbjogMTZweCAwcHg7IGNvbG9yOiByZ2IoMTUsIDE3LCAy +MSk7IGZvbnQtZmFtaWx5OiBxdW90ZS1jamstcGF0Y2gsIEludGVyLCBzeXN0ZW0tdWksIC1hcHBs +ZS1zeXN0ZW0sIEJsaW5rTWFjU3lzdGVtRm9udCwgJ1NlZ29lIFVJJywgUm9ib3RvLCBPeHlnZW4s +IFVidW50dSwgQ2FudGFyZWxsLCAnT3BlbiBTYW5zJywgJ0hlbHZldGljYSBOZXVlJywgc2Fucy1z +ZXJpZjsgZm9udC1zaXplOiAxNnB4OyBmb250LXN0eWxlOiBub3JtYWw7IGZvbnQtdmFyaWFudC1s +aWdhdHVyZXM6IG5vcm1hbDsgZm9udC12YXJpYW50LWNhcHM6IG5vcm1hbDsgZm9udC13ZWlnaHQ6 +IDQwMDsgbGV0dGVyLXNwYWNpbmc6IG5vcm1hbDsgdGV4dC1hbGlnbjogc3RhcnQ7IHRleHQtaW5k +ZW50OiAwcHg7IHRleHQtdHJhbnNmb3JtOiBub25lOyB3b3JkLXNwYWNpbmc6IDBweDsgd2hpdGUt +c3BhY2U6IG5vcm1hbDsgYmFja2dyb3VuZC1jb2xvcjogcmdiKDI1NSwgMjU1LCAyNTUpOyB0ZXh0 +LWRlY29yYXRpb24tdGhpY2tuZXNzOiBpbml0aWFsOyB0ZXh0LWRlY29yYXRpb24tc3R5bGU6IGlu +aXRpYWw7IHRleHQtZGVjb3JhdGlvbi1jb2xvcjogaW5pdGlhbDsiPjxzcGFuICBzdHlsZT0iZm9u +dC13ZWlnaHQ6IDQwMDsiPuS7u+WKoeWQjeensO+8mjwvc3Bhbj48c3BhbiA+PHNwYW4gPiZuYnNw +Ozwvc3Bhbj7lupPlrZjnrqHnkIbkuLTml7bmlrDlop7mm7/mjaLpnIDmsYLmorPnkIblkozlvIDl +j5HvvIjnu7TkupHmmbrpgKBHNe+8iTwvc3Bhbj48YnIgPjxzcGFuICBzdHlsZT0iZm9udC13ZWln +aHQ6IDQwMDsiPuaJp+ihjOWGheWuue+8mjwvc3Bhbj48L3A+PG9sICBzdGFydD0iMSIgc3R5bGU9 +Im1hcmdpbjogMTZweCAwcHg7IHBhZGRpbmctbGVmdDogMThweDsgY29sb3I6IHJnYigxNSwgMTcs +IDIxKTsgZm9udC1mYW1pbHk6IHF1b3RlLWNqay1wYXRjaCwgSW50ZXIsIHN5c3RlbS11aSwgLWFw +cGxlLXN5c3RlbSwgQmxpbmtNYWNTeXN0ZW1Gb250LCAnU2Vnb2UgVUknLCBSb2JvdG8sIE94eWdl +biwgVWJ1bnR1LCBDYW50YXJlbGwsICdPcGVuIFNhbnMnLCAnSGVsdmV0aWNhIE5ldWUnLCBzYW5z +LXNlcmlmOyBmb250LXNpemU6IDE2cHg7IGZvbnQtc3R5bGU6IG5vcm1hbDsgZm9udC12YXJpYW50 +LWxpZ2F0dXJlczogbm9ybWFsOyBmb250LXZhcmlhbnQtY2Fwczogbm9ybWFsOyBmb250LXdlaWdo +dDogNDAwOyBsZXR0ZXItc3BhY2luZzogbm9ybWFsOyB0ZXh0LWFsaWduOiBzdGFydDsgdGV4dC1p +bmRlbnQ6IDBweDsgdGV4dC10cmFuc2Zvcm06IG5vbmU7IHdvcmQtc3BhY2luZzogMHB4OyB3aGl0 +ZS1zcGFjZTogbm9ybWFsOyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjU1LCAyNTUsIDI1NSk7IHRl +eHQtZGVjb3JhdGlvbi10aGlja25lc3M6IGluaXRpYWw7IHRleHQtZGVjb3JhdGlvbi1zdHlsZTog +aW5pdGlhbDsgdGV4dC1kZWNvcmF0aW9uLWNvbG9yOiBpbml0aWFsOyI+PGxpID48cCAgY2xhc3M9 +ImRzLW1hcmtkb3duLXBhcmFncmFwaCIgc3R5bGU9Im1hcmdpbi1yaWdodDogMHB4OyBtYXJnaW4t +Ym90dG9tOiAwcHg7IG1hcmdpbi1sZWZ0OiAwcHg7IG1hcmdpbi10b3A6IDBweCAhaW1wb3J0YW50 +OyI+PHNwYW4gPuW6k+WtmOmihOitpuS8mOWMlumcgOaxguW8gOWPkTwvc3Bhbj48L3A+PC9saT48 +bGkgIHN0eWxlPSJtYXJnaW4tdG9wOiA2cHg7Ij48cCAgY2xhc3M9ImRzLW1hcmtkb3duLXBhcmFn +cmFwaCIgc3R5bGU9Im1hcmdpbi1yaWdodDogMHB4OyBtYXJnaW4tYm90dG9tOiAwcHg7IG1hcmdp +bi1sZWZ0OiAwcHg7IG1hcmdpbi10b3A6IDBweCAhaW1wb3J0YW50OyI+PHNwYW4gPuaWsOWinuWK +n+iDveeCueehruiupO+8muetlueVpemFjee9ruaMgeS5heWMluacieaViOW6k+WtmOWFrOW8jzwv +c3Bhbj48L3A+PC9saT48bGkgIHN0eWxlPSJtYXJnaW4tdG9wOiA2cHg7Ij48cCAgY2xhc3M9ImRz +LW1hcmtkb3duLXBhcmFncmFwaCIgc3R5bGU9Im1hcmdpbi1yaWdodDogMHB4OyBtYXJnaW4tYm90 +dG9tOiAwcHg7IG1hcmdpbi1sZWZ0OiAwcHg7IG1hcmdpbi10b3A6IDBweCAhaW1wb3J0YW50OyI+ +PHNwYW4gPuaWsOWinuWKn+iDveeCueehruiupO+8mumHh+i0reacquWIsOi0p+aVsOmHj+S4uzwv +c3Bhbj48L3A+PC9saT48bGkgIHN0eWxlPSJtYXJnaW4tdG9wOiA2cHg7Ij48cCAgY2xhc3M9ImRz +LW1hcmtkb3duLXBhcmFncmFwaCIgc3R5bGU9Im1hcmdpbi1yaWdodDogMHB4OyBtYXJnaW4tYm90 +dG9tOiAwcHg7IG1hcmdpbi1sZWZ0OiAwcHg7IG1hcmdpbi10b3A6IDBweCAhaW1wb3J0YW50OyI+ +PHNwYW4gPue7n+S4gOiuoeeul+acieaViOW6k+WtmDwvc3Bhbj48L3A+PC9saT48bGkgIHN0eWxl +PSJtYXJnaW4tdG9wOiA2cHg7Ij48cCAgY2xhc3M9ImRzLW1hcmtkb3duLXBhcmFncmFwaCIgc3R5 +bGU9Im1hcmdpbi1yaWdodDogMHB4OyBtYXJnaW4tYm90dG9tOiAwcHg7IG1hcmdpbi1sZWZ0OiAw +cHg7IG1hcmdpbi10b3A6IDBweCAhaW1wb3J0YW50OyI+PHNwYW4gPuiHqua1iyAmYW1wOyDovazm +tYs8L3NwYW4+PC9wPjwvbGk+PC9vbD48aHIgIHN0eWxlPSJiYWNrZ3JvdW5kOiBub25lIDAlIDAl +IC8gYXV0byByZXBlYXQgc2Nyb2xsIHBhZGRpbmctYm94IGJvcmRlci1ib3ggcmdiYSgwLCAwLCAw +LCAwLjEpOyBib3JkZXI6IG5vbmU7IGhlaWdodDogMXB4OyBtYXJnaW46IDMycHggMHB4OyBkaXNw +bGF5OiBibG9jazsgZm9udC1mYW1pbHk6IHF1b3RlLWNqay1wYXRjaCwgSW50ZXIsIHN5c3RlbS11 +aSwgLWFwcGxlLXN5c3RlbSwgQmxpbmtNYWNTeXN0ZW1Gb250LCAnU2Vnb2UgVUknLCBSb2JvdG8s +IE94eWdlbiwgVWJ1bnR1LCBDYW50YXJlbGwsICdPcGVuIFNhbnMnLCAnSGVsdmV0aWNhIE5ldWUn +LCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDE2cHg7IGZvbnQtc3R5bGU6IG5vcm1hbDsgZm9udC12 +YXJpYW50LWxpZ2F0dXJlczogbm9ybWFsOyBmb250LXZhcmlhbnQtY2Fwczogbm9ybWFsOyBmb250 +LXdlaWdodDogNDAwOyBsZXR0ZXItc3BhY2luZzogbm9ybWFsOyBvcnBoYW5zOiAyOyB0ZXh0LWFs +aWduOiBzdGFydDsgdGV4dC1pbmRlbnQ6IDBweDsgdGV4dC10cmFuc2Zvcm06IG5vbmU7IHdpZG93 +czogMjsgd29yZC1zcGFjaW5nOiAwcHg7IC13ZWJraXQtdGV4dC1zdHJva2Utd2lkdGg6IDBweDsg +d2hpdGUtc3BhY2U6IG5vcm1hbDsgdGV4dC1kZWNvcmF0aW9uLXRoaWNrbmVzczogaW5pdGlhbDsg +dGV4dC1kZWNvcmF0aW9uLXN0eWxlOiBpbml0aWFsOyB0ZXh0LWRlY29yYXRpb24tY29sb3I6IGlu +aXRpYWw7Ij48aDIgIHN0eWxlPSJmb250OiA3MDAgMjJweCAvIDMycHggcXVvdGUtY2prLXBhdGNo +LCBJbnRlciwgc3lzdGVtLXVpLCAtYXBwbGUtc3lzdGVtLCBCbGlua01hY1N5c3RlbUZvbnQsICdT +ZWdvZSBVSScsIFJvYm90bywgT3h5Z2VuLCBVYnVudHUsIENhbnRhcmVsbCwgJ09wZW4gU2Fucycs +ICdIZWx2ZXRpY2EgTmV1ZScsIHNhbnMtc2VyaWY7IG1hcmdpbjogMzJweCAwcHggMTZweDsgY29s +b3I6IHJnYigxNSwgMTcsIDIxKTsgbGV0dGVyLXNwYWNpbmc6IG5vcm1hbDsgdGV4dC1hbGlnbjog +c3RhcnQ7IHRleHQtaW5kZW50OiAwcHg7IHRleHQtdHJhbnNmb3JtOiBub25lOyB3b3JkLXNwYWNp +bmc6IDBweDsgd2hpdGUtc3BhY2U6IG5vcm1hbDsgYmFja2dyb3VuZC1jb2xvcjogcmdiKDI1NSwg +MjU1LCAyNTUpOyB0ZXh0LWRlY29yYXRpb24tdGhpY2tuZXNzOiBpbml0aWFsOyB0ZXh0LWRlY29y +YXRpb24tc3R5bGU6IGluaXRpYWw7IHRleHQtZGVjb3JhdGlvbi1jb2xvcjogaW5pdGlhbDsiPjxz +cGFuID7lrZjlnKjpl67popg8L3NwYW4+PC9oMj48dWwgIHN0eWxlPSJtYXJnaW46IDE2cHggMHB4 +OyBwYWRkaW5nLWxlZnQ6IDE4cHg7IGNvbG9yOiByZ2IoMTUsIDE3LCAyMSk7IGZvbnQtZmFtaWx5 +OiBxdW90ZS1jamstcGF0Y2gsIEludGVyLCBzeXN0ZW0tdWksIC1hcHBsZS1zeXN0ZW0sIEJsaW5r +TWFjU3lzdGVtRm9udCwgJ1NlZ29lIFVJJywgUm9ib3RvLCBPeHlnZW4sIFVidW50dSwgQ2FudGFy +ZWxsLCAnT3BlbiBTYW5zJywgJ0hlbHZldGljYSBOZXVlJywgc2Fucy1zZXJpZjsgZm9udC1zaXpl +OiAxNnB4OyBmb250LXN0eWxlOiBub3JtYWw7IGZvbnQtdmFyaWFudC1saWdhdHVyZXM6IG5vcm1h +bDsgZm9udC12YXJpYW50LWNhcHM6IG5vcm1hbDsgZm9udC13ZWlnaHQ6IDQwMDsgbGV0dGVyLXNw +YWNpbmc6IG5vcm1hbDsgdGV4dC1hbGlnbjogc3RhcnQ7IHRleHQtaW5kZW50OiAwcHg7IHRleHQt +dHJhbnNmb3JtOiBub25lOyB3b3JkLXNwYWNpbmc6IDBweDsgd2hpdGUtc3BhY2U6IG5vcm1hbDsg +YmFja2dyb3VuZC1jb2xvcjogcmdiKDI1NSwgMjU1LCAyNTUpOyB0ZXh0LWRlY29yYXRpb24tdGhp +Y2tuZXNzOiBpbml0aWFsOyB0ZXh0LWRlY29yYXRpb24tc3R5bGU6IGluaXRpYWw7IHRleHQtZGVj +b3JhdGlvbi1jb2xvcjogaW5pdGlhbDsiPjxsaSA+PHAgIGNsYXNzPSJkcy1tYXJrZG93bi1wYXJh +Z3JhcGgiIHN0eWxlPSJtYXJnaW4tcmlnaHQ6IDBweDsgbWFyZ2luLWJvdHRvbTogMHB4OyBtYXJn +aW4tbGVmdDogMHB4OyBtYXJnaW4tdG9wOiAwcHggIWltcG9ydGFudDsiPjxzcGFuID7ml6A8L3Nw +YW4+PC9wPjwvbGk+PC91bD48ZGl2ID48L2Rpdj48c3BhbiA+PGJyID48L3NwYW4+PC9kaXY+PGRp +diAgc3R5bGU9ImNsZWFyOiBib3RoOyBmb250LWZhbWlseTogVGFob21hLCBBcmlhbCwgU1RIZWl0 +aVNDLUxpZ2h0LCBTaW1TdW47Ij48c3BhbiA+PGJyID48L3NwYW4+PC9kaXY+PGRpdiAgc3R5bGU9 +ImNsZWFyOiBib3RoOyBmb250LWZhbWlseTogVGFob21hLCBBcmlhbCwgU1RIZWl0aVNDLUxpZ2h0 +LCBTaW1TdW47Ij48c3BhbiA+PGJyID48L3NwYW4+PC9kaXY+PGRpdiAgc3R5bGU9ImNsZWFyOiBi +b3RoOyI+PGRpdiAgY2xhc3M9IiBfX2FsaXl1bl9ub2RlX2hhc19jb2xvciIgc3R5bGU9Im1hcmdp +bjogMHB4OyBwYWRkaW5nOiAwcHg7IGJvcmRlcjogMHB4OyBvdXRsaW5lOiAwcHg7IGNvbG9yOiBy +Z2IoMCwgMCwgMCk7IGZvbnQtZmFtaWx5OiBUYWhvbWEsIEFyaWFsLCBTVEhlaXRpLCBTaW1TdW47 +IGZvbnQtc2l6ZTogMTRweDsgZm9udC1zdHlsZTogbm9ybWFsOyBmb250LXZhcmlhbnQtbGlnYXR1 +cmVzOiBub3JtYWw7IGZvbnQtdmFyaWFudC1jYXBzOiBub3JtYWw7IGZvbnQtd2VpZ2h0OiA0MDA7 +IHRleHQtYWxpZ246IHN0YXJ0OyB0ZXh0LWluZGVudDogMHB4OyB0ZXh0LXRyYW5zZm9ybTogbm9u +ZTsgdGV4dC1kZWNvcmF0aW9uLXRoaWNrbmVzczogaW5pdGlhbDsgdGV4dC1kZWNvcmF0aW9uLXN0 +eWxlOiBpbml0aWFsOyB0ZXh0LWRlY29yYXRpb24tY29sb3I6IGluaXRpYWw7IGNsZWFyOiBib3Ro +OyI+PHNwYW4gIGNsYXNzPSIgX19hbGl5dW5fbm9kZV9oYXNfY29sb3IiIHN0eWxlPSJtYXJnaW46 +IDBweDsgcGFkZGluZzogMHB4OyBib3JkZXI6IDBweDsgb3V0bGluZTogMHB4OyBmb250LWZhbWls +eTogJ01pY3Jvc29mdCBZYWhlaSc7IGZvbnQtc2l6ZTogMTNweDsgY29sb3I6IHJnYigxOTEsIDE5 +MSwgMTkxKTsiPkJlc3QgcmVnYXJkcyw8L3NwYW4+PC9kaXY+PGRpdiAgY2xhc3M9IiBfX2FsaXl1 +bl9ub2RlX2hhc19jb2xvciIgc3R5bGU9Im1hcmdpbjogMHB4OyBwYWRkaW5nOiAwcHg7IGJvcmRl +cjogMHB4OyBvdXRsaW5lOiAwcHg7IGNvbG9yOiByZ2IoMCwgMCwgMCk7IGZvbnQtZmFtaWx5OiBU +YWhvbWEsIEFyaWFsLCBTVEhlaXRpLCBTaW1TdW47IGZvbnQtc2l6ZTogMTRweDsgZm9udC1zdHls +ZTogbm9ybWFsOyBmb250LXZhcmlhbnQtbGlnYXR1cmVzOiBub3JtYWw7IGZvbnQtdmFyaWFudC1j +YXBzOiBub3JtYWw7IGZvbnQtd2VpZ2h0OiA0MDA7IHRleHQtYWxpZ246IHN0YXJ0OyB0ZXh0LWlu +ZGVudDogMHB4OyB0ZXh0LXRyYW5zZm9ybTogbm9uZTsgdGV4dC1kZWNvcmF0aW9uLXRoaWNrbmVz +czogaW5pdGlhbDsgdGV4dC1kZWNvcmF0aW9uLXN0eWxlOiBpbml0aWFsOyB0ZXh0LWRlY29yYXRp +b24tY29sb3I6IGluaXRpYWw7IGNsZWFyOiBib3RoOyI+PHNwYW4gIGNsYXNzPSIgX19hbGl5dW5f +bm9kZV9oYXNfY29sb3IiIHN0eWxlPSJtYXJnaW46IDBweDsgcGFkZGluZzogMHB4OyBib3JkZXI6 +IDBweDsgb3V0bGluZTogMHB4OyBmb250LWZhbWlseTogJ01pY3Jvc29mdCBZYWhlaSc7IGZvbnQt +c2l6ZTogMTNweDsgY29sb3I6IHJnYigxOTEsIDE5MSwgMTkxKTsiPuadqOi9qTwvc3Bhbj48L2Rp +dj48ZGl2ICBjbGFzcz0iIF9fYWxpeXVuX25vZGVfaGFzX2NvbG9yIiBzdHlsZT0ibWFyZ2luOiAw +cHg7IHBhZGRpbmc6IDBweDsgYm9yZGVyOiAwcHg7IG91dGxpbmU6IDBweDsgY29sb3I6IHJnYigw +LCAwLCAwKTsgZm9udC1mYW1pbHk6IFRhaG9tYSwgQXJpYWwsIFNUSGVpdGksIFNpbVN1bjsgZm9u +dC1zaXplOiAxNHB4OyBmb250LXN0eWxlOiBub3JtYWw7IGZvbnQtdmFyaWFudC1saWdhdHVyZXM6 +IG5vcm1hbDsgZm9udC12YXJpYW50LWNhcHM6IG5vcm1hbDsgZm9udC13ZWlnaHQ6IDQwMDsgdGV4 +dC1hbGlnbjogc3RhcnQ7IHRleHQtaW5kZW50OiAwcHg7IHRleHQtdHJhbnNmb3JtOiBub25lOyB0 +ZXh0LWRlY29yYXRpb24tdGhpY2tuZXNzOiBpbml0aWFsOyB0ZXh0LWRlY29yYXRpb24tc3R5bGU6 +IGluaXRpYWw7IHRleHQtZGVjb3JhdGlvbi1jb2xvcjogaW5pdGlhbDsgY2xlYXI6IGJvdGg7Ij48 +aW1nICBkYXRhLWFsaW1haWwtaW1nLXByb2Nlc3NlZC1zcW0tZWRpdG9yPSJ0cnVlIiBoZWlnaHQ9 +IjY4IiBzcmM9ImNpZDphNTU5Y2EyYy0yMmY0LTQ3NjQtODNkMi1jYWFiOTc3OWM4YTciIHdpZHRo +PSIzMDAiIHN0eWxlPSJtYXJnaW46IDBweDsgcGFkZGluZzogMHB4OyBib3JkZXI6IDBweDsgb3V0 +bGluZTogMHB4OyB2ZXJ0aWNhbC1hbGlnbjogYm90dG9tOyI+Jm5ic3A7PC9kaXY+PGRpdiAgY2xh +c3M9IiBfX2FsaXl1bl9ub2RlX2hhc19jb2xvciIgc3R5bGU9Im1hcmdpbjogMHB4OyBwYWRkaW5n +OiAwcHg7IGJvcmRlcjogMHB4OyBvdXRsaW5lOiAwcHg7IGNvbG9yOiByZ2IoMCwgMCwgMCk7IGZv +bnQtZmFtaWx5OiBUYWhvbWEsIEFyaWFsLCBTVEhlaXRpLCBTaW1TdW47IGZvbnQtc2l6ZTogMTRw +eDsgZm9udC1zdHlsZTogbm9ybWFsOyBmb250LXZhcmlhbnQtbGlnYXR1cmVzOiBub3JtYWw7IGZv +bnQtdmFyaWFudC1jYXBzOiBub3JtYWw7IGZvbnQtd2VpZ2h0OiA0MDA7IHRleHQtYWxpZ246IHN0 +YXJ0OyB0ZXh0LWluZGVudDogMHB4OyB0ZXh0LXRyYW5zZm9ybTogbm9uZTsgdGV4dC1kZWNvcmF0 +aW9uLXRoaWNrbmVzczogaW5pdGlhbDsgdGV4dC1kZWNvcmF0aW9uLXN0eWxlOiBpbml0aWFsOyB0 +ZXh0LWRlY29yYXRpb24tY29sb3I6IGluaXRpYWw7IGNsZWFyOiBib3RoOyI+PHNwYW4gIGNsYXNz +PSIgX19hbGl5dW5fbm9kZV9oYXNfY29sb3IiIHN0eWxlPSJtYXJnaW46IDBweDsgcGFkZGluZzog +MHB4OyBib3JkZXI6IDBweDsgb3V0bGluZTogMHB4OyBmb250LWZhbWlseTogJ01pY3Jvc29mdCBZ +YWhlaSc7IGNvbG9yOiByZ2IoMTkxLCAxOTEsIDE5MSk7Ij7lnLDlnYDvvJrkuK3lm73Ct+WNl+S6 +rOi9r+S7tuiwt+i9r+S7tuWkp+mBkzEx5Y+36Iqx56We5aSn5Y6mM0Y8L3NwYW4+PC9kaXY+PGRp +diAgY2xhc3M9IiBfX2FsaXl1bl9ub2RlX2hhc19jb2xvciIgc3R5bGU9Im1hcmdpbjogMHB4OyBw +YWRkaW5nOiAwcHg7IGJvcmRlcjogMHB4OyBvdXRsaW5lOiAwcHg7IGNvbG9yOiByZ2IoMCwgMCwg +MCk7IGZvbnQtZmFtaWx5OiBUYWhvbWEsIEFyaWFsLCBTVEhlaXRpLCBTaW1TdW47IGZvbnQtc2l6 +ZTogMTRweDsgZm9udC1zdHlsZTogbm9ybWFsOyBmb250LXZhcmlhbnQtbGlnYXR1cmVzOiBub3Jt +YWw7IGZvbnQtdmFyaWFudC1jYXBzOiBub3JtYWw7IGZvbnQtd2VpZ2h0OiA0MDA7IHRleHQtYWxp +Z246IHN0YXJ0OyB0ZXh0LWluZGVudDogMHB4OyB0ZXh0LXRyYW5zZm9ybTogbm9uZTsgdGV4dC1k +ZWNvcmF0aW9uLXRoaWNrbmVzczogaW5pdGlhbDsgdGV4dC1kZWNvcmF0aW9uLXN0eWxlOiBpbml0 +aWFsOyB0ZXh0LWRlY29yYXRpb24tY29sb3I6IGluaXRpYWw7IGNsZWFyOiBib3RoOyI+PHNwYW4g +IGNsYXNzPSIgX19hbGl5dW5fbm9kZV9oYXNfY29sb3IiIHN0eWxlPSJtYXJnaW46IDBweDsgcGFk +ZGluZzogMHB4OyBib3JkZXI6IDBweDsgb3V0bGluZTogMHB4OyBmb250LWZhbWlseTogJ01pY3Jv +c29mdCBZYWhlaSc7IGNvbG9yOiByZ2IoMTkxLCAxOTEsIDE5MSk7Ij7miYvmnLrvvJoxODcyNjEy +ODQ4OTwvc3Bhbj48L2Rpdj48ZGl2ICBjbGFzcz0iIF9fYWxpeXVuX25vZGVfaGFzX2NvbG9yIiBz +dHlsZT0ibWFyZ2luOiAwcHg7IHBhZGRpbmc6IDBweDsgYm9yZGVyOiAwcHg7IG91dGxpbmU6IDBw +eDsgY29sb3I6IHJnYigwLCAwLCAwKTsgZm9udC1mYW1pbHk6IFRhaG9tYSwgQXJpYWwsIFNUSGVp +dGksIFNpbVN1bjsgZm9udC1zaXplOiAxNHB4OyBmb250LXN0eWxlOiBub3JtYWw7IGZvbnQtdmFy +aWFudC1saWdhdHVyZXM6IG5vcm1hbDsgZm9udC12YXJpYW50LWNhcHM6IG5vcm1hbDsgZm9udC13 +ZWlnaHQ6IDQwMDsgdGV4dC1hbGlnbjogc3RhcnQ7IHRleHQtaW5kZW50OiAwcHg7IHRleHQtdHJh +bnNmb3JtOiBub25lOyB0ZXh0LWRlY29yYXRpb24tdGhpY2tuZXNzOiBpbml0aWFsOyB0ZXh0LWRl +Y29yYXRpb24tc3R5bGU6IGluaXRpYWw7IHRleHQtZGVjb3JhdGlvbi1jb2xvcjogaW5pdGlhbDsg +Y2xlYXI6IGJvdGg7Ij48c3BhbiAgY2xhc3M9IiBfX2FsaXl1bl9ub2RlX2hhc19jb2xvciIgc3R5 +bGU9Im1hcmdpbjogMHB4OyBwYWRkaW5nOiAwcHg7IGJvcmRlcjogMHB4OyBvdXRsaW5lOiAwcHg7 +IGZvbnQtZmFtaWx5OiAnTWljcm9zb2Z0IFlhaGVpJzsgY29sb3I6IHJnYigxOTEsIDE5MSwgMTkx +KTsiPumCrueuse+8mnlhbmd4dWFuQHdpdHNvZnQuY248L3NwYW4+PC9kaXY+PC9kaXY+PHAgIGNs +YXNzPSJtZC1lbmQtYmxvY2sgbWQtcCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGxp +bmUtaGVpZ2h0OiBpbmhlcml0OyBtYXJnaW46IDEycHggMHB4OyB3aGl0ZS1zcGFjZTogcHJlLXdy +YXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsgZm9udC12YXJpYW50LWxpZ2F0dXJlczogbm9ybWFsOyBm +b250LXZhcmlhbnQtY2Fwczogbm9ybWFsOyBsZXR0ZXItc3BhY2luZzogbm9ybWFsOyB0ZXh0LWFs +aWduOiBzdGFydDsgdGV4dC1pbmRlbnQ6IDBweDsgd29yZC1zcGFjaW5nOiAwcHg7IHRleHQtZGVj +b3JhdGlvbi1zdHlsZTogaW5pdGlhbDsgdGV4dC1kZWNvcmF0aW9uLWNvbG9yOiBpbml0aWFsOyI+ +PGJyID48L3A+PC9kaXY+PC9kaXY+PC9ib2R5PjwvaHRtbD48L2Rpdj4= + +--=_mailmaster-6a18e4a4_0_6e5d_=-- + +--=_mailmaster-6a18e4a4_0_1ad4_= +Content-Type: application/octet-stream +Content-Transfer-Encoding: base64 +Content-ID: +Content-Disposition: inline; + filename="=?utf-8?B?57u05ouT56eR5oqALemCruS7tuetvuWQjWxvZ28ucG5n?=" + +iVBORw0KGgoAAAANSUhEUgAAASwAAABECAYAAAA7rQj2AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJ +bWFnZVJlYWR5ccllPAAAA4RpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdp +bj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6 +eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTQ1IDc5LjE2 +MzQ5OSwgMjAxOC8wOC8xMy0xNjo0MDoyMiAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJo +dHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlw +dGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEu +MC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVz +b3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1N +Ok9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDplYjhjYzQwMy1lNzZjLTQ5NDgtODFmOC1kNDIy +MmRkMTdhYjgiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NkVENzExMzg1MzBEMTFFQTg4QjNF +NEJFMUQyRjc1RkIiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NkVENzExMzc1MzBEMTFFQTg4 +QjNFNEJFMUQyRjc1RkIiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTkg +KFdpbmRvd3MpIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6 +ZmNkNTdlM2UtZThjYS05ZjQ2LWEzZTUtMWJlYmE2NjA5Y2FmIiBzdFJlZjpkb2N1bWVudElEPSJh +ZG9iZTpkb2NpZDpwaG90b3Nob3A6MzZkNmNjNTUtNTY3Yi01MTQ2LWEwYWYtMzBlMzEwMTMxNDFk +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 + +--=_mailmaster-6a18e4a4_0_1ad4_=-- diff --git a/media/inbound/2026-05-09_1712_G5开发周报_2026-05-06_--_2026-05-09---8d9d659c-e1fa-4f51-b5d2-ddaac0f40618.eml b/media/inbound/2026-05-09_1712_G5开发周报_2026-05-06_--_2026-05-09---8d9d659c-e1fa-4f51-b5d2-ddaac0f40618.eml new file mode 100644 index 0000000..72e422c --- /dev/null +++ b/media/inbound/2026-05-09_1712_G5开发周报_2026-05-06_--_2026-05-09---8d9d659c-e1fa-4f51-b5d2-ddaac0f40618.eml @@ -0,0 +1,594 @@ +Date: Sat, 9 May 2026 17:12:00 +0800 +From: =?utf-8?B?5p2o6L2p?= +To: =?utf-8?B?5YiY5by6?= +Cc: =?utf-8?B?5ZC0552/5Lic?= , =?utf-8?B?6ZmI5piO?= + , =?utf-8?B?5pu+6I6J?= +Message-ID: +Subject: =?utf-8?B?RzXlvIDlj5HlkajmiqXjgJAyMDI2LTA1LTA2IC0tIDIwMjYtMDUt?= + =?utf-8?B?MDnjgJE=?= +MIME-Version: 1.0 +Content-Type: multipart/related; boundary="=_mailmaster-6a18e4a4_0_1ad4_=" + +--=_mailmaster-6a18e4a4_0_1ad4_= +Content-Type: multipart/alternative; boundary="=_mailmaster-6a18e4a4_0_6e5d_=" + +--=_mailmaster-6a18e4a4_0_6e5d_= +Content-Type: text/plain; charset="UTF-8" +Content-Transfer-Encoding: base64 + +5pys5ZGo5bel5L2c5pGY6KaBCjEuIOW6k+WtmDUuNC4554mI5pys5qC45b+D6ZyA5rGC5byA5Y+R +5LiO5o6o6L+bCgogKiAK5a6M5oiQ5bqT5a2Y6aKE6K2m5LyY5YyW55qE5pa55qGI6K6+6K6h5LiO +6K+E5a6h77yM5bm26L+b5YWl5byA5Y+R44CB6Ieq5rWL5LiO6L2s5rWL6Zi25q61CgogKiAK5a6e +546w6ZSA5ZSu5Ye65bqT57qi5Yay5Yqf6IO977yM5pSv5oyBIEFwcCDmiavnoIHlh7rlhaXlupPk +uK3nmoTojrflj5bor6bmg4XkuI7lh7rlupPmk43kvZwKCiAqIArlrozmiJDnlJ/kuqfpoobmlpnm +t7vliqDpmYTku7blip/og70KCiAqIArnvJblhpnlupPlrZjpnIDmsYLlvIDlj5HmlrnmoYjmj5Dn +pLror43vvIzov5vooYzphY3mlrnpnIDmsYLliIbmnpDnmoTku6PnoIHliIbmnpAKMi4g5Li05pe2 +5paw5aKe6ZyA5rGC5b+r6YCf5ZON5bqU77yINeaciDnml6XvvIkKCiAqIArlrozmiJDlupPlrZjp +ooTorabkvJjljJbpnIDmsYLliankvZnlvIDlj5Hlt6XkvZwKCiAqIArnoa7orqTlubbokL3lnLAz +5Liq6YeN6KaB5Yqf6IO954K577yaCgogKiAK562W55Wl6YWN572u5oyB5LmF5YyW5pyJ5pWI5bqT +5a2Y5YWs5byPCgogKiAK6YeH6LSt5pyq5Yiw6LSn5pWw6YeP5Li76YC76L6RCgogKiAK57uf5LiA +5pyJ5pWI5bqT5a2Y6K6h566X5Y+j5b6ECgogKiAK5a6M5oiQ6Ieq5rWL5LiO6L2s5rWLCuavj+aX +peW3peS9nOaDheWGtQrlkajkuInvvIg15pyINuaXpe+8iQrku7vliqHlkI3np7DvvJog5bqT5a2Y +NS40LjnpnIDmsYLlvIDlj5HvvIjnu7TkupHmmbrpgKBHNe+8iQrmiafooYzlhoXlrrnvvJoKCiAq +IArlupPlrZjpnIDmsYLlvIDlj5HmlrnmoYjmj5DnpLror43nvJblhpkKCiAqIArphY3mlrnpnIDm +sYLliIbmnpDku6PnoIHliIbmnpAK5ZGo5Zub77yINeaciDfml6XvvIkK5Lu75Yqh5ZCN56ew77ya +IOW6k+WtmDUuNC456ZyA5rGC5byA5Y+R77yI57u05LqR5pm66YCgRzXvvIkK5omn6KGM5YaF5a65 +77yaCgogKiAK6ZSA5ZSu5Ye65bqT57qi5YayIEFwcCDmiavnoIHlh7rlhaXlupPvvJrojrflj5bo +r6bmg4XkuI7lh7rlupPmk43kvZwKCiAqIArnlJ/kuqfpoobmlpnmt7vliqDpmYTku7blip/og70K +5ZGo5LqU77yINeaciDjml6XvvIkK5Lu75Yqh5ZCN56ew77yaIOW6k+WtmDUuNC456ZyA5rGC5byA +5Y+R77yI57u05LqR5pm66YCgRzXvvIkK5omn6KGM5YaF5a6577yaCgogKiAK5bqT5a2Y6aKE6K2m +5LyY5YyW5byA5Y+R5pa55qGI6K6+6K6h5LiO6K+E5a6hCgogKiAK5bqT5a2Y6aKE6K2m5Yqf6IO9 +5byA5Y+RCuWRqOWFre+8iDXmnIg55pel77yJCuS7u+WKoeWQjeensO+8miDlupPlrZjnrqHnkIbk +uLTml7bmlrDlop7mm7/mjaLpnIDmsYLmorPnkIblkozlvIDlj5HvvIjnu7TkupHmmbrpgKBHNe+8 +iQrmiafooYzlhoXlrrnvvJoKCiAqIArlupPlrZjpooTorabkvJjljJbpnIDmsYLlvIDlj5EKCiAq +IArmlrDlop7lip/og73ngrnnoa7orqTvvJrnrZbnlaXphY3nva7mjIHkuYXljJbmnInmlYjlupPl +rZjlhazlvI8KCiAqIArmlrDlop7lip/og73ngrnnoa7orqTvvJrph4fotK3mnKrliLDotKfmlbDp +h4/kuLsKCiAqIArnu5/kuIDorqHnrpfmnInmlYjlupPlrZgKCiAqIAroh6rmtYsgJiDovazmtYsK +5a2Y5Zyo6Zeu6aKYCgogKiAK5pegCkJlc3QgcmVnYXJkcywK5p2o6L2pCuWcsOWdgO+8muS4reWb +vcK35Y2X5Lqs6L2v5Lu26LC36L2v5Lu25aSn6YGTMTHlj7foirHnpZ7lpKfljqYzRgrmiYvmnLrv +vJoxODcyNjEyODQ4OQrpgq7nrrHvvJp5YW5neHVhbkB3aXRzb2Z0LmNuCg== + +--=_mailmaster-6a18e4a4_0_6e5d_= +Content-Type: text/html; charset="UTF-8" +Content-Transfer-Encoding: base64 + +PGRpdiBjbGFzcz0iX19hbGl5dW5fZW1haWxfYm9keV9ibG9jayI+PGh0bWwgPjxoZWFkID48L2hl +YWQ+PGJvZHkgPjxkaXYgIHN0eWxlPSJmb250LWZhbWlseTogVGFob21hLCBBcmlhbCwgU1RIZWl0 +aVNDLUxpZ2h0LCBTaW1TdW4iPjxkaXYgIHN0eWxlPSJmb250LWZhbWlseTogVGFob21hLCBBcmlh +bCwgU1RIZWl0aVNDLUxpZ2h0LCBTaW1TdW47IGNsZWFyOiBib3RoOyI+PGRpdiAgc3R5bGU9ImNs +ZWFyOiBib3RoOyBmb250LWZhbWlseTogVGFob21hLCBBcmlhbCwgU1RIZWl0aVNDLUxpZ2h0LCBT +aW1TdW47Ij48c3BhbiA+PC9zcGFuPjxoMiAgc3R5bGU9ImZvbnQ6IDcwMCAyMnB4IC8gMzJweCBx +dW90ZS1jamstcGF0Y2gsIEludGVyLCBzeXN0ZW0tdWksIC1hcHBsZS1zeXN0ZW0sIEJsaW5rTWFj +U3lzdGVtRm9udCwgJ1NlZ29lIFVJJywgUm9ib3RvLCBPeHlnZW4sIFVidW50dSwgQ2FudGFyZWxs +LCAnT3BlbiBTYW5zJywgJ0hlbHZldGljYSBOZXVlJywgc2Fucy1zZXJpZjsgbWFyZ2luOiAzMnB4 +IDBweCAxNnB4OyBjb2xvcjogcmdiKDE1LCAxNywgMjEpOyBsZXR0ZXItc3BhY2luZzogbm9ybWFs +OyB0ZXh0LWFsaWduOiBzdGFydDsgdGV4dC1pbmRlbnQ6IDBweDsgdGV4dC10cmFuc2Zvcm06IG5v +bmU7IHdvcmQtc3BhY2luZzogMHB4OyB3aGl0ZS1zcGFjZTogbm9ybWFsOyBiYWNrZ3JvdW5kLWNv +bG9yOiByZ2IoMjU1LCAyNTUsIDI1NSk7IHRleHQtZGVjb3JhdGlvbi10aGlja25lc3M6IGluaXRp +YWw7IHRleHQtZGVjb3JhdGlvbi1zdHlsZTogaW5pdGlhbDsgdGV4dC1kZWNvcmF0aW9uLWNvbG9y +OiBpbml0aWFsOyI+PHNwYW4gPuacrOWRqOW3peS9nOaRmOimgTwvc3Bhbj48L2gyPjxwICBjbGFz +cz0iZHMtbWFya2Rvd24tcGFyYWdyYXBoIiBzdHlsZT0ibWFyZ2luOiAxNnB4IDBweDsgY29sb3I6 +IHJnYigxNSwgMTcsIDIxKTsgZm9udC1mYW1pbHk6IHF1b3RlLWNqay1wYXRjaCwgSW50ZXIsIHN5 +c3RlbS11aSwgLWFwcGxlLXN5c3RlbSwgQmxpbmtNYWNTeXN0ZW1Gb250LCAnU2Vnb2UgVUknLCBS +b2JvdG8sIE94eWdlbiwgVWJ1bnR1LCBDYW50YXJlbGwsICdPcGVuIFNhbnMnLCAnSGVsdmV0aWNh +IE5ldWUnLCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDE2cHg7IGZvbnQtc3R5bGU6IG5vcm1hbDsg +Zm9udC12YXJpYW50LWxpZ2F0dXJlczogbm9ybWFsOyBmb250LXZhcmlhbnQtY2Fwczogbm9ybWFs +OyBmb250LXdlaWdodDogNDAwOyBsZXR0ZXItc3BhY2luZzogbm9ybWFsOyB0ZXh0LWFsaWduOiBz +dGFydDsgdGV4dC1pbmRlbnQ6IDBweDsgdGV4dC10cmFuc2Zvcm06IG5vbmU7IHdvcmQtc3BhY2lu +ZzogMHB4OyB3aGl0ZS1zcGFjZTogbm9ybWFsOyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjU1LCAy +NTUsIDI1NSk7IHRleHQtZGVjb3JhdGlvbi10aGlja25lc3M6IGluaXRpYWw7IHRleHQtZGVjb3Jh +dGlvbi1zdHlsZTogaW5pdGlhbDsgdGV4dC1kZWNvcmF0aW9uLWNvbG9yOiBpbml0aWFsOyI+PHNw +YW4gIHN0eWxlPSJmb250LXdlaWdodDogNDAwOyI+MS4g5bqT5a2YNS40LjnniYjmnKzmoLjlv4Pp +nIDmsYLlvIDlj5HkuI7mjqjov5s8L3NwYW4+PC9wPjx1bCAgc3R5bGU9Im1hcmdpbjogMTZweCAw +cHg7IHBhZGRpbmctbGVmdDogMThweDsgY29sb3I6IHJnYigxNSwgMTcsIDIxKTsgZm9udC1mYW1p +bHk6IHF1b3RlLWNqay1wYXRjaCwgSW50ZXIsIHN5c3RlbS11aSwgLWFwcGxlLXN5c3RlbSwgQmxp +bmtNYWNTeXN0ZW1Gb250LCAnU2Vnb2UgVUknLCBSb2JvdG8sIE94eWdlbiwgVWJ1bnR1LCBDYW50 +YXJlbGwsICdPcGVuIFNhbnMnLCAnSGVsdmV0aWNhIE5ldWUnLCBzYW5zLXNlcmlmOyBmb250LXNp +emU6IDE2cHg7IGZvbnQtc3R5bGU6IG5vcm1hbDsgZm9udC12YXJpYW50LWxpZ2F0dXJlczogbm9y +bWFsOyBmb250LXZhcmlhbnQtY2Fwczogbm9ybWFsOyBmb250LXdlaWdodDogNDAwOyBsZXR0ZXIt +c3BhY2luZzogbm9ybWFsOyB0ZXh0LWFsaWduOiBzdGFydDsgdGV4dC1pbmRlbnQ6IDBweDsgdGV4 +dC10cmFuc2Zvcm06IG5vbmU7IHdvcmQtc3BhY2luZzogMHB4OyB3aGl0ZS1zcGFjZTogbm9ybWFs +OyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjU1LCAyNTUsIDI1NSk7IHRleHQtZGVjb3JhdGlvbi10 +aGlja25lc3M6IGluaXRpYWw7IHRleHQtZGVjb3JhdGlvbi1zdHlsZTogaW5pdGlhbDsgdGV4dC1k +ZWNvcmF0aW9uLWNvbG9yOiBpbml0aWFsOyI+PGxpID48cCAgY2xhc3M9ImRzLW1hcmtkb3duLXBh +cmFncmFwaCIgc3R5bGU9Im1hcmdpbi1yaWdodDogMHB4OyBtYXJnaW4tYm90dG9tOiAwcHg7IG1h +cmdpbi1sZWZ0OiAwcHg7IG1hcmdpbi10b3A6IDBweCAhaW1wb3J0YW50OyI+PHNwYW4gPuWujOaI +kOW6k+WtmOmihOitpuS8mOWMlueahDwvc3Bhbj48c3BhbiAgc3R5bGU9ImZvbnQtd2VpZ2h0OiA0 +MDA7Ij7mlrnmoYjorr7orqHkuI7or4TlrqE8L3NwYW4+PHNwYW4gPu+8jOW5tui/m+WFpeW8gOWP +keOAgeiHqua1i+S4jui9rOa1i+mYtuautTwvc3Bhbj48L3A+PC9saT48bGkgIHN0eWxlPSJtYXJn +aW4tdG9wOiA2cHg7Ij48cCAgY2xhc3M9ImRzLW1hcmtkb3duLXBhcmFncmFwaCIgc3R5bGU9Im1h +cmdpbi1yaWdodDogMHB4OyBtYXJnaW4tYm90dG9tOiAwcHg7IG1hcmdpbi1sZWZ0OiAwcHg7IG1h +cmdpbi10b3A6IDBweCAhaW1wb3J0YW50OyI+PHNwYW4gPuWunueOsDwvc3Bhbj48c3BhbiAgc3R5 +bGU9ImZvbnQtd2VpZ2h0OiA0MDA7Ij7plIDllK7lh7rlupPnuqLlhrI8L3NwYW4+PHNwYW4gPuWK +n+iDve+8jOaUr+aMgSBBcHAg5omr56CB5Ye65YWl5bqT5Lit55qE6I635Y+W6K+m5oOF5LiO5Ye6 +5bqT5pON5L2cPC9zcGFuPjwvcD48L2xpPjxsaSAgc3R5bGU9Im1hcmdpbi10b3A6IDZweDsiPjxw +ICBjbGFzcz0iZHMtbWFya2Rvd24tcGFyYWdyYXBoIiBzdHlsZT0ibWFyZ2luLXJpZ2h0OiAwcHg7 +IG1hcmdpbi1ib3R0b206IDBweDsgbWFyZ2luLWxlZnQ6IDBweDsgbWFyZ2luLXRvcDogMHB4ICFp +bXBvcnRhbnQ7Ij48c3BhbiA+5a6M5oiQPC9zcGFuPjxzcGFuICBzdHlsZT0iZm9udC13ZWlnaHQ6 +IDQwMDsiPueUn+S6p+mihuaWmea3u+WKoOmZhOS7tjwvc3Bhbj48c3BhbiA+5Yqf6IO9PC9zcGFu +PjwvcD48L2xpPjxsaSAgc3R5bGU9Im1hcmdpbi10b3A6IDZweDsiPjxwICBjbGFzcz0iZHMtbWFy +a2Rvd24tcGFyYWdyYXBoIiBzdHlsZT0ibWFyZ2luLXJpZ2h0OiAwcHg7IG1hcmdpbi1ib3R0b206 +IDBweDsgbWFyZ2luLWxlZnQ6IDBweDsgbWFyZ2luLXRvcDogMHB4ICFpbXBvcnRhbnQ7Ij48c3Bh +biA+57yW5YaZ5bqT5a2Y6ZyA5rGC5byA5Y+R5pa55qGI5o+Q56S66K+N77yM6L+b6KGM6YWN5pa5 +6ZyA5rGC5YiG5p6Q55qE5Luj56CB5YiG5p6QPC9zcGFuPjwvcD48L2xpPjwvdWw+PHAgIGNsYXNz +PSJkcy1tYXJrZG93bi1wYXJhZ3JhcGgiIHN0eWxlPSJtYXJnaW46IDE2cHggMHB4OyBjb2xvcjog +cmdiKDE1LCAxNywgMjEpOyBmb250LWZhbWlseTogcXVvdGUtY2prLXBhdGNoLCBJbnRlciwgc3lz +dGVtLXVpLCAtYXBwbGUtc3lzdGVtLCBCbGlua01hY1N5c3RlbUZvbnQsICdTZWdvZSBVSScsIFJv +Ym90bywgT3h5Z2VuLCBVYnVudHUsIENhbnRhcmVsbCwgJ09wZW4gU2FucycsICdIZWx2ZXRpY2Eg +TmV1ZScsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTZweDsgZm9udC1zdHlsZTogbm9ybWFsOyBm +b250LXZhcmlhbnQtbGlnYXR1cmVzOiBub3JtYWw7IGZvbnQtdmFyaWFudC1jYXBzOiBub3JtYWw7 +IGZvbnQtd2VpZ2h0OiA0MDA7IGxldHRlci1zcGFjaW5nOiBub3JtYWw7IHRleHQtYWxpZ246IHN0 +YXJ0OyB0ZXh0LWluZGVudDogMHB4OyB0ZXh0LXRyYW5zZm9ybTogbm9uZTsgd29yZC1zcGFjaW5n +OiAwcHg7IHdoaXRlLXNwYWNlOiBub3JtYWw7IGJhY2tncm91bmQtY29sb3I6IHJnYigyNTUsIDI1 +NSwgMjU1KTsgdGV4dC1kZWNvcmF0aW9uLXRoaWNrbmVzczogaW5pdGlhbDsgdGV4dC1kZWNvcmF0 +aW9uLXN0eWxlOiBpbml0aWFsOyB0ZXh0LWRlY29yYXRpb24tY29sb3I6IGluaXRpYWw7Ij48c3Bh +biAgc3R5bGU9ImZvbnQtd2VpZ2h0OiA0MDA7Ij4yLiDkuLTml7bmlrDlop7pnIDmsYLlv6vpgJ/l +k43lupQ8L3NwYW4+PHNwYW4gPu+8iDXmnIg55pel77yJPC9zcGFuPjwvcD48dWwgIHN0eWxlPSJt +YXJnaW46IDE2cHggMHB4OyBwYWRkaW5nLWxlZnQ6IDE4cHg7IGNvbG9yOiByZ2IoMTUsIDE3LCAy +MSk7IGZvbnQtZmFtaWx5OiBxdW90ZS1jamstcGF0Y2gsIEludGVyLCBzeXN0ZW0tdWksIC1hcHBs +ZS1zeXN0ZW0sIEJsaW5rTWFjU3lzdGVtRm9udCwgJ1NlZ29lIFVJJywgUm9ib3RvLCBPeHlnZW4s +IFVidW50dSwgQ2FudGFyZWxsLCAnT3BlbiBTYW5zJywgJ0hlbHZldGljYSBOZXVlJywgc2Fucy1z +ZXJpZjsgZm9udC1zaXplOiAxNnB4OyBmb250LXN0eWxlOiBub3JtYWw7IGZvbnQtdmFyaWFudC1s +aWdhdHVyZXM6IG5vcm1hbDsgZm9udC12YXJpYW50LWNhcHM6IG5vcm1hbDsgZm9udC13ZWlnaHQ6 +IDQwMDsgbGV0dGVyLXNwYWNpbmc6IG5vcm1hbDsgdGV4dC1hbGlnbjogc3RhcnQ7IHRleHQtaW5k +ZW50OiAwcHg7IHRleHQtdHJhbnNmb3JtOiBub25lOyB3b3JkLXNwYWNpbmc6IDBweDsgd2hpdGUt +c3BhY2U6IG5vcm1hbDsgYmFja2dyb3VuZC1jb2xvcjogcmdiKDI1NSwgMjU1LCAyNTUpOyB0ZXh0 +LWRlY29yYXRpb24tdGhpY2tuZXNzOiBpbml0aWFsOyB0ZXh0LWRlY29yYXRpb24tc3R5bGU6IGlu +aXRpYWw7IHRleHQtZGVjb3JhdGlvbi1jb2xvcjogaW5pdGlhbDsiPjxsaSA+PHAgIGNsYXNzPSJk +cy1tYXJrZG93bi1wYXJhZ3JhcGgiIHN0eWxlPSJtYXJnaW4tcmlnaHQ6IDBweDsgbWFyZ2luLWJv +dHRvbTogMHB4OyBtYXJnaW4tbGVmdDogMHB4OyBtYXJnaW4tdG9wOiAwcHggIWltcG9ydGFudDsi +PjxzcGFuID7lrozmiJA8L3NwYW4+PHNwYW4gIHN0eWxlPSJmb250LXdlaWdodDogNDAwOyI+5bqT +5a2Y6aKE6K2m5LyY5YyW6ZyA5rGCPC9zcGFuPjxzcGFuID7liankvZnlvIDlj5Hlt6XkvZw8L3Nw +YW4+PC9wPjwvbGk+PGxpICBzdHlsZT0ibWFyZ2luLXRvcDogNnB4OyI+PHAgIGNsYXNzPSJkcy1t +YXJrZG93bi1wYXJhZ3JhcGgiIHN0eWxlPSJtYXJnaW4tcmlnaHQ6IDBweDsgbWFyZ2luLWJvdHRv +bTogOHB4OyBtYXJnaW4tbGVmdDogMHB4OyBtYXJnaW4tdG9wOiAwcHggIWltcG9ydGFudDsiPjxz +cGFuID7noa7orqTlubbokL3lnLAz5Liq6YeN6KaB5Yqf6IO954K577yaPC9zcGFuPjwvcD48dWwg +IHN0eWxlPSJtYXJnaW46IDRweCAwcHggMHB4OyBwYWRkaW5nLWxlZnQ6IDE4cHg7Ij48bGkgPjxw +ICBjbGFzcz0iZHMtbWFya2Rvd24tcGFyYWdyYXBoIiBzdHlsZT0ibWFyZ2luLXJpZ2h0OiAwcHg7 +IG1hcmdpbi1ib3R0b206IDBweDsgbWFyZ2luLWxlZnQ6IDBweDsgbWFyZ2luLXRvcDogMHB4ICFp +bXBvcnRhbnQ7Ij48c3BhbiA+562W55Wl6YWN572u5oyB5LmF5YyW5pyJ5pWI5bqT5a2Y5YWs5byP +PC9zcGFuPjwvcD48L2xpPjxsaSAgc3R5bGU9Im1hcmdpbi10b3A6IDZweDsiPjxwICBjbGFzcz0i +ZHMtbWFya2Rvd24tcGFyYWdyYXBoIiBzdHlsZT0ibWFyZ2luLXJpZ2h0OiAwcHg7IG1hcmdpbi1i +b3R0b206IDBweDsgbWFyZ2luLWxlZnQ6IDBweDsgbWFyZ2luLXRvcDogMHB4ICFpbXBvcnRhbnQ7 +Ij48c3BhbiA+6YeH6LSt5pyq5Yiw6LSn5pWw6YeP5Li76YC76L6RPC9zcGFuPjwvcD48L2xpPjxs +aSAgc3R5bGU9Im1hcmdpbi10b3A6IDZweDsiPjxwICBjbGFzcz0iZHMtbWFya2Rvd24tcGFyYWdy +YXBoIiBzdHlsZT0ibWFyZ2luLXJpZ2h0OiAwcHg7IG1hcmdpbi1ib3R0b206IDBweDsgbWFyZ2lu +LWxlZnQ6IDBweDsgbWFyZ2luLXRvcDogMHB4ICFpbXBvcnRhbnQ7Ij48c3BhbiA+57uf5LiA5pyJ +5pWI5bqT5a2Y6K6h566X5Y+j5b6EPC9zcGFuPjwvcD48L2xpPjwvdWw+PC9saT48bGkgIHN0eWxl +PSJtYXJnaW4tdG9wOiA2cHg7Ij48cCAgY2xhc3M9ImRzLW1hcmtkb3duLXBhcmFncmFwaCIgc3R5 +bGU9Im1hcmdpbi1yaWdodDogMHB4OyBtYXJnaW4tYm90dG9tOiAwcHg7IG1hcmdpbi1sZWZ0OiAw +cHg7IG1hcmdpbi10b3A6IDBweCAhaW1wb3J0YW50OyI+PHNwYW4gPuWujOaIkOiHqua1i+S4jui9 +rOa1izwvc3Bhbj48L3A+PC9saT48L3VsPjxociAgc3R5bGU9ImJhY2tncm91bmQ6IG5vbmUgMCUg +MCUgLyBhdXRvIHJlcGVhdCBzY3JvbGwgcGFkZGluZy1ib3ggYm9yZGVyLWJveCByZ2JhKDAsIDAs +IDAsIDAuMSk7IGJvcmRlcjogbm9uZTsgaGVpZ2h0OiAxcHg7IG1hcmdpbjogMzJweCAwcHg7IGRp +c3BsYXk6IGJsb2NrOyBmb250LWZhbWlseTogcXVvdGUtY2prLXBhdGNoLCBJbnRlciwgc3lzdGVt +LXVpLCAtYXBwbGUtc3lzdGVtLCBCbGlua01hY1N5c3RlbUZvbnQsICdTZWdvZSBVSScsIFJvYm90 +bywgT3h5Z2VuLCBVYnVudHUsIENhbnRhcmVsbCwgJ09wZW4gU2FucycsICdIZWx2ZXRpY2EgTmV1 +ZScsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTZweDsgZm9udC1zdHlsZTogbm9ybWFsOyBmb250 +LXZhcmlhbnQtbGlnYXR1cmVzOiBub3JtYWw7IGZvbnQtdmFyaWFudC1jYXBzOiBub3JtYWw7IGZv +bnQtd2VpZ2h0OiA0MDA7IGxldHRlci1zcGFjaW5nOiBub3JtYWw7IG9ycGhhbnM6IDI7IHRleHQt +YWxpZ246IHN0YXJ0OyB0ZXh0LWluZGVudDogMHB4OyB0ZXh0LXRyYW5zZm9ybTogbm9uZTsgd2lk +b3dzOiAyOyB3b3JkLXNwYWNpbmc6IDBweDsgLXdlYmtpdC10ZXh0LXN0cm9rZS13aWR0aDogMHB4 +OyB3aGl0ZS1zcGFjZTogbm9ybWFsOyB0ZXh0LWRlY29yYXRpb24tdGhpY2tuZXNzOiBpbml0aWFs +OyB0ZXh0LWRlY29yYXRpb24tc3R5bGU6IGluaXRpYWw7IHRleHQtZGVjb3JhdGlvbi1jb2xvcjog +aW5pdGlhbDsiPjxoMiAgc3R5bGU9ImZvbnQ6IDcwMCAyMnB4IC8gMzJweCBxdW90ZS1jamstcGF0 +Y2gsIEludGVyLCBzeXN0ZW0tdWksIC1hcHBsZS1zeXN0ZW0sIEJsaW5rTWFjU3lzdGVtRm9udCwg +J1NlZ29lIFVJJywgUm9ib3RvLCBPeHlnZW4sIFVidW50dSwgQ2FudGFyZWxsLCAnT3BlbiBTYW5z +JywgJ0hlbHZldGljYSBOZXVlJywgc2Fucy1zZXJpZjsgbWFyZ2luOiAzMnB4IDBweCAxNnB4OyBj +b2xvcjogcmdiKDE1LCAxNywgMjEpOyBsZXR0ZXItc3BhY2luZzogbm9ybWFsOyB0ZXh0LWFsaWdu +OiBzdGFydDsgdGV4dC1pbmRlbnQ6IDBweDsgdGV4dC10cmFuc2Zvcm06IG5vbmU7IHdvcmQtc3Bh +Y2luZzogMHB4OyB3aGl0ZS1zcGFjZTogbm9ybWFsOyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjU1 +LCAyNTUsIDI1NSk7IHRleHQtZGVjb3JhdGlvbi10aGlja25lc3M6IGluaXRpYWw7IHRleHQtZGVj +b3JhdGlvbi1zdHlsZTogaW5pdGlhbDsgdGV4dC1kZWNvcmF0aW9uLWNvbG9yOiBpbml0aWFsOyI+ +PHNwYW4gPuavj+aXpeW3peS9nOaDheWGtTwvc3Bhbj48L2gyPjxoMyAgc3R5bGU9ImZvbnQ6IDcw +MCAyMHB4IC8gMzBweCBxdW90ZS1jamstcGF0Y2gsIEludGVyLCBzeXN0ZW0tdWksIC1hcHBsZS1z +eXN0ZW0sIEJsaW5rTWFjU3lzdGVtRm9udCwgJ1NlZ29lIFVJJywgUm9ib3RvLCBPeHlnZW4sIFVi +dW50dSwgQ2FudGFyZWxsLCAnT3BlbiBTYW5zJywgJ0hlbHZldGljYSBOZXVlJywgc2Fucy1zZXJp +ZjsgbWFyZ2luOiAzMnB4IDBweCAxNnB4OyBjb2xvcjogcmdiKDE1LCAxNywgMjEpOyBsZXR0ZXIt +c3BhY2luZzogbm9ybWFsOyB0ZXh0LWFsaWduOiBzdGFydDsgdGV4dC1pbmRlbnQ6IDBweDsgdGV4 +dC10cmFuc2Zvcm06IG5vbmU7IHdvcmQtc3BhY2luZzogMHB4OyB3aGl0ZS1zcGFjZTogbm9ybWFs +OyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjU1LCAyNTUsIDI1NSk7IHRleHQtZGVjb3JhdGlvbi10 +aGlja25lc3M6IGluaXRpYWw7IHRleHQtZGVjb3JhdGlvbi1zdHlsZTogaW5pdGlhbDsgdGV4dC1k +ZWNvcmF0aW9uLWNvbG9yOiBpbml0aWFsOyI+PHNwYW4gPuWRqOS4ie+8iDXmnIg25pel77yJPC9z +cGFuPjwvaDM+PHAgIGNsYXNzPSJkcy1tYXJrZG93bi1wYXJhZ3JhcGgiIHN0eWxlPSJtYXJnaW46 +IDE2cHggMHB4OyBjb2xvcjogcmdiKDE1LCAxNywgMjEpOyBmb250LWZhbWlseTogcXVvdGUtY2pr +LXBhdGNoLCBJbnRlciwgc3lzdGVtLXVpLCAtYXBwbGUtc3lzdGVtLCBCbGlua01hY1N5c3RlbUZv +bnQsICdTZWdvZSBVSScsIFJvYm90bywgT3h5Z2VuLCBVYnVudHUsIENhbnRhcmVsbCwgJ09wZW4g +U2FucycsICdIZWx2ZXRpY2EgTmV1ZScsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTZweDsgZm9u +dC1zdHlsZTogbm9ybWFsOyBmb250LXZhcmlhbnQtbGlnYXR1cmVzOiBub3JtYWw7IGZvbnQtdmFy +aWFudC1jYXBzOiBub3JtYWw7IGZvbnQtd2VpZ2h0OiA0MDA7IGxldHRlci1zcGFjaW5nOiBub3Jt +YWw7IHRleHQtYWxpZ246IHN0YXJ0OyB0ZXh0LWluZGVudDogMHB4OyB0ZXh0LXRyYW5zZm9ybTog +bm9uZTsgd29yZC1zcGFjaW5nOiAwcHg7IHdoaXRlLXNwYWNlOiBub3JtYWw7IGJhY2tncm91bmQt +Y29sb3I6IHJnYigyNTUsIDI1NSwgMjU1KTsgdGV4dC1kZWNvcmF0aW9uLXRoaWNrbmVzczogaW5p +dGlhbDsgdGV4dC1kZWNvcmF0aW9uLXN0eWxlOiBpbml0aWFsOyB0ZXh0LWRlY29yYXRpb24tY29s +b3I6IGluaXRpYWw7Ij48c3BhbiAgc3R5bGU9ImZvbnQtd2VpZ2h0OiA0MDA7Ij7ku7vliqHlkI3n +p7DvvJo8L3NwYW4+PHNwYW4gPjxzcGFuID4mbmJzcDs8L3NwYW4+5bqT5a2YNS40LjnpnIDmsYLl +vIDlj5HvvIjnu7TkupHmmbrpgKBHNe+8iTwvc3Bhbj48YnIgPjxzcGFuICBzdHlsZT0iZm9udC13 +ZWlnaHQ6IDQwMDsiPuaJp+ihjOWGheWuue+8mjwvc3Bhbj48L3A+PG9sICBzdGFydD0iMSIgc3R5 +bGU9Im1hcmdpbjogMTZweCAwcHg7IHBhZGRpbmctbGVmdDogMThweDsgY29sb3I6IHJnYigxNSwg +MTcsIDIxKTsgZm9udC1mYW1pbHk6IHF1b3RlLWNqay1wYXRjaCwgSW50ZXIsIHN5c3RlbS11aSwg +LWFwcGxlLXN5c3RlbSwgQmxpbmtNYWNTeXN0ZW1Gb250LCAnU2Vnb2UgVUknLCBSb2JvdG8sIE94 +eWdlbiwgVWJ1bnR1LCBDYW50YXJlbGwsICdPcGVuIFNhbnMnLCAnSGVsdmV0aWNhIE5ldWUnLCBz +YW5zLXNlcmlmOyBmb250LXNpemU6IDE2cHg7IGZvbnQtc3R5bGU6IG5vcm1hbDsgZm9udC12YXJp +YW50LWxpZ2F0dXJlczogbm9ybWFsOyBmb250LXZhcmlhbnQtY2Fwczogbm9ybWFsOyBmb250LXdl +aWdodDogNDAwOyBsZXR0ZXItc3BhY2luZzogbm9ybWFsOyB0ZXh0LWFsaWduOiBzdGFydDsgdGV4 +dC1pbmRlbnQ6IDBweDsgdGV4dC10cmFuc2Zvcm06IG5vbmU7IHdvcmQtc3BhY2luZzogMHB4OyB3 +aGl0ZS1zcGFjZTogbm9ybWFsOyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjU1LCAyNTUsIDI1NSk7 +IHRleHQtZGVjb3JhdGlvbi10aGlja25lc3M6IGluaXRpYWw7IHRleHQtZGVjb3JhdGlvbi1zdHls +ZTogaW5pdGlhbDsgdGV4dC1kZWNvcmF0aW9uLWNvbG9yOiBpbml0aWFsOyI+PGxpID48cCAgY2xh +c3M9ImRzLW1hcmtkb3duLXBhcmFncmFwaCIgc3R5bGU9Im1hcmdpbi1yaWdodDogMHB4OyBtYXJn +aW4tYm90dG9tOiAwcHg7IG1hcmdpbi1sZWZ0OiAwcHg7IG1hcmdpbi10b3A6IDBweCAhaW1wb3J0 +YW50OyI+PHNwYW4gPuW6k+WtmOmcgOaxguW8gOWPkeaWueahiOaPkOekuuivjee8luWGmTwvc3Bh +bj48L3A+PC9saT48bGkgIHN0eWxlPSJtYXJnaW4tdG9wOiA2cHg7Ij48cCAgY2xhc3M9ImRzLW1h +cmtkb3duLXBhcmFncmFwaCIgc3R5bGU9Im1hcmdpbi1yaWdodDogMHB4OyBtYXJnaW4tYm90dG9t +OiAwcHg7IG1hcmdpbi1sZWZ0OiAwcHg7IG1hcmdpbi10b3A6IDBweCAhaW1wb3J0YW50OyI+PHNw +YW4gPumFjeaWuemcgOaxguWIhuaekOS7o+eggeWIhuaekDwvc3Bhbj48L3A+PC9saT48L29sPjxo +MyAgc3R5bGU9ImZvbnQ6IDcwMCAyMHB4IC8gMzBweCBxdW90ZS1jamstcGF0Y2gsIEludGVyLCBz +eXN0ZW0tdWksIC1hcHBsZS1zeXN0ZW0sIEJsaW5rTWFjU3lzdGVtRm9udCwgJ1NlZ29lIFVJJywg +Um9ib3RvLCBPeHlnZW4sIFVidW50dSwgQ2FudGFyZWxsLCAnT3BlbiBTYW5zJywgJ0hlbHZldGlj +YSBOZXVlJywgc2Fucy1zZXJpZjsgbWFyZ2luOiAzMnB4IDBweCAxNnB4OyBjb2xvcjogcmdiKDE1 +LCAxNywgMjEpOyBsZXR0ZXItc3BhY2luZzogbm9ybWFsOyB0ZXh0LWFsaWduOiBzdGFydDsgdGV4 +dC1pbmRlbnQ6IDBweDsgdGV4dC10cmFuc2Zvcm06IG5vbmU7IHdvcmQtc3BhY2luZzogMHB4OyB3 +aGl0ZS1zcGFjZTogbm9ybWFsOyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjU1LCAyNTUsIDI1NSk7 +IHRleHQtZGVjb3JhdGlvbi10aGlja25lc3M6IGluaXRpYWw7IHRleHQtZGVjb3JhdGlvbi1zdHls +ZTogaW5pdGlhbDsgdGV4dC1kZWNvcmF0aW9uLWNvbG9yOiBpbml0aWFsOyI+PHNwYW4gPuWRqOWb +m++8iDXmnIg35pel77yJPC9zcGFuPjwvaDM+PHAgIGNsYXNzPSJkcy1tYXJrZG93bi1wYXJhZ3Jh +cGgiIHN0eWxlPSJtYXJnaW46IDE2cHggMHB4OyBjb2xvcjogcmdiKDE1LCAxNywgMjEpOyBmb250 +LWZhbWlseTogcXVvdGUtY2prLXBhdGNoLCBJbnRlciwgc3lzdGVtLXVpLCAtYXBwbGUtc3lzdGVt +LCBCbGlua01hY1N5c3RlbUZvbnQsICdTZWdvZSBVSScsIFJvYm90bywgT3h5Z2VuLCBVYnVudHUs +IENhbnRhcmVsbCwgJ09wZW4gU2FucycsICdIZWx2ZXRpY2EgTmV1ZScsIHNhbnMtc2VyaWY7IGZv +bnQtc2l6ZTogMTZweDsgZm9udC1zdHlsZTogbm9ybWFsOyBmb250LXZhcmlhbnQtbGlnYXR1cmVz +OiBub3JtYWw7IGZvbnQtdmFyaWFudC1jYXBzOiBub3JtYWw7IGZvbnQtd2VpZ2h0OiA0MDA7IGxl +dHRlci1zcGFjaW5nOiBub3JtYWw7IHRleHQtYWxpZ246IHN0YXJ0OyB0ZXh0LWluZGVudDogMHB4 +OyB0ZXh0LXRyYW5zZm9ybTogbm9uZTsgd29yZC1zcGFjaW5nOiAwcHg7IHdoaXRlLXNwYWNlOiBu +b3JtYWw7IGJhY2tncm91bmQtY29sb3I6IHJnYigyNTUsIDI1NSwgMjU1KTsgdGV4dC1kZWNvcmF0 +aW9uLXRoaWNrbmVzczogaW5pdGlhbDsgdGV4dC1kZWNvcmF0aW9uLXN0eWxlOiBpbml0aWFsOyB0 +ZXh0LWRlY29yYXRpb24tY29sb3I6IGluaXRpYWw7Ij48c3BhbiAgc3R5bGU9ImZvbnQtd2VpZ2h0 +OiA0MDA7Ij7ku7vliqHlkI3np7DvvJo8L3NwYW4+PHNwYW4gPjxzcGFuID4mbmJzcDs8L3NwYW4+ +5bqT5a2YNS40LjnpnIDmsYLlvIDlj5HvvIjnu7TkupHmmbrpgKBHNe+8iTwvc3Bhbj48YnIgPjxz +cGFuICBzdHlsZT0iZm9udC13ZWlnaHQ6IDQwMDsiPuaJp+ihjOWGheWuue+8mjwvc3Bhbj48L3A+ +PG9sICBzdGFydD0iMSIgc3R5bGU9Im1hcmdpbjogMTZweCAwcHg7IHBhZGRpbmctbGVmdDogMThw +eDsgY29sb3I6IHJnYigxNSwgMTcsIDIxKTsgZm9udC1mYW1pbHk6IHF1b3RlLWNqay1wYXRjaCwg +SW50ZXIsIHN5c3RlbS11aSwgLWFwcGxlLXN5c3RlbSwgQmxpbmtNYWNTeXN0ZW1Gb250LCAnU2Vn +b2UgVUknLCBSb2JvdG8sIE94eWdlbiwgVWJ1bnR1LCBDYW50YXJlbGwsICdPcGVuIFNhbnMnLCAn +SGVsdmV0aWNhIE5ldWUnLCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDE2cHg7IGZvbnQtc3R5bGU6 +IG5vcm1hbDsgZm9udC12YXJpYW50LWxpZ2F0dXJlczogbm9ybWFsOyBmb250LXZhcmlhbnQtY2Fw +czogbm9ybWFsOyBmb250LXdlaWdodDogNDAwOyBsZXR0ZXItc3BhY2luZzogbm9ybWFsOyB0ZXh0 +LWFsaWduOiBzdGFydDsgdGV4dC1pbmRlbnQ6IDBweDsgdGV4dC10cmFuc2Zvcm06IG5vbmU7IHdv +cmQtc3BhY2luZzogMHB4OyB3aGl0ZS1zcGFjZTogbm9ybWFsOyBiYWNrZ3JvdW5kLWNvbG9yOiBy +Z2IoMjU1LCAyNTUsIDI1NSk7IHRleHQtZGVjb3JhdGlvbi10aGlja25lc3M6IGluaXRpYWw7IHRl +eHQtZGVjb3JhdGlvbi1zdHlsZTogaW5pdGlhbDsgdGV4dC1kZWNvcmF0aW9uLWNvbG9yOiBpbml0 +aWFsOyI+PGxpID48cCAgY2xhc3M9ImRzLW1hcmtkb3duLXBhcmFncmFwaCIgc3R5bGU9Im1hcmdp +bi1yaWdodDogMHB4OyBtYXJnaW4tYm90dG9tOiAwcHg7IG1hcmdpbi1sZWZ0OiAwcHg7IG1hcmdp +bi10b3A6IDBweCAhaW1wb3J0YW50OyI+PHNwYW4gPumUgOWUruWHuuW6k+e6ouWGsiBBcHAg5omr +56CB5Ye65YWl5bqT77ya6I635Y+W6K+m5oOF5LiO5Ye65bqT5pON5L2cPC9zcGFuPjwvcD48L2xp +PjxsaSAgc3R5bGU9Im1hcmdpbi10b3A6IDZweDsiPjxwICBjbGFzcz0iZHMtbWFya2Rvd24tcGFy +YWdyYXBoIiBzdHlsZT0ibWFyZ2luLXJpZ2h0OiAwcHg7IG1hcmdpbi1ib3R0b206IDBweDsgbWFy +Z2luLWxlZnQ6IDBweDsgbWFyZ2luLXRvcDogMHB4ICFpbXBvcnRhbnQ7Ij48c3BhbiA+55Sf5Lqn +6aKG5paZ5re75Yqg6ZmE5Lu25Yqf6IO9PC9zcGFuPjwvcD48L2xpPjwvb2w+PGgzICBzdHlsZT0i +Zm9udDogNzAwIDIwcHggLyAzMHB4IHF1b3RlLWNqay1wYXRjaCwgSW50ZXIsIHN5c3RlbS11aSwg +LWFwcGxlLXN5c3RlbSwgQmxpbmtNYWNTeXN0ZW1Gb250LCAnU2Vnb2UgVUknLCBSb2JvdG8sIE94 +eWdlbiwgVWJ1bnR1LCBDYW50YXJlbGwsICdPcGVuIFNhbnMnLCAnSGVsdmV0aWNhIE5ldWUnLCBz +YW5zLXNlcmlmOyBtYXJnaW46IDMycHggMHB4IDE2cHg7IGNvbG9yOiByZ2IoMTUsIDE3LCAyMSk7 +IGxldHRlci1zcGFjaW5nOiBub3JtYWw7IHRleHQtYWxpZ246IHN0YXJ0OyB0ZXh0LWluZGVudDog +MHB4OyB0ZXh0LXRyYW5zZm9ybTogbm9uZTsgd29yZC1zcGFjaW5nOiAwcHg7IHdoaXRlLXNwYWNl +OiBub3JtYWw7IGJhY2tncm91bmQtY29sb3I6IHJnYigyNTUsIDI1NSwgMjU1KTsgdGV4dC1kZWNv +cmF0aW9uLXRoaWNrbmVzczogaW5pdGlhbDsgdGV4dC1kZWNvcmF0aW9uLXN0eWxlOiBpbml0aWFs +OyB0ZXh0LWRlY29yYXRpb24tY29sb3I6IGluaXRpYWw7Ij48c3BhbiA+5ZGo5LqU77yINeaciDjm +l6XvvIk8L3NwYW4+PC9oMz48cCAgY2xhc3M9ImRzLW1hcmtkb3duLXBhcmFncmFwaCIgc3R5bGU9 +Im1hcmdpbjogMTZweCAwcHg7IGNvbG9yOiByZ2IoMTUsIDE3LCAyMSk7IGZvbnQtZmFtaWx5OiBx +dW90ZS1jamstcGF0Y2gsIEludGVyLCBzeXN0ZW0tdWksIC1hcHBsZS1zeXN0ZW0sIEJsaW5rTWFj +U3lzdGVtRm9udCwgJ1NlZ29lIFVJJywgUm9ib3RvLCBPeHlnZW4sIFVidW50dSwgQ2FudGFyZWxs +LCAnT3BlbiBTYW5zJywgJ0hlbHZldGljYSBOZXVlJywgc2Fucy1zZXJpZjsgZm9udC1zaXplOiAx +NnB4OyBmb250LXN0eWxlOiBub3JtYWw7IGZvbnQtdmFyaWFudC1saWdhdHVyZXM6IG5vcm1hbDsg +Zm9udC12YXJpYW50LWNhcHM6IG5vcm1hbDsgZm9udC13ZWlnaHQ6IDQwMDsgbGV0dGVyLXNwYWNp +bmc6IG5vcm1hbDsgdGV4dC1hbGlnbjogc3RhcnQ7IHRleHQtaW5kZW50OiAwcHg7IHRleHQtdHJh +bnNmb3JtOiBub25lOyB3b3JkLXNwYWNpbmc6IDBweDsgd2hpdGUtc3BhY2U6IG5vcm1hbDsgYmFj +a2dyb3VuZC1jb2xvcjogcmdiKDI1NSwgMjU1LCAyNTUpOyB0ZXh0LWRlY29yYXRpb24tdGhpY2tu +ZXNzOiBpbml0aWFsOyB0ZXh0LWRlY29yYXRpb24tc3R5bGU6IGluaXRpYWw7IHRleHQtZGVjb3Jh +dGlvbi1jb2xvcjogaW5pdGlhbDsiPjxzcGFuICBzdHlsZT0iZm9udC13ZWlnaHQ6IDQwMDsiPuS7 +u+WKoeWQjeensO+8mjwvc3Bhbj48c3BhbiA+PHNwYW4gPiZuYnNwOzwvc3Bhbj7lupPlrZg1LjQu +OemcgOaxguW8gOWPke+8iOe7tOS6keaZuumAoEc177yJPC9zcGFuPjxiciA+PHNwYW4gIHN0eWxl +PSJmb250LXdlaWdodDogNDAwOyI+5omn6KGM5YaF5a6577yaPC9zcGFuPjwvcD48b2wgIHN0YXJ0 +PSIxIiBzdHlsZT0ibWFyZ2luOiAxNnB4IDBweDsgcGFkZGluZy1sZWZ0OiAxOHB4OyBjb2xvcjog +cmdiKDE1LCAxNywgMjEpOyBmb250LWZhbWlseTogcXVvdGUtY2prLXBhdGNoLCBJbnRlciwgc3lz +dGVtLXVpLCAtYXBwbGUtc3lzdGVtLCBCbGlua01hY1N5c3RlbUZvbnQsICdTZWdvZSBVSScsIFJv +Ym90bywgT3h5Z2VuLCBVYnVudHUsIENhbnRhcmVsbCwgJ09wZW4gU2FucycsICdIZWx2ZXRpY2Eg +TmV1ZScsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTZweDsgZm9udC1zdHlsZTogbm9ybWFsOyBm +b250LXZhcmlhbnQtbGlnYXR1cmVzOiBub3JtYWw7IGZvbnQtdmFyaWFudC1jYXBzOiBub3JtYWw7 +IGZvbnQtd2VpZ2h0OiA0MDA7IGxldHRlci1zcGFjaW5nOiBub3JtYWw7IHRleHQtYWxpZ246IHN0 +YXJ0OyB0ZXh0LWluZGVudDogMHB4OyB0ZXh0LXRyYW5zZm9ybTogbm9uZTsgd29yZC1zcGFjaW5n +OiAwcHg7IHdoaXRlLXNwYWNlOiBub3JtYWw7IGJhY2tncm91bmQtY29sb3I6IHJnYigyNTUsIDI1 +NSwgMjU1KTsgdGV4dC1kZWNvcmF0aW9uLXRoaWNrbmVzczogaW5pdGlhbDsgdGV4dC1kZWNvcmF0 +aW9uLXN0eWxlOiBpbml0aWFsOyB0ZXh0LWRlY29yYXRpb24tY29sb3I6IGluaXRpYWw7Ij48bGkg +PjxwICBjbGFzcz0iZHMtbWFya2Rvd24tcGFyYWdyYXBoIiBzdHlsZT0ibWFyZ2luLXJpZ2h0OiAw +cHg7IG1hcmdpbi1ib3R0b206IDBweDsgbWFyZ2luLWxlZnQ6IDBweDsgbWFyZ2luLXRvcDogMHB4 +ICFpbXBvcnRhbnQ7Ij48c3BhbiA+5bqT5a2Y6aKE6K2m5LyY5YyW5byA5Y+R5pa55qGI6K6+6K6h +5LiO6K+E5a6hPC9zcGFuPjwvcD48L2xpPjxsaSAgc3R5bGU9Im1hcmdpbi10b3A6IDZweDsiPjxw +ICBjbGFzcz0iZHMtbWFya2Rvd24tcGFyYWdyYXBoIiBzdHlsZT0ibWFyZ2luLXJpZ2h0OiAwcHg7 +IG1hcmdpbi1ib3R0b206IDBweDsgbWFyZ2luLWxlZnQ6IDBweDsgbWFyZ2luLXRvcDogMHB4ICFp +bXBvcnRhbnQ7Ij48c3BhbiA+5bqT5a2Y6aKE6K2m5Yqf6IO95byA5Y+RPC9zcGFuPjwvcD48L2xp +Pjwvb2w+PGgzICBzdHlsZT0iZm9udDogNzAwIDIwcHggLyAzMHB4IHF1b3RlLWNqay1wYXRjaCwg +SW50ZXIsIHN5c3RlbS11aSwgLWFwcGxlLXN5c3RlbSwgQmxpbmtNYWNTeXN0ZW1Gb250LCAnU2Vn +b2UgVUknLCBSb2JvdG8sIE94eWdlbiwgVWJ1bnR1LCBDYW50YXJlbGwsICdPcGVuIFNhbnMnLCAn +SGVsdmV0aWNhIE5ldWUnLCBzYW5zLXNlcmlmOyBtYXJnaW46IDMycHggMHB4IDE2cHg7IGNvbG9y +OiByZ2IoMTUsIDE3LCAyMSk7IGxldHRlci1zcGFjaW5nOiBub3JtYWw7IHRleHQtYWxpZ246IHN0 +YXJ0OyB0ZXh0LWluZGVudDogMHB4OyB0ZXh0LXRyYW5zZm9ybTogbm9uZTsgd29yZC1zcGFjaW5n +OiAwcHg7IHdoaXRlLXNwYWNlOiBub3JtYWw7IGJhY2tncm91bmQtY29sb3I6IHJnYigyNTUsIDI1 +NSwgMjU1KTsgdGV4dC1kZWNvcmF0aW9uLXRoaWNrbmVzczogaW5pdGlhbDsgdGV4dC1kZWNvcmF0 +aW9uLXN0eWxlOiBpbml0aWFsOyB0ZXh0LWRlY29yYXRpb24tY29sb3I6IGluaXRpYWw7Ij48c3Bh +biA+5ZGo5YWt77yINeaciDnml6XvvIk8L3NwYW4+PC9oMz48cCAgY2xhc3M9ImRzLW1hcmtkb3du +LXBhcmFncmFwaCIgc3R5bGU9Im1hcmdpbjogMTZweCAwcHg7IGNvbG9yOiByZ2IoMTUsIDE3LCAy +MSk7IGZvbnQtZmFtaWx5OiBxdW90ZS1jamstcGF0Y2gsIEludGVyLCBzeXN0ZW0tdWksIC1hcHBs +ZS1zeXN0ZW0sIEJsaW5rTWFjU3lzdGVtRm9udCwgJ1NlZ29lIFVJJywgUm9ib3RvLCBPeHlnZW4s +IFVidW50dSwgQ2FudGFyZWxsLCAnT3BlbiBTYW5zJywgJ0hlbHZldGljYSBOZXVlJywgc2Fucy1z +ZXJpZjsgZm9udC1zaXplOiAxNnB4OyBmb250LXN0eWxlOiBub3JtYWw7IGZvbnQtdmFyaWFudC1s +aWdhdHVyZXM6IG5vcm1hbDsgZm9udC12YXJpYW50LWNhcHM6IG5vcm1hbDsgZm9udC13ZWlnaHQ6 +IDQwMDsgbGV0dGVyLXNwYWNpbmc6IG5vcm1hbDsgdGV4dC1hbGlnbjogc3RhcnQ7IHRleHQtaW5k +ZW50OiAwcHg7IHRleHQtdHJhbnNmb3JtOiBub25lOyB3b3JkLXNwYWNpbmc6IDBweDsgd2hpdGUt +c3BhY2U6IG5vcm1hbDsgYmFja2dyb3VuZC1jb2xvcjogcmdiKDI1NSwgMjU1LCAyNTUpOyB0ZXh0 +LWRlY29yYXRpb24tdGhpY2tuZXNzOiBpbml0aWFsOyB0ZXh0LWRlY29yYXRpb24tc3R5bGU6IGlu +aXRpYWw7IHRleHQtZGVjb3JhdGlvbi1jb2xvcjogaW5pdGlhbDsiPjxzcGFuICBzdHlsZT0iZm9u +dC13ZWlnaHQ6IDQwMDsiPuS7u+WKoeWQjeensO+8mjwvc3Bhbj48c3BhbiA+PHNwYW4gPiZuYnNw +Ozwvc3Bhbj7lupPlrZjnrqHnkIbkuLTml7bmlrDlop7mm7/mjaLpnIDmsYLmorPnkIblkozlvIDl +j5HvvIjnu7TkupHmmbrpgKBHNe+8iTwvc3Bhbj48YnIgPjxzcGFuICBzdHlsZT0iZm9udC13ZWln +aHQ6IDQwMDsiPuaJp+ihjOWGheWuue+8mjwvc3Bhbj48L3A+PG9sICBzdGFydD0iMSIgc3R5bGU9 +Im1hcmdpbjogMTZweCAwcHg7IHBhZGRpbmctbGVmdDogMThweDsgY29sb3I6IHJnYigxNSwgMTcs +IDIxKTsgZm9udC1mYW1pbHk6IHF1b3RlLWNqay1wYXRjaCwgSW50ZXIsIHN5c3RlbS11aSwgLWFw +cGxlLXN5c3RlbSwgQmxpbmtNYWNTeXN0ZW1Gb250LCAnU2Vnb2UgVUknLCBSb2JvdG8sIE94eWdl +biwgVWJ1bnR1LCBDYW50YXJlbGwsICdPcGVuIFNhbnMnLCAnSGVsdmV0aWNhIE5ldWUnLCBzYW5z +LXNlcmlmOyBmb250LXNpemU6IDE2cHg7IGZvbnQtc3R5bGU6IG5vcm1hbDsgZm9udC12YXJpYW50 +LWxpZ2F0dXJlczogbm9ybWFsOyBmb250LXZhcmlhbnQtY2Fwczogbm9ybWFsOyBmb250LXdlaWdo +dDogNDAwOyBsZXR0ZXItc3BhY2luZzogbm9ybWFsOyB0ZXh0LWFsaWduOiBzdGFydDsgdGV4dC1p +bmRlbnQ6IDBweDsgdGV4dC10cmFuc2Zvcm06IG5vbmU7IHdvcmQtc3BhY2luZzogMHB4OyB3aGl0 +ZS1zcGFjZTogbm9ybWFsOyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjU1LCAyNTUsIDI1NSk7IHRl +eHQtZGVjb3JhdGlvbi10aGlja25lc3M6IGluaXRpYWw7IHRleHQtZGVjb3JhdGlvbi1zdHlsZTog +aW5pdGlhbDsgdGV4dC1kZWNvcmF0aW9uLWNvbG9yOiBpbml0aWFsOyI+PGxpID48cCAgY2xhc3M9 +ImRzLW1hcmtkb3duLXBhcmFncmFwaCIgc3R5bGU9Im1hcmdpbi1yaWdodDogMHB4OyBtYXJnaW4t +Ym90dG9tOiAwcHg7IG1hcmdpbi1sZWZ0OiAwcHg7IG1hcmdpbi10b3A6IDBweCAhaW1wb3J0YW50 +OyI+PHNwYW4gPuW6k+WtmOmihOitpuS8mOWMlumcgOaxguW8gOWPkTwvc3Bhbj48L3A+PC9saT48 +bGkgIHN0eWxlPSJtYXJnaW4tdG9wOiA2cHg7Ij48cCAgY2xhc3M9ImRzLW1hcmtkb3duLXBhcmFn +cmFwaCIgc3R5bGU9Im1hcmdpbi1yaWdodDogMHB4OyBtYXJnaW4tYm90dG9tOiAwcHg7IG1hcmdp +bi1sZWZ0OiAwcHg7IG1hcmdpbi10b3A6IDBweCAhaW1wb3J0YW50OyI+PHNwYW4gPuaWsOWinuWK +n+iDveeCueehruiupO+8muetlueVpemFjee9ruaMgeS5heWMluacieaViOW6k+WtmOWFrOW8jzwv +c3Bhbj48L3A+PC9saT48bGkgIHN0eWxlPSJtYXJnaW4tdG9wOiA2cHg7Ij48cCAgY2xhc3M9ImRz +LW1hcmtkb3duLXBhcmFncmFwaCIgc3R5bGU9Im1hcmdpbi1yaWdodDogMHB4OyBtYXJnaW4tYm90 +dG9tOiAwcHg7IG1hcmdpbi1sZWZ0OiAwcHg7IG1hcmdpbi10b3A6IDBweCAhaW1wb3J0YW50OyI+ +PHNwYW4gPuaWsOWinuWKn+iDveeCueehruiupO+8mumHh+i0reacquWIsOi0p+aVsOmHj+S4uzwv +c3Bhbj48L3A+PC9saT48bGkgIHN0eWxlPSJtYXJnaW4tdG9wOiA2cHg7Ij48cCAgY2xhc3M9ImRz +LW1hcmtkb3duLXBhcmFncmFwaCIgc3R5bGU9Im1hcmdpbi1yaWdodDogMHB4OyBtYXJnaW4tYm90 +dG9tOiAwcHg7IG1hcmdpbi1sZWZ0OiAwcHg7IG1hcmdpbi10b3A6IDBweCAhaW1wb3J0YW50OyI+ +PHNwYW4gPue7n+S4gOiuoeeul+acieaViOW6k+WtmDwvc3Bhbj48L3A+PC9saT48bGkgIHN0eWxl +PSJtYXJnaW4tdG9wOiA2cHg7Ij48cCAgY2xhc3M9ImRzLW1hcmtkb3duLXBhcmFncmFwaCIgc3R5 +bGU9Im1hcmdpbi1yaWdodDogMHB4OyBtYXJnaW4tYm90dG9tOiAwcHg7IG1hcmdpbi1sZWZ0OiAw +cHg7IG1hcmdpbi10b3A6IDBweCAhaW1wb3J0YW50OyI+PHNwYW4gPuiHqua1iyAmYW1wOyDovazm +tYs8L3NwYW4+PC9wPjwvbGk+PC9vbD48aHIgIHN0eWxlPSJiYWNrZ3JvdW5kOiBub25lIDAlIDAl +IC8gYXV0byByZXBlYXQgc2Nyb2xsIHBhZGRpbmctYm94IGJvcmRlci1ib3ggcmdiYSgwLCAwLCAw +LCAwLjEpOyBib3JkZXI6IG5vbmU7IGhlaWdodDogMXB4OyBtYXJnaW46IDMycHggMHB4OyBkaXNw +bGF5OiBibG9jazsgZm9udC1mYW1pbHk6IHF1b3RlLWNqay1wYXRjaCwgSW50ZXIsIHN5c3RlbS11 +aSwgLWFwcGxlLXN5c3RlbSwgQmxpbmtNYWNTeXN0ZW1Gb250LCAnU2Vnb2UgVUknLCBSb2JvdG8s +IE94eWdlbiwgVWJ1bnR1LCBDYW50YXJlbGwsICdPcGVuIFNhbnMnLCAnSGVsdmV0aWNhIE5ldWUn +LCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDE2cHg7IGZvbnQtc3R5bGU6IG5vcm1hbDsgZm9udC12 +YXJpYW50LWxpZ2F0dXJlczogbm9ybWFsOyBmb250LXZhcmlhbnQtY2Fwczogbm9ybWFsOyBmb250 +LXdlaWdodDogNDAwOyBsZXR0ZXItc3BhY2luZzogbm9ybWFsOyBvcnBoYW5zOiAyOyB0ZXh0LWFs +aWduOiBzdGFydDsgdGV4dC1pbmRlbnQ6IDBweDsgdGV4dC10cmFuc2Zvcm06IG5vbmU7IHdpZG93 +czogMjsgd29yZC1zcGFjaW5nOiAwcHg7IC13ZWJraXQtdGV4dC1zdHJva2Utd2lkdGg6IDBweDsg +d2hpdGUtc3BhY2U6IG5vcm1hbDsgdGV4dC1kZWNvcmF0aW9uLXRoaWNrbmVzczogaW5pdGlhbDsg +dGV4dC1kZWNvcmF0aW9uLXN0eWxlOiBpbml0aWFsOyB0ZXh0LWRlY29yYXRpb24tY29sb3I6IGlu +aXRpYWw7Ij48aDIgIHN0eWxlPSJmb250OiA3MDAgMjJweCAvIDMycHggcXVvdGUtY2prLXBhdGNo +LCBJbnRlciwgc3lzdGVtLXVpLCAtYXBwbGUtc3lzdGVtLCBCbGlua01hY1N5c3RlbUZvbnQsICdT +ZWdvZSBVSScsIFJvYm90bywgT3h5Z2VuLCBVYnVudHUsIENhbnRhcmVsbCwgJ09wZW4gU2Fucycs +ICdIZWx2ZXRpY2EgTmV1ZScsIHNhbnMtc2VyaWY7IG1hcmdpbjogMzJweCAwcHggMTZweDsgY29s +b3I6IHJnYigxNSwgMTcsIDIxKTsgbGV0dGVyLXNwYWNpbmc6IG5vcm1hbDsgdGV4dC1hbGlnbjog +c3RhcnQ7IHRleHQtaW5kZW50OiAwcHg7IHRleHQtdHJhbnNmb3JtOiBub25lOyB3b3JkLXNwYWNp +bmc6IDBweDsgd2hpdGUtc3BhY2U6IG5vcm1hbDsgYmFja2dyb3VuZC1jb2xvcjogcmdiKDI1NSwg +MjU1LCAyNTUpOyB0ZXh0LWRlY29yYXRpb24tdGhpY2tuZXNzOiBpbml0aWFsOyB0ZXh0LWRlY29y +YXRpb24tc3R5bGU6IGluaXRpYWw7IHRleHQtZGVjb3JhdGlvbi1jb2xvcjogaW5pdGlhbDsiPjxz +cGFuID7lrZjlnKjpl67popg8L3NwYW4+PC9oMj48dWwgIHN0eWxlPSJtYXJnaW46IDE2cHggMHB4 +OyBwYWRkaW5nLWxlZnQ6IDE4cHg7IGNvbG9yOiByZ2IoMTUsIDE3LCAyMSk7IGZvbnQtZmFtaWx5 +OiBxdW90ZS1jamstcGF0Y2gsIEludGVyLCBzeXN0ZW0tdWksIC1hcHBsZS1zeXN0ZW0sIEJsaW5r +TWFjU3lzdGVtRm9udCwgJ1NlZ29lIFVJJywgUm9ib3RvLCBPeHlnZW4sIFVidW50dSwgQ2FudGFy +ZWxsLCAnT3BlbiBTYW5zJywgJ0hlbHZldGljYSBOZXVlJywgc2Fucy1zZXJpZjsgZm9udC1zaXpl +OiAxNnB4OyBmb250LXN0eWxlOiBub3JtYWw7IGZvbnQtdmFyaWFudC1saWdhdHVyZXM6IG5vcm1h +bDsgZm9udC12YXJpYW50LWNhcHM6IG5vcm1hbDsgZm9udC13ZWlnaHQ6IDQwMDsgbGV0dGVyLXNw +YWNpbmc6IG5vcm1hbDsgdGV4dC1hbGlnbjogc3RhcnQ7IHRleHQtaW5kZW50OiAwcHg7IHRleHQt +dHJhbnNmb3JtOiBub25lOyB3b3JkLXNwYWNpbmc6IDBweDsgd2hpdGUtc3BhY2U6IG5vcm1hbDsg +YmFja2dyb3VuZC1jb2xvcjogcmdiKDI1NSwgMjU1LCAyNTUpOyB0ZXh0LWRlY29yYXRpb24tdGhp +Y2tuZXNzOiBpbml0aWFsOyB0ZXh0LWRlY29yYXRpb24tc3R5bGU6IGluaXRpYWw7IHRleHQtZGVj +b3JhdGlvbi1jb2xvcjogaW5pdGlhbDsiPjxsaSA+PHAgIGNsYXNzPSJkcy1tYXJrZG93bi1wYXJh +Z3JhcGgiIHN0eWxlPSJtYXJnaW4tcmlnaHQ6IDBweDsgbWFyZ2luLWJvdHRvbTogMHB4OyBtYXJn +aW4tbGVmdDogMHB4OyBtYXJnaW4tdG9wOiAwcHggIWltcG9ydGFudDsiPjxzcGFuID7ml6A8L3Nw +YW4+PC9wPjwvbGk+PC91bD48ZGl2ID48L2Rpdj48c3BhbiA+PGJyID48L3NwYW4+PC9kaXY+PGRp +diAgc3R5bGU9ImNsZWFyOiBib3RoOyBmb250LWZhbWlseTogVGFob21hLCBBcmlhbCwgU1RIZWl0 +aVNDLUxpZ2h0LCBTaW1TdW47Ij48c3BhbiA+PGJyID48L3NwYW4+PC9kaXY+PGRpdiAgc3R5bGU9 +ImNsZWFyOiBib3RoOyBmb250LWZhbWlseTogVGFob21hLCBBcmlhbCwgU1RIZWl0aVNDLUxpZ2h0 +LCBTaW1TdW47Ij48c3BhbiA+PGJyID48L3NwYW4+PC9kaXY+PGRpdiAgc3R5bGU9ImNsZWFyOiBi +b3RoOyI+PGRpdiAgY2xhc3M9IiBfX2FsaXl1bl9ub2RlX2hhc19jb2xvciIgc3R5bGU9Im1hcmdp +bjogMHB4OyBwYWRkaW5nOiAwcHg7IGJvcmRlcjogMHB4OyBvdXRsaW5lOiAwcHg7IGNvbG9yOiBy +Z2IoMCwgMCwgMCk7IGZvbnQtZmFtaWx5OiBUYWhvbWEsIEFyaWFsLCBTVEhlaXRpLCBTaW1TdW47 +IGZvbnQtc2l6ZTogMTRweDsgZm9udC1zdHlsZTogbm9ybWFsOyBmb250LXZhcmlhbnQtbGlnYXR1 +cmVzOiBub3JtYWw7IGZvbnQtdmFyaWFudC1jYXBzOiBub3JtYWw7IGZvbnQtd2VpZ2h0OiA0MDA7 +IHRleHQtYWxpZ246IHN0YXJ0OyB0ZXh0LWluZGVudDogMHB4OyB0ZXh0LXRyYW5zZm9ybTogbm9u +ZTsgdGV4dC1kZWNvcmF0aW9uLXRoaWNrbmVzczogaW5pdGlhbDsgdGV4dC1kZWNvcmF0aW9uLXN0 +eWxlOiBpbml0aWFsOyB0ZXh0LWRlY29yYXRpb24tY29sb3I6IGluaXRpYWw7IGNsZWFyOiBib3Ro +OyI+PHNwYW4gIGNsYXNzPSIgX19hbGl5dW5fbm9kZV9oYXNfY29sb3IiIHN0eWxlPSJtYXJnaW46 +IDBweDsgcGFkZGluZzogMHB4OyBib3JkZXI6IDBweDsgb3V0bGluZTogMHB4OyBmb250LWZhbWls +eTogJ01pY3Jvc29mdCBZYWhlaSc7IGZvbnQtc2l6ZTogMTNweDsgY29sb3I6IHJnYigxOTEsIDE5 +MSwgMTkxKTsiPkJlc3QgcmVnYXJkcyw8L3NwYW4+PC9kaXY+PGRpdiAgY2xhc3M9IiBfX2FsaXl1 +bl9ub2RlX2hhc19jb2xvciIgc3R5bGU9Im1hcmdpbjogMHB4OyBwYWRkaW5nOiAwcHg7IGJvcmRl +cjogMHB4OyBvdXRsaW5lOiAwcHg7IGNvbG9yOiByZ2IoMCwgMCwgMCk7IGZvbnQtZmFtaWx5OiBU +YWhvbWEsIEFyaWFsLCBTVEhlaXRpLCBTaW1TdW47IGZvbnQtc2l6ZTogMTRweDsgZm9udC1zdHls +ZTogbm9ybWFsOyBmb250LXZhcmlhbnQtbGlnYXR1cmVzOiBub3JtYWw7IGZvbnQtdmFyaWFudC1j +YXBzOiBub3JtYWw7IGZvbnQtd2VpZ2h0OiA0MDA7IHRleHQtYWxpZ246IHN0YXJ0OyB0ZXh0LWlu +ZGVudDogMHB4OyB0ZXh0LXRyYW5zZm9ybTogbm9uZTsgdGV4dC1kZWNvcmF0aW9uLXRoaWNrbmVz +czogaW5pdGlhbDsgdGV4dC1kZWNvcmF0aW9uLXN0eWxlOiBpbml0aWFsOyB0ZXh0LWRlY29yYXRp +b24tY29sb3I6IGluaXRpYWw7IGNsZWFyOiBib3RoOyI+PHNwYW4gIGNsYXNzPSIgX19hbGl5dW5f +bm9kZV9oYXNfY29sb3IiIHN0eWxlPSJtYXJnaW46IDBweDsgcGFkZGluZzogMHB4OyBib3JkZXI6 +IDBweDsgb3V0bGluZTogMHB4OyBmb250LWZhbWlseTogJ01pY3Jvc29mdCBZYWhlaSc7IGZvbnQt +c2l6ZTogMTNweDsgY29sb3I6IHJnYigxOTEsIDE5MSwgMTkxKTsiPuadqOi9qTwvc3Bhbj48L2Rp +dj48ZGl2ICBjbGFzcz0iIF9fYWxpeXVuX25vZGVfaGFzX2NvbG9yIiBzdHlsZT0ibWFyZ2luOiAw +cHg7IHBhZGRpbmc6IDBweDsgYm9yZGVyOiAwcHg7IG91dGxpbmU6IDBweDsgY29sb3I6IHJnYigw +LCAwLCAwKTsgZm9udC1mYW1pbHk6IFRhaG9tYSwgQXJpYWwsIFNUSGVpdGksIFNpbVN1bjsgZm9u +dC1zaXplOiAxNHB4OyBmb250LXN0eWxlOiBub3JtYWw7IGZvbnQtdmFyaWFudC1saWdhdHVyZXM6 +IG5vcm1hbDsgZm9udC12YXJpYW50LWNhcHM6IG5vcm1hbDsgZm9udC13ZWlnaHQ6IDQwMDsgdGV4 +dC1hbGlnbjogc3RhcnQ7IHRleHQtaW5kZW50OiAwcHg7IHRleHQtdHJhbnNmb3JtOiBub25lOyB0 +ZXh0LWRlY29yYXRpb24tdGhpY2tuZXNzOiBpbml0aWFsOyB0ZXh0LWRlY29yYXRpb24tc3R5bGU6 +IGluaXRpYWw7IHRleHQtZGVjb3JhdGlvbi1jb2xvcjogaW5pdGlhbDsgY2xlYXI6IGJvdGg7Ij48 +aW1nICBkYXRhLWFsaW1haWwtaW1nLXByb2Nlc3NlZC1zcW0tZWRpdG9yPSJ0cnVlIiBoZWlnaHQ9 +IjY4IiBzcmM9ImNpZDphNTU5Y2EyYy0yMmY0LTQ3NjQtODNkMi1jYWFiOTc3OWM4YTciIHdpZHRo +PSIzMDAiIHN0eWxlPSJtYXJnaW46IDBweDsgcGFkZGluZzogMHB4OyBib3JkZXI6IDBweDsgb3V0 +bGluZTogMHB4OyB2ZXJ0aWNhbC1hbGlnbjogYm90dG9tOyI+Jm5ic3A7PC9kaXY+PGRpdiAgY2xh +c3M9IiBfX2FsaXl1bl9ub2RlX2hhc19jb2xvciIgc3R5bGU9Im1hcmdpbjogMHB4OyBwYWRkaW5n +OiAwcHg7IGJvcmRlcjogMHB4OyBvdXRsaW5lOiAwcHg7IGNvbG9yOiByZ2IoMCwgMCwgMCk7IGZv +bnQtZmFtaWx5OiBUYWhvbWEsIEFyaWFsLCBTVEhlaXRpLCBTaW1TdW47IGZvbnQtc2l6ZTogMTRw +eDsgZm9udC1zdHlsZTogbm9ybWFsOyBmb250LXZhcmlhbnQtbGlnYXR1cmVzOiBub3JtYWw7IGZv +bnQtdmFyaWFudC1jYXBzOiBub3JtYWw7IGZvbnQtd2VpZ2h0OiA0MDA7IHRleHQtYWxpZ246IHN0 +YXJ0OyB0ZXh0LWluZGVudDogMHB4OyB0ZXh0LXRyYW5zZm9ybTogbm9uZTsgdGV4dC1kZWNvcmF0 +aW9uLXRoaWNrbmVzczogaW5pdGlhbDsgdGV4dC1kZWNvcmF0aW9uLXN0eWxlOiBpbml0aWFsOyB0 +ZXh0LWRlY29yYXRpb24tY29sb3I6IGluaXRpYWw7IGNsZWFyOiBib3RoOyI+PHNwYW4gIGNsYXNz +PSIgX19hbGl5dW5fbm9kZV9oYXNfY29sb3IiIHN0eWxlPSJtYXJnaW46IDBweDsgcGFkZGluZzog +MHB4OyBib3JkZXI6IDBweDsgb3V0bGluZTogMHB4OyBmb250LWZhbWlseTogJ01pY3Jvc29mdCBZ +YWhlaSc7IGNvbG9yOiByZ2IoMTkxLCAxOTEsIDE5MSk7Ij7lnLDlnYDvvJrkuK3lm73Ct+WNl+S6 +rOi9r+S7tuiwt+i9r+S7tuWkp+mBkzEx5Y+36Iqx56We5aSn5Y6mM0Y8L3NwYW4+PC9kaXY+PGRp +diAgY2xhc3M9IiBfX2FsaXl1bl9ub2RlX2hhc19jb2xvciIgc3R5bGU9Im1hcmdpbjogMHB4OyBw +YWRkaW5nOiAwcHg7IGJvcmRlcjogMHB4OyBvdXRsaW5lOiAwcHg7IGNvbG9yOiByZ2IoMCwgMCwg +MCk7IGZvbnQtZmFtaWx5OiBUYWhvbWEsIEFyaWFsLCBTVEhlaXRpLCBTaW1TdW47IGZvbnQtc2l6 +ZTogMTRweDsgZm9udC1zdHlsZTogbm9ybWFsOyBmb250LXZhcmlhbnQtbGlnYXR1cmVzOiBub3Jt +YWw7IGZvbnQtdmFyaWFudC1jYXBzOiBub3JtYWw7IGZvbnQtd2VpZ2h0OiA0MDA7IHRleHQtYWxp +Z246IHN0YXJ0OyB0ZXh0LWluZGVudDogMHB4OyB0ZXh0LXRyYW5zZm9ybTogbm9uZTsgdGV4dC1k +ZWNvcmF0aW9uLXRoaWNrbmVzczogaW5pdGlhbDsgdGV4dC1kZWNvcmF0aW9uLXN0eWxlOiBpbml0 +aWFsOyB0ZXh0LWRlY29yYXRpb24tY29sb3I6IGluaXRpYWw7IGNsZWFyOiBib3RoOyI+PHNwYW4g +IGNsYXNzPSIgX19hbGl5dW5fbm9kZV9oYXNfY29sb3IiIHN0eWxlPSJtYXJnaW46IDBweDsgcGFk +ZGluZzogMHB4OyBib3JkZXI6IDBweDsgb3V0bGluZTogMHB4OyBmb250LWZhbWlseTogJ01pY3Jv +c29mdCBZYWhlaSc7IGNvbG9yOiByZ2IoMTkxLCAxOTEsIDE5MSk7Ij7miYvmnLrvvJoxODcyNjEy +ODQ4OTwvc3Bhbj48L2Rpdj48ZGl2ICBjbGFzcz0iIF9fYWxpeXVuX25vZGVfaGFzX2NvbG9yIiBz +dHlsZT0ibWFyZ2luOiAwcHg7IHBhZGRpbmc6IDBweDsgYm9yZGVyOiAwcHg7IG91dGxpbmU6IDBw +eDsgY29sb3I6IHJnYigwLCAwLCAwKTsgZm9udC1mYW1pbHk6IFRhaG9tYSwgQXJpYWwsIFNUSGVp +dGksIFNpbVN1bjsgZm9udC1zaXplOiAxNHB4OyBmb250LXN0eWxlOiBub3JtYWw7IGZvbnQtdmFy +aWFudC1saWdhdHVyZXM6IG5vcm1hbDsgZm9udC12YXJpYW50LWNhcHM6IG5vcm1hbDsgZm9udC13 +ZWlnaHQ6IDQwMDsgdGV4dC1hbGlnbjogc3RhcnQ7IHRleHQtaW5kZW50OiAwcHg7IHRleHQtdHJh +bnNmb3JtOiBub25lOyB0ZXh0LWRlY29yYXRpb24tdGhpY2tuZXNzOiBpbml0aWFsOyB0ZXh0LWRl +Y29yYXRpb24tc3R5bGU6IGluaXRpYWw7IHRleHQtZGVjb3JhdGlvbi1jb2xvcjogaW5pdGlhbDsg +Y2xlYXI6IGJvdGg7Ij48c3BhbiAgY2xhc3M9IiBfX2FsaXl1bl9ub2RlX2hhc19jb2xvciIgc3R5 +bGU9Im1hcmdpbjogMHB4OyBwYWRkaW5nOiAwcHg7IGJvcmRlcjogMHB4OyBvdXRsaW5lOiAwcHg7 +IGZvbnQtZmFtaWx5OiAnTWljcm9zb2Z0IFlhaGVpJzsgY29sb3I6IHJnYigxOTEsIDE5MSwgMTkx +KTsiPumCrueuse+8mnlhbmd4dWFuQHdpdHNvZnQuY248L3NwYW4+PC9kaXY+PC9kaXY+PHAgIGNs +YXNzPSJtZC1lbmQtYmxvY2sgbWQtcCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGxp +bmUtaGVpZ2h0OiBpbmhlcml0OyBtYXJnaW46IDEycHggMHB4OyB3aGl0ZS1zcGFjZTogcHJlLXdy +YXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsgZm9udC12YXJpYW50LWxpZ2F0dXJlczogbm9ybWFsOyBm +b250LXZhcmlhbnQtY2Fwczogbm9ybWFsOyBsZXR0ZXItc3BhY2luZzogbm9ybWFsOyB0ZXh0LWFs +aWduOiBzdGFydDsgdGV4dC1pbmRlbnQ6IDBweDsgd29yZC1zcGFjaW5nOiAwcHg7IHRleHQtZGVj +b3JhdGlvbi1zdHlsZTogaW5pdGlhbDsgdGV4dC1kZWNvcmF0aW9uLWNvbG9yOiBpbml0aWFsOyI+ +PGJyID48L3A+PC9kaXY+PC9kaXY+PC9ib2R5PjwvaHRtbD48L2Rpdj4= + +--=_mailmaster-6a18e4a4_0_6e5d_=-- + +--=_mailmaster-6a18e4a4_0_1ad4_= +Content-Type: application/octet-stream +Content-Transfer-Encoding: base64 +Content-ID: +Content-Disposition: inline; + filename="=?utf-8?B?57u05ouT56eR5oqALemCruS7tuetvuWQjWxvZ28ucG5n?=" + +iVBORw0KGgoAAAANSUhEUgAAASwAAABECAYAAAA7rQj2AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJ +bWFnZVJlYWR5ccllPAAAA4RpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdp +bj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6 +eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTQ1IDc5LjE2 +MzQ5OSwgMjAxOC8wOC8xMy0xNjo0MDoyMiAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJo +dHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlw +dGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEu +MC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVz +b3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1N +Ok9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDplYjhjYzQwMy1lNzZjLTQ5NDgtODFmOC1kNDIy +MmRkMTdhYjgiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NkVENzExMzg1MzBEMTFFQTg4QjNF +NEJFMUQyRjc1RkIiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NkVENzExMzc1MzBEMTFFQTg4 +QjNFNEJFMUQyRjc1RkIiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTkg +KFdpbmRvd3MpIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6 +ZmNkNTdlM2UtZThjYS05ZjQ2LWEzZTUtMWJlYmE2NjA5Y2FmIiBzdFJlZjpkb2N1bWVudElEPSJh +ZG9iZTpkb2NpZDpwaG90b3Nob3A6MzZkNmNjNTUtNTY3Yi01MTQ2LWEwYWYtMzBlMzEwMTMxNDFk +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 + +--=_mailmaster-6a18e4a4_0_1ad4_=-- diff --git a/media/inbound/2026-05-15_1640_2026年第20周工作周报_杨轩---697c6ff6-0e7f-444c-b9f9-dc5fea1b3105.eml b/media/inbound/2026-05-15_1640_2026年第20周工作周报_杨轩---697c6ff6-0e7f-444c-b9f9-dc5fea1b3105.eml new file mode 100644 index 0000000..1e73a4a --- /dev/null +++ b/media/inbound/2026-05-15_1640_2026年第20周工作周报_杨轩---697c6ff6-0e7f-444c-b9f9-dc5fea1b3105.eml @@ -0,0 +1,38 @@ +Date: Fri, 15 May 2026 16:40:43 +0800 +From: yangxuan@witsoft.cn +To: liuqiang@witsoft.cn +Cc: wurd@witsoft.cn, chenm@witsoft.cn, zengli@witsoft.cn +Message-ID: +Subject: =?utf-8?B?MjAyNuW5tOesrDIw5ZGo5bel5L2c5ZGo5oql77yI5p2o6L2p77yJ?= +MIME-Version: 1.0 +Content-Type: text/plain; charset="utf-8" +Content-Transfer-Encoding: base64 + +IyAyMDI25bm056ysMjDlkajlt6XkvZzlkajmiqUKCioq5aeT5ZCN77yaKiog5p2o6L2pCioq5ZGo +5pyf77yaKiogMjAyNi0wNS0xMu+8iOWRqOS6jO+8iX4gMjAyNi0wNS0xNe+8iOWRqOS6lO+8iQoq +Kumhueebru+8mioqIOe7tOS6keaZuumAoCBHNSAtIOW6k+WtmOeuoeeQhgoKLS0tCgojIyDmnKzl +kajlt6XkvZzmkZjopoEKCioqMS4g5bqT5a2YNS40LjnniYjmnKzmtYvor5Xkv67lpI3kuI7niYjm +nKzlj5HluIMqKgoK5a6M5oiQ5bqT5a2Y6aKE6K2m5Yqf6IO955qE5rWL6K+V6aqM6K+B5LiO5Y6G +5Y+y6Zeu6aKY5L+u5aSNCgrlrozmiJDmiqXlup/lhaXlupPlr7nmjqXnlJ/kuqfnvLrpmbfkv67l +pI3kuI7ogZTosIPovazmtYsKCuWujOaIkOeUn+S6p+WFpeW6k+i0qOajgOWkh+azqOiHqua1i+WP +iumXrumimOS/ruWkjQoK5a6M5oiQ55Sf5Lqn6aKG5paZ6ZmE5Lu25Yqf6IO95rWL6K+V6Zeu6aKY +5L+u5aSNCgoqKjIuIOaWsOWinumcgOaxguW8gOWPkSoqCgrmlrDlop7ph4fotK3lhaXlupPmjqXl +j6MKCuaJuemHj+WIoOmZpOWFpeW6k+WNleaNruWSjOWFpeW6k+S9nOS4mu+8iOe6ouWGsuOAgemd +nue6ouWGsu+8ie+8jOS6i+WKoeS4gOiHtOaAp+WkhOeQhgoK5a6M5oiQ5bqT5a2Y54mI5pys5Y+R +5biD5pSv5oyBCgojIyDmr4/ml6Xlt6XkvZzmg4XlhrUKCiMjIyDlkajkuozvvIg15pyIMTLml6Xv +vIkKKirku7vliqHlkI3np7DvvJoqKiDlupPlrZjnrqHnkIbkuLTml7bmlrDlop7mm7/mjaLpnIDm +sYLmorPnkIblkozlvIDlj5HvvIjnu7TkupHmmbrpgKBHNe+8iQoqKuaJp+ihjOWGheWuue+8mioq +CgrlupPlrZjpooTorabljoblj7Lpl67popjkv67lpI0KCuaKpeW6n+WFpeW6k+WvueaOpeeUn+S6 +p+e8uumZt+S/ruWkjQoKIyMjIOWRqOS4ie+8iDXmnIgxM+aXpe+8iQoqKuS7u+WKoeWQjeensO+8 +mioqIOW6k+WtmOa1i+ivlemXrumimOS/ruWkje+8jOeJiOacrOWPkeW4g+S4iue6v+aUr+aSke+8 +iOe7tOS6keaZuumAoEc177yJCioq5omn6KGM5YaF5a6577yaKioKCueUn+S6p+WFpeW6k+mXrumi +mOS/ruWkjQoK5oql5bqf5YWl5bqT6Zeu6aKY5L+u5aSNCgrlupPlrZjpooTorabmtYvor5Xlrozm +iJAKCiMjIyDlkajlm5vvvIg15pyIMTTml6XvvIkKKirku7vliqHlkI3np7DvvJoqKiDlupPlrZjm +tYvor5Xpl67popjkv67lpI3vvIzniYjmnKzlj5HluIPkuIrnur/mlK/mkpHvvIjnu7TkupHmmbrp +gKBHNe+8iQoqKuaJp+ihjOWGheWuue+8mioqCgrlupPlrZjmtYvor5XlrozmiJAKCuW6k+WtmOeJ +iOacrOWPkeW4g+aUr+aMgQoKIyMjIOWRqOS6lO+8iDXmnIgxNeaXpe+8iQoqKuS7u+WKoeWQjeen +sO+8mioqIOW6k+WtmOa1i+ivlemXrumimOS/ruWkje+8jOeJiOacrOWPkeW4g+S4iue6v+aUr+aS +ke+8iOe7tOS6keaZuumAoEc177yJCioq5omn6KGM5YaF5a6577yaKioKCuaWsOWinumHh+i0reWF +peW6k+aOpeWPowoK5om56YeP5Yig6Zmk5YWl5bqT5Y2V5o2u5ZKM5YWl5bqT5L2c5Lia77yI57qi +5Yay44CB6Z2e57qi5Yay77yJ77yM5LqL5Yqh5LiA6Ie05oCnCgojIyDlrZjlnKjpl67popgKCuaX +oAoKLS0tCgoq55Sf5oiQ5pe26Ze077yaMjAyNi0wNS0xNSAxNjozOCo= diff --git a/media/inbound/2026-05-15_1640_2026年第20周工作周报_杨轩---9e8b9b52-9a73-4db1-8ad4-a4ce8729e95a.eml b/media/inbound/2026-05-15_1640_2026年第20周工作周报_杨轩---9e8b9b52-9a73-4db1-8ad4-a4ce8729e95a.eml new file mode 100644 index 0000000..1e73a4a --- /dev/null +++ b/media/inbound/2026-05-15_1640_2026年第20周工作周报_杨轩---9e8b9b52-9a73-4db1-8ad4-a4ce8729e95a.eml @@ -0,0 +1,38 @@ +Date: Fri, 15 May 2026 16:40:43 +0800 +From: yangxuan@witsoft.cn +To: liuqiang@witsoft.cn +Cc: wurd@witsoft.cn, chenm@witsoft.cn, zengli@witsoft.cn +Message-ID: +Subject: =?utf-8?B?MjAyNuW5tOesrDIw5ZGo5bel5L2c5ZGo5oql77yI5p2o6L2p77yJ?= +MIME-Version: 1.0 +Content-Type: text/plain; charset="utf-8" +Content-Transfer-Encoding: base64 + +IyAyMDI25bm056ysMjDlkajlt6XkvZzlkajmiqUKCioq5aeT5ZCN77yaKiog5p2o6L2pCioq5ZGo +5pyf77yaKiogMjAyNi0wNS0xMu+8iOWRqOS6jO+8iX4gMjAyNi0wNS0xNe+8iOWRqOS6lO+8iQoq +Kumhueebru+8mioqIOe7tOS6keaZuumAoCBHNSAtIOW6k+WtmOeuoeeQhgoKLS0tCgojIyDmnKzl +kajlt6XkvZzmkZjopoEKCioqMS4g5bqT5a2YNS40LjnniYjmnKzmtYvor5Xkv67lpI3kuI7niYjm +nKzlj5HluIMqKgoK5a6M5oiQ5bqT5a2Y6aKE6K2m5Yqf6IO955qE5rWL6K+V6aqM6K+B5LiO5Y6G +5Y+y6Zeu6aKY5L+u5aSNCgrlrozmiJDmiqXlup/lhaXlupPlr7nmjqXnlJ/kuqfnvLrpmbfkv67l +pI3kuI7ogZTosIPovazmtYsKCuWujOaIkOeUn+S6p+WFpeW6k+i0qOajgOWkh+azqOiHqua1i+WP +iumXrumimOS/ruWkjQoK5a6M5oiQ55Sf5Lqn6aKG5paZ6ZmE5Lu25Yqf6IO95rWL6K+V6Zeu6aKY +5L+u5aSNCgoqKjIuIOaWsOWinumcgOaxguW8gOWPkSoqCgrmlrDlop7ph4fotK3lhaXlupPmjqXl +j6MKCuaJuemHj+WIoOmZpOWFpeW6k+WNleaNruWSjOWFpeW6k+S9nOS4mu+8iOe6ouWGsuOAgemd +nue6ouWGsu+8ie+8jOS6i+WKoeS4gOiHtOaAp+WkhOeQhgoK5a6M5oiQ5bqT5a2Y54mI5pys5Y+R +5biD5pSv5oyBCgojIyDmr4/ml6Xlt6XkvZzmg4XlhrUKCiMjIyDlkajkuozvvIg15pyIMTLml6Xv +vIkKKirku7vliqHlkI3np7DvvJoqKiDlupPlrZjnrqHnkIbkuLTml7bmlrDlop7mm7/mjaLpnIDm +sYLmorPnkIblkozlvIDlj5HvvIjnu7TkupHmmbrpgKBHNe+8iQoqKuaJp+ihjOWGheWuue+8mioq +CgrlupPlrZjpooTorabljoblj7Lpl67popjkv67lpI0KCuaKpeW6n+WFpeW6k+WvueaOpeeUn+S6 +p+e8uumZt+S/ruWkjQoKIyMjIOWRqOS4ie+8iDXmnIgxM+aXpe+8iQoqKuS7u+WKoeWQjeensO+8 +mioqIOW6k+WtmOa1i+ivlemXrumimOS/ruWkje+8jOeJiOacrOWPkeW4g+S4iue6v+aUr+aSke+8 +iOe7tOS6keaZuumAoEc177yJCioq5omn6KGM5YaF5a6577yaKioKCueUn+S6p+WFpeW6k+mXrumi +mOS/ruWkjQoK5oql5bqf5YWl5bqT6Zeu6aKY5L+u5aSNCgrlupPlrZjpooTorabmtYvor5Xlrozm +iJAKCiMjIyDlkajlm5vvvIg15pyIMTTml6XvvIkKKirku7vliqHlkI3np7DvvJoqKiDlupPlrZjm +tYvor5Xpl67popjkv67lpI3vvIzniYjmnKzlj5HluIPkuIrnur/mlK/mkpHvvIjnu7TkupHmmbrp +gKBHNe+8iQoqKuaJp+ihjOWGheWuue+8mioqCgrlupPlrZjmtYvor5XlrozmiJAKCuW6k+WtmOeJ +iOacrOWPkeW4g+aUr+aMgQoKIyMjIOWRqOS6lO+8iDXmnIgxNeaXpe+8iQoqKuS7u+WKoeWQjeen +sO+8mioqIOW6k+WtmOa1i+ivlemXrumimOS/ruWkje+8jOeJiOacrOWPkeW4g+S4iue6v+aUr+aS +ke+8iOe7tOS6keaZuumAoEc177yJCioq5omn6KGM5YaF5a6577yaKioKCuaWsOWinumHh+i0reWF +peW6k+aOpeWPowoK5om56YeP5Yig6Zmk5YWl5bqT5Y2V5o2u5ZKM5YWl5bqT5L2c5Lia77yI57qi +5Yay44CB6Z2e57qi5Yay77yJ77yM5LqL5Yqh5LiA6Ie05oCnCgojIyDlrZjlnKjpl67popgKCuaX +oAoKLS0tCgoq55Sf5oiQ5pe26Ze077yaMjAyNi0wNS0xNSAxNjozOCo= diff --git a/media/inbound/2026-05-15_1641_2026年第20周工作周报_杨轩---1238cfb5-8d52-407f-922a-1be59d673764.eml b/media/inbound/2026-05-15_1641_2026年第20周工作周报_杨轩---1238cfb5-8d52-407f-922a-1be59d673764.eml new file mode 100644 index 0000000..f57e4af --- /dev/null +++ b/media/inbound/2026-05-15_1641_2026年第20周工作周报_杨轩---1238cfb5-8d52-407f-922a-1be59d673764.eml @@ -0,0 +1,38 @@ +Date: Fri, 15 May 2026 16:41:53 +0800 +From: yangxuan@witsoft.cn +To: liuqiang@witsoft.cn +Cc: wurd@witsoft.cn, chenm@witsoft.cn, zengli@witsoft.cn +Message-ID: <8659c81e-7db7-412b-d0cb-807d93df973a@witsoft.cn> +Subject: =?utf-8?B?MjAyNuW5tOesrDIw5ZGo5bel5L2c5ZGo5oql77yI5p2o6L2p77yJ?= +MIME-Version: 1.0 +Content-Type: text/plain; charset="utf-8" +Content-Transfer-Encoding: base64 + +IyAyMDI25bm056ysMjDlkajlt6XkvZzlkajmiqUKCioq5aeT5ZCN77yaKiog5p2o6L2pCioq5ZGo +5pyf77yaKiogMjAyNi0wNS0xMu+8iOWRqOS6jO+8iX4gMjAyNi0wNS0xNe+8iOWRqOS6lO+8iQoq +Kumhueebru+8mioqIOe7tOS6keaZuumAoCBHNSAtIOW6k+WtmOeuoeeQhgoKLS0tCgojIyDmnKzl +kajlt6XkvZzmkZjopoEKCioqMS4g5bqT5a2YNS40LjnniYjmnKzmtYvor5Xkv67lpI3kuI7niYjm +nKzlj5HluIMqKgoK5a6M5oiQ5bqT5a2Y6aKE6K2m5Yqf6IO955qE5rWL6K+V6aqM6K+B5LiO5Y6G +5Y+y6Zeu6aKY5L+u5aSNCgrlrozmiJDmiqXlup/lhaXlupPlr7nmjqXnlJ/kuqfnvLrpmbfkv67l +pI3kuI7ogZTosIPovazmtYsKCuWujOaIkOeUn+S6p+WFpeW6k+i0qOajgOWkh+azqOiHqua1i+WP +iumXrumimOS/ruWkjQoK5a6M5oiQ55Sf5Lqn6aKG5paZ6ZmE5Lu25Yqf6IO95rWL6K+V6Zeu6aKY +5L+u5aSNCgoqKjIuIOaWsOWinumcgOaxguW8gOWPkSoqCgrmlrDlop7ph4fotK3lhaXlupPmjqXl +j6MKCuaJuemHj+WIoOmZpOWFpeW6k+WNleaNruWSjOWFpeW6k+S9nOS4mu+8iOe6ouWGsuOAgemd +nue6ouWGsu+8ie+8jOS6i+WKoeS4gOiHtOaAp+WkhOeQhgoK5a6M5oiQ5bqT5a2Y54mI5pys5Y+R +5biD5pSv5oyBCgojIyDmr4/ml6Xlt6XkvZzmg4XlhrUKCiMjIyDlkajkuozvvIg15pyIMTLml6Xv +vIkKKirku7vliqHlkI3np7DvvJoqKiDlupPlrZjnrqHnkIbkuLTml7bmlrDlop7mm7/mjaLpnIDm +sYLmorPnkIblkozlvIDlj5HvvIjnu7TkupHmmbrpgKBHNe+8iQoqKuaJp+ihjOWGheWuue+8mioq +CgrlupPlrZjpooTorabljoblj7Lpl67popjkv67lpI0KCuaKpeW6n+WFpeW6k+WvueaOpeeUn+S6 +p+e8uumZt+S/ruWkjQoKIyMjIOWRqOS4ie+8iDXmnIgxM+aXpe+8iQoqKuS7u+WKoeWQjeensO+8 +mioqIOW6k+WtmOa1i+ivlemXrumimOS/ruWkje+8jOeJiOacrOWPkeW4g+S4iue6v+aUr+aSke+8 +iOe7tOS6keaZuumAoEc177yJCioq5omn6KGM5YaF5a6577yaKioKCueUn+S6p+WFpeW6k+mXrumi +mOS/ruWkjQoK5oql5bqf5YWl5bqT6Zeu6aKY5L+u5aSNCgrlupPlrZjpooTorabmtYvor5Xlrozm +iJAKCiMjIyDlkajlm5vvvIg15pyIMTTml6XvvIkKKirku7vliqHlkI3np7DvvJoqKiDlupPlrZjm +tYvor5Xpl67popjkv67lpI3vvIzniYjmnKzlj5HluIPkuIrnur/mlK/mkpHvvIjnu7TkupHmmbrp +gKBHNe+8iQoqKuaJp+ihjOWGheWuue+8mioqCgrlupPlrZjmtYvor5XlrozmiJAKCuW6k+WtmOeJ +iOacrOWPkeW4g+aUr+aMgQoKIyMjIOWRqOS6lO+8iDXmnIgxNeaXpe+8iQoqKuS7u+WKoeWQjeen +sO+8mioqIOW6k+WtmOa1i+ivlemXrumimOS/ruWkje+8jOeJiOacrOWPkeW4g+S4iue6v+aUr+aS +ke+8iOe7tOS6keaZuumAoEc177yJCioq5omn6KGM5YaF5a6577yaKioKCuaWsOWinumHh+i0reWF +peW6k+aOpeWPowoK5om56YeP5Yig6Zmk5YWl5bqT5Y2V5o2u5ZKM5YWl5bqT5L2c5Lia77yI57qi +5Yay44CB6Z2e57qi5Yay77yJ77yM5LqL5Yqh5LiA6Ie05oCnCgojIyDlrZjlnKjpl67popgKCuaX +oAoKLS0tCgoq55Sf5oiQ5pe26Ze077yaMjAyNi0wNS0xNSAxNjozOCo= diff --git a/media/inbound/2026-05-15_1641_2026年第20周工作周报_杨轩---c184c1f1-9e60-4100-852d-5b0b03d0bdd1.eml b/media/inbound/2026-05-15_1641_2026年第20周工作周报_杨轩---c184c1f1-9e60-4100-852d-5b0b03d0bdd1.eml new file mode 100644 index 0000000..f57e4af --- /dev/null +++ b/media/inbound/2026-05-15_1641_2026年第20周工作周报_杨轩---c184c1f1-9e60-4100-852d-5b0b03d0bdd1.eml @@ -0,0 +1,38 @@ +Date: Fri, 15 May 2026 16:41:53 +0800 +From: yangxuan@witsoft.cn +To: liuqiang@witsoft.cn +Cc: wurd@witsoft.cn, chenm@witsoft.cn, zengli@witsoft.cn +Message-ID: <8659c81e-7db7-412b-d0cb-807d93df973a@witsoft.cn> +Subject: =?utf-8?B?MjAyNuW5tOesrDIw5ZGo5bel5L2c5ZGo5oql77yI5p2o6L2p77yJ?= +MIME-Version: 1.0 +Content-Type: text/plain; charset="utf-8" +Content-Transfer-Encoding: base64 + +IyAyMDI25bm056ysMjDlkajlt6XkvZzlkajmiqUKCioq5aeT5ZCN77yaKiog5p2o6L2pCioq5ZGo +5pyf77yaKiogMjAyNi0wNS0xMu+8iOWRqOS6jO+8iX4gMjAyNi0wNS0xNe+8iOWRqOS6lO+8iQoq +Kumhueebru+8mioqIOe7tOS6keaZuumAoCBHNSAtIOW6k+WtmOeuoeeQhgoKLS0tCgojIyDmnKzl +kajlt6XkvZzmkZjopoEKCioqMS4g5bqT5a2YNS40LjnniYjmnKzmtYvor5Xkv67lpI3kuI7niYjm +nKzlj5HluIMqKgoK5a6M5oiQ5bqT5a2Y6aKE6K2m5Yqf6IO955qE5rWL6K+V6aqM6K+B5LiO5Y6G +5Y+y6Zeu6aKY5L+u5aSNCgrlrozmiJDmiqXlup/lhaXlupPlr7nmjqXnlJ/kuqfnvLrpmbfkv67l +pI3kuI7ogZTosIPovazmtYsKCuWujOaIkOeUn+S6p+WFpeW6k+i0qOajgOWkh+azqOiHqua1i+WP +iumXrumimOS/ruWkjQoK5a6M5oiQ55Sf5Lqn6aKG5paZ6ZmE5Lu25Yqf6IO95rWL6K+V6Zeu6aKY +5L+u5aSNCgoqKjIuIOaWsOWinumcgOaxguW8gOWPkSoqCgrmlrDlop7ph4fotK3lhaXlupPmjqXl +j6MKCuaJuemHj+WIoOmZpOWFpeW6k+WNleaNruWSjOWFpeW6k+S9nOS4mu+8iOe6ouWGsuOAgemd +nue6ouWGsu+8ie+8jOS6i+WKoeS4gOiHtOaAp+WkhOeQhgoK5a6M5oiQ5bqT5a2Y54mI5pys5Y+R +5biD5pSv5oyBCgojIyDmr4/ml6Xlt6XkvZzmg4XlhrUKCiMjIyDlkajkuozvvIg15pyIMTLml6Xv +vIkKKirku7vliqHlkI3np7DvvJoqKiDlupPlrZjnrqHnkIbkuLTml7bmlrDlop7mm7/mjaLpnIDm +sYLmorPnkIblkozlvIDlj5HvvIjnu7TkupHmmbrpgKBHNe+8iQoqKuaJp+ihjOWGheWuue+8mioq +CgrlupPlrZjpooTorabljoblj7Lpl67popjkv67lpI0KCuaKpeW6n+WFpeW6k+WvueaOpeeUn+S6 +p+e8uumZt+S/ruWkjQoKIyMjIOWRqOS4ie+8iDXmnIgxM+aXpe+8iQoqKuS7u+WKoeWQjeensO+8 +mioqIOW6k+WtmOa1i+ivlemXrumimOS/ruWkje+8jOeJiOacrOWPkeW4g+S4iue6v+aUr+aSke+8 +iOe7tOS6keaZuumAoEc177yJCioq5omn6KGM5YaF5a6577yaKioKCueUn+S6p+WFpeW6k+mXrumi +mOS/ruWkjQoK5oql5bqf5YWl5bqT6Zeu6aKY5L+u5aSNCgrlupPlrZjpooTorabmtYvor5Xlrozm +iJAKCiMjIyDlkajlm5vvvIg15pyIMTTml6XvvIkKKirku7vliqHlkI3np7DvvJoqKiDlupPlrZjm +tYvor5Xpl67popjkv67lpI3vvIzniYjmnKzlj5HluIPkuIrnur/mlK/mkpHvvIjnu7TkupHmmbrp +gKBHNe+8iQoqKuaJp+ihjOWGheWuue+8mioqCgrlupPlrZjmtYvor5XlrozmiJAKCuW6k+WtmOeJ +iOacrOWPkeW4g+aUr+aMgQoKIyMjIOWRqOS6lO+8iDXmnIgxNeaXpe+8iQoqKuS7u+WKoeWQjeen +sO+8mioqIOW6k+WtmOa1i+ivlemXrumimOS/ruWkje+8jOeJiOacrOWPkeW4g+S4iue6v+aUr+aS +ke+8iOe7tOS6keaZuumAoEc177yJCioq5omn6KGM5YaF5a6577yaKioKCuaWsOWinumHh+i0reWF +peW6k+aOpeWPowoK5om56YeP5Yig6Zmk5YWl5bqT5Y2V5o2u5ZKM5YWl5bqT5L2c5Lia77yI57qi +5Yay44CB6Z2e57qi5Yay77yJ77yM5LqL5Yqh5LiA6Ie05oCnCgojIyDlrZjlnKjpl67popgKCuaX +oAoKLS0tCgoq55Sf5oiQ5pe26Ze077yaMjAyNi0wNS0xNSAxNjozOCo= diff --git a/media/inbound/2026-05-15_1714_G5开发周报_2026-05-11_--_2026-05-15---61da95c1-1091-4346-90d7-f407fd717364.eml b/media/inbound/2026-05-15_1714_G5开发周报_2026-05-11_--_2026-05-15---61da95c1-1091-4346-90d7-f407fd717364.eml new file mode 100644 index 0000000..0a45f94 --- /dev/null +++ b/media/inbound/2026-05-15_1714_G5开发周报_2026-05-11_--_2026-05-15---61da95c1-1091-4346-90d7-f407fd717364.eml @@ -0,0 +1,496 @@ +Date: Fri, 15 May 2026 17:14:00 +0800 +From: =?utf-8?B?5p2o6L2p?= +To: =?utf-8?B?5YiY5by6?= +Cc: =?utf-8?B?5ZC0552/5Lic?= , =?utf-8?B?6ZmI5piO?= + , =?utf-8?B?5pu+6I6J?= +Message-ID: +Subject: =?utf-8?B?RzXlvIDlj5HlkajmiqXjgJAyMDI2LTA1LTExIC0tIDIwMjYtMDUt?= + =?utf-8?B?MTXjgJE=?= +MIME-Version: 1.0 +Content-Type: multipart/related; boundary="=_mailmaster-6a18e4a4_0_6bfc_=" + +--=_mailmaster-6a18e4a4_0_6bfc_= +Content-Type: multipart/alternative; boundary="=_mailmaster-6a18e4a4_0_63cb_=" + +--=_mailmaster-6a18e4a4_0_63cb_= +Content-Type: text/plain; charset="UTF-8" +Content-Transfer-Encoding: base64 + +5ZGo5oql77yIMjAyNuW5tDXmnIgxMeaXpSDvvI0gMjAyNuW5tDXmnIgxNeaXpe+8iQrpobnnm67l +kI3np7DvvJog57u05LqR5pm66YCgRzUK5Li76KaB5Lu75Yqh77yaIOW6k+WtmOeuoeeQhuS4tOaX +tuaWsOWinuabv+aNoumcgOaxguais+eQhuWSjOW8gOWPkSAvIOW6k+WtmOa1i+ivlemXrumimOS/ +ruWkje+8jOeJiOacrOWPkeW4g+S4iue6v+aUr+aSkQrmnKzlkajlt6XkvZzlhoXlrrkK5ZGo5LiA +77yIMjAyNi0wNS0xMe+8iQoKICogCuW6k+WtmOmihOitpuaWsOWinuWKn+iDveeCuea1i+ivlQoK +ICogCuaKpeW6n+WFpeW6k+eUn+S6p+iBlOiwg+WPiui9rOa1iwoKICogCueUn+S6p+WFpeW6k+i0 +qOajgOWkh+azqOWKn+iDveiHqua1iwoKICogCueUn+S6p+mihuaWmemZhOS7tuWKn+iDvea1i+iv +lemXrumimOS/ruWkjQrlkajkuozvvIgyMDI2LTA1LTEy77yJCgogKiAK5bqT5a2Y6aKE6K2m5Y6G +5Y+y6Zeu6aKY5L+u5aSNCgogKiAK5oql5bqf5YWl5bqT5a+55o6l55Sf5Lqn57y66Zm35L+u5aSN +CuWRqOS4ie+8iDIwMjYtMDUtMTPvvIkKCiAqIArnlJ/kuqflhaXlupPpl67popjkv67lpI0KCiAq +IArmiqXlup/lhaXlupPpl67popjkv67lpI0KCiAqIArlupPlrZjpooTorablip/og73mtYvor5Xl +rozmiJAK5ZGo5Zub77yIMjAyNi0wNS0xNO+8iQoKICogCuW6k+WtmOaVtOS9k+WKn+iDvea1i+iv +leWujOaIkAoKICogCuW6k+WtmOeJiOacrOWPkeW4g+S4iue6v+aUr+aMgQrlkajkupTvvIgyMDI2 +LTA1LTE177yJCgogKiAK5paw5aKe6YeH6LSt5YWl5bqT5o6l5Y+j5byA5Y+RCgogKiAK5om56YeP +5Yig6Zmk5YWl5bqT5Y2V5o2u5ZKM5YWl5bqT5L2c5Lia77yI57qi5Yay44CB6Z2e57qi5Yay77yJ +5LqL5Yqh5LiA6Ie05oCn5aSE55CGCuWtmOWcqOmXrumimArmnKzlkajmmoLml6DorrDlvZXpl67p +opjjgIIKQmVzdCByZWdhcmRzLArmnajovakK5Zyw5Z2A77ya5Lit5Zu9wrfljZfkuqzova/ku7bo +sLfova/ku7blpKfpgZMxMeWPt+iKseelnuWkp+WOpjNGCuaJi+acuu+8mjE4NzI2MTI4NDg5CumC +rueuse+8mnlhbmd4dWFuQHdpdHNvZnQuY24K + +--=_mailmaster-6a18e4a4_0_63cb_= +Content-Type: text/html; charset="UTF-8" +Content-Transfer-Encoding: base64 + +PGRpdiBjbGFzcz0iX19hbGl5dW5fZW1haWxfYm9keV9ibG9jayI+PGh0bWwgPjxoZWFkID48L2hl +YWQ+PGJvZHkgPjxkaXYgIHN0eWxlPSJmb250LWZhbWlseTogVGFob21hLCBBcmlhbCwgU1RIZWl0 +aVNDLUxpZ2h0LCBTaW1TdW4iPjxkaXYgIHN0eWxlPSJmb250LWZhbWlseTogVGFob21hLCBBcmlh +bCwgU1RIZWl0aVNDLUxpZ2h0LCBTaW1TdW47IGNsZWFyOiBib3RoOyI+PGRpdiAgc3R5bGU9ImNs +ZWFyOiBib3RoOyBmb250LWZhbWlseTogVGFob21hLCBBcmlhbCwgU1RIZWl0aVNDLUxpZ2h0LCBT +aW1TdW47Ij48c3BhbiA+PC9zcGFuPjxkaXYgPjwvZGl2PjxzcGFuID48L3NwYW4+PGRpdiA+PC9k +aXY+PHNwYW4gPjwvc3Bhbj48aDMgIHN0eWxlPSJmb250OiA3MDAgMjBweCAvIDMwcHggcXVvdGUt +Y2prLXBhdGNoLCBJbnRlciwgc3lzdGVtLXVpLCAtYXBwbGUtc3lzdGVtLCBCbGlua01hY1N5c3Rl +bUZvbnQsICdTZWdvZSBVSScsIFJvYm90bywgT3h5Z2VuLCBVYnVudHUsIENhbnRhcmVsbCwgJ09w +ZW4gU2FucycsICdIZWx2ZXRpY2EgTmV1ZScsIHNhbnMtc2VyaWY7IG1hcmdpbjogMzJweCAwcHgg +MTZweDsgY29sb3I6IHJnYigxNSwgMTcsIDIxKTsgbGV0dGVyLXNwYWNpbmc6IG5vcm1hbDsgdGV4 +dC1hbGlnbjogc3RhcnQ7IHRleHQtaW5kZW50OiAwcHg7IHRleHQtdHJhbnNmb3JtOiBub25lOyB3 +b3JkLXNwYWNpbmc6IDBweDsgd2hpdGUtc3BhY2U6IG5vcm1hbDsgYmFja2dyb3VuZC1jb2xvcjog +cmdiKDI1NSwgMjU1LCAyNTUpOyB0ZXh0LWRlY29yYXRpb24tdGhpY2tuZXNzOiBpbml0aWFsOyB0 +ZXh0LWRlY29yYXRpb24tc3R5bGU6IGluaXRpYWw7IHRleHQtZGVjb3JhdGlvbi1jb2xvcjogaW5p +dGlhbDsiPjxzcGFuICBjbGFzcz0iIj7lkajmiqXvvIgyMDI25bm0NeaciDEx5pelIO+8jSAyMDI2 +5bm0NeaciDE15pel77yJPC9zcGFuPjwvaDM+PHAgIGNsYXNzPSJkcy1tYXJrZG93bi1wYXJhZ3Jh +cGgiIHN0eWxlPSJtYXJnaW46IDE2cHggMHB4OyBjb2xvcjogcmdiKDE1LCAxNywgMjEpOyBmb250 +LWZhbWlseTogcXVvdGUtY2prLXBhdGNoLCBJbnRlciwgc3lzdGVtLXVpLCAtYXBwbGUtc3lzdGVt +LCBCbGlua01hY1N5c3RlbUZvbnQsICdTZWdvZSBVSScsIFJvYm90bywgT3h5Z2VuLCBVYnVudHUs +IENhbnRhcmVsbCwgJ09wZW4gU2FucycsICdIZWx2ZXRpY2EgTmV1ZScsIHNhbnMtc2VyaWY7IGZv +bnQtc2l6ZTogMTZweDsgZm9udC1zdHlsZTogbm9ybWFsOyBmb250LXZhcmlhbnQtbGlnYXR1cmVz +OiBub3JtYWw7IGZvbnQtdmFyaWFudC1jYXBzOiBub3JtYWw7IGZvbnQtd2VpZ2h0OiA0MDA7IGxl +dHRlci1zcGFjaW5nOiBub3JtYWw7IHRleHQtYWxpZ246IHN0YXJ0OyB0ZXh0LWluZGVudDogMHB4 +OyB0ZXh0LXRyYW5zZm9ybTogbm9uZTsgd29yZC1zcGFjaW5nOiAwcHg7IHdoaXRlLXNwYWNlOiBu +b3JtYWw7IGJhY2tncm91bmQtY29sb3I6IHJnYigyNTUsIDI1NSwgMjU1KTsgdGV4dC1kZWNvcmF0 +aW9uLXRoaWNrbmVzczogaW5pdGlhbDsgdGV4dC1kZWNvcmF0aW9uLXN0eWxlOiBpbml0aWFsOyB0 +ZXh0LWRlY29yYXRpb24tY29sb3I6IGluaXRpYWw7Ij48c3BhbiAgY2xhc3M9IiIgc3R5bGU9ImZv +bnQtd2VpZ2h0OiA0MDA7Ij7pobnnm67lkI3np7DvvJo8L3NwYW4+PHNwYW4gIGNsYXNzPSIiPjxz +cGFuID4mbmJzcDs8L3NwYW4+57u05LqR5pm66YCgRzU8L3NwYW4+PGJyID48c3BhbiAgY2xhc3M9 +IiIgc3R5bGU9ImZvbnQtd2VpZ2h0OiA0MDA7Ij7kuLvopoHku7vliqHvvJo8L3NwYW4+PHNwYW4g +IGNsYXNzPSIiPjxzcGFuID4mbmJzcDs8L3NwYW4+5bqT5a2Y566h55CG5Li05pe25paw5aKe5pu/ +5o2i6ZyA5rGC5qKz55CG5ZKM5byA5Y+RIC8g5bqT5a2Y5rWL6K+V6Zeu6aKY5L+u5aSN77yM54mI +5pys5Y+R5biD5LiK57q/5pSv5pKRPC9zcGFuPjwvcD48aHIgIHN0eWxlPSJiYWNrZ3JvdW5kOiBu +b25lIDAlIDAlIC8gYXV0byByZXBlYXQgc2Nyb2xsIHBhZGRpbmctYm94IGJvcmRlci1ib3ggcmdi +YSgwLCAwLCAwLCAwLjEpOyBib3JkZXItd2lkdGg6IG1lZGl1bTsgYm9yZGVyLXN0eWxlOiBub25l +OyBib3JkZXItY29sb3I6IGN1cnJlbnRjb2xvcjsgYm9yZGVyLWltYWdlOiBpbml0aWFsOyBoZWln +aHQ6IDFweDsgbWFyZ2luOiAzMnB4IDBweDsgZGlzcGxheTogYmxvY2s7IGZvbnQtZmFtaWx5OiBx +dW90ZS1jamstcGF0Y2gsIEludGVyLCBzeXN0ZW0tdWksIC1hcHBsZS1zeXN0ZW0sIEJsaW5rTWFj +U3lzdGVtRm9udCwgJ1NlZ29lIFVJJywgUm9ib3RvLCBPeHlnZW4sIFVidW50dSwgQ2FudGFyZWxs +LCAnT3BlbiBTYW5zJywgJ0hlbHZldGljYSBOZXVlJywgc2Fucy1zZXJpZjsgZm9udC1zaXplOiAx +NnB4OyBmb250LXN0eWxlOiBub3JtYWw7IGZvbnQtdmFyaWFudC1saWdhdHVyZXM6IG5vcm1hbDsg +Zm9udC12YXJpYW50LWNhcHM6IG5vcm1hbDsgZm9udC13ZWlnaHQ6IDQwMDsgbGV0dGVyLXNwYWNp +bmc6IG5vcm1hbDsgb3JwaGFuczogMjsgdGV4dC1hbGlnbjogc3RhcnQ7IHRleHQtaW5kZW50OiAw +cHg7IHRleHQtdHJhbnNmb3JtOiBub25lOyB3aWRvd3M6IDI7IHdvcmQtc3BhY2luZzogMHB4OyAt +d2Via2l0LXRleHQtc3Ryb2tlLXdpZHRoOiAwcHg7IHdoaXRlLXNwYWNlOiBub3JtYWw7IHRleHQt +ZGVjb3JhdGlvbi10aGlja25lc3M6IGluaXRpYWw7IHRleHQtZGVjb3JhdGlvbi1zdHlsZTogaW5p +dGlhbDsgdGV4dC1kZWNvcmF0aW9uLWNvbG9yOiBpbml0aWFsOyI+PGg0ICBzdHlsZT0iZm9udDog +NjAwIDE2cHggLyAyOHB4IHF1b3RlLWNqay1wYXRjaCwgSW50ZXIsIHN5c3RlbS11aSwgLWFwcGxl +LXN5c3RlbSwgQmxpbmtNYWNTeXN0ZW1Gb250LCAnU2Vnb2UgVUknLCBSb2JvdG8sIE94eWdlbiwg +VWJ1bnR1LCBDYW50YXJlbGwsICdPcGVuIFNhbnMnLCAnSGVsdmV0aWNhIE5ldWUnLCBzYW5zLXNl +cmlmOyBtYXJnaW46IDE2cHggMHB4OyBjb2xvcjogcmdiKDE1LCAxNywgMjEpOyBsZXR0ZXItc3Bh +Y2luZzogbm9ybWFsOyB0ZXh0LWFsaWduOiBzdGFydDsgdGV4dC1pbmRlbnQ6IDBweDsgdGV4dC10 +cmFuc2Zvcm06IG5vbmU7IHdvcmQtc3BhY2luZzogMHB4OyB3aGl0ZS1zcGFjZTogbm9ybWFsOyBi +YWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjU1LCAyNTUsIDI1NSk7IHRleHQtZGVjb3JhdGlvbi10aGlj +a25lc3M6IGluaXRpYWw7IHRleHQtZGVjb3JhdGlvbi1zdHlsZTogaW5pdGlhbDsgdGV4dC1kZWNv +cmF0aW9uLWNvbG9yOiBpbml0aWFsOyI+PHNwYW4gIGNsYXNzPSIiPuacrOWRqOW3peS9nOWGheWu +uTwvc3Bhbj48L2g0PjxwICBjbGFzcz0iZHMtbWFya2Rvd24tcGFyYWdyYXBoIiBzdHlsZT0ibWFy +Z2luOiAxNnB4IDBweDsgY29sb3I6IHJnYigxNSwgMTcsIDIxKTsgZm9udC1mYW1pbHk6IHF1b3Rl +LWNqay1wYXRjaCwgSW50ZXIsIHN5c3RlbS11aSwgLWFwcGxlLXN5c3RlbSwgQmxpbmtNYWNTeXN0 +ZW1Gb250LCAnU2Vnb2UgVUknLCBSb2JvdG8sIE94eWdlbiwgVWJ1bnR1LCBDYW50YXJlbGwsICdP +cGVuIFNhbnMnLCAnSGVsdmV0aWNhIE5ldWUnLCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDE2cHg7 +IGZvbnQtc3R5bGU6IG5vcm1hbDsgZm9udC12YXJpYW50LWxpZ2F0dXJlczogbm9ybWFsOyBmb250 +LXZhcmlhbnQtY2Fwczogbm9ybWFsOyBmb250LXdlaWdodDogNDAwOyBsZXR0ZXItc3BhY2luZzog +bm9ybWFsOyB0ZXh0LWFsaWduOiBzdGFydDsgdGV4dC1pbmRlbnQ6IDBweDsgdGV4dC10cmFuc2Zv +cm06IG5vbmU7IHdvcmQtc3BhY2luZzogMHB4OyB3aGl0ZS1zcGFjZTogbm9ybWFsOyBiYWNrZ3Jv +dW5kLWNvbG9yOiByZ2IoMjU1LCAyNTUsIDI1NSk7IHRleHQtZGVjb3JhdGlvbi10aGlja25lc3M6 +IGluaXRpYWw7IHRleHQtZGVjb3JhdGlvbi1zdHlsZTogaW5pdGlhbDsgdGV4dC1kZWNvcmF0aW9u +LWNvbG9yOiBpbml0aWFsOyI+PHNwYW4gIGNsYXNzPSIiIHN0eWxlPSJmb250LXdlaWdodDogNDAw +OyI+5ZGo5LiA77yIMjAyNi0wNS0xMe+8iTwvc3Bhbj48L3A+PG9sICBzdGFydD0iMSIgc3R5bGU9 +Im1hcmdpbjogMTZweCAwcHg7IHBhZGRpbmctbGVmdDogMThweDsgY29sb3I6IHJnYigxNSwgMTcs +IDIxKTsgZm9udC1mYW1pbHk6IHF1b3RlLWNqay1wYXRjaCwgSW50ZXIsIHN5c3RlbS11aSwgLWFw +cGxlLXN5c3RlbSwgQmxpbmtNYWNTeXN0ZW1Gb250LCAnU2Vnb2UgVUknLCBSb2JvdG8sIE94eWdl +biwgVWJ1bnR1LCBDYW50YXJlbGwsICdPcGVuIFNhbnMnLCAnSGVsdmV0aWNhIE5ldWUnLCBzYW5z +LXNlcmlmOyBmb250LXNpemU6IDE2cHg7IGZvbnQtc3R5bGU6IG5vcm1hbDsgZm9udC12YXJpYW50 +LWxpZ2F0dXJlczogbm9ybWFsOyBmb250LXZhcmlhbnQtY2Fwczogbm9ybWFsOyBmb250LXdlaWdo +dDogNDAwOyBsZXR0ZXItc3BhY2luZzogbm9ybWFsOyB0ZXh0LWFsaWduOiBzdGFydDsgdGV4dC1p +bmRlbnQ6IDBweDsgdGV4dC10cmFuc2Zvcm06IG5vbmU7IHdvcmQtc3BhY2luZzogMHB4OyB3aGl0 +ZS1zcGFjZTogbm9ybWFsOyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjU1LCAyNTUsIDI1NSk7IHRl +eHQtZGVjb3JhdGlvbi10aGlja25lc3M6IGluaXRpYWw7IHRleHQtZGVjb3JhdGlvbi1zdHlsZTog +aW5pdGlhbDsgdGV4dC1kZWNvcmF0aW9uLWNvbG9yOiBpbml0aWFsOyI+PGxpID48cCAgY2xhc3M9 +ImRzLW1hcmtkb3duLXBhcmFncmFwaCIgc3R5bGU9Im1hcmdpbi1yaWdodDogMHB4OyBtYXJnaW4t +Ym90dG9tOiAwcHg7IG1hcmdpbi1sZWZ0OiAwcHg7IG1hcmdpbi10b3A6IDBweCAhaW1wb3J0YW50 +OyI+PHNwYW4gIGNsYXNzPSIiPuW6k+WtmOmihOitpuaWsOWinuWKn+iDveeCuea1i+ivlTwvc3Bh +bj48L3A+PC9saT48bGkgIHN0eWxlPSJtYXJnaW4tdG9wOiA2cHg7Ij48cCAgY2xhc3M9ImRzLW1h +cmtkb3duLXBhcmFncmFwaCIgc3R5bGU9Im1hcmdpbi1yaWdodDogMHB4OyBtYXJnaW4tYm90dG9t +OiAwcHg7IG1hcmdpbi1sZWZ0OiAwcHg7IG1hcmdpbi10b3A6IDBweCAhaW1wb3J0YW50OyI+PHNw +YW4gIGNsYXNzPSIiPuaKpeW6n+WFpeW6k+eUn+S6p+iBlOiwg+WPiui9rOa1izwvc3Bhbj48L3A+ +PC9saT48bGkgIHN0eWxlPSJtYXJnaW4tdG9wOiA2cHg7Ij48cCAgY2xhc3M9ImRzLW1hcmtkb3du +LXBhcmFncmFwaCIgc3R5bGU9Im1hcmdpbi1yaWdodDogMHB4OyBtYXJnaW4tYm90dG9tOiAwcHg7 +IG1hcmdpbi1sZWZ0OiAwcHg7IG1hcmdpbi10b3A6IDBweCAhaW1wb3J0YW50OyI+PHNwYW4gIGNs +YXNzPSIiPueUn+S6p+WFpeW6k+i0qOajgOWkh+azqOWKn+iDveiHqua1izwvc3Bhbj48L3A+PC9s +aT48bGkgIHN0eWxlPSJtYXJnaW4tdG9wOiA2cHg7Ij48cCAgY2xhc3M9ImRzLW1hcmtkb3duLXBh +cmFncmFwaCIgc3R5bGU9Im1hcmdpbi1yaWdodDogMHB4OyBtYXJnaW4tYm90dG9tOiAwcHg7IG1h +cmdpbi1sZWZ0OiAwcHg7IG1hcmdpbi10b3A6IDBweCAhaW1wb3J0YW50OyI+PHNwYW4gIGNsYXNz +PSIiPueUn+S6p+mihuaWmemZhOS7tuWKn+iDvea1i+ivlemXrumimOS/ruWkjTwvc3Bhbj48L3A+ +PC9saT48L29sPjxwICBjbGFzcz0iZHMtbWFya2Rvd24tcGFyYWdyYXBoIiBzdHlsZT0ibWFyZ2lu +OiAxNnB4IDBweDsgY29sb3I6IHJnYigxNSwgMTcsIDIxKTsgZm9udC1mYW1pbHk6IHF1b3RlLWNq +ay1wYXRjaCwgSW50ZXIsIHN5c3RlbS11aSwgLWFwcGxlLXN5c3RlbSwgQmxpbmtNYWNTeXN0ZW1G +b250LCAnU2Vnb2UgVUknLCBSb2JvdG8sIE94eWdlbiwgVWJ1bnR1LCBDYW50YXJlbGwsICdPcGVu +IFNhbnMnLCAnSGVsdmV0aWNhIE5ldWUnLCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDE2cHg7IGZv +bnQtc3R5bGU6IG5vcm1hbDsgZm9udC12YXJpYW50LWxpZ2F0dXJlczogbm9ybWFsOyBmb250LXZh +cmlhbnQtY2Fwczogbm9ybWFsOyBmb250LXdlaWdodDogNDAwOyBsZXR0ZXItc3BhY2luZzogbm9y +bWFsOyB0ZXh0LWFsaWduOiBzdGFydDsgdGV4dC1pbmRlbnQ6IDBweDsgdGV4dC10cmFuc2Zvcm06 +IG5vbmU7IHdvcmQtc3BhY2luZzogMHB4OyB3aGl0ZS1zcGFjZTogbm9ybWFsOyBiYWNrZ3JvdW5k +LWNvbG9yOiByZ2IoMjU1LCAyNTUsIDI1NSk7IHRleHQtZGVjb3JhdGlvbi10aGlja25lc3M6IGlu +aXRpYWw7IHRleHQtZGVjb3JhdGlvbi1zdHlsZTogaW5pdGlhbDsgdGV4dC1kZWNvcmF0aW9uLWNv +bG9yOiBpbml0aWFsOyI+PHNwYW4gIGNsYXNzPSIiIHN0eWxlPSJmb250LXdlaWdodDogNDAwOyI+ +5ZGo5LqM77yIMjAyNi0wNS0xMu+8iTwvc3Bhbj48L3A+PG9sICBzdGFydD0iMSIgc3R5bGU9Im1h +cmdpbjogMTZweCAwcHg7IHBhZGRpbmctbGVmdDogMThweDsgY29sb3I6IHJnYigxNSwgMTcsIDIx +KTsgZm9udC1mYW1pbHk6IHF1b3RlLWNqay1wYXRjaCwgSW50ZXIsIHN5c3RlbS11aSwgLWFwcGxl +LXN5c3RlbSwgQmxpbmtNYWNTeXN0ZW1Gb250LCAnU2Vnb2UgVUknLCBSb2JvdG8sIE94eWdlbiwg +VWJ1bnR1LCBDYW50YXJlbGwsICdPcGVuIFNhbnMnLCAnSGVsdmV0aWNhIE5ldWUnLCBzYW5zLXNl +cmlmOyBmb250LXNpemU6IDE2cHg7IGZvbnQtc3R5bGU6IG5vcm1hbDsgZm9udC12YXJpYW50LWxp +Z2F0dXJlczogbm9ybWFsOyBmb250LXZhcmlhbnQtY2Fwczogbm9ybWFsOyBmb250LXdlaWdodDog +NDAwOyBsZXR0ZXItc3BhY2luZzogbm9ybWFsOyB0ZXh0LWFsaWduOiBzdGFydDsgdGV4dC1pbmRl +bnQ6IDBweDsgdGV4dC10cmFuc2Zvcm06IG5vbmU7IHdvcmQtc3BhY2luZzogMHB4OyB3aGl0ZS1z +cGFjZTogbm9ybWFsOyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjU1LCAyNTUsIDI1NSk7IHRleHQt +ZGVjb3JhdGlvbi10aGlja25lc3M6IGluaXRpYWw7IHRleHQtZGVjb3JhdGlvbi1zdHlsZTogaW5p +dGlhbDsgdGV4dC1kZWNvcmF0aW9uLWNvbG9yOiBpbml0aWFsOyI+PGxpID48cCAgY2xhc3M9ImRz +LW1hcmtkb3duLXBhcmFncmFwaCIgc3R5bGU9Im1hcmdpbi1yaWdodDogMHB4OyBtYXJnaW4tYm90 +dG9tOiAwcHg7IG1hcmdpbi1sZWZ0OiAwcHg7IG1hcmdpbi10b3A6IDBweCAhaW1wb3J0YW50OyI+ +PHNwYW4gIGNsYXNzPSIiPuW6k+WtmOmihOitpuWOhuWPsumXrumimOS/ruWkjTwvc3Bhbj48L3A+ +PC9saT48bGkgIHN0eWxlPSJtYXJnaW4tdG9wOiA2cHg7Ij48cCAgY2xhc3M9ImRzLW1hcmtkb3du +LXBhcmFncmFwaCIgc3R5bGU9Im1hcmdpbi1yaWdodDogMHB4OyBtYXJnaW4tYm90dG9tOiAwcHg7 +IG1hcmdpbi1sZWZ0OiAwcHg7IG1hcmdpbi10b3A6IDBweCAhaW1wb3J0YW50OyI+PHNwYW4gIGNs +YXNzPSIiPuaKpeW6n+WFpeW6k+WvueaOpeeUn+S6p+e8uumZt+S/ruWkjTwvc3Bhbj48L3A+PC9s +aT48L29sPjxwICBjbGFzcz0iZHMtbWFya2Rvd24tcGFyYWdyYXBoIiBzdHlsZT0ibWFyZ2luOiAx +NnB4IDBweDsgY29sb3I6IHJnYigxNSwgMTcsIDIxKTsgZm9udC1mYW1pbHk6IHF1b3RlLWNqay1w +YXRjaCwgSW50ZXIsIHN5c3RlbS11aSwgLWFwcGxlLXN5c3RlbSwgQmxpbmtNYWNTeXN0ZW1Gb250 +LCAnU2Vnb2UgVUknLCBSb2JvdG8sIE94eWdlbiwgVWJ1bnR1LCBDYW50YXJlbGwsICdPcGVuIFNh +bnMnLCAnSGVsdmV0aWNhIE5ldWUnLCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDE2cHg7IGZvbnQt +c3R5bGU6IG5vcm1hbDsgZm9udC12YXJpYW50LWxpZ2F0dXJlczogbm9ybWFsOyBmb250LXZhcmlh +bnQtY2Fwczogbm9ybWFsOyBmb250LXdlaWdodDogNDAwOyBsZXR0ZXItc3BhY2luZzogbm9ybWFs +OyB0ZXh0LWFsaWduOiBzdGFydDsgdGV4dC1pbmRlbnQ6IDBweDsgdGV4dC10cmFuc2Zvcm06IG5v +bmU7IHdvcmQtc3BhY2luZzogMHB4OyB3aGl0ZS1zcGFjZTogbm9ybWFsOyBiYWNrZ3JvdW5kLWNv +bG9yOiByZ2IoMjU1LCAyNTUsIDI1NSk7IHRleHQtZGVjb3JhdGlvbi10aGlja25lc3M6IGluaXRp +YWw7IHRleHQtZGVjb3JhdGlvbi1zdHlsZTogaW5pdGlhbDsgdGV4dC1kZWNvcmF0aW9uLWNvbG9y +OiBpbml0aWFsOyI+PHNwYW4gIGNsYXNzPSIiIHN0eWxlPSJmb250LXdlaWdodDogNDAwOyI+5ZGo +5LiJ77yIMjAyNi0wNS0xM++8iTwvc3Bhbj48L3A+PG9sICBzdGFydD0iMSIgc3R5bGU9Im1hcmdp +bjogMTZweCAwcHg7IHBhZGRpbmctbGVmdDogMThweDsgY29sb3I6IHJnYigxNSwgMTcsIDIxKTsg +Zm9udC1mYW1pbHk6IHF1b3RlLWNqay1wYXRjaCwgSW50ZXIsIHN5c3RlbS11aSwgLWFwcGxlLXN5 +c3RlbSwgQmxpbmtNYWNTeXN0ZW1Gb250LCAnU2Vnb2UgVUknLCBSb2JvdG8sIE94eWdlbiwgVWJ1 +bnR1LCBDYW50YXJlbGwsICdPcGVuIFNhbnMnLCAnSGVsdmV0aWNhIE5ldWUnLCBzYW5zLXNlcmlm +OyBmb250LXNpemU6IDE2cHg7IGZvbnQtc3R5bGU6IG5vcm1hbDsgZm9udC12YXJpYW50LWxpZ2F0 +dXJlczogbm9ybWFsOyBmb250LXZhcmlhbnQtY2Fwczogbm9ybWFsOyBmb250LXdlaWdodDogNDAw +OyBsZXR0ZXItc3BhY2luZzogbm9ybWFsOyB0ZXh0LWFsaWduOiBzdGFydDsgdGV4dC1pbmRlbnQ6 +IDBweDsgdGV4dC10cmFuc2Zvcm06IG5vbmU7IHdvcmQtc3BhY2luZzogMHB4OyB3aGl0ZS1zcGFj +ZTogbm9ybWFsOyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjU1LCAyNTUsIDI1NSk7IHRleHQtZGVj +b3JhdGlvbi10aGlja25lc3M6IGluaXRpYWw7IHRleHQtZGVjb3JhdGlvbi1zdHlsZTogaW5pdGlh +bDsgdGV4dC1kZWNvcmF0aW9uLWNvbG9yOiBpbml0aWFsOyI+PGxpID48cCAgY2xhc3M9ImRzLW1h +cmtkb3duLXBhcmFncmFwaCIgc3R5bGU9Im1hcmdpbi1yaWdodDogMHB4OyBtYXJnaW4tYm90dG9t +OiAwcHg7IG1hcmdpbi1sZWZ0OiAwcHg7IG1hcmdpbi10b3A6IDBweCAhaW1wb3J0YW50OyI+PHNw +YW4gIGNsYXNzPSIiPueUn+S6p+WFpeW6k+mXrumimOS/ruWkjTwvc3Bhbj48L3A+PC9saT48bGkg +IHN0eWxlPSJtYXJnaW4tdG9wOiA2cHg7Ij48cCAgY2xhc3M9ImRzLW1hcmtkb3duLXBhcmFncmFw +aCIgc3R5bGU9Im1hcmdpbi1yaWdodDogMHB4OyBtYXJnaW4tYm90dG9tOiAwcHg7IG1hcmdpbi1s +ZWZ0OiAwcHg7IG1hcmdpbi10b3A6IDBweCAhaW1wb3J0YW50OyI+PHNwYW4gIGNsYXNzPSIiPuaK +peW6n+WFpeW6k+mXrumimOS/ruWkjTwvc3Bhbj48L3A+PC9saT48bGkgIHN0eWxlPSJtYXJnaW4t +dG9wOiA2cHg7Ij48cCAgY2xhc3M9ImRzLW1hcmtkb3duLXBhcmFncmFwaCIgc3R5bGU9Im1hcmdp +bi1yaWdodDogMHB4OyBtYXJnaW4tYm90dG9tOiAwcHg7IG1hcmdpbi1sZWZ0OiAwcHg7IG1hcmdp +bi10b3A6IDBweCAhaW1wb3J0YW50OyI+PHNwYW4gIGNsYXNzPSIiPuW6k+WtmOmihOitpuWKn+iD +vea1i+ivleWujOaIkDwvc3Bhbj48L3A+PC9saT48L29sPjxwICBjbGFzcz0iZHMtbWFya2Rvd24t +cGFyYWdyYXBoIiBzdHlsZT0ibWFyZ2luOiAxNnB4IDBweDsgY29sb3I6IHJnYigxNSwgMTcsIDIx +KTsgZm9udC1mYW1pbHk6IHF1b3RlLWNqay1wYXRjaCwgSW50ZXIsIHN5c3RlbS11aSwgLWFwcGxl +LXN5c3RlbSwgQmxpbmtNYWNTeXN0ZW1Gb250LCAnU2Vnb2UgVUknLCBSb2JvdG8sIE94eWdlbiwg +VWJ1bnR1LCBDYW50YXJlbGwsICdPcGVuIFNhbnMnLCAnSGVsdmV0aWNhIE5ldWUnLCBzYW5zLXNl +cmlmOyBmb250LXNpemU6IDE2cHg7IGZvbnQtc3R5bGU6IG5vcm1hbDsgZm9udC12YXJpYW50LWxp +Z2F0dXJlczogbm9ybWFsOyBmb250LXZhcmlhbnQtY2Fwczogbm9ybWFsOyBmb250LXdlaWdodDog +NDAwOyBsZXR0ZXItc3BhY2luZzogbm9ybWFsOyB0ZXh0LWFsaWduOiBzdGFydDsgdGV4dC1pbmRl +bnQ6IDBweDsgdGV4dC10cmFuc2Zvcm06IG5vbmU7IHdvcmQtc3BhY2luZzogMHB4OyB3aGl0ZS1z +cGFjZTogbm9ybWFsOyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjU1LCAyNTUsIDI1NSk7IHRleHQt +ZGVjb3JhdGlvbi10aGlja25lc3M6IGluaXRpYWw7IHRleHQtZGVjb3JhdGlvbi1zdHlsZTogaW5p +dGlhbDsgdGV4dC1kZWNvcmF0aW9uLWNvbG9yOiBpbml0aWFsOyI+PHNwYW4gIGNsYXNzPSIiIHN0 +eWxlPSJmb250LXdlaWdodDogNDAwOyI+5ZGo5Zub77yIMjAyNi0wNS0xNO+8iTwvc3Bhbj48L3A+ +PG9sICBzdGFydD0iMSIgc3R5bGU9Im1hcmdpbjogMTZweCAwcHg7IHBhZGRpbmctbGVmdDogMThw +eDsgY29sb3I6IHJnYigxNSwgMTcsIDIxKTsgZm9udC1mYW1pbHk6IHF1b3RlLWNqay1wYXRjaCwg +SW50ZXIsIHN5c3RlbS11aSwgLWFwcGxlLXN5c3RlbSwgQmxpbmtNYWNTeXN0ZW1Gb250LCAnU2Vn +b2UgVUknLCBSb2JvdG8sIE94eWdlbiwgVWJ1bnR1LCBDYW50YXJlbGwsICdPcGVuIFNhbnMnLCAn +SGVsdmV0aWNhIE5ldWUnLCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDE2cHg7IGZvbnQtc3R5bGU6 +IG5vcm1hbDsgZm9udC12YXJpYW50LWxpZ2F0dXJlczogbm9ybWFsOyBmb250LXZhcmlhbnQtY2Fw +czogbm9ybWFsOyBmb250LXdlaWdodDogNDAwOyBsZXR0ZXItc3BhY2luZzogbm9ybWFsOyB0ZXh0 +LWFsaWduOiBzdGFydDsgdGV4dC1pbmRlbnQ6IDBweDsgdGV4dC10cmFuc2Zvcm06IG5vbmU7IHdv +cmQtc3BhY2luZzogMHB4OyB3aGl0ZS1zcGFjZTogbm9ybWFsOyBiYWNrZ3JvdW5kLWNvbG9yOiBy +Z2IoMjU1LCAyNTUsIDI1NSk7IHRleHQtZGVjb3JhdGlvbi10aGlja25lc3M6IGluaXRpYWw7IHRl +eHQtZGVjb3JhdGlvbi1zdHlsZTogaW5pdGlhbDsgdGV4dC1kZWNvcmF0aW9uLWNvbG9yOiBpbml0 +aWFsOyI+PGxpID48cCAgY2xhc3M9ImRzLW1hcmtkb3duLXBhcmFncmFwaCIgc3R5bGU9Im1hcmdp +bi1yaWdodDogMHB4OyBtYXJnaW4tYm90dG9tOiAwcHg7IG1hcmdpbi1sZWZ0OiAwcHg7IG1hcmdp +bi10b3A6IDBweCAhaW1wb3J0YW50OyI+PHNwYW4gIGNsYXNzPSIiPuW6k+WtmOaVtOS9k+WKn+iD +vea1i+ivleWujOaIkDwvc3Bhbj48L3A+PC9saT48bGkgIHN0eWxlPSJtYXJnaW4tdG9wOiA2cHg7 +Ij48cCAgY2xhc3M9ImRzLW1hcmtkb3duLXBhcmFncmFwaCIgc3R5bGU9Im1hcmdpbi1yaWdodDog +MHB4OyBtYXJnaW4tYm90dG9tOiAwcHg7IG1hcmdpbi1sZWZ0OiAwcHg7IG1hcmdpbi10b3A6IDBw +eCAhaW1wb3J0YW50OyI+PHNwYW4gIGNsYXNzPSIiPuW6k+WtmOeJiOacrOWPkeW4g+S4iue6v+aU +r+aMgTwvc3Bhbj48L3A+PC9saT48L29sPjxwICBjbGFzcz0iZHMtbWFya2Rvd24tcGFyYWdyYXBo +IiBzdHlsZT0ibWFyZ2luOiAxNnB4IDBweDsgY29sb3I6IHJnYigxNSwgMTcsIDIxKTsgZm9udC1m +YW1pbHk6IHF1b3RlLWNqay1wYXRjaCwgSW50ZXIsIHN5c3RlbS11aSwgLWFwcGxlLXN5c3RlbSwg +QmxpbmtNYWNTeXN0ZW1Gb250LCAnU2Vnb2UgVUknLCBSb2JvdG8sIE94eWdlbiwgVWJ1bnR1LCBD +YW50YXJlbGwsICdPcGVuIFNhbnMnLCAnSGVsdmV0aWNhIE5ldWUnLCBzYW5zLXNlcmlmOyBmb250 +LXNpemU6IDE2cHg7IGZvbnQtc3R5bGU6IG5vcm1hbDsgZm9udC12YXJpYW50LWxpZ2F0dXJlczog +bm9ybWFsOyBmb250LXZhcmlhbnQtY2Fwczogbm9ybWFsOyBmb250LXdlaWdodDogNDAwOyBsZXR0 +ZXItc3BhY2luZzogbm9ybWFsOyB0ZXh0LWFsaWduOiBzdGFydDsgdGV4dC1pbmRlbnQ6IDBweDsg +dGV4dC10cmFuc2Zvcm06IG5vbmU7IHdvcmQtc3BhY2luZzogMHB4OyB3aGl0ZS1zcGFjZTogbm9y +bWFsOyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjU1LCAyNTUsIDI1NSk7IHRleHQtZGVjb3JhdGlv +bi10aGlja25lc3M6IGluaXRpYWw7IHRleHQtZGVjb3JhdGlvbi1zdHlsZTogaW5pdGlhbDsgdGV4 +dC1kZWNvcmF0aW9uLWNvbG9yOiBpbml0aWFsOyI+PHNwYW4gIGNsYXNzPSIiIHN0eWxlPSJmb250 +LXdlaWdodDogNDAwOyI+5ZGo5LqU77yIMjAyNi0wNS0xNe+8iTwvc3Bhbj48L3A+PG9sICBzdGFy +dD0iMSIgc3R5bGU9Im1hcmdpbjogMTZweCAwcHg7IHBhZGRpbmctbGVmdDogMThweDsgY29sb3I6 +IHJnYigxNSwgMTcsIDIxKTsgZm9udC1mYW1pbHk6IHF1b3RlLWNqay1wYXRjaCwgSW50ZXIsIHN5 +c3RlbS11aSwgLWFwcGxlLXN5c3RlbSwgQmxpbmtNYWNTeXN0ZW1Gb250LCAnU2Vnb2UgVUknLCBS +b2JvdG8sIE94eWdlbiwgVWJ1bnR1LCBDYW50YXJlbGwsICdPcGVuIFNhbnMnLCAnSGVsdmV0aWNh +IE5ldWUnLCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDE2cHg7IGZvbnQtc3R5bGU6IG5vcm1hbDsg +Zm9udC12YXJpYW50LWxpZ2F0dXJlczogbm9ybWFsOyBmb250LXZhcmlhbnQtY2Fwczogbm9ybWFs +OyBmb250LXdlaWdodDogNDAwOyBsZXR0ZXItc3BhY2luZzogbm9ybWFsOyB0ZXh0LWFsaWduOiBz +dGFydDsgdGV4dC1pbmRlbnQ6IDBweDsgdGV4dC10cmFuc2Zvcm06IG5vbmU7IHdvcmQtc3BhY2lu +ZzogMHB4OyB3aGl0ZS1zcGFjZTogbm9ybWFsOyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjU1LCAy +NTUsIDI1NSk7IHRleHQtZGVjb3JhdGlvbi10aGlja25lc3M6IGluaXRpYWw7IHRleHQtZGVjb3Jh +dGlvbi1zdHlsZTogaW5pdGlhbDsgdGV4dC1kZWNvcmF0aW9uLWNvbG9yOiBpbml0aWFsOyI+PGxp +ID48cCAgY2xhc3M9ImRzLW1hcmtkb3duLXBhcmFncmFwaCIgc3R5bGU9Im1hcmdpbi1yaWdodDog +MHB4OyBtYXJnaW4tYm90dG9tOiAwcHg7IG1hcmdpbi1sZWZ0OiAwcHg7IG1hcmdpbi10b3A6IDBw +eCAhaW1wb3J0YW50OyI+PHNwYW4gIGNsYXNzPSIiPuaWsOWinumHh+i0reWFpeW6k+aOpeWPo+W8 +gOWPkTwvc3Bhbj48L3A+PC9saT48bGkgIHN0eWxlPSJtYXJnaW4tdG9wOiA2cHg7Ij48cCAgY2xh +c3M9ImRzLW1hcmtkb3duLXBhcmFncmFwaCIgc3R5bGU9Im1hcmdpbi1yaWdodDogMHB4OyBtYXJn +aW4tYm90dG9tOiAwcHg7IG1hcmdpbi1sZWZ0OiAwcHg7IG1hcmdpbi10b3A6IDBweCAhaW1wb3J0 +YW50OyI+PHNwYW4gIGNsYXNzPSIiPuaJuemHj+WIoOmZpOWFpeW6k+WNleaNruWSjOWFpeW6k+S9 +nOS4mu+8iOe6ouWGsuOAgemdnue6ouWGsu+8ieS6i+WKoeS4gOiHtOaAp+WkhOeQhjwvc3Bhbj48 +L3A+PC9saT48L29sPjxociAgc3R5bGU9ImJhY2tncm91bmQ6IG5vbmUgMCUgMCUgLyBhdXRvIHJl +cGVhdCBzY3JvbGwgcGFkZGluZy1ib3ggYm9yZGVyLWJveCByZ2JhKDAsIDAsIDAsIDAuMSk7IGJv +cmRlci13aWR0aDogbWVkaXVtOyBib3JkZXItc3R5bGU6IG5vbmU7IGJvcmRlci1jb2xvcjogY3Vy +cmVudGNvbG9yOyBib3JkZXItaW1hZ2U6IGluaXRpYWw7IGhlaWdodDogMXB4OyBtYXJnaW46IDMy +cHggMHB4OyBkaXNwbGF5OiBibG9jazsgZm9udC1mYW1pbHk6IHF1b3RlLWNqay1wYXRjaCwgSW50 +ZXIsIHN5c3RlbS11aSwgLWFwcGxlLXN5c3RlbSwgQmxpbmtNYWNTeXN0ZW1Gb250LCAnU2Vnb2Ug +VUknLCBSb2JvdG8sIE94eWdlbiwgVWJ1bnR1LCBDYW50YXJlbGwsICdPcGVuIFNhbnMnLCAnSGVs +dmV0aWNhIE5ldWUnLCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDE2cHg7IGZvbnQtc3R5bGU6IG5v +cm1hbDsgZm9udC12YXJpYW50LWxpZ2F0dXJlczogbm9ybWFsOyBmb250LXZhcmlhbnQtY2Fwczog +bm9ybWFsOyBmb250LXdlaWdodDogNDAwOyBsZXR0ZXItc3BhY2luZzogbm9ybWFsOyBvcnBoYW5z +OiAyOyB0ZXh0LWFsaWduOiBzdGFydDsgdGV4dC1pbmRlbnQ6IDBweDsgdGV4dC10cmFuc2Zvcm06 +IG5vbmU7IHdpZG93czogMjsgd29yZC1zcGFjaW5nOiAwcHg7IC13ZWJraXQtdGV4dC1zdHJva2Ut +d2lkdGg6IDBweDsgd2hpdGUtc3BhY2U6IG5vcm1hbDsgdGV4dC1kZWNvcmF0aW9uLXRoaWNrbmVz +czogaW5pdGlhbDsgdGV4dC1kZWNvcmF0aW9uLXN0eWxlOiBpbml0aWFsOyB0ZXh0LWRlY29yYXRp +b24tY29sb3I6IGluaXRpYWw7Ij48aDQgIHN0eWxlPSJmb250OiA2MDAgMTZweCAvIDI4cHggcXVv +dGUtY2prLXBhdGNoLCBJbnRlciwgc3lzdGVtLXVpLCAtYXBwbGUtc3lzdGVtLCBCbGlua01hY1N5 +c3RlbUZvbnQsICdTZWdvZSBVSScsIFJvYm90bywgT3h5Z2VuLCBVYnVudHUsIENhbnRhcmVsbCwg +J09wZW4gU2FucycsICdIZWx2ZXRpY2EgTmV1ZScsIHNhbnMtc2VyaWY7IG1hcmdpbjogMTZweCAw +cHg7IGNvbG9yOiByZ2IoMTUsIDE3LCAyMSk7IGxldHRlci1zcGFjaW5nOiBub3JtYWw7IHRleHQt +YWxpZ246IHN0YXJ0OyB0ZXh0LWluZGVudDogMHB4OyB0ZXh0LXRyYW5zZm9ybTogbm9uZTsgd29y +ZC1zcGFjaW5nOiAwcHg7IHdoaXRlLXNwYWNlOiBub3JtYWw7IGJhY2tncm91bmQtY29sb3I6IHJn +YigyNTUsIDI1NSwgMjU1KTsgdGV4dC1kZWNvcmF0aW9uLXRoaWNrbmVzczogaW5pdGlhbDsgdGV4 +dC1kZWNvcmF0aW9uLXN0eWxlOiBpbml0aWFsOyB0ZXh0LWRlY29yYXRpb24tY29sb3I6IGluaXRp +YWw7Ij48c3BhbiAgY2xhc3M9IiI+5a2Y5Zyo6Zeu6aKYPC9zcGFuPjwvaDQ+PHAgIGNsYXNzPSJk +cy1tYXJrZG93bi1wYXJhZ3JhcGgiIHN0eWxlPSJtYXJnaW46IDE2cHggMHB4OyBjb2xvcjogcmdi +KDE1LCAxNywgMjEpOyBmb250LWZhbWlseTogcXVvdGUtY2prLXBhdGNoLCBJbnRlciwgc3lzdGVt +LXVpLCAtYXBwbGUtc3lzdGVtLCBCbGlua01hY1N5c3RlbUZvbnQsICdTZWdvZSBVSScsIFJvYm90 +bywgT3h5Z2VuLCBVYnVudHUsIENhbnRhcmVsbCwgJ09wZW4gU2FucycsICdIZWx2ZXRpY2EgTmV1 +ZScsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTZweDsgZm9udC1zdHlsZTogbm9ybWFsOyBmb250 +LXZhcmlhbnQtbGlnYXR1cmVzOiBub3JtYWw7IGZvbnQtdmFyaWFudC1jYXBzOiBub3JtYWw7IGZv +bnQtd2VpZ2h0OiA0MDA7IGxldHRlci1zcGFjaW5nOiBub3JtYWw7IHRleHQtYWxpZ246IHN0YXJ0 +OyB0ZXh0LWluZGVudDogMHB4OyB0ZXh0LXRyYW5zZm9ybTogbm9uZTsgd29yZC1zcGFjaW5nOiAw +cHg7IHdoaXRlLXNwYWNlOiBub3JtYWw7IGJhY2tncm91bmQtY29sb3I6IHJnYigyNTUsIDI1NSwg +MjU1KTsgdGV4dC1kZWNvcmF0aW9uLXRoaWNrbmVzczogaW5pdGlhbDsgdGV4dC1kZWNvcmF0aW9u +LXN0eWxlOiBpbml0aWFsOyB0ZXh0LWRlY29yYXRpb24tY29sb3I6IGluaXRpYWw7Ij48c3BhbiAg +Y2xhc3M9IiI+5pys5ZGo5pqC5peg6K6w5b2V6Zeu6aKY44CCPC9zcGFuPjwvcD48ZGl2ID48L2Rp +dj48c3BhbiA+PGJyID48L3NwYW4+PC9kaXY+PGRpdiAgc3R5bGU9ImNsZWFyOiBib3RoOyBmb250 +LWZhbWlseTogVGFob21hLCBBcmlhbCwgU1RIZWl0aVNDLUxpZ2h0LCBTaW1TdW47Ij48c3BhbiA+ +PGJyID48L3NwYW4+PC9kaXY+PGRpdiAgc3R5bGU9ImNsZWFyOiBib3RoOyBmb250LWZhbWlseTog +VGFob21hLCBBcmlhbCwgU1RIZWl0aVNDLUxpZ2h0LCBTaW1TdW47Ij48c3BhbiA+PGJyID48L3Nw +YW4+PC9kaXY+PGRpdiAgc3R5bGU9ImNsZWFyOiBib3RoOyI+PGRpdiAgY2xhc3M9IiBfX2FsaXl1 +bl9ub2RlX2hhc19jb2xvciIgc3R5bGU9Im1hcmdpbjogMHB4OyBwYWRkaW5nOiAwcHg7IGJvcmRl +cjogMHB4OyBvdXRsaW5lOiAwcHg7IGNvbG9yOiByZ2IoMCwgMCwgMCk7IGZvbnQtZmFtaWx5OiBU +YWhvbWEsIEFyaWFsLCBTVEhlaXRpLCBTaW1TdW47IGZvbnQtc2l6ZTogMTRweDsgZm9udC1zdHls +ZTogbm9ybWFsOyBmb250LXZhcmlhbnQtbGlnYXR1cmVzOiBub3JtYWw7IGZvbnQtdmFyaWFudC1j +YXBzOiBub3JtYWw7IGZvbnQtd2VpZ2h0OiA0MDA7IHRleHQtYWxpZ246IHN0YXJ0OyB0ZXh0LWlu +ZGVudDogMHB4OyB0ZXh0LXRyYW5zZm9ybTogbm9uZTsgdGV4dC1kZWNvcmF0aW9uLXRoaWNrbmVz +czogaW5pdGlhbDsgdGV4dC1kZWNvcmF0aW9uLXN0eWxlOiBpbml0aWFsOyB0ZXh0LWRlY29yYXRp +b24tY29sb3I6IGluaXRpYWw7IGNsZWFyOiBib3RoOyI+PHNwYW4gIGNsYXNzPSIgX19hbGl5dW5f +bm9kZV9oYXNfY29sb3IiIHN0eWxlPSJtYXJnaW46IDBweDsgcGFkZGluZzogMHB4OyBib3JkZXI6 +IDBweDsgb3V0bGluZTogMHB4OyBmb250LWZhbWlseTogJ01pY3Jvc29mdCBZYWhlaSc7IGZvbnQt +c2l6ZTogMTNweDsgY29sb3I6IHJnYigxOTEsIDE5MSwgMTkxKTsiPkJlc3QgcmVnYXJkcyw8L3Nw +YW4+PC9kaXY+PGRpdiAgY2xhc3M9IiBfX2FsaXl1bl9ub2RlX2hhc19jb2xvciIgc3R5bGU9Im1h +cmdpbjogMHB4OyBwYWRkaW5nOiAwcHg7IGJvcmRlcjogMHB4OyBvdXRsaW5lOiAwcHg7IGNvbG9y +OiByZ2IoMCwgMCwgMCk7IGZvbnQtZmFtaWx5OiBUYWhvbWEsIEFyaWFsLCBTVEhlaXRpLCBTaW1T +dW47IGZvbnQtc2l6ZTogMTRweDsgZm9udC1zdHlsZTogbm9ybWFsOyBmb250LXZhcmlhbnQtbGln +YXR1cmVzOiBub3JtYWw7IGZvbnQtdmFyaWFudC1jYXBzOiBub3JtYWw7IGZvbnQtd2VpZ2h0OiA0 +MDA7IHRleHQtYWxpZ246IHN0YXJ0OyB0ZXh0LWluZGVudDogMHB4OyB0ZXh0LXRyYW5zZm9ybTog +bm9uZTsgdGV4dC1kZWNvcmF0aW9uLXRoaWNrbmVzczogaW5pdGlhbDsgdGV4dC1kZWNvcmF0aW9u +LXN0eWxlOiBpbml0aWFsOyB0ZXh0LWRlY29yYXRpb24tY29sb3I6IGluaXRpYWw7IGNsZWFyOiBi +b3RoOyI+PHNwYW4gIGNsYXNzPSIgX19hbGl5dW5fbm9kZV9oYXNfY29sb3IiIHN0eWxlPSJtYXJn +aW46IDBweDsgcGFkZGluZzogMHB4OyBib3JkZXI6IDBweDsgb3V0bGluZTogMHB4OyBmb250LWZh +bWlseTogJ01pY3Jvc29mdCBZYWhlaSc7IGZvbnQtc2l6ZTogMTNweDsgY29sb3I6IHJnYigxOTEs +IDE5MSwgMTkxKTsiPuadqOi9qTwvc3Bhbj48L2Rpdj48ZGl2ICBjbGFzcz0iIF9fYWxpeXVuX25v +ZGVfaGFzX2NvbG9yIiBzdHlsZT0ibWFyZ2luOiAwcHg7IHBhZGRpbmc6IDBweDsgYm9yZGVyOiAw +cHg7IG91dGxpbmU6IDBweDsgY29sb3I6IHJnYigwLCAwLCAwKTsgZm9udC1mYW1pbHk6IFRhaG9t +YSwgQXJpYWwsIFNUSGVpdGksIFNpbVN1bjsgZm9udC1zaXplOiAxNHB4OyBmb250LXN0eWxlOiBu +b3JtYWw7IGZvbnQtdmFyaWFudC1saWdhdHVyZXM6IG5vcm1hbDsgZm9udC12YXJpYW50LWNhcHM6 +IG5vcm1hbDsgZm9udC13ZWlnaHQ6IDQwMDsgdGV4dC1hbGlnbjogc3RhcnQ7IHRleHQtaW5kZW50 +OiAwcHg7IHRleHQtdHJhbnNmb3JtOiBub25lOyB0ZXh0LWRlY29yYXRpb24tdGhpY2tuZXNzOiBp +bml0aWFsOyB0ZXh0LWRlY29yYXRpb24tc3R5bGU6IGluaXRpYWw7IHRleHQtZGVjb3JhdGlvbi1j +b2xvcjogaW5pdGlhbDsgY2xlYXI6IGJvdGg7Ij48aW1nICBkYXRhLWFsaW1haWwtaW1nLXByb2Nl +c3NlZC1zcW0tZWRpdG9yPSJ0cnVlIiBoZWlnaHQ9IjY4IiBzcmM9ImNpZDoyMzc0NjM4Yy0wOTI1 +LTRkNWUtODRlOS02ZTQ3NDdhZjg2ZTkiIHdpZHRoPSIzMDAiIHN0eWxlPSJtYXJnaW46IDBweDsg +cGFkZGluZzogMHB4OyBib3JkZXI6IDBweDsgb3V0bGluZTogMHB4OyB2ZXJ0aWNhbC1hbGlnbjog +Ym90dG9tOyI+Jm5ic3A7PC9kaXY+PGRpdiAgY2xhc3M9IiBfX2FsaXl1bl9ub2RlX2hhc19jb2xv +ciIgc3R5bGU9Im1hcmdpbjogMHB4OyBwYWRkaW5nOiAwcHg7IGJvcmRlcjogMHB4OyBvdXRsaW5l +OiAwcHg7IGNvbG9yOiByZ2IoMCwgMCwgMCk7IGZvbnQtZmFtaWx5OiBUYWhvbWEsIEFyaWFsLCBT +VEhlaXRpLCBTaW1TdW47IGZvbnQtc2l6ZTogMTRweDsgZm9udC1zdHlsZTogbm9ybWFsOyBmb250 +LXZhcmlhbnQtbGlnYXR1cmVzOiBub3JtYWw7IGZvbnQtdmFyaWFudC1jYXBzOiBub3JtYWw7IGZv +bnQtd2VpZ2h0OiA0MDA7IHRleHQtYWxpZ246IHN0YXJ0OyB0ZXh0LWluZGVudDogMHB4OyB0ZXh0 +LXRyYW5zZm9ybTogbm9uZTsgdGV4dC1kZWNvcmF0aW9uLXRoaWNrbmVzczogaW5pdGlhbDsgdGV4 +dC1kZWNvcmF0aW9uLXN0eWxlOiBpbml0aWFsOyB0ZXh0LWRlY29yYXRpb24tY29sb3I6IGluaXRp +YWw7IGNsZWFyOiBib3RoOyI+PHNwYW4gIGNsYXNzPSIgX19hbGl5dW5fbm9kZV9oYXNfY29sb3Ii +IHN0eWxlPSJtYXJnaW46IDBweDsgcGFkZGluZzogMHB4OyBib3JkZXI6IDBweDsgb3V0bGluZTog +MHB4OyBmb250LWZhbWlseTogJ01pY3Jvc29mdCBZYWhlaSc7IGNvbG9yOiByZ2IoMTkxLCAxOTEs +IDE5MSk7Ij7lnLDlnYDvvJrkuK3lm73Ct+WNl+S6rOi9r+S7tuiwt+i9r+S7tuWkp+mBkzEx5Y+3 +6Iqx56We5aSn5Y6mM0Y8L3NwYW4+PC9kaXY+PGRpdiAgY2xhc3M9IiBfX2FsaXl1bl9ub2RlX2hh +c19jb2xvciIgc3R5bGU9Im1hcmdpbjogMHB4OyBwYWRkaW5nOiAwcHg7IGJvcmRlcjogMHB4OyBv +dXRsaW5lOiAwcHg7IGNvbG9yOiByZ2IoMCwgMCwgMCk7IGZvbnQtZmFtaWx5OiBUYWhvbWEsIEFy +aWFsLCBTVEhlaXRpLCBTaW1TdW47IGZvbnQtc2l6ZTogMTRweDsgZm9udC1zdHlsZTogbm9ybWFs +OyBmb250LXZhcmlhbnQtbGlnYXR1cmVzOiBub3JtYWw7IGZvbnQtdmFyaWFudC1jYXBzOiBub3Jt +YWw7IGZvbnQtd2VpZ2h0OiA0MDA7IHRleHQtYWxpZ246IHN0YXJ0OyB0ZXh0LWluZGVudDogMHB4 +OyB0ZXh0LXRyYW5zZm9ybTogbm9uZTsgdGV4dC1kZWNvcmF0aW9uLXRoaWNrbmVzczogaW5pdGlh +bDsgdGV4dC1kZWNvcmF0aW9uLXN0eWxlOiBpbml0aWFsOyB0ZXh0LWRlY29yYXRpb24tY29sb3I6 +IGluaXRpYWw7IGNsZWFyOiBib3RoOyI+PHNwYW4gIGNsYXNzPSIgX19hbGl5dW5fbm9kZV9oYXNf +Y29sb3IiIHN0eWxlPSJtYXJnaW46IDBweDsgcGFkZGluZzogMHB4OyBib3JkZXI6IDBweDsgb3V0 +bGluZTogMHB4OyBmb250LWZhbWlseTogJ01pY3Jvc29mdCBZYWhlaSc7IGNvbG9yOiByZ2IoMTkx +LCAxOTEsIDE5MSk7Ij7miYvmnLrvvJoxODcyNjEyODQ4OTwvc3Bhbj48L2Rpdj48ZGl2ICBjbGFz +cz0iIF9fYWxpeXVuX25vZGVfaGFzX2NvbG9yIiBzdHlsZT0ibWFyZ2luOiAwcHg7IHBhZGRpbmc6 +IDBweDsgYm9yZGVyOiAwcHg7IG91dGxpbmU6IDBweDsgY29sb3I6IHJnYigwLCAwLCAwKTsgZm9u +dC1mYW1pbHk6IFRhaG9tYSwgQXJpYWwsIFNUSGVpdGksIFNpbVN1bjsgZm9udC1zaXplOiAxNHB4 +OyBmb250LXN0eWxlOiBub3JtYWw7IGZvbnQtdmFyaWFudC1saWdhdHVyZXM6IG5vcm1hbDsgZm9u +dC12YXJpYW50LWNhcHM6IG5vcm1hbDsgZm9udC13ZWlnaHQ6IDQwMDsgdGV4dC1hbGlnbjogc3Rh +cnQ7IHRleHQtaW5kZW50OiAwcHg7IHRleHQtdHJhbnNmb3JtOiBub25lOyB0ZXh0LWRlY29yYXRp +b24tdGhpY2tuZXNzOiBpbml0aWFsOyB0ZXh0LWRlY29yYXRpb24tc3R5bGU6IGluaXRpYWw7IHRl +eHQtZGVjb3JhdGlvbi1jb2xvcjogaW5pdGlhbDsgY2xlYXI6IGJvdGg7Ij48c3BhbiAgY2xhc3M9 +IiBfX2FsaXl1bl9ub2RlX2hhc19jb2xvciIgc3R5bGU9Im1hcmdpbjogMHB4OyBwYWRkaW5nOiAw +cHg7IGJvcmRlcjogMHB4OyBvdXRsaW5lOiAwcHg7IGZvbnQtZmFtaWx5OiAnTWljcm9zb2Z0IFlh +aGVpJzsgY29sb3I6IHJnYigxOTEsIDE5MSwgMTkxKTsiPumCrueuse+8mnlhbmd4dWFuQHdpdHNv +ZnQuY248L3NwYW4+PC9kaXY+PC9kaXY+PHAgIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCIgc3R5 +bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhlcml0OyBtYXJnaW46 +IDEycHggMHB4OyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsgZm9u +dC12YXJpYW50LWxpZ2F0dXJlczogbm9ybWFsOyBmb250LXZhcmlhbnQtY2Fwczogbm9ybWFsOyBs +ZXR0ZXItc3BhY2luZzogbm9ybWFsOyB0ZXh0LWFsaWduOiBzdGFydDsgdGV4dC1pbmRlbnQ6IDBw +eDsgd29yZC1zcGFjaW5nOiAwcHg7IHRleHQtZGVjb3JhdGlvbi1zdHlsZTogaW5pdGlhbDsgdGV4 +dC1kZWNvcmF0aW9uLWNvbG9yOiBpbml0aWFsOyI+PGJyID48L3A+PC9kaXY+PC9kaXY+PC9ib2R5 +PjwvaHRtbD48L2Rpdj4= + +--=_mailmaster-6a18e4a4_0_63cb_=-- + +--=_mailmaster-6a18e4a4_0_6bfc_= +Content-Type: application/octet-stream +Content-Transfer-Encoding: base64 +Content-ID: <2374638c-0925-4d5e-84e9-6e4747af86e9> +Content-Disposition: inline; + filename="=?utf-8?B?57u05ouT56eR5oqALemCruS7tuetvuWQjWxvZ28ucG5n?=" + +iVBORw0KGgoAAAANSUhEUgAAASwAAABECAYAAAA7rQj2AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJ +bWFnZVJlYWR5ccllPAAAA4RpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdp +bj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6 +eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTQ1IDc5LjE2 +MzQ5OSwgMjAxOC8wOC8xMy0xNjo0MDoyMiAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJo +dHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlw +dGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEu +MC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVz +b3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1N +Ok9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDplYjhjYzQwMy1lNzZjLTQ5NDgtODFmOC1kNDIy +MmRkMTdhYjgiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NkVENzExMzg1MzBEMTFFQTg4QjNF +NEJFMUQyRjc1RkIiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NkVENzExMzc1MzBEMTFFQTg4 +QjNFNEJFMUQyRjc1RkIiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTkg +KFdpbmRvd3MpIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6 +ZmNkNTdlM2UtZThjYS05ZjQ2LWEzZTUtMWJlYmE2NjA5Y2FmIiBzdFJlZjpkb2N1bWVudElEPSJh +ZG9iZTpkb2NpZDpwaG90b3Nob3A6MzZkNmNjNTUtNTY3Yi01MTQ2LWEwYWYtMzBlMzEwMTMxNDFk +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 + +--=_mailmaster-6a18e4a4_0_6bfc_=-- diff --git a/media/inbound/2026-05-15_1714_G5开发周报_2026-05-11_--_2026-05-15---e0b684b7-0170-49e3-811d-0767ac9ca12d.eml b/media/inbound/2026-05-15_1714_G5开发周报_2026-05-11_--_2026-05-15---e0b684b7-0170-49e3-811d-0767ac9ca12d.eml new file mode 100644 index 0000000..0a45f94 --- /dev/null +++ b/media/inbound/2026-05-15_1714_G5开发周报_2026-05-11_--_2026-05-15---e0b684b7-0170-49e3-811d-0767ac9ca12d.eml @@ -0,0 +1,496 @@ +Date: Fri, 15 May 2026 17:14:00 +0800 +From: =?utf-8?B?5p2o6L2p?= +To: =?utf-8?B?5YiY5by6?= +Cc: =?utf-8?B?5ZC0552/5Lic?= , =?utf-8?B?6ZmI5piO?= + , =?utf-8?B?5pu+6I6J?= +Message-ID: +Subject: =?utf-8?B?RzXlvIDlj5HlkajmiqXjgJAyMDI2LTA1LTExIC0tIDIwMjYtMDUt?= + =?utf-8?B?MTXjgJE=?= +MIME-Version: 1.0 +Content-Type: multipart/related; boundary="=_mailmaster-6a18e4a4_0_6bfc_=" + +--=_mailmaster-6a18e4a4_0_6bfc_= +Content-Type: multipart/alternative; boundary="=_mailmaster-6a18e4a4_0_63cb_=" + +--=_mailmaster-6a18e4a4_0_63cb_= +Content-Type: text/plain; charset="UTF-8" +Content-Transfer-Encoding: base64 + +5ZGo5oql77yIMjAyNuW5tDXmnIgxMeaXpSDvvI0gMjAyNuW5tDXmnIgxNeaXpe+8iQrpobnnm67l +kI3np7DvvJog57u05LqR5pm66YCgRzUK5Li76KaB5Lu75Yqh77yaIOW6k+WtmOeuoeeQhuS4tOaX +tuaWsOWinuabv+aNoumcgOaxguais+eQhuWSjOW8gOWPkSAvIOW6k+WtmOa1i+ivlemXrumimOS/ +ruWkje+8jOeJiOacrOWPkeW4g+S4iue6v+aUr+aSkQrmnKzlkajlt6XkvZzlhoXlrrkK5ZGo5LiA +77yIMjAyNi0wNS0xMe+8iQoKICogCuW6k+WtmOmihOitpuaWsOWinuWKn+iDveeCuea1i+ivlQoK +ICogCuaKpeW6n+WFpeW6k+eUn+S6p+iBlOiwg+WPiui9rOa1iwoKICogCueUn+S6p+WFpeW6k+i0 +qOajgOWkh+azqOWKn+iDveiHqua1iwoKICogCueUn+S6p+mihuaWmemZhOS7tuWKn+iDvea1i+iv +lemXrumimOS/ruWkjQrlkajkuozvvIgyMDI2LTA1LTEy77yJCgogKiAK5bqT5a2Y6aKE6K2m5Y6G +5Y+y6Zeu6aKY5L+u5aSNCgogKiAK5oql5bqf5YWl5bqT5a+55o6l55Sf5Lqn57y66Zm35L+u5aSN +CuWRqOS4ie+8iDIwMjYtMDUtMTPvvIkKCiAqIArnlJ/kuqflhaXlupPpl67popjkv67lpI0KCiAq +IArmiqXlup/lhaXlupPpl67popjkv67lpI0KCiAqIArlupPlrZjpooTorablip/og73mtYvor5Xl +rozmiJAK5ZGo5Zub77yIMjAyNi0wNS0xNO+8iQoKICogCuW6k+WtmOaVtOS9k+WKn+iDvea1i+iv +leWujOaIkAoKICogCuW6k+WtmOeJiOacrOWPkeW4g+S4iue6v+aUr+aMgQrlkajkupTvvIgyMDI2 +LTA1LTE177yJCgogKiAK5paw5aKe6YeH6LSt5YWl5bqT5o6l5Y+j5byA5Y+RCgogKiAK5om56YeP +5Yig6Zmk5YWl5bqT5Y2V5o2u5ZKM5YWl5bqT5L2c5Lia77yI57qi5Yay44CB6Z2e57qi5Yay77yJ +5LqL5Yqh5LiA6Ie05oCn5aSE55CGCuWtmOWcqOmXrumimArmnKzlkajmmoLml6DorrDlvZXpl67p +opjjgIIKQmVzdCByZWdhcmRzLArmnajovakK5Zyw5Z2A77ya5Lit5Zu9wrfljZfkuqzova/ku7bo +sLfova/ku7blpKfpgZMxMeWPt+iKseelnuWkp+WOpjNGCuaJi+acuu+8mjE4NzI2MTI4NDg5CumC +rueuse+8mnlhbmd4dWFuQHdpdHNvZnQuY24K + +--=_mailmaster-6a18e4a4_0_63cb_= +Content-Type: text/html; charset="UTF-8" +Content-Transfer-Encoding: base64 + +PGRpdiBjbGFzcz0iX19hbGl5dW5fZW1haWxfYm9keV9ibG9jayI+PGh0bWwgPjxoZWFkID48L2hl +YWQ+PGJvZHkgPjxkaXYgIHN0eWxlPSJmb250LWZhbWlseTogVGFob21hLCBBcmlhbCwgU1RIZWl0 +aVNDLUxpZ2h0LCBTaW1TdW4iPjxkaXYgIHN0eWxlPSJmb250LWZhbWlseTogVGFob21hLCBBcmlh +bCwgU1RIZWl0aVNDLUxpZ2h0LCBTaW1TdW47IGNsZWFyOiBib3RoOyI+PGRpdiAgc3R5bGU9ImNs +ZWFyOiBib3RoOyBmb250LWZhbWlseTogVGFob21hLCBBcmlhbCwgU1RIZWl0aVNDLUxpZ2h0LCBT +aW1TdW47Ij48c3BhbiA+PC9zcGFuPjxkaXYgPjwvZGl2PjxzcGFuID48L3NwYW4+PGRpdiA+PC9k +aXY+PHNwYW4gPjwvc3Bhbj48aDMgIHN0eWxlPSJmb250OiA3MDAgMjBweCAvIDMwcHggcXVvdGUt +Y2prLXBhdGNoLCBJbnRlciwgc3lzdGVtLXVpLCAtYXBwbGUtc3lzdGVtLCBCbGlua01hY1N5c3Rl +bUZvbnQsICdTZWdvZSBVSScsIFJvYm90bywgT3h5Z2VuLCBVYnVudHUsIENhbnRhcmVsbCwgJ09w +ZW4gU2FucycsICdIZWx2ZXRpY2EgTmV1ZScsIHNhbnMtc2VyaWY7IG1hcmdpbjogMzJweCAwcHgg +MTZweDsgY29sb3I6IHJnYigxNSwgMTcsIDIxKTsgbGV0dGVyLXNwYWNpbmc6IG5vcm1hbDsgdGV4 +dC1hbGlnbjogc3RhcnQ7IHRleHQtaW5kZW50OiAwcHg7IHRleHQtdHJhbnNmb3JtOiBub25lOyB3 +b3JkLXNwYWNpbmc6IDBweDsgd2hpdGUtc3BhY2U6IG5vcm1hbDsgYmFja2dyb3VuZC1jb2xvcjog +cmdiKDI1NSwgMjU1LCAyNTUpOyB0ZXh0LWRlY29yYXRpb24tdGhpY2tuZXNzOiBpbml0aWFsOyB0 +ZXh0LWRlY29yYXRpb24tc3R5bGU6IGluaXRpYWw7IHRleHQtZGVjb3JhdGlvbi1jb2xvcjogaW5p +dGlhbDsiPjxzcGFuICBjbGFzcz0iIj7lkajmiqXvvIgyMDI25bm0NeaciDEx5pelIO+8jSAyMDI2 +5bm0NeaciDE15pel77yJPC9zcGFuPjwvaDM+PHAgIGNsYXNzPSJkcy1tYXJrZG93bi1wYXJhZ3Jh +cGgiIHN0eWxlPSJtYXJnaW46IDE2cHggMHB4OyBjb2xvcjogcmdiKDE1LCAxNywgMjEpOyBmb250 +LWZhbWlseTogcXVvdGUtY2prLXBhdGNoLCBJbnRlciwgc3lzdGVtLXVpLCAtYXBwbGUtc3lzdGVt +LCBCbGlua01hY1N5c3RlbUZvbnQsICdTZWdvZSBVSScsIFJvYm90bywgT3h5Z2VuLCBVYnVudHUs +IENhbnRhcmVsbCwgJ09wZW4gU2FucycsICdIZWx2ZXRpY2EgTmV1ZScsIHNhbnMtc2VyaWY7IGZv +bnQtc2l6ZTogMTZweDsgZm9udC1zdHlsZTogbm9ybWFsOyBmb250LXZhcmlhbnQtbGlnYXR1cmVz +OiBub3JtYWw7IGZvbnQtdmFyaWFudC1jYXBzOiBub3JtYWw7IGZvbnQtd2VpZ2h0OiA0MDA7IGxl +dHRlci1zcGFjaW5nOiBub3JtYWw7IHRleHQtYWxpZ246IHN0YXJ0OyB0ZXh0LWluZGVudDogMHB4 +OyB0ZXh0LXRyYW5zZm9ybTogbm9uZTsgd29yZC1zcGFjaW5nOiAwcHg7IHdoaXRlLXNwYWNlOiBu +b3JtYWw7IGJhY2tncm91bmQtY29sb3I6IHJnYigyNTUsIDI1NSwgMjU1KTsgdGV4dC1kZWNvcmF0 +aW9uLXRoaWNrbmVzczogaW5pdGlhbDsgdGV4dC1kZWNvcmF0aW9uLXN0eWxlOiBpbml0aWFsOyB0 +ZXh0LWRlY29yYXRpb24tY29sb3I6IGluaXRpYWw7Ij48c3BhbiAgY2xhc3M9IiIgc3R5bGU9ImZv +bnQtd2VpZ2h0OiA0MDA7Ij7pobnnm67lkI3np7DvvJo8L3NwYW4+PHNwYW4gIGNsYXNzPSIiPjxz +cGFuID4mbmJzcDs8L3NwYW4+57u05LqR5pm66YCgRzU8L3NwYW4+PGJyID48c3BhbiAgY2xhc3M9 +IiIgc3R5bGU9ImZvbnQtd2VpZ2h0OiA0MDA7Ij7kuLvopoHku7vliqHvvJo8L3NwYW4+PHNwYW4g +IGNsYXNzPSIiPjxzcGFuID4mbmJzcDs8L3NwYW4+5bqT5a2Y566h55CG5Li05pe25paw5aKe5pu/ +5o2i6ZyA5rGC5qKz55CG5ZKM5byA5Y+RIC8g5bqT5a2Y5rWL6K+V6Zeu6aKY5L+u5aSN77yM54mI +5pys5Y+R5biD5LiK57q/5pSv5pKRPC9zcGFuPjwvcD48aHIgIHN0eWxlPSJiYWNrZ3JvdW5kOiBu +b25lIDAlIDAlIC8gYXV0byByZXBlYXQgc2Nyb2xsIHBhZGRpbmctYm94IGJvcmRlci1ib3ggcmdi +YSgwLCAwLCAwLCAwLjEpOyBib3JkZXItd2lkdGg6IG1lZGl1bTsgYm9yZGVyLXN0eWxlOiBub25l +OyBib3JkZXItY29sb3I6IGN1cnJlbnRjb2xvcjsgYm9yZGVyLWltYWdlOiBpbml0aWFsOyBoZWln +aHQ6IDFweDsgbWFyZ2luOiAzMnB4IDBweDsgZGlzcGxheTogYmxvY2s7IGZvbnQtZmFtaWx5OiBx +dW90ZS1jamstcGF0Y2gsIEludGVyLCBzeXN0ZW0tdWksIC1hcHBsZS1zeXN0ZW0sIEJsaW5rTWFj +U3lzdGVtRm9udCwgJ1NlZ29lIFVJJywgUm9ib3RvLCBPeHlnZW4sIFVidW50dSwgQ2FudGFyZWxs +LCAnT3BlbiBTYW5zJywgJ0hlbHZldGljYSBOZXVlJywgc2Fucy1zZXJpZjsgZm9udC1zaXplOiAx +NnB4OyBmb250LXN0eWxlOiBub3JtYWw7IGZvbnQtdmFyaWFudC1saWdhdHVyZXM6IG5vcm1hbDsg +Zm9udC12YXJpYW50LWNhcHM6IG5vcm1hbDsgZm9udC13ZWlnaHQ6IDQwMDsgbGV0dGVyLXNwYWNp +bmc6IG5vcm1hbDsgb3JwaGFuczogMjsgdGV4dC1hbGlnbjogc3RhcnQ7IHRleHQtaW5kZW50OiAw +cHg7IHRleHQtdHJhbnNmb3JtOiBub25lOyB3aWRvd3M6IDI7IHdvcmQtc3BhY2luZzogMHB4OyAt +d2Via2l0LXRleHQtc3Ryb2tlLXdpZHRoOiAwcHg7IHdoaXRlLXNwYWNlOiBub3JtYWw7IHRleHQt +ZGVjb3JhdGlvbi10aGlja25lc3M6IGluaXRpYWw7IHRleHQtZGVjb3JhdGlvbi1zdHlsZTogaW5p +dGlhbDsgdGV4dC1kZWNvcmF0aW9uLWNvbG9yOiBpbml0aWFsOyI+PGg0ICBzdHlsZT0iZm9udDog +NjAwIDE2cHggLyAyOHB4IHF1b3RlLWNqay1wYXRjaCwgSW50ZXIsIHN5c3RlbS11aSwgLWFwcGxl +LXN5c3RlbSwgQmxpbmtNYWNTeXN0ZW1Gb250LCAnU2Vnb2UgVUknLCBSb2JvdG8sIE94eWdlbiwg +VWJ1bnR1LCBDYW50YXJlbGwsICdPcGVuIFNhbnMnLCAnSGVsdmV0aWNhIE5ldWUnLCBzYW5zLXNl +cmlmOyBtYXJnaW46IDE2cHggMHB4OyBjb2xvcjogcmdiKDE1LCAxNywgMjEpOyBsZXR0ZXItc3Bh +Y2luZzogbm9ybWFsOyB0ZXh0LWFsaWduOiBzdGFydDsgdGV4dC1pbmRlbnQ6IDBweDsgdGV4dC10 +cmFuc2Zvcm06IG5vbmU7IHdvcmQtc3BhY2luZzogMHB4OyB3aGl0ZS1zcGFjZTogbm9ybWFsOyBi +YWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjU1LCAyNTUsIDI1NSk7IHRleHQtZGVjb3JhdGlvbi10aGlj +a25lc3M6IGluaXRpYWw7IHRleHQtZGVjb3JhdGlvbi1zdHlsZTogaW5pdGlhbDsgdGV4dC1kZWNv +cmF0aW9uLWNvbG9yOiBpbml0aWFsOyI+PHNwYW4gIGNsYXNzPSIiPuacrOWRqOW3peS9nOWGheWu +uTwvc3Bhbj48L2g0PjxwICBjbGFzcz0iZHMtbWFya2Rvd24tcGFyYWdyYXBoIiBzdHlsZT0ibWFy +Z2luOiAxNnB4IDBweDsgY29sb3I6IHJnYigxNSwgMTcsIDIxKTsgZm9udC1mYW1pbHk6IHF1b3Rl +LWNqay1wYXRjaCwgSW50ZXIsIHN5c3RlbS11aSwgLWFwcGxlLXN5c3RlbSwgQmxpbmtNYWNTeXN0 +ZW1Gb250LCAnU2Vnb2UgVUknLCBSb2JvdG8sIE94eWdlbiwgVWJ1bnR1LCBDYW50YXJlbGwsICdP +cGVuIFNhbnMnLCAnSGVsdmV0aWNhIE5ldWUnLCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDE2cHg7 +IGZvbnQtc3R5bGU6IG5vcm1hbDsgZm9udC12YXJpYW50LWxpZ2F0dXJlczogbm9ybWFsOyBmb250 +LXZhcmlhbnQtY2Fwczogbm9ybWFsOyBmb250LXdlaWdodDogNDAwOyBsZXR0ZXItc3BhY2luZzog +bm9ybWFsOyB0ZXh0LWFsaWduOiBzdGFydDsgdGV4dC1pbmRlbnQ6IDBweDsgdGV4dC10cmFuc2Zv +cm06IG5vbmU7IHdvcmQtc3BhY2luZzogMHB4OyB3aGl0ZS1zcGFjZTogbm9ybWFsOyBiYWNrZ3Jv +dW5kLWNvbG9yOiByZ2IoMjU1LCAyNTUsIDI1NSk7IHRleHQtZGVjb3JhdGlvbi10aGlja25lc3M6 +IGluaXRpYWw7IHRleHQtZGVjb3JhdGlvbi1zdHlsZTogaW5pdGlhbDsgdGV4dC1kZWNvcmF0aW9u +LWNvbG9yOiBpbml0aWFsOyI+PHNwYW4gIGNsYXNzPSIiIHN0eWxlPSJmb250LXdlaWdodDogNDAw +OyI+5ZGo5LiA77yIMjAyNi0wNS0xMe+8iTwvc3Bhbj48L3A+PG9sICBzdGFydD0iMSIgc3R5bGU9 +Im1hcmdpbjogMTZweCAwcHg7IHBhZGRpbmctbGVmdDogMThweDsgY29sb3I6IHJnYigxNSwgMTcs +IDIxKTsgZm9udC1mYW1pbHk6IHF1b3RlLWNqay1wYXRjaCwgSW50ZXIsIHN5c3RlbS11aSwgLWFw +cGxlLXN5c3RlbSwgQmxpbmtNYWNTeXN0ZW1Gb250LCAnU2Vnb2UgVUknLCBSb2JvdG8sIE94eWdl +biwgVWJ1bnR1LCBDYW50YXJlbGwsICdPcGVuIFNhbnMnLCAnSGVsdmV0aWNhIE5ldWUnLCBzYW5z +LXNlcmlmOyBmb250LXNpemU6IDE2cHg7IGZvbnQtc3R5bGU6IG5vcm1hbDsgZm9udC12YXJpYW50 +LWxpZ2F0dXJlczogbm9ybWFsOyBmb250LXZhcmlhbnQtY2Fwczogbm9ybWFsOyBmb250LXdlaWdo +dDogNDAwOyBsZXR0ZXItc3BhY2luZzogbm9ybWFsOyB0ZXh0LWFsaWduOiBzdGFydDsgdGV4dC1p +bmRlbnQ6IDBweDsgdGV4dC10cmFuc2Zvcm06IG5vbmU7IHdvcmQtc3BhY2luZzogMHB4OyB3aGl0 +ZS1zcGFjZTogbm9ybWFsOyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjU1LCAyNTUsIDI1NSk7IHRl +eHQtZGVjb3JhdGlvbi10aGlja25lc3M6IGluaXRpYWw7IHRleHQtZGVjb3JhdGlvbi1zdHlsZTog +aW5pdGlhbDsgdGV4dC1kZWNvcmF0aW9uLWNvbG9yOiBpbml0aWFsOyI+PGxpID48cCAgY2xhc3M9 +ImRzLW1hcmtkb3duLXBhcmFncmFwaCIgc3R5bGU9Im1hcmdpbi1yaWdodDogMHB4OyBtYXJnaW4t +Ym90dG9tOiAwcHg7IG1hcmdpbi1sZWZ0OiAwcHg7IG1hcmdpbi10b3A6IDBweCAhaW1wb3J0YW50 +OyI+PHNwYW4gIGNsYXNzPSIiPuW6k+WtmOmihOitpuaWsOWinuWKn+iDveeCuea1i+ivlTwvc3Bh +bj48L3A+PC9saT48bGkgIHN0eWxlPSJtYXJnaW4tdG9wOiA2cHg7Ij48cCAgY2xhc3M9ImRzLW1h +cmtkb3duLXBhcmFncmFwaCIgc3R5bGU9Im1hcmdpbi1yaWdodDogMHB4OyBtYXJnaW4tYm90dG9t +OiAwcHg7IG1hcmdpbi1sZWZ0OiAwcHg7IG1hcmdpbi10b3A6IDBweCAhaW1wb3J0YW50OyI+PHNw +YW4gIGNsYXNzPSIiPuaKpeW6n+WFpeW6k+eUn+S6p+iBlOiwg+WPiui9rOa1izwvc3Bhbj48L3A+ +PC9saT48bGkgIHN0eWxlPSJtYXJnaW4tdG9wOiA2cHg7Ij48cCAgY2xhc3M9ImRzLW1hcmtkb3du +LXBhcmFncmFwaCIgc3R5bGU9Im1hcmdpbi1yaWdodDogMHB4OyBtYXJnaW4tYm90dG9tOiAwcHg7 +IG1hcmdpbi1sZWZ0OiAwcHg7IG1hcmdpbi10b3A6IDBweCAhaW1wb3J0YW50OyI+PHNwYW4gIGNs +YXNzPSIiPueUn+S6p+WFpeW6k+i0qOajgOWkh+azqOWKn+iDveiHqua1izwvc3Bhbj48L3A+PC9s +aT48bGkgIHN0eWxlPSJtYXJnaW4tdG9wOiA2cHg7Ij48cCAgY2xhc3M9ImRzLW1hcmtkb3duLXBh +cmFncmFwaCIgc3R5bGU9Im1hcmdpbi1yaWdodDogMHB4OyBtYXJnaW4tYm90dG9tOiAwcHg7IG1h +cmdpbi1sZWZ0OiAwcHg7IG1hcmdpbi10b3A6IDBweCAhaW1wb3J0YW50OyI+PHNwYW4gIGNsYXNz +PSIiPueUn+S6p+mihuaWmemZhOS7tuWKn+iDvea1i+ivlemXrumimOS/ruWkjTwvc3Bhbj48L3A+ +PC9saT48L29sPjxwICBjbGFzcz0iZHMtbWFya2Rvd24tcGFyYWdyYXBoIiBzdHlsZT0ibWFyZ2lu +OiAxNnB4IDBweDsgY29sb3I6IHJnYigxNSwgMTcsIDIxKTsgZm9udC1mYW1pbHk6IHF1b3RlLWNq +ay1wYXRjaCwgSW50ZXIsIHN5c3RlbS11aSwgLWFwcGxlLXN5c3RlbSwgQmxpbmtNYWNTeXN0ZW1G +b250LCAnU2Vnb2UgVUknLCBSb2JvdG8sIE94eWdlbiwgVWJ1bnR1LCBDYW50YXJlbGwsICdPcGVu +IFNhbnMnLCAnSGVsdmV0aWNhIE5ldWUnLCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDE2cHg7IGZv +bnQtc3R5bGU6IG5vcm1hbDsgZm9udC12YXJpYW50LWxpZ2F0dXJlczogbm9ybWFsOyBmb250LXZh +cmlhbnQtY2Fwczogbm9ybWFsOyBmb250LXdlaWdodDogNDAwOyBsZXR0ZXItc3BhY2luZzogbm9y +bWFsOyB0ZXh0LWFsaWduOiBzdGFydDsgdGV4dC1pbmRlbnQ6IDBweDsgdGV4dC10cmFuc2Zvcm06 +IG5vbmU7IHdvcmQtc3BhY2luZzogMHB4OyB3aGl0ZS1zcGFjZTogbm9ybWFsOyBiYWNrZ3JvdW5k +LWNvbG9yOiByZ2IoMjU1LCAyNTUsIDI1NSk7IHRleHQtZGVjb3JhdGlvbi10aGlja25lc3M6IGlu +aXRpYWw7IHRleHQtZGVjb3JhdGlvbi1zdHlsZTogaW5pdGlhbDsgdGV4dC1kZWNvcmF0aW9uLWNv +bG9yOiBpbml0aWFsOyI+PHNwYW4gIGNsYXNzPSIiIHN0eWxlPSJmb250LXdlaWdodDogNDAwOyI+ +5ZGo5LqM77yIMjAyNi0wNS0xMu+8iTwvc3Bhbj48L3A+PG9sICBzdGFydD0iMSIgc3R5bGU9Im1h +cmdpbjogMTZweCAwcHg7IHBhZGRpbmctbGVmdDogMThweDsgY29sb3I6IHJnYigxNSwgMTcsIDIx +KTsgZm9udC1mYW1pbHk6IHF1b3RlLWNqay1wYXRjaCwgSW50ZXIsIHN5c3RlbS11aSwgLWFwcGxl +LXN5c3RlbSwgQmxpbmtNYWNTeXN0ZW1Gb250LCAnU2Vnb2UgVUknLCBSb2JvdG8sIE94eWdlbiwg +VWJ1bnR1LCBDYW50YXJlbGwsICdPcGVuIFNhbnMnLCAnSGVsdmV0aWNhIE5ldWUnLCBzYW5zLXNl +cmlmOyBmb250LXNpemU6IDE2cHg7IGZvbnQtc3R5bGU6IG5vcm1hbDsgZm9udC12YXJpYW50LWxp +Z2F0dXJlczogbm9ybWFsOyBmb250LXZhcmlhbnQtY2Fwczogbm9ybWFsOyBmb250LXdlaWdodDog +NDAwOyBsZXR0ZXItc3BhY2luZzogbm9ybWFsOyB0ZXh0LWFsaWduOiBzdGFydDsgdGV4dC1pbmRl +bnQ6IDBweDsgdGV4dC10cmFuc2Zvcm06IG5vbmU7IHdvcmQtc3BhY2luZzogMHB4OyB3aGl0ZS1z +cGFjZTogbm9ybWFsOyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjU1LCAyNTUsIDI1NSk7IHRleHQt +ZGVjb3JhdGlvbi10aGlja25lc3M6IGluaXRpYWw7IHRleHQtZGVjb3JhdGlvbi1zdHlsZTogaW5p +dGlhbDsgdGV4dC1kZWNvcmF0aW9uLWNvbG9yOiBpbml0aWFsOyI+PGxpID48cCAgY2xhc3M9ImRz +LW1hcmtkb3duLXBhcmFncmFwaCIgc3R5bGU9Im1hcmdpbi1yaWdodDogMHB4OyBtYXJnaW4tYm90 +dG9tOiAwcHg7IG1hcmdpbi1sZWZ0OiAwcHg7IG1hcmdpbi10b3A6IDBweCAhaW1wb3J0YW50OyI+ +PHNwYW4gIGNsYXNzPSIiPuW6k+WtmOmihOitpuWOhuWPsumXrumimOS/ruWkjTwvc3Bhbj48L3A+ +PC9saT48bGkgIHN0eWxlPSJtYXJnaW4tdG9wOiA2cHg7Ij48cCAgY2xhc3M9ImRzLW1hcmtkb3du +LXBhcmFncmFwaCIgc3R5bGU9Im1hcmdpbi1yaWdodDogMHB4OyBtYXJnaW4tYm90dG9tOiAwcHg7 +IG1hcmdpbi1sZWZ0OiAwcHg7IG1hcmdpbi10b3A6IDBweCAhaW1wb3J0YW50OyI+PHNwYW4gIGNs +YXNzPSIiPuaKpeW6n+WFpeW6k+WvueaOpeeUn+S6p+e8uumZt+S/ruWkjTwvc3Bhbj48L3A+PC9s +aT48L29sPjxwICBjbGFzcz0iZHMtbWFya2Rvd24tcGFyYWdyYXBoIiBzdHlsZT0ibWFyZ2luOiAx +NnB4IDBweDsgY29sb3I6IHJnYigxNSwgMTcsIDIxKTsgZm9udC1mYW1pbHk6IHF1b3RlLWNqay1w +YXRjaCwgSW50ZXIsIHN5c3RlbS11aSwgLWFwcGxlLXN5c3RlbSwgQmxpbmtNYWNTeXN0ZW1Gb250 +LCAnU2Vnb2UgVUknLCBSb2JvdG8sIE94eWdlbiwgVWJ1bnR1LCBDYW50YXJlbGwsICdPcGVuIFNh +bnMnLCAnSGVsdmV0aWNhIE5ldWUnLCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDE2cHg7IGZvbnQt +c3R5bGU6IG5vcm1hbDsgZm9udC12YXJpYW50LWxpZ2F0dXJlczogbm9ybWFsOyBmb250LXZhcmlh +bnQtY2Fwczogbm9ybWFsOyBmb250LXdlaWdodDogNDAwOyBsZXR0ZXItc3BhY2luZzogbm9ybWFs +OyB0ZXh0LWFsaWduOiBzdGFydDsgdGV4dC1pbmRlbnQ6IDBweDsgdGV4dC10cmFuc2Zvcm06IG5v +bmU7IHdvcmQtc3BhY2luZzogMHB4OyB3aGl0ZS1zcGFjZTogbm9ybWFsOyBiYWNrZ3JvdW5kLWNv +bG9yOiByZ2IoMjU1LCAyNTUsIDI1NSk7IHRleHQtZGVjb3JhdGlvbi10aGlja25lc3M6IGluaXRp +YWw7IHRleHQtZGVjb3JhdGlvbi1zdHlsZTogaW5pdGlhbDsgdGV4dC1kZWNvcmF0aW9uLWNvbG9y +OiBpbml0aWFsOyI+PHNwYW4gIGNsYXNzPSIiIHN0eWxlPSJmb250LXdlaWdodDogNDAwOyI+5ZGo +5LiJ77yIMjAyNi0wNS0xM++8iTwvc3Bhbj48L3A+PG9sICBzdGFydD0iMSIgc3R5bGU9Im1hcmdp +bjogMTZweCAwcHg7IHBhZGRpbmctbGVmdDogMThweDsgY29sb3I6IHJnYigxNSwgMTcsIDIxKTsg +Zm9udC1mYW1pbHk6IHF1b3RlLWNqay1wYXRjaCwgSW50ZXIsIHN5c3RlbS11aSwgLWFwcGxlLXN5 +c3RlbSwgQmxpbmtNYWNTeXN0ZW1Gb250LCAnU2Vnb2UgVUknLCBSb2JvdG8sIE94eWdlbiwgVWJ1 +bnR1LCBDYW50YXJlbGwsICdPcGVuIFNhbnMnLCAnSGVsdmV0aWNhIE5ldWUnLCBzYW5zLXNlcmlm +OyBmb250LXNpemU6IDE2cHg7IGZvbnQtc3R5bGU6IG5vcm1hbDsgZm9udC12YXJpYW50LWxpZ2F0 +dXJlczogbm9ybWFsOyBmb250LXZhcmlhbnQtY2Fwczogbm9ybWFsOyBmb250LXdlaWdodDogNDAw +OyBsZXR0ZXItc3BhY2luZzogbm9ybWFsOyB0ZXh0LWFsaWduOiBzdGFydDsgdGV4dC1pbmRlbnQ6 +IDBweDsgdGV4dC10cmFuc2Zvcm06IG5vbmU7IHdvcmQtc3BhY2luZzogMHB4OyB3aGl0ZS1zcGFj +ZTogbm9ybWFsOyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjU1LCAyNTUsIDI1NSk7IHRleHQtZGVj +b3JhdGlvbi10aGlja25lc3M6IGluaXRpYWw7IHRleHQtZGVjb3JhdGlvbi1zdHlsZTogaW5pdGlh +bDsgdGV4dC1kZWNvcmF0aW9uLWNvbG9yOiBpbml0aWFsOyI+PGxpID48cCAgY2xhc3M9ImRzLW1h +cmtkb3duLXBhcmFncmFwaCIgc3R5bGU9Im1hcmdpbi1yaWdodDogMHB4OyBtYXJnaW4tYm90dG9t +OiAwcHg7IG1hcmdpbi1sZWZ0OiAwcHg7IG1hcmdpbi10b3A6IDBweCAhaW1wb3J0YW50OyI+PHNw +YW4gIGNsYXNzPSIiPueUn+S6p+WFpeW6k+mXrumimOS/ruWkjTwvc3Bhbj48L3A+PC9saT48bGkg +IHN0eWxlPSJtYXJnaW4tdG9wOiA2cHg7Ij48cCAgY2xhc3M9ImRzLW1hcmtkb3duLXBhcmFncmFw +aCIgc3R5bGU9Im1hcmdpbi1yaWdodDogMHB4OyBtYXJnaW4tYm90dG9tOiAwcHg7IG1hcmdpbi1s +ZWZ0OiAwcHg7IG1hcmdpbi10b3A6IDBweCAhaW1wb3J0YW50OyI+PHNwYW4gIGNsYXNzPSIiPuaK +peW6n+WFpeW6k+mXrumimOS/ruWkjTwvc3Bhbj48L3A+PC9saT48bGkgIHN0eWxlPSJtYXJnaW4t +dG9wOiA2cHg7Ij48cCAgY2xhc3M9ImRzLW1hcmtkb3duLXBhcmFncmFwaCIgc3R5bGU9Im1hcmdp +bi1yaWdodDogMHB4OyBtYXJnaW4tYm90dG9tOiAwcHg7IG1hcmdpbi1sZWZ0OiAwcHg7IG1hcmdp +bi10b3A6IDBweCAhaW1wb3J0YW50OyI+PHNwYW4gIGNsYXNzPSIiPuW6k+WtmOmihOitpuWKn+iD +vea1i+ivleWujOaIkDwvc3Bhbj48L3A+PC9saT48L29sPjxwICBjbGFzcz0iZHMtbWFya2Rvd24t +cGFyYWdyYXBoIiBzdHlsZT0ibWFyZ2luOiAxNnB4IDBweDsgY29sb3I6IHJnYigxNSwgMTcsIDIx +KTsgZm9udC1mYW1pbHk6IHF1b3RlLWNqay1wYXRjaCwgSW50ZXIsIHN5c3RlbS11aSwgLWFwcGxl +LXN5c3RlbSwgQmxpbmtNYWNTeXN0ZW1Gb250LCAnU2Vnb2UgVUknLCBSb2JvdG8sIE94eWdlbiwg +VWJ1bnR1LCBDYW50YXJlbGwsICdPcGVuIFNhbnMnLCAnSGVsdmV0aWNhIE5ldWUnLCBzYW5zLXNl +cmlmOyBmb250LXNpemU6IDE2cHg7IGZvbnQtc3R5bGU6IG5vcm1hbDsgZm9udC12YXJpYW50LWxp +Z2F0dXJlczogbm9ybWFsOyBmb250LXZhcmlhbnQtY2Fwczogbm9ybWFsOyBmb250LXdlaWdodDog +NDAwOyBsZXR0ZXItc3BhY2luZzogbm9ybWFsOyB0ZXh0LWFsaWduOiBzdGFydDsgdGV4dC1pbmRl +bnQ6IDBweDsgdGV4dC10cmFuc2Zvcm06IG5vbmU7IHdvcmQtc3BhY2luZzogMHB4OyB3aGl0ZS1z +cGFjZTogbm9ybWFsOyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjU1LCAyNTUsIDI1NSk7IHRleHQt +ZGVjb3JhdGlvbi10aGlja25lc3M6IGluaXRpYWw7IHRleHQtZGVjb3JhdGlvbi1zdHlsZTogaW5p +dGlhbDsgdGV4dC1kZWNvcmF0aW9uLWNvbG9yOiBpbml0aWFsOyI+PHNwYW4gIGNsYXNzPSIiIHN0 +eWxlPSJmb250LXdlaWdodDogNDAwOyI+5ZGo5Zub77yIMjAyNi0wNS0xNO+8iTwvc3Bhbj48L3A+ +PG9sICBzdGFydD0iMSIgc3R5bGU9Im1hcmdpbjogMTZweCAwcHg7IHBhZGRpbmctbGVmdDogMThw +eDsgY29sb3I6IHJnYigxNSwgMTcsIDIxKTsgZm9udC1mYW1pbHk6IHF1b3RlLWNqay1wYXRjaCwg +SW50ZXIsIHN5c3RlbS11aSwgLWFwcGxlLXN5c3RlbSwgQmxpbmtNYWNTeXN0ZW1Gb250LCAnU2Vn +b2UgVUknLCBSb2JvdG8sIE94eWdlbiwgVWJ1bnR1LCBDYW50YXJlbGwsICdPcGVuIFNhbnMnLCAn +SGVsdmV0aWNhIE5ldWUnLCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDE2cHg7IGZvbnQtc3R5bGU6 +IG5vcm1hbDsgZm9udC12YXJpYW50LWxpZ2F0dXJlczogbm9ybWFsOyBmb250LXZhcmlhbnQtY2Fw +czogbm9ybWFsOyBmb250LXdlaWdodDogNDAwOyBsZXR0ZXItc3BhY2luZzogbm9ybWFsOyB0ZXh0 +LWFsaWduOiBzdGFydDsgdGV4dC1pbmRlbnQ6IDBweDsgdGV4dC10cmFuc2Zvcm06IG5vbmU7IHdv +cmQtc3BhY2luZzogMHB4OyB3aGl0ZS1zcGFjZTogbm9ybWFsOyBiYWNrZ3JvdW5kLWNvbG9yOiBy +Z2IoMjU1LCAyNTUsIDI1NSk7IHRleHQtZGVjb3JhdGlvbi10aGlja25lc3M6IGluaXRpYWw7IHRl +eHQtZGVjb3JhdGlvbi1zdHlsZTogaW5pdGlhbDsgdGV4dC1kZWNvcmF0aW9uLWNvbG9yOiBpbml0 +aWFsOyI+PGxpID48cCAgY2xhc3M9ImRzLW1hcmtkb3duLXBhcmFncmFwaCIgc3R5bGU9Im1hcmdp +bi1yaWdodDogMHB4OyBtYXJnaW4tYm90dG9tOiAwcHg7IG1hcmdpbi1sZWZ0OiAwcHg7IG1hcmdp +bi10b3A6IDBweCAhaW1wb3J0YW50OyI+PHNwYW4gIGNsYXNzPSIiPuW6k+WtmOaVtOS9k+WKn+iD +vea1i+ivleWujOaIkDwvc3Bhbj48L3A+PC9saT48bGkgIHN0eWxlPSJtYXJnaW4tdG9wOiA2cHg7 +Ij48cCAgY2xhc3M9ImRzLW1hcmtkb3duLXBhcmFncmFwaCIgc3R5bGU9Im1hcmdpbi1yaWdodDog +MHB4OyBtYXJnaW4tYm90dG9tOiAwcHg7IG1hcmdpbi1sZWZ0OiAwcHg7IG1hcmdpbi10b3A6IDBw +eCAhaW1wb3J0YW50OyI+PHNwYW4gIGNsYXNzPSIiPuW6k+WtmOeJiOacrOWPkeW4g+S4iue6v+aU +r+aMgTwvc3Bhbj48L3A+PC9saT48L29sPjxwICBjbGFzcz0iZHMtbWFya2Rvd24tcGFyYWdyYXBo +IiBzdHlsZT0ibWFyZ2luOiAxNnB4IDBweDsgY29sb3I6IHJnYigxNSwgMTcsIDIxKTsgZm9udC1m +YW1pbHk6IHF1b3RlLWNqay1wYXRjaCwgSW50ZXIsIHN5c3RlbS11aSwgLWFwcGxlLXN5c3RlbSwg +QmxpbmtNYWNTeXN0ZW1Gb250LCAnU2Vnb2UgVUknLCBSb2JvdG8sIE94eWdlbiwgVWJ1bnR1LCBD +YW50YXJlbGwsICdPcGVuIFNhbnMnLCAnSGVsdmV0aWNhIE5ldWUnLCBzYW5zLXNlcmlmOyBmb250 +LXNpemU6IDE2cHg7IGZvbnQtc3R5bGU6IG5vcm1hbDsgZm9udC12YXJpYW50LWxpZ2F0dXJlczog +bm9ybWFsOyBmb250LXZhcmlhbnQtY2Fwczogbm9ybWFsOyBmb250LXdlaWdodDogNDAwOyBsZXR0 +ZXItc3BhY2luZzogbm9ybWFsOyB0ZXh0LWFsaWduOiBzdGFydDsgdGV4dC1pbmRlbnQ6IDBweDsg +dGV4dC10cmFuc2Zvcm06IG5vbmU7IHdvcmQtc3BhY2luZzogMHB4OyB3aGl0ZS1zcGFjZTogbm9y +bWFsOyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjU1LCAyNTUsIDI1NSk7IHRleHQtZGVjb3JhdGlv +bi10aGlja25lc3M6IGluaXRpYWw7IHRleHQtZGVjb3JhdGlvbi1zdHlsZTogaW5pdGlhbDsgdGV4 +dC1kZWNvcmF0aW9uLWNvbG9yOiBpbml0aWFsOyI+PHNwYW4gIGNsYXNzPSIiIHN0eWxlPSJmb250 +LXdlaWdodDogNDAwOyI+5ZGo5LqU77yIMjAyNi0wNS0xNe+8iTwvc3Bhbj48L3A+PG9sICBzdGFy +dD0iMSIgc3R5bGU9Im1hcmdpbjogMTZweCAwcHg7IHBhZGRpbmctbGVmdDogMThweDsgY29sb3I6 +IHJnYigxNSwgMTcsIDIxKTsgZm9udC1mYW1pbHk6IHF1b3RlLWNqay1wYXRjaCwgSW50ZXIsIHN5 +c3RlbS11aSwgLWFwcGxlLXN5c3RlbSwgQmxpbmtNYWNTeXN0ZW1Gb250LCAnU2Vnb2UgVUknLCBS +b2JvdG8sIE94eWdlbiwgVWJ1bnR1LCBDYW50YXJlbGwsICdPcGVuIFNhbnMnLCAnSGVsdmV0aWNh +IE5ldWUnLCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDE2cHg7IGZvbnQtc3R5bGU6IG5vcm1hbDsg +Zm9udC12YXJpYW50LWxpZ2F0dXJlczogbm9ybWFsOyBmb250LXZhcmlhbnQtY2Fwczogbm9ybWFs +OyBmb250LXdlaWdodDogNDAwOyBsZXR0ZXItc3BhY2luZzogbm9ybWFsOyB0ZXh0LWFsaWduOiBz +dGFydDsgdGV4dC1pbmRlbnQ6IDBweDsgdGV4dC10cmFuc2Zvcm06IG5vbmU7IHdvcmQtc3BhY2lu +ZzogMHB4OyB3aGl0ZS1zcGFjZTogbm9ybWFsOyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjU1LCAy +NTUsIDI1NSk7IHRleHQtZGVjb3JhdGlvbi10aGlja25lc3M6IGluaXRpYWw7IHRleHQtZGVjb3Jh +dGlvbi1zdHlsZTogaW5pdGlhbDsgdGV4dC1kZWNvcmF0aW9uLWNvbG9yOiBpbml0aWFsOyI+PGxp +ID48cCAgY2xhc3M9ImRzLW1hcmtkb3duLXBhcmFncmFwaCIgc3R5bGU9Im1hcmdpbi1yaWdodDog +MHB4OyBtYXJnaW4tYm90dG9tOiAwcHg7IG1hcmdpbi1sZWZ0OiAwcHg7IG1hcmdpbi10b3A6IDBw +eCAhaW1wb3J0YW50OyI+PHNwYW4gIGNsYXNzPSIiPuaWsOWinumHh+i0reWFpeW6k+aOpeWPo+W8 +gOWPkTwvc3Bhbj48L3A+PC9saT48bGkgIHN0eWxlPSJtYXJnaW4tdG9wOiA2cHg7Ij48cCAgY2xh +c3M9ImRzLW1hcmtkb3duLXBhcmFncmFwaCIgc3R5bGU9Im1hcmdpbi1yaWdodDogMHB4OyBtYXJn +aW4tYm90dG9tOiAwcHg7IG1hcmdpbi1sZWZ0OiAwcHg7IG1hcmdpbi10b3A6IDBweCAhaW1wb3J0 +YW50OyI+PHNwYW4gIGNsYXNzPSIiPuaJuemHj+WIoOmZpOWFpeW6k+WNleaNruWSjOWFpeW6k+S9 +nOS4mu+8iOe6ouWGsuOAgemdnue6ouWGsu+8ieS6i+WKoeS4gOiHtOaAp+WkhOeQhjwvc3Bhbj48 +L3A+PC9saT48L29sPjxociAgc3R5bGU9ImJhY2tncm91bmQ6IG5vbmUgMCUgMCUgLyBhdXRvIHJl +cGVhdCBzY3JvbGwgcGFkZGluZy1ib3ggYm9yZGVyLWJveCByZ2JhKDAsIDAsIDAsIDAuMSk7IGJv +cmRlci13aWR0aDogbWVkaXVtOyBib3JkZXItc3R5bGU6IG5vbmU7IGJvcmRlci1jb2xvcjogY3Vy +cmVudGNvbG9yOyBib3JkZXItaW1hZ2U6IGluaXRpYWw7IGhlaWdodDogMXB4OyBtYXJnaW46IDMy +cHggMHB4OyBkaXNwbGF5OiBibG9jazsgZm9udC1mYW1pbHk6IHF1b3RlLWNqay1wYXRjaCwgSW50 +ZXIsIHN5c3RlbS11aSwgLWFwcGxlLXN5c3RlbSwgQmxpbmtNYWNTeXN0ZW1Gb250LCAnU2Vnb2Ug +VUknLCBSb2JvdG8sIE94eWdlbiwgVWJ1bnR1LCBDYW50YXJlbGwsICdPcGVuIFNhbnMnLCAnSGVs +dmV0aWNhIE5ldWUnLCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDE2cHg7IGZvbnQtc3R5bGU6IG5v +cm1hbDsgZm9udC12YXJpYW50LWxpZ2F0dXJlczogbm9ybWFsOyBmb250LXZhcmlhbnQtY2Fwczog +bm9ybWFsOyBmb250LXdlaWdodDogNDAwOyBsZXR0ZXItc3BhY2luZzogbm9ybWFsOyBvcnBoYW5z +OiAyOyB0ZXh0LWFsaWduOiBzdGFydDsgdGV4dC1pbmRlbnQ6IDBweDsgdGV4dC10cmFuc2Zvcm06 +IG5vbmU7IHdpZG93czogMjsgd29yZC1zcGFjaW5nOiAwcHg7IC13ZWJraXQtdGV4dC1zdHJva2Ut +d2lkdGg6IDBweDsgd2hpdGUtc3BhY2U6IG5vcm1hbDsgdGV4dC1kZWNvcmF0aW9uLXRoaWNrbmVz +czogaW5pdGlhbDsgdGV4dC1kZWNvcmF0aW9uLXN0eWxlOiBpbml0aWFsOyB0ZXh0LWRlY29yYXRp +b24tY29sb3I6IGluaXRpYWw7Ij48aDQgIHN0eWxlPSJmb250OiA2MDAgMTZweCAvIDI4cHggcXVv +dGUtY2prLXBhdGNoLCBJbnRlciwgc3lzdGVtLXVpLCAtYXBwbGUtc3lzdGVtLCBCbGlua01hY1N5 +c3RlbUZvbnQsICdTZWdvZSBVSScsIFJvYm90bywgT3h5Z2VuLCBVYnVudHUsIENhbnRhcmVsbCwg +J09wZW4gU2FucycsICdIZWx2ZXRpY2EgTmV1ZScsIHNhbnMtc2VyaWY7IG1hcmdpbjogMTZweCAw +cHg7IGNvbG9yOiByZ2IoMTUsIDE3LCAyMSk7IGxldHRlci1zcGFjaW5nOiBub3JtYWw7IHRleHQt +YWxpZ246IHN0YXJ0OyB0ZXh0LWluZGVudDogMHB4OyB0ZXh0LXRyYW5zZm9ybTogbm9uZTsgd29y +ZC1zcGFjaW5nOiAwcHg7IHdoaXRlLXNwYWNlOiBub3JtYWw7IGJhY2tncm91bmQtY29sb3I6IHJn +YigyNTUsIDI1NSwgMjU1KTsgdGV4dC1kZWNvcmF0aW9uLXRoaWNrbmVzczogaW5pdGlhbDsgdGV4 +dC1kZWNvcmF0aW9uLXN0eWxlOiBpbml0aWFsOyB0ZXh0LWRlY29yYXRpb24tY29sb3I6IGluaXRp +YWw7Ij48c3BhbiAgY2xhc3M9IiI+5a2Y5Zyo6Zeu6aKYPC9zcGFuPjwvaDQ+PHAgIGNsYXNzPSJk +cy1tYXJrZG93bi1wYXJhZ3JhcGgiIHN0eWxlPSJtYXJnaW46IDE2cHggMHB4OyBjb2xvcjogcmdi +KDE1LCAxNywgMjEpOyBmb250LWZhbWlseTogcXVvdGUtY2prLXBhdGNoLCBJbnRlciwgc3lzdGVt +LXVpLCAtYXBwbGUtc3lzdGVtLCBCbGlua01hY1N5c3RlbUZvbnQsICdTZWdvZSBVSScsIFJvYm90 +bywgT3h5Z2VuLCBVYnVudHUsIENhbnRhcmVsbCwgJ09wZW4gU2FucycsICdIZWx2ZXRpY2EgTmV1 +ZScsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTZweDsgZm9udC1zdHlsZTogbm9ybWFsOyBmb250 +LXZhcmlhbnQtbGlnYXR1cmVzOiBub3JtYWw7IGZvbnQtdmFyaWFudC1jYXBzOiBub3JtYWw7IGZv +bnQtd2VpZ2h0OiA0MDA7IGxldHRlci1zcGFjaW5nOiBub3JtYWw7IHRleHQtYWxpZ246IHN0YXJ0 +OyB0ZXh0LWluZGVudDogMHB4OyB0ZXh0LXRyYW5zZm9ybTogbm9uZTsgd29yZC1zcGFjaW5nOiAw +cHg7IHdoaXRlLXNwYWNlOiBub3JtYWw7IGJhY2tncm91bmQtY29sb3I6IHJnYigyNTUsIDI1NSwg +MjU1KTsgdGV4dC1kZWNvcmF0aW9uLXRoaWNrbmVzczogaW5pdGlhbDsgdGV4dC1kZWNvcmF0aW9u +LXN0eWxlOiBpbml0aWFsOyB0ZXh0LWRlY29yYXRpb24tY29sb3I6IGluaXRpYWw7Ij48c3BhbiAg +Y2xhc3M9IiI+5pys5ZGo5pqC5peg6K6w5b2V6Zeu6aKY44CCPC9zcGFuPjwvcD48ZGl2ID48L2Rp +dj48c3BhbiA+PGJyID48L3NwYW4+PC9kaXY+PGRpdiAgc3R5bGU9ImNsZWFyOiBib3RoOyBmb250 +LWZhbWlseTogVGFob21hLCBBcmlhbCwgU1RIZWl0aVNDLUxpZ2h0LCBTaW1TdW47Ij48c3BhbiA+ +PGJyID48L3NwYW4+PC9kaXY+PGRpdiAgc3R5bGU9ImNsZWFyOiBib3RoOyBmb250LWZhbWlseTog +VGFob21hLCBBcmlhbCwgU1RIZWl0aVNDLUxpZ2h0LCBTaW1TdW47Ij48c3BhbiA+PGJyID48L3Nw +YW4+PC9kaXY+PGRpdiAgc3R5bGU9ImNsZWFyOiBib3RoOyI+PGRpdiAgY2xhc3M9IiBfX2FsaXl1 +bl9ub2RlX2hhc19jb2xvciIgc3R5bGU9Im1hcmdpbjogMHB4OyBwYWRkaW5nOiAwcHg7IGJvcmRl +cjogMHB4OyBvdXRsaW5lOiAwcHg7IGNvbG9yOiByZ2IoMCwgMCwgMCk7IGZvbnQtZmFtaWx5OiBU +YWhvbWEsIEFyaWFsLCBTVEhlaXRpLCBTaW1TdW47IGZvbnQtc2l6ZTogMTRweDsgZm9udC1zdHls +ZTogbm9ybWFsOyBmb250LXZhcmlhbnQtbGlnYXR1cmVzOiBub3JtYWw7IGZvbnQtdmFyaWFudC1j +YXBzOiBub3JtYWw7IGZvbnQtd2VpZ2h0OiA0MDA7IHRleHQtYWxpZ246IHN0YXJ0OyB0ZXh0LWlu +ZGVudDogMHB4OyB0ZXh0LXRyYW5zZm9ybTogbm9uZTsgdGV4dC1kZWNvcmF0aW9uLXRoaWNrbmVz +czogaW5pdGlhbDsgdGV4dC1kZWNvcmF0aW9uLXN0eWxlOiBpbml0aWFsOyB0ZXh0LWRlY29yYXRp +b24tY29sb3I6IGluaXRpYWw7IGNsZWFyOiBib3RoOyI+PHNwYW4gIGNsYXNzPSIgX19hbGl5dW5f +bm9kZV9oYXNfY29sb3IiIHN0eWxlPSJtYXJnaW46IDBweDsgcGFkZGluZzogMHB4OyBib3JkZXI6 +IDBweDsgb3V0bGluZTogMHB4OyBmb250LWZhbWlseTogJ01pY3Jvc29mdCBZYWhlaSc7IGZvbnQt +c2l6ZTogMTNweDsgY29sb3I6IHJnYigxOTEsIDE5MSwgMTkxKTsiPkJlc3QgcmVnYXJkcyw8L3Nw +YW4+PC9kaXY+PGRpdiAgY2xhc3M9IiBfX2FsaXl1bl9ub2RlX2hhc19jb2xvciIgc3R5bGU9Im1h +cmdpbjogMHB4OyBwYWRkaW5nOiAwcHg7IGJvcmRlcjogMHB4OyBvdXRsaW5lOiAwcHg7IGNvbG9y +OiByZ2IoMCwgMCwgMCk7IGZvbnQtZmFtaWx5OiBUYWhvbWEsIEFyaWFsLCBTVEhlaXRpLCBTaW1T +dW47IGZvbnQtc2l6ZTogMTRweDsgZm9udC1zdHlsZTogbm9ybWFsOyBmb250LXZhcmlhbnQtbGln +YXR1cmVzOiBub3JtYWw7IGZvbnQtdmFyaWFudC1jYXBzOiBub3JtYWw7IGZvbnQtd2VpZ2h0OiA0 +MDA7IHRleHQtYWxpZ246IHN0YXJ0OyB0ZXh0LWluZGVudDogMHB4OyB0ZXh0LXRyYW5zZm9ybTog +bm9uZTsgdGV4dC1kZWNvcmF0aW9uLXRoaWNrbmVzczogaW5pdGlhbDsgdGV4dC1kZWNvcmF0aW9u +LXN0eWxlOiBpbml0aWFsOyB0ZXh0LWRlY29yYXRpb24tY29sb3I6IGluaXRpYWw7IGNsZWFyOiBi +b3RoOyI+PHNwYW4gIGNsYXNzPSIgX19hbGl5dW5fbm9kZV9oYXNfY29sb3IiIHN0eWxlPSJtYXJn +aW46IDBweDsgcGFkZGluZzogMHB4OyBib3JkZXI6IDBweDsgb3V0bGluZTogMHB4OyBmb250LWZh +bWlseTogJ01pY3Jvc29mdCBZYWhlaSc7IGZvbnQtc2l6ZTogMTNweDsgY29sb3I6IHJnYigxOTEs +IDE5MSwgMTkxKTsiPuadqOi9qTwvc3Bhbj48L2Rpdj48ZGl2ICBjbGFzcz0iIF9fYWxpeXVuX25v +ZGVfaGFzX2NvbG9yIiBzdHlsZT0ibWFyZ2luOiAwcHg7IHBhZGRpbmc6IDBweDsgYm9yZGVyOiAw +cHg7IG91dGxpbmU6IDBweDsgY29sb3I6IHJnYigwLCAwLCAwKTsgZm9udC1mYW1pbHk6IFRhaG9t +YSwgQXJpYWwsIFNUSGVpdGksIFNpbVN1bjsgZm9udC1zaXplOiAxNHB4OyBmb250LXN0eWxlOiBu +b3JtYWw7IGZvbnQtdmFyaWFudC1saWdhdHVyZXM6IG5vcm1hbDsgZm9udC12YXJpYW50LWNhcHM6 +IG5vcm1hbDsgZm9udC13ZWlnaHQ6IDQwMDsgdGV4dC1hbGlnbjogc3RhcnQ7IHRleHQtaW5kZW50 +OiAwcHg7IHRleHQtdHJhbnNmb3JtOiBub25lOyB0ZXh0LWRlY29yYXRpb24tdGhpY2tuZXNzOiBp +bml0aWFsOyB0ZXh0LWRlY29yYXRpb24tc3R5bGU6IGluaXRpYWw7IHRleHQtZGVjb3JhdGlvbi1j +b2xvcjogaW5pdGlhbDsgY2xlYXI6IGJvdGg7Ij48aW1nICBkYXRhLWFsaW1haWwtaW1nLXByb2Nl +c3NlZC1zcW0tZWRpdG9yPSJ0cnVlIiBoZWlnaHQ9IjY4IiBzcmM9ImNpZDoyMzc0NjM4Yy0wOTI1 +LTRkNWUtODRlOS02ZTQ3NDdhZjg2ZTkiIHdpZHRoPSIzMDAiIHN0eWxlPSJtYXJnaW46IDBweDsg +cGFkZGluZzogMHB4OyBib3JkZXI6IDBweDsgb3V0bGluZTogMHB4OyB2ZXJ0aWNhbC1hbGlnbjog +Ym90dG9tOyI+Jm5ic3A7PC9kaXY+PGRpdiAgY2xhc3M9IiBfX2FsaXl1bl9ub2RlX2hhc19jb2xv +ciIgc3R5bGU9Im1hcmdpbjogMHB4OyBwYWRkaW5nOiAwcHg7IGJvcmRlcjogMHB4OyBvdXRsaW5l +OiAwcHg7IGNvbG9yOiByZ2IoMCwgMCwgMCk7IGZvbnQtZmFtaWx5OiBUYWhvbWEsIEFyaWFsLCBT +VEhlaXRpLCBTaW1TdW47IGZvbnQtc2l6ZTogMTRweDsgZm9udC1zdHlsZTogbm9ybWFsOyBmb250 +LXZhcmlhbnQtbGlnYXR1cmVzOiBub3JtYWw7IGZvbnQtdmFyaWFudC1jYXBzOiBub3JtYWw7IGZv +bnQtd2VpZ2h0OiA0MDA7IHRleHQtYWxpZ246IHN0YXJ0OyB0ZXh0LWluZGVudDogMHB4OyB0ZXh0 +LXRyYW5zZm9ybTogbm9uZTsgdGV4dC1kZWNvcmF0aW9uLXRoaWNrbmVzczogaW5pdGlhbDsgdGV4 +dC1kZWNvcmF0aW9uLXN0eWxlOiBpbml0aWFsOyB0ZXh0LWRlY29yYXRpb24tY29sb3I6IGluaXRp +YWw7IGNsZWFyOiBib3RoOyI+PHNwYW4gIGNsYXNzPSIgX19hbGl5dW5fbm9kZV9oYXNfY29sb3Ii +IHN0eWxlPSJtYXJnaW46IDBweDsgcGFkZGluZzogMHB4OyBib3JkZXI6IDBweDsgb3V0bGluZTog +MHB4OyBmb250LWZhbWlseTogJ01pY3Jvc29mdCBZYWhlaSc7IGNvbG9yOiByZ2IoMTkxLCAxOTEs +IDE5MSk7Ij7lnLDlnYDvvJrkuK3lm73Ct+WNl+S6rOi9r+S7tuiwt+i9r+S7tuWkp+mBkzEx5Y+3 +6Iqx56We5aSn5Y6mM0Y8L3NwYW4+PC9kaXY+PGRpdiAgY2xhc3M9IiBfX2FsaXl1bl9ub2RlX2hh +c19jb2xvciIgc3R5bGU9Im1hcmdpbjogMHB4OyBwYWRkaW5nOiAwcHg7IGJvcmRlcjogMHB4OyBv +dXRsaW5lOiAwcHg7IGNvbG9yOiByZ2IoMCwgMCwgMCk7IGZvbnQtZmFtaWx5OiBUYWhvbWEsIEFy +aWFsLCBTVEhlaXRpLCBTaW1TdW47IGZvbnQtc2l6ZTogMTRweDsgZm9udC1zdHlsZTogbm9ybWFs +OyBmb250LXZhcmlhbnQtbGlnYXR1cmVzOiBub3JtYWw7IGZvbnQtdmFyaWFudC1jYXBzOiBub3Jt +YWw7IGZvbnQtd2VpZ2h0OiA0MDA7IHRleHQtYWxpZ246IHN0YXJ0OyB0ZXh0LWluZGVudDogMHB4 +OyB0ZXh0LXRyYW5zZm9ybTogbm9uZTsgdGV4dC1kZWNvcmF0aW9uLXRoaWNrbmVzczogaW5pdGlh +bDsgdGV4dC1kZWNvcmF0aW9uLXN0eWxlOiBpbml0aWFsOyB0ZXh0LWRlY29yYXRpb24tY29sb3I6 +IGluaXRpYWw7IGNsZWFyOiBib3RoOyI+PHNwYW4gIGNsYXNzPSIgX19hbGl5dW5fbm9kZV9oYXNf +Y29sb3IiIHN0eWxlPSJtYXJnaW46IDBweDsgcGFkZGluZzogMHB4OyBib3JkZXI6IDBweDsgb3V0 +bGluZTogMHB4OyBmb250LWZhbWlseTogJ01pY3Jvc29mdCBZYWhlaSc7IGNvbG9yOiByZ2IoMTkx +LCAxOTEsIDE5MSk7Ij7miYvmnLrvvJoxODcyNjEyODQ4OTwvc3Bhbj48L2Rpdj48ZGl2ICBjbGFz +cz0iIF9fYWxpeXVuX25vZGVfaGFzX2NvbG9yIiBzdHlsZT0ibWFyZ2luOiAwcHg7IHBhZGRpbmc6 +IDBweDsgYm9yZGVyOiAwcHg7IG91dGxpbmU6IDBweDsgY29sb3I6IHJnYigwLCAwLCAwKTsgZm9u +dC1mYW1pbHk6IFRhaG9tYSwgQXJpYWwsIFNUSGVpdGksIFNpbVN1bjsgZm9udC1zaXplOiAxNHB4 +OyBmb250LXN0eWxlOiBub3JtYWw7IGZvbnQtdmFyaWFudC1saWdhdHVyZXM6IG5vcm1hbDsgZm9u +dC12YXJpYW50LWNhcHM6IG5vcm1hbDsgZm9udC13ZWlnaHQ6IDQwMDsgdGV4dC1hbGlnbjogc3Rh +cnQ7IHRleHQtaW5kZW50OiAwcHg7IHRleHQtdHJhbnNmb3JtOiBub25lOyB0ZXh0LWRlY29yYXRp +b24tdGhpY2tuZXNzOiBpbml0aWFsOyB0ZXh0LWRlY29yYXRpb24tc3R5bGU6IGluaXRpYWw7IHRl +eHQtZGVjb3JhdGlvbi1jb2xvcjogaW5pdGlhbDsgY2xlYXI6IGJvdGg7Ij48c3BhbiAgY2xhc3M9 +IiBfX2FsaXl1bl9ub2RlX2hhc19jb2xvciIgc3R5bGU9Im1hcmdpbjogMHB4OyBwYWRkaW5nOiAw +cHg7IGJvcmRlcjogMHB4OyBvdXRsaW5lOiAwcHg7IGZvbnQtZmFtaWx5OiAnTWljcm9zb2Z0IFlh +aGVpJzsgY29sb3I6IHJnYigxOTEsIDE5MSwgMTkxKTsiPumCrueuse+8mnlhbmd4dWFuQHdpdHNv +ZnQuY248L3NwYW4+PC9kaXY+PC9kaXY+PHAgIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCIgc3R5 +bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhlcml0OyBtYXJnaW46 +IDEycHggMHB4OyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsgZm9u +dC12YXJpYW50LWxpZ2F0dXJlczogbm9ybWFsOyBmb250LXZhcmlhbnQtY2Fwczogbm9ybWFsOyBs +ZXR0ZXItc3BhY2luZzogbm9ybWFsOyB0ZXh0LWFsaWduOiBzdGFydDsgdGV4dC1pbmRlbnQ6IDBw +eDsgd29yZC1zcGFjaW5nOiAwcHg7IHRleHQtZGVjb3JhdGlvbi1zdHlsZTogaW5pdGlhbDsgdGV4 +dC1kZWNvcmF0aW9uLWNvbG9yOiBpbml0aWFsOyI+PGJyID48L3A+PC9kaXY+PC9kaXY+PC9ib2R5 +PjwvaHRtbD48L2Rpdj4= + +--=_mailmaster-6a18e4a4_0_63cb_=-- + +--=_mailmaster-6a18e4a4_0_6bfc_= +Content-Type: application/octet-stream +Content-Transfer-Encoding: base64 +Content-ID: <2374638c-0925-4d5e-84e9-6e4747af86e9> +Content-Disposition: inline; + filename="=?utf-8?B?57u05ouT56eR5oqALemCruS7tuetvuWQjWxvZ28ucG5n?=" + +iVBORw0KGgoAAAANSUhEUgAAASwAAABECAYAAAA7rQj2AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJ +bWFnZVJlYWR5ccllPAAAA4RpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdp +bj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6 +eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTQ1IDc5LjE2 +MzQ5OSwgMjAxOC8wOC8xMy0xNjo0MDoyMiAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJo +dHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlw +dGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEu +MC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVz +b3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1N +Ok9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDplYjhjYzQwMy1lNzZjLTQ5NDgtODFmOC1kNDIy +MmRkMTdhYjgiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NkVENzExMzg1MzBEMTFFQTg4QjNF +NEJFMUQyRjc1RkIiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NkVENzExMzc1MzBEMTFFQTg4 +QjNFNEJFMUQyRjc1RkIiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTkg +KFdpbmRvd3MpIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6 +ZmNkNTdlM2UtZThjYS05ZjQ2LWEzZTUtMWJlYmE2NjA5Y2FmIiBzdFJlZjpkb2N1bWVudElEPSJh +ZG9iZTpkb2NpZDpwaG90b3Nob3A6MzZkNmNjNTUtNTY3Yi01MTQ2LWEwYWYtMzBlMzEwMTMxNDFk +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 + +--=_mailmaster-6a18e4a4_0_6bfc_=-- diff --git a/media/inbound/2026-05-22_1713_周报_2026年5月18日_2026年5月22日---0afb54b9-d924-443a-bdec-5dccfc0af4b6.eml b/media/inbound/2026-05-22_1713_周报_2026年5月18日_2026年5月22日---0afb54b9-d924-443a-bdec-5dccfc0af4b6.eml new file mode 100644 index 0000000..7284833 --- /dev/null +++ b/media/inbound/2026-05-22_1713_周报_2026年5月18日_2026年5月22日---0afb54b9-d924-443a-bdec-5dccfc0af4b6.eml @@ -0,0 +1,491 @@ +Date: Fri, 22 May 2026 17:13:00 +0800 +From: =?utf-8?B?5p2o6L2p?= +To: =?utf-8?B?5YiY5by6?= +Cc: =?utf-8?B?5ZC0552/5Lic?= , =?utf-8?B?6ZmI5piO?= + , =?utf-8?B?5pu+6I6J?= +Message-ID: +In-Reply-To: +References: + +Subject: =?utf-8?B?5ZGo5oql77yIMjAyNuW5tDXmnIgxOOaXpSDvvI0gMjAyNuW5tDU=?= + =?utf-8?B?5pyIMjLml6XvvIk=?= +MIME-Version: 1.0 +Content-Type: multipart/related; boundary="=_mailmaster-6a18e4a4_0_7ff5_=" + +--=_mailmaster-6a18e4a4_0_7ff5_= +Content-Type: multipart/alternative; boundary="=_mailmaster-6a18e4a4_0_7f96_=" + +--=_mailmaster-6a18e4a4_0_7f96_= +Content-Type: text/plain; charset="UTF-8" +Content-Transfer-Encoding: base64 + +6aG555uu5ZCN56ew77yaIOe7tOS6keaZuumAoEc1CuS4u+imgeS7u+WKoe+8miDlupPlrZjniYjm +nKzpnIDmsYLlvIDlj5Hlj4rmjqXlj6Poh6rmtYsK5pys5ZGo5bel5L2c5YaF5a65CuWRqOS4gO+8 +iDIwMjYtMDUtMTjvvIkKCiAqIArnlJ/kuqflhaXlupPmjqXlj6PkvJjljJYKCiAqIArnur/kuIrp +l67popjmjpLmn6UKCiAqIArlhbbku5blhaXlupPmjqXlj6PlvIDlj5EK5ZGo5LqM77yIMjAyNi0w +NS0xOe+8iQoKICogCuWIoOmZpOWHuuW6k+WQjOaXtuWPlua2iOWHuuW6k+WKn+iDveWunueOsAoK +ICogCuWHuuW6k+aOpeWPo+WinuWKoOaJueasoeWHuuW6k+mAu+i+kQrlkajkuInvvIgyMDI2LTA1 +LTIw77yJCgogKiAK5Ye65YWl5bqT5p+l6K+i5o6l5Y+j5LyY5YyWCgogKiAK5YWl5bqT5rWB56iL +5Luj56CB6YeN5p6E77yM6ZmN5L2OU2VydmljZeWxguS7o+eggeihjOaVsArlkajlm5vvvIgyMDI2 +LTA1LTIx77yJCgogKiAK5p+l6K+i5o6l5Y+j6Ieq5rWL5bm26L2s5rWLCgogKiAK5YWl5bqT5paw +5aKe5o6l5Y+j6Ieq5rWLCgogKiAK5YWl5bqT5p+l6K+i5o6l5Y+j6Ieq5rWLCuWRqOS6lO+8iDIw +MjYtMDUtMjLvvIkKCiAqIArovazmtYvpl67popjkv67lpI0KCiAqIArplIDllK7lh7rlupPmjqXl +j6PlvIDlj5EK5a2Y5Zyo6Zeu6aKYCuacrOWRqOaaguaXoOiusOW9lemXrumimOOAggpCZXN0IHJl +Z2FyZHMsCuadqOi9qQrlnLDlnYDvvJrkuK3lm73Ct+WNl+S6rOi9r+S7tuiwt+i9r+S7tuWkp+mB +kzEx5Y+36Iqx56We5aSn5Y6mM0YK5omL5py677yaMTg3MjYxMjg0ODkK6YKu566x77yaeWFuZ3h1 +YW5Ad2l0c29mdC5jbgo= + +--=_mailmaster-6a18e4a4_0_7f96_= +Content-Type: text/html; charset="UTF-8" +Content-Transfer-Encoding: base64 + +PGRpdiBjbGFzcz0iX19hbGl5dW5fZW1haWxfYm9keV9ibG9jayI+PGRpdiAgc3R5bGU9ImZvbnQt +ZmFtaWx5OiBUYWhvbWEsIEFyaWFsLCBTVEhlaXRpU0MtTGlnaHQsIFNpbVN1biI+PGRpdiAgc3R5 +bGU9ImZvbnQtZmFtaWx5OiBUYWhvbWEsIEFyaWFsLCBTVEhlaXRpU0MtTGlnaHQsIFNpbVN1bjsg +Y2xlYXI6IGJvdGg7Ij48ZGl2ICBzdHlsZT0iY2xlYXI6IGJvdGg7IGZvbnQtZmFtaWx5OiBUYWhv +bWEsIEFyaWFsLCBTVEhlaXRpU0MtTGlnaHQsIFNpbVN1bjsiPjxzcGFuID48L3NwYW4+PGRpdiA+ +PC9kaXY+PHNwYW4gPjwvc3Bhbj48ZGl2ID48L2Rpdj48c3BhbiA+PC9zcGFuPjxwICBjbGFzcz0i +ZHMtbWFya2Rvd24tcGFyYWdyYXBoIF9fYWxpeXVuX25vZGVfaGFzX2NvbG9yIF9fYWxpeXVuX25v +ZGVfaGFzX2JnY29sb3IiIHN0eWxlPSJtYXJnaW46IDE2cHggMHB4OyBjb2xvcjogcmdiKDE1LCAx +NywgMjEpOyBmb250LWZhbWlseTogcXVvdGUtY2prLXBhdGNoLCBJbnRlciwgc3lzdGVtLXVpLCAt +YXBwbGUtc3lzdGVtLCBCbGlua01hY1N5c3RlbUZvbnQsICdTZWdvZSBVSScsIFJvYm90bywgT3h5 +Z2VuLCBVYnVudHUsIENhbnRhcmVsbCwgJ09wZW4gU2FucycsICdIZWx2ZXRpY2EgTmV1ZScsIHNh +bnMtc2VyaWY7IGZvbnQtc2l6ZTogMTZweDsgZm9udC1zdHlsZTogbm9ybWFsOyBmb250LXZhcmlh +bnQtbGlnYXR1cmVzOiBub3JtYWw7IGZvbnQtdmFyaWFudC1jYXBzOiBub3JtYWw7IGZvbnQtd2Vp +Z2h0OiA0MDA7IGxldHRlci1zcGFjaW5nOiBub3JtYWw7IHRleHQtYWxpZ246IHN0YXJ0OyB0ZXh0 +LWluZGVudDogMHB4OyB0ZXh0LXRyYW5zZm9ybTogbm9uZTsgd29yZC1zcGFjaW5nOiAwcHg7IHdo +aXRlLXNwYWNlOiBub3JtYWw7IGJhY2tncm91bmQtY29sb3I6IHJnYigyNTUsIDI1NSwgMjU1KTsg +dGV4dC1kZWNvcmF0aW9uLXRoaWNrbmVzczogaW5pdGlhbDsgdGV4dC1kZWNvcmF0aW9uLXN0eWxl +OiBpbml0aWFsOyB0ZXh0LWRlY29yYXRpb24tY29sb3I6IGluaXRpYWw7Ij48c3BhbiAgY2xhc3M9 +IiIgc3R5bGU9ImZvbnQtd2VpZ2h0OiA0MDA7Ij7pobnnm67lkI3np7DvvJo8L3NwYW4+PHNwYW4g +IGNsYXNzPSIiPjxzcGFuID4mbmJzcDs8L3NwYW4+57u05LqR5pm66YCgRzU8L3NwYW4+PGJyID48 +c3BhbiAgY2xhc3M9IiIgc3R5bGU9ImZvbnQtd2VpZ2h0OiA0MDA7Ij7kuLvopoHku7vliqHvvJo8 +L3NwYW4+PHNwYW4gIGNsYXNzPSIiPjxzcGFuID4mbmJzcDs8L3NwYW4+5bqT5a2Y54mI5pys6ZyA +5rGC5byA5Y+R5Y+K5o6l5Y+j6Ieq5rWLPC9zcGFuPjwvcD48aHIgIHN0eWxlPSJiYWNrZ3JvdW5k +OiBub25lIDAlIDAlIC8gYXV0byByZXBlYXQgc2Nyb2xsIHBhZGRpbmctYm94IGJvcmRlci1ib3gg +cmdiYSgwLCAwLCAwLCAwLjEpOyBib3JkZXItd2lkdGg6IG1lZGl1bTsgYm9yZGVyLXN0eWxlOiBu +b25lOyBib3JkZXItY29sb3I6IGN1cnJlbnRjb2xvcjsgYm9yZGVyLWltYWdlOiBpbml0aWFsOyBo +ZWlnaHQ6IDFweDsgbWFyZ2luOiAzMnB4IDBweDsgZGlzcGxheTogYmxvY2s7IGZvbnQtZmFtaWx5 +OiBxdW90ZS1jamstcGF0Y2gsIEludGVyLCBzeXN0ZW0tdWksIC1hcHBsZS1zeXN0ZW0sIEJsaW5r +TWFjU3lzdGVtRm9udCwgJ1NlZ29lIFVJJywgUm9ib3RvLCBPeHlnZW4sIFVidW50dSwgQ2FudGFy +ZWxsLCAnT3BlbiBTYW5zJywgJ0hlbHZldGljYSBOZXVlJywgc2Fucy1zZXJpZjsgZm9udC1zaXpl +OiAxNnB4OyBmb250LXN0eWxlOiBub3JtYWw7IGZvbnQtdmFyaWFudC1saWdhdHVyZXM6IG5vcm1h +bDsgZm9udC12YXJpYW50LWNhcHM6IG5vcm1hbDsgZm9udC13ZWlnaHQ6IDQwMDsgbGV0dGVyLXNw +YWNpbmc6IG5vcm1hbDsgb3JwaGFuczogMjsgdGV4dC1hbGlnbjogc3RhcnQ7IHRleHQtaW5kZW50 +OiAwcHg7IHRleHQtdHJhbnNmb3JtOiBub25lOyB3aWRvd3M6IDI7IHdvcmQtc3BhY2luZzogMHB4 +OyAtd2Via2l0LXRleHQtc3Ryb2tlLXdpZHRoOiAwcHg7IHdoaXRlLXNwYWNlOiBub3JtYWw7IHRl +eHQtZGVjb3JhdGlvbi10aGlja25lc3M6IGluaXRpYWw7IHRleHQtZGVjb3JhdGlvbi1zdHlsZTog +aW5pdGlhbDsgdGV4dC1kZWNvcmF0aW9uLWNvbG9yOiBpbml0aWFsOyI+PGg0ICBjbGFzcz0iIF9f +YWxpeXVuX25vZGVfaGFzX2NvbG9yIF9fYWxpeXVuX25vZGVfaGFzX2JnY29sb3IiIHN0eWxlPSJm +b250OiA2MDAgMTZweCAvIDI4cHggcXVvdGUtY2prLXBhdGNoLCBJbnRlciwgc3lzdGVtLXVpLCAt +YXBwbGUtc3lzdGVtLCBCbGlua01hY1N5c3RlbUZvbnQsICdTZWdvZSBVSScsIFJvYm90bywgT3h5 +Z2VuLCBVYnVudHUsIENhbnRhcmVsbCwgJ09wZW4gU2FucycsICdIZWx2ZXRpY2EgTmV1ZScsIHNh +bnMtc2VyaWY7IG1hcmdpbjogMTZweCAwcHg7IGNvbG9yOiByZ2IoMTUsIDE3LCAyMSk7IGxldHRl +ci1zcGFjaW5nOiBub3JtYWw7IHRleHQtYWxpZ246IHN0YXJ0OyB0ZXh0LWluZGVudDogMHB4OyB0 +ZXh0LXRyYW5zZm9ybTogbm9uZTsgd29yZC1zcGFjaW5nOiAwcHg7IHdoaXRlLXNwYWNlOiBub3Jt +YWw7IGJhY2tncm91bmQtY29sb3I6IHJnYigyNTUsIDI1NSwgMjU1KTsgdGV4dC1kZWNvcmF0aW9u +LXRoaWNrbmVzczogaW5pdGlhbDsgdGV4dC1kZWNvcmF0aW9uLXN0eWxlOiBpbml0aWFsOyB0ZXh0 +LWRlY29yYXRpb24tY29sb3I6IGluaXRpYWw7Ij48c3BhbiAgY2xhc3M9IiI+5pys5ZGo5bel5L2c +5YaF5a65PC9zcGFuPjwvaDQ+PHAgIGNsYXNzPSJkcy1tYXJrZG93bi1wYXJhZ3JhcGggX19hbGl5 +dW5fbm9kZV9oYXNfY29sb3IgX19hbGl5dW5fbm9kZV9oYXNfYmdjb2xvciIgc3R5bGU9Im1hcmdp +bjogMTZweCAwcHg7IGNvbG9yOiByZ2IoMTUsIDE3LCAyMSk7IGZvbnQtZmFtaWx5OiBxdW90ZS1j +amstcGF0Y2gsIEludGVyLCBzeXN0ZW0tdWksIC1hcHBsZS1zeXN0ZW0sIEJsaW5rTWFjU3lzdGVt +Rm9udCwgJ1NlZ29lIFVJJywgUm9ib3RvLCBPeHlnZW4sIFVidW50dSwgQ2FudGFyZWxsLCAnT3Bl +biBTYW5zJywgJ0hlbHZldGljYSBOZXVlJywgc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxNnB4OyBm +b250LXN0eWxlOiBub3JtYWw7IGZvbnQtdmFyaWFudC1saWdhdHVyZXM6IG5vcm1hbDsgZm9udC12 +YXJpYW50LWNhcHM6IG5vcm1hbDsgZm9udC13ZWlnaHQ6IDQwMDsgbGV0dGVyLXNwYWNpbmc6IG5v +cm1hbDsgdGV4dC1hbGlnbjogc3RhcnQ7IHRleHQtaW5kZW50OiAwcHg7IHRleHQtdHJhbnNmb3Jt +OiBub25lOyB3b3JkLXNwYWNpbmc6IDBweDsgd2hpdGUtc3BhY2U6IG5vcm1hbDsgYmFja2dyb3Vu +ZC1jb2xvcjogcmdiKDI1NSwgMjU1LCAyNTUpOyB0ZXh0LWRlY29yYXRpb24tdGhpY2tuZXNzOiBp +bml0aWFsOyB0ZXh0LWRlY29yYXRpb24tc3R5bGU6IGluaXRpYWw7IHRleHQtZGVjb3JhdGlvbi1j +b2xvcjogaW5pdGlhbDsiPjxzcGFuICBjbGFzcz0iIiBzdHlsZT0iZm9udC13ZWlnaHQ6IDQwMDsi +PuWRqOS4gO+8iDIwMjYtMDUtMTjvvIk8L3NwYW4+PC9wPjxvbCAgY2xhc3M9IiBfX2FsaXl1bl9u +b2RlX2hhc19jb2xvciBfX2FsaXl1bl9ub2RlX2hhc19iZ2NvbG9yIiBzdGFydD0iMSIgc3R5bGU9 +Im1hcmdpbjogMTZweCAwcHg7IHBhZGRpbmctbGVmdDogMThweDsgY29sb3I6IHJnYigxNSwgMTcs +IDIxKTsgZm9udC1mYW1pbHk6IHF1b3RlLWNqay1wYXRjaCwgSW50ZXIsIHN5c3RlbS11aSwgLWFw +cGxlLXN5c3RlbSwgQmxpbmtNYWNTeXN0ZW1Gb250LCAnU2Vnb2UgVUknLCBSb2JvdG8sIE94eWdl +biwgVWJ1bnR1LCBDYW50YXJlbGwsICdPcGVuIFNhbnMnLCAnSGVsdmV0aWNhIE5ldWUnLCBzYW5z +LXNlcmlmOyBmb250LXNpemU6IDE2cHg7IGZvbnQtc3R5bGU6IG5vcm1hbDsgZm9udC12YXJpYW50 +LWxpZ2F0dXJlczogbm9ybWFsOyBmb250LXZhcmlhbnQtY2Fwczogbm9ybWFsOyBmb250LXdlaWdo +dDogNDAwOyBsZXR0ZXItc3BhY2luZzogbm9ybWFsOyB0ZXh0LWFsaWduOiBzdGFydDsgdGV4dC1p +bmRlbnQ6IDBweDsgdGV4dC10cmFuc2Zvcm06IG5vbmU7IHdvcmQtc3BhY2luZzogMHB4OyB3aGl0 +ZS1zcGFjZTogbm9ybWFsOyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjU1LCAyNTUsIDI1NSk7IHRl +eHQtZGVjb3JhdGlvbi10aGlja25lc3M6IGluaXRpYWw7IHRleHQtZGVjb3JhdGlvbi1zdHlsZTog +aW5pdGlhbDsgdGV4dC1kZWNvcmF0aW9uLWNvbG9yOiBpbml0aWFsOyI+PGxpID48cCAgY2xhc3M9 +ImRzLW1hcmtkb3duLXBhcmFncmFwaCIgc3R5bGU9Im1hcmdpbi1yaWdodDogMHB4OyBtYXJnaW4t +Ym90dG9tOiAwcHg7IG1hcmdpbi1sZWZ0OiAwcHg7IG1hcmdpbi10b3A6IDBweCAhaW1wb3J0YW50 +OyI+PHNwYW4gIGNsYXNzPSIiPueUn+S6p+WFpeW6k+aOpeWPo+S8mOWMljwvc3Bhbj48L3A+PC9s +aT48bGkgIHN0eWxlPSJtYXJnaW4tdG9wOiA2cHg7Ij48cCAgY2xhc3M9ImRzLW1hcmtkb3duLXBh +cmFncmFwaCIgc3R5bGU9Im1hcmdpbi1yaWdodDogMHB4OyBtYXJnaW4tYm90dG9tOiAwcHg7IG1h +cmdpbi1sZWZ0OiAwcHg7IG1hcmdpbi10b3A6IDBweCAhaW1wb3J0YW50OyI+PHNwYW4gIGNsYXNz +PSIiPue6v+S4iumXrumimOaOkuafpTwvc3Bhbj48L3A+PC9saT48bGkgIHN0eWxlPSJtYXJnaW4t +dG9wOiA2cHg7Ij48cCAgY2xhc3M9ImRzLW1hcmtkb3duLXBhcmFncmFwaCIgc3R5bGU9Im1hcmdp +bi1yaWdodDogMHB4OyBtYXJnaW4tYm90dG9tOiAwcHg7IG1hcmdpbi1sZWZ0OiAwcHg7IG1hcmdp +bi10b3A6IDBweCAhaW1wb3J0YW50OyI+PHNwYW4gIGNsYXNzPSIiPuWFtuS7luWFpeW6k+aOpeWP +o+W8gOWPkTwvc3Bhbj48L3A+PC9saT48L29sPjxwICBjbGFzcz0iZHMtbWFya2Rvd24tcGFyYWdy +YXBoIF9fYWxpeXVuX25vZGVfaGFzX2NvbG9yIF9fYWxpeXVuX25vZGVfaGFzX2JnY29sb3IiIHN0 +eWxlPSJtYXJnaW46IDE2cHggMHB4OyBjb2xvcjogcmdiKDE1LCAxNywgMjEpOyBmb250LWZhbWls +eTogcXVvdGUtY2prLXBhdGNoLCBJbnRlciwgc3lzdGVtLXVpLCAtYXBwbGUtc3lzdGVtLCBCbGlu +a01hY1N5c3RlbUZvbnQsICdTZWdvZSBVSScsIFJvYm90bywgT3h5Z2VuLCBVYnVudHUsIENhbnRh +cmVsbCwgJ09wZW4gU2FucycsICdIZWx2ZXRpY2EgTmV1ZScsIHNhbnMtc2VyaWY7IGZvbnQtc2l6 +ZTogMTZweDsgZm9udC1zdHlsZTogbm9ybWFsOyBmb250LXZhcmlhbnQtbGlnYXR1cmVzOiBub3Jt +YWw7IGZvbnQtdmFyaWFudC1jYXBzOiBub3JtYWw7IGZvbnQtd2VpZ2h0OiA0MDA7IGxldHRlci1z +cGFjaW5nOiBub3JtYWw7IHRleHQtYWxpZ246IHN0YXJ0OyB0ZXh0LWluZGVudDogMHB4OyB0ZXh0 +LXRyYW5zZm9ybTogbm9uZTsgd29yZC1zcGFjaW5nOiAwcHg7IHdoaXRlLXNwYWNlOiBub3JtYWw7 +IGJhY2tncm91bmQtY29sb3I6IHJnYigyNTUsIDI1NSwgMjU1KTsgdGV4dC1kZWNvcmF0aW9uLXRo +aWNrbmVzczogaW5pdGlhbDsgdGV4dC1kZWNvcmF0aW9uLXN0eWxlOiBpbml0aWFsOyB0ZXh0LWRl +Y29yYXRpb24tY29sb3I6IGluaXRpYWw7Ij48c3BhbiAgY2xhc3M9IiIgc3R5bGU9ImZvbnQtd2Vp +Z2h0OiA0MDA7Ij7lkajkuozvvIgyMDI2LTA1LTE577yJPC9zcGFuPjwvcD48b2wgIGNsYXNzPSIg +X19hbGl5dW5fbm9kZV9oYXNfY29sb3IgX19hbGl5dW5fbm9kZV9oYXNfYmdjb2xvciIgc3RhcnQ9 +IjEiIHN0eWxlPSJtYXJnaW46IDE2cHggMHB4OyBwYWRkaW5nLWxlZnQ6IDE4cHg7IGNvbG9yOiBy +Z2IoMTUsIDE3LCAyMSk7IGZvbnQtZmFtaWx5OiBxdW90ZS1jamstcGF0Y2gsIEludGVyLCBzeXN0 +ZW0tdWksIC1hcHBsZS1zeXN0ZW0sIEJsaW5rTWFjU3lzdGVtRm9udCwgJ1NlZ29lIFVJJywgUm9i +b3RvLCBPeHlnZW4sIFVidW50dSwgQ2FudGFyZWxsLCAnT3BlbiBTYW5zJywgJ0hlbHZldGljYSBO +ZXVlJywgc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxNnB4OyBmb250LXN0eWxlOiBub3JtYWw7IGZv +bnQtdmFyaWFudC1saWdhdHVyZXM6IG5vcm1hbDsgZm9udC12YXJpYW50LWNhcHM6IG5vcm1hbDsg +Zm9udC13ZWlnaHQ6IDQwMDsgbGV0dGVyLXNwYWNpbmc6IG5vcm1hbDsgdGV4dC1hbGlnbjogc3Rh +cnQ7IHRleHQtaW5kZW50OiAwcHg7IHRleHQtdHJhbnNmb3JtOiBub25lOyB3b3JkLXNwYWNpbmc6 +IDBweDsgd2hpdGUtc3BhY2U6IG5vcm1hbDsgYmFja2dyb3VuZC1jb2xvcjogcmdiKDI1NSwgMjU1 +LCAyNTUpOyB0ZXh0LWRlY29yYXRpb24tdGhpY2tuZXNzOiBpbml0aWFsOyB0ZXh0LWRlY29yYXRp +b24tc3R5bGU6IGluaXRpYWw7IHRleHQtZGVjb3JhdGlvbi1jb2xvcjogaW5pdGlhbDsiPjxsaSA+ +PHAgIGNsYXNzPSJkcy1tYXJrZG93bi1wYXJhZ3JhcGgiIHN0eWxlPSJtYXJnaW4tcmlnaHQ6IDBw +eDsgbWFyZ2luLWJvdHRvbTogMHB4OyBtYXJnaW4tbGVmdDogMHB4OyBtYXJnaW4tdG9wOiAwcHgg +IWltcG9ydGFudDsiPjxzcGFuICBjbGFzcz0iIj7liKDpmaTlh7rlupPlkIzml7blj5bmtojlh7rl +upPlip/og73lrp7njrA8L3NwYW4+PC9wPjwvbGk+PGxpICBzdHlsZT0ibWFyZ2luLXRvcDogNnB4 +OyI+PHAgIGNsYXNzPSJkcy1tYXJrZG93bi1wYXJhZ3JhcGgiIHN0eWxlPSJtYXJnaW4tcmlnaHQ6 +IDBweDsgbWFyZ2luLWJvdHRvbTogMHB4OyBtYXJnaW4tbGVmdDogMHB4OyBtYXJnaW4tdG9wOiAw +cHggIWltcG9ydGFudDsiPjxzcGFuICBjbGFzcz0iIj7lh7rlupPmjqXlj6Plop7liqDmibnmrKHl +h7rlupPpgLvovpE8L3NwYW4+PC9wPjwvbGk+PC9vbD48cCAgY2xhc3M9ImRzLW1hcmtkb3duLXBh +cmFncmFwaCBfX2FsaXl1bl9ub2RlX2hhc19jb2xvciBfX2FsaXl1bl9ub2RlX2hhc19iZ2NvbG9y +IiBzdHlsZT0ibWFyZ2luOiAxNnB4IDBweDsgY29sb3I6IHJnYigxNSwgMTcsIDIxKTsgZm9udC1m +YW1pbHk6IHF1b3RlLWNqay1wYXRjaCwgSW50ZXIsIHN5c3RlbS11aSwgLWFwcGxlLXN5c3RlbSwg +QmxpbmtNYWNTeXN0ZW1Gb250LCAnU2Vnb2UgVUknLCBSb2JvdG8sIE94eWdlbiwgVWJ1bnR1LCBD +YW50YXJlbGwsICdPcGVuIFNhbnMnLCAnSGVsdmV0aWNhIE5ldWUnLCBzYW5zLXNlcmlmOyBmb250 +LXNpemU6IDE2cHg7IGZvbnQtc3R5bGU6IG5vcm1hbDsgZm9udC12YXJpYW50LWxpZ2F0dXJlczog +bm9ybWFsOyBmb250LXZhcmlhbnQtY2Fwczogbm9ybWFsOyBmb250LXdlaWdodDogNDAwOyBsZXR0 +ZXItc3BhY2luZzogbm9ybWFsOyB0ZXh0LWFsaWduOiBzdGFydDsgdGV4dC1pbmRlbnQ6IDBweDsg +dGV4dC10cmFuc2Zvcm06IG5vbmU7IHdvcmQtc3BhY2luZzogMHB4OyB3aGl0ZS1zcGFjZTogbm9y +bWFsOyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjU1LCAyNTUsIDI1NSk7IHRleHQtZGVjb3JhdGlv +bi10aGlja25lc3M6IGluaXRpYWw7IHRleHQtZGVjb3JhdGlvbi1zdHlsZTogaW5pdGlhbDsgdGV4 +dC1kZWNvcmF0aW9uLWNvbG9yOiBpbml0aWFsOyI+PHNwYW4gIGNsYXNzPSIiIHN0eWxlPSJmb250 +LXdlaWdodDogNDAwOyI+5ZGo5LiJ77yIMjAyNi0wNS0yMO+8iTwvc3Bhbj48L3A+PG9sICBjbGFz +cz0iIF9fYWxpeXVuX25vZGVfaGFzX2NvbG9yIF9fYWxpeXVuX25vZGVfaGFzX2JnY29sb3IiIHN0 +YXJ0PSIxIiBzdHlsZT0ibWFyZ2luOiAxNnB4IDBweDsgcGFkZGluZy1sZWZ0OiAxOHB4OyBjb2xv +cjogcmdiKDE1LCAxNywgMjEpOyBmb250LWZhbWlseTogcXVvdGUtY2prLXBhdGNoLCBJbnRlciwg +c3lzdGVtLXVpLCAtYXBwbGUtc3lzdGVtLCBCbGlua01hY1N5c3RlbUZvbnQsICdTZWdvZSBVSScs +IFJvYm90bywgT3h5Z2VuLCBVYnVudHUsIENhbnRhcmVsbCwgJ09wZW4gU2FucycsICdIZWx2ZXRp +Y2EgTmV1ZScsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTZweDsgZm9udC1zdHlsZTogbm9ybWFs +OyBmb250LXZhcmlhbnQtbGlnYXR1cmVzOiBub3JtYWw7IGZvbnQtdmFyaWFudC1jYXBzOiBub3Jt +YWw7IGZvbnQtd2VpZ2h0OiA0MDA7IGxldHRlci1zcGFjaW5nOiBub3JtYWw7IHRleHQtYWxpZ246 +IHN0YXJ0OyB0ZXh0LWluZGVudDogMHB4OyB0ZXh0LXRyYW5zZm9ybTogbm9uZTsgd29yZC1zcGFj +aW5nOiAwcHg7IHdoaXRlLXNwYWNlOiBub3JtYWw7IGJhY2tncm91bmQtY29sb3I6IHJnYigyNTUs +IDI1NSwgMjU1KTsgdGV4dC1kZWNvcmF0aW9uLXRoaWNrbmVzczogaW5pdGlhbDsgdGV4dC1kZWNv +cmF0aW9uLXN0eWxlOiBpbml0aWFsOyB0ZXh0LWRlY29yYXRpb24tY29sb3I6IGluaXRpYWw7Ij48 +bGkgPjxwICBjbGFzcz0iZHMtbWFya2Rvd24tcGFyYWdyYXBoIiBzdHlsZT0ibWFyZ2luLXJpZ2h0 +OiAwcHg7IG1hcmdpbi1ib3R0b206IDBweDsgbWFyZ2luLWxlZnQ6IDBweDsgbWFyZ2luLXRvcDog +MHB4ICFpbXBvcnRhbnQ7Ij48c3BhbiAgY2xhc3M9IiI+5Ye65YWl5bqT5p+l6K+i5o6l5Y+j5LyY +5YyWPC9zcGFuPjwvcD48L2xpPjxsaSAgc3R5bGU9Im1hcmdpbi10b3A6IDZweDsiPjxwICBjbGFz +cz0iZHMtbWFya2Rvd24tcGFyYWdyYXBoIiBzdHlsZT0ibWFyZ2luLXJpZ2h0OiAwcHg7IG1hcmdp +bi1ib3R0b206IDBweDsgbWFyZ2luLWxlZnQ6IDBweDsgbWFyZ2luLXRvcDogMHB4ICFpbXBvcnRh +bnQ7Ij48c3BhbiAgY2xhc3M9IiI+5YWl5bqT5rWB56iL5Luj56CB6YeN5p6E77yM6ZmN5L2OU2Vy +dmljZeWxguS7o+eggeihjOaVsDwvc3Bhbj48L3A+PC9saT48L29sPjxwICBjbGFzcz0iZHMtbWFy +a2Rvd24tcGFyYWdyYXBoIF9fYWxpeXVuX25vZGVfaGFzX2NvbG9yIF9fYWxpeXVuX25vZGVfaGFz +X2JnY29sb3IiIHN0eWxlPSJtYXJnaW46IDE2cHggMHB4OyBjb2xvcjogcmdiKDE1LCAxNywgMjEp +OyBmb250LWZhbWlseTogcXVvdGUtY2prLXBhdGNoLCBJbnRlciwgc3lzdGVtLXVpLCAtYXBwbGUt +c3lzdGVtLCBCbGlua01hY1N5c3RlbUZvbnQsICdTZWdvZSBVSScsIFJvYm90bywgT3h5Z2VuLCBV +YnVudHUsIENhbnRhcmVsbCwgJ09wZW4gU2FucycsICdIZWx2ZXRpY2EgTmV1ZScsIHNhbnMtc2Vy +aWY7IGZvbnQtc2l6ZTogMTZweDsgZm9udC1zdHlsZTogbm9ybWFsOyBmb250LXZhcmlhbnQtbGln +YXR1cmVzOiBub3JtYWw7IGZvbnQtdmFyaWFudC1jYXBzOiBub3JtYWw7IGZvbnQtd2VpZ2h0OiA0 +MDA7IGxldHRlci1zcGFjaW5nOiBub3JtYWw7IHRleHQtYWxpZ246IHN0YXJ0OyB0ZXh0LWluZGVu +dDogMHB4OyB0ZXh0LXRyYW5zZm9ybTogbm9uZTsgd29yZC1zcGFjaW5nOiAwcHg7IHdoaXRlLXNw +YWNlOiBub3JtYWw7IGJhY2tncm91bmQtY29sb3I6IHJnYigyNTUsIDI1NSwgMjU1KTsgdGV4dC1k +ZWNvcmF0aW9uLXRoaWNrbmVzczogaW5pdGlhbDsgdGV4dC1kZWNvcmF0aW9uLXN0eWxlOiBpbml0 +aWFsOyB0ZXh0LWRlY29yYXRpb24tY29sb3I6IGluaXRpYWw7Ij48c3BhbiAgY2xhc3M9IiIgc3R5 +bGU9ImZvbnQtd2VpZ2h0OiA0MDA7Ij7lkajlm5vvvIgyMDI2LTA1LTIx77yJPC9zcGFuPjwvcD48 +b2wgIGNsYXNzPSIgX19hbGl5dW5fbm9kZV9oYXNfY29sb3IgX19hbGl5dW5fbm9kZV9oYXNfYmdj +b2xvciIgc3RhcnQ9IjEiIHN0eWxlPSJtYXJnaW46IDE2cHggMHB4OyBwYWRkaW5nLWxlZnQ6IDE4 +cHg7IGNvbG9yOiByZ2IoMTUsIDE3LCAyMSk7IGZvbnQtZmFtaWx5OiBxdW90ZS1jamstcGF0Y2gs +IEludGVyLCBzeXN0ZW0tdWksIC1hcHBsZS1zeXN0ZW0sIEJsaW5rTWFjU3lzdGVtRm9udCwgJ1Nl +Z29lIFVJJywgUm9ib3RvLCBPeHlnZW4sIFVidW50dSwgQ2FudGFyZWxsLCAnT3BlbiBTYW5zJywg +J0hlbHZldGljYSBOZXVlJywgc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxNnB4OyBmb250LXN0eWxl +OiBub3JtYWw7IGZvbnQtdmFyaWFudC1saWdhdHVyZXM6IG5vcm1hbDsgZm9udC12YXJpYW50LWNh +cHM6IG5vcm1hbDsgZm9udC13ZWlnaHQ6IDQwMDsgbGV0dGVyLXNwYWNpbmc6IG5vcm1hbDsgdGV4 +dC1hbGlnbjogc3RhcnQ7IHRleHQtaW5kZW50OiAwcHg7IHRleHQtdHJhbnNmb3JtOiBub25lOyB3 +b3JkLXNwYWNpbmc6IDBweDsgd2hpdGUtc3BhY2U6IG5vcm1hbDsgYmFja2dyb3VuZC1jb2xvcjog +cmdiKDI1NSwgMjU1LCAyNTUpOyB0ZXh0LWRlY29yYXRpb24tdGhpY2tuZXNzOiBpbml0aWFsOyB0 +ZXh0LWRlY29yYXRpb24tc3R5bGU6IGluaXRpYWw7IHRleHQtZGVjb3JhdGlvbi1jb2xvcjogaW5p +dGlhbDsiPjxsaSA+PHAgIGNsYXNzPSJkcy1tYXJrZG93bi1wYXJhZ3JhcGgiIHN0eWxlPSJtYXJn +aW4tcmlnaHQ6IDBweDsgbWFyZ2luLWJvdHRvbTogMHB4OyBtYXJnaW4tbGVmdDogMHB4OyBtYXJn +aW4tdG9wOiAwcHggIWltcG9ydGFudDsiPjxzcGFuICBjbGFzcz0iIj7mn6Xor6LmjqXlj6Poh6rm +tYvlubbovazmtYs8L3NwYW4+PC9wPjwvbGk+PGxpICBzdHlsZT0ibWFyZ2luLXRvcDogNnB4OyI+ +PHAgIGNsYXNzPSJkcy1tYXJrZG93bi1wYXJhZ3JhcGgiIHN0eWxlPSJtYXJnaW4tcmlnaHQ6IDBw +eDsgbWFyZ2luLWJvdHRvbTogMHB4OyBtYXJnaW4tbGVmdDogMHB4OyBtYXJnaW4tdG9wOiAwcHgg +IWltcG9ydGFudDsiPjxzcGFuICBjbGFzcz0iIj7lhaXlupPmlrDlop7mjqXlj6Poh6rmtYs8L3Nw +YW4+PC9wPjwvbGk+PGxpICBzdHlsZT0ibWFyZ2luLXRvcDogNnB4OyI+PHAgIGNsYXNzPSJkcy1t +YXJrZG93bi1wYXJhZ3JhcGgiIHN0eWxlPSJtYXJnaW4tcmlnaHQ6IDBweDsgbWFyZ2luLWJvdHRv +bTogMHB4OyBtYXJnaW4tbGVmdDogMHB4OyBtYXJnaW4tdG9wOiAwcHggIWltcG9ydGFudDsiPjxz +cGFuICBjbGFzcz0iIj7lhaXlupPmn6Xor6LmjqXlj6Poh6rmtYs8L3NwYW4+PC9wPjwvbGk+PC9v +bD48cCAgY2xhc3M9ImRzLW1hcmtkb3duLXBhcmFncmFwaCBfX2FsaXl1bl9ub2RlX2hhc19jb2xv +ciBfX2FsaXl1bl9ub2RlX2hhc19iZ2NvbG9yIiBzdHlsZT0ibWFyZ2luOiAxNnB4IDBweDsgY29s +b3I6IHJnYigxNSwgMTcsIDIxKTsgZm9udC1mYW1pbHk6IHF1b3RlLWNqay1wYXRjaCwgSW50ZXIs +IHN5c3RlbS11aSwgLWFwcGxlLXN5c3RlbSwgQmxpbmtNYWNTeXN0ZW1Gb250LCAnU2Vnb2UgVUkn +LCBSb2JvdG8sIE94eWdlbiwgVWJ1bnR1LCBDYW50YXJlbGwsICdPcGVuIFNhbnMnLCAnSGVsdmV0 +aWNhIE5ldWUnLCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDE2cHg7IGZvbnQtc3R5bGU6IG5vcm1h +bDsgZm9udC12YXJpYW50LWxpZ2F0dXJlczogbm9ybWFsOyBmb250LXZhcmlhbnQtY2Fwczogbm9y +bWFsOyBmb250LXdlaWdodDogNDAwOyBsZXR0ZXItc3BhY2luZzogbm9ybWFsOyB0ZXh0LWFsaWdu +OiBzdGFydDsgdGV4dC1pbmRlbnQ6IDBweDsgdGV4dC10cmFuc2Zvcm06IG5vbmU7IHdvcmQtc3Bh +Y2luZzogMHB4OyB3aGl0ZS1zcGFjZTogbm9ybWFsOyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjU1 +LCAyNTUsIDI1NSk7IHRleHQtZGVjb3JhdGlvbi10aGlja25lc3M6IGluaXRpYWw7IHRleHQtZGVj +b3JhdGlvbi1zdHlsZTogaW5pdGlhbDsgdGV4dC1kZWNvcmF0aW9uLWNvbG9yOiBpbml0aWFsOyI+ +PHNwYW4gIGNsYXNzPSIiIHN0eWxlPSJmb250LXdlaWdodDogNDAwOyI+5ZGo5LqU77yIMjAyNi0w +NS0yMu+8iTwvc3Bhbj48L3A+PG9sICBjbGFzcz0iIF9fYWxpeXVuX25vZGVfaGFzX2NvbG9yIF9f +YWxpeXVuX25vZGVfaGFzX2JnY29sb3IiIHN0YXJ0PSIxIiBzdHlsZT0ibWFyZ2luOiAxNnB4IDBw +eDsgcGFkZGluZy1sZWZ0OiAxOHB4OyBjb2xvcjogcmdiKDE1LCAxNywgMjEpOyBmb250LWZhbWls +eTogcXVvdGUtY2prLXBhdGNoLCBJbnRlciwgc3lzdGVtLXVpLCAtYXBwbGUtc3lzdGVtLCBCbGlu +a01hY1N5c3RlbUZvbnQsICdTZWdvZSBVSScsIFJvYm90bywgT3h5Z2VuLCBVYnVudHUsIENhbnRh +cmVsbCwgJ09wZW4gU2FucycsICdIZWx2ZXRpY2EgTmV1ZScsIHNhbnMtc2VyaWY7IGZvbnQtc2l6 +ZTogMTZweDsgZm9udC1zdHlsZTogbm9ybWFsOyBmb250LXZhcmlhbnQtbGlnYXR1cmVzOiBub3Jt +YWw7IGZvbnQtdmFyaWFudC1jYXBzOiBub3JtYWw7IGZvbnQtd2VpZ2h0OiA0MDA7IGxldHRlci1z +cGFjaW5nOiBub3JtYWw7IHRleHQtYWxpZ246IHN0YXJ0OyB0ZXh0LWluZGVudDogMHB4OyB0ZXh0 +LXRyYW5zZm9ybTogbm9uZTsgd29yZC1zcGFjaW5nOiAwcHg7IHdoaXRlLXNwYWNlOiBub3JtYWw7 +IGJhY2tncm91bmQtY29sb3I6IHJnYigyNTUsIDI1NSwgMjU1KTsgdGV4dC1kZWNvcmF0aW9uLXRo +aWNrbmVzczogaW5pdGlhbDsgdGV4dC1kZWNvcmF0aW9uLXN0eWxlOiBpbml0aWFsOyB0ZXh0LWRl +Y29yYXRpb24tY29sb3I6IGluaXRpYWw7Ij48bGkgPjxwICBjbGFzcz0iZHMtbWFya2Rvd24tcGFy +YWdyYXBoIiBzdHlsZT0ibWFyZ2luLXJpZ2h0OiAwcHg7IG1hcmdpbi1ib3R0b206IDBweDsgbWFy +Z2luLWxlZnQ6IDBweDsgbWFyZ2luLXRvcDogMHB4ICFpbXBvcnRhbnQ7Ij48c3BhbiAgY2xhc3M9 +IiI+6L2s5rWL6Zeu6aKY5L+u5aSNPC9zcGFuPjwvcD48L2xpPjxsaSAgc3R5bGU9Im1hcmdpbi10 +b3A6IDZweDsiPjxwICBjbGFzcz0iZHMtbWFya2Rvd24tcGFyYWdyYXBoIiBzdHlsZT0ibWFyZ2lu +LXJpZ2h0OiAwcHg7IG1hcmdpbi1ib3R0b206IDBweDsgbWFyZ2luLWxlZnQ6IDBweDsgbWFyZ2lu +LXRvcDogMHB4ICFpbXBvcnRhbnQ7Ij48c3BhbiAgY2xhc3M9IiI+6ZSA5ZSu5Ye65bqT5o6l5Y+j +5byA5Y+RPC9zcGFuPjwvcD48L2xpPjwvb2w+PGhyICBzdHlsZT0iYmFja2dyb3VuZDogbm9uZSAw +JSAwJSAvIGF1dG8gcmVwZWF0IHNjcm9sbCBwYWRkaW5nLWJveCBib3JkZXItYm94IHJnYmEoMCwg +MCwgMCwgMC4xKTsgYm9yZGVyLXdpZHRoOiBtZWRpdW07IGJvcmRlci1zdHlsZTogbm9uZTsgYm9y +ZGVyLWNvbG9yOiBjdXJyZW50Y29sb3I7IGJvcmRlci1pbWFnZTogaW5pdGlhbDsgaGVpZ2h0OiAx +cHg7IG1hcmdpbjogMzJweCAwcHg7IGRpc3BsYXk6IGJsb2NrOyBmb250LWZhbWlseTogcXVvdGUt +Y2prLXBhdGNoLCBJbnRlciwgc3lzdGVtLXVpLCAtYXBwbGUtc3lzdGVtLCBCbGlua01hY1N5c3Rl +bUZvbnQsICdTZWdvZSBVSScsIFJvYm90bywgT3h5Z2VuLCBVYnVudHUsIENhbnRhcmVsbCwgJ09w +ZW4gU2FucycsICdIZWx2ZXRpY2EgTmV1ZScsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTZweDsg +Zm9udC1zdHlsZTogbm9ybWFsOyBmb250LXZhcmlhbnQtbGlnYXR1cmVzOiBub3JtYWw7IGZvbnQt +dmFyaWFudC1jYXBzOiBub3JtYWw7IGZvbnQtd2VpZ2h0OiA0MDA7IGxldHRlci1zcGFjaW5nOiBu +b3JtYWw7IG9ycGhhbnM6IDI7IHRleHQtYWxpZ246IHN0YXJ0OyB0ZXh0LWluZGVudDogMHB4OyB0 +ZXh0LXRyYW5zZm9ybTogbm9uZTsgd2lkb3dzOiAyOyB3b3JkLXNwYWNpbmc6IDBweDsgLXdlYmtp +dC10ZXh0LXN0cm9rZS13aWR0aDogMHB4OyB3aGl0ZS1zcGFjZTogbm9ybWFsOyB0ZXh0LWRlY29y +YXRpb24tdGhpY2tuZXNzOiBpbml0aWFsOyB0ZXh0LWRlY29yYXRpb24tc3R5bGU6IGluaXRpYWw7 +IHRleHQtZGVjb3JhdGlvbi1jb2xvcjogaW5pdGlhbDsiPjxoNCAgY2xhc3M9IiBfX2FsaXl1bl9u +b2RlX2hhc19jb2xvciBfX2FsaXl1bl9ub2RlX2hhc19iZ2NvbG9yIiBzdHlsZT0iZm9udDogNjAw +IDE2cHggLyAyOHB4IHF1b3RlLWNqay1wYXRjaCwgSW50ZXIsIHN5c3RlbS11aSwgLWFwcGxlLXN5 +c3RlbSwgQmxpbmtNYWNTeXN0ZW1Gb250LCAnU2Vnb2UgVUknLCBSb2JvdG8sIE94eWdlbiwgVWJ1 +bnR1LCBDYW50YXJlbGwsICdPcGVuIFNhbnMnLCAnSGVsdmV0aWNhIE5ldWUnLCBzYW5zLXNlcmlm +OyBtYXJnaW46IDE2cHggMHB4OyBjb2xvcjogcmdiKDE1LCAxNywgMjEpOyBsZXR0ZXItc3BhY2lu +Zzogbm9ybWFsOyB0ZXh0LWFsaWduOiBzdGFydDsgdGV4dC1pbmRlbnQ6IDBweDsgdGV4dC10cmFu +c2Zvcm06IG5vbmU7IHdvcmQtc3BhY2luZzogMHB4OyB3aGl0ZS1zcGFjZTogbm9ybWFsOyBiYWNr +Z3JvdW5kLWNvbG9yOiByZ2IoMjU1LCAyNTUsIDI1NSk7IHRleHQtZGVjb3JhdGlvbi10aGlja25l +c3M6IGluaXRpYWw7IHRleHQtZGVjb3JhdGlvbi1zdHlsZTogaW5pdGlhbDsgdGV4dC1kZWNvcmF0 +aW9uLWNvbG9yOiBpbml0aWFsOyI+PHNwYW4gIGNsYXNzPSIiPuWtmOWcqOmXrumimDwvc3Bhbj48 +L2g0PjxwICBjbGFzcz0iZHMtbWFya2Rvd24tcGFyYWdyYXBoIF9fYWxpeXVuX25vZGVfaGFzX2Nv +bG9yIF9fYWxpeXVuX25vZGVfaGFzX2JnY29sb3IiIHN0eWxlPSJtYXJnaW46IDE2cHggMHB4OyBj +b2xvcjogcmdiKDE1LCAxNywgMjEpOyBmb250LWZhbWlseTogcXVvdGUtY2prLXBhdGNoLCBJbnRl +ciwgc3lzdGVtLXVpLCAtYXBwbGUtc3lzdGVtLCBCbGlua01hY1N5c3RlbUZvbnQsICdTZWdvZSBV +SScsIFJvYm90bywgT3h5Z2VuLCBVYnVudHUsIENhbnRhcmVsbCwgJ09wZW4gU2FucycsICdIZWx2 +ZXRpY2EgTmV1ZScsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTZweDsgZm9udC1zdHlsZTogbm9y +bWFsOyBmb250LXZhcmlhbnQtbGlnYXR1cmVzOiBub3JtYWw7IGZvbnQtdmFyaWFudC1jYXBzOiBu +b3JtYWw7IGZvbnQtd2VpZ2h0OiA0MDA7IGxldHRlci1zcGFjaW5nOiBub3JtYWw7IHRleHQtYWxp +Z246IHN0YXJ0OyB0ZXh0LWluZGVudDogMHB4OyB0ZXh0LXRyYW5zZm9ybTogbm9uZTsgd29yZC1z +cGFjaW5nOiAwcHg7IHdoaXRlLXNwYWNlOiBub3JtYWw7IGJhY2tncm91bmQtY29sb3I6IHJnYigy +NTUsIDI1NSwgMjU1KTsgdGV4dC1kZWNvcmF0aW9uLXRoaWNrbmVzczogaW5pdGlhbDsgdGV4dC1k +ZWNvcmF0aW9uLXN0eWxlOiBpbml0aWFsOyB0ZXh0LWRlY29yYXRpb24tY29sb3I6IGluaXRpYWw7 +Ij48c3BhbiAgY2xhc3M9IiI+5pys5ZGo5pqC5peg6K6w5b2V6Zeu6aKY44CCPC9zcGFuPjwvcD48 +ZGl2ID48L2Rpdj48c3BhbiA+PC9zcGFuPjxkaXYgPjwvZGl2PjxzcGFuID48YnIgPjwvc3Bhbj48 +L2Rpdj48ZGl2ICBzdHlsZT0iY2xlYXI6IGJvdGg7IGZvbnQtZmFtaWx5OiBUYWhvbWEsIEFyaWFs +LCBTVEhlaXRpU0MtTGlnaHQsIFNpbVN1bjsiPjxzcGFuID48YnIgPjwvc3Bhbj48L2Rpdj48ZGl2 +ICBzdHlsZT0iY2xlYXI6IGJvdGg7IGZvbnQtZmFtaWx5OiBUYWhvbWEsIEFyaWFsLCBTVEhlaXRp +U0MtTGlnaHQsIFNpbVN1bjsiPjxzcGFuID48YnIgPjwvc3Bhbj48L2Rpdj48ZGl2ICBzdHlsZT0i +Y2xlYXI6IGJvdGg7Ij48ZGl2ICBjbGFzcz0iIF9fYWxpeXVuX25vZGVfaGFzX2NvbG9yIiBzdHls +ZT0ibWFyZ2luOiAwcHg7IHBhZGRpbmc6IDBweDsgYm9yZGVyOiAwcHg7IG91dGxpbmU6IDBweDsg +Y29sb3I6IHJnYigwLCAwLCAwKTsgZm9udC1mYW1pbHk6IFRhaG9tYSwgQXJpYWwsIFNUSGVpdGks +IFNpbVN1bjsgZm9udC1zaXplOiAxNHB4OyBmb250LXN0eWxlOiBub3JtYWw7IGZvbnQtdmFyaWFu +dC1saWdhdHVyZXM6IG5vcm1hbDsgZm9udC12YXJpYW50LWNhcHM6IG5vcm1hbDsgZm9udC13ZWln +aHQ6IDQwMDsgdGV4dC1hbGlnbjogc3RhcnQ7IHRleHQtaW5kZW50OiAwcHg7IHRleHQtdHJhbnNm +b3JtOiBub25lOyB0ZXh0LWRlY29yYXRpb24tdGhpY2tuZXNzOiBpbml0aWFsOyB0ZXh0LWRlY29y +YXRpb24tc3R5bGU6IGluaXRpYWw7IHRleHQtZGVjb3JhdGlvbi1jb2xvcjogaW5pdGlhbDsgY2xl +YXI6IGJvdGg7Ij48c3BhbiAgY2xhc3M9IiBfX2FsaXl1bl9ub2RlX2hhc19jb2xvciIgc3R5bGU9 +Im1hcmdpbjogMHB4OyBwYWRkaW5nOiAwcHg7IGJvcmRlcjogMHB4OyBvdXRsaW5lOiAwcHg7IGZv +bnQtZmFtaWx5OiAnTWljcm9zb2Z0IFlhaGVpJzsgZm9udC1zaXplOiAxM3B4OyBjb2xvcjogcmdi +KDE5MSwgMTkxLCAxOTEpOyI+QmVzdCByZWdhcmRzLDwvc3Bhbj48L2Rpdj48ZGl2ICBjbGFzcz0i +IF9fYWxpeXVuX25vZGVfaGFzX2NvbG9yIiBzdHlsZT0ibWFyZ2luOiAwcHg7IHBhZGRpbmc6IDBw +eDsgYm9yZGVyOiAwcHg7IG91dGxpbmU6IDBweDsgY29sb3I6IHJnYigwLCAwLCAwKTsgZm9udC1m +YW1pbHk6IFRhaG9tYSwgQXJpYWwsIFNUSGVpdGksIFNpbVN1bjsgZm9udC1zaXplOiAxNHB4OyBm +b250LXN0eWxlOiBub3JtYWw7IGZvbnQtdmFyaWFudC1saWdhdHVyZXM6IG5vcm1hbDsgZm9udC12 +YXJpYW50LWNhcHM6IG5vcm1hbDsgZm9udC13ZWlnaHQ6IDQwMDsgdGV4dC1hbGlnbjogc3RhcnQ7 +IHRleHQtaW5kZW50OiAwcHg7IHRleHQtdHJhbnNmb3JtOiBub25lOyB0ZXh0LWRlY29yYXRpb24t +dGhpY2tuZXNzOiBpbml0aWFsOyB0ZXh0LWRlY29yYXRpb24tc3R5bGU6IGluaXRpYWw7IHRleHQt +ZGVjb3JhdGlvbi1jb2xvcjogaW5pdGlhbDsgY2xlYXI6IGJvdGg7Ij48c3BhbiAgY2xhc3M9IiBf +X2FsaXl1bl9ub2RlX2hhc19jb2xvciIgc3R5bGU9Im1hcmdpbjogMHB4OyBwYWRkaW5nOiAwcHg7 +IGJvcmRlcjogMHB4OyBvdXRsaW5lOiAwcHg7IGZvbnQtZmFtaWx5OiAnTWljcm9zb2Z0IFlhaGVp +JzsgZm9udC1zaXplOiAxM3B4OyBjb2xvcjogcmdiKDE5MSwgMTkxLCAxOTEpOyI+5p2o6L2pPC9z +cGFuPjwvZGl2PjxkaXYgIGNsYXNzPSIgX19hbGl5dW5fbm9kZV9oYXNfY29sb3IiIHN0eWxlPSJt +YXJnaW46IDBweDsgcGFkZGluZzogMHB4OyBib3JkZXI6IDBweDsgb3V0bGluZTogMHB4OyBjb2xv +cjogcmdiKDAsIDAsIDApOyBmb250LWZhbWlseTogVGFob21hLCBBcmlhbCwgU1RIZWl0aSwgU2lt +U3VuOyBmb250LXNpemU6IDE0cHg7IGZvbnQtc3R5bGU6IG5vcm1hbDsgZm9udC12YXJpYW50LWxp +Z2F0dXJlczogbm9ybWFsOyBmb250LXZhcmlhbnQtY2Fwczogbm9ybWFsOyBmb250LXdlaWdodDog +NDAwOyB0ZXh0LWFsaWduOiBzdGFydDsgdGV4dC1pbmRlbnQ6IDBweDsgdGV4dC10cmFuc2Zvcm06 +IG5vbmU7IHRleHQtZGVjb3JhdGlvbi10aGlja25lc3M6IGluaXRpYWw7IHRleHQtZGVjb3JhdGlv +bi1zdHlsZTogaW5pdGlhbDsgdGV4dC1kZWNvcmF0aW9uLWNvbG9yOiBpbml0aWFsOyBjbGVhcjog +Ym90aDsiPjxpbWcgIGRhdGEtYWxpbWFpbC1pbWctcHJvY2Vzc2VkLXNxbS1lZGl0b3I9InRydWUi +IGhlaWdodD0iNjgiIHNyYz0iY2lkOl9fYWxpeXVuMTc3OTQxNDEyNjU4OTY2NjYxIiB3aWR0aD0i +MzAwIiBzdHlsZT0ibWFyZ2luOiAwcHg7IHBhZGRpbmc6IDBweDsgYm9yZGVyOiAwcHg7IG91dGxp +bmU6IDBweDsgdmVydGljYWwtYWxpZ246IGJvdHRvbTsiPiZuYnNwOzwvZGl2PjxkaXYgIGNsYXNz +PSIgX19hbGl5dW5fbm9kZV9oYXNfY29sb3IiIHN0eWxlPSJtYXJnaW46IDBweDsgcGFkZGluZzog +MHB4OyBib3JkZXI6IDBweDsgb3V0bGluZTogMHB4OyBjb2xvcjogcmdiKDAsIDAsIDApOyBmb250 +LWZhbWlseTogVGFob21hLCBBcmlhbCwgU1RIZWl0aSwgU2ltU3VuOyBmb250LXNpemU6IDE0cHg7 +IGZvbnQtc3R5bGU6IG5vcm1hbDsgZm9udC12YXJpYW50LWxpZ2F0dXJlczogbm9ybWFsOyBmb250 +LXZhcmlhbnQtY2Fwczogbm9ybWFsOyBmb250LXdlaWdodDogNDAwOyB0ZXh0LWFsaWduOiBzdGFy +dDsgdGV4dC1pbmRlbnQ6IDBweDsgdGV4dC10cmFuc2Zvcm06IG5vbmU7IHRleHQtZGVjb3JhdGlv +bi10aGlja25lc3M6IGluaXRpYWw7IHRleHQtZGVjb3JhdGlvbi1zdHlsZTogaW5pdGlhbDsgdGV4 +dC1kZWNvcmF0aW9uLWNvbG9yOiBpbml0aWFsOyBjbGVhcjogYm90aDsiPjxzcGFuICBjbGFzcz0i +IF9fYWxpeXVuX25vZGVfaGFzX2NvbG9yIiBzdHlsZT0ibWFyZ2luOiAwcHg7IHBhZGRpbmc6IDBw +eDsgYm9yZGVyOiAwcHg7IG91dGxpbmU6IDBweDsgZm9udC1mYW1pbHk6ICdNaWNyb3NvZnQgWWFo +ZWknOyBjb2xvcjogcmdiKDE5MSwgMTkxLCAxOTEpOyI+5Zyw5Z2A77ya5Lit5Zu9wrfljZfkuqzo +va/ku7bosLfova/ku7blpKfpgZMxMeWPt+iKseelnuWkp+WOpjNGPC9zcGFuPjwvZGl2PjxkaXYg +IGNsYXNzPSIgX19hbGl5dW5fbm9kZV9oYXNfY29sb3IiIHN0eWxlPSJtYXJnaW46IDBweDsgcGFk +ZGluZzogMHB4OyBib3JkZXI6IDBweDsgb3V0bGluZTogMHB4OyBjb2xvcjogcmdiKDAsIDAsIDAp +OyBmb250LWZhbWlseTogVGFob21hLCBBcmlhbCwgU1RIZWl0aSwgU2ltU3VuOyBmb250LXNpemU6 +IDE0cHg7IGZvbnQtc3R5bGU6IG5vcm1hbDsgZm9udC12YXJpYW50LWxpZ2F0dXJlczogbm9ybWFs +OyBmb250LXZhcmlhbnQtY2Fwczogbm9ybWFsOyBmb250LXdlaWdodDogNDAwOyB0ZXh0LWFsaWdu +OiBzdGFydDsgdGV4dC1pbmRlbnQ6IDBweDsgdGV4dC10cmFuc2Zvcm06IG5vbmU7IHRleHQtZGVj +b3JhdGlvbi10aGlja25lc3M6IGluaXRpYWw7IHRleHQtZGVjb3JhdGlvbi1zdHlsZTogaW5pdGlh +bDsgdGV4dC1kZWNvcmF0aW9uLWNvbG9yOiBpbml0aWFsOyBjbGVhcjogYm90aDsiPjxzcGFuICBj +bGFzcz0iIF9fYWxpeXVuX25vZGVfaGFzX2NvbG9yIiBzdHlsZT0ibWFyZ2luOiAwcHg7IHBhZGRp +bmc6IDBweDsgYm9yZGVyOiAwcHg7IG91dGxpbmU6IDBweDsgZm9udC1mYW1pbHk6ICdNaWNyb3Nv +ZnQgWWFoZWknOyBjb2xvcjogcmdiKDE5MSwgMTkxLCAxOTEpOyI+5omL5py677yaMTg3MjYxMjg0 +ODk8L3NwYW4+PC9kaXY+PGRpdiAgY2xhc3M9IiBfX2FsaXl1bl9ub2RlX2hhc19jb2xvciIgc3R5 +bGU9Im1hcmdpbjogMHB4OyBwYWRkaW5nOiAwcHg7IGJvcmRlcjogMHB4OyBvdXRsaW5lOiAwcHg7 +IGNvbG9yOiByZ2IoMCwgMCwgMCk7IGZvbnQtZmFtaWx5OiBUYWhvbWEsIEFyaWFsLCBTVEhlaXRp +LCBTaW1TdW47IGZvbnQtc2l6ZTogMTRweDsgZm9udC1zdHlsZTogbm9ybWFsOyBmb250LXZhcmlh +bnQtbGlnYXR1cmVzOiBub3JtYWw7IGZvbnQtdmFyaWFudC1jYXBzOiBub3JtYWw7IGZvbnQtd2Vp +Z2h0OiA0MDA7IHRleHQtYWxpZ246IHN0YXJ0OyB0ZXh0LWluZGVudDogMHB4OyB0ZXh0LXRyYW5z +Zm9ybTogbm9uZTsgdGV4dC1kZWNvcmF0aW9uLXRoaWNrbmVzczogaW5pdGlhbDsgdGV4dC1kZWNv +cmF0aW9uLXN0eWxlOiBpbml0aWFsOyB0ZXh0LWRlY29yYXRpb24tY29sb3I6IGluaXRpYWw7IGNs +ZWFyOiBib3RoOyI+PHNwYW4gIGNsYXNzPSIgX19hbGl5dW5fbm9kZV9oYXNfY29sb3IiIHN0eWxl +PSJtYXJnaW46IDBweDsgcGFkZGluZzogMHB4OyBib3JkZXI6IDBweDsgb3V0bGluZTogMHB4OyBm +b250LWZhbWlseTogJ01pY3Jvc29mdCBZYWhlaSc7IGNvbG9yOiByZ2IoMTkxLCAxOTEsIDE5MSk7 +Ij7pgq7nrrHvvJp5YW5neHVhbkB3aXRzb2Z0LmNuPC9zcGFuPjwvZGl2PjwvZGl2PjxwICBjbGFz +cz0ibWQtZW5kLWJsb2NrIG1kLXAiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5l +LWhlaWdodDogaW5oZXJpdDsgbWFyZ2luOiAxMnB4IDBweDsgd2hpdGUtc3BhY2U6IHByZS13cmFw +OyBwb3NpdGlvbjogcmVsYXRpdmU7IGZvbnQtdmFyaWFudC1saWdhdHVyZXM6IG5vcm1hbDsgZm9u +dC12YXJpYW50LWNhcHM6IG5vcm1hbDsgbGV0dGVyLXNwYWNpbmc6IG5vcm1hbDsgdGV4dC1hbGln +bjogc3RhcnQ7IHRleHQtaW5kZW50OiAwcHg7IHdvcmQtc3BhY2luZzogMHB4OyB0ZXh0LWRlY29y +YXRpb24tc3R5bGU6IGluaXRpYWw7IHRleHQtZGVjb3JhdGlvbi1jb2xvcjogaW5pdGlhbDsiPjxi +ciA+PC9wPjwvZGl2PjwvZGl2PjwvZGl2Pg== + +--=_mailmaster-6a18e4a4_0_7f96_=-- + +--=_mailmaster-6a18e4a4_0_7ff5_= +Content-Type: application/octet-stream +Content-Transfer-Encoding: base64 +Content-ID: <__aliyun177941412658966661> +Content-Disposition: inline; + filename="=?utf-8?B?57u05ouT56eR5oqALemCruS7tuetvuWQjWxvZ28ucG5n?=" + +iVBORw0KGgoAAAANSUhEUgAAASwAAABECAYAAAA7rQj2AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJ +bWFnZVJlYWR5ccllPAAAA4RpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdp +bj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6 +eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTQ1IDc5LjE2 +MzQ5OSwgMjAxOC8wOC8xMy0xNjo0MDoyMiAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJo +dHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlw +dGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEu +MC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVz +b3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1N +Ok9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDplYjhjYzQwMy1lNzZjLTQ5NDgtODFmOC1kNDIy +MmRkMTdhYjgiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NkVENzExMzg1MzBEMTFFQTg4QjNF +NEJFMUQyRjc1RkIiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NkVENzExMzc1MzBEMTFFQTg4 +QjNFNEJFMUQyRjc1RkIiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTkg +KFdpbmRvd3MpIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6 +ZmNkNTdlM2UtZThjYS05ZjQ2LWEzZTUtMWJlYmE2NjA5Y2FmIiBzdFJlZjpkb2N1bWVudElEPSJh +ZG9iZTpkb2NpZDpwaG90b3Nob3A6MzZkNmNjNTUtNTY3Yi01MTQ2LWEwYWYtMzBlMzEwMTMxNDFk +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 + +--=_mailmaster-6a18e4a4_0_7ff5_=-- diff --git a/media/inbound/2026-05-22_1713_周报_2026年5月18日_2026年5月22日---28bff81e-17b9-44d3-9bbf-45875fc0b426.eml b/media/inbound/2026-05-22_1713_周报_2026年5月18日_2026年5月22日---28bff81e-17b9-44d3-9bbf-45875fc0b426.eml new file mode 100644 index 0000000..7284833 --- /dev/null +++ b/media/inbound/2026-05-22_1713_周报_2026年5月18日_2026年5月22日---28bff81e-17b9-44d3-9bbf-45875fc0b426.eml @@ -0,0 +1,491 @@ +Date: Fri, 22 May 2026 17:13:00 +0800 +From: =?utf-8?B?5p2o6L2p?= +To: =?utf-8?B?5YiY5by6?= +Cc: =?utf-8?B?5ZC0552/5Lic?= , =?utf-8?B?6ZmI5piO?= + , =?utf-8?B?5pu+6I6J?= +Message-ID: +In-Reply-To: +References: + +Subject: =?utf-8?B?5ZGo5oql77yIMjAyNuW5tDXmnIgxOOaXpSDvvI0gMjAyNuW5tDU=?= + =?utf-8?B?5pyIMjLml6XvvIk=?= +MIME-Version: 1.0 +Content-Type: multipart/related; boundary="=_mailmaster-6a18e4a4_0_7ff5_=" + +--=_mailmaster-6a18e4a4_0_7ff5_= +Content-Type: multipart/alternative; boundary="=_mailmaster-6a18e4a4_0_7f96_=" + +--=_mailmaster-6a18e4a4_0_7f96_= +Content-Type: text/plain; charset="UTF-8" +Content-Transfer-Encoding: base64 + +6aG555uu5ZCN56ew77yaIOe7tOS6keaZuumAoEc1CuS4u+imgeS7u+WKoe+8miDlupPlrZjniYjm +nKzpnIDmsYLlvIDlj5Hlj4rmjqXlj6Poh6rmtYsK5pys5ZGo5bel5L2c5YaF5a65CuWRqOS4gO+8 +iDIwMjYtMDUtMTjvvIkKCiAqIArnlJ/kuqflhaXlupPmjqXlj6PkvJjljJYKCiAqIArnur/kuIrp +l67popjmjpLmn6UKCiAqIArlhbbku5blhaXlupPmjqXlj6PlvIDlj5EK5ZGo5LqM77yIMjAyNi0w +NS0xOe+8iQoKICogCuWIoOmZpOWHuuW6k+WQjOaXtuWPlua2iOWHuuW6k+WKn+iDveWunueOsAoK +ICogCuWHuuW6k+aOpeWPo+WinuWKoOaJueasoeWHuuW6k+mAu+i+kQrlkajkuInvvIgyMDI2LTA1 +LTIw77yJCgogKiAK5Ye65YWl5bqT5p+l6K+i5o6l5Y+j5LyY5YyWCgogKiAK5YWl5bqT5rWB56iL +5Luj56CB6YeN5p6E77yM6ZmN5L2OU2VydmljZeWxguS7o+eggeihjOaVsArlkajlm5vvvIgyMDI2 +LTA1LTIx77yJCgogKiAK5p+l6K+i5o6l5Y+j6Ieq5rWL5bm26L2s5rWLCgogKiAK5YWl5bqT5paw +5aKe5o6l5Y+j6Ieq5rWLCgogKiAK5YWl5bqT5p+l6K+i5o6l5Y+j6Ieq5rWLCuWRqOS6lO+8iDIw +MjYtMDUtMjLvvIkKCiAqIArovazmtYvpl67popjkv67lpI0KCiAqIArplIDllK7lh7rlupPmjqXl +j6PlvIDlj5EK5a2Y5Zyo6Zeu6aKYCuacrOWRqOaaguaXoOiusOW9lemXrumimOOAggpCZXN0IHJl +Z2FyZHMsCuadqOi9qQrlnLDlnYDvvJrkuK3lm73Ct+WNl+S6rOi9r+S7tuiwt+i9r+S7tuWkp+mB +kzEx5Y+36Iqx56We5aSn5Y6mM0YK5omL5py677yaMTg3MjYxMjg0ODkK6YKu566x77yaeWFuZ3h1 +YW5Ad2l0c29mdC5jbgo= + +--=_mailmaster-6a18e4a4_0_7f96_= +Content-Type: text/html; charset="UTF-8" +Content-Transfer-Encoding: base64 + +PGRpdiBjbGFzcz0iX19hbGl5dW5fZW1haWxfYm9keV9ibG9jayI+PGRpdiAgc3R5bGU9ImZvbnQt +ZmFtaWx5OiBUYWhvbWEsIEFyaWFsLCBTVEhlaXRpU0MtTGlnaHQsIFNpbVN1biI+PGRpdiAgc3R5 +bGU9ImZvbnQtZmFtaWx5OiBUYWhvbWEsIEFyaWFsLCBTVEhlaXRpU0MtTGlnaHQsIFNpbVN1bjsg +Y2xlYXI6IGJvdGg7Ij48ZGl2ICBzdHlsZT0iY2xlYXI6IGJvdGg7IGZvbnQtZmFtaWx5OiBUYWhv +bWEsIEFyaWFsLCBTVEhlaXRpU0MtTGlnaHQsIFNpbVN1bjsiPjxzcGFuID48L3NwYW4+PGRpdiA+ +PC9kaXY+PHNwYW4gPjwvc3Bhbj48ZGl2ID48L2Rpdj48c3BhbiA+PC9zcGFuPjxwICBjbGFzcz0i +ZHMtbWFya2Rvd24tcGFyYWdyYXBoIF9fYWxpeXVuX25vZGVfaGFzX2NvbG9yIF9fYWxpeXVuX25v +ZGVfaGFzX2JnY29sb3IiIHN0eWxlPSJtYXJnaW46IDE2cHggMHB4OyBjb2xvcjogcmdiKDE1LCAx +NywgMjEpOyBmb250LWZhbWlseTogcXVvdGUtY2prLXBhdGNoLCBJbnRlciwgc3lzdGVtLXVpLCAt +YXBwbGUtc3lzdGVtLCBCbGlua01hY1N5c3RlbUZvbnQsICdTZWdvZSBVSScsIFJvYm90bywgT3h5 +Z2VuLCBVYnVudHUsIENhbnRhcmVsbCwgJ09wZW4gU2FucycsICdIZWx2ZXRpY2EgTmV1ZScsIHNh +bnMtc2VyaWY7IGZvbnQtc2l6ZTogMTZweDsgZm9udC1zdHlsZTogbm9ybWFsOyBmb250LXZhcmlh +bnQtbGlnYXR1cmVzOiBub3JtYWw7IGZvbnQtdmFyaWFudC1jYXBzOiBub3JtYWw7IGZvbnQtd2Vp +Z2h0OiA0MDA7IGxldHRlci1zcGFjaW5nOiBub3JtYWw7IHRleHQtYWxpZ246IHN0YXJ0OyB0ZXh0 +LWluZGVudDogMHB4OyB0ZXh0LXRyYW5zZm9ybTogbm9uZTsgd29yZC1zcGFjaW5nOiAwcHg7IHdo +aXRlLXNwYWNlOiBub3JtYWw7IGJhY2tncm91bmQtY29sb3I6IHJnYigyNTUsIDI1NSwgMjU1KTsg +dGV4dC1kZWNvcmF0aW9uLXRoaWNrbmVzczogaW5pdGlhbDsgdGV4dC1kZWNvcmF0aW9uLXN0eWxl +OiBpbml0aWFsOyB0ZXh0LWRlY29yYXRpb24tY29sb3I6IGluaXRpYWw7Ij48c3BhbiAgY2xhc3M9 +IiIgc3R5bGU9ImZvbnQtd2VpZ2h0OiA0MDA7Ij7pobnnm67lkI3np7DvvJo8L3NwYW4+PHNwYW4g +IGNsYXNzPSIiPjxzcGFuID4mbmJzcDs8L3NwYW4+57u05LqR5pm66YCgRzU8L3NwYW4+PGJyID48 +c3BhbiAgY2xhc3M9IiIgc3R5bGU9ImZvbnQtd2VpZ2h0OiA0MDA7Ij7kuLvopoHku7vliqHvvJo8 +L3NwYW4+PHNwYW4gIGNsYXNzPSIiPjxzcGFuID4mbmJzcDs8L3NwYW4+5bqT5a2Y54mI5pys6ZyA +5rGC5byA5Y+R5Y+K5o6l5Y+j6Ieq5rWLPC9zcGFuPjwvcD48aHIgIHN0eWxlPSJiYWNrZ3JvdW5k +OiBub25lIDAlIDAlIC8gYXV0byByZXBlYXQgc2Nyb2xsIHBhZGRpbmctYm94IGJvcmRlci1ib3gg +cmdiYSgwLCAwLCAwLCAwLjEpOyBib3JkZXItd2lkdGg6IG1lZGl1bTsgYm9yZGVyLXN0eWxlOiBu +b25lOyBib3JkZXItY29sb3I6IGN1cnJlbnRjb2xvcjsgYm9yZGVyLWltYWdlOiBpbml0aWFsOyBo +ZWlnaHQ6IDFweDsgbWFyZ2luOiAzMnB4IDBweDsgZGlzcGxheTogYmxvY2s7IGZvbnQtZmFtaWx5 +OiBxdW90ZS1jamstcGF0Y2gsIEludGVyLCBzeXN0ZW0tdWksIC1hcHBsZS1zeXN0ZW0sIEJsaW5r +TWFjU3lzdGVtRm9udCwgJ1NlZ29lIFVJJywgUm9ib3RvLCBPeHlnZW4sIFVidW50dSwgQ2FudGFy +ZWxsLCAnT3BlbiBTYW5zJywgJ0hlbHZldGljYSBOZXVlJywgc2Fucy1zZXJpZjsgZm9udC1zaXpl +OiAxNnB4OyBmb250LXN0eWxlOiBub3JtYWw7IGZvbnQtdmFyaWFudC1saWdhdHVyZXM6IG5vcm1h +bDsgZm9udC12YXJpYW50LWNhcHM6IG5vcm1hbDsgZm9udC13ZWlnaHQ6IDQwMDsgbGV0dGVyLXNw +YWNpbmc6IG5vcm1hbDsgb3JwaGFuczogMjsgdGV4dC1hbGlnbjogc3RhcnQ7IHRleHQtaW5kZW50 +OiAwcHg7IHRleHQtdHJhbnNmb3JtOiBub25lOyB3aWRvd3M6IDI7IHdvcmQtc3BhY2luZzogMHB4 +OyAtd2Via2l0LXRleHQtc3Ryb2tlLXdpZHRoOiAwcHg7IHdoaXRlLXNwYWNlOiBub3JtYWw7IHRl +eHQtZGVjb3JhdGlvbi10aGlja25lc3M6IGluaXRpYWw7IHRleHQtZGVjb3JhdGlvbi1zdHlsZTog +aW5pdGlhbDsgdGV4dC1kZWNvcmF0aW9uLWNvbG9yOiBpbml0aWFsOyI+PGg0ICBjbGFzcz0iIF9f +YWxpeXVuX25vZGVfaGFzX2NvbG9yIF9fYWxpeXVuX25vZGVfaGFzX2JnY29sb3IiIHN0eWxlPSJm +b250OiA2MDAgMTZweCAvIDI4cHggcXVvdGUtY2prLXBhdGNoLCBJbnRlciwgc3lzdGVtLXVpLCAt +YXBwbGUtc3lzdGVtLCBCbGlua01hY1N5c3RlbUZvbnQsICdTZWdvZSBVSScsIFJvYm90bywgT3h5 +Z2VuLCBVYnVudHUsIENhbnRhcmVsbCwgJ09wZW4gU2FucycsICdIZWx2ZXRpY2EgTmV1ZScsIHNh +bnMtc2VyaWY7IG1hcmdpbjogMTZweCAwcHg7IGNvbG9yOiByZ2IoMTUsIDE3LCAyMSk7IGxldHRl +ci1zcGFjaW5nOiBub3JtYWw7IHRleHQtYWxpZ246IHN0YXJ0OyB0ZXh0LWluZGVudDogMHB4OyB0 +ZXh0LXRyYW5zZm9ybTogbm9uZTsgd29yZC1zcGFjaW5nOiAwcHg7IHdoaXRlLXNwYWNlOiBub3Jt +YWw7IGJhY2tncm91bmQtY29sb3I6IHJnYigyNTUsIDI1NSwgMjU1KTsgdGV4dC1kZWNvcmF0aW9u +LXRoaWNrbmVzczogaW5pdGlhbDsgdGV4dC1kZWNvcmF0aW9uLXN0eWxlOiBpbml0aWFsOyB0ZXh0 +LWRlY29yYXRpb24tY29sb3I6IGluaXRpYWw7Ij48c3BhbiAgY2xhc3M9IiI+5pys5ZGo5bel5L2c +5YaF5a65PC9zcGFuPjwvaDQ+PHAgIGNsYXNzPSJkcy1tYXJrZG93bi1wYXJhZ3JhcGggX19hbGl5 +dW5fbm9kZV9oYXNfY29sb3IgX19hbGl5dW5fbm9kZV9oYXNfYmdjb2xvciIgc3R5bGU9Im1hcmdp +bjogMTZweCAwcHg7IGNvbG9yOiByZ2IoMTUsIDE3LCAyMSk7IGZvbnQtZmFtaWx5OiBxdW90ZS1j +amstcGF0Y2gsIEludGVyLCBzeXN0ZW0tdWksIC1hcHBsZS1zeXN0ZW0sIEJsaW5rTWFjU3lzdGVt +Rm9udCwgJ1NlZ29lIFVJJywgUm9ib3RvLCBPeHlnZW4sIFVidW50dSwgQ2FudGFyZWxsLCAnT3Bl +biBTYW5zJywgJ0hlbHZldGljYSBOZXVlJywgc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxNnB4OyBm +b250LXN0eWxlOiBub3JtYWw7IGZvbnQtdmFyaWFudC1saWdhdHVyZXM6IG5vcm1hbDsgZm9udC12 +YXJpYW50LWNhcHM6IG5vcm1hbDsgZm9udC13ZWlnaHQ6IDQwMDsgbGV0dGVyLXNwYWNpbmc6IG5v +cm1hbDsgdGV4dC1hbGlnbjogc3RhcnQ7IHRleHQtaW5kZW50OiAwcHg7IHRleHQtdHJhbnNmb3Jt +OiBub25lOyB3b3JkLXNwYWNpbmc6IDBweDsgd2hpdGUtc3BhY2U6IG5vcm1hbDsgYmFja2dyb3Vu +ZC1jb2xvcjogcmdiKDI1NSwgMjU1LCAyNTUpOyB0ZXh0LWRlY29yYXRpb24tdGhpY2tuZXNzOiBp +bml0aWFsOyB0ZXh0LWRlY29yYXRpb24tc3R5bGU6IGluaXRpYWw7IHRleHQtZGVjb3JhdGlvbi1j +b2xvcjogaW5pdGlhbDsiPjxzcGFuICBjbGFzcz0iIiBzdHlsZT0iZm9udC13ZWlnaHQ6IDQwMDsi +PuWRqOS4gO+8iDIwMjYtMDUtMTjvvIk8L3NwYW4+PC9wPjxvbCAgY2xhc3M9IiBfX2FsaXl1bl9u +b2RlX2hhc19jb2xvciBfX2FsaXl1bl9ub2RlX2hhc19iZ2NvbG9yIiBzdGFydD0iMSIgc3R5bGU9 +Im1hcmdpbjogMTZweCAwcHg7IHBhZGRpbmctbGVmdDogMThweDsgY29sb3I6IHJnYigxNSwgMTcs +IDIxKTsgZm9udC1mYW1pbHk6IHF1b3RlLWNqay1wYXRjaCwgSW50ZXIsIHN5c3RlbS11aSwgLWFw +cGxlLXN5c3RlbSwgQmxpbmtNYWNTeXN0ZW1Gb250LCAnU2Vnb2UgVUknLCBSb2JvdG8sIE94eWdl +biwgVWJ1bnR1LCBDYW50YXJlbGwsICdPcGVuIFNhbnMnLCAnSGVsdmV0aWNhIE5ldWUnLCBzYW5z +LXNlcmlmOyBmb250LXNpemU6IDE2cHg7IGZvbnQtc3R5bGU6IG5vcm1hbDsgZm9udC12YXJpYW50 +LWxpZ2F0dXJlczogbm9ybWFsOyBmb250LXZhcmlhbnQtY2Fwczogbm9ybWFsOyBmb250LXdlaWdo +dDogNDAwOyBsZXR0ZXItc3BhY2luZzogbm9ybWFsOyB0ZXh0LWFsaWduOiBzdGFydDsgdGV4dC1p +bmRlbnQ6IDBweDsgdGV4dC10cmFuc2Zvcm06IG5vbmU7IHdvcmQtc3BhY2luZzogMHB4OyB3aGl0 +ZS1zcGFjZTogbm9ybWFsOyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjU1LCAyNTUsIDI1NSk7IHRl +eHQtZGVjb3JhdGlvbi10aGlja25lc3M6IGluaXRpYWw7IHRleHQtZGVjb3JhdGlvbi1zdHlsZTog +aW5pdGlhbDsgdGV4dC1kZWNvcmF0aW9uLWNvbG9yOiBpbml0aWFsOyI+PGxpID48cCAgY2xhc3M9 +ImRzLW1hcmtkb3duLXBhcmFncmFwaCIgc3R5bGU9Im1hcmdpbi1yaWdodDogMHB4OyBtYXJnaW4t +Ym90dG9tOiAwcHg7IG1hcmdpbi1sZWZ0OiAwcHg7IG1hcmdpbi10b3A6IDBweCAhaW1wb3J0YW50 +OyI+PHNwYW4gIGNsYXNzPSIiPueUn+S6p+WFpeW6k+aOpeWPo+S8mOWMljwvc3Bhbj48L3A+PC9s +aT48bGkgIHN0eWxlPSJtYXJnaW4tdG9wOiA2cHg7Ij48cCAgY2xhc3M9ImRzLW1hcmtkb3duLXBh +cmFncmFwaCIgc3R5bGU9Im1hcmdpbi1yaWdodDogMHB4OyBtYXJnaW4tYm90dG9tOiAwcHg7IG1h +cmdpbi1sZWZ0OiAwcHg7IG1hcmdpbi10b3A6IDBweCAhaW1wb3J0YW50OyI+PHNwYW4gIGNsYXNz +PSIiPue6v+S4iumXrumimOaOkuafpTwvc3Bhbj48L3A+PC9saT48bGkgIHN0eWxlPSJtYXJnaW4t +dG9wOiA2cHg7Ij48cCAgY2xhc3M9ImRzLW1hcmtkb3duLXBhcmFncmFwaCIgc3R5bGU9Im1hcmdp +bi1yaWdodDogMHB4OyBtYXJnaW4tYm90dG9tOiAwcHg7IG1hcmdpbi1sZWZ0OiAwcHg7IG1hcmdp +bi10b3A6IDBweCAhaW1wb3J0YW50OyI+PHNwYW4gIGNsYXNzPSIiPuWFtuS7luWFpeW6k+aOpeWP +o+W8gOWPkTwvc3Bhbj48L3A+PC9saT48L29sPjxwICBjbGFzcz0iZHMtbWFya2Rvd24tcGFyYWdy +YXBoIF9fYWxpeXVuX25vZGVfaGFzX2NvbG9yIF9fYWxpeXVuX25vZGVfaGFzX2JnY29sb3IiIHN0 +eWxlPSJtYXJnaW46IDE2cHggMHB4OyBjb2xvcjogcmdiKDE1LCAxNywgMjEpOyBmb250LWZhbWls +eTogcXVvdGUtY2prLXBhdGNoLCBJbnRlciwgc3lzdGVtLXVpLCAtYXBwbGUtc3lzdGVtLCBCbGlu +a01hY1N5c3RlbUZvbnQsICdTZWdvZSBVSScsIFJvYm90bywgT3h5Z2VuLCBVYnVudHUsIENhbnRh +cmVsbCwgJ09wZW4gU2FucycsICdIZWx2ZXRpY2EgTmV1ZScsIHNhbnMtc2VyaWY7IGZvbnQtc2l6 +ZTogMTZweDsgZm9udC1zdHlsZTogbm9ybWFsOyBmb250LXZhcmlhbnQtbGlnYXR1cmVzOiBub3Jt +YWw7IGZvbnQtdmFyaWFudC1jYXBzOiBub3JtYWw7IGZvbnQtd2VpZ2h0OiA0MDA7IGxldHRlci1z +cGFjaW5nOiBub3JtYWw7IHRleHQtYWxpZ246IHN0YXJ0OyB0ZXh0LWluZGVudDogMHB4OyB0ZXh0 +LXRyYW5zZm9ybTogbm9uZTsgd29yZC1zcGFjaW5nOiAwcHg7IHdoaXRlLXNwYWNlOiBub3JtYWw7 +IGJhY2tncm91bmQtY29sb3I6IHJnYigyNTUsIDI1NSwgMjU1KTsgdGV4dC1kZWNvcmF0aW9uLXRo +aWNrbmVzczogaW5pdGlhbDsgdGV4dC1kZWNvcmF0aW9uLXN0eWxlOiBpbml0aWFsOyB0ZXh0LWRl +Y29yYXRpb24tY29sb3I6IGluaXRpYWw7Ij48c3BhbiAgY2xhc3M9IiIgc3R5bGU9ImZvbnQtd2Vp +Z2h0OiA0MDA7Ij7lkajkuozvvIgyMDI2LTA1LTE577yJPC9zcGFuPjwvcD48b2wgIGNsYXNzPSIg +X19hbGl5dW5fbm9kZV9oYXNfY29sb3IgX19hbGl5dW5fbm9kZV9oYXNfYmdjb2xvciIgc3RhcnQ9 +IjEiIHN0eWxlPSJtYXJnaW46IDE2cHggMHB4OyBwYWRkaW5nLWxlZnQ6IDE4cHg7IGNvbG9yOiBy +Z2IoMTUsIDE3LCAyMSk7IGZvbnQtZmFtaWx5OiBxdW90ZS1jamstcGF0Y2gsIEludGVyLCBzeXN0 +ZW0tdWksIC1hcHBsZS1zeXN0ZW0sIEJsaW5rTWFjU3lzdGVtRm9udCwgJ1NlZ29lIFVJJywgUm9i +b3RvLCBPeHlnZW4sIFVidW50dSwgQ2FudGFyZWxsLCAnT3BlbiBTYW5zJywgJ0hlbHZldGljYSBO +ZXVlJywgc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxNnB4OyBmb250LXN0eWxlOiBub3JtYWw7IGZv +bnQtdmFyaWFudC1saWdhdHVyZXM6IG5vcm1hbDsgZm9udC12YXJpYW50LWNhcHM6IG5vcm1hbDsg +Zm9udC13ZWlnaHQ6IDQwMDsgbGV0dGVyLXNwYWNpbmc6IG5vcm1hbDsgdGV4dC1hbGlnbjogc3Rh +cnQ7IHRleHQtaW5kZW50OiAwcHg7IHRleHQtdHJhbnNmb3JtOiBub25lOyB3b3JkLXNwYWNpbmc6 +IDBweDsgd2hpdGUtc3BhY2U6IG5vcm1hbDsgYmFja2dyb3VuZC1jb2xvcjogcmdiKDI1NSwgMjU1 +LCAyNTUpOyB0ZXh0LWRlY29yYXRpb24tdGhpY2tuZXNzOiBpbml0aWFsOyB0ZXh0LWRlY29yYXRp +b24tc3R5bGU6IGluaXRpYWw7IHRleHQtZGVjb3JhdGlvbi1jb2xvcjogaW5pdGlhbDsiPjxsaSA+ +PHAgIGNsYXNzPSJkcy1tYXJrZG93bi1wYXJhZ3JhcGgiIHN0eWxlPSJtYXJnaW4tcmlnaHQ6IDBw +eDsgbWFyZ2luLWJvdHRvbTogMHB4OyBtYXJnaW4tbGVmdDogMHB4OyBtYXJnaW4tdG9wOiAwcHgg +IWltcG9ydGFudDsiPjxzcGFuICBjbGFzcz0iIj7liKDpmaTlh7rlupPlkIzml7blj5bmtojlh7rl +upPlip/og73lrp7njrA8L3NwYW4+PC9wPjwvbGk+PGxpICBzdHlsZT0ibWFyZ2luLXRvcDogNnB4 +OyI+PHAgIGNsYXNzPSJkcy1tYXJrZG93bi1wYXJhZ3JhcGgiIHN0eWxlPSJtYXJnaW4tcmlnaHQ6 +IDBweDsgbWFyZ2luLWJvdHRvbTogMHB4OyBtYXJnaW4tbGVmdDogMHB4OyBtYXJnaW4tdG9wOiAw +cHggIWltcG9ydGFudDsiPjxzcGFuICBjbGFzcz0iIj7lh7rlupPmjqXlj6Plop7liqDmibnmrKHl +h7rlupPpgLvovpE8L3NwYW4+PC9wPjwvbGk+PC9vbD48cCAgY2xhc3M9ImRzLW1hcmtkb3duLXBh +cmFncmFwaCBfX2FsaXl1bl9ub2RlX2hhc19jb2xvciBfX2FsaXl1bl9ub2RlX2hhc19iZ2NvbG9y +IiBzdHlsZT0ibWFyZ2luOiAxNnB4IDBweDsgY29sb3I6IHJnYigxNSwgMTcsIDIxKTsgZm9udC1m +YW1pbHk6IHF1b3RlLWNqay1wYXRjaCwgSW50ZXIsIHN5c3RlbS11aSwgLWFwcGxlLXN5c3RlbSwg +QmxpbmtNYWNTeXN0ZW1Gb250LCAnU2Vnb2UgVUknLCBSb2JvdG8sIE94eWdlbiwgVWJ1bnR1LCBD +YW50YXJlbGwsICdPcGVuIFNhbnMnLCAnSGVsdmV0aWNhIE5ldWUnLCBzYW5zLXNlcmlmOyBmb250 +LXNpemU6IDE2cHg7IGZvbnQtc3R5bGU6IG5vcm1hbDsgZm9udC12YXJpYW50LWxpZ2F0dXJlczog +bm9ybWFsOyBmb250LXZhcmlhbnQtY2Fwczogbm9ybWFsOyBmb250LXdlaWdodDogNDAwOyBsZXR0 +ZXItc3BhY2luZzogbm9ybWFsOyB0ZXh0LWFsaWduOiBzdGFydDsgdGV4dC1pbmRlbnQ6IDBweDsg +dGV4dC10cmFuc2Zvcm06IG5vbmU7IHdvcmQtc3BhY2luZzogMHB4OyB3aGl0ZS1zcGFjZTogbm9y +bWFsOyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjU1LCAyNTUsIDI1NSk7IHRleHQtZGVjb3JhdGlv +bi10aGlja25lc3M6IGluaXRpYWw7IHRleHQtZGVjb3JhdGlvbi1zdHlsZTogaW5pdGlhbDsgdGV4 +dC1kZWNvcmF0aW9uLWNvbG9yOiBpbml0aWFsOyI+PHNwYW4gIGNsYXNzPSIiIHN0eWxlPSJmb250 +LXdlaWdodDogNDAwOyI+5ZGo5LiJ77yIMjAyNi0wNS0yMO+8iTwvc3Bhbj48L3A+PG9sICBjbGFz +cz0iIF9fYWxpeXVuX25vZGVfaGFzX2NvbG9yIF9fYWxpeXVuX25vZGVfaGFzX2JnY29sb3IiIHN0 +YXJ0PSIxIiBzdHlsZT0ibWFyZ2luOiAxNnB4IDBweDsgcGFkZGluZy1sZWZ0OiAxOHB4OyBjb2xv +cjogcmdiKDE1LCAxNywgMjEpOyBmb250LWZhbWlseTogcXVvdGUtY2prLXBhdGNoLCBJbnRlciwg +c3lzdGVtLXVpLCAtYXBwbGUtc3lzdGVtLCBCbGlua01hY1N5c3RlbUZvbnQsICdTZWdvZSBVSScs +IFJvYm90bywgT3h5Z2VuLCBVYnVudHUsIENhbnRhcmVsbCwgJ09wZW4gU2FucycsICdIZWx2ZXRp +Y2EgTmV1ZScsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTZweDsgZm9udC1zdHlsZTogbm9ybWFs +OyBmb250LXZhcmlhbnQtbGlnYXR1cmVzOiBub3JtYWw7IGZvbnQtdmFyaWFudC1jYXBzOiBub3Jt +YWw7IGZvbnQtd2VpZ2h0OiA0MDA7IGxldHRlci1zcGFjaW5nOiBub3JtYWw7IHRleHQtYWxpZ246 +IHN0YXJ0OyB0ZXh0LWluZGVudDogMHB4OyB0ZXh0LXRyYW5zZm9ybTogbm9uZTsgd29yZC1zcGFj +aW5nOiAwcHg7IHdoaXRlLXNwYWNlOiBub3JtYWw7IGJhY2tncm91bmQtY29sb3I6IHJnYigyNTUs +IDI1NSwgMjU1KTsgdGV4dC1kZWNvcmF0aW9uLXRoaWNrbmVzczogaW5pdGlhbDsgdGV4dC1kZWNv +cmF0aW9uLXN0eWxlOiBpbml0aWFsOyB0ZXh0LWRlY29yYXRpb24tY29sb3I6IGluaXRpYWw7Ij48 +bGkgPjxwICBjbGFzcz0iZHMtbWFya2Rvd24tcGFyYWdyYXBoIiBzdHlsZT0ibWFyZ2luLXJpZ2h0 +OiAwcHg7IG1hcmdpbi1ib3R0b206IDBweDsgbWFyZ2luLWxlZnQ6IDBweDsgbWFyZ2luLXRvcDog +MHB4ICFpbXBvcnRhbnQ7Ij48c3BhbiAgY2xhc3M9IiI+5Ye65YWl5bqT5p+l6K+i5o6l5Y+j5LyY +5YyWPC9zcGFuPjwvcD48L2xpPjxsaSAgc3R5bGU9Im1hcmdpbi10b3A6IDZweDsiPjxwICBjbGFz +cz0iZHMtbWFya2Rvd24tcGFyYWdyYXBoIiBzdHlsZT0ibWFyZ2luLXJpZ2h0OiAwcHg7IG1hcmdp +bi1ib3R0b206IDBweDsgbWFyZ2luLWxlZnQ6IDBweDsgbWFyZ2luLXRvcDogMHB4ICFpbXBvcnRh +bnQ7Ij48c3BhbiAgY2xhc3M9IiI+5YWl5bqT5rWB56iL5Luj56CB6YeN5p6E77yM6ZmN5L2OU2Vy +dmljZeWxguS7o+eggeihjOaVsDwvc3Bhbj48L3A+PC9saT48L29sPjxwICBjbGFzcz0iZHMtbWFy +a2Rvd24tcGFyYWdyYXBoIF9fYWxpeXVuX25vZGVfaGFzX2NvbG9yIF9fYWxpeXVuX25vZGVfaGFz +X2JnY29sb3IiIHN0eWxlPSJtYXJnaW46IDE2cHggMHB4OyBjb2xvcjogcmdiKDE1LCAxNywgMjEp +OyBmb250LWZhbWlseTogcXVvdGUtY2prLXBhdGNoLCBJbnRlciwgc3lzdGVtLXVpLCAtYXBwbGUt +c3lzdGVtLCBCbGlua01hY1N5c3RlbUZvbnQsICdTZWdvZSBVSScsIFJvYm90bywgT3h5Z2VuLCBV +YnVudHUsIENhbnRhcmVsbCwgJ09wZW4gU2FucycsICdIZWx2ZXRpY2EgTmV1ZScsIHNhbnMtc2Vy +aWY7IGZvbnQtc2l6ZTogMTZweDsgZm9udC1zdHlsZTogbm9ybWFsOyBmb250LXZhcmlhbnQtbGln +YXR1cmVzOiBub3JtYWw7IGZvbnQtdmFyaWFudC1jYXBzOiBub3JtYWw7IGZvbnQtd2VpZ2h0OiA0 +MDA7IGxldHRlci1zcGFjaW5nOiBub3JtYWw7IHRleHQtYWxpZ246IHN0YXJ0OyB0ZXh0LWluZGVu +dDogMHB4OyB0ZXh0LXRyYW5zZm9ybTogbm9uZTsgd29yZC1zcGFjaW5nOiAwcHg7IHdoaXRlLXNw +YWNlOiBub3JtYWw7IGJhY2tncm91bmQtY29sb3I6IHJnYigyNTUsIDI1NSwgMjU1KTsgdGV4dC1k +ZWNvcmF0aW9uLXRoaWNrbmVzczogaW5pdGlhbDsgdGV4dC1kZWNvcmF0aW9uLXN0eWxlOiBpbml0 +aWFsOyB0ZXh0LWRlY29yYXRpb24tY29sb3I6IGluaXRpYWw7Ij48c3BhbiAgY2xhc3M9IiIgc3R5 +bGU9ImZvbnQtd2VpZ2h0OiA0MDA7Ij7lkajlm5vvvIgyMDI2LTA1LTIx77yJPC9zcGFuPjwvcD48 +b2wgIGNsYXNzPSIgX19hbGl5dW5fbm9kZV9oYXNfY29sb3IgX19hbGl5dW5fbm9kZV9oYXNfYmdj +b2xvciIgc3RhcnQ9IjEiIHN0eWxlPSJtYXJnaW46IDE2cHggMHB4OyBwYWRkaW5nLWxlZnQ6IDE4 +cHg7IGNvbG9yOiByZ2IoMTUsIDE3LCAyMSk7IGZvbnQtZmFtaWx5OiBxdW90ZS1jamstcGF0Y2gs +IEludGVyLCBzeXN0ZW0tdWksIC1hcHBsZS1zeXN0ZW0sIEJsaW5rTWFjU3lzdGVtRm9udCwgJ1Nl +Z29lIFVJJywgUm9ib3RvLCBPeHlnZW4sIFVidW50dSwgQ2FudGFyZWxsLCAnT3BlbiBTYW5zJywg +J0hlbHZldGljYSBOZXVlJywgc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxNnB4OyBmb250LXN0eWxl +OiBub3JtYWw7IGZvbnQtdmFyaWFudC1saWdhdHVyZXM6IG5vcm1hbDsgZm9udC12YXJpYW50LWNh +cHM6IG5vcm1hbDsgZm9udC13ZWlnaHQ6IDQwMDsgbGV0dGVyLXNwYWNpbmc6IG5vcm1hbDsgdGV4 +dC1hbGlnbjogc3RhcnQ7IHRleHQtaW5kZW50OiAwcHg7IHRleHQtdHJhbnNmb3JtOiBub25lOyB3 +b3JkLXNwYWNpbmc6IDBweDsgd2hpdGUtc3BhY2U6IG5vcm1hbDsgYmFja2dyb3VuZC1jb2xvcjog +cmdiKDI1NSwgMjU1LCAyNTUpOyB0ZXh0LWRlY29yYXRpb24tdGhpY2tuZXNzOiBpbml0aWFsOyB0 +ZXh0LWRlY29yYXRpb24tc3R5bGU6IGluaXRpYWw7IHRleHQtZGVjb3JhdGlvbi1jb2xvcjogaW5p +dGlhbDsiPjxsaSA+PHAgIGNsYXNzPSJkcy1tYXJrZG93bi1wYXJhZ3JhcGgiIHN0eWxlPSJtYXJn +aW4tcmlnaHQ6IDBweDsgbWFyZ2luLWJvdHRvbTogMHB4OyBtYXJnaW4tbGVmdDogMHB4OyBtYXJn +aW4tdG9wOiAwcHggIWltcG9ydGFudDsiPjxzcGFuICBjbGFzcz0iIj7mn6Xor6LmjqXlj6Poh6rm +tYvlubbovazmtYs8L3NwYW4+PC9wPjwvbGk+PGxpICBzdHlsZT0ibWFyZ2luLXRvcDogNnB4OyI+ +PHAgIGNsYXNzPSJkcy1tYXJrZG93bi1wYXJhZ3JhcGgiIHN0eWxlPSJtYXJnaW4tcmlnaHQ6IDBw +eDsgbWFyZ2luLWJvdHRvbTogMHB4OyBtYXJnaW4tbGVmdDogMHB4OyBtYXJnaW4tdG9wOiAwcHgg +IWltcG9ydGFudDsiPjxzcGFuICBjbGFzcz0iIj7lhaXlupPmlrDlop7mjqXlj6Poh6rmtYs8L3Nw +YW4+PC9wPjwvbGk+PGxpICBzdHlsZT0ibWFyZ2luLXRvcDogNnB4OyI+PHAgIGNsYXNzPSJkcy1t +YXJrZG93bi1wYXJhZ3JhcGgiIHN0eWxlPSJtYXJnaW4tcmlnaHQ6IDBweDsgbWFyZ2luLWJvdHRv +bTogMHB4OyBtYXJnaW4tbGVmdDogMHB4OyBtYXJnaW4tdG9wOiAwcHggIWltcG9ydGFudDsiPjxz +cGFuICBjbGFzcz0iIj7lhaXlupPmn6Xor6LmjqXlj6Poh6rmtYs8L3NwYW4+PC9wPjwvbGk+PC9v +bD48cCAgY2xhc3M9ImRzLW1hcmtkb3duLXBhcmFncmFwaCBfX2FsaXl1bl9ub2RlX2hhc19jb2xv +ciBfX2FsaXl1bl9ub2RlX2hhc19iZ2NvbG9yIiBzdHlsZT0ibWFyZ2luOiAxNnB4IDBweDsgY29s +b3I6IHJnYigxNSwgMTcsIDIxKTsgZm9udC1mYW1pbHk6IHF1b3RlLWNqay1wYXRjaCwgSW50ZXIs +IHN5c3RlbS11aSwgLWFwcGxlLXN5c3RlbSwgQmxpbmtNYWNTeXN0ZW1Gb250LCAnU2Vnb2UgVUkn +LCBSb2JvdG8sIE94eWdlbiwgVWJ1bnR1LCBDYW50YXJlbGwsICdPcGVuIFNhbnMnLCAnSGVsdmV0 +aWNhIE5ldWUnLCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDE2cHg7IGZvbnQtc3R5bGU6IG5vcm1h +bDsgZm9udC12YXJpYW50LWxpZ2F0dXJlczogbm9ybWFsOyBmb250LXZhcmlhbnQtY2Fwczogbm9y +bWFsOyBmb250LXdlaWdodDogNDAwOyBsZXR0ZXItc3BhY2luZzogbm9ybWFsOyB0ZXh0LWFsaWdu +OiBzdGFydDsgdGV4dC1pbmRlbnQ6IDBweDsgdGV4dC10cmFuc2Zvcm06IG5vbmU7IHdvcmQtc3Bh +Y2luZzogMHB4OyB3aGl0ZS1zcGFjZTogbm9ybWFsOyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjU1 +LCAyNTUsIDI1NSk7IHRleHQtZGVjb3JhdGlvbi10aGlja25lc3M6IGluaXRpYWw7IHRleHQtZGVj +b3JhdGlvbi1zdHlsZTogaW5pdGlhbDsgdGV4dC1kZWNvcmF0aW9uLWNvbG9yOiBpbml0aWFsOyI+ +PHNwYW4gIGNsYXNzPSIiIHN0eWxlPSJmb250LXdlaWdodDogNDAwOyI+5ZGo5LqU77yIMjAyNi0w +NS0yMu+8iTwvc3Bhbj48L3A+PG9sICBjbGFzcz0iIF9fYWxpeXVuX25vZGVfaGFzX2NvbG9yIF9f +YWxpeXVuX25vZGVfaGFzX2JnY29sb3IiIHN0YXJ0PSIxIiBzdHlsZT0ibWFyZ2luOiAxNnB4IDBw +eDsgcGFkZGluZy1sZWZ0OiAxOHB4OyBjb2xvcjogcmdiKDE1LCAxNywgMjEpOyBmb250LWZhbWls +eTogcXVvdGUtY2prLXBhdGNoLCBJbnRlciwgc3lzdGVtLXVpLCAtYXBwbGUtc3lzdGVtLCBCbGlu +a01hY1N5c3RlbUZvbnQsICdTZWdvZSBVSScsIFJvYm90bywgT3h5Z2VuLCBVYnVudHUsIENhbnRh +cmVsbCwgJ09wZW4gU2FucycsICdIZWx2ZXRpY2EgTmV1ZScsIHNhbnMtc2VyaWY7IGZvbnQtc2l6 +ZTogMTZweDsgZm9udC1zdHlsZTogbm9ybWFsOyBmb250LXZhcmlhbnQtbGlnYXR1cmVzOiBub3Jt +YWw7IGZvbnQtdmFyaWFudC1jYXBzOiBub3JtYWw7IGZvbnQtd2VpZ2h0OiA0MDA7IGxldHRlci1z +cGFjaW5nOiBub3JtYWw7IHRleHQtYWxpZ246IHN0YXJ0OyB0ZXh0LWluZGVudDogMHB4OyB0ZXh0 +LXRyYW5zZm9ybTogbm9uZTsgd29yZC1zcGFjaW5nOiAwcHg7IHdoaXRlLXNwYWNlOiBub3JtYWw7 +IGJhY2tncm91bmQtY29sb3I6IHJnYigyNTUsIDI1NSwgMjU1KTsgdGV4dC1kZWNvcmF0aW9uLXRo +aWNrbmVzczogaW5pdGlhbDsgdGV4dC1kZWNvcmF0aW9uLXN0eWxlOiBpbml0aWFsOyB0ZXh0LWRl +Y29yYXRpb24tY29sb3I6IGluaXRpYWw7Ij48bGkgPjxwICBjbGFzcz0iZHMtbWFya2Rvd24tcGFy +YWdyYXBoIiBzdHlsZT0ibWFyZ2luLXJpZ2h0OiAwcHg7IG1hcmdpbi1ib3R0b206IDBweDsgbWFy +Z2luLWxlZnQ6IDBweDsgbWFyZ2luLXRvcDogMHB4ICFpbXBvcnRhbnQ7Ij48c3BhbiAgY2xhc3M9 +IiI+6L2s5rWL6Zeu6aKY5L+u5aSNPC9zcGFuPjwvcD48L2xpPjxsaSAgc3R5bGU9Im1hcmdpbi10 +b3A6IDZweDsiPjxwICBjbGFzcz0iZHMtbWFya2Rvd24tcGFyYWdyYXBoIiBzdHlsZT0ibWFyZ2lu +LXJpZ2h0OiAwcHg7IG1hcmdpbi1ib3R0b206IDBweDsgbWFyZ2luLWxlZnQ6IDBweDsgbWFyZ2lu +LXRvcDogMHB4ICFpbXBvcnRhbnQ7Ij48c3BhbiAgY2xhc3M9IiI+6ZSA5ZSu5Ye65bqT5o6l5Y+j +5byA5Y+RPC9zcGFuPjwvcD48L2xpPjwvb2w+PGhyICBzdHlsZT0iYmFja2dyb3VuZDogbm9uZSAw +JSAwJSAvIGF1dG8gcmVwZWF0IHNjcm9sbCBwYWRkaW5nLWJveCBib3JkZXItYm94IHJnYmEoMCwg +MCwgMCwgMC4xKTsgYm9yZGVyLXdpZHRoOiBtZWRpdW07IGJvcmRlci1zdHlsZTogbm9uZTsgYm9y +ZGVyLWNvbG9yOiBjdXJyZW50Y29sb3I7IGJvcmRlci1pbWFnZTogaW5pdGlhbDsgaGVpZ2h0OiAx +cHg7IG1hcmdpbjogMzJweCAwcHg7IGRpc3BsYXk6IGJsb2NrOyBmb250LWZhbWlseTogcXVvdGUt +Y2prLXBhdGNoLCBJbnRlciwgc3lzdGVtLXVpLCAtYXBwbGUtc3lzdGVtLCBCbGlua01hY1N5c3Rl +bUZvbnQsICdTZWdvZSBVSScsIFJvYm90bywgT3h5Z2VuLCBVYnVudHUsIENhbnRhcmVsbCwgJ09w +ZW4gU2FucycsICdIZWx2ZXRpY2EgTmV1ZScsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTZweDsg +Zm9udC1zdHlsZTogbm9ybWFsOyBmb250LXZhcmlhbnQtbGlnYXR1cmVzOiBub3JtYWw7IGZvbnQt +dmFyaWFudC1jYXBzOiBub3JtYWw7IGZvbnQtd2VpZ2h0OiA0MDA7IGxldHRlci1zcGFjaW5nOiBu +b3JtYWw7IG9ycGhhbnM6IDI7IHRleHQtYWxpZ246IHN0YXJ0OyB0ZXh0LWluZGVudDogMHB4OyB0 +ZXh0LXRyYW5zZm9ybTogbm9uZTsgd2lkb3dzOiAyOyB3b3JkLXNwYWNpbmc6IDBweDsgLXdlYmtp +dC10ZXh0LXN0cm9rZS13aWR0aDogMHB4OyB3aGl0ZS1zcGFjZTogbm9ybWFsOyB0ZXh0LWRlY29y +YXRpb24tdGhpY2tuZXNzOiBpbml0aWFsOyB0ZXh0LWRlY29yYXRpb24tc3R5bGU6IGluaXRpYWw7 +IHRleHQtZGVjb3JhdGlvbi1jb2xvcjogaW5pdGlhbDsiPjxoNCAgY2xhc3M9IiBfX2FsaXl1bl9u +b2RlX2hhc19jb2xvciBfX2FsaXl1bl9ub2RlX2hhc19iZ2NvbG9yIiBzdHlsZT0iZm9udDogNjAw +IDE2cHggLyAyOHB4IHF1b3RlLWNqay1wYXRjaCwgSW50ZXIsIHN5c3RlbS11aSwgLWFwcGxlLXN5 +c3RlbSwgQmxpbmtNYWNTeXN0ZW1Gb250LCAnU2Vnb2UgVUknLCBSb2JvdG8sIE94eWdlbiwgVWJ1 +bnR1LCBDYW50YXJlbGwsICdPcGVuIFNhbnMnLCAnSGVsdmV0aWNhIE5ldWUnLCBzYW5zLXNlcmlm +OyBtYXJnaW46IDE2cHggMHB4OyBjb2xvcjogcmdiKDE1LCAxNywgMjEpOyBsZXR0ZXItc3BhY2lu +Zzogbm9ybWFsOyB0ZXh0LWFsaWduOiBzdGFydDsgdGV4dC1pbmRlbnQ6IDBweDsgdGV4dC10cmFu +c2Zvcm06IG5vbmU7IHdvcmQtc3BhY2luZzogMHB4OyB3aGl0ZS1zcGFjZTogbm9ybWFsOyBiYWNr +Z3JvdW5kLWNvbG9yOiByZ2IoMjU1LCAyNTUsIDI1NSk7IHRleHQtZGVjb3JhdGlvbi10aGlja25l +c3M6IGluaXRpYWw7IHRleHQtZGVjb3JhdGlvbi1zdHlsZTogaW5pdGlhbDsgdGV4dC1kZWNvcmF0 +aW9uLWNvbG9yOiBpbml0aWFsOyI+PHNwYW4gIGNsYXNzPSIiPuWtmOWcqOmXrumimDwvc3Bhbj48 +L2g0PjxwICBjbGFzcz0iZHMtbWFya2Rvd24tcGFyYWdyYXBoIF9fYWxpeXVuX25vZGVfaGFzX2Nv +bG9yIF9fYWxpeXVuX25vZGVfaGFzX2JnY29sb3IiIHN0eWxlPSJtYXJnaW46IDE2cHggMHB4OyBj +b2xvcjogcmdiKDE1LCAxNywgMjEpOyBmb250LWZhbWlseTogcXVvdGUtY2prLXBhdGNoLCBJbnRl +ciwgc3lzdGVtLXVpLCAtYXBwbGUtc3lzdGVtLCBCbGlua01hY1N5c3RlbUZvbnQsICdTZWdvZSBV +SScsIFJvYm90bywgT3h5Z2VuLCBVYnVudHUsIENhbnRhcmVsbCwgJ09wZW4gU2FucycsICdIZWx2 +ZXRpY2EgTmV1ZScsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTZweDsgZm9udC1zdHlsZTogbm9y +bWFsOyBmb250LXZhcmlhbnQtbGlnYXR1cmVzOiBub3JtYWw7IGZvbnQtdmFyaWFudC1jYXBzOiBu +b3JtYWw7IGZvbnQtd2VpZ2h0OiA0MDA7IGxldHRlci1zcGFjaW5nOiBub3JtYWw7IHRleHQtYWxp +Z246IHN0YXJ0OyB0ZXh0LWluZGVudDogMHB4OyB0ZXh0LXRyYW5zZm9ybTogbm9uZTsgd29yZC1z +cGFjaW5nOiAwcHg7IHdoaXRlLXNwYWNlOiBub3JtYWw7IGJhY2tncm91bmQtY29sb3I6IHJnYigy +NTUsIDI1NSwgMjU1KTsgdGV4dC1kZWNvcmF0aW9uLXRoaWNrbmVzczogaW5pdGlhbDsgdGV4dC1k +ZWNvcmF0aW9uLXN0eWxlOiBpbml0aWFsOyB0ZXh0LWRlY29yYXRpb24tY29sb3I6IGluaXRpYWw7 +Ij48c3BhbiAgY2xhc3M9IiI+5pys5ZGo5pqC5peg6K6w5b2V6Zeu6aKY44CCPC9zcGFuPjwvcD48 +ZGl2ID48L2Rpdj48c3BhbiA+PC9zcGFuPjxkaXYgPjwvZGl2PjxzcGFuID48YnIgPjwvc3Bhbj48 +L2Rpdj48ZGl2ICBzdHlsZT0iY2xlYXI6IGJvdGg7IGZvbnQtZmFtaWx5OiBUYWhvbWEsIEFyaWFs +LCBTVEhlaXRpU0MtTGlnaHQsIFNpbVN1bjsiPjxzcGFuID48YnIgPjwvc3Bhbj48L2Rpdj48ZGl2 +ICBzdHlsZT0iY2xlYXI6IGJvdGg7IGZvbnQtZmFtaWx5OiBUYWhvbWEsIEFyaWFsLCBTVEhlaXRp +U0MtTGlnaHQsIFNpbVN1bjsiPjxzcGFuID48YnIgPjwvc3Bhbj48L2Rpdj48ZGl2ICBzdHlsZT0i +Y2xlYXI6IGJvdGg7Ij48ZGl2ICBjbGFzcz0iIF9fYWxpeXVuX25vZGVfaGFzX2NvbG9yIiBzdHls +ZT0ibWFyZ2luOiAwcHg7IHBhZGRpbmc6IDBweDsgYm9yZGVyOiAwcHg7IG91dGxpbmU6IDBweDsg +Y29sb3I6IHJnYigwLCAwLCAwKTsgZm9udC1mYW1pbHk6IFRhaG9tYSwgQXJpYWwsIFNUSGVpdGks +IFNpbVN1bjsgZm9udC1zaXplOiAxNHB4OyBmb250LXN0eWxlOiBub3JtYWw7IGZvbnQtdmFyaWFu +dC1saWdhdHVyZXM6IG5vcm1hbDsgZm9udC12YXJpYW50LWNhcHM6IG5vcm1hbDsgZm9udC13ZWln +aHQ6IDQwMDsgdGV4dC1hbGlnbjogc3RhcnQ7IHRleHQtaW5kZW50OiAwcHg7IHRleHQtdHJhbnNm +b3JtOiBub25lOyB0ZXh0LWRlY29yYXRpb24tdGhpY2tuZXNzOiBpbml0aWFsOyB0ZXh0LWRlY29y +YXRpb24tc3R5bGU6IGluaXRpYWw7IHRleHQtZGVjb3JhdGlvbi1jb2xvcjogaW5pdGlhbDsgY2xl +YXI6IGJvdGg7Ij48c3BhbiAgY2xhc3M9IiBfX2FsaXl1bl9ub2RlX2hhc19jb2xvciIgc3R5bGU9 +Im1hcmdpbjogMHB4OyBwYWRkaW5nOiAwcHg7IGJvcmRlcjogMHB4OyBvdXRsaW5lOiAwcHg7IGZv +bnQtZmFtaWx5OiAnTWljcm9zb2Z0IFlhaGVpJzsgZm9udC1zaXplOiAxM3B4OyBjb2xvcjogcmdi +KDE5MSwgMTkxLCAxOTEpOyI+QmVzdCByZWdhcmRzLDwvc3Bhbj48L2Rpdj48ZGl2ICBjbGFzcz0i +IF9fYWxpeXVuX25vZGVfaGFzX2NvbG9yIiBzdHlsZT0ibWFyZ2luOiAwcHg7IHBhZGRpbmc6IDBw +eDsgYm9yZGVyOiAwcHg7IG91dGxpbmU6IDBweDsgY29sb3I6IHJnYigwLCAwLCAwKTsgZm9udC1m +YW1pbHk6IFRhaG9tYSwgQXJpYWwsIFNUSGVpdGksIFNpbVN1bjsgZm9udC1zaXplOiAxNHB4OyBm +b250LXN0eWxlOiBub3JtYWw7IGZvbnQtdmFyaWFudC1saWdhdHVyZXM6IG5vcm1hbDsgZm9udC12 +YXJpYW50LWNhcHM6IG5vcm1hbDsgZm9udC13ZWlnaHQ6IDQwMDsgdGV4dC1hbGlnbjogc3RhcnQ7 +IHRleHQtaW5kZW50OiAwcHg7IHRleHQtdHJhbnNmb3JtOiBub25lOyB0ZXh0LWRlY29yYXRpb24t +dGhpY2tuZXNzOiBpbml0aWFsOyB0ZXh0LWRlY29yYXRpb24tc3R5bGU6IGluaXRpYWw7IHRleHQt +ZGVjb3JhdGlvbi1jb2xvcjogaW5pdGlhbDsgY2xlYXI6IGJvdGg7Ij48c3BhbiAgY2xhc3M9IiBf +X2FsaXl1bl9ub2RlX2hhc19jb2xvciIgc3R5bGU9Im1hcmdpbjogMHB4OyBwYWRkaW5nOiAwcHg7 +IGJvcmRlcjogMHB4OyBvdXRsaW5lOiAwcHg7IGZvbnQtZmFtaWx5OiAnTWljcm9zb2Z0IFlhaGVp +JzsgZm9udC1zaXplOiAxM3B4OyBjb2xvcjogcmdiKDE5MSwgMTkxLCAxOTEpOyI+5p2o6L2pPC9z +cGFuPjwvZGl2PjxkaXYgIGNsYXNzPSIgX19hbGl5dW5fbm9kZV9oYXNfY29sb3IiIHN0eWxlPSJt +YXJnaW46IDBweDsgcGFkZGluZzogMHB4OyBib3JkZXI6IDBweDsgb3V0bGluZTogMHB4OyBjb2xv +cjogcmdiKDAsIDAsIDApOyBmb250LWZhbWlseTogVGFob21hLCBBcmlhbCwgU1RIZWl0aSwgU2lt +U3VuOyBmb250LXNpemU6IDE0cHg7IGZvbnQtc3R5bGU6IG5vcm1hbDsgZm9udC12YXJpYW50LWxp +Z2F0dXJlczogbm9ybWFsOyBmb250LXZhcmlhbnQtY2Fwczogbm9ybWFsOyBmb250LXdlaWdodDog +NDAwOyB0ZXh0LWFsaWduOiBzdGFydDsgdGV4dC1pbmRlbnQ6IDBweDsgdGV4dC10cmFuc2Zvcm06 +IG5vbmU7IHRleHQtZGVjb3JhdGlvbi10aGlja25lc3M6IGluaXRpYWw7IHRleHQtZGVjb3JhdGlv +bi1zdHlsZTogaW5pdGlhbDsgdGV4dC1kZWNvcmF0aW9uLWNvbG9yOiBpbml0aWFsOyBjbGVhcjog +Ym90aDsiPjxpbWcgIGRhdGEtYWxpbWFpbC1pbWctcHJvY2Vzc2VkLXNxbS1lZGl0b3I9InRydWUi +IGhlaWdodD0iNjgiIHNyYz0iY2lkOl9fYWxpeXVuMTc3OTQxNDEyNjU4OTY2NjYxIiB3aWR0aD0i +MzAwIiBzdHlsZT0ibWFyZ2luOiAwcHg7IHBhZGRpbmc6IDBweDsgYm9yZGVyOiAwcHg7IG91dGxp +bmU6IDBweDsgdmVydGljYWwtYWxpZ246IGJvdHRvbTsiPiZuYnNwOzwvZGl2PjxkaXYgIGNsYXNz +PSIgX19hbGl5dW5fbm9kZV9oYXNfY29sb3IiIHN0eWxlPSJtYXJnaW46IDBweDsgcGFkZGluZzog +MHB4OyBib3JkZXI6IDBweDsgb3V0bGluZTogMHB4OyBjb2xvcjogcmdiKDAsIDAsIDApOyBmb250 +LWZhbWlseTogVGFob21hLCBBcmlhbCwgU1RIZWl0aSwgU2ltU3VuOyBmb250LXNpemU6IDE0cHg7 +IGZvbnQtc3R5bGU6IG5vcm1hbDsgZm9udC12YXJpYW50LWxpZ2F0dXJlczogbm9ybWFsOyBmb250 +LXZhcmlhbnQtY2Fwczogbm9ybWFsOyBmb250LXdlaWdodDogNDAwOyB0ZXh0LWFsaWduOiBzdGFy +dDsgdGV4dC1pbmRlbnQ6IDBweDsgdGV4dC10cmFuc2Zvcm06IG5vbmU7IHRleHQtZGVjb3JhdGlv +bi10aGlja25lc3M6IGluaXRpYWw7IHRleHQtZGVjb3JhdGlvbi1zdHlsZTogaW5pdGlhbDsgdGV4 +dC1kZWNvcmF0aW9uLWNvbG9yOiBpbml0aWFsOyBjbGVhcjogYm90aDsiPjxzcGFuICBjbGFzcz0i +IF9fYWxpeXVuX25vZGVfaGFzX2NvbG9yIiBzdHlsZT0ibWFyZ2luOiAwcHg7IHBhZGRpbmc6IDBw +eDsgYm9yZGVyOiAwcHg7IG91dGxpbmU6IDBweDsgZm9udC1mYW1pbHk6ICdNaWNyb3NvZnQgWWFo +ZWknOyBjb2xvcjogcmdiKDE5MSwgMTkxLCAxOTEpOyI+5Zyw5Z2A77ya5Lit5Zu9wrfljZfkuqzo +va/ku7bosLfova/ku7blpKfpgZMxMeWPt+iKseelnuWkp+WOpjNGPC9zcGFuPjwvZGl2PjxkaXYg +IGNsYXNzPSIgX19hbGl5dW5fbm9kZV9oYXNfY29sb3IiIHN0eWxlPSJtYXJnaW46IDBweDsgcGFk +ZGluZzogMHB4OyBib3JkZXI6IDBweDsgb3V0bGluZTogMHB4OyBjb2xvcjogcmdiKDAsIDAsIDAp +OyBmb250LWZhbWlseTogVGFob21hLCBBcmlhbCwgU1RIZWl0aSwgU2ltU3VuOyBmb250LXNpemU6 +IDE0cHg7IGZvbnQtc3R5bGU6IG5vcm1hbDsgZm9udC12YXJpYW50LWxpZ2F0dXJlczogbm9ybWFs +OyBmb250LXZhcmlhbnQtY2Fwczogbm9ybWFsOyBmb250LXdlaWdodDogNDAwOyB0ZXh0LWFsaWdu +OiBzdGFydDsgdGV4dC1pbmRlbnQ6IDBweDsgdGV4dC10cmFuc2Zvcm06IG5vbmU7IHRleHQtZGVj +b3JhdGlvbi10aGlja25lc3M6IGluaXRpYWw7IHRleHQtZGVjb3JhdGlvbi1zdHlsZTogaW5pdGlh +bDsgdGV4dC1kZWNvcmF0aW9uLWNvbG9yOiBpbml0aWFsOyBjbGVhcjogYm90aDsiPjxzcGFuICBj +bGFzcz0iIF9fYWxpeXVuX25vZGVfaGFzX2NvbG9yIiBzdHlsZT0ibWFyZ2luOiAwcHg7IHBhZGRp +bmc6IDBweDsgYm9yZGVyOiAwcHg7IG91dGxpbmU6IDBweDsgZm9udC1mYW1pbHk6ICdNaWNyb3Nv +ZnQgWWFoZWknOyBjb2xvcjogcmdiKDE5MSwgMTkxLCAxOTEpOyI+5omL5py677yaMTg3MjYxMjg0 +ODk8L3NwYW4+PC9kaXY+PGRpdiAgY2xhc3M9IiBfX2FsaXl1bl9ub2RlX2hhc19jb2xvciIgc3R5 +bGU9Im1hcmdpbjogMHB4OyBwYWRkaW5nOiAwcHg7IGJvcmRlcjogMHB4OyBvdXRsaW5lOiAwcHg7 +IGNvbG9yOiByZ2IoMCwgMCwgMCk7IGZvbnQtZmFtaWx5OiBUYWhvbWEsIEFyaWFsLCBTVEhlaXRp +LCBTaW1TdW47IGZvbnQtc2l6ZTogMTRweDsgZm9udC1zdHlsZTogbm9ybWFsOyBmb250LXZhcmlh +bnQtbGlnYXR1cmVzOiBub3JtYWw7IGZvbnQtdmFyaWFudC1jYXBzOiBub3JtYWw7IGZvbnQtd2Vp +Z2h0OiA0MDA7IHRleHQtYWxpZ246IHN0YXJ0OyB0ZXh0LWluZGVudDogMHB4OyB0ZXh0LXRyYW5z +Zm9ybTogbm9uZTsgdGV4dC1kZWNvcmF0aW9uLXRoaWNrbmVzczogaW5pdGlhbDsgdGV4dC1kZWNv +cmF0aW9uLXN0eWxlOiBpbml0aWFsOyB0ZXh0LWRlY29yYXRpb24tY29sb3I6IGluaXRpYWw7IGNs +ZWFyOiBib3RoOyI+PHNwYW4gIGNsYXNzPSIgX19hbGl5dW5fbm9kZV9oYXNfY29sb3IiIHN0eWxl +PSJtYXJnaW46IDBweDsgcGFkZGluZzogMHB4OyBib3JkZXI6IDBweDsgb3V0bGluZTogMHB4OyBm +b250LWZhbWlseTogJ01pY3Jvc29mdCBZYWhlaSc7IGNvbG9yOiByZ2IoMTkxLCAxOTEsIDE5MSk7 +Ij7pgq7nrrHvvJp5YW5neHVhbkB3aXRzb2Z0LmNuPC9zcGFuPjwvZGl2PjwvZGl2PjxwICBjbGFz +cz0ibWQtZW5kLWJsb2NrIG1kLXAiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5l +LWhlaWdodDogaW5oZXJpdDsgbWFyZ2luOiAxMnB4IDBweDsgd2hpdGUtc3BhY2U6IHByZS13cmFw +OyBwb3NpdGlvbjogcmVsYXRpdmU7IGZvbnQtdmFyaWFudC1saWdhdHVyZXM6IG5vcm1hbDsgZm9u +dC12YXJpYW50LWNhcHM6IG5vcm1hbDsgbGV0dGVyLXNwYWNpbmc6IG5vcm1hbDsgdGV4dC1hbGln +bjogc3RhcnQ7IHRleHQtaW5kZW50OiAwcHg7IHdvcmQtc3BhY2luZzogMHB4OyB0ZXh0LWRlY29y +YXRpb24tc3R5bGU6IGluaXRpYWw7IHRleHQtZGVjb3JhdGlvbi1jb2xvcjogaW5pdGlhbDsiPjxi +ciA+PC9wPjwvZGl2PjwvZGl2PjwvZGl2Pg== + +--=_mailmaster-6a18e4a4_0_7f96_=-- + +--=_mailmaster-6a18e4a4_0_7ff5_= +Content-Type: application/octet-stream +Content-Transfer-Encoding: base64 +Content-ID: <__aliyun177941412658966661> +Content-Disposition: inline; + filename="=?utf-8?B?57u05ouT56eR5oqALemCruS7tuetvuWQjWxvZ28ucG5n?=" + +iVBORw0KGgoAAAANSUhEUgAAASwAAABECAYAAAA7rQj2AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJ +bWFnZVJlYWR5ccllPAAAA4RpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdp +bj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6 +eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTQ1IDc5LjE2 +MzQ5OSwgMjAxOC8wOC8xMy0xNjo0MDoyMiAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJo +dHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlw +dGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEu +MC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVz +b3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1N +Ok9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDplYjhjYzQwMy1lNzZjLTQ5NDgtODFmOC1kNDIy +MmRkMTdhYjgiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NkVENzExMzg1MzBEMTFFQTg4QjNF +NEJFMUQyRjc1RkIiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NkVENzExMzc1MzBEMTFFQTg4 +QjNFNEJFMUQyRjc1RkIiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTkg +KFdpbmRvd3MpIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6 +ZmNkNTdlM2UtZThjYS05ZjQ2LWEzZTUtMWJlYmE2NjA5Y2FmIiBzdFJlZjpkb2N1bWVudElEPSJh +ZG9iZTpkb2NpZDpwaG90b3Nob3A6MzZkNmNjNTUtNTY3Yi01MTQ2LWEwYWYtMzBlMzEwMTMxNDFk +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 + +--=_mailmaster-6a18e4a4_0_7ff5_=-- diff --git a/media/inbound/3914f275-ddec-4709-808c-29ad3456bf5b.jpg b/media/inbound/3914f275-ddec-4709-808c-29ad3456bf5b.jpg new file mode 100644 index 0000000..2533603 Binary files /dev/null and b/media/inbound/3914f275-ddec-4709-808c-29ad3456bf5b.jpg differ diff --git a/media/inbound/96d4e78e-68be-41b4-9ba9-8c83add72ddd.jpg b/media/inbound/96d4e78e-68be-41b4-9ba9-8c83add72ddd.jpg new file mode 100644 index 0000000..c0714f5 Binary files /dev/null and b/media/inbound/96d4e78e-68be-41b4-9ba9-8c83add72ddd.jpg differ diff --git a/media/inbound/9fc1312c-d0a0-44ec-bd16-89cea705d054.jpg b/media/inbound/9fc1312c-d0a0-44ec-bd16-89cea705d054.jpg new file mode 100644 index 0000000..ffdeb73 Binary files /dev/null and b/media/inbound/9fc1312c-d0a0-44ec-bd16-89cea705d054.jpg differ diff --git a/media/inbound/Java开发工程师_-_杨轩_-_10年经验---7aa24108-d148-42a3-ad93-9a84e2ec90c2.pdf b/media/inbound/Java开发工程师_-_杨轩_-_10年经验---7aa24108-d148-42a3-ad93-9a84e2ec90c2.pdf new file mode 100644 index 0000000..4ed610d Binary files /dev/null and b/media/inbound/Java开发工程师_-_杨轩_-_10年经验---7aa24108-d148-42a3-ad93-9a84e2ec90c2.pdf differ diff --git a/media/inbound/OKR月度绩效考核-杨轩-12月---cbcebc81-e226-4441-a14d-0fa3b90097f7.xlsx b/media/inbound/OKR月度绩效考核-杨轩-12月---cbcebc81-e226-4441-a14d-0fa3b90097f7.xlsx new file mode 100644 index 0000000..b5c8fef Binary files /dev/null and b/media/inbound/OKR月度绩效考核-杨轩-12月---cbcebc81-e226-4441-a14d-0fa3b90097f7.xlsx differ diff --git a/media/inbound/北京时代纯玩0自费5日游18人---931b2212-4a70-49a1-9cad-6370098e51f9.pdf b/media/inbound/北京时代纯玩0自费5日游18人---931b2212-4a70-49a1-9cad-6370098e51f9.pdf new file mode 100644 index 0000000..52eb69e Binary files /dev/null and b/media/inbound/北京时代纯玩0自费5日游18人---931b2212-4a70-49a1-9cad-6370098e51f9.pdf differ diff --git a/media/inbound/北京时代纯玩0自费5日游18人---dc4e7bef-a3b4-4d0b-88fc-e67ed7f89a65.pdf b/media/inbound/北京时代纯玩0自费5日游18人---dc4e7bef-a3b4-4d0b-88fc-e67ed7f89a65.pdf new file mode 100644 index 0000000..52eb69e Binary files /dev/null and b/media/inbound/北京时代纯玩0自费5日游18人---dc4e7bef-a3b4-4d0b-88fc-e67ed7f89a65.pdf differ diff --git a/media/inbound/库存积压报表---c94d2248-b84d-44dc-95e2-839220d61fcc.md b/media/inbound/库存积压报表---c94d2248-b84d-44dc-95e2-839220d61fcc.md new file mode 100644 index 0000000..ea119ba --- /dev/null +++ b/media/inbound/库存积压报表---c94d2248-b84d-44dc-95e2-839220d61fcc.md @@ -0,0 +1,27 @@ +# 前言 + +开发项目:/home/yangxuan/Projects/IdeaProjects/tiny-erp 别名:tiny +文档目录:tiny-erp/yangxuan + +## 产品需求 +```text +1.3.库存积压资金 + +如果物料有出库记录则最近一次出库距离当前日期大于90天视为积压;如果物料只有入库记录则最近一次入库距离当前日期大于90天视为积压;距离当前日期的天数即为积压天数 +库存积压金额:原料积压+成品积压 +原料积压:显示(呆滞原材料数量*最近一次原材料采购单价)之和;点击详情进入原材料积压二级页面 +成品积压:显示(呆滞成品数量*最近一次成品发货出库单价)之和;点击详情进入成品积压二级页面 +1.1.3.原材料积压 + +显示有积压的原料种数、总积压金额、平均积压天数(积压天数之和/原料种数) +列表:显示原料名称、积压数量、最近一次采购单价、积压天数、总金额(单价*数量),默认按积压金额降序,可选择积压金额升序、数量降序、数量升序 + +1.1.4.成品积压 + +显示有积压的成品种数、总积压金额、平均积压天数(积压天数之和/成品种数) +列表:显示成品名称、积压数量、最近一次销售出库单价(没有出库则单价为0)、积压天数、总金额(单价*数量),默认按积压金额降序,可选择积压金额升序、数量降序、数量升序 +``` + +# 正文 + + diff --git a/media/inbound/研究院-维云智造G5-10月OKR-杨轩---ce45c7b9-e532-4283-854d-432144c4f861.xlsx b/media/inbound/研究院-维云智造G5-10月OKR-杨轩---ce45c7b9-e532-4283-854d-432144c4f861.xlsx new file mode 100644 index 0000000..f4e36c1 Binary files /dev/null and b/media/inbound/研究院-维云智造G5-10月OKR-杨轩---ce45c7b9-e532-4283-854d-432144c4f861.xlsx differ diff --git a/media/inbound/研究院-维云智造G5-11月OKR-杨轩---f21da75f-73c0-4d6e-8a39-23fcac7eed59.xlsx b/media/inbound/研究院-维云智造G5-11月OKR-杨轩---f21da75f-73c0-4d6e-8a39-23fcac7eed59.xlsx new file mode 100644 index 0000000..cf221fa Binary files /dev/null and b/media/inbound/研究院-维云智造G5-11月OKR-杨轩---f21da75f-73c0-4d6e-8a39-23fcac7eed59.xlsx differ diff --git a/media/inbound/研究院-维云智造G5-1月OKR-杨轩---265f9a99-7316-4d1f-8345-88b014cd8719.xlsx b/media/inbound/研究院-维云智造G5-1月OKR-杨轩---265f9a99-7316-4d1f-8345-88b014cd8719.xlsx new file mode 100644 index 0000000..4dee9ab Binary files /dev/null and b/media/inbound/研究院-维云智造G5-1月OKR-杨轩---265f9a99-7316-4d1f-8345-88b014cd8719.xlsx differ diff --git a/media/inbound/研究院-维云智造G5-2月OKR-杨轩---ebe256d5-b7f0-4b6b-a0be-edd48c6a5729.xlsx b/media/inbound/研究院-维云智造G5-2月OKR-杨轩---ebe256d5-b7f0-4b6b-a0be-edd48c6a5729.xlsx new file mode 100644 index 0000000..cdba377 Binary files /dev/null and b/media/inbound/研究院-维云智造G5-2月OKR-杨轩---ebe256d5-b7f0-4b6b-a0be-edd48c6a5729.xlsx differ diff --git a/media/inbound/研究院-维云智造G5-3月OKR-杨轩---dc305468-c88a-45b8-84bf-d4a57359fa4c.xlsx b/media/inbound/研究院-维云智造G5-3月OKR-杨轩---dc305468-c88a-45b8-84bf-d4a57359fa4c.xlsx new file mode 100644 index 0000000..cfd4d98 Binary files /dev/null and b/media/inbound/研究院-维云智造G5-3月OKR-杨轩---dc305468-c88a-45b8-84bf-d4a57359fa4c.xlsx differ diff --git a/media/inbound/研究院-维云智造G5-4月OKR-杨轩---88740751-94c2-4143-ae2b-1b010bd09371.xlsx b/media/inbound/研究院-维云智造G5-4月OKR-杨轩---88740751-94c2-4143-ae2b-1b010bd09371.xlsx new file mode 100644 index 0000000..c220707 Binary files /dev/null and b/media/inbound/研究院-维云智造G5-4月OKR-杨轩---88740751-94c2-4143-ae2b-1b010bd09371.xlsx differ diff --git a/media/inbound/研究院-维云智造G5-5月OKR-杨轩---eb5aacce-a0e8-4962-9233-11afc7176290.xlsx b/media/inbound/研究院-维云智造G5-5月OKR-杨轩---eb5aacce-a0e8-4962-9233-11afc7176290.xlsx new file mode 100644 index 0000000..43a11f9 Binary files /dev/null and b/media/inbound/研究院-维云智造G5-5月OKR-杨轩---eb5aacce-a0e8-4962-9233-11afc7176290.xlsx differ diff --git a/media/inbound/研究院-维云智造G5-7月OKR-杨轩---82dbc20e-7783-4dae-b1b7-444d4ea4ef93.xlsx b/media/inbound/研究院-维云智造G5-7月OKR-杨轩---82dbc20e-7783-4dae-b1b7-444d4ea4ef93.xlsx new file mode 100644 index 0000000..7c67878 Binary files /dev/null and b/media/inbound/研究院-维云智造G5-7月OKR-杨轩---82dbc20e-7783-4dae-b1b7-444d4ea4ef93.xlsx differ diff --git a/media/inbound/研究院-维云智造G5-8月OKR-杨轩---26defd3e-7272-4ee8-a75e-3eb15b94bd7e.xlsx b/media/inbound/研究院-维云智造G5-8月OKR-杨轩---26defd3e-7272-4ee8-a75e-3eb15b94bd7e.xlsx new file mode 100644 index 0000000..c267c3a Binary files /dev/null and b/media/inbound/研究院-维云智造G5-8月OKR-杨轩---26defd3e-7272-4ee8-a75e-3eb15b94bd7e.xlsx differ diff --git a/media/inbound/研究院-维云智造G5-9月OKR-杨轩---743619f1-8c0f-4b1c-a10f-3fd438f4eb0c.xlsx b/media/inbound/研究院-维云智造G5-9月OKR-杨轩---743619f1-8c0f-4b1c-a10f-3fd438f4eb0c.xlsx new file mode 100644 index 0000000..4577bdd Binary files /dev/null and b/media/inbound/研究院-维云智造G5-9月OKR-杨轩---743619f1-8c0f-4b1c-a10f-3fd438f4eb0c.xlsx differ diff --git a/media/inbound/研究院-维云智造G5-OKR-后端开发-11月-杨轩---e381484a-8b50-470d-b451-a19f87bc0377.xlsx b/media/inbound/研究院-维云智造G5-OKR-后端开发-11月-杨轩---e381484a-8b50-470d-b451-a19f87bc0377.xlsx new file mode 100644 index 0000000..e9a80a2 Binary files /dev/null and b/media/inbound/研究院-维云智造G5-OKR-后端开发-11月-杨轩---e381484a-8b50-470d-b451-a19f87bc0377.xlsx differ diff --git a/media/inbound/研究院-维云智造G5-OKR-后端开发-12月-杨轩---b50aeab0-65e3-4846-a8dd-29c37d7070b6.xlsx b/media/inbound/研究院-维云智造G5-OKR-后端开发-12月-杨轩---b50aeab0-65e3-4846-a8dd-29c37d7070b6.xlsx new file mode 100644 index 0000000..9021b35 Binary files /dev/null and b/media/inbound/研究院-维云智造G5-OKR-后端开发-12月-杨轩---b50aeab0-65e3-4846-a8dd-29c37d7070b6.xlsx differ diff --git a/media/inbound/研究院-维云智造组-10月OKR-杨轩---116131e4-ac8e-4887-8740-55c02e0a861a.xlsx b/media/inbound/研究院-维云智造组-10月OKR-杨轩---116131e4-ac8e-4887-8740-55c02e0a861a.xlsx new file mode 100644 index 0000000..0e3a378 Binary files /dev/null and b/media/inbound/研究院-维云智造组-10月OKR-杨轩---116131e4-ac8e-4887-8740-55c02e0a861a.xlsx differ diff --git a/media/inbound/研究院-维云智造组-11月OKR-杨轩---3f4b822a-b4ea-4e87-8463-50bc8db8c85b.xlsx b/media/inbound/研究院-维云智造组-11月OKR-杨轩---3f4b822a-b4ea-4e87-8463-50bc8db8c85b.xlsx new file mode 100644 index 0000000..f696da6 Binary files /dev/null and b/media/inbound/研究院-维云智造组-11月OKR-杨轩---3f4b822a-b4ea-4e87-8463-50bc8db8c85b.xlsx differ diff --git a/media/inbound/研究院-维云智造组-12月OKR-杨轩---9f9ad1dc-47ab-44f3-80a2-0dd280411894.xlsx b/media/inbound/研究院-维云智造组-12月OKR-杨轩---9f9ad1dc-47ab-44f3-80a2-0dd280411894.xlsx new file mode 100644 index 0000000..a4b38d6 Binary files /dev/null and b/media/inbound/研究院-维云智造组-12月OKR-杨轩---9f9ad1dc-47ab-44f3-80a2-0dd280411894.xlsx differ diff --git a/media/inbound/研究院-维云智造组-1月OKR-杨轩---1f8280a1-c09b-4447-b373-2271353bda1f.xlsx b/media/inbound/研究院-维云智造组-1月OKR-杨轩---1f8280a1-c09b-4447-b373-2271353bda1f.xlsx new file mode 100644 index 0000000..f9a58c6 Binary files /dev/null and b/media/inbound/研究院-维云智造组-1月OKR-杨轩---1f8280a1-c09b-4447-b373-2271353bda1f.xlsx differ diff --git a/media/inbound/研究院-维云智造组-2月OKR-杨轩---86930d34-ce44-48df-98ae-262dc53e2863.xlsx b/media/inbound/研究院-维云智造组-2月OKR-杨轩---86930d34-ce44-48df-98ae-262dc53e2863.xlsx new file mode 100644 index 0000000..a565793 Binary files /dev/null and b/media/inbound/研究院-维云智造组-2月OKR-杨轩---86930d34-ce44-48df-98ae-262dc53e2863.xlsx differ diff --git a/media/inbound/研究院-维云智造组-3月OKR-杨轩---e8bd712e-b26f-4011-a4b2-a3b8b7577d92.xlsx b/media/inbound/研究院-维云智造组-3月OKR-杨轩---e8bd712e-b26f-4011-a4b2-a3b8b7577d92.xlsx new file mode 100644 index 0000000..52e7173 Binary files /dev/null and b/media/inbound/研究院-维云智造组-3月OKR-杨轩---e8bd712e-b26f-4011-a4b2-a3b8b7577d92.xlsx differ diff --git a/media/inbound/研究院-维云智造组-4月OKR-杨轩---6aa63953-2768-478b-9acf-069a16540778.xlsx b/media/inbound/研究院-维云智造组-4月OKR-杨轩---6aa63953-2768-478b-9acf-069a16540778.xlsx new file mode 100644 index 0000000..86408fa Binary files /dev/null and b/media/inbound/研究院-维云智造组-4月OKR-杨轩---6aa63953-2768-478b-9acf-069a16540778.xlsx differ diff --git a/media/inbound/研究院-维云智造组-5月OKR-杨轩---e2de67bb-4f94-478a-b77a-2b77aa1c3753.xlsx b/media/inbound/研究院-维云智造组-5月OKR-杨轩---e2de67bb-4f94-478a-b77a-2b77aa1c3753.xlsx new file mode 100644 index 0000000..c102bfa Binary files /dev/null and b/media/inbound/研究院-维云智造组-5月OKR-杨轩---e2de67bb-4f94-478a-b77a-2b77aa1c3753.xlsx differ diff --git a/media/inbound/研究院-维云智造组-5月OKR-杨轩_2---2b6ded6c-3034-42b5-bc9f-3c4221d23118.xlsx b/media/inbound/研究院-维云智造组-5月OKR-杨轩_2---2b6ded6c-3034-42b5-bc9f-3c4221d23118.xlsx new file mode 100644 index 0000000..9f4008c Binary files /dev/null and b/media/inbound/研究院-维云智造组-5月OKR-杨轩_2---2b6ded6c-3034-42b5-bc9f-3c4221d23118.xlsx differ diff --git a/media/inbound/研究院-维云智造组-6月OKR-杨轩---1a68518d-2943-4e8e-a725-213ed9e1c8a8.xlsx b/media/inbound/研究院-维云智造组-6月OKR-杨轩---1a68518d-2943-4e8e-a725-213ed9e1c8a8.xlsx new file mode 100644 index 0000000..0458738 Binary files /dev/null and b/media/inbound/研究院-维云智造组-6月OKR-杨轩---1a68518d-2943-4e8e-a725-213ed9e1c8a8.xlsx differ diff --git a/media/inbound/研究院-维云智造组-6月OKR-杨轩_2---942e451d-2624-45c5-a1ad-a17e2f5985e3.xlsx b/media/inbound/研究院-维云智造组-6月OKR-杨轩_2---942e451d-2624-45c5-a1ad-a17e2f5985e3.xlsx new file mode 100644 index 0000000..98c9c21 Binary files /dev/null and b/media/inbound/研究院-维云智造组-6月OKR-杨轩_2---942e451d-2624-45c5-a1ad-a17e2f5985e3.xlsx differ diff --git a/media/inbound/研究院-维云智造组-7月OKR-杨轩---a69d34bf-71ad-48a6-85b5-4fe254382a91.xlsx b/media/inbound/研究院-维云智造组-7月OKR-杨轩---a69d34bf-71ad-48a6-85b5-4fe254382a91.xlsx new file mode 100644 index 0000000..36a240e Binary files /dev/null and b/media/inbound/研究院-维云智造组-7月OKR-杨轩---a69d34bf-71ad-48a6-85b5-4fe254382a91.xlsx differ diff --git a/media/inbound/研究院-维云智造组-7月OKR-杨轩_2---b8cab75c-c465-4a20-b07f-bbe5ff09ba20.xlsx b/media/inbound/研究院-维云智造组-7月OKR-杨轩_2---b8cab75c-c465-4a20-b07f-bbe5ff09ba20.xlsx new file mode 100644 index 0000000..b56d0fe Binary files /dev/null and b/media/inbound/研究院-维云智造组-7月OKR-杨轩_2---b8cab75c-c465-4a20-b07f-bbe5ff09ba20.xlsx differ diff --git a/media/inbound/研究院-维云智造组-8月OKR-杨轩---16044661-a1d9-40b8-b1c0-a29328ac89ed.xlsx b/media/inbound/研究院-维云智造组-8月OKR-杨轩---16044661-a1d9-40b8-b1c0-a29328ac89ed.xlsx new file mode 100644 index 0000000..0b0b856 Binary files /dev/null and b/media/inbound/研究院-维云智造组-8月OKR-杨轩---16044661-a1d9-40b8-b1c0-a29328ac89ed.xlsx differ diff --git a/media/inbound/研究院-维云智造组-9月OKR-杨轩---cf287b70-f4e5-4522-8f68-befa7805bd3c.xlsx b/media/inbound/研究院-维云智造组-9月OKR-杨轩---cf287b70-f4e5-4522-8f68-befa7805bd3c.xlsx new file mode 100644 index 0000000..0563c79 Binary files /dev/null and b/media/inbound/研究院-维云智造组-9月OKR-杨轩---cf287b70-f4e5-4522-8f68-befa7805bd3c.xlsx differ diff --git a/media/inbound/积极员工OKR考核-杨轩---213e10cd-d556-4c6a-bb34-bce7ca4e009b.xlsx b/media/inbound/积极员工OKR考核-杨轩---213e10cd-d556-4c6a-bb34-bce7ca4e009b.xlsx new file mode 100644 index 0000000..7086baf Binary files /dev/null and b/media/inbound/积极员工OKR考核-杨轩---213e10cd-d556-4c6a-bb34-bce7ca4e009b.xlsx differ diff --git a/media/inbound/邮储银行历史明细_20260101-20260331_20260410223131---e12fb635-47b4-4787-a8a2-48f2caf0dea4.pdf b/media/inbound/邮储银行历史明细_20260101-20260331_20260410223131---e12fb635-47b4-4787-a8a2-48f2caf0dea4.pdf new file mode 100644 index 0000000..22a14a0 Binary files /dev/null and b/media/inbound/邮储银行历史明细_20260101-20260331_20260410223131---e12fb635-47b4-4787-a8a2-48f2caf0dea4.pdf differ diff --git a/media/inbound/邮储银行历史明细_20260101-20260331_20260410223131---efefceca-d0b2-48a8-96e4-561b8d6eb8a6.pdf b/media/inbound/邮储银行历史明细_20260101-20260331_20260410223131---efefceca-d0b2-48a8-96e4-561b8d6eb8a6.pdf new file mode 100644 index 0000000..22a14a0 Binary files /dev/null and b/media/inbound/邮储银行历史明细_20260101-20260331_20260410223131---efefceca-d0b2-48a8-96e4-561b8d6eb8a6.pdf differ diff --git a/plugins/installs.json.migrated b/plugins/installs.json.migrated new file mode 100644 index 0000000..f1a50c9 --- /dev/null +++ b/plugins/installs.json.migrated @@ -0,0 +1,3304 @@ +{ + "version": 1, + "warning": "DO NOT EDIT. This file is generated by OpenClaw from plugin manifests, install records, and config policy. Use `openclaw plugins registry --refresh`, `openclaw plugins install/update/uninstall`, or `openclaw plugins enable/disable` instead.", + "hostContractVersion": "2026.5.28", + "compatRegistryVersion": "83616130f933585b84e09f19f9891a959b9bd6ce25d027eba4680bfd49be5abe", + "migrationVersion": 1, + "policyHash": "c5afe68f01e8dbca6e69727b77b477e23172901c76b10764563a070ad1c9b313", + "generatedAtMs": 1780291558741, + "refreshReason": "policy-changed", + "installRecords": { + "channels": { + "source": "npm", + "spec": "@openclaw-china/channels", + "installPath": "/home/yangxuan/.openclaw/extensions/channels", + "version": "2026.3.29", + "resolvedName": "@openclaw-china/channels", + "resolvedVersion": "2026.3.29", + "resolvedSpec": "@openclaw-china/channels@2026.3.29", + "integrity": "sha512-90RFFku4ZrcWmhWKsWvNMDt4i6OuGSw058pmH7wRy/9/Byn8N7dQCouh0dpxvFmsF45H1/wC1aVFuWSg6pV4Gg==", + "shasum": "7bc60587b6434299553707ff1b9a0a253172ef2d", + "resolvedAt": "2026-04-07T06:25:58.944Z", + "installedAt": "2026-04-07T06:26:14.665Z" + }, + "dingtalk-connector": { + "source": "npm", + "spec": "@dingtalk-real-ai/dingtalk-connector", + "installPath": "/home/yangxuan/.openclaw/npm/projects/dingtalk-real-ai-dingtalk-connector-aa54111b45/node_modules/@dingtalk-real-ai/dingtalk-connector", + "version": "0.8.23", + "resolvedName": "@dingtalk-real-ai/dingtalk-connector", + "resolvedVersion": "0.8.23", + "resolvedSpec": "@dingtalk-real-ai/dingtalk-connector@0.8.23", + "integrity": "sha512-YQxsJ3ct1iektTnhoCEjMDmGL3zXcPnW0sHOKhQN266tvB+1q92MSdRPlmnRMYreontZMv/gK23UfKauneHI2Q==", + "shasum": "922645c1a89b18df2b6ccf27af327bc3ced7ee75", + "resolvedAt": "2026-06-01T02:32:07.353Z", + "installedAt": "2026-06-01T02:32:12.742Z" + }, + "openclaw-weixin": { + "source": "npm", + "spec": "@tencent-weixin/openclaw-weixin@latest", + "installPath": "/home/yangxuan/.openclaw/npm/node_modules/@tencent-weixin/openclaw-weixin", + "version": "2.4.3", + "resolvedName": "@tencent-weixin/openclaw-weixin", + "resolvedVersion": "2.4.3", + "resolvedSpec": "@tencent-weixin/openclaw-weixin@2.4.3", + "integrity": "sha512-dPQbidUNWigC6V10vGW4i+GLH09x+6zUhafZRjuxkJ9GDu8o62WBsnUTojp4KqUH756hz+t2v9khiCRSi0dBDw==", + "shasum": "7e30983e65364a1f18d91fc5a38e862e219111a9", + "resolvedAt": "2026-05-13T01:44:55.235Z", + "installedAt": "2026-05-13T01:45:02.009Z" + } + }, + "plugins": [ + { + "pluginId": "active-memory", + "manifestPath": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/active-memory/openclaw.plugin.json", + "manifestHash": "4c980e5ee4e7f524e40cc22ba63b3a04af0dc6945caa094e3c9d6b126dcd8f20", + "manifestFile": { + "size": 8836, + "mtimeMs": 1780281047407.6846, + "ctimeMs": 1780281047407.6846 + }, + "source": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/active-memory/index.js", + "rootDir": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/active-memory", + "origin": "bundled", + "enabled": false, + "startup": { + "sidecar": true, + "memory": false, + "deferConfiguredChannelFullLoadUntilAfterListen": false, + "agentHarnesses": [] + }, + "compat": [] + }, + { + "pluginId": "admin-http-rpc", + "packageName": "@openclaw/admin-http-rpc", + "packageVersion": "2026.5.28", + "manifestPath": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/admin-http-rpc/openclaw.plugin.json", + "manifestHash": "fdc5e1cdeef340d975c104515f0e8b3aec42bf80c27de8b26ac8ae8d3b1593d4", + "manifestFile": { + "size": 336, + "mtimeMs": 1780281047407.6846, + "ctimeMs": 1780281047407.6846 + }, + "source": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/admin-http-rpc/index.js", + "packageJson": { + "path": "package.json", + "hash": "e96558cba3d97380d3da7b648c2350a72a7a45dcb3aaf1e1af42a820681d5544", + "fileSignature": { + "size": 295, + "mtimeMs": 1780281047484.311, + "ctimeMs": 1780281047484.311 + } + }, + "rootDir": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/admin-http-rpc", + "origin": "bundled", + "enabled": false, + "startup": { + "sidecar": false, + "memory": false, + "deferConfiguredChannelFullLoadUntilAfterListen": false, + "agentHarnesses": [] + }, + "compat": [ + "activation-config-path-hint" + ] + }, + { + "pluginId": "alibaba", + "packageName": "@openclaw/alibaba-provider", + "packageVersion": "2026.5.28", + "manifestPath": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/alibaba/openclaw.plugin.json", + "manifestHash": "41072056eb8e89799556d17b99d78adca7c0502e192d611bcb9caea56102537f", + "manifestFile": { + "size": 1087, + "mtimeMs": 1780281047407.6846, + "ctimeMs": 1780281047407.6846 + }, + "source": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/alibaba/index.js", + "packageJson": { + "path": "package.json", + "hash": "40a3538200facc8239af4adcf65559530837e31617c1a3217aeb91d3e3ff58ea", + "fileSignature": { + "size": 316, + "mtimeMs": 1780281047484.311, + "ctimeMs": 1780281047484.311 + } + }, + "rootDir": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/alibaba", + "origin": "bundled", + "enabled": false, + "enabledByDefault": true, + "startup": { + "sidecar": false, + "memory": false, + "deferConfiguredChannelFullLoadUntilAfterListen": false, + "agentHarnesses": [] + }, + "compat": [] + }, + { + "pluginId": "anthropic", + "packageName": "@openclaw/anthropic-provider", + "packageVersion": "2026.5.28", + "manifestPath": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/anthropic/openclaw.plugin.json", + "manifestHash": "54ee9c428aca425272addbb0961be425f6f518fce0111e9b8affc9f188098768", + "manifestFile": { + "size": 7314, + "mtimeMs": 1780281047411.3333, + "ctimeMs": 1780281047411.3333 + }, + "source": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/anthropic/index.js", + "packageJson": { + "path": "package.json", + "hash": "912407ca862f5d0eb09b2f46694434c7f234a6d619fef6671e404bb41b661623", + "fileSignature": { + "size": 301, + "mtimeMs": 1780281047484.311, + "ctimeMs": 1780281047484.311 + } + }, + "rootDir": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/anthropic", + "origin": "bundled", + "enabled": false, + "enabledByDefault": true, + "syntheticAuthRefs": [ + "claude-cli" + ], + "startup": { + "sidecar": false, + "memory": false, + "deferConfiguredChannelFullLoadUntilAfterListen": false, + "agentHarnesses": [ + "claude-cli" + ] + }, + "compat": [] + }, + { + "pluginId": "arcee", + "packageName": "@openclaw/arcee-provider", + "packageVersion": "2026.5.28", + "manifestPath": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/arcee/openclaw.plugin.json", + "manifestHash": "b2a546a0bdfc98852742b0a3d6405dc586bf073b639ea6a4b2d5fe3ab028f981", + "manifestFile": { + "size": 1375, + "mtimeMs": 1780281047411.3333, + "ctimeMs": 1780281047411.3333 + }, + "source": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/arcee/index.js", + "packageJson": { + "path": "package.json", + "hash": "dcc68497a2a1ded4f20f53ca451f15ceb3bf571228718c76f70a6c0e1ecba958", + "fileSignature": { + "size": 293, + "mtimeMs": 1780281047484.311, + "ctimeMs": 1780281047484.311 + } + }, + "rootDir": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/arcee", + "origin": "bundled", + "enabled": false, + "enabledByDefault": true, + "startup": { + "sidecar": false, + "memory": false, + "deferConfiguredChannelFullLoadUntilAfterListen": false, + "agentHarnesses": [] + }, + "compat": [] + }, + { + "pluginId": "azure-speech", + "packageName": "@openclaw/azure-speech", + "packageVersion": "2026.5.28", + "manifestPath": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/azure-speech/openclaw.plugin.json", + "manifestHash": "e9acb86a38021c6bcb2b97704c615b890ac9802b73ec34cbe537ef2665d457e0", + "manifestFile": { + "size": 2060, + "mtimeMs": 1780281047411.3333, + "ctimeMs": 1780281047411.3333 + }, + "source": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/azure-speech/index.js", + "packageJson": { + "path": "package.json", + "hash": "b864e7a9c12e4b65e138d1585b6307cb3b0ae609e646cc2d088af86c32e5c3b5", + "fileSignature": { + "size": 289, + "mtimeMs": 1780281047484.311, + "ctimeMs": 1780281047484.311 + } + }, + "rootDir": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/azure-speech", + "origin": "bundled", + "enabled": false, + "enabledByDefault": true, + "startup": { + "sidecar": false, + "memory": false, + "deferConfiguredChannelFullLoadUntilAfterListen": false, + "agentHarnesses": [] + }, + "compat": [] + }, + { + "pluginId": "bonjour", + "packageName": "@openclaw/bonjour", + "packageVersion": "2026.5.28", + "manifestPath": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/bonjour/openclaw.plugin.json", + "manifestHash": "dd4a71a9d9bd4b33a0a5057c9caa5eabe2abc508993910e2f54fb092cb7b7a42", + "manifestFile": { + "size": 338, + "mtimeMs": 1780281047411.3333, + "ctimeMs": 1780281047411.3333 + }, + "source": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/bonjour/index.js", + "packageJson": { + "path": "package.json", + "hash": "d5fa8571610d987833089831732eda5d1310b56f3a61d4152484878495b988e5", + "fileSignature": { + "size": 333, + "mtimeMs": 1780281047484.311, + "ctimeMs": 1780281047484.311 + } + }, + "rootDir": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/bonjour", + "origin": "bundled", + "enabled": false, + "enabledByDefaultOnPlatforms": [ + "darwin" + ], + "startup": { + "sidecar": true, + "memory": false, + "deferConfiguredChannelFullLoadUntilAfterListen": false, + "agentHarnesses": [] + }, + "compat": [] + }, + { + "pluginId": "browser", + "packageName": "@openclaw/browser-plugin", + "packageVersion": "2026.5.28", + "manifestPath": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/browser/openclaw.plugin.json", + "manifestHash": "8c707bde12a49ae31ecec38a04d0f139e7ca0efe86b1ba299a0fedc61162acb3", + "manifestFile": { + "size": 400, + "mtimeMs": 1780281047411.3333, + "ctimeMs": 1780281047411.3333 + }, + "source": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/browser/index.js", + "packageJson": { + "path": "package.json", + "hash": "dd0fd2bd34f1d7af9f55bd7f0a01e00562b793508bce7b5b8361fdb537031ab9", + "fileSignature": { + "size": 510, + "mtimeMs": 1780281047484.311, + "ctimeMs": 1780281047484.311 + } + }, + "rootDir": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/browser", + "origin": "bundled", + "enabled": false, + "enabledByDefault": true, + "startup": { + "sidecar": true, + "memory": false, + "deferConfiguredChannelFullLoadUntilAfterListen": false, + "agentHarnesses": [] + }, + "compat": [ + "activation-config-path-hint" + ] + }, + { + "pluginId": "byteplus", + "packageName": "@openclaw/byteplus-provider", + "packageVersion": "2026.5.28", + "manifestPath": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/byteplus/openclaw.plugin.json", + "manifestHash": "641e7e656b893fd42f7e3429adc1c3d71dfd60cabfff03cbeb9ac900b2fc815f", + "manifestFile": { + "size": 4732, + "mtimeMs": 1780281047411.3333, + "ctimeMs": 1780281047411.3333 + }, + "source": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/byteplus/index.js", + "packageJson": { + "path": "package.json", + "hash": "cfc824b6336a00ab0552b6935bbda8032d070db1cd17020136ad39db86738eea", + "fileSignature": { + "size": 299, + "mtimeMs": 1780281047484.311, + "ctimeMs": 1780281047484.311 + } + }, + "rootDir": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/byteplus", + "origin": "bundled", + "enabled": false, + "enabledByDefault": true, + "startup": { + "sidecar": false, + "memory": false, + "deferConfiguredChannelFullLoadUntilAfterListen": false, + "agentHarnesses": [] + }, + "compat": [] + }, + { + "pluginId": "canvas", + "packageName": "@openclaw/canvas-plugin", + "packageVersion": "2026.5.28", + "manifestPath": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/canvas/openclaw.plugin.json", + "manifestHash": "95d29758fccb5c392a4d1d764ae6872d63a0b824edfb08d58042d97d3ec21759", + "manifestFile": { + "size": 872, + "mtimeMs": 1780281047411.3333, + "ctimeMs": 1780281047411.3333 + }, + "source": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/canvas/index.js", + "packageJson": { + "path": "package.json", + "hash": "e33fae8229e5c66e2b7dda124c9d343f567d0b100b046c9971186d541eeffa89", + "fileSignature": { + "size": 573, + "mtimeMs": 1780281047484.311, + "ctimeMs": 1780281047484.311 + } + }, + "rootDir": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/canvas", + "origin": "bundled", + "enabled": false, + "enabledByDefault": true, + "startup": { + "sidecar": true, + "memory": false, + "deferConfiguredChannelFullLoadUntilAfterListen": false, + "agentHarnesses": [] + }, + "compat": [] + }, + { + "pluginId": "cerebras", + "packageName": "@openclaw/cerebras-provider", + "packageVersion": "2026.5.28", + "manifestPath": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/cerebras/openclaw.plugin.json", + "manifestHash": "bfb547926762d6a6fe34dd9b2e9a51a70dba675b795ba61c6b98df375bad9220", + "manifestFile": { + "size": 2945, + "mtimeMs": 1780281047411.3333, + "ctimeMs": 1780281047411.3333 + }, + "source": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/cerebras/index.js", + "packageJson": { + "path": "package.json", + "hash": "d0019c467f30bc84c666b43280b65642383fd203f09f63603a9c2897e2ce33dd", + "fileSignature": { + "size": 299, + "mtimeMs": 1780281047484.311, + "ctimeMs": 1780281047484.311 + } + }, + "rootDir": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/cerebras", + "origin": "bundled", + "enabled": false, + "enabledByDefault": true, + "startup": { + "sidecar": false, + "memory": false, + "deferConfiguredChannelFullLoadUntilAfterListen": false, + "agentHarnesses": [] + }, + "compat": [] + }, + { + "pluginId": "chutes", + "packageName": "@openclaw/chutes-provider", + "packageVersion": "2026.5.28", + "manifestPath": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/chutes/openclaw.plugin.json", + "manifestHash": "ef1787d22592bbad9e03ccffbaf414d8cd89405f4907e2593ab5890bd1d61606", + "manifestFile": { + "size": 23031, + "mtimeMs": 1780281047411.3333, + "ctimeMs": 1780281047411.3333 + }, + "source": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/chutes/index.js", + "packageJson": { + "path": "package.json", + "hash": "7ebd50b0d2e44d57226b6756e342684231d34313cbbc2debf3cd512990cda435", + "fileSignature": { + "size": 298, + "mtimeMs": 1780281047487.96, + "ctimeMs": 1780281047487.96 + } + }, + "rootDir": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/chutes", + "origin": "bundled", + "enabled": false, + "enabledByDefault": true, + "startup": { + "sidecar": false, + "memory": false, + "deferConfiguredChannelFullLoadUntilAfterListen": false, + "agentHarnesses": [] + }, + "compat": [] + }, + { + "pluginId": "clickclack", + "packageName": "@openclaw/clickclack", + "packageVersion": "2026.5.28", + "packageChannel": { + "id": "clickclack", + "label": "ClickClack", + "selectionLabel": "ClickClack", + "detailLabel": "ClickClack Bot", + "docsPath": "/channels/clickclack", + "docsLabel": "clickclack", + "blurb": "self-hosted chat via first-class ClickClack bot tokens.", + "systemImage": "bubble.left.and.bubble.right", + "markdownCapable": true, + "preferSessionLookupForAnnounceTarget": true, + "order": 85, + "commands": { + "nativeCommandsAutoEnabled": false, + "nativeSkillsAutoEnabled": false + } + }, + "manifestPath": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/clickclack/openclaw.plugin.json", + "manifestHash": "d7b635ef787baa52d57ddc8f4d8860e89f87da3726aceb89dbd6d9657888ad2b", + "manifestFile": { + "size": 9412, + "mtimeMs": 1780281047411.3333, + "ctimeMs": 1780281047411.3333 + }, + "source": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/clickclack/index.js", + "packageJson": { + "path": "package.json", + "hash": "0a751e8a081bd3c7c66d79e0558d759b03213ab9b9f467a748dc4caf3cc458b7", + "fileSignature": { + "size": 1214, + "mtimeMs": 1780281047487.96, + "ctimeMs": 1780281047487.96 + } + }, + "rootDir": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/clickclack", + "origin": "bundled", + "enabled": false, + "startup": { + "sidecar": false, + "memory": false, + "deferConfiguredChannelFullLoadUntilAfterListen": false, + "agentHarnesses": [] + }, + "compat": [ + "channel-env-vars" + ] + }, + { + "pluginId": "cloudflare-ai-gateway", + "packageName": "@openclaw/cloudflare-ai-gateway-provider", + "packageVersion": "2026.5.28", + "manifestPath": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/cloudflare-ai-gateway/openclaw.plugin.json", + "manifestHash": "e8d9e791c3e2472c88d58c05f5363a910c699a65a4369ac1ffa35c2625ee631c", + "manifestFile": { + "size": 1304, + "mtimeMs": 1780281047411.3333, + "ctimeMs": 1780281047411.3333 + }, + "source": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/cloudflare-ai-gateway/index.js", + "packageJson": { + "path": "package.json", + "hash": "adf0db16f22b03b040cad381c5652be614802a2068bc14cbf82801260fd41995", + "fileSignature": { + "size": 325, + "mtimeMs": 1780281047487.96, + "ctimeMs": 1780281047487.96 + } + }, + "rootDir": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/cloudflare-ai-gateway", + "origin": "bundled", + "enabled": false, + "enabledByDefault": true, + "startup": { + "sidecar": false, + "memory": false, + "deferConfiguredChannelFullLoadUntilAfterListen": false, + "agentHarnesses": [] + }, + "compat": [] + }, + { + "pluginId": "codex-supervisor", + "packageName": "@openclaw/codex-supervisor", + "packageVersion": "2026.5.28", + "manifestPath": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/codex-supervisor/openclaw.plugin.json", + "manifestHash": "dab45f8336d4279b9d7fd6d5eccf86559d8d4f1adaefe5210dc5c76b40fcf876", + "manifestFile": { + "size": 2165, + "mtimeMs": 1780281047411.3333, + "ctimeMs": 1780281047411.3333 + }, + "source": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/codex-supervisor/index.js", + "packageJson": { + "path": "package.json", + "hash": "cefb79e11d78c53c271a00e65e2211e42994967c9c8023f9fe1d8f19d5ff64f6", + "fileSignature": { + "size": 448, + "mtimeMs": 1780281047487.96, + "ctimeMs": 1780281047487.96 + } + }, + "rootDir": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/codex-supervisor", + "origin": "bundled", + "enabled": false, + "startup": { + "sidecar": false, + "memory": false, + "deferConfiguredChannelFullLoadUntilAfterListen": false, + "agentHarnesses": [] + }, + "compat": [] + }, + { + "pluginId": "comfy", + "packageName": "@openclaw/comfy-provider", + "packageVersion": "2026.5.28", + "manifestPath": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/comfy/openclaw.plugin.json", + "manifestHash": "131ba7b5521dc42bbb0384a6327ca3f28ff44cdb615d861e2d7ed3e0af394910", + "manifestFile": { + "size": 9587, + "mtimeMs": 1780281047411.3333, + "ctimeMs": 1780281047411.3333 + }, + "source": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/comfy/index.js", + "packageJson": { + "path": "package.json", + "hash": "df646e2e9d539ca812a4a74ec023deb06ce40889361eaf804406c0ea3a9f8662", + "fileSignature": { + "size": 295, + "mtimeMs": 1780281047487.96, + "ctimeMs": 1780281047487.96 + } + }, + "rootDir": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/comfy", + "origin": "bundled", + "enabled": false, + "enabledByDefault": true, + "startup": { + "sidecar": false, + "memory": false, + "deferConfiguredChannelFullLoadUntilAfterListen": false, + "agentHarnesses": [] + }, + "compat": [] + }, + { + "pluginId": "copilot-proxy", + "packageName": "@openclaw/copilot-proxy", + "packageVersion": "2026.5.28", + "manifestPath": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/copilot-proxy/openclaw.plugin.json", + "manifestHash": "2e238fcce7097fc4e52b8fded692a105f61c671c6805c70bcfdc840412981390", + "manifestFile": { + "size": 645, + "mtimeMs": 1780281047411.3333, + "ctimeMs": 1780281047411.3333 + }, + "source": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/copilot-proxy/index.js", + "packageJson": { + "path": "package.json", + "hash": "008341c0bcb5947ce9aa68c0121d8e2cd2b53707d8db7c917cbde1401146aef5", + "fileSignature": { + "size": 300, + "mtimeMs": 1780281047487.96, + "ctimeMs": 1780281047487.96 + } + }, + "rootDir": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/copilot-proxy", + "origin": "bundled", + "enabled": false, + "enabledByDefault": true, + "startup": { + "sidecar": false, + "memory": false, + "deferConfiguredChannelFullLoadUntilAfterListen": false, + "agentHarnesses": [] + }, + "compat": [] + }, + { + "pluginId": "deepgram", + "packageName": "@openclaw/deepgram-provider", + "packageVersion": "2026.5.28", + "manifestPath": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/deepgram/openclaw.plugin.json", + "manifestHash": "33708188c75e2dfe43125260a038f7d578b0f5671b0efef51242c308cde75b79", + "manifestFile": { + "size": 723, + "mtimeMs": 1780281047411.3333, + "ctimeMs": 1780281047411.3333 + }, + "source": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/deepgram/index.js", + "packageJson": { + "path": "package.json", + "hash": "0431866b2ad66f54076d01b86ff0d5a8d05ced253009355d6b1c36738371136b", + "fileSignature": { + "size": 312, + "mtimeMs": 1780281047487.96, + "ctimeMs": 1780281047487.96 + } + }, + "rootDir": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/deepgram", + "origin": "bundled", + "enabled": false, + "enabledByDefault": true, + "startup": { + "sidecar": false, + "memory": false, + "deferConfiguredChannelFullLoadUntilAfterListen": false, + "agentHarnesses": [] + }, + "compat": [] + }, + { + "pluginId": "deepinfra", + "packageName": "@openclaw/deepinfra-provider", + "packageVersion": "2026.5.28", + "manifestPath": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/deepinfra/openclaw.plugin.json", + "manifestHash": "0faadc14b7e38145c36418b47b842f0e3cc04cddef17ff99fe05a4b196ff9d2b", + "manifestFile": { + "size": 6442, + "mtimeMs": 1780281047411.3333, + "ctimeMs": 1780281047411.3333 + }, + "source": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/deepinfra/index.js", + "packageJson": { + "path": "package.json", + "hash": "4f16cc80905d43fffb863f4e97513d1faba2edbbaf6b9bb0a5fb687858ec78b9", + "fileSignature": { + "size": 301, + "mtimeMs": 1780281047487.96, + "ctimeMs": 1780281047487.96 + } + }, + "rootDir": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/deepinfra", + "origin": "bundled", + "enabled": false, + "enabledByDefault": true, + "startup": { + "sidecar": false, + "memory": false, + "deferConfiguredChannelFullLoadUntilAfterListen": false, + "agentHarnesses": [] + }, + "compat": [ + "provider-auth-env-vars" + ] + }, + { + "pluginId": "deepseek", + "packageName": "@openclaw/deepseek-provider", + "packageVersion": "2026.5.28", + "manifestPath": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/deepseek/openclaw.plugin.json", + "manifestHash": "d7ea028516d78e34fb7081b58b6d7b26c89efaff40f9ac3f7dc7a0a091d907ef", + "manifestFile": { + "size": 3684, + "mtimeMs": 1780281047411.3333, + "ctimeMs": 1780281047411.3333 + }, + "source": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/deepseek/index.js", + "packageJson": { + "path": "package.json", + "hash": "32f20f6b3ec6496524d7a691bcdd1d29304bb4bd911ae9bc4e0e9a8a066eb4f0", + "fileSignature": { + "size": 299, + "mtimeMs": 1780281047487.96, + "ctimeMs": 1780281047487.96 + } + }, + "rootDir": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/deepseek", + "origin": "bundled", + "enabled": true, + "enabledByDefault": true, + "startup": { + "sidecar": false, + "memory": false, + "deferConfiguredChannelFullLoadUntilAfterListen": false, + "agentHarnesses": [] + }, + "compat": [] + }, + { + "pluginId": "device-pair", + "manifestPath": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/device-pair/openclaw.plugin.json", + "manifestHash": "12927d5b8f22d47494cc74bd977149db7f4923665d775f78e06c73b1608b7cd2", + "manifestFile": { + "size": 621, + "mtimeMs": 1780281047411.3333, + "ctimeMs": 1780281047411.3333 + }, + "source": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/device-pair/index.js", + "rootDir": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/device-pair", + "origin": "bundled", + "enabled": false, + "enabledByDefault": true, + "startup": { + "sidecar": true, + "memory": false, + "deferConfiguredChannelFullLoadUntilAfterListen": false, + "agentHarnesses": [] + }, + "compat": [] + }, + { + "pluginId": "document-extract", + "packageName": "@openclaw/document-extract-plugin", + "packageVersion": "2026.5.28", + "manifestPath": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/document-extract/openclaw.plugin.json", + "manifestHash": "c4bcd246214ef231b69b438dc8a4b7d0bcf51c8605e0ea32f1db4c7a8dc0df18", + "manifestFile": { + "size": 400, + "mtimeMs": 1780281047411.3333, + "ctimeMs": 1780281047411.3333 + }, + "source": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/document-extract/index.js", + "packageJson": { + "path": "package.json", + "hash": "98814f765eaece6b9bc4fc7a40d2d10d34304b5e2c8fc0b42f104b79d215a2f0", + "fileSignature": { + "size": 361, + "mtimeMs": 1780281047487.96, + "ctimeMs": 1780281047487.96 + } + }, + "rootDir": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/document-extract", + "origin": "bundled", + "enabled": false, + "enabledByDefault": true, + "startup": { + "sidecar": false, + "memory": false, + "deferConfiguredChannelFullLoadUntilAfterListen": false, + "agentHarnesses": [] + }, + "compat": [] + }, + { + "pluginId": "duckduckgo", + "packageName": "@openclaw/duckduckgo-plugin", + "packageVersion": "2026.5.28", + "manifestPath": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/duckduckgo/openclaw.plugin.json", + "manifestHash": "97c43b0c6846179073a218e2f878a8523d7467743919e18deef83ab95e49ca21", + "manifestFile": { + "size": 922, + "mtimeMs": 1780281047414.9822, + "ctimeMs": 1780281047414.9822 + }, + "source": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/duckduckgo/index.js", + "packageJson": { + "path": "package.json", + "hash": "be87944df87ac682cc139836fde216f013983ce3fa5b4b3c5862a6a93783b399", + "fileSignature": { + "size": 292, + "mtimeMs": 1780281047487.96, + "ctimeMs": 1780281047487.96 + } + }, + "rootDir": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/duckduckgo", + "origin": "bundled", + "enabled": false, + "startup": { + "sidecar": false, + "memory": false, + "deferConfiguredChannelFullLoadUntilAfterListen": false, + "agentHarnesses": [] + }, + "compat": [] + }, + { + "pluginId": "elevenlabs", + "packageName": "@openclaw/elevenlabs-speech", + "packageVersion": "2026.5.28", + "manifestPath": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/elevenlabs/openclaw.plugin.json", + "manifestHash": "9df3fa6f0b659cbafa888eb64cbbc951d552c2600cff4a45950fcf789415d69a", + "manifestFile": { + "size": 1002, + "mtimeMs": 1780281047414.9822, + "ctimeMs": 1780281047414.9822 + }, + "source": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/elevenlabs/index.js", + "packageJson": { + "path": "package.json", + "hash": "c1d229945c0ae1fcdce332adab3a9de374c5bc4e51219002ae6de6d6fbcc653e", + "fileSignature": { + "size": 299, + "mtimeMs": 1780281047487.96, + "ctimeMs": 1780281047487.96 + } + }, + "rootDir": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/elevenlabs", + "origin": "bundled", + "enabled": false, + "enabledByDefault": true, + "startup": { + "sidecar": false, + "memory": false, + "deferConfiguredChannelFullLoadUntilAfterListen": false, + "agentHarnesses": [] + }, + "compat": [] + }, + { + "pluginId": "exa", + "packageName": "@openclaw/exa-plugin", + "packageVersion": "2026.5.28", + "manifestPath": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/exa/openclaw.plugin.json", + "manifestHash": "95392ace14897483a552f5b7d314d9b8b25796f650c3e469374736ecfbe5e722", + "manifestFile": { + "size": 1190, + "mtimeMs": 1780281047414.9822, + "ctimeMs": 1780281047414.9822 + }, + "source": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/exa/index.js", + "packageJson": { + "path": "package.json", + "hash": "b3f0b88923002ebbb1a364f779bf759543c4bed14240878db42d9d8c30ae6fa2", + "fileSignature": { + "size": 278, + "mtimeMs": 1780281047487.96, + "ctimeMs": 1780281047487.96 + } + }, + "rootDir": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/exa", + "origin": "bundled", + "enabled": false, + "startup": { + "sidecar": false, + "memory": false, + "deferConfiguredChannelFullLoadUntilAfterListen": false, + "agentHarnesses": [] + }, + "compat": [] + }, + { + "pluginId": "fal", + "packageName": "@openclaw/fal-provider", + "packageVersion": "2026.5.28", + "manifestPath": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/fal/openclaw.plugin.json", + "manifestHash": "c18ff410c367a62cf530e728937beb261ec29752cc0a1ac95cf8815a0451ad04", + "manifestFile": { + "size": 1172, + "mtimeMs": 1780281047414.9822, + "ctimeMs": 1780281047414.9822 + }, + "source": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/fal/index.js", + "packageJson": { + "path": "package.json", + "hash": "9e6196c5e13976fdb8f15fc9e9b36aaddd2fa6a65d12b654cf4df45dc7880eba", + "fileSignature": { + "size": 289, + "mtimeMs": 1780281047487.96, + "ctimeMs": 1780281047487.96 + } + }, + "rootDir": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/fal", + "origin": "bundled", + "enabled": false, + "enabledByDefault": true, + "startup": { + "sidecar": false, + "memory": false, + "deferConfiguredChannelFullLoadUntilAfterListen": false, + "agentHarnesses": [] + }, + "compat": [] + }, + { + "pluginId": "file-transfer", + "packageName": "@openclaw/file-transfer", + "packageVersion": "2026.5.28", + "manifestPath": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/file-transfer/openclaw.plugin.json", + "manifestHash": "58af0929b80753b3778f240b8480cbaf7d14280ac81cce23b01d92b51e44ae0e", + "manifestFile": { + "size": 1559, + "mtimeMs": 1780281047414.9822, + "ctimeMs": 1780281047414.9822 + }, + "source": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/file-transfer/index.js", + "packageJson": { + "path": "package.json", + "hash": "456546d1e18cd46d21f1488ef53907073098fa579452227ab9345c1f55cd2151", + "fileSignature": { + "size": 394, + "mtimeMs": 1780281047487.96, + "ctimeMs": 1780281047487.96 + } + }, + "rootDir": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/file-transfer", + "origin": "bundled", + "enabled": false, + "enabledByDefault": true, + "startup": { + "sidecar": true, + "memory": false, + "deferConfiguredChannelFullLoadUntilAfterListen": false, + "agentHarnesses": [] + }, + "compat": [] + }, + { + "pluginId": "firecrawl", + "packageName": "@openclaw/firecrawl-plugin", + "packageVersion": "2026.5.28", + "manifestPath": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/firecrawl/openclaw.plugin.json", + "manifestHash": "6a901631cfc25003a398127ae1b18b63a2740ea26bd2ce10a05035e80d7cc19e", + "manifestFile": { + "size": 2179, + "mtimeMs": 1780281047414.9822, + "ctimeMs": 1780281047414.9822 + }, + "source": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/firecrawl/index.js", + "packageJson": { + "path": "package.json", + "hash": "ecda986d9341db91451dae213b9445af0a4ae94fd0ea8bc6b21fd465d6f43329", + "fileSignature": { + "size": 339, + "mtimeMs": 1780281047487.96, + "ctimeMs": 1780281047487.96 + } + }, + "rootDir": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/firecrawl", + "origin": "bundled", + "enabled": false, + "startup": { + "sidecar": false, + "memory": false, + "deferConfiguredChannelFullLoadUntilAfterListen": false, + "agentHarnesses": [] + }, + "compat": [] + }, + { + "pluginId": "fireworks", + "packageName": "@openclaw/fireworks-provider", + "packageVersion": "2026.5.28", + "manifestPath": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/fireworks/openclaw.plugin.json", + "manifestHash": "2e682eeb1a3624fb27a183f2d74a5d79fbec8fa0c191792b9360bc1797e7ceae", + "manifestFile": { + "size": 2077, + "mtimeMs": 1780281047414.9822, + "ctimeMs": 1780281047414.9822 + }, + "source": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/fireworks/index.js", + "packageJson": { + "path": "package.json", + "hash": "afc03f11952b1a68b767bb504ce455d1cef8d8e5c0a796828d90f97c2eaa7c21", + "fileSignature": { + "size": 301, + "mtimeMs": 1780281047487.96, + "ctimeMs": 1780281047487.96 + } + }, + "rootDir": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/fireworks", + "origin": "bundled", + "enabled": false, + "enabledByDefault": true, + "startup": { + "sidecar": false, + "memory": false, + "deferConfiguredChannelFullLoadUntilAfterListen": false, + "agentHarnesses": [] + }, + "compat": [] + }, + { + "pluginId": "github-copilot", + "packageName": "@openclaw/github-copilot-provider", + "packageVersion": "2026.5.28", + "manifestPath": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/github-copilot/openclaw.plugin.json", + "manifestHash": "238694bdad530241d6cfa247ea9a9e7cb20b2de2330e7afa472d197fbbe568a6", + "manifestFile": { + "size": 7535, + "mtimeMs": 1780281047414.9822, + "ctimeMs": 1780281047414.9822 + }, + "source": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/github-copilot/index.js", + "packageJson": { + "path": "package.json", + "hash": "40e3537eb0dcab6560e40682960419ed19394b181f827770c729c502cb4c45cb", + "fileSignature": { + "size": 366, + "mtimeMs": 1780281047487.96, + "ctimeMs": 1780281047487.96 + } + }, + "rootDir": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/github-copilot", + "origin": "bundled", + "enabled": false, + "enabledByDefault": true, + "startup": { + "sidecar": false, + "memory": false, + "deferConfiguredChannelFullLoadUntilAfterListen": false, + "agentHarnesses": [] + }, + "compat": [] + }, + { + "pluginId": "google", + "packageName": "@openclaw/google-plugin", + "packageVersion": "2026.5.28", + "manifestPath": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/google/openclaw.plugin.json", + "manifestHash": "51c3bb5b2837ec96b09aea4e995aada9298e2acbfec70025478c35c011b546a0", + "manifestFile": { + "size": 28465, + "mtimeMs": 1780281047433.2266, + "ctimeMs": 1780281047433.2266 + }, + "source": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/google/index.js", + "packageJson": { + "path": "package.json", + "hash": "94757bf6f7f197a7294c39e94815c3673a110fd14ac9b024f70c54fdaf4fe69a", + "fileSignature": { + "size": 375, + "mtimeMs": 1780281047491.609, + "ctimeMs": 1780281047491.609 + } + }, + "rootDir": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/google", + "origin": "bundled", + "enabled": false, + "enabledByDefault": true, + "startup": { + "sidecar": false, + "memory": false, + "deferConfiguredChannelFullLoadUntilAfterListen": false, + "agentHarnesses": [ + "google-gemini-cli" + ] + }, + "compat": [] + }, + { + "pluginId": "gradium", + "packageName": "@openclaw/gradium-speech", + "packageVersion": "2026.5.28", + "manifestPath": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/gradium/openclaw.plugin.json", + "manifestHash": "1a21296070e5740c4cff326b263be4c9c418d6b09e8182f7a2ae50cba39aa8e0", + "manifestFile": { + "size": 383, + "mtimeMs": 1780281047433.2266, + "ctimeMs": 1780281047433.2266 + }, + "source": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/gradium/index.js", + "packageJson": { + "path": "package.json", + "hash": "f8cc7b1503fbd0dc698f57334e56cf63ea2fad7ec84a6b4be214c09f9da0ec1d", + "fileSignature": { + "size": 293, + "mtimeMs": 1780281047491.609, + "ctimeMs": 1780281047491.609 + } + }, + "rootDir": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/gradium", + "origin": "bundled", + "enabled": false, + "startup": { + "sidecar": false, + "memory": false, + "deferConfiguredChannelFullLoadUntilAfterListen": false, + "agentHarnesses": [] + }, + "compat": [] + }, + { + "pluginId": "groq", + "packageName": "@openclaw/groq-provider", + "packageVersion": "2026.5.28", + "manifestPath": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/groq/openclaw.plugin.json", + "manifestHash": "37c1fa249ca5d03b6a78866330853a71a38f2f526c8d3649a1cc7eb609d8f1e1", + "manifestFile": { + "size": 5225, + "mtimeMs": 1780281047433.2266, + "ctimeMs": 1780281047433.2266 + }, + "source": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/groq/index.js", + "packageJson": { + "path": "package.json", + "hash": "88a4d1c79f29307fe852e64b6586dcd81f39681cf7c04acf53c6aa636b68023d", + "fileSignature": { + "size": 304, + "mtimeMs": 1780281047491.609, + "ctimeMs": 1780281047491.609 + } + }, + "rootDir": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/groq", + "origin": "bundled", + "enabled": false, + "enabledByDefault": true, + "startup": { + "sidecar": false, + "memory": false, + "deferConfiguredChannelFullLoadUntilAfterListen": false, + "agentHarnesses": [] + }, + "compat": [] + }, + { + "pluginId": "huggingface", + "packageName": "@openclaw/huggingface-provider", + "packageVersion": "2026.5.28", + "manifestPath": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/huggingface/openclaw.plugin.json", + "manifestHash": "2ec94d8623ace2c7349a284749696e711997681c92957749437cd8fe2e9e3f6f", + "manifestFile": { + "size": 1688, + "mtimeMs": 1780281047433.2266, + "ctimeMs": 1780281047433.2266 + }, + "source": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/huggingface/index.js", + "packageJson": { + "path": "package.json", + "hash": "a1b446f2cd87b3138697f6e403ee7dc675bfab96c110236100e554788099120c", + "fileSignature": { + "size": 306, + "mtimeMs": 1780281047491.609, + "ctimeMs": 1780281047491.609 + } + }, + "rootDir": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/huggingface", + "origin": "bundled", + "enabled": false, + "enabledByDefault": true, + "startup": { + "sidecar": false, + "memory": false, + "deferConfiguredChannelFullLoadUntilAfterListen": false, + "agentHarnesses": [] + }, + "compat": [] + }, + { + "pluginId": "imessage", + "packageName": "@openclaw/imessage", + "packageVersion": "2026.5.28", + "packageChannel": { + "id": "imessage", + "label": "iMessage", + "selectionLabel": "iMessage (imsg)", + "detailLabel": "iMessage", + "docsPath": "/channels/imessage", + "docsLabel": "imessage", + "blurb": "Local iMessage/SMS through the imsg bridge, including private API message actions when enabled.", + "aliases": [ + "imsg" + ], + "systemImage": "message.fill", + "cliAddOptions": [ + { + "flags": "--db-path ", + "description": "iMessage database path" + }, + { + "flags": "--service ", + "description": "iMessage service (imessage|sms|auto)" + }, + { + "flags": "--region ", + "description": "iMessage region (for SMS)" + } + ] + }, + "manifestPath": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/imessage/openclaw.plugin.json", + "manifestHash": "ea2011f2118e95fd5550df73d77e843653877b6f2edf74c5a9aa85c199b32b28", + "manifestFile": { + "size": 24873, + "mtimeMs": 1780281047433.2266, + "ctimeMs": 1780281047433.2266 + }, + "source": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/imessage/index.js", + "setupSource": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/imessage/setup-entry.js", + "packageJson": { + "path": "package.json", + "hash": "25fc984ca9e5315249be7099a88952aef9af2e03c78f8750429eca7ff5857356", + "fileSignature": { + "size": 1761, + "mtimeMs": 1780281047491.609, + "ctimeMs": 1780281047491.609 + } + }, + "rootDir": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/imessage", + "origin": "bundled", + "enabled": false, + "startup": { + "sidecar": false, + "memory": false, + "deferConfiguredChannelFullLoadUntilAfterListen": false, + "agentHarnesses": [] + }, + "compat": [] + }, + { + "pluginId": "inworld", + "packageName": "@openclaw/inworld-speech", + "packageVersion": "2026.5.28", + "manifestPath": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/inworld/openclaw.plugin.json", + "manifestHash": "000732dd27b979de727c6c3060aeaba47b8af1f850320699862fb2cf0a254529", + "manifestFile": { + "size": 1293, + "mtimeMs": 1780281047433.2266, + "ctimeMs": 1780281047433.2266 + }, + "source": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/inworld/index.js", + "packageJson": { + "path": "package.json", + "hash": "b91b8204e85cca6479fbdead46b627d829dd6aed85d30e6542770110f0fd446d", + "fileSignature": { + "size": 293, + "mtimeMs": 1780281047491.609, + "ctimeMs": 1780281047491.609 + } + }, + "rootDir": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/inworld", + "origin": "bundled", + "enabled": false, + "enabledByDefault": true, + "startup": { + "sidecar": false, + "memory": false, + "deferConfiguredChannelFullLoadUntilAfterListen": false, + "agentHarnesses": [] + }, + "compat": [] + }, + { + "pluginId": "irc", + "packageName": "@openclaw/irc", + "packageVersion": "2026.5.28", + "packageInstall": { + "warnings": [] + }, + "packageChannel": { + "id": "irc", + "label": "IRC", + "selectionLabel": "IRC (Server + Nick)", + "detailLabel": "IRC", + "docsPath": "/channels/irc", + "docsLabel": "irc", + "blurb": "classic IRC networks with DM/channel routing and pairing controls.", + "aliases": [ + "internet-relay-chat" + ], + "systemImage": "network", + "configuredState": { + "env": { + "allOf": [ + "IRC_HOST", + "IRC_NICK" + ] + }, + "specifier": "./configured-state", + "exportName": "hasIrcConfiguredState" + } + }, + "manifestPath": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/irc/openclaw.plugin.json", + "manifestHash": "1065f8ff5cf69276d66de118b25933972e29907d942a18eb36994080f40a5a8d", + "manifestFile": { + "size": 21165, + "mtimeMs": 1780281047433.2266, + "ctimeMs": 1780281047433.2266 + }, + "source": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/irc/index.js", + "setupSource": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/irc/setup-entry.js", + "packageJson": { + "path": "package.json", + "hash": "db6efd14682f08447af400bf18bc4e962bc0aab17142f81e4d8d49e544ce370f", + "fileSignature": { + "size": 1012, + "mtimeMs": 1780281047491.609, + "ctimeMs": 1780281047491.609 + } + }, + "rootDir": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/irc", + "origin": "bundled", + "enabled": false, + "startup": { + "sidecar": false, + "memory": false, + "deferConfiguredChannelFullLoadUntilAfterListen": false, + "agentHarnesses": [] + }, + "compat": [ + "channel-env-vars" + ] + }, + { + "pluginId": "kilocode", + "packageName": "@openclaw/kilocode-provider", + "packageVersion": "2026.5.28", + "manifestPath": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/kilocode/openclaw.plugin.json", + "manifestHash": "67dd7a5b32c65c8a48a224134f7f139f43c00af9b399673a7b159ffc793d4430", + "manifestFile": { + "size": 1819, + "mtimeMs": 1780281047433.2266, + "ctimeMs": 1780281047433.2266 + }, + "source": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/kilocode/index.js", + "packageJson": { + "path": "package.json", + "hash": "6af6ecfc0cb4b926733d92b48994b08f630e7b5f39b5f029cdec9111906028d5", + "fileSignature": { + "size": 303, + "mtimeMs": 1780281047491.609, + "ctimeMs": 1780281047491.609 + } + }, + "rootDir": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/kilocode", + "origin": "bundled", + "enabled": false, + "enabledByDefault": true, + "startup": { + "sidecar": false, + "memory": false, + "deferConfiguredChannelFullLoadUntilAfterListen": false, + "agentHarnesses": [] + }, + "compat": [] + }, + { + "pluginId": "kimi", + "packageName": "@openclaw/kimi-provider", + "packageVersion": "2026.5.28", + "manifestPath": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/kimi-coding/openclaw.plugin.json", + "manifestHash": "7f0077b75191bc6d13ddd7b36ad9108b14c49332532ebadfd470f5f97861acd4", + "manifestFile": { + "size": 1659, + "mtimeMs": 1780281047433.2266, + "ctimeMs": 1780281047433.2266 + }, + "source": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/kimi-coding/index.js", + "packageJson": { + "path": "package.json", + "hash": "9903ff2c0ae4ae56b9429e948da2088155d8afb140339792c751f30f25dfc03b", + "fileSignature": { + "size": 291, + "mtimeMs": 1780281047491.609, + "ctimeMs": 1780281047491.609 + } + }, + "rootDir": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/kimi-coding", + "origin": "bundled", + "enabled": false, + "enabledByDefault": true, + "startup": { + "sidecar": false, + "memory": false, + "deferConfiguredChannelFullLoadUntilAfterListen": false, + "agentHarnesses": [] + }, + "compat": [] + }, + { + "pluginId": "litellm", + "packageName": "@openclaw/litellm-provider", + "packageVersion": "2026.5.28", + "manifestPath": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/litellm/openclaw.plugin.json", + "manifestHash": "db1d4f6e0f6678c903b291402128f6f57942f0aac84f751d7a4d8389f2dd19d6", + "manifestFile": { + "size": 975, + "mtimeMs": 1780281047433.2266, + "ctimeMs": 1780281047433.2266 + }, + "source": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/litellm/index.js", + "packageJson": { + "path": "package.json", + "hash": "04173f47c211895767c4af116ec36e17b4823105f378a6683e96146783f72bfc", + "fileSignature": { + "size": 297, + "mtimeMs": 1780281047491.609, + "ctimeMs": 1780281047491.609 + } + }, + "rootDir": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/litellm", + "origin": "bundled", + "enabled": false, + "enabledByDefault": true, + "startup": { + "sidecar": false, + "memory": false, + "deferConfiguredChannelFullLoadUntilAfterListen": false, + "agentHarnesses": [] + }, + "compat": [] + }, + { + "pluginId": "llm-task", + "packageName": "@openclaw/llm-task", + "packageVersion": "2026.5.28", + "manifestPath": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/llm-task/openclaw.plugin.json", + "manifestHash": "8662441bfdf67447107c5de639fc3c3b46509f9f07cad6eef3266b730c531a76", + "manifestFile": { + "size": 990, + "mtimeMs": 1780281047433.2266, + "ctimeMs": 1780281047433.2266 + }, + "source": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/llm-task/index.js", + "packageJson": { + "path": "package.json", + "hash": "34468afa6fc838bb39d2e96a24f3bbbed785324c8ffe34aa58f41f86b4e6787d", + "fileSignature": { + "size": 340, + "mtimeMs": 1780281047491.609, + "ctimeMs": 1780281047491.609 + } + }, + "rootDir": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/llm-task", + "origin": "bundled", + "enabled": false, + "startup": { + "sidecar": true, + "memory": false, + "deferConfiguredChannelFullLoadUntilAfterListen": false, + "agentHarnesses": [] + }, + "compat": [] + }, + { + "pluginId": "lmstudio", + "packageName": "@openclaw/lmstudio-provider", + "packageVersion": "2026.5.28", + "manifestPath": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/lmstudio/openclaw.plugin.json", + "manifestHash": "54c7aa5855e457758646e5ac4e51819d8738dfbf6413040f1ac74f474bb50f00", + "manifestFile": { + "size": 1357, + "mtimeMs": 1780281047433.2266, + "ctimeMs": 1780281047433.2266 + }, + "source": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/lmstudio/index.js", + "packageJson": { + "path": "package.json", + "hash": "369810d8135b8b0b460cadf716e21a2219a27434bec2978591e2e083982935c7", + "fileSignature": { + "size": 230, + "mtimeMs": 1780281047491.609, + "ctimeMs": 1780281047491.609 + } + }, + "rootDir": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/lmstudio", + "origin": "bundled", + "enabled": false, + "enabledByDefault": true, + "syntheticAuthRefs": [ + "lmstudio" + ], + "startup": { + "sidecar": false, + "memory": false, + "deferConfiguredChannelFullLoadUntilAfterListen": false, + "agentHarnesses": [] + }, + "compat": [] + }, + { + "pluginId": "mattermost", + "packageName": "@openclaw/mattermost", + "packageVersion": "2026.5.28", + "packageInstall": { + "warnings": [] + }, + "packageChannel": { + "id": "mattermost", + "label": "Mattermost", + "selectionLabel": "Mattermost (plugin)", + "docsPath": "/channels/mattermost", + "docsLabel": "mattermost", + "blurb": "self-hosted Slack-style chat; install the plugin to enable.", + "order": 65 + }, + "manifestPath": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/mattermost/openclaw.plugin.json", + "manifestHash": "9f23ba952b74847285aa4feed3787aeb04ecf6d9557c96c597d968ec24f774fd", + "manifestFile": { + "size": 32733, + "mtimeMs": 1780281047433.2266, + "ctimeMs": 1780281047433.2266 + }, + "source": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/mattermost/index.js", + "setupSource": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/mattermost/setup-entry.js", + "packageJson": { + "path": "package.json", + "hash": "30d71428a822246f0c08ff29568aa35d9edadd8c0e689ead2b1a9d945fbaa4b1", + "fileSignature": { + "size": 997, + "mtimeMs": 1780281047491.609, + "ctimeMs": 1780281047491.609 + } + }, + "rootDir": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/mattermost", + "origin": "bundled", + "enabled": false, + "startup": { + "sidecar": false, + "memory": false, + "deferConfiguredChannelFullLoadUntilAfterListen": false, + "agentHarnesses": [] + }, + "compat": [ + "channel-env-vars" + ] + }, + { + "pluginId": "memory-core", + "packageName": "@openclaw/memory-core", + "packageVersion": "2026.5.28", + "manifestPath": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/memory-core/openclaw.plugin.json", + "manifestHash": "281362c58007be59f52d8dae668f1ef656f682b3f7a01ba7a2bb14f86d42dce8", + "manifestFile": { + "size": 6058, + "mtimeMs": 1780281047433.2266, + "ctimeMs": 1780281047433.2266 + }, + "source": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/memory-core/index.js", + "packageJson": { + "path": "package.json", + "hash": "8cf1c3ca14686cc5b3fa0ce9cc4ce72cb9c1e6a88fbf1a8904f9b832806a96f7", + "fileSignature": { + "size": 560, + "mtimeMs": 1780281047495.2578, + "ctimeMs": 1780281047495.2578 + } + }, + "rootDir": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/memory-core", + "origin": "bundled", + "enabled": true, + "startup": { + "sidecar": false, + "memory": true, + "deferConfiguredChannelFullLoadUntilAfterListen": false, + "agentHarnesses": [] + }, + "compat": [] + }, + { + "pluginId": "memory-wiki", + "packageName": "@openclaw/memory-wiki", + "packageVersion": "2026.5.28", + "manifestPath": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/memory-wiki/openclaw.plugin.json", + "manifestHash": "75985149f5886866ce34c0b556bba252237629385ea57fba748d68544c5a3f76", + "manifestFile": { + "size": 5206, + "mtimeMs": 1780281047436.8755, + "ctimeMs": 1780281047436.8755 + }, + "source": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/memory-wiki/index.js", + "packageJson": { + "path": "package.json", + "hash": "96660023eba72f2ff479a82c7ea7c0f1e55fb8475f0574ad2759ebeed6798dd6", + "fileSignature": { + "size": 551, + "mtimeMs": 1780281047495.2578, + "ctimeMs": 1780281047495.2578 + } + }, + "rootDir": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/memory-wiki", + "origin": "bundled", + "enabled": false, + "startup": { + "sidecar": true, + "memory": false, + "deferConfiguredChannelFullLoadUntilAfterListen": false, + "agentHarnesses": [] + }, + "compat": [] + }, + { + "pluginId": "microsoft", + "packageName": "@openclaw/microsoft-speech", + "packageVersion": "2026.5.28", + "manifestPath": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/microsoft/openclaw.plugin.json", + "manifestHash": "4fae9b5374016e1d457a0c18e7ab86f116af790fea107e1f63c683fe78951d69", + "manifestFile": { + "size": 272, + "mtimeMs": 1780281047436.8755, + "ctimeMs": 1780281047436.8755 + }, + "source": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/microsoft/index.js", + "packageJson": { + "path": "package.json", + "hash": "9c3f00fdcda37ebc061494c764f8119180dc5e0fcf04e58cce859df46b15f53c", + "fileSignature": { + "size": 352, + "mtimeMs": 1780281047495.2578, + "ctimeMs": 1780281047495.2578 + } + }, + "rootDir": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/microsoft", + "origin": "bundled", + "enabled": false, + "enabledByDefault": true, + "startup": { + "sidecar": false, + "memory": false, + "deferConfiguredChannelFullLoadUntilAfterListen": false, + "agentHarnesses": [] + }, + "compat": [] + }, + { + "pluginId": "microsoft-foundry", + "packageName": "@openclaw/microsoft-foundry", + "packageVersion": "2026.5.28", + "manifestPath": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/microsoft-foundry/openclaw.plugin.json", + "manifestHash": "21f8fc266cb838fa037902c7d6e15af962d289738e511173e9740d2fccee6fec", + "manifestFile": { + "size": 1174, + "mtimeMs": 1780281047436.8755, + "ctimeMs": 1780281047436.8755 + }, + "source": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/microsoft-foundry/index.js", + "packageJson": { + "path": "package.json", + "hash": "9036708617c29da637e604abcd8affa984cf47528141967dae153d3ef244f8bc", + "fileSignature": { + "size": 308, + "mtimeMs": 1780281047495.2578, + "ctimeMs": 1780281047495.2578 + } + }, + "rootDir": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/microsoft-foundry", + "origin": "bundled", + "enabled": false, + "enabledByDefault": true, + "startup": { + "sidecar": false, + "memory": false, + "deferConfiguredChannelFullLoadUntilAfterListen": false, + "agentHarnesses": [] + }, + "compat": [] + }, + { + "pluginId": "migrate-claude", + "packageName": "@openclaw/migrate-claude", + "packageVersion": "2026.5.28", + "manifestPath": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/migrate-claude/openclaw.plugin.json", + "manifestHash": "ab37718aca1e40a1347c058f5497719ba83f7d30a8c0b5de1bfc27f8638275f2", + "manifestFile": { + "size": 411, + "mtimeMs": 1780281047436.8755, + "ctimeMs": 1780281047436.8755 + }, + "source": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/migrate-claude/index.js", + "packageJson": { + "path": "package.json", + "hash": "143747221d45c82e1af07a0f86501ec131a4ea0a6cd51210fa5047c2cf12e4ac", + "fileSignature": { + "size": 470, + "mtimeMs": 1780281047495.2578, + "ctimeMs": 1780281047495.2578 + } + }, + "rootDir": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/migrate-claude", + "origin": "bundled", + "enabled": false, + "startup": { + "sidecar": false, + "memory": false, + "deferConfiguredChannelFullLoadUntilAfterListen": false, + "agentHarnesses": [] + }, + "compat": [] + }, + { + "pluginId": "migrate-hermes", + "packageName": "@openclaw/migrate-hermes", + "packageVersion": "2026.5.28", + "manifestPath": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/migrate-hermes/openclaw.plugin.json", + "manifestHash": "82bb35ee30b4305bd66d2c76d79c3efda1adc348164d36fcae4ba7484f2958d6", + "manifestFile": { + "size": 388, + "mtimeMs": 1780281047436.8755, + "ctimeMs": 1780281047436.8755 + }, + "source": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/migrate-hermes/index.js", + "packageJson": { + "path": "package.json", + "hash": "e5d879a1e6653cb8c3622df64b4afc9bdfeb7dc9a0b3d93a6632107d65afc84b", + "fileSignature": { + "size": 515, + "mtimeMs": 1780281047495.2578, + "ctimeMs": 1780281047495.2578 + } + }, + "rootDir": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/migrate-hermes", + "origin": "bundled", + "enabled": false, + "startup": { + "sidecar": false, + "memory": false, + "deferConfiguredChannelFullLoadUntilAfterListen": false, + "agentHarnesses": [] + }, + "compat": [] + }, + { + "pluginId": "minimax", + "packageName": "@openclaw/minimax-provider", + "packageVersion": "2026.5.28", + "manifestPath": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/minimax/openclaw.plugin.json", + "manifestHash": "d47db927cff6269c10784f671623cb882e1d263265f53ecca3103e6acbd5ef11", + "manifestFile": { + "size": 4957, + "mtimeMs": 1780281047436.8755, + "ctimeMs": 1780281047436.8755 + }, + "source": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/minimax/index.js", + "packageJson": { + "path": "package.json", + "hash": "d28ccc091fbbcd41017ee20ebe7f6c98d907a3334e7f04cc4cbe010b88f746ca", + "fileSignature": { + "size": 307, + "mtimeMs": 1780281047495.2578, + "ctimeMs": 1780281047495.2578 + } + }, + "rootDir": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/minimax", + "origin": "bundled", + "enabled": false, + "enabledByDefault": true, + "startup": { + "sidecar": false, + "memory": false, + "deferConfiguredChannelFullLoadUntilAfterListen": false, + "agentHarnesses": [] + }, + "compat": [] + }, + { + "pluginId": "mistral", + "packageName": "@openclaw/mistral-provider", + "packageVersion": "2026.5.28", + "manifestPath": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/mistral/openclaw.plugin.json", + "manifestHash": "8b57e42d51df38778ce4d7ba5222a8127eab70118e54f94fd5bbd2ca0c8e98d6", + "manifestFile": { + "size": 5055, + "mtimeMs": 1780281047436.8755, + "ctimeMs": 1780281047436.8755 + }, + "source": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/mistral/index.js", + "packageJson": { + "path": "package.json", + "hash": "f19392a04a3e2d0bf3334df56002527a0847dcd9dc6e05bc57efafef1b498d23", + "fileSignature": { + "size": 297, + "mtimeMs": 1780281047495.2578, + "ctimeMs": 1780281047495.2578 + } + }, + "rootDir": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/mistral", + "origin": "bundled", + "enabled": false, + "enabledByDefault": true, + "startup": { + "sidecar": false, + "memory": false, + "deferConfiguredChannelFullLoadUntilAfterListen": false, + "agentHarnesses": [] + }, + "compat": [] + }, + { + "pluginId": "moonshot", + "packageName": "@openclaw/moonshot-provider", + "packageVersion": "2026.5.28", + "manifestPath": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/moonshot/openclaw.plugin.json", + "manifestHash": "2fe73ad6353431be4c7d5865e2dce6e02c2c2c7b458465cdc58eac0629648b9f", + "manifestFile": { + "size": 5710, + "mtimeMs": 1780281047436.8755, + "ctimeMs": 1780281047436.8755 + }, + "source": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/moonshot/index.js", + "packageJson": { + "path": "package.json", + "hash": "7f9464fa825266c340a20803efdfcced39d07722af6055eaef21283380f9b4a8", + "fileSignature": { + "size": 299, + "mtimeMs": 1780281047495.2578, + "ctimeMs": 1780281047495.2578 + } + }, + "rootDir": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/moonshot", + "origin": "bundled", + "enabled": false, + "enabledByDefault": true, + "startup": { + "sidecar": false, + "memory": false, + "deferConfiguredChannelFullLoadUntilAfterListen": false, + "agentHarnesses": [] + }, + "compat": [] + }, + { + "pluginId": "nvidia", + "packageName": "@openclaw/nvidia-provider", + "packageVersion": "2026.5.28", + "manifestPath": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/nvidia/openclaw.plugin.json", + "manifestHash": "069f3fe422f14de85933998ecc6cd128995ab0924a962061b2f201d3223b274c", + "manifestFile": { + "size": 4530, + "mtimeMs": 1780281047436.8755, + "ctimeMs": 1780281047436.8755 + }, + "source": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/nvidia/index.js", + "packageJson": { + "path": "package.json", + "hash": "bf21f3587a33ad83c5d48f59da5b8cee9ebcfaa914dd316351a159ff7391c1da", + "fileSignature": { + "size": 295, + "mtimeMs": 1780281047495.2578, + "ctimeMs": 1780281047495.2578 + } + }, + "rootDir": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/nvidia", + "origin": "bundled", + "enabled": false, + "enabledByDefault": true, + "startup": { + "sidecar": false, + "memory": false, + "deferConfiguredChannelFullLoadUntilAfterListen": false, + "agentHarnesses": [] + }, + "compat": [] + }, + { + "pluginId": "oc-path", + "packageName": "@openclaw/oc-path", + "packageVersion": "2026.5.28", + "manifestPath": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/oc-path/openclaw.plugin.json", + "manifestHash": "7196ee1480be8d9781d407fbc1def5d51f1f7b5421d882f11bc096ff70db593d", + "manifestFile": { + "size": 397, + "mtimeMs": 1780281047436.8755, + "ctimeMs": 1780281047436.8755 + }, + "source": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/oc-path/index.js", + "packageJson": { + "path": "package.json", + "hash": "897886ad7cca9b0cdd37c3f922c2045ab24376189e22c429a76cc278d22f912c", + "fileSignature": { + "size": 592, + "mtimeMs": 1780281047495.2578, + "ctimeMs": 1780281047495.2578 + } + }, + "rootDir": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/oc-path", + "origin": "bundled", + "enabled": false, + "startup": { + "sidecar": false, + "memory": false, + "deferConfiguredChannelFullLoadUntilAfterListen": false, + "agentHarnesses": [] + }, + "compat": [ + "activation-command-hint" + ] + }, + { + "pluginId": "ollama", + "packageName": "@openclaw/ollama-provider", + "packageVersion": "2026.5.28", + "manifestPath": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/ollama/openclaw.plugin.json", + "manifestHash": "e3258a908aa070875997a55f525de2b16b6b7b544e18dcf14448b1d49ba4904b", + "manifestFile": { + "size": 1737, + "mtimeMs": 1780281047436.8755, + "ctimeMs": 1780281047436.8755 + }, + "source": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/ollama/index.js", + "packageJson": { + "path": "package.json", + "hash": "527fa5f6f7b8ea0e3eb0cda2d6bf5dc627730d03c8d1b749f343d0fedf093f40", + "fileSignature": { + "size": 344, + "mtimeMs": 1780281047495.2578, + "ctimeMs": 1780281047495.2578 + } + }, + "rootDir": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/ollama", + "origin": "bundled", + "enabled": true, + "enabledByDefault": true, + "syntheticAuthRefs": [ + "ollama" + ], + "startup": { + "sidecar": false, + "memory": false, + "deferConfiguredChannelFullLoadUntilAfterListen": false, + "agentHarnesses": [] + }, + "compat": [] + }, + { + "pluginId": "open-prose", + "packageName": "@openclaw/open-prose", + "packageVersion": "2026.5.28", + "manifestPath": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/open-prose/openclaw.plugin.json", + "manifestHash": "b7b6e77271010216cc988012c9238b1b989a5e7ab8a70ad7b98b499031a6b89a", + "manifestFile": { + "size": 304, + "mtimeMs": 1780281047436.8755, + "ctimeMs": 1780281047436.8755 + }, + "source": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/open-prose/index.js", + "packageJson": { + "path": "package.json", + "hash": "a62fb02a484f78fd9e5215017a3db90829e1df13a1d9d09dea4c6d0f7f01c2ad", + "fileSignature": { + "size": 318, + "mtimeMs": 1780281047495.2578, + "ctimeMs": 1780281047495.2578 + } + }, + "rootDir": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/open-prose", + "origin": "bundled", + "enabled": false, + "startup": { + "sidecar": false, + "memory": false, + "deferConfiguredChannelFullLoadUntilAfterListen": false, + "agentHarnesses": [] + }, + "compat": [] + }, + { + "pluginId": "openai", + "packageName": "@openclaw/openai-provider", + "packageVersion": "2026.5.28", + "manifestPath": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/openai/openclaw.plugin.json", + "manifestHash": "5f60db1864220199d82dafe7cfc451e010fcb86740efbca499f75fd2ca980441", + "manifestFile": { + "size": 18631, + "mtimeMs": 1780281047451.4712, + "ctimeMs": 1780281047451.4712 + }, + "source": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/openai/index.js", + "packageJson": { + "path": "package.json", + "hash": "4fd7fb590362ce4f08807ce6fd2c5347cfa7063c6ebe324e30c0ec3c29531f3b", + "fileSignature": { + "size": 340, + "mtimeMs": 1780281047495.2578, + "ctimeMs": 1780281047495.2578 + } + }, + "rootDir": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/openai", + "origin": "bundled", + "enabled": false, + "enabledByDefault": true, + "startup": { + "sidecar": false, + "memory": false, + "deferConfiguredChannelFullLoadUntilAfterListen": false, + "agentHarnesses": [] + }, + "compat": [] + }, + { + "pluginId": "opencode", + "packageName": "@openclaw/opencode-provider", + "packageVersion": "2026.5.28", + "manifestPath": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/opencode/openclaw.plugin.json", + "manifestHash": "f7f583e37b6b524d94bc0dd1f6a81164d266f09731391ed21e8a6494d6afd4ed", + "manifestFile": { + "size": 1420, + "mtimeMs": 1780281047451.4712, + "ctimeMs": 1780281047451.4712 + }, + "source": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/opencode/index.js", + "packageJson": { + "path": "package.json", + "hash": "d5e5ad67784b2c51304937930c0b254b467f355c39353a7bda7496c35bfa8e16", + "fileSignature": { + "size": 303, + "mtimeMs": 1780281047495.2578, + "ctimeMs": 1780281047495.2578 + } + }, + "rootDir": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/opencode", + "origin": "bundled", + "enabled": false, + "enabledByDefault": true, + "startup": { + "sidecar": false, + "memory": false, + "deferConfiguredChannelFullLoadUntilAfterListen": false, + "agentHarnesses": [] + }, + "compat": [] + }, + { + "pluginId": "opencode-go", + "packageName": "@openclaw/opencode-go-provider", + "packageVersion": "2026.5.28", + "manifestPath": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/opencode-go/openclaw.plugin.json", + "manifestHash": "2acb8573ff505e02d89b84c2fe9a0e73ae55872488a5646a3ee50eae3acc1be5", + "manifestFile": { + "size": 2898, + "mtimeMs": 1780281047451.4712, + "ctimeMs": 1780281047451.4712 + }, + "source": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/opencode-go/index.js", + "packageJson": { + "path": "package.json", + "hash": "91cc5a821a284ddaa828ee53e91a1da7da9415d5654738c271525e2ceb324764", + "fileSignature": { + "size": 305, + "mtimeMs": 1780281047495.2578, + "ctimeMs": 1780281047495.2578 + } + }, + "rootDir": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/opencode-go", + "origin": "bundled", + "enabled": false, + "enabledByDefault": true, + "startup": { + "sidecar": false, + "memory": false, + "deferConfiguredChannelFullLoadUntilAfterListen": false, + "agentHarnesses": [] + }, + "compat": [] + }, + { + "pluginId": "openrouter", + "packageName": "@openclaw/openrouter-provider", + "packageVersion": "2026.5.28", + "manifestPath": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/openrouter/openclaw.plugin.json", + "manifestHash": "85001d185105f85f8a896b2c383792b4d5f5d323f303c11b8ab6bec3c7df936a", + "manifestFile": { + "size": 2108, + "mtimeMs": 1780281047451.4712, + "ctimeMs": 1780281047451.4712 + }, + "source": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/openrouter/index.js", + "packageJson": { + "path": "package.json", + "hash": "ab45093c21328771bcffe9c3d00190997796495e8c653a9fff4ff6353dfe83a3", + "fileSignature": { + "size": 303, + "mtimeMs": 1780281047495.2578, + "ctimeMs": 1780281047495.2578 + } + }, + "rootDir": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/openrouter", + "origin": "bundled", + "enabled": false, + "enabledByDefault": true, + "startup": { + "sidecar": false, + "memory": false, + "deferConfiguredChannelFullLoadUntilAfterListen": false, + "agentHarnesses": [] + }, + "compat": [] + }, + { + "pluginId": "perplexity", + "packageName": "@openclaw/perplexity-plugin", + "packageVersion": "2026.5.28", + "manifestPath": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/perplexity/openclaw.plugin.json", + "manifestHash": "d23af51731d5d6b37beb403e8ec7755b073cf37092c499d28e091e956b5704c4", + "manifestFile": { + "size": 1401, + "mtimeMs": 1780281047451.4712, + "ctimeMs": 1780281047451.4712 + }, + "source": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/perplexity/index.js", + "packageJson": { + "path": "package.json", + "hash": "0af117fc21478b706046e285b16434c1cb8b068cbd9f60229b365ed867760917", + "fileSignature": { + "size": 292, + "mtimeMs": 1780281047495.2578, + "ctimeMs": 1780281047495.2578 + } + }, + "rootDir": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/perplexity", + "origin": "bundled", + "enabled": false, + "startup": { + "sidecar": false, + "memory": false, + "deferConfiguredChannelFullLoadUntilAfterListen": false, + "agentHarnesses": [] + }, + "compat": [] + }, + { + "pluginId": "phone-control", + "manifestPath": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/phone-control/openclaw.plugin.json", + "manifestHash": "b72511655c2d09e181fae00026ac7aab2784d73c4a351022dd8bd3be68826ec1", + "manifestFile": { + "size": 437, + "mtimeMs": 1780281047451.4712, + "ctimeMs": 1780281047451.4712 + }, + "source": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/phone-control/index.js", + "rootDir": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/phone-control", + "origin": "bundled", + "enabled": false, + "enabledByDefault": true, + "startup": { + "sidecar": true, + "memory": false, + "deferConfiguredChannelFullLoadUntilAfterListen": false, + "agentHarnesses": [] + }, + "compat": [] + }, + { + "pluginId": "policy", + "packageName": "@openclaw/policy", + "packageVersion": "2026.5.28", + "manifestPath": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/policy/openclaw.plugin.json", + "manifestHash": "92d7976488e7f8425e977e028325aa7b9162dcd32ae3e2ed707228116e7854c3", + "manifestFile": { + "size": 1172, + "mtimeMs": 1780281047451.4712, + "ctimeMs": 1780281047451.4712 + }, + "source": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/policy/index.js", + "packageJson": { + "path": "package.json", + "hash": "d84b2eac285d049a9c6abf064752fa754d414ec8ae48eef4f674b035a29d7dd9", + "fileSignature": { + "size": 526, + "mtimeMs": 1780281047495.2578, + "ctimeMs": 1780281047495.2578 + } + }, + "rootDir": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/policy", + "origin": "bundled", + "enabled": false, + "startup": { + "sidecar": true, + "memory": false, + "deferConfiguredChannelFullLoadUntilAfterListen": false, + "agentHarnesses": [] + }, + "compat": [ + "activation-command-hint" + ] + }, + { + "pluginId": "qianfan", + "packageName": "@openclaw/qianfan-provider", + "packageVersion": "2026.5.28", + "manifestPath": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/qianfan/openclaw.plugin.json", + "manifestHash": "fb676780f2ff142c2815e000350f806ec6c8e9f6fe7da8013274be6c7e5d365e", + "manifestFile": { + "size": 1969, + "mtimeMs": 1780281047451.4712, + "ctimeMs": 1780281047451.4712 + }, + "source": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/qianfan/index.js", + "packageJson": { + "path": "package.json", + "hash": "fb32f63a452283201c75975e504285b8dc9824b5f51df77ce05b64c36c755f8b", + "fileSignature": { + "size": 297, + "mtimeMs": 1780281047498.9065, + "ctimeMs": 1780281047498.9065 + } + }, + "rootDir": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/qianfan", + "origin": "bundled", + "enabled": false, + "enabledByDefault": true, + "startup": { + "sidecar": false, + "memory": false, + "deferConfiguredChannelFullLoadUntilAfterListen": false, + "agentHarnesses": [] + }, + "compat": [] + }, + { + "pluginId": "qwen", + "packageName": "@openclaw/qwen-provider", + "packageVersion": "2026.5.28", + "manifestPath": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/qwen/openclaw.plugin.json", + "manifestHash": "01d0e62901e603353d661be1d8db8fc2612ffd00b7b52d923deaa48b6af2941b", + "manifestFile": { + "size": 5332, + "mtimeMs": 1780281047451.4712, + "ctimeMs": 1780281047451.4712 + }, + "source": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/qwen/index.js", + "packageJson": { + "path": "package.json", + "hash": "c6878fc150c7f577cd79f2fdc089ae47b7d4516ecae445db0f033d9a241fadd2", + "fileSignature": { + "size": 297, + "mtimeMs": 1780281047498.9065, + "ctimeMs": 1780281047498.9065 + } + }, + "rootDir": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/qwen", + "origin": "bundled", + "enabled": false, + "enabledByDefault": true, + "startup": { + "sidecar": false, + "memory": false, + "deferConfiguredChannelFullLoadUntilAfterListen": false, + "agentHarnesses": [] + }, + "compat": [] + }, + { + "pluginId": "runway", + "packageName": "@openclaw/runway-provider", + "packageVersion": "2026.5.28", + "manifestPath": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/runway/openclaw.plugin.json", + "manifestHash": "eced36751d706363709775349163a0af9ec43806a0a9efa4b77ee266b4fac145", + "manifestFile": { + "size": 932, + "mtimeMs": 1780281047455.1199, + "ctimeMs": 1780281047455.1199 + }, + "source": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/runway/index.js", + "packageJson": { + "path": "package.json", + "hash": "754067343b37622dfe014132aa448fe15f50d3ee12cc9a87b42f97ad3bc90d56", + "fileSignature": { + "size": 301, + "mtimeMs": 1780281047498.9065, + "ctimeMs": 1780281047498.9065 + } + }, + "rootDir": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/runway", + "origin": "bundled", + "enabled": false, + "enabledByDefault": true, + "startup": { + "sidecar": false, + "memory": false, + "deferConfiguredChannelFullLoadUntilAfterListen": false, + "agentHarnesses": [] + }, + "compat": [] + }, + { + "pluginId": "searxng", + "packageName": "@openclaw/searxng-plugin", + "packageVersion": "2026.5.28", + "manifestPath": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/searxng/openclaw.plugin.json", + "manifestHash": "1870f1133b5090e746c1507328755b5972e69bca59c7de72c5285ea18f514d3b", + "manifestFile": { + "size": 1141, + "mtimeMs": 1780281047455.1199, + "ctimeMs": 1780281047455.1199 + }, + "source": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/searxng/index.js", + "packageJson": { + "path": "package.json", + "hash": "51171aa44a98250f8ff25696a00343ad225364e36d2225710d80e8fac69cf003", + "fileSignature": { + "size": 286, + "mtimeMs": 1780281047498.9065, + "ctimeMs": 1780281047498.9065 + } + }, + "rootDir": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/searxng", + "origin": "bundled", + "enabled": true, + "startup": { + "sidecar": false, + "memory": false, + "deferConfiguredChannelFullLoadUntilAfterListen": false, + "agentHarnesses": [] + }, + "compat": [] + }, + { + "pluginId": "senseaudio", + "packageName": "@openclaw/senseaudio-provider", + "packageVersion": "2026.5.28", + "manifestPath": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/senseaudio/openclaw.plugin.json", + "manifestHash": "1544c80fee3d42abdc0a1cf33ecec449dc5980e838013a43c9b320132931fc79", + "manifestFile": { + "size": 435, + "mtimeMs": 1780281047455.1199, + "ctimeMs": 1780281047455.1199 + }, + "source": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/senseaudio/index.js", + "packageJson": { + "path": "package.json", + "hash": "885e7bcab23210ab9ac1dd82836045257a623496b115a3122edf61ff6d7d0348", + "fileSignature": { + "size": 316, + "mtimeMs": 1780281047498.9065, + "ctimeMs": 1780281047498.9065 + } + }, + "rootDir": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/senseaudio", + "origin": "bundled", + "enabled": false, + "enabledByDefault": true, + "startup": { + "sidecar": false, + "memory": false, + "deferConfiguredChannelFullLoadUntilAfterListen": false, + "agentHarnesses": [] + }, + "compat": [] + }, + { + "pluginId": "sglang", + "packageName": "@openclaw/sglang-provider", + "packageVersion": "2026.5.28", + "manifestPath": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/sglang/openclaw.plugin.json", + "manifestHash": "516328e0fca0f8a5fe00e53eb72794d8d838fa667a218468bf3be4db86dbea79", + "manifestFile": { + "size": 989, + "mtimeMs": 1780281047455.1199, + "ctimeMs": 1780281047455.1199 + }, + "source": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/sglang/index.js", + "packageJson": { + "path": "package.json", + "hash": "97e16f8fe309269e6c0f216590cab447e34377d8271bba24970646cdc30b2fd8", + "fileSignature": { + "size": 295, + "mtimeMs": 1780281047498.9065, + "ctimeMs": 1780281047498.9065 + } + }, + "rootDir": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/sglang", + "origin": "bundled", + "enabled": false, + "enabledByDefault": true, + "startup": { + "sidecar": false, + "memory": false, + "deferConfiguredChannelFullLoadUntilAfterListen": false, + "agentHarnesses": [] + }, + "compat": [] + }, + { + "pluginId": "signal", + "packageName": "@openclaw/signal", + "packageVersion": "2026.5.28", + "packageChannel": { + "id": "signal", + "label": "Signal", + "selectionLabel": "Signal (signal-cli)", + "detailLabel": "Signal REST", + "docsPath": "/channels/signal", + "docsLabel": "signal", + "blurb": "signal-cli linked device; more setup (David Reagans: \"Hop on Discord.\").", + "systemImage": "antenna.radiowaves.left.and.right", + "markdownCapable": true, + "cliAddOptions": [ + { + "flags": "--signal-number ", + "description": "Signal account number (E.164)" + }, + { + "flags": "--http-host ", + "description": "Signal HTTP daemon host" + }, + { + "flags": "--http-port ", + "description": "Signal HTTP daemon port" + } + ] + }, + "manifestPath": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/signal/openclaw.plugin.json", + "manifestHash": "1975bfba3e15f2bf8e653405384115c23273b453d4984cfd7ef193712c82b086", + "manifestFile": { + "size": 22636, + "mtimeMs": 1780281047455.1199, + "ctimeMs": 1780281047455.1199 + }, + "source": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/signal/index.js", + "setupSource": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/signal/setup-entry.js", + "packageJson": { + "path": "package.json", + "hash": "423fd49d729970f647cdab8f584f27c311bc2984fb515423207da66614c18735", + "fileSignature": { + "size": 1151, + "mtimeMs": 1780281047498.9065, + "ctimeMs": 1780281047498.9065 + } + }, + "rootDir": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/signal", + "origin": "bundled", + "enabled": false, + "startup": { + "sidecar": false, + "memory": false, + "deferConfiguredChannelFullLoadUntilAfterListen": false, + "agentHarnesses": [] + }, + "compat": [] + }, + { + "pluginId": "skill-workshop", + "packageName": "@openclaw/skill-workshop", + "packageVersion": "2026.5.28", + "manifestPath": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/skill-workshop/openclaw.plugin.json", + "manifestHash": "f480b74bb21088de8def5612525f1892d5f50ca54beedc086122beca75ac77dd", + "manifestFile": { + "size": 2198, + "mtimeMs": 1780281047455.1199, + "ctimeMs": 1780281047455.1199 + }, + "source": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/skill-workshop/index.js", + "packageJson": { + "path": "package.json", + "hash": "091bdc1a52440fd68e9fffd6ae0efe84018f963c60d1980d5a2745138729a333", + "fileSignature": { + "size": 342, + "mtimeMs": 1780281047498.9065, + "ctimeMs": 1780281047498.9065 + } + }, + "rootDir": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/skill-workshop", + "origin": "bundled", + "enabled": false, + "startup": { + "sidecar": true, + "memory": false, + "deferConfiguredChannelFullLoadUntilAfterListen": false, + "agentHarnesses": [] + }, + "compat": [] + }, + { + "pluginId": "stepfun", + "packageName": "@openclaw/stepfun-provider", + "packageVersion": "2026.5.28", + "manifestPath": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/stepfun/openclaw.plugin.json", + "manifestHash": "e7746faebfe2f8cb84844f00209e80dd44080f6d816d24f0a6221f151660a96d", + "manifestFile": { + "size": 4392, + "mtimeMs": 1780281047455.1199, + "ctimeMs": 1780281047455.1199 + }, + "source": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/stepfun/index.js", + "packageJson": { + "path": "package.json", + "hash": "1ed42eec87d027c086c291ca5df19364939eccd222609654a8410c541ce8054b", + "fileSignature": { + "size": 297, + "mtimeMs": 1780281047498.9065, + "ctimeMs": 1780281047498.9065 + } + }, + "rootDir": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/stepfun", + "origin": "bundled", + "enabled": false, + "enabledByDefault": true, + "startup": { + "sidecar": false, + "memory": false, + "deferConfiguredChannelFullLoadUntilAfterListen": false, + "agentHarnesses": [] + }, + "compat": [] + }, + { + "pluginId": "synthetic", + "packageName": "@openclaw/synthetic-provider", + "packageVersion": "2026.5.28", + "manifestPath": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/synthetic/openclaw.plugin.json", + "manifestHash": "2a4665e235730749759fdcb1405afa690ce63a40640dfd5e1c71106b298c1b6d", + "manifestFile": { + "size": 859, + "mtimeMs": 1780281047455.1199, + "ctimeMs": 1780281047455.1199 + }, + "source": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/synthetic/index.js", + "packageJson": { + "path": "package.json", + "hash": "d68ea1aec83c25d3c3db4ec16c9095c24067dfe96893a613135baee4513a2d9a", + "fileSignature": { + "size": 301, + "mtimeMs": 1780281047498.9065, + "ctimeMs": 1780281047498.9065 + } + }, + "rootDir": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/synthetic", + "origin": "bundled", + "enabled": false, + "enabledByDefault": true, + "startup": { + "sidecar": false, + "memory": false, + "deferConfiguredChannelFullLoadUntilAfterListen": false, + "agentHarnesses": [] + }, + "compat": [] + }, + { + "pluginId": "talk-voice", + "manifestPath": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/talk-voice/openclaw.plugin.json", + "manifestHash": "e74b5b2dfff117b54cd80728c4fc5b54a56085fc870e6f9d5c9914a151aa812f", + "manifestFile": { + "size": 377, + "mtimeMs": 1780281047455.1199, + "ctimeMs": 1780281047455.1199 + }, + "source": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/talk-voice/index.js", + "rootDir": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/talk-voice", + "origin": "bundled", + "enabled": false, + "enabledByDefault": true, + "startup": { + "sidecar": true, + "memory": false, + "deferConfiguredChannelFullLoadUntilAfterListen": false, + "agentHarnesses": [] + }, + "compat": [] + }, + { + "pluginId": "tavily", + "packageName": "@openclaw/tavily-plugin", + "packageVersion": "2026.5.28", + "manifestPath": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/tavily/openclaw.plugin.json", + "manifestHash": "632fefd56fdf85a86e0030c46bb7183c470b28749fa6e3b520065c470cd75b01", + "manifestFile": { + "size": 1254, + "mtimeMs": 1780281047455.1199, + "ctimeMs": 1780281047455.1199 + }, + "source": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/tavily/index.js", + "packageJson": { + "path": "package.json", + "hash": "e92cdaa104c56f13b81549700ffb739f88a667f09285ef5b5e1eaafcc34fe67a", + "fileSignature": { + "size": 333, + "mtimeMs": 1780281047498.9065, + "ctimeMs": 1780281047498.9065 + } + }, + "rootDir": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/tavily", + "origin": "bundled", + "enabled": false, + "startup": { + "sidecar": false, + "memory": false, + "deferConfiguredChannelFullLoadUntilAfterListen": false, + "agentHarnesses": [] + }, + "compat": [] + }, + { + "pluginId": "telegram", + "packageName": "@openclaw/telegram", + "packageVersion": "2026.5.28", + "packageChannel": { + "id": "telegram", + "label": "Telegram", + "selectionLabel": "Telegram (Bot API)", + "detailLabel": "Telegram Bot", + "docsPath": "/channels/telegram", + "docsLabel": "telegram", + "blurb": "simplest way to get started — register a bot with @BotFather and get going.", + "systemImage": "paperplane", + "selectionDocsPrefix": "", + "selectionDocsOmitLabel": true, + "selectionExtras": [ + "https://openclaw.ai" + ], + "markdownCapable": true, + "commands": { + "nativeCommandsAutoEnabled": true, + "nativeSkillsAutoEnabled": true + }, + "configuredState": { + "env": { + "allOf": [ + "TELEGRAM_BOT_TOKEN" + ] + }, + "specifier": "./configured-state", + "exportName": "hasTelegramConfiguredState" + } + }, + "manifestPath": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/telegram/openclaw.plugin.json", + "manifestHash": "ef7e3db75c59d9c87bcc9b7913e015e301e9899968bb9c2903e0a3a7bfe4ae7c", + "manifestFile": { + "size": 96209, + "mtimeMs": 1780281047477.0132, + "ctimeMs": 1780281047477.0132 + }, + "source": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/telegram/index.js", + "setupSource": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/telegram/setup-entry.js", + "packageJson": { + "path": "package.json", + "hash": "c30177e30f44a285f037042a07b40f0f83643823299da39551f9897bf9c06a90", + "fileSignature": { + "size": 1464, + "mtimeMs": 1780281047498.9065, + "ctimeMs": 1780281047498.9065 + } + }, + "rootDir": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/telegram", + "origin": "bundled", + "enabled": false, + "startup": { + "sidecar": false, + "memory": false, + "deferConfiguredChannelFullLoadUntilAfterListen": false, + "agentHarnesses": [] + }, + "compat": [ + "channel-env-vars" + ] + }, + { + "pluginId": "tencent", + "packageName": "@openclaw/tencent-provider", + "packageVersion": "2026.5.28", + "manifestPath": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/tencent/openclaw.plugin.json", + "manifestHash": "940cd66f43284b1fffe93db3ee2f943ff669f2a5683f904645dede77850b9f52", + "manifestFile": { + "size": 2605, + "mtimeMs": 1780281047477.0132, + "ctimeMs": 1780281047477.0132 + }, + "source": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/tencent/index.js", + "packageJson": { + "path": "package.json", + "hash": "25a2f5744108ed7ec366b52190a4900df141b10373baf69e7c0c836e1b8cef95", + "fileSignature": { + "size": 327, + "mtimeMs": 1780281047498.9065, + "ctimeMs": 1780281047498.9065 + } + }, + "rootDir": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/tencent", + "origin": "bundled", + "enabled": false, + "enabledByDefault": true, + "startup": { + "sidecar": false, + "memory": false, + "deferConfiguredChannelFullLoadUntilAfterListen": false, + "agentHarnesses": [] + }, + "compat": [] + }, + { + "pluginId": "thread-ownership", + "manifestPath": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/thread-ownership/openclaw.plugin.json", + "manifestHash": "d9b6ba4a091fbd003fe01376b6ebb6c63c0adf67b92e77c814210fea908213f2", + "manifestFile": { + "size": 845, + "mtimeMs": 1780281047477.0132, + "ctimeMs": 1780281047477.0132 + }, + "source": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/thread-ownership/index.js", + "rootDir": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/thread-ownership", + "origin": "bundled", + "enabled": false, + "startup": { + "sidecar": true, + "memory": false, + "deferConfiguredChannelFullLoadUntilAfterListen": false, + "agentHarnesses": [] + }, + "compat": [] + }, + { + "pluginId": "together", + "packageName": "@openclaw/together-provider", + "packageVersion": "2026.5.28", + "manifestPath": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/together/openclaw.plugin.json", + "manifestHash": "a0002519d33bb793d0e2eebef7736a124c55bfa1641b70871c34f9d6ced53625", + "manifestFile": { + "size": 3382, + "mtimeMs": 1780281047477.0132, + "ctimeMs": 1780281047477.0132 + }, + "source": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/together/index.js", + "packageJson": { + "path": "package.json", + "hash": "9baba64146c8a4088a3a6b6c1971cf682eb68fdb4538bbf4b4c7ada6e57c0e94", + "fileSignature": { + "size": 299, + "mtimeMs": 1780281047498.9065, + "ctimeMs": 1780281047498.9065 + } + }, + "rootDir": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/together", + "origin": "bundled", + "enabled": false, + "enabledByDefault": true, + "startup": { + "sidecar": false, + "memory": false, + "deferConfiguredChannelFullLoadUntilAfterListen": false, + "agentHarnesses": [] + }, + "compat": [] + }, + { + "pluginId": "tts-local-cli", + "packageName": "@openclaw/tts-local-cli", + "packageVersion": "2026.5.28", + "manifestPath": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/tts-local-cli/openclaw.plugin.json", + "manifestHash": "3d5e89884b8b1e7a70bf66a931ac9065253f045e80c04121b706ab6cd60c26a7", + "manifestFile": { + "size": 293, + "mtimeMs": 1780281047477.0132, + "ctimeMs": 1780281047477.0132 + }, + "source": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/tts-local-cli/index.js", + "packageJson": { + "path": "package.json", + "hash": "d42a7d77c6f8ec9d8e33aac25eb9d0966d97158205253b5bae201cbb30d90049", + "fileSignature": { + "size": 291, + "mtimeMs": 1780281047498.9065, + "ctimeMs": 1780281047498.9065 + } + }, + "rootDir": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/tts-local-cli", + "origin": "bundled", + "enabled": false, + "enabledByDefault": true, + "startup": { + "sidecar": false, + "memory": false, + "deferConfiguredChannelFullLoadUntilAfterListen": false, + "agentHarnesses": [] + }, + "compat": [] + }, + { + "pluginId": "venice", + "packageName": "@openclaw/venice-provider", + "packageVersion": "2026.5.28", + "manifestPath": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/venice/openclaw.plugin.json", + "manifestHash": "b369bb059c2524406091e782c9bd0b28196726aea96708c5fd6b796f3ca7a84b", + "manifestFile": { + "size": 15091, + "mtimeMs": 1780281047477.0132, + "ctimeMs": 1780281047477.0132 + }, + "source": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/venice/index.js", + "packageJson": { + "path": "package.json", + "hash": "3b6955c828477c61789ac8414cff5d9e691b38167500889d48351355309ca02e", + "fileSignature": { + "size": 295, + "mtimeMs": 1780281047498.9065, + "ctimeMs": 1780281047498.9065 + } + }, + "rootDir": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/venice", + "origin": "bundled", + "enabled": false, + "enabledByDefault": true, + "startup": { + "sidecar": false, + "memory": false, + "deferConfiguredChannelFullLoadUntilAfterListen": false, + "agentHarnesses": [] + }, + "compat": [] + }, + { + "pluginId": "vercel-ai-gateway", + "packageName": "@openclaw/vercel-ai-gateway-provider", + "packageVersion": "2026.5.28", + "manifestPath": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/vercel-ai-gateway/openclaw.plugin.json", + "manifestHash": "2d2f9a5522399f376b4000f6b7bbcaf7907249ed63836395ef5f040693dadc57", + "manifestFile": { + "size": 1498, + "mtimeMs": 1780281047477.0132, + "ctimeMs": 1780281047477.0132 + }, + "source": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/vercel-ai-gateway/index.js", + "packageJson": { + "path": "package.json", + "hash": "9c92ec2826f89e5c473589f7374b49be29f19f12ac81b7a56e3da4eedba03f83", + "fileSignature": { + "size": 317, + "mtimeMs": 1780281047498.9065, + "ctimeMs": 1780281047498.9065 + } + }, + "rootDir": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/vercel-ai-gateway", + "origin": "bundled", + "enabled": false, + "enabledByDefault": true, + "startup": { + "sidecar": false, + "memory": false, + "deferConfiguredChannelFullLoadUntilAfterListen": false, + "agentHarnesses": [] + }, + "compat": [] + }, + { + "pluginId": "vllm", + "packageName": "@openclaw/vllm-provider", + "packageVersion": "2026.5.28", + "manifestPath": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/vllm/openclaw.plugin.json", + "manifestHash": "5d6549e208e9bddc5ab9ffade528b2c08ec9ff7180b507574c30a29ba26f37c0", + "manifestFile": { + "size": 978, + "mtimeMs": 1780281047477.0132, + "ctimeMs": 1780281047477.0132 + }, + "source": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/vllm/index.js", + "packageJson": { + "path": "package.json", + "hash": "67dd9b59ae995883a7b9083a30baf2c66b0983125c7d3dc2a97381e09ac872d0", + "fileSignature": { + "size": 291, + "mtimeMs": 1780281047502.5554, + "ctimeMs": 1780281047502.5554 + } + }, + "rootDir": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/vllm", + "origin": "bundled", + "enabled": false, + "enabledByDefault": true, + "startup": { + "sidecar": false, + "memory": false, + "deferConfiguredChannelFullLoadUntilAfterListen": false, + "agentHarnesses": [] + }, + "compat": [] + }, + { + "pluginId": "volcengine", + "packageName": "@openclaw/volcengine-provider", + "packageVersion": "2026.5.28", + "manifestPath": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/volcengine/openclaw.plugin.json", + "manifestHash": "1a721b9638b350abfc6a1eca0aa4ab3f63cd10128335436bc65b6cf6c28e632b", + "manifestFile": { + "size": 6471, + "mtimeMs": 1780281047477.0132, + "ctimeMs": 1780281047477.0132 + }, + "source": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/volcengine/index.js", + "packageJson": { + "path": "package.json", + "hash": "b50fe80a11d8c6e07afeaf4b051e4a8dc9f0758929e50c0c8ee443f5f3c46c6c", + "fileSignature": { + "size": 303, + "mtimeMs": 1780281047502.5554, + "ctimeMs": 1780281047502.5554 + } + }, + "rootDir": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/volcengine", + "origin": "bundled", + "enabled": false, + "enabledByDefault": true, + "startup": { + "sidecar": false, + "memory": false, + "deferConfiguredChannelFullLoadUntilAfterListen": false, + "agentHarnesses": [] + }, + "compat": [] + }, + { + "pluginId": "voyage", + "packageName": "@openclaw/voyage-provider", + "packageVersion": "2026.5.28", + "manifestPath": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/voyage/openclaw.plugin.json", + "manifestHash": "cb25968651c311fc2493786cb2913f0964370abbb72e2f906068bc9032140fae", + "manifestFile": { + "size": 416, + "mtimeMs": 1780281047477.0132, + "ctimeMs": 1780281047477.0132 + }, + "source": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/voyage/index.js", + "packageJson": { + "path": "package.json", + "hash": "c991ad7485d2bab01814c146257da71cfdfd751c918883a7e1f0b4cf4d75a08a", + "fileSignature": { + "size": 305, + "mtimeMs": 1780281047502.5554, + "ctimeMs": 1780281047502.5554 + } + }, + "rootDir": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/voyage", + "origin": "bundled", + "enabled": false, + "enabledByDefault": true, + "startup": { + "sidecar": false, + "memory": false, + "deferConfiguredChannelFullLoadUntilAfterListen": false, + "agentHarnesses": [] + }, + "compat": [] + }, + { + "pluginId": "vydra", + "packageName": "@openclaw/vydra-provider", + "packageVersion": "2026.5.28", + "manifestPath": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/vydra/openclaw.plugin.json", + "manifestHash": "0afa2e06cb0bddc1b92e22427733f86547161401d96f8b1aea2f52dec444372d", + "manifestFile": { + "size": 1038, + "mtimeMs": 1780281047477.0132, + "ctimeMs": 1780281047477.0132 + }, + "source": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/vydra/index.js", + "packageJson": { + "path": "package.json", + "hash": "321d3dbc30c6ac209a762fe8b5e78749242e84d8a7722a5b453e631645ae6771", + "fileSignature": { + "size": 299, + "mtimeMs": 1780281047502.5554, + "ctimeMs": 1780281047502.5554 + } + }, + "rootDir": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/vydra", + "origin": "bundled", + "enabled": false, + "enabledByDefault": true, + "startup": { + "sidecar": false, + "memory": false, + "deferConfiguredChannelFullLoadUntilAfterListen": false, + "agentHarnesses": [] + }, + "compat": [] + }, + { + "pluginId": "web-readability", + "packageName": "@openclaw/web-readability-plugin", + "packageVersion": "2026.5.28", + "manifestPath": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/web-readability/openclaw.plugin.json", + "manifestHash": "3fb9b2d5c284d27c5bef18b63c99baf5f2bdfd82ac874b342fd387f450b2d7e8", + "manifestFile": { + "size": 415, + "mtimeMs": 1780281047477.0132, + "ctimeMs": 1780281047477.0132 + }, + "source": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/web-readability/index.js", + "packageJson": { + "path": "package.json", + "hash": "903a4c9aa7431c4a95ecb5d2adcbef66963eae414148a4e308463320b8107e80", + "fileSignature": { + "size": 407, + "mtimeMs": 1780281047502.5554, + "ctimeMs": 1780281047502.5554 + } + }, + "rootDir": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/web-readability", + "origin": "bundled", + "enabled": false, + "enabledByDefault": true, + "startup": { + "sidecar": false, + "memory": false, + "deferConfiguredChannelFullLoadUntilAfterListen": false, + "agentHarnesses": [] + }, + "compat": [] + }, + { + "pluginId": "webhooks", + "packageName": "@openclaw/webhooks", + "packageVersion": "2026.5.28", + "manifestPath": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/webhooks/openclaw.plugin.json", + "manifestHash": "7191e52bc4113b1ef24deececc8cb6dbfa598e569c96a296af1f787051d9c63a", + "manifestFile": { + "size": 1865, + "mtimeMs": 1780281047484.311, + "ctimeMs": 1780281047484.311 + }, + "source": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/webhooks/index.js", + "packageJson": { + "path": "package.json", + "hash": "ac8e3a3df99aadaf85484311f3978045c78c3fa89afaa4d35c58c7c9a2424ab9", + "fileSignature": { + "size": 331, + "mtimeMs": 1780281047502.5554, + "ctimeMs": 1780281047502.5554 + } + }, + "rootDir": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/webhooks", + "origin": "bundled", + "enabled": false, + "startup": { + "sidecar": true, + "memory": false, + "deferConfiguredChannelFullLoadUntilAfterListen": false, + "agentHarnesses": [] + }, + "compat": [] + }, + { + "pluginId": "workboard", + "packageName": "@openclaw/workboard", + "packageVersion": "2026.5.28", + "manifestPath": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/workboard/openclaw.plugin.json", + "manifestHash": "25571bc0b81534f997ca20ad5ded63a16af49ef2e6bda7927f5ba6052d6d0edf", + "manifestFile": { + "size": 1023, + "mtimeMs": 1780281047484.311, + "ctimeMs": 1780281047484.311 + }, + "source": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/workboard/index.js", + "packageJson": { + "path": "package.json", + "hash": "34396b4d8e4cf74dbcfe5c3eb19399347acff753f10b0b7d969d71aa7b0d16e1", + "fileSignature": { + "size": 512, + "mtimeMs": 1780281047502.5554, + "ctimeMs": 1780281047502.5554 + } + }, + "rootDir": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/workboard", + "origin": "bundled", + "enabled": false, + "startup": { + "sidecar": true, + "memory": false, + "deferConfiguredChannelFullLoadUntilAfterListen": false, + "agentHarnesses": [] + }, + "compat": [] + }, + { + "pluginId": "xai", + "packageName": "@openclaw/xai-plugin", + "packageVersion": "2026.5.28", + "manifestPath": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/xai/openclaw.plugin.json", + "manifestHash": "c855c33fa74603ffcec9bfa497b76f4636c1e5f824a955a4456d38e9ac70a57e", + "manifestFile": { + "size": 7588, + "mtimeMs": 1780281047484.311, + "ctimeMs": 1780281047484.311 + }, + "source": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/xai/index.js", + "packageJson": { + "path": "package.json", + "hash": "c24838e0626f5b63f89e2b310e45e9287cfa5dcdb4ffd0392e59a9b4978d40a9", + "fileSignature": { + "size": 347, + "mtimeMs": 1780281047502.5554, + "ctimeMs": 1780281047502.5554 + } + }, + "rootDir": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/xai", + "origin": "bundled", + "enabled": false, + "enabledByDefault": true, + "syntheticAuthRefs": [ + "xai" + ], + "startup": { + "sidecar": false, + "memory": false, + "deferConfiguredChannelFullLoadUntilAfterListen": false, + "agentHarnesses": [] + }, + "compat": [] + }, + { + "pluginId": "xiaomi", + "packageName": "@openclaw/xiaomi-provider", + "packageVersion": "2026.5.28", + "manifestPath": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/xiaomi/openclaw.plugin.json", + "manifestHash": "1dd5ae5d1b26cdb968b712fc46a0a6626a6d796504aba8859717e9933ba2a6d4", + "manifestFile": { + "size": 2586, + "mtimeMs": 1780281047484.311, + "ctimeMs": 1780281047484.311 + }, + "source": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/xiaomi/index.js", + "packageJson": { + "path": "package.json", + "hash": "82dc17de330afbc54b6e8ca0adc3cc208456d58ea30353cf46d5b88b08d29eaf", + "fileSignature": { + "size": 295, + "mtimeMs": 1780281047502.5554, + "ctimeMs": 1780281047502.5554 + } + }, + "rootDir": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/xiaomi", + "origin": "bundled", + "enabled": false, + "enabledByDefault": true, + "startup": { + "sidecar": false, + "memory": false, + "deferConfiguredChannelFullLoadUntilAfterListen": false, + "agentHarnesses": [] + }, + "compat": [] + }, + { + "pluginId": "zai", + "packageName": "@openclaw/zai-provider", + "packageVersion": "2026.5.28", + "manifestPath": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/zai/openclaw.plugin.json", + "manifestHash": "9067a2b934f4a139f8fb2c785699863f094d9f147c6ce98ba8b7eba5bfd08178", + "manifestFile": { + "size": 9020, + "mtimeMs": 1780281047484.311, + "ctimeMs": 1780281047484.311 + }, + "source": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/zai/index.js", + "packageJson": { + "path": "package.json", + "hash": "ead7dd2ca43331189e01dc6033e60913fcf7bfa79bd8ba6f2d18a8bf498525f9", + "fileSignature": { + "size": 290, + "mtimeMs": 1780281047502.5554, + "ctimeMs": 1780281047502.5554 + } + }, + "rootDir": "/home/yangxuan/.nvm/versions/node/v25.2.0/lib/node_modules/openclaw/dist/extensions/zai", + "origin": "bundled", + "enabled": false, + "enabledByDefault": true, + "startup": { + "sidecar": false, + "memory": false, + "deferConfiguredChannelFullLoadUntilAfterListen": false, + "agentHarnesses": [] + }, + "compat": [] + }, + { + "pluginId": "dingtalk-connector", + "packageName": "@dingtalk-real-ai/dingtalk-connector", + "packageVersion": "0.8.23", + "installRecordHash": "0cb896db1d44fc8fab3bb79ea0484a8f1203956173c533c7c69c31d40a9ac1dc", + "packageInstall": { + "defaultChoice": "npm", + "npm": { + "spec": "@dingtalk-real-ai/dingtalk-connector", + "packageName": "@dingtalk-real-ai/dingtalk-connector", + "selectorKind": "none", + "exactVersion": false, + "pinState": "floating-without-integrity" + }, + "local": { + "path": "extensions/dingtalk" + }, + "warnings": [ + "npm-spec-floating", + "npm-spec-missing-integrity" + ] + }, + "packageChannel": { + "id": "dingtalk-connector", + "label": "DingTalk", + "selectionLabel": "DingTalk (钉钉)", + "docsPath": "/channels/dingtalk-connector", + "docsLabel": "dingtalk-connector", + "blurb": "钉钉企业内部机器人,使用 Stream 模式,无需公网 IP,支持 AI Card 流式响应。", + "aliases": [ + "dd", + "ding" + ], + "order": 35, + "quickstartAllowFrom": true + }, + "manifestPath": "/home/yangxuan/.openclaw/npm/projects/dingtalk-real-ai-dingtalk-connector-aa54111b45/node_modules/@dingtalk-real-ai/dingtalk-connector/openclaw.plugin.json", + "manifestHash": "aed1fe5156c09040edc6c58d196ebd3ec833c2ee237b8c50a3face9921c11694", + "manifestFile": { + "size": 15146, + "mtimeMs": 1780281131297.834, + "ctimeMs": 1780281131297.834 + }, + "source": "/home/yangxuan/.openclaw/npm/projects/dingtalk-real-ai-dingtalk-connector-aa54111b45/node_modules/@dingtalk-real-ai/dingtalk-connector/dist/index.mjs", + "packageJson": { + "path": "package.json", + "hash": "21de60f019f4412db4e9334df4c61336fc8424a8ad8a6d4363940c0056eb7e38", + "fileSignature": { + "size": 4408, + "mtimeMs": 1780281131341.6206, + "ctimeMs": 1780281131341.6206 + } + }, + "rootDir": "/home/yangxuan/.openclaw/npm/projects/dingtalk-real-ai-dingtalk-connector-aa54111b45/node_modules/@dingtalk-real-ai/dingtalk-connector", + "origin": "global", + "enabled": true, + "startup": { + "sidecar": false, + "memory": false, + "deferConfiguredChannelFullLoadUntilAfterListen": false, + "agentHarnesses": [] + }, + "compat": [] + }, + { + "pluginId": "openclaw-weixin", + "packageName": "@tencent-weixin/openclaw-weixin", + "packageVersion": "2.4.3", + "installRecordHash": "19b2b095e8551532a9f45fd28f93e9a691b55a51b013c50884c57bd32edd531d", + "packageInstall": { + "defaultChoice": "npm", + "npm": { + "spec": "@tencent-weixin/openclaw-weixin", + "packageName": "@tencent-weixin/openclaw-weixin", + "selectorKind": "none", + "exactVersion": false, + "pinState": "floating-without-integrity" + }, + "warnings": [ + "npm-spec-floating", + "npm-spec-missing-integrity" + ] + }, + "packageChannel": { + "id": "openclaw-weixin", + "label": "openclaw-weixin", + "selectionLabel": "openclaw-weixin", + "docsPath": "/channels/openclaw-weixin", + "docsLabel": "openclaw-weixin", + "blurb": "Weixin channel", + "order": 75 + }, + "manifestPath": "/home/yangxuan/.openclaw/npm/node_modules/@tencent-weixin/openclaw-weixin/openclaw.plugin.json", + "manifestHash": "7b4b9f21af8972468af852a068184e4314b6aa29c4f189290f69d7cc628d236d", + "manifestFile": { + "size": 433, + "mtimeMs": 1778636697504.1729, + "ctimeMs": 1778636697504.1729 + }, + "source": "/home/yangxuan/.openclaw/npm/node_modules/@tencent-weixin/openclaw-weixin/dist/index.js", + "packageJson": { + "path": "package.json", + "hash": "7cbc8b8c6aff6de947724067c1c3bf993663c99a86f2ce89f2cc7075872e93b4", + "fileSignature": { + "size": 1480, + "mtimeMs": 1778636697504.1729, + "ctimeMs": 1778636697504.1729 + } + }, + "rootDir": "/home/yangxuan/.openclaw/npm/node_modules/@tencent-weixin/openclaw-weixin", + "origin": "global", + "enabled": true, + "startup": { + "sidecar": false, + "memory": false, + "deferConfiguredChannelFullLoadUntilAfterListen": false, + "agentHarnesses": [] + }, + "compat": [] + } + ], + "diagnostics": [] +} diff --git a/rss-reader.py b/rss-reader.py new file mode 100644 index 0000000..836b488 --- /dev/null +++ b/rss-reader.py @@ -0,0 +1,60 @@ +#!/usr/bin/env python3 +""" +Simple RSS Reader +""" +import rssparser +import feedparser +import json +import sys +from datetime import datetime + +def read_feed(url): + """Read RSS feed and return parsed items""" + try: + feed = feedparser.parse(url) + return { + 'title': feed.get('title', 'Unknown'), + 'link': feed.get('link', ''), + 'description': feed.get('description', ''), + 'language': feed.get('language', ''), + 'items': [ + { + 'title': item.get('title', 'No title'), + 'link': item.get('link', ''), + 'description': item.get('description', ''), + 'pubDate': item.get('pubDate', ''), + 'author': item.get('author', '') + } + for item in feed.get('items', [])[:10] # Get first 10 items + ] + } + except Exception as e: + return {'error': str(e)} + +if __name__ == '__main__': + if len(sys.argv) < 2: + print("Usage: python3 rss-reader.py ") + sys.exit(1) + + url = sys.argv[1] + print(f"Fetching RSS feed: {url}\n") + + data = read_feed(url) + + if 'error' in data: + print(f"Error: {data['error']}") + else: + print(f"Title: {data['title']}") + print(f"Language: {data['language']}") + print(f"Last updated: {data.get('description', 'N/A')[:100]}...\n") + print(f"{'='*60}") + print(f"Articles ({len(data['items'])} items)\n") + print(f"{'='*60}\n") + + for i, item in enumerate(data['items'], 1): + print(f"{i}. {item['title']}") + print(f" Link: {item['link']}") + print(f" Published: {item['pubDate']}") + if item['author']: + print(f" Author: {item['author']}") + print() \ No newline at end of file diff --git a/rss-sources.xml b/rss-sources.xml new file mode 100644 index 0000000..79c04c3 --- /dev/null +++ b/rss-sources.xml @@ -0,0 +1,17 @@ + + + + + Wed, 18 Mar 2026 04:40:32 +0300 + <![CDATA[Gulf Times - Region News]]> + + https://www.gulf-times.com/theme_gulftimes/images/logo.png + https://www.gulf-times.com/ + <![CDATA[Gulf Times]]> + + + + https://www.gulf-times.com/ + 60 + + \ No newline at end of file diff --git a/skill-workshop/proposals.json b/skill-workshop/proposals.json new file mode 100644 index 0000000..5e589a2 --- /dev/null +++ b/skill-workshop/proposals.json @@ -0,0 +1 @@ +{"schema":"openclaw.skill-workshop.proposals-manifest.v1","updatedAt":"2026-07-01T23:52:24.428Z","proposals":[{"id":"jellyfin-nfo-builder-20260701-6434352e0d","kind":"create","status":"pending","title":"Create jellyfin-nfo-builder","description":"为剧集整理统一文件名、生成缺失的 Jellyfin .nfo 剧集元数据","skillName":"jellyfin-nfo-builder","skillKey":"jellyfin-nfo-builder","createdAt":"2026-07-01T23:52:24.406Z","updatedAt":"2026-07-01T23:52:24.406Z","scanState":"clean"},{"id":"weekly-report-g5-20260626-7595273f1d","kind":"create","status":"applied","title":"Create weekly-report-g5","description":"维云智造G5周报生成:整理每日工作→多段邮件(纯文本+HTML含签名图)→存入钉邮草稿箱","skillName":"weekly-report-g5","skillKey":"weekly-report-g5","createdAt":"2026-06-26T00:46:22.478Z","updatedAt":"2026-06-26T00:46:35.812Z","scanState":"clean"},{"id":"calibre-cleaner-20260624-0fc374efd7","kind":"update","status":"pending","title":"Update calibre-cleaner","description":"清洗 Calibre 书库:修复损坏书名/提取作者/检测编码损坏、小文件的批量删除","skillName":"calibre-cleaner","skillKey":"calibre-cleaner","createdAt":"2026-06-24T03:23:27.062Z","updatedAt":"2026-06-24T03:23:27.062Z","scanState":"clean"},{"id":"calibre-cleaner-20260624-cdbeb219a3","kind":"update","status":"applied","title":"Update calibre-cleaner","description":"清洗 Calibre 书库:修复损坏书名/提取作者/检测编码损坏、小文件的批量删除","skillName":"calibre-cleaner","skillKey":"calibre-cleaner","createdAt":"2026-06-24T03:03:28.166Z","updatedAt":"2026-06-24T03:03:30.915Z","scanState":"clean"},{"id":"calibre-cleaner-20260624-a441798af9","kind":"create","status":"applied","title":"Create calibre-cleaner","description":"清洗 Calibre 书库:修复损坏书名/提取作者/检测编码损坏、小文件的批量删除","skillName":"calibre-cleaner","skillKey":"calibre-cleaner","createdAt":"2026-06-24T02:29:02.278Z","updatedAt":"2026-06-24T02:29:27.227Z","scanState":"clean"},{"id":"calibre-title-cleaner-20260624-3760b64e8b","kind":"create","status":"applied","title":"Create calibre-title-cleaner","description":"清洗 Calibre 书库中损坏的 txt 文档书名(HTML标签/长文本/乱码/路径超限修复)","skillName":"calibre-title-cleaner","skillKey":"calibre-title-cleaner","createdAt":"2026-06-24T01:10:56.296Z","updatedAt":"2026-06-24T01:13:39.670Z","scanState":"clean"},{"id":"dianping-review-20260611-d402abec10","kind":"create","status":"pending","title":"Create dianping-review","description":"通过大众点评搜索查询餐厅、老店、美食推荐和评论","skillName":"dianping-review","skillKey":"dianping-review","createdAt":"2026-06-11T23:50:15.731Z","updatedAt":"2026-06-11T23:50:15.731Z","scanState":"clean"}]} diff --git a/skill-workshop/proposals/calibre-cleaner-20260624-0fc374efd7/PROPOSAL.md b/skill-workshop/proposals/calibre-cleaner-20260624-0fc374efd7/PROPOSAL.md new file mode 100644 index 0000000..1038cf8 --- /dev/null +++ b/skill-workshop/proposals/calibre-cleaner-20260624-0fc374efd7/PROPOSAL.md @@ -0,0 +1,451 @@ +--- +name: "calibre-cleaner" +description: "清洗 Calibre 书库:修复损坏书名/提取作者/检测编码损坏、小文件的批量删除" +status: proposal +version: "v1" +date: "2026-06-24T03:23:27.062Z" +--- + +# Calibre 书库清洗 Skill + +## 概述 + +Calibre 书库整理三件套: + +1. **书名清洗** —— 修复从 txt 导入产生的 HTML 标签/长文本/乱码书名,截取前 20 个中文字符,移除网站链接 +2. **作者提取** —— 从书名或原始文件名 `data.name` 中自动提取作者名(匹配 `作者:xxx`、`-xxx`、`BY xxx` 等格式) +3. **脏数据清理** —— 检测并删除内容损坏的 txt(中文 < 10%)、小于 10KB 的垃圾文件、Python 列表格式垃圾标题 + +## 前置条件 + +- 书库路径:`/home/yangxuan/calibre/books` +- 元数据文件:`/home/yangxuan/calibre/books/metadata.db` +- 运行前须停止其他 Calibre 进程(桌面版、Docker Calibre-Web) +- 运行前 **必须备份** `metadata.db` + +--- + +## 一、书名清洗 & 作者提取 + +### `shorten(s, max_bytes=120)` + +将字符串截断到指定字节数,避免因 UTF-8 中文字符跨字节而损坏。 + +```python +def shorten(s, max_bytes=120): + encoded = s.encode('utf-8') + if len(encoded) <= max_bytes: + return s + try: + return encoded[:max_bytes].decode('utf-8') + except: + return encoded[:max_bytes-3].decode('utf-8', errors='ignore') +``` + +### `clean_title(title)` + +```python +def clean_title(title): + t = title + # 移除 HTML 标签 + t = re.sub(r'<[^>]+>', '', t) + # 替换 _BR_ / _BR 标记 + t = re.sub(r'_BR_', ' ', t, flags=re.IGNORECASE) + t = re.sub(r'_BR(?![a-zA-Z])', ' ', t) + # 移除 _fontxxx_ / _imgxxx_ 标记 + t = re.sub(r'_font[^_]*_', '', t) + t = re.sub(r'_img[^_]*_', '', t) + # 移除网站链接 + t = re.sub(r'[\((]www\.[^))]+[\))]', '', t) + t = re.sub(r'^[a-zA-Z0-9.-]+\.com@', '', t) + t = re.sub(r'[-–—][a-zA-Z0-9.-]+\.com$', '', t) + t = re.sub(r'【[^】]*?(?:下载|网站|书城|声明|提供)[^】]*】', '', t) + t = re.sub(r'[::].*?(?:本文由|本电子书).*$', '', t) + t = re.sub(r'[//]\s*www\.[^\s]+.*$', '', t) + t = re.sub(r'[,,。]?https?://[^\s\))\]]+', '', t) + # 移除声明文字当书名 + t = re.sub(r'^内容简介[】】]?', '', t) + # 移除作者/翻译标记(批量清洗时用) + t = re.sub(r'[ \s]*?(?:作者|翻译|原?作者)[::].*$', '', t, flags=re.DOTALL) + # 移除 Unknown/未知 尾巴 + t = re.sub(r'\s*-\s*(Unknown|未知)\s*$', '', t) + # 合并多余空格 + t = re.sub(r'\s+', ' ', t).strip() + # 截取前 20 个中文字符(保留非中文直到第 20 个中文出现) + chinese_count = 0 + pos = 0 + for i, c in enumerate(t): + if '\u4e00' <= c <= '\u9fff': + chinese_count += 1 + if chinese_count == 20: + pos = i + 1 + break + if chinese_count > 20: + t = t[:pos] + # 超长截短 + if len(t) > 100: + m = re.search(r'[\u4e00-\u9fff]{2,}', t) + if m: + t = t[m.start():] + t = t[:60].rstrip(',。;:、!?…\ufffd\'"').rstrip('.,;:!?\'').strip() + # 移除控制字符 + t = re.sub(r'[\x00-\x08\x0b\x0c\x0e-\x1f]', '', t) + return shorten(t, 100).strip() or 'Unknown' +``` + +### 作者提取规则(从文件中同时匹配 title 和 data.name) + +优先从 `data.name`(原始文件名)提取,更准确: + +```python +EXCLUDE_AUTHORS = {'正文', '内容简介', ''} + +def extract_author_from_name(file_name): + """从 data.name(原始文件名)提取作者""" + name = file_name + # 去掉尾巴 + name = re.sub(r'\s*-\s*(Unknown|未知)\s*$', '', name) + # 匹配作者:xxx + m = re.search(r'作者[::]\s*([^\s_)\)《\[【\]】\-,]+)', name) + if m: + candidate = m.group(1).strip() + if candidate not in EXCLUDE_AUTHORS and len(candidate) < 30: + return candidate + # 匹配翻译:xxx + m = re.search(r'翻译[::]\s*([^\s_)\)《\[【\]】\-,]+)', name) + if m: + candidate = m.group(1).strip() + if len(candidate) < 20: + return candidate + # 匹配原作者:xxx + m = re.search(r'原?作者[::]\s*([^\s_)\)《\[【\]】\-,]+)', name) + if m: + candidate = m.group(1).strip() + if len(candidate) < 30: + return candidate + return None + +def extract_author_from_title(title): + """从 title 提取作者(降级方案,仅在 data.name 无用时)""" + m = re.search(r'作者[::]\s*([^\s,,、\))《\[]+)', title) + if m: + name = m.group(1).strip() + if name not in EXCLUDE_AUTHORS and not re.match(r'^第\d+[章节]', name): + return name + m = re.search(r'翻译[::]\s*([^\s,,、\))《\[]+)', title) + if m: + return m.group(1).strip() + m = re.search(r'\b[Bb][Yy]\s+([^\s,,、\))《\[]+)', title) + if m: + name = m.group(1).strip() + if name not in EXCLUDE_AUTHORS: + return name + m = re.search(r'-([^-()【】\[\]{}《》\s]{2,30})$', title) + if m: + name = m.group(1).strip() + if name not in EXCLUDE_AUTHORS and not re.match(r'^\d+', name): + return name + m = re.search(r'&([^&()【】\[\]\s]{2,30})$', title) + if m: + name = m.group(1).strip() + if name not in EXCLUDE_AUTHORS: + return name + return None +``` + +### 坏书检测条件 + +```python +is_bad = ( + len(title) > 100 or + ' 150 +) +``` + +--- + +## 二、脏数据清理 + +### 2.1 检测条件 + +扫描书库中所有 TXT 文件,读取前 20KB 检测中文比例: + +- **内容损坏/二进制垃圾**:中文比例 < 10%(标记为待删除) +- **小文件垃圾**:`uncompressed_size < 10240`(10KB 以下) +- **垃圾格式标题**:Python 列表格式(含 `'xxx', 'R-18'` 单引号列表)、转义字符(`\n`、`\u3000`、`id=`)、HTML 实体(`raquo;`、`laquo;`) + +```python +def is_garbage_format_title(title): + """检测标题是否为垃圾格式""" + import re + if re.search(r"'.*',\s*'R-18'", title): + return True + if re.search(r'[\\]u[0-9a-fA-F]{4}', title): + return True + if re.search(r'id=|pid=', title): + return True + if 'raquo;' in title or 'laquo;' in title: + return True + if '【内容简介】' in title or '内容简介】' in title: + return True + return False + +def is_dirty_content(full_path): + """检测文件内容是否为垃圾""" + if not os.path.exists(full_path): + return True # 文件丢失也算脏 + with open(full_path, 'rb') as f: + raw = f.read(20480) + text = raw.decode('utf-8', errors='replace') + chinese = sum(1 for c in text if '\u4e00' <= c <= '\u9fff') + ratio = chinese / len(text) if len(text) > 0 else 0 + return ratio < 0.10 +``` + +### 2.2 批量删除(通过 SQLite 直写) + +停掉 calibre 进程后,通过 SQLite 删除记录并清理文件系统: + +```sql +DELETE FROM data WHERE book = ? +DELETE FROM books_authors_link WHERE book = ? +DELETE FROM books_languages_link WHERE book = ? +DELETE FROM books_publishers_link WHERE book = ? +DELETE FROM books_series_link WHERE book = ? +DELETE FROM books_tags_link WHERE book = ? +DELETE FROM comments WHERE book = ? +DELETE FROM identifiers WHERE book = ? +DELETE FROM books WHERE id = ? +``` + +同时删除对应目录:`shutil.rmtree(os.path.join('/home/yangxuan/calibre/books', bpath))` + +### 2.3 完整删除脚本 + +```python +import sqlite3, os, shutil + +db_path = '/home/yangxuan/calibre/books/metadata.db' +conn = sqlite3.connect(db_path) +c = conn.cursor() + +c.execute(''' + SELECT b.id, b.title, b.path, d.name, d.uncompressed_size + FROM books b + JOIN data d ON d.book = b.id + WHERE d.format = 'TXT' +''') +rows = c.fetchall() + +to_delete = [] + +for bid, title, bpath, fname, size in rows: + full_path = os.path.join('/home/yangxuan/calibre/books', bpath, fname + '.txt') + + # 条件0:垃圾格式标题(Python列表、转义字符等) + if is_garbage_format_title(title): + to_delete.append((bid, bpath)) + continue + + # 条件1:小文件垃圾 + if size < 10240: + to_delete.append((bid, bpath)) + continue + + if not os.path.exists(full_path): + continue + + # 条件2:内容损坏(中文 < 10%) + if is_dirty_content(full_path): + to_delete.append((bid, bpath)) + +print(f"待删除: {len(to_delete)}", flush=True) +for bid, bpath in to_delete: + for table in ['data', 'books_authors_link', 'books_languages_link', + 'books_publishers_link', 'books_series_link', 'books_tags_link', + 'comments', 'identifiers']: + c.execute(f'DELETE FROM {table} WHERE book=?', (bid,)) + c.execute('DELETE FROM books WHERE id=?', (bid,)) + full_dir = os.path.join('/home/yangxuan/calibre/books', bpath) + if os.path.exists(full_dir): + shutil.rmtree(full_dir) + +conn.commit() +conn.close() +print(f"完成,删除: {len(to_delete)}", flush=True) +``` + +--- + +## 三、书名批量清洗(作者标记去除 + 前 20 中文截取) + +对于书名中含 `作者:xxx`、`翻译:xxx` 标记但作者字段已有值的书,使用此脚本批量清洗: + +```python +import sqlite3, re + +db_path = '/home/yangxuan/calibre/books/metadata.db' +conn = sqlite3.connect(db_path) +c = conn.cursor() + +c.execute(''' + SELECT b.id, b.title, a.name as author_name, d.name as file_name + FROM books b + JOIN data d ON d.book = b.id AND d.format = 'TXT' + JOIN books_authors_link l ON b.id = l.book + JOIN authors a ON l.author = a.id + WHERE (b.title LIKE '%作者:%' OR b.title LIKE '%作者:%' OR b.title LIKE '%翻译:%' OR b.title LIKE '%翻译:%') + AND a.name NOT IN ('未知', 'Unknown') + ORDER BY b.id +''') +rows = c.fetchall() + +for bid, title, author_name, file_name in rows: + # 1. 从 data.name 提取作者并更新 author 字段(如不同) + name_clean = re.sub(r'\s*-\s*(Unknown|未知)\s*$', '', file_name) + m = re.search(r'[ \s]*?(?:作者|翻译|原?作者)[::]\s*([^\s_)\)《\[【\]】\-,]+)', name_clean) + if m: + extracted = m.group(1).strip() + if extracted and extracted != author_name and len(extracted) < 30: + cur = conn.cursor() + cur.execute("SELECT id FROM authors WHERE name=?", (extracted,)) + ar = cur.fetchone() + if ar: + aid = ar[0] + else: + cur.execute("INSERT INTO authors (name, sort) VALUES (?, ?)", (extracted, extracted.replace(',', '').strip())) + aid = cur.lastrowid + cur.execute("UPDATE books_authors_link SET author=? WHERE book=?", (aid, bid)) + cur.close() + + # 2. 裁剪书名:去标记 + 前 20 中文 + clean_title = re.sub(r'[ \s]*?(?:作者|翻译|原?作者)[::].*$', '', file_name, flags=re.DOTALL) + clean_title = re.sub(r'\s*-\s*(Unknown|未知)\s*$', '', clean_title).strip() + + if clean_title: + count = 0 + pos = 0 + for i, ch in enumerate(clean_title): + if '\u4e00' <= ch <= '\u9fff': + count += 1 + if count == 20: + pos = i + 1 + break + if count > 20: + clean_title = clean_title[:pos] + + if clean_title != title: + c.execute("UPDATE books SET title=? WHERE id=?", (clean_title, bid)) + +conn.commit() +conn.close() +``` + +--- + +## 四、常用查询 + +### 4.1 查看 XX 作者的书 + +```bash +sqlite3 /home/yangxuan/calibre/books/metadata.db " +SELECT b.id, b.title +FROM books b JOIN books_authors_link l ON b.id = l.book +JOIN authors a ON l.author = a.id +WHERE a.name = 'Unknown' +LIMIT 20; +" +``` + +### 4.2 统计作者分布 + +```bash +sqlite3 /home/yangxuan/calibre/books/metadata.db " +SELECT a.name, COUNT(*) as cnt +FROM books b JOIN books_authors_link l ON b.id = l.book +JOIN authors a ON l.author = a.id +GROUP BY a.name ORDER BY cnt DESC LIMIT 20; +" +``` + +### 4.3 书名异常检测 + +```bash +sqlite3 /home/yangxuan/calibre/books/metadata.db " +SELECT id, title FROM books WHERE + title LIKE '%作者%' OR title LIKE '%翻译%' OR + title LIKE '%.com%' OR title LIKE '%http%' OR + title LIKE '%内容简介%' OR + LENGTH(title) > 80; +" +``` + +### 4.4 书库统计 + +```bash +python3 -c " +import sqlite3 +conn = sqlite3.connect('/home/yangxuan/calibre/books/metadata.db') +c = conn.cursor() +c.execute('SELECT COUNT(*) FROM books') +print(f'总书籍: {c.fetchone()[0]}') +c.execute('SELECT COUNT(*) FROM data WHERE format=\"TXT\"') +print(f'TXT 文件: {c.fetchone()[0]}') +conn.close() +" +``` + +--- + +## 五、操作流程(推荐顺序) + +```bash +cd /home/yangxuan/calibre + +# 1. 停服务 + 备份 +docker compose down +cp books/metadata.db books/metadata.db.backup.$(date +%Y%m%d) +killall calibre 2>/dev/null + +# 2. 脏数据清理(内容损坏 + 小文件 + 垃圾格式标题) +python3 /path/to/clean_dirty_data.py + +# 3. 书名清洗 & 作者提取(含 data.name 级别提取) +calibre-debug /path/to/fix_titles.py + +# 4. 检查是否有遗漏的异常书籍 +sqlite3 books/metadata.db \"SELECT id, title FROM books WHERE title LIKE '%作者%' OR title LIKE '%翻译%' OR title LIKE '%.com%';\" | head -10 + +# 5. 重启 +docker compose up -d +``` + +--- + +## 六、已知问题 + +### `set_metadata` 报 `Errno 36 文件名过长` + +当 `author_sort` 字段超 80 字节时,Calibre 路径会触及 ext4 255 字节限制。先清理极长作者名: + +```bash +sqlite3 /home/yangxuan/calibre/books/metadata.db " +UPDATE authors SET name='Unknown' WHERE LENGTH(name) > 30; +" +``` + +### WSL `/mnt/f` 删除 NTFS 文件权限不够 + +WSL 的 drvfs 默认不带 metadata 选项,`sudo rm`、`os.remove`、`cmd.exe /c del` 均无法删除 NTFS 文件。不要在 WSL 下尝试跨分区删除操作,直接让 Windows 侧(文件资源管理器/PowerShell)操作。 + +### 书名长度截取规则 + +`title` 字段清洗后最多保留 20 个中文字符。计数规则:只计 Unicode 范围的 `\u4e00-\u9fff` 中文字符,保留第 20 个中文之前的所有字符(含非中文)。如书名不足 20 个中文则全保留。 + +### `title` vs `data.name` 区别 + +- `books.title`:Calibre 界面显示的书名(清洗后的) +- `data.name`:导入时的原始文件名(不含 `.txt`) +- 作者提取优先使用 `data.name`,其文件名保留原始信息、更可靠 \ No newline at end of file diff --git a/skill-workshop/proposals/calibre-cleaner-20260624-0fc374efd7/proposal.json b/skill-workshop/proposals/calibre-cleaner-20260624-0fc374efd7/proposal.json new file mode 100644 index 0000000..70f5427 --- /dev/null +++ b/skill-workshop/proposals/calibre-cleaner-20260624-0fc374efd7/proposal.json @@ -0,0 +1 @@ +{"schema":"openclaw.skill-workshop.proposal.v1","id":"calibre-cleaner-20260624-0fc374efd7","kind":"update","status":"pending","title":"Update calibre-cleaner","description":"清洗 Calibre 书库:修复损坏书名/提取作者/检测编码损坏、小文件的批量删除","createdAt":"2026-06-24T03:23:27.062Z","updatedAt":"2026-06-24T03:23:27.062Z","createdBy":"skill-workshop","origin":{"agentId":"storage","sessionKey":"agent:storage:main","runId":"62debb6e-62f3-41ff-ab3a-0d2fdc63ff4d","messageId":"62debb6e-62f3-41ff-ab3a-0d2fdc63ff4d"},"proposedVersion":"v1","draftFile":"PROPOSAL.md","draftHash":"9f8e90cfa549288742db7af62bc54db12a9650208104a2efcba6c7a4fb2b4a49","target":{"skillName":"calibre-cleaner","skillKey":"calibre-cleaner","skillDir":"/home/yangxuan/.openclaw/workspace/storage/skills/calibre-cleaner","skillFile":"/home/yangxuan/.openclaw/workspace/storage/skills/calibre-cleaner/SKILL.md","source":"openclaw-workspace","currentContentHash":"929fdbb7a4de265565ca75bdf3692d33623a634f4991c21a51e5f829b0e9b2c0"},"scan":{"state":"clean","scannedAt":"2026-06-24T03:23:27.063Z","critical":0,"warn":0,"info":0,"findings":[]}} diff --git a/skill-workshop/proposals/calibre-cleaner-20260624-a441798af9/PROPOSAL.md b/skill-workshop/proposals/calibre-cleaner-20260624-a441798af9/PROPOSAL.md new file mode 100644 index 0000000..943af8f --- /dev/null +++ b/skill-workshop/proposals/calibre-cleaner-20260624-a441798af9/PROPOSAL.md @@ -0,0 +1,222 @@ +--- +name: "calibre-cleaner" +description: "清洗 Calibre 书库:修复损坏书名/提取作者/检测编码损坏、小文件的批量删除" +status: proposal +version: "v1" +date: "2026-06-24T02:29:02.278Z" +--- + +# Calibre 书库清洗 Skill + +## 概述 + +Calibre 书库整理三件套: + +1. **书名清洗** —— 修复从 txt 导入产生的 HTML 标签/长文本/乱码书名 +2. **作者提取** —— 从书名中自动提取作者名(匹配 `作者:xxx`、`-xxx`、`BY xxx` 等格式) +3. **脏数据清理** —— 检测并删除编码损坏的 txt、小于 10KB 的垃圾文件 + +## 前置条件 + +- 书库路径:`/home/yangxuan/calibre/books` +- 元数据文件:`/home/yangxuan/calibre/books/metadata.db` +- 运行前须停止其他 Calibre 进程(桌面版、Docker Calibre-Web) +- 运行前 **必须备份** `metadata.db` + +--- + +## 一、书名清洗 & 作者提取 + +(详见 skill 原内容,此处保留完整清洗逻辑) + +--- + +## 二、脏数据清理 + +### 2.1 检测编码损坏的 TXT + +检测条件:中文比例 < 10% 且含有乱码字符(`Ŀ¼ĴƿȿɿʼÈÌÒÙ(` 等 UTF-8 编码错误字) + +```python +import sqlite3, os + +bad_char_set = set('Ŀ¼ĴƿȿɿʼÈÌÒÙ(') +bad_ids = [] + +for bid, title, bpath, fname in rows: + full_path = os.path.join('/home/yangxuan/calibre/books', bpath, fname + '.txt') + if not os.path.exists(full_path): + continue + with open(full_path, 'rb') as f: + raw = f.read(20480) + text = raw.decode('utf-8', errors='replace') + chinese = sum(1 for c in text if '\u4e00' <= c <= '\u9fff') + total = len(text) + ratio = chinese / total if total > 0 else 0 + has_bad = any(c in bad_char_set for c in text) + if ratio < 0.10 and has_bad: + bad_ids.append(bid) +``` + +### 2.2 检测小文件 + +```python +c.execute(''' + SELECT b.id, b.path FROM books b + JOIN data d ON d.book = b.id + WHERE d.format = 'TXT' AND d.uncompressed_size < 10240 +''') +``` + +### 2.3 批量删除(通过 SQLite 直写) + +停掉 calibre 进程后,通过 SQLite 删除记录并清理文件系统: + +```sql +DELETE FROM data WHERE book = ? +DELETE FROM books_authors_link WHERE book = ? +DELETE FROM books_languages_link WHERE book = ? +DELETE FROM books_publishers_link WHERE book = ? +DELETE FROM books_series_link WHERE book = ? +DELETE FROM books_tags_link WHERE book = ? +DELETE FROM comments WHERE book = ? +DELETE FROM identifiers WHERE book = ? +DELETE FROM books WHERE id = ? +``` + +同时删除对应目录:`shutil.rmtree(os.path.join('/home/yangxuan/calibre/books', bpath))` + +### 2.4 完整删除脚本 + +```python +import sqlite3, os, shutil + +db_path = '/home/yangxuan/calibre/books/metadata.db' +conn = sqlite3.connect(db_path) +c = conn.cursor() + +c.execute(''' + SELECT b.id, b.title, b.path, d.name, d.uncompressed_size + FROM books b + JOIN data d ON d.book = b.id + WHERE d.format = 'TXT' +''') +rows = c.fetchall() + +bad_char_set = set('Ŀ¼ĴƿȿɿʼÈÌÒÙ(') +to_delete = [] + +for bid, title, bpath, fname, size in rows: + full_path = os.path.join('/home/yangxuan/calibre/books', bpath, fname + '.txt') + if not os.path.exists(full_path): + continue + with open(full_path, 'rb') as f: + raw = f.read(20480) + text = raw.decode('utf-8', errors='replace') + chinese = sum(1 for c in text if '\u4e00' <= c <= '\u9fff') + ratio = chinese / len(text) if len(text) > 0 else 0 + has_bad = any(c in bad_char_set for c in text) + if (ratio < 0.10 and has_bad) or size < 10240: + to_delete.append((bid, bpath)) + +print(f"待删除: {len(to_delete)}") +for bid, bpath in to_delete: + c.execute('DELETE FROM data WHERE book=?', (bid,)) + c.execute('DELETE FROM books_authors_link WHERE book=?', (bid,)) + c.execute('DELETE FROM books_languages_link WHERE book=?', (bid,)) + c.execute('DELETE FROM books_publishers_link WHERE book=?', (bid,)) + c.execute('DELETE FROM books_series_link WHERE book=?', (bid,)) + c.execute('DELETE FROM books_tags_link WHERE book=?', (bid,)) + c.execute('DELETE FROM comments WHERE book=?', (bid,)) + c.execute('DELETE FROM identifiers WHERE book=?', (bid,)) + c.execute('DELETE FROM books WHERE id=?', (bid,)) + full_dir = os.path.join('/home/yangxuan/calibre/books', bpath) + if os.path.exists(full_dir): + shutil.rmtree(full_dir) + +conn.commit() +conn.close() +print(f"完成,删除: {len(to_delete)}") +``` + +--- + +## 三、常用操作 + +### 3.1 查看 XX 作者的书 + +```bash +sqlite3 /home/yangxuan/calibre/books/metadata.db " +SELECT b.id, b.title +FROM books b JOIN books_authors_link l ON b.id = l.book +JOIN authors a ON l.author = a.id +WHERE a.name = 'Unknown' +LIMIT 20; +" +``` + +### 3.2 统计作者分布 + +```bash +sqlite3 /home/yangxuan/calibre/books/metadata.db " +SELECT a.name, COUNT(*) as cnt +FROM books b JOIN books_authors_link l ON b.id = l.book +JOIN authors a ON l.author = a.id +GROUP BY a.name ORDER BY cnt DESC LIMIT 20; +" +``` + +### 3.3 书库统计 + +```bash +python3 -c " +import sqlite3 +conn = sqlite3.connect('/home/yangxuan/calibre/books/metadata.db') +c = conn.cursor() +c.execute('SELECT COUNT(*) FROM books') +print(f'总书籍: {c.fetchone()[0]}') +c.execute('SELECT COUNT(*) FROM data WHERE format=\"TXT\"') +print(f'TXT 文件: {c.fetchone()[0]}') +conn.close() +" +``` + +--- + +## 四、操作流程(推荐顺序) + +```bash +cd /home/yangxuan/calibre + +# 1. 停服务 + 备份 +docker compose down +cp books/metadata.db books/metadata.db.backup.$(date +%Y%m%d) +killall calibre 2>/dev/null + +# 2. 脏数据清理(编码损坏 + 小文件) +python3 /path/to/clean_dirty_data.py + +# 3. 书名清洗 & 作者提取 +calibre-debug /path/to/fix_titles.py + +# 4. 重启 +docker compose up -d +``` + +--- + +## 五、已知问题 + +### `set_metadata` 报 `Errno 36 文件名过长` + +当 `author_sort` 字段超 80 字节时,Calibre 路径会触及 ext4 255 字节限制。先清理极长作者名: + +```bash +sqlite3 /home/yangxuan/calibre/books/metadata.db " +UPDATE authors SET name='Unknown' WHERE LENGTH(name) > 30; +" +``` + +### WSL `/mnt/f` 删除 NTFS 文件权限不够 + +WSL 的 drvfs 默认不带 metadata 选项,`sudo rm`、`os.remove`、`cmd.exe /c del` 均无法删除 NTFS 文件。不要在 WSL 下尝试跨分区删除操作,直接让 Windows 侧(文件资源管理器/PowerShell)操作。 \ No newline at end of file diff --git a/skill-workshop/proposals/calibre-cleaner-20260624-a441798af9/proposal.json b/skill-workshop/proposals/calibre-cleaner-20260624-a441798af9/proposal.json new file mode 100644 index 0000000..61e1899 --- /dev/null +++ b/skill-workshop/proposals/calibre-cleaner-20260624-a441798af9/proposal.json @@ -0,0 +1 @@ +{"schema":"openclaw.skill-workshop.proposal.v1","id":"calibre-cleaner-20260624-a441798af9","kind":"create","status":"applied","title":"Create calibre-cleaner","description":"清洗 Calibre 书库:修复损坏书名/提取作者/检测编码损坏、小文件的批量删除","createdAt":"2026-06-24T02:29:02.278Z","updatedAt":"2026-06-24T02:29:27.227Z","createdBy":"skill-workshop","origin":{"agentId":"storage","sessionKey":"agent:storage:main","runId":"6e4a8a08-2c78-4b57-866f-c8377d65f96c","messageId":"6e4a8a08-2c78-4b57-866f-c8377d65f96c"},"proposedVersion":"v1","draftFile":"PROPOSAL.md","draftHash":"15703b0a633a8d2adfce44b7b6623d42f0a25778e39c1436b002a42da67c974e","target":{"skillName":"calibre-cleaner","skillKey":"calibre-cleaner","skillDir":"/home/yangxuan/.openclaw/workspace/storage/skills/calibre-cleaner","skillFile":"/home/yangxuan/.openclaw/workspace/storage/skills/calibre-cleaner/SKILL.md","source":"openclaw-workspace"},"scan":{"state":"clean","scannedAt":"2026-06-24T02:29:27.216Z","critical":0,"warn":0,"info":0,"findings":[]},"appliedAt":"2026-06-24T02:29:27.227Z"} diff --git a/skill-workshop/proposals/calibre-cleaner-20260624-a441798af9/rollback.json b/skill-workshop/proposals/calibre-cleaner-20260624-a441798af9/rollback.json new file mode 100644 index 0000000..631cb35 --- /dev/null +++ b/skill-workshop/proposals/calibre-cleaner-20260624-a441798af9/rollback.json @@ -0,0 +1 @@ +{"schema":"openclaw.skill-workshop.rollback.v1","proposalId":"calibre-cleaner-20260624-a441798af9","writtenAt":"2026-06-24T02:29:27.217Z","targetSkillFile":"/home/yangxuan/.openclaw/workspace/storage/skills/calibre-cleaner/SKILL.md","action":"create"} diff --git a/skill-workshop/proposals/calibre-cleaner-20260624-cdbeb219a3/PROPOSAL.md b/skill-workshop/proposals/calibre-cleaner-20260624-cdbeb219a3/PROPOSAL.md new file mode 100644 index 0000000..29ac471 --- /dev/null +++ b/skill-workshop/proposals/calibre-cleaner-20260624-cdbeb219a3/PROPOSAL.md @@ -0,0 +1,303 @@ +--- +name: "calibre-cleaner" +description: "清洗 Calibre 书库:修复损坏书名/提取作者/检测编码损坏、小文件的批量删除" +status: proposal +version: "v1" +date: "2026-06-24T03:03:28.166Z" +--- + +# Calibre 书库清洗 Skill + +## 概述 + +Calibre 书库整理三件套: + +1. **书名清洗** —— 修复从 txt 导入产生的 HTML 标签/长文本/乱码书名 +2. **作者提取** —— 从书名中自动提取作者名(匹配 `作者:xxx`、`-xxx`、`BY xxx` 等格式) +3. **脏数据清理** —— 检测并删除内容损坏的 txt(中文 < 10%)以及小于 10KB 的垃圾文件 + +## 前置条件 + +- 书库路径:`/home/yangxuan/calibre/books` +- 元数据文件:`/home/yangxuan/calibre/books/metadata.db` +- 运行前须停止其他 Calibre 进程(桌面版、Docker Calibre-Web) +- 运行前 **必须备份** `metadata.db` + +--- + +## 一、书名清洗 & 作者提取 + +### `shorten(s, max_bytes=120)` + +将字符串截断到指定字节数,避免因 UTF-8 中文字符跨字节而损坏。 + +```python +def shorten(s, max_bytes=120): + encoded = s.encode('utf-8') + if len(encoded) <= max_bytes: + return s + try: + return encoded[:max_bytes].decode('utf-8') + except: + return encoded[:max_bytes-3].decode('utf-8', errors='ignore') +``` + +### `clean_title(title)` + +```python +def clean_title(title): + t = title + # 移除 HTML 标签 + t = re.sub(r'<[^>]+>', '', t) + # 替换 _BR_ / _BR 标记 + t = re.sub(r'_BR_', ' ', t, flags=re.IGNORECASE) + t = re.sub(r'_BR(?![a-zA-Z])', ' ', t) + # 移除 _fontxxx_ / _imgxxx_ 标记 + t = re.sub(r'_font[^_]*_', '', t) + t = re.sub(r'_img[^_]*_', '', t) + # 合并多余空格 + t = re.sub(r'\s+', ' ', t).strip() + # 超长截短 + if len(t) > 100: + m = re.search(r'[\u4e00-\u9fff]{2,}', t) + if m: + t = t[m.start():] + t = t[:60].rstrip(',。;:、!?…\ufffd\'"').rstrip('.,;:!?\'').strip() + # 移除控制字符 + t = re.sub(r'[\x00-\x08\x0b\x0c\x0e-\x1f]', '', t) + return shorten(t, 100).strip() or 'Unknown' +``` + +### 作者提取规则(从书名中提取) + +格式 | 示例 | 正则 +---|---|--- +`作者:xxx`(中文冒号) | `...作者:镜欲` | `作者[::]\s*([^\s,,、\))]+)` +`作者:xxx`(英文冒号) | `...作者:镜欲` | 同上 +`-xxx`(英文 dash 结尾) | `善良的美艳妈妈-糠麸` | `-([^-()【】\[\]]+)$` +`翻译:xxx` | `...翻译:kkmanlg` | `翻译[::]\s*([^\s,,、\))]+)` +`BY xxx`(英文 BY) | `...BY狱厨` | `\b[Bb][Yy]\s+([^\s,,、\))]+)` +`&xxx`(and 符结尾) | `...&axenic` | `&([^&()【】\[\] ]+)$` + +提取策略:先匹配 `作者:` → `-xxx` → `翻译:` → `BY` → `&xxx`。排除项:`正文`、`内容简介`、`第\\d+[章节]`。 + +```python +EXCLUDE_AUTHORS = {'正文', '内容简介', ''} + +def extract_author_from_title(title): + m = re.search(r'作者[::]\s*([^\s,,、\))《\[]+)', title) + if m: + name = m.group(1).strip() + if name not in EXCLUDE_AUTHORS and not re.match(r'^第\d+[章节]', name): + return name + m = re.search(r'翻译[::]\s*([^\s,,、\))《\[]+)', title) + if m: + return m.group(1).strip() + m = re.search(r'\b[Bb][Yy]\s+([^\s,,、\))《\[]+)', title) + if m: + name = m.group(1).strip() + if name not in EXCLUDE_AUTHORS: + return name + m = re.search(r'-([^-()【】\[\]{}《》\s]{2,30})$', title) + if m: + name = m.group(1).strip() + if name not in EXCLUDE_AUTHORS and not re.match(r'^\d+', name): + return name + m = re.search(r'&([^&()【】\[\]\s]{2,30})$', title) + if m: + name = m.group(1).strip() + if name not in EXCLUDE_AUTHORS: + return name + return None +``` + +### 坏书检测条件 + +```python +is_bad = ( + len(title) > 100 or + ' 150 +) +``` + +--- + +## 二、脏数据清理 + +### 2.1 检测条件 + +扫描书库中所有 TXT 文件,读取前 20KB 检测中文比例: + +- **内容损坏/二进制垃圾**:中文比例 < 10%(标记为待删除) +- **小文件垃圾**:`uncompressed_size < 10240`(10KB 以下) + +```python +with open(full_path, 'rb') as f: + raw = f.read(20480) +text = raw.decode('utf-8', errors='replace') +chinese = sum(1 for c in text if '\u4e00' <= c <= '\u9fff') +ratio = chinese / len(text) if len(text) > 0 else 0 + +if ratio < 0.10: # 内容损坏,删除 +if size < 10240: # 小文件垃圾,删除 +``` + +### 2.2 批量删除(通过 SQLite 直写) + +停掉 calibre 进程后,通过 SQLite 删除记录并清理文件系统: + +```sql +DELETE FROM data WHERE book = ? +DELETE FROM books_authors_link WHERE book = ? +DELETE FROM books_languages_link WHERE book = ? +DELETE FROM books_publishers_link WHERE book = ? +DELETE FROM books_series_link WHERE book = ? +DELETE FROM books_tags_link WHERE book = ? +DELETE FROM comments WHERE book = ? +DELETE FROM identifiers WHERE book = ? +DELETE FROM books WHERE id = ? +``` + +同时删除对应目录:`shutil.rmtree(os.path.join('/home/yangxuan/calibre/books', bpath))` + +### 2.3 完整删除脚本 + +```python +import sqlite3, os, shutil + +db_path = '/home/yangxuan/calibre/books/metadata.db' +conn = sqlite3.connect(db_path) +c = conn.cursor() + +c.execute(''' + SELECT b.id, b.title, b.path, d.name, d.uncompressed_size + FROM books b + JOIN data d ON d.book = b.id + WHERE d.format = 'TXT' +''') +rows = c.fetchall() + +to_delete = [] + +for bid, title, bpath, fname, size in rows: + full_path = os.path.join('/home/yangxuan/calibre/books', bpath, fname + '.txt') + if not os.path.exists(full_path): + continue + + # 条件1:小文件垃圾 + if size < 10240: + to_delete.append((bid, bpath)) + continue + + # 条件2:内容损坏(中文 < 10%) + with open(full_path, 'rb') as f: + raw = f.read(20480) + text = raw.decode('utf-8', errors='replace') + chinese = sum(1 for c in text if '\u4e00' <= c <= '\u9fff') + ratio = chinese / len(text) if len(text) > 0 else 0 + if ratio < 0.10: + to_delete.append((bid, bpath)) + +print(f"待删除: {len(to_delete)}", flush=True) +for bid, bpath in to_delete: + c.execute('DELETE FROM data WHERE book=?', (bid,)) + c.execute('DELETE FROM books_authors_link WHERE book=?', (bid,)) + c.execute('DELETE FROM books_languages_link WHERE book=?', (bid,)) + c.execute('DELETE FROM books_publishers_link WHERE book=?', (bid,)) + c.execute('DELETE FROM books_series_link WHERE book=?', (bid,)) + c.execute('DELETE FROM books_tags_link WHERE book=?', (bid,)) + c.execute('DELETE FROM comments WHERE book=?', (bid,)) + c.execute('DELETE FROM identifiers WHERE book=?', (bid,)) + c.execute('DELETE FROM books WHERE id=?', (bid,)) + full_dir = os.path.join('/home/yangxuan/calibre/books', bpath) + if os.path.exists(full_dir): + shutil.rmtree(full_dir) + +conn.commit() +conn.close() +print(f"完成,删除: {len(to_delete)}", flush=True) +``` + +--- + +## 三、常用操作 + +### 3.1 查看 XX 作者的书 + +```bash +sqlite3 /home/yangxuan/calibre/books/metadata.db " +SELECT b.id, b.title +FROM books b JOIN books_authors_link l ON b.id = l.book +JOIN authors a ON l.author = a.id +WHERE a.name = 'Unknown' +LIMIT 20; +" +``` + +### 3.2 统计作者分布 + +```bash +sqlite3 /home/yangxuan/calibre/books/metadata.db " +SELECT a.name, COUNT(*) as cnt +FROM books b JOIN books_authors_link l ON b.id = l.book +JOIN authors a ON l.author = a.id +GROUP BY a.name ORDER BY cnt DESC LIMIT 20; +" +``` + +### 3.3 书库统计 + +```bash +python3 -c " +import sqlite3 +conn = sqlite3.connect('/home/yangxuan/calibre/books/metadata.db') +c = conn.cursor() +c.execute('SELECT COUNT(*) FROM books') +print(f'总书籍: {c.fetchone()[0]}') +c.execute('SELECT COUNT(*) FROM data WHERE format=\"TXT\"') +print(f'TXT 文件: {c.fetchone()[0]}') +conn.close() +" +``` + +--- + +## 四、操作流程(推荐顺序) + +```bash +cd /home/yangxuan/calibre + +# 1. 停服务 + 备份 +docker compose down +cp books/metadata.db books/metadata.db.backup.$(date +%Y%m%d) +killall calibre 2>/dev/null + +# 2. 脏数据清理(内容损坏 + 小文件) +python3 /path/to/clean_dirty_data.py + +# 3. 书名清洗 & 作者提取 +calibre-debug /path/to/fix_titles.py + +# 4. 重启 +docker compose up -d +``` + +--- + +## 五、已知问题 + +### `set_metadata` 报 `Errno 36 文件名过长` + +当 `author_sort` 字段超 80 字节时,Calibre 路径会触及 ext4 255 字节限制。先清理极长作者名: + +```bash +sqlite3 /home/yangxuan/calibre/books/metadata.db " +UPDATE authors SET name='Unknown' WHERE LENGTH(name) > 30; +" +``` + +### WSL `/mnt/f` 删除 NTFS 文件权限不够 + +WSL 的 drvfs 默认不带 metadata 选项,`sudo rm`、`os.remove`、`cmd.exe /c del` 均无法删除 NTFS 文件。不要在 WSL 下尝试跨分区删除操作,直接让 Windows 侧(文件资源管理器/PowerShell)操作。 \ No newline at end of file diff --git a/skill-workshop/proposals/calibre-cleaner-20260624-cdbeb219a3/proposal.json b/skill-workshop/proposals/calibre-cleaner-20260624-cdbeb219a3/proposal.json new file mode 100644 index 0000000..8ff0b94 --- /dev/null +++ b/skill-workshop/proposals/calibre-cleaner-20260624-cdbeb219a3/proposal.json @@ -0,0 +1 @@ +{"schema":"openclaw.skill-workshop.proposal.v1","id":"calibre-cleaner-20260624-cdbeb219a3","kind":"update","status":"applied","title":"Update calibre-cleaner","description":"清洗 Calibre 书库:修复损坏书名/提取作者/检测编码损坏、小文件的批量删除","createdAt":"2026-06-24T03:03:28.166Z","updatedAt":"2026-06-24T03:03:30.915Z","createdBy":"skill-workshop","origin":{"agentId":"storage","sessionKey":"agent:storage:main","runId":"86d65e13-ea3d-4313-b25d-ee3fae219431","messageId":"86d65e13-ea3d-4313-b25d-ee3fae219431"},"proposedVersion":"v1","draftFile":"PROPOSAL.md","draftHash":"7a0719492c9262eebf6ea0a5d031bd1fdc45dd0e919e6ef04c5b1ce255ed0f2c","target":{"skillName":"calibre-cleaner","skillKey":"calibre-cleaner","skillDir":"/home/yangxuan/.openclaw/workspace/storage/skills/calibre-cleaner","skillFile":"/home/yangxuan/.openclaw/workspace/storage/skills/calibre-cleaner/SKILL.md","source":"openclaw-workspace","currentContentHash":"dd59723daea61a10edc128f446e41d71c07b03cbe6064ea5140e260a21fce51e"},"scan":{"state":"clean","scannedAt":"2026-06-24T03:03:30.906Z","critical":0,"warn":0,"info":0,"findings":[]},"appliedAt":"2026-06-24T03:03:30.915Z"} diff --git a/skill-workshop/proposals/calibre-cleaner-20260624-cdbeb219a3/rollback.json b/skill-workshop/proposals/calibre-cleaner-20260624-cdbeb219a3/rollback.json new file mode 100644 index 0000000..9b96759 --- /dev/null +++ b/skill-workshop/proposals/calibre-cleaner-20260624-cdbeb219a3/rollback.json @@ -0,0 +1 @@ +{"schema":"openclaw.skill-workshop.rollback.v1","proposalId":"calibre-cleaner-20260624-cdbeb219a3","writtenAt":"2026-06-24T03:03:30.908Z","targetSkillFile":"/home/yangxuan/.openclaw/workspace/storage/skills/calibre-cleaner/SKILL.md","action":"update","previousContent":"---\nname: \"calibre-cleaner\"\ndescription: \"清洗 Calibre 书库:修复损坏书名/提取作者/检测编码损坏、小文件的批量删除\"\n---\n\n# Calibre 书库清洗 Skill\n\n## 概述\n\nCalibre 书库整理三件套:\n\n1. **书名清洗** —— 修复从 txt 导入产生的 HTML 标签/长文本/乱码书名\n2. **作者提取** —— 从书名中自动提取作者名(匹配 `作者:xxx`、`-xxx`、`BY xxx` 等格式)\n3. **脏数据清理** —— 检测并删除编码损坏的 txt、小于 10KB 的垃圾文件\n\n## 前置条件\n\n- 书库路径:`/home/yangxuan/calibre/books`\n- 元数据文件:`/home/yangxuan/calibre/books/metadata.db`\n- 运行前须停止其他 Calibre 进程(桌面版、Docker Calibre-Web)\n- 运行前 **必须备份** `metadata.db`\n\n---\n\n## 一、书名清洗 & 作者提取\n\n(详见 skill 原内容,此处保留完整清洗逻辑)\n\n---\n\n## 二、脏数据清理\n\n### 2.1 检测编码损坏的 TXT\n\n检测条件:中文比例 < 10% 且含有乱码字符(`Ŀ¼ĴƿȿɿʼÈÌÒÙ(` 等 UTF-8 编码错误字)\n\n```python\nimport sqlite3, os\n\nbad_char_set = set('Ŀ¼ĴƿȿɿʼÈÌÒÙ(')\nbad_ids = []\n\nfor bid, title, bpath, fname in rows:\n full_path = os.path.join('/home/yangxuan/calibre/books', bpath, fname + '.txt')\n if not os.path.exists(full_path):\n continue\n with open(full_path, 'rb') as f:\n raw = f.read(20480)\n text = raw.decode('utf-8', errors='replace')\n chinese = sum(1 for c in text if '\\u4e00' <= c <= '\\u9fff')\n total = len(text)\n ratio = chinese / total if total > 0 else 0\n has_bad = any(c in bad_char_set for c in text)\n if ratio < 0.10 and has_bad:\n bad_ids.append(bid)\n```\n\n### 2.2 检测小文件\n\n```python\nc.execute('''\n SELECT b.id, b.path FROM books b \n JOIN data d ON d.book = b.id \n WHERE d.format = 'TXT' AND d.uncompressed_size < 10240\n''')\n```\n\n### 2.3 批量删除(通过 SQLite 直写)\n\n停掉 calibre 进程后,通过 SQLite 删除记录并清理文件系统:\n\n```sql\nDELETE FROM data WHERE book = ?\nDELETE FROM books_authors_link WHERE book = ?\nDELETE FROM books_languages_link WHERE book = ?\nDELETE FROM books_publishers_link WHERE book = ?\nDELETE FROM books_series_link WHERE book = ?\nDELETE FROM books_tags_link WHERE book = ?\nDELETE FROM comments WHERE book = ?\nDELETE FROM identifiers WHERE book = ?\nDELETE FROM books WHERE id = ?\n```\n\n同时删除对应目录:`shutil.rmtree(os.path.join('/home/yangxuan/calibre/books', bpath))`\n\n### 2.4 完整删除脚本\n\n```python\nimport sqlite3, os, shutil\n\ndb_path = '/home/yangxuan/calibre/books/metadata.db'\nconn = sqlite3.connect(db_path)\nc = conn.cursor()\n\nc.execute('''\n SELECT b.id, b.title, b.path, d.name, d.uncompressed_size\n FROM books b \n JOIN data d ON d.book = b.id \n WHERE d.format = 'TXT'\n''')\nrows = c.fetchall()\n\nbad_char_set = set('Ŀ¼ĴƿȿɿʼÈÌÒÙ(')\nto_delete = []\n\nfor bid, title, bpath, fname, size in rows:\n full_path = os.path.join('/home/yangxuan/calibre/books', bpath, fname + '.txt')\n if not os.path.exists(full_path):\n continue\n with open(full_path, 'rb') as f:\n raw = f.read(20480)\n text = raw.decode('utf-8', errors='replace')\n chinese = sum(1 for c in text if '\\u4e00' <= c <= '\\u9fff')\n ratio = chinese / len(text) if len(text) > 0 else 0\n has_bad = any(c in bad_char_set for c in text)\n if (ratio < 0.10 and has_bad) or size < 10240:\n to_delete.append((bid, bpath))\n\nprint(f\"待删除: {len(to_delete)}\")\nfor bid, bpath in to_delete:\n c.execute('DELETE FROM data WHERE book=?', (bid,))\n c.execute('DELETE FROM books_authors_link WHERE book=?', (bid,))\n c.execute('DELETE FROM books_languages_link WHERE book=?', (bid,))\n c.execute('DELETE FROM books_publishers_link WHERE book=?', (bid,))\n c.execute('DELETE FROM books_series_link WHERE book=?', (bid,))\n c.execute('DELETE FROM books_tags_link WHERE book=?', (bid,))\n c.execute('DELETE FROM comments WHERE book=?', (bid,))\n c.execute('DELETE FROM identifiers WHERE book=?', (bid,))\n c.execute('DELETE FROM books WHERE id=?', (bid,))\n full_dir = os.path.join('/home/yangxuan/calibre/books', bpath)\n if os.path.exists(full_dir):\n shutil.rmtree(full_dir)\n\nconn.commit()\nconn.close()\nprint(f\"完成,删除: {len(to_delete)}\")\n```\n\n---\n\n## 三、常用操作\n\n### 3.1 查看 XX 作者的书\n\n```bash\nsqlite3 /home/yangxuan/calibre/books/metadata.db \"\nSELECT b.id, b.title\nFROM books b JOIN books_authors_link l ON b.id = l.book\nJOIN authors a ON l.author = a.id\nWHERE a.name = 'Unknown'\nLIMIT 20;\n\"\n```\n\n### 3.2 统计作者分布\n\n```bash\nsqlite3 /home/yangxuan/calibre/books/metadata.db \"\nSELECT a.name, COUNT(*) as cnt\nFROM books b JOIN books_authors_link l ON b.id = l.book\nJOIN authors a ON l.author = a.id\nGROUP BY a.name ORDER BY cnt DESC LIMIT 20;\n\"\n```\n\n### 3.3 书库统计\n\n```bash\npython3 -c \"\nimport sqlite3\nconn = sqlite3.connect('/home/yangxuan/calibre/books/metadata.db')\nc = conn.cursor()\nc.execute('SELECT COUNT(*) FROM books')\nprint(f'总书籍: {c.fetchone()[0]}')\nc.execute('SELECT COUNT(*) FROM data WHERE format=\\\"TXT\\\"')\nprint(f'TXT 文件: {c.fetchone()[0]}')\nconn.close()\n\"\n```\n\n---\n\n## 四、操作流程(推荐顺序)\n\n```bash\ncd /home/yangxuan/calibre\n\n# 1. 停服务 + 备份\ndocker compose down\ncp books/metadata.db books/metadata.db.backup.$(date +%Y%m%d)\nkillall calibre 2>/dev/null\n\n# 2. 脏数据清理(编码损坏 + 小文件)\npython3 /path/to/clean_dirty_data.py\n\n# 3. 书名清洗 & 作者提取\ncalibre-debug /path/to/fix_titles.py\n\n# 4. 重启\ndocker compose up -d\n```\n\n---\n\n## 五、已知问题\n\n### `set_metadata` 报 `Errno 36 文件名过长`\n\n当 `author_sort` 字段超 80 字节时,Calibre 路径会触及 ext4 255 字节限制。先清理极长作者名:\n\n```bash\nsqlite3 /home/yangxuan/calibre/books/metadata.db \"\nUPDATE authors SET name='Unknown' WHERE LENGTH(name) > 30;\n\"\n```\n\n### WSL `/mnt/f` 删除 NTFS 文件权限不够\n\nWSL 的 drvfs 默认不带 metadata 选项,`sudo rm`、`os.remove`、`cmd.exe /c del` 均无法删除 NTFS 文件。不要在 WSL 下尝试跨分区删除操作,直接让 Windows 侧(文件资源管理器/PowerShell)操作。\n","previousContentHash":"dd59723daea61a10edc128f446e41d71c07b03cbe6064ea5140e260a21fce51e"} diff --git a/skill-workshop/proposals/calibre-title-cleaner-20260624-3760b64e8b/PROPOSAL.md b/skill-workshop/proposals/calibre-title-cleaner-20260624-3760b64e8b/PROPOSAL.md new file mode 100644 index 0000000..4dfa10c --- /dev/null +++ b/skill-workshop/proposals/calibre-title-cleaner-20260624-3760b64e8b/PROPOSAL.md @@ -0,0 +1,284 @@ +--- +name: "calibre-title-cleaner" +description: "清洗 Calibre 书库中损坏的 txt 文档书名(HTML标签/长文本/乱码/路径超限修复)" +status: proposal +version: "v2" +date: "2026-06-24T01:12:53.053Z" +--- + +# Calibre 书库书名清洗 & 作者提取 Skill + +## 概述 + +清洗 Calibre 书库中因从 txt 文件自动导入而产生的损坏书名,**同时从书名中提取作者信息**并更新到作者字段。适用于 Calibre 书库路径 `/home/yangxuan/calibre/books`。 + +## 前置条件 + +- Calibre 数据库路径:`/home/yangxuan/calibre/books` +- 元数据文件:`/home/yangxuan/calibre/books/metadata.db` +- 需要 `calibre-debug` 或 `calibre` Python 环境(使用 `LibraryDatabase` API) +- **运行前须停止其他 Calibre 进程**(桌面版、Calibre-Web Docker) +- **运行前必须备份** `metadata.db` + +## 作者提取规则(从书名中提取) + +### 需要匹配的作者格式(基于实际书库数据) + +格式 | 示例 | 正则 +---|---|--- +`作者:xxx`(中文冒号) | `...作者:镜欲` | `作者[::]\s*([^\s,,、\))]+)` +`作者:xxx`(英文冒号) | `...作者:镜欲` | 同上 +`-xxx`(英文 dash 结尾) | `善良的美艳妈妈-糠麸` | `-([^-()【】\[\]]+)$` +`翻译:xxx` | `...翻译:kkmanlg` | `翻译[::]\s*([^\s,,、\))]+)` +`BY xxx`(英文 BY) | `...BY狱厨` | `\b[Bb][Yy]\s+([^\s,,、\))]+)` +`&xxx`(and 符结尾) | `...&axenic` | `&([^&()【】\[\] ]+)$` + +### 提取策略 + +1. **优先匹配精确的"作者:"标记**(最可靠) +2. 失败后尝试 `-xxx` 结尾(短作者名) +3. 再尝试 `翻译:`、`BY`、`&xxx` 等 +4. 如果提取到的作者名仍是乱填的(如 `正文`、`第01章`、`【内容简介】`),**跳过**,标为 Unknown + +### 排除项(以下不是真作者) + +- `正文`、`内容简介` +- `第\d+[章节]`(章节名) +- 长度 > 30 字符的内容摘要 + +## 书名清洗规则 + +### `shorten(s, max_bytes=120)` + +将字符串截断到指定字节数,避免因 UTF-8 中文字符跨字节而损坏。 + +```python +def shorten(s, max_bytes=120): + encoded = s.encode('utf-8') + if len(encoded) <= max_bytes: + return s + try: + return encoded[:max_bytes].decode('utf-8') + except: + return encoded[:max_bytes-3].decode('utf-8', errors='ignore') +``` + +### `clean_title(title)` + +```python +def clean_title(title): + t = title + # 移除 HTML 标签 + t = re.sub(r'<[^>]+>', '', t) + # 替换 _BR_ / _BR 标记 + t = re.sub(r'_BR_', ' ', t, flags=re.IGNORECASE) + t = re.sub(r'_BR(?![a-zA-Z])', ' ', t) + # 移除 _fontxxx_ / _imgxxx_ 标记 + t = re.sub(r'_font[^_]*_', '', t) + t = re.sub(r'_img[^_]*_', '', t) + # 合并多余空格 + t = re.sub(r'\s+', ' ', t).strip() + # 超长截短 + if len(t) > 100: + m = re.search(r'[\u4e00-\u9fff]{2,}', t) + if m: + t = t[m.start():] + t = t[:60].rstrip(',。;:、!?…\ufffd\'"').rstrip('.,;:!?\'').strip() + # 移除控制字符 + t = re.sub(r'[\x00-\x08\x0b\x0c\x0e-\x1f]', '', t) + return shorten(t, 100).strip() or 'Unknown' +``` + +### 坏书检测条件 + +```python +is_bad = ( + len(title) > 100 or + ' 150 +) +``` + +## 完整脚本示例(含作者提取) + +```python +import re +from calibre.db.legacy import LibraryDatabase + +def shorten(s, max_bytes=120): + encoded = s.encode('utf-8') + if len(encoded) <= max_bytes: + return s + try: + return encoded[:max_bytes].decode('utf-8') + except: + return encoded[:max_bytes-3].decode('utf-8', errors='ignore') + +EXCLUDE_AUTHORS = {'正文', '内容简介', ''} + +def extract_author_from_title(title): + """从书名中提取作者名""" + # 1. 作者:xxx + m = re.search(r'作者[::]\s*([^\s,,、\))《\[]+)', title) + if m: + name = m.group(1).strip() + if name not in EXCLUDE_AUTHORS and not re.match(r'^第\d+[章节]', name): + return name + # 2. 翻译:xxx + m = re.search(r'翻译[::]\s*([^\s,,、\))《\[]+)', title) + if m: + return m.group(1).strip() + # 3. BY xxx + m = re.search(r'\b[Bb][Yy]\s+([^\s,,、\))《\[]+)', title) + if m: + name = m.group(1).strip() + if name not in EXCLUDE_AUTHORS: + return name + # 4. -xxx 结尾(最后一个 dash 后的词) + m = re.search(r'-([^-()【】\[\]{}《》\s]{2,30})$', title) + if m: + name = m.group(1).strip() + if name not in EXCLUDE_AUTHORS and not re.match(r'^\d+', name): + return name + # 5. &xxx 结尾 + m = re.search(r'&([^&()【】\[\]\s]{2,30})$', title) + if m: + name = m.group(1).strip() + if name not in EXCLUDE_AUTHORS: + return name + return None + +def clean_title_and_extract_author(n): + """清洗书名并返回 (cleaned_title, extracted_author_or_None)""" + t = n + t = re.sub(r'<[^>]+>', '', t) + t = re.sub(r'_BR_', ' ', t, flags=re.IGNORECASE) + t = re.sub(r'_BR(?![a-zA-Z])', ' ', t) + t = re.sub(r'_font[^_]*_', '', t) + t = re.sub(r'_img[^_]*_', '', t) + t = re.sub(r'\s+', ' ', t).strip() + + extracted_author = extract_author_from_title(t) + + # 如果提取到了作者,从书名中移除作者部分 + if extracted_author: + t = re.sub(r'作者[::]\s*' + re.escape(extracted_author), '', t) + t = re.sub(r'翻译[::]\s*' + re.escape(extracted_author), '', t) + t = re.sub(r'\b[Bb][Yy]\s+' + re.escape(extracted_author), '', t) + t = re.sub(r'-' + re.escape(extracted_author) + r'$', '', t) + t = re.sub(r'&' + re.escape(extracted_author) + r'$', '', t) + + # 超长截短 + if len(t) > 100: + m = re.search(r'[\u4e00-\u9fff]{2,}', t) + if m: + t = t[m.start():] + t = t[:60].rstrip(',。;:、!?…\ufffd\'"').rstrip('.,;:!?\'').strip() + + t = re.sub(r'[\x00-\x08\x0b\x0c\x0e-\x1f]', '', t) + t = shorten(t, 100).strip() or 'Unknown' + + return t, extracted_author + + +db = LibraryDatabase('/home/yangxuan/calibre/books') +count_clean = 0 +count_author = 0 +errors = [] + +for bid in list(db.all_ids()): + mi = db.get_metadata(bid) + title = mi.title + author_name = mi.authors[0] if mi.authors else 'Unknown' + + # 检测是否需要清洗书名 + need_clean = ( + len(title) > 100 or + ' 150 + ) + + # 检测是否需要提取作者(当前作者为 Unknown) + need_author = (author_name == 'Unknown') + + if need_clean or need_author: + new_title, extracted = clean_title_and_extract_author(title) + + changed = False + if new_title and new_title != title: + mi.title = new_title + changed = True + count_clean += 1 + + if need_author and extracted: + mi.authors = [extracted] + changed = True + count_author += 1 + + if changed: + try: + db.set_metadata(bid, mi) + except Exception as e: + errors.append((bid, str(e)[:80])) + +print(f'书名清洗: {count_clean}') +print(f'作者提取: {count_author}') +print(f'错误: {len(errors)}') +``` + +## 常用操作 + +### 查看 Unknown 作者的书 + +```bash +sqlite3 /home/yangxuan/calibre/books/metadata.db " +SELECT b.id, b.title +FROM books b +JOIN books_authors_link l ON b.id = l.book +JOIN authors a ON l.author = a.id +WHERE a.name = 'Unknown' +LIMIT 20; +" + +# 统计 +sqlite3 /home/yangxuan/calibre/books/metadata.db " +SELECT a.name, COUNT(*) as cnt +FROM books b +JOIN books_authors_link l ON b.id = l.book +JOIN authors a ON l.author = a.id +GROUP BY a.name +ORDER BY cnt DESC +LIMIT 20; +" +``` + +### 运行清洗脚本 + +```bash +# 停服务 + 备份 +cd /home/yangxuan/calibre +docker compose down +cp books/metadata.db books/metadata.db.backup.$(date +%Y%m%d) +killall calibre 2>/dev/null + +# 执行 +calibre-debug /tmp/fix_titles_v2.py + +# 重启 +docker compose up -d +``` + +## 已知问题 + +### `set_metadata` 报 `Errno 36 文件名过长` + +当 `author_sort` 字段(基于作者名生成)超 80 字节时,Calibre 更新路径会触及 ext4 255 字节限制。此时需先清理极长作者名: + +```bash +sqlite3 /home/yangxuan/calibre/books/metadata.db " +UPDATE authors SET name='Unknown' WHERE LENGTH(name) > 30; +" +``` +然后重新执行脚本。 \ No newline at end of file diff --git a/skill-workshop/proposals/calibre-title-cleaner-20260624-3760b64e8b/proposal.json b/skill-workshop/proposals/calibre-title-cleaner-20260624-3760b64e8b/proposal.json new file mode 100644 index 0000000..c548aae --- /dev/null +++ b/skill-workshop/proposals/calibre-title-cleaner-20260624-3760b64e8b/proposal.json @@ -0,0 +1 @@ +{"schema":"openclaw.skill-workshop.proposal.v1","id":"calibre-title-cleaner-20260624-3760b64e8b","kind":"create","status":"applied","title":"Create calibre-title-cleaner","description":"清洗 Calibre 书库中损坏的 txt 文档书名(HTML标签/长文本/乱码/路径超限修复)","createdAt":"2026-06-24T01:10:56.296Z","updatedAt":"2026-06-24T01:13:39.670Z","createdBy":"skill-workshop","origin":{"agentId":"storage","sessionKey":"agent:storage:main","runId":"af9dc258-69c6-4d62-85d9-80f64c387d85","messageId":"af9dc258-69c6-4d62-85d9-80f64c387d85"},"proposedVersion":"v2","draftFile":"PROPOSAL.md","draftHash":"735afe1e59db22fb6cbffbe074e559ebc91137fa3687e503b12fc91af62f42e1","target":{"skillName":"calibre-title-cleaner","skillKey":"calibre-title-cleaner","skillDir":"/home/yangxuan/.openclaw/workspace/storage/skills/calibre-title-cleaner","skillFile":"/home/yangxuan/.openclaw/workspace/storage/skills/calibre-title-cleaner/SKILL.md","source":"openclaw-workspace"},"scan":{"state":"clean","scannedAt":"2026-06-24T01:13:39.659Z","critical":0,"warn":0,"info":0,"findings":[]},"appliedAt":"2026-06-24T01:13:39.670Z"} diff --git a/skill-workshop/proposals/calibre-title-cleaner-20260624-3760b64e8b/rollback.json b/skill-workshop/proposals/calibre-title-cleaner-20260624-3760b64e8b/rollback.json new file mode 100644 index 0000000..7afd51a --- /dev/null +++ b/skill-workshop/proposals/calibre-title-cleaner-20260624-3760b64e8b/rollback.json @@ -0,0 +1 @@ +{"schema":"openclaw.skill-workshop.rollback.v1","proposalId":"calibre-title-cleaner-20260624-3760b64e8b","writtenAt":"2026-06-24T01:13:39.660Z","targetSkillFile":"/home/yangxuan/.openclaw/workspace/storage/skills/calibre-title-cleaner/SKILL.md","action":"create"} diff --git a/skill-workshop/proposals/dianping-review-20260611-d402abec10/PROPOSAL.md b/skill-workshop/proposals/dianping-review-20260611-d402abec10/PROPOSAL.md new file mode 100644 index 0000000..70192d1 --- /dev/null +++ b/skill-workshop/proposals/dianping-review-20260611-d402abec10/PROPOSAL.md @@ -0,0 +1,52 @@ +--- +name: "dianping-review" +description: "通过大众点评搜索查询餐厅、老店、美食推荐和评论" +status: proposal +version: "v1" +date: "2026-06-11T23:50:15.731Z" +--- + +# dianping-review 技能 + +通过大众点评(dianping.com)搜索查询美食推荐、餐厅评价和老店信息。 + +## 能力 + +1. 搜索指定位置附近的餐厅和美食 +2. 查询餐厅评价、评分、人均消费 +3. 查找开业超过十年的老店 +4. 按类型(烤鸭、涮肉、川菜等)筛选推荐 + +## 使用场景 + +- 用户住在某酒店/某区域,想知道附近有什么好吃的 +- 用户想找大众点评上高评分/开业久的餐厅 +- 用户想了解某家餐厅的口碑和人均消费 + +## 使用方法 + +由于大众点评有反爬机制,以下为可行方案: + +### 方案一:大众点评公开页面直接访问 +```bash +# 搜索关键词构造 +SEARCH_URL="https://www.dianping.com/search/keyword/2/0_$(python3 -c 'import urllib.parse; print(urllib.parse.quote(sys.argv[1]))' "$KEYWORD")" +``` + +### 方案二:通过搜索引擎间接获取 +```bash +# 用搜索引擎搜索大众点评的公开信息 +curl -sL "https://www.google.com/search?q=site:dianping.com+${KEYWORD}&hl=zh-CN" \ + -H 'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36' +``` + +### 方案三:推荐通过大众点评App/小程序 +用户自行在微信小程序打开「大众点评」,定位当前位置查看附近美食更为方便。 + +## 示例输出格式 + +推荐餐厅时按以下格式: + +- **店名** — 评分/人均/经营年限 +- 地址:具体地址 +- 推荐理由:为什么推荐 \ No newline at end of file diff --git a/skill-workshop/proposals/dianping-review-20260611-d402abec10/proposal.json b/skill-workshop/proposals/dianping-review-20260611-d402abec10/proposal.json new file mode 100644 index 0000000..abaeff7 --- /dev/null +++ b/skill-workshop/proposals/dianping-review-20260611-d402abec10/proposal.json @@ -0,0 +1 @@ +{"schema":"openclaw.skill-workshop.proposal.v1","id":"dianping-review-20260611-d402abec10","kind":"create","status":"pending","title":"Create dianping-review","description":"通过大众点评搜索查询餐厅、老店、美食推荐和评论","createdAt":"2026-06-11T23:50:15.731Z","updatedAt":"2026-06-11T23:50:15.731Z","createdBy":"skill-workshop","origin":{"agentId":"travel","sessionKey":"agent:travel:openclaw-weixin:direct:o9cq80w6znnpgitw-ggackwd69ba@im.wechat","runId":"877b3a72-a43d-4105-bc96-68d122db4362","messageId":"openclaw-weixin:1781221807078-aeb5f501"},"proposedVersion":"v1","draftFile":"PROPOSAL.md","draftHash":"e1b2e0249d29f948d5f7c08421dc563c8ffa8da5eef28d7ee1d7df5cc0315cbf","target":{"skillName":"dianping-review","skillKey":"dianping-review","skillDir":"/home/yangxuan/.openclaw/workspace/travel/skills/dianping-review","skillFile":"/home/yangxuan/.openclaw/workspace/travel/skills/dianping-review/SKILL.md","source":"openclaw-workspace"},"scan":{"state":"clean","scannedAt":"2026-06-11T23:50:15.731Z","critical":0,"warn":0,"info":0,"findings":[]}} diff --git a/skill-workshop/proposals/jellyfin-nfo-builder-20260701-6434352e0d/PROPOSAL.md b/skill-workshop/proposals/jellyfin-nfo-builder-20260701-6434352e0d/PROPOSAL.md new file mode 100644 index 0000000..f5882ac --- /dev/null +++ b/skill-workshop/proposals/jellyfin-nfo-builder-20260701-6434352e0d/PROPOSAL.md @@ -0,0 +1,96 @@ +--- +name: "jellyfin-nfo-builder" +description: "为剧集整理统一文件名、生成缺失的 Jellyfin .nfo 剧集元数据" +status: proposal +version: "v1" +date: "2026-07-01T23:52:24.406Z" +--- + +# Jellyfin NFO 剧集元数据补齐技能 + +为剧集目录整理统一文件名,并为缺失的集数生成标准的 Jellyfin `.nfo` 元数据文件。 + +## 适用场景 + +- 手动清理/重命名剧集文件后,部分集数的 `.nfo` 元数据缺失 +- 从不同来源合并剧集(高质量版 + 补全集),需要统一格式 +- 批量标准化剧集视频文件和元数据 + +## 前置条件 + +- 视频文件已整理到一个目录 +- 有一条完整的剧集(有 `.nfo` 示例可参照格式) +- 了解剧集的总集数 +- shell 工作目录为剧集所在目录 + +## 步骤 + +### 1. 检查现有状态 + +列出目录下所有视频文件和 `.nfo` 文件: + +```bash +ls -lh *.mp4 *.nfo 2>/dev/null +``` + +确定: +- 总集数 +- 已有哪些集的 `.nfo` +- 哪些集缺失 `.nfo` +- 文件名是否统一 + +### 2. 读取一个已有 `.nfo` 作为模板 + +```bash +cat "剧集名 第xx集.nfo" +``` + +标准 Jellyfin 剧集 nfo 格式: + +```xml + + + 第N集 + 1 + N + 剧集名 第N集 + 233 + 2026-01-01 + +``` + +### 3. 生成缺失的 `.nfo` + +```bash +cd /path/to/剧集目录 +for i in 4 5 8 9 10 11; do + cat > "剧集名 第${i}集.nfo" << EOF + + + 第${i}集 + 1 + ${i} + 剧集名 第${i}集 + 233 + 2026-01-01 + +EOF +done +``` + +> `runtime`(时长秒数)和 `aired`(首播日期)可以参照已有文件填写,或设为默认值。 + +### 4. 检查结果 + +```bash +ls -lh *.mp4 *.nfo 2>/dev/null +``` + +确认每一集都有对应的视频文件和 `.nfo` 文件。 + +## 注意事项 + +- Jellyfin 依赖文件名排序,统一格式为 `剧集名 第XX集.mp4`(两位数字,按字母排序正确) +- `.nfo` 中的 `` 标签必须与集数一致 +- 如果整个剧集目录还没有 `tvshow.nfo` 和 `season.nfo`,也需要一并创建 +- 视频文件命名应与 `.nfo` 文件名完全一致(仅扩展名不同) \ No newline at end of file diff --git a/skill-workshop/proposals/jellyfin-nfo-builder-20260701-6434352e0d/proposal.json b/skill-workshop/proposals/jellyfin-nfo-builder-20260701-6434352e0d/proposal.json new file mode 100644 index 0000000..8bb7e30 --- /dev/null +++ b/skill-workshop/proposals/jellyfin-nfo-builder-20260701-6434352e0d/proposal.json @@ -0,0 +1 @@ +{"schema":"openclaw.skill-workshop.proposal.v1","id":"jellyfin-nfo-builder-20260701-6434352e0d","kind":"create","status":"pending","title":"Create jellyfin-nfo-builder","description":"为剧集整理统一文件名、生成缺失的 Jellyfin .nfo 剧集元数据","createdAt":"2026-07-01T23:52:24.406Z","updatedAt":"2026-07-01T23:52:24.406Z","createdBy":"skill-workshop","origin":{"agentId":"storage","sessionKey":"agent:storage:main","runId":"1b45e119-4276-4a7c-8a20-e52d1679a304","messageId":"1b45e119-4276-4a7c-8a20-e52d1679a304"},"proposedVersion":"v1","draftFile":"PROPOSAL.md","draftHash":"fa9a54a33aecdbb0a96e175f7acf1e923606cbf90114460da48548e127710a48","target":{"skillName":"jellyfin-nfo-builder","skillKey":"jellyfin-nfo-builder","skillDir":"/home/yangxuan/.openclaw/workspace/storage/skills/jellyfin-nfo-builder","skillFile":"/home/yangxuan/.openclaw/workspace/storage/skills/jellyfin-nfo-builder/SKILL.md","source":"openclaw-workspace"},"scan":{"state":"clean","scannedAt":"2026-07-01T23:52:24.407Z","critical":0,"warn":0,"info":0,"findings":[]}} diff --git a/skill-workshop/proposals/weekly-report-g5-20260626-7595273f1d/PROPOSAL.md b/skill-workshop/proposals/weekly-report-g5-20260626-7595273f1d/PROPOSAL.md new file mode 100644 index 0000000..0e038fc --- /dev/null +++ b/skill-workshop/proposals/weekly-report-g5-20260626-7595273f1d/PROPOSAL.md @@ -0,0 +1,106 @@ +--- +name: "weekly-report-g5" +description: "维云智造G5周报生成:整理每日工作→多段邮件(纯文本+HTML含签名图)→存入钉邮草稿箱" +status: proposal +version: "v1" +date: "2026-06-26T00:46:22.478Z" +--- + +# weekly-report-g5 — 维云智造 G5 周报生成技能 + +## 适用场景 +用户提供了周一至周五的每日工作内容,需要生成 G5 周报并存入钉邮草稿箱。 + +## 工作流程 + +### 1. 收集每日工作内容 +- 周一(本周首日)至周五 +- 如果用户分多次给出,先等待所有日期内容收齐再生成 + +### 2. 邮件格式规范 + +**主题**:`G5开发周报 (YYYY-MM-DD ~ YYYY-MM-DD)` + +**收件人**:liuqiang@witsoft.cn + +**抄送**:wurd@witsoft.cn, chenm@witsoft.cn, zengli@witsoft.cn + +**发送人**:杨轩 \ + +**正文(纯文本版)**: +``` +项目名称: 维云智造G5 +主要任务: <本周主要任务> + +本周工作内容 +周一(YYYY-MM-DD) + - ... +周二(YYYY-MM-DD) + - ... +周三(YYYY-MM-DD) + - ... +周四(YYYY-MM-DD) + - ... +周五(YYYY-MM-DD) + - ... + +存在问题 +<内容或"无"> +``` + +**签名格式(纯文本)**: +``` +Best regards, +杨轩 +https://minio.climbcube.cn/img/202606260843249.jpg +地址:中国·南京云密城L栋5/10楼 +手机:18726128489 +邮箱:yangxuan@witsoft.cn +``` + +### 3. 发送方式 + +使用 Python 构造**多段邮件**(同时含纯文本和 HTML),然后通过 himalaya 存入草稿箱。 + +HTML 版签名区应该包含 `` 标签嵌入签名图片: +```html +签名 +``` + +**生成命令模板**: + +```bash +python3 << 'PYEOF' +import email +from email.mime.multipart import MIMEMultipart +from email.mime.text import MIMEText +from email.header import Header + +plain_body = """...""" +html_text = """...""" + +msg = MIMEMultipart('related') +msg['From'] = Header('杨轩', 'utf-8').encode() + ' ' +msg['To'] = Header('刘强', 'utf-8').encode() + ' ' +msg['Cc'] = Header('吴睿东', 'utf-8').encode() + ' , ' + Header('陈明', 'utf-8').encode() + ' , ' + Header('曾莉', 'utf-8').encode() + ' ' +msg['Subject'] = Header('G5开发周报 (...)', 'utf-8').encode() + +alt = MIMEMultipart('alternative') +alt.attach(MIMEText(plain_body, 'plain', 'utf-8')) +alt.attach(MIMEText(html_text, 'html', 'utf-8')) +msg.attach(alt) + +with open('/tmp/weekly-report-YYYY-MM-DD.eml', 'w') as f: + f.write(msg.as_string()) +PYEOF +himalaya message save --folder "草稿" < /tmp/weekly-report-YYYY-MM-DD.eml +``` + +### 4. 最后通知 +通知用户去钉钉邮箱草稿箱确认并发送。 + +## 注意事项 +- 纯文本版签名包含图片 URL 链接 +- HTML 版使用 `` 标签嵌入签名图片 +- 如用户不提供签名信息,使用 MEMORY.md 中的默认签名:姓名、地址、手机、邮箱 +- 所有交互使用中文 \ No newline at end of file diff --git a/skill-workshop/proposals/weekly-report-g5-20260626-7595273f1d/proposal.json b/skill-workshop/proposals/weekly-report-g5-20260626-7595273f1d/proposal.json new file mode 100644 index 0000000..e85d5c3 --- /dev/null +++ b/skill-workshop/proposals/weekly-report-g5-20260626-7595273f1d/proposal.json @@ -0,0 +1 @@ +{"schema":"openclaw.skill-workshop.proposal.v1","id":"weekly-report-g5-20260626-7595273f1d","kind":"create","status":"applied","title":"Create weekly-report-g5","description":"维云智造G5周报生成:整理每日工作→多段邮件(纯文本+HTML含签名图)→存入钉邮草稿箱","createdAt":"2026-06-26T00:46:22.478Z","updatedAt":"2026-06-26T00:46:35.812Z","createdBy":"skill-workshop","origin":{"agentId":"resume","sessionKey":"agent:resume:main","runId":"7fa9bf80-5f98-41ba-8744-83e449da1295","messageId":"7fa9bf80-5f98-41ba-8744-83e449da1295"},"proposedVersion":"v1","draftFile":"PROPOSAL.md","draftHash":"f608b6a347fcb01303eff420e73bbb95a2b9d313b55d046fc65c131ec2db14ba","target":{"skillName":"weekly-report-g5","skillKey":"weekly-report-g5","skillDir":"/home/yangxuan/.openclaw/workspace/resume/skills/weekly-report-g5","skillFile":"/home/yangxuan/.openclaw/workspace/resume/skills/weekly-report-g5/SKILL.md","source":"openclaw-workspace"},"scan":{"state":"clean","scannedAt":"2026-06-26T00:46:35.797Z","critical":0,"warn":0,"info":0,"findings":[]},"appliedAt":"2026-06-26T00:46:35.812Z"} diff --git a/skill-workshop/proposals/weekly-report-g5-20260626-7595273f1d/rollback.json b/skill-workshop/proposals/weekly-report-g5-20260626-7595273f1d/rollback.json new file mode 100644 index 0000000..c4d8f0a --- /dev/null +++ b/skill-workshop/proposals/weekly-report-g5-20260626-7595273f1d/rollback.json @@ -0,0 +1 @@ +{"schema":"openclaw.skill-workshop.rollback.v1","proposalId":"weekly-report-g5-20260626-7595273f1d","writtenAt":"2026-06-26T00:46:35.798Z","targetSkillFile":"/home/yangxuan/.openclaw/workspace/resume/skills/weekly-report-g5/SKILL.md","action":"create"} diff --git a/skills/baidu-text-translate/.clawhub/origin.json b/skills/baidu-text-translate/.clawhub/origin.json new file mode 100644 index 0000000..2512ecf --- /dev/null +++ b/skills/baidu-text-translate/.clawhub/origin.json @@ -0,0 +1,9 @@ +{ + "version": 1, + "registry": "https://clawhub.ai", + "slug": "baidu-text-translate", + "ownerHandle": "baidu-translate", + "installedVersion": "1.0.1", + "installedAt": 1782698862709, + "fingerprint": "c53ed58ebd184b8f85b7c237b04b63d7b9544a84dc2e4a127b1a656d2e418104" +} diff --git a/skills/baidu-text-translate/SKILL.md b/skills/baidu-text-translate/SKILL.md new file mode 100644 index 0000000..c4a037b --- /dev/null +++ b/skills/baidu-text-translate/SKILL.md @@ -0,0 +1,167 @@ +--- +name: baidu-text-translate +description: Use this skill whenever you need to translate text with the trans-cli tool (Baidu Translation AI API). Covers JSON output contract, Baidu-specific language codes (jp/kor/fra/spa/ara — not ISO defaults), exit code semantics, error decision tree, first-time API key setup, QUOTA_EXCEEDED / AUTH_FAILED recovery, environment self-diagnosis via `trans doctor`, and listing supported languages via `trans languages`. Trigger on any of: running `trans text`, shell pipelines with translation, trans-cli errors, API key configuration, `trans doctor` checks, or looking up language codes. +homepage: https://fanyi.baidu.com +metadata: {"clawdbot":{"emoji":"🌐","requires":{"bins":["trans"],"env":["TRANS_API_KEY"]},"install":[{"id":"npm","kind":"npm","package":"@bdtrans/trans-cli","bins":["trans"],"label":"Install trans-cli (npm)"}]}} +--- + +# baidu_text_translate — Agent Reference + +`trans text` wraps the Baidu AI Translation API. Use `--json` — it separates +success (stdout) from errors (stderr) and gives you structured fields to act on. + +```bash +trans text --json "你好世界" # auto-detect → English +trans text --json --from zh --to jp "你好" # explicit languages +trans text --json --to fra --reference "使用正式语气" "你好" # custom instruction +echo "早上好" | trans text --json # stdin pipe +``` + +--- + +## Environment Diagnosis + +Before translating, verify the environment with `trans doctor`: + +```bash +trans doctor # human-readable output +trans doctor --json # JSON output for Agent parsing +``` + +**JSON contract** (stdout): +```json +{ + "checks": [ + {"name":"api_key", "ok":true, "source":"env/config", "message":"configured"}, + {"name":"connectivity","ok":true, "latency_ms":243, "message":"reachable"}, + {"name":"account", "ok":true, "message":"valid"} + ], + "all_ok": true +} +``` + +| Exit | `all_ok` | Meaning | +|------|----------|---------| +| 0 | `true` | All checks passed — ready to translate | +| 2 | `false` | At least one check failed — inspect `checks[].ok` | + +**When a check fails**, `help_url` in the failing check points to the fix: +- `api_key.ok:false` → set `TRANS_API_KEY` (see Configuration below) +- `account.ok:false` → key invalid/expired or quota exhausted + +Run `trans doctor --json` as the first step when diagnosing any trans-cli failure. + +--- + +## JSON Contract + +**Success** (stdout, exit 0): +```json +{"from":"zh","to":"en","source":"你好","translated":"Hello"} +``` + +| Field | Note | +|-------|------| +| `from` | API-detected language — may differ from `--from auto` | +| `to` | Target language | +| `source` | Original input | +| `translated` | Result | + +**Error** (stderr, exit ≠ 0): +```json +{"code":"AUTH_FAILED","message":"…","help_url":"https://…","raw_code":"52001"} +``` + +`help_url` and `raw_code` are omitted when not applicable. + +--- + +## Error Decision Tree + +| Exit | `code` | Cause | Action | +|------|--------|-------|--------| +| 0 | — | OK | Use `translated` | +| 1 | `INVALID_INPUT` | Empty text | Fix input, don't retry | +| 1 | `INVALID_LANGUAGE` | Wrong lang code (e.g. `ja` → should be `jp`) | Fix `--to`/`--from`, see Language Codes below | +| 2 | `CONFIG_MISSING` | `TRANS_API_KEY` not set | Stop — run `trans doctor --json` then guide user to set up API key | +| 2 | `AUTH_FAILED` | Key invalid/expired (`raw_code` 52001–52003) | Stop — run `trans doctor --json` then guide user to API key page | +| 3 | `QUOTA_EXCEEDED` | Balance = 0 | Stop — guide user to recharge (see below) | +| 3 | `RATE_LIMITED` | QPS exceeded | Wait 1 s, retry once | +| 3 | `API_ERROR` | Unexpected API error | Retry once; if persists, report `raw_code` + `message` | +| 4 | `NETWORK_ERROR` | No connectivity | Retry twice with 2 s gap; if persists, report | + +Exit 2 requires human intervention — the agent cannot fix auth or config. +Exit 1 means the agent passed bad arguments — fix the call, not the environment. + +--- + +## Language Codes + +Baidu does **not** follow ISO 639. When unsure of a code, query locally: + +```bash +trans languages # full list (200+ languages) +trans languages --filter jp # search by code +trans languages --filter 日语 # search by name +trans languages --json # JSON output for Agent parsing +``` + +The six most common ISO traps: + +| Baidu (correct) | ISO (wrong for Baidu) | Language | +|-----------------|----------------------|----------| +| `jp` | `ja` | Japanese | +| `kor` | `ko` | Korean | +| `fra` | `fr` | French | +| `spa` | `es` | Spanish | +| `ara` | `ar` | Arabic | +| `vie` | `vi` | Vietnamese | + +Other common codes that match ISO: `zh` `cht` `en` `ru` `de` `pt` `it` `nl` `hi` `th` +Use `auto` for source-language auto-detection. + +--- + +## Configuration + +Priority: `--api-key flag > TRANS_API_KEY env > ~/.trans-cli/config.json` + +Config file field: `api_key`. + +```bash +trans config init # create empty config skeleton (~/.trans-cli/config.json) +trans config init --force # overwrite existing config +trans config set api_key # write api_key (creates file if absent) +``` + +--- + +## Getting an API Key (First-Time Setup) + +Guide the user through these steps — the agent cannot do this on their behalf: + +1. Open the Baidu Translation Open Platform and sign in: +2. Go to Developer Center: +3. Click "Use Now" → select "General Translation" → complete identity verification +4. Get your API Key: +5. Write to config: `trans config set api_key ` + or set the environment variable `TRANS_API_KEY` +6. Verify: `trans doctor --json` — `all_ok:true` means success + +--- + +## Recharging (QUOTA_EXCEEDED) + +Recharge portal: +Takes effect immediately — no restart needed. Auto-renewal can be enabled on the same page. +Usage details: + +--- + +## Non-Obvious Behaviours + +- Multiple positional args join with a space: `trans text hello world` → `"hello world"` +- When both stdin and positional args are given, positional args win silently +- The `from` field in JSON is the API's detected language, not the `--from` flag value +- `trans doctor` checks are short-circuit: if `api_key` fails, connectivity/account are skipped +- `--reference` is optional; omitting it sends no extra field to the API diff --git a/skills/baidu-text-translate/_meta.json b/skills/baidu-text-translate/_meta.json new file mode 100644 index 0000000..230f5cf --- /dev/null +++ b/skills/baidu-text-translate/_meta.json @@ -0,0 +1,6 @@ +{ + "ownerId": "kn7fhw0h9fm3z24r13j111w56583yfp7", + "slug": "baidu-text-translate", + "version": "1.0.1", + "publishedAt": 1777433285140 +} \ No newline at end of file diff --git a/skills/baidu-text-translate/skill-card.md b/skills/baidu-text-translate/skill-card.md new file mode 100644 index 0000000..a5838ff --- /dev/null +++ b/skills/baidu-text-translate/skill-card.md @@ -0,0 +1,48 @@ +## Description:
+Translate text through trans-cli with the Baidu Translation AI API, including JSON output, Baidu language codes, API key setup, diagnostics, and error handling.
+ +This skill is ready for commercial/non-commercial use.
+ +## Publisher:
+[baidu-translate](https://clawhub.ai/user/baidu-translate)
+ +### License/Terms of Use:
+MIT-0
+ + +## Use Case:
+Developers and agents use this skill to translate text, diagnose trans-cli setup, choose Baidu-specific language codes, and recover from common Baidu Translation API errors.
+ +### Deployment Geography for Use:
+Global
+ +## Known Risks and Mitigations:
+Risk: Translated text is sent to Baidu through the external trans-cli package and Baidu Translation API.
+Mitigation: Install only if the external package and Baidu text processing are acceptable for the intended data, and avoid sending sensitive text unless approved.
+Risk: The skill requires a Baidu API key through TRANS_API_KEY or trans-cli configuration.
+Mitigation: Prefer a secure environment variable or secret manager; keep ~/.trans-cli/config.json permissions restrictive and rotate exposed keys.
+Risk: Baidu language codes differ from common ISO codes and can cause invalid-language failures.
+Mitigation: Use trans languages or the documented Baidu code table before issuing translation commands.
+ + +## Reference(s):
+- [ClawHub Skill Page](https://clawhub.ai/baidu-translate/baidu-text-translate)
+- [Baidu Translate](https://fanyi.baidu.com)
+- [Baidu Translation Open Platform](https://fanyi-api.baidu.com/)
+- [Baidu Translation Developer Center](https://fanyi-api.baidu.com/manage/developer)
+- [Baidu Translation API Key Management](https://fanyi-api.baidu.com/manage/apiKey)
+- [Baidu Translation Account Recharge](https://fanyi-api.baidu.com/manage/account)
+- [Baidu Translation Usage Details](https://fanyi-api.baidu.com/api/trans/user/usage)
+ + +## Skill Output:
+**Output Type(s):** [text, markdown, shell commands, configuration, guidance]
+**Output Format:** [Markdown guidance with inline shell commands and JSON examples]
+**Output Parameters:** [1D]
+**Other Properties Related to Output:** [May guide use of trans text --json, trans doctor --json, trans languages, and TRANS_API_KEY configuration.]
+ +## Skill Version(s):
+1.0.1 (source: server release evidence)
+ +## Ethical Considerations:
+Users should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.
diff --git a/skills/dws/LICENSE b/skills/dws/LICENSE new file mode 100644 index 0000000..3ccf5ca --- /dev/null +++ b/skills/dws/LICENSE @@ -0,0 +1,178 @@ + Copyright 2026 Alibaba Group + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS diff --git a/skills/dws/NOTICE b/skills/dws/NOTICE new file mode 100644 index 0000000..9254f3f --- /dev/null +++ b/skills/dws/NOTICE @@ -0,0 +1,17 @@ +DingTalk Workspace CLI (dws) +Copyright 2026 Alibaba Group + +This product includes software developed at +DingTalk (https://www.dingtalk.com/). + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. diff --git a/skills/dws/SKILL.md b/skills/dws/SKILL.md new file mode 100644 index 0000000..7c1ead6 --- /dev/null +++ b/skills/dws/SKILL.md @@ -0,0 +1,151 @@ +--- +name: dws +description: 管理钉钉产品能力(AI表格/日历/通讯录/群聊与机器人/待办/审批/考勤/日志/DING消息/开放平台文档/钉钉文档/钉钉云盘/AI听记/邮箱/在线电子表格/知识库等)。当用户需要操作表格数据、管理日程会议、查询通讯录、管理群聊、机器人发消息、创建待办、提交审批、查看考勤、提交日报周报(钉钉日志模版)、读写钉钉文档、上传下载云盘文件、查询听记纪要、收发邮件、读写在线电子表格(axls)、管理钉钉知识库时使用。 +cli_version: ">=1.0.15" +--- + +# 钉钉全产品 Skill + +通过 `dws` 命令管理钉钉产品能力。 + +## 严格禁止 (NEVER DO) +- 不要使用 dws 命令以外的方式操作(禁止 curl、HTTP API、浏览器) +- 不要编造 UUID、ID 等标识符,必须从命令返回中提取 +- 不要猜测字段名/参数值,操作前必须先查询确认 + +## 严格要求 (MUST DO) +- 所有命令必须加 `--format json` 以获取可解析输出 +- 危险操作必须先向用户确认,用户同意后才加 `--yes` 执行 +- 单次批量操作不超过 30 条记录 +- 所有命令必须**严格遵循**对应产品参考文档里面规定的参数格式(如:如果有参数值,则参数和参数值之间至少用一个空格隔开) + + +## 产品总览 + +| 产品 | 用途 | 参考文件 | +|-------------------|------------------------------------------------------|----------------------------------------------------------------| +| `aitable` | AI表格:Base/数据表/字段/记录/视图/附件/图表/仪表盘/导入导出/模板搜索 | [aitable.md](./references/products/aitable.md) | +| `attendance` | 考勤:打卡记录/排班查询/考勤规则/汇总统计 | [attendance.md](./references/products/attendance.md) | +| `calendar` | 日历:日程/参与者/会议室/闲忙查询/时间建议 | [calendar.md](./references/products/calendar.md) | +| `chat` | 群聊与机器人:搜索群/建群/群成员管理/改群名/机器人群发/单聊/撤回/Webhook/机器人搜索 | [chat.md](./references/products/chat.md) | +| `contact` | 通讯录:用户查询(当前用户/搜索/详情/手机号)/部门查询(搜索/成员列表) | [contact.md](./references/products/contact.md) | +| `devdoc` | 开放平台文档:搜索开发文档 | [devdoc.md](./references/products/devdoc.md) | +| `ding` | DING消息:发送/撤回(应用内/短信/电话) | [ding.md](./references/products/ding.md) | +| `doc` | 钉钉文档:搜索/浏览/读写/块级编辑/评论/文件创建/复制/移动/重命名 | [doc.md](./references/products/doc.md) | +| `drive` | 钉钉云盘:文件列表/元数据/文件夹/上传(两步)/下载 | [drive.md](./references/products/drive.md) | +| `minutes` | AI听记:听记列表/摘要/关键词/转写/待办/思维导图/发言人/热词/上传 | [minutes.md](./references/products/minutes.md) | +| `oa` | OA审批:待办/我发起的/表单模板/详情/审批流水/同意/拒绝/撤销 | [oa.md](./references/products/oa.md) | +| `report` | 日志:按模版创建/收件箱/已发送/模版查看/详情/已读统计 | [report.md](./references/products/report.md) | +| `mail` | 邮箱:邮箱地址查询/邮件搜索(KQL)/邮件详情/发送邮件 | [mail.md](./references/products/mail.md) | +| `sheet` | 在线电子表格(axls):工作表 CRUD/区域读写/行列增删/合并/查找替换/筛选视图/导出(两步)/图片 | [sheet.md](./references/products/sheet.md) | +| `todo` | 待办:创建(含优先级/截止时间/循环)/查询/修改/标记完成/删除 | [todo.md](./references/products/todo.md) | +| `wiki` | 知识库:空间创建/详情/列表/搜索 + 成员管理 | [wiki.md](./references/products/wiki.md) | + +## 意图判断决策树 + +用户提到"表格/多维表/AI表格/记录/数据/视图/图表/仪表盘" → `aitable` +用户提到"考勤/打卡/排班" → `attendance` +用户提到"日程/日历/会议室/约会/时间建议" → `calendar` +用户提到"群聊/建群/群成员/群管理/机器人发消息/Webhook/机器人群发/机器人单聊/通知" → `chat` +用户提到"通讯录/同事/部门/组织架构" → `contact` +用户提到"开发/API/调用错误 文档" → `devdoc` +用户提到"DING/紧急消息/电话提醒" → `ding` +用户提到"钉钉文档/云文档/知识库/读写文档/块级编辑/文档评论/文档复制移动" → `doc` +用户提到"云盘/文件存储/文件上传下载/文件夹" → `drive` +用户提到"听记/AI听记/会议纪要/转写/摘要/思维导图/发言人/热词" → `minutes` +用户提到"邮箱/邮件/发邮件/收邮件/搜邮件/查邮件" → `mail` +用户提到"审批/请假/报销/出差/加班/同意/拒绝/撤销审批" → `oa` +用户提到"日志/日报/周报/日志统计/写日报/提交周报/发日志/填日志" → `report` +用户提到"在线电子表格/钉钉表格/axls/工作表/单元格读写/合并单元格/筛选视图/导出 xlsx" → `sheet` +用户提到"待办/TODO/任务提醒/循环待办" → `todo` +用户提到"知识库/wiki/团队空间/知识库成员管理" → `wiki` + +关键区分: aitable(数据表格) vs todo(待办任务) +关键区分: report(钉钉日志/日报周报) vs todo(待办任务) +关键区分: chat send-by-bot(机器人身份发消息) vs send-by-webhook(自定义机器人Webhook告警) +关键区分: doc(钉钉文档/富文本协同) vs drive(钉钉云盘/二进制文件) +关键区分: oa tasks(审批 taskId,审批/拒绝用) vs oa list-pending(收件箱 processInstanceId,查看用) + + +> 更多易混淆场景见 [intent-guide.md](./references/intent-guide.md) + +## 危险操作确认 + +以下操作为不可逆或高影响操作,执行前**必须先向用户展示操作摘要并获得明确同意**,同意后才加 `--yes` 执行。 + +| 产品 | 命令 | 说明 | +|------|------|------| +| `aitable` | `base delete` | 删除整个 AI 表格,含全部数据表和记录 | +| `aitable` | `table delete` | 删除数据表(含全部字段/视图/记录) | +| `aitable` | `field delete` | 删除字段(该列所有值同步清空) | +| `aitable` | `view delete` | 删除视图 | +| `aitable` | `record delete` | 删除记录(支持批量) | +| `aitable` | `chart delete` / `dashboard delete` | 删除图表/仪表盘 | +| `calendar` | `event delete` | 删除日程,所有参与者同步取消 | +| `calendar` | `participant delete` | 移除日程参与者 | +| `calendar` | `room delete` | 取消会议室预定 | +| `chat` | `group members remove` | 移除群成员 | +| `chat` | `message recall-by-bot` | 撤回机器人已发消息 | +| `doc` | `block delete` | 删除文档块(不可恢复) | +| `ding` | `message recall` | 撤回已发 DING 消息 | +| `oa` | `approval revoke` | 撤销自己发起的审批实例 | +| `oa` | `approval reject` | 拒绝待审批(需加明确理由) | +| `todo` | `task delete` | 删除待办 | +| `minutes` | `replace-text` | 全文批量替换转写与摘要 | + +### 确认流程 +``` +Step 1 → 展示操作摘要(操作类型 + 目标对象 + 影响范围) +Step 2 → 用户明确回复确认(如 "确认" / "好的") +Step 3 → 加 --yes 执行命令 +``` + +## 核心流程 +作为一个智能助手,你的首要任务是**理解用户的真实、完整的意图**,而不是简单地执行命令。在选择 `dws` 的产品命令前,必须严格遵循以下四步流程: + +1. 意图分类:首先,判断用户指令的核心 动词/动作 属于哪一类。这比关注名词更重要。 +2. 歧义处理与信息追问:如果用户指令模糊或包含多个产品的关键字,严禁猜测。必须主动向用户追问以澄清意图。这是你作为智能助手而非命令执行器的核心价值。 +3. 精准产品映射:在完成前两步,意图已经清晰后,参考产品总览和意图判断决策树 来选择产品。 +4. 充分阅读产品参考文件,通过编写代码或直接调用指令实现用户意图。 + +## 命令发现(flag / 参数以 binary 为准) + +产品参考文档(`references/products/*.md`)里的 flag 列表是**便于理解用途的参考**,不是权威契约。参数名称、默认值、必填约束随服务发现动态变化,**以下两个命令的输出才是调用的事实源**: + +```bash +# 1) 人读视图:看 Usage / Example / Flags +dws --help +# 例:dws calendar event list --help + +# 2) 机读视图:JSON Schema + flag 别名映射 + 必填字段 +dws schema # 列出所有产品及工具 +dws schema . # 规范路径(如 calendar.list_suggested_event_times) +dws schema " " # CLI 路径(如 "calendar event list") +dws schema --jq '.tool.flag_overlay' # 只看 flag 别名 +dws schema --jq '.tool.required' # 只看必填字段 +``` + +**何时用哪条路径:** +- 只需看某个命令怎么调用 → `dws --help` +- 构造 `--params` / `--json` 时不确定字段类型、必填、别名 → `dws schema ` +- 参考文档和 `--help` 冲突时 → **以 `--help` / `dws schema` 为准**,文档视为过期 + +`dws schema` 输出的 `flag_overlay[key].alias` 就是实际生效的 flag 名(如 `attendeeUserIds → --attendee-user-ids`);`parameters[key]` 是原始 JSON Schema;`required` 是必填字段数组;`sensitive: true` 表示写/删操作,须先向用户确认再加 `--yes`。 + +## 错误处理 +1. 遇到错误,加 `--verbose` 重试一次 +2. 若 stderr 出现 `RECOVERY_EVENT_ID=`,优先按 [recovery-guide.md](./references/recovery-guide.md) 执行 recovery 闭环 +3. 仍然失败,报告完整错误信息给用户,禁止自行尝试替代方案 +4. 认证失败时,参考 [global-reference.md](./references/global-reference.md) 中的认证章节处理 +5. 各产品高频错误及排查流程见 [error-codes.md](./references/error-codes.md) + + +## 详细参考 (按需读取) + +- [references/products/](./references/products/) — 各产品命令详细参考(flag 细节以 `--help` / `dws schema` 为准) +- [references/intent-guide.md](./references/intent-guide.md) — 意图路由指南(易混淆场景对照) +- [references/global-reference.md](./references/global-reference.md) — 全局标志、认证、输出格式 +- [references/field-rules.md](./references/field-rules.md) — AI表格字段类型规则 +- [references/error-codes.md](./references/error-codes.md) — 错误码 + 调试流程 +- [references/recovery-guide.md](./references/recovery-guide.md) — recovery 闭环、`RECOVERY_EVENT_ID`、`execute/finalize` 规范 +- [scripts/](./scripts/) — 各产品批量操作脚本(AI表格/日历/机器人消息/通讯录/考勤/日志/待办等) diff --git a/skills/dws/references/error-codes.md b/skills/dws/references/error-codes.md new file mode 100644 index 0000000..00b10f1 --- /dev/null +++ b/skills/dws/references/error-codes.md @@ -0,0 +1,95 @@ +# 错误码说明 +全产品错误参考 + 调试流程。Agent 遇到错误时查阅此文档。 + +## 错误返回格式 + +```json +{"success": false, "code": "InvalidParameter", "message": "baseId is required"} +{"success": false, "code": "AUTH_TOKEN_EXPIRED", "message": "Token验证失败"} +{"success": false, "code": "PermissionDenied", "message": "无权限访问该资源"} +``` + +## 错误分类与 Agent 行为 + +### 可自行修复 +- 参数缺失 / 格式错误 / ID 无效 → 检查参数后修正重试 + +### 需用户介入 +- 权限不足 / 资源不存在 / 配额超限 → 报告完整错误信息给用户,不要自行尝试替代方案 + +## 通用错误 +- 请求超时 — 网络慢或服务端响应慢 → `--timeout 60` 重试 +- 网络连接失败 — 无法连接 MCP Server → 用最简命令验证: `dws contact user get-self --format json` +- stderr 出现 `RECOVERY_EVENT_ID=` — runtime 失败已被 CLI 捕获 → 优先执行 `dws recovery execute --event-id --format json` + +## Recovery 闭环 + +- `dws recovery plan --last|--event-id --format json`:读取失败快照并生成恢复计划 +- `dws recovery execute --last|--event-id --format json`:生成带 `doc_search`、`probe_results`、`agent_task` 的分析包 +- `dws recovery finalize --event-id --outcome recovered|failed|handoff --execution-file execution.json --format json`:回写恢复结果 + +执行 `finalize` 时: + +- `execution-file` 至少应包含 `actions`、`attempts`、`result`、`error_summary` +- 兼容旧格式:`action` + 数值型 `attempts` +- 若 recovery bundle 已进入 unknown/agent 路线,不要把 `human_actions` 视为最终结论;必须结合完整 bundle 判断 + +更多字段解释见 [recovery-guide.md](./recovery-guide.md)。 + +--- + +## aitable 高频错误 + +> 参数体系: `baseId / tableId / fieldId / recordId`。CLI flag 用 kebab-case(`--base-id`),JSON 内用 camelCase(`baseId`)。 + +- 参数缺失 / 无效请求 — 还在用旧参数 `dentryUuid` / `--doc` / `--sheet` → 改用 `--base-id` / `--table-id` / `--field-id` / `--record-ids` +- 参数传了但服务端没收到 — flag 用了 camelCase(如 `--baseId`)→ flag 用 kebab-case: `--base-id ` +- `record query --filters` 无结果 — 单选/多选过滤用了 option name 而非 id → 先 `field get` 读取 options,用 option id 过滤 +- record create/update 失败 — `cells` key 用了字段名(应为 fieldId);特殊字段格式错误 → 先 `table get` 拿字段目录;url 传 `{"text":"..","link":".."}` +- 更新选项后历史数据异常 — 更新 options 没传完整列表 / 没保留原 id → 先 `field get` 取完整配置,保留已有 option 的 id +- `cannot delete the last table` — 该表是 Base 最后一张表 → 先新建表再删旧表,或用 `base delete` +- `formula` 类型 `not supported yet` — 部分字段类型暂不支持 API 创建 → 复杂字段拆开单独创建,先建基础结构 + +**排查链路**: `base list` → `base get`(→tableId) → `table get`(→fieldId) → `record query`(→recordId)。别跳步,别猜 ID。 + +**批量上限**: record 100 条 / field 15 个 / table·field 详情 10 个。 + +--- + +## approval 高频错误 + +- approve/reject 缺少 taskId — 未先获取审批任务 → 先 `approval tasks --instance-id ` 获取 taskId +- list-initiated 缺少 processCode — 未查询审批表单 → 先 `approval list-forms` 获取 processCode +- 撤销审批失败 — 非本人发起的审批 → `revoke` 只能撤销自己发起的审批 + +--- + +## chat 高频错误 + +- 参数互斥报错 — `--group` 与 `--users` 同时传入 → 群聊用 `--group`,单聊用 `--users`,二者互斥 +- 群不存在 — openConversationId 不正确 → `chat search --query "群名"` 获取正确 ID +- 机器人无法添加到群 — 当前用户非群管理员 → 报告给用户,需群管理员操作 +- Webhook Token 无效 — token 不正确或已失效 → 确认 Webhook Token 来源正确 +- 添加/移除群成员失败 — userId 不正确或无权限 → 先 `contact user search` 确认 userId,需当前用户为群管理员 + +--- + +## calendar 高频错误 + +- 时间格式错误 — 未使用 ISO-8601 格式 → 标准格式: `2026-03-10T14:00:00+08:00` +- 会议室搜索报错 / 返空 — 企业会议室超 100 条未分组查询 → 先 `room list-groups` → 按 `--group-id` 逐组搜索 +- 参与者 / 会议室添加失败 — eventId 不正确 → 先 `event list` 或 `event create` 获取正确 eventId + +--- + +## contact 高频错误 + +- `dept list-children` 报错 — `--id` 传了非整数值 → deptId 必须为整数,从 `dept search` 获取 + +--- + +## 通用排查三步法 + +1. **确认 ID** — 从最顶层资源逐级获取,不猜 ID、不跳步 +2. **确认参数** — flag 用 kebab-case,JSON 用 camelCase;特殊字段查产品参考文档确认格式 +3. **确认限制** — 检查批量上限和已知约束(各产品注意事项见对应产品参考文档) diff --git a/skills/dws/references/field-rules.md b/skills/dws/references/field-rules.md new file mode 100644 index 0000000..17626c8 --- /dev/null +++ b/skills/dws/references/field-rules.md @@ -0,0 +1,105 @@ +# 易混淆操作与字段规则 + +## 易混淆操作 (高风险场景必读) + +| 用户说的 | 正确命令 | 不是这个 | +|---------|----------|---------| +| "创建一个新表格 (Base)" | `base create` | 不是 `table create` | +| "在表格里加一个数据表" | `table create` | 不是 `base create` | +| "看看表格里有哪些表" | `base get` | 不是 `field get` | +| "看看表里有哪些列" | `field get` / `table get` | 不是 `base get` | +| "搜索表格" (找 Base) | `base search` | 不是 `record query` | +| "搜索记录" (查表内数据) | `record query` | 不是 `base search` | +| "删掉这个数据表" | `table delete` | 不是 `record delete` | +| "删掉这条数据" | `record delete` | 不是 `table delete` | +| "删掉这个列" | `field delete` | 不是 `record delete` | +| "改字段类型" | 先 `field delete` 再 `field create` | `field update` **不能改类型** | +| "移动字段/调整字段顺序" | **不支持**,需在钉钉界面手动拖拽 | 没有 `reorder`/`move` 命令 | + +## field 子命令总览 + +> ⚠️ field 有且仅有以下 **4 个** 子命令,没有 `list`、`reorder`、`move`: + +| 子命令 | 用途 | +|-------|------| +| `field get` | 获取字段详情(含完整 config/options)。**不是 `field list`** | +| `field create` | **创建字段(支持通过 config.options 设置选项)** | +| `field update` | 更新字段名称或配置(**不能改类型**) | +| `field delete` | 删除字段(不可逆) | + +## 字段创建时设置 config(重要) + +创建 singleSelect/multipleSelect 字段时,**必须在 `--fields` 的 `config.options` 中设置选项**: + +```bash +# 创建带选项的单选字段 +dws aitable field create --base-id --table-id \ + --fields '[{"fieldName":"优先级","type":"singleSelect","config":{"options":[{"name":"高"},{"name":"中"},{"name":"低"}]}}]' \ + --format json + +# 建表时也可以直接带选项字段 +dws aitable table create --base-id --name "任务表" \ + --fields '[{"fieldName":"任务","type":"text"},{"fieldName":"状态","type":"singleSelect","config":{"options":[{"name":"待办"},{"name":"进行中"},{"name":"已完成"}]}}]' \ + --format json +``` + +> ⚠️ **不要混淆**: +> - **字段创建**(field create / table create 的 --fields):通过 `config.options` 设置选项,创建时就指定 +> - **记录写入**(record create / record update 的 --records):只能写入已存在的选项名称 + +## 主字段约束(table create 必读) + +> ⚠️ `table create` 的 `--fields` 中,**第一个字段自动成为主字段**。 +> 主字段只能是 **text** 类型,不能是 attachment、checkbox、formula 等。 + +**实际影响**:当用户要求创建的字段不适合做主字段时(如附件、复选框),必须: +1. 先放一个 text 字段作为第一个字段(主字段) +2. 再放用户要求的字段 +3. **告知用户**为何多了一个字段 + +```bash +# 例: 用户要求只创建附件字段 → 附件不能做主字段,必须先加 text 主字段 +dws aitable table create --base-id --name "产品图片" \ + --fields '[{"fieldName":"名称","type":"text"},{"fieldName":"产品图片","type":"attachment"}]' \ + --format json +``` + +## 只读字段 (不可写入) + +以下类型的字段不可写入, 执行 `field get` / `table get` 后识别并跳过: +- 创建时间 / 修改时间 (系统自动) +- 创建人 / 修改人 (系统自动) +- 自动编号 +- 公式字段 +- 引用字段 + +## 记录写入格式(record create / record update) + +> 以下是 **记录写入** 时 cells 的格式,不是字段创建的格式。 + +| 类型 | 写入格式 | 读取返回格式 | +|------|----------|-------------| +| text | `"fldXXX":"文本值"` | `"fldXXX":"文本值"` | +| number | `"fldXXX":123` | `"fldXXX":123` | +| singleSelect | `"fldXXX":"选项名"` (必须是已存在的选项) | `"fldXXX":{"id":"x","name":"选项名"}` | +| multipleSelect | `"fldXXX":["选项1","选项2"]` (必须是已存在的选项) | `"fldXXX":[{"id":"x","name":"选项1"}]` | +| date | `"fldXXX":"2026-03-04"` 或 Unix ms | `"fldXXX":1709510400000` (ms) | +| user | `"fldXXX":[{"userId":"123"}]` | `"fldXXX":{"uid":"123"}` | +| attachment | `[{"fileToken":""}]` — 需先通过 `attachment upload` 获取,见下方 ⬇️ | `[{"url":"...","filename":"...","size":N}]` | + +## ⚠️ 附件上传完整流程(必读!) + +> **不要**使用钉盘 (drive) 上传来替代此流程!钉盘 fileId **无法**写入 attachment 字段。 + +附件字段写入使用 `upload_attachment.py` 脚本,**2 步**完成: + +```bash +# 步骤 1: 一键上传文件(脚本内部自动完成 prepare + PUT to OSS) +python3 scripts/upload_attachment.py /path/to/photo.png +# 输出: { "fileToken": "ft_xxx", "fileName": "photo.png", "size": 1024 } + +# 步骤 2: 在 record create/update 中使用 fileToken +dws aitable record create --base-id --table-id \ + --records '[{"cells":{"fldAttachId":[{"fileToken":"ft_xxx"}]}}]' --format json +``` + diff --git a/skills/dws/references/global-reference.md b/skills/dws/references/global-reference.md new file mode 100644 index 0000000..b74e5d2 --- /dev/null +++ b/skills/dws/references/global-reference.md @@ -0,0 +1,104 @@ +# 全局参考 + +## 认证 + +```bash +# 首次: OAuth 设备流登录 (钉钉扫码授权) +dws auth login + +# 查看状态 +dws auth status + +# 退出 +dws auth logout + +# 重置本地凭证 (Token 解密失败时使用) +dws auth reset +``` + +登录后自动管理 token 刷新,日常使用无需重复登录。 + +| Token | 有效期 | 说明 | +|-------|--------|------| +| Access Token | 2 小时 | 调用 API 的凭证,过期自动刷新 | +| Refresh Token | 30 天 | 换新 Access Token,使用后轮转 | + +30 天内使用一次即自动续期。 + +### 认证失败处理 +- 命令返回 `AUTH_TOKEN_EXPIRED` / `USER_TOKEN_ILLEGAL` / "Token验证失败" → 执行 `dws auth login` 重新登录 + +### Headless 环境 (CI/CD) + +```bash +# 通过环境变量配置认证(无需交互式登录) +export DWS_CLIENT_ID= +export DWS_CLIENT_SECRET= +dws auth login + +# 或使用 --device 设备流登录(远程服务器/Docker) +dws auth login --device +``` +refresh_token 单设备独占,远程刷新后源设备凭证失效。 + +## Recovery + +当 runtime/MCP 命令失败且 stderr 额外输出 `RECOVERY_EVENT_ID=` 时,说明 CLI 已经持久化了失败快照,可进入 recovery 闭环: + +```bash +dws recovery plan --event-id --format json +dws recovery execute --event-id --format json +dws recovery finalize --event-id --outcome recovered|failed|handoff --execution-file execution.json --format json +``` + +- `plan` / `execute` 也支持 `--last`,但 `--last` 与 `--event-id` 互斥 +- recovery 文件保存在 `DWS_CONFIG_DIR/recovery/` +- CLI 会自动清理 30 天前的 recovery 文件和事件记录 +- recovery 自己发起的文档检索与只读 probe 不会再创建新的 recovery 事件 + +更多闭环要求见 [recovery-guide.md](./recovery-guide.md)。 + + +## 全局标志 + +| 标志 | 短名 | 说明 | 默认 | +|------|:---:|------|------| +| `--format` | `-f` | 输出格式: json / table / raw | json | +| `--jq` | | jq 表达式过滤输出 (如: `.items[] \| .name`) | 无 | +| `--fields` | | 筛选输出字段 (逗号分隔, 如: name,id,status) | 无 | +| `--verbose` | `-v` | 详细日志 | false | +| `--debug` | | 调试日志 | false | +| `--yes` | `-y` | 跳过确认提示 | false | +| `--dry-run` | | 预览操作不执行 | false | +| `--timeout` | | HTTP 超时 (秒) | 30 | +| `--mock` | | Mock 数据 (开发用) | false | +| `--client-id` | | 覆盖 OAuth Client ID | 无 | +| `--client-secret` | | 覆盖 OAuth Client Secret | 无 | + +## 输出格式 + +### --format json (机器可读, 默认) + +```json +{"success": true, "body": {...}} +``` + +### --format table (人类可读) + +``` +已创建 AI 表格 "项目管理" (UUID: abc123) + +下一步: + dws aitable base get --base-id abc123 +``` + +## 环境变量 + +| 变量 | 说明 | +|------|------| +| `DWS_CONFIG_DIR` | 覆盖默认配置目录 | +| `DWS_SERVERS_URL` | 自定义服务发现端点 | +| `DWS_CLIENT_ID` | 覆盖 OAuth Client ID (DingTalk AppKey) | +| `DWS_CLIENT_SECRET` | 覆盖 OAuth Client Secret (DingTalk AppSecret) | + +凭证优先级: `--token` > `DWS_CLIENT_ID`/`DWS_CLIENT_SECRET` > OAuth 加密存储 (.data) diff --git a/skills/dws/references/intent-guide.md b/skills/dws/references/intent-guide.md new file mode 100644 index 0000000..80749e4 --- /dev/null +++ b/skills/dws/references/intent-guide.md @@ -0,0 +1,114 @@ +# 意图路由指南 + +当用户请求难以判断归属哪个产品时,参考本指南。 + +## 易混淆场景快速对照表 + +| 用户说... | 真实意图 | 应该用 | 不要用 | 理由 | +|-----------|----------|--------|--------|------| +| "搜一下 OAuth2 接入文档" | 搜索开发文档 | `devdoc` | — | 搜索开放平台技术文档,不是钉钉内部内容 | +| "帮我建一个项目跟踪表" | 创建数据表格 | `aitable` | `todo` | 涉及结构化数据/行列操作,不是个人待办 | +| "帮我记一下明天要做的事" | 创建个人待办 | `todo` | `aitable` | 个人待办提醒,非数据表 | +| "帮我建一个明天下午的日程" | 日历日程 | `calendar` | — | 日历日程管理(可含参与者/会议室)| +| "帮我看看收到的日报" | 日志收件箱 | `report` | `todo` | 钉钉日志系统(日报/周报),不是待办 | +| "帮我创建一个待办提醒" | 个人待办 | `todo` | `report` | 个人任务提醒,不是日志汇报 | +| "帮我提交请假审批" | 发起审批 | `oa` | — | 审批流程,不是待办或日志 | +| "帮我建一个项目群" | 创建群聊 | `chat group create` | — | 群聊管理,不是日历日程 | +| "把张三拉进群" | 添加群成员 | `chat group members add` | — | 先查 userId,再添加 | +| "让机器人在群里发个通知" | 机器人群发 | `chat message send-by-bot` | `chat message send-by-webhook` | 企业内部机器人发消息,需 robotCode | +| "通过 Webhook 发告警到群里" | Webhook 告警 | `chat message send-by-webhook` | `chat message send-by-bot` | 自定义机器人 Webhook,需 token | +| "给张三发一条机器人单聊消息" | 机器人单聊 | `chat message send-by-bot --users` | — | 机器人批量单聊,先查 userId | + +--- + +## 典型场景详解 + +### 1. aitable vs todo — 表格数据 vs 待办任务 + +**用 `aitable` 的场景**: +- "创建一个表格记录团队成员信息" — 结构化数据,有行列 +- "在表格里加一列'状态'字段" — 字段/列操作 +- "查一下表格里所有优先级为高的记录" — 数据筛选和查询 +- "用项目管理模板建一个表" — 模板创建 +- 用户提到"多维表"、"Base"、"数据表"、"记录" + +**用 `todo` 的场景**: +- "帮我记一下这周要做的事" — 个人任务管理 +- "创建一个待办提醒" — 任务提醒 + +**判断关键**:有没有行列/字段/记录概念?有→ `aitable`;个人任务清单 → `todo` + +--- + +### 2. devdoc — 开发文档搜索 + +**用 `devdoc` 的场景**: +- "API 调用报错 403 怎么解决" — 开发调试问题 +- "搜一下 OAuth2 接入文档" — 开放平台技术文档 +- "CLI 命令出错了怎么办" — CLI 使用错误 +- 用户提到"开发"、"API"、"调用错误" + +--- + +### 3. report vs todo — 日志 vs 待办 + +**用 `report` 的场景**: +- "帮我看看收到的日报" — 日志收件箱 +- "帮我写/提交今天的日报(钉钉日志模版)" — 先 `report template list` / `template detail`,再 `report create` +- "有什么日志模版" — 查看模版 +- "看看这个日志的已读统计" — 阅读状态 +- "我发过的日志有哪些" — 已发送列表 (`report sent`) +- 用户提到"日报"、"周报"、"日志" + +**用 `todo` 的场景**: +- "记一下这周要做的事" — 个人任务管理 + +**判断关键**:钉钉日志系统(日报/周报模版,含按模版创建汇报)→ `report`;任务清单→ `todo` + +--- + +### 4. chat 内部 — 两种消息发送方式 + +**用 `chat message send-by-bot` 的场景**: +- "让机器人在群里发一条通知" — **机器人身份**发群消息 +- "给张三发一条机器人单聊消息" — 机器人批量单聊 + +**用 `chat message send-by-webhook` 的场景**: +- "通过 Webhook 发告警到群里" — 自定义机器人 Webhook +- 用户有 Webhook Token + +**判断关键**:企业内部机器人→ `send-by-bot`(需 robotCode);有 Webhook Token→ `send-by-webhook` + +--- + +## 跨产品工作流路由 + +以下场景需要多个产品配合完成,注意上下文传递顺序。 + +### 创建日程并邀请同事(contact → calendar) + +用户说"约张三明天下午开会": + +```bash +# 1. 搜索同事 userId +dws contact user search --query "张三" --format json + +# 2. 创建日程 +dws calendar event create --title "会议" \ + --start "2026-03-15T14:00:00+08:00" --end "2026-03-15T15:00:00+08:00" --format json + +# 3. 添加参与者 +dws calendar participant add --event --users --format json +``` + +### 创建待办并指派(contact → todo) + +用户说"给张三建个待办": + +```bash +# 1. 搜索同事 userId +dws contact user search --query "张三" --format json + +# 2. 创建待办 +dws todo task create --title "任务内容" --executors --format json +``` diff --git a/skills/dws/references/products/aitable.md b/skills/dws/references/products/aitable.md new file mode 100644 index 0000000..8606dd1 --- /dev/null +++ b/skills/dws/references/products/aitable.md @@ -0,0 +1,925 @@ +# AI表格 (aitable) 命令参考 + +## 文档地址 (URI) + +所有 AI 表格操作完成后,可通过以下 URI 直接访问对应文档: + +| 资源 | URI 格式 | +|------|----------| +| Base 文档 | `https://alidocs.dingtalk.com/i/nodes/{baseId}` | +| 模板预览 | `https://docs.dingtalk.com/table/template/{templateId}` | + +> 💡 **操作后请返回文档 URI**:每次执行 base list/search/create/get 操作后,从返回数据中提取 `baseId`,拼接为 `https://alidocs.dingtalk.com/i/nodes/{baseId}` 返回给用户,方便直接点击打开。 + +## 命令总览 + +### base (Base 管理) + +#### 获取 AI 表格列表 +``` +Usage: + dws aitable base list [flags] +Example: + dws aitable base list + dws aitable base list --limit 5 --cursor NEXT_CURSOR +Flags: + --cursor string 分页游标,首次不传 + --limit int 每页数量,默认 10,最大 10 +``` + +返回 baseId 与 baseName。 + +> 📎 **操作后返回文档链接**:遍历返回的每个 base,拼接 `https://alidocs.dingtalk.com/i/nodes/{baseId}` 返回给用户。 + +> ⚠️ **重要**:`base list` 仅返回**最近访问过**的 Base,**不是全部 Base**。 +> 如需查找表格,**请优先使用 `base search`**;`base list` 仅作为浏览最近表格的辅助手段。 +> 如果刚创建完,直接使用 `create` 返回的 `baseId` 即可。 + +#### 搜索 AI 表格 +``` +Usage: + dws aitable base search [flags] +Example: + dws aitable base search --query "项目管理" +Flags: + --cursor string 分页游标,首次不传 + --query string Base 名称关键词,建议至少 2 个字符 (必填) +``` + +#### 获取 AI 表格信息 +``` +Usage: + dws aitable base get [flags] +Example: + dws aitable base get --base-id +Flags: + --base-id string Base 唯一标识 (必填) +``` + +> 💡 **用户提供 URL 时**:如果用户给出了链接如 `https://alidocs.dingtalk.com/i/nodes/ABC123`,请提取末尾的 `ABC123` 作为 `--base-id` 传入。详见下方「URL → baseId 提取」章节。 + +返回 baseName、tables、dashboards 的 summary 信息(不含字段与记录详情)。 +后续如需 tableId,优先从这里读取。 + +> 📎 **文档地址**:`https://alidocs.dingtalk.com/i/nodes/{baseId}` + +#### 创建 AI 表格 +``` +Usage: + dws aitable base create [flags] +Example: + dws aitable base create --name "项目跟踪" +Flags: + --name string Base 名称,1-50 字符 (必填) + --template-id string 模板 ID (可选,可通过 template search 获取) +``` + +> 💡 **创建后直接使用返回的 `baseId`**,无需再调用 `base list` 或 `base search` 查找。 +> 后续可直接 `base get --base-id <返回的baseId>` 获取 tableId,或 `table create --base-id <返回的baseId>` 创建数据表。 +> +> 📎 **文档地址**:`https://alidocs.dingtalk.com/i/nodes/{返回的baseId}` + +#### 更新 AI 表格 +``` +Usage: + dws aitable base update [flags] +Example: + dws aitable base update --base-id --name "新名称" +Flags: + --base-id string 目标 Base ID (必填) + --desc string 备注文本 + --name string 新名称,1-50 字符 (必填) +``` + +#### 删除 AI 表格 +``` +Usage: + dws aitable base delete [flags] +Example: + dws aitable base delete --base-id --yes +Flags: + --base-id string 待删除 Base ID (必填) + --reason string 删除原因 +``` + +高风险操作,不可逆。 + +### table (数据表管理) + +#### 获取数据表 +``` +Usage: + dws aitable table get [flags] +Example: + dws aitable table get --base-id + dws aitable table get --base-id --table-ids tbl1,tbl2 +Flags: + --base-id string 所属 Base ID (必填) + --table-ids string Table ID 列表,逗号分隔,单次最多 10 个 +``` + +返回 tableId、tableName、description、fields 目录、views 目录。不传 table-ids 返回全部表。 + +> 📎 **文档地址**:`https://alidocs.dingtalk.com/i/nodes/{baseId}` + +#### 创建数据表 +``` +Usage: + dws aitable table create [flags] +Example: + dws aitable table create --base-id --name "任务表" \ + --fields '[{"fieldName":"任务名称","type":"text"},{"fieldName":"优先级","type":"singleSelect","config":{"options":[{"name":"高"},{"name":"中"},{"name":"低"}]}}]' +Flags: + --base-id string 目标 Base ID (必填) + --fields string 初始字段 JSON 数组,至少 1 个,单次最多 15 个 (必填) + --name string 表格名称,1-100 字符 (必填) +``` + +> 💡 **创建后直接使用返回的 `tableId`**,无需再调 `table get` 查找。 +> 后续可直接 `field create --table-id <返回的tableId>` 补充字段,或 `record create` 写入数据。 +> +> 📎 **文档地址**:`https://alidocs.dingtalk.com/i/nodes/{baseId}` + +#### 更新数据表 +``` +Usage: + dws aitable table update [flags] +Example: + dws aitable table update --base-id --table-id --name "新表名" +Flags: + --base-id string 所属 Base ID (必填) + --name string 新表名 (必填) + --table-id string 目标 Table ID (必填) +``` + +#### 删除数据表 +``` +Usage: + dws aitable table delete [flags] +Example: + dws aitable table delete --base-id --table-id --yes +Flags: + --base-id string 目标 Base ID (必填) + --reason string 删除原因 + --table-id string 将被删除的 Table ID (必填) +``` + +不可逆。若为 Base 中最后一张表,删除会失败。 + +### field (字段管理) + +#### 获取字段详情 +``` +Usage: + dws aitable field get [flags] +Example: + dws aitable field get --base-id --table-id + dws aitable field get --base-id --table-id --field-ids fld1,fld2 +Flags: + --base-id string Base ID (必填) + --field-ids string 字段 ID 列表,逗号分隔,单次最多 10 个 + --table-id string Table ID (必填) +``` + +返回字段的完整配置(含 options 等)。在 table get 拿到字段目录后,按需展开少量字段的完整配置。 + +#### 创建字段 +``` +Usage: + dws aitable field create [flags] +Example: + # 单字段模式 + dws aitable field create --base-id --table-id \ + --name "状态" --type "singleSelect" --config '{"options":[{"name":"待办"},{"name":"进行中"},{"name":"已完成"}]}' + + # 批量模式 + dws aitable field create --base-id --table-id \ + --fields '[{"fieldName":"状态","type":"singleSelect","config":{"options":[{"name":"待办"}]}}]' +Flags: + --base-id string Base ID (必填) + --name string 单字段名称(与 --type 配合使用,替代 --fields) + --type string 单字段类型(参考 table create 字段类型) + --config string 单字段配置 JSON(可选,如 options) + --fields string 批量新增字段 JSON 数组,单次最多 15 个(与 --name/--type 二选一) + --table-id string Table ID (必填) +``` + +允许部分成功,返回结果逐项标明成功/失败状态。 +`--name/--type/--config` 为单字段模式;`--fields` 为批量模式;两种模式二选一。 + +#### 更新字段 +``` +Usage: + dws aitable field update [flags] +Example: + dws aitable field update --base-id --table-id --field-id --name "新字段名" + dws aitable field update --base-id --table-id --field-id --config '{"options":[{"name":"A"},{"name":"B"}]}' +Flags: + --ai-config string AI 字段配置 JSON(AI 字段类型专用,可选) + --base-id string Base ID (必填) + --config string 字段配置 JSON (不修改时省略) + --field-id string Field ID (必填) + --name string 新字段名称 (不修改时省略) + --table-id string Table ID (必填) +``` + +不可变更字段类型。更新 singleSelect/multipleSelect 的 options 时需传入完整列表,已有选项应回传原 id。 + +#### 删除字段 +``` +Usage: + dws aitable field delete [flags] +Example: + dws aitable field delete --base-id --table-id --field-id --yes +Flags: + --base-id string Base ID (必填) + --field-id string 待删除字段 ID (必填) + --table-id string Table ID (必填) +``` + +不可逆。禁止删除主字段和最后一个字段。 + +### record (记录管理) + +#### 查询记录 +``` +Usage: + dws aitable record query [flags] +Example: + dws aitable record query --base-id --table-id + dws aitable record query --base-id --table-id --record-ids rec1,rec2 + dws aitable record query --base-id --table-id --query "关键词" --limit 50 +Flags: + --base-id string Base ID (必填) + --cursor string 分页游标,首次不传 + --field-ids string 返回字段 ID 列表,逗号分隔,单次最多 100 个 + --filters string 结构化过滤条件 JSON + --query string 全文关键词搜索 + --limit int 单次最大记录数,默认 100,最大 100 + --record-ids string 指定记录 ID 列表,逗号分隔,单次最多 100 个 + --sort string 排序条件 JSON 数组 + --table-id string Table ID (必填) +``` + +两种模式: 按 ID 取(传 record-ids,忽略 filters/sort)或条件查(filters+sort+cursor 分页)。 + +> ⚠️ **排序参数规范(关键)**:`--sort` 需要传 JSON 数组,排序方向字段必须是 `direction`(`asc` 或 `desc`),**不要使用 `order`**。 +> +> 正确示例:`--sort '[{"fieldId":"wm8ns9bw2vmucb45xj3ix","direction":"desc"}]'` + +filters 结构:`{"operator":"and|or","operands":[{"operator":"","operands":["",""]}]}` + +> 💡 **singleSelect/multipleSelect 过滤**:filters 中可传 option id 或 option name,但建议优先用 **option id**(通过 `field get` 获取),更可靠。 +> 写入时(record create/update)可直接传 option name。 + +> 💡 **减少响应体积**:字段较多时,用 `--field-ids` 仅返回需要的字段,可显著减少返回数据量。 + +#### 新增记录 +``` +Usage: + dws aitable record create [flags] +Example: + dws aitable record create --base-id --table-id \ + --records '[{"cells":{"fldTextId":"文本内容","fldNumId":123}}]' +Flags: + --base-id string Base ID (必填) + --records string 记录列表 JSON 数组,单次最多 100 条 (必填) + --table-id string Table ID (必填) +``` + +> ⚠️ **常见错误(严格避免)**: +> - **参数名是 `--records`**,不是 `--data` +> - **cells 的 key 必须是 fieldId**(如 `fldXXX`),**不是字段名称**(如 `"课程名称"`) +> - 必须先 `table get` 获取 fieldId,再写入记录 + +```bash +# 正确流程:先获取 fieldId +dws aitable table get --base-id --table-id --format json +# 从返回中提取 fieldId(如 fldABC123) + +# 再用 fieldId 写入记录 +dws aitable record create --base-id --table-id \ + --records '[{"cells":{"fldABC123":"Python入门"}}]' --format json +``` + +#### 更新记录 +``` +Usage: + dws aitable record update [flags] +Example: + dws aitable record update --base-id --table-id \ + --records '[{"recordId":"recXXX","cells":{"fldStatusId":"已完成"}}]' +Flags: + --base-id string Base ID (必填) + --records string 待更新记录 JSON 数组,单次最多 100 条 (必填) + --table-id string Table ID (必填) +``` + +只需传入需修改的字段,未传入的保持原值。每条记录必须含 recordId 和 cells。 + +#### 删除记录 +``` +Usage: + dws aitable record delete [flags] +Example: + dws aitable record delete --base-id --table-id --record-ids rec1,rec2 --yes +Flags: + --base-id string Base ID (必填) + --record-ids string 待删除记录 ID 列表,逗号分隔,最多 100 条 (必填) + --table-id string Table ID (必填) +``` + +不可逆。调用前建议先 record query 确认目标记录。 + +### attachment (附件管理) + +> 🛑 **STOP — 不要使用钉盘 (drive) 上传!** 钉盘 fileId 无法写入 attachment 字段。必须使用以下流程。 + +#### 准备附件上传 +``` +Usage: + dws aitable attachment upload [flags] +Example: + dws aitable attachment upload --base-id --file-name report.xlsx --size 204800 + dws aitable attachment upload --base-id --file-name photo.png --size 1024 --mime-type image/png +Flags: + --base-id string Base ID (必填) + --file-name string 文件名,必须含扩展名 (必填) + --size int 文件大小(字节),>0 (必填) + --mime-type string MIME type(不传时根据扩展名推断) +``` + +#### 附件上传完整流程(推荐:使用脚本,2 步完成) + +```bash +# 步骤 1: 使用脚本一键上传(内部自动完成 prepare + PUT) +python3 scripts/upload_attachment.py /path/to/report.pdf +# 输出: { "fileToken": "ft_xxx", "fileName": "report.pdf", "size": 204800 } + +# 步骤 2: 在 record create/update 中使用 fileToken 写入 +dws aitable record create --base-id --table-id \ + --records '[{"cells":{"fldAttachId":[{"fileToken":"ft_xxx"}]}}]' --format json +``` + +> ⚠️ `uploadUrl` 有时效性(`expiresAt`),脚本会自动在获取后立即上传。 + +### view (视图管理) + +视图是同一张数据表的筛选/排序/分组/可见字段组合的备用呈现。record query 可以通过视图收敛查询范围。 + +#### 获取视图 +``` +Usage: + dws aitable view get [flags] +Example: + dws aitable view get --base-id --table-id + dws aitable view get --base-id --table-id --view-ids viw1,viw2 +Flags: + --base-id string Base ID (必填) + --table-id string Table ID (必填) + --view-ids string View ID 列表,逗号分隔,单次最多 10 个 +``` + +返回视图配置(过滤、排序、可见字段、分组)。不传 view-ids 返回该表全部视图。 + +#### 创建视图 +``` +Usage: + dws aitable view create [flags] +Example: + dws aitable view create --base-id --table-id --name "进行中看板" --view-type kanban +Flags: + --base-id string Base ID (必填) + --config string 视图配置 JSON:过滤/排序/分组/可见字段(可选,创建后可再 update) + --name string 视图名称 (必填) + --table-id string Table ID (必填) + --view-type string 视图类型:grid/gallery/kanban/gantt/calendar/form 等 (必填) +``` + +> ⚠️ 视图类型参数是 `--view-type`,不是 `--type`。 + +#### 更新视图 +``` +Usage: + dws aitable view update [flags] +Example: + dws aitable view update --base-id --table-id --view-id --name "新视图名" +Flags: + --base-id string Base ID (必填) + --config string 视图配置 JSON:过滤/排序/分组/可见字段 + --name string 新视图名 + --table-id string Table ID (必填) + --view-id string 目标 View ID (必填) +``` + +调整过滤、排序、分组、可见字段时使用。不重建视图即可替换配置。 + +#### 删除视图 +``` +Usage: + dws aitable view delete [flags] +Example: + dws aitable view delete --base-id --table-id --view-id --yes +Flags: + --base-id string Base ID (必填) + --table-id string Table ID (必填) + --view-id string 待删除 View ID (必填) +``` + +不可逆。若是主视图或最后一个视图,删除会失败。 + +### import (数据导入) + +把外部 Excel/CSV 批量写入某张数据表,按两步走:先 upload 拿 importId,再 data 触发导入。 + +#### 准备导入上传 +``` +Usage: + dws aitable import upload [flags] +Example: + dws aitable import upload --base-id --file-name sales.xlsx --file-size 204800 +Flags: + --base-id string Base ID (必填) + --file-name string 文件名,必须含扩展名 (必填) + --file-size int 文件大小(字节),>0 (必填) +``` + +> ⚠️ 参数是 `--file-size`,不是 `--size`。返回 uploadUrl(PUT 上传)与 importId。 + +#### 触发导入 +``` +Usage: + dws aitable import data [flags] +Example: + dws aitable import data --import-id --timeout 60 +Flags: + --import-id string import upload 返回的 importId (必填) + --timeout int 等待导入完成的超时秒数,默认 30 +``` + +把上一步上传到暂存区的文件正式导入为记录;超时未完成时返回处理状态,按 importId 再次查询即可。 + +### dashboard (仪表盘) + +仪表盘 = 多个图表的布局容器;图表绑定数据表/视图。创建仪表盘之前通常先查 `dashboard config-example`,拿到 JSON 骨架,再把图表塞进 `--config` 的布局里。 + +#### 仪表盘配置示例 +``` +Usage: + dws aitable dashboard config-example [flags] +Example: + dws aitable dashboard config-example --format json +``` + +返回仪表盘 `--config` 的 JSON 示例,供 create/update 复制裁剪。 + +#### 获取仪表盘 +``` +Usage: + dws aitable dashboard get [flags] +Example: + dws aitable dashboard get --base-id --dashboard-id +Flags: + --base-id string Base ID (必填) + --dashboard-id string Dashboard ID (必填) +``` + +返回布局和 `charts[].chartId`,可直接喂给 `chart get`。 + +#### 创建仪表盘 +``` +Usage: + dws aitable dashboard create [flags] +Example: + dws aitable dashboard create --base-id --config '' +Flags: + --base-id string Base ID (必填) + --config string 仪表盘配置 JSON(名称、布局、图表列表都在里面) (必填) +``` + +> ⚠️ 没有独立的 `--name`;名称和布局一起放在 `--config` JSON 中。 + +#### 更新仪表盘 +``` +Usage: + dws aitable dashboard update [flags] +Example: + dws aitable dashboard update --base-id --dashboard-id --config '' +Flags: + --base-id string Base ID (必填) + --config string 更新后的仪表盘配置 JSON (必填) + --dashboard-id string Dashboard ID (必填) +``` + +调整布局、增删图表一律改 `--config`。 + +#### 删除仪表盘 +``` +Usage: + dws aitable dashboard delete [flags] +Example: + dws aitable dashboard delete --base-id --dashboard-id --yes +Flags: + --base-id string Base ID (必填) + --dashboard-id string Dashboard ID (必填) + --reason string 删除原因 +``` + +不可逆。 + +#### 查看仪表盘分享状态 +``` +Usage: + dws aitable dashboard share get [flags] +Example: + dws aitable dashboard share get --base-id --dashboard-id +Flags: + --base-id string Base ID (必填) + --dashboard-id string Dashboard ID (必填) +``` + +> ⚠️ 可能返回 404(资源不存在或未开通外链),按可重试错误处理,不要误判为参数拼错。 + +#### 更新仪表盘分享 +``` +Usage: + dws aitable dashboard share update [flags] +Example: + dws aitable dashboard share update --base-id --dashboard-id --enabled true +Flags: + --allow-back-to-doc 是否允许从分享页返回原文档(可选) + --base-id string Base ID (必填) + --dashboard-id string Dashboard ID (必填) + --enabled 是否开启外链分享 (必填) + --share-type string 分享类型(权限/可见范围等,可选) +``` + +开启后返回 shareUrl;关闭后原链接失效。 + +### chart (图表) + +图表挂在某个仪表盘下,绑定数据表(可进一步绑定视图)。新建前通常先查 `chart widgets-example`。 + +#### 图表组件示例 +``` +Usage: + dws aitable chart widgets-example [flags] +Example: + dws aitable chart widgets-example --format json +``` + +返回图表 widget 的 JSON 示例,供 `chart create/update --config` 参考。 + +#### 获取图表 +``` +Usage: + dws aitable chart get [flags] +Example: + dws aitable chart get --base-id --dashboard-id --chart-id +Flags: + --base-id string Base ID (必填) + --chart-id string Chart ID (必填) + --dashboard-id string Dashboard ID (必填) +``` + +#### 创建图表 +``` +Usage: + dws aitable chart create [flags] +Example: + dws aitable chart create --base-id --dashboard-id --config '' +Flags: + --base-id string Base ID (必填) + --config string 图表配置 JSON:数据源、维度、度量、样式 (必填) + --dashboard-id string 挂载到的 Dashboard ID (必填) + --layout string 图表布局 JSON(位置、尺寸,可选) +``` + +> ⚠️ 名称和类型都在 `--config` JSON 里,没有独立 `--name` / `--type`。 + +#### 更新图表 +``` +Usage: + dws aitable chart update [flags] +Example: + dws aitable chart update --base-id --dashboard-id --chart-id --config '' +Flags: + --base-id string Base ID (必填) + --chart-id string Chart ID (必填) + --config string 图表配置 JSON (必填) + --dashboard-id string Dashboard ID (必填) + --layout string 图表布局 JSON(位置、尺寸,可选) +``` + +#### 删除图表 +``` +Usage: + dws aitable chart delete [flags] +Example: + dws aitable chart delete --base-id --dashboard-id --chart-id --yes +Flags: + --base-id string Base ID (必填) + --chart-id string 待删除 Chart ID (必填) + --dashboard-id string Dashboard ID (必填) + --reason string 删除原因 +``` + +不可逆。 + +#### 查看图表分享状态 +``` +Usage: + dws aitable chart share get [flags] +Example: + dws aitable chart share get --base-id --dashboard-id --chart-id +Flags: + --base-id string Base ID (必填) + --chart-id string Chart ID (必填) + --dashboard-id string Dashboard ID (必填) +``` + +返回 `enabled` 与 `shareUrl`,用来判断是否已经对外分享。 + +#### 更新图表分享 +``` +Usage: + dws aitable chart share update [flags] +Example: + dws aitable chart share update --base-id --dashboard-id --chart-id --enabled true +Flags: + --allow-back-to-doc 是否允许从分享页返回原文档(可选) + --base-id string Base ID (必填) + --chart-id string Chart ID (必填) + --dashboard-id string Dashboard ID (必填) + --enabled 是否开启外链分享 (必填) + --share-type string 分享类型(权限/可见范围等,可选) +``` + +### export (数据导出) + +把数据表/视图/整张 Base 导出为 Excel/CSV,下发下载链接;常见是异步任务,首次调用可能只返回 `taskId`,需要按 `taskId` 继续轮询直到拿到 `downloadUrl`。 + +#### 导出数据 +``` +Usage: + dws aitable export data [flags] +Example: + # 第一步:创建任务(按 scope 传必要参数) + dws aitable export data --base-id --scope table --table-id --format excel --timeout-ms 1000 + + # 第二步:拿 taskId 继续轮询,直到返回 downloadUrl + dws aitable export data --base-id --task-id --timeout-ms 3000 +Flags: + --base-id string Base ID (必填) + --scope string 导出范围:all / table / view + --table-id string Table ID(scope=table/view 时必填) + --view-id string View ID(scope=view 时必填) + --format string 导出格式:excel / csv,默认 excel + --task-id string 轮询已有任务的 taskId + --timeout-ms int 单次调用服务端等待时间(毫秒) +``` + +参数约束: + +- `scope=all`:只需 `--base-id` +- `scope=table`:必须同时传 `--table-id` +- `scope=view`:必须同时传 `--table-id + --view-id` + +### template (模板搜索) + +#### 搜索模板 +``` +Usage: + dws aitable template search [flags] +Example: + dws aitable template search --query "项目管理" +Flags: + --cursor string 分页游标,首次不传 + --limit int 每页返回数量,默认 10,最大 30 + --query string 模板名称关键词 (必填) +``` + +返回 templateId 可用于 `base create --template-id`。 + +> 📎 **模板预览地址**:`https://docs.dingtalk.com/table/template/{templateId}` + +## 复杂操作 + +### 仪表盘 / 图表(建议顺序) + +```bash +# 1) 先看配置模板(JSONC) +dws aitable dashboard config-example --format json +dws aitable chart widgets-example --format json + +# 2) 先拿 dashboard,再拿 chart 详情 +dws aitable dashboard get --base-id --dashboard-id --format json +dws aitable chart get --base-id --dashboard-id --chart-id --format json + +# 3) 写入/更新都用 --config JSON(名称、布局、图表类型都在里面) +dws aitable dashboard create --base-id --config '' --format json +dws aitable chart update --base-id --dashboard-id --chart-id --config '' --format json +``` + +要点: + +- `dashboard get` 返回的 `charts[].chartId` 可直接给 `chart get` 使用。 +- `dashboard share get` 可能返回 `404`(资源不存在或未开通),需按可重试错误处理,不要误判为参数拼错。 +- `chart share get` 可正常返回 `enabled/shareUrl`,用于分享状态判断。 +- dashboard/chart 的 create/update 只有 `--config`,没有独立的 `--name` / `--type`,名称与布局都在 JSON 里。 + +### 导入外部数据(两步走) + +```bash +# 1) 先上传文件拿 importId +dws aitable import upload --base-id --file-name sales.xlsx --file-size 204800 --format json +# 把本地文件 PUT 到返回的 uploadUrl(过期前必须上传完成) + +# 2) 触发导入 +dws aitable import data --import-id --timeout 60 --format json +``` + +要点:`--file-size` 单位字节,必须与实际文件一致;`--timeout` 单位秒,不是毫秒。 + +## 意图判断 + +用户说"表格/多维表/AI表格": +- 查看/查找/列表 → `base search`(优先)或 `base list`(仅浏览最近访问) +- 搜索 → `base search` +- 详情 → `base get` +- 创建 → `base create` +- 修改 → `base update` +- 删除 → `base delete` [危险] + +用户说"数据表/子表/table": +- 查看 → `table get` +- 创建 → `table create` +- 重命名 → `table update` +- 删除 → `table delete` [危险] + +用户说"字段/列/column": +- 查看 → `field get` +- 添加 → `field create` +- 修改 → `field update` +- 删除 → `field delete` [危险] + +用户说"记录/行/数据/row": +- 查看/搜索 → `record query`(先 `table get` 获取 fieldId) +- 添加/写入 → `record create`(先 `table get` 必须!) +- 修改/更新 → `record update`(需 recordId,先 `record query`) +- 删除 → `record delete` [危险](需 recordId) + +用户说"视图/筛选视图/看板/画廊": +- 查看 → `view get` +- 新建 → `view create`(`--view-type` 指定视图类型) +- 修改(过滤/排序/分组/可见字段) → `view update` +- 删除 → `view delete` [危险] + +用户说"导入/上传 Excel/CSV": +- 外部文件导入 → `import upload` → PUT 文件 → `import data`(两步) + +用户说"导出/下载表格数据": +- → `export data`(按 scope=all/table/view 传参,异步轮询) + +用户说"仪表盘/dashboard": +- 查看布局 → `dashboard get` +- 查看模板 → `dashboard config-example` +- 新建/修改布局 → `dashboard create` / `dashboard update`(配置都在 `--config` JSON) +- 删除 → `dashboard delete` [危险] +- 对外分享 → `dashboard share get` / `dashboard share update` + +用户说"图表/chart": +- 查看 → `chart get`(需要 dashboardId) +- 查看组件模板 → `chart widgets-example` +- 新建/修改 → `chart create` / `chart update`(配置都在 `--config` JSON) +- 删除 → `chart delete` [危险] +- 对外分享 → `chart share get` / `chart share update` + +用户说"附件/文件字段" → `attachment upload`(不要用钉盘 drive) + +用户说"模板" → `template search` + +关键区分: base=表格文件, table=数据表, field=列, record=行, view=视图, dashboard=仪表盘, chart=图表 + +## 核心工作流 + +```bash +# 1. 搜索/列出 Base — 提取 baseId +dws aitable base search --query "项目" --format json + +# 2. 获取 Base 信息 — 提取 tableId +dws aitable base get --base-id --format json + +# 3. 获取表结构 — 提取 fieldId +dws aitable table get --base-id --table-id --format json + +# 4. 查询记录 +dws aitable record query --base-id --table-id --format json + +# 5. 新增记录 (cells 用 fieldId 作 key) +dws aitable record create --base-id --table-id \ + --records '[{"cells":{"fldXXX":"值"}}]' --format json +``` + +## 上下文传递表 + +| 操作 | 从返回中提取 | 用于 | +|------|-------------|------| +| `base list/search` | `baseId` | 所有后续命令的 --base-id,拼接文档 URI | +| `base create` | `baseId` | 后续命令 + 文档 URI | +| `base get` | `tables[].tableId`、`dashboards[].dashboardId` | --table-id / --dashboard-id | +| `table get` | `fields[].fieldId`、`views[].viewId` | record 操作的 cells key;field get/update/delete;view 操作 | +| `view get` | `viewId` | record query 按视图收敛;view update/delete | +| `record query` | `recordId` | record update/delete | +| `dashboard get` | `charts[].chartId` | chart get/update/delete/share | +| `import upload` | `importId`、`uploadUrl` | PUT 文件后调 import data | +| `export data` (首次) | `taskId` | 下一轮 export data 轮询 | +| `attachment upload` | `fileToken` | record create/update 写入 attachment 字段 | +| `template search` | `templateId` | base create --template-id,拼接模板预览 URI | + +## 注意事项 + +- 所有操作使用 ID(baseId/tableId/fieldId/recordId/viewId/dashboardId/chartId),不使用名称 +- records 的 cells key 是 fieldId,不是字段名称 +- dashboard/chart 的 create/update 只有 `--config`(JSON 内含名称/布局/类型),没有独立 `--name` +- view 创建的类型参数是 `--view-type`,不是 `--type` +- import upload 的文件大小参数是 `--file-size`,不是 `--size` + +## `--filters` 筛选语法排错与使用规范(极易出错) + +调用 `record query` 时,如果条件筛选**完全失效(查询返回了所有记录)**,通常是因为 `--filters` JSON 语法错误,API 默默丢弃了不合规的 filter。 + +**强制规则:** +1. **根节点必须是逻辑操作符**:`"operator"` 必须是 `"and"` 或 `"or"`,不能是 `"eq"` 等比较操作符。 +2. 比较操作必须放在根节点的 `"operands"` 数组内的对象中。 +3. `singleSelect` 和 `multipleSelect` 字段,推荐使用 **选项的 exact String 名称 (name)** 作为比较值,而不是 ID。 +4. **内层比较操作符语义**:支持 `eq`(等于)、`not_eq`(不等于)、`contain`(包含/模糊搜索)、`not_contain`(不包含)、`gt/gte`(大于/大于等于)、`lt/lte`(小于/小于等于)、`is_empty/is_not_empty`(为空/不为空,对应 operands 内只传单个 fieldId)。 + +**精简防呆模板与 4 种衍生情况** +```json +{ + "operator": "and", // 情况 4 (OR 查询): 这里改为 "or" + "operands": [ + { + "operator": "eq", // 情况 3 (文本包含): 这里改为 "contain" + "operands": ["fld_state", "进行中"] // 情况 1 (基础等于) + } + // 情况 2 (多条件 AND): 在此行增加类似 {"operator":"eq","operands":["fld_priority","高"]} + ] +} +``` + +**错误示例 1:缺失根节点 and/or**(API 将忽略该 filter,返回全表) +```json +{"operator":"eq","operands":["fldXXX","本科"]} +``` + +**错误示例 2:传入选项 ID 而非名称**(可能导致匹配不到 0 记录) +```json +{"operator":"and","operands":[{"operator":"eq","operands":["fldXXX","CXzrOHK9JI"]}]} +``` + +## URL → baseId 提取 + +用户经常通过钉钉链接指定表格,链接格式为: + +``` +https://alidocs.dingtalk.com/i/nodes/{baseId} +https://alidocs.dingtalk.com/i/nodes/{baseId}?xxx=yyy +``` + +**处理规则**(必须严格遵守): +1. 当用户提供了包含 `alidocs.dingtalk.com/i/nodes/` 的 URL 时,提取 `/nodes/` 后的路径段作为 `baseId` +2. 去掉尾部的查询参数(`?` 及其后内容)和尾部斜杠 +3. 将提取得到的 ID 传入 `--base-id` 参数 + +**示例**: +``` +用户输入:帮我查看 https://alidocs.dingtalk.com/i/nodes/ABC123XYZ 这个表格 +→ 提取 baseId = ABC123XYZ +→ 执行: dws aitable base get --base-id ABC123XYZ --format json +``` + +> 💡 **注意**:URL 中的 nodeId 在 AI 表格场景下等同于 baseId,可以直接作为 `--base-id` 使用。 + +### cells 写入/读取格式速查 + +| 字段类型 | 写入格式 | 读取返回格式 | +|---------|---------|------------| +| text | `"字符串"` | `"字符串"` | +| number | `123` | `"123"` | +| singleSelect | `"选项名"` 或 `{"id":"xxx"}` | `{"id":"xxx","name":"选项名"}` | +| multipleSelect | `["选项A","选项B"]` | `[{"id":"x","name":"选项A"},...]` | +| date | `"2026-03-13"` 或时间戳 | ISO 日期字符串 | +| checkbox | `true`/`false` | `true`/`false` | +| user | `[{"userId":"xxx"}]` | `[{"corpId":"xxx","userId":"xxx"}]` | +| attachment | `[{"fileToken":"ft_xxx"}]` ⚠️需先走 attachment upload 3步流程 | `[{"url":"...","filename":"...","size":N}]` | +| url | `{"text":"显示文本","link":"https://..."}` | 同写入 | +| richText | `{"markdown":"**加粗**"}` | `{"markdown":"..."}` | +| group | `[{"cid":"xxx"}]` (注意: key 是 cid,不是 openConversationId) | 同写入 | + +- 详见 [field-rules.md](../field-rules.md) 和 [error-codes.md](../error-codes.md) + +## 相关产品 + +- [doc](./doc.md) — 富文本文档编辑,不是结构化数据表格 diff --git a/skills/dws/references/products/attendance.md b/skills/dws/references/products/attendance.md new file mode 100644 index 0000000..d071999 --- /dev/null +++ b/skills/dws/references/products/attendance.md @@ -0,0 +1,97 @@ +# 考勤 (attendance) 命令参考 + +## 命令总览 + +### 查询个人考勤详情 +``` +Usage: + dws attendance record get [flags] +Example: + dws attendance record get --user --date 2026-03-08 +Flags: + --date string 查询日期, 格式 YYYY-MM-DD (必填) + --user string 钉钉用户 ID (必填) +``` + +### 批量查询员工班次信息 +``` +Usage: + dws attendance shift list [flags] +Example: + dws attendance shift list --users userId1,userId2 --start 2026-03-03 --end 2026-03-07 +Flags: + --end string 结束日期, 格式 YYYY-MM-DD (必填) + --start string 开始日期, 格式 YYYY-MM-DD (必填) + --users string 用户 ID 列表, 逗号分隔, 最多 50 个 (必填) +``` + +返回每条记录含:用户 ID、工作日期、打卡类型(OnDuty/OffDuty)、计划打卡时间、是否休息日。间隔不超过 7 天,最多 50 人。 + +### 查询某个人的考勤统计摘要 +``` +Usage: + dws attendance summary [flags] +Example: + dws attendance summary --user USER_ID --date "2026-03-12 15:00:00" --stats-type month + dws attendance summary --user USER_ID --date "2026-03-12 15:00:00" --stats-type week +Flags: + --date string 工作日期, 格式 yyyy-MM-dd HH:mm:ss (必填) + --stats-type string 统计类型:week(周统计)或 month(月统计)(必填,钉钉服务端业务层强制要求;CLI 层会直接拒绝缺失/非法值) + --user string 钉钉用户 ID (必填) +``` + +> ⚠️ **重要**:`--stats-type` 在钉钉 schema 中标记为 `required: []`(看似可选),但服务端业务层**强制要求**,不传服务端会回 `C0002 / 统计类型错误`。CLI 已在客户端层做了 fail-fast:缺失或非 `week`/`month` 的取值会直接被 CLI 拒绝,不会发出请求。 + +### 查询考勤组与考勤规则 +``` +Usage: + dws attendance rules [flags] +Example: + dws attendance rules --date 2026-03-14 + dws attendance rules --date "2026-03-14 09:00:00" +Flags: + --date string 考勤日期, 格式 YYYY-MM-DD 或 yyyy-MM-dd HH:mm:ss (必填) +``` + +查询考勤组/考勤规则。例如:我属于哪个考勤组、打卡范围是什么、弹性工时怎么算。 + +## 意图判断 + +用户说"打卡记录/出勤/考勤" → `record get` +用户说"排班/班次/当班" → `shift list` +用户说"考勤汇总/统计" → `summary` +用户说"考勤组/考勤规则/打卡规则" → `rules` + +## 核心工作流 + +```bash +# 查看某人考勤 +dws attendance record get --user --date 2026-03-08 --format json + +# 批量查排班 +dws attendance shift list --users userId1,userId2 \ + --start 2026-03-03 --end 2026-03-07 --format json + +# 查看考勤统计摘要 +dws attendance summary --user --date "2026-03-12 15:00:00" --format json + +# 查看考勤组和规则 +dws attendance rules --date 2026-03-14 --format json +``` +## 上下文传递表 +| 操作 | 提取 | 用于 | +|------|------|------| +| `contact user get-self` | `userId` | record get 的 --user, shift list 的 --users, summary 的 --user | +## 注意事项 +- `record get` 的 `--date` 格式: YYYY-MM-DD(如 `2026-03-08`),CLI 自动转换为毫秒时间戳 +- `shift list` 的 `--start/--end` 同样使用 YYYY-MM-DD 格式,间隔不超过 7 天 +- `summary` 的 `--date` 格式: yyyy-MM-dd HH:mm:ss(如 `2026-03-12 15:00:00`) +- `rules` 的 `--date` 支持 YYYY-MM-DD 或 yyyy-MM-dd HH:mm:ss 两种格式 +- 用户 ID 需从 `contact user get-self` 或 `contact user search` 获取 + +## 自动化脚本 + +| 脚本 | 场景 | 用法 | +|------|------|------| +| [attendance_my_record.py](../../scripts/attendance_my_record.py) | 查看我今天/指定日期的考勤记录 | `python attendance_my_record.py today` | +| [attendance_team_shift.py](../../scripts/attendance_team_shift.py) | 查询团队成员本周排班 | `python attendance_team_shift.py --users userId1,userId2` | diff --git a/skills/dws/references/products/calendar.md b/skills/dws/references/products/calendar.md new file mode 100644 index 0000000..867eacd --- /dev/null +++ b/skills/dws/references/products/calendar.md @@ -0,0 +1,245 @@ +# 日历 (calendar) 命令参考 + +## 命令总览 + +### 查询日程列表 +``` +Usage: + dws calendar event list [flags] +Example: + dws calendar event list --start "2026-03-10T14:00:00+08:00" --end "2026-03-10T18:00:00+08:00" +Flags: + --end string 结束时间 ISO-8601 (例如 2026-03-10T18:00:00+08:00) + --start string 开始时间 ISO-8601 (例如 2026-03-10T14:00:00+08:00) +``` + +### 获取日程详情 +``` +Usage: + dws calendar event get [flags] +Example: + dws calendar event get --id +Flags: + --id string 日程 ID (必填) +``` + +### 创建日程 +``` +Usage: + dws calendar event create [flags] +Example: + dws calendar event create --title "Q1 复盘会" \ + --start "2026-03-10T14:00:00+08:00" --end "2026-03-10T15:00:00+08:00" + dws calendar event create --title "Q1 复盘会" \ + --start "2026-03-10T14:00:00+08:00" --end "2026-03-10T15:00:00+08:00" \ + --attendees userId1,userId2 --timezone "Asia/Shanghai" --desc "Q1 复盘" +Flags: + --attendees string 参会人 userId 列表 (逗号分隔) + --desc string 日程描述 + --end string 结束时间 ISO-8601 (必填) + --open-dingtalk-ids string 参会人 openDingTalkId 列表 (逗号分隔) + --start string 开始时间 ISO-8601 (必填) + --timezone string 时区 (如 Asia/Shanghai) + --title string 日程标题 (必填) +``` + +### 修改日程 +``` +Usage: + dws calendar event update [flags] +Example: + dws calendar event update --id --title "新标题" + dws calendar event update --id --desc "议程调整" --timezone "Asia/Shanghai" +Flags: + --desc string 新描述 + --end string 新结束时间 + --id string 日程 ID (必填) + --start string 新开始时间 + --timezone string 时区 (如 Asia/Shanghai) + --title string 新标题 +``` + +### 删除日程 +``` +Usage: + dws calendar event delete [flags] +Example: + dws calendar event delete --id --yes +Flags: + --id string 日程 ID (必填) +``` + +### 推荐会议时间 +``` +Usage: + dws calendar event suggest [flags] +Example: + dws calendar event suggest --users , \ + --start "2026-03-10T09:00:00+08:00" --end "2026-03-10T18:00:00+08:00" --duration 30 +Flags: + --duration string 会议时长(分钟) + --end string 候选时段结束时间 ISO-8601 (必填) + --start string 候选时段开始时间 ISO-8601 (必填) + --timezone string 时区 (如 Asia/Shanghai) + --users string 参会人 userId 列表 (必填) +``` + +基于参会人闲忙数据给出排名后的候选时段,比 `busy search` 直接给出原始忙闲更适合"帮我约"场景。 + +### 查看参与者 +``` +Usage: + dws calendar participant list [flags] +Example: + dws calendar participant list --event +Flags: + --event string 日程 ID (必填) +``` + +### 添加参与者 +``` +Usage: + dws calendar participant add [flags] +Example: + dws calendar participant add --event --users , +Flags: + --event string 日程 ID (必填) + --users string 用户 ID 列表 (必填) +``` + +### 移除参与者 +``` +Usage: + dws calendar participant delete [flags] +Example: + dws calendar participant delete --event --users --yes +Flags: + --event string 日程 ID (必填) + --users string 用户 ID 列表 (必填) +``` + +### 搜索会议室 +``` +Usage: + dws calendar room search [flags] +Example: + dws calendar room search --start "2026-03-10T14:00:00+08:00" --end "2026-03-10T15:00:00+08:00" --available + dws calendar room search --start "2026-03-10T14:00:00+08:00" --end "2026-03-10T15:00:00+08:00" --group-id +Flags: + --available 仅查空闲会议室 + --end string 结束时间 ISO-8601 (必填) + --group-id string 会议室分组ID(可选,留空查根目录;超100条时需按分组查询) + --start string 开始时间 ISO-8601 (必填) +``` + +### 预定会议室 +``` +Usage: + dws calendar room add [flags] +Example: + dws calendar room add --event --rooms +Flags: + --event string 日程 ID (必填) + --rooms string 会议室 ID 列表 (必填) +``` + +### 移除会议室 +``` +Usage: + dws calendar room delete [flags] +Example: + dws calendar room delete --event --rooms --yes +Flags: + --event string 日程 ID (必填) + --rooms string 会议室 ID 列表 (必填) +``` + +### 会议室分组列表 +``` +Usage: + dws calendar room list-groups [flags] +Example: + dws calendar room list-groups +``` + +### 查询用户闲忙状态 +``` +Usage: + dws calendar busy search [flags] +Example: + dws calendar busy search --users , \ + --start "2026-03-10T14:00:00+08:00" --end "2026-03-10T18:00:00+08:00" +Flags: + --end string 结束时间 ISO-8601 (必填) + --start string 开始时间 ISO-8601 (必填) + --users string 用户 ID 列表 (必填) +``` + +## 意图判断 + +用户说"日程/会议/约会/日历": +- 查看 → `event list` +- 详情 → `event get` +- 创建/约 → `event create` +- 修改/改时间 → `event update` +- 取消/删除 → `event delete` +- 帮我约/找个大家都有空的时间 → `event suggest` + +用户说"参会人/与会者": +- 查看 → `participant list` +- 邀请/添加 → `participant add` +- 移除 → `participant delete` + +用户说"会议室/订会议室": +- 哪个空闲 → `room search` +- 预定 → `room add` +- 取消预定 → `room delete` +- 分组 → `room list-groups`,取 groupId 后 `room search --group-id` + +用户说"有空吗/忙不忙/闲忙": +- 要原始闲忙块 → `busy search` +- 要直接给时段候选 → `event suggest` + +## 核心工作流 + +```bash +# 1. 创建日程 — 提取 eventId +dws calendar event create --title "Q1 复盘会" \ + --start "2026-03-10T14:00:00+08:00" --end "2026-03-10T15:00:00+08:00" --format json + +# 2. 添加参与者 +dws calendar participant add --event --users userId1,userId2 --format json + +# 3. 预定会议室 (先搜空闲) +dws calendar room search --start "2026-03-10T14:00:00+08:00" --end "2026-03-10T15:00:00+08:00" --format json +# 若返回错误(会议室超100条),先查分组再按分组搜索: +# dws calendar room list-groups --format json +# dws calendar room search --start ... --end ... --group-id --format json +dws calendar room add --event --rooms --format json + +# 4. 查看日程列表 +dws calendar event list --start "2026-03-10T14:00:00+08:00" --end "2026-03-10T15:00:00+08:00" --format json +``` + +## 上下文传递表 + +| 操作 | 从返回中提取 | 用于 | +|------|-------------|------| +| `event create` | `eventId` | participant/room 操作的 --event | +| `event list` | `events[].eventId` | event get/update/delete 的 --id | +| `room search` | `rooms[].roomId` | room add 的 --rooms | +| `room list-groups` | `groups[].groupId` | room search 的 --group-id | + +## 注意事项 + +- 时间格式: `event create/update`、`event list` 和 `busy search` 用 ISO-8601 +- 创建日程不会自动预定会议室,需额外 `room add` +- `room search` 不带 `--group-id` 时查根目录;企业会议室超过 100 条会报错,此时需先 `room list-groups` 获取分组,再按分组逐一查询 + +## 自动化脚本 + +| 脚本 | 场景 | 用法 | +|------|------|------| +| [calendar_today_agenda.py](../../scripts/calendar_today_agenda.py) | 查看今天/明天/本周日程安排 | `python calendar_today_agenda.py today` | +| [calendar_schedule_meeting.py](../../scripts/calendar_schedule_meeting.py) | 一键创建日程+添加参与者+预定会议室 | `python calendar_schedule_meeting.py --title "复盘会" --start "2026-03-15T14:00" --end "2026-03-15T15:00" --users userId1 --book-room` | +| [calendar_free_slot_finder.py](../../scripts/calendar_free_slot_finder.py) | 查询多人共同空闲时段 | `python calendar_free_slot_finder.py --users userId1,userId2 --date 2026-03-15` | diff --git a/skills/dws/references/products/chat.md b/skills/dws/references/products/chat.md new file mode 100644 index 0000000..13e823d --- /dev/null +++ b/skills/dws/references/products/chat.md @@ -0,0 +1,771 @@ +# 会话与群聊 (chat) 命令参考 + +> 命令别名: `dws im` 等价于 `dws chat` + +## 命令总览 + +### group (群组管理) + +| 子命令 | 用途 | +|-------|------| +| `group create` | 创建内部群 | +| `group members` | 查看群成员列表 | +| `group members add` | 添加群成员 | +| `group members remove` | 移除群成员(⚠️ 危险操作) | +| `group members add-bot` | 添加机器人到群 | +| `group rename` | 修改群名称 | +| `search` | 搜索群会话 | +| `search-common` | 搜索共同群 | +| `conversation-info` | 获取会话基础信息(单聊/群聊) | + +### message (会话消息管理) + +| 子命令 | 用途 | +|-------|------| +| `message send` | 以当前用户身份发群消息或单聊消息 | +| `message list` | 拉取群聊或单聊会话消息 | +| `message list-all` | 按时间范围拉取当前用户所有会话消息 | +| `message list-topic-replies` | 拉取群话题回复消息列表 | +| `message list-by-sender` | 搜索指定发送者的消息 | +| `message list-mentions` | 拉取 @我 的消息 | +| `message list-focused` | 拉取特别关注人的消息 | +| `message list-unread-conversations` | 获取未读会话列表 | +| `message search` | 按关键词搜索消息 | +| `message send-by-bot` | 机器人发消息(群聊或批量单聊) | +| `message recall-by-bot` | 机器人撤回消息 | +| `message send-by-webhook` | 自定义机器人 Webhook 发消息 | +| `list-top-conversations` | 拉取置顶会话列表 | + +### bot (机器人管理) + +| 子命令 | 用途 | +|-------|------| +| `bot search` | 搜索我的机器人 | + +--- + +## group create — 创建内部群 + +当前登录用户自动成为群主。 + +``` +Usage: + dws chat group create [flags] +Example: + dws chat group create --name "Q1 项目冲刺群" --users userId1,userId2,userId3 +Flags: + --users string 成员 userId 列表,用户本身会自动加入,无需包含,逗号分隔,不超过20个 (必填) + --name string 群名称 (必填) +``` + +--- + +## group members list — 查看群成员列表 + +分页查询指定群聊的成员。 + +``` +Usage: + dws chat group members list [flags] +Example: + dws chat group members list --id +Flags: + --cursor string 分页游标,首次从 0 开始 + --id string 群 ID / openconversation_id (必填) +``` + +> ⚠️ 注意:v1.0.17 起 list 是显式子命令;旧用法 `dws chat group members --id ...` 已不再支持,请改用 `dws chat group members list --id ...`。 + +--- + +## group members add — 添加群成员 + +向指定群聊添加成员,需传入群 ID 与用户 ID 列表。 + +``` +Usage: + dws chat group members add [flags] +Example: + dws chat group members add --id --users userId1,userId2 +Flags: + --id string 群 ID / openconversation_id (必填) + --users string 要添加的用户 userId 列表,逗号分隔 (必填) +``` + +--- + +## group members remove — 移除群成员 + +> ⚠️ 危险操作:执行前必须向用户确认,同意后才加 `--yes`。 + +``` +Usage: + dws chat group members remove [flags] +Example: + dws chat group members remove --id --users userId1,userId2 +Flags: + --id string 群 ID / openconversation_id (必填) + --users string 要移除的用户 userId 列表,逗号分隔 (必填) +``` + +--- + +## group members add-bot — 添加机器人到群 + +将自定义机器人添加到当前用户有管理权限的群聊中,如果没有权限则会报错。 + +``` +Usage: + dws chat group members add-bot [flags] +Example: + dws chat group members add-bot --robot-code --id +Flags: + --id string 群聊 openConversationId (必填) + --robot-code string 机器人 Code (必填) +``` + +--- + +## group rename — 修改群名称 + +``` +Usage: + dws chat group rename [flags] +Example: + dws chat group rename --id --name "新群名" +Flags: + --id string 群 ID / openconversation_id (必填) + --name string 修改后的群名称 (必填) +``` + +--- + +## search — 搜索群会话 + +根据名称搜索会话列表。 + +``` +Usage: + dws chat search [flags] +Example: + dws chat search --query "项目冲刺" +Flags: + --cursor string 分页游标 (首页留空) + --query string 搜索关键词 (必填) +``` + +--- + +## search-common — 搜索共同群 + +根据昵称列表搜索共同群聊。--nicks 指定要搜索的人员昵称(逗号分隔,必填)。--match-mode 控制匹配模式:AND 表示所有人都在群里,OR 表示任一人在群里(默认 AND)。 + +``` +Usage: + dws chat search-common [flags] +Example: + dws chat search-common --nicks "风雷,山乔" --limit 20 --cursor 0 + dws chat search-common --nicks "天鸡,乐函" --match-mode OR --limit 20 --cursor 0 + dws chat search-common --nicks "风雷,山乔,天鸡" --limit 10 --cursor +Flags: + --nicks string 要搜索的昵称列表,逗号分隔 (必填) + --match-mode string 匹配模式:AND=所有人都在群里,OR=任一人在群里(默认 AND) + --limit int 每页返回数量(默认 20) + --cursor string 分页游标(默认 "0",翻页传 nextCursor) + +注意: + - --nicks 传人员昵称(花名),逗号分隔,如 "风雷,山乔" + - --match-mode AND 表示群里必须包含所有指定的人;OR 表示包含任意一人即可 + - 翻页:hasMore=true 时,用返回的 nextCursor 作为下次 --cursor +``` + +--- + +## message send — 以当前用户身份发消息 + +--group 指定群聊 ID 发群消息;--user 指定用户 userId 发单聊;--open-dingtalk-id 指定用户 openDingTalkId 发单聊。三者只能选其一,不能同时指定。消息内容为位置参数(恰好 1 个),支持 Markdown。`--title` 是消息标题,**群聊与单聊都必填**(API 强制要求;缺失时服务端返回误导性的 "发群服务窗会话消息失败",CLI 现在前置校验直接报错)。 +--群聊时可选 --at-all @所有人,或 --at-users 指定成员(仅群聊时生效)。 +--发送图片消息:指定 --media-id(通过 dt_media_upload 工具上传获得),自动设置 msgType=image,此时不需要传文本内容。 + +``` +Usage: + dws chat message send [flags] [] +Example: + dws chat message send --group --title "周报" --text "请提交本周日报" + dws chat message send --user --title "提醒" --text "请查收" + dws chat message send --open-dingtalk-id --title "提醒" --text "请查收" + dws chat message send --group --title "通知" "hello" + dws chat message send --group --title "周报提醒" --text "请大家本周五前提交周报" + dws chat message send --group --title "通知" --at-all "<@all> 请大家注意" + dws chat message send --group --title "通知" --at-users userId1,userId2 "<@userId1> <@userId2> 请查收" + dws chat message send --group --title "图片" --media-id + dws chat message send --open-dingtalk-id --title "图片" --media-id +Flags: + --text string 消息内容(推荐使用,也可用位置参数) + --group string 群聊 openconversation_id(群聊时必填) + --user string 接收人 userId(单聊时与 --open-dingtalk-id 二选一) + --open-dingtalk-id string 接收人 openDingTalkId(单聊时与 --user 二选一,适用于三方应用等无法获取 userId 的场景) + --title string 消息标题(必填) + --at-all @所有人(仅群聊时生效,可选,默认 false) + --at-users string @指定成员的 userId 列表,逗号分隔(仅群聊时生效,可选) + --at-mobiles string @指定成员的手机号列表,逗号分隔(仅群聊时生效,可选) + --media-id string 图片 mediaId(通过 dt_media_upload 工具上传获得,需从返回链接中去除 _宽_高.格式 后缀并加上 @ 前缀),指定后发送图片消息,不需要传文本内容 + --msg-type string 消息类型(可选,如 text/markdown/image/file;通常由 --text/--media-id/--dentry-id 自动推断) + --dentry-id string 钉盘文件 dentryId(发送钉盘文件消息时使用,需配合 --space-id) + --space-id string 钉盘空间 spaceId(与 --dentry-id 配合使用) + --file-name string 文件消息的文件名 + --file-size string 文件消息的文件大小(字节) + --file-type string 文件消息的文件类型(如 pdf / docx / xlsx 等) + +注意: + - --text 和位置参数二选一,--text 优先 + - --title 必填(群聊与单聊都必填,API 强制要求) + - --group、--user、--open-dingtalk-id 三者互斥,只需指定其一:群聊用 --group,单聊用 --user 或 --open-dingtalk-id + - --group 的别名: --id, --chat, --conversation-id (均可替代 --group) + - --at-all / --at-users / --at-mobiles 仅在 --group 群聊时生效;当设置--at-all时,消息内容中一定要包含对应的占位符<@all>;当设置--at-users userId1,userId2时,消息内容中一定要包含对应格式的占位符<@userId1> <@userId2> + - --media-id 指定图片 mediaId 时自动发送图片消息(msgType=image),不需要传 --text;图片单聊仅支持 --open-dingtalk-id,不支持 --user + - 发送钉盘文件消息:传 --dentry-id + --space-id(必要时配合 --file-name / --file-size / --file-type),msg-type 自动推断为 file +``` + +--- + +## message list — 拉取会话消息内容 + +拉取指定群聊或单聊的会话消息内容。 + +--group 指定群聊,--user 指定单聊用户(通过 userId),--open-dingtalk-id 指定单聊用户(通过 openDingTalkId),三者互斥。默认拉取给定时间之后的消息,--forward=false 拉之前的。 + +``` +Usage: + dws chat message list [flags] +Example: + # 拉取群聊中某个时间点之后的消息 + dws chat message list --group --time "2025-03-01 00:00:00" + # 拉取单聊消息(通过 userId) + dws chat message list --user --time "2025-03-01 00:00:00" --limit 50 + # 拉取单聊消息(通过 openDingTalkId) + dws chat message list --open-dingtalk-id --time "2025-03-01 00:00:00" --limit 50 + # 拉取某个时间点之前的消息(向过去翻页) + dws chat message list --group --time "2025-03-01 00:00:00" --forward=false +Flags: + --forward true=拉给定时间之后的消息,false=拉给定时间之前的消息 (default true) + --group string 群聊 openconversation_id(群聊时必填) + --limit int 返回数量,不传则不限制 + --time string 开始时间,格式: yyyy-MM-dd HH:mm:ss(不传则默认拉取最新消息) + --user string 单聊用户 userId(单聊时与 --open-dingtalk-id 二选一) + --open-dingtalk-id string 单聊用户 openDingTalkId(单聊时与 --user 二选一,适用于三方应用等无法获取 userId 的场景) + +注意: + - --group、--user、--open-dingtalk-id 三者互斥,只需指定其一:群聊用 --group,单聊用 --user 或 --open-dingtalk-id + - --group 的别名: --id, --chat, --conversation-id (均可替代 --group) + - 如果返回的会话消息中包含 openConvThreadId 字段,说明是话题类消息,需要调用 dws chat message list-topic-replies 拉取话题的回复内容列表,openConvThreadId 作为 --topic-id 参数 +``` + +### 分页翻页说明(重要) + +`message list` 的翻页方式与 `message list-all` **完全不同**,请勿混淆: + +| 命令 | 翻页参数 | 翻页值来源 | 值格式 | +|------|---------|-----------|--------| +| `message list` | `--time` | 上一页结果中**最后一条消息的 `createTime` 字段** | `yyyy-MM-dd HH:mm:ss`(如 `"2025-03-01 14:30:00"`) | +| `message list-all` | `--cursor` | 上一页响应中的 `nextCursor` 字段 | 字符串(如 `"abc123token"`) | + +**翻页步骤(message list):** + +1. **首次请求**:指定起始时间 + ```bash + dws chat message list --group --time "2025-03-01 00:00:00" --limit 50 --format json + ``` +2. **检查响应**:查看 `hasMore` 字段 + - `hasMore: false` → 没有更多消息,翻页结束 + - `hasMore: true` → 还有更多消息,继续下一步 +3. **获取翻页时间**:取返回结果中**最后一条消息**的 `createTime` 字段值(如 `"2025-03-01 14:30:00"`) +4. **下一页请求**:将该 `createTime` 作为 `--time` 传入 + ```bash + dws chat message list --group --time "2025-03-01 14:30:00" --limit 50 --format json + ``` +5. 重复步骤 2-4 直到 `hasMore: false` + +> ⚠️ **常见错误**: +> - **不要把 `nextCursor` 传给 `--time`**:响应中的 `nextCursor` 字段(纯数字时间戳如 `1776684611219`)**不是给 `--time` 用的**。`--time` 只接受 `yyyy-MM-dd HH:mm:ss` 格式。将 `nextCursor` 传给 `--time` 会导致返回相同页面,陷入死循环。`nextCursor` 仅用于 `message list-all` 的 `--cursor` 参数。 +> - **不要把 `nextCursor` 传给 `--forward`**:`--forward` 只接受 `true`(拉给定时间之后的消息)或 `false`(拉给定时间之前的消息),不是时间戳或游标参数。 + +--- + +## message list-all — 拉取指定时间范围内当前用户的所有会话消息 + +分页拉取当前登录用户在指定时间范围内的所有会话消息。 + +--start 和 --end 限定时间范围,--limit 指定每页数量,--cursor 传分页游标(首页传 "0",后续从响应中的 nextCursor 获取)。 + +``` +Usage: + dws chat message list-all [flags] +Example: + dws chat message list-all --start "2025-03-01 00:00:00" --end "2025-03-31 23:59:59" --limit 50 + dws chat message list-all --start "2025-03-01 00:00:00" --end "2025-03-31 23:59:59" --limit 50 --cursor "abc123token" +Flags: + --start string 起始时间,格式: yyyy-MM-dd HH:mm:ss (必填) + --end string 结束时间,格式: yyyy-MM-dd HH:mm:ss (必填) + --limit int 每页返回数量(默认 50) + --cursor string 分页游标(首页传 "0",后续从响应中的 nextCursor 获取) + +注意: + - 四个参数每次请求都会传递给服务端,cursor 首页传 "0" + - 与 chat message list 的区别:list 拉取指定单个会话(群聊或单聊)的消息,list-all 拉取当前用户所有会话的消息 + - 翻页:hasMore=true 时,用响应中的 nextCursor 值作为下次 --cursor 参数继续翻页 + - 时间格式统一为 yyyy-MM-dd HH:mm:ss +``` + +--- + +## message list-topic-replies — 拉取群话题回复消息列表 + +查询指定群聊中某条话题消息的全部回复。--group 指定群会话 ID,--topic-id 指定话题 ID(由 dws chat message list 返回)。 + +``` +Usage: + dws chat message list-topic-replies [flags] +Example: + dws chat message list-topic-replies --group --topic-id + dws chat message list-topic-replies --group --topic-id --time "2025-03-01 00:00:00" --limit 20 +Flags: + --group string 群会话 openconversationId (必填) + --topic-id string 话题 ID,由 dws chat message list 返回 (必填) + --time string 开始时间,格式: yyyy-MM-dd HH:mm:ss(可选) + --limit int 返回数量(默认 50) + --forward true=从老往新,false=从新往老(默认 false) +``` + +--- + +## message list-by-sender — 拉取指定发送者的消息 + +搜索特定人发送给我的消息,返回结果包含单聊和群聊标识。--sender-user-id 指定发送者 userId,--sender-open-dingtalk-id 指定发送者 openDingTalkId,二者互斥。 + +``` +Usage: + dws chat message list-by-sender [flags] +Example: + dws chat message list-by-sender --sender-user-id --start "2026-03-10T00:00:00+08:00" --end "2026-03-11T00:00:00+08:00" --limit 50 --cursor 0 + dws chat message list-by-sender --sender-open-dingtalk-id --start "2026-03-10T00:00:00+08:00" --end "2026-03-11T00:00:00+08:00" --limit 50 --cursor 0 +Flags: + --sender-user-id string 发送者 userId(与 --sender-open-dingtalk-id 二选一) + --sender-open-dingtalk-id string 发送者 openDingTalkId(与 --sender-user-id 二选一) + --start string 开始时间,ISO-8601 格式 (必填) + --end string 结束时间,ISO-8601 格式 (必填) + --limit int 每页返回数量(默认 50) + --cursor string 分页游标(默认 "0",翻页传 nextCursor) + +注意: + - --sender-user-id 和 --sender-open-dingtalk-id 二者互斥,必须且只能指定其一 + - 不需要指定单聊/群聊,MCP 返回结果自带会话类型标识 + - 时间支持多种 ISO-8601 格式,如 "2026-03-10T00:00:00+08:00"、"2026-03-10 14:00:00" 等 + - 翻页:hasMore=true 时,用返回的 nextCursor 作为下次 --cursor +``` + +--- + +## message list-mentions — 拉取 @我 的消息 + +搜索时间范围内 @我 的消息,可选指定群聊。 + +``` +Usage: + dws chat message list-mentions [flags] +Example: + dws chat message list-mentions --start "2026-03-10T00:00:00+08:00" --end "2026-03-11T00:00:00+08:00" --limit 50 --cursor 0 + dws chat message list-mentions --group --start "2026-03-10T00:00:00+08:00" --end "2026-03-11T00:00:00+08:00" --limit 50 --cursor 0 +Flags: + --group string 群聊 openconversation_id(可选,不传则查全部) + --start string 开始时间,ISO-8601 格式 (必填) + --end string 结束时间,ISO-8601 格式 (必填) + --limit int 每页返回数量(默认 50) + --cursor string 分页游标(默认 "0",翻页传 nextCursor) + +注意: + - --group 可选,不传则查询所有会话中 @我 的消息;传入则只查指定群聊 + - --group 的别名: --id, --chat, --conversation-id (均可替代 --group) + - 翻页:hasMore=true 时,用返回的 nextCursor 作为下次 --cursor +``` + +--- + +## message list-focused — 拉取特别关注人的消息 + +拉取当前用户特别关注人的消息。 + +``` +Usage: + dws chat message list-focused [flags] +Example: + dws chat message list-focused --limit 50 + dws chat message list-focused --limit 20 --cursor +Flags: + --limit int 每页返回数量(默认 50) + --cursor int64 分页游标(首次不传或传 0,翻页传 nextCursor) + +注意: + - 首次调用不传 --cursor 或传 0,后续翻页传 nextCursor +``` + +--- + +## message list-unread-conversations — 获取未读会话列表 + +获取当前用户有未读消息的会话信息。可选通过 `--count` 限制返回条数。 + +``` +Usage: + dws chat message list-unread-conversations [flags] +Example: + dws chat message list-unread-conversations + dws chat message list-unread-conversations --count 20 +Flags: + --count int 返回未读会话条数(可选) +``` + +--- + +## message search — 按关键词搜索消息 + +在当前用户的会话中按关键词搜索消息。--keyword 必填,可选 --group 限定搜索某个会话。 + +``` +Usage: + dws chat message search [flags] +Example: + dws chat message search --keyword "changefree" --start "2026-04-01T00:00:00+08:00" --end "2026-04-15T00:00:00+08:00" --limit 50 --cursor 0 + dws chat message search --keyword "codereview" --group --start "2026-04-01T00:00:00+08:00" --end "2026-04-15T00:00:00+08:00" --limit 100 --cursor 0 +Flags: + --keyword string 搜索关键词 (必填) + --group string 群聊 openconversation_id(可选,不传则搜索所有会话) + --start string 开始时间,ISO-8601 格式 (必填) + --end string 结束时间,ISO-8601 格式 (必填) + --limit int 每页返回数量(默认 100) + --cursor string 分页游标(默认 "0",翻页传 nextCursor) + +注意: + - --group 可选,不传则搜索所有会话中的消息;传入则只搜索指定会话 + - --group 的别名: --id, --chat, --conversation-id (均可替代 --group) + - 翻页:hasMore=true 时,用返回的 nextCursor 作为下次 --cursor +``` + +--- + +## conversation-info — 获取会话基础信息 + +按会话 ID 获取单聊或群聊的基础元数据(名称、类型、成员数等)。在对会话执行操作前用来确认上下文。 + +``` +Usage: + dws chat conversation-info [flags] +Example: + dws chat conversation-info --group + dws chat conversation-info --open-dingtalk-id +Flags: + --group string 群聊会话 ID openConversationId(与 --open-dingtalk-id 二选一) + --open-dingtalk-id string 用户 openDingTalkId(单聊时与 --group 二选一) + +注意: + - --group(群聊 openConversationId)和 --open-dingtalk-id(单聊用户 openDingTalkId)二选一 +``` + +--- + +## list-top-conversations — 拉取置顶会话列表 + +拉取当前用户的置顶会话列表。 + +``` +Usage: + dws chat list-top-conversations [flags] +Example: + dws chat list-top-conversations --limit 1000 + dws chat list-top-conversations --limit 1000 --cursor +Flags: + --limit int 每页返回数量(默认 1000) + --cursor int 分页游标(首次不传或传 0,翻页传 nextCursor) + +注意: + - 用户询问"置顶会话"时,直接调用此命令返回置顶会话列表即可 + - 用户询问"置顶消息"时,需两步:先调用此命令拉取置顶会话列表获取各会话的 openConversationId,再用 `chat message list --group ` 分别拉取每个会话内的消息 + - 翻页:hasMore=true 时,用返回的 nextCursor 作为下次 --cursor +``` + +--- + +## bot search — 搜索我的机器人 + +``` +Usage: + dws chat bot search [flags] +Example: + dws chat bot search --page 1 + dws chat bot search --page 1 --size 10 --name "日报" +Flags: + --name string 按名称搜索 + --page int 页码,从1开始 (默认 1) + --size int 每页条数 (默认 50),别名: --limit +``` + +--- + +## message send-by-bot — 机器人发消息 + +群聊:传 --group 指定群;单聊:传 --users 指定用户列表,二者只能选其一,不能同时指定。--text 支持 Markdown。 + +``` +Usage: + dws chat message send-by-bot [flags] +Example: + dws chat message send-by-bot --robot-code --group --title "日报" --text "## 今日完成..." + dws chat message send-by-bot --robot-code --users userId1,userId2 --title "提醒" --text "请提交周报" +Flags: + --group string 群聊 openConversationId(群聊时必填) + --robot-code string 机器人 Code (必填) + --text string 消息内容 Markdown (必填) + --title string 消息标题 (必填) + --users string 用户 userId 列表,逗号分隔,最多20个(单聊时必填) + +注意: + - --group 与 --users 互斥,必须且只能指定其一 + - --group 的别名: --id, --chat, --conversation-id (均可替代 --group) +``` + +--- + +## message recall-by-bot — 机器人撤回消息 + +群聊:传 --group 与 --keys;单聊:仅传 --keys。--keys 为发送时返回的 processQueryKey 列表,逗号分隔。 + +``` +Usage: + dws chat message recall-by-bot [flags] +Example: + dws chat message recall-by-bot --robot-code --group --keys + dws chat message recall-by-bot --robot-code --keys key1,key2 +Flags: + --group string 群聊 openConversationId(群聊撤回时必填) + --keys string 消息 processQueryKey 列表,逗号分隔 (必填) + --robot-code string 机器人 Code (必填) +``` + +--- + +## message send-by-webhook — 自定义机器人 Webhook 发消息 + +@ 人时需在 --text 中包含 @userId 或 @手机号,否则 @ 不生效。 + +``` +Usage: + dws chat message send-by-webhook [flags] +Example: + dws chat message send-by-webhook --token --title "告警" --text "CPU 超 90%" --at-all + dws chat message send-by-webhook --token --title "test" --text "hi @118785" --at-users 118785 +Flags: + --at-all @ 所有人 + --at-mobiles string @ 指定手机号,逗号分隔 + --at-users string @ 指定用户,逗号分隔(需在 text 中包含 @userId) + --text string 消息内容 (必填) + --title string 消息标题 (必填) + --token string Webhook Token (必填) +``` + +--- + +## 意图判断 + +用户说"建群/创建群聊" → `chat group create` +用户说"搜索群/找群" → `chat search` +用户说"群成员/看群里有谁" → `chat group members list` +用户说"拉人进群/加群成员" → `chat group members add` +用户说"踢人/移除群成员" → `chat group members remove` +用户说"加机器人到群" → `chat group members add-bot` +用户说"改群名" → `chat group rename` +用户说"聊天记录/会话消息/拉取会话" → `chat message list` +用户说"某人发给我的消息/指定发送者/某人的消息" → `chat message list-by-sender`(用户未明确说"单聊"时优先使用,跨单聊/群聊) +用户说"拉取和某人的单聊记录/单聊消息" → `chat message list --user`(用户明确说"单聊"时使用) +用户说"@我的消息/at我的/提及我的" → `chat message list-mentions` +用户说"未读消息会话/未读会话列表/我的未读会话" → `chat message list-unread-conversations` +用户说"发群消息(以个人身份)" → `chat message send --group` +用户说"发单聊消息(以个人身份)" → `chat message send --user`(有 userId 时)或 `chat message send --open-dingtalk-id`(有 openDingTalkId 时) +用户说"机器人发消息/机器人群发" → `chat message send-by-bot` +用户说"机器人撤回消息" → `chat message recall-by-bot` +用户说"Webhook 发消息/告警消息" → `chat message send-by-webhook` +用户说"话题回复/群话题消息回复/拉取话题回复" → `chat message list-topic-replies` +用户说"所有消息/全部会话消息/拉取全部消息/时间范围内消息/我的消息/我今天的消息/查我的钉钉消息/最近的消息" → `chat message list-all` +用户说"特别关注人的消息/关注的人的消息/星标联系人的消息" → `chat message list-focused` +用户说"查看我的机器人" → `chat bot search` +用户说"搜索消息/查找关键词/搜一下消息里的XX" → `chat message search` +用户说"我和XX的共同群/我们都在哪些群/查共同群" → `chat search-common` +用户说"置顶会话/置顶消息/我的置顶/查看置顶" → `chat list-top-conversations` +用户说"获取会话信息/会话详情/会话元数据" → `chat conversation-info` + +关键区分: +- `chat message list` — 拉取指定会话的消息(需指定 --group 或 --user),按时间点 + 方向翻页 +- `chat message list --user` — list 的单聊模式,拉取与指定用户的单聊记录(用户明确说"单聊""私聊"时使用) +- `chat message list-by-sender` — 搜索指定发送者发给我的消息,跨所有会话(单聊+群聊均包含,用户只说"某人发的消息"时优先使用) +- `chat message list-mentions` — 拉取 @我 的消息(跨单聊/群聊,可选指定群) +- `chat message list-unread-conversations` — 拉取当前用户存在未读消息的会话列表(可选 `--count`) +- `chat message list-all` — 拉取当前用户所有会话的消息,按时间范围 + cursor 分页。只要用户没有指定某个具体的会话(如某个群名、某个人名),即使提到"单聊消息""群聊消息"等笼统范围,也应路由到此命令 +- `chat message list-topic-replies` — 拉取群话题的回复消息列表 +- `chat message list-focused` — 拉取特别关注人的消息,cursor 分页 +- `chat list-top-conversations` — 拉取置顶会话列表(用户询问"置顶会话"或"置顶消息"时路由到此),cursor 分页 +- `chat message send` — 以**当前用户**身份发消息(群聊或单聊),text 为位置参数;支持 --media-id 发送图片消息 +- `chat message search` — 按关键词搜索消息内容(跨所有会话,可选指定群) +- `chat search-common` — 搜索共同群,查询指定人共同所在的群聊(AND=所有人都在,OR=任一人在) +- `chat message send-by-bot` — 以**机器人**身份发消息(群聊或单聊),text 为 --text flag +- `chat message send-by-webhook` — 通过**自定义机器人 Webhook** 发群消息 +- `chat message recall-by-bot` — 通过机器人撤回已发送的消息 +- `chat conversation-info` — 按会话 ID 获取单聊/群聊的基础元数据(名称、类型、成员数等) +- `chat bot search` — 搜索当前用户名下的机器人,拿到 robotCode 用于 send-by-bot / recall-by-bot / group members add-bot + +## 核心工作流 + +```bash +# 1. 搜索群 — 提取 openconversation_id +dws chat search --query "项目冲刺" --format json + +# 2. 拉取群消息 +dws chat message list --group --time "2025-03-01 00:00:00" --format json + +# 2b. 拉取未读会话列表 +dws chat message list-unread-conversations --count 20 --format json + +# 3. 以个人身份发送群消息 +dws chat message send --group --title "周报提醒" "请大家本周五前提交周报" --format json + +# 4. 以个人身份单聊(通过 userId) +dws chat message send --user --title "问候" "你好" --format json + +# 4b. 以个人身份单聊(通过 openDingTalkId,三方应用等无法获取 userId 时使用) +dws chat message send --open-dingtalk-id --title "问候" "你好" --format json + +# 5. 机器人发群消息(Markdown) +dws chat message send-by-bot --robot-code \ + --group --title "日报" --text "## 今日完成..." --format json + +# 6. 机器人单聊发消息 +dws chat message send-by-bot --robot-code \ + --users userId1,userId2 --title "提醒" --text "请提交周报" --format json + +# 7. Webhook 发告警 +dws chat message send-by-webhook --token \ + --title "告警" --text "CPU 超 90%" --at-all --format json +``` + +## 复合工作流 + +### 机器人发消息后撤回(完整流程) + +撤回只能用于 `send-by-bot` 发出的消息。个人身份 (`chat message send`) 发出的消息**无法通过 API 撤回**。 + +```bash +# Step 1: 查我的机器人 — 提取 robot-code +dws chat bot search --format json + +# Step 2: 用机器人发消息 — 提取返回中的 processQueryKey +dws chat message send-by-bot --robot-code --group \ + --title "通知" --text "内容" --format json + +# Step 3: 用同一个 robot-code + processQueryKey 撤回 +dws chat message recall-by-bot --robot-code --group \ + --keys --format json +``` + +### 将已有机器人加入群并发消息(完整流程) + +机器人需先在钉钉开放平台创建好,这里只做"找机器人 → 加入群 → 发消息"。 + +```bash +# Step 1: 搜索我的机器人 — 提取 robotCode +dws chat bot search --name "项目提醒" --format json + +# Step 2: 搜索群 — 提取 openConversationId +dws chat search --query "项目群" --format json + +# Step 3: 将机器人添加到群(需当前用户对该群有管理权限) +dws chat group members add-bot --id --robot-code --format json + +# Step 4: 机器人发消息 +dws chat message send-by-bot --robot-code --group \ + --title "提醒" --text "请及时更新项目状态" --format json +``` + +### 机器人 @指定人发群消息 + +`--text` 中**必须**包含 `<@userId>` 占位符,否则 @ 不生效。 + +```bash +# Step 1: 搜人获取 userId +dws aisearch person --keyword "张三" --dimension name --format json + +# Step 2: 取 userId 发送(注意 text 中的占位符) +dws chat message send-by-bot --robot-code --group \ + --title "提醒" --text "<@userId1> <@userId2> 请查收本周报告" --format json +``` + +### 发送图片/文件消息(跨产品: drive → chat) + +```bash +# Step 1: 上传文件到钉盘 — 获取 uploadId 和凭证 +dws drive upload-info --file-name "截图.png" --file-size <字节数> --format json + +# Step 2: HTTP PUT 上传文件到 OSS +curl -X PUT -T "截图.png" "" + +# Step 3: 提交上传 — 获取 dentryUuid +dws drive commit --file-name "截图.png" --file-size <字节数> --upload-id --format json + +# Step 4: 获取下载链接 +dws drive download --file-id --format json + +# Step 5: 用 Markdown 图片语法发送 +dws chat message send --group \ + --title "截图" --text "![截图](下载链接)" --format json +``` + +## 上下文传递表 + +| 操作 | 从返回中提取 | 用于 | +|------|-------------|------| +| `chat search` | `openConversationId` | message send/list、group members 等的 --group | +| `chat group create` | `openConversationId` | 同上 | +| `chat message list-all` | `nextCursor` | 下次 list-all 的 --cursor | +| `aisearch person` | `userId` | message send 的 --user、--at-users、send-by-bot 的 --users、list-by-sender 的 --sender-user-id | +| `aisearch person` → `contact user get` | `openDingTalkId` | list-by-sender 的 --sender-open-dingtalk-id、message send/list 的 --open-dingtalk-id | +| `chat bot search` | `robotCode` | send-by-bot / recall-by-bot 的 --robot-code、group members add-bot 的 --robot-code | +| `chat message send-by-bot` | `processQueryKey` | recall-by-bot 的 --keys | +| `chat conversation-info` | `openConversationId` / 成员信息 | 作为 message send/list 等后续操作的会话上下文确认 | +| `chat message search` | `nextCursor` | 下次 message search 的 --cursor | +| `chat search-common` | `openConversationId` | message send/list 等的 --group | +| `drive download` | 下载链接 | message send 的 Markdown 图片/链接语法 | + +## 注意事项 + +- `--group` 为群聊会话 ID (openconversation_id),可从群搜索或群聊信息中获取 +- `chat message send` 的 text 是位置参数(恰好 1 个),非 flag;群聊用 `--group`,单聊用 `--user`(userId)或 `--open-dingtalk-id`(openDingTalkId),三者互斥;`--at-all`、`--at-users` 仅在 `--group` 群聊时生效;发送图片消息用 `--media-id` +- `chat message list-all` 的四个参数(--start、--end、--limit、--cursor)每次请求都必须传递;翻页时用响应中的 nextCursor 值作为下次 --cursor +- `chat message list` 的 `--group`、`--user`、`--open-dingtalk-id` 三者互斥,必须且只能指定其一 +- `chat message list-by-sender` 不需要指定单聊/群聊,返回结果自带会话类型标识 +- `chat message list-mentions` 可选 `--group` 指定群聊,不传则查全部 +- `chat message list-unread-conversations` 获取当前用户未读会话列表,可选 `--count` 指定返回条数 +- `chat message search` 按关键词搜索消息内容,`--keyword` 必填,可选 `--group` 限定搜索某个会话 +- `chat search-common` 搜索共同群,`--nicks` 传人员昵称(逗号分隔),`--match-mode` AND/OR 控制匹配逻辑 +- `chat list-top-conversations` 拉取置顶会话列表,分页用 `--limit`(默认 1000)/`--cursor` +- `send-by-bot` 群聊传 `--group`,单聊传 `--users`,二者互斥且必选其一 +- `recall-by-bot` 群聊传 `--group` + `--keys`,单聊仅传 `--keys`(不传 `--group` 即为单聊撤回) +- `send-by-webhook` 支持 `--at-all`、`--at-mobiles`、`--at-users` 进行 @ 操作,但需在 `--text` 中包含 `@userId` 或 `@手机号` 才能生效 + +## 自动化脚本 + +| 脚本 | 场景 | 用法 | +|------|------|------| +| [chat_export_messages.py](../../scripts/chat_export_messages.py) | 导出群聊消息到 JSON 文件 | `python chat_export_messages.py --query "项目冲刺" --time "2026-03-10 00:00:00"` | +| [chat_history_with_user.py](../../scripts/chat_history_with_user.py) | 查询与某人的单聊聊天记录 | `python chat_history_with_user.py --name "张三" --time "2026-03-10 00:00:00"` | + +## 相关产品 + +- [contact](./contact.md) — 搜索同事/好友,获取 userId 用于 --user、--at-users、send-by-bot --users、list-by-sender --sender-user-id;获取 openDingTalkId 用于 list-by-sender --sender-open-dingtalk-id、--open-dingtalk-id +- [drive](./drive.md) — 上传文件获取下载链接,用于 Markdown 图片/文件消息 diff --git a/skills/dws/references/products/contact.md b/skills/dws/references/products/contact.md new file mode 100644 index 0000000..089edc6 --- /dev/null +++ b/skills/dws/references/products/contact.md @@ -0,0 +1,107 @@ +# 通讯录 (contact) 命令参考 + +## 命令总览 + +### user (人员查询) + +#### 获取当前用户信息 +``` +Usage: + dws contact user get-self [flags] +Example: + dws contact user get-self +``` + +#### 按关键词搜索用户 +``` +Usage: + dws contact user search [flags] +Example: + dws contact user search --query "张三" +Flags: + --query string 搜索关键词 (必填) +``` + +#### 按手机号搜索用户 +``` +Usage: + dws contact user search-mobile [flags] +Example: + dws contact user search-mobile --mobile 13800138000 +Flags: + --mobile string 手机号 (必填) +``` + +#### 批量获取用户详情 +``` +Usage: + dws contact user get [flags] +Example: + dws contact user get --ids userId1,userId2 +Flags: + --ids string 用户 ID 列表,逗号分隔 (必填) +``` + +### dept (部门查询) + +#### 搜索部门 +``` +Usage: + dws contact dept search [flags] +Example: + dws contact dept search --query "技术部" +Flags: + --query string 搜索关键词 (必填) +``` + +#### 查看部门成员 +``` +Usage: + dws contact dept list-members [flags] +Example: + dws contact dept list-members --ids 12345,67890 +Flags: + --ids string 部门 ID 列表,逗号分隔 (必填) +``` + +## 意图判断 + +用户说"我是谁/我的信息" → `user get-self` +用户说"找人/搜人" → `user search`(按名字)或 `user search-mobile`(按手机号) +用户说"查用户详情" → `user get`(需 userId) +用户说"找部门/哪个部门" → `dept search` +用户说"部门有谁/部门成员" → `dept list-members`(需 deptId) + +## 核心工作流 + +```bash +# 1. 查看自己的信息 — 提取 userId +dws contact user get-self --format json + +# 2. 按名字搜索同事 — 提取 userId +dws contact user search --query "张三" --format json + +# 3. 查看部门结构 — 提取 deptId +dws contact dept search --query "技术部" --format json + +# 4. 查看部门成员 +dws contact dept list-members --ids --format json +``` + +## 上下文传递表 + +| 操作 | 提取 | 用于 | +|------|------|------| +| `user get-self/search` | `userId` | 其他产品中的 --users/--executor 参数 | +| `dept search` | `deptId` | dept list-members 的 --ids | + +## 注意事项 + +- `user get-self` 是获取 userId 的最快方式,其他产品的 --users/--executor 都需要 userId +- `user get --ids` 和 `dept list-members --ids` 都支持批量查询,逗号分隔 + +## 自动化脚本 + +| 脚本 | 场景 | 用法 | +|------|------|------| +| [contact_dept_members.py](../../scripts/contact_dept_members.py) | 按部门名称搜索并列出所有成员 | `python contact_dept_members.py --keyword "技术部"` | diff --git a/skills/dws/references/products/devdoc.md b/skills/dws/references/products/devdoc.md new file mode 100644 index 0000000..e6e3e23 --- /dev/null +++ b/skills/dws/references/products/devdoc.md @@ -0,0 +1,48 @@ +# 开放平台文档 (devdoc) 命令参考 + +搜索钉钉**开放平台**开发文档,用于回答开发者关于 OpenAPI、字段、错误码、接入指南、配额等技术问题。 + +## 命令总览 + +### 搜索开发文档 +``` +Usage: + dws devdoc article search [flags] +Example: + dws devdoc article search --query "OAuth2 接入" + dws devdoc article search --query "消息卡片" --page 2 --size 5 + dws devdoc article search --query "机器人" --size 10 +Flags: + --query string 搜索关键词 (必填) + --page int 分页页码 (从 1 开始,默认 1) + --size int 分页大小 (默认 10) +``` + +## 意图判断 + +用户问开放平台 API / 字段 / 错误码 / SDK / 鉴权 / 回调 / 配额相关的技术细节: +- 走 `devdoc article search`,把用户问的关键短语作为 `--query` + +关键区分: +- devdoc(钉钉**开放平台**开发者文档,面向研发) vs doc(钉钉在线文档,面向普通用户内容) +- devdoc 只做搜索,不做读取;命中条目返回标题、摘要、文档链接,由 Agent 引用链接或进一步浏览 + +## 核心工作流 + +```bash +# 开发者问"OAuth2 怎么接" +dws devdoc article search --query "OAuth2 接入" --format json + +# 命中结果多时翻页 +dws devdoc article search --query "消息卡片" --page 2 --size 5 --format json + +# 查错误码 / 字段含义 +dws devdoc article search --query "errcode 40078" --format json +``` + +## 注意事项 + +- `--query` 必填;建议传用户原话里的关键名词(API 名、错误码、能力名),不要过度改写 +- 返回按相关性排序,默认 `--size 10`;要拿更多结果时先翻页,再考虑换关键词 +- 命中结果里的链接是钉钉开放平台公开文档,可直接给用户做参考 +- 不要把 devdoc 用来查业务数据(那是 aitable / doc / report 的事);devdoc 只查**官方开发者文档** diff --git a/skills/dws/references/products/ding.md b/skills/dws/references/products/ding.md new file mode 100644 index 0000000..f9849bb --- /dev/null +++ b/skills/dws/references/products/ding.md @@ -0,0 +1,57 @@ +# DING 消息 (ding) 命令参考 + +## 命令总览 + +### 发送 DING 消息 +``` +Usage: + dws ding message send [flags] +Example: + dws ding message send --robot-code --users , --content "请查看" +Flags: + --content string 消息内容 (必填) + --robot-code string 机器人 ID (必填, 可从 应用管理→机器人 获取, 或设 DINGTALK_DING_ROBOT_CODE) + --users string 接收人 userId 列表 (必填) + --type string 提醒类型: app/sms/call (默认 app) +``` + +### 撤回 DING 消息 +``` +Usage: + dws ding message recall [flags] +Example: + dws ding message recall --robot-code --id +Flags: + --id string DING 消息 ID (必填) + --robot-code string 机器人 ID (必填, 或设 DINGTALK_DING_ROBOT_CODE) +``` + +## 意图判断 + +用户说"DING 一下/紧急通知/电话提醒" → `message send` +用户说"撤回 DING" → `message recall` + +关键区分: +- ding(紧急提醒, 支持电话/短信) vs bot(常规群/单聊消息) +- sms/call 类型有通信费用 + +## 核心工作流 + +```bash +# 应用内 DING (免费) +dws ding message send --robot-code --type app --users userId1,userId2 --content "请查看" --format json + +# 电话 DING (紧急, 有成本!) +dws ding message send --robot-code --type call --users userId1 --content "紧急告警" --format json + +# 撤回 +dws ding message recall --robot-code --id --format json +``` +## 上下文传递表 +| 操作 | 提取 | 用于 | +|------|------|------| +| `message send` | `openDingId` | message recall 的 --id | +## 注意事项 +- `--robot-code` 从钉钉开放平台 **应用管理 → 机器人** 中获取,也可设环境变量 `DINGTALK_DING_ROBOT_CODE` +- sms/call 类型有通信费用,使用前需和用户确认 +- 默认 `--type app`(应用内 DING,免费) diff --git a/skills/dws/references/products/doc.md b/skills/dws/references/products/doc.md new file mode 100644 index 0000000..52ebff5 --- /dev/null +++ b/skills/dws/references/products/doc.md @@ -0,0 +1,577 @@ +# 文档 (doc) 命令参考 + +## 命令总览 + +### 搜索文档 +``` +Usage: + dws doc search [flags] +Example: + dws doc search --query "会议纪要" + dws doc search + dws doc search --extensions pdf,docx + dws doc search --query "方案" --created-from 1700000000000 --created-to 1710000000000 + dws doc search --creator-uids uid1,uid2 + dws doc search --workspace-ids wsId1,wsId2 +Flags: + --query string 搜索关键词 (不传则返回最近访问) + --extensions strings 按文件扩展名过滤,不含点号,逗号分隔 (如 pdf,docx,png)。支持的在线文档类型后缀名: adoc=文字, axls=表格, appt=演示文稿, awbd=白板, adraw=画板, amind=脑图, able=多维表格, aform=收集表 + --created-from int 创建时间起始 (毫秒时间戳,含) + --created-to int 创建时间截止 (毫秒时间戳,含) + --visited-from int 访问时间起始 (毫秒时间戳,含) + --visited-to int 访问时间截止 (毫秒时间戳,含) + --creator-uids strings 按创建者用户 ID 过滤,逗号分隔 + --editor-uids strings 按编辑者用户 ID 过滤,逗号分隔 + --mentioned-uids strings 按 @提及的用户 ID 过滤,逗号分隔 + --workspace-ids strings 按知识库 ID 过滤,支持知识库 URL,逗号分隔 + --page-size int 每页数量 (默认 10,最大 30) + --page-token string 分页游标 (从上次结果的 nextPageToken 获取) +``` + +### 遍历文件列表 +``` +Usage: + dws doc list [flags] +Example: + dws doc list + dws doc list --folder + dws doc list --workspace --page-size 20 +Flags: + --folder string 文件夹 ID 或 URL + --workspace string 知识库 ID + --page-size int 每页数量 (默认 50,最大 50) + --page-token string 分页游标 (从上次结果的 nextPageToken 获取) +``` + +### 获取文档元信息 +``` +Usage: + dws doc info [flags] +Example: + dws doc info --node + dws doc info --node "https://alidocs.dingtalk.com/i/nodes/" +Flags: + --node string 文档 ID 或 URL (必填) +``` + +### 读取文档内容 +``` +Usage: + dws doc read [flags] +Example: + dws doc read --node + dws doc read --node "https://alidocs.dingtalk.com/i/nodes/" +Flags: + --node string 文档 ID 或 URL (必填) +``` + +### 创建文档 +``` +Usage: + dws doc create [flags] +Example: + dws doc create --name "项目周报" + dws doc create --name "Q1 总结" --markdown "# Q1 总结" --folder + dws doc create --name "知识库文档" --workspace +Flags: + --name string 文档名称 (必填) + --folder string 目标文件夹 ID 或 URL + --workspace string 目标知识库 ID + --markdown string 文档初始 Markdown 内容 +``` + +### 创建其他类型文件 (表格/脑图/白板/多维表/画板) +``` +Usage: + dws doc file create [flags] +Example: + dws doc file create --name "项目周报" --type adoc + dws doc file create --name "数据统计" --type axls --folder + dws doc file create --name "思维导图" --type amind --workspace + dws doc file create --name "子文件夹" --type folder +Flags: + --name string 文件名称 (必填) + --type string 文件类型 (必填): adoc=文档, axls=表格, appt=演示, adraw=白板, amind=脑图, able=多维表, folder=文件夹 + --folder string 目标文件夹 ID 或 URL + --workspace string 目标知识库 ID 或 URL +``` + +### 更新文档内容 +``` +Usage: + dws doc update [flags] +Example: + dws doc update --node --markdown "# 追加内容" --mode append + dws doc update --node --markdown "# 完整替换" --mode overwrite +Flags: + --node string 文档 ID 或 URL (必填) + --markdown string Markdown 内容 (必填) + --mode string 更新模式: overwrite=覆盖, append=追加 (默认 append) +``` + +### 上传文件到钉钉文档或钉钉知识库 +``` +Usage: + dws doc upload [flags] +Example: + dws doc upload --file ./report.pdf + dws doc upload --file ./slides.pptx --name "Q1汇报.pptx" --folder + dws doc upload --file ./data.xlsx --workspace --convert +Flags: + --file string 本地文件路径 (必填) + --name string 文件显示名称 (默认使用文件名) + --folder string 目标文件夹 ID 或 URL + --workspace string 目标知识库 ID + --convert 是否转换为钉钉在线文档 +``` + +### 下载文件到本地 +``` +Usage: + dws doc download [flags] +Example: + dws doc download --node + dws doc download --node --output ./report.pdf + dws doc download --node "https://alidocs.dingtalk.com/i/nodes/" --output ~/downloads/ +Flags: + --node string 文件节点 ID 或 URL (必填) + --output string 本地保存路径 (文件路径或目录,必填) +``` + +### 创建文件夹 +``` +Usage: + dws doc folder create [flags] +Example: + dws doc folder create --name "项目资料" + dws doc folder create --name "子文件夹" --folder +Flags: + --name string 文件夹名称 (必填) + --folder string 父文件夹 ID 或 URL + --workspace string 目标知识库 ID +``` + +### 复制文档/文件 +``` +Usage: + dws doc copy [flags] +Example: + dws doc copy --node --folder + dws doc copy --node --workspace + dws doc copy --node "https://alidocs.dingtalk.com/i/nodes/" --folder +Flags: + --node string 源文档/文件 ID 或 URL (必填) + --folder string 目标文件夹 ID 或 URL + --workspace string 目标知识库 ID 或 URL (不传 --folder 时复制到该知识库根目录) +``` + +### 移动文档/文件 +``` +Usage: + dws doc move [flags] +Example: + dws doc move --node --folder + dws doc move --node --workspace +Flags: + --node string 源文档/文件 ID 或 URL (必填) + --folder string 目标文件夹 ID 或 URL + --workspace string 目标知识库 ID 或 URL (不传 --folder 时移动到该知识库根目录) +``` + +### 重命名文档/文件 +``` +Usage: + dws doc rename [flags] +Example: + dws doc rename --node --name "新名称" + dws doc rename --node "https://alidocs.dingtalk.com/i/nodes/" --name "项目周报 v2" +Flags: + --node string 文档/文件 ID 或 URL (必填) + --name string 新名称 (必填) +``` + +### 查询块元素 +``` +Usage: + dws doc block list [flags] +Example: + dws doc block list --node + dws doc block list --node --start-index 0 --end-index 5 + dws doc block list --node --block-type heading +Flags: + --node string 文档 ID 或 URL (必填) + --start-index int 起始位置 (从 0 开始) + --end-index int 终止位置 (含) + --block-type string 按块类型过滤 +``` + +### 插入块元素 +``` +Usage: + dws doc block insert [flags] +Example: + dws doc block insert --node --text "这是一段文字" + dws doc block insert --node --heading "二级标题" --level 2 + dws doc block insert --node --element '{"blockType":"paragraph","paragraph":{"text":"内容"}}' + dws doc block insert --node --text "在此处之前插入" --ref-block --where before +Flags: + --node string 文档 ID 或 URL (必填) + --text string 快捷: 段落文本内容 + --heading string 快捷: 标题文本 + --level int 标题级别 1-6 (配合 --heading,默认 1) + --element string 块元素 JSON (高级) + --index int 参照位置索引 (从 0 开始) + --where string 插入方向: before / after (默认 after) + --ref-block string 参照块 ID (优先级高于 --index) +``` + +### 更新块元素 +``` +Usage: + dws doc block update [flags] +Example: + dws doc block update --node --block-id --text "新内容" + dws doc block update --node --block-id --element '{"blockType":"heading","heading":{"text":"新标题","level":1}}' +Flags: + --node string 文档 ID 或 URL (必填) + --block-id string 目标块 ID (必填) + --text string 快捷: 段落文本内容 + --heading string 快捷: 标题文本 + --level int 标题级别 1-6 (配合 --heading,默认 1) + --element string 块元素 JSON (高级) +``` + +### 删除块元素 + +> **CAUTION:** 不可逆操作 — 执行前必须向用户确认。 + +``` +Usage: + dws doc block delete [flags] +Example: + dws doc block delete --node --block-id --yes +Flags: + --node string 文档 ID 或 URL (必填) + --block-id string 目标块 ID (必填) +``` + +### 查询文档评论列表 +``` +Usage: + dws doc comment list [flags] +Example: + dws doc comment list --node + dws doc comment list --node --type inline --resolve-status unresolved + dws doc comment list --node --page-size 20 --next-token +Flags: + --node string 目标文档的标识,支持传入 URL 或 ID (必填) + --page-size int 每页返回的评论数量,默认 50,最大 50 + --next-token string 分页游标,从上一次请求的返回结果中获取 (首次请求不传) + --type string 按评论类型过滤: global (全文评论) / inline (划词评论) + --resolve-status string 按解决状态过滤: resolved (已解决) / unresolved (未解决) +``` + +### 创建文档评论 +``` +Usage: + dws doc comment create [flags] +Example: + dws doc comment create --node --content "这里需要修改" + dws doc comment create --node --content "请review" --mention uid1,uid2 +Flags: + --node string 目标文档的标识,支持传入 URL 或 ID (必填) + --content string 评论的文字内容,纯文本 (必填) + --mention string 被 @ 的用户 uid 列表,逗号分隔 +``` + +### 创建划词评论 (内联评论) +``` +Usage: + dws doc comment create-inline [flags] +Example: + dws doc comment create-inline --node --block-id --start 0 --end 10 --content "这里需要修改" + dws doc comment create-inline --node --block-id --start 5 --end 20 --content "建议调整" --selected-text "被选中的原文" + dws doc comment create-inline --node --block-id --start 0 --end 10 --content "请review" --mention uid1,uid2 +Flags: + --node string 目标文档的标识,支持传入 URL 或 ID (必填) + --block-id string 评论锚定所在的块 ID (必填,可通过 dws doc block list 获取) + --start int 选中文本在块内的起始字符偏移量,从 0 开始 (必填) + --end int 选中文本在块内的结束字符偏移量,必须大于 start (必填) + --content string 评论的文字内容,纯文本 (必填) + --selected-text string 选中文本内容,填写后评论列表会展示「引用原文:xxx」 + --mention string 被 @ 的用户 uid 列表,逗号分隔 +``` + +### 回复文档评论 +``` +Usage: + dws doc comment reply [flags] +Example: + dws doc comment reply --node --comment-key --content "同意" + dws doc comment reply --node --comment-key --content "比心" --emoji + dws doc comment reply --node --comment-key --content "请确认" --mention uid1,uid2 +Flags: + --node string 目标文档的标识,支持传入 URL 或 ID (必填) + --content string 回复的文字内容,表情回复时填写表情名称 (必填) + --comment-key string 被回复评论的 commentKey,格式: {13位毫秒时间戳}{32位UUID},可从 list/create 结果获取 (必填) + --emoji 设为 true 时作为表情贴图回复 (默认 false) + --mention string 被 @ 的用户 uid 列表,逗号分隔 +``` + +## URL 识别与 DOC_ID 提取 + +当用户输入包含钉钉文档 URL 时,**必须先识别并提取 DOC_ID**,再判断意图。 + +### 支持的 URL 格式 + +| 格式 | 示例 | DOC_ID 提取方式 | +|------|------|----------------| +| `alidocs.dingtalk.com/i/nodes/{id}` | `https://alidocs.dingtalk.com/i/nodes/9E05BDRVQePjzLkZt2p2vE7kV63zgkYA` | 取 URL 路径最后一段:`9E05BDRVQePjzLkZt2p2vE7kV63zgkYA` | +| `alidocs.dingtalk.com/i/nodes/{id}?queryParams` | `https://alidocs.dingtalk.com/i/nodes/abc123?doc_type=wiki_doc` | 忽略 query 参数,取路径最后一段:`abc123` | + +### 提取规则 + +1. 匹配 URL 中 `alidocs.dingtalk.com` 域名 +2. 取 URL path 的最后一段作为 DOC_ID(去掉 query string 和 fragment) +3. 提取出的 DOC_ID 可直接用于所有 `--node` 参数,也可将完整 URL 传给 `--node`(CLI 会自动解析) + +### 处理流程 + +``` +用户输入含 alidocs.dingtalk.com URL + → 提取 DOC_ID(URL 路径最后一段) + → 结合用户意图选择命令(默认 read) + → 将 DOC_ID 传给 --node 参数 +``` + +## 意图判断 + +用户说"找文档/搜文档/最近文档": +- 搜索 → `search` +- 浏览 → `list` + +用户说"看文档/读内容/文档内容": +- 读取 → `read` (需文档 ID 或 URL) +- 元信息 → `info` + +用户说"写文档/创建文档": +- 新建纯文档 (adoc) → `create` +- 追加内容 → `update --mode append` +- 覆盖替换 → `update --mode overwrite` + +用户说"新建表格/脑图/白板/多维表/演示文稿": +- 用 `file create --type` 指定类型 (axls/amind/adraw/able/appt/adraw) + +用户说"建文件夹/新建目录": +- 创建 → `folder create` 或 `file create --type folder` + +用户说"复制文档/拷贝一份": +- 复制 → `copy` (需源 --node 和目标 --folder/--workspace) + +用户说"移动文档/换个目录": +- 移动 → `move` (需源 --node 和目标 --folder/--workspace) + +用户说"改文档名字/重命名": +- 改名 → `rename` (需 --node 和新 --name) + +用户说"上传文件/传文件/上传到文档/上传到知识库": +- 上传 → `upload`(需本地文件路径) +- 上传并转换 → `upload --convert` + +用户说"下载文件/导出文件/下载到本地": +- 下载 → `download`(需文件节点 ID 或 URL) + +用户说"编辑块/改段落/插入标题/删除块": +- 查看结构 → `block list` +- 插入 → `block insert` +- 修改 → `block update` +- 删除 → `block delete` + +**用户直接粘贴文档 URL(无其他指令)**: +- 默认 → `read`(读取文档内容) +- 如 URL 明显是文件夹 → `list`(列出文件夹内容) + +**用户粘贴 URL + 附加指令**: +- "帮我看看这个文档" → `read` +- "这个文档的信息" → `info` +- "往这个文档追加内容" → `update --mode append` +- "编辑这个文档的标题" → `block update` + +关键区分: doc(文档编辑/阅读) vs aitable(数据表格操作) vs drive(钉盘文件管理) + +## 核心工作流 + +```bash +# ── 工作流 1: 浏览并阅读文档 ── + +# 1. 浏览我的文档根目录 +dws doc list --format json + +# 2. 浏览子文件夹 +dws doc list --folder --format json + +# 3. 获取文档元信息 (标题、类型、权限) +dws doc info --node --format json + +# 4. 读取文档内容 (Markdown 格式) +dws doc read --node --format json + +# ── 工作流 2: 创建文档并写入内容 ── + +# 1. (可选) 创建文件夹 — 提取 nodeId +dws doc folder create --name "项目资料" --format json + +# 2. 创建文档 — 提取 nodeId +dws doc create --name "项目周报" --folder --format json + +# 3. 写入内容 (追加模式) +dws doc update --node --markdown "# 本周总结\n\n- 完成了 A\n- 推进了 B" --mode append --format json + +# ── 工作流 3: 一步创建带内容的文档 ── + +dws doc create --name "会议纪要" --markdown "# 会议纪要\n\n## 议题\n\n1. ..." --format json + +# ── 工作流 4: 上传本地文件到钉钉文档/知识库 ── + +# 1. 上传到"我的文档"根目录 +dws doc upload --file ./report.pdf + +# 2. 上传到指定文件夹 +dws doc upload --file ./slides.pptx --name "Q1汇报.pptx" --folder + +# 3. 上传到知识库并转换为在线文档 +dws doc upload --file ./data.xlsx --workspace --convert + +# ── 工作流 5: 下载文件到本地 ── + +# 1. 下载到当前目录 (自动推断文件名) +dws doc download --node + +# 2. 下载到指定路径 +dws doc download --node --output ./report.pdf + +# 3. 下载到指定目录 (自动推断文件名) +dws doc download --node --output ~/downloads/ + +# ── 工作流 6: 块级精细编辑 ── + +# 1. 查看文档块结构 — 获取 blockId +dws doc block list --node --format json + +# 2. 在文档末尾插入段落 +dws doc block insert --node --text "新增内容" + +# 3. 在指定块之前插入标题 +dws doc block insert --node --heading "新章节" --level 2 --ref-block --where before + +# 4. 更新某个块的内容 +dws doc block update --node --block-id --text "修改后的内容" + +# 5. 删除块 +dws doc block delete --node --block-id --yes + +# ── 工作流 7: 文档评论管理 ── + +# 1. 查看文档的所有评论 +dws doc comment list --node --format json + +# 2. 在文档上创建全文评论 +dws doc comment create --node --content "这里需要补充数据来源" --format json + +# 3. 创建评论并 @ 相关人 +# 先搜索用户: dws contact user search --query "张三" --format json → 提取 userId +# 再将 userId 传入 --mention +dws doc comment create --node --content "请确认这部分内容" --mention , --format json + +# 4. 对某段文字创建划词评论(需先 block list 拿 blockId 和字符偏移) +dws doc block list --node --format json +dws doc comment create-inline --node --block-id --start 0 --end 12 \ + --content "这里的数据要复核" --selected-text "被选中的原文片段" --format json + +# 5. 回复某条评论(commentKey 从 list 或 create 返回中获取) +dws doc comment reply --node --comment-key --content "已修改" --format json + +# 6. 用表情回复评论 +dws doc comment reply --node --comment-key --content "比心" --emoji --format json + +# ── 工作流 8: 创建非文档类型文件 ── + +# 创建表格 / 脑图 / 白板 / 多维表 / 演示文稿 +dws doc file create --name "销售数据" --type axls --folder --format json +dws doc file create --name "需求脑图" --type amind --workspace --format json +dws doc file create --name "Q1 立项会" --type appt --format json + +# ── 工作流 9: 整理文档结构 (复制 / 移动 / 重命名) ── + +# 1. 把模板复制到目标目录作为新工作件 +dws doc copy --node --folder --format json + +# 2. 把文档从个人空间挪到团队知识库 +dws doc move --node --workspace --format json + +# 3. 重命名 +dws doc rename --node --name "项目周报 v2" --format json +``` + +## 上下文传递表 + +| 操作 | 从返回中提取 | 用于 | +|------|-------------|------| +| `list` | `nodes[].nodeId` | read / info / update / block 操作的 --node | +| `list` | folder 类型的 `nodeId` | list 的 --folder, create 的 --folder | +| `search` | 文档 `nodeId` / URL / `createTime` / `creatorUid` | read / info / update 的 --node;创建时间与创建者信息 | +| `create` | `nodeId` | update / block 操作的 --node | +| `folder create` | `nodeId` | create / list / upload 的 --folder | +| `block list` | `blockId` | block insert 的 --ref-block, block update/delete 的 --block-id | +| `upload` | `nodeId` / URL | 上传后文件的访问链接 | +| `download` | 本地文件路径 | 下载后的文件保存位置 | +| `comment list` | `commentList[].commentKey` | comment reply 的 --comment-key | +| `comment create` / `comment create-inline` | `commentKey` | comment reply 的 --comment-key | +| `block list` | `blockId` + 文本内容 | comment create-inline 的 --block-id 及 --start/--end 计算 | +| `contact user search` | `userId` | comment create / create-inline / reply 的 --mention | +| `file create` | `nodeId` | 后续 read / update / block 操作的 --node(仅 adoc 支持 read/update,axls/amind 等类型用各自产品的命令) | +| `copy` / `move` | 新 `nodeId`(copy)或原 nodeId(move) | 后续 read / info 等的 --node | + +## nodeId 双格式说明 + +所有 `--node` 参数同时支持两种格式,系统自动识别: +- **文档 ID**: 字母数字字符串,如 `9E05BDRVQePjzLkZt2p2vE7kV63zgkYA` +- **文档 URL**: `https://alidocs.dingtalk.com/i/nodes/{dentryUuid}`,如 `https://alidocs.dingtalk.com/i/nodes/9E05BDRVQePjzLkZt2p2vE7kV63zgkYA` + +两种方式等价,以下命令效果相同: +```bash +dws doc read --node 9E05BDRVQePjzLkZt2p2vE7kV63zgkYA +dws doc read --node "https://alidocs.dingtalk.com/i/nodes/9E05BDRVQePjzLkZt2p2vE7kV63zgkYA" +``` + +`--folder` 参数同样支持文件夹 URL 或 ID。 + +## 注意事项 + +- `update --mode overwrite` 会**清空原内容后重写**,⚠️ 谨慎使用;默认 `--mode append` (追加) 更安全 +- `read` 返回 Markdown 格式的文档内容,仅限有"下载"权限的文档 +- `create` 不传 `--folder` 和 `--workspace` 时,默认创建在"我的文档"根目录 +- `block list/insert/update/delete` 是块级精细编辑,适合结构化修改;简单内容追加建议用 `update --mode append` +- `block insert` 优先使用 `--text` 或 `--heading` 快捷方式;复杂块类型 (table, callout 等) 使用 `--element` JSON +- `markdown` 参数中的换行必须使用**真实换行符**(即实际的换行字符,Unicode `U+000A`),而不是字面量字符串 `\n`(反斜杠加字母 n)。在通过程序或大模型构造此参数时,请确保字符串在发送前已正确反转义。如果传入的是两个字符的字面量 `\n`,所有内容将渲染在同一行,导致标题、段落和表格格式全部错乱。 +- 块类型包括: paragraph, heading, blockquote, callout, columns, orderedList, unorderedList, table, sheet, attachment, slot +- 关键区分: doc(文档编辑/阅读) vs aitable(数据表格操作) vs drive(钉盘文件管理) +- `upload` 支持上传任意类型文件 (PDF、Office、图片等) 到钉钉文档空间或知识库;`--convert` 可将 Office 文件转换为钉钉在线文档 +- `upload` 是三步自动完成的流程 (获取凭证 → OSS 上传 → 提交入库),无需手动分步操作 +- `download` 是两步自动完成的流程 (获取下载链接 → HTTP GET 下载),支持自动推断文件名;`--output` 可指定文件路径或目录 +- `create` 只能建"文档"(adoc);要建表格/脑图/白板/多维表/演示/文件夹,用 `file create --type` +- `copy` 需要对源节点有"阅读"权限、对目标目录有"编辑"权限;`move` 需要对源节点有"管理"权限 +- `copy` / `move` 不传 `--folder` 时,`--workspace` 表示放到知识库根目录;两者都不传则回落到"我的文档" +- `comment create` 是全文评论;`comment create-inline` 是划词评论,必须先 `block list` 拿到 `blockId` 并确定 `--start` / `--end` 偏移(按块内纯文本字符算,从 0 开始) + +## 自动化脚本 + +| 脚本 | 场景 | 用法 | +|------|------|------| +| [doc_create_and_write.py](../../scripts/doc_create_and_write.py) | 创建文档并写入 Markdown 内容 | `python doc_create_and_write.py --name "周报" --content "# 本周总结"` | + +## 相关产品 + +- [aitable](./aitable.md) — 结构化数据表格(行列/字段/记录),不是富文本文档 +- [drive](./drive.md) — 钉盘文件存储/上传/下载,不是文档内容编辑 +- [report](./report.md) — 钉钉日志系统(日报/周报模版),不是在线文档 diff --git a/skills/dws/references/products/drive.md b/skills/dws/references/products/drive.md new file mode 100644 index 0000000..2d1a156 --- /dev/null +++ b/skills/dws/references/products/drive.md @@ -0,0 +1,177 @@ +# 钉盘 (drive) 命令参考 + +钉盘 = DingTalk Drive,用于云端文件存储 / 上传 / 下载 / 目录管理。不是在线文档编辑;要编辑文档请用 [doc](./doc.md)。 + +## 命令总览 + +### 列出钉盘目录 +``` +Usage: + dws drive list [flags] +Example: + dws drive list + dws drive list --parent-id + dws drive list --parent-id --max 20 --order-by modifiedTime --order desc +Flags: + --parent-id string 父目录 ID (不传则列根目录) + --space-id string 钉盘空间 ID (一般无需指定) + --max int 每页数量 (默认 20) + --next-token string 分页游标 (从上次结果的 nextToken 获取) + --order-by string 排序字段: name / createdTime / modifiedTime + --order string 排序方向: asc / desc + --thumbnail 是否返回缩略图链接 +``` + +### 获取文件元信息 +``` +Usage: + dws drive info [flags] +Example: + dws drive info --file-id +Flags: + --file-id string 文件或文件夹 ID (必填) + --space-id string 钉盘空间 ID (一般无需指定) +``` + +### 创建文件夹 +``` +Usage: + dws drive mkdir [flags] +Example: + dws drive mkdir --name "项目资料" + dws drive mkdir --name "子目录" --parent-id +Flags: + --name string 文件夹名称 (必填) + --parent-id string 父目录 ID (不传则建在根目录) + --space-id string 钉盘空间 ID (一般无需指定) +``` + +### 获取下载临时链接 +``` +Usage: + dws drive download [flags] +Example: + dws drive download --file-id +Flags: + --file-id string 文件 ID (必填) + --space-id string 钉盘空间 ID (一般无需指定) +``` + +### 获取上传凭证 (上传第一步) +``` +Usage: + dws drive upload-info [flags] +Example: + dws drive upload-info --file-name "report.pdf" --file-size 102400 + dws drive upload-info --file-name "slides.pptx" --file-size 512000 --parent-id +Flags: + --file-name string 文件名含后缀 (必填) + --file-size int 文件大小,单位字节 (必填) + --mime-type string MIME 类型 (可选,服务端会自动推断) + --parent-id string 父目录 ID (不传则上传到根目录) + --space-id string 钉盘空间 ID (一般无需指定) +``` + +### 提交上传 (上传第三步) +``` +Usage: + dws drive commit [flags] +Example: + dws drive commit --file-name "report.pdf" --file-size 102400 --upload-id +Flags: + --file-name string 文件名含后缀 (必填,须与 upload-info 一致) + --file-size int 文件大小,单位字节 (必填,须与 upload-info 一致) + --upload-id string upload-info 返回的 uploadId (必填) + --parent-id string 父目录 ID (必填时须与 upload-info 一致) + --space-id string 钉盘空间 ID (一般无需指定) + --conflict-handler string 同名冲突策略: AUTO_RENAME / OVERWRITE / RETURN_DENTRY_IF_EXIST (默认 AUTO_RENAME) +``` + +## 意图判断 + +用户说"钉盘有什么文件/列钉盘/看钉盘目录" → `list` +用户说"钉盘文件详情/文件信息" → `info` (需 fileId) +用户说"新建钉盘目录/钉盘里建文件夹" → `mkdir` +用户说"下载钉盘文件/把这个文件拿下来" → `download` 拿临时 URL,再由 Agent 自行发起 HTTP GET +用户说"上传文件到钉盘/把本地文件传钉盘": +- 三步走: `upload-info` → HTTP PUT 到预签名 URL → `commit` +- **没有**一条聚合命令可以完成;必须完整走完三步 + +关键区分: +- drive(钉盘云存储,面向文件二进制) vs doc(在线文档/知识库,面向富文本内容) +- 把图片/文件发到群里一般走 drive 上传拿链接 → chat 发送 Markdown 链接 (见 [chat.md](./chat.md) 的 `drive → chat` 工作流) + +## 核心工作流 + +```bash +# ── 工作流 1: 浏览钉盘 ── + +# 1. 看根目录 +dws drive list --format json + +# 2. 进入子目录 (parentId 取自上一步的 dentryUuid) +dws drive list --parent-id --format json + +# 3. 看单个文件的元信息 +dws drive info --file-id --format json + +# ── 工作流 2: 上传本地文件到钉盘 (三步不能省) ── + +# Step 1: 拿上传凭证 +dws drive upload-info --file-name "report.pdf" --file-size 102400 --parent-id --format json +# → 返回: resourceUrl (预签名 URL), headers, uploadId + +# Step 2: Agent 自己发 HTTP PUT 把文件二进制推到 resourceUrl +# 请求头必须携带返回的 headers 全部键值对;期望 HTTP 200 +curl -X PUT -T ./report.pdf -H ": " "" + +# Step 3: 提交入库 +dws drive commit --file-name "report.pdf" --file-size 102400 --upload-id \ + --parent-id --format json +# → 返回: dentryUuid (= 后续 download/info 用的 fileId) + +# ── 工作流 3: 下载钉盘文件到本地 (两步) ── + +# Step 1: 拿临时下载 URL +dws drive download --file-id --format json +# → 返回: resourceUrl (带签名的临时下载 URL), expirationSeconds + +# Step 2: Agent 自己发 HTTP GET 下载二进制 +curl -o ./report.pdf "" + +# ── 工作流 4: 建目录后批量上传 ── + +# 1. 建目录 → 拿 folderId +dws drive mkdir --name "2026 Q1 归档" --format json + +# 2. 再走 "工作流 2" 把每个文件上传到该目录 +``` + +## 上下文传递表 + +| 操作 | 从返回中提取 | 用于 | +|------|-------------|------| +| `list` | `dentryUuid` (folder 类) | 下次 list 的 --parent-id、upload-info / commit 的 --parent-id、mkdir 的 --parent-id | +| `list` | `dentryUuid` (file 类) | info / download 的 --file-id | +| `list` | `nextToken` | 下次 list 的 --next-token | +| `mkdir` | `dentryUuid` | 作为父目录传给 upload-info / commit 的 --parent-id | +| `upload-info` | `resourceUrl` + `headers` | Agent 自行执行 HTTP PUT 上传二进制 | +| `upload-info` | `uploadId` | commit 的 --upload-id | +| `commit` | `dentryUuid` | download / info / chat message 发送图片链接的 --file-id | +| `download` | `resourceUrl` | Agent 自行执行 HTTP GET 下载;也可作为 Markdown 图片/附件链接发送到 chat | + +## 注意事项 + +- 上传是**三步**流程:`upload-info` → 客户端 HTTP PUT 到预签名 URL → `commit`。**没有**自动聚合命令,跳过任何一步都会失败 +- Step 2 的 HTTP PUT 必须把 upload-info 返回的 `headers` 全部回传,`Content-Type` 通常要留空;只有 PUT 返回 200 才能调 `commit` +- 上传凭证 (`uploadId`) 有过期时间,拿到后尽快 commit;过期需重新调 `upload-info` +- `download` 只返回临时 URL(几分钟级别有效期),不会把文件落地;要真正下载到本地必须再发 HTTP GET +- `--parent-id` 在 upload-info / commit 中要保持一致,否则 commit 会报位置不匹配 +- `--conflict-handler` 默认 `AUTO_RENAME` (自动重命名);`OVERWRITE` 覆盖同名文件前必须和用户确认 +- `--space-id` 绝大多数场景不需要传;默认会用用户主钉盘空间 +- 文件名规则:头尾不能有空格;不能含 `*`、`"`、`<`、`>`、`|`、制表符;不能以 `.` 结尾 + +## 相关产品 + +- [doc](./doc.md) — 钉钉在线文档 / 知识库(文字、表格、脑图等富文本节点),和 drive 的裸文件存储不同 +- [chat](./chat.md) — 结合 drive 发送图片 / 附件消息到群聊(Markdown 链接语法) diff --git a/skills/dws/references/products/mail.md b/skills/dws/references/products/mail.md new file mode 100644 index 0000000..97f62b1 --- /dev/null +++ b/skills/dws/references/products/mail.md @@ -0,0 +1,160 @@ +# 邮箱 (mail) 命令参考 + +## 命令总览 + +### 查询可用邮箱地址 +``` +Usage: + dws mail mailbox list [flags] +Example: + dws mail mailbox list +``` + +**返回字段:** + +| 字段 | 类型 | 说明 | +|------|------|------| +| `mailboxes` | `List[]` | 邮箱列表,每条包含邮箱地址、账号类型、所属企业 | + +### 搜索邮件 (KQL 语法) +``` +Usage: + dws mail message search [flags] +Example: + dws mail message search --email user@company.com --query "subject:\"周报\"" --size 20 + dws mail message search --email user@company.com --query "from:alice AND date>2025-06-01T00:00:00Z" --size 10 +Flags: + --cursor string 邮件的起始偏移标识, 其值取自响应中的nextCursor字段。""表示从头开始 + --email string 搜索目标邮箱地址 (必填) + --query string KQL 查询表达式 (必填), 其中 date 格式需遵循 ISO8601 规范 + --size string 每页返回数量(最大限制 100, 默认 20) (必填),别名: --limit, --page-size +``` + +KQL 查询字段: date, size, tag, folderId, isRead, hasAttachments, subject, attachname, body, from, to +常用文件夹 ID: 1=已发送, 2=收件箱, 3=垃圾邮件, 5=草稿, 6=已删除 + +### KQL 查询字段说明 + +| 字段 | 类型 | 说明 | 正确示例 | 错误示例 | +|------|------|------|----------|----------| +| `date` | ISO8601 日期时间 | 邮件日期,支持 `>` `<` `>=` `<=` 比较运算符 | `date>2025-06-01T00:00:00Z` | `date>2025-06-01`(缺少时间部分) | +| `size` | 整数(字节数) | 邮件大小,支持 `>` `<` `>=` `<=` 比较运算符 | `size>1024` | `size>"1024"`(值不需要引号) | +| `tag` | 字符串 | 邮件标签 | `tag:important` | `tag:""` | +| `folderId` | 整数 | 文件夹 ID(1=已发送, 2=收件箱, 3=垃圾邮件, 5=草稿, 6=已删除) | `folderId:2` | `folderId:"收件箱"`(必须用数字 ID) | +| `isRead` | 布尔 `true`/`false` | 是否已读 | `isRead:false` | `isRead:0`、`isRead:"false"`(不支持数字或字符串形式) | +| `hasAttachments` | 布尔 `true`/`false` | 是否有附件 | `hasAttachments:true` | `hasAttachments:yes` | +| `subject` | 字符串 | 邮件主题,含空格须加双引号 | `subject:周报`、`subject:"项目 进展"` | `subject:项目 进展`(含空格未加引号) | +| `attachname` | 字符串 | 附件文件名,含空格须加双引号 | `attachname:report.pdf`、`attachname:"月度 报告.xlsx"` | `attachname:月度 报告.xlsx`(含空格未加引号) | +| `body` | 字符串 | 邮件正文内容,含空格须加双引号 | `body:会议纪要`、`body:"Q1 总结"` | `body:Q1 总结`(含空格未加引号) | +| `from` | 字符串(邮件地址或名称) | 发件人,支持:纯邮件地址、纯名称(含空格须加双引号)、`"名称<邮件地址>"` 格式 | `from:alice@company.com`、`from:"张 三"`、`from:"alice"` | `from:张 三`(含空格未加引号) | +| `to` | 字符串(邮件地址或名称) | 收件人,支持:纯邮件地址、纯名称(含空格须加双引号)、`"名称<邮件地址>"` 格式 | `to:bob@company.com`、`to:"李 四"`、`to:"alice"` | `to:李 四`(含空格未加引号) | + +**组合查询说明:** +- 支持 `AND` / `OR` / `NOT` 逻辑运算符(大写) +- 括号用于分组:`(from:alice OR from:bob) AND folderId:2` +- 排除特定文件夹:`(NOT folderId:3) AND (NOT folderId:6)` + +### message search 返回值说明 + +| 字段 | 类型 | 说明 | +|------|------|------| +| `messages` | `List[]` | 邮件列表,每条包含邮件 ID 及元信息(不含正文) | +| `total` | `int32` | 符合条件的总邮件数 | +| `nextCursor` | `string` | 下一页游标,传入 `--cursor` 翻页;值为 `$` 表示已到达列表尾部 | + +**翻页示例:** +```bash +# 第一页 +dws mail message search --email user@company.com --query "folderId:2" --size 20 --format json +# 取返回中的 nextCursor,传入下一次请求(nextCursor="$" 时停止) +dws mail message search --email user@company.com --query "folderId:2" --size 20 --cursor --format json +``` + +### 查看邮件完整内容 +``` +Usage: + dws mail message get [flags] +Example: + dws mail message get --email user@company.com --id +Flags: + --email string 邮件所属邮箱地址 (必填) + --id string 邮件 ID (必填) +``` + +**返回字段:** + +| 字段 | 类型 | 说明 | +|------|------|------| +| `message` | `object` | 邮件完整信息,包含主题、发件人、收件人、正文、附件等 | + +### 发送邮件 +``` +Usage: + dws mail message send [flags] +Example: + dws mail message send --from user@company.com --to colleague@company.com \ + --subject "周报" --body "本周完成任务A和任务B" +Flags: + --body string 邮件正文,支持 Markdown 格式 (必填) + --cc string 抄送人列表 + --from string 发件人邮箱 (必填),别名: --sender + --subject string 邮件标题 (必填) + --to string 收件人列表 (必填) +``` + +## 通用错误说明 + +以下错误适用于所有 mail 命令。 + +| 错误标识 | 含义 | 处理建议 | +|----------|------|----------| +| `domain.notFound` | 该用户的邮箱不是由钉钉邮箱托管,无法完成操作 | 确认邮箱是否已开通钉钉企业邮箱服务 | + +## 意图判断 + +用户说"我的邮箱/邮箱地址" → `mailbox list` +用户说"找邮件/搜邮件/查邮件" → `message search` +用户说"看邮件/打开邮件/邮件内容" → 先 `message search` 获取 messageId,再 `message get` +用户说"发邮件/写邮件" → 先 `mailbox list` 获取发件地址,再 `message send` +用户说"给(某人名字)发邮件" → 先 `aisearch person` 获取 userId,再 `contact user get` 获取收件人邮箱,再 `message send` + + +## 严格禁止 (NEVER DO) +- 明确禁止猜测、假设、推断发件人和收件人邮箱 +- 无法获取邮箱时,强引导ask_human,由用户确认,不要通过假设或其他方式继续执行 + +## 核心工作流 + +```bash +# 1. 查看可用邮箱 — 提取邮箱地址 +dws mail mailbox list --format json + +# 2. 搜索邮件 — 提取 messageId +dws mail message search --email user@company.com \ + --query "subject:\"周报\" AND date>2025-06-01T00:00:00Z" --size 10 --format json + +# 3. 查看邮件详情 +dws mail message get --email user@company.com --id --format json + +# 4. 发送邮件 +dws mail message send --from user@company.com --to colleague@company.com \ + --subject "周报" --body "本周完成…" --format json +``` + +## 上下文传递表 + +| 操作 | 从返回中提取 | 用于 | +|------|-------------|------| +| `mailbox list` | 邮箱地址 | message search/get/send 的 --email/--from | +| `message search` | `messageId` | message get 的 --id | +| `aisearch person` → `contact user get` | 用户邮箱 (orgAuthEmail) | message send 的 --to/--cc (跨产品) | + +## 注意事项 + +- `mailbox list` 返回用户所有邮箱(含个人和企业),每条记录包含邮箱地址、账号类型、所属企业。选择邮箱时优先匹配用户当前所在企业的企业邮箱;若有多个可选,向用户确认后再操作 +- `message search` 返回邮件 ID 和元信息(不含正文),需 `message get` 获取完整内容 +- KQL 查询支持 AND/OR/NOT 组合,字段值含空格时需用双引号 +- `--cc` 抄送人支持多人,逗号分隔 +- 收件人邮箱获取:用户只知道同事名字时,先通过 `dws aisearch person --keyword "名字" --dimension name` 获取 userId,再 `dws contact user get --ids ` 从返回中提取 orgAuthEmail 字段 + + diff --git a/skills/dws/references/products/minutes.md b/skills/dws/references/products/minutes.md new file mode 100644 index 0000000..6643684 --- /dev/null +++ b/skills/dws/references/products/minutes.md @@ -0,0 +1,369 @@ +# AI听记 (minutes) 命令参考 + +AI 听记:列表 / 详情 / 摘要 / 待办 / 文字稿 / 思维导图 / 发言人 / 热词 / 文件上传。 + +## 命令总览 + +### 查询我创建的听记列表 +``` +Usage: + dws minutes list mine [flags] +Example: + dws minutes list mine + dws minutes list mine --max 10 + dws minutes list mine --max 10 --next-token + dws minutes list mine --query "周会" +Flags: + --max float 查询的听记篇数 (默认 10) + --next-token string 分页 token (首页留空,后续填写前次返回的 nextToken) + --query string 关键字筛选 (可选) + --start string 开始时间 ISO-8601 (可选) + --end string 结束时间 ISO-8601 (可选) +``` + +查询我创建的听记列表,支持 `--max` 和 `--next-token` 分页,支持按关键字和时间范围筛选。 + +### 查询他人共享给我的听记列表 +``` +Usage: + dws minutes list shared [flags] +Example: + dws minutes list shared + dws minutes list shared --max 20 + dws minutes list shared --max 5 --next-token +Flags: + --max float 查询的听记篇数 (默认 10) + --next-token string 分页 token (首页留空,后续填写前次返回的 nextToken) + --query string 关键字筛选 (可选) + --start string 开始时间 ISO-8601 (可选) + --end string 结束时间 ISO-8601 (可选) +``` + +查询他人共享给我的听记列表,支持 `--max` 和 `--next-token` 分页,支持按关键字和时间范围筛选。 + +### 查询我有权限访问的所有听记列表 +``` +Usage: + dws minutes list all [flags] +Example: + dws minutes list all + dws minutes list all --max 20 + dws minutes list all --query "周会" --max 20 + dws minutes list all --start "2026-03-01T00:00:00+08:00" --end "2026-03-20T23:59:59+08:00" + dws minutes list all --max 10 --next-token +Flags: + --end string 结束时间 ISO-8601 (可选) + --query string 关键字筛选 (可选) + --max float 查询的听记篇数 (默认 10) + --next-token string 分页 token (首页留空,后续填写前次返回的 nextToken) + --start string 开始时间 ISO-8601 (可选) +``` + +查询我有权限访问的所有听记列表(包括我创建的、他人共享给我的等所有有权限的听记)。支持按关键字和时间范围筛选。时间范围和关键字为可选参数,不传则返回所有有权限的听记。支持使用 `--max` 和 `--next-token` 进行分页查询。 + +### 获取听记基础信息 +``` +Usage: + dws minutes get info [flags] +Example: + dws minutes get info --id +Flags: + --id string 听记 taskUuid (必填),取值逻辑参考 ## 注意事项 +``` + +返回字段: 创建人、开始时间、截止时间、听记标题、听记访问链接URL + +### 获取听记 AI 摘要 +``` +Usage: + dws minutes get summary [flags] +Example: + dws minutes get summary --id +Flags: + --id string 听记 taskUuid (必填),取值逻辑参考 ## 注意事项 +``` + +返回 Markdown 格式摘要,涵盖会议主题、核心结论、关键讨论点等 + +### 获取听记关键字列表 +``` +Usage: + dws minutes get keywords [flags] +Example: + dws minutes get keywords --id +Flags: + --id string 听记 taskUuid (必填),取值逻辑参考 ## 注意事项 +``` + +### 获取听记语音转写原文 +``` +Usage: + dws minutes get transcription [flags] +Example: + dws minutes get transcription --id + dws minutes get transcription --id --direction 1 +Flags: + --direction string 排序方向: 0=正序, 1=倒序 (默认 0) + --id string 听记 taskUuid (必填),取值逻辑参考 ## 注意事项 + --next-token string 下一页的token 首次查询可空 后续查询需填写前次请求返回的nextToken +``` + +每条记录包含: 发言人信息、转写文本、对应时间戳 + +### 获取听记中提取的待办事项 +``` +Usage: + dws minutes get todos [flags] +Example: + dws minutes get todos --id +Flags: + --id string 听记 taskUuid (必填),取值逻辑参考 ## 注意事项 +``` + +每条记录包含: 待办内容、待办唯一ID、参与人信息、待办时间 + +### 批量查询听记详情 +``` +Usage: + dws minutes get batch [flags] +Example: + dws minutes get batch --ids uuid1,uuid2,uuid3 +Flags: + --ids string 听记 taskUuid 列表,逗号分隔 (必填) +``` + +返回字段: 听记标题、时长、参与人列表、创建时间、taskUuid、听记状态 + +### 修改听记标题 +``` +Usage: + dws minutes update title [flags] +Example: + dws minutes update title --id --title "Q2 复盘会议" +Flags: + --id string 听记 taskUuid (必填),取值逻辑参考 ## 注意事项 + --title string 新标题 (必填) +``` + +### 覆盖听记 AI 摘要 +``` +Usage: + dws minutes update summary [flags] +Example: + dws minutes update summary --id --content "修订后的摘要 Markdown" +Flags: + --id string 听记 taskUuid (必填) + --content string 新的摘要正文 (必填),会整体覆盖原摘要 +``` + +将 AI 生成的摘要替换成定制版本,适合人工修订或按业务口径重写后回写。 + +### 全文替换听记文本 +``` +Usage: + dws minutes replace-text [flags] +Example: + dws minutes replace-text --id --search "小钉" --replace "DingTalk" +Flags: + --id string 听记 taskUuid (必填) + --search string 需要替换的原文 (必填) + --replace string 替换后的文本 (必填) +``` + +在转写段落与摘要中一次性替换所有命中文本,适合纠正系统性的识别错误(如专有名词)。 + +### 替换发言人标签 +``` +Usage: + dws minutes speaker replace [flags] +Example: + dws minutes speaker replace --id --from "说话人1" --to "张三" + dws minutes speaker replace --id --from "说话人1" --to "张三" --target-uid +Flags: + --id string 听记 taskUuid (必填) + --from string 原发言人昵称,如 "说话人1" (必填) + --to string 新发言人昵称 (必填) + --target-uid string 绑定到指定钉钉 userId (可选) +``` + +修正自动分离的发言人标签,可顺带把该说话人对应到真实用户。 + +### 添加个人热词 +``` +Usage: + dws minutes hot-word add [flags] +Example: + dws minutes hot-word add --words "钉钉,悟空,DWS" +Flags: + --words string 热词列表,逗号分隔 (必填) +``` + +把专有名词/业务术语写入个人热词库,后续听记的语音识别会优先匹配,用来兜底高频误识别。 + +### 生成思维导图 +``` +Usage: + dws minutes mind-graph create [flags] +Example: + dws minutes mind-graph create --id +Flags: + --id string 听记 taskUuid (必填) +``` + +异步任务:提交后返回 jobId,需要用 `mind-graph status` 轮询结果。 + +### 查询思维导图状态 +``` +Usage: + dws minutes mind-graph status [flags] +Example: + dws minutes mind-graph status --id +Flags: + --id string 听记 taskUuid (必填) +``` + +轮询 `mind-graph create` 的生成任务,就绪后返回思维导图内容。 + +### 创建文件上传会话 +``` +Usage: + dws minutes upload create [flags] +Example: + dws minutes upload create --file-name "会议录音.m4a" --file-size 10485760 --title "Q2 复盘" +Flags: + --file-name string 本地文件名 (必填) + --file-size string 文件大小,单位字节 (必填) + --title string 听记标题 (可选) + --template-id string 摘要模板 ID (可选) + --input-language string 语言,如 zh_CN / en_US (可选) + --enable-message-card string 是否推送消息卡片: true/false (可选) +``` + +三步上传的第 1 步:返回 sessionId 和预签名 URL,由调用方把本地音视频文件 HTTP PUT 到该 URL。 + +### 完成上传并生成听记 +``` +Usage: + dws minutes upload complete [flags] +Example: + dws minutes upload complete --session-id +Flags: + --session-id string upload create 返回的 sessionId (必填) +``` + +三步上传的第 3 步:通知服务端文件已上传完毕,触发转写与 AI 处理,返回新的 taskUuid。 + +### 取消上传 +``` +Usage: + dws minutes upload cancel [flags] +Example: + dws minutes upload cancel --session-id +Flags: + --session-id string upload create 返回的 sessionId (必填) +``` + +上传中途放弃或上游出错时释放会话,避免残留。 + +## 意图判断 + +用户说"我的听记/我创建的听记" → `list mine`(可附加 `--query`、`--start`、`--end` 筛选) +用户说"别人给我的听记/共享听记" → `list shared`(可附加 `--query`、`--start`、`--end` 筛选) +用户说"有权限的听记/我能访问的听记/所有听记" → `list all`(可附加 `--query`、`--start`、`--end` 筛选) +用户说"某时间段内的听记/按时间查听记/按关键词查听记" → 根据所属范围选择 `list mine`/`list shared`/`list all`,附加 `--start`、`--end`、`--query` 参数 +用户说"听记详情/听记信息" → `get info` +用户说"批量看听记/一次查多篇" → `get batch`(`--ids` 传逗号分隔 taskUuid) +用户说"摘要/总结/会议纪要" → `get summary` +用户说"关键字/关键词" → `get keywords` +用户说"原文/转写/录音文字" → `get transcription` +用户说"会议待办/听记待办" → `get todos` +用户说"改听记标题/重命名听记" → `update title` +用户说"改摘要/覆盖摘要/重写总结" → `update summary` +用户说"全文替换/批量改转写里的错字/专有名词搞错了" → `replace-text` +用户说"改发言人/把说话人1改成张三/认领发言人" → `speaker replace` +用户说"加热词/让后续识别更准/把某个专业术语教给系统" → `hot-word add` +用户说"生成思维导图/导图/脑图" → `mind-graph create`(异步),再 `mind-graph status` 轮询 +用户说"上传录音生成听记/把本地音视频变听记" → `upload create` → 本地 PUT → `upload complete`;放弃则 `upload cancel` +用户传入听记 URL(如 `https://shanji.dingtalk.com/app/transcribes/xxx`),从 URL 提取 taskUuid,再执行对应的 get/update 操作 + +## 核心工作流 + +```bash +# 1. 查看我的听记列表 — 提取 taskUuid +dws minutes list mine --format json +dws minutes list mine --max 10 --next-token --format json +dws minutes list mine --query "周会" --format json + +# 1b. 查看共享给我的听记 +dws minutes list shared --max 20 --format json +dws minutes list shared --query "日报" --format json + +# 1c. 查看我有权限访问的所有听记(支持关键字和时间范围筛选) +dws minutes list all --format json +dws minutes list all --query "周会" --start "2026-03-01T00:00:00+08:00" --end "2026-03-20T23:59:59+08:00" --format json + +# 2. 获取 AI 摘要 +dws minutes get summary --id --format json + +# 3. 查看完整转写原文 +dws minutes get transcription --id --format json + +# 4. 提取待办事项 +dws minutes get todos --id --format json + +# 5. 批量补齐多个 taskUuid 的详情 +dws minutes get batch --ids ,, --format json + +# 6. 修改标题 / 覆盖摘要 +dws minutes update title --id --title "新标题" --format json +dws minutes update summary --id --content "修订后的摘要 Markdown" --format json + +# 7. 修正转写错字 / 发言人标签 / 加热词 +dws minutes replace-text --id --search "小钉" --replace "DingTalk" --format json +dws minutes speaker replace --id --from "说话人1" --to "张三" --format json +dws minutes hot-word add --words "钉钉,悟空,DWS" --format json + +# 8. 异步生成思维导图(create 拿 jobId,status 轮询) +dws minutes mind-graph create --id --format json +dws minutes mind-graph status --id --format json + +# 9. 从本地音视频上传生成听记(三步走) +dws minutes upload create --file-name "会议录音.m4a" --file-size 10485760 --title "Q2 复盘" --format json +# → 拿到 sessionId 和预签名 URL,调用方自行 HTTP PUT 把文件推上去 +dws minutes upload complete --session-id --format json +# 放弃上传 +dws minutes upload cancel --session-id --format json +``` + +## 上下文传递表 + +| 操作 | 从返回中提取 | 用于 | +|------|-------------|------| +| `list mine` | `taskUuid`、`nextToken` | get/update 的 --id;翻页时 --next-token | +| `list shared` | `taskUuid`、`nextToken` | get/update 的 --id;翻页时 --next-token | +| `list all` | `taskUuid`、`nextToken` | get/update 的 --id;翻页时 --next-token | +| `get batch` | 各听记 `taskUuid` | 进一步查询详情 | +| `upload create` | `sessionId`、预签名 URL | 本地 PUT 上传 + `upload complete` / `upload cancel` 的 --session-id | +| `upload complete` | 新听记 `taskUuid` | 后续 get/update/mind-graph 的 --id | +| `mind-graph create` | 异步 jobId(随 taskUuid 关联) | `mind-graph status` 的 --id 查进度与结果 | + +## 注意事项 +- `taskUuid` 是听记的唯一标识,所有 get/update/mind-graph/speaker/replace-text 操作均以此为入参 +- 如果用户传入听记 URL(格式: `https://shanji.dingtalk.com/app/transcribes/`),直接从路径末段提取 taskUuid 作为 `--id` 参数,无需再调用 list 查询 +- `list mine`、`list shared`、`list all` 统一走 `list_by_keyword_and_time_range` 链路,通过 `belongingConditionId` 区分(`created` / `shared` / `noLimit`);三者均支持 `--max`、`--next-token` 分页及 `--query`、`--start`、`--end` 筛选 +- `list mine`、`list shared` 默认每页 20 条,`list all` 默认每页 10 条 +- `get info` 是单条查询;`get batch` 是批量补齐 ID 列表(`--ids` 逗号分隔),用在"有一串 taskUuid,想一次拿标题/时长/参与人"的场景 +- `get summary` 返回 AI 生成的结构化 Markdown 摘要;`update summary` 会整体覆盖原摘要,不做增量合并 +- `get transcription` 的 `--direction` 控制时间排序: 0=正序(默认), 1=倒序 +- `replace-text` 是系统性纠错:命中即替换,整篇转写与摘要一起改,慎用模糊文本 +- `speaker replace` 只改"标签",不重跑说话人分离;`--target-uid` 可顺带把该说话人绑定到真实 userId +- `hot-word add` 作用于**个人**热词库,只对本人后续的听记识别生效 +- `mind-graph create` 是异步:调用后立即返回,需要用 `mind-graph status --id ` 轮询到 ready 才能拿到图 +- 上传流程严格三步:`upload create`(拿 sessionId + 预签名 URL)→ 客户端自己 HTTP PUT 文件 → `upload complete`(触发转写);中途放弃必须用 `upload cancel` 释放会话,不要只丢 sessionId + +## 自动化脚本 + +| 脚本 | 场景 | 用法 | +|------|------|------| +| [minutes_recent_summary.py](../../scripts/minutes_recent_summary.py) | 获取最近听记的 AI 摘要并合并 | `python minutes_recent_summary.py --max 5` | +| [minutes_extract_todos.py](../../scripts/minutes_extract_todos.py) | 从听记中提取待办事项汇总 | `python minutes_extract_todos.py --max 5` | diff --git a/skills/dws/references/products/oa.md b/skills/dws/references/products/oa.md new file mode 100644 index 0000000..ae544b1 --- /dev/null +++ b/skills/dws/references/products/oa.md @@ -0,0 +1,199 @@ +# OA 审批 (oa) 命令参考 + +钉钉 OA 审批:待办审批列表 / 查看详情 / 同意 / 拒绝 / 撤销 / 流程记录 / 表单模板。 + +## 命令总览 + +### 查询待我处理的审批实例 +``` +Usage: + dws oa approval list-pending [flags] +Example: + dws oa approval list-pending + dws oa approval list-pending --page 1 --size 20 + dws oa approval list-pending --start "2026-03-01T00:00:00+08:00" --end "2026-03-31T23:59:59+08:00" +Flags: + --page string 页码 (默认 1) + --size string 每页数量 (默认 10) + --start string 提交开始时间 ISO-8601 (可选) + --end string 提交结束时间 ISO-8601 (可选) +``` + +"待办收件箱"视图:列出当前用户仍需动作的审批 `processInstanceId`。注意返回的是**实例 ID**,真正驱动 approve/reject 还需要用 `tasks` 再换成 `taskId`。 + +### 查询我发起的审批实例 +``` +Usage: + dws oa approval list-initiated [flags] +Example: + dws oa approval list-initiated + dws oa approval list-initiated --process-code --max-results 20 + dws oa approval list-initiated --start "2026-03-01T00:00:00+08:00" --end "2026-03-31T23:59:59+08:00" --next-token +Flags: + --process-code string 按指定表单/流程模板过滤 (可选) + --start string 发起开始时间 ISO-8601 (可选) + --end string 发起结束时间 ISO-8601 (可选) + --max-results string 每页条数 (可选) + --next-token string 分页 token (首页留空) +``` + +查询当前用户作为申请人发起的审批,用来查"我报销到哪一步了"、"我之前提的请假单"。 + +### 查询可发起的审批表单模板 +``` +Usage: + dws oa approval list-forms [flags] +Example: + dws oa approval list-forms + dws oa approval list-forms --cursor 0 --size 20 +Flags: + --cursor string 分页游标,首次传 0 (默认 0) + --size string 每页大小 (可选) +``` + +列出当前用户被授权发起的审批表单(如"请假"、"报销"),返回 `processCode`,后续用于提交新的申请或按模板筛选历史实例。 + +### 获取审批实例详情 +``` +Usage: + dws oa approval detail [flags] +Example: + dws oa approval detail --instance-id +Flags: + --instance-id string 审批实例 processInstanceId (必填) +``` + +拉取单个实例的完整内容:表单字段、附件、当前状态、参与人。适合让 AI 读懂审批单再决定动作或生成摘要。 + +### 查询审批实例的操作记录 +``` +Usage: + dws oa approval records [flags] +Example: + dws oa approval records --instance-id +Flags: + --instance-id string 审批实例 processInstanceId (必填) +``` + +列出实例的流转历史(谁在什么时候同意/加签/转交/评论),用于复盘或解释"这单卡在哪"。 + +### 查询实例下待处理的任务 +``` +Usage: + dws oa approval tasks [flags] +Example: + dws oa approval tasks --instance-id +Flags: + --instance-id string 审批实例 processInstanceId (必填) +``` + +针对具体实例拿到当前用户名下的 `taskId`。approve / reject 要的是 `taskId`,不是 `processInstanceId`,这一步不能省。 + +### 同意审批 +``` +Usage: + dws oa approval approve [flags] +Example: + dws oa approval approve --instance-id --task-id + dws oa approval approve --instance-id --task-id --remark "同意,按流程推进" +Flags: + --instance-id string 审批实例 processInstanceId (必填) + --task-id string 待办任务 taskId (必填),来自 approval tasks + --remark string 审批意见 (可选) +``` + +以当前用户身份同意某个审批任务。`--task-id` 必须是当前用户的待办 taskId,否则 MCP 会拒绝。 + +### 拒绝审批 +``` +Usage: + dws oa approval reject [flags] +Example: + dws oa approval reject --instance-id --task-id --remark "预算不足,下月再议" +Flags: + --instance-id string 审批实例 processInstanceId (必填) + --task-id string 待办任务 taskId (必填),来自 approval tasks + --remark string 拒绝理由 (可选,但强烈建议填) +``` + +以当前用户身份驳回审批任务;拒绝后一般由 MCP 端决定流程是打回申请人还是整体终止。 + +### 撤回已发起的审批 +``` +Usage: + dws oa approval revoke [flags] +Example: + dws oa approval revoke --instance-id + dws oa approval revoke --instance-id --remark "金额填错,重新提交" --yes +Flags: + --instance-id string 审批实例 processInstanceId (必填) + --remark string 撤回原因 (可选) +``` + +只能撤销**自己发起且尚未终态**的实例。命令标了 `isSensitive`,AI 调用前建议与用户再确认一次,可配合全局 `--yes` 跳过确认。 + +## 意图判断 + +用户说"我要审的单/待我处理的审批/审批收件箱" → `list-pending` 拿 `processInstanceId` +用户说"这单我同意/批了它/通过" → `approval tasks` 换 `taskId` → `approval approve` +用户说"这单不行/驳回/拒绝" → `approval tasks` 换 `taskId` → `approval reject --remark "<理由>"` +用户说"这单详情/看看内容/这单在说什么" → `approval detail` +用户说"这单卡在谁那/谁还没审/流程走到哪" → `approval records` +用户说"我发起的审批/我的申请" → `list-initiated`(可用 `--process-code` 按模板筛) +用户说"能发起哪些审批/有哪些表单" → `list-forms` +用户说"撤回我的申请/我不提了" → `approval revoke`(仅限自己发起且未终态) + +关键区分: oa(钉钉 OA 审批流程) vs todo(个人待办) vs report(日志汇报) + +## 核心工作流 + +```bash +# 1. 看我有哪些待审的单 — 提取 processInstanceId +dws oa approval list-pending --page 1 --size 20 --format json + +# 2. 看单子内容(表单字段 / 附件 / 当前状态) +dws oa approval detail --instance-id --format json + +# 3. 想动作(同意/拒绝)前,先拿 taskId +dws oa approval tasks --instance-id --format json + +# 4. 同意 / 拒绝(taskId 来自步骤 3) +dws oa approval approve --instance-id --task-id --remark "同意" --format json +dws oa approval reject --instance-id --task-id --remark "预算不足" --format json + +# 5. 查看流程记录 — 谁何时做了什么 +dws oa approval records --instance-id --format json + +# 6. 查我发起的审批 / 按模板过滤 +dws oa approval list-initiated --format json +dws oa approval list-initiated --process-code --format json + +# 7. 能发起哪些表单 +dws oa approval list-forms --cursor 0 --size 20 --format json + +# 8. 撤回我发起的单 +dws oa approval revoke --instance-id --remark "填错了" --yes --format json +``` + +## 上下文传递表 + +| 操作 | 从返回中提取 | 用于 | +|------|-------------|------| +| `list-pending` | `processInstanceId`、`nextToken` | detail / tasks / records 的 --instance-id | +| `list-initiated` | `processInstanceId`、`nextToken` | detail / records / revoke 的 --instance-id | +| `list-forms` | `processCode` | `list-initiated --process-code` 按模板过滤,或后续发起新审批 | +| `approval tasks` | `taskId` | approve / reject 的 --task-id | +| `approval detail` | 表单字段、参与人、当前状态 | 供 AI 决策是否批准、生成摘要 | + +## 注意事项 + +- `processInstanceId`(实例 ID)与 `taskId`(待办任务 ID)**不是一回事**,不能混用: + - `list-pending` / `list-initiated` / `detail` / `records` / `revoke` 用 `processInstanceId` + - `approve` / `reject` 用 `taskId`,必须先 `approval tasks --instance-id ` 换一次 +- `list-pending` 是"需要我动作"视图;同一个实例如果流转到下一节点就会从这里消失 +- `list-initiated` 是"我发起的"视图;和 `list-pending` 是两套语义,不要互相替代 +- `--start` / `--end` 使用 ISO-8601 格式,内部会自动转毫秒时间戳 +- `revoke` 只能撤销**当前用户发起且未完结**的实例;已流转结束、已作废、或不是自己发起的都会失败 +- `approve` / `reject` 的 `--remark` 可选但强烈建议填,尤其是 `reject`——审批流下游会把理由展示给申请人 +- 所有敏感动作(`approve` / `reject` / `revoke`)在 AI 调用时应与用户二次确认,可用全局 `--yes` 跳过确认 +- `list-forms` 返回的 `processCode` 是未来发起新审批、或筛选历史实例的钩子;目前本命令集只覆盖审批的"处理侧",发起新审批需走业务方自己的流程 diff --git a/skills/dws/references/products/report.md b/skills/dws/references/products/report.md new file mode 100644 index 0000000..2a856db --- /dev/null +++ b/skills/dws/references/products/report.md @@ -0,0 +1,164 @@ +# 日志 (report) 命令参考 + +## 命令总览 + +### 获取日志模版列表 +``` +Usage: + dws report template list [flags] +Example: + dws report template list +``` + +### 获取日志模版详情 +``` +Usage: + dws report template detail [flags] +Example: + dws report template detail --name +Flags: + --name string 模版名称 (必填) +``` + +### 创建日志 +``` +Usage: + dws report create [flags] +Example: + dws report create --template-id \ + --contents '[{"key":"今日完成","sort":"0","content":"完成了需求评审","contentType":"markdown","type":"1"}]' \ + --format json + dws report create --template-id \ + --contents '[{"key":"今日完成","sort":"0","content":"内容","contentType":"markdown","type":"1"}]' \ + --dd-from "script" --to-chat --to-user-ids "userId1,userId2" --format json +Flags: + --template-id string 日志模版 ID (必填),从 template list 返回中取 + --contents string 日志内容 JSON 数组 (必填),每项须含 key/sort/content/contentType/type + --dd-from string 创建来源标识 (默认 dws) + --to-chat string 是否发送到日志接收人单聊 (传 "true" 发送) + --to-user-ids string 接收人 userId,逗号分隔 (可选) +``` + +**`contents` 数组元素**(与 MCP `create_report` 一致): + +| 字段 | 说明 | +|------|------| +| `key` | 控件标题,与 template detail 一致 | +| `sort` | 控件排序,与 template detail 一致 | +| `content` | 填写值;文本类可写 Markdown | +| `contentType` | `type` 为文本 (`1`) 时用 `markdown`,其余类型用 `origin` | +| `type` | `1` 文本、`2` 数字、`3` 单选、`5` 日期、`7` 多选 | + +shell 中传 `--contents` 时外层建议用**单引号**包住整段 JSON。 + +### 获取日志详情 +``` +Usage: + dws report detail [flags] +Example: + dws report detail --report-id +Flags: + --report-id string 日志 ID (必填) +``` + +### 日志收件箱列表 +``` +Usage: + dws report list [flags] +Example: + dws report list --start "2026-03-10T00:00:00+08:00" --end "2026-03-10T23:59:59+08:00" --cursor 0 --size 20 +Flags: + --cursor string 分页游标 (必填) + --end string 结束时间 ISO-8601 (如 2026-03-10T23:59:59+08:00) (必填) + --size string 每页大小 (必填) + --start string 开始时间 ISO-8601 (如 2026-03-10T00:00:00+08:00) (必填) +``` + +### 获取日志统计数据 +``` +Usage: + dws report stats [flags] +Example: + dws report stats --report-id +Flags: + --report-id string 日志 ID (必填) +``` + +返回该日志的互动聚合数据:浏览数 (views)、点赞数 (likes)、评论数 (comments) 等,用于衡量一篇日志的阅读与反馈情况。 + +### 查询当前人创建的日志列表 +``` +Usage: + dws report sent [flags] +Example: + dws report sent --cursor 0 --size 20 + dws report sent --cursor 0 --size 20 --start "2026-03-10T00:00:00+08:00" --end "2026-03-10T23:59:59+08:00" + dws report sent --cursor 0 --size 20 --template-name "日报" +Flags: + --cursor string 分页游标,首次传 0 (默认 0) + --size string 每页条数,最大 20 (默认 20) + --start string 创建开始时间 ISO-8601 (默认最近 30 天) + --end string 创建结束时间 ISO-8601 (默认最近 30 天) + --modified-start string 修改开始时间 ISO-8601 (可选) + --modified-end string 修改结束时间 ISO-8601 (可选) + --template-name string 日志模版名称 (可选,不传查全部) +``` + +## 意图判断 + +用户说"查日志/看日报" → `list` 获取列表,再 `detail` +用户说"写日报/提交周报/发日志/填日志" → 先 `template list` / `template detail` 取 `templateId` 与各控件 `key`/`sort`/类型,拼 `--contents` JSON,再 `create` +用户说"日志数据/互动情况/多少人看了/点赞评论" → `stats` +用户说"有什么日志模版" → `template list` 或 `template detail` +用户说"我发过的日志/我创建的日志" → `sent` + +关键区分: report(钉钉日志模版汇报,含创建) vs doc(文档编辑) vs todo(待办任务) + +## 核心工作流 + +```bash +# 1. 获取当前用户可用的日志模版 +dws report template list --format json + +# 2. 按名称查看模版详情(含字段定义) +dws report template detail --name "日报" --format json + +# 2b. 创建日志(从步骤 1/2 取 templateId 与 contents 字段) +dws report create --template-id \ + --contents '[{"key":"今日完成","sort":"0","content":"完成了需求评审","contentType":"markdown","type":"1"}]' \ + --format json + +# 3. 查看收件箱日志列表 — 提取 reportId +dws report list --start "2026-03-10T00:00:00+08:00" --end "2026-03-10T23:59:59+08:00" \ + --cursor 0 --size 20 --format json + +# 4. 查看日志详情 +dws report detail --report-id --format json + +# 5. 查看日志统计(浏览/点赞/评论聚合) +dws report stats --report-id --format json + +# 6. 查看当前人创建的日志列表 +dws report sent --cursor 0 --size 20 --format json +``` + +## 上下文传递表 + +| 操作 | 从返回中提取 | 用于 | +|------|-------------|------| +| `template list` | template 名称 | template detail 的 --name | +| `template list` | `templateId`(或等价字段) | `create` 的 --template-id | +| `template detail` | 各控件 `key`、`sort`、类型 | 拼 `create` 的 --contents JSON(含 contentType/type) | +| `list` | `reportId` | detail / stats 的 --report-id | + +## 注意事项 + +- `--start` / `--end` 使用 ISO-8601 格式(如 `2026-03-10T00:00:00+08:00`) +- `template list` 不需要参数,直接返回当前用户可用的所有日志模版 +- `create` 前必须先查模版,勿猜测 `templateId` 或 `contents` 中的 `key`/`sort`;多控件时数组须覆盖模版必填项 + +## 自动化脚本 + +| 脚本 | 场景 | 用法 | +|------|------|------| +| [report_inbox_today.py](../../scripts/report_inbox_today.py) | 查看今天收到的日志列表及详情 | `python report_inbox_today.py` | diff --git a/skills/dws/references/products/sheet.md b/skills/dws/references/products/sheet.md new file mode 100644 index 0000000..7bba003 --- /dev/null +++ b/skills/dws/references/products/sheet.md @@ -0,0 +1,304 @@ +# 在线电子表格 (sheet) 命令参考 + +## 适用范围(重要) + +`sheet` 产品**仅支持钉钉在线电子表格**(`contentType=ALIDOC`、`extension=axls`),**不支持**上传的 `xlsx` / `xls` / `xlsm` / `csv` 等本地表格文件。 + +| 文件类型 | 处理方式 | +|---------|---------| +| 在线电子表格(`axls`) | 走 `sheet` 全部命令(读/写/筛选/合并/导出等服务端原子操作) | +| `xlsx` / `xls` / `xlsm` / `csv` 等本地表格文件 | 必须用 `dws doc download --node --output <路径>` 先下载到本地再用本地工具解析,**禁止**调用任何 `sheet` 子命令 | +| 想把在线表格导出为 xlsx | 用 `dws sheet submit_export_job` 提交导出任务 → 拿到 `jobId` → `dws sheet query_export_job` 轮询直到 `finished` → 用返回的 `downloadUrl` 下载 | + +> 用户直接粘贴 `alidocs` URL 时,先用 `dws doc info --node --format json` 确认 `contentType=ALIDOC` 且 `extension=axls` 后再走 `sheet`;否则转 `dws doc download`。 + +## 命名风格说明(v1.0.25 envelope 现状) + +`sheet` 产品的命令 cli_name **当前同时存在两种风格**——这是 envelope schema 还在演进中、`CLIAliases` (#246) 重命名尚未完成的过渡态: + +- **kebab-case** (~17 个):`add-dimension`、`merge-cells`、`filter-view update-criteria` 等,与 dws 其它产品风格一致 +- **snake_case** (~12 个):`copy_sheet`、`submit_export_job`、`set_filter_criteria` 等,envelope 原始名直透出来 + +**调用时以 `dws sheet --help` 输出为准**——本文档与 envelope schema 同步,未来命名收敛后会同步更新。所有命令的最终参数名以 `dws sheet --help` 和 `dws schema sheet.` 为准。 + +## 命令总览(按功能分组) + +### 工作表 (Worksheet) 级 + +| 命令 | canonical | 用途 | +|------|-----------|------| +| `dws sheet create` | `sheet.create_workspace_sheet` | 在知识库中创建一个新的钉钉表格文档 | +| `dws sheet new` | `sheet.create_sheet` | 在已有钉钉表格文档中新建一张工作表 | +| `dws sheet list` | `sheet.get_all_sheets` | 列出指定文档的所有工作表 | +| `dws sheet info` | `sheet.get_sheet` | 获取指定工作表详情 | +| `dws sheet copy_sheet` | `sheet.copy_sheet` | 复制工作表(同文档内) | +| `dws sheet update_sheet` | `sheet.update_sheet` | 更新工作表元信息(如改名) | + +### 区域 (Range) 读写 + +| 命令 | canonical | 用途 | +|------|-----------|------| +| `dws sheet range read` | `sheet.get_range` | 读取指定区域的单元格内容 | +| `dws sheet range update` | `sheet.update_range` | 写入/更新指定区域的单元格 | +| `dws sheet append` | `sheet.append_rows` | 在工作表末尾追加若干行 | + +### 行列 (Dimension) + +| 命令 | canonical | 用途 | +|------|-----------|------| +| `dws sheet add-dimension` | `sheet.add_dimension` | 在末尾追加空行或空列 | +| `dws sheet insert-dimension` | `sheet.insert_dimension` | 在指定位置插入空行/空列 | +| `dws sheet delete-dimension` | `sheet.delete_dimension` | 删除指定位置起的若干行/列 | +| `dws sheet move-dimension` | `sheet.move_dimension` | 移动行/列到指定位置 | +| `dws sheet update-dimension` | `sheet.update_dimension` | 更新行/列属性(显隐、行高/列宽) | + +### 单元格合并 + +| 命令 | canonical | 用途 | +|------|-----------|------| +| `dws sheet merge-cells` | `sheet.merge_cells` | 合并指定范围的单元格(`mergeAll`/`mergeRows`/`mergeColumns`) | +| `dws sheet unmerge-cells` | `sheet.unmerge_range` | 取消指定范围的合并 | + +### 查找/替换 + +| 命令 | canonical | 用途 | +|------|-----------|------| +| `dws sheet find` | `sheet.find_cells` | 在工作表中搜索单元格内容(支持正则/整格匹配/隐藏) | +| `dws sheet replace` | `sheet.replace_all` | 全局查找替换 | + +### 筛选视图 (Filter View) — 命名视图、按列条件、不影响表本身 + +| 命令 | canonical | 用途 | +|------|-----------|------| +| `dws sheet filter-view create` | `sheet.create_filter_view` | 创建筛选视图 | +| `dws sheet filter-view list` | `sheet.get_filter_views` | 列出工作表的所有筛选视图 | +| `dws sheet filter-view update` | `sheet.update_filter_view` | 更新筛选视图(名称/范围/条件) | +| `dws sheet filter-view delete` | `sheet.delete_filter_view` | 删除整个筛选视图 | +| `dws sheet filter-view update-criteria` | `sheet.set_filter_view_criteria` | 设置/更新视图内某列的筛选条件 | +| `dws sheet filter-view delete-criteria` | `sheet.clear_filter_view_criteria` | 清除视图内某列的筛选条件 | + +### 表级筛选 (Filter) — 直接作用于工作表本身的临时筛选 + +| 命令 | canonical | 用途 | +|------|-----------|------| +| `dws sheet create_filter` | `sheet.create_filter` | 在工作表上创建筛选器 | +| `dws sheet get_filter` | `sheet.get_filter` | 获取当前筛选器配置 | +| `dws sheet update_filter` | `sheet.update_filter` | 更新筛选器条件 | +| `dws sheet delete_filter` | `sheet.delete_filter` | 删除筛选器 | +| `dws sheet set_filter_criteria` | `sheet.set_filter_criteria` | 设置某列的筛选条件 | +| `dws sheet clear_filter_criteria` | `sheet.clear_filter_criteria` | 清除某列的筛选条件 | +| `dws sheet sort_filter` | `sheet.sort_filter` | 对筛选范围按指定列排序 | + +### 图片 + +| 命令 | canonical | 用途 | +|------|-----------|------| +| `dws sheet write-image` | `sheet.write_image` | 将已上传的图片资源写入指定单元格 | + +### 导出(两步原子,**v1.0.25 没有合并的 `export` 命令**) + +| 命令 | canonical | 用途 | +|------|-----------|------| +| `dws sheet submit_export_job` | `sheet.submit_export_job` | 提交导出任务,返回 `jobId` | +| `dws sheet query_export_job` | `sheet.query_export_job` | 轮询导出任务状态,完成后返回 `downloadUrl` | + +> v1.0.25 envelope 暴露的是这两个**原子动作**。要完整完成"导出 → 下载"流程需要 client 侧轮询 + 调 `downloadUrl`。`CLIToolOverride.Pipeline` (#247) 提供了底层编排能力,但**当前 envelope 还没把这两个动作 Pipeline 化成一条 `dws sheet export` 总命令**。 + +## 通用必填参数 + +绝大多数 `sheet` 命令都需要: + +- `--node ` —— 钉钉表格文档的 nodeId 或 `https://alidocs.dingtalk.com/i/nodes/` URL(alias 来自 `nodeId`) +- `--sheet-id ` —— 工作表 ID(alias 来自 `sheetId`),从 `dws sheet list` 拿 + +例外: +- `create` 只需要 `--name`(在知识库创建文档时不需要 nodeId) +- `list` / `info` / `range read` 只需要 `--node` +- `submit_export_job` 只需要 `--node` + `--export-format`(无 sheet-id) +- `query_export_job` 只需要 `--job-id` + +## 常用命令示例 + +### 创建文档 + 新建工作表 + +```bash +# 在知识库下创建一个钉钉表格文档 +dws sheet create --name "销售数据" --workspace --format json +# 返回的 nodeId 用于后续操作 + +# 在已有文档中新建一张工作表 +dws sheet new --node --name "Q1 数据" --format json +``` + +### 读写区域 + +```bash +# 读 A1:D10 +dws sheet range read --node --sheet-id --range "A1:D10" --format json + +# 写入 5x4 区域(values 是二维 JSON 数组) +dws sheet range update --node --sheet-id --range "A1:D5" \ + --values '[["姓名","岗位","入职","薪资"],["张三","研发","2024-01","30000"]]' \ + --format json + +# 追加行 +dws sheet append --node --sheet-id \ + --values '[["李四","产品","2025-03","28000"]]' \ + --format json +``` + +### 行列操作 + +```bash +# 在第 5 行处插入 2 个空行 +dws sheet insert-dimension --node --sheet-id \ + --dimension rows --position 4 --length 2 --format json + +# 末尾追加 3 列 +dws sheet add-dimension --node --sheet-id \ + --dimension columns --length 3 --format json + +# 删除第 10-12 行 +dws sheet delete-dimension --node --sheet-id \ + --dimension rows --position 9 --length 3 --format json + +# 隐藏 B 列(startIndex=1, length=1) +dws sheet update-dimension --node --sheet-id \ + --dimension columns --start-index 1 --length 1 --hidden true --format json +``` + +### 合并/取消合并 + +```bash +# 合并 A1:C1 +dws sheet merge-cells --node --sheet-id \ + --range "A1:C1" --merge-type mergeAll --format json + +# 取消合并 +dws sheet unmerge-cells --node --sheet-id \ + --range "A1:C1" --format json +``` + +### 查找/替换 + +```bash +# 查找 +dws sheet find --node --sheet-id \ + --find "TODO" --use-regexp false --match-case false --format json + +# 全局替换 +dws sheet replace --node --sheet-id \ + --find "TODO" --replacement "DONE" --format json +``` + +### 筛选视图(推荐:可命名、不破坏原表) + +```bash +# 创建筛选视图(范围必须包含表头行) +dws sheet filter-view create --node --sheet-id \ + --name "未完成项" --range "A1:E100" --format json +# 返回的 filterViewId 用于后续 update/delete/criteria 操作 + +# 列出所有筛选视图 +dws sheet filter-view list --node --sheet-id --format json + +# 给视图的某一列设置筛选条件(column 是相对视图范围首列的 0-based 偏移) +dws sheet filter-view update-criteria --node --sheet-id \ + --filter-view-id --column 2 \ + --filter-criteria '{"conditions":[{"type":"TEXT_CONTAINS","values":["pending"]}]}' \ + --format json + +# 清除某列的筛选条件(不删除视图本身) +dws sheet filter-view delete-criteria --node --sheet-id \ + --filter-view-id --column 2 --format json + +# 删除整个筛选视图 +dws sheet filter-view delete --node --sheet-id \ + --filter-view-id --format json +``` + +### 表级筛选(snake_case 系列,直接作用于工作表本身) + +```bash +# 创建筛选器(一张表只有一个,再次 create 会替换) +dws sheet create_filter --node --sheet-id \ + --range "A1:E100" --format json + +# 给某列加筛选条件 +dws sheet set_filter_criteria --node --sheet-id \ + --column 0 --filter-criteria '{...}' --format json + +# 按指定列排序 +dws sheet sort_filter --node --sheet-id --field 0 --format json + +# 删除筛选器 +dws sheet delete_filter --node --sheet-id --format json +``` + +### 复制工作表 + +```bash +dws sheet copy_sheet --node --sheet-id --format json +# 返回新工作表 ID +``` + +### 写入图片 + +```bash +# 已有图片资源 ID 和 URL(通过 drive 或 doc 上传得到)后写入单元格 +dws sheet write-image --node --sheet-id \ + --range "B2:B2" --resource-id --resource-url \ + --width 200 --height 100 --format json +``` + +### 导出 xlsx(两步流程) + +```bash +# Step 1: 提交导出任务 +JOB=$(dws sheet submit_export_job --node --export-format xlsx --format json --jq '.result.jobId') + +# Step 2: 轮询任务状态(建议 sleep + 重试) +dws sheet query_export_job --job-id "$JOB" --format json +# 直到返回 status=finished + downloadUrl + +# Step 3: 下载(用 curl / dws doc download / 其它工具拉 downloadUrl) +``` + +## 易混淆点 + +| 区分 | 说明 | +|---|---| +| `dws sheet create` vs `dws sheet new` | `create` 在知识库**新建一个文档**(返回新 nodeId);`new` 在**已有文档中新建一张工作表**(需 nodeId) | +| `dws sheet filter-view *` vs `dws sheet create_filter`/`set_filter_criteria` 等 | filter-view 是**命名视图**,多个并存、不影响表本身;filter 是**表级唯一**筛选器,直接作用于工作表显示 | +| `filter-view update-criteria` vs `filter-view delete-criteria` | update 是设置/覆盖列条件;delete 是清除列条件(视图本身保留);要删整个视图用 `filter-view delete` | +| `dws sheet submit_export_job` + `query_export_job` vs `dws sheet export` | 后者**不存在**于 v1.0.25 envelope。需 client 端自己轮询,或基于 Pipeline (#247) 在 envelope 侧 PR 一条总命令 | +| `dws sheet write-image` vs `range update` | write-image 写入图片(需 resourceId + resourceUrl);range update 写入文本/数字/公式 | +| `range update` vs `append` | range update 指定区域覆盖;append 在末尾追加行 | +| online axls vs 本地 xlsx | sheet 全部命令只认 axls;本地 xlsx 必须先 `doc download` 再用本地工具解析 | + +## 危险操作(必须先向用户确认) + +| 命令 | 风险 | +|---|---| +| `delete-dimension` | 删除行/列(含数据),不可恢复 | +| `filter-view delete` | 删除整个筛选视图 | +| `delete_filter` | 删除表级筛选器 | +| `replace` | 全局替换可能影响大量单元格 | +| `unmerge-cells` | 取消合并可能丢失部分单元格内容(钉钉行为依赖合并模式) | +| `update_sheet` | 更新工作表元信息(如改名) | + +执行前先 `--dry-run` 预览,并向用户展示操作摘要 + 拿到明确同意,再加 `--yes` 提交。 + +## 何时**不要**用 sheet + +- 用户给的是 `xlsx` / `xls` / `xlsm` / `csv` 本地文件 → 用 `dws doc download` 下载后本地解析 +- 用户给的是 AI 表格(不是在线电子表格)→ 用 `dws aitable record query` 等 +- 用户给的是富文本/普通文档 → 用 `dws doc read` + +## 权威参考 + +- 列出所有 sheet 工具:`dws schema | jq '.products[] | select(.id=="sheet") | .tools[] | "\(.group) \(.cli_name)"' -r` +- 看某个命令的完整 JSON Schema:`dws schema sheet.`(如 `dws schema sheet.update_range`) +- 看某个命令的 flag 别名映射:`dws schema sheet. --jq '.tool.flag_overlay'` +- 看必填字段:`dws schema sheet. --jq '.tool.required'` +- 命令的人读视图:`dws sheet --help` diff --git a/skills/dws/references/products/simple.md b/skills/dws/references/products/simple.md new file mode 100644 index 0000000..b58ddae --- /dev/null +++ b/skills/dws/references/products/simple.md @@ -0,0 +1,117 @@ +# 单命令产品合集 + +以下产品命令较少,合并参考。 + +--- + +## devdoc — 开放平台文档 + +### 搜索开放平台文档 +``` +Usage: + dws devdoc article search [flags] +Example: + dws devdoc article search --keyword "OAuth2 接入" --page 1 --size 10 +Flags: + --keyword string 搜索关键词 (必填) + --page string 页码 (默认 1) + --size string 每页数量 (默认 10) +``` + +--- + +## oa — 审批 + +### 查询可见审批流程 +``` +Usage: + dws oa approval list-forms [flags] +Example: + dws oa approval list-forms --format json +``` + +### 查询审批实例详情 +``` +Usage: + dws oa approval detail --instance-id [flags] +Example: + dws oa approval detail --instance-id --format json +``` + +### 查询审批记录 +``` +Usage: + dws oa approval records --instance-id [flags] +Example: + dws oa approval records --instance-id --format json +``` + +### 查询待我审批的任务 +``` +Usage: + dws oa approval tasks [flags] +Example: + dws oa approval tasks --format json +``` + +### 查询待我处理的审批 +``` +Usage: + dws oa approval list-pending [flags] +Example: + dws oa approval list-pending --format json +``` + +### 查询我发起的审批 +``` +Usage: + dws oa approval list-initiated [flags] +Example: + dws oa approval list-initiated --format json +``` + +### 同意审批 +``` +Usage: + dws oa approval approve --instance-id --task-id [flags] +Example: + dws oa approval approve --instance-id --task-id --format json +``` + +### 拒绝审批 +``` +Usage: + dws oa approval reject --instance-id --task-id [flags] +Example: + dws oa approval reject --instance-id --task-id --remark "不符合要求" --format json +``` + +### 撤销审批 +``` +Usage: + dws oa approval revoke --instance-id [flags] +Example: + dws oa approval revoke --instance-id --format json +``` + +--- + +## 意图判断 + +- 用户说"开发文档/API 文档/接口文档" → `devdoc article search` +- 用户说"审批/请假/报销/出差" → `oa approval` +- 用户说"同意审批/批准" → `oa approval approve` +- 用户说"拒绝审批/驳回" → `oa approval reject` +- 用户说"撤销审批/撤回" → `oa approval revoke` +- 用户说"待我审批/我要审批的" → `oa approval list-pending` 或 `oa approval tasks` +- 用户说"我发起的审批" → `oa approval list-initiated` + +## 上下文传递表 + +| 操作 | 从返回中提取 | 用于 | +|------|-------------|------| +| `devdoc article search` | 文档链接 | 直接展示给用户 | +| `oa approval list-forms` | processCode | detail / records 等 | +| `oa approval tasks` | taskId, instanceId | approve / reject | +| `oa approval list-pending` | instanceId | detail / approve / reject | +| `oa approval list-initiated` | instanceId | detail / revoke | diff --git a/skills/dws/references/products/todo.md b/skills/dws/references/products/todo.md new file mode 100644 index 0000000..fa7a096 --- /dev/null +++ b/skills/dws/references/products/todo.md @@ -0,0 +1,143 @@ +# 待办 (todo) 命令参考 + +## 命令总览 + +### 创建待办 +``` +Usage: + dws todo task create [flags] +Example: + dws todo task create --title "修复线上Bug" --executors , --priority 40 + dws todo task create --title "提交报告" --executors --due "2026-03-20T10:00:00+08:00" + dws todo task create --title "每日站会" --executors \ + --due "2026-03-20T10:00:00+08:00" \ + --recurrence $'DTSTART:20260320T020000Z\nRRULE:FREQ=DAILY;INTERVAL=1' +Flags: + --due string 截止时间 ISO-8601 (如 2026-03-10T18:00:00+08:00) + --executors string 执行者 userId 列表 (必填) + --priority string 优先级: 10低/20普通/30较高/40紧急 + --recurrence string 循环规则 RFC 5545 (DTSTART+RRULE,仅在同时设置 --due 时生效) + --title string 待办标题 (必填) +``` + +### 查询待办列表 +``` +Usage: + dws todo task list [flags] +Example: + dws todo task list --page 1 --size 20 --status false +Flags: + --page string 页码 (默认 1) + --size string 每页数量 (默认 20) + --status string true=已完成, false=未完成 +``` + +### 修改待办任务 +``` +Usage: + dws todo task update [flags] +Example: + dws todo task update --task-id --title "新标题" + dws todo task update --task-id --priority 40 --due "2026-03-10T18:00:00+08:00" + dws todo task update --task-id --done true +Flags: + --done string 完成状态: true/false + --due string 截止时间 ISO-8601 (如 2026-03-10T18:00:00+08:00) + --priority string 优先级: 10低/20普通/30较高/40紧急 + --task-id string 待办任务 ID (必填) + --title string 新标题 +``` + +### 修改执行者的待办完成状态 +``` +Usage: + dws todo task done [flags] +Example: + dws todo task done --task-id --status true + dws todo task done --task-id --status false +Flags: + --status string 完成状态: true=已完成, false=未完成 (必填) + --task-id string 待办任务 ID (必填) +``` + +### 待办详情 +``` +Usage: + dws todo task get [flags] +Example: + dws todo task get --task-id +Flags: + --task-id string 待办任务 ID (必填) +``` + +### 删除待办 +``` +Usage: + dws todo task delete [flags] +Example: + dws todo task delete --task-id + dws todo task delete --task-id --yes +Flags: + --task-id string 待办任务 ID (必填) +``` + +## 意图判断 + +用户说"加个待办/记一下/TODO" → `task create` +用户说"看看待办/我有啥要做" → `task list` +用户说"改个待办/修改待办标题/改优先级" → `task update` +用户说"做完了/完成待办/标记完成" → `task done` +用户说"看看待办详情" → `task get` +用户说"删除待办/取消待办" → `task delete` + +关键区分: todo(个人待办) + +## 核心工作流 + +```bash +# 1. 创建待办 — 提取 todoTaskId +dws todo task create --title "修复线上Bug" --executors userId1,userId2 \ + --priority 40 --due "2026-03-10T18:00:00+08:00" --format json + +# 2. 查看未完成待办 +dws todo task list --page 1 --size 20 --status false --format json + +# 3. 查看待办详情 +dws todo task get --task-id --format json + +# 4. 修改待办信息 +dws todo task update --task-id --title "新标题" --priority 40 --format json + +# 5. 标记待办完成 +dws todo task done --task-id --status true --format json + +# 6. 删除待办 +dws todo task delete --task-id --yes --format json +``` + +## 上下文传递表 + +| 操作 | 从返回中提取 | 用于 | +|------|-------------|------| +| `task create` | `todoTaskId` | update/done/get/delete 的 --task-id | +| `task list` | `result[].id` | update/done/get/delete 的 --task-id | + +## 注意事项 + +- 优先级值: 10=低, 20=普通, 30=较高, 40=紧急 +- `--due` 截止时间使用 ISO-8601 格式(如 2026-03-10T18:00:00+08:00) +- `--recurrence` 为 RFC 5545 循环规则(`DTSTART:...\nRRULE:FREQ=DAILY;INTERVAL=1` 这种格式),必须与 `--due` 同时设置才生效 +- `task list` 的 `--status` 对应 MCP `get_user_todos_in_current_org` 的 `todoStatus` 参数 +- todo 是个人待办管理产品 +- `task update` 可同时修改标题/优先级/截止时间/完成状态 +- `task done` 专用于修改执行者的完成状态,与 `task update --done` 作用不同 +- `task delete` 为不可逆操作,建议加 `--yes` 并与用户确认 + +## 自动化脚本 + +| 脚本 | 场景 | 用法 | +|------|------|------| +| [todo_daily_summary.py](../../scripts/todo_daily_summary.py) | 查看今天/明天/本周未完成待办汇总 | `python todo_daily_summary.py today` | +| [todo_batch_create.py](../../scripts/todo_batch_create.py) | 从 JSON 文件批量创建待办 | `python todo_batch_create.py todos.json` | +| [todo_overdue_check.py](../../scripts/todo_overdue_check.py) | 扫描逾期待办输出逾期清单 | `python todo_overdue_check.py` | + diff --git a/skills/dws/references/products/wiki.md b/skills/dws/references/products/wiki.md new file mode 100644 index 0000000..64427c7 --- /dev/null +++ b/skills/dws/references/products/wiki.md @@ -0,0 +1,177 @@ +# 知识库 (wiki) 命令参考 + +## 命令总览 + +### 创建知识库 +``` +Usage: + dws wiki space create [flags] +Example: + dws wiki space create --name "产品文档库" --format json + dws wiki space create --name "技术方案" --description "团队技术方案归档" --format json +Flags: + --name string 知识库名称 (必填,不超过 100 字符) + --description string 知识库描述 (选填,不超过 500 字符) + --icon string 知识库图标标识 (选填) +``` + +### 查看知识库详情 +``` +Usage: + dws wiki space get [flags] +Example: + dws wiki space get --id --format json + dws wiki space get --id "https://alidocs.dingtalk.com/i/spaces/xxx/overview" --format json +Flags: + --id string 知识库 ID 或 URL (必填) +``` + +支持传入知识库 ID 或知识库 URL,系统自动识别。 +知识库 URL 格式:`https://alidocs.dingtalk.com/i/spaces/{workspaceId}/overview` + +### 列出知识库 +``` +Usage: + dws wiki space list [flags] +Example: + dws wiki space list --format json + dws wiki space list --type myWikiSpace --format json + dws wiki space list --type orgWikiSpace --limit 50 --format json +Flags: + --type string 知识库类型: myWikiSpace / orgWikiSpace (默认 orgWikiSpace) + --limit string 每页数量 1-50 (默认 20) + --page-token string 分页游标 (首页留空) +``` + +- `myWikiSpace`:返回当前用户的「我的文档」个人空间(固定 1 条,不支持分页) +- `orgWikiSpace`(默认):返回组织内有权访问的知识库列表,支持分页 + +### 搜索知识库 +``` +Usage: + dws wiki space search [flags] +Example: + dws wiki space search --keyword "产品文档" --format json + dws wiki space search --keyword "技术方案" --limit 20 --format json + dws wiki space search --type myWikiSpace --format json +Flags: + --keyword string 搜索关键词 (--type myWikiSpace 时可省略) + --type string 知识库类型: myWikiSpace 时直接返回「我的文档」,省略则搜索组织知识库 + --limit string 返回数量 1-20 (默认 10) +``` + +当 `--type myWikiSpace` 时,忽略 `--keyword`,直接返回「我的文档」个人空间。 + +### 添加知识库成员(容器级授权) +``` +Usage: + dws wiki member add [flags] +Example: + dws wiki member add --space --user uid1 --role READER + dws wiki member add --space --user uid1,uid2 --role EDITOR + dws wiki member add --space "https://alidocs.dingtalk.com/i/spaces//overview" --user uid1 --role MANAGER +Flags: + --space string 目标知识库 ID 或 URL (必填) + --user strings 被加入的用户 userId 列表,逗号分隔 (必填,单次最多 30 个) + --role string 授予的角色 (必填,大小写敏感,必须全大写): MANAGER (管理者) / EDITOR (可编辑) / DOWNLOADER (可下载) / READER (可阅读) +``` + +> **❗ 重要约束**: +> - 仅支持 USER 类型。 +> - 角色枚举严格大写:MANAGER / EDITOR / DOWNLOADER / READER(OWNER 不可通过此接口添加,知识库创建者默认为所有者)。 +> - 操作者需具备知识库的 OWNER 或 MANAGER 权限。 +> - 「我的文档」(myWikiSpace) 是个人空间,**不支持容器级成员管理**;后端会直接拒绝。如果你的目标只是把某篇文档分享给别人,请改用 `dws doc permission add` 在节点级别授权。 + +### 修改知识库成员角色 +``` +Usage: + dws wiki member update [flags] +Example: + dws wiki member update --space --user uid1 --role EDITOR + dws wiki member update --space --user uid1,uid2 --role READER +Flags: + --space string 目标知识库 ID 或 URL (必填) + --user strings 目标用户 userId 列表,逗号分隔 (必填,单次最多 30 个) + --role string 新角色 (必填,大小写敏感,必须全大写): MANAGER / EDITOR / DOWNLOADER / READER +``` + +### 列出知识库成员 +``` +Usage: + dws wiki member list [flags] +Example: + dws wiki member list --space + dws wiki member list --space --max-results 100 + dws wiki member list --space --filter-role EDITOR +Flags: + --space string 目标知识库 ID 或 URL (必填) + --max-results int 返回数量上限,最大 200 (默认 50) + --filter-role string 按角色过滤: MANAGER / EDITOR / DOWNLOADER / READER (选填) +``` + +> 接口不支持游标分页,使用 `--max-results` 一次性拉取。 + +## 意图判断 + +- 用户说"创建知识库/新建知识库" → `space create` +- 用户说"查看知识库/知识库详情" → `space get` +- 用户说"我的知识库/知识库列表/有哪些知识库" → `space list` +- 用户说"搜索知识库/找知识库" → `space search` +- 用户说"我的文档/个人空间" → `space search --type myWikiSpace` 或 `space list --type myWikiSpace` +- 用户说"把知识库分享给某人/给某人加入知识库/邀请进知识库" → `member add`(需 `--space` + `--user` + `--role`) +- 用户说"修改某人在知识库的权限/调整成员角色" → `member update` +- 用户说"知识库有哪些成员/查看知识库成员" → `member list` + +关键区分: +- wiki(知识库空间级管理:创建/查询/列出/搜索/成员管理) vs doc(文档内容级操作:搜索/读写/编辑/节点级权限) +- wiki space(知识库容器) vs drive(钉盘文件存储/上传/下载) +- **wiki member**(容器级,授权整个知识库)vs **doc permission**(节点级,授权单篇文档) + - 「我的文档」**只能用** `doc permission`,不能用 `wiki member` + +## 核心工作流 + +```bash +# 列出我有权访问的组织知识库 +dws wiki space list --format json + +# 获取「我的文档」个人空间 +dws wiki space list --type myWikiSpace --format json + +# 搜索知识库 +dws wiki space search --keyword "产品" --format json + +# 搜索「我的文档」 +dws wiki space search --type myWikiSpace --format json + +# 创建知识库 +dws wiki space create --name "新项目文档" --description "项目相关文档归档" --format json + +# 查看知识库详情 +dws wiki space get --id --format json + +# ── 工作流: 给知识库加成员 ── + +# 1. 先确认知识库 ID(避免授权到「我的文档」) +dws wiki space list --format json # 注意:不要 --type myWikiSpace + +# 2. 添加成员 +dws wiki member add --space --user --role EDITOR --format json + +# 3. 查看当前成员 +dws wiki member list --space --format json +``` + +## 上下文传递表 + +| 操作 | 从返回中提取 | 用于 | +|------|-------------|------| +| `space create` | `workspaceId` | space get 的 --id / member add 的 --space | +| `space list` | `workspaceId` | space get 的 --id / member add 的 --space | +| `space search` | `workspaceId` | space get 的 --id / member add 的 --space | +| `space get` | `spaceUrl` | 分享给用户 | +| `member list` | `userId` | member update 的 --user | + +## 相关产品 + +- [doc](./doc.md) — 文档内容级操作(搜索/读写/编辑文档、知识库内文档管理) +- [drive](./drive.md) — 钉盘文件存储/上传/下载 diff --git a/skills/dws/references/products/workbench.md b/skills/dws/references/products/workbench.md new file mode 100644 index 0000000..58ddc61 --- /dev/null +++ b/skills/dws/references/products/workbench.md @@ -0,0 +1,41 @@ +# 工作台 (workbench) 命令参考 + +> ⚠️ **Draft**:以下命令在当前 CLI 运行时中尚未上线(`dws workbench --help` 回退到根帮助页面),文档仅供预览,待服务端注册后生效。 + +## 命令总览 + +### 查看所有工作台应用 +``` +Usage: + dws workbench app list [flags] +Example: + dws workbench app list +``` +### 批量获取应用详情 +``` +Usage: + dws workbench app get [flags] +Example: + dws workbench app get --ids , +Flags: + --ids string 应用 ID 列表 (必填) +``` + +## 意图判断 + +用户说"工作台有什么应用/看看应用" → `app list` +用户说"应用详情" → `app get` (需 appId) + +## 核心工作流 + +```bash +# 查看所有应用 — 提取 appId +dws workbench app list --format json + +# 获取应用详情 +dws workbench app get --ids app1,app2 --format json +``` +## 上下文传递表 +| 操作 | 提取 | 用于 | +|------|------|------| +| `app list` | `appId` | app get 的 --ids | diff --git a/skills/dws/references/recovery-guide.md b/skills/dws/references/recovery-guide.md new file mode 100644 index 0000000..3fe4eba --- /dev/null +++ b/skills/dws/references/recovery-guide.md @@ -0,0 +1,94 @@ +# Recovery Guide + +`dws` 的 recovery 闭环以 `dws recovery execute` 为正式入口。主入口仍是 [SKILL.md](../SKILL.md),错误分类与排查细节可结合 [error-codes.md](./error-codes.md) 和 [global-reference.md](./global-reference.md) 一起使用。 + +## 标准流程 + +1. 原始 `dws` 命令失败后,从 stderr 提取 `RECOVERY_EVENT_ID=` +2. 执行 `dws recovery execute --event-id --format json` +3. 读取返回的 `RecoveryBundle` +4. 先查看 `plan.decision_owner` +5. 当 `decision_owner == "agent"` 时,把完整 `RecoveryBundle` 视为事实包,由 Agent 基于事实包、对应产品文档和 `dws` skill 做整体判断,再决定是否组织下一次 grounded 的 `dws` 恢复尝试 +6. 恢复尝试结束后,执行 `dws recovery finalize --event-id --outcome recovered|failed|handoff --execution-file --format json` + +CLI 会把 recovery 过程文件保存在 `DWS_CONFIG_DIR/recovery/` 下,并自动清理 30 天前的旧文件与旧事件记录。 + +## 如何阅读 `RecoveryBundle` + +`RecoveryBundle` 重点字段: + +- `status`:`needs_agent_action` 或 `analysis_failed` +- `context`:原始失败上下文 +- `replay`:可重放的脱敏命令信息和工具参数 +- `plan`:规则分类、`decision_owner`、`agent_route`、`doc_search`、`kb_hits`、`doc_actions`、`human_actions` +- `doc_search.request`:CLI 实际发起的开放平台文档检索请求参数 +- `doc_search.response`:CLI 收到的原始文档检索返回内容块 +- `probe_results`:CLI 已完成的只读探测和上下文审计结果 +- `agent_task`:给 Agent 的明确工作单 +- `finalize_hint`:最终必须回写的 `finalize` 命令模板和 `execution-file` 要求 + +当 `status == "analysis_failed"` 时,不要假设 CLI 已经修复问题;应先读取 `analysis_error`、`doc_search`、`probe_results`,再判断是否还能继续 grounded 尝试。 + +当 `plan.decision_owner == "agent"` 时: + +- 必须把 CLI 返回内容视为事实包,而不是已定案的恢复结论 +- 优先基于完整 `RecoveryBundle` 做判断;若只能读取 `agent_route.payload`,也必须使用其中的 `context`、`replay`、`doc_search`、`kb_hits`、`doc_actions`、`probe_results` +- unknown 场景里,不要把 `should_retry`、`should_stop`、`human_actions` 当作 CLI 已经替 Agent 作出的最终决定 + +## Agent 允许做什么 + +- 读取 [global-reference.md](./global-reference.md)、[error-codes.md](./error-codes.md) 和对应产品文档 +- 基于完整 `RecoveryBundle`,尤其是 `doc_actions`、`kb_hits`、`probe_results`、`context`、`replay` 做整体判断 +- 仅在依据明确时重新发起新的 `dws` 命令 +- 将真实尝试过程记录进 `execution-file`,再调用 `finalize` + +## Agent 禁止做什么 + +- 编造 taskId、recordId、threadId、UUID、token、URL 或其他业务参数 +- 绕过 `dws` 改用 curl、HTTP API、浏览器或其他未授权手段 +- 未确认前把失败命令替换成另一套业务流程 +- 因为 `human_actions` 里提到用户步骤,就跳过 bundle 里的其余分析信息 + +## `execution-file` 最小要求 + +`execution-file` 必须至少包含: + +- `actions` +- `attempts` +- `result` +- `error_summary` + +`attempts` 是数组,每次尝试至少记录: + +- `command_summary` +- `result` +- `error_summary` +- `source` + +兼容旧格式: + +- `action` 会被归一化成单元素 `actions` +- 数值型 `attempts` 会被展开为 `legacy_execution_file` 来源的 attempts 记录 +- `error` 会被归一化到 `error_summary` + +## unknown 参数错误处理 + +如果 `execute` 进入 unknown 场景,且 `probe_results` 已给出 CLI 检查过的上下文来源,Agent 应: + +- 先检查上一步输出、已有上下文、产品文档或 `probe_results` 里是否存在真实参数来源 +- 若没有可靠来源,就回写 `handoff` +- 不要盲猜新的 ID、UUID、URL、token 或其他业务参数 + +对应标准闭环: + +```bash +dws recovery execute --event-id --format json +dws recovery finalize --event-id --outcome handoff --execution-file execution.json --format json +``` + +## 必读参考 + +- [error-codes.md](./error-codes.md) +- [global-reference.md](./global-reference.md) +- [intent-guide.md](./intent-guide.md) +- [products/](./products/) diff --git a/skills/dws/scripts/attendance_my_record.py b/skills/dws/scripts/attendance_my_record.py new file mode 100644 index 0000000..8989850 --- /dev/null +++ b/skills/dws/scripts/attendance_my_record.py @@ -0,0 +1,91 @@ +#!/usr/bin/env python3 +""" +查看我今天/本周/指定日期的考勤记录(自动获取 userId) + +用法: + python attendance_my_record.py # 今天 + python attendance_my_record.py today # 今天 + python attendance_my_record.py 2026-03-10 # 指定日期 + python attendance_my_record.py --dry-run # 仅显示命令 +""" + +import sys +import json +import subprocess +import re +from datetime import datetime +from typing import List, Any, Optional + +DATE_PATTERN = re.compile(r'^\d{4}-\d{2}-\d{2}$') + + +def run_dws( + args: List[str], dry_run: bool = False, +) -> Optional[Any]: + cmd = ['dws'] + args + if dry_run: + print(f"[dry-run] {' '.join(cmd)}") + return None + try: + result = subprocess.run( + cmd, capture_output=True, text=True, timeout=60 + ) + if result.returncode != 0: + print(f"错误:{result.stderr.strip()}", file=sys.stderr) + return None + return json.loads(result.stdout) + except (subprocess.TimeoutExpired, json.JSONDecodeError, + FileNotFoundError) as e: + print(f"错误:{e}", file=sys.stderr) + return None + + +def get_my_user_id(dry_run: bool = False) -> Optional[str]: + data = run_dws([ + 'contact', 'user', 'get-self', '--format', 'json', + ], dry_run=dry_run) + if dry_run: + return '' + if not data or not isinstance(data, dict): + return None + return data.get('userId') or data.get('userid') + + +def main(): + dry_run = '--dry-run' in sys.argv + args = [a for a in sys.argv[1:] if a != '--dry-run'] + + date_str = args[0] if args else 'today' + if date_str == 'today': + date_str = datetime.now().strftime('%Y-%m-%d') + elif not DATE_PATTERN.match(date_str): + print(__doc__) + sys.exit(1) + + print('🔍 获取当前用户信息...') + user_id = get_my_user_id(dry_run=dry_run) + if not user_id and not dry_run: + print('错误:无法获取当前用户 ID') + sys.exit(1) + + print(f'📊 查询 {date_str} 考勤记录...\n') + data = run_dws([ + 'attendance', 'record', 'get', + '--user', user_id or '', + '--date', date_str, + '--format', 'json', + ], dry_run=dry_run) + + if dry_run: + return + if not data: + print('未查到考勤记录') + return + + print(f"📋 考勤记录 ({date_str})") + print('=' * 40) + print(json.dumps(data, ensure_ascii=False, indent=2)) + + +if __name__ == '__main__': + main() diff --git a/skills/dws/scripts/attendance_team_shift.py b/skills/dws/scripts/attendance_team_shift.py new file mode 100644 index 0000000..bf91ad3 --- /dev/null +++ b/skills/dws/scripts/attendance_team_shift.py @@ -0,0 +1,89 @@ +#!/usr/bin/env python3 +""" +查询团队成员本周排班和出勤统计 + +用法: + python attendance_team_shift.py --users userId1,userId2,userId3 + python attendance_team_shift.py --users userId1,userId2 \ + --from 2026-03-10 --to 2026-03-14 + python attendance_team_shift.py --users userId1 --dry-run +""" + +import sys +import json +import subprocess +import argparse +from datetime import datetime, timedelta +from typing import List, Any, Optional + + +def run_dws( + args: List[str], dry_run: bool = False, +) -> Optional[Any]: + cmd = ['dws'] + args + if dry_run: + print(f"[dry-run] {' '.join(cmd)}") + return None + try: + result = subprocess.run( + cmd, capture_output=True, text=True, timeout=60 + ) + if result.returncode != 0: + print(f"错误:{result.stderr.strip()}", file=sys.stderr) + return None + return json.loads(result.stdout) + except (subprocess.TimeoutExpired, json.JSONDecodeError, + FileNotFoundError) as e: + print(f"错误:{e}", file=sys.stderr) + return None + + +def get_week_range(): + today = datetime.now() + monday = today - timedelta(days=today.weekday()) + friday = monday + timedelta(days=4) + return monday.strftime('%Y-%m-%d'), friday.strftime('%Y-%m-%d') + + +def main(): + parser = argparse.ArgumentParser( + description='查询团队成员排班和出勤统计' + ) + parser.add_argument( + '--users', required=True, help='用户 ID 列表,逗号分隔' + ) + mon, fri = get_week_range() + parser.add_argument('--from', dest='from_date', default=mon) + parser.add_argument('--to', dest='to_date', default=fri) + parser.add_argument('--dry-run', action='store_true') + args = parser.parse_args() + + user_count = len(args.users.split(',')) + if user_count > 50: + print('错误:最多查询 50 人') + sys.exit(1) + + print(f"📊 团队排班查询 ({args.from_date} ~ {args.to_date})") + print(f" 人数: {user_count}") + print('=' * 50) + + print('\n🔍 查询排班信息...') + data = run_dws([ + 'attendance', 'shift', 'list', + '--users', args.users, + '--start', args.from_date, + '--end', args.to_date, + '--format', 'json', + ], dry_run=args.dry_run) + + if args.dry_run: + return + if not data: + print('未查到排班信息') + return + + print(json.dumps(data, ensure_ascii=False, indent=2)) + + +if __name__ == '__main__': + main() diff --git a/skills/dws/scripts/bulk_add_fields.py b/skills/dws/scripts/bulk_add_fields.py new file mode 100644 index 0000000..98e0a9c --- /dev/null +++ b/skills/dws/scripts/bulk_add_fields.py @@ -0,0 +1,250 @@ +#!/usr/bin/env python3 +""" +批量添加字段到钉钉 AI 表格数据表(新版 schema) + +用法: + python bulk_add_fields.py fields.json + +fields.json 格式: + [ + {"fieldName": "字段 1", "type": "text"}, + {"fieldName": "字段 2", "type": "number", "config": {"formatter": "INT"}}, + {"fieldName": "字段 3", "type": "singleSelect", "config": {"options": [{"name": "高"}]}} + ] + +兼容写法: +- name 会自动映射为 fieldName +- phone 会自动映射为 telephone +""" + +import sys +import json +import subprocess +import os +import re +from pathlib import Path +from typing import Union, List, Dict, Any, Optional, Tuple + +JsonData = Union[List[Any], Dict[str, Any]] + +MAX_FILE_SIZE = 10 * 1024 * 1024 +ALLOWED_FILE_EXTENSIONS = ['.json'] +RESOURCE_ID_PATTERN = re.compile(r'^[A-Za-z0-9_-]{8,128}$') +ALLOWED_FIELD_TYPES = { + 'text', 'number', 'singleSelect', 'multipleSelect', 'date', 'currency', + 'user', 'department', 'group', 'progress', 'rating', 'checkbox', + 'attachment', 'url', 'richText', 'telephone', 'email', 'idCard', + 'barcode', 'geolocation', 'primaryDoc', 'formula', 'unidirectionalLink', + 'bidirectionalLink', 'creator', 'lastModifier', 'createdTime', + 'lastModifiedTime', +} +FIELD_TYPE_ALIASES = { + 'phone': 'telephone', +} + + +def resolve_safe_path(path: str, allowed_root: Optional[str] = None) -> Path: + if allowed_root is None: + allowed_root = os.environ.get('OPENCLAW_WORKSPACE', os.getcwd()) + + allowed_root = Path(allowed_root).resolve() + target_path = ( + Path(path).resolve() + if Path(path).is_absolute() + else (Path.cwd() / path).resolve() + ) + + try: + target_path.relative_to(allowed_root) + return target_path + except ValueError: + raise ValueError( + f"路径超出允许范围:{path}\n" + f"目标路径:{target_path}\n" + f"允许根目录:{allowed_root}\n" + f"提示:设置 OPENCLAW_WORKSPACE 环境变量或确保文件在工作目录内" + ) + + +def validate_resource_id(resource_id: str) -> bool: + return bool(resource_id and RESOURCE_ID_PATTERN.match(resource_id.strip())) + + +def validate_file_extension(filename: str, allowed_extensions: list) -> bool: + return any(filename.lower().endswith(ext) for ext in allowed_extensions) + + +def safe_json_load(file_path: Path, max_size: int = MAX_FILE_SIZE) -> JsonData: + file_size = file_path.stat().st_size + if file_size > max_size: + raise ValueError( + f"文件过大:{file_size:,} 字节 (限制:{max_size:,} 字节)" + ) + with open(file_path, 'r', encoding='utf-8') as f: + return json.load(f) + + +def normalize_field_config(field: Dict[str, Any]) -> Dict[str, Any]: + normalized = dict(field) + if 'fieldName' not in normalized and 'name' in normalized: + normalized['fieldName'] = normalized.pop('name') + normalized['type'] = FIELD_TYPE_ALIASES.get( + normalized.get('type', 'text'), normalized.get('type', 'text') + ) + return normalized + + +def validate_field_config(field: Dict[str, Any]) -> Tuple[bool, str]: + if not isinstance(field, dict): + return False, '字段配置必须是对象' + + field = normalize_field_config(field) + + if 'fieldName' not in field: + return False, '缺少必需字段:fieldName' + if not isinstance(field['fieldName'], str) or not field['fieldName'].strip(): + return False, 'fieldName 必须是非空字符串' + + field_type = field.get('type', 'text') + if field_type not in ALLOWED_FIELD_TYPES: + return False, f"不支持的字段类型:{field_type}" + + config = field.get('config') + if config is not None and not isinstance(config, dict): + return False, 'config 必须是对象' + + if field_type in {'singleSelect', 'multipleSelect'}: + options = (config or {}).get('options') + if not options or not isinstance(options, list): + return False, ( + 'singleSelect / multipleSelect 必须提供 config.options 数组' + ) + + if field_type in {'unidirectionalLink', 'bidirectionalLink'}: + linked_sheet_id = (config or {}).get('linkedSheetId') + if not linked_sheet_id or not validate_resource_id(linked_sheet_id): + return False, '关联字段必须提供合法的 config.linkedSheetId' + + return True, '' + + +def build_fields_json(fields: List[Dict[str, Any]]) -> str: + """构建 --fields 参数的 JSON 字符串。""" + payload_fields = [] + for field in fields: + normalized = normalize_field_config(field) + item: Dict[str, Any] = { + 'fieldName': normalized['fieldName'].strip(), + 'type': normalized.get('type', 'text'), + } + if 'config' in normalized and normalized['config'] is not None: + item['config'] = normalized['config'] + payload_fields.append(item) + return json.dumps(payload_fields, ensure_ascii=False) + + +def run_dws(args: List[str]) -> Optional[Dict[str, Any]]: + if not args: + print('错误:空命令') + return None + + cmd = ['dws'] + args + try: + result = subprocess.run( + cmd, capture_output=True, text=True, timeout=60 + ) + if result.returncode != 0: + print(f"错误:{result.stderr.strip()}") + return None + try: + return json.loads(result.stdout) + except json.JSONDecodeError as e: + print(f"无法解析响应:{result.stdout[:200]}...") + print(f"JSON 解析错误:{e}") + return None + except subprocess.TimeoutExpired: + print('错误:命令执行超时(60 秒)') + return None + except FileNotFoundError: + print('错误:未找到 dws 命令,请确认已安装') + return None + + +def bulk_add_fields( + base_id: str, table_id: str, fields_file: str +) -> bool: + try: + safe_path = resolve_safe_path(fields_file) + except ValueError as e: + print(f"路径验证失败:{e}") + return False + + if not validate_file_extension(fields_file, ALLOWED_FILE_EXTENSIONS): + print(f"错误:只允许 {', '.join(ALLOWED_FILE_EXTENSIONS)} 文件") + return False + if not safe_path.exists(): + print(f"错误:文件不存在:{safe_path}") + return False + + try: + fields = safe_json_load(safe_path) + except ValueError as e: + print(f"错误:{e}") + return False + except json.JSONDecodeError as e: + print(f"错误:JSON 格式无效:{e}") + return False + + if not isinstance(fields, list) or not fields: + print('错误:fields.json 必须是非空 JSON 数组') + return False + if len(fields) > 15: + print('错误:单次最多创建 15 个字段,请拆分后重试') + return False + + for i, field in enumerate(fields): + valid, error = validate_field_config(field) + if not valid: + print(f"错误:字段 #{i+1} 配置无效:{error}") + return False + + fields_json = build_fields_json(fields) + result = run_dws([ + 'aitable', 'field', 'create', + '--base-id', base_id, + '--table-id', table_id, + '--fields', fields_json, + '--format', 'json', + ]) + + if not result: + return False + + print(json.dumps(result, ensure_ascii=False, indent=2)) + return True + + +def main(): + if len(sys.argv) != 4: + print(__doc__) + print('用法示例:') + print(' python bulk_add_fields.py basexxx tablexxx fields.json') + sys.exit(1) + + base_id = sys.argv[1] + table_id = sys.argv[2] + fields_file = sys.argv[3] + + if not validate_resource_id(base_id): + print('错误:无效的 baseId 格式') + sys.exit(1) + if not validate_resource_id(table_id): + print('错误:无效的 tableId 格式') + sys.exit(1) + + success = bulk_add_fields(base_id, table_id, fields_file) + sys.exit(0 if success else 1) + + +if __name__ == '__main__': + main() diff --git a/skills/dws/scripts/calendar_free_slot_finder.py b/skills/dws/scripts/calendar_free_slot_finder.py new file mode 100644 index 0000000..fbab129 --- /dev/null +++ b/skills/dws/scripts/calendar_free_slot_finder.py @@ -0,0 +1,195 @@ +#!/usr/bin/env python3 +""" +查询多人共同空闲时段,推荐最佳会议时间 + +用法: + python calendar_free_slot_finder.py \ + --users userId1,userId2,userId3 \ + --date 2026-03-15 \ + --duration 60 + + python calendar_free_slot_finder.py \ + --users userId1,userId2 \ + --date 2026-03-15 \ + --start-hour 9 --end-hour 18 \ + --duration 30 --dry-run +""" + +import sys +import json +import subprocess +import argparse +from datetime import datetime, timedelta, timezone +from typing import List, Dict, Any, Optional, Tuple + +TZ = timezone(timedelta(hours=8)) +SLOT_STEP_MIN = 30 + + +def run_dws( + args: List[str], dry_run: bool = False, +) -> Optional[Any]: + cmd = ['dws'] + args + if dry_run: + print(f"[dry-run] {' '.join(cmd)}") + return None + try: + result = subprocess.run( + cmd, capture_output=True, text=True, timeout=60 + ) + if result.returncode != 0: + print(f"错误:{result.stderr.strip()}", file=sys.stderr) + return None + return json.loads(result.stdout) + except (subprocess.TimeoutExpired, json.JSONDecodeError, + FileNotFoundError) as e: + print(f"错误:{e}", file=sys.stderr) + return None + + +def fmt_iso(dt: datetime) -> str: + return dt.strftime('%Y-%m-%dT%H:%M:%S+08:00') + + +def parse_busy_intervals( + data: Any, +) -> List[Tuple[datetime, datetime]]: + intervals = [] + if not data: + return intervals + items = [] + if isinstance(data, list): + items = data + elif isinstance(data, dict): + for user_data in data.values(): + if isinstance(user_data, list): + items.extend(user_data) + elif isinstance(user_data, dict): + items.extend( + user_data.get('busyTimes', []) + ) + for item in items: + start_str = item.get('startTime') or item.get('start', '') + end_str = item.get('endTime') or item.get('end', '') + if not start_str or not end_str: + continue + for fmt in ( + '%Y-%m-%dT%H:%M:%S%z', '%Y-%m-%dT%H:%M:%S', + '%Y-%m-%dT%H:%M%z', + ): + try: + s = datetime.strptime(start_str, fmt) + e = datetime.strptime(end_str, fmt) + if s.tzinfo is None: + s = s.replace(tzinfo=TZ) + if e.tzinfo is None: + e = e.replace(tzinfo=TZ) + intervals.append((s, e)) + break + except ValueError: + continue + return intervals + + +def find_free_slots( + day_start: datetime, day_end: datetime, + busy: List[Tuple[datetime, datetime]], + duration_min: int, +) -> List[Tuple[datetime, datetime]]: + busy_sorted = sorted(busy, key=lambda x: x[0]) + merged: List[Tuple[datetime, datetime]] = [] + for s, e in busy_sorted: + if merged and s <= merged[-1][1]: + merged[-1] = (merged[-1][0], max(merged[-1][1], e)) + else: + merged.append((s, e)) + + free: List[Tuple[datetime, datetime]] = [] + cursor = day_start + for bs, be in merged: + if cursor < bs: + gap = (bs - cursor).total_seconds() / 60 + if gap >= duration_min: + free.append((cursor, bs)) + cursor = max(cursor, be) + if cursor < day_end: + gap = (day_end - cursor).total_seconds() / 60 + if gap >= duration_min: + free.append((cursor, day_end)) + return free + + +def main(): + parser = argparse.ArgumentParser( + description='查询多人共同空闲时段' + ) + parser.add_argument( + '--users', required=True, help='用户 ID 列表,逗号分隔' + ) + parser.add_argument( + '--date', required=True, help='查询日期 YYYY-MM-DD' + ) + parser.add_argument( + '--duration', type=int, default=60, + help='会议时长(分钟),默认 60', + ) + parser.add_argument( + '--start-hour', type=int, default=9, + help='工作日开始小时,默认 9', + ) + parser.add_argument( + '--end-hour', type=int, default=18, + help='工作日结束小时,默认 18', + ) + parser.add_argument( + '--dry-run', action='store_true', help='仅显示命令' + ) + args = parser.parse_args() + + try: + date = datetime.strptime(args.date, '%Y-%m-%d') + except ValueError: + print('错误:日期格式应为 YYYY-MM-DD') + sys.exit(1) + + day_start = date.replace( + hour=args.start_hour, tzinfo=TZ + ) + day_end = date.replace(hour=args.end_hour, tzinfo=TZ) + + data = run_dws([ + 'calendar', 'busy', 'search', + '--users', args.users, + '--start', fmt_iso(day_start), + '--end', fmt_iso(day_end), + '--format', 'json', + ], dry_run=args.dry_run) + + if args.dry_run: + return + + busy = parse_busy_intervals(data) + free = find_free_slots(day_start, day_end, busy, args.duration) + + users_list = args.users.split(',') + print(f"\n🕐 空闲时段查询 ({args.date})") + print(f" 参与人: {len(users_list)} 人") + print(f" 会议时长: {args.duration} 分钟") + print(f" 工作时间: {args.start_hour}:00 ~ " + f"{args.end_hour}:00") + print('=' * 50) + + if not free: + print(' ❌ 该日无共同空闲时段') + return + + print(f"\n✅ 找到 {len(free)} 个可用时段:\n") + for i, (s, e) in enumerate(free, 1): + gap_min = int((e - s).total_seconds() / 60) + label = '⭐ 推荐' if i == 1 else f' 备选{i-1}' + print(f" {label} {s.strftime('%H:%M')} ~ " + f"{e.strftime('%H:%M')} ({gap_min}分钟)") + + +if __name__ == '__main__': + main() diff --git a/skills/dws/scripts/calendar_schedule_meeting.py b/skills/dws/scripts/calendar_schedule_meeting.py new file mode 100644 index 0000000..54dd920 --- /dev/null +++ b/skills/dws/scripts/calendar_schedule_meeting.py @@ -0,0 +1,159 @@ +#!/usr/bin/env python3 +""" +一键创建日程 + 添加参与者 + 搜索并预定空闲会议室 + +用法: + python calendar_schedule_meeting.py \ + --title "Q1 复盘会" \ + --start "2026-03-15T14:00" \ + --end "2026-03-15T15:00" \ + --users userId1,userId2 \ + --book-room + + python calendar_schedule_meeting.py --dry-run \ + --title "测试" --start "2026-03-15T14:00" --end "2026-03-15T15:00" +""" + +import sys +import json +import subprocess +import argparse +from datetime import datetime, timedelta, timezone +from typing import List, Dict, Any, Optional + +TZ = timezone(timedelta(hours=8)) + + +def run_dws( + args: List[str], dry_run: bool = False, +) -> Optional[Any]: + cmd = ['dws'] + args + if dry_run: + print(f"[dry-run] {' '.join(cmd)}") + return {'dry_run': True} + try: + result = subprocess.run( + cmd, capture_output=True, text=True, timeout=60 + ) + if result.returncode != 0: + print(f" ✗ 错误:{result.stderr.strip()}") + return None + return json.loads(result.stdout) + except (subprocess.TimeoutExpired, json.JSONDecodeError, + FileNotFoundError) as e: + print(f" ✗ 错误:{e}") + return None + + +def normalize_time(time_str: str) -> str: + for fmt in ('%Y-%m-%dT%H:%M', '%Y-%m-%d %H:%M', + '%Y-%m-%dT%H:%M:%S'): + try: + dt = datetime.strptime(time_str, fmt) + dt = dt.replace(tzinfo=TZ) + return dt.strftime('%Y-%m-%dT%H:%M:%S+08:00') + except ValueError: + continue + if '+' in time_str or time_str.endswith('Z'): + return time_str + raise ValueError(f"无法解析时间:{time_str}") + + +def main(): + parser = argparse.ArgumentParser( + description='一键创建日程 + 添加参与者 + 预定会议室' + ) + parser.add_argument('--title', required=True, help='日程标题') + parser.add_argument('--start', required=True, help='开始时间') + parser.add_argument('--end', required=True, help='结束时间') + parser.add_argument('--desc', default='', help='日程描述') + parser.add_argument('--users', default='', help='参与者 userId') + parser.add_argument( + '--book-room', action='store_true', help='自动预定会议室' + ) + parser.add_argument( + '--dry-run', action='store_true', help='仅显示命令' + ) + args = parser.parse_args() + + try: + start_iso = normalize_time(args.start) + end_iso = normalize_time(args.end) + except ValueError as e: + print(f"错误:{e}") + sys.exit(1) + + print('📅 创建日程...') + create_args = [ + 'calendar', 'event', 'create', + '--title', args.title, + '--start', start_iso, + '--end', end_iso, + '--format', 'json', + ] + if args.desc: + create_args.extend(['--desc', args.desc]) + + result = run_dws(create_args, dry_run=args.dry_run) + if not result: + sys.exit(1) + + event_id = None + if not args.dry_run and isinstance(result, dict): + event_id = result.get('eventId') or result.get('id') + print(f" ✓ 日程已创建" + + (f" (eventId: {event_id})" if event_id else "")) + + if args.users and event_id: + print('\n👥 添加参与者...') + r = run_dws([ + 'calendar', 'participant', 'add', + '--event', event_id, + '--users', args.users, + '--format', 'json', + ], dry_run=args.dry_run) + if r: + print(f" ✓ 已添加参与者: {args.users}") + elif args.users and args.dry_run: + run_dws([ + 'calendar', 'participant', 'add', + '--event', '', + '--users', args.users, + '--format', 'json', + ], dry_run=True) + + if args.book_room: + print('\n🏢 搜索空闲会议室...') + rooms_data = run_dws([ + 'calendar', 'room', 'search', + '--start', start_iso, + '--end', end_iso, + '--available', + '--format', 'json', + ], dry_run=args.dry_run) + + if not args.dry_run and rooms_data: + rooms = (rooms_data if isinstance(rooms_data, list) + else rooms_data.get('rooms', [])) + if rooms: + room = rooms[0] + room_id = room.get('roomId') or room.get('id') + room_name = room.get('roomName') or room.get('name') + print(f" 找到空闲会议室: {room_name}") + if event_id and room_id: + r = run_dws([ + 'calendar', 'room', 'add', + '--event', event_id, + '--rooms', str(room_id), + '--format', 'json', + ], dry_run=args.dry_run) + if r: + print(f" ✓ 已预定: {room_name}") + else: + print(' ⚠ 该时段无空闲会议室') + + print('\n✅ 完成!') + + +if __name__ == '__main__': + main() diff --git a/skills/dws/scripts/calendar_today_agenda.py b/skills/dws/scripts/calendar_today_agenda.py new file mode 100644 index 0000000..76dd550 --- /dev/null +++ b/skills/dws/scripts/calendar_today_agenda.py @@ -0,0 +1,132 @@ +#!/usr/bin/env python3 +""" +查看今天/明天/本周的日程安排 + +用法: + python calendar_today_agenda.py # 今天 + python calendar_today_agenda.py today # 今天 + python calendar_today_agenda.py tomorrow # 明天 + python calendar_today_agenda.py week # 本周 + python calendar_today_agenda.py --dry-run # 仅显示命令 +""" + +import sys +import json +import subprocess +from datetime import datetime, timedelta, timezone +from typing import List, Dict, Any, Optional + +TZ = timezone(timedelta(hours=8)) + + +def run_dws( + args: List[str], dry_run: bool = False, +) -> Optional[Any]: + cmd = ['dws'] + args + if dry_run: + print(f"[dry-run] {' '.join(cmd)}") + return None + try: + result = subprocess.run( + cmd, capture_output=True, text=True, timeout=60 + ) + if result.returncode != 0: + print(f"错误:{result.stderr.strip()}", file=sys.stderr) + return None + return json.loads(result.stdout) + except (subprocess.TimeoutExpired, json.JSONDecodeError, + FileNotFoundError) as e: + print(f"错误:{e}", file=sys.stderr) + return None + + +def get_range(scope: str): + now = datetime.now(TZ) + today = now.replace(hour=0, minute=0, second=0, microsecond=0) + if scope == 'today': + return today, today + timedelta(days=1) + elif scope == 'tomorrow': + t = today + timedelta(days=1) + return t, t + timedelta(days=1) + elif scope == 'week': + ws = today - timedelta(days=today.weekday()) + return ws, ws + timedelta(days=7) + return today, today + timedelta(days=1) + + +def fmt_iso(dt: datetime) -> str: + return dt.strftime('%Y-%m-%dT%H:%M:%S+08:00') + + +def fmt_time(iso_str: str) -> str: + if not iso_str: + return '??:??' + try: + for fmt in ('%Y-%m-%dT%H:%M:%S%z', '%Y-%m-%dT%H:%M:%S'): + try: + dt = datetime.strptime(iso_str, fmt) + return dt.strftime('%H:%M') + except ValueError: + continue + return iso_str[:16] + except Exception: + return iso_str[:16] + + +def main(): + dry_run = '--dry-run' in sys.argv + args = [a for a in sys.argv[1:] if a != '--dry-run'] + scope = args[0] if args else 'today' + if scope not in ('today', 'tomorrow', 'week'): + print(__doc__) + sys.exit(1) + + start, end = get_range(scope) + data = run_dws([ + 'calendar', 'event', 'list', + '--start', fmt_iso(start), + '--end', fmt_iso(end), + '--format', 'json', + ], dry_run=dry_run) + if dry_run: + return + + events = [] + if isinstance(data, list): + events = data + elif isinstance(data, dict): + events = data.get('events', data.get('result', [])) + + label = {'today': '今天', 'tomorrow': '明天', 'week': '本周' + }.get(scope, scope) + print(f"\n📅 {label}日程 ({start.strftime('%m-%d')} ~ " + f"{end.strftime('%m-%d')})") + print('=' * 50) + + if not events: + print(' ✅ 暂无日程,自由安排!') + return + + for e in events: + title = e.get('summary') or e.get('title', '无标题') + s = e.get('start', {}) + ed = e.get('end', {}) + start_t = fmt_time( + s.get('dateTime', '') if isinstance(s, dict) else str(s) + ) + end_t = fmt_time( + ed.get('dateTime', '') if isinstance(ed, dict) else str(ed) + ) + loc = e.get('location', {}) + loc_str = (loc.get('displayName', '') + if isinstance(loc, dict) else str(loc or '')) + line = f" 🕐 {start_t}-{end_t} {title}" + if loc_str: + line += f" 📍{loc_str}" + print(line) + + print(f"\n合计: {len(events)} 场日程") + + +if __name__ == '__main__': + main() diff --git a/skills/dws/scripts/contact_dept_members.py b/skills/dws/scripts/contact_dept_members.py new file mode 100644 index 0000000..9413656 --- /dev/null +++ b/skills/dws/scripts/contact_dept_members.py @@ -0,0 +1,110 @@ +#!/usr/bin/env python3 +""" +按部门名称搜索并列出所有成员(自动 deptId 解析) + +用法: + python contact_dept_members.py --query "技术部" + python contact_dept_members.py --query "产品" --dry-run +""" + +import sys +import json +import subprocess +import argparse +from typing import List, Any, Optional + + +def run_dws( + args: List[str], dry_run: bool = False, +) -> Optional[Any]: + cmd = ['dws'] + args + if dry_run: + print(f"[dry-run] {' '.join(cmd)}") + return None + try: + result = subprocess.run( + cmd, capture_output=True, text=True, timeout=60 + ) + if result.returncode != 0: + print(f"错误:{result.stderr.strip()}", file=sys.stderr) + return None + return json.loads(result.stdout) + except (subprocess.TimeoutExpired, json.JSONDecodeError, + FileNotFoundError) as e: + print(f"错误:{e}", file=sys.stderr) + return None + + +def main(): + parser = argparse.ArgumentParser( + description='按部门名称搜索并列出所有成员' + ) + parser.add_argument( + '--query', required=True, help='部门名称关键词' + ) + parser.add_argument('--dry-run', action='store_true') + args = parser.parse_args() + + print(f'🔍 搜索部门: {args.query}') + dept_data = run_dws([ + 'contact', 'dept', 'search', + '--query', args.query, '--format', 'json', + ], dry_run=args.dry_run) + + if args.dry_run: + run_dws([ + 'contact', 'dept', 'list-members', + '--ids', '', '--format', 'json', + ], dry_run=True) + return + + if not dept_data: + print('未找到匹配部门') + sys.exit(1) + + depts = (dept_data if isinstance(dept_data, list) + else dept_data.get('result', dept_data.get('items', []))) + if not depts: + print('未找到匹配部门') + sys.exit(1) + + for dept in depts: + dept_id = dept.get('id') or dept.get('deptId') + dept_name = dept.get('name') or dept.get('deptName', '未知') + if not dept_id: + continue + + print(f"\n📂 {dept_name} (ID: {dept_id})") + print('-' * 40) + + members_data = run_dws([ + 'contact', 'dept', 'list-members', + '--ids', str(dept_id), '--format', 'json', + ]) + if not members_data: + print(' 无法获取成员列表') + continue + + members = (members_data if isinstance(members_data, list) + else members_data.get('result', + members_data.get('userlist', []))) + if not members: + print(' (暂无成员)') + continue + + for m in members: + name = m.get('name') or m.get('userName', '未知') + title = m.get('title') or m.get('position', '') + uid = m.get('userId') or m.get('userid', '') + line = f" 👤 {name}" + if title: + line += f" ({title})" + if uid: + line += f" [ID: {uid}]" + print(line) + + print(f" 共 {len(members)} 人") + + +if __name__ == '__main__': + main() diff --git a/skills/dws/scripts/import_records.py b/skills/dws/scripts/import_records.py new file mode 100644 index 0000000..30bd2f5 --- /dev/null +++ b/skills/dws/scripts/import_records.py @@ -0,0 +1,330 @@ +#!/usr/bin/env python3 +""" +从 CSV / JSON 批量导入记录到钉钉 AI 表格(新版 schema) + +用法: + python import_records.py data.csv [batch_size] + python import_records.py data.json [batch_size] + +说明: +- CSV 表头默认视为 fieldId +- JSON 支持两种格式: + 1. [{"cells": {"fldxxx": "value"}}, ...] + 2. [{"fldxxx": "value"}, ...] # 会自动包装成 cells +""" + +import sys +import csv +import json +import subprocess +import os +import re +from pathlib import Path +from typing import Union, List, Dict, Any, Optional, Tuple + +JsonData = Union[List[Any], Dict[str, Any]] +RecordDict = Dict[str, str] + +MAX_FILE_SIZE = 50 * 1024 * 1024 +ALLOWED_CSV_EXTENSIONS = ['.csv'] +ALLOWED_JSON_EXTENSIONS = ['.json'] +RESOURCE_ID_PATTERN = re.compile(r'^[A-Za-z0-9_-]{8,128}$') +MAX_RECORDS_PER_BATCH = 100 +DEFAULT_BATCH_SIZE = 50 + + +def resolve_safe_path( + path: str, allowed_root: Optional[str] = None +) -> Path: + if allowed_root is None: + allowed_root = os.environ.get('OPENCLAW_WORKSPACE', os.getcwd()) + allowed_root = Path(allowed_root).resolve() + target_path = ( + Path(path).resolve() + if Path(path).is_absolute() + else (Path.cwd() / path).resolve() + ) + try: + target_path.relative_to(allowed_root) + return target_path + except ValueError: + raise ValueError( + f"路径超出允许范围:{path}\n" + f"目标路径:{target_path}\n" + f"允许根目录:{allowed_root}\n" + f"提示:设置 OPENCLAW_WORKSPACE 环境变量或确保文件在工作目录内" + ) + + +def validate_resource_id(resource_id: str) -> bool: + return bool( + resource_id and RESOURCE_ID_PATTERN.match(resource_id.strip()) + ) + + +def validate_file_extension( + filename: str, allowed_extensions: list +) -> bool: + return any(filename.lower().endswith(ext) for ext in allowed_extensions) + + +def safe_csv_load( + file_path: Path, max_size: int = MAX_FILE_SIZE +) -> List[RecordDict]: + file_size = file_path.stat().st_size + if file_size > max_size: + raise ValueError( + f"文件过大:{file_size:,} 字节 (限制:{max_size:,} 字节)" + ) + with open(file_path, 'r', encoding='utf-8', newline='') as f: + return list(csv.DictReader(f)) + + +def safe_json_load( + file_path: Path, max_size: int = MAX_FILE_SIZE +) -> JsonData: + file_size = file_path.stat().st_size + if file_size > max_size: + raise ValueError( + f"文件过大:{file_size:,} 字节 (限制:{max_size:,} 字节)" + ) + with open(file_path, 'r', encoding='utf-8') as f: + return json.load(f) + + +def sanitize_record_value( + value: Any, +) -> Optional[Union[str, int, float, bool, list, dict]]: + if value is None: + return None + if isinstance(value, (bool, int, float, list, dict)): + return value + if not isinstance(value, str): + return value + if not value.strip(): + return None + + value = value.strip() + if value.lower() == 'true': + return True + if value.lower() == 'false': + return False + + try: + if '.' in value: + return float(value) + return int(value) + except ValueError: + return value + + +def normalize_record(record: Dict[str, Any]) -> Dict[str, Any]: + if 'cells' in record and isinstance(record['cells'], dict): + cells = record['cells'] + else: + cells = record + normalized = {} + for key, value in cells.items(): + sanitized = sanitize_record_value(value) + if sanitized is not None: + normalized[key] = sanitized + return {'cells': normalized} + + +def validate_record( + record: Dict[str, Any], headers: List[str] +) -> Tuple[bool, str]: + if not isinstance(record, dict): + return False, '记录必须是对象' + normalized = normalize_record(record) + cells = normalized.get('cells', {}) + if not cells or not isinstance(cells, dict): + return False, '记录必须包含非空 cells 对象' + return True, '' + + +def run_dws(args: List[str]) -> Optional[Dict[str, Any]]: + if not args: + print('错误:空命令') + return None + cmd = ['dws'] + args + try: + result = subprocess.run( + cmd, capture_output=True, text=True, timeout=120 + ) + if result.returncode != 0: + print(f"错误:{result.stderr.strip()}") + return None + try: + return json.loads(result.stdout) + except json.JSONDecodeError as e: + print(f"无法解析响应:{result.stdout[:200]}...") + print(f"JSON 解析错误:{e}") + return None + except subprocess.TimeoutExpired: + print('错误:命令执行超时(120 秒)') + return None + except FileNotFoundError: + print('错误:未找到 dws 命令,请确认已安装') + return None + + +def import_from_csv( + base_id: str, table_id: str, csv_file: str, + batch_size: int = DEFAULT_BATCH_SIZE, +) -> bool: + try: + safe_path = resolve_safe_path(csv_file) + except ValueError as e: + print(f"路径验证失败:{e}") + return False + + if not validate_file_extension(csv_file, ALLOWED_CSV_EXTENSIONS): + print(f"错误:只允许 {', '.join(ALLOWED_CSV_EXTENSIONS)} 文件") + return False + if not safe_path.exists(): + print(f"错误:文件不存在:{safe_path}") + return False + + try: + rows = safe_csv_load(safe_path) + except ValueError as e: + print(f"错误:{e}") + return False + except csv.Error as e: + print(f"错误:CSV 格式无效:{e}") + return False + + if not rows: + print('错误:CSV 文件为空或没有有效数据行') + return False + + records = [ + normalize_record(row) + for row in rows + if normalize_record(row)['cells'] + ] + return import_records(base_id, table_id, records, batch_size) + + +def import_from_json( + base_id: str, table_id: str, json_file: str, + batch_size: int = DEFAULT_BATCH_SIZE, +) -> bool: + try: + safe_path = resolve_safe_path(json_file) + except ValueError as e: + print(f"路径验证失败:{e}") + return False + + if not validate_file_extension(json_file, ALLOWED_JSON_EXTENSIONS): + print(f"错误:只允许 {', '.join(ALLOWED_JSON_EXTENSIONS)} 文件") + return False + if not safe_path.exists(): + print(f"错误:文件不存在:{safe_path}") + return False + + try: + records = safe_json_load(safe_path) + except ValueError as e: + print(f"错误:{e}") + return False + except json.JSONDecodeError as e: + print(f"错误:JSON 格式无效:{e}") + return False + + if not isinstance(records, list) or not records: + print('错误:JSON 文件必须是非空数组') + return False + + for i, record in enumerate(records): + valid, error = validate_record(record, []) + if not valid: + print(f"错误:记录 #{i+1} 格式无效:{error}") + return False + + return import_records( + base_id, table_id, + [normalize_record(r) for r in records], batch_size, + ) + + +def import_records( + base_id: str, table_id: str, + records: List[Dict[str, Any]], batch_size: int, +) -> bool: + if batch_size <= 0: + print('错误:batch_size 必须大于 0') + return False + if batch_size > MAX_RECORDS_PER_BATCH: + batch_size = MAX_RECORDS_PER_BATCH + + total_batches = (len(records) + batch_size - 1) // batch_size + success = True + + for i in range(0, len(records), batch_size): + batch = records[i:i + batch_size] + batch_num = (i // batch_size) + 1 + records_json = json.dumps(batch, ensure_ascii=False) + result = run_dws([ + 'aitable', 'record', 'create', + '--base-id', base_id, + '--table-id', table_id, + '--records', records_json, + '--format', 'json', + ]) + if result: + print( + f"[{batch_num}/{total_batches}] " + f"✓ 已提交 {len(batch)} 条记录" + ) + else: + print(f"[{batch_num}/{total_batches}] ✗ 导入失败") + success = False + + return success + + +def main(): + if len(sys.argv) < 4 or len(sys.argv) > 5: + print(__doc__) + print('用法示例:') + print( + ' python import_records.py basexxx tablexxx data.csv 50' + ) + sys.exit(1) + + base_id = sys.argv[1] + table_id = sys.argv[2] + input_file = sys.argv[3] + batch_size = ( + int(sys.argv[4]) if len(sys.argv) == 5 + else DEFAULT_BATCH_SIZE + ) + + if not validate_resource_id(base_id): + print('错误:无效的 baseId 格式') + sys.exit(1) + if not validate_resource_id(table_id): + print('错误:无效的 tableId 格式') + sys.exit(1) + + if input_file.lower().endswith('.csv'): + success = import_from_csv( + base_id, table_id, input_file, batch_size + ) + elif input_file.lower().endswith('.json'): + success = import_from_json( + base_id, table_id, input_file, batch_size + ) + else: + print('错误:仅支持 .csv 或 .json 文件') + sys.exit(1) + + sys.exit(0 if success else 1) + + +if __name__ == '__main__': + main() + + diff --git a/skills/dws/scripts/report_inbox_today.py b/skills/dws/scripts/report_inbox_today.py new file mode 100644 index 0000000..05f5985 --- /dev/null +++ b/skills/dws/scripts/report_inbox_today.py @@ -0,0 +1,114 @@ +#!/usr/bin/env python3 +""" +查看今天收到的日志列表及详情 + +用法: + python report_inbox_today.py + python report_inbox_today.py --days 3 # 最近 3 天 + python report_inbox_today.py --dry-run +""" + +import sys +import json +import subprocess +import argparse +from datetime import datetime, timedelta +from typing import List, Any, Optional + + +def run_dws( + args: List[str], dry_run: bool = False, +) -> Optional[Any]: + cmd = ['dws'] + args + if dry_run: + print(f"[dry-run] {' '.join(cmd)}") + return None + try: + result = subprocess.run( + cmd, capture_output=True, text=True, timeout=60 + ) + if result.returncode != 0: + print(f"错误:{result.stderr.strip()}", file=sys.stderr) + return None + return json.loads(result.stdout) + except (subprocess.TimeoutExpired, json.JSONDecodeError, + FileNotFoundError) as e: + print(f"错误:{e}", file=sys.stderr) + return None + + +def to_iso(dt: datetime) -> str: + return dt.strftime('%Y-%m-%dT%H:%M:%S+08:00') + + +def main(): + parser = argparse.ArgumentParser( + description='查看收到的日志' + ) + parser.add_argument( + '--days', type=int, default=1, help='查询天数 (默认 1)' + ) + parser.add_argument('--dry-run', action='store_true') + args = parser.parse_args() + + now = datetime.now() + start = now - timedelta(days=args.days) + start = start.replace(hour=0, minute=0, second=0) + + label = '今天' if args.days == 1 else f'最近 {args.days} 天' + print(f'📓 查看{label}收到的日志...\n') + + data = run_dws([ + 'report', 'list', + '--start', to_iso(start), + '--end', to_iso(now), + '--cursor', '0', + '--size', '20', + '--format', 'json', + ], dry_run=args.dry_run) + + if args.dry_run: + return + if not data: + print('未查到日志') + return + + reports = (data if isinstance(data, list) + else data.get('result', data.get('reports', []))) + if not reports: + print(' ✅ 暂无收到的日志') + return + + print(f"📓 {label}日志 ({len(reports)} 条)") + print('=' * 50) + + for r in reports: + rid = r.get('reportId') or r.get('id', '') + creator = r.get('creatorName') or r.get('creator', '未知') + template = r.get('templateName') or r.get('template', '') + create_time = r.get('createTime', '') + if isinstance(create_time, (int, float)): + create_time = datetime.fromtimestamp( + create_time / 1000 + ).strftime('%Y-%m-%d %H:%M') + + print(f"\n 📝 {template or '日志'} - {creator}") + print(f" 时间: {create_time}") + print(f" ID: {rid}") + + if rid: + detail = run_dws([ + 'report', 'detail', + '--report-id', rid, '--format', 'json', + ]) + if detail and isinstance(detail, dict): + contents = detail.get('contents', []) + for c in contents[:3]: + key = c.get('key') or c.get('title', '') + val = c.get('value') or c.get('content', '') + if key and val: + print(f" {key}: {str(val)[:60]}") + + +if __name__ == '__main__': + main() diff --git a/skills/dws/scripts/todo_batch_create.py b/skills/dws/scripts/todo_batch_create.py new file mode 100644 index 0000000..ae021fd --- /dev/null +++ b/skills/dws/scripts/todo_batch_create.py @@ -0,0 +1,159 @@ +#!/usr/bin/env python3 +""" +从 JSON 文件批量创建待办(含优先级、截止时间、执行者) + +用法: + python todo_batch_create.py todos.json + python todo_batch_create.py todos.json --dry-run + +todos.json 格式: + [ + {"title": "修复线上Bug", "executors": "userId1,userId2", "priority": 40}, + {"title": "写周报", "executors": "userId1", "due": "2026-03-15"}, + {"title": "代码评审", "executors": "userId1"}, + {"title": "每日站会", "executors": "userId1", "due": "2026-03-20", + "recurrence": "DTSTART:20260320T020000Z\\nRRULE:FREQ=DAILY;INTERVAL=1"} + ] + +字段说明: +- title: 待办标题 (必填) +- executors: 执行者 userId,多人逗号分隔 (必填) +- priority: 优先级 10=低/20=普通/30=较高/40=紧急 (可选) +- due: 截止日期 YYYY-MM-DD 或毫秒时间戳 (可选) +- recurrence: 循环待办规则 (可选,需同时有 due);字符串内需含换行,与 dws --recurrence 一致 +""" + +import sys +import json +import subprocess +import re +from datetime import datetime +from pathlib import Path +from typing import List, Dict, Any, Optional + +ALLOWED_PRIORITIES = {10, 20, 30, 40} +DATE_PATTERN = re.compile(r'^\d{4}-\d{2}-\d{2}$') +MAX_FILE_SIZE = 10 * 1024 * 1024 + + +def run_dws( + args: List[str], dry_run: bool = False, +) -> Optional[Dict[str, Any]]: + cmd = ['dws'] + args + if dry_run: + print(f"[dry-run] {' '.join(cmd)}") + return {'dry_run': True} + try: + result = subprocess.run( + cmd, capture_output=True, text=True, timeout=60 + ) + if result.returncode != 0: + print(f" ✗ 错误:{result.stderr.strip()}") + return None + return json.loads(result.stdout) + except subprocess.TimeoutExpired: + print(' ✗ 命令执行超时', file=sys.stderr) + return None + except (json.JSONDecodeError, FileNotFoundError) as e: + print(f" ✗ 错误:{e}", file=sys.stderr) + return None + + +def parse_due(due_value) -> Optional[str]: + if not due_value: + return None + due_str = str(due_value) + if due_str.isdigit() and len(due_str) >= 10: + return due_str + if DATE_PATTERN.match(due_str): + dt = datetime.strptime(due_str, '%Y-%m-%d') + dt = dt.replace(hour=23, minute=59, second=59) + return str(int(dt.timestamp() * 1000)) + print(f" ⚠ 无法解析截止时间:{due_value},跳过") + return None + + +def validate_todo(item: Dict[str, Any], idx: int) -> bool: + if not isinstance(item, dict): + print(f" ✗ #{idx+1} 不是有效对象") + return False + if not item.get('title', '').strip(): + print(f" ✗ #{idx+1} 缺少 title") + return False + if not item.get('executors', '').strip(): + print(f" ✗ #{idx+1} 缺少 executors") + return False + priority = item.get('priority') + if priority is not None and int(priority) not in ALLOWED_PRIORITIES: + print(f" ✗ #{idx+1} 无效优先级:{priority}") + return False + recurrence = item.get('recurrence') + if recurrence and not str(recurrence).strip(): + print(f" ✗ #{idx+1} recurrence 不能为空字符串") + return False + if recurrence and not item.get('due'): + print(f" ✗ #{idx+1} 设置 recurrence 时必须提供 due") + return False + return True + + +def main(): + dry_run = '--dry-run' in sys.argv + args = [a for a in sys.argv[1:] if a != '--dry-run'] + if not args: + print(__doc__) + sys.exit(1) + + file_path = Path(args[0]) + if not file_path.exists(): + print(f"错误:文件不存在:{file_path}") + sys.exit(1) + if file_path.stat().st_size > MAX_FILE_SIZE: + print(f"错误:文件过大 (限制 {MAX_FILE_SIZE // 1024}KB)") + sys.exit(1) + + with open(file_path, 'r', encoding='utf-8') as f: + todos = json.load(f) + if not isinstance(todos, list) or not todos: + print('错误:JSON 文件必须是非空数组') + sys.exit(1) + + for i, item in enumerate(todos): + if not validate_todo(item, i): + sys.exit(1) + + print(f"📋 准备创建 {len(todos)} 条待办\n") + success, fail = 0, 0 + for i, item in enumerate(todos): + title = item['title'].strip() + cmd_args = [ + 'todo', 'task', 'create', + '--title', title, + '--executors', item['executors'].strip(), + '--format', 'json', + ] + priority = item.get('priority') + if priority is not None: + cmd_args.extend(['--priority', str(int(priority))]) + due = parse_due(item.get('due')) + if due: + cmd_args.extend(['--due', due]) + recurrence = item.get('recurrence') + if recurrence: + rr = str(recurrence).replace('\\n', '\n') + cmd_args.extend(['--recurrence', rr]) + + result = run_dws(cmd_args, dry_run=dry_run) + if result: + print(f" ✓ [{i+1}/{len(todos)}] {title}") + success += 1 + else: + print(f" ✗ [{i+1}/{len(todos)}] {title}") + fail += 1 + + print(f"\n完成: 成功 {success}, 失败 {fail}") + sys.exit(0 if fail == 0 else 1) + + +if __name__ == '__main__': + main() diff --git a/skills/dws/scripts/todo_daily_summary.py b/skills/dws/scripts/todo_daily_summary.py new file mode 100644 index 0000000..3fb7538 --- /dev/null +++ b/skills/dws/scripts/todo_daily_summary.py @@ -0,0 +1,169 @@ +#!/usr/bin/env python3 +""" +查询今天/明天/本周未完成的待办并汇总输出 + +用法: + python todo_daily_summary.py # 默认查今天 + python todo_daily_summary.py today # 今天的待办 + python todo_daily_summary.py tomorrow # 明天的待办 + python todo_daily_summary.py week # 本周的待办 + python todo_daily_summary.py --dry-run # 仅显示将执行的命令 +""" + +import sys +import json +import subprocess +from datetime import datetime, timedelta +from typing import List, Dict, Any, Optional + +PRIORITY_MAP = {10: '低', 20: '普通', 30: '较高', 40: '紧急'} +PAGE_SIZE = 50 +MAX_PAGES = 10 + + +def run_dws(args: List[str], dry_run: bool = False) -> Optional[Any]: + cmd = ['dws'] + args + if dry_run: + print(f"[dry-run] {' '.join(cmd)}") + return None + try: + result = subprocess.run( + cmd, capture_output=True, text=True, timeout=60 + ) + if result.returncode != 0: + print(f"错误:{result.stderr.strip()}", file=sys.stderr) + return None + return json.loads(result.stdout) + except subprocess.TimeoutExpired: + print('错误:命令执行超时', file=sys.stderr) + return None + except (json.JSONDecodeError, FileNotFoundError) as e: + print(f"错误:{e}", file=sys.stderr) + return None + + +def get_date_range(scope: str): + now = datetime.now() + today_start = now.replace(hour=0, minute=0, second=0, microsecond=0) + if scope == 'today': + return today_start, today_start + timedelta(days=1) + elif scope == 'tomorrow': + tmr = today_start + timedelta(days=1) + return tmr, tmr + timedelta(days=1) + elif scope == 'week': + week_start = today_start - timedelta(days=today_start.weekday()) + return week_start, week_start + timedelta(days=7) + return today_start, today_start + timedelta(days=1) + + +def fetch_all_todos( + dry_run: bool = False, +) -> List[Dict[str, Any]]: + all_todos: List[Dict[str, Any]] = [] + for page in range(1, MAX_PAGES + 1): + data = run_dws([ + 'todo', 'task', 'list', + '--page', str(page), + '--size', str(PAGE_SIZE), + '--status', 'false', + '--format', 'json', + ], dry_run=dry_run) + if dry_run: + return [] + if not data: + break + items = data if isinstance(data, list) else data.get( + 'result', data.get('todoCards', []) + ) + if not items or not isinstance(items, list): + break + all_todos.extend(items) + if len(items) < PAGE_SIZE: + break + return all_todos + + +def format_priority(p) -> str: + try: + return PRIORITY_MAP.get(int(p), str(p)) + except (ValueError, TypeError): + return '普通' + + +def format_due(due_ms) -> str: + if not due_ms: + return '无截止时间' + try: + dt = datetime.fromtimestamp(int(due_ms) / 1000) + return dt.strftime('%Y-%m-%d %H:%M') + except (ValueError, TypeError, OSError): + return str(due_ms) + + +def filter_by_due( + todos: List[Dict[str, Any]], start: datetime, end: datetime, +) -> List[Dict[str, Any]]: + start_ms = int(start.timestamp() * 1000) + end_ms = int(end.timestamp() * 1000) + result = [] + for t in todos: + due = t.get('dueTime') or t.get('due') + if not due: + result.append(t) + continue + try: + due_val = int(due) + if start_ms <= due_val < end_ms: + result.append(t) + except (ValueError, TypeError): + result.append(t) + return result + + +def print_summary( + todos: List[Dict[str, Any]], scope: str, + start: datetime, end: datetime, +): + scope_label = { + 'today': '今天', 'tomorrow': '明天', 'week': '本周', + }.get(scope, scope) + print(f"\n📋 {scope_label}未完成待办 " + f"({start.strftime('%m-%d')} ~ {end.strftime('%m-%d')})") + print('=' * 50) + if not todos: + print(' ✅ 暂无待办,轻松一下!') + return + urgent = [t for t in todos if format_priority( + t.get('priority')) == '紧急'] + if urgent: + print(f"\n🔴 紧急 ({len(urgent)} 条)") + for t in urgent: + title = t.get('subject') or t.get('title', '无标题') + print(f" • {title} ⏰ {format_due(t.get('dueTime'))}") + normal = [t for t in todos if t not in urgent] + if normal: + print(f"\n📌 其他 ({len(normal)} 条)") + for t in normal: + title = t.get('subject') or t.get('title', '无标题') + pri = format_priority(t.get('priority')) + print(f" • [{pri}] {title} ⏰ {format_due(t.get('dueTime'))}") + print(f"\n合计: {len(todos)} 条待办") + + +def main(): + dry_run = '--dry-run' in sys.argv + args = [a for a in sys.argv[1:] if a != '--dry-run'] + scope = args[0] if args else 'today' + if scope not in ('today', 'tomorrow', 'week'): + print(__doc__) + sys.exit(1) + start, end = get_date_range(scope) + todos = fetch_all_todos(dry_run=dry_run) + if dry_run: + return + filtered = filter_by_due(todos, start, end) + print_summary(filtered, scope, start, end) + + +if __name__ == '__main__': + main() diff --git a/skills/dws/scripts/todo_overdue_check.py b/skills/dws/scripts/todo_overdue_check.py new file mode 100644 index 0000000..f25471f --- /dev/null +++ b/skills/dws/scripts/todo_overdue_check.py @@ -0,0 +1,122 @@ +#!/usr/bin/env python3 +""" +扫描已过截止时间但未完成的待办,输出逾期清单 + +用法: + python todo_overdue_check.py + python todo_overdue_check.py --dry-run +""" + +import sys +import json +import subprocess +from datetime import datetime +from typing import List, Dict, Any, Optional + +PAGE_SIZE = 50 +MAX_PAGES = 10 +PRIORITY_MAP = {10: '低', 20: '普通', 30: '较高', 40: '紧急'} + + +def run_dws( + args: List[str], dry_run: bool = False, +) -> Optional[Any]: + cmd = ['dws'] + args + if dry_run: + print(f"[dry-run] {' '.join(cmd)}") + return None + try: + result = subprocess.run( + cmd, capture_output=True, text=True, timeout=60 + ) + if result.returncode != 0: + print(f"错误:{result.stderr.strip()}", file=sys.stderr) + return None + return json.loads(result.stdout) + except (subprocess.TimeoutExpired, json.JSONDecodeError, + FileNotFoundError) as e: + print(f"错误:{e}", file=sys.stderr) + return None + + +def fetch_all_undone(dry_run: bool = False) -> List[Dict[str, Any]]: + all_todos: List[Dict[str, Any]] = [] + for page in range(1, MAX_PAGES + 1): + data = run_dws([ + 'todo', 'task', 'list', + '--page', str(page), '--size', str(PAGE_SIZE), + '--status', 'false', '--format', 'json', + ], dry_run=dry_run) + if dry_run or not data: + break + items = (data if isinstance(data, list) + else data.get('result', data.get('todoCards', []))) + if not items or not isinstance(items, list): + break + all_todos.extend(items) + if len(items) < PAGE_SIZE: + break + return all_todos + + +def find_overdue(todos: List[Dict[str, Any]]) -> List[Dict[str, Any]]: + now_ms = int(datetime.now().timestamp() * 1000) + overdue = [] + for t in todos: + due = t.get('dueTime') or t.get('due') + if not due: + continue + try: + if int(due) < now_ms: + overdue.append(t) + except (ValueError, TypeError): + continue + return overdue + + +def days_overdue(due_ms) -> int: + now = datetime.now() + try: + due_dt = datetime.fromtimestamp(int(due_ms) / 1000) + return max(0, (now - due_dt).days) + except (ValueError, TypeError, OSError): + return 0 + + +def main(): + dry_run = '--dry-run' in sys.argv + todos = fetch_all_undone(dry_run=dry_run) + if dry_run: + return + + overdue = find_overdue(todos) + overdue.sort( + key=lambda t: int(t.get('dueTime') or t.get('due', 0)) + ) + + print(f"\n⏰ 逾期待办检查 ({datetime.now().strftime('%Y-%m-%d %H:%M')})") + print('=' * 50) + + if not overdue: + print(' ✅ 没有逾期待办,继续保持!') + return + + for t in overdue: + title = t.get('subject') or t.get('title', '无标题') + due = t.get('dueTime') or t.get('due') + days = days_overdue(due) + pri = PRIORITY_MAP.get( + int(t.get('priority', 20)), '普通' + ) + due_str = datetime.fromtimestamp( + int(due) / 1000 + ).strftime('%Y-%m-%d') + print(f" 🔴 [{pri}] {title}") + print(f" 截止: {due_str} 逾期: {days} 天") + + print(f"\n合计: {len(overdue)} 条逾期待办") + sys.exit(1 if overdue else 0) + + +if __name__ == '__main__': + main() diff --git a/skills/dws/scripts/upload_attachment.py b/skills/dws/scripts/upload_attachment.py new file mode 100644 index 0000000..5b816a7 --- /dev/null +++ b/skills/dws/scripts/upload_attachment.py @@ -0,0 +1,190 @@ +#!/usr/bin/env python3 +""" +上传附件到钉钉 AI 表格 attachment 字段 + +完整流程(内部自动执行 3 步): + 1. dws aitable attachment upload → 获取 uploadUrl + fileToken + 2. HTTP PUT 上传文件到 OSS + 3. 返回 fileToken,可直接用于 record create/update + +用法: + python upload_attachment.py + +输出 (JSON): + { "fileToken": "ft_xxx", "fileName": "report.pdf", "size": 204800 } + +然后在 record create/update 中使用: + dws aitable record create --base-id --table-id \ + --records '[{"cells":{"fldAttachId":[{"fileToken":"ft_xxx"}]}}]' --format json +""" + +import sys +import json +import subprocess +import os +import mimetypes +import re +from pathlib import Path +from typing import Optional, Dict, Any +from urllib.request import Request, urlopen +from urllib.error import HTTPError, URLError + +RESOURCE_ID_PATTERN = re.compile(r'^[A-Za-z0-9_-]{8,128}$') +MAX_FILE_SIZE = 100 * 1024 * 1024 # 100MB + + +def validate_resource_id(resource_id: str) -> bool: + return bool(resource_id and RESOURCE_ID_PATTERN.match(resource_id.strip())) + + +def detect_mime_type(file_path: Path) -> str: + """根据文件扩展名推断 MIME type。""" + mime_type, _ = mimetypes.guess_type(str(file_path)) + return mime_type or 'application/octet-stream' + + +def run_dws(args: list) -> Optional[Dict[str, Any]]: + """调用 dws 命令并返回解析后的 JSON 结果。""" + cmd = ['dws'] + args + try: + result = subprocess.run(cmd, capture_output=True, text=True, timeout=60) + if result.returncode != 0: + print(f"错误:dws 命令失败: {result.stderr.strip()}", file=sys.stderr) + return None + try: + return json.loads(result.stdout) + except json.JSONDecodeError: + print(f"错误:无法解析 dws 响应: {result.stdout[:300]}", file=sys.stderr) + return None + except subprocess.TimeoutExpired: + print('错误:dws 命令超时(60 秒)', file=sys.stderr) + return None + except FileNotFoundError: + print('错误:未找到 dws 命令,请确认已安装并在 PATH 中', file=sys.stderr) + return None + + +def upload_to_oss(upload_url: str, file_path: Path, mime_type: str) -> bool: + """通过 HTTP PUT 上传文件到 OSS。""" + file_data = file_path.read_bytes() + req = Request(upload_url, data=file_data, method='PUT') + req.add_header('Content-Type', mime_type) + + try: + with urlopen(req, timeout=120) as resp: + if resp.status == 200: + return True + print(f"错误:OSS 上传失败,HTTP {resp.status}", file=sys.stderr) + return False + except HTTPError as e: + print(f"错误:OSS 上传 HTTP 错误 {e.code}: {e.reason}", file=sys.stderr) + return False + except URLError as e: + print(f"错误:OSS 上传网络错误: {e.reason}", file=sys.stderr) + return False + + +def upload_attachment(base_id: str, file_path_str: str) -> Optional[Dict[str, Any]]: + """ + 执行完整的附件上传流程: + 1. prepare_attachment_upload → uploadUrl + fileToken + 2. PUT 文件到 OSS + 3. 返回 fileToken 信息 + """ + # 验证文件 + file_path = Path(file_path_str).resolve() + if not file_path.exists(): + print(f"错误:文件不存在: {file_path}", file=sys.stderr) + return None + if not file_path.is_file(): + print(f"错误:不是文件: {file_path}", file=sys.stderr) + return None + + file_size = file_path.stat().st_size + if file_size <= 0: + print("错误:文件为空", file=sys.stderr) + return None + if file_size > MAX_FILE_SIZE: + print(f"错误:文件过大 ({file_size:,} 字节,限制 {MAX_FILE_SIZE:,} 字节)", file=sys.stderr) + return None + + file_name = file_path.name + mime_type = detect_mime_type(file_path) + + # 步骤 1: prepare_attachment_upload + print(f"步骤 1/3: 准备上传 {file_name} ({file_size:,} 字节, {mime_type})...", file=sys.stderr) + dws_args = [ + 'aitable', 'attachment', 'upload', + '--base-id', base_id, + '--file-name', file_name, + '--size', str(file_size), + '--mime-type', mime_type, + '--format', 'json', + ] + result = run_dws(dws_args) + if not result: + return None + + status = result.get('status', '') + if status != 'success': + error = result.get('error', {}) + print(f"错误:准备上传失败: {error.get('message', json.dumps(error, ensure_ascii=False))}", file=sys.stderr) + return None + + data = result.get('data', {}) + upload_url = data.get('uploadUrl', '') + file_token = data.get('fileToken', '') + + if not upload_url or not file_token: + print(f"错误:返回数据缺少 uploadUrl 或 fileToken: {json.dumps(data, ensure_ascii=False)}", file=sys.stderr) + return None + + # 步骤 2: PUT 文件到 OSS + print(f"步骤 2/3: 上传文件到 OSS...", file=sys.stderr) + if not upload_to_oss(upload_url, file_path, mime_type): + return None + + # 步骤 3: 返回 fileToken + print(f"步骤 3/3: 上传完成!", file=sys.stderr) + output = { + "fileToken": file_token, + "fileName": file_name, + "size": file_size, + "mimeType": mime_type, + } + + return output + + +def main(): + if len(sys.argv) != 3: + print(__doc__) + print('用法:') + print(' python upload_attachment.py ') + print() + print('示例:') + print(' python upload_attachment.py G1DKw2zgV2bEk6PMSBooNxlEVB5r9YAn ./report.pdf') + print() + print('然后在 record create 中使用返回的 fileToken:') + print(' dws aitable record create --base-id --table-id \\') + print(' --records \'[{"cells":{"fldAttachId":[{"fileToken":"ft_xxx"}]}}]\' --format json') + sys.exit(1) + + base_id = sys.argv[1] + file_path = sys.argv[2] + + if not validate_resource_id(base_id): + print('错误:无效的 baseId 格式', file=sys.stderr) + sys.exit(1) + + result = upload_attachment(base_id, file_path) + if result is None: + sys.exit(1) + + # 正常输出到 stdout(JSON 格式,方便解析) + print(json.dumps(result, ensure_ascii=False, indent=2)) + sys.exit(0) + + +if __name__ == '__main__': + main() diff --git a/tasks/runs.sqlite-shm.migrated b/tasks/runs.sqlite-shm.migrated new file mode 100644 index 0000000..f40e430 Binary files /dev/null and b/tasks/runs.sqlite-shm.migrated differ diff --git a/tasks/runs.sqlite-wal.migrated b/tasks/runs.sqlite-wal.migrated new file mode 100644 index 0000000..696e588 Binary files /dev/null and b/tasks/runs.sqlite-wal.migrated differ diff --git a/tasks/runs.sqlite.migrated b/tasks/runs.sqlite.migrated new file mode 100644 index 0000000..4b3cb82 Binary files /dev/null and b/tasks/runs.sqlite.migrated differ diff --git a/tui/last-session.json b/tui/last-session.json new file mode 100644 index 0000000..5f6bd79 --- /dev/null +++ b/tui/last-session.json @@ -0,0 +1,18 @@ +{ + "5943bd635a9ea144a37b53d3a41348be": { + "sessionKey": "agent:bt:main", + "updatedAt": 1781092898609 + }, + "24e07b9314fde6e8011ea6f8a09cc4d2": { + "sessionKey": "agent:java:main", + "updatedAt": 1780306340653 + }, + "3a6b08b9c2f47b96ba77e1b1ee9e5c8a": { + "sessionKey": "agent:front:main", + "updatedAt": 1780393119301 + }, + "fa4663e9787edc8aeed6672ad3acdfa2": { + "sessionKey": "agent:storage:main", + "updatedAt": 1782905981992 + } +} diff --git a/update-check.json.migrated b/update-check.json.migrated new file mode 100644 index 0000000..0aa8676 --- /dev/null +++ b/update-check.json.migrated @@ -0,0 +1,7 @@ +{ + "lastCheckedAt": "2026-06-30T23:49:31.990Z", + "lastNotifiedVersion": "2026.6.11", + "lastNotifiedTag": "latest", + "lastAvailableVersion": "2026.6.11", + "lastAvailableTag": "latest" +} \ No newline at end of file diff --git a/workspace b/workspace new file mode 160000 index 0000000..5c39670 --- /dev/null +++ b/workspace @@ -0,0 +1 @@ +Subproject commit 5c396708eadb6ee5b092910c7ad8409b3dda3176 diff --git a/workspace-attestations/6fae76d570ec399aec54ec4dda553db616afe32ad32281388ca8f9d099819011.attested b/workspace-attestations/6fae76d570ec399aec54ec4dda553db616afe32ad32281388ca8f9d099819011.attested new file mode 100644 index 0000000..ebe7722 --- /dev/null +++ b/workspace-attestations/6fae76d570ec399aec54ec4dda553db616afe32ad32281388ca8f9d099819011.attested @@ -0,0 +1,2 @@ +openclaw-workspace-attestation:v1 +2026-07-02T01:12:29.527Z diff --git a/workspace-attestations/767fd3618647699ab902d36229ed23d0244335f4141ad3846b53b41fe2f9ab1a.attested b/workspace-attestations/767fd3618647699ab902d36229ed23d0244335f4141ad3846b53b41fe2f9ab1a.attested new file mode 100644 index 0000000..114caac --- /dev/null +++ b/workspace-attestations/767fd3618647699ab902d36229ed23d0244335f4141ad3846b53b41fe2f9ab1a.attested @@ -0,0 +1,3 @@ +openclaw-workspace-attestation:v1 +2026-06-26T00:46:54.238Z +generated:TOOLS.md:15cdfe57fcfa6d83888e215176f40b415ff2b9a51afe96b4d4134f2f5a8cfe68 diff --git a/workspace-attestations/a919a757c4c9df0bca458de4624bf8fcea3d8c2e795c0aa6a540babfca74122b.attested b/workspace-attestations/a919a757c4c9df0bca458de4624bf8fcea3d8c2e795c0aa6a540babfca74122b.attested new file mode 100644 index 0000000..cc946ef --- /dev/null +++ b/workspace-attestations/a919a757c4c9df0bca458de4624bf8fcea3d8c2e795c0aa6a540babfca74122b.attested @@ -0,0 +1,6 @@ +openclaw-workspace-attestation:v1 +2026-06-16T01:41:47.661Z +generated:AGENTS.md:dda474224d5420e85d838fac5ffba4d3b4ef871977618865ec38a76b28a7d556 +generated:IDENTITY.md:d93cd095ac3b8d8135110230bc6f09738fb8029ca6f270001a928a1c1614bffb +generated:TOOLS.md:15cdfe57fcfa6d83888e215176f40b415ff2b9a51afe96b4d4134f2f5a8cfe68 +generated:USER.md:e418ca9a680553b3ad8f54aecb0d403330810bb77826ab5251cc1dc13368fe16 diff --git a/workspace-attestations/b7bc825f1ed54245663ac357564ad4f39678451d147525a2c689c68dd0bb7882.attested b/workspace-attestations/b7bc825f1ed54245663ac357564ad4f39678451d147525a2c689c68dd0bb7882.attested new file mode 100644 index 0000000..ec11f3f --- /dev/null +++ b/workspace-attestations/b7bc825f1ed54245663ac357564ad4f39678451d147525a2c689c68dd0bb7882.attested @@ -0,0 +1,2 @@ +openclaw-workspace-attestation:v1 +2026-07-02T01:26:57.328Z diff --git a/workspace-attestations/bc33c7b45eb561bed54b6d546e5ce769d08feef1284b35aa8b25b1051961001e.attested b/workspace-attestations/bc33c7b45eb561bed54b6d546e5ce769d08feef1284b35aa8b25b1051961001e.attested new file mode 100644 index 0000000..ce85359 --- /dev/null +++ b/workspace-attestations/bc33c7b45eb561bed54b6d546e5ce769d08feef1284b35aa8b25b1051961001e.attested @@ -0,0 +1,2 @@ +openclaw-workspace-attestation:v1 +2026-06-18T06:06:42.546Z diff --git a/workspace-attestations/c9c27f32d06519ab898cbfe9a1b7dc1d5b71573f8ef6c305da1f215f0fd8874e.attested b/workspace-attestations/c9c27f32d06519ab898cbfe9a1b7dc1d5b71573f8ef6c305da1f215f0fd8874e.attested new file mode 100644 index 0000000..deda804 --- /dev/null +++ b/workspace-attestations/c9c27f32d06519ab898cbfe9a1b7dc1d5b71573f8ef6c305da1f215f0fd8874e.attested @@ -0,0 +1,2 @@ +openclaw-workspace-attestation:v1 +2026-06-13T20:40:35.310Z diff --git a/workspace-attestations/d24f6df0f1af8291802cf469352bed9e7965e9558cd101ce50d84d6b1cd516c0.attested b/workspace-attestations/d24f6df0f1af8291802cf469352bed9e7965e9558cd101ce50d84d6b1cd516c0.attested new file mode 100644 index 0000000..9a87d67 --- /dev/null +++ b/workspace-attestations/d24f6df0f1af8291802cf469352bed9e7965e9558cd101ce50d84d6b1cd516c0.attested @@ -0,0 +1,2 @@ +openclaw-workspace-attestation:v1 +2026-06-29T03:05:39.425Z diff --git a/workspace-attestations/eb82ecbfc65a80550610330aebeb9359d0b99d93c15d5470a87aa471cb50ed03.attested b/workspace-attestations/eb82ecbfc65a80550610330aebeb9359d0b99d93c15d5470a87aa471cb50ed03.attested new file mode 100644 index 0000000..9a5232e --- /dev/null +++ b/workspace-attestations/eb82ecbfc65a80550610330aebeb9359d0b99d93c15d5470a87aa471cb50ed03.attested @@ -0,0 +1,2 @@ +openclaw-workspace-attestation:v1 +2026-07-02T02:37:51.357Z