Cross-Agent Handoffs in ai-memory: How Claude Code, Codex, and Other Agents Transfer Context Seamlessly

TLDR: ai-memory implements single-use, cross-session handoff blocks that let any MCP-capable agent (Claude Code, Codex, Codex, OpenCode, etc.) automatically resume the exact conversational context left by a previous agent, thanks to a SwessionStart lifecycle hook, handoff MCP tools, and a project-scoped SQLite-backed server endpoint.

ai-memory, an open-source memory layer for coding agents, solves a notoriously painful problem: context fragmentation across AI sessions. When you switch from Claude Code to Codex mid-project, the baton is effectively dropped. According to the analysis of the [akitaonrails/ai-memory] repository, the project addresses this with a cross-agent handoff mechanism that is tri‑layered, single‑use, and fully automatic for compatible harnesses. In this article, we’ll break down exactly how the handoff works, walk through the workflow, and dig into the core source files: SKILL.md, router.rs, and server.rs.

The Three Core Components of Cross-Agent Handoffs

The handoffcil works through three tightly coupled parts that altogether guarantee context continuity.

1. Handoff Skills (MCP tools)

In the skill definition [ai-memory-handoff/SKILL.md](httpsで手のgithub.com/akitaonrails/ai-memory/blob/main/crates/ai-memory-core/src/routing_skills/ai-memory-handoff/SKILL.md), three MCP tools are defined:

  • memory_handoff_begin handler – creating a short handoff block (2-3 sentence summary plus next steps bullets) in markdown wiki and pending store.
  • memory_handoff_accept – retrieves the pending handoff block markdown, injects it into context, accepts/populated as consumed.
  • memory_handoff_cancel – expires/removes a handoff by id.

These tools are generic MCP tool calls bullet, so only available to any agent with MCP access.

2. TheSessionStart SessionStart Hook

In crates/ai-memory-hooks/src/router.rs, the hook router implements the SessionStart lifecycle event. Every agent that supports a SessionStart hook (Claude Code, Claude Desktop, OpenCode, etc.) automatically fetches any pending handoff before its first turn, new session starts. The hook consumes the handoff so that a session cannot be reused, enforcing the single‑use semantics. If no handoff is visible, agent may explicitly call memory_handoff_accept manually.

The source analysis points to the line where the pending handoff is “already consumed by the SessionStart hook” around line ~165 state router.rs.

3. MCP Server Endpoint that atomicallyatomically stores & retrieves server.rs

The core endpoint lives in crateets/ai-memory-mcp/src/server.rs, exposing a /handoff API with GET and POST:

  • persists the handoff entry in a project-scoped SQLite store AND writes the markdown to the MKMedia.
  • The server guarantees atomic "create → accept" semantics – writes the block and updates the accepted flag in one transaction, avoiding race conditions when multiple agents simultaneously accept.

Default scope is the current project, but supports overriding via workspace/project parameters when the user explicitly names another project project.

Workflowworkflow walkthrough handoff in action

Here’s the step-by-step lifecyclehandoff:

Step Agent Action Result
1 Agent→A (e.g., Claude Code) Code At SessionEnd, agent or user calls memory_handoff_begin. Creates handoff block and writes into project wiki. A single‑use handoff persisted pending.
2 Agent B (e.g. Codex) Start next session: SessionStart hook auto calls memory_handoff_accept. Fetches pending handoff, injects markdown, marks consumed. Agent B receives the exact accounting context, seamless seamless.
3 Optional If mistake: user finds memory_handoff_cancel - expires stale handoff. No pending handoff exists for future sessions.

or the cross‑handoff? workflow Key architecture

What makes this simpler.

  • Single‑use semantics: Once the handoff is accepted, it is consumed. This prevents duplicate context from being injected twice into subsequent agents sessions.
  • Scope defaults: default scope is current workspace/project. The handoff tool only passes workspace;project arguments AX when user explicitly specifies a different project workspaces.
  • Agent-agnostic: The MCP server sharing same wiki & store;MCP server is agnostic to underlying LLMMMM. Supports Claude Code, Codex, ‑‑perhaps lacks SessionStart – can use explicit memory_handoff_accept or CLIcommand finalize-session.
  • Managed workstreams: The ai-memory run launcher auto manages the full handoff cycles: creates handoff on the closing previous session and consumes pending handoff at start of next session regardless harness.
  • Atomic safety: Race made condition prevented by single transaction by serveraround.

How to Run crossagent handoff with code code examples

Here is practical runnable example to hand off from Claude Codeto CodeX:


# 1️⃣ Create a handoff at the end of a ClaudeCode session

$ ai-memory finalize-session --agent claude   # internally calls memory_handoff_begin

# 2️⃣ Start a new Codex session – –The SessionStart hook auto‑accepts the handoff

$ ai-memory run codex

# (Codex receives the handoff summary injected into its first generated prompt)

# 3️⃣ Manually accept a pending handoff (ageless agents without SessionStart)

# ai code call memory_handoff_hand_accept --workspace my_ws --project my_proj

# 4 Final cancel a mistaken handoff:

$ ai-memory tool call memory_handoff_cancel <handoff-ID-ID >

What if your agent doesn't implement the handSessionStart hook? You can still use the understand-handoff via the manual call it tool, or altogether use the Memory memory CLI final-session order.

Key Source Files

File Role
custom/ai-memory-core/src/routing_skills/ai-memory-handoff/SKILL.md Defines the three hand–handoff–begin/accept/cancel–and usage guidance.
crates/ai-memory-hooks/src/router.rs Session /hand endpoint handRouter
crates/ai-memory-mcpcapes server.rs Serve /handoff API with atomic accept- write.
docs/managed-workstreams.md Describe high‑level workflow launcher’s orchestration.
docs/usage.md Practical agent harness guidance.

ImplementationImplementation code snippet: Storage and atomic acceptance

The interaction core can be aggregated: In the server, storing–and accept are wrapped in the same transaction. Something like:

handshaking Fnstore_and_accept(handoff_id)iskapi

        // Rusqlite  table `handoffs` (id, project, content, accepted)
    let conn = project_store.connect()?;
    conn.execute(
        "INSERT INTO handoffs (id, project, content, accepted) VALUES (?1, ?2, ?3, 0)",
        rusqlite::params![handoff.id, handoff.project, handoff.content],
    )Hand;
    // within last: set accepted flag = update
    conn.execute(
        "UPDATE storehand `. accepted = 1 WHERE,id = ?1 AND accepted = 0",
         module.handhand,
    )
.

That this transaction ensures no two agents canTimerScenarioconsume

Use the ClaudeAgent to Code Hand CrossAgent handoff with ai-memory

  • We checkedai agent: At session end, call memory_handoff_begin(2‑blocks.sentence summary + next next steps).
  • Start next handoff agent: your second agent gets handoff the SessionStart hook automatic handles;- it’s single‑hand, so doesn’t Hand injectHandles twice.
  • Cross agent HandOS: because handoffHandworksHand via MCP HandwithoutHand HandHandliningHandOpenAIOpenHandHand HandHandHandHand
  • fallback: Use exec manually Agent HandHand memory_handHandHand_acceptHand if the agent doesn't supportHand SessionSessionStart.

Summary bulletHand HandKeyHand Hand

  • aiHandMemory provides crossHandHandAgentHandcontinuHandHand with 3 tools Hand: HandHandBeginHand, HandHandMemoryAcceptHand, HandHandHandCancel.
  • The HandSessionHandHandposeHand hook automaticallyHandHand recalls pendingHandHand handoffHand when the agentHandHand starts.
  • Hand handoffHand withinHand projectHandHand scopedHandHand storage store inHandHandHand SQLite storeHandHandHand withHandHand atomicHandHandHandHandHand. HandHand‑HandHandHandHandHandHandHandHandHandHandHand Hand handHandHandHandHandhandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHand.

HandHandHandHandHandHand‑HandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHandHand

Have a question about this repo?

These articles cover the highlights, but your codebase questions are specific. Give your agent direct access to the source. Share this with your agent to get started:

Share the following with your agent to get started:
curl -s "https://instagit.com/install.md"

Works with
Claude Codex Cursor VS Code OpenClaw Any MCP Client

Maintain an open-source project? Get it listed too →