master 60d406e00096 cached
93 files
7.8 MB
2.1M tokens
6 symbols
1 requests
Download .txt
Showing preview only (8,225K chars total). Download the full file or copy to clipboard to get everything.
Repository: nivwusquorum/6.006-2015-notebooks
Branch: master
Commit: 60d406e00096
Files: 93
Total size: 7.8 MB

Directory structure:
gitextract_8z7fqhuo/

├── .gitignore
├── Lecture 17.ipynb
├── challenge1/
│   ├── .gitignore
│   ├── README.md
│   ├── coins.cpp
│   ├── coins.py
│   ├── run_tests.sh
│   ├── tests/
│   │   ├── mon0.in
│   │   ├── mon0.out
│   │   ├── mon10a.in
│   │   ├── mon10a.out
│   │   ├── mon10b.in
│   │   ├── mon10b.out
│   │   ├── mon10c.in
│   │   ├── mon10c.out
│   │   ├── mon1a.in
│   │   ├── mon1a.out
│   │   ├── mon1b.in
│   │   ├── mon1b.out
│   │   ├── mon1c.in
│   │   ├── mon1c.out
│   │   ├── mon1d.in
│   │   ├── mon1d.out
│   │   ├── mon2a.in
│   │   ├── mon2a.out
│   │   ├── mon2b.in
│   │   ├── mon2b.out
│   │   ├── mon2c.in
│   │   ├── mon2c.out
│   │   ├── mon3a.in
│   │   ├── mon3a.out
│   │   ├── mon3b.in
│   │   ├── mon3b.out
│   │   ├── mon3c.in
│   │   ├── mon3c.out
│   │   ├── mon3d.in
│   │   ├── mon3d.out
│   │   ├── mon4a.in
│   │   ├── mon4a.out
│   │   ├── mon4b.in
│   │   ├── mon4b.out
│   │   ├── mon5a.in
│   │   ├── mon5a.out
│   │   ├── mon5b.in
│   │   ├── mon5b.out
│   │   ├── mon5c.in
│   │   ├── mon5c.out
│   │   ├── mon6a.in
│   │   ├── mon6a.out
│   │   ├── mon6b.in
│   │   ├── mon6b.out
│   │   ├── mon7a.in
│   │   ├── mon7a.out
│   │   ├── mon7b.in
│   │   ├── mon7b.out
│   │   ├── mon8a.in
│   │   ├── mon8a.out
│   │   ├── mon8b.in
│   │   ├── mon8b.out
│   │   ├── mon9a.in
│   │   ├── mon9a.out
│   │   ├── mon9b.in
│   │   └── mon9b.out
│   └── url.txt
├── challenge2/
│   ├── .gitignore
│   ├── README.md
│   ├── download_test.sh
│   ├── pilots.cpp
│   ├── pilots_n.py
│   ├── pilots_n2.py
│   ├── pilots_n3.py
│   ├── pilots_nlog2n.py
│   ├── pilots_nlogn.py
│   ├── run_tests.sh
│   └── url.txt
├── hello.txt
├── lecture1/
│   ├── Fast exponentiation and fibonacci sequence.ipynb
│   └── Stock Exchange.ipynb
├── lecture11/
│   └── BFS.ipynb
├── lecture12/
│   ├── DFS.ipynb
│   └── Google BFS.ipynb
├── lecture15/
│   └── Dijkstra's algorithm.ipynb
├── lecture16/
│   └── Bignums.ipynb
├── lecture2/
│   ├── Document distance.ipynb
│   └── binary_search.ipynb
├── lecture4/
│   └── Heaps.ipynb
├── lecture5/
│   └── BST.ipynb
├── lecture6/
│   ├── AVL_and_more.ipynb
│   └── Counting BST.ipynb
├── lecture7/
│   ├── Radix Sort Performance.ipynb
│   └── Understanding Radix Sort.ipynb
├── lecture8/
│   └── Hashing and hashtables.ipynb
└── lecture9/
    └── Hashing.ipynb

================================================
FILE CONTENTS
================================================

================================================
FILE: .gitignore
================================================
.ipynb_checkpoints/


================================================
FILE: Lecture 17.ipynb
================================================
{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# LCS "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "import numpy as np"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 61,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "def LCS(s1, s2):\n",
    "    # initialize state\n",
    "    n, m = len(s1) + 1, len(s2) + 1\n",
    "    dp =   [\n",
    "        [ 0 for _ in range(m)] \n",
    "        for _ in range(n)\n",
    "    ]\n",
    "    pred = [\n",
    "        [ (-1,-1) for _ in range(m)]\n",
    "        for _ in range(n)\n",
    "    ]\n",
    "    \n",
    "    for i in range(1,n):\n",
    "        for j in range(1,m):\n",
    "            # CASE 1: ignore character in s1\n",
    "            dp[i][j], pred[i][j] = dp[i-1][j], (i-1,j)\n",
    "            # CASE 2: ignore character in s2\n",
    "            if dp[i][j] < dp[i][j-1]:\n",
    "                dp[i][j], pred[i][j] = dp[i][j-1], (i,j-1)\n",
    "            # CASE 3: extend\n",
    "            if s1[i-1] == s2[j-1] and dp[i][j] < dp[i-1][j-1] + 1:\n",
    "                dp[i][j], pred[i][j] = dp[i-1][j-1] + 1, (i-1,j-1)\n",
    "    \n",
    "    print (np.array(dp))\n",
    "\n",
    "    # recover the solution\n",
    "    x,y = (n-1,m-1)\n",
    "    solution = []\n",
    "    while pred[x][y] != (-1,-1):\n",
    "        if pred[x][y] == (x-1, y-1):\n",
    "            solution.append(s1[x-1])\n",
    "        (x,y) = pred[x][y]\n",
    "    solution.reverse()\n",
    "    \n",
    "    return solution"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 62,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[[0 0 0 0 0]\n",
      " [0 1 1 1 1]\n",
      " [0 1 2 2 2]\n",
      " [0 1 2 2 2]\n",
      " [0 1 2 3 3]]\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "['b', 'a', 'b']"
      ]
     },
     "execution_count": 62,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "LCS(\"bacb\", \"babd\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 63,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[[0 0 0 0 0 0 0 0 0 0]\n",
      " [0 0 0 1 1 1 1 1 1 1]\n",
      " [0 0 0 1 2 2 2 2 2 2]\n",
      " [0 1 1 1 2 2 2 2 2 2]\n",
      " [0 1 2 2 2 2 2 2 2 2]\n",
      " [0 1 2 3 3 3 3 3 3 3]\n",
      " [0 1 2 3 4 4 4 4 4 4]\n",
      " [0 1 2 3 4 4 4 5 5 5]\n",
      " [0 1 2 3 4 4 4 5 6 6]\n",
      " [0 1 2 3 4 4 5 5 6 7]]\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "['t', 'h', 'i', 's', 'l', 'c', 's']"
      ]
     },
     "execution_count": 63,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "LCS(\"isthislcs\", \"thisislcs\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Viterbi algorithm"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "states = ('Healthy', 'Fever')\n",
    " \n",
    "observations = ('normal', 'cold', 'dizzy')\n",
    " \n",
    "start_probability = {'Healthy': 0.6, 'Fever': 0.4}\n",
    " \n",
    "transition_probability = {\n",
    "   'Healthy' : {'Healthy': 0.7, 'Fever': 0.3},\n",
    "   'Fever' : {'Healthy': 0.4, 'Fever': 0.6}\n",
    "   }\n",
    " \n",
    "emission_probability = {\n",
    "   'Healthy' : {'normal': 0.5, 'cold': 0.4, 'dizzy': 0.1},\n",
    "   'Fever' : {'normal': 0.1, 'cold': 0.3, 'dizzy': 0.6}\n",
    "}"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "def viterbi(obs, states, start_p, trans_p, emit_p):\n",
    "    V = [{}]\n",
    "    predecessor = [{}]\n",
    "    \n",
    "    # Initialize base cases (t == 0)\n",
    "    for y in states:\n",
    "        V[0][y] = start_p[y] * emit_p[y][obs[0]]\n",
    "        predecessor[0][y] = None\n",
    "    \n",
    "    # Run Viterbi for t > 0\n",
    "    for t in range(1, len(obs)):\n",
    "        V.append({})\n",
    "        predecessor.append({})\n",
    "\n",
    "        for y in states:\n",
    "            highest_probability, best_y_prev = 0.0, None\n",
    "            for y_prev in states:\n",
    "                probability_from_y_prev = V[t-1][y_prev] * trans_p[y_prev][y] * emit_p[y][obs[t]]\n",
    "                if probability_from_y_prev > highest_probability:\n",
    "                    highest_probability, best_y_prev = probability_from_y_prev, y_prev\n",
    "            V[t][y] = highest_probability\n",
    "            predecessor[t][y] = best_y_prev\n",
    "    \n",
    "    print(*dptable(V), sep='')\n",
    "    \n",
    "    # Return the most likely sequence over the given time frame\n",
    "    n = len(obs) - 1\n",
    "    (prob, state) = max((V[n][y], y) for y in states)\n",
    "    \n",
    "    # Recover the path\n",
    "    path = []\n",
    "    for t in range(n,-1,-1):\n",
    "        path.append(state)\n",
    "        state = predecessor[t][state]\n",
    "    path.reverse()\n",
    "    \n",
    "    return (prob, path)\n",
    "\n",
    "# Don't study this; it just prints a table of the steps.\n",
    "def dptable(V):\n",
    "    yield \"    \"\n",
    "    yield \" \".join((\"%7d\" % i) for i in range(len(V)))\n",
    "    yield \"\\n\"\n",
    "    for y in V[0]:\n",
    "        yield \"%.5s: \" % y\n",
    "        yield \" \".join(\"%.7s\" % (\"%f\" % v[y]) for v in V)\n",
    "        yield \"\\n\""
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "          0       1       2\n",
      "Fever: 0.04000 0.02700 0.01512\n",
      "Healt: 0.30000 0.08400 0.00588\n",
      "\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "(0.01512, ['Healthy', 'Healthy', 'Fever'])"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "viterbi(observations, states, start_probability, transition_probability, emission_probability)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.4.1"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 0
}


================================================
FILE: challenge1/.gitignore
================================================
coins


================================================
FILE: challenge1/README.md
================================================
# The coins challenge

To run c++ solution run
```bash
g++ coins.cpp -O2 -o coins
./run_tests.sh ./coins
```

To run Python solution run

```bash
./run_tests.sh python2 coins.py
```


================================================
FILE: challenge1/coins.cpp
================================================
#include <algorithm>
#include <cstdio>

// OVERALL COMPLEXITY: O(n lg n)
// (due to sorting)

// maximum number of coins
const int MAXN = 1000005;

// n - number of coins
// k - we need k as many tails as heads
int n, k;
// c - buffer to hold all the characters
char c[MAXN];
// array of (prefix_sum[i], i) values
std::pair<long long, int> seq_and_index[MAXN];

int main() {
    scanf("%d%d", &n, &k);
    scanf("%s", c);
    // for prefix sums it is important to add an extra element
    // for empty sequence at the beginning.
    // this is so that when we compute
    //
    //     seq_and_index[n].second - seq_and_index[0].second
    //
    // we get sum of elements for indexes 1 <= i <= n

    // We reuse seq_and_index for two things
    // initially it just stores values k and -1
    // later we compute prefix sum
    seq_and_index[0] = std::make_pair(0,0);
    for (int i=0; i <n; ++i) {
        // we convert R to k and O to -1
        if (c[i] == 'R') {
            seq_and_index[i + 1].first = k;
        } else {
            seq_and_index[i + 1].first = -1;
        }
        seq_and_index[i+1].second = i + 1;
    }

    // NEW PROBLEM: find longest contiguous subsequence of
    // sum 0 (sum zero implies k times as many heads)

    // compute the prefix sum
    for (int i=1; i <=n; ++i) {
        seq_and_index[i].first += seq_and_index[i-1].first;
    }

    // new problem: find a pair of elements in the array,
    // that have the same value and that are furthest
    // away possible.

    int res = 0;

    // sort by value.
    std::sort(seq_and_index, seq_and_index + n + 1);

    // for all groups with the same value
    // compute max and min index in that group.
    // update result with the difference between those indexes

    int min_index, max_index;
    for (int i=0; i <=n; ++i) {
        if ( i == 0 || seq_and_index[i].first != seq_and_index[i - 1].first) {
            min_index = seq_and_index[i].second;
            max_index = seq_and_index[i].second;
        }
        min_index = std::min(min_index, seq_and_index[i].second);
        max_index = std::max(max_index, seq_and_index[i].second);
        res = std::max(res, max_index - min_index);
    }
    printf("%d\n", res);
}


================================================
FILE: challenge1/coins.py
================================================
# OVERALL COMPLEXITY: O(n)
# here we use a dictionary

def main():
    # n - number of coins
    # k - we need k as many tails as heads
    n, k = [int(v) for v in raw_input().split()]
    # coins - buffer to hold all the characters
    coins = list(raw_input())
    assert len(coins) == n
    coins_as_numbers = []
    for coin in coins:
        if coin == 'R':
            coins_as_numbers.append(k)
        elif coin == 'O':
            coins_as_numbers.append(-1)
        else:
            assert False
    # NEW PROBLEM: find longest contiguous subsequence of
    # sum 0 (sum zero implies k times as many heads)


    # for prefix sums it is important to add an extra element
    # for empty sequence at the beginning.
    prefix_sums = [0]

    # compute the prefix sums
    for coin in coins_as_numbers:
        prefix_sums.append(prefix_sums[-1] + coin)

    # new problem: find a pair of elements in the array,
    # that have the same value and that are furthest
    # away possible.

    # this dictionary maps from array values,
    # to the index of prefix_sums, where the value
    # occurs for the first time
    # Specifically leftmost_index_of_value[S]
    # is equal to smallest such i that prefix_sums[i] = S
    # NOTE: it is build iteratively left to right
    leftmost_index_of_value = {}
    for s_idx, s in enumerate(prefix_sums):
        if s not in leftmost_index_of_value:
            leftmost_index_of_value[s] = s_idx

    res = 0
    for s_idx, s in enumerate(prefix_sums):
        res = max(res, s_idx - leftmost_index_of_value[s])

    print(res)

if __name__ == '__main__':
    main()


================================================
FILE: challenge1/run_tests.sh
================================================
#!/bin/bash

# stop script on error and print it
set -e
# inform me of undefined variables
set -u
# handle cascading failures well
set -o pipefail

SCRIPT_DIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )

for filename in $SCRIPT_DIR/tests/*.in; do
    output_filename=${filename::-3}.out
    time $@ < $filename | diff -bs - $output_filename
done


================================================
FILE: challenge1/tests/mon0.in
================================================
15 3
RORROOROOROOORO


================================================
FILE: challenge1/tests/mon0.out
================================================
8


================================================
FILE: challenge1/tests/mon10a.in
================================================
1000000 2
RRRRRROORRRRRRRRRORRRRRRRRRRRRRORRRRRRORRRRRRRRRRRORRRRRRRORORRRRRRRRRRRRORRRRRRORRRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRROROOORRRRRROORRRRRRRRORRORRRRRORRORRORRRORRORRORRRORRORRRRRRRRRRRORRRRRRRRRRRRRRRRRRRORORRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRORORRRRRRRRRRORRRRRORORRRRORRRORRORROORRRORRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRRORRRRRRRRRRORRRORRRRRRRRRRRRRRRRRRRRRORORRRRRRRRRRRRRRORRRORRRRRRRRRRRRRORRRRORORORRRRRRRRRRRRRORRRROORORRRRRRRRRRRRRORRRRORRRRRORRORRRRRORRRORRRRRRRRORRORRRRRRRORRRORORRRORRRORRRRORRROORRRRRRRORRRRRRORRORRRORRRRRRRRRRRRRORRORRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRRRRORORRRRRRRORRRRRROROORRRRRRRRORRRRRRORORRORRRRORRORRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRROOORRRRRRRRRORRRRRRRRRRRRORRRRRRRRRRRRRORRRRRRRRORRRRRRRRRRRORRRRRRRRRRRORRRRRRRRRROORRRORRORRRRRRORRRRRRRRRRRRRRRRRRRORRROORRRRRRRRRRRROORORORRRORRRORRRRRRRRRRRRRORRRORRORRRRRRRRORRRRORRRORORRRRRORRRRROROORORROORRRORORRRORRRRRRRRRRRRRRRRRRRRRRROORRRRRRRRRORRRORRRRRORORRRRRRRRRRRRRRORRRORORRRRRRRRRRORRORRRRRROROORORRRRRRRRRRRRRRRRRRRRORRRRORRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRROORRRRORRRRORRRRRRORORORRRRORRRRRRRORRORRRRRRRRORRRRRRRRRRRRRORRRORRRRRRRRRRRORRRORRRRRROORRRRRORRRRRRRROOORRRRRRORRRRORRRRRORRRRRRRRRRRORRRRRRROROOORRRRORORRRRRRRRRRRRRRRRRRROORRORRRRRRRORRRRRRRRRRORRRRRORORRRRRRORRRRRORRRRRRRRORORORORRORRROORRRRRRRRRRRRRRORRRORRRRRRRRRRRRRRRRRORRRRORORRRRRRRRRRRRRRRORRRRRRRRORORORRRRRRRRRORRRRRRRRRRRROORRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRRRRRORRRRRROORRRORRRRRRORRRRRORRRRRRORORRRRRORRRORORRRRRRRRRORRRRRORRORRRRRRROOROOORRRORRRRRRRRRRRRORORRRORORRRRRRRROROORRRRRRRRRRORORRRRRRRRORORRRRRRRRRRRORRRRRRRRORRRRRRRRRRRORRRRRRORRRRRRRORRRRRRRRRRRRRORRRRRRRRRRRRRORRRRRORRRRRORRRRRORRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRORRRRRORRRRRRRRRRRRRORORRRRORRRRRRRRORRRRRORRRRORRRRRRRRRRRRRRRRRRORRRRORRRRRRRRORRRRRRORRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRRORORORRRRRRRRRRRRORRRRRRRRRRRRRRORRORRRRRORRRRORRRRRORRRROORRRORRRRRRRRRRRRRRORRRRORRRORRRRRRRRRRRRROROORORRORORRRRORRRORORRRRRORRRRRRRRRRRORRRRORRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRORRRORRRRRRORORRORRRORRRRRRRRORRRRRRRRRRROROORORROORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRORRRRRRRRROROORRRRRRRRRRRRRORRRRRROORORRRRRRRRRORRRRORORRRRRRRRRRRRRRRRRRRORRRRRRRORRORRORRORORRRRRRRRORRRRRROORRORRRRRRROROOORRRRRRRRRRRRORRRORRRRRRRRRORRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORROORRRRRORRRRRRORRRRRRRRRRRRRRORRRRRRRRORRRRRRRRRRRORRRRRRRRORRRRRRRRRRRRRRRRROORRRRRORRRRRRRRRRORRRRRRRRRRRRRRORORRRRRRRRRORRRRRRRRORRORRRORRORRRRRORORRRRORRRRRRRRRORRRRRRRRRRRROORRRRORRRRRRRRRRORORORRROORORRRRRRRRRRRRRRRRRRRRORRRORRRRRRRORRRRRRRRRRRRORRRRRRRRORORRORRRRRORRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRORRRRRRRORRORRRORRRRRRORRRRRORRORRRRRRRRORRORROORRRRRRRRRRRRRRRORRRRRRRRRRRRRRORRRRORRRRRRORORORRORRORRRRRRRRRRRRORORRRRRRRRRRRORRRRRRRORRRRRRORRRRRRRRORRRRRRRRORRRRRORRRROORRRRRRRRRRRRRRORRRORRORORRRRROORRORRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORORRRRRRRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRORRRRORRRORORORRRRROORRRRRRRORORRROORRRRRRRRRRORRRRRRRRRRRRORRROORRRRROORRRRRRORORRRRRRRRRRRRRRRRORRRRRORRRORORRRRORRRRORRRRRRRRRROOROOORORRORROORRRRORRRRRRRRRRRORRORRORRRRRRRRRRRRRRRRORRRRRRORRRORRRROORORORRRORRRRRRRRRROORRRRRRRRRRRORRRRRRRRRRORRRRRRRRORRRRRRRORRRRRORRORRRRRRORRRRRRRRRRRRRRORRRRRRRRRRORRRRRRRRORRRORRORRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORORRRRORRRRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRORRRRORRRRRRROORRRRRRRRORRRRROORORRRRORRRRRORRRRRRRRRRRRRRRRRRRRORRRRRRRORRRRRRRRRRRRRRORRRRRRORRRRRRRRRRRRORRRRROORRRRRORRRRRRORRRRRORRORRRRRRRRROROORORRRRROOORRORORRORRRROORRRRRRRRRRRORORRRRRRRRRRRRRRRORRRRORRRRRRRORRRRRRRRRRRORRORRRRRRRRRRRRORRORRRRRRORRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRROORRRORRRROORORRRRORRRRRRRRRORRORRRRRORRORRRORRRRRRRRRORRRRORRORRORRRRRRRRRRRRRRRRRRRRRRRROORRRRRRRRRRORORRROORRRRRRRRRRRRRRROORRRRRRRRRRRRRRRRRRRRRRRRORRRRRRORRRRRRRRRRRRRRRRRRORRRRRRORRRRRRRRRRRRRRRORORRRRORORRRRRRRRRRORRRRORORRRRRRRORRRRRRRRRRROORRRROORRRRRRRRRRRRRRRRRRRRRORRRROORORRRRRRRRRORRRRRRRRRRRRRORRRRRRRRRRRORRRRRRRRORRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRORRRRRRRRRRORRRRRRRRRRRRRRRORRORRRRRORRRRRRRRRRRORRRRORRRRRRRRRRRRRRRRRRRORRRRRRRRRORRRRRRRRRRRRRRRRORRRRRRRORRRRRRRRRRRRRRRRORRRRRRRORRRRRORRROORRRRRRRRRORRRRRRRRRRRRRORRRRRRRRRRRRRRORRORRRRRRRRRRRORRRRRRRRORRRRRRRORORRRRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRORRORRRRRORRRRORRRRORORRRRRORRRORRRRRRRRRRORRORRRRRRRRORORRRRRORORRRRRRRRRORRRRRRRRRRROORRORRRRRRRRRRORRRORORORRRRORORRRRRRRRORORRRRRRRRRRRRRRRRORRORRRRRRRRRRRRRRRRRRRRRORRRRRRRRRORRRRRRRRRRRRORRRRRRRROORRORRRRRRRRRORRRRORRRRRRRRORRORRORRRRRRRORROORRRORRRRRRRRRRRRRRRRORRRRRORRRRRORRRRRRRRRRORRRRRRRRRRRROORORRRRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRORRRRRRRRRRRRRORRRRRRRRRRRRORRRRRRRORRRRRRORRRRRRORRORRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRRORRRRRRRRRRORRRRRRRRROORORORROORRRRRRRRRRRORRRRRRORRORRRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRORROORORRRRROORRRRROORRRRRRRRRRRRRORRORRRRRORRROROORRRRROORRRRRRRRRORORRRRRRRRRRRRRRRRRRRRRRRRORRRRRORRRRRRORRRRORRRRRRRRRRRRORRORRRRRRRRRRRRRRRRRRRRORRROORORORORRRRRRRRRRRRRRRRRRRRROROOORORRORRRRRRRRRRRORRRRORRRRORORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRORRRRRRRRROORRRRRRRRRRRROORRRRRRORRRRRRRRRORORORRRRRRRRRROORRRRRRORRRRRRORRRRRRRRRRRORRORRRRRRRRRRRORROORRRRRRORRRRRROROORRRRRRROROORORRRORRRRRRRRRRRORORRRRRRRRRRRRRRRRRRRRRRRORRORRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRRRORRRRRORRRRRRRRRORRRRRRORRRRRRRRRRRRRRRRORRRORRRRRRORRORRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRRRRRORRRRROROORRRRRRRRRRRRRRRRRRRRRRRORRRRRORRRRRRROORORRRRORRORRRORRRRRRRRROOORRRRORRRRRRRORRRRRRRRROORORRRRORRRRRRRRRRRRRRRRRRRRRRORRORRRRRORRRRRRRRRRRRRRORRRRRRRORRRRRROROOORRRRRRRRORORRRRRRRROORRRRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRORRRRRRRORRRRRRRRRRRRRRRROORRRRRRRRORRRRORRRRRRRRRORORRRRRRRRRRRRRRORRRRORRRRRRRRRORRRRRRRRRRRORRRRORRORRRRRRRRRRRRRRRRRRRRORORRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRORRRORRRRRRRRRRRRRRRRRORRRORORORRRRRRRORRRRRRRRRRRRRRRRRORRRRORORRRRRRRRRRRORRRRRRRRRRRRRRORRRRRRRRRRRRORRRRRROOORRRRRRRRRRRRRRRRRRRORRORRRORORRRRRRRRRRRRRORRORRRRRORRRORRRRRORRRRRRRRRRORORRRRRRORROORRRORRRRRRRRRRRRRRRRORRRRORRRRRRRRRRORORRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRRORRRRRORRRORRORRRRRRRRRRRRRRRRRRRRORRRRRRORRRRRRRRRRRORORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORORRRRORRRRRRRRRRORRRRRRORORRRRRRRRRRRRRRRROROROORRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRORROOROORRRRRORRRRRRRRRRRRRRRRRRRRRORRRROORRRORRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRORORORORORRRRRRRRORROORRRRRRRRRRORRORRRRRRRRRRRRRRRORRRRORRRRRRROORRRRRRORRRRRRRRRRRRRRRROORRRRRRORRRRRRRRRRRORRRRRRRRRRRORRRORROORRRORRRRORRRRRRRRRRRRRORORRRRRRRRRROORRORORRRRRRRRRRORRRRORRRORORRRRRRORRRRRORRRORRRRRRRRRRRORRRRORRRRRRRORRRRRRRRRRRRRRRORRRRRRRRRRRRORRRRRRRRRRRRRORRRRORRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRORRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRORRRRORRRRRRRRRRORORRRRRRRRRRRRRRORRRRRRRRRRRRRRRRORRORRRRRRRRRRRORRRORRRRROORORRORRRORRRRRRRRRRRRORRRRRRRRORRORRRRORRRRRRRRRRRRRRRRORRRRRRRRRRORRRORRRRORRRRRRRORORRRRRRRORRORRRRRRRRRRRRRRRRRRRRRORRRRRRRORRRORRRORRRRRROORRRRRROORRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRORRRRRRRRORRRRRRRRRORRRRRRORRRRRRRRRRRRRRRRRRRRRRROORRRRRRRRORRRRRORRRRRRRORRRRRRRRROORRRRROORRRRRORRRRRRRRRRORRORRRRRORRRRRRRRORRRORRRRRRRRRRRRRORORRRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRRRORRRRORRRRRRRRRRRRRRRORRRRRORRRORRROORRRRRRRRRRRORRRRRORRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRROORRRRRORORRRRRRRRRRRRRRRRORRRRRRRORRORRORRRORRRRRRRRRRRORRRRRRRRRRRRRRRRRRRORORRRRRRRRRORRRORRRRRRORRRRRRRRRORRRRORRRRRRRRRRRRORRORRRRRRRRRRRRRORRRRRRRRRORRORRRRRRRRRRROORRRRRORRRRRRRRRRRRRRRRRORRRRRROORRRORRRROORRRORRRRRRRRORRRRRRRRRORORRRORRRRRRORRRRORRRORRRRRRRRRRRRRRRRRRORRRRRRRORRRRRRRRRORRRRRRORRRRORRRRRRRRRRRRRRRRRRRRRRORRRORORRRRRRRRRRRORORRRORRRRRRRRRRRRORRRRRRRRRORRRORRORRRRRRRRRRRORORRRRRRRRRRRRRRRRRRORORRRRRRRRRRRRRRRRRRRRRRRROORROORRRRRRRORORRRRRRRRRRRORRRRORRORRRRRRORRRRORRRRRRRORRRRRRRRRRRRRRRORRROOROORORRRRRRRRRRRRRRRRRRRORRRORRRRRORRRRRRRRRRRROORORRRRRRRRORORRRRRRORORRRRRRRRORRRRRRRRRRRORRRRRRRRRRRRRORRRRRRRORRRRRRRRRRRRRRRORORORRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRORRRRORRRRRRRRRRRROORRORRORRRRRORRORRRRORORRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRORRORRRORRRRRRORRRRRRRRRRRORRRORORRRRRRRRRROORRRRORRRORRORRRRRRRRRRRRROORORRRRORRRRRRRROORORRRRRRRRRRRRORRRRRRRRRRRRRROOROROORORORRRRORORRRORRRRRRRRRRRORROROROORRRRRRRROORRRORRRRRORRORRRRRRRRRRRORORRORRRRRRRRRRRRORRRORRRRORRRRRRRRRRRORORRRRRRRRRORRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRROORRRRORRRRRRRRRRRRRRORRORRRRRRORRRRRRRORRRRRORRRORRRORRORORRRRORRRRRORORRRRRRRRORRRRRRRRRRRRRRORRRORRRRORRRRRORRRRRORRRRRRRRRRRRRORRRRRRRRRRRRORRRRRRRRRRRRRRRRRROORRORRORRRRRRROOORORRRRRRRORRRRRRORORORRRRRRRRRRORRRRRRRRRORORRRRRRORORRORRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRROORRRRRRRRRRORRRRRRRRRRORRORRRRRRRORRRRRORRRRRRRORRRROROROORRRORRROORRRRORRRRRORRRRORORRORRRRRRRRRRRORRRRRRRRRROORORRRORORRRRRRRRRORORRRORRRRRRRRRORRRRRRRRRRRRRRRRORRRROROORRROORRRRRRORORRRRRRRRRRRRRORRRRRORRORRRRRORRRRORORRRRRRRORRRRRORRORRRRRRRRRRRRORRORORRRRORRRRRRORRORRRROOORRRRRRRRORRRRRRORRRRRORRRRRRRRRRORRRORRRRRRRRRRRRORORRRRRRRRORRRRRRRORORRRRRORORRRRRRRRRRRRRRRRRRORRRRRRRRORRORRRRRRRRRRRRRRRRORRRRRRRRRRRRRORORRRRRRRRRRRORRRRRRRRRRRRRRRRRORRRRROORRRRRRRRRRRRRRRRRRRRORROORRRORRRRRRRRRRRORRRRRRRRRRRRRRRRORRRRORRORRRRRRRRRRRRRORRRORRORRRRRRRRRRRRORRRRRRORRRRRORRRRRRRRRRRRROOOROORRRRRRRRRRORRRRRRRRRRRRRORRORRORRORRRRRRRRRRRRRRRRROOOOOORRRRRRRRRRRORRRRRORRRRRRRRRRRRORORORRRRRRRRRRRRRRROORRRRRRRRRRRRRRRRRRORRRRRRORRRRRRRRRRORRRRRRRORORRRRRRRRRRRRRRRRRORORRRRORRRRRORRRRRRRORORRRRRRRORORRRORRRRRORORRRRORRRRRRRRRRRRRRRRRRRRRORRRRRRRRORRRORRRRRRORRRRRRRRRRRRRRRRRRORRRRRRORORRRRRRRRRRORRRRRRRRRRRRRRRRRORORRRRRRRRRRRRRRRRRRRRRORRRRORRRRORRRRRRRRORORORRRRRRRRRORRORORRORRRRRRORROORORRRRRRRRRRRRRORRRRRRRRRRRRORORORRRRRRRRRRRRRRRRORRRRRRRRRORRRRRRRRRRRRRRRORRRRRRRRRRRORRRRRRRRRRRRRRRRRRORRRRRRRRORRRORRRRRRRRRRRORRORORRRRRRRRRRRRRRORRRORRRRRRRRRRRRORRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORORRRRRRORRRRRORRROOORRRRORRRRRRRRRRRRRRRRRRORRRRRRRRORORRRRRRRORRRRRRRRRRRRRRRRORRRRRROORRRRRRRRRRRRRRRRRRRRRRRRORRRORRRRRRRRRRRRORRRORRRRRRRRRRRORRRRRORRRORRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRROORRRRRRRORRRRRRRORRORRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRORORRRRRRRORRRRORRRRRRRRORRRRRRRRRRRRRORRRRRRORRROORRORRRRRRRRRRRRORRRRRRRRRRRRRRRRRRRORRROROORRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRORRRRRRRORRRRORRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRORRRRRORORRRRRRRRORRRRRRORRRRRRRRRRORRRRRORRRRRORRRRRRRORRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRORRRRORRRRORRRRORRRRRORRRRRROORRRRRORRRORRRORRORRRRRRRORRRRRRORRORRRRRORRRRRRRRRRRORRRRORRRRRRRRRRRRRRORRRRRRRRRORRRORRRRRORRROORORRRRRRRRRRRRRRRRRRRRRORORRRORRRRRRRRRRRRRRORRRRRORRORORRRORRRRRORRRRORRRRRRRROORRRRRRRORRRRORRORORRRORRRRRRRORRRRRRRORRRRRRRRRRRRRRORRRRRRRRRRORORRRRRRRRRRROROORRRRORRRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRRRORORRRRRRRRRRRRRRORORRRRRRRRRRRRRRORRRRRRRRRRRRRRORORRRRRRRROROROORORRRRRRRRRRORRRRRRRRRRORRRRRRRRRRORRRORORRRRORRRORRRRRRORRORRRRRRRRRORRROORORRROORRRRRRRRRRRRRRRRRRRORRRRRRRRRRRORRRRRORORRORRRORRRRRORRRRRRRRRRRRRRRRRRRRRROORRRRRRRRRRRORRRORORRRORRRRRORRRRRRRROORRRRRRRRRRRRRRRROORRRRRRRRORRORRRRRORRORRORRRRORRRRORRRRRRRRRRRRRRRORRRRRRRRRRORRRRRRORRRRRROORRRRROORRRRRORRORRRRRRRRRORRRRRRRRRRORRRRRRRRRRORRRRRRRRRRRORRRRRRRRRRRRRRRRORRORORRRRRRRRRRRRRORROORRRRRRRORRRORRRRRROORRRORRORRRRORRRORRRRRRRRRRRRRRRRRRRRRORORRORRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRORRRRRRORRRRRORORRRRRRRRRRRRRRRRRRRRRRRRRRORRRORRRRRRRRORORRRRRORORRRRORRRORRRORRORRRRRRRRRRRRRRRRORRRRRRORRRRRRRRRRORRRRRRRRRRRRORRRRRRRORRRRORRRRRRRRRRRRRRRRORRRRRRRRRRORRORRRRRRRRRRRORRRORRRRRRORRRRRORORORRRRRRRRRROORORRRRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRORRRRRRRROORRRRRRRRORRRRRRRRRRRRRRORRRROORRRRRRRRORRRRRRRRORRRRORRRRRORRORRRRROORRRRRORORRRRORRRORORRORORRRRORRRRRRRORRRRRORRRRRRRRRRRRRROORRRRRRRRRRRRORRRRRRRORRRRRRRRRRROORRRRRRRORRRRORRORRORRRRRORRRRRRRRRRRRORRRRRRRORRRRRRRRRRRRORORRRRRRRRRRRORRRRRRRRRRRRORRRRRRRRRRORRROOOORRROORRROORRROROORORORRRRRRRRRRORRRRRRRRRRRRRRRRORRRRRORRORRRROORRRRRORORRRRRORRRROROORRORRRRRORORORRORRRORRRORRRRRRRRRRRRRRRRRORRRRRRRRRRRORRRRRRRRRRORRRRRRORRRRRRRRORRORRRRRRRRORRRRRRRRRRRORORRROORRRRORRRRRORORRRRRRRRORRRRRRRRRRROORRRRRORRRRRRRORRRRRRRRRORRRRRRRRRRORRRRRROROORRORRRRRRRRRRRRROOORRRRRRRORRRRRRROORRRRRRRRRRRRRRORRORRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRROORRRRRRRRRRRRRRORRORRORRRRRRRRRRRORORRRRRRRRRRRRRRRORRRRRORRRRRRRRRRRRRRORRRRRRRORRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRRORRRRRORRORRRRRORRRRRRRRROOORRRRRRRRORRRRRRROORRRRRRROOROORORRRORRRRORORORRRRRRRRRRRRRRRRRRRRRRRRROORRRRORRRRROORRRORRRRRRORRRRRRRRRRORRROORRRRRRRRRRRRRRRRRROORRRRRORRRORORRORORORRRORRRRORRRRROORORRRORRRORRRORRRRRROROOORRRRRRRRRRRRRRORORRRRRRRRRRRORRRRRRRRRRRORRRRRRRRORRRRRRORRORORRORORRRROORRRRORORRRRRRRRRRRRRRRRRRRRRROORRRRRRRRRRRRORRORRRRRRRRRRRRRRRRRORRRRORRRRROORRRRRRRORRRRORRRRRRRRRORRRRRRORRRRORRRRRRRRRRRRRRORRRRRRRRORRRRORORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRORRRRRRORRRORORRRRRRRRRRRORORRRORRRRRRRRRRRRRRRRRRORRRRRRRROROORRRRRRRRRROROORRRRRRRORRRRRRRRRROORRRORRRRRRRRRRRRRRRRORORRRRRORRRRRRRORRRRRORORRRRRORRRRRRRRRRRORRRRRRRRRRRROOORRRRRORRRORRRRRRORRRRRORRORRORRRRRRRRORRRORRRRRRRRRRRRORRRORRRRRRRRRRRRRRRORRRRRRRRRRRRRRRORRRRRORRRORRRORORRRRRRRRRRRRORRRRRRRRRRORRRRRRRORRRRRRRRORRRRRRRORRRRRRRORRRRRRORRRROORRORRRRRRRRORROOORRRRROORRRRRRRRRRRRRRORRRORROORRRROROORRRRORRRRRRRRORRRORRRRRRRORRRRRRORRORORRRRRORRRRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRORRRRORRRORORORRORRRRRRRRRRRRRRRRRORRRRRRRRRRRRORRRRRRRRORRRRRORRORRRRRORRRRRORRRRRRRORRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRORRRRRRRRRORRRRRRRRRORRRORRRRRRRRRRRRRRRRRRRORRRORRRRRRRRRRRRRRROORRRRRRRRRRRRRRRRRRORRORRRORRRRRORRRRRRRRRRRRRRORRRRRRRRRRRROORRRRORORRORRRORRRRORRRRRRRRRRRRRORRORRRRRRRRRRRRRORRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRORRORRORRRRRRRRRROORRRRRRRRRORRRORRRORORRORRRRRRRRORORRRRRRRRRRORRRRRRRRORRRRRORRORRRRRORRRRRRRRRROORRRRRRORORORRRRRORRRRRRORRRRRRRRRRROORRRRRROORROOORRRRRRRRORRROROROORRRORRORRRRROORRRRRRRRRRRRRRORRRRRRRRRRRRRROOORRRRRROORRRRORRRRRRRRRRRRRORRRORRRRRRRRRRRRRRRRRORRRRRORRRRRRRROORRORRRRRRRROORRRRRRRRRRRORRRRRORRORRRRRRORRORRORRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRROORRRRRRRRRRROORRRRRRRRORRRORRRRRRRRRRRRRRROORRRRORRRRRRRORRRRRRRRRRRRRORRRRRRRRRRRORRRRRRRRRRRRRORRRRRRRRORORROROORRRRORRRRORRRRRORRRRRRRRORRORRORRORRRRRRRRORORRRRRRRRRORRRRRRRRRRRRRRRORRRRRRRROORRRRRRORORRRRRRRRRRRRRRRRRRRRRRRORRRRRRRORRRRRRRRORRRRRRRRRRRRRRRRRORRRRORRRORORRRRRRRRRRRRRRRRRRORRRORRRRRRORRRORRRRRRRRRRRORORRRRRRRORRRRRRRRRRORRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRORRRORRRRRRORRRRRRRRRRRRRORRRORRRRRRRORORRRRRORRRRRRRRRRRRRRRRORRRRRRRORRRRRRRRORRRRORRRRRRORRORRRRRORRRRRRRRRRRORRRRRRRRRRRRRRORRRRRRRRORRORRRRRRORRRRRRRRRRRORRRRRORRORRRRRRRRORRRRRORORRRRRRRRRRRRRRRORRRRRRRRRORRRRRORRRRRRORRRRRRRORORRRRRRRRORRRRRRRRRRRRRRRRORRRRROORRRRRRRRRRORRRRRRORRRRRRRROORRRRRRRRRRRORRRRORRRRRRORRORRRORRRRRRORRORRRRRRRRRORRRRORRORRRRRRRRRORRORORRRORRRRRRRRRRORRRRORRORRORORRORRRRRRRORRORORRRORRRORRRRRRORROORORRRRRRRRRRRRRRRRRROROOORORRRRRRRRORRRRRRORRRRRRORRRRRORRRRRRRRRRRRRRRRRORRRRROORRORORRRRRORRRRRRRRORRRRRORORRORRRRRRORRORRRRORRRRRRRRRORRORRRRRRRRRRORRRRRRRRRRRRRRRORRORRRRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRORRRRORRRRRRORRRRRRORRRRRRRRRRRRRRRRRORRRORRRRRRRRRORORRRRRRRRRORRRORRRORRRORRRRORRRRRRRRRRRRRRRRRORRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRORRRRORRRRORRRRRRRRRRORRORRRRRRRRRRROORRRRRORRRORRRROORRORORRRRRRORROROORRROORRRRORRORRRRORRRRRRRRRRRRRRRORRORRRRORRRRRRRRORRORRRRRRRRORRRRROORORRRRRRRRRRRRRRRORRRRORRRRRORRORRORRRRORRORRRRORRRORORRRRRRRRRRRRRRRRRRRRRORRRORRRRRORRRRORROOROROROORROORRORRRRRRRRORORRRRRRRRROROORRRRRRORORRRRORRRRRRRRRORRORRRRORROORRRRROORORRRRRRRRRRORRRRRRRRRRRRRRORRRRRRORRRRRRORRRRRRRRRRRRRRRORRRRORRRRRRORRRRRROORROORRRRRRRRORRORRRORRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRORRRRORRRRRRRRRORORRRRRORRRRRRRRRROORRRORRRORROORRRRRRORRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRRRROORRRRRORRRORRRORRRRRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRORRRRRRRRRRRORRRRRRRRRRRRRORORRORRORRRRROORORRRRRRRRRRRORRRRRRRRRRRRRORORRORRRRRRRRRORRRRRRRRRRRRRRRRRRRRORRRRRRRORORRRRRRRRRRRRRRRRRRRORRROROROROORRRRRRRRRRRROORRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRORORRRRRRRRRROORRRRRORRROORRRRROORRRRORRRRRRRRRRRORRRRRRRRRRRORRRRRRROORRRORRRORORRRRORRRRRRRORRRRRRRORRRORRORRRRRRORRRRRRRRRORORRRRRRRRRRORRRORRRRORRRRORRRROOORORRRORORRRRRRROOROORRRRORRRRRORRRRRRRRRRORRRRRRRRRRRRRRORRRRRRROROORRORRRRRRRORRRRORORRRROORRRORROOORRRORRRORROORORRRRRRRRORRRRRRRRRRRRRRROOROORRRORORRRRRRRORRRRRRRRRRRRRRORRRRRRRRRRRORRORRRRRRRORRRRRRORRRRRRRRRRRRROORRRORRRRRRRRRRRRRRRRRORRRRRRRRRRRORRRRRROORRRRRRRROORORRRRRRRRRORRRRRRRRRRRRRRRORRRRRRRRRRRROORRORRRRRRRRRRORRRRRRRRRRRORRRRRRORRRRRRORRRRRRRROORRRRORRRRRROORRRRRRRRRRROOORRRRRORRRORRRRRRORORRRRORRRRRRRRRRRRRRRRRRORRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRORORORRRRRRRRORRRRRRORRRRRRORORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRORRRRRORRRRRRRRRROORRRORRRRRRRRRRRRRRRRRRRRRORRORRRRRRRRRRRRRRRRRRRRRRRRRRRORRORRRRRRRROORORRRRRRRRRRRRRRRRRRRRRRRRRORORORRRRRRRRRRRORRRRRORORRRRRRRORROORRRRRRRRRRRORRRRROORRRRRRRRRRROORRRRRRORRRRRORRRRRORRRRRRRRRRORRRRRRRRORRRORRRRRORRRRRRRRRORRRRORRRRRRRRRRRRRRRRORRRRORRRRRORRORRRRRRORRRORRRRRRRRRRRRORRORRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRRORORRRORRRRRORRRRRRRRRRRRRRRRRORRORRRRROORRRORORRRRRORRRRRORROORRRRRRRRRORRRRORRORRORORRRROORORRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRORRRRRRRRRRRRRRRRROORRRRRRRRORRRRORRRRRRRRRRRRRRORRRRORRRRRRRRRRRRRRRROORRRRRRORRRRRRRRRRRRORRRRRRRRORRRRRRRRORRROORRRORRRRRRRROORRRROORRRRORORRRRRORRRRRORRRRRROROROOORRRRRRORRRRORRRORRRORRRRRRRRRRRORRRRRRRRRROOORRRORRRRRORORORRRRRRRORRRRRRRRRORORRRRROROORRRRRORRRRRRRRRRRRRORRRRRRORRRRRRRRRRRRRRRRRORRORRORRRRORRRRRRRRRRRRRRRORRRORRRRORRRORRRORRRRRROORORRORRRROORRRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRRRRORRRORRORRROORRRRRORRRORRRRORRRRRRRRRRRRRRRRRROORRRRRRRRRRRRRRORRRRRRRRRRRORORRRRRRRRORRROORRROORRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRRORORRRRRRRRRORRRRRRRRRRRRRRORRRRROORRORRRRRRRRRRRRRRRRRORORRRRRRRRRRORRRRRRRRRORRRRRORRRRRRRRRORRORRRRRRRRRORRRRRRORRORRRRRRRRRRRORRRRRORRORRRRRRRRRRRRRRORORRRRRORORORRRRORRRRRRORRRRRRRRORRRORORRRRRRORRRRRRRRRRRRRRRORRRRRRRRRORRRRRROROROORRORRRRRRRRRORRRRRRRRRORRRRRRRROORRORRRRRRRORRRRORRRRRRRRRRORRORRRRORRRRRORRRRRRRRRORRORRRRRRORRRRRORRRORORRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRROOORROORRRRORRRORRRRRRRRORRRRRRORRRRRRORRRRRRRRORRRRRRRRRRRRRRRRRRRRRRORORRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRORRRRRRORRRRRRORORRRORRRRRORRRRRRRRRRRRRRRRORRRRORRRRRRRRORRRRRRRROORRRRRRROORROORRRRRRORRRORRRRORRRRRRRRRRROROORRRRORRRRRRORRROORRROORRRRRRRORRRRRORRRRRORRRRRRRRRRRRRRRRRORORRRRRRRRORORRRRRORRORRRRORRRRRRRRRRRRRRRRRRRRORRRRRRRORRORRRRRRRRRRORRRRRORRRRRROORRRRRRRRORORRRRRORRRRRRRRRROOORRRRRRRRRRRORRRRRRRRRRRRRRRORRORRRRRRRRRRRRORRORRRRRRRRRRRRRRRORRRORRRORRRRRRRRRRRRORRRRRRRRRRRRRRRRORRRRRRRRRRRRORRRRRRRRRRRRORRRRORORRRORORORRORRORORRRRRRORRRRRRRRRRRRRRRRRORRRORRRRRRRRRRORRRORRRRRRRORRRORRRRRRRRRRRRRORRORRRRRRRORRORRRRORRRRRRRRRRRRRRRRORRROORRORRRORRRRRRRRRRRRRRRRORRRRORRRRRRRRRRRRRORRRORRRORRRROORRRRORRRRRRORRRRRRRRRRRORRRRRRORRRRORRRRRRRRRRRRORRRRRRRRRRRRRORRRRRRRRRRORRRRRRRRRRRRORRRORRRRRORRRROORRROORRORRRRRRRRORRRRRRRRORRORRORRORRRRRRRRRRRRRRRRRRORRRRRRRRRORRRRRRORRRRRORORRRRRRRRRORRRRRRRORRRRRRRRRRRRRORRROROROORORRRRRRRRORRRRRRRRRRRRORRRRRRRRRRRRRRRRRORRORRRROORRRORORRRRRROORRRRORRORRRRRRORRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRRORRRRRORRRRRRRRRRRRRRRRRRRRORRORRRRRRRORRORRRRRRRRRRORRRRORRRORRRRRORRRRRRRRRRRRRRRRRRRRROORORRRRRRRRRORRRORRRRRRRRRRRRRRRORRRORRRRRRRRRRRRRRRORRRRRRORRRRRRORORRRRRRRRRRRRORRROROROORRRORORORRRRORRRRORRRRRRRRRRRRRRORRORRRORRRRROORRRRRORRORORRRRRRRRRRORRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRORRRRRRORRRRRRRRORRRRRRRORRRRRRRORRORRRORRRRRRRRRROOORRORORRROORRRRRRORRRRRRRRRRRRRRRORRRRRRRRRROORROROORRRRRRRORORRRRRORRROORRRRORRRRRRRRRRROORORRRORRRRRRRRRRROORRRORRRRRRRRRRRRRRORRRRRORRRRRORRRRRRRORRRORRROORRRRORRORRRRRRORRORRRRORRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRRORROORRRRRRRRRRRRRRRRRRRRRRRRRRORRORRRRRRRRRRORRRRRRRRRRRRRRRRRRRRORRRRORRRROORRROORRRORRRRRRORRRRRRRRRRROROORRORRRRRRRORRRRRRRRRRORRRRRRRRRRRORRRROORRRRRRRRRRRRRRRRRRRRRORRORRRRRRRRRRORRRRRRRRORRRRORRRRRRROORRRRRRRRRRRRRRRORRRRRORRRRORRRRRRRRRRRRORRRRORRORRRORRRRRRRRORRRRRRORRORRRRRRORRRORORORRRRRRRRRRRRRRORRRRORROORRRORRRROOORRRRRRRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRORRROOORRROORRRRRRRORRRRRRRRRRRRRRRRRRORRRRRRORRORRRRORRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRROORRORRRRRRORRRRRORRRORRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRORRRRRRRRROORORRORRRRRRRRRRRRRORORRRORRRRRRRRRRRRRRRRRRRRRRRRRRRORRORRRRRRRRRRRRRORORRRRRRRRRRRRRRRRRORRRRRRRROOORRRORRRRRORRRRRORRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRORRRRRRRRRORRRRRRRRRRRRORRROORRRRORRRRRORORRRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRORRRRRRRRORRRRRRRRRORRRRRRRRRORRRRRRRRRRORRORRRRRRRRRRRRRORRORORRRRORRRRRRRRRRRRRORORRRRRROORRORRORRRRRRRORRRRRRRRORRRRORRORRRORRRORORRRRRRRRRORRORRRRRRRRRRRRORRRRRRRRRRRRORRRRRRORRRRRRRRRRRRRRRRORRROORRRORORRORORRRORORRRRRRRRRRRRRRORRRORRRRRRRRRRRRRRRRRRORORORRRRRRRRRRRRORORRROORRRRRORRORRRRROORRRRRRORRRRRRRORRRRRRRRRRRRRORRRORRRRRRRRRRRRRRRORRRRRRRRRRRRRRROORRRROORRORRRRRRORORORRORORORRRRRRORRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRORORRRRRROORRRORRRROORRRRRRRORRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRORRRRRRRRRORORORRRRORRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRORRRRORORRROORRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRORRRRRRORORRRRRRROORORRROORRRRRRORRORRRRRRORRRORRRRRRRRRRRRROOOORRRORROROORRRORORRRRRORRROORROROORORROORRRRRRRROORRRRRRRORRRRRRRORRRRRRRRRRRRRRROORROORORORORRRROORRRRRRRRRRRRRRRRORRRRRRRROOOROORRRRRRRRRRRRORRRRRRORORORRORRRRRRRRRRRORRRRROORRORRRRRRRRRROORRRRRROOORRRRRRRRRRRORRRRRRRRRRRRRRRRRRRRORRRRRRORRORRRRRROORRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRRRORORRRRRRRRORRRRRRRRRRRRRRRRORROORRRORORRRRRRRRRRRRRRRRRRRRRRRRRRORRORRORRRRRRRRRRRRRRRORRRRORRRRRRRRRRRRRRRRRORRRORRRRRRRRRRRORRRROORRRRRRRRRRRRRRRRRRRRRRRORRRRORRORORORRRRRROOROROORRORORRRRORRORRORRORRRRRRRRRORRRRRRRRORORRORRRRRRRRRRRORRRRRRRRORRRRRRRRRRRRORRRRRRRRRORRRRRRRRRRORRRRRRRORRRRORRRRRRRRRORRRRRRRRRRRORRRRRORRRRRRRRORRRRRRROROORRRRRRRRRRRRRRRRORRRRRRRROORRRROORRRRRRRRRRRRRRORRRRRORORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRORRRRRRRRRRRRRRRRRRRORORRORRORRRRRRRRORRRRRRRRRRRORRRRRRRRRRORRRRRRRRRRRRRORRRRRRRRORRRRORORRRRRRORRRRRORRRRRRRRORRRRRRRRRRRRRRRRRRRORRRRRORORRRRRRRORRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRRORRORRRORORRRRRRRRRRORORRRRRRRRRRRROROOOORRRRRRRRRORRRRRORRRRORORROORRORRRRRRRRRRRORRRRRROROORORRRRRRRRRRRRRRRRRRRROOORRORRRRORRRRRRRRRRRRRRRRRRRRRRRRROORRRRORRRRRRRRRRRRRRRRRRRORRRRRRRRRRRROORRRORORRRORRRRRRRRRRROORRORRRRRORRRORRRRRRRRRRRRORORRRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRROORRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRORRRRRORRRROOORRRRORRRRRRORRRRRRRRRRRRRRRORRRRRRRRORRRRRRRRORRRRRRRORRRRORORRORRRRRORRRRRRRRRRORORRRRRRRORORRRRRRRRRORRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRROORRRRRRORRRRRRRRRRRRRRRRRRRRRORRRRRRORRRRRRRRRRRRRRRRORRROOORRRRRRRRRRRORRORORRRRRRRRORORRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRROORRRRRORRRRRORORRRRRORORRRRRORRRRRRRRRRRRRRRRORRRRRORRRRRRRORRRRORRRORRRRRRRRRRRRRRORRRRROORRRRORRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRORRRORRRRRRRRRRRORRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRORRORORRRRRRORRRRRRRRRRRRRORROORRRORRRRRORRORRRRRRRRRORRRRRRRRRRRRRRRRRRORRRRRORROOROOORRORORRRORRRROORRRRRRORRRRRRRRORRORROORRRRORROORRRRRRRRRROOORRRORRRRRRRRRRRRRRRRRRORRRORORORRRRROORRRRRRRRRRRORRRRRRRRRRORRRRRRRRRRRRRRROORRRORRRRORORRRRRRRRRORRRORRORORRRRRRRRORORRRRRRORRROOORRRRRRRRRRRRORRROORORRRORROORRRRRROORRORORRORRRRORRRRRORRRRRRRRRRRRRRORRRRRRRRRRRORRRRRRRRRORRRRRRRRRRRRRRRRORORRRRRRORRRRRROORRRRORRRORRRRRRROORRRROORRRRRRRORRRRRRRRRRRORRRRRRRRRRRORRRRRRRORRRRRRRRRRRRORRRRRRRRRORRORRRRRRRRRRRRRROORRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRORRORORRRRRRRRRRRRRRORRRRRRRRRRRRRRRRORRRRRRRORRRRRRORRRRRORORRRRRRRRORRRRRRRRRRRRRRORRRRRRRRRRORRRORRRORRRRRRORRRRRRRRRRRRRRRRRRRRRORRRRORRRRRRRRRRRRRRRRORORRRROORRROORRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRORRRRRRORRORORRROORRRRORRRRORORORRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRORRRORRRRRRORRRRORRRRORRRRRRRORRORORRRRRRRRRORRRORORRORRRRORRRRRRRRRORRRRRORRRORRORRORRRRRORRRRRRRRRORRORORRRRRRRROORRRRRRRRRRRORRRRRRRORRRRRRRRRRRRRRRRRRRRRRORRRORRORRRRRRRRRORRRORRRRRRRRORRRRRRRRRORRRRRORORRRRRRRRRRRRRRRRRRORRORRRRRROORRRRRRRRRRRRORRORRRRRRRRRRRRRRRRRRRRRRORRRORRRRORRRRRRRORRRRRORRRRRRRRRORRRRRRRRRRRRRRRRRORRRRRRORORORORRRRORRRRORRRRRRRRRRRRORRRRRRRRRRRRRRORRORRORRRRRRRRRRRORRRRRRRRORORRRRRRRRRORRORRRRORRRRRRRRORRRRRRRRRRORRRRRRRRRRRORRRORRRRRRROROORRRRORRRRRRRRRORRRRRORRRRRRRRRRRRRRRRRRRORRRRRRRRORRRRRRRORRRRRRRORRRRRRRORRRRRRRRRRRRRRRRRRRORRROORRRRRROORRRRRRRRROROORRRRRRRRORRRRRRRRRRRRRORRRORORRRRRRRRRRRORORRRORROORRRRRRRRRRRORRRORORRRRRRRRRRRRRRRRRRRRRORRRORRRRRRROORRRRRRRRRRRROORRRRROORRRRRRRRRRRRRRRORRRRRRRRRRRRORRRORRRRRRRRRRRRRRRORRRORRORRRORRRRRRORORRRRRRRRRRRRRRRRRRORROORORRRRRORRRRRRRRORRRRRRROORRRRRRRRRRRRRORRRRRRORRRRRRRRORRRRRRRRRRORRRORRRRRRRRORRRRRRRRRRRRORRORRROORRRRRRRRRRRRORRRRRRRRRORROORRRRRROROORRRRRRRRRORRRRRORRRRRRRRRORRRRRRROORRRRRRRRRRRRRRRRRRRRORRORRRRRRRRRRRRORRRRRRRRRRRRORRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRRRROORRRRRORRRRROROORRRRRRRORRRRRROORRRORRRRRRRRRROROROROORRRORRRORRRRRRRRRRORRRRRRRRRRRRRRORRRRRRRRRRRRORRORRRRROORRRORRRRRRRRRRRRORRRRORRROORRORRRRRRRRRORRRRRRRRRRRRRRRRRRRRRORRRRRRRRORRRRRRRRORRRRRRRROORRRRRRORRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRORRRRRORORRRRRRORRRRORRRORRRORRRRRRRROORRRRRRRORRRRRRROROORRRRRRRRORRRROORRRRRRRRRRRRRRRRRRRRRRRRRORRORRRRRORRRRRRRRRRRRRRORRRRRRRRRRORRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRORRRORRRRRRRORORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRORRRRRRRRRRRRROORRRRRRRRRRRRRRRRRRRRORRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRORRRRRORRRRORRRRORRRROORRRRORRRRRRORRORRRORRRRROORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRORRRRRRRORORRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRORRRRRRRRRRRRRRRRRRRRORRRRRRRRRORRRRRORRRRORRRRRORRRRRRRRRRRRORRRORRRRRRRORRRORRORRRRORRRRRRORRRRRRRRRRRRORRORRRRRRRRRRRRRRRORRRRRRRRORRORRRRRRRRROORRRRRRRRRRRRRORROORRRORRORRRRRRRRRRRRRRRORRRRROORRRRRORRRRRRRRRRRRRRRRRRRRRRRORRRRRRRRRORRRORRRRRRRRORORRRRRRRRRRRRRRRRRRRRORRRRRRROORRRRRRRROORRRRRRRRORROORRRRRRRRRRRRRORRORRRRRRRRRRRRORORRRRRRRRROORORRRRRRRRRORRORRRRRRRRRRRRRORRORRRRRRRRRORRORROROORRROORORRRRRRRRRRRRORRROOROORRORRRRRRRRRRRRRROROORRRROORRRRRRRRRRRRRRRRROOORRRRRRRRRRRRRRRORRRRRRRRRORORRRRRRRROORRORRRRORRRRRORORRRRRRRORRRRRORRRRROORRRRRRRRRRRRORORRRRRRRRRRRRRRRRRROROORRRORRORRRORRRRORRRRRRRRRRRRRRRORRRRORRRORRRRRORRRRRORRRRRRRRORRRRORRROORRROORRRRRRRRRRRRRRORRRRRRORRRRRRRRRRRRRRRRRRRRRORRRRRRRORRRORRRRRRROOORRRRORRORRRRRRRRORRRRRRRRRRRRRRRRRRORRRRRRORROORRRRRRRRRRRRRRORORRORORRRRRRORORRRORRRRRRRRRRRRORRRRRRRRORRORRRRRRORRRRRORRORORRRRRRORORRRRORRRRRRRRORRRRRRRRRRRRRRRRRORRRRRROORRRRRRRORRORRRRRORRRORRROORRRRRRRRRRRRRRRRRRRRORRRRRORRORRRRRRRRRORRRORRRRRRRRORRRRRRRRRRRRRORRRRRRRRRRRRRRRRROORRRRRRRORORRRRRRRRRRRORRRORRRRRRRRORRRRRRRRRRORRRRRRRRRRRRRRRRRRRRORRRRRRORRORRRRRRRRRORRRORRRRRRRRRRRRRRRRRRRRRRRRORRRRRRRORRRRRRRRRRORRRRRRRRRRRRRRRRROORRRRRRRRRORRORRRRORRRORRORORRORRORRRRRRRRRRRRORRRRRRRRRRRRRORRRRRRRRRRRRRROORRRRRRRRORORRRRRRORRRRORRRRRRRRROORRRRRRRRRRRORRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRRROORRRRRORRRRRRRRROORRRRRRRRRRRRRRRRRRRRRORRRRRORRORRRRRRRRRRORRRRRRRRORRRRORRORRROOROORRRRRRRRRRRRRRRRORRRRRRROROORRRORRRRRRRRRRORRRORRRRRRORRRRRRRRRRRRRRORORRRRRRRRRRRORRRRRORRRRRRRRRRORRRRRORRRRRRRRRRRRRRRRRRRORORRROORORRRRRRROORORRRRRORRRRRORRRRRRRRRRRRRRRRRRRRRORORORRRRRRRRRORRRRRRRRRRRRRRRRRRRORRRRRRRRORRORRRRRRORRRRORRORROORRORRRRRRRRRRRRRRRRRRORRRORRRRRRROORRRRRRRROORROORRROROORRRRRRRRRRRRROORRRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRORRRRRRORRRRRRORRRRRRRRRRRRRRORRRRRRRRRRRRRRRRORRRRRRRROORRRORRRORORRORRRORORRRRRRORORRRRRRRRRRORORRRRRRRRRORRRRRRRRRRRRRRRRRRRRRORRRRRORRRRRRRRRRRRROORRRRORRRRRRRRRRRRRRRRORRRROROORRRORRRRRRRRRRORRRRRORROORRRRRRRRORRRRRRRRRRRORRRRRRRORRRRRORRRRRRRRRORRORRRRRRRRRRRRRRORRORRRRRRORRRRRRRORRRRRRRRORRRRRRRRRRRRRORRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRORRRRORRRRRRRRRRRORRRRRRRRRRRRRRORORRRRRRRRRRRRRORRRORORORRRRRRRRRROORRRRRRRRRORRRORRRRRRRORRRORORRRRRRRRRRRROORRRRRRRORRRRRRRRRRRRRRRRRRROORRORRRRRRRRRRRORRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRROORRRRRRRRRORRRRRRRRROORRRORRRRRRRRRRRRRRRRRRRRRROORORRRORRRRORRRRRRRORRRRRRRORORORRRRRRRRORRRRRRRRROORRRRRORRRRRRRORRRRRRRRRRRRRRRRRRROROORRRRRORRORRRRRRRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRORRRRRRRRRORRRRRRRRRRORRRORRRRRRRRRRROORRRRRROORORRRRRORRRRRRRRRROOROORORRRRRRRRORRRRRRRRORRRRRRRRRORRORRRRORRRRRRRRRRRRRRRRRORRRRRRRRRORRRORRRROORRRRRRRRRRRRRRORRRRRRRRRRRORRRRRORRRORRRRRRRRRRORRRORRRRORRRRRRORRRRRRRRRRRRRRRRRRRORORRRORRRRRRRORRRRRRRRRRRRRRRRRRRRRRORRRRRRRRRRRORRRRRRRORRRRRRRRRRROORRRRRRRORRRRRORORRRRRRRRRRORRORRRRRROORORRRRRRRRRRRORRRRRRORRRRRRRORRRRRRORRRRRRRRRRRRRRRRRRRRORRRRRRRORRRRRORRRRRRRRRRRRRORRRRRRRRRRRRRRORRRRORORRRRRRRRRRRRRRROOORRRRRRRRRRRRRRRRRRORORRROOORORORRRRRRRORRRORRRRRRRRRRRORRRRRRRRROOORRRRRRRRRRRRORRRRRRRRRRRRRRORRRRRRRRRRRORORRRRRRRORRRRRRORRRRRRORRORORRRRORORRRRRRORRRRRORRRRRRRORRRRRRRORRRRRRRRRRRRRRORORRRRRRRRRRRRRORRRROORRRRRORRRRRRRRRRRRRORRRRRRRRORRRRRRRRORRRORORRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRORRRORRRRORRRRRRRRRRRORRRRRRRRRRRRRRRRRRRORRORRRRRRRRRRRRRRRRRRRRRORRRRRRRRRRORRRRRRRRRORRRRRRRRRRRRRRRRORRRRRORRRRRRORRRRORRRRRRRRRRRRORRRRRRORROOROORRRORORRRRORORRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRORRRRRRRRRRORRRRRRRRROORRRORRRRRORRORRRRORRRRRRRROOROORRRRRRRRRRORRRROROORRRRRRRRRRRRORRRRRRRRRRRRRRRORRRRRORORRRRRRRRRRRRROORROORRRRRRRRRORRRROOOORRRRRRORRRRRRRRRRRRRRRRRRRRORRORRRRRRORRRRRRRRRRRRROOROORROORORRRORRORORRRRRRRRORRRRRRRRRRRRRRRRRRRRORRRRORRRRRRRRRRRRRRRORRORRRROORRRRRRRRRRRRRRRRORORRRRRRORORRORRRRRORRRRRRRRRRORRRRRORRORRRRRORRRORRRRRRRRROORRRRRRRRRRRORRORRRRRRORRRRRRRRRRROORRRROORRRRRORRRRORRORRRRRRORRORRRRRORRRRORRRRORRRRORRROROORRRRRRRORROROORRRRRRRORORRRRRRRRRORRRRRRRRRRORORRRRRRRRORRROORORRRRRRRRORRRRRRORRRRRRRRRORRRRRRRRRRRORRRRRRRRRRRRRORRORRORRRRRRRRRRRRROORRRORRRRRRRRRORRRRRORRRRRRRRRRRRRRRRRRRRRRRRORRRRROORRRRORRORRRRRRORORRORRRRRRRRRRRORORRRRRRRRRRRRRRRRRRRRRRRRROOOORORRRRRRORRORRRORRRRRRRRORORRRRRRRRRRRRRRRRRRRRRORRRRRRRRRRRORRRRRRRRRRRRRRRRRRRRORRRORRRRRRRRORRRORRRRRRRROORRRRRRRRORORRRRORRRRRRRRRRORRORRORRRROORRORRRRRRRORRRORRRRRRRRORORRRRRORRRRRRRRRRRRROOROORRRRRRRRRRRRORRRRRRRORORRRRRRRRRRORRORRRRRORRORRRRRRRRORRRORRRRROROORRRRRRRRRORRORRRRRRRRORRRRRRRRRRRRRRRRRRORRORRRRRRRRRRRRORRRRRRORRRRRRRRRRORRRRRRRRRRRORORRRRRRRRORRRRRORRRRORRRRORRRRRORRRRRRRRRORRRORRRRRRRORROROORRRRRRROORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRROORRRRORRORORORRRORRRROOORRRRRORRORRRRRRRORRRRORRRORRRRRRROORRRRRRRRORRRRRRRRRRRRORORRRRORRORORRRRORRRRRRRRROORRORRRRRORRRRRRORRRROORORRRRRRRRORRRRRRRRRORRRRORORORRORORRORRRRRRRRRRORRRRRRRRRRORRRRRRRRRRORRRRRRRRORRRRRORRRRRRORRRORRRRRRRRRRRRRRRROORRRRORRRRRRRORRRRRRROOOROROROORRRRRORRRRRRRRRRRRRRRRRORRRRRRRRRORRRRRRRORRRRORORRRRRRRRRRRRORRRRORRRRRORRRRRORRROORRRRRORRORORRORROORRRRRRRRRRRRRRRROORORRRRRRORRRRROOORORRORRRRORORRRRRRRRRRRORRRRRRRRRRORRRROORORORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRRRRORRRRRRRROORRRORRRRRRRRRRRRRORRRRRRRRRRRORRRORRRORRRRRRORRORRRRRORRRRORRRRORRRRRRRRRRRRRRRRRRRORRRORRRRRRRRRORRRORRRROORORRRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRORRRRRRRRORRRRRRRRORRRRRRRRRRORRRRRRRRRRRRRRORRRRRORORRRRRRORRORORRRORRRRRRRRRRRRRRRRRRRRRORRORRRRRRRRRRRRORRRRRRRRRRRRRORRRRRROORRRORRRRRRRRRRRORRRROORRRORRRRRRRRRRRRRRRRRORRRRRRORRRORRORRRRRRRRRRORRRRRORRRROORRRRRRRRORRRRRRORRRRRRRRRRRRORRRRRRRRRRRRRRRRRRRROORRRRRRORRRORORRRRRRRRRORRROORRRRRRRRORRRRRRRRRRORRORRRRRRRORRRRORRRRRRRRRRRORRRRRRRRRRRRRRRRRRRORRRRRRORRRORRRRRRRORRRRRROOORRRORORRORRRRRRRORRRRRRORRORRORORRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRROORRRRRRORRRRRRRRRORRRRRORRRRRRRRRRRRRRORRRRRRRRORRORRRRRRRRRRORORRRORRRRRRRRRORRORRRORRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRRRORRRRRRRRRRRRRRORRRRRRORRRRRRRRRRRRRRORORRRRORRRRORRRRRRRORRORRRRRRRRRRRRRROORORRRRRRRORRRRRORORORRRRRORRRRRRRRORORRRORRRRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRORRRORRRRRRRROORRRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRROORRRRORRRRRRRRRRRRRRRRRORRRRRRRRORRRRRRRRORORRRRRRRRRRRRRRRROORRRRRRRRRRRRRRORRRRRRRRRRRRRRRROOORRRRRRRRORRRRORRRORRRRORRRRRRRRRRRORRRRRRRRRRRRRRRRRORRRRRRRRORRRRRRRRRORRRRRRRRRORRRRRORRRRRRRRRRRRRORRRRRRORRRRRRRROROORRRRRRRRRRRRORRRRRRRRROORRRRRRRRRRRRRRORRRRRRRRRRRRORRRRRRRORRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORROORRRRRORRRRRORRRRRRRRRRRRRRRRRRRRRORRRRRRRRORROORRRORORRRRRRRORRRRRORORRRRRRRRRRRRRRRRRRRRRRORRRRRORRRRRRORRRORRRRRORRRRRRROORRRRRORRRRRRROOORRORRRORRRRRRRORRRRRRRRRRRRRRRRRORRRRRORRRORROOOOORRRORORORRRRRRRRROOROORRRRRORRRORORRRRRORRORRRRORRORRRRORRORRRRORRRRORRRRRRRRRRORRRRRRRRRORORRRORRRRRRRRRRROORRRROORRORRRORRRRRORRRRRORRRRRRRRRORRORRRRORRRORRRRROROORRRRRRORROORRRRORROORRRRRRRROORORRRRRRRRRRRRRRRORRRRRRORORRORRRRRRRORORRRRRRRRRRORORRRORRRORRRRRRRRORRRORRRRRORRRRRRRRRRRRROOORRRORRRRRRRRRORRRRRRRRRRRRRRRRORRRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRORRRORRRRRRRRRRRRRRRORRRRORRRORRRORRROORRRRRORRRRRRRRRRRRORRORRRRRRRRRRRRRRRRRRRORRRRRRORRRORRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRORRRORRRRRRRORRRRRRRRORRRRRRRRORRRRRRORORRRRRRORRRRRORRRORORRRRORRRRRORORRRRRORRORRORRRRRRRRRRORRRRRRORRRRORRRRRRRRRORRRRRRORRRRRRRORRRRRRRRRORRRRRRRRRRRRRRRRRRRRROOORRRRRRRRRRRRRRRROORRRRRRORRRRRORRRRORORRRRRRRORRRRRRRRRROORRRRRRRRROORRRRRRORRRORORRRORROORORRRRRRRRRRRRRRRRRORRORRRRRRRRRRROORROROORRRRRRRORORRRRORRRRORROORRRRRRRRRRRRRRRRRORRRRRRRRRORRRORRRRRRRRRRRRRRRRRRRRRRRROORRRRRRRRORRRRRRRRRRRRRRRRRRRRRRORRRRRORORRRORRRRORRRRRRORRRRRRRRRRRRRRRRRRRRRRRROORRRRORRRRRRRORRRRRRRRRRRRROROROORRRRORRRRRRRRORORRRRRRRORRRRRRRRRRRRRRRRRRROROORRRRRROORRRRRRRRRRRRRRRRORRORRRRRRORRORRRRRRRRRRRRRORRRRROORRRRORRRRORRRRRRRRRRRRORRORRRRRRRRRRRRRORRRRORRRRRRRRRORRRRROORRRRRRRRRRRRRRRRRRRRORRRRRRRRRRROORRRRORRRRRRRRRORRRRRRRROOORRRRRRRRRRRRRRRORRRRRRRRRRORRRRRRRRORRORRRRRRRRRORRROORRRRRRRRRORRRRORRRRRRRRRRRRRRRRORRRRORRRORRRRRRRRRRRRRORRRRRRRRRORRRRRORRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRORRRRRRRRRRRORRRRRRRRRORORRRRRRRRRORORRRORRRRRRRRRRRRRRORRRORRRRRRRRRORRROORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRRORRRRRORRRRRRRRRRRRROORRRRRRRRRRRRRRORRRRORRRRRRRRRRRRRRORRRRRRORORRRRRRRRRRRRRRRRRRRRORRRORROORRRRRRRRROOORROORRORRRRRRRRRRRRRORRRRORRRORRRORORRRRORRRORRRRORRRRRRRRRORRRRRORRRORRRRRRORRRRRRRRRRRRORRRRRRRRORRRRRRORRRRRRRRRRRRRORRRRRRRRRRROOORRRRRRRRRRRRORRRRRRRRRRRRRRRRORRRRRORRORRORRRORRRRRRRRRRRRRRRRORRORRRRRRRRRRRRRRRORRRORRORRRRRRRRRRRRRRRRRORRRRORORRRRRRRRRRRRRORRRRRRORRRORRRRRORRRRRORRRRRORRORRRRRRRRORRRRRRRRRORRRRRRRRRRRRRRRRORRRRRRRRRRRRORRROORRRROOORRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRORRRRRORRORRRRRRRRORRRRRRRRRRRORRORRRRROORRRRRRRRRRRRRRRRORRRRRRROOROROORRRRRRRRRRRRRRORORRRRORRRRRRRRRRRRRORRRRRRORRRRORORRRRRRRRRORRRRRRRRRRORRRRRRRRRRORRRRRRRRRRRRORRRRRRRORORORRRORRRRRRORRRRRRRORRRRORRORRRRRRRRRORRORRRORRORRRORRRRRRRRRRRORRORRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRROORRRORORRRORRORORRRRRRRRRORRRRRRRRRRRRRRRRORRORRRRRRRORRRRRRRRRORRRRRRRRRRRRRRORRRORRRORRRRRRRRORORRRRRRRRRRRRRRRRRRRRRRRRRRRORRORRRRRRRRRRRRRRRRRORORRRRRRRRRRRRRRRRRRRORRRRRORRRRRRRORRRORRRRORRRRRORRRRRRRRORRRRROORRRRRORRRRROOOORRRROORRRRRRRRRRRRRRRRRRRROORRROORRORRRRRORRRRRORRRRORRORRRRORRORRRRRRORRRORRRORRRRRRRRRRORRRRRRRRRRORRRRRRRRRRORRRRORRRRRRRORRRRRRRRRRRRORRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRORROORRRRORRRORRRRORRORRRROOORRRRRRRRROORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRROORORRRRRRRRRRRORROOORRRRRRRROORRRRRRORRRORRRRRORRRRORRORRRORRROORRRRRRORRRRRRRRRRRRRRROOORRRRORRRORRRRRRRORRRRORRRRRORRRRRORRRRRORRRORRRRRRRRRRRRRROORRRRRRORRRRRORRRRRRRRRRRORRRRRRROORRRRRORRRRORRRRRRRORRORRRRRRRRROORORRRORRRRRRRRRRRRRROORRRRRRRORRORORRRRRRRRORRRRRRRRRRORORRRORORRORRRRRRRRRRRORRRRRRRRORRRRRORRRRRRRRRORRRRRRRRRRRRRORRORRORORRRRRORRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRRORRRRRRRRRRORRRRRRRRRRRRRRORRRRRRRRORRRRRRRRRRRORRRRORRRRRROORORRRRORRRRRRRORRRRRRRRRRRRORRORRRRRRRRRORRRRRRRRRORRRRRRRRORRRRRRORRRRORORORRROROORRRRRRRRRRRRRRRRRRRRRRRRRRROORRRORRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRRRORRRRORRRRORRRRRROORRRRRRRRRRRRRRRORRRRRRRORRRRRRRORRRROOORRORRRRRRRRRRRRORRRRRRRRRORRRORRRRRRORRRRRRRRRRRRRRRRRRRORRRRRORRRRRRRRRRRORRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRROORRRRRRROOORRRRRORRORRRRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRROORRRRRRRRRORRRRRRORRRRRRRRORRRRORRRRRORRRRRRRRRRRRORRRORORRRRORRRRRRRORRRRRORRRORRRORRRRRRRRRRRRRRROOORRRORORRRRRRRRRRRRORRRRORRRRRRRRRRRRRRROORRRORRRRRORRRRRRRRRRRRRRRRRRRROORRRRRRORRRORRRRRRRRORRRRRRORRORRORRRRRRRRRRRRRRRRRRRORRRRRRORRRRRRRRRRRRRRORRRRRORORRRRRRRRRRRRRORRRRRRRRROORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRORRRORRRRRORRRRORRRRRRRRRRRRRRRRRRORRORRRROORRRRRORRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRRRRRRORRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRROOORRORRRRRORORRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRORRRORRRRORRRORRRRRRRORRRRRRRRORRRRRRRRRRRRRRORRRRROORRRROORRRRRRROORRRRORRRRRRRRORRRRRRRORRRORRRRRRRRRRRRRRRRRRRRRRRRORRRRROROORRRRRRRRRRRRORRORRRRRRORRRROROORORRRORORRRRRRRRRRRRRRRRRRRRRRORRRRORRORRRRRRRRRROORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRRRRORRRRRORRRRRRROORRRORRROORRRRRRRRRORRRRRROORRRRRRROORRRRORORRROORORRRRORRRRRRRRRRRRRRORRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRORRRROOOORRORRRRRRRRRRRRRROORRRRRRRRRRRRRRROORRORRRRRRRRRRRRRRRRRORRRRRRRRORRRRRORRRRORRRRRRRRRRRRRRORRRORRRRRRRORORORRORRRRRRRROORRROORRRRRRRRRRRRRRORRRROOORRORRRRRRRRRRORRRRRRRRRRRRORRRRORRRORRRRRORRRRROORRRRRORRRRRRRORORORORRRORRRRRRRRORRRROORRRRRRRRRRORRRRRRRRRRRRRRRRRRRRORRRRRRRORRRRRRRRRRRRROORRRRRRRRRRORRRORRRRRRRRRRRORRORRRRRRORRRORRRRRRROORRRRRRRRRRRRRRRORRRRRRRRRRORRRRRORRRRRRRORRRRRRRRRRRRRRRRRRRRRRRORRRRRRRORRRRRRRRROORRRRRRRRORRORRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRORORRRRRRRRORRORRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRROOROORRRRRRRRRRRRRRRRRRRRRRORRORRRRRRRORRRROORRRRROORRORRORORRROORROORRRRRRRRRRORRRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRROOORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRROORRRRRRORORRRRRRRRRRRRRRRORORRORORRRRORRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRORRRRORRRORRRRRRORRRRRORRRRRORRRRORRRRRRRRRRRRRRRRRRRRORRRRRRORRORRRRRRRORRRRRORRORRRRRRRRRRRRORRRRRRRRRRRORRRRORORRRRRRRRRRRRRRRRRRRRORRRRRRRRORRRRRRRORRRRROORORRRRRRRRRRRRRRRRRRORRORRRRORRRORRRORRRRRRRRRRRRRORRRRRRRRRRORRRRORRRRRRRRRRRORRRRRRRRRRRORRRRRRRRRRORRRRRRRRRRORORRRRRORRRRRRRORRRRRRRORRORRRRRRRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRORRORRRRRRRRRRRORRRRRRRRRRRRRROORRRRRRRORRORRORRRRRRORRORRRRORRRRORRRRRRRRRRRRRRORROORORRROORRORRRORRRRORRRRRORRRRRRRRRRRRRRRORORRRRRRRRRRRRRRRRRRRRRRRORRRRRRRROORRRRRRRRRORRRRRRRRRORRRRRORRRRRRRRRRRRROORRRRROROROROROORRRRRRRRRRRORRRORRRRRRRORRRRRRRRRRRRRRRRORRRORRRRRRRRRRRRRRRRRORRRRRORRRORORRRRRRRRORRRRRRRRRRRRRRRRRRROORRROOORORRRRRRRORRRRRRRRORRRRORRRRRRRRRRRRRRRRRORRORRRRRROROORRRRRRORRRRRORORRORRORRRRRRORRRRRORRRRRRRRRRRRRRRROORRRRRORRRRRRRRRRRRROORRRRRORORORORORRRRORORRRRROOROORRORRORORRRRROORRRRRRRRRRRRRRRORRORRRORRRRRRRRRRRRORRRRRRRRRRRRRRRRRRROOORORRRRRRRRRRRRORRRRRRRRORRRRRRRRRRRRRRRORRRORRRRRRRRORRRRRORRRRRORRRRRORRORRRRRRRRRRORRRRORRROORRRORRRRRRRRRRRORRRORRRRRRRRRRRRRRORRRRORORORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRRRRROORORRRORRRRRRRRRRRRRRRRORRROOORORRRRRORRRORRRORRRRORRORRRRORRRRRORRRRRRRORRRRRRRRRROORORRRRRRRRRRRRRRRRRRRRRRRRRORRORRRRRRRRRRRRRRRRORRRROROROORRRRRORRORRRRRRORROOORRRORRORRORRRRORRRORRRRRRRRRRRRRORRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRORRORRRRORRRRRRRRORRRRRRORRRRORRRRRRRRRRRRRRRRRRRRRRORRORRROORRRRROROORORRRORRRRRRRRRORRRRROORRORRRRRRRRRRRRRRRORRRRRRRRRRRORRRRRRRRRRRRORROORRRRRRRRRRRRRRRORRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRROORRRRRRRRRRRORRRRRRORRRRORRRRRRRRRORRRRRRORRRRRORRRRRRRRRRRRRROROOORRRRORRRRRRRRRRORRRORRRRORRRRORRORRORRRRRORRRRRORRRRRRRRRORRRRRRRRRRRORRORRRRORRRORORRRRRRRRRRORRRRRRRRORRRORRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRROOORRRRORRRRRRRORRRRRRRRORRRRRRORRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORORRRRRRRORRRRRRRRRRRRRRORRRRRRORRORRRRROORRRRRORRRRRORRORORRRRRRRRORRRRRRRRRORRRRORRRRRRRORRRRRORRRRRRRORRRRRRRRRRRRRRRRRRROROORRRRORRRRRRRRRORORRRRRORRORORRRRRRRRRRRRORRRRRRRRRRRORORRORRRRRRRRRRRRRRRRRRORRRRORRRRRORRORRRRRRORRRORRRRRRRRRORROOORORRORORRRRRRRRRRRORRRRRRRRRRRRRRROOOORRRRRRRRRRRORRRRRRRORRRORRRRRORORRRRORRRRRRRRRRRRRRRRRROORRRRORRRRORRRRORRRRRRRRRRRRRRRRRRRRORRRRRRRRRRRORORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRORRRRORORRRRRRRRRROORRORRRRRRRORRRRRRRRRRRRRRRRORRRORRRRRRRRRRRRORRRORRRRRRRRRRRRRRROORRRRRORRRORRRRRRRRRRRRRORRRRRRORRRRRRRRRRRRRRRRORRRROORRRRRRRRRRRRRRRRRRROORRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORORRRRRORRRRRRRRRRRRROORRRRRRRRRRRRRORRRRORROORRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRORRRRRRRRRRORORRORRRRORRRRRRRORORRRRROOORRRRRRRRORORRRORRRORORRRRORRORRRORRRRRRRRRRRORRRRRRRORRRRRRORRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRROOORRRRORRORRRRRRRRORROORRRRRRRRRRORRRRRRORRRRRRRRRRRRRRRORORRRORORORRRRRRRORRORRRRRORRRRRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRORRORRRRRRRRRRRRRORRRRRORRRRRRRORRRRRORRRRRRRRRRRRRRRRRRRRORRRORRRRORRRRRRRRRRRRRRRRORRRRRRRRRRRRRRROORRORRRRRRRROORORRRRRRRRRROORRORRRRRRRRRORRRRRRRORRORRRRRRRRRRRRROORRRORRROOORORRRRRRRROORORRRRORRRRRRRRORRORORRRRORRRRORRRRRRRRORRRRRRRRRORRRRRRRRRORRORORORRORRRRRRRRROROORRRRRRRRORRRRRRRRRRROORRRRROORRORRRRRRRRRRRRRRRROROORRRRRRRRRRRORRORRRRORRRRRRRRRRRORRRORRRRORRRRRRORRRORRRRRRRRRORRORRROORRORRRRRRORRRRORORRRRRROORRRRRRROORRORRRRORRRRROOORORRORRRRRRRRRRRRRRRORRRORRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRORRRRRORRRRRRRRRRRRRRORRRRORORRORRRRRORRORRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRRROORORRRRRRRRORORRRRRRRORRRRRRROORROORRRRRRRRRRORRRRROROORRRRROORORRORRRRRRORRRRRRRRORRORRRRRRRORRRRRRRRRRRORRRRRRRRRRRRRORRRRRRRRRORRRRRRRROORRRRRRORRRRRRRRRORRRRRRRRRRROORORRRRRRRORRRRRRRRORORRRRORRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRORRRORRRRRRRRRORRRRRRORRRRRRRRRORORRRRRRORRRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRORRRRRRRRRORRRRORRRRRRRRRORRRRRORRRRORRRORRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRORRRRRRRRORROORRRRRORORRRRRRORRRRRORRRRRRRRRRRRRORRRRRRRRRRRRRORRRRRRRORORRRRRRORRRRORRRRRRRRORRRRROORRRRRRRRRRRORRORORRRRRRRRRRORRRRRRORRRRORROORORRRRRRORRRRRRRRRRRRRRROROOROOORRRRRORRRRRRRRRRRRORORRRRRRRRROORRRRRRRRRRROORRRRRRRRRRRRRORRORRRRRRRRORRRRRRORRRORRRRRRORRRRRRRRRRRRRRRRRRORRRRORRRRRRRRORRRRRORRRRORORRORRRRRORRRRRORRORRRRRRRRRORROOROORORRRRRRRORRRRRRRRORRRRRRRRRROORRRRRRRRRRRORRRRRRRRRORORRRRRRRRRRRRRRRRRRORRRRRRORROORRRRRRRRRRRRRRRRRRRRRORRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRROORRRRRRRRRRRRRRRRRRRRRROOORRRORRRRORORRRRRRRRRRORRRORRORRORRRRRRRRRRRRRRRRRROORRRRRRRRRRORRRRRORORROORRRRRRRRRRORRRROORORRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRORRRORRRRRRRRRRORRRRRRRRRORRRRRRRRRRRRRORRRRRRRROOORRRRROORRRRORRRORRRRRRRRRRORRORRRRRRRRRRRORRRORRRORRRRRRRRRROORRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRORORRRRRRRRORORRRRRORORRRRRRRRORRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRORRRRRRORRRRRORRORORRRRRRORRRRRRRRRRRRORORRRRRRORORRRRORRROORRRRRRRRRRRRROORRRRRRORRRRRRRRRRRORRRRRRRORORRRORRRRRRRRROORRRRRRRRORRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRORORORRRRRRRRRRRORRRRRRRRRRRRRRRRRRRRORRRRRRRRRORRRRRRRRORRRRRRRRRRORRRRRRRRRRROORORORRORRRRRRORRORRRRRRRRRRRRRRRRRORRRRRRRRRORRRORRRRRRROORRRRRORRRRORRRRRRRORRORROORRRRRRRRRRRRRRRRRORRRORRRRRRRRRRRRRRORRRRRRRRRRORRRRRRRRRRRRORRRRRRRRRROROOORRRRRRRRRRRRRRRRORORRRORRRRORRORRRRORRRRORRRRRRRRRRORRRORRORRRRRRRRRRRRRRROOORRRRRORRRRORRRRRORRRORRRRRRRRRRRRORRRRORORRRORRRRRORORRRRRRRRRRORRRRRROROORORRRRRRRORRRRRRRRRRRRRRRRORRORRRRRRRRRRRRRRROORRORORRRRRRROOORRRORRRRROORRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRRRRRRORRRRORRRRRRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRORRRORRRRRRRRRRRRRRROROORRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRORRRORRRRRORRRRRRRRRORRRRRRRRRRRRORRORRRRRRRRRRRRRRROORRRRRORRRRRRRRRORRRRRRORRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRORRRRRORRRRRRRROORRRORRRRRROORRRRRRORRRRRRRRRRORRRRRRRRRRRRRRRORRRORRRRRRRRORRORRRRROORRRRRORRRRRRRRRRRRRRRRRRRRORRRROORRRRRRORROORRRRRROORRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRRRORRRORRORRORRRRRRRORORRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRROORRRRRRRRRORORRRRRRRRRRRORRRRRRRRRRRRRRRRRRRORORRRRRROOORRRRRRORRRRRRORRRRORRRRORRRRRRORRRRRORRRROOORRRRRRRRORRRRRRRRORRRRRRRRRRRRRRRORRRRRRRORRRRRRORORRORRRRRRRRRRRRRRRRRORORRRRRRRRRRORRRRORRRRRRRRRRORRRORRRRRRRRRORRRRRRORRRRRRRRRRRRORRRRRRRRRRRROORRRRRRRORRRRRRRRRRRORRRRORRRORORRRRRRRRRRRRORORRORRRRRRORORRRRRRRRRRRROOORRRRRRROORRRRRRRRRRRORRRORORRRRRRRRRRRRRRRRRRRORRRRRRORRRRRRORRRRRRRRRRRRRRRRRRRRRRRRORORRRROORRRRRRRRRRORRRORORRRRRRRRRRRRORRRORRRRRORRRRRORRRRRRRRRRORRRRORORRRRRRORRRRRRRRRRRRRRRRRORORRRRORRRORRRRRRRRRRORRRRRRRROORRRRRRRRRRRRROORRRRRRRRRRRRRORRRRRRRORRRRRRRRRRRRRRRRORRRRRRRRRRORRRRRRRRRORRRRRRRRRRRRRRRRRRRORRORROOORRRRRORRRRRRORRRRORRRRRRRRRRRORRRRRRRRRRRRRRORRRORRRRRORRORRORRRRORRRRRRRRRRROORRROOORORRRRRORRRRRRORRRRRORORRRRORRORRRORRRORRRRORRRRORRRORRRRRRROOORRRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRORRRRRRRORRRRRRRRRRORORRRRRRRRRRRORORRORRRRRRRRRRRRRROORRRROORORRRRRRRORRRRRRRRRRRRRRRRORRROORRORRRRRRRRRRRRRRRORRRRRORRROORRRRRORRRRRRROORRRRRRRRRRRRRRROORRRRRRORRRORRORRRRRORRRRRRRRORRRRRORRRORRORRRRRRORRRRRRRRRORRRRRRORRROORRRORRRROORRRRRORRRRRORORRORRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRORRRORRRRRORRRRRRRRRORRRRORROROOORRRRRRORRRRORRRORRORRORRRRRORORRRRRRRRRRROORRRRRRRRRRRRRORORORRRRORRRORORORRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRROORRRRRRRRRRRROORRRRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRORORORRRRRRRORRRRORRRORORRRRRRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRORRRRRRRRRRRORORRRORORRRRRRRRRORRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRORRORRRRRRRRRRRRRRRORRRRRRRRRORRRORRRRRRROORROORRRRRRRRRRROOOORRORRRRRRRROORORORRRRRRRRRRRRORORRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRORRRROORRROORORRRRRRRRORROORRRRORRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRORRRRRORRORRRRORRRRRRRRRRRRRORRRRRRORRRRRRRRRRRRRRORORRRRRRORRRORRRRRRRRRRORRRRRRRRRRORRRRRRORRRRRORRRORRORRRRRRORRRRRORORRRRRRORRRORRRRRRRRRRRRRRRRROROORRORRORRORRRRROORRRRRRRRRROROORRRRRRRRRORRRRRRRRORRRRRRORRRRORRRRRRRORRROORRROROROROORORRRRRRRRORRRROROROROORRORRRORRRROORRRORRRORRRRRRORRORRRRRRRRRRRRORRRRRRRORRRRRRRORRRRRORRRROORORRRORRRRRRORRRRORRRRRRRRRRORORRRRRRRORRRRRRORROORRRRORRRRROORRRORORORRRRRRRRRRRORRRRRRRRRRRROOROORORRRRRRRRORRRORRRRRRRORRRRRRRRRRRORRORRRRRRRRRRORRRRRRRRRRRRRRRORRRRRRRRRRORRRORORRRRROORRRRRROORRRRRRRRRRRRRRRRRRRRRRORRRRRRORRRRRRRRRRRRRRRRRRORRRRRRRRROORRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRORROORRRORORRRRRRRRRORORRORRRRRORRORRRORORRRRRRRRRRRORRRRRROROORRRRRRRRRRRRRRRRRORRRRRRRRRRRRROOORRRORRORRRRRRRRRORRRRRRRRRRRRRRORRRRRRRRRRORRRRRRRRRRRRRRORRRRRRRORRROORROORRORORRRRRRORRRRRRRORRRRRRRRRRRRRRRRORRRORRRRRORORRRRRRRRRRRRRRRRRRRORROORRRRRORRRRRRRRRRRRRRRRROORORRRORRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRRORRRRRRRRRRORRRRRROORRRRRRRRRORRRRRORORRRRORORRRRRRORRRRORRRRRRORRRRRRRORRRROORRRRRRRRORRRRORRRRRORORRRRRRRRRRRRRRRRRRRRRRRRROROORRRRROORRORRORRRRRORRRORRRRRRROORRRRRORRRRRRRRORRRROORRRORRRRRRORRRRRRRRRRORRRROORRRRRRRRRRRRRRRRRRRRRRRRRRORRRRORRRRRRRRRRRRRRRRRRRRRRRORRORRRROORRRRRRRRRRRORRRROORRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRORRORRORRRRRRRRORRRRRRRRRRRRRRRROORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRROOOROORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRRRRORRRRRRRRRORRRRRRORRRRORRRRORRROOORRRRORRORRRORRRRORRRRRRRRORRRRRRRRRRRRRRRORRRORRRORRORRRRRRROORRRRRORRRRORRRRRRORRRRRRRRRRRORRRRRRRRRRRRRRRRRORORRRRRRRRRRRRRRRRRRRRRORRRORRRORORRRRRRRRRRRORRRRRRRRROROORORRRRRRRORRORRRRRRRORRROORORRRRRRRRRRRRRRRRRRRRRRRORRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRRRORORRRRRRRRRRRRRRRRRRORRRRRRRRRRRRORRRRORRRRRRRRRRRORRORRRRRRRRRRRRORRRORRRRRRRRRORRRRRRRORRRRRRRRRRRROORRRORRRRRRRORRRRRORRORRRRRRRRRROORRRRRORRRRRRORRRRRRRRRRORRRRORRRRORRROORRORRRRRORROORRORRRRRRRRRROORORRRRORRRRORRRRORRORRRRROROORORRRRRRRORRRORRRRRRRRRORRRRRRRRRRRRRORRRROROROROORROORRRRRRRRRRRORRRRRRRORRRORRORRORORORRROORRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRORRRRRRRRRRRRRRRRRORRRRRRORORRRRRRRRRRRRRRRRRRRRRRRRRORRRRRORRRORRRROORRROORORRRRRRRRRRRRRRRRRRRRRRRROROORRRRRRRRRRORRRRRRRRRRRORRRRRRRRRRRRRRRRRRROORRRRRRRRRRRRORRRRRORRRRRRRRRRRRRRRORRRRRORRORRRRRRRRRRRRRROROORRRRRORRRRRRRORRRRRRRRROROORRORRRRRRRORRRRORRRRRRRRRRORRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRORRRORRRRRRRRRRRRRRRRRRRRRRRORRRRRRRRRRORRRORRRRRRRRRORRORRORRROORRRORROORORROORRRRRRRRRRRORRRRRRRRRROROORRORRRRRORRRRRRRRRRRRROORRRRRRRRORRRRRRRRROORRRRORRRRRRRRORORRRRORORRRRRORRRRRRRRRORRRRRRRRORRRRRRRRRORRRRRRORRRRRRROROORRRRRRRORRRRRRRRORRORRRROOOORRRRRRRORRRRRRRRORRORORRRRRRRRRRRRRRRRORORRORRRRRRRORORRRORRRRRORRRRRRRRORRRRRRRRRRRRRRORRRRRRRRORRRRORRRRRRORRRORRRRRRRRRRRORRRRRRRRRRRRRORRRROORRRRRRRRRORRRRRRRRRRRORRRRRORRORRORRRRRRRRRRORRRRRRRRRRRRRRRRORRORRRRRRRRORRRRORRRRRRRRRRRRRRORRRRRRRRRRRRRRORORRRRRRORRRRRRRRRRRRRRRRORRRRRRRRRROORORORORRRRORORRRRORRRORRRORORORRRRRRRROORORRRRRRRRRRRROROORRRRRRRRORRRRRRRRRRRRRRRRRRRRRROORORRRRRRRRRRORORRRRRRRRRRRRRRRRRRRRRORRRORRRRORROORRRRRRRRRORRRRORRORORRRRRRRRRRRRRRORRRORRORRRRRRRRORRRRORRRORRRRRRRRORRRRRRRRRRRRRRRRRRRRORRRRRORRRRRORRRRRRRORRRRRRRRRRORORRRRORRRORRRRRRRROORRRRRORRRRRRORRRRRRRRRRRRRRRORRRRRRRRRRRRRORRRRRRORRRRRRRRRRORRRRRRORRORRORRRRRRRRRRRRRRRRRRRRRRRORRRRRORRRRORRORRRRRRRRRORROORRORRRRRRRRRORRRRRRRORRRRRRRRORRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRROORRRORRRRRORRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRORRRRRRRRORRRRRRRRRRRRORRRRORRRRRRRRRRORRRRRRRRRRORRRRRRRRRRRORRRRRRORRRRRRRRRRRRRORRRRROORRRORRRRRRROOORRRROORRRORORRRRRORRRRORRORORRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRORRRRRORRRRRRRRRRRRRORORRRRROOOORRRRRRRRRRRRRRRRRRRRORRRRRRRRORRRRRRROORRRROORRRRRRRRRRORRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRORORRRRRRRRORRRRRRRRRRRRRRRRRORRORRRORRRRRRRRRORORRRRRRRRRRRRRRRORRRRRRRORORRRROOORORORRRORRORRRORRRRORRRRRRRRRRRRRRRRRORRRRRORRRORRRRRRRRRRROORRROOROROOORRRRRRRRRRRRRRRRRRRRRROORRORRRRRORRRRRRRRRRRRRRRRRRRRORRRRRRRRORRRRRRRRRRRRORRRRORRRRORRRORRRRRRORORRRRRRRRRRRORRRRRRRRRRRRRORRRRRRRRORORRRRRRRRRRRORRRRRRRORRRRRRRRRRRRRRRORRRRRRRORRORRRRRRORRRRORRRRRRRRRRRORRRRORRRRORRRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRORRRRRRRRRRRRRROORRRORRRRRRRRORORRRORRRRORRRRRRRRRRRRRRRRRORRORRRRRRRRORRRRRRRORRROORRRRRRRORRROORRRRRORRROORRRRORORRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRRRRORRRRRRRRORRRRRRRRRRRRRORRRRRRRRRRRRRRRORRRRRORORROORRRORORRRRRRRRRRRORRRRRRRRRROORRRRRRRRRRRRRORORORORRRRRRORORRRRRRORRRRRRRRRRRRRRRRRRRRORRRRRRRRRRORRRORRRRRRRRRRRRRRRORRRRRRRRRRRRRORRRRRRRRRRRRRRORRRRRORRORRRRRRRRRRRRORRRRRRRRRRRROORRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRORRRRRORRRRORRORORRRRORRRRRRRRRRRRORRRORRRRRRRORORRRRRRRRRRRRRRRRRORRRRRORRRRRRRRRRRRRRRRORRRRRRRRRRRRRORRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRRORRRRRRRRRRROOORRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRORRRRRRRRROORRRRRRORRRRRRRORRRRRRRRROORRRRRRRORRRRRRRRRRRRORRRRRRRRRRRRRRRRRRORORRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORORRRROORRRRRRRRRRRRORRRRRRRRRORRRROORRRRRROORRRRRRRRRROORORRORRRRRRORRRRRRRORRRORRRRRRRORRRORRORRRRRRRRRRRRRRRRRRRORORRRRRRRRRORRRRRRRORRRRRRRRORRRRRRROORRRRRRRORRRRRRRRRRRRRRRRORORRRRRRRORRRRRRORRRROROROORRRRRRRRRRORRRRORRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRROORRRORRRRRRRRRRRRRRRORRRORRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRORORRRRRRRRRROORRRRRRRRRRRRRRRRRORRRRORRRROORRRRRRRRRRRRRRRRRRRRRRORRRRRRRRRORRRORORRRORORRRORORRORRRRRRORRORRRRRRRRRRROORRRRRRORRRRROORRRORRRROORRORRORRRRORRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRROORRRRROORORRRRRRRRRRORRRRORRRRORRRRRORRRRRRRRRRROOROORROORRRRRRRRRORRRRRRRRORRORRRRRRRRRRRRRRRRRORRRRRRRRRRRRRORRRRORRORRORORRRRRRRRRRRRRRRRORRRRRRORORORRORRRRORORRRORRRRRRRRRRRRRRRRROOROORRRRRRRRRRRROORRRRRRORRRRORRRORORRRRRRRRRRRRRRRRORRRRRORRORRRRRRRRRRRRRORRRORRRRORRRRRRRRRORRRRORRRRRRRRRRRRORRRRRRRRRRRRRRRORORORRRORRRRORRORRRRRRORRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRROORRRRRRORRRRRRRRRORRRRRRRRORORORRORRRRORRRRRRRRRORRRRRRORRRRRRRRRRRRRRRRRRORRRRRRRRROORRRRRORRRROORRRORRRRRRRRRRRRRRRROORRRRRRRRRRRRRRRRRORORRRORRRRORRRRRRRRRRRRRRRRRRRRRRRORRRRRRRRORRRRRRRRRRRRRRRRORRRRRRRRRRRORRRRORRROORRORORRRORRORRRRRRORRROORORRORORRORRORRRRRRRRRRRORROORRRRRRRORRRORORRRRRRRRRORROROORRRRRRRORRRRRRRRRRROORRRORRORRRORRRRORROORRRORRRRRRRORRRRRRRRRRRRRRRRRRRORRRRROROORRRRRRRRRRRRRRRRRRRRRRRORRORRRRRRRRRRRRRRRRRORORRRRRRRORRORRRORRRORRRRORRRRRRORRRRRRRRORRRRRRRRORRRRORRRRRRRRRRRRRRRRRRRORRRRRROORORORRRRRRORRRRRRORRRRRRORRRRRRRRRORORRRORRRRRRRRRRRRRRRORRRRRRRROORRRORRRRRRRRRRRRRORRORRRRRRRRRRRRRRRRRORRRRRRRRRRRORRRRRRRRRRORRRORRRRRRRRRORRRRRRRRRRRRRORRORRRRRRRORRRORORRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRORORRRRRORRRRRRRRRORRRRRRRRROROORORRRRRRRORRRRRORRRRRRRRRROROORRRRRRRRRRRRRRORORRRRRRROORRRRRRORORRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRRORRRRRRRRRORRORRRRRRRRRRRORRRRRRRRRRRRRORRORRRRRORRRRRRRRRRRRRRRRORRRRRRORRRRRRRORRRRRRRRORRRRRRRRRRRRRRRRRRROORORRRORORRRRRORRRRRORRRRRRRRRRRRRRRORORRRRRRRRRRORRRRRRRORRRRRRORRRRRRRORRORORORRRRRRRRRRRRRRRRRRORRRORORRRRRRRORRRRRRRRRRRORRRRRRRRRORRORRRRORRRRRORRRRRRRRRORRRRRRRRRORRRRRRRRRRRRORRROOORORRRRRRRRRRRORRRRRRRRRRRRRORRRRRRRRRRRRORRRROOORRRRRRROORORRRRRRRRORRRRRRRRRRRORORORRORORORRRRORRRRRRRRROORRRRORRORRRORRRRRRORRRRRRRORRORRRRRRRRRRORRRRORRRRRRRRORRORRRRRRORRORRRRRRRROOORRRORRRRRRORRRORRRRRRORRRRRRRRRRROOORRRRRRRRRRRRRRRRRORRRORORRRORRROORRRORRRRRORRRROROROORRRRRRRRRRRRRRRRRORRRRRRRRRRRRRROORRORRRRRRRRRRRORRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRORRRRORRRORRRRRRORRRRRRRRRRRRRRRORRRRRRRRRRRRORRRRRRRRORRRRRRRRRORRRRRRRRRRRRORRRRRRRRRRORRRORRRRRRRRRRRRRRRRRRRRRORRRRRRRRRORRRRRRRRRORORRRRRRRORRRORORRRRRROORRRORRRRRORRRORRRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRORRRROORRRRRORRRORRRRRRRORRRRORRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRORRRORORRRRROORRRRROORORRRRRRRRRORROORRRRRORRRRRRRORRORRRRORRRRRRRRRRRROORRRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRORRRRRRRRRRRRRRROORRORRRRRRRRRORRRRRRRRRRRRRRRRRORRORORRRRRRRRRRRRRORROORRRRRRRRRRORRRRRRRORRRRRRRRRRRRRRRRRRRRROORORRRORRRRRROOORRRRRRRORORRRRRRRRRRRRRRRRRRRRRRRRRRRRORORRRRRORRRRRRRRRRRRRRRRRORRRRRRORRRORRRORRRORRRRRORORRRRRRRRRORRRRORRRRRRRRRRORRRRRRRRRRRRRRRRRRORRRRRORRRRRRRRRRRRRRORRRRRRRORRORRRRRRRRRRRRRRORRRRRRRORRRRRORRRRROORRRRRORRRRRRORRORRRRRORRORRRRRRRRRRRROORRRRRRRRRORRRRORRRRRRRRORRRORRRROOORRRRORORRRRRRRRRRRRRRRRRRRRRRORRRRRRRRRORORORRRORORRRRRRRRRRRRORRRRRRRORRRRRORRRRRRRRRRRRRRRORRRRRRROORRRRRRRRRRRRORRRRRRRRRRRRRRRRORRRRRRORRRORRRRRRRRROORRRRRRRRRORRRRRRRORRRRRRRRRRRRRRORRRORRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRRRRRRORRRRRORORRRRRRRRRRRRRORRRRRRRRRRRRRRRRORRRRRORRRRRRRRRRRRRORRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRROOORRRRRRRORRRRRRRRRRORRRORRRRRRRRRORRRRRRRRRRRRRRRORRRRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRRORRRRRRRRRRRORROORRRRRORRRRRRRRRRRRRORRRRRRRORRRORRRRRORRRRRRRRRRRRRRRRRRRRRRRRROORROORRRRRROORRRROORRRRRRRRORRRORRRORRORRRORRRRRRRRRRRRORRRRRRORORRRROORRORRRRRRRRRRRRRRRRRRRRRRRRRRRRORORRORORRRRRRRRRORRORRRRRRROORORRRORRRRRRRRORRRRRRORORRRROORRRRRRRROORRRORRRRRRRRRRRRRRRROORRRRRRRRRRORRRRRRRORRORORRRRRRRRRRRORRRRRROORRRRRRORRRRRORORRRRRRROORORRORRRORRRRRRRRRRRRRRRRRRRRRRORRRROORORRRRRRRRRRRRRRROORORRORRRRRRRRRRRRRRRRRRRRORRRORRRRRRRRRRRRRRORRRRROOORRRRRRRRRORRROORRRORRRRRRRORRRRORRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRRRRORRRRRRORRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRORRRORRRRORRRRRRORRRRRRRRRRROROORRRRRRORRRRRRRRRRRORRRRRRRRRORRRRORRRRORRRRRRORRRRRRORRRRRRRRRRRRRRRRRRRRRRRORRORRRRRRRRRORRRORRRRRRRRRRRRRRRRRRRRROORRRRRRRRRRRRROORORRRRRRRRRORRRRRRRRRRRRRRRORRORRRRRRRRRORRRRRRORROOORRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRORRRRRRROORRRRORRORRRORRRRRRRRRRORRRORRORRRRRRRRRRRRRRRRRRRRORRRORRRRRRRRRRORRRRRRRRRRRRRRRROROORRRRRRRRRORRRORRRRORRRRRRRRRRRRRORORRRRRROROORRRRRRRRORROROORRRRRRRRRORRORRORORORRRRRRRORROORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRRORRROORRORRRRRRRORRRRRRORRRRRRROORRRRRRRORRRORRRRORORRRRRORORRORRRRRRRORRRRRRRORRRRRRORRRORRRRRRRRRRRRRORRRRORRORORRORRRRRRRRRRRRORRRRRRORRRRRRRRORRRRRRRRRRRRRRRRRRRORORRRRRRRRORRRRRROORRRRRRRRRORRRRROORORRRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRORRRRRRRROROORRROORRORRRORRRRRROROORRRRRRRRRRRRRRRRRRRRRRORRRRRRRRROORRRRRRORORRORRRRROORRRORRRRRRRRORRRRRORRRRRORORRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRROORRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRORRRRORRRORRRRRORRRRRRRRRRRRRRRRRORRORRRRRRRRRRRRRRRRRRRRORRRRRRRRRRORRRORRRRRRRRRRRRRRORRRRRRRRRRRRRRORRRRRRRRRRRRORRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRRRRORRRRRRRRORRRRORRRORRRRRRRRRRRRRRRRRRRRRRRRRRRORORRRRROORRRRRORRORRRRRRRORRRRRRRRRORRRRRRRRRRORRRRRORRRORRRRRORRRRRRRORRRORORRRRRRRRRRRRORRRORRRRRRRRRRRRORRRRRRRRRRORRRRRORRRRRRRRRRRRRORRRRRRRRRRRRRROORRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRRORRRRRRRRRRRRRRORORRORRRRRRORRRRRRRRRRRRORRORRORRRRORRRRRRRRRRRORRROORRORORRRRRRRRRRRRRRRORRRRRRORRRRRRRRRRRRORRRRRORRRRRRRRORRRRORRRRRRRRRRRRRRRRRRRRRRRRRRORRRRORRRORRRRRRRRORRRROORRRRRRRRRRRRRORRRRRRRRORORORRORRRRRRRRRRRRORORRRRRRRRRRORRROOROORRRRRRORORRRRRRRRRRRRRRORORRORRRRRRRRRRRRRORRRRRORRRRRRRRRRORRRRRRRRRRRRRRRRORROORRRRRRRRORRRRRRRRRRRORORRRRRRORRRRRORRRRRRRROORRRORRRRRRRRRRRRRRRRRRRRRRRORRORRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRRROORRRRRRRRORRRRRRRRORRRRRRORRRRRRRRRRRRRRRRORRRRRRRRRRRRRRORORRRRRRRRRRRRORRRRRORRORRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRORORRRRRRRRRRRRRRRROORRRRRRRRRRRRORRRRRRORRRRRRRRORORRRRRRRRORRRORORRRRRRRRRROROORORRRRRRRRRORRRRRRRRRRRORORRRORRORRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRORRORRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRORRRORRRRORRRRRRRRRRRRRRRRORRRRORRRORRRRRRRRRRRRRRRRORRRRRRRORROORRRORRORORRORRROROORRRRRRRRORRRRORROORRORRRRRORRRRRRRORORRRRORRRORROORRRRRORRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRORRRORORRRRORROORRRRRRORRRRRORRORRRORRRRRRRRRRRRRRRRRRRRRRORRRORORROORRRRRRRORRRRRRRRORRRRRRRRRRRRRRRRRORORRORRRROORRRORRRRRRRRRORRRROORRRRRRRRRRRROOORRRRORRRRRRRRROORRRRRRRRRRRRRRRRRRRORRRROORROORRRRRRRRRRRRORRRORRRRRRORRRRRRRORRRRRRORRRRRORRRRRRRRRRRRRRRRRRRRRRRORRRRRRRRRORRRRORRRRRRRORRRRRRRRRROORRRRORRRRRRRRRORRRRRRRRRRRRRRRRRORORRRRORRRRRRORRRRRRRRRRRRRORRRRORRRRRRRRRRRRRRRRRRRORORRRRRRORORRRRRRRRRRRRRRRRRRORRORRRRRRRRRRRRRRORORRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRRRRORRRORRRRRRRRORRRRRRRRRORORRRRRRRORRRRRRROORRRRRRRRRRRRRRRORRRORRRRRORORRORRORRORRRRRRRRRRRRRRORROOORORRRRRRRRRRRRRRRRORRRRORRRRRRRRRRRRRRRRORRRRRRRRRRORRRORRRRRRRORORRRRRRRRRRRRORRRRRRRRRRORRRORRORRORRRRRRRORRRORRRRRRRRORRRRRRRRRRORRRRRRRRRRRORRRRRRRORRRRORRRRRRRRRRRRRRRRRRRRRORRRRRRRRRRRORORRRORRRRRRRRRRRRORRRRRRRRRRORRRRRRRRRRRORRRORRORRRRRRRORRRROROORRRRRRRRRRRRRORRRRRRRORRRORRRRRRRORRRRRRRRRRRRRRRRRORRORRRRRRRRRRRRRORRRRRRRRORORRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRRRROROOORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRRRRRORRRRRRRRORRRRRRRRRRRROORRRORORRORORRRRRRORRRRRRRRRRRRRORROORRRRRRRRROORRRRRRRRORRRRRRRRORRRRRRRRRRRORRRRRRRRRRRORRRORRRRRORRRRRRRRRRRORRRORRRRRRRRRRRROORRRRRRRRRRRORORRRRRORRRORROROORRORRRRRRRRRRRRRORRRRRRRRRORRRRORRRORRRRRRRORRRORRRRRRRRRRRORRRRRRRRRRRRRRROORROORRRRRRROORRRRORRRRRRRRRRORRRRRRRRRRORRRRROORRRORRRRRRROORRRRRRORRRORRRRRRRRRRRRRRRRRROORRRRRRRRRRRRRRRRRROROORRRRRRRRRRRORORRRRRRRRRRRRRRORORRRRRRORRRRRRRRRORRRRRRRORRRRRRRRRRRRRRRRRROOROOORRRRRORRRRRRRORRRRORRRRRRRRRRRRORRRRRRRRRRRRRRRORRRRROORRRORRORORRROROOORRRRORRRRRORRRRRROORRRRRRORRORORRRRRORRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRORORRRRRRRRRRRRRRRRRRRRRORRORRRORRRRRRRRRRROORRRRRRRROORRRRRRRRRRRROORORRROORORRORRRRRRRRRRRRRROORORRRORRRRRROORORRRRRRRRRRRORRRRRRORRRORRRRRORRRRRRRRRRRRRRRRORRRRORRRROOORORRRRRRRRRRRRRRRRRRRORRRROORRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRORRRRRRRRRRRORRRRRRRROORORRRRRRRRRRRRRRRORRRRRORRRRRRRRRRRRORRRRORORRRRROORRRRRORRRRRRORRORORRRRRRRRRORRRRRRORRORRRRRRRRRORRRRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRROORRRRRRRORRRRRORRRRRRRROORRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRORRROORRRRRRRRRRRRORORRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRORRRRRRRRRRRRRRRORRRRRRRRORRRRRRORRRRRRRRRORORRRRRORRRRRORRRORRORRRRORRRORRRRRRRRORORRRRRRRRRRRRRRORORRRRRRORRROORORRRRORRRRRORRORRRORRRRRRRRRRORRRRRRRRRRRRROORRRRRRRRRRORRRRORORRRRRRRRRRRRRRRRRORRRRRRRRRRRRRORRRRRRRRORRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRROORRORORRROORRRORRRRRRRRRRORRRORRRRRRRRRRRRRRRRRRRRORRRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRORRRRRRRRROORRRRRRRRRORRRRORRRRRRRRORRRROROORRRORRRRRRRRRORRRRRORROORRRORORRRRRRRRORRORRRRRRRRRRRRRRRRRRRRRRRORORRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRORORRRRRRRROOORRRRRRRRRRRORRRRRORRRRRRRRORRRRRRRRORRORRORRRRRRORRRRRRRRRRRRRRRRRROORRRRRORRRORRORORORRRRRROORRRORRRRRRRRRRRRRRRRRORRRRRRRRRORRORRRRRRRRORRRORRRRRRRRRRROOORORRRRRRRRRORRRRRRRRRORRRRORRRRORRRRRRRRORRRRRRRORRRRRRRRRRRRRRRRROORORRRRRRORRRRRRRRRORRORRORRRRRRRRRRRRRRRRRRRRRORRRRRRRRRORORRRRORRRRRRRRRRRRRRORRORRRRRRRRRRRRRRRRRROORRRRRRRRRRRRRRRRORRRRRRRRRORROORRRRRORRRRRRROOORRRRRRRRRRRRRRRORRRORORRRRORRRRRRRORORORRRORRRRORROORORORORRRORRRROORORORRORRRRORRRRRRRRRRRRRORRORORRRRRRRROORRRORORRRRRRRRRRRORROORRRRROOORRRORRRRRROOORRRRROROORRRRRRRRRRORRRRRRRORRORRORRORRRRRRROORRORRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRORRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRRRRRRORRRRRRRRRRORRRRRRORORRORRRRRRORORORORRRRRRRRRRRORRRRRRRRRRRRRRORORORRRRRRRRRRRRRRRRRRRRORORRORRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRRRRRORRRRRRRRRRORRRRRRRRRRORRRRRRRRRRRRORORORRRRORRRRRRORRRRRORRRROORRRRRRRROORRRRRRRRRRORRRRRRRRRRRORORRRRRRRRRORORRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRROORRRRRRRRRRRRORRROORRRORRORRRRRRRORORRRRRRRRRRRRRORORRRORRRRRROORRRRRRRRORRRRRRRRRORRRORRRRRRRORRRRRRRRRRRORRRRRRRRRRRORRRRRORRRRRRRRRRRRRRRRRRORORRRRRRORRRRRRORRRRRRRRRRRRORRRRRRRRRORRRRORRORORRRRRRRRRRRRRRRRRRRRRRRRORRRRRROORORRRRRRRRRRORRRRRRRRRRRRORRORRRRRRRORRRRRRRRORRRRRRRRRROORORRRRRRRRRRRRORRRRRORRRRRORRRRRRRRRORRRRRRRRRRRORRRRRORRRRRRORRRORRRRORRRRRRRRRRRRRRRRRRRRRROORRRRRRORRRRRRRRRRRRRRORORRRRRRRORRRRRRROORRRRORORRRORRRRRRORRORORRRRORRORRRORRRRRRRORRRRROROOROORRRRRRRORRRRORRROORRRROORRORORRRRRORRRRRRORRRRRRRRRRRRRRRRRRORORRRRRRORRORRRRRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRORORRRRRRRRORRRRRRRRRRRRRROROORORRRRRRRRRRRRRRRRRRRRRRRRRRRRRROROORRORRRRRORRORRRRRRORORRORORRRRRRRRRRORRRRRRRRRRRRORRORRROORRORRRORRRORRRORRORRRRRRRRRORORRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRORRRRRRRORRRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRRORRRROROORORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORROROORRRRRRRORRRRRRRRRRORRRRRORRRRRRRRRRRORRRRRORRRRORRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRORRRRORORRRRRRRRRRRRRRORRRRORRRRRRRRRRRRRRORROORRRRORORRRRRRRRRORRRRRORRRORORRRORRRRRRRRRRRRORRORRRRRRRRRRRRORRRORRRRRRRRRORRRRRRRRRRRRRRORRRRROORRRRRRRRRORRRRRRRRRORRROROORRORRRRRRRRRRRRORORRRRORRROOORRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRROORRRRRORROORRRRRRORRRRRROORRRRRRRRORRRRRRRRRRRRRRRRRORRRRRORORRRRRORRRRRRROOORORRRORORRRRRRRRRRORRRRRRRRRRORRRRRRRRRRORRRRROOOORRORORRORRRRRRRORRORORRRRRRRROOOROORRROORRRRORRRRRORRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRRRORRRRROORRRRRRRRRRRRORRRORRROORRRRRRRRRRRRRRRORRRRRRROOORRORRRRRRRRRRRRRRRORRRORRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRORRRRRRORRRRRRRRORRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRROORRRRRRROORRRRORRRORRORRRRRRRRRRRRROROOORRRRRRORRRRRRRORRRORRORRRRRRORRRRRRRRRRRRRRRRORRRRORRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORORRRORRRRRRRRRORRRRRRRRRRORORRRRRRRRORRRRRRRRRRRRRRRRORRRRRORRORRRORRRRRROORORRRRRRRRRORRRRRRRRRRRRRRRRRRRORRRRRORRRRRRRRRRRRRRRRRRORRRRORRRRRRRRRRRRRORRRRORRRRRORRRRRRRRRRORRRRRRRRRORRRRRRRORORRRRRRRRRRRORRORRRRRRRRRORRRRORRRORORRRRORROORRRRRRRRRORRRRRRROORRRRRRRRRRRRRORRRRRRRRRROORRRRRRRRRRRRRRRRRRRRRRRORRRRRRRORRRRRRRRRRRRRORRRRRRRRRRRRORRRRRRRRRRRRORRRRRRRRRRRRORORRRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRORORRORRRRORRRRRRRORRRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRORRRRRRORRRRRRRRRRRORRRRRRRRRRRRRRORRRRRORORROORORRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRRORRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRORRRRRRRRORRRRRORORRRRRRRORRRORRRRRRRRORORRRRRRRRRRRRRRRRRRRRRRRRRORRORRRROORRRRORRRRORRRRRRRRRRRRRRRRORRRRRRRRRRRRORRRRRRRRRRRRRRRRRRORRORRORRRRRORRRRRROORRRRRRRRRRRRRORRRRRRRRRRORRRRORRRRRRROROORRRRROROROROROOOORRRRRROORRORRRRRRRRRRORRRRRORRRRRRRORRORORRRRRRRRRRRRRRRRRRRRRRRRORRRRRRORRRRORRRRORRRRRRRRRRRRRRRORRRRRRORRORRORRRRRRRRRRRRRRRRRRORRRORRORRRRRRRRRRRRRRRRRRRRRRRRROORRRRORRRRRRORRRRRRRRRRRRRRRRRRRRRORORRRRRRRRRRRRRORRRRRRRRORRRRRRRRRORRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRROORRRRRRORRRORRRRRRORRRRRRRRRRRRRRRORRRRRRRRRRRRORRRRRORRRRRRRROORRRROOORRRRORORRROROORRORRRRRRRRRRORRRRRRRRRRRROORRRRRRRRRRORRRORRRRRRRRRRROROORRRRRRRRRRRRRROORRRORRRRRRRRRRRRRRRRRRRRRRRORRRRRRRRORRRRRRRRORRRRRRRRRRORRRROORRRRRRORORRRORRRRRRRRRRRRRORROORORRRRRRRORRRRRORRRRRORRRRRRRRRRRRRRORRRRRORRRRRRORROORRRRRORRRORRRRORRRORRRRRRRRRRRROORRRRRRRRRRRORRORRRRORRRRORORRORRRRRRORORRRRRRRRRRRROOORRRRRRRRORRORRRRRORRRRRRRRORRRRRRRRRRRRORRRRRRRORRRRRROORORRRRRRRRRRORORRRRORRRRROORROORRRRRRRRRRRRRRRRRRRRRORRRRRRRORRRRRORRRRRRRORRORORRRRORORRRRRRRRRRRRRRRRRRRRRRRRRRRORRORORRRRRRORRRORRRROORRRROOORRRRRRRRRRRRRRRRRRRRRORRRRRRRRRORORRRRORRRORRRRRRRRRROORRRRRRRRRRRRRRRRROORRRRRROORRRORRRRRRRORRRORRRRROORRRORRRRORRORRRRRORORRRORORRRRRRRRRRORRRORRORRORRRRRRRRRRRRRRRRORRRRROORRRRRRRRORRRRRRRRORRRORRROORRRRRRRORRRRRRRRORRRRRRRRRRRRRRRROORRRRRRRRRRORRRRRRRRRRRRRRRRROOROORRRRRRRRRRRRRRRRRRRRRRORRRORRORRRRRROORRRRRORRRRRRORRORRRRRRRORRORRORRRORRRRORORRRRRRRRORRRRRRRRRRRRORRRRRRRRRRRRRORRRRRRRRRRRRRORRORRORRRRRORROORRORRRRRRRRRRRRROORRRRRRRORRRRRRRRRRRRRRRROROORORRRRORORRRRRRRRRRRRRRRRRRRRRRORORRRRRRRRRRRRRRRRRRRRORRRRORRRRRORRRRRRRRRROOORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRRRROROROOORRROROORRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRORRRRRRROORRRRRRRRRRRRRRRRORRRRRRRRRRORORRRRRRRRRRRRRRRRRORRRRRORRRRORRRORRRRRRRRORRRRRRRRRRRRRRROORRRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRORRRRRRRORRRORRORORRRRRRRORRRRRRRRRRRRRORORRRRRORRRRRRRRRRROROORRRRRRRORRRRRORORRRRRRRRRRRRRRRORORRRORRRRRRRRRRRRRRRRRRRRRRRRRRORRORORORRRRRRRORRRRRRRRRRRRRRRRRRRRRRORORRRRRRRROORRRRORRRRORRRRRROORRRRRRORRRRRRORRRRRRRRRRRORRRRRORRRORRORORRRRRRRRORORRRRRRRRRRRRRRRRRORRRRRRRRRORRORRORRRRRRRRRRORRRORRRRRRRORRRRORRRRRRRRRORRRORRRRRRRRRRORORRRORRRRORRRRRRRORRRRRRRRRRRRRORRRRRRRRRORRRRRRRROORRRRRRRRRRRRRRRRRRROORRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRRRRORRRRRORRORRRRRRRRROORRRRRRRRRRRRORRRRORORRRRRRRRRRROORRRRRRRRRRORRRRORRRRRRRRRRRRORORRRRRRRRRRRRORORRRRRRRRRRORORRRRRRRRORRRRRORORORRORORRRRRRRORORRRRRRRRRRRRRRROORRRRRRRRRRORRORRRRRRRRRRORRRORRRRRORRRRRRRRRRRRRROOORRRRORRRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRRORRRRORRRRRRRRORRRRRRRORRRRRORRORRRRRRRRORRRRRORRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRORRRRRRORRRRRRRORRRORRRRRORRRRRRRRRRRORRRRRORRRRRRRRRRRRORRORRRRRRRRRRRRRRRRRRRRORORRRRORRRORORRRRRRORRRRRRRRRRRRRRRRRRRRORORRRRRRRRRRRRRRRORRRRRRRRRRRORRORRRRRRRRRRRRRRRRRRRORRRRRORRRRORRRRRRROOORRRORORRRRRROROORORRRORRRORRORRRRRRRRROORRRORRRORORORORRORRRRRRRRRRRRRRORRRRRRRRORORRRRRRRRRORRORRRRRRRRRRRRORROORRRRRRRRRRRRRRRRRRRORRRRORRRRORRRRRRORRRORRRRRORRRRRROORRORRORRRRRORRRRORRRRORORORRRRRRRRRRRRRRRRRRRRROORRRORRRRRRORRRRRRRRRRRORRRRRRROORRRRRRRRRRRRRORRRRRORRRRORRRRRRRORRRRRRRRRRORRRRRRRROOOORRRRRRRRRRRRRRRRRRRRRRRRRRORORRRRRRRRRRRRRRRORRRRRRORRRRRRRRRRRRRRRRRRRRRRRORRRRRRRRRRORRRRRRROORORRRRRRRRRRRRRRRRORRRRRRORRRRRRRRRRRRRRRRRRRRRRORRORRRRRRORRRRRRRRRRRRORRRRRRRRRRORRRRRRRORRRORORRRRRRRRRRRRRRRRRRRORORROOORORRRRRRRRRRRRRRRROORRRRRORRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRORORRRRRROORRRORRRORROORRRRRRRRRRRRRRRRRRRRRRRRORORRRRRRRRRRRRRRRORRRORORRRRRRRRORRRORORRRRORRRRROOORRRRRRRRRRRRRORRRRORRRRRRRRORRRRRRORRORRRRRRRRRROROORRRRRRRROORRRRRORRRRORRRRRRORRORRRORRRRORRRRORRRRRRRRROORRORRRRRRRRRRORRRRROORRRRRORRRROORRROROORRRRRRRRRRRRRRRRRRRRRRRRRORRRRORRORRRRRRRORRRORRRORRROOOROORRRRRRRRORRRRRRRRRRRRRORRORRRRRRRRRRRRRRORRRRRRRORRRRRRRRORRRORORRRRRRORRRRRORRORORORRRRRRRRORRRRRRRRRRRRORRRORRORRRRRRORORRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRROORRRRRRRRRRROORRRRRRRRRRRRRRORRORORORRROORRRRRORRRRRRROORRRROOORORRRRRRRRRRRRRRRROORRRRRRRORRRRRRRRORRRRRRRRRRRRRRRORRRRRRRORRRRRRRRRRORRROORRRRRRRORRRRRRRRRRRRRRRRRRORRRORRRRRRRRORRRRRRRRORORRRORORRRRRRRRRRORRRRRORRRRRRRRRRRRRROORRRORRRRRRRRORORRRRRRRORRRRORRORORRRRRRRRRRRRRRRRRORRRRRRRRRRORRRRRORRRRRRRRORRRRRRORRRRORRRRORRRRRRRORRRRRORRRRRRRORRRRRRRRRRRRRRRRRRRROORRRRRRRRRRRRRRRRORRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRORRRRRRRROORRRRRROORRRRRRRRRRRRRRRRRRRRRRRRRRORRORRRROORRRRORRRRRRRRRRRRRRRORORRRRRRRORORRRRRRORRRRRRRRRRRRRRRORRORROORRRRRRRRRROORRROOORRRRRRRRRRRRRRRRRORRRRRRRRRRRRRORRRRRORRRRRRRRORRRRRORRRORRRRRORRRRRRRORRRRRRRRRORRORRRRORRORRRRRORROORRRRRRRRRRRRROORROOOORRRORRRORORRRRRRRRRRRRRRRRORORRRORRRRRRRRRORRRRRRRRRRORRORRORRRRORRRORRRRRRRORRRRRORRRRRRROORRRRRRRRRRRRRRRRRORRORRORRORRORRORRRRORRRRRRORRORRRRRRRRRRRRRRRROORRRORRRRRRRRRRRRRRRRRRRRRRRRRRORORRRROORRRRRRRRRRRORRRRRRORRRRRRRRRRRRRRRRRRORRRRORORRORRRORRORRRRRRORRRRRRRRRRORRRRRRRRORRRRROORORRRRRORRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRORORRORRRRORRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRRRRORORORRRRRRRORRRRRRRRRRRRORRRRORRRRRRROORRRORRRRRRRORRRRRRRRORRRRRRORRRRRRRRRRRRORRRRRRRRRRRRRRRRRRORRRRRRRORORORORRRRRRORORRRRRRRRRRRRORRRRRRRRRRRRORRORROOORRRRRRRRRRRORORRRRRRORRRRRRRORRRRRRRROORRRRROORRRRRRRRRRRRRRRRROORRRRRRRRRORRRORRRORRRRRRRORRRRRRRORRRRRRRORRORRRRRRRRRRRRRRRRRRRRRRRRRRORRRRRROORRORRRRRRRRORRRRRRRRRRORRORORRRRRRRRRRRRRRRRRRRRRRRORRROORRRRRRRRRROORRRRROORRRROORRRORRRRRRROORRRRRORRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRORORRRRORRORORRRRORRORRRRRRRRRRORORRRRRRRRRRRRRRRRRRRRRRROORRORRORRRRORRRRRRRRRRORRRRRRRRRRRRRRRRORRORRRRRRRRRORRRRRROROORRRRRRRRRRORRRRRORRRRORRROORRORRRRRRRRROORRRRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRORRRRRRRRRRRRRRORRRRRRRORRRORRRRRRRRORROORRRRRRRRRRRRRRRRRRRRRRRRRRORRORRRRRRRRRRRORRRRRRRRRRRRRRRRRRORRRRORRRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRORRRRORRRRORRORRRRRRRRRRRRRORRORORRORRRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRORRRRORRRRRRRRORRRORRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRORORRRRRRRRRRRRRRRRROORRRORRRRRRORORRRRRRRRRRRORRRRRRRRRRORRRRRRRRRRRRRRORRRRRRORRRORORRRORRRRRRRRROORRRRRRRRRRORRORRRRRORORRRRRRRRRRRRRRRRRRRRRRORRORRRORRRRRRRRORORRRRRRRRRRRRORRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRORRRORRRORRORRRRRRROORRRRRRORORRRORRRRRORRORRRRORRRRRRRRRRORRRRRORRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRORORRRRRRRRRORRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRROORRRRRRRRRORRROORRRRRORRRRRRRRRRRRRRRRRORRRRORRRRRORRRORRRRRRRRORRRRRRRORORRRRROORORRORRRRRRRRRORRRRRRRORRRRRRRORRRRRRRORRRRRRRRRRRRRRORRRRRRRRRRROORRRRRRRRRRRRRRRRRRRRRRRRRRORRORRORRRRROOORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORORRRRRORRRORRRORRRRRRRORRORRORRORORRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRORRRRRRRORRRRRORRRRRRRRRRRRRRRRRRRRRRORORROOORRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRORRRRORRRRORRRORRRRRRROORRRRRORRRORRORRORRORRORRRRRRRRRORRRRORRRRRRRRRRORRRORRRRRRRORROORORRRRRRORRRRRRRRRRRORRRRRRRROORORRRRRRRRRRRRRORRORRRRRORROORORRORRRRORRRRORRRRRRRRORRRORRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRORRRRRROORRROORORRRRRRRRRRRRRORRORROOOOORRRRRRRRRORRRRRRRRRRORRORRORRRRORRRRRRORORRRORORRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRORRRORRRRRRRRRRRRRRORRRORORRRRORRRRRRRRRRRRRRRRRRRRORRORROORRRRRRRRRRRRRORRORRRRRRRRROORRRRRRRRRRRRROORORRORRRRORRRRRORRRRRRRRRRRRRRRORRRRRRRRRRORRRRRRRRRRORORRRRRRRRRRRRORRRRRRRRRRRRRRRRRRRORRORRRRORRRRRRRRRRORRRRORRRRROORRORRORRORRRRORRRRORRRORORRRORRRRRRRORRORRRORORORRRRRRRRRRRRRRRORRRRRRRROORRRRORRRORORRRRRRRRORRRRRRRRRRRRRRRRRORRORRRORRRRRRRRRRRRRRRRRRRORRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRROORRRRORRRRRRRRRRROORRRRRRORRORRORRRRRORRRRRRORRRRRRORRRRROORRORRRRRRRRRRRRRRRRRORRRRORRRRRRRRORRRRRRRRRORRRRORRRROORRRORRRRRRRRORRRRRORRRRRRRRRRRRRRRRRRRRRRRORRRRRRRRRORRRRRRRORORRRRRRRRRRRORRRRRRRRRRRRROOOOORRRRORORRRRRRRORRROROORRRRRRRRRORRRRRRRORRRRRRRRRRRRRRRORRRRRRRRORRRRRRORRRRORRRRRRRRRRRRRRORRRRRRROORRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRORRRROORRRORRRRRRRORRRRRRORORRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRORRORRRRRRRRRRRRRRRRRRORRRRORRRRORRRRRRRORRRRORRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRORRORRORRRRRRRRRRRORRRRRRRRRRRRRRRRRRRORORRRRRRRRRRRORRRRRRRRRRRRRRRRORRORRORRRRRRRRRRRRRORORRROORRRRRRRRRRRORRRRRROORRRRRRORRORRRRRORORORRRRRRRRRRRRRRRRRRRRORRRRORRRRORRRRRRRORRRRRRRRRRRORRRRRRRRRRORORRRRRRRRRRRORRRRRRRORRRRRRRRRRRROORRRRRRRORORRRRRRRRRRRRRORRRORRROORORRRRORRRRORRRRRORRRRRRORORRORRORORRORRRRRRRRRRRRRROROROORORRRRRRRRRRRRORRRRRRRRORRRRRRRORRRRRRORRRRRORRRRRRRRRRRORRORRRRRRRRRRRROORORRRORRRRRRRRRRRRRRRRRRRROORORRRRRORRORRRORRRRRRORRRRRORRROROORRRORRORRRRRRRRRRRRRRORRRRRRRRRRORRRRORRRRRRRRORRRRRORRRRORRRORRRRRRRORRRRRRRRORRRORORRRRRRORRRRRRRORORRRRORRRRORRRRRORORRRRRRRRORRRRROORRRRRRRRRRRRRRRRRORRRORORORRRRRORRRRRRRRRRRRRRRRRORROORRRRRORRRRRORRRRRRRRRRRRRRROOOORRRRRRRRRRRRRORORRRRORORRRRRRRRRORRRRRRRRRRRRRORRRRRRRRORORORRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRROORRRRRRORRRRRRORRORRRRROORRRRRRRRRRRORORRRRRRRRORORRRRRRRRRRRRORRRRRRRRRRRRRRRRORRRRRRORRRORRROOORRORRRRRRRRRRRRORRORRRRRORRRRRRRRRRRRRRRRRRORROORRRRRRRRRRRORRROORRORRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRORRRRRRORRRRORRRRRRRRRRRRRRRRRRRORRORRORROORRRRRRRRRRRRRRRORRRRRRRRORRRROORRRRRRRORRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRRRROROOORRRRRORRRRORRRRRRRRRRRRRRRRRRRRRRORRRRRRRRRROORRRRRRRRRRRRRORORRORRRRRRRRRRORRRORRRRRRROORRRRRRRRRRRRORRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRORRRORRRRORRRROORRRRRRRRRRRORRORRRRRORRRORRRRRRRRRORRRRRRRRORRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRORRRRRORRRORORRORRORRRRORRORRORRRRORRRRORRROORRORRRRRRRRRRROORRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRORRRRRRRRRORRORRRORORORRROORRRRRRRRRRRORRRORRRRRROROORRRRRRRRORRRRRRRRRORRRRRRRRRRRRRORRRRRRORRRRRRRORRRRRRRRRRRRRORRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRORRRRORRRORRORORRRRORRRRORRROROOORRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRORRRRRRRRRORRRRRRRRRROOORRRROORRRRRRRRRRRRRRRORRRORRORRRRRRRRRRORRRROORRRRRORRRRRORRRORORRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRRORRROORRORORRRRRRRRRROORORRRRORRRRRRORRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRORORRORRRRORRROORRRRRRRRRORRRORRRRRORORRRRRRRRRRRRRORRRRRRRRRORRRORRRORRORRRRRRRRRRRRRORRRRRRRRRRRRORRRRRORORRORRRRRRRRRORRRORRRRRRORRRRRRRRORORRRRORRRRORRORRRRRRRRRRRRORRRRRRRRORORRORRRRRORRRRRRRRRRRRRRRRRRRRORORRRRRRRRRRRRRRRRRRRORRRRORRRORRRRORRRRRORRRRRRRRRRRRRRRORRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRORORRRRRRRORRRRORRROORRRRRRRRRRORROORRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRORORRRRRRRRRRRRORRRRRRORRRRRRRORRRRRRRRRRRRRROORORRRRRRRRRRRRRRRORRRRRRRORRRRRRRRORRRRRRRRRORRRORRRRRRORRRRORORORRRORRRRRRORRRRRRRRRORRRORRRRRRRORRRRRRRORORRRRRORRORRRRORORRRRRRRRRRRRORRRRRRRRROROORRRRRORRRRRRRRRRRRRRRRORRRRORRORORRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRORRRRRRORRRRRRRRRRRRRRRRRORORRRRRORRRRRRRORORRRRRRRORRRRRRRRRORROORRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRROORRRRRRRORRRRRRRRRRRRRRORRORRRRORRRRRRORRRORRRORRRRRRRRRRRORRORRRORRRRRRRRRRRRRRRRRRRRORRRRORORRRRORRRRRRRRRRRORRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRORRORRRRRRRRORORRRORRRRRRRORRRRRRRRRRORRRRRRORRRRORRRRRRRROORRRRRORRORRRRRRRRRRRORRORRRORRRRRRROROORRRORRRRRRRRRRRROORRRRORRRRRRRRRORRRRRORRRRORRORRRRORRRRRRRRRRRRRORRRRRRRRRRRRRRRRRORRRORORRRRRRRRORRRRRRRRRRRORRRRRRROORRRORORRRRRORORORRRRRRRRRRRRORRRRRRRRORORORRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRORRRRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRORORRRRORRRRRROORRRRRRRRORRRRORRRRRRRRRRRRRRRRRRRROORRORRRORRRRORORRRRRORRROOORORRORORRRRRORRRRRRROORRROORRRRRRRRRRRORORRRRRRRRRRRRRRRRRRRORRRORRRRRRRRRRRRRRRRRROROORRRRRRRRRRRRRRRRRRRRRRRRORRRRRROORRORRRRRRRRRRORRRORORRRRRRRORRRRRRORRORROORRRRRRRORRORRRRRRORRRRRRRRORRRRRRRORRRRRRRORRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRORORRRORRRORRRORRRRORRRRRRROORRRRRORRRRRRRRRRORRRRRRRRRRRORRRRROOORORRRRORRRRRRORRRRRRRORORRRRRRRRRRRRRRRRORRRRRRRRRRRORRRRRORRRRRRRORRRRRRRRRRRRRRRORRRRRRRROORRRRRRRORRRRRRRRRRRRRORRROORORRRRRORRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRROORRRRRRRRRRRRRRRORRRRRRRRORRRORRRRRRRRRRRRRRRRRRRRRRRRORRRRRRRRRORRRRRRRRRRRRORRRRRRRRRRRRRRROORRORRRRRRRRORRRORORRRROORRRORRRRRRRRRRRRRORRORRRRRRRRRRORRORRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRRORRRRRRRRRRORRRRRRRRRRRRRRRRORRORRRRORORRRRRORRORRORRRRORRROORORRRRRRRRRRRRROORRRRRRRRRRRRRRRORRRRORRRRRRRRRRRORRRRRRRRRRRRRRRORROOORRRRORORRRRRRRRRRRORRRRRORRRRRRRRRRRROORRRORRRRRRRRRRRRRRRRRRORRRRRRRRRRORRRRRRORRRRRORRRRRRORORORRRRRRRRRRORRRORRRRRRRRRRRRRRRRRRORRRRRRRORRRRRRRRRRRRRRRRORORORRORORRRRRRRRRRRRRRRRRRRRRRRORRRRORRRRRRRRORRRRRRRRRRROORRRRRRRRRRROORRRRORRORRRRRROOORRRORRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRORORRORRRRRRRRRRRRORRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRORRRRORRRORORRRORORRRRRRRRRRRRORRORORRRROORRRRRRRORORORRRRRRRRROORRRRRRRRRROORRRORRRRRORORRRRRRRORORRRRRRRRRRORRORRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRORRORRRRRRRRRRRRROORRRORRRRRROORRRRORRRRRRRRRRRRRRRRORRORRRRRORRRORORRRRRRRRRRRRORRRRORRRRORRRRORRRRRRRRRROOORRRORRRRRRORRRRRRRORRRRRRRRORRRORRRRRORRRRRRRRRRRRRORRRRRORRRRRRRRRRRRRRRORRRRRRROORRRRRRRRRROOORROORRRRRRRRRRRRRRRRORORRRRRRRROOORRORROOORRRRRRRRRRRRRRRRRRRRORRRORRRRRRORRRRRRRRORRRRRRRRRRRRRRRRORORRORRRRRRRRRRRRRRRRRRRORRRRORRORRRORRROOORRRORRRORRRRRRRRRRORRRRORRRRORRRRRORRRRRRORRRRRRORRRRRRRRRRORRRORRRRRRORRRRORRRRRORRRRORRORRRRRRRRRRRRRRRRRRRROORRRORRRRORRRRORORRRRRRRRORRRRRRRRRRRRRRRRORORRORRRRORRORRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRORROORRORORRRRRRORRRRRRRRRORRORRRRRRRRRRRRORORRORRRRRRRRRRRRRRRRRRRRRRRRRORORRORORRRRORORORRRRRRRRRRORRRORRRORRORRRORRORRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRORRRRRRRRRRRRRRRRRRORRORRRRRRRRRORRRRRRRRRRORRRORRRRRRROOOORRRRRRRRORRRRRRRRRRRRRORRRRRRRRRRORRRRRRRRRRRRRRRORRORRRRRRRRORRORRRRRRRRRRRRROOROORRRRRRORRRRRRRRRORORRRRRRRRRRRRRRRRRRRROORRROROOOORRRRRRRORRRORRRRRRRRRRORRORRRRRRROORRRRRRRRRRRRRRORORRROORRRRRRORRRRRRRRRRRRRRRRRORORRRRRORRRRRRRRRRRROORRRORRRRRRRRROORRRORRRRRORRRRRORRRRRRRRRRORRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRORRROORRRRRRRRRRORORRRRRRRROOORRRRRRRRRRRRRORRRRRRRORRRRRORRORRRRRRRRRROORRRRRRRRRRRRRRRRRRRRRRRRRORRRORRRRRRRRRRORRRRORRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRROORROORORRRRRRRRRRORRRRRRRRRRORRORRRRRRRRRRORRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRORORRRRRRRRRRORRRRRORRRRRRORRORRRRRRORRRORRRRRRRRRRRRRRROORRORRRRRRRRRRRRRRRRORRRRRRRRRORRRRRRRRORRRRRRRRRRRRRRORRRRORRRORRRRRRRRRRRRRRRORRRRRRRRRRRORRRRRRRRRRORRRRRRRRRORRRORRRRRRORRRORORRRRRORRRROORRORRRRRRRRRRRRRRORRRRRRRRORROORRORRRRORORRRRRRORRRROORRRRRRRRRRORRRRRRORRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRRRRRRORORRRRRRORRRRRRORRORRRRORORRRRRRRRRRRORRRORRRRRRORRRORRRRRRORORRRRRRRORRRRRRRRRORRRRRRRRRRRRRRRRRRRORROORRRRRRRRRRRRRRRRRORRRRRORRRRRRRRRRORRRRORRRRRRRRRROORRRORRRRRRRRRRRRRORRRROORRRRRRRRRRRRRRRRRRROORRRRRORRORRRRRRRRORRRRRRRRROORRRRRRRRRRRRRRRRRRRRRRRRRRORRORRRRROORRRORRRRRRRRRRRRORRRRRRRRRRRRORRRRORRRRRRORRORORRRRORRORRORRORRRRRRRORRRRRRORORRRRORROROORRRRRRORORRRRRRRRRRRRRRRRRRRRRRRRRRORRRRORRRRRRRRRRRRRORRRRRORORRRROORRRORRRRRRRRRORROROORROORRRRRRRRRRRRRRRRRRRORRRORROROORRRRRRRRRRRRRRRORRRRRRRRRRRRRRRORRRRORRRRRORRRRORRRRRRRRRORRRRRORRRRRRRRRRRORRRRRRRRRRRORRRRRORRRRRRRRRRRRRRRRRRRRRORRRRRRRORRRRRROORRRRRRRRRRRRRRRRRRRRRRRRRORRRRORRRRRRRRRRRRRORRRRRRRRORORROORORORRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRORORRRRORRRRRRORRRRRRRRORRRRRRRRRRRRRRORRRRRRRRORORRRORRRRRRRRRRRRRRRRRRRRORRROORRRRRRRRRRRRRRRRRRRORRRORRRRRORRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRORORRRRRRROORRRRRRRRORRORRRRRRRRRRRRRRRRRRRRRRORRRRRRRORRRRRRRORORRORRRRRRRRRRRORRORORRRRROORORRRRRRRRRRRRRRRRRRRRRORRRRRRRRORRRRRORRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRORRRRRORORRRRRRRRRRRRRRRRRRRRORROORRRRRRRRRRRORRRORORRRRORORRRRRRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRORRRRORRRRRRRRRRRRRRORRRRRRRRRRRORRRRRRORRRRRRRRRRRRRRRRRRORRRRRRROORRRRRRRRRRRRRRROROROORRRRRRRRRRRORRORRRRRRRROORRRORRRRRRORRORRRORORRRRRRRRRRRRORRRORRRORRRRRORRORRRRORRRRORRRRRRRORRRRRORRRRRRRRROORRRORRRRRROORRRORRRRRRORRRRRRRORRRRRRRRRRORRRORRRRRRRRRORRORRORRRRRRORRRRORRORRORRRRRORRRRRRRRRRORRRRRRRRRRRRRORRORRORRRORRRRRRRRRORRRRRRORRRRRRRRRRORRRRRORRRRORRRRRRRRRRORRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRRORORRRORRRRRRRRRRRRORRRRORRRRRRRRRORRRRRRRRRRRRRRRRRRRORORRRRORRRROORRORORRRRORRRORRRRRRRRRRRRORRRRRORRRORRRRROOORRRORRRRRRRRRRRRRORORRORRRRRORRRRRORRRORRRRRORRRRORRRRRRRRRRORRORRRRORRORRRORRRRRRRRRRRRRRRRRRRRRRRRORRORRRRORRRRRRRRRRRRRORRRORRRRRRRRRORRRRRRRRRRRRRRRORRRORRRRORORORORRRORRRRRRRORRORRRRRRRRRRRRRORRRRRORRRRROORRRRRRRRRRORRRRRROORRORRRRRRRRORRRRRRRRRRRRRRROORRRRRRRRRROROORRRRRRRRRRORRRRRORRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRORROORRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRRRRRORROORORRRRORRRRRRRRRRRRRRRRRRRORROOORRROORRRRORRRRROORORRRRRRORRRRRRRRRRRORRRRRORRORRRRRORRRRRRORRRRROOORRRRRRRRRRROORRORRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRROOORRORRRRRRRRRRORRROOORRRRRRORRRRRRRRRRRORORORRRRRRRRORORRRORORRRROOORRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRROORRRRRRRRRRRRRRRRROORRRORRRORRORRRRRRRRRRRRORRRRRRRRRRRRRRRRRRRORRRRRRRRRRRORRRRRRRRRRORRRRORRRRRRRORRRRRORRRRRRRRRRORORRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRRORRRRRRRORRORRRRRRRRRRORRORORRRRRORRRRRRRRRRROORRRRRRORRRRORORRRRORRRRRRRRRRRRRORRRRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRORRRRRRORRRRRRRRRRRRRRROROORRRRRRRRRRRRRRRRRORRRRRRRRORRRRRORORRRRRORRRORRRRRRRRORRORRRRRRRRRORORRORORRRORRORRRRRRRRRRRRORRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRROOORRRRRORORRRRRRRRRRRROORRRRRRRRRRORRRRRRORRRRRORRRRRRORORRRRRRRRRRRRORRORRRRORRRRRRRRRRRRRRRORRRORRORRRRRRRRRORRRRRRRROOOORRRRRRRORRORRRRRRRRRRRRRRRRRRRRRRRRRRRROORORRRRORRORRRRRRORRRRRRRROORRORRRRRRRRRRRRRRRRRRRRRRRRROOORORRRRRRRRRRRORRRORRRRRRRRRRORORRRRORRRRROORRRRRRRRRRRRROORORRORRRRORRRORORRRRORRRRRRORRORRRRRRRRRRRRRRRRRORRRRRRRRRRRRRORRRRRRRRRROROORRROORRRORRRRRRRRRRORORRRORRRRRRRRRRRRRRRORRRRRRRRRRRORRORORORROOORRRORRORRRRRRRRRRRRRRORRRRRRRRRORORRRRORRRRRORRRRRRRRRRRRRRRRRRORORRRRRRORRORRRORRORRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRRRROORRRRRRRORRRRORRRRRRORRRRRORRRRRRRRRRRRRRRRRRRRORRORRRORRRRRRRRORORRRRRRRORRRRRRRRRRRRRRRRORRRRRRRORRRRRORORRRRRRRRORRRRRRORRORROORRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRORRORRRRORRORRRRRORRRRROORORORRRRRRORRRRRRRORRRRRORRRRRRRRRRRRRRRRRORRRRRRRRRRRORRRRRRORRRRRRORRRORRRRORRRRORRORRORRRRORRRRRRORRRRRRRRRRRRORRRORRORRRRRRROORRRRRRORRRRRRORRRRRRORORRRRRRORRRRRRRRRRRRORRRRRRRRRRRRORRRRRRRRRROORORRRRRROORRRRRRRRRRRRRRRRRRRRRRRORRRRRRRRRRORRRRRRRRRRRRRRRRORRRRRRRRRRROORRRRRORRRRRORORRRRRRRRRRRRRRRRORRRORRORRRRRRRRRRRRORRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRORORRORRRRRRRRORRRRRROORRORRRORRRRRRRRRRRORORRRRRRORRORRORORRRRRORRRRRRRRRRRRRRRRROORRRRRORRRORRRRRRORRRRRORRRRRORRRRORRORORRRORRRRRRRRRRRRORORRRRRRRRRRRROORORORRRRRRRRRRRRRRRRROORRRRRRRORRRRRRRRRRRRRRRRRRRRORRRRRRRRROORRRRRRRRRRRRRORRRRRRRORRRRRRRRRRORRRRRRORRRORRRORRRRRORRRRORRRRORRRRRORRRRROORRRRRRORRRRORRORRORRRRRORRRORROROORORRORRRORRRRRRRRRRRRRRRRORRRRRRRRRRORRRRRRRRRRRRRRRRRRORRORRRRRRRRRORORRRORRRRRRRRORORRRRRRRRRRRRRRORORRORRRRORRRRRRRORRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRROORRRRRRRRRRRORRRRRORRRORRRRRRRRRRRORRRORRRORRRRRRRORROROORRRRRRRRRRRORRRORRORRRORRRRRRRRORRRROORRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRORRRORRRRRORRRRRORRRRROORRRRRRRORRRORRRRRRROORRORRRRORORRRORORRRRRRRRRRROROORRORRRORRRRORRRRRRRRRRRRRROROORORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRRORRORRRRRORRRRRROORRRRORRRORRRRRRRROORRRRORORRRRRRRRRRRRRRRRRRRORRRRRROORRRRRRRRRRRRORRRRRRORRRRRRRRRROOORRRRRROORRRRRRROORRRRRRRRRRRRRRRRRRRRRORRRRRRORRRRRRRRRRRRORRRRRRRRORRRRRRRRRRRORRRRRRRORRRRRRORRRORRRORRRRRORRRRRRRRRRROORROORRRRRRRRRORRRRORRRRRRRRRRORRRRRRRRRRORRRORRRRRRRRRRRRRRORORROORRRORRORRORRRORRRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRROORRRRRRRRRRRORRRRRRROORRRRRORORORRRRRRRRRRRRRRRRRRRRORRRRORROORRORRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRORRORRRRRRRORRRRRRRRRRRRRORRRRRRRRRRORRROORRORRRRRORRRRORORRRRORRRRRORRORRRRRRRRRRRORROORRRORRRROROORRRRRORRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRROORRRRORRRORRRRRRRRRRRRRRRRRRRRRRRORRRRRORRRRORRRRRRRRRRRRRRORRRRRRRRRRRRRRRRORRRRRORRRRRRORORRRRRORRRRRRRRRRRRRRRORRRRRRRRRRORRRRORRRRRRRRRRRORRRRORRRRORRRRROORRRRRRORRRRRROORRROOOORORORRRRRRRRORRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRORRRRRORRRRRRRORRRORRRORRRRRRRORRROORRROORRRRRRRRRROORRRRRRRRRRRRRRRRRRRORORRRRRRRRRRRRRRRRRORRRRRRRRRRRORRRRRORRORORRRORRRRRRORORRRRRRRRRRRORRRRRRRORRRRRRRRRORRRRRORROROORRRRRRRRRORRORRORRRORRRRRRRRORRRRRRRRROORRRRRRRRRRRRRORRRRORRRORRRRRRRRORRRRRRRRORRRRRRRRRRRRRRRORRRRRRRRRRRRRRRORRORRRRORRRRRRRRRRRRRRORRRRRRRRRRRRRRRROORRRRORRRRRRRORRRRORORRRRROORORRRRRRRROOORRRRORRRRRRRRORRRRRRRRRRORRRRRRRRRRRORRRORRRRRRORRRRRRRRRORRRRRRRORRRRRRRRRORRRORRRRRRRRRRRRRRRRRRRROORRRRRRRRROORORRRRRRRRORRORORRORRRRRORRRRRORRRRRRRRORORRRROORORORRRRRRRORRRRRRORRORORRORRRORRRRRRRRRRORRRRORRRRRRRRORROOORRORRRRRRORRORRRRRRORRRRRRRORRRRRRRORRRRRRRRRRRRRORROORRRRRRRRRRRRRRRRORRRRRRRRORRORRRRRRRRORRRRRRORRRRRRROORRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRRORRRRRRRRRORRRRRRRRRRORRRRRRRRORRRRRRRRORRRORORRRRRRORRRORRRRRRRRRRRRRORORRORRRRRORRRORORRRRRRRRRRORRORRRORRORRRRRRRRRRORRRRRORORRRRRRRRORRRRRRRRRRORRRRRRRRRRRRRRRORRRRRRORRRRORRORRRRRORRRRRRRRRROORRRORRRRORRRRRRORRRRRRORRRRRRRRRRRRROORRRRRORRRRRRRRRRRRRORRRRORRRROORRRRRRORRRRRRRRRORORRRRRRRRRORRRRRRRRRRRRRRORORRRRRRRORORRRRRORRRRRRRROOORRRRRRRRRORRRRORORRORORRROORORRRRORRRRRRRRRRRRRRRRRRROOROOROROROORORRRRRORRRRORRRRRRRRRRRRRORRRRRRROORRORRRRRRRRRRRRORRROORRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRRORRRRRRRORRRRRRRROOROORRRRRRRRORRRORORRORRORRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRRRORRRRORRRRORRRORRRROOORRRRRROORRRRRRRRRRRRRRORRRRORRRRRRRRRRRORRRRRRROROORRRRRRRORRRRRORRRRRRRRRRRRRRRRRRROORORRORRRORRRRRRRRRRRRRRRRRRRRRRRRRORORRRRORRRRRRRORRRRRORRRRRRRRRRRRRRRRRRRRRORRORRRRORRRRRRRRRRRRROORROROROORRRRRRORRRRRRRRRRORRRRRRRORRRRRRRRRRRRRORRRRRRRRRORRORRRRORRRRRRORRRRRRRRORRRRRRRRRRRORRORRRRORRRRRORRRRORORRRROROORRRRRORRRORRRRRRRRROORROORRRRRRRRRRRRRRRRRRRRRRORRRRRRRRRRORORORRRRORORRRRRRRRRRRRRRRRRRRRROORRORRRRRRRRORRRORRRRORRRRRRRORRRRRRRRRRRRRRRRORRORRRRRORROORRRRRRRORRRRRROORRORRRRRRRRRRRRRRORRRRRRRRRRRORRRRRRRRRRRRRRRRRRRRORRORRRORRORRRRRRRRRRRRRORRRRRRRRRRRRORRRRRRRROORRRRORRRRRORRRRRRRRRRRRRRRRRRRRRRRRROORRRRRRRORRRRRRRRRRRRORRORRRRRORRRRORORRRRRRRRRORRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRORORRRORRRRRRRRROORRRRRRRORRRORRRORRRORORRRRORRRRRRRRORRRRRRRRORRORRORRRRRRRRRRRORRRRRRORRRRRRRRRRRORRRRRORRRRRORRROORRRRORRRRRRORRRORRRORRORRORRRRORRORRRRRRRRRRRRRRRORRRRRRRRRRRRRORRRORORRRRORORRRRRRORRRRRRRRORRROORRRORRRORRORORRORRROORRRRRRRRRRRRORRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRORORRRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRORRORRRORRRRORRRRRRRRRORRORRRRRORRRRRRRRORRRRRRRRRRORRRRRRRRRRRRRORRRRRORRRRRORRROORRRRRRRRRRRORRRRROORRRRRRRRORRORRRRRRRRRRRRORRRRRRORRRRORRROORORORRRRRRRRRRRROORRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRROROORRRRRRRRRRRRRORRRORRRRRRRROORORRRRRRRRRRRRRRRORRORRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRROORRRRRRRRROROORRRRRRRRRRRORRRRRRRRRRRRRROOROORRRRRRRRORRORRRRRRORRRRORRRORRRRRORORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRORRRRRORRRRRORRRRRRRRRRRRRRRRORRROROORRRRRRRRRRORRRRRRORRRRRRORRRRRRRRRRRORRRRRRORRRRRORRORRRRRRRRRRRRRRRRRRORRRRRRRRRRRRORRRRRRORORRRRORRRRRRRORRRRRRRRRORRRORRRRRORRRRORRRRRORRRRRRRRRRRRRRRRRRRRRORRRRRRRRRRORRRRRRRRORRORRRRRRORRRRRRRRRRORRRRRORRRRRORORROROORRRRORRRRORRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRRORRRRRRRRRRRRRRORRRRORRRRRORRRRRRRRRRRRORRRORORRRRRORRRRRRRRRRRRRRORRRRRORRRRRORRRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRORRRRRRRORRORRRRRRRROORRRRRRRRRROOORRRRRRRRORRRRORRRRORRRRRROORRRRRROORRRRRRORRRRRORRRRRRRRRRRRRRRORRRORRRRRORRRORRORRRRRORRRRRRRRRRRORRRRRRRRRRRRRRRRRORRRRRORRRRORRRRRRRORRRRRORRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORORRRRRRRORRRRORRRRRRRRRORRRRRRRROORORRRRRRRRRROOORRRRRRRRRRRRRRRRRRRORRRRRRORRRRORRRORRRRRORORRRRORRRRRRRRRRRRRRRRRRRRRRORRORRRRORRRORRRORRRRRRORRRRRRRRRORORRORRRORRRRRRRRRRRRRRRORRRRORRRRRRRRORRRRORORORRRRRRRRROOOORORRORORORRRRORRRROOORRRRRRRRRRRRORRORRRRRRRRRORORRORROORRROORORRRORRRRRRRRRORRRORRRRRRRRRRRRORRRRRRRRRRRORRRRRRRRRRRRRRRRRRRRORORROORRRRRRRRRRRRRORRRRRRORRORROORRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRORORRRRRRRRORRRRRRRROORRRRRRRRRRRRRRRRRRRRORRRRORROOOROORRRRRORRRRRRRRRRRRRRRRRRRRORRORORRRRRRRRRRRRRRRRRRRRRRORRORRRRRRORRRORRRRRRRRRRRRRRRRRORRORRRRRRRRRRRORRRRRORRRRRRRRRRRRRORRRRRRRRORORRRRRRRRRRRRORORRRORRRRRRRRRRRRORORRRRRRRROROORRRRRRRRRRORORRRRRRRRRRORRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRRORRRRORRRORRRRRRRRRRRRORRRORRRORRORRORROORRRRRRRRRRRRRRRRRRRRRORRRRORROORRRRORRRORRRROORRRRROOOOROORRRRRORRRRRRORRRRRRRRRRROROOOOORRRRRRRRRRORRRRRRRORROORORRORRORRRRRRRRRRRRRRRRRORRRRRRRRRRRRORORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRORRRRORRRRRRRRRRRRRRRROORRRRRRRRORRRRRORRRRRRRRRRRRRRRORRRRRRRRRRRRRRRROORRRRRORRRRORRRRORRRRRRRRRRRORRORRRRRRRRRRORRRRRORRRRRORRRRRRRORRRRRRROORORRRRORORRRRRRRRRRRRORORRRORROORRRRRRRRRRRRRORRROROORORRRRRORORRRRRRRRRORRRRRRRRRRRORRRORRORRORRRRRROORRRRRORRRORRRRRRRRRRRRRORRRRRRRRRORRRRRRRRRRRRRORRRRRRORRRRRRRRRRRRRORRRRRRRRRRRRRRRRRORRRRRRRORORRRRRRRRRRRRRRORRRRRRRRRORRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRROORRRRRRRRRRRRORRRRORRORORRORORRORRRRRRRRRRORRRORRRRRRRORRRRRROORRORRRROORRRRORRRRRRRORRRROROORRRRRRRRRRRRRRRRRORRRORRORRORRORRRRRRORRRRRRRRRRRORRRRRRORRRRRRORRRRRRRRRRORORRRRRRRRRRRRRRRRRRRORRRRRRRRRRRORRRRRRRRRRRRORRRORRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRRORRRRRRRRORRRRRRRRORRRRRRORRRORRRRRRRRRRRORRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRRRROORRRRORORRRRORRRRRORRRRRRRORRRRRORRRRRRRRRRRRRRRRRRORRRRRRRRRRORRRRROROROORRRORORRRRRRRRRRRRRRRRRRRRRRRRRRORRORRRRRRROORRRRRRRROORRRRRRRRRRRRRRORRRRRRRORRRRRRRRRORRRORRRRRRRRRRRORRRORRRRRORRRRRRRRRRRRRRRRRRORRRRRORRRRRRRRRORRRRORRRRRRRRORRRORRORRRORORORRRORRORRRRORRRRRRRRRRRRRRRORRRRRRRRRRRRORRRRROOORRRRRRRRRORORRRRORRRRORORRRRRRRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRORORRORRORRRRRORROORRRRRRRORRRRRRRROORRORORRRRRRRRORRRRRORRRRRRORRRRRRRRORRRRORRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRROORRRRRRRRRRORORRRRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRORRRRRRRRRRRORORRRRORRORRRRRRORRRRRORRRRORRRRRRRRRROORRRORRRRORORRORRRRORRRRRRRRRRRRRRRRRRORRRRRRRORRRRRRRRRRRRRRRORRRRORRRRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRORRRRRRRRRORRORRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRORORRRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRRROORRRRRRRRRRRRRRRRRORRRRRRRRORORRRRRRRORRRROORORRRRRRORRRRORRRRORRRRRRRRRRORRRRRRRORRRRRRORRRRRRROOORRRRRRORRORRRRRRRRRRRRRRRORRORRORRRRRORRROROOORRRRRRRORRRRRRORORRRRRRRRRRRRRRORRRORRRRROORRORRRORRRRRRRRRORRORRORRORRRRRRRRRRRRRRORRRORRRRRRRRRRRRRRRRRRRRRRORRRRRRRRORRRRRRRRRROORORRRRRRRRRRROORRRRRRRRRRRRRRRRRORRORRRRRRRRRROORORRRRRORRRRRRRRORORRORRRRORRRRRRRRORRRRRRRRRRRRRRRRRRORORROORRRRRRRRORRORORRRRRRRORRRORRORRORORRRRORRRRRRRRRRRRORRRRRRORRRRORRRRRRRRORRRRRORRROORRRRRRRRRRRRRORRRORRRORRRRRRRRRRRORRRRROORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRRRORRORRRORRRRRORRRRORORRRRORRRRRRRRRRRRRRORORRRRRRRORRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRROORRRRRRRRRRORRRRRRRRRRRRRORRRORRRRRRRRRRRRRRRRORRRORRRRRRRORRRRRRRRRRRRROORRRRRRRRRRORORORORRRRRRRRRRRRRRRROORRRRORRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRROROORORRRRORRRORRRORRRRRRRRROORRRRRRRRRRRRRRRRORRRRRRRORRRRRRRRRRRRRRORRORRRRRRRRRRRRRRRRRORRRORRRRRRORRRRRRORRORRRRRRRRRRRRORRRROORRRRRRRRRRRRRRRRORRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRROROORRRORRRRRRRRRRRROORRRRRROORRRRRROOORRRRRRRORRRRRRRRROORORORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRORRRRRRRRRRORRRRRRRRRRORRRRORRRRRORRROORRRRORRRRRORRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRORRRRRORORRRRRRRRRRORRRRRRRRORROOORRRRRRRRRRORRRORRRRRRRRORRRRRRRRRORRRRRRRRRRRRROORRRRRRRORRRRRRRRRRRRRRORRRRORROORRRRORRORRRRRROORORORORRRORRRRRRRRRRORRRRRORRORRRRRRRRRRRRRRRRORRRRRRRRRRRRORRRORRORRRORRRRORRORORRRRRRRRRRRORRORORRRRRRRRRORRRRRRRORRRRRRRRRRRORRRRRRRRRORRRRRRRRRRRRRRRRRRORORRRRRRRORRRRRRRRRRORROOORRRRRROROORORROORORORRRRRRRRRRRRRRRRORRRRRRORRORORRRORRORRRRRRRRRRRRORRRRRRRRORORRRORRORRRRRRORRORRORRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRRRRRRORRRRRRRRRRRRRRRORRRRRRRORRRRRRRRRORRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRORRRRRRRRRORORRRRRRRRRRRRRRRORRORRRRRRRRRROORRRRRRRRRRRRRORRRRRRRORRRRRRORRRRRROORRRRRRRRRRRRRRORRRORRRRRORRRRRRORRRRRORORRRRORRRRRRRRRRRRORRRORRRRRRRRRRRRORRRRRORRRRRRRRRRRRRRRRRRRRRORRRORRRORRRRRRRRRRRRRRRRRRORRRRORRORORRRRRRRORRRRORRRRRRORRRRRORRRRRRRROOOORRRRRRORRRRRRRORROOORRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRORORRRRORRRRRRRRRRORRRRRRRRRRRRRRRRORRORRRRRRRRROORRRROROROORRRRORRORRRRRRRRORRRRRRRRORRRRRRRRRORROORORRRRRRRRRRORORORORRRRRRRRRRORORRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRROORRRRRRRRORRRRRRRORRRRRRRRRORRORRRRRRRRRRRRORRRRORRORRRRORRRRRRRROORRRRRRRRRRRRRRRRRRRRRRRRRROORRORRRORRRORRRRRORRRRRRRORRRRRRRRRRORRRRRRRRRRRRORRRRRRRRRRRRRRORRORRRRRRRRRRRRRORORRRROROORRRRRRRRRRRRRROORRRRRORRRRROORRRRRRORRRRRRRRRRRRROORRROORRRRRORORRORRRRRRRORRRRRRRROORROROORRRRORRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRRROOROOORORRRRRRRRRRRRRRRRRRRRORRRRRRRORRRRRRRRRRRRRRRRRORROORRRRRRRRRRORRRRORRORRRRRRRRRRRRRRRRRRRROORRRRRRRRORRRRRRRRRRRRRRRRRORRRRRRRORRRRRRRORRORRRRRRORRRORRRRORRRRRRRRRRRRRRORRRRRRRRRRRRRRORRRRORRRRRRORRRRRRRRRORRRRROORRRRRRORRRRRRRRRRRRRRRORRRRRRRRORORRRRRRRRRRORRRRRRRRRORRRRRRRORRRRRRRRRRRRRRRRORRRRRRRORROROORRRRRORRRRRRRORORRRRRRORRRRRRRRRRRRRRRRORRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORORRRRRRRRRRRRRRORRRRRRRRRRRRORRRRRORRRRRRRRORRORRRRORRRRORRORORORRRRRRRRRRRRRRRRRRORRRRRORRRRRORRRRRRRRRRRRRRRRRRRORORRORRRRRRRRRRRRRRORRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRORRRRRRRRRRRRORRORRRRRORRRRRORRORRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRORRRRRRRRRRRRRROORRROORRRRRRROORRORRRORRRRRRRRRROORRORRRRRRRRRRRROORROORORRRRRRRRRRORRRRRRROORRRRRRORRRORRRRORROORRRRORRORRRRRRRRRRRRRRRRRORRRRRRRORRRRRRRRRRRRRORORRRRRRORRRROROOORRRRRORRRRRRRORRRRRORRRRRRRRRRRRRRRRRRRRRORRORRRRRRRRRRRRRRRRRORRRRORRROOORORRRORRRRORRORRRRRRRRRRRRRORRORRRRRRRRRRORRRRRRRRRRRRRRRRRRRORRRRRRORRRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRORRRRRRROORRORRRORRRRRRRRRRRORRRRRRRRRRRRRORRRRRRRRRRRRORRRORRRRRRRRORRRRRRORRRRRRRRRRRRRRRRRRRRORRORRRORRORRRORRRRORRRRORRRRRROORRRRRRRRRRORRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRROORRRRRROORRRRORROOORRRRRRRRRRRRRRRRRRRRRRORRRRRRORRRORORRRRRRRRRRRRRRRRRRRRORRRRRRORRORRRRRRORRRRRRRRORRRRRRRRRRRRRRRORRRRORRRRRRRRRRRROORORRRRORRRRRRRRORRRRRRROORRRRRRRRRORRORRRRORRRRRRRRRRORRRRRRRRRRRRRRRRRRORROORRORRRRRRORRRRRORRRORORRRRRRRRRRRRRRRRRRRRRRORRRRRORRRRRORRRRORRRRRORRRORRRRORRRRRORRRRRRRRRRRRRRRRRRRRRRRRRORRRRORRRRRRRRRRORRRRORRRORRRRRRRROORRRROORRRORRORRRRRRRRRRRRRRORRRRORRRORRRRRRRRRRRRRRRRRRRRORORRRRRRRRRRORRRRRRRRRROORORORRRRORRRORRRORRORRRRORRRRRRROORRRRRRRRRRRRRRRRRORRRORRRORORRRRRRRORRRRRRRRRRRRRROORRRRRRRRRRRRRRORORRRRRRRRRRORORORRRORRRRRRRRRRRRRRRRORORRRRRRORORRRRRRRRRORRRRRRRRRRRRRRORRRRRORRRRRRRRRRORRRRRRRRORRRRRORRRRRRRRRRRRRRORORRRRORRRRRRRRRRRRRRRRRRRRRRROORORRRRRRRRRRORRRORRRRRRRRRRRORRRRRRRRRORRRRRRORRRRRRRRORORRRORRRRRRRRRORRRRRRRRRRRRRRRORORRRRRORRROORRRRRRRRRRRORRRRORRRRRRRRRRRRRORRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRRRRROORORRRRRRORRRRRRRRORRRRORRORRRRRRRRRORRRRRRRRRRRRRORRRRORRRRRRRRRRRROORRRORRRRORRRRROORROROORRRRRRRRRRRRRRRRRRRRRRRRRRORRRRRORRRRORRRORRRORRRRRRRRRRROORRRRRORRRRRRRRRRRRRRRRRRRRRRRRRORORRRRRRRRRORRRRRRRRRRRRRORRRRRRRRRORRRRRRRRRRRRRRORRRORRRRORRORORRORRRRRRRRRRORRORRRRRRRRRRRRRRRRRRORRRRORRRRRRORRRRRRRRORRORORRORRRRORRRRRRRRRRORRRRRORRRRORRRRRRORRRRRRRROORRRRORRRRRRRRRRRRORORRRRRRRRRRRRRRRRRRRORORRRRRRRRRRROOORRRORRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRRORRRRRRORORRRRROORRORRRRRRRRRORROORRRRRRRRRRRRORRRRRRRRRRRRRRROORRRRORRRRRROORRRRRRRORRRRRRRROOORRRRRRROORORRRRRRRRRRRRRRROROORRRORRRRRRORRRRRROORRRRRRRRRRRRORRORRRRRRRRRRRRORRORRORORORRRRRRRRROORRRRRRRRRRRRRRORRRRRRORRRRRRORRRRRRRRRRRORRRRRRORORRRRORRRRRRRRRRRRRORRORRRROOROOORRRRRRORRRRRRRRRORORRRORORRRRRRRRROROORRRRRRRRRRORRRRRORRRRRRROORRRRRRRRORRRRRRORRORRORRRRRORRRRRRRRORRORORRRRRRRRRRRRRORRRRRORRRORRRRRROORRRRRRRRRRRRRRRRRRRRRRRORRRRRRRRRRORRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRORRRRRRRRRRORRRRRRRRRRORRRORORRROORRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRROORORRRRRRRRROORRRRRRRRRRORRRRRRRRRORRRRRRRORRRRRRORRRRRRORRRORRRRRRRRORRRRRRRRRRORRRRRORRORRORRRRORRRRORROROORRORRRRORORORRORRRRRORRRRRRRRRRRRORRRRRRRORRRRORRRRRRRRRRRRRRRRRRRORRROORRRRORORRORRRRRRRRORRRRRRRRRORRRRRRRRROORRRORORRORRRRRRRRORRRRRRRRRRRRRRRRRORRRRRRRRRRORRRRRRRRORRRRRRRRRRRRRRRRRRORRRRRRRRRRRRROORRORRRRRRRRRORRRRRROORRRRRRRORRRORRRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRRROROORRRRRRRRRRRRRORRRRRORRRORRORRRRRRRRRRRRORRRRRRRRRRRORRRRORRRRORORRRRRRRORRROORRRRRRORORRRRRRRRRRRORRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRORRORRRRRRRRRRRORRRRRRRRRRRRRRRRORRRRRRRORORRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRRORRRROORRRRRRRRORRRRRRRORRRRORRRRRORRRRRRRRRORRRRRRORRORRRRRRRRRRRRRRRRRRRORORRRRRRORRRRORRRRORRRRRRRRRRRRRRRORRRRRRRRORRRRRRRRRRRRRRRRORRRRRRRRRRRORRRRORRRRRRRRRRRRORRRRRRRRRORRRRORRORORRRRRRORRRRRORRRRRRRRROOOOORRRRRORRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRROORRRRRRRRRRRRRRRRORRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRORRORRRRRORRORRRRRRRRRORRRRRRRRORRORORRORRRRRRRRRORRRRRRORORRRRRRRRRRRRORROOORRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRORRRRORRORORRRRRORRRRRRRROORRRRRRRRRRRRRRRRRORRRRRRRRORROORRRRORRORRRRRRRRRRRRORORRRRRRRRRRORRRRRRRRRRRRRORORRRRRRRRRRRRRRRRRRRORRRRRRORRRRRRRRRRRRRORRORRRRRRRRRRRORRRRRRRRRRRRRROORRORRRRRRRRRRRRRRORORORRROORRRRRORRRRRRRRRRORORRRROORRRRRRRRORRRRRRORRRRRRRRRRRRRRORORRRRRROORRRRRRROOORRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRORORRRROORRRRRRRRORRRRRRRRRRRRRRRRRRRRRRORRRRRORRRRORRRRRRRRRORRRRRRRORRRORRROORRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRORRRORRRRRRRRRRRRRRRRRRRRRRORRRORRORRRORRRRRRRRORRORRRRORORRRRRRRRRORRRRRRRRRORORRRRRRRRRRORRRRRRRRRORRRRRRORRORRRRRRORRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRROORRRRRRRRORRRRRRRRRRRRRRORRRRRRRRRRRRRORRRRRORRRORRRRRRRRORRRRRRORRRORRRORRROROORRRROORRORRORRRRRRRRRRRRORRRRRRRRRRRRROROORRRORRRRORRRRRRRRROORRROOROROORRRRRRRRRRRRRRRRRRRROORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRORRRRORRRRRRRRRRORRRRRRRORRRRRRRRRRRRRRORRRRRRRRORORRRRRORRRRRRRORRRRRRRRRRORRROORRRRRRRRRORRRRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRORRRRRRRRORORRRORRRRRRORROORRRRRRORORORRROROORROORRORRRRRRRORRRRRRRRORRRRRRRRORRRRRRRRRRORORRRORRORORRROOORRRORRRRRRORRRRRRRRRORRRRRRORRRRORORRRRRRRRRRRRRRRRRORRRRRRRRRRRROORRRRRRRRRRRORRRRRROORRRRORRRRRRRRORRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRORRRRRRORRRROORRORRRRORRRRRRRRRRRRRRRRRRRRRORRRRRRRRRORRRORORRRRORRRRRRRRRRRRRRRORRORRRRRRRRRRRRRORRORRRRORRRRRRRRRRRRRRROORRROROROORRRRORRRRORRRRRORRRORRRRRRRRRRRRRORRRRRRRORRORRRRRORRRRRRRRRRRRRORRRRORRRRRRORRRRORRRRORRRRRRRRORRRRRRRRRRRRRRRRRRRRRRORRRROORRRRORROORORRROORRRRRORRORRORRORRRRRROORRRRROORRRRRRRRRRRORORRRRRORRRORRRRRRRRRROORRRRRRRRRRRRRRRORROORRRRRRRORRRRORRRRORRRRORRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRORRRRRRRORRRROORRORRRRRRRROORRRRRRRORORRRRRRORRRRRRRRRRRRRORRRORRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRORRRROORRRRRORRRRORRRRRRRRRORRRORRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRORRORORORRRRRORRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRORRRRRRRORRRRORRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRORORRRRRRROORRRRRRRRRRRORORRRRRRRRRRRRRORRRRRRRRRRROROORRRRORRORRRRRRRRRRRRRRRRRRRRRRRRRRRORROORRRRRRRRORRRORRRRORRRRRRRRRORRROORRORORRRRRRORRRRORRORRORRRRRRRRRRRROOORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRROORRRRRRRRRRRRORRRORRRRRRRRRRRRRRRORRRRRORRRRORRRRRRRRRRRORORRRRRRROORROOORRRRRRRRRRRRORRRRRRRRRORRRRRRRRRRORRRORRRRRRORRRRRRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRORORRRRRRRORRRRRROORRRRRORROORRRRRRRORRORRRRRRRRORRRORRRRRROORRORRRRRRRRRRRRRRRORRRRRORRORRORROORORRRORRRRRROORRORRRRRRRRRRRRORRORRRRRRRRRRRRRORORRRRRRRRRRORORRRORRRRRRRORRRRRRRRRRRORRRRRRRRRRRORRRRORRRRORORRRRRROORRRRRRRORRORRRORORRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRRRORRRRRRRORRORORRRROORRORRRRRRRRRRRRRRRORRRRRRRORROORRORRRRRRRRRRORRRRRRRRRORRORRRRROOORRRRRRRRRRRORRRRRRRRRRRRORRRRRRRRORRRRRRRORRRRRRRRRRRRORRORRORRRRORRRRRRRRRRRRRRRORRRORRRRORRRRRRRORORRRRORORRRRRRRRROORRORRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRRRRRRORRRRRORRRRRRRRRRRRRRRRRRORRRRRORRRRROORRORRORRRRRRRRRORRRRRRRRRRRORRRRRRRRRRRRORRRRRRRRRRRRRRRORRRORRRORRRRRRRRRRRORRRRRORRRRRRORORRRRRORRRORRRRRRRROOORRRRRRRRRRORRRRRRRRRRORRRRRRRORORRORRORRRRRORRRRRRORRRRORRRRORRRRRRRROOORRORRRRRRRRRORRRRRRRORRRRRORRRRRRROORRRRRORRRORRRRRRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRORRRRRRRRRRRRORRRROORRRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRORRORRRORRRRRRRRRRRRRRRRRRRRROROORORRORRRORRROORRRRRRRRRRROORRORRRRRRRRRORRRORORRRRRRRRRRRRORRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRORROORRRORORRRRRRRRRORRRRRRRRROORRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRORRRRRRRRRRRORRRRRRRORRORRRRORRORRROOORRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRRORORORRRRRORRRRORORRRROROORRRRRORRRORRRRRRRORRRRRRRRRRRRRRRRRRRRRRRORRRORORRRRRRRRORORRRRRROROORRRRRRRRORRRORRRORRRRRRRORRRRRRRRRRRRRRRRRRRORORRRRORRORRRRRRRRRRRRRRRRRRORORRRORRRRRRRRRRRRRRRRRRRRRRRRRRRORORORRRRRRRRRRRRRRORRRRRRRRORRRORRRRRRRORRRORRRRRORRRRRRRRORRRRRRRRRORRRRRRRRORORRRRRRRRRRRRRRRRRRRRRRORORRRRROROORRRRRRRORRRORRRRORRORRRRRRRRRRRRRRRRRRRRRRRRORRORRRRORRRRORORRRORRRRRRRORORRRRRORRRRRRRRRRRRORRRROORRRRRRRORRRRRRRRORRRRRRRRRORRORORRRRORRRRRRRRRRRRORRRRRRRRRRRRRRORROORRORRRRORRRRRORRRRRRRRRORROOORORRORRRRORRRRRORORRRORRRRRORRRORRRRORRRRRRRRRRRORRRRRRORRRRRRRRRRRRRRORRRRRRRRRORRRRRORRRORRRRRRORRRRRRORRORRRORRORRRORRRRRRORRRRRRRRORORRRRRRRRRRORRRRRRRRORORRRORROORRRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRORORRRRRRORRRRORRRRORRRRRORORRRRRRRORRRRRRRRRRRORRORRRRRRRRORRRRRRRRRRRRORRRRRRRRRRRRRRRRRRORRRROOORRROORRROOOORORRRRRRRORRRRRRRRRRRRRRRROORRRRRRRRRRRRORRRORRRRRRRRORRRRRRRORRRRRRRRRRORRRRRORRRRRORRRRRRRRRRRORRRRRORRRRRORRORRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRORRRRRRROORRROORRORRRRRRORRRRORRRRRRRRRRORRRRRRRRRRRORORRRRRRRORORRRRRRRRRRORRRRRRRRORRRRRRRRRRRORRRRRRRRRRRORORRRRRRRRRRRRRRRRRROORRRRRRRRRRRRRRRRRRRRRRRORRRRRRRRORRRRRRORRRROOORRRRRRROROROORRRRORRRRRRRORRRRRRORRORRRRORRORORRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRORROROORRRRRORRORRRRRRRRRRRRRRRRRORRRORRRORORRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRRRRRRORRRORRRRRORRRRRRRRRORRRRRORRRORRRRRRORORRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRORRRRRRRRRRRORRRRRORORRRRRRRRORORRRRRRRRRRRRORRRRRRRRRRRORRRRORRRROORRRRRRRRRRORRRRRRRORRRRROORRRRRRRRRRROROOORRRRORRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRORRORRORRRRRRRRRRRRRRRORRRRRRRRRRRRORROORRRROORRRRRRORRRRORRRORRRRRRORRRRRRRRORRRRRRRRRRRRRRRORRRRORRRRROORRORRRRRRORORRRRRRRRRRORRRRROORRRRRRRORRORRRORRRRRORRRRRRRROORROORRRRRRRRORRRRRRRRRRRRRORRORRORRRRRRORRRRRRRORRRRRRRRRRRRRRRRRRRRRORRRRRRRRRRORRRRRRORRRRRRRRRRRRRRRRRRRORROORORORRRRRRRRORRORRRRRRRORRRRORRRRRRROORRRRRRRORRRRRRRRRRRRRRRRORRRORRRRRRRRRRRRRRRRRRRRRROORRORRRRRRRRRRRORRRRRRORRRRRRORRROORRORRRORORORRRRRRRRRRORROORRRRRRRRRRRRRRRRRRRRRRRRRRRRRROORRRRORORRRRRRORRRRORRRORORORRORRRRORRORRRRORRORRRRRRRRRRRRRORRRRRRRRORORRRRORRRRRORRRRORRRORRRRRRRRRRRRORRRRRRRRRRORRORRRRRRRRRRRRRRRROORRRRRRRORROOORRRRRORROORRRRRRRRRORRRRORRRRRORRROORRRRRRRORRORRRRRRRRORRRRRRRRRRRRRRRRORRRRRRRRRRRRRRORRRORRRRRRRORRRRRRRRORRRRRORRRRRORRRRRRRRRRRORRRORRORORRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRORRRRRRRRRRRRRORORRRRRRRRRRRRRRRRRRRRRRRORORORRRRRRRRROORRRRRRRRRRRRRRRRORRRRRRRRRRORRRRRRRRRRRRRRRRRRRRORRORRRORRRRORRRRRRRRRORRRORORRRRORRORRRRROORRRRRORRRRRRRRRORORRRRRRRRRRRRRORORRRRRRRRRRRORRORRRRORORRRRRRRRRRRORRRRRRRRRRRORRRRORRRRRROORRRORRRRRRRRRRRRRRORRRRRRRROORRRRRRRORRRRRRRRRRRRRRRRRORRRRRRRRORORRRRRRRRRORRRRRRRRRRRRRRORRRRRRRRRRORRRRRRRRRORRRRRRORORRRRRRRORRRRRRRORRRRRRRRRRRRRRRRRRRRORRRRRRRRORRRRRRRRRRRRORRRRROORRRORRORRRRRRRRRRORRRRRRRROORRORRORRRRORRRRRRORRORORRRRRRORRRRRORRRRRRORRRRRRROROORRRRRRRRRRRROORRRRORRRRRORRORRORRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRRORRRRRRRRRROORRRRRRRRRRRRRRRORRRRRRRRORRRRRORRRRRORRORORRRRRRRRRRRRRRORRRRRRRORROORRRROORRRRRRRRRRRRRRORRRRRRRRRRORRRRRRRRRRRRRORRRRRRRRRRRORORRORORORRRRORRRRRRRRRRRORRORRORRRORORRRORRRRRRRRRRRORRRRRRRRRRRRORRRRRRRORRRRRRORRRORRRORORROROORRRORRORRRRRRRROORORORRRRRORROORRRRRRRRORRRRRRRRRRRRRORORRRORRRRRRRRRORRRRORRRRRRRRRRRRRRRRRRRRRRRORRRRRRRRORRORROORRRRORRRRRRORRORRRRRORRORRRRRRRRRRRRRRRRRRRORROORRRRRRRRRORRRRRRRRRRRRORORRRRORRRRRRRRORRRRRRRRRRRORRRORRRROORORRRORROROORRRRRRRRRRORRORRRRRRRRORRRRRRORRRRRRRRORRRRRRRRRRRRRORRRRRRRRRRRRRORRRRRRRRRRORRRRRRRRROORRORRRRRRRRRRROORRRRRRRRRRRRRRRRRRRORRORORRRRRRRRRRRRRRRORRRORRRRORORORRORRRRRRRRRRRRRRORRRRRRRRRRORRRRRRORRRRRRORRORORORRRRRORRRRRRRRRORRRRRRRRRORRORRRRRRRRRRRRRRRRRRRRRRROORRORRRRRORRRRRORRRRRORRRRRORRRRRRRRRRORRRRRRRORRRRRRRRRRRRRRRRRROOROORRRRRRRRRRRRRRRRRORRRRRRORRRRRRROORRRRRRORRRORRRRRRRORRRRRRRRORRORRRRRRRRRRRRRORRRRRRRRRRRORRORRRRRRRRRRRRORRORRRRRRRRRRRRRRORRROORRORRRRRRRRRRRRRRRROOROOORROORRRRRRRRRORRRRRRRORRRRRRRRRORRORRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRRRROROORRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRRRRORRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORORRORRORORORRRRRRRRORORRROORRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRORRRRRRRRRRORRRRRORRRRRRRRRORRRRRRRORRRORRRORRRRROORORORORRRORRRRRORRRRRRRRRORRRRRRRRRRRRRORORRRRRORRRRRROORRRRORRRORORRRORRRRORRRRRRRRRORRRRRRRRRRRRRRORRRRORRRRRRRRRRRRRROORRRORRRROORRRRRRORRRRRRRRRRRRRRRORRRORRRRRRRRRRRRRRRRRORORRRRRRRRRRRORRRORROORRRRORRRRRRRRRRORRRORRRRORRRRRRRRORORRRRRRRRRORRRRRRORRRRRRRRRRRRRRRRRORRRRRRRRORRRRRRRRRRORRROORRRRRRRRORRRRRRRRRRRRRRRRRRORRRRRRRORRRRRRRRRRRRRORRRROORRRORRORRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRORRRRRRROORORRRRRRRRRRRRRRRORRRRRRORRRRRORRRRRRRRRRORRRRRRRRRRRRORORRRRRRRORRORRRRORORRRRRRRRRRRRRRRRRRRRRRORRRRRRORRRRRRRRRRRRRRRORORORRRRRORRRRRRRRRRRRORRRRRORRRRORRRRRRRRRRRRRORRRRRRRORROORRRRRRRRRRRORRRRRRRROORRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRORRRRRRRRRRRRRRORRRROOORRRRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRRORORRORRRROOORRRRORRRRRRRRRRRRORRORRROORRRRRRRRORRRRRRRRRRROORRRRRORRRRORRRRRRRORRRRORRRORRORRRRRORRRORRRRRRORRRRRRRRRRRRRRRORRRRRRRRORRORRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORORRRRRRRRRRRRORRRRRRRORRRORRROORRRRRRRRRROORORROORORRRRRORRRRRRRRRRRORRRRRRRORORRRORORRRRRRRRRRRRRRRRRRRORRRRRORRORRRRRRRRRRRRRRRORRRRRRRRRRRRRRORRRORRRRRORRRRRRRRRRRRRRRRORRRRRRRRRRRRORRRORRRRRRORRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRORORRRRRORRORRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRORORRRRORRRRRRRORRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRORORRRRRRRRRRRRRRRRRRRRORRORRRRRRRRRRRRRRRRRRRRRRRORRRRROORRRRRORRRRORORRRRRORRRRRRRORRRORROORORRRRRRRORRRRRRRRRRRORRRRRRRRRORRRRRRRRRRRRRRRRRRORRRRRROROORORRRRORORRORORRRRRRRRORORRRORRRRRORRRRORRORRRRRRRRRRRRORRRRRRORRRRRRORRRRRORRRRRORORRRRRRRRRORRRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRRRORRRORRRROORRRORRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRORRRRRRRRORRORORORORRRRRORRRRRRRRRRRORORRRRRRRRRORORRRRRORRRRORRRORORRRRRRORRRRRORRRRRRRRRRRROORRRRORRRRRRRRROORRRRRRRRRRRRRRRRRRRRORROORRRRRRRORRRRRRRRRORRRRRRRRRRRRRORRRRORRRRRRRRROORRRRRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRORRORRRRRORORRRRRRRRRRRRRORRRRORRRORRRRRORRRRRRORORRRRRRRRRRRRRRRROROORORORRRRRRRRORRRRRRORRORRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRRRRRRORRRRRRORRRORRRRRORRORRRROORORRRRRRRRRORRRRRRRRRRRRRRRRRROORRRRRRORRRRROORRRRORRRRRRRRORRORRRRRRROORRRRRORRRRRRORRRRRRORRRORRRORRORRRRRORRRRRORRRRORRORRRRRRRROROORRRRRRRRRRORRRRRRRRRRRRRRRRROORRRRRRRRRRORRRRRRRORRRORRRRRRRRORRRRRRORROORRRORROORRORRRRORRRRRRORRRRRRRRORRRRRRRRRRRRRRRRRORRRRROORRRRORRRROORRRRRRRRRRRRRRRROORRRRRORRRROROORRRRRRRRRRRRRRORRRRRRORRRRRRRRRORRRRRRRRRRORRRORRRRRRRORORRORRORRRORRRRRRRRRORRRORRORRORRORORRRRRORRRRRRORORRRRRRRRRRRRRRRRRRRORRRRRORORORRRRRRRRRRRRORRORRRRRRRRRRRRRORRRRORRRORRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRROOROROORRRRRRRRRORRRRORRRRRRRRRORRRRORORRRRRRRRRORRRRRRRRRRRRRRRRRORORROORRRORORRRRORRRRRRRRRRRRRRRRRRRRRORRRRRRRORRRRRRRRRRRROOORRRRRRRRRRRRRRROORRRRRRRRORRRRRORRRRRRRORRRRRRRRORRRRORRRRRRRORRRORRRRORRROROROORRRRRRRRRRORORRRRORRRRRORRRRRRRRORRRRRRORRRRRRRRRRRORRORRRRRRRRRRRORRORRRRRRRRRORRRORRRRRORRORRRRRRRRRORRRRRRRROOOORRRORORRORRRRRRORRRRROORROORORRRRRRRRORORRRRRRRRRORRRRORRRRRRRRRRORROORROORRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRRRRRORRRRRRRRRRORRRRRRRRRRRRRRRRRRRROORRRRRRRRRRRRRRRORRRRRRORRRRRORRRRRRRRRORRRRRRRRRORRRRRRORRRRRRRRORRRRRRRRRRRRRRRORORORRRORRRRRRRRRRRRRRRRRRORRRROROORROORORRRRRRRRRORRRRRRRRRRORRORRRRRRRRRRORRRORRORRRRRRRRRRRRRRRRRRRRRRRRORRRORRRRRRRRORRRORRRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRROORORRRRRRORROORRRRRRRRRRRRRRRORRRRROORRRRRRRRRRORROORRRRRRRRRRRRRRRRRRRRRORRRRRRRORRRRRRRRRRRORRRRRRRRRORRRRRRRRRRRORRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRORRORRRRORRRRRORORRRRRRRRRORRRRORRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRORORRRRRRRRRRRRRRRROORRRRRRRRRRRRRROORRORRRRRRRRRRRRRRRRROROORRRRRRRRRRORRORRRORRRRRORRRRORRRRORRRRRRRRRRRRRRRRRRRORRRRRRROORRRRRRRRROORRRRRORRRRRORRRRROORRRORRRROORRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRROORRORRRRRRRRORRRRRRRRORRRRORRORRRORRRRRRRORRRRRRRRORRRORORRRRRRRRROOORRRORRRORRRRRRRRRRRRRRRRRRRRRRRRRRRORRORRRRRORRRRRRRRRRRRRRRRRRRRORRRRORRRROORRRRRORRRRRORRRRRRORRORORRROROOORORRRORRRRRRRRRRRRORRRRRRRRRRRRRRRRRRRRORORRRRRRRRORRRRRRRRORRRRRRRRRRRRRRRRRORRORRRRRRRRRRRRRORRRRRRRRRRRRRRRRROORRRRRRRRRRRRRRORRRRRRRRRRORRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRORORRRRORRRORRRORRRROORRRORRRORORRRORRORRORRRRRRRORRRRRRRORRORRRRRRROORRORRRRORRRRORRRRRORRRORRRRRRRRRROORRORRRRRRRRRRRRRRRRRRRRRRRRORRORRROORRRROORRRRRRRRORRRRRRRRRRRRROORRRRRRRRORRRRRRRRRRRORORRRRROROORRRRORRORORRROORRRORRORRRRRRRRRRRRRRRRRORRROORRRRRRRRRRRRRRRORRRRRRRRORRRRRRORORRRRRRRORRRORRRRRRRRORRRRRRRORRRORORORRRORRRRRRRRRRRRORORRROORRORRRRRORRROORRRRORRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRORROORRRORRRORRRRRRRRRORRRRORRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRROROORRRRRROORRRRORRRRORRRORRRRRRRORRRRRRRRRRORRORRRRRRORRRRRRRRRRRRRRRRORRRRORRRRRRRORRRRRRRROORRRRRRRRRRRRRRRRRROORRRRRORRRRORRRRRRRRORRRROORRRRRRRRRORRRRRORRRROORORRORRRRRORROROROORRORRRRRORRORRRRRRRRRRORRRRRORRRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRROORRRRRRRRRRRRRRORRRORORRRRRRRORRRRRRRRRRRRRRRRRRRRRRORRRROORRRRRRORRRRRRORRRORRRRRRRRRRRRRRRRRRRRRRRRRRRROORRRRRRRROOOORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRROORRRRRROORRORRRRRRORRRRRRRRORRORORRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRORRRRRRRRRRRROORRRRORRORRORRRRRRRRRORRRRRORRORRRRRRRRROORRRRRRRRRORRRRRRORORRRRRRRRRRRRRRORRRRORRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRORRRRRRRRRRRORRRRRRRORRRRRRRRRRRORRRRORRRRRRRRRRRORRRRRRORRRRRRRRRRRRRRRORRRRRRRRRORRRRRRRRRRRRROORROORRORRRRRRRRRROORRRORORRRORRRRRRRRRRRRRORORRRORORRRRRRRORRRRORRRRRRORRRRRRRRRRRRORRRRRRRRORRRRRRRRRRRRRRRRORRRRRRRRORRRRRRRRORRRRRRRRRRRORRRORRRRRRRRRRRRRORRRORRRRRRRRRRRRRRRRRRRRROORRRRRORORORRRRRRRRORORRRRRRRROROROORORRRORRRRRRRORRRRRRORRRRRRRORRRRRRRRRRRRRRRROORRRRORRRORRRRRRRRRRRRRRRRRRRORRRRRRRRROORRORRRRORRRRRRORORRRRRRRRRRRRRRRRRRRRRRRRORRRROORRRORRRRORRRRRRRRRRRRRRRRRRRRRRORRRRRRRRROORRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRORRRRORRRRORRRORRRORRRRRRRRRORRRRRRRRRORRRRORRRORRORRRORORRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRORRRORRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRORRRRRRRRRRRORRRRRRRORRRRRORRRRRRRRRRRRORRRRRRORRRRRROOORRRRRRRRRRRRRRRRRORRRRRRRRRRRRRORRORRRRRRRRRRRRRRRRRRRORRRROOORRRRRRRRRRRRRRRRRRRRORRRRRRRRORRRRRRORRRRRRRRORRRRRRRRROROORORRRRRRRRRORRRRRRRRRRORRRRRRRRORRRRRRRRRRRRRROORRRRRRRORRRRRRRRRRRRRORRRRORRORRRORRRRRRRRRRRRRRRORRORORORORRRRRRRRRRRRRRRRRRRRRRRRRRORORRRRRRRRRORRRRORORRRRRRRRRRRRORRRRRRRRRRRRROORRRRRRRRRRRRRRRRRRRRORRRRRORRRRRORRRRRRORRRRRRRORORRRROORRRRRORRRRRRRRRRRRRRRRRRRRRROORRRRRORRRORRRRORORRRRRRRRRRRRRRRRRRRORRRRRRRRRORRRRRRORRORRRRRRRRRRRORRROORRRRRRRORRORRRRRRRRRRRRRRRORRORRRRORRRRORRRRORRRRRRRRRRRRRRRORRRRRROORRROOORRRRRRRORRROORRRRRRRRRRRRRORRROORRRORORRRRRRRRRRRRROORORRRRRORRRRRORRRRRRORRRRRRORRRRRRRRRRRRRRRRRRORRRORORRRRRRRRRRRRRRRRRRORRRRORRRRRRORRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRORRRRORRRRRRRRRRRROORRRRORRRRRRRRRRRRRRRRRRRRRRORRRRRRORRRORRRRRRRRRRRRRRRORRRRRRRRRORRRRRRRRRRRRRRRRRORRRRORRRRRRRRRRRRRRRRRRRRRORRRRRRORRORRRRRRROOORRRORRORRRRRRRRRRRRRRRRORRRRRRRRRORORORRRRRRRRROORRRRRRRORRRRRRORRRRRORRRRRRORRORRRRRORRRRORRRRRORRRRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRROORRRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRROORRRRRRRRROORRORRRRRRRRORRRRRRRRRRRRRORRRRORROORRRRRRRRROOORRRRRRRRROORRRROORORRRRRRRRRRRRRRRRRRRRRRRORRRRRORRRRRRORRROORORRRRRRRRRRRRRRRRRRRRRRRRRRRRRORORRORRRRRRRORRRRRRROOORRRORORRRRRRRORRRORRRRORRRRRORORRRRRRRRRRRRRRRRRRRRRRORROORRORRRRRRRRRRRRORRRRRRRRRRRRRRRRRRRRROORRRRORRORRRRRRRRRRRRRRORRORRRORRRRRRRRRRRRORRRRORRRRRRRRRRORRRORRRRORRRRRRRRRRRRRRRRORRORRRRRRRRRRORORRRRRRRRRORRRORRORRRRORRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRORRRORRRORRRRRRRRRRRRRRRORRRRRRRORRORRRRRRRRRRRORORORRORRORRRRRRORRRRRRRRRRRROROORORRRRRRRROROORRORORRRRRRRRRRRRRORRRORRRRRRRRRRRRRRRORRRRORRRRRRRRRORRRRRRRRRRRRORORRRRRRORRRROORRRRORRRORRRRRRRRRRRORRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRORRRRRRRRORRORRRRORRRRRORRRRRRORRRRRRRRRRRRRRORRRRRRRORRRRRRRRORRRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRORRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRROORRRRRRORRRRRRRRRRRRRRRRRRRRRORRRORRROORRRRRRRRORRRORRRRROORORRRORRRRRRRRRRRRRORRORRRRRRORRORRRRRRRRRRRRRRRRRRORRORRORRORRRORORRRROORRRRRRORRRRRRRRRRORRRRRORORRRRRRRRRRRORRRRRRRRROOORRROORRRRORRRRRRRRRRRRRRORRRRRRRRRRRORRRRRRRRORRRRRRRORRRROORRRRRRRORRORRRRRRRRRRRRRROOORRROROORRRRRRRRRRRRRORRRRRRRRRRRRRORRORRRRRORRRRRRRRRRRRRORRRRRRRRRORRRRORRRRRRRORRRRRRRRRRORRRRROROOORORRRRRRRRRRRRRRRRORRRRRRRRRORORRRRRRRRRRRRORRRRRRRRORRRRRORRORRORRRRRRRRRRRRRROROORRRRRRRORRRRRORORRRRRRORRRRRORRROORRRORRRORRORRRRRRRRRRRRRORROROORRRRRRRRRRRRRRRRRRRRORRROORRRORRRRRRRRRRORRRRRRRRRRRRRRRRORRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRRROORORRRRORRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRORORRRRRRRRRORRRRRORRRROORRRRRRRRRRRRRRRRORRRRRORRRRRORORRRRRRRRRRRRROORRRRRRRRRRRROROORRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRORROROORRRRRORRRRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRRRORRRRRORRRRORRRRRRORRRRRRRRRRRRRRRRRRRRORORRORRROORRRRRRRRORRRRRRRRRRRRRRRRRRRRRROORRORRRRORRRRRRRRRRRRRRORRRRORRRORRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRORRRRRRRRRORRRRRRRRRRRORRRRRORRRRRRRRORRRRRRRRRRRRRRRRRRRORRORRRRRRRRRORRRRRRRRRRORORRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRORRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRORRRRORROOORRRRRRRRRRRRRRRRRRRRRRRRRROORRRRRRRRORRRRRRORRRRRRRRRRRRORRORRRRRRRRORRRRRRRRRRORRROORRRRRRRRRRRRRRRRRRRRRRRRRRRRRROORRRRRROORRRORRRROORRRRORRRRRRRORRRRORROORRORRRRRORRRRRORRRRORORORRRRRRRRRRRRRRRRRRRORRRRRRRORRRRRORRRRRRRRRRRRRRRRRRORRRRRRRROORORRORRRRRRRRRRRRRORRORRRRRRRRRRRRRRORRRRRORRORRRRRRRRRRRRRRRRRRRORRORRRRRRRRRRORROROROORRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRORORRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRROROOORRRRRROORRRRRRRRRRRRRRRRRRRRRRRRRORORROORRRRRRORRRRRRRRRRORRRRRORRRRRROORRRRRRRORRRRRRRRRRRORRRRRRRRRRRRRRRORRORRRRRRRRRRRRRRORRRROORRRRRRRRRORORRORRRORRORRRRRORRRRRRRRRRRRRROROORRRRRORRRRROORRRRRRRRRRRRRRRRRRRRRRRRROORRRRRORRRRRROORRROROORRRRRRRRRROORRRRRRRROORRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRORRRORRRRORORORRRORORRRRRRRRRRRRRRRRRRRRRORRRRRRRRORRRRRRRRRRRORRRRRRRRORRRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRRRRRROORRRRRORRRRRRRRRORRRRRRORORORROROROORORRRRRRRRRRRROROORRRROORRRORORRRORORRRRRRRRROOOORORRORRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRRRRRRORORRRRRRRRRRRRORRRRRRORRORRRRRRORRRRRRRRRRRRRRORRRRRRRRRORRRROORRRRRRRORRRRRRORRRRRRORRRRRRRRRRRRRRRRRRORROORORRRRORRORRRRRRORRRRORRRRRRORRRRRRRRRRRRRRRORRORRRORORORRRRRRRRRRORRRORROORRORRRRRRRRRRRRRRRRRRRROORRRRRRRORRRRRRRRROORRRRRRRRRRRRRRRRRRRRRRRRRRROOORORRRRRRRORRRRRRORRRRRRRRRRRRRRORORRRRRRRRRORRRRRRRRRRRRRRRRRRRRROORRORRRORRRRORRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRRORORRRRRRRRRRRRRRROORRRRRRRRORRRRRRRRRRRORRORRORRORRRRORRRRRRRRRRRRRRRRRRRROORRRORRRRRORRRRRORRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRORRORRRRRRRRORRRRRRORRRRRRRRRROORRORORRRORRRRRRRRRRORRRRRORRRORRRRRRRRRRRRRRRRRORRORRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRORRRRORORORRRORRRRRRRRRRRRRRORORORORRRRRRRRRRRRRRRRRRROORORRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRRRRROORRRORRRRRRRRORRRRRRRRRRRRRORRRRRRRRRRRRRRRRORRORRRRRORRRRRRRRRORORRRRROORRRRORRRRRRRORRRRRORRRRRORRRORRRRRRRRRROORRORRRRORRRORRORRRORORRRRORRRRRRRRRRRRRRRRRRRRRRRRORRRORRRRRRRRRRRRORRRRRRORORRRRRRRRROORRRRRRRRRRRORORRRRRRRRRORRRRRRRRRRRRRRROORORORRRRRRRRRRRRRRRRORRRRRRORRRROORRRRRRORRRRRRORRRRRRRROROORRORRRRRRRRRRRRORRRRRRRRRRRRORRORRRRRRRRRRRRRRRRORRRRORRRRRRRRRRRRORRRRRORRRRRRRRRORRRRRORRRRRORRORRRORRRRRROORRROORRRRRRRRORRRORRRRRRRROORORRRORORRRRORRRRRORRRRRRRRRRORORRRRRRRRRRRRRRRRORRRRORRRRORRRRRROORRRORRRRRORORRRRORRRRRRRRRRRRRRRRORORRRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRORRRRRRRRORRRRRRRRRORRRRORRRRRRRRRRORRRRRORRRRORRRORRRRRRRRRRRRROORRRRRRRRRORRORRRRRORORRRRORRRRRRRORRRRRRRRRRRRORROROORRRRRRRRRRRRRRRRORRRRRORRORRRRRRRRRRRORRRRRRRRRORRRRRRRORRRRRRRRRRORRRRRORORRRRORRRRRRRRRRRRRORRRRRRRRRRRRORRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORORRRORORORRRRRRRRRRRRRRRRRRRRRROORRORRRRRRRROOORRRRRRRORRRRORORRRRRROORRRRRRRRRRRRROORRRRRORRRRRRRRRRRRRRRRRRRORRRRRRRRRRRORRRRORRRORRRRRRORRRRRRRRRRRRRRRRORRORRRRORRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRORRRRRRRRRORRRRORRRRRORORRRORRRRRORRRRRRRORRRRRORRRRROOOORRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRRORRRRRRRRRRORRRRRRRRRORORRRRRRRRRRRRRORRRRRRRRRRRRRORORRRRRRRORORRRRRRRRRRORRRRRRORROORRORRRRORRRORRRRRRORRRRRRRRRORRROROORRORROROOORROORRRRRRRRRRRRORRRRRRRRORRRRRRRRRORRRRORRRRORRRRRRRRRORRRRRRRRRRRRRRRORORROORRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRRORRRRORORRRRRRRRORRRRRORORRRRRRRRRRRRRRRRRRORORRRORRORORRRORORORRRRRRRRRORRRORRRRRRRRRRRRRRRRRORRRRRRRRRRORRRRRRORRRRORRRRRRRRRRRRRRRRRRRRRRORRORRRROOROROORRRORRRRORRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRROORORORRRRRORRRORRRRRRRRRORRRRRRRRRRRORORORRRRRRRRORRRRRRRRRRRORRRRRRRRRRRRRRRORRRRRRRRRORRRRORRRRRORRRORRRORRRRRORRRRRORRRRORRRRRRRRRRRRORORRRRRORRORRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRORRRORRRORRRRROORRRRRRORRRRORORRRRRORROOORRORRORRRRRRROORRORRRRRRRRRRRRORRRRRRRRRRRRRRRRRORRRRRORRRRRRRRRRRRORRRRRRRORRRRRRRRORRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRORRRORRORORRRRRRRRRRORRRRRROOOORRORRRRRRRRRRRRORORRRRRRRORRRRRRRRRRRRRRRRROORRRRRRRRORRRRRRRRRRRRRRORRRORRRRRRORRRORRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRROORRORRRRRRRORRRROOORRRRRRRRRRRRORRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRRRRORORRRRRRRRRORRRRRRRRROROORRRRRRRRRRRRRRRRRRRRRRRORRRRRORRORRRRRRRRRRROORRROORORRRRRRRRRRRORRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRORRORRRRRRRRRRORRRRORRRRORRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRORORRRRRRRRRRRRRRRRRRRRRORRRRRORRRRRRRRRORORORRRRRRROROORRRRRRRRRORRRRRRRRRRRRRRRRRRRRORRRRORRRRRRRRRRRRRRRRORRRRRRRRRRRRRRORRRRORRRORRRRRRRORRRRRRORRRRRRRORORRRROORRORORRRRRRRRORRRRRRRRRRRRRORRORRRRRRRORRRRRRRRORRORRRRRORRRRRRRRRRRORRROROORRORRRRRRRRRRRRRROORRRRORRRORROROROORRRORRRRRRRORORRRRRRORRRROORRORORRRRROORRORRRRRORORRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRORORORRRRRRRRRRORRRRRRRRRRRRORRRRRRRRORRRRRRRORRRRRRRORRRRRRRORRORRRORORRRRRRRRRRRRORRRRRORROOROORRRRRRRRRRORRRRRRRORRRRRRRORRRRRRRORRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRORRRRRRRRRRRRRRRORRRRORRRRRRRRRRRORRORRRRRRRRRRRRRRRRRRRRRORRRRRORRORRRORROORRORRRRRRORRRRRRRRRRRRORRORRRORRRRRRRRRRORRRORRRRRRRRRRRORORRRROORRRRRRRRRRRRRRRROORRRRRRRRRRRRRRROORRRRRRRRRRRRROORORRRRRORRRRRRRORRRRRRRRRRRRRRRORORRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORORORRRORRRRORRRROORRRRRORRRRRRRRRRRRRRRRRRRRORRORRRRRRORRRRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRORRRRRRRRRRRORRRRRORRRRRRRRRRRRRRRRORRRRRRRRRRRRORORRRRRRRRRRRRRRRRORRRRORRRRRRORRRRRROORRORRRRRRRRRRRRRRRRRORRRRORORRRRORRRORRORRRRRRORORRRRRRRORRRRRRORRRRORRRORRRRRRRRRRRRRORRRROORORRRRRRRRRRRRRRRORRRORRORRRRRRRRRRRRRRRRROORORRRRRRRRRRORRROORRRRRRORRRORRRRORRRRRRROORRRRRRORRRRRRORROORRRRRORRRRRRRRRRRRRRRORRRRRORRORRRRORORRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRORRRRORRROORRRORORRRRRRRORRORRRRRRRRRORRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRORRRRRRROORRRORRRORRRRRORRRRRRRRRORRRORRORRRRRORRRRRORRRRRRRORRORRORRRRRORORRRORRRRRRRRORRRRRRRORRRRRRRRRRRRRRORRRRRRRRRRRRRORRRRORRRRORORRRRRORORRRORRRRORRRRRRRRRRRRRRRORRRRRORRORORRRRRRRORRROORRRRRORRROOROORRRRORRRRRRRRRRRRRRRRRRRRRRORRORORRORRRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRROORRRORRRRRRRRRORRRRRORRRRRRRRRRORRRRRRRRRRRRRRORRROORRRRRRRRORRRRORRRRRRRORORRRRRRRRRORRRRRRORRRRRRRRORRORRROORRRRRRRRRRRORRRRRRORRRRRRRRRRRRORRRRORRRORRRRRRRRRORRRRRRRRRRRRROORORRRORRRRRRRRRORRRORRORRRRORROROORRRRRRRRORRRORRRRRRRRRRORRORRRRORRRRRRRRRRORORRRRRRRRRRORRRRRRRRRRRRRORRRRRRRRRRRORRRRRRRRRRRRRORRRRRRRRORRRRRRRRRROORRRRRRORRRRRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRROORRRRRRRRRRRRRRRRRRRORRRRRORRRRRRORRRRORRRRRRRORRORRRRRRRRRORRRRORRRRRRORRRRRORRORRRRORRRRRRRRRROORRRRRRRRRRRRORRRRRRRRORRRRRRRRRRRRRRROORRRORRRRORRRRRRRRRRRRRRRORRRRRRRRORRRRRRRORRRRRRRRORRORRORRRORRRORRRRRRRRRRORRRRRRRRORRRRRRRRRRRRRRRRRRRRRRORROORORRRRRRRRRRRRRRRRRRRRRROORRRRRRRRRORROORORRRRRRRRRRRRRRRORORORRRRRRRORRORRRRRRRRROORRRROORRRRROORRRRRRORRRRRRORRRRRRRORRRRRRRRRRRORRORORRRRRRORRRORROROORRRRRRRORRRRRRRRRRRRRRORRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRORORRRRRORRRRRRRRRROORRRRRRRRORORRRRRRORRRORRRRRRRORORRRRRRORROORRRRRRRRRRRROORRRRRRRRRRRRRRRRRRRRORRRRRORRRRRRRRRRRRRRRORRRRRORRRRRRRRRORRRORRRRRRRRRRRRORRORORRRRRRRRORRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRORRRORRRRRRRRORRRRRRRRORRRRRRORRRRRRORRRORRROOOORRRORRRRRRRORORRRRRRRRRRRRRRRRRORRORRORRRRRRRRRRORRORRRRRRROORRRORRRRRRRRRRRRRRRRORRORRRRRRRRRRRRORORRRRRRRRRRROORRORRRRRRRORRRRRRRRRORRRRRRRORRRRRRRRRORRRRORRRORRORORRORRRRRRORRRROROORRORRORRRRRRRRRRORRRRRRRRRRRRRRRRORRORRRRRRRRRRRRRRRRRRRRRRRRORRORRORRROROORRORRRRRRRRRRRRRRRRRRRRRRRRORRORRORRRRRRRRRRRRRRORORRRRORRORRRRRRORRRRORRRRRORROROROORRRORRRRORRRRRRRRRRRROROORORRRRORORRRRRRRRRORRRRRRRRRROROORRRORRRRRORRRRRORRRRORRRRRRRRORRRRRRRRRRRORRRRRRRORROORRRRRORRRRORORRRORRRRORRORRROORRRORRRRRRORORRRRRRRRORORRRRRRRRRRRRRRRRRRROORRRRROORRORRRRRORRRRRRRRRROORRORRRORROORRRRRRORRRRRRRORORRRRRROROORRRRRRORROORRRRRRORRRORRRORRRROOORRORRRRORRROOROORRRRORRRRRRRRRRRRRORRRRORRRRRRRRRRRRORRRRRORRRRORRRRORROORRRRRRORRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRRRRRRORRRORORRRRORORRRRRRRORRRRORRRRRRRRRRRRRRRRRORORRRRRRRRROORRRORRRRRRRRRRRORRRRRRORORRRRRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRROROORRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRROOORRORRRRORORRORRRRRRRORRRROROORRRRRORRORRORRRRRRROOORORORRRRRRRRRRRRRRROORRRRRRRORRRRORRRORRRORRRRORRRRORORRRRORRORRRRRRRRRRRRRRRRRRORRRRRRORRRORRORRRRRRRORRRRRRRRRRORRORRRRRROORRRRRRRRRRRRRORRRRRRRRRRORORRRRRRRRRRORRRRRRORRRRRRRRORRORRRORRRRORRORRRRRRRRRRRRRRRRRRRRRORRRRRRORRRROORRRRORORRRRRRRRORRRRRRRORRRRRRRRORRRRRRRRRORRRRRRRRRRRRRRORRRRRRRORRRRORORRRRRRRROORRRRRRORRRRRRRORRRRRRORRRRORRORORRRROORROORRRORRRRRRORRRRRORRORRRORRORRRRRRRRRRRRRRRRRRRORRRRRORRRRRRRRRROOORRRRRRRRROORRRRRORRRRRRRORRRRRRORRRRRRRRRROORRORRRRRRORRRRRRRRRRRRRRORRRRRRRRRRORRRRRRRORRRRRRRRRRRRRRRRORRRRRRRRRORRRRRRORORRORRRRRRRRRRRRRRRRORRRRRRRORRRRRROORORRRRRRRRORRRRRRRRORRORRRRORRORRRRRRRRRRRRRRRRRRRRRRRRRRORRRRORRRRRRORRRORORRRRRRRRRRRRRRRORRRORRRORRRRRRRRRRRRRRRRRRRRRRRORRORRRRRORRRRORRRRRRRRRRRRORRRRRRORRRRORRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRORRRRRORRRRRRRRRRRRRRRROORRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRORRORRRRRRROORRRRRRRORORRRORRRRRRRORRORRRRRRRRORRRRRRRRRRRRRRRRORRRRROORRORORRRRRRRRRRORRRRORRRRRRORRRRRRORRRRRRRORRRRRRRRRRORRRRRRRRRRRRRORRRRORRRRORRRRRRRRRRRRRRRRROORRRORRRRRRRRRRRRRRRRRRRRRRRRRRRORRORRRRRRRRRRRRRRRRORRRRRRRORRORRRRORRRRRRRRRORRRRRRRRRRRRRRRORRRORORROORRRRRRRRRRRROORRRRRRRRRRRRRRRRRORORRRRRRRORRRRORRRRRRORRRRRRRORRORRRRRRRRRORRRRRRORRRRRRRORRORRORRRRRRORRORORRRRRRRRRRRORRRRORRRROORRRORRRRRRRRRORRRRRORRRRRRRRRRRORRRRRRORRRRRROORRRRRRRRRRORRRRRRRRORRORORRRRRRORRORRRRRRRRRRRRRRRRRRRRRRROORRRRRRRRRRRROORORRRROORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRORRRRRRRRRRRRRRRRRROORRRRRRRRRORRRROORORRRRRRORRRRRORRRORRRRRRRRRRRRRORRRRRORRRRRRRRRROORRORRRRRRRRRRRORORRRRRRORRRRRRRRRRRRRRRROOORRORRRRRRORORRORRRRRRRROORRRRRRRRRRRORRRRRRRRRRRRRRRRRRRORRORRRRRRORRRORORRRRRRRRRRORRRRORRRRORRRRRRRRRRRRRRRRRRRRRRORRRRRRORRRRRRRRRRRRRORRRRRORRRRRRRRRRRRRORRRRRRRRRRRORRRORRRRORRRRROOROORRRRRRORRRRRRRRRRRORRRORRROROORRRRRRRRRRRRORORRRRRORRRRORRRRRRRRRRRRRRRORRRRRORRRORRRORRRRRRORORRRRRRRRORRROROORORRRRRRRRRRRORRRRRRRRRRORRORRRORORRRORRRRORRRRRRRRRRORRRRRROOROORRRRRRROORRORRORRRRRRRRRRRORRRRRRRRRRRRRRRRORRRRRORRRRRRRRRORRRRRRRRORRRRRRRRRRRRORRRRRRORRRRORRRRRRORRROORRRRRRRRRRORORRRRRRRORRRRRRRRRRRORRRRRRRORRRRRRRRRRROORRRRORRRRRRRORRORRRRRRRRORRROORRRRRORRRRRORRRRRRRORRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRROORORRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRORRRRRORRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRORRRRRRRORRRRRRRRRRRORRROORRRRORRRRROROOORRRORORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRORORRRRRORRRRRORRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRORORORRRRRRRORORRRRRORRRORRRRORRRRRRRRRRRRRRRORRRRORRRRRRRORRROORRRRRRRRRRRRROORRORRRRRRRRRRRRRRRRRORRRRRRRRRORRORRRRRORRRRRRRRORORRRRRRRRORRRORRORRRRRORRRRROROORRROORRRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRORRRORRRRRRRRRRRRORRRRRRRRRRORORRRROORRRORRORRORORRRRRRRRRRRRRRRRRRRORRRRRRROROORRORRRORRRRRRORRRORRRRRRRRRRRRRRRRRORRRRRORRRORRRRRRORRRRORRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRORRRRRRRRRORRRRORRRRRRRRRRRRRRRRRRRORRRRRRRRORRRRORRORRRRRRORRRORRRRRRRRRORRRORRRRRRRRRORRRRRRRRRRRRRRRRRORORRRRORRRRRRRRRRRRRRORORRRRRORRRRRRRRRRRRORRRRORORROORRRROORRRRRRRRRRRRRRRRRRRRRRORRRRORRRORRRRRRRRRRRRRRRORRRRRRRROORRRRRRRRRRRRRRRRRROORRRRROOORRORRRRRRRRRRRRRORRRRRRRRRORRRRRORRRRRRRRRRRRORRRRRRRRORRRRROORORRRRRRRRRRRRRRORRRRRRRRRRRORRRRRORRRRRRRRRRORROORRRRORRRRRRRRRRRRRRORRRRRRRRRRRRRRRORRRRROORRORRRORRRRRRRRRROROORRRORROROORRRRRORRRRRORRRRRORRORRRRRRRRORRRRRRRRRRRRRORRRRRRORRRRRROORRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRRRORORORRRRRORRRRRRRRRRORRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRORRRORRRRRRRRRRRRRORRRRRRRORORRORRRRRRORRRRRRRRRRRRRRRRRRRRRRROOORRRRRRORORRRRORRRRRRRRORRORRRORRRRRRRORRRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRORRRRRROORRRRRRRRRRRORRRRRRRRRRRRORRRRRRRRRRORROOOOORRRRRORRRRORRRRRRORRRRRORRRRRRRRRRRORRRRORRRRRRRRRRRRRRRRRRRRRRRORRRRRRRRRORRRORRRRRRRRRRRRRRRRRRRRRRORRRORORRORRRRRRRORORRROORRRRRRRRRRRRRRRROORRRRRRRRRORRRRRORRRRRRRRRRORRRORRRRRRRRRRRORORRRORRRRRORROORRRORRRRRRRORRRRRORRORRRRRRRRRRRRORORRRRRRRRORRRRRRORRRRRRORORORRORRRRRRRRRRRRRRRRRORRRRORRRRORRRRORRRRRRORRRRRRRORRRRRRRRRORRRRRRRRORRRRRRRORRRRRRRRRRRRRRORRRRROORRRRORRRRRRRRROORRRRRRRRRRRRRRRRRRRRRRRRRRORRORORRRRRRRRRORRORRRRORRRRRORRRRRRRRRORRRRRRRRRRORRRRRRRRRRRRRRRRORRRRRRRRORORRORORRORRRRRRRRRRRRRRRRRRRRRROROORRRRRORORROORRRRRRRRRRRRRRRRORRRORORRRRRRRRRRORRORRRRRRRRRRRROORROORROORRRRRRRRRRRRRRRORRRRRRROORRRRRROORRRRORRRRRORRRRRRRRRORRORRRRRROORRRRRRRRORORRRRRRRORRORRRRRORRRRRRRORRRRRRRORRRORRRRRRRORRRRRRRRRRRRRRRRRRRORORORORRRRRRRRRORORRRRRRRORRORRRRRRORRRRORRRRRROORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRORRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRORORRORRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRORRRRORRRRRRRRRRRRORRORRRRRRORRRRRRRRRORRRRRRRRRRORRORRRRRRORRRORRRRRRORRRRRRRRRRRRRRRORRRRRRRRRRRRRRRORRRORRRRRRORRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRRRORRRORRRORRRRRRRORRRRRORRORRRRRRRRRRRRRRORRRRRRRORRRRRRRRRRRRORRRRRRRRRRRRRORRRRRRROORRORRRRRRORRRROORRRORRRRRRRRRORORRRRRRRORRRORRRRRRRRRRORRRRRRRRRRRRRRORORRRORRRRRRRRRRRRRRRRORRRRRRRRRRRORRRORRRRORRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRORORRRRRRORRRRRRRRRRRRRRRRRRRRORRORRRRRRRRRRRORRRRRORRORRRRRRRRRRRRRRRRORRRRRRRRRROORRRRRRRRRRORRRRORRORRRRRRORRRRRRRRRORORRRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRORORRRRRRRRRRORRRORRRRRRRRRRRORRRRRORRRRRORORRRORORRRRRRORRRRORORRRRRRRRRRRRRRRRRRORRRRRRRRRROORRRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRRROORRRRORRRRRRRRRRRRRRRRROORRRRRRRRORRORRRRROROORRRRRORRRRRRRRRRRRRRRRRORRRRRORRRRRRRRRRRRRORRRRRRRRRRRRRRRORRORRRRRRRRRRRORRRORRRRORRORRRRROOORRRORRROOORRORRRRRRRRRRRRRRRRORRRRRRRORRRRORRRRRRRRRRRRRRRRRRRRRORRRRRRORRRRRRRRRRRRRRRORRRRRRRRRRORORRORRRRRRRRROORRRRRROORRRORRORRRRRRRRRRRRRRRRRRROORRRRRRRROORRRRRRRRRRROORRRRRRRRRRRRRRRRRORRRRRRRRRRRRRORRRRRORORRORRRORRRRORRRORRRRRRRRORRRRRRRRRRRROORRRRRORORRRRRRRRRRRRRORRRORRRRRRRRRRRRRORORRRRRRRROORRORRRRRRRRRRORRRRRRRRRORRORROORROOORRRRRRRRRRORRRRRRRRRRRRRRORRORRRRORORRRRORRRRRRRRRRRRORRRORRRRRRRRRRRRRRRRRRRRRRRRRRORRRRRORRRORRRRORRRRORRRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRORRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRORRRRORORRRORRRRROORRRRRRRRRRRRRRRRRRRRORORRRRRRRRRRORORRRRRRRRRRRRRRORRRORORRRORORRORRRRRROORRROORRRRRRRRRRRRRRRRRRRRRORRRRRRRRRRRROOORRRRORRRORRRRRORRRRRRORRRRRRRRRORRRRRRRRRRRRRRRRRORRRRRRRRRORRRORRORRRRORRRRRRORRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRRRRORRRRRRRRRORORRRRRROORRORORRRORRRRRRORRRRRRRRRROROORORRORRRRRRRROORORRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRORRRRORRRRRRRRORRRRRRRRRRRORRRRRRRRRRRORORORRORRRRRRRROORORRRRORRRRRORRORRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRROOORORRRRRRRRROROORRRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRORRRRROOORRRRRRRORRRRRRRORRORRRRRRRRRRRRRRRRRORRRORRRRRRRORRROOORRRRRRRRORRRRRRORRRRRRRRRRORORRRRRORRRRRRRRRRRRRORRRRRRRRRRRRRRRORRRRRRRRROORRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRORRORRROORRRRRRRORORRRRRRRRRORRRORRRRRRORRRRRORRRRRRRRRRRORRRORRRRRRRRRORRORRROORRRRRRRRRRRRRRORRRRORRORRRRRRRRRRRRORRRRRORRRRRRORRRRRROORORRRRRRRORRRORRROOOORORRRRRRRRRRRRRRRORRORORRORRRRRORRORRRRRRRORRRRROORRRRRRRRRRRRROOORRRRRRRROORRRRRRRRRRRRRRRRORRRRRRRRRRRRORRRRRRRRRRRRORORRRRORRRRRRRRRRRRROORRROORRRROORRRORRRRRRRRRRRRRRRRRRORRRRRRRRROROORRRRRORRRRRORRRRRRRRRRRRRRRRORRRRORRORRRRRRRRRRORORRRRRRRROORRRRRRRRRRRORRRRRRRRORRRRRRRORRRRRRRROORRRRRRRRRORROOROORRRRRRORRRORRORROORRORRRRRRRORRRRRRROOORRORRRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRRORRRRRORORRRORORRRRRRRRRRRRRRRORRRORRORRRORRRRRRRRRRRRORRRRRRRRORRRRORRRRRRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRRORRRRRORRRRRRORRRRRRRRRRRRRRRRRRRRRRRRROORRRRRRRRRRRRRRORRRRRRRRRRRRRROROORRRRRRRRRRORRRRRRRRRRORRRRRRRRRRRRRRRRRORRRRRRRRRRRRRORRRRRORRRRORRRRRRRRORRRRORRRRORORRRRORORRRRRRRRRRRRRORRRRORRORRRRRRRRRORORRRRRRRRRORRRRRRRRRRRRRRRRRRRORRRORRORRRRORRRROORRRORRORRRORRRRRRRRRROORRRORROORRRRRRRRRRRRORRRRRRRRRRORRRRRRRRRORRRRRORRRRRORRRRRRRRORRRRRRRRRRRORORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRRRORRRRRORRRRORRRORRRRRRRRRROORORRRRRRRRRRORRRORRRRORORRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRORORRRRRROORRRRRORRRORRORRRRORRRRORRRRRRRRRRRRORRRORRRRRRRORRORRRRRRRRORRRRROORRRRRRRRORRRRORRORRRORRRRRRRRRORRORRRRRRORRORRRRORORRRRRORRRRRRRRRORORRRRRRRRRRRRRRRORRRORRRRRRRRORRRRRRRORRRRRRORRORRRRORORRRRORORORRORRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORORRRORRRRRRRRRRROORRRRORRRRRRRORRRRRRORRORRRRORROROORORRRORRRRRRRRRRRRRROORRRRRRRRRORRRRRRRRRRRRRRRRRRRRRORRRRRRRRRORRRRRRORRRORRORRRRRRRRROORRRRORRRRORRRRRRORRORRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRRORRORRRRORRRRORRRRRROORRRRORRORRRRRRRRRORORRRRRRRRRRRRORRRRRRRRRRRRRRRRRRRRORORRRORRORRRRRORRRRRRRRRRRRRRORRORRRRRRRORRRRRRRRORRRRRRRRORRRORRRORRRRRRRRRRRRRRRORORRRRRRRRRORROOORRRRRRRRORRROORRRRORRRRRRRRRORRRRORRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRORRRRRRRRRORRRRRRRRRRRRRRRRRRRRORRRRRRRRORRRRORRRORRRRRRRRRRRRRORRRRRRRORRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRRORRRRRRRRRRORRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRRORORRRRRRRRRRRRORRRRRRRRRRRRRRRRORRRRORRRRRORRRRORROORRRRORORRRRRRORRRRRRRORRRRRRRRRRRORRRRRORORROORRRRRRRORRRRROORRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRORRRRRRRORRORRRRORRRRRRRRRRORORORRRRRRRRRRRRORRORRORRRORRRORORROORRRORRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRROOORRORRORRRORRRRRRRRROORRRRRRRRRRRORRRRRRRRRORRRRRRRRORORRRRRRRRROORRRRRRRRRORRRRRRRRRRORRORRORRORRRORRRRRRRRROORORRORRRORRORRRRRRRRRROORRORRORRRRRRRORRRORRRRRRRORRRRRRORRRRRRRRRRRRRRRRRRORRRRRRRORRRRORROORRRRRRRRRRRRRRRRRRRROORRRRRRRORRRRRRRRRRRRRORRRORRRRRRRRRORRRRRRRRRRRRRRRRORRRRRORRRRORRRRRRRRRRRRRRORRRRRRRRRRRRRRRORRRRORRRRORRRORRRRORRRRRRRRRRRRRRRRRRRRRRRRRRORRORRRRRRORRRRRORRRORRRRORRRRRRRRRROORRROROORROORROORRRRRORRORRRRROORORRRRRRRRRRRRRRRRRORORRORRORRRRRRRRRRORRRROORRRRRRRORRORRRRRORRRRRRRRRRRRRRORROORROORRRRRRRRRRRORRRRORRRRRRRRRRORRRRRORRRRRRRRRRRORRRRRORRRRRRRRRRRRRORRORRRRRRRRRRRRRRRRRORRRRRRRRORRORRRRRRRRRRRRRRRORRORORRRRRRRRORORRRORRRORRORRRRRRRRRRRRRRRRRRRRRORRRRRRRRRORRRRORRRRRORRRRRRRRRRRORRRRRRRRRORRORRRRRRORRRRRRRRRRRRORRRRRRRRRRRORRRRORRRRRRRORRRRRRRRRRORRRRORORRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRORRRRRRRORRRRRRRRORRRRRRRRRORORRRORORRRRRRRRRRROORRRRRRRROORRRRRRRROORRRORRRRORRROORORRORRRRRRRORRROORRORRRRRORRRRRRRORRRRRORRORRRRORRORRROORRRRRRORRRRRORRROORRRORRRORRRRRRRRRORRRORRORRRRRRRRORRORRRRRRRRORRRRRROOOORRRRROROORRORRRRRRRRROORRRRRRRORORORRRRRRRORRRRORRRRRRRRRRRRRRRRRORRRRRRRRORRRRRRRRORORRRRRRRRRRRRORRRRRRRORORRRORRRRRRRRORRRORRRRRORRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRRRRORORRRRRORRRRORRORRRORRROORRORRRRORRRRRRRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRORRRORRRRRRRRRRRORORORRRRRRRRORRRRRRRRORRRRRRRRRRRRORORRRRRRORRRRRRRORRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRRORRORRRRRRRRRRORORORRRRRRRRRRRRRORRRRRRORRRRRRROORRRRRRORRRRRRRRRRRRRRRRRRRORRRRRRRRRORRORRRRRRRRRRRRRRRRRRRROORRRRRRRRRORRRRRORORRRRRRRRRRRRRRORRRRRRRRRORORRRRRRRRROORRRRRRRRRRRORORRRRRORRRRRRORRORRRRRORRRRRRORRRRRRRRRRRRRRRRRRRRRORRRRRROORRRRRRRRRORRRRRORRRORRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRORRRRRRRRORRRRRRRRRRRRORRRORRORRRRRRRORRORRRRRRRRORRRRRRRRRRORRORRRRRRRRRORRRRORRRRRRRRRRORRRORRORRRRORRORORRORRORROORRRRORORORRRRRRRRRRRRRRORRRORRRRRORRRRRRRRRORRROORRRRRRRRRROORRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRROOOORRORRRRRRRRRRRORRORRROORRRRRRRRRRORORRRORRRRRRRRROROORRRRRRRRRRRRRRRRRRRRRRORRRRRRORRRORRRRRRRORRRRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRRROORRRRRRRRRRRRRRRRRORRRORRRRRRRRORRRRRRRRRRRRRRRRORRRRRRRRRRRRRRORRRRRRRRRRORRRRRRRRRORRRRRRRRRRORRRRRRRRORRRRRRRRRRRRRRRRRORORRRRRRRRRRORRRRRRRRORRRRRRRRRRRRRRRRRROROORRRRRRRRRRORORRRORROORORRRRRORRRRRRORRRRORRORRRRRRRORRRRRRRRRRORRRRRRORRRRRRRRRRRRRRORRRORRRRRRRRRORRRRRORORRRRRRORRRRRRORRRRRRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRORRRRRRRORRRRROOORRRRRRRRRRRRRRRRRRRRRRRRRRORRORRORRRRRRRRRRRRRRRRRROORRRRRRRROORRORRRRRRRRRRRORRRRRRRORORRROORRRRRRRRRRRRRRRRRRRRRRORRORRRRRRRORROORROORRRRRRRORORORRORROORRRRRRRRRRRROORRRRRRRRRRRRRRRRRRRRRRRRRRORROORRRRRRRRRRRRRRRRRRRRRRRRRRORRORRRRRRRRRRRRRRRORORRRRRRRRRRRRRRORORRRROORRRRORRORORRRRRRRRRRRRRRRORRRRRRRRRRROORORRRRRRRRRRRRORRORRORRRRRRRRRRRROORRRRRRRRRRRRROORRRRRRRORORRRRORRRRORRRRRRRRRRRRORRORRRRRRRORROORRRRORRRRROOORRRRRRRRRRORRRRRRRRRRRRORRRRRRRRRRRRRRRRRRRORORORRORRRORRRRRRORRRRRRRRRRRRRRRRORRRRRRRRRRORORORRRRRRORRRRRRRRRRRRRRRORRRORRRRRRRRRRRORRRRRRRRRRRRRRRRRRRORRRORRORRRRRRRRRRRRROORRRRORROORRRRORRRRORRRRRRRRRRRRRRRRRORRORRRRRRRRRROROORRROORRRRRRRRRRRRORRRRRRORROOORRRRRRRRRRRRORRRRRORRRRRRRRRRRRRRORRROORRRRRRRRRRRRRRRRRRORRRRRRRRRORRRRRRORRRRRRORORRRORRROORRRRRROORRRRRRRRORORRORRORORRORRORORRRRRRRRRRRRORRRRRRROORRRRRRRRRRRRRRRRRRRRRRORRORRRRRRRRRRRRRRORRRRRORRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORORRRRORRRORRRORORRRRRRRRRRORRORRRORRRRRRROORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORROROORRRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRORRRRRRRRRRRRRRRRRORRRRRORORRORRRRRRRRRRRRORRRORRRORORRORORRRRRORRORRRRRRRRRRRORRORRRRRRRRRORRRRORRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRRRORORRRRRRRRRROORRORRRRRRRRRORRRRRRRRRRORRORRORORRRRRRRRORRORRRORRRRRRRRRRORRRRRRRRRRORRRRRROORORRRRRRRRRRRRORORRROORRRRORRRRRRRRRRORRORRORRRORRRRRRORORRRRRORRORRRRORRRRRRRORRRRRRRORRRRRRORROORRRRRRRRORRRORORRRRRRRRRRRRRRRRORORRRRRRORRRRRRRRRRRRRRORRRORRORRROORRRRORRRRORRRRROORORRRRRRRRRRRRORRRRRORORORRRORORRRRROORRRRORRRRRORRRRRRRRRRRORORRRRRRRRRRRRRRRRRORRRRRRRRRRRORRRRRRRRRRORRRRRRRRRRRRRRROORRRRRRORRORRRRRRRRROORRRRRRRRRRRRORRRRRRRRORRRRRRRRRORRRRRRRRRRRRRRRORRRRRRRRRORRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRORRRORRRRRRRRRRRRORRRORRRRRRORRRRRRRORRRRRRRRRRORRRRRORRRRORRRORRRRRRRRROROORROROORRRROORORRRRRRRRRRRORRRRRRRRRRRRROORRRRROORRRRRRRRORORRRRRROORRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRORRORRRRRRRORORRRRRRRRRRRRRORRRRRRROORRRRRRRROORORRRRRORRRRRRORRRRRRORRRRORRRRRRRRRRRRORRRRROORRRRRRRRRRRRRRORORRRRRRORRRORORRORRRORRRRRORRORRRRRRRRRRRRORRRRRRRRRROORRORRORRRRRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRROORRRRRORRRRRRORRORRRORRRRORRRRRRRORRRRRRRORRRRRRRRRRRRRORRRRORROORRRRRRRORORRRRRORRRROOROROORRRRRRROORRORRRRRRORORRRRORRRORRRRRRRORRORORRRRRRRORRRRRRRRRRRORRRRRRRRRORRRRRORRORRROROORRORRRORRRRRRORRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRORRRRORRRRORRRORRRRRRRRRRRRORRRROOOOOORRRRRORRRRRRRRRORRRRRRRRRRRRRRRRRRRRORRRRRRORRORRORRORRRRRRRRRRRRRRRRRRRRRRRRORROROORRRRRRRRRRRRRRRRRORRRRRRRRRRORRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRORRROORRRRRRRRRRRRORRRRRRRRORRRORRRRRRRRRRRRORRRRRRRORORRRRRRRRRRRRRRRRRORRORRRRRRRRRORRORRRRORRRRRRRRRRRRRRRRRRRRORRRRRRORRRRRRROOORRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRORRRRRRRRRRORROORRRRRORRRRRORRRRRRRROORRRRRRRRORRRORRRRRRRROORRRRRRRRRRROORRRRRRORRRRRRRRRRRRORRRRRRRRRRRRRORRRRRRRRRRRORRRRROORORRORRRRRRRRRRRRRRORRRRRRRRRRRRRRORRRRORRRORORRRORRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRROORORRRRRRORRRRRRRRRRRRRRRRORRRRRROORRRRRRRRRRRRRRRROROROORORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRROORRRRRRRRRRRROORRRRRRRRORRORORRORRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRORRRRORRRRRRRRRRRRRRRRRORORRRRRRRRRRRRORRRORORRORRRRRRRRRRRRRRORRRRRRROROORRRRRRRRRRRORRRRORRORRRRRRORRRRRRRRRRRRRRORRRRRRORRORRRRRRRROORRRRORRRRRRRORRRRRRRRRRRRRRORRORRRROORRRORRORRORRRRRRROORRRRRRRRRRROROORRRRORRRRORRRRRORRRORORROORRRRRORRRRRRRRRRORRRRRRRRRRRRROORRRRRRRRRORRRORRRRRRRRRORORRRORRRRORRRRRORRORRRRORRRRRRRRRORRRORRRRRORRRRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRORRRORRRRRORRRRRRRRORRRRRRORORRORRRRRRORROOORRRRRRRROORRRRRRRRRRRORRRRRRRRRRORRRRRRRRRRORRRRORRRRRRRORRRRRRRRRRRORORRRRRRRRROORRRRRRRRRRRRORORRORRRRRRORRRRRRRRRRRRRRRRRORRORRRRRRRRORORRRRRRRRRORRRRORRRRORORRRRRRRRRRRORRRRRRRRRRORRRRRRRRRRRRRRRORRRRRRRRRRRORRRRRRRROORORRRRRRRRRRRRORRORRORRRRRORRRRRRRRRRRORRRRRRROORORRORRRRRRRRORROORRRRROORRORRROOORORORRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRORRRORORRRRRRRORRRORRRRRRRRRRRRRRRRORRRRRRORRRRORRRRRORRRRRRRRROORORRRRRRRRRORRRRRRRRRRRRORRRRRORORRRRRRRRRRRRRRRRRORORRRRRRORRRRRRROORORRORRRORRRRRRRRORRRORROORRRRORRRRRRRRRRRRRRRRRRRRRRORRORRORRRROOORRRRRRRRRRRRORRRRRORRORRRRRORRORRRRRRRRRRRRRRRRRRRRROROORRRRRRRRRRRRRRRRORRRRRRRRRRRRORRRRRROROOORRRRRRRRORRRRRRRRRRRORORRRRORRORRORRRRRRRORRRRRORRRRRRRRRRRRORRRRORRRRRRRRRRRRORRRRRRRRRRORRRORRRRRRORRRRRRRRRORORRRRRRRRRRRORRRRORRORORRRRRORRORRRRRRORRRORRORRRRRRRRRRRRORRRRRROORROORRRRORRRRORORRRRRRRRRRRRRRRRRRRRRRORRORRRRRRRRRRRRRRRRRRRORRRRRRRRRRRORORRRRRRRRRRRRORRRRRORRRRRRRRRRRRRRRRORRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRRORRORRRRRRRRRRORRRRRRRRRORRRRRRRRRRRRRRRRRRRRROOORRRRORRRRRRRRORRRRRORORRRRRRORRRORRORRRRRRRRRORRROORRRRRRRRRORRORRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRORRRRRRRROORRRRRRRRRRRRRORORRRRORRRRRRRRRRRRRRRRRRRROOORRORRRRRRRRRRRRRRRRRRRRRRORRRORRROOORRRRRRORRRRORORRRORRRRRRORRORRRRORRRRRRRRRRRRRRRROORORRRRRRORRRRORRRRRRRRRRRRRRRRRRRORRRRRRRRORROOORORRRRROROORORORRRRROORRRRRRORRRORRRRRRRRRRRORRRRRRRRORRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRORRRRRRRRRRORRRORRRRRRRRRRRRRRRRRRRRRRRRRORORRORORORRRRRRRRRRRORORRRORRRRORRRRRORRRRRORRRRRRORRRRRRRRROORRRRRRRRRRRRRRRRRRRRRORRRRRRRORRORRRRRRRRRRRORRRRRRRRRRRRRORRRROORRRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRORRRRRRRRRORRRRRRRRRRRRRORRRRRRRRRRRRRROORRRRRRRRRRRRRORRRRRRORRRRRORRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRORRRRRORRROORRRRRRORRRRORORORRROORRRORRRRRRRRRRRRORORRRORRRRRORRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRORRRRRORRRRRRORRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORORRRRRRRRRRRRORRRRRRRORRRORRRRRRRRRRRRRRRROORRRRRORRORRORORRRRRRRRORRRORRRRORRRRRRRORRRRRRORORRRORRRRRRRORRRRRRRRORRORRRRRRRRRRRRORRRRRORRRRORRRRORRRRORRRORRRRRRRORRRRRRRRRRRORRORRRRRRRRRRRRROOORRRRORRRRRRORRRRRRRRRRRROOROORORRORRORROORORRRORRRRRRRORRORROORRRRRRORRORRRRRRROORRRRRRRRRRRRRRRROROORRRRRRRRRRRORROORORORRRORRORRRRRORORRRRRRRRRRRRRRRRORRRRRRORRRRRRRRRRORRROOORORRRRRRRRRRORORRRRRRRRRRRRRRRRRRRRRRRROORRRRRRORRRRRRRRRRRRRRRORRORORRORRRRRRRORRRORRRRRRRRRRRROORORRRORRORRRORRRRRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRROROORRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRORORRRORRRRORRRRRORRRRORRRRRRORRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRROROORRRRRRRRRRORORRRRRRRRRRRRRRRRRRRORRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRORRORORRRORRRRRRRRORRRORORRRORRORRRRRRRRRRRRRRORRRRRRRRRRRRRRRRROORRRRRRRRRRRRRRRRRROORRRROORRRRRRORRRORRRRRRRRRRRRRRROOOOOROORRRRRRRRRRRRORORRRRROOROOORRRRRORRRRRORRRRRRRRRRRRRRRRRRRRRRORRRRRROORRRRRRRRRORRRRRRRRRRRROORRRORROORRRRRRRRRRRRRRRORRORRORRRRRORRORRRRRORRRRRRRRRROORRRRRRRORRRRORORORRRRRRORRRORRORRRORRORRRRRORORRRRRRRRRRORRRORRRRORRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRRRORRRRORRRRRRRRRRRRRORRRRRRRORRRRRRRROORRRRRORRORRRRRRRRRRRRRRRRORRRRRRORRRRRORRRRRRRRRRRRRRRORRRRRRRORRRRRRRRRORORRRORRRRRRRRRRRORRORRRRORRRORRORORRRRRRRORRRRRRRRRRRRRRRRORRRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRORRRORRRRRRRRORRRRRRRRORRRRRRRORRRRORRRRRRRRRRRRRRRRRRRROORRRRRRRORRRRRRORRRORORRRRORRRRORRRRRRORRRORRRRRROORRRRRORRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRORRRRRRRROROORRRRRRRRRRRRRRRRRORRRRRRRRROORORRRRORRRRRORRRRRRRRRRRRORRRRRRRORRRRRRRRRORROORRRRRRRRRROORRRRRRRRRRRRRRRRORRRRRRRRORRRRORRRORRRRRRRRRRRRRRRRRRORROORORORRRROORRRRRRRORORRRRRORRRRRRRRRORRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRORRRRROORRRRRRRRRRRRRRORRRRRRRORRRRRRRRORRRRRRRRRROORRRRRRRRRRRROORRRORRRRORROROROORRORRRRORRRRRRORRORRORRRORRORRRRRRRRROORRRRROORRRORRRRRRRRORRRROOROROORRRRRRRRORRRRRRORRRRRORRRRRRRRORRRRRROORRRRORROROROROORROORRRRRORRRORRRORRORRRRRRRRRRRRRRRRRORRRRORRRRRRRRRRRRRRRRRRRORRRRORRRRRORRORORRRRRRORRRRRRRORRRRRRRRORRRRRRRRROORRRRORRRRRROORRRORRORRRRRORRRRRRRRORRROORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRROOORRRORRRROOORRRRRRRORRRRORRRRRRRRRRRRROORRORRRRRRRRRRRRRRRROORRRRRRRRORRRRRRRRORORRRORRRORRRRRRRRRRRRRRRRRROORRORRRRRRRRRRORRRRRRORRRRRRRORRRRRRRRRRRRROORRRRRRRRRRRRRRRRRRRORORRRRRRRRORORRRRRRORRRRRRRRRRRRRRORRRRORRORRORRRRRRRRRRRRRRRORRRRRRRRRRRRORRRRRRORRRROORROORRRRORORRRRRRRRRRRRRRORRRRRRRRRRRRRRRORRRRRRRRRRRRRRORORRRRRRRRRORRRRRORRORRRRRRRORRRRRRRORORRRRRRRORRRORRRRRRORRRRRRRRRRRRRRRROROOROORRROORROOORRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRORRRRRRRRRRRRRORRRRRRRRRRRRRRRORRRRRRRRORRRRRRRRRROORORRRORRORRRRRRRORRRRORRRRRORRORRRRRORROORRRRORRORRRRRRORRORRRRRRRRRRRRRRRRORRRORRRROORORRRRRRRRRRRORRRRRRRORRRRRRORRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRORRRRRRRRRRORRRRRRRRRRRRROOORRRRORRRRRRRRORRORRRRRORRRRRRORORRRRRRRRRRRRRRRORRRRRRRORRRRRRRRRRROORRRRRRRRORRRRRORORRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRORRRRRRRRRRORRORRRRRORRRRORRRRRRRRRRORRRORRRROORRRRRRRRRORRRRRRRORRRRRRRRRRRORRRRRRRORRRRROORORRRRRRRRRRROORRRRRRRRRRRRRRORROORRRORRRRRRRRRRRRRRRRRRRRORRRORRRRRORRRRRRRRRRORRRRRORRRRROORRRRRRRORRRRRORORRRRRRRRRRORROORRRRRRRRRRRRRRRRRRRORRRRRRRRORRRRRRRORRORRRRRRRORRORROOORRRRRRRRRRRRRRORRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRRRORORRRRRRRRRRRRORORRRRRORORRRRRORRROORRRROORRRRRRRRRRRRORRRROORRRRRRRRRRRRRRRRRORRRRORRRRRRRRRRRROORRRRRRRORRRRRRRRRRRORORORRRRRRRRRRRRRRRRRRRRRRRRORRRROORRRROORRRRRORORRRRRRRRRRRORRRRRRRORRRRORORRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRORRRRRROORRRRRRRRRRRRRRORRRRORRRRRRRRRRORRROORRRRRRORRRRORRORRRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRORRRRRORRORORRRRRRRRRORRRRRRORRORRRRRROOORRROROORRRRRORRRRRROORRRRRRRRRRRORORRORRRRRRRRRRRRRRRRRRORRRRRRRRRROORRRRRRRORRRRRROORRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRRRRORORRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRORRRRORRRRRRRRRRORORRRRRRRRRORRORRRRORRRRRRRRRRRRRRROOORRRRRRRRRRRRRRRORORRRRRRRRRRRRRORRRRRRRRRRRORRRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRORRORRROORRRROORORRRRRRRORRRRRRRRRORRRRRRRRORRRRRRRRRRRORRRRRRRRORRRORRRRORRRRRRRRRORROORORRRRRRRRORRRRRRRRRRORORRRRRRRRORRRRRRRRRRRORRRRORRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRORRRRORRRRRORORRRRRRRRRRRRORRRORRRORRRRRRRRRRORRRRRRORRRRRRRRORRRRRRRRRRRRRORRRRRRRRRRORRRRORRRRORRRRRRORRRRRORRRRRROORRRRRRRRRRRRRRORRRRRRRRRROORRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRORRRRRRRRRRRRRRRORRRRORRRRRRRRRRORRRRRRRRORRRRRRRRRRRRRRRRRORORRRRRRRRRRRRRORRRRRRRRRRRRORORRRRRRRRORRRRORRRRRRRRORRRRRRRRRRRRRORROORRRRRRRROORRORRRRRRRRRORRRRRRRRRRRRRORORRRRRRRRRRRRORRRROOORRRRRRRRRORRRRORRRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRROORORORRRORRRORRRRRRRRRRRRRRORRRRRRORRRORORRRORRRRRORRORORRORRRORRROROORRRRRRRRRRRRORRRRRRRORORRRRRRRRRRRRRRRRRORRRRRORORROORRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRORRRORRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRRRORRRROROORRRORORRRRRORRRORRRRRRRORRRRORRRORRRRRRRRRRRRRRRORORRRRRRRRRRRRRRRRRROORRRRRRORRRRRRRRRRRRRRRORRRORRORORRRRRRRRRRRRORRRRRORRORRRRRRRRROORRRRRRRRRRRRORRRRRRRRROOORRRRRRORRRRRRRRORRORRORRRRRRRRRRRRRRORRRRRRORRRRRRRRRORRRRRRRRRRRRRRRRRORRRORRRORRRRRRRRRRRRRRORRRORRRRRRRRRRRRRRRRRRROORRRORRORRORRRRRRRRRRRRORRRRRRRRRRRRRRRRRRORRRRRRORRRRRRRRRRRORRRRRROORRRRORRRRRRRORRRRRORRRRRRRRRRORRRRRRRRRORRRRRRRRRRRRRRROORRORRRRRRRRRRRRRRORRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRRRORRRORRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRORRORRRRRRORRRRORORRRROORRRORRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRORRRRRRORRRRRRORRORRRRRRRRRRRRRRRRRRRRORRRRRRRRRRRORORRRRRRRRRRRRRRRRRORRRRROROORORRRRRRORRORRRRORRRRRRROROORORRORRRRRRRRRRRRRRRRRORRRRRRRRRRRRORRRRRRRRRRRORROORORRRRRRRRORORRRROORRRORRRRRRRRRRRRRRRRRRRORRRRRRRRRRRORRRRRRRRRRRRRRRRRRROOORRRORRRRRRRRRRORORRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRORRRRRORRRORRRRRRRRRORRRRRRRRRORRRRRORRORRRRRRRRRRRRORRRRORRRRRORRRRRRRRRRRRRORRRRORRORRORRRRRRORRRRRRRORORRRRRRRRRRRRRRRRRRRORRORRRRRORRRRRRORORORRRRRRRRRRRRRORRRRRRORRRRRORRRRRRRRRRRRRORRRRRRRRRRRRRRRORRRRRRORRRRRRRRRRRRRORRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRORRRRORRRRRRRRRRRRRRRRRRORRRRRRRORRORRRRORRORRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRORORORRORRRRRRRRRRORRRRRRRRRRRRRRRRRORRRRORRRRRRRRRROORRRORRORRROORORRRRORRRRRRRORRRORRRRRRRRRRRRRORRRRRRRRRRRORRRRRRRRORRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRORRROORRRRRRRRORRRRRRRORRRRRRRRRRORRORRRROORRRRRRRRRRRRORRRROORRORRRRRORRORRRORRRRRRRRRRRRRRRRORRRRORRRRRRRRORORRRRRRRRRRRRRORRRORRRRRRRRRRRRRRRRRRRRORRRRRRORRORRRRRRRRORRRRRORRRRRRRRRORROORORRRRRRRRROORRRRRRRRRRRRRRRRRRRRRRROROORRRRORRRRRORRRRRRRRORRRRRRRRRRRRRRRRROOOOOORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORORRRORRRRRRORRRRRRRRRORRRRRRRRORRRRRRRRRRORRRRRRORRRRRRRRRRRRRRORRRRORRRRRRRRROROORRRRRRRRRRRRRRRORRRRRRRRRRRRORRRRORRRRRRRRRRRORORORRRRROORRORORRORORRRORRRRRORRRRRRRRORRRRRRRRRRRRRRRROORRRRRRRRRRORRRRRRRORRRRRRRRRRRORRRRRRRRRRORRRRRRRRRRRRORRRRRORRRRRRRRRRRORRRRRRORRRRRRRRRRRRRRRRRRRRRRRRROORRRRRRRRRRRRRRRRORRRRRROORRRRORRRRRRRRRRRRRORRRRRRORRRRRRRRRRRRRORRORRRRRRRRRRRRRRRRRORORRRRRRRRRRRRRORRRRRRRRRRRRRRRRROOORRRRRRRRORRORRRORRRORRRRRRORORRRORRROORORRORORRRRORRRORORRRRRORRRRRRRRRORRRRRRRRRORRRRRRRRORRRRRRRORORRORRRRRRRRRRRORRRRRRRORRRRORRORRROOORRRRORRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRROORRORRRRRRRRRRRRORRRRORRRRRRRORRRRRRRRRRRRRRRRRRRRRRRORORRRRORRRRRORRRRRRRORRRRRORRRRRRRRORRRRRRORROOORRRRRRRRRRORORRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRORRRRRRRRRRRORRRRRRRRORORRRRRRORRORRRRORRORRRRRRRORRRRRRRRRRRRRRORRROORRRRRORRRRRRRORRRRRRRRRRRRRRRORRRORRRORRRRRRRRRORRORRRRRRRRRRRRRORORRORRRRRRRRRRRRRRRRRRRORRORRORRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRRORORRRRORRRRRORRRRORRRRORRORRRORRRROORRRRRRRRORRRRRRRRRORRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRORROOORRRRRRRRRRRRORRRRRRRRRRRRRRRRRRRORRRRORRRRRRORRRRRRRRRRRRRRRRRRRRRROROORRRRRRRORRRRRRRRRRRRRRRRRRRORRRRORRRRRRRORORRRRORRRRRORRORRRRRRRRRRRORRORRRRRRRRRRRRRRRRRRRRORRRRRORRRORRRRRRRROORRRRRRRRRRRRRORORORRRRRRRRRRRRRORORRRRRRORRRRRRRRRRRRRRORRRRRRRRRRRRORRRRORRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRRORRRRRORRRORROORRRRRORRRRRRRRRRRRRRORRRRRRRRRRRRORRRRRRRRRRRRORORRRRRORRRRRRRORRRROORRRRRRRRRRRRRORRRRRRRRRORRRORORRRRRORRRRRRRRRRRRRRRRRRRRRRRRORRRRRRORRORRRORRRORRRRORRRRRRRRORRRRRRRRORRRRRRRRRRRRRRORRRORRORRORRRRRRRRRRORRRRRORRRRORRROORRRRROORRRRRRROORRRRRRRRRRRORRRRRRRRORRRRRRORRRRRRORRRRRRRRRRRRORRRRORRRRRRORORRROORRROORRRRRRRORRRRRRRRRRRRRRRRORRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRORRRRRRRRRORRRRRRRRRRRRROORRRORRRRRRRRRRRRRORRRRRORRRRRRRORRRRRRRRRRRRRORORROOORORORRRRRRRRRRRRRRRRRRORRRORRORROORORORRRRRRRRORRRRRRORRRRRRRRRRRRRRRORRRRRRRORRRRRRRRRRORRRRRORRRORRRRROORRRRRRORRRRRRRRRRRRRRORRRRRRRRRORRRRRRRRRRRRRRRRORRRRRRORRRORRRRORROORRRRRRRRRRORRRRORRRRRRRORRORRORORRRRRRRORRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRRRRORORRRRRRRRRRRORRRRRRRRORRRRRRRRORRRRRORRRRRORRRRROORRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRROORRRRRORRRRRRRRRORRORRRRRRROROORRRRRRRRRRRORRRRRRRRRRRRORRORRRRRORRRRRRRRRRRRRRRORORRRRRORRRRRRRRRRRRRRRRRRRRORRRRRRRRRORRRRRRRRRRRRROROROORRRRRRRRRRRRRRRRRRRRRRRRORRORRRRORRRRROORRRRRRRRRRRORRRRORORRROORRRRRRRORRRRRRRRRRRRRRRRRRORRRRRRRRORRRORORRRRRRRRRORRRRRRROORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRROORRRRROORRRRRRRRRRRRRRRRRRRRRRORRRORORRRORRRRRORRRORRRRRRRRRRRRRRRRROORORRORRRRRRRRRRROOORORRRRRRRRRRRORRRRRRRRRRRRRORRORRRRORRORRRRRRRRRRORRRRROORRRRRORORRRRRRRRRRORORROROORRRRRRRRRRRRRRRRRRRORRRRRROORRRRRRRRRRRRRRORORRRRRRRRORRRRRRROORRRRRRORRRRRRRRRROORRRORRRRRRRRRRRRRRRRORRRRORRRRRRROORRRRRORRRRRRROORRRORRRRRRORRORRRRRRORORRRRRRRRRRRRORRRRRORRRRRRRRRRRORRRRRRRORORRORROOOORRRORRRRRRRRROOORORRRRRRRRORRRRRRRRORRRRRRRRORRRRRRORRRORRRRRRORRRRRRROORRRRRRRRRRRRORORRRRRRRRRRRRRRRRRRORRRRRORRRRRORRRRROORRRRRROORORRRRRRRRRRRORRRRRRRRRRRRRORRRORRRRRRRRRRORRRRRRRRRRRRRORRRRRORRRRRRROORORRRRRORRRRRRRRRRRRRORRRRRRORRRRRRORRRRRORRRRRRRRRRRRORORRORRORRRRRRRRORRROOORRRRORRORRRORORRRRRRRRRRRRRRRRRORORRRRRORRRRORRORRRORRRRRRRRRRRRRRRRRRRRRORRRRRRRORRRRRRRRRRORRRRRRRRRRROOOOORRRRRRRRROORRRORRORRRRRRORRRRRRRORRRORRRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRORRRRRORROORRRRROORRRRRRRRRRRRRRRRRRRRRORRRRRRRRRRORRRRRRORRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORORRRRRRRRRORRRRRRORRRRRRRRORRRRRRORRORRRRRORRRORRRRRRRORRRRRRRORROORRORRRRORRRRRRRRRRRRORRRRRRORRRRRRRRRRRRRRRRRRRRORRRRRRRRRRRORORORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORORRRRRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRRORRRRRRORRRRRRRRRRRRRRRRORRRRRRRRRORRRORRRRORRRRORRORRRRORRRRRRRRRRRORRRRORRRRRRORRROROORRRORRRRRORRRRRRRRRRRRRRRRRRRRRRRORRORRRRRRRRRRRRRRRRRRORRRRRRRRROROROORRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRRORRRRORORRRRRRRRRRRRRRRORRRRRRRRRRRORRORRRRRRRORRRRORRRRRORRRORRRRRRORRRRRRORRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRORRRRORRRRRRRRRRRRRRRRRRRRRRRORORRRRRORORRRRRRRRRRRRRRORRRRRRRRRORORRRRRRRRRRORRRRRRRRRRRRRRORRORRRRRRRRRRRRRRRRRRRROORRRRRORRRRRRRRRRRRRORRRRROORRRRRRRRRRORRRRRRRRRORRORRRRRORORRRRRORRRRRORRRRRRRRRRROORRRRRORRRRRRRRRRRRORRRRORRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRORRRRRORRRRRRRRRRRRROORRRORRRRRRRRRRRRRRORRRRRRRRRORRRRRRRRORORRRRRRORRRRROOORRRRRRRORRRRORRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRROORRRRRRRRRRRORRRRRRORORRRORRRRRORRRRRRORROORORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRORRRRRRRRRRRRRRRRORORORORRRRRRRRRRRRRRRRRORRRRRRORRRRRRRORRRRORRRORRRRRORRRRRRRRRRRRRRORORRRRORRORRRRRRRRRRRRRRRRORRORRRRORROORRRRORRORRRRRRRRRRRRRORRRRRRRRRRRRRRRORRRRRRRRROORRRRRORRRRRRRRRRRORRORRRRORRRRRRRRORRRRRRRRRRORRRRORRRRRRRRRRORRRRRRORRRORORRORRRRRRRORRRRRRORRRRRRRRRRRORRRRRORRORRRRORROORRRORRRRRORRORORORRRRORRRRRORORORRRRRRRRORRRRRORRORRRRRRRRRRRRRRRRRRRORRRRRORRRRRRRORRRRRRRRRRRRRRRRRRRORROORRRRRRRRRRRRRRRORRRRRRRORRORRORRRORRRRRORRRRRRRRROORRRRRORRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRORRRRORRRRRRRRRRRRRRRRRRRROORRRRRRORRRRRRRORORRRRORRRORRRRRRRRRRRROOORRRRRRRORRRORRORRRRORORORRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRROORRROOORRRORRRRRRRRRRRRRRRRRRRORORRRORORRORRORRRORRRRRROOOOOROOROROORORRRRRRRRRRRORRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRRORRRRRRRORRORRORRRRORRRRRRRRRRRRRRRRRRRRRRRORRRRRORRRRRORRRRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRROORRRRROORRRRRRRRRRRRROORRRRRRRRRRRRORRRRRORRRORORRRRRORRORRRRRRRORRRORRRRRORRRRRRRRRRRRRRROORRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRRRRROORROORRRRRRRRORRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRORRRRRRRRORRRORRRRRRRRRRRRRORRRRRORRORRRRRRRRRRRRRRRRRRRRORRRRRRRRORRRRRRORRROORORRRRRRRRROORRROORRRRRRRRRRRRORRRRRRRRRORRRRRRRRRRRRRRRRRRORRRRORRRRRRRRRRRORRRRRORRRRRRRRRRRRRORORRRROORRRRRRRRRORRRRRORORRRRORORRRRRRRROORRRORRRRRRRRRRORROORORRORRRORRRRRRRRRRRRRRRRRRRORRRRRORRRRRRRRRRRRRRRORRRRRRRRRRRORRORRRRRRRRRORRRRRRRORRRRRORRRRRRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRORRORRRRRRRROOORRRRRRRORRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRORORRRRRRORRORRRRRORRRRRRRRRORRRRORRRRRRRORRORRRRRRRRORRORORRRRRRORRRRRORORRORRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRORRRRRORRRRRRRRRRORRRRRRRRRRORRORRRRROOORRRRRRRRORRRRRORRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRRORRRRRRRRORRRRRRRRRRORRRRRRRRRRRORRRRRRRRROOORRRRRORRRORRORRRRRRRRROORRRORRORORRRRRORRRRRRRRRRORRRRRRRRRRRRORRRROORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRRRRORRRRRRRRRRRRRRRORRRRRRORRORRROORRRRRRRORORRRRRRRRRRORRRRORRRRRRRRRRRRORRRRORRROROORRRRRRRRRORRORRRRROOORRRRROROOORROOORRRRRRRRRORRRRRRRRORRORRRRRRRRRROORRORRRRRRORRRRRRRRRRRRRRRRRRRROORRRRORRRRRRORRRRRRORRRRRROORRRRORRRRORRRRROOORRRRORRRRORORRRRRRORRRRRRRRRRRRRRRRRRRRRRRORRRRRORRORRRRORRRORRRORROORORRORRRORRORRRRORRRORRRRRRRRORRORRRRORRRRRRRRRRRRRORRROORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRROROORRRRRRRRORRRRRRRRRRRRRRRORRRORRORORRRRRRRRRRRRORRRRRRORRORRRRRRRORRRRORORORRRRRORRORRRRRRRORRRRRRRRRRRRRRRRRRORORRRORROROORRRRROORRROORRRRRRRORRRRORROROORRRRORRRORRRRORORROORRRRRRORRRRRRRRRRRRRRORRRRORRORROORRRRRRRROORRRRRRRRRORRRRRRRORRRRRORORRRRORRRRRRRRRORORORRRRRRRRRRRRRRRRRRRRORRORRRORRRRRRRRRRRRRRRORRRORORRRRRRORRORRRRRRRRRRRRRRRRRRRRRRRRRRRROOORORRRRRORRROORRRRORRRRROORRRRRRRRRRRRRRRRRRRRRRRROROOORRORRRRRRRRRRRRRROORRRRORROORORORRRORRORROORRORRRRRRRRROORRRORRRRRRORRRRRRORRROORRRRRRRRRRRRRRRORRRORRRRRRRORRORRRRRRRRRRRRORRRRRRRORORRRORRRRRORORRRRRRRRRRRRRRRRRRRRRRRRRORRRORRRRRRRRRRRORRRRRRRORRRRRRRRRRRRRORRORRRRRRORORRRRRRORRRRRRRRROOORRORRORRRORRRORRRRRRRRORORROROORRRRRRORRORRRRRORRRRRORRORRORRRRRROORORRRORRRRORRRRRRORRRORRRRRRRRRORRRRRRRRRRORRRRRRRRRRRRRRORRRRRRORRRRRRRRRORRORRORRRRRRRRRRRRRRRRRORRRRRRRRRORORRRRROORRRRRORRRRRRRRRRRRRORRRRORRRRRRRRRRRRRROORRORRRRRRRRRRRRRRRRRRRRORORRRRRRRRROOORRRRRRRRORRRRRRRRRRRRRRRRRRRRRORRRORRRORORORRRRRROOORROORRORRRRRRRRRRRRRRRRRRRRRRRORRORRRORRRRRRORRRRRRORRORRRRRORRRORRRRROORRORRRRRRRRORRROORRRRRRRRRRRORRRRRRRRRRRRRRORRORRRORRRRROROORRRRRRRRRORRRRRRORRRRROORRRRRRRRORRRRRRRRRRORRRORRRRRRRRRORORRRRRRRRRRORRRRRRRRRRRRRORRRRRORRRORRRRRRRRRRROORRRORRORRROORRRORRRRRRORRRRRRRRORRRRRRRRRRRRRORRRRRRORRRRORRRROOORORRRRRRRRRRRRRRRORRRRRRORRRRRRORRRRRROORRRRRRRRRRRRORRORRRRORRRRRRORRORRRORRRRRRRRRRRRRRRRORRORRRRRRRORRRROORRRRRORRRROORORORORRRORRRRRRRRROROOOORRRRRRRRRRRRRRRRRRRRRRRORRRRORRRORRRRRRRRORRRRRRRRRRRRRRRRRRRRORRRRRORRRRRRRRRRRRORRRRRRRRRRRRRORRRRRRRORRRRRORRORRORRRRRRRRRRRRRRRRRRRRRRRRRRORORRRRORRRRORRRRRROORRRORORRRRORRRRRRRRRRRRRRRRRRORORRORRRRRORRROORRRRRRRRRRRRROROORRRRORRRRRRRRRRRRORORRRORRRRRRRORORRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRRORRRRORRRRRRRRRRRRRRROORRRRRRRRRRORRRORRRRRRORRRRRRRRRRRRORRRRRRRRROORRRROOORRRRRRRRRORROORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORORRORORRRORRRRRRRRRRORORORRRRRRRORRRRRRRROORRRRRRRRRRRRRRRRRRRRRRRRRRORORRRROROORRRRORORRRRRRORRRRRRRRROORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRORORRRRORRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRORORRRRRRRRORORRRRROROORRRRRORROORRRRRRRORRROORRORRRRRRRRRORRRRRRRRRRRRROORRRRRRRORRRORRRRRORRRRRRRRRRRRRRRRRRORRRORRRRRRRRORRRRRROORRRRROORRRRRRRRRRRRRORRRRRROORRRRRORRRRORORRRRRRRRRROORRROROOORRRRRORRORRORRRRROORRORRRRORRORRRRORRRORRRRRRRRRRRORORRRRRRRORRRRORRRORRRORRRORRORRRORRRRRORRORRRRORRRORORRRRORRRORRRRORRORORORRRRRRRORRRRRRRRRRRRRROOORORRRRRORRRORRRRRRRORORRRRRRRRRRRRRRRRROORORORRRROORRORRRRRRORROORRRRRRRROORRRORRRRRRRRRRRORRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRORORRRRRRORRORRRRORRORRRRRRRORRRRRRRRROOORRORRRRRORRRRORRRORRRRORRRRRRRRRRRRRRRRROROORRRRRRRRRRRRRORRORORRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRORRRORRRRRRRRORRRRRORRRRRROORRRRRRRRRORRRRRRRRRRRORRRRRRRRRRRRORRRRRRRRRORORORRRRRRRORRRRRRRRRRRORRRORORRRORRORRORRORRRRRRRRRRRRRRRRRRRORRRORRRRRRORORRRRORRRRRRRRRRRRRRRRRRRRRRRRRRORRRRORRRRRRRRRORRRRRRRRRRRRRRRRORORRRRRRRORRRRRRORRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRRORRRRRRORRRRRRRRRRORRRRRORORRRRRRRORRRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRROORRRRRRRRRRRRRRRRRRRRRRORRRRRROORORRRORRRRRRRRRRRRRRORRRRRRRRRRRRRORRRRRRRRRRRRRRRRRORROORRRRRRRRRRRRRRORORROORRRRRORRORRRROOORRRRORRRRRRRRRRORRRRRRRRRRRRRRRRRORRRRRRORORRORRRRRRRRRORRRRRRRRRRRRRORRORRRRRRRORRRRRRRRRRRRRORRRORRRRRORRRRRORORRRORORRRRORRROORRRRRRRROROORRRRRRRRRRRRORRRRRRORRRORRRRRRRRRRRRRRRRORRORORRRRRORRRRRRRRRRORRORRRORRRROOORRRRROOORRRRORRRORROOROORRRRORRORRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRRORRRRRRRRRRRRRRRRRRORORRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRORRRRRRRORRRRRRRRRRRRRORRRRRRRORRRROOORRRRRRRORRRRRRRRRRRRRORORORRORRRRRRRRRRRRRRRRRORRORRORRRRRRRRRRRRRORRRRRRORRRRRRRORRRRRRRRRRRORRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRORRRORRROORRRRROROORRORRORRRRRRRRRRRRRRRRORORRRRRRRRRRRRRRRRRRRROORRRRRORRRRRRRRRRRRRRRRORRRRRRRRORROORRRRRRRRRORRRRRRRORRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRORRRORORRRRRORRRRRRRRRRRRRRRRRRRRRRRRORRRRRRROORRRORRRRRRRRORRRRRRRRRORRRRRRRRORRRRORRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRORRRORRRROORRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORORRORRRRRRRRORRRORRRORRRRRRRRRRRRRRRRRRRRORRRRRRRRRRRORRRRRROORRORRORRRORRRRRRRRRORRORRRRRRRRRRRORRRRRRRRRRRRRRRRRRRORRRRRRRROORRORORRRRRRRRRRRRRROROORRRRRRRRRRRRRRRRRORRRRRRRRRRRRRORRRRORRRRROOORRRRRRRORRRRRRRRRRRRORRRRRRRRRRORORRRRRRRRRRRRRORRRRRRRRRRRRROORRORRRRRRRRRRORRRRRRRRRORORRRORRRRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRORORRRRRORRRRORRORRRRRORRRRRRRORRRRRORRRRRRRRRORRRRRRROORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRORRRORRORRRORRRRRORRORRRRRRRRORRRRRROORORRORRRRRORRORRRRRORRRRRRRRRRRRRRRORRRRRRRRRRRRORRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORORRRORORRRRRROOORRROORRRRRRRRRRRRRORRRRRORORRRRRRRRRORRRRRRRRRRRRORRRRRRRRRRROORRRRRRRRORRRORROORRORORRRRRRORRRRRRORRRRROORRRRORRRRRRRRRRROORRRRRORRRRRRRRRRORRRRRRRRRRRRRORRRRRRRRRRRRORRRRORRRRRRRRRRRRRORRRORORRRRRRRRRRRRRRRRRORRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORORRORORRORRRORRRRRRRRRRRRRRRRRORRRORRRRORRRRRRRRRRRRRRRRRRRRRRRORRRRRRRRRORRRRRRRRRRRRRRRRRRORRRRRORRRORRRRRRRRRORRRORRRRRRRRORRRRRRRRRRRRRRRRRRRRRRORORORRRRRRRRRRRRRRRRRRRRRORRRRORRRROORORORRROORORRRORRRRRRORRRRORORRRRRRRRRRRRRORRRRRRRRRRORRRORRRORRORRRRRRRORRRRRORORRRRRRORRRRRRRRORORRRRORRRRRRRRRRRRRRORRORRRRRRORRRRRRRRRRRRRRRRORRRRROORRRRRORRROOORRRRRRORORRRRRRRORRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRORRORRRRORORRRRORRRRRRORRRRRRRRRROORRRRORRRRRRROOORRRRRORRRRORRRRRRRRRRORRRRRRORORRRRRRRORRORRRRRRROROORRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRRRRORRORORRRORRRRRRORORORRRRRRRRRORORROORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRRORRRRRRORORRRROORRORRRRRRRRRORROORRRRRRRRRRRRRORRORRRRRRRRRRRORRRRRRROORRRORRORRORORRRRRRRRRORRRRRRORRRRRRORRRRORRORRRRRRRRRRRRRORRRRRRRRRRRRORRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRROORRRRRORRRORRRRRRRRRRRRRORRRRRRORRRORRRRRORRRRRRRRRRRORRRRRRRORRRRRRRRRRRRRORRRRRRRORRRRRRRRRRORRRRRRORRRRRRRRRORORRRORRRRORORRRRRRRRRRRRRRRRRRRRRRORRRRRRRORRRRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRORRRRRRRRRRORORRRRRRRORRRRRRRRRRORRRRRRRRRRRRORRRRRRRORRRRRRRRRRROORRRRRRRRRROORRORRORRRRRRRRORRRRRRORRRORRRRORRORRRORRRRRRRRRRORRRRORRRRRRRRRORRRRRRRRRRRROORORRRRORORRRRRORRROORRRRRRORRRRRRRRRRRROOORRRRRORRORRRRRRRRRRRORORRORRRRRRORORRRRRRORORRRORRRRRRRRRRRRRRRRRROORRRRRROORRORORRRRRRORRRORRRRORRRRRRRRRRRORRRRRRRRRRRRRRRRRRRORORRRRRRRRORRRRRRRRRROORORRRRRRRRRRRRRRRRRORRRRRRRRRRRRORRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRRRRRRORORRRRRRRORRRRRRRORRRRORRRORRRRORORRRRRROORRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRROOORRRRRRORRRRRRRRRRRRRRORRRRRRRRRRRRORORRRRRRRORRRRRORRRRRRRORRRRRRRRRRRRRRRORRROOORRORORRRRROORRRRRRRRRORRRRRRRRRRRORRRRORRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRROORRRRRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRORRORROORORRRRRORRRRORRRRRORRRRRRORORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRORRRRORRRRRRRRRRRORORRRRORRRRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRRRORRRORRRRRRRRORRRRRRRRRRRRRROORRRRRRORRORRRRRROORRRRRORRRRRRORORRRORORRRRRRRRRRRRRORRRRRROORRRORRRORRRORRRRRORRRRRORRRORRORORRORRRORRRRRORORRRRORRRRROORORRORRRRRRRRRRORRORRRRORRORRORORORRRRORRRRRRRRRRRRRRORRRRRRRRRORRRRRRRRRRRRRRRRRRORRRRRRRRRROORORRRRORRRRRORRRRRRRROORRRORRRRRRRRRORORRRRRRRRRRRORRORRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRROORRRRRRRRRRRRORRRRRRRRRRRRORRRRRORRRORRRRRORRRRRORRRRRRROORRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRORRRRRORRRRORRRORRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRORRRRORRRRROORRRRRORRRRRRRRRRRRRRRORORORRRRRRRRORRRORRRRRRRRRRRRRRRRRRRORRRRRORRRORRRRRRRRRRRRRRORRRRRRRRROORRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRORRRORRRRRRRRRORRORRROORRORRRRRRRRRRRORRRRRRRRRRORRRRRRRRRRRRRRRROROORRRORRRRRRRRRRRRRRRORRORORRORORRRRRRRORRRRRRRRROORRRRROORORRRRORRRORRRRRRRRRRRRRRRRRORRRRRRRRRRRORRRROORRRORRRRRRRRRRORRRRRRRROROORRRRRRRRRRRRRRRRORRRORRRRRRRRRRRROOORRRRRRROORRORRRRRRRRRRRRRROROORRRRRRRORRRRORRRRORRRRORORRORRRRRORRRRRRRRRRRRRRRRORORRRRRRRORRRRRRRRRRRRORRRRRORRRRRRORRRRRRRORRRRRRRRRRRRORRORORRRRRRRORORRRRRRRRORRRRORRRRRRRROORRRORRRRRRRRRRRRROORRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRORRRRRRRRRRRRRRRRRROORORRROORRRRRRRRRRRRRRRRRRRORRORRORORRRRORRRRRRRRRRRRORRRRRRRORRROORRRRRRRRRRRORORORRRRRRRRRRORRORRRRRRORRRRORRORRRRRRRRRRRRRRRORRRRRRROOOORORRRRRORORORRRRRRRRRRRRRRRRRORRRRRRRRRRRRRORRRRRRRRORRRRRRRORRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRRRRORRRORRRRRORRRRRRRROORRRRORRRRRRROORRRRRORRORRRRRRRORRRRRRRRRORRRRROOORRRRRRRRRRORRRRRRRRRRRRRRRRRRORRRRRRROORRRRROORRRRROROORRORRORRRRRRRRRRRRORRORRRRRRRRRRRRROOORRRORRORROROORRRRRRRRORRRORRRRROORRRRRRRROORRRRRRRROORRORRROORRRORRRRRRRRRRRRRORRRRORRORRRORRRRORRRORORRORORRORRRRRORORRRRRRRRRRRRRRORRRRORRRRRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRORRRRRRRROOORRORRRRORRRRORORRRRRRRRORRRRRRRRRRRRRRRRRRRRORRRRORORRRRRRRRRRRRRRRRRRRRORRRRRRRORRRORRRRRRRRORORRRRORRRRORRRRRRRRORRRRORRRRRRRRRRRRORRRRRRRRRRRRRRRRRRRRROROORRRRRRORRRRRRRRRRRRRRRRRRRRRRORRRRRRRRRRROORRRRRRRORORRRRRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRORRRORORRORRRRRORORRRRRRROORRRRRRRRRRRRRRORRRRRRRRRRRORRRRRRRRRRORRRRRRRRRROORRORRORRRRORRRRRRRRRRRRRRRRRRRRRORORRRRRRRRORRRRRRRRORRRRRORRORRRRRROORRRRRORRRRRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRORRRRRRRRRORORRRRRRRRRRRORRRRRRRRORRRRRRRRORORRRORRRRRORORRRRRRRRORRRRRORRORRORRRRRORRRRORRRRORRRRRRRRRRRRORRRRORRRORRRRRRRRRRROORRRRRRORRRORRRRRRRRORRRORRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRROORRORRRRORRRRORORRORRRORRRRRRRRORRORORRORRRRRRRRRRRRRRRRORRORRORRRRROORRRRORRRRORRRRRRRRRORRRRRRORRRRRORRRRRORRRRRRRORRRRRRRRRRORRRRORORRRRRORRROOORROOORRRRRRRRRRRORRRRRRRRRRRRRRORRORRRRRRRRRRRRORRRRRRRORRRRRROORORRORRRRORRRRRRRRRRRRRRORRRRRRRRRORRRRRRRRRRORRRRRRORRRRRRRORRRRRRRRORRROORORRRORRORRRRRRORRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRORRORRRRRRRRORRRRRRRRRRRORORRRRRRRRRRRRRRRORRRRORRRRORORRRRRRRRRRORRRRRRRRRRORRORRRRRRRROORRRRRRRRORRRRORRRRRRRRRRRRRRRRORRRRRORRRRRRORRRRORRRRRROOORRORRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORORRRRRRRRRRRRORRRRRRRRRRRORRRRRRRRRROORRRRRRRRRORRRRRRRORORRRRRORORRORORRRRORRRRORRRRRRRRRRRORRRRORRORRRRRRRORRORRROORRRRRRRRRRRROOOORRRRRRRRRRRRRRRRRORRRRRRRORRORRRRRRRRRORRORRORRRRRRRRORRORRORORORRRRRRROORRORRRRRRRRRRRRRORRRORRRORROORORRRRRRRRRRROORRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRORRORRRRORRRRRRRRORRRRRRRRRRRRRRRRRRORRRRRRORRRRRRRRRRRRROORRROORRRRRRRRRRRRRROORRRRRRRORRRRRRRRRRRRORRRRORRRRRRRRORRRORRRRRRRRRRRRRRORORORORRRRRRRRRRRRRRORRRRRRRORORRRRRRRRRORORRRRRRRRRRRRRRRRRRRRRRROROROORRRRROORRORRRRRRRRORRRRRORRRRRRROOORRRRRRRRORRRORRRRRRRRRRRRORRRRRRRRRRRRORORRRRRORRRRRRORORRROORRRRORRRRRRORORRORRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRORRRRRORRRRRRORRRRROORRRRRRRORRORRRRORRRRRRRORORRORRRRRRROORRRRRRRRRRRRRORROORRORRRRRORRORRRRRRRRRRRRRROORRRRRRRRRRRRRRRROORRRRRRRRRRRRRRRRRRRRRRRROORRRRRRRRRRRRORRRRRRRRRRRRORRRRRORRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRORRRRRRORRRRRRRRRRRORRRORRRRORORRRRRRORRRRRRRRRORRRRRRRORRORRORRRRRRRRORORRORRRRRRRORRRORRRRRRRRRRRRRRRRRROORRRRRRRRRRRRORRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRRORORRRRRORRRRRRROROORORRRRORORRORRORRRORRRRRRRRRRRORRRRRRRRRRRORORORRRRRORORRRRRRRRRRRRRRRORORRRRRRRRRRRRRRRRRROORRORRRRRORRRROORRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRORRRRRRORRRRRORRRRRRRRRRRRRRRORRRROORRRRRRRRRORRRORRRRRRRRRRRRRRORRRRORRRORRORRRRRRRRORRRRRRRRORRRORRRRRRORRRRRRRRRRRRRRRRRRRRORRRORRRRRORRRRRRRROROORRRRRRRRRRORRORRRRRRRRRRRRRRRROORRRORRRRRORRORRORRRRRRRRORRRRRRRORRRRRRRRRRRRRRRRRRRORRRROORRRRRROROROORRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRORRRRRRROROORORRRRRRRRRRRRRRRORRORRRRRRRRRRRRRRRORRRRORRRRRRRRORRRRRRRORRRRRROORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORORRRRRRRRRRRRRORRRRRRRRRRRORRRORRRRORRRRORRRRRRRRORRRRRORRRORRORRRRRORRORRRRRRRRRRRRORRRRORRRRRRRRORRRRRRRRRRRRRRRORRRRROORRRROROORORRRORRRRRRORRRORRRRRORRRORRRRRRRRRRRROORRORRRRORRRRRRORORRRRRRRRRRRRRRRORRRRRRRRRRRRORRRRRORRRRRRRRRORRRRRRORRRRRRRRORORRRRRRRRRRRRRRRRRORRRORORORRRRORRRRRRORRRRRRRORRRRRRRORRRRRRRRRRRORRRRRORRRRRRRORORRORRRRRRRRRRORRRRRRRRRORRRRRRRRRRRRRRRRRORRRRRRRRRRRRORRORRRRRRRRRRRRRRORRRORROROORRRRRRRRROORRRRRRRRRRRRRRRRORRORRRRRRRRRRRRRRRRORORRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRORRORRRRRRRRRRORRRRRRRRORRRRORRRRRRRRRRRRRORRRRRRRRRORRRRRRRORRRRRORORRRRRRRRORRRRRRRRRRRRRRRRRORROORRRRRRRRRORRRORRRORRRRRRRRRRROORRRORRRRORRRRRRRRRRRRRRRRRRRRRRRRRRORRORRRRRRORORRRRRRRRORRRRRRORRORORRRRORRRRROORRRRRRRRORRORRRRORRRRORORRRRORRRRRORRRRRRRRRROORORRORRRRRROOORRRRROORRRORRRRRRORRRRRRRORRRRRRRRRRORRRRRORRRRRRRRRRRRRRRROOORRRRRRRRRRRRRRRRRRRRRRRORRRRORRRRRORRORRRRRRRORRRORRRRRRRRRRRRRRORRRRRRRRRRROORRRRRRRRRRRRRRRRRRRRORRRRORRRRRORRORORRORRRRORRROORROROOORRRRORRRRORRRORRRRORRRRRRRRRRRRRRRRRORRRRRRORRORRRORRRRRRRRRRRORRRORRRRRORRRRRRRRRRRRORRRRRRORRRRRRRRROOORRRRRORRRRRRRRRORRRRRRRROORRORRRRRRRRRRRRRROORRRRRRRRRRRRRRRRRRRRORRRRORRRRRORRORORORRRRRRRRRRRRORRRRRRRRRORRRRRRRRORRORRRORRRRRRORRRORRRRORRRRORROORORRRRRRRORRRRROORRRRRRRRRRRRRRRRRORRRRRRRRORRORRRRRRRRORRRRRRRRRRORRRRRRRRRORRRORRORRORRRRRRORRRRORORRRRRRRORRRRRRRRRRRROORORRRRRRRRRRRRRORRRRRRRRRORRRRRRRRORRRRORRRRRRRRRROOORORRORRRRRRRORRORRRRRRRRRRRRRRRRRRRRRRROOORRRRRRRRORRRRRRRRRRRRRRORORRRRRRRRRRRRROORRRORRRRRRRORRRRRORRRORRRROROORRRRRRRRRRRRRRRRRRRRORRRRRRRRRRRORORRROORRORRRRROROOORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRRRRRORRRRRRRRRRRORRRRRRRRRORORRORRRRRRRRRRRORRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRRORRRRRRRRRRRRRRRRRRROORRRRRRRRRRRRRRRRRRRRRRRORRRRRROOORRRRRORORRRRRORRRRRRRRROORRRRROORRRRRORRRRRRORRRRRRRRRRRRRRRRRRRORROORRRRRORRRRRORRRRRORRRRRRRORRRRRRRRRRRROROORORORRRRRRORRRRRRRRRRRRROORRRRRRRRORRRRRRRRRRRRRRRORRRROORRRRRRRORRRRRRRRRRORORRRORRRRORRRRORRRORRRRRORRRRRRORRRRRRRRRRORRRRRRRRRRORRRRORRRRRRRRRRRRRRRORRRRRRORRORORORRRRRRRRROORRORRRRRRRRRRRORORRRRRORRRROORRRRRRRRRRRRRRRRROROOORRORRRRRRRORRRRRRRORRORRRRRRRORRRRRRRROROORRRRRRRRRRRRRORRRRRORRRRRRORRRRRRRRRRORRRRORRRRRRRROOORRRRRRRROORRRORRRRRRRRRRRRROORRRRRRRRRRRRRRRRRRRRORRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRROORRRRRRRRRORORRRRRRRRROORRORRRRRRRRORRRRRRRRRRRRRRRRRRRRRROORRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRORRRRRORRRRRRORRRRRRRRRRRRROOORORRRRRRRRRRRORRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRORRORRORRRRROOORRORORORRRRORRRRRRROROROORRRRRRRRRRRRRRORRRRORRORRORRRRRORRRRRRRRRRRRRRROROORRRRRRRRRRRRRRORRRRRRRRRRRRRRRORRRRRRRORRRRRRRRRORRRRRRORRRRRRORORRROORRRORRRRRORRRRRRRORRRORRRRRRRRRRRRROORRRORRRRORRRRRORROORRRRRRRRRRRRRROORRRRRRRRRRRRRRRORROORRRRRRRRRRRRORRRORRRRRRRORRRRORRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRRORRRRRRRRRRRRRRRORRORRRRORRRRRRRRRRRRRRRROORRRRORRRRRRRRRRRRORORRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRORRRORRRRRRRRRRRRRRRRRORRRROORRRRRORRRRRRORORRRRRRORRORRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRORORRRRROROORRRRRRRRRRRRORROORRRRRRORRRRRRRRRRORRRRRRORRRORORRRRRRRRRRRRRRRRRRRORRROORRORRRRRRORRRRORRORRRRROORRORRRRRRORRRRRORRRORRRRRRRRRRRRORRRRRRORRRRRRRRRORRRRORRRROORRORRRORRRORRRRRRRRRRRORRRRRRRRRRORRRRRRRRROORRRRRORRORRRRRRORRROORRRRRROORORORORRRRRORRRRRRRRRRRRRRRRORRRRRRORRRORRORRRRRRRROORRORRRRRRRORRRRRRRRORRRRRRRRRRRRRRRRRRORORRRRRRRRORRRRRRRRRRRRROORRRRORRRRRRRRRRRRORRRRRRRRRORRRRRRRRORRRORRRRRRRRRRRRRORRRRRORRRRRRRRRRRRRORRRRRRRRRRRRORORRRRRRRRRRRRRRORRRRROORRRRRRRRRRORRRORRRRRORORRRRRRRRRRRORRRRRRRRRORORRRRRRRRRRRRRRRRRRRRRRRRRORRORRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORORRRRRRRRRRORRRRRRRRRRRRRROORRROROORRRRRRRRRRRORRRRRRRRRRRRRORRRRRRRRORRRRRORRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRORRRRRROOORRRRRRRRRRRROORRRORRRRRORRRRRRRRRRRRRRROORRRRRRRRRRRRRRROORRRRRRORORRRRRRRRORRRRRRRROORRORORRRRRRRRRRRRORRORRRRORRRRRRRRRRRRRORRRRORRRRRRRRRRRRORRORRRRRRRRRRRRRRRRORORRRRORRORORRRRRRRRORRRRRRRRRORORRRRRRRORRRROORRRRRRRRRRRRRROORRRRRRRRRRORRROORRRRRRRRRRRRRRRRORRORRRRRRRRRRRRRRRRRRRORRRRRRRRORRRRRRORRRORRRRRORRRRRRRRRRROORRRRRORRRRRRRRRRORRRORRRORRRRRRORRRRRORRRRRRORRORRRRRRRORRRRRRROORRRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRORRRRRRRORORRRRRRRRRORRRRRRRRORRRRORRRRRRRRRRRRRRRRRRRORRRORRRRRORRRRRRRRRRORORRRORORRRRRRORRRROOORRRRRRRRRROORRRRRRRORRRRRRRRRRORRRRRRRRRRRRRRRRRRRRORRRORRORRRRRROORRRRORRRRRRRRRRORRORRRRRRRRRRRROORRRRRRRRORRRRRORRRRRRRRRRRRRRRRRORRRRRROORRRRRORRRORRRRRRRRRRRRRORRORRORRRROOROOROORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRORRRRRRRRRORRRRRRRRRRRRRORRRRRRRORRRORRRRRRORRRORRRRORORORRRORRRRRORRRRRRORORRRRRRROORRRORRRRRRRRRRRRRRRRRRRORRORRRRRRRRRRRRRRORRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRRRRORRRRRRRROROORRRRRRRRRRRRRRRRORRRRRRRORRORRRRORRRRORRORRRRRRORRRRRORRRRRRRRORRRRRRRRRRRRRRRRRRRRORRRRRRRORRRRRRRRRRRRROORRRRRRRORRRRRRORRRRRRRRRRRRORROROROORRRRRORRRRRRRRORRRORORRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRORRORORRROORRRRROOORRRRORRRRRRRRRRRRRRRORRRRRORRRRRRROORRRRRRORRRRORRRRRRRRRRRRRRRRORRRORRRRRRRORRRRRRRRRRRRORRRRRRRRORRRRORRORRRRRRRRRRORRRRRRORORRORRRRRRORRRRRRRRRORRORRRRORRORRRROOORORRRRRRRRRRRRRRRORRRRRRORRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRROORRRRRORORRRORRRRRRRRRRRORORORRRRRRRORROORRRORRRRRRRRRRORRRRRRRRRRRRORRRRRRRRRRORRRRRRRRRRRRORRRRORRRRROORRRRORRRRRRRRRRRORRROORRRRORRRRRRORORRRRRORRRRRRRRRRRRRRRRRRRORRORRORRRRRRRRRRRRRRRRORORRRRRORRRORRRRORRRRRORRORRRRRRRRRRRRRRORORORRORRRRRRORRORRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRRRORRRORRRRRRRRRRRORRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRRRRRORORRORRRRRRRRORRRRRRRRRRORRORRRRRRRRORRRRRRORRRRRRRRRRRRRRRRRRRRRRORRRRRRRRRROORRRRRRRRRRRRRRRRRRRRRORRRRRRRRRRORRRRORRRRRRRRRRRRORRRRORRRRRORRRRRRRORRRRRRRRRRRRRORRORRRRRRRRRRRRRRRRRRRORRRRRRORRRRRROORRRRRRRRRRRORRRRRRORRRRRRRRRRRRRRRRORRRRORRRORRRRRRRRRRRRRRRRRRRRROORRRRRRRRRRRRRRRORRORRRRRORRRRORRRRRRRRORRRRRRRRRORRRRRRRRRRRRORORRRRRRRORRRRRRRRROOORRRRORRRRRRRORRRRRRRRRRRRROORRORRRRORRRORRRRRRORRRRRRRRRRRRORORRRRRORRRRROORROORORRRRRRRORRRRRRRORRRRRRRRRRRRRORRRRRRRRRRRRRRRRORORRRRRRRRRRORRRRRORRRORRRRRRRRRORRRRRRRRRRORRORRORRRRRRORRRRRRRRRRRORRRRRRROORRRRRRORORRRRROORRRRRRRRRRRORRRRRRRORORRRRRRRRRORRRRORRORRORRROROORRORRRRROORRORROORORROORRRRRRRRRRRRRRRRORORORORORRRORRRORRRRRRRRRORRORRORRORRRRRRRRORRRRRRRRRRORRORRRRRORORRRORRRRRRRRROORRRRRRRORRRRRRRRORRORRORRRRRORRRRORRRRRRRRRRRORRRRRRRRORRRORRRRRRRRRRRRRRORRORRRRORORRRRRRRRRRRRRRRRRRRRRORRRORRRRRRRRORRRORRRRORRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRROROORRRRRORRRRRRRRRRORRRRRRRRRRRRRRRRRORRRRRROROROORRRRRORRRRRRRRRROORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRROORRRRRRRRRRRORORRRRRRRORRRRRRRRRRRRRRORORRRRRRRRRRRRRRRRORRRRRRRRRRRRRORORRRRRRRORRRRRRRORRRRRRORRRRRRRRRRRRROORRRRRRRORORRRRRRROORRRRRRRRRRRRRRRRRORRRRRRORORRORRRRRRORRRRRRORRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRORORRRRRRRRRRROORRRRORRRRRRRRRRRRRRORRRRRRRORRRRRRORRRRRRRRRRORORRORRRRRRRRRRRRORORORRRRORORRRRRRORORRRRRRORRORORRRRORRRRORRRRORRORRRRRRRRRRRRRRRRRRRRORRORRRRORRRRRRRRRRRRRRROORRRRRRRRRRRORORRRRRRRRRRRRRRRRRRRORRRRRRORRRRRRRORRRRRROORRRORORRRRRRRRRRRRRRRRRRRORORRORORRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORORRRRRRRRROORRRRRRRRRRROOORRRRRRRRRRRRRRROORORRRRRRRRRRRRORORRRROROORORRRRRRRRRRRRORRORRORRRRRRRRRRRORORRRRORRRRORRRRRORRORRRRRRRRRORORRRRRRRRRORORRRRRRRORORRRRRRORRRORRRRORROORRRRRRRRRORORRRRRRRORRRORRRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRRORRORRRORRRRRRRRRRRRRRORRRRORRRRRRRRRRRRRRORRROORRRORRORRRRRRORRRRRRRORRRRRRRRRRRRRORRRRRRORRROORRRRRRRRRORRRRRRRORRRRRORRRRRRORRORRRRRRRRORRRRORORRORRRRRRRRRRRORRRORRRRRRRRRRRRRRRORRRRRRRRORRRORRRORRRRRRRRRRRRRRRRROROROOORRRORRRRRORRRRRRRRRRRRRORRORRRORORRRRRRRRORRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRROROORORRRRRRRRRRRRRRRRRRRRRRRRRRRORRORRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRRRORRRORRRRRRRRRRRRRORRORORRRRRRRRRRRRRRRRRORRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRRRRRORRRRRRORRRRRORRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRRRORRRRRRRRORRRRRRRRRRRRRRRRRRRORORRRRORRRRRRRRRRRRRRRRRRRRRRRORRRORRRRRRRORRRRRRORRORRORRORRORRRRRRRRRRRRRRRORRORRRRRRRRRRRRRRRRRRRRRRORORRRRRRORRRRRRRRRRRRRRRRRRRRRRRROORRRORORRROORRRRRRRRRRRORRRRRORRRRORORRRRRRRRRRRORRRRRRRRRRRRRROORRRRRRORRRRRRRRRRRRRROOROORRRRRRRRORRRRRRRORRRRRORRRRROORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRORRRRRRRRRRRRROORRRRRRRRRORRROORRRRRRRRRROROORRRRRRRORRRRRRRRRORRRRRRORORRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRROROORRRRROORRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRORRORRRRRRRRRRORRROORRORRRORRRRRRRORRRRORRRRRRRRRRRRRRRORRRRRORROORRRORRRRROORRRORRRRRRRRRRRRRRRRRRRRRRRORRRORORRORRROORRRRRRRORROORORRRRRRORRRRRORRORRORRRRRRROORRORRRRRRRRORRRRORROORRRRORRRRRRRRRRROOOROORRRRRRRRRORORRRRRRORRROORORRRRRRRRRRRRRRRRRRRORRRROORORRRRRRRRRRRRRRORRRRRRORRRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRORRRRRRRORRRORRRRRRRORRRRRRRRRRRRRRORORRRRRRRORRRORRROORRORRRRRRRRRRRRRRRRRRRRRRORRRRRORRRRRRRRRRORRRRRRRRRRORRRRROOORRRRRRRRRRRRRRRRRRRRRRRROORRRRRRRRROROORRRRRRRRORRRRRRRRRRRRRRRRORRRRRRRORRRRRRRRRRRORRRORRRRORRRRRRRORRRRRRRRRRRORRRRRRRRRRRRORRRRRRRRRRRRRRORRORRRRRRORRRRRRRRRORRRRRRRORRORRRRRRRRRRRRRRRRORORRRRRRRRRRRRRRRRRRRROORRRRRRRRRRRRRRRRRRRRRRRRRROROORRORRRRRRRRROORRRORORRRRORRRRORRRRRRRRRORRRRORRRROORRRORRRRRORRORORRRRRRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRORRROOORRRRRRROORORRRROOOORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRORRRRRRRRORRRRRRROORRRRRRRORORROORRORORRRRRRRRRRRRRRRRRRRRORROOORORRORRRRRRRROORRRRRRRRRRROORRRRRRRRRRRRRRRRRRORRRRRRRRRRORRRRRRRRRRORRRROOORRRORRRRRRRRRRRRRRRRRRRRRROORRORRRRRRRRRORRRRRRRROOORRRRRRRRORRRORRRRRRRORORRRRRRRRRRRRRORRRRRRRRRRRRRRRRRROORORRRRRRRRRRRRRRRRRROORRRRRRRRRRRRRORORRRRRRRRRRRRRORORRRRRRRRRRRRRRRRRRRRORRRRRRRRRRORRRRRRRRRRORRRRRRRRORROOORRRRRRORORRORRRRRRRORRRRORORRORRORRRRRRORORORRRORRRRRRRRROORRRRRRRRRRRROROOORORRRRRRRRRRRRRRRRRRRRRRRRRORORRORRRRORRRORRRRORRRORRRRRRRRORRRRRRORRRRORRRRRRRRRRRORRRRRRRORRRRRRRRRRRRRRRRORRORRRRRRRRRRRRRRRRRRRORRRRRROORRRRRRRRRROORRRRORRRRRRRRRRRRRRRRRRRRORRRORRRRRRRORRRRRORRRRRRRORRRORRRRRRORRRRORRRRRRRRRRRRRRRORRORRRRRRRROROORRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRORRRRORRRRRRRRRRRRRRORRRORRRRRRRRRORRRORRRRROORRRRRRRRROORRRRRRRRORRRORRRRRRRRRORRRRRORRRRRRRRRRRRRRRRRORRRRRRRRRRORRORRRRRORORRRRRRRRRRRRRRRRRRRORRRROORRRRRRRRRRRRRRRRORRRRRRORRRORRRRORRORRRRRRORRRRRRORORRRRRORRRRRRORRRRRRRRRRRORRORRRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRORRORRRRORRRRRRRORRRRRRORRRRRORRRORORRRRRRRRORRORORRRRRORORORRORRRRRRRRRRORROORRORORRRRORRRRRRRRRRRRRRRRRRRRRORRRRORRRRRRRRRRRRRRRRRRORRRRRRRRRRORRRROORRRRRRORRRRRRRORRRRRRRRRRRRRRRRRRORRRRRRRRRRORRRRRRRRRRRRRRORRRRRRRRRRROOOROROOORRRRRORRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRORORORRRRROORRORRRRORRRRORRRRRRRORRRRRORORRRRRRRRRRRRRRRRRRRRRORORRRRRRRRRRRRRRRRRORRRRROORRRRRRROORRRRRRRORRRORRRRRORORRRRRRRRRRORRRRRRRRRRRRRORRRORRRRRRORRRRORORORRRRORRRRORRRRRORRRRORORORRRRRRRRRRRRRROORRRRRRORORRRRRRRRRRRRRORORRORRORRRRRRRRRRRRORRRRRRRORRRRRORRRRRRROORRRRRRRRORORRRRRRRRRRORRRORRRRORRRRORRRRRRRRRRRORRRRRRRRRRRRRRRRRRRORRRORORRRORRRRORRROORRRRRRRROORRRRRRORRORRROORRRRRRRRRORRRRORRRRRRRRRRRRRRRRRRRRRRORRORORRORORRRRRRORORRRORORRRRRRRRRRRRRRRRRORRRRRRRORRRRRORRRRRRRRRROOORORRRRORORROORRRRRRRRRRRRRRORRRRRRRORORORRROORRRORRRRRRRORRRRRRRRROORRROORORRORRRRRRORROORRRRRRRRRRRRROOORRRRORRRORRRRRRRRRRRORORRRRRRRRRORORRRRRRORRRRRRRORRRRORRRRRRRORRRRRRRORRRORROORORRRRRRRRRORRRRRRRRRRRRRORORRORRRORRRRRRRRRROORRRRRRRRRRRROORRRRRRRRRRRRRRRRRORRRRRRRORRRRRRRRRRRRRORRRRRORRORRRRRRRRORRRORRRRORRRRRRORRORRRRRRRORRRRRRRRRRRRRRRRRRRRRORRRRORRRRRRRRROOORRRRRORRRRRRRRRRRRRRRRRORRRORRRRORRRRRRRRRRRRORRRRRORRORRRRRRRRRRRORRRRRRRRRRORRRRRRRRORRRRRRRRRRRORRRORRRRRRRRRRRRRRRRORORRRRRORRRRRRROORRRRRRRRRRRRRRRRORRRRRRRRRRORRRRRRORRRRRRRRORRORRRRORRRRRRRORRRRRRORRORORRRORRORRRRORRRRRRRRORRRRRRRRORRRRRRRRRRRRRORRRROROORRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRORRORRRRRRRRRRROORRRRRRRRRRRRRRRRRRRRRRORRORRORRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRORORRRRRRRRRRRRRRRRRRRROROORRORRRRRRRRRRRORRRRRRRRRRRRRRRRRORRRRRRORRROORRRRRORRROORRRRRRRRRRRRRRRRRORORRROORORRRRRRRRRRRRRRRRRORRRRRRRRRORRORORRRRRORRRRRROORRRRRRRRRRRRRRRRRRRRRRRORRROORORRRRRORRRRRORRORRRRRRRRRRRRRRRRRRRORORRORRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRORRRRRRRRRRRRORRRRRRRORROORRRRRRRRRRRRRRRRRRRRRORRRRRORRORRORRRORRRRRRORRRRRRRRRRRRORRRRORRRRRRORORRORRROROORRORRRRROORRRRRRROORRRORRRRRRRRRORRRRRRRRRRRRRRORRRRORRRRORRRRRRRRORRORRRRRRRORRRORRRRORRRRORRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRORRRRRRORRRRRRRORRRRORRORRORRRORRRRRRRRRRORRRRRRORRRRRRRRRRRRRRRORRRRRRRRRRRRRORRRRRRRRRRRRRRROORRRRRRORRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRORRORRORRRRRRORRORRRRRRORRRORRRRRRRRRRRRORRRRRRORRRRRRRRRRRRORRORRRRRORRRRRRRRRRRORRRRRRRRRRRRRRRRORRRRRRRRRORORRRRRRRRRRRRRRORORRRRRRRRRRORRROOOORRRORRRRORRRRRROORRRRRRRRRRRRRRRRRRRORRRRRRORRRRRRRRRRRRRRRRORORRRRRRRRRRRORRRRRRRRRRORRROORRRRRRRRRRRRRORRRRRRRRRRORRRORRRRRRRRRRORRRRRORROORORRRRORRRORRORRRRRRRRRRORRRORRRRRROORRRRRORRRRRRRORRRORORRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRRORRRRROORRRRRRRRRRRORORRROORRORRRORRRRRRRRRRRRROROORRORRRRORRRRRRRRRRRRRRRRRRRRORROORRRRORRRORROORRRRRRRRRORRRRRORRRRRRRRRORRRRRORRORRRRRRRRRRRORRRRRRRRRRRORRRORRRRRORRRORRRRRRORRRRRRRRRRRRRRRORRRRORRRRRRRRRRRORORRRRRORRORORRORORRRRORRRRRRRRORRRRRRRRRRORRRORRRORRRRORRORRRRRRRRRRRORRRRRRRRRRRRRORRORRRRRORRRRORRRRORORRRRRRRRRRRRRORRRRRRRRRRRRRRRRORRRRRRORRRORRRRRRRRRRRRRRRRRRRRRRROOOORRRRRRRRRRRRRRRORRORRORRRRRORRRRRRRRRRRRRRRRRRRRRRORRORRRORRRRORRRORRRRRRRRRORRRRRORRRRRORRRRRORRRRORRRRRRORRRRRRRRRROORRRRRRRRRRRRRRRRRRRRRRRRRRRORRORRRORRRRRRRRORRRRRRRRRRRRRRRRRRORRORRRRRRRRRRRRRRRRRRRRRRRORRRRRORORRRRRRRRRRORRRRRRRORRRRRRRRRRRRRRRRRRORORRRRRRRRORRRRRRORRORORRORRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRORRRRRRRRRORRORRRRRRORROORRRRRRRRRRORRRRRRRRRRRRRORRRRRORRRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRORRRRRRORRRRORRRRROORRRRRRRRORORRRRRRRRRORORRRRRORRRRRRRRROORRRORORRRORRRRORRRRRROOORRRRRRRRRRRRRRRRRRROORRRRROORRORORRRRRRRRORRRRRRRRORORRRRORORRRROOORRRRRRRRRRORRRRORRRRRRORRRRRRRRRRRRRRRRRRRRRORRRRORORRRRRORRORRRRRRRRORRRRRORRRRRORRRRRRRRRRRRORRRRRRRRRRRRRORRORRRRORRRROORRRRRRRRRRORRRRRRORRRRRORRRRRRRRORRORRRRORRRRRRRRRORRRRORRRORRRORRRRRRRRRRRRRRORRRRRRRORRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRORORRRRRRRORRRRRRRORRRRRRRRRORRRRRRRRORRRRRRRORRORRRRRRRRRRRRRRRRRORORRORROORRRRRRRRRORRRRORRRRRRRRRRRORRRRRRRRRRRORRRRRORRRRRORRRRRORRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRRRRRORROOORRRRRROOORRRRORRRRRRRRRRORRRRRRRORORRRRRRRRRRRRRRRRRRRRRRRRRORRORRROOROORRRRRRRRRRRRRRRORRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRORRRORRRORRRRRRRRRRRRRRRRRRRRRRRRRORRRRRORRRRRRRRRRRROORRRRRRRORRRRRRRRRRROOORRRORRORRRRORRRRRRRRRRRRRRRORORORRRRRRRRRORRRRORORRRRRRRRRRRORRRRRRRRRRRRRRRRRRRRORRRRRRRORRRORRRRRRRORRRRRRRRRRRRRORRRRRRRRRRRORORORRRRRRRRRRRRORRRRRORRRRRRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRORORRRRRRRRRRORROROORORRRORRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRRRRORRRRORRRRRRRRORRRRRRRORRRRRRRRRRORRRRROORRORRRRRROORRRRRORRRRRRRRROORORRRRROORRRRRRORRRRRRRRRRRORRRRRORORRRRRRRRRRRRRRRRRRRORRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRORRORRRRRRRRRORRRRRRORRRRRROROORRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRORRRORRRRRRORRRRRRRRRORRRORRRRRRRRORRRRRRRRRORRORRRORRRRRRRRRRROORRRRRORRROORRROORORRRRRORORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRORRRRRRRRRRRRRROORRRRRRRRRRRRORRRRORRRRRORRRRRRRRRROROORORRRRRORRRRRRRORRRRRRRRRRRRRRRORRRORRORRRRORRRRORRRRRRRORORRRRRRRRRRRRORROORRRRRRRRRRRRORRRRRRRRRRORRORRRRRRRRRRRRORRRRRRRRRORRORORRORORRRORRRRRRRRRRRRRRRRORRRRRRRRRRRRRORRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRORRRRRRRRORRORRRRRRRRRRORRRRRRRRRRRORRRORRRRRORRRRRRRRRRRORRRORRRRRRRRRRRRRRRRRRRRRRORRRRROORRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRORRRROROORRRRRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRORORRRRRRORRORRRRRRRRRRRRRRRRRRRRRRRRRROOORORRRRRRRRRROORORRRRORRRRORRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRORRRRRRRRRRRRRRRRORRRRRRRRRRRORRRRRRRORRRRRORORRORRORRRRRRRRORRRORRRRRRRRRRRRORRRRRRRRRORRRRRRRRRRRRRORRRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRORORORRRRRRORRRRRRROOORRRRRRRRRRRRRRROORRRRRRROORRRRRRRRORRRORRRORRRRRRRRRRORRRRRRRRRORRRRRRORRRRRRORRORRRRRRRRRRRRRRRRRORORRRRRRORORRRORRRRRRRRRRRRRRORRORRRRRRRRRRORRRORRRRRRRRORRRORRORRRORRRRRORRRRRRRRRORRRRRRRRRRRRORRRRRRRRRRORORRRRORRRRORRRRRRRRRRORRRRRRRRRRRRRRRRRRRRORORRRRRRRRRRRRRORRRORORRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRORRRRROORRRRRRRRRRORRRRORRRRORRRORRRRRRRRRORRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRROORORRRROORRRORRRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRRORRRRRRRRRRORRORRRRRORRRRRRRORORRRRORRRRORRRRRRRRRRRRRRRRRORROOOORORRRRORRRORRRORRORRRORRRRRRRRRRRRRRRRRRORRRRRRRRRRRORRRRRRRORRRRRRORRRRRRRRRRRROROORRORRRRRRRRRRRRRRORRRRRRRORORRRORRRORRRRRRRRRORRRRORRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRORRRRORRROORRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRORRRRORORRRRRRRRORRRRRORORRRRRRRORRORRRRRORRRRRRRRRRRRRRRRORORRRRRRORRRRRRORRRRRORRRRRRRRROOORRRRRORORORRORORRRROOORRRRRRRRRRRROORRRRORRRRRRORRRORRRRRRRRRRRORRORRRRRRRRRRRRRRORRRRRRRRRRRRRRRORRRRORRRRRRRRRRRRRRRRRRRRRRORRORRRORRRRRORRRRRORORORRORRRORRRRORRRRRRRRRROORRRRRRRRRRRRRRORRRRRRRRRRRROORRRRORORRORRRORRRRRRRORORRRRRRRRRRRORRRRRRRORRRRRRRRORRRRRRRRRRRRORRRORRRORRRRRRRRRRORRRRORRRRRRRRRORRRORRRROORORRRRRRRRRRRRORRRRRORRRRRRRORRORRRORRRRRRRRRRRRRRRRRRRROOORRRRRRRRRRRRRRORRRRRRRRRRORRRRRORRRRORRRRORRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRORRRRRRORRRRRRORRRORRRRRORORRRRRRRRRRRRORORRRRORRORRRRRRRORRRRRRRRRORROROORRRRRRRRRRRRRORORRRRRRRRRRRRRRRORRRROOORRRRRRRRRORRRORRRRROOORRRRORRRRORRRRRRRRRRRRRRRORRORRRRRRRRRRRRRRRRRRRORRRORRRRRRRRRRRRRRRRORRROOROORRRRRRRRRORORRRRRRRRRORRRRRRRRRRRORRRRRRRRRRRRRORRRRRRRRORRRRRRRORRORRRRORRRRRRRROORRRRRRRRRORRRRRRRRROORRRRRORORRRORRORRRRORRRRORRORRRORRRRRRRORRORRRRRRRRRRROORRRRRRRORRRRRRRRRRRRRRRRRRRORRRRRRORRORRRORORRRRRRRRORRRRRRORRRRRRRORRRRRORRRRRRORRRRORRRRRRRRRRORRRRRRRRRRRRORORRRRRRRRRRRRORRORRORRRORRRORRRRRRRORRRRRRRRRRRRRROORRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRORRRRRRRRRRORRRRRRRRRRRRRRRRRRRORRRRRRORRRRRRRRRRRRORRRORRRRORRRRORRRRROORRRRORRRRRRRRORORRORRRORRRRRRORRRRRRRORRRRRRORRRRRRRRRRRRRRRRRRRRRRORORRORRRORRRRRRRORRORRRROROORRORRRRRRORRRRRORRRORRRRRRRRRRRRORORRRRORRRRRRRRORRRORRRRRRRRRRRRRRRRRRRORORRRORRRORORRRRRRRORRRRRRRRRORRRRRORRRRORRRRRRRRRRRRRRRRRRRRRORRORRORROORRRRRROORRRRRRRROORRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRORRRRRRRRORRRRRRRORORRRRRRRRORORRRRRRRRRRRORRRRORRRRORRRRRRRRRRORRORRRRRRRRORRORORORRRORRRRRRRORRORRRRRRROORRORRRRORRORRRRRRRRRRRRRRRORRORRRRORRRRRRRRRRRRRRRORRRRRRRRRRRRORRROOORRRRRRRRRRRRRRRRRRRRRRRRRRRRROORRRRRRRRRRRRRRRORRRORRRRORROORORORRRRORORRRRRRRORROORORRRRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRROORRRORRRRRRRORRRRRRRRRRRORROROORRROORRORRRRRRRRRRRRRRRRRRRROORRRRRRRORRRRRRRRRRRRRRRRORROOOOORRRROORRRRORORRRRRORRRRRRRRRRRRRRROORROROORRRRRRRRRRRRRRRRRROORORRORRRRRRORRRORORORRRROROOORORRRORRRRORRRRRRRRRRORRRORRORRRRORRORRRRRORRRRORRRRRRRRRRRRRORRRRRRORRRRRRRORRRRRRORORRRRRRROORRRRORRRRRRRRRRRRRRRRRRRRRRRRRROORRORRRORRRRRROROORRRORRRORRRORORRRRRRRORRRRRRORRRRRRRORRRRORORORRRORORRRRORRRORRRRRRRRRRRRORRORRRRRRROROORRRRRORRRRRRRORRORRRRRRRRORRRRRRRRRRRRRRRRRRRRRORRRRRRRRRRRORRRRORRRRRRRRRORRRRRRRRRRRRRRRRORRRRRRRRRRRRRRORRRRRRRRRRORRRRRRRRRRRRRRRRRORRRRRRRRRRORRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRROOOORORRRORRRRRRRORRRORORRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRORORRRRRRRRRRRORRRRRRRRRRRRRRRRRRORRRRORRRRRRRRRRRRRRRORRRRRRRRROORORRRRRORRRRORRRRORRRRROROOORRRRRORRRROORRRRRRRRRORRRRRRRRRRRRRRRRORRORRRORRRRORRRORRRRRRORORRORORRRRRRRRRRRRRRRRRRRRRRRORRRRORRRRRRRRRRRRRRRRRORRRRRORRRRRRRRRRRRRRRRRRRRORRRRRRRRORORRRRRRRRRRRRRRRORRRRRRORRRRRRRRRRRRRRRRRRRORRORRRORRRRRRORRORRRRRORRRRORRROORRRORRRRRRRRORRRRRRRRRRRRRRROORRRORRRRRORRRRRRRRORORRORRRRRRRRRRRRRRORRRRRRRRRORRRRRRRORORRORRRRRRRRORRRRRRORORRRRRRRRRRRRRORRRRRRRRROORRRRRORRRORORRRRRRRRRORRROORRRRRRRROORRRRRRRORRRRRRRORRRRRORRRRRRRRRRRRORRRRRRRRRORRROOROORRRRRRORRRRORRORRORRRRORORRORRRORRRRRRRRRRRRORRRRORORRRRROOORRORRRRORRRRORRORORRRRRORRORRRRRRRRRRRRRRRORRRRRRRRRRRRRRORRRRROORRRRORRRRRRRRRORRRORRRORRRRORROORRRRRORRRRRRRRORRRRORRRRRRRRRRORRRRRRRRRRRRRORORORRRRRRRORRRRRRRORROROORRRORRRRRRRRRRORRRORORRRRRRRRRRRORRRRRORRRRRRRRRRRRRRORRRORRRRRRRRORRRRRRRRRORORRRRRRRRRRRORORRORRRRRRORRRRRRROORRRRRRRRRRRRORRORRRRRRRORRRRRROORRRRRRRRORRORRORRRRRRRRORROOROROORRRRORRRRRRRORORRRRRRRRRRRRRORRRRRRRRRRRORRRORRRRRRRRRRRRRRRRRRORRRRRRRRORORRRORORRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRROORRRRRRRRRRRRRRRRRRRRRRORRRRRORRORRRRRRRRRORRRORRRRRRORRRRRORRRRRRRRORRRORRRRRRRRRRRRRRRRRRORRROORRRRRRRRRRROORRRRRRRORRRRRRRRRRORRRRORRRRRRORRRRRRRRRRRRRORRRRRRRRORORROORORRROORRRRRORRRRRRRRRRRRRRRRRRRRRORRORORORRRORRRRROORRRROORRRRRRRRRRRRRRRORRRRRRRRRRRRORRRRRRORRRORRRRRRRRRORRRRRRRORRRRRRORRRRRRRRRRRRORRRRRRORRRRRRRRORRRRRRRRRRORRRRRRRRORRRRRRRRRORRRRRRRORRRRRRORORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRORORRRORRRRRRRRRRORRRORRRRRORORRRRRRRRORORRRRRRRRORRRRORRRRRRRRRRRRRRRORORRRRRROORRRRORRRRRRORRRRRRRRRRRRRRORRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRROROORRRRRRRRRRRRRRRRORRRORORORORRORRRRRRORRRRRRRRRORRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRROORRRRRRRRRRRRORRRRRRORRRRRRRRRRRRRRRORRRRRRRRRORRRRRRRORORORORRRRRRRRRRORRRRRRRORRRRORRRORRRRORRORRRRRRRORRRRRRRRRRRRORRRRORORRRRRRORRRORRRORRRROORRRORRORRRRRORRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRORRRRRRRRORRRORORORRRRRRRORORRRRRRRRRORORRRRRRORORRRRRRRRRRRRORORRRRRRRRORRORRRRRRRRORRRRRRRRRORORRRRORRRRRORRRRRRORORRRROORRRRORRRRRRRRRRRRORRRRRRRRRRRORRORRRRROORROORRRRRORORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRROOORRRRRORRORRRRRRRRRRRRRRRORORROORRRRRRRRRRRORRRRRRRRRRRRORRORRORRRRRRRRRRRRRORORRRRRRRRRRRRRRRRRRRRRORRRRORRORORRORRRRRRRORRRORRRRRRRRRRORORRRRRRRRORRRRRRRRRRROORRRORRRRORRRRRROORRRORRRRRRRRRRRRORRRORRORRRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRORRRRORRRRRRRRRRRRRORORORRORRRRRRRRRRRORRORRRRRRRORRRRRRRRRRRRORRRRORRRRRRRRRRRRRRRRRRRRRRRRROORRRROORRRRORRRRRRRRRRORORRRRRRRRRRRRRORRRRRRRRRORRRORRORRRRRRRRRORRORRRORRRRRORRRORRRRRORRRORRRORRRORRORRRRRORRRRRRORRRRORRRRRRRRRRRRRRRRRRROOORRRRRORRRRRRRROORRRRRRRRRRRORRRRRORRRORORRRORRRRRORRRRROOORRRRORRORORRRRRORRORRORRRORRORRRRRRRRRRORRROORRRORRORRRRRROORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRRRORRRRRRRRRRRRRRRRRRORRRRRRORRORRRRRRRRRORRROOORRORRRRRRRRRRRRRRRRRORRRRRRORRORRORRRRRRROORRRORRRRRORRRRRRRRRORRRRRRRORORROORRRORRORRRRRRRRORRRORRRRRRRROORRRORORRRRRRRRRRRRRRRROORRORRORRRRRRRORRRRRRRRRRRRRRRRRRRRRORRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRRORORRRRRORRORRRRRRRRORRRRRRORRRRRRORRRRRRRRORRORRRRRRRORORRRORRRRRRROORRRRRRRRRRRROROORRRRRRRRORROORROORRRRORRROORRRRRRRRRRRRRRRRRORRRRRORRRORRRRRRRRROORRRRRRORRRRRRRRRRRORRRRRRROORRORRRRRRRORRRRORRRORRRRRRRRRRRORRRRRRRRRRRRORRRRRRRORRRRRRRRRRRRRRRORRRRRRRRRRRRRRRORRRRORRRRRRORORRRRRRRRRRRROROORRROORRRRRORRRRRRRRRRRRRRRRRRRRRORRORRRORRRRRRORORRRRRRORRRRRRRRRRORRRRRRRRRRRORRRORRRORRRRRORRRRRRORRRRRRRRRRRRRRRRRRRORRORRRRRRRRRRRORORRRRRRORORRRRRRRRRRORRRRORRRRRRRRRRRRRRRRRRORRRORRRROROORRRRRRRRRRORRRRRRRRRRRRORORRROORORRRORRRRRRORRRORRRRRRROORORRRRRRRRRRORRRRRRRORRRRRRRRRRRRRRRRRRRRRRRORRROORRRRRRRRRRRORRRRRORORRRRRRRRRRRRRRRRORRRORRRRRRRORRRRRRRRORRRORRRRRRRRRRRRRRRRRRRRRROORRORRRRRRRRRRRRRRRRRORRRRRORRORRRRORRRRROROORRRRRRRRRRRORRRRRRRRRRRRRRRORRRRRRRRORRRRRRRRRRRRRRORRRRRORRRORRRRORRRRRRRRRORRRRRRORRRRRRRRRRRRORRRRRRRRRRRRRRRRRORRRRRROORRRRRRRRRORRRRRRRRRRRORRRRRRRRRRORRRRROORRRROORRROROORRRRRRRRORRORRRORRRORRORRRROROORRRRRORRRRRRRRRRRORRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRORRORRRORORRORRRRRRRRORRRRRRRRRRRORRRRRRRRRRRRRORRRRRRRRRRORRRRRRRRRRRRRORORRRORRRRORRRRRRRRRORRRRRRROORRORRRRRRORRRRRRRRRRRRRORORRRRRRORORRRRORRORRRRRRORRRRRRRRRRRRORRORORRRRRRRRROORRRRRRRRRRRRRRRRORRRRRRRRRRORRRRRRRRORORRORRRRRRRRRRRRORRRRORRROORROORRRRRRORRRRRRRRRRRRRORORRRRRRRRRRRRORRRRRRRRRRRRRRRRORRRRRRORRRRRRRRRRORRRRRRRRRRRRORRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRORRRRRRRRRRRRORRRRRRORRRRRORRRRRRRRRRRRRORRORRRRRORRORRRRRRRRRRRRRRRRRRRRRRRRRRORRORRRRRRORRROORRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRORORRRRRRRRRRORRRRRRRORRRRRRRRRROORRRRRRRRRORRRORRORRRRRROROORRORRRRORRRRRRRRRRRRRRRRORORRRRORRRRRRRRRRRRRRRRRRRRRORRRRORRRRRORRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRORRRRRRRRRRORRRRRORRRRRRRORRRRRRRRRRRRRRRRRRRORRORROOORRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRORRRRRRRRRRRRRORRRRRRRORRRRRRRRRRRRORRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRORRROROORRRRRRRORRRRRORORRORRRRRRRRRRRRRORRRRRRRRRRRRRROORRRRRRROORORORRRORRRORRRRRRRRRRRRRRRRRORRORRRRRRORRORRRRRRRRRRRRRRRRORROOROORRORRRORRRORRRRRRRRRRORORRORRORRRRRRRRRRRRRRRORRRRRRRRRORRRRRROORRRRRRRRRRRRRRRRRRRRORROORRRRRRRRROORORROORRRRRORRRORRORORRRRRRRRRRRRORRRRRRRORRRRRRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRORRRRRRORRRORORRRRRRORRRRORRRRRRRRRRRRROORORORRRRRRRORRRRRRRRRRRRORORRRRORRORRRRRRRORORRRRRRRRRRRRRRRRRRRRORRRRRRORORRRRORRRRRRORORRRORORRORRRRRORRRRRRRORRRRORRRORORRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRORRRRRRRRRRORRORORRRRORRRORRRRRRRRRRRRRRRORRRRRRORORRRRRRORRRRRRRRROOORRORRRRRRRRRRRRRRRRORRRRRORRRRRRRRRRRRRRORORROORRRRRRRRRRRORRRORRORRRRRRRRRORRRORRORRRORRRRRRRRRRRRRRRRRRORORRRRRRRRRRORORORRORRRRRRORRRRRROORRRRORRORRRRRRORRRRRRRRRROORRRORRRRRRRRORORRRRRORRRRRRRRRRRRRRRORRRRRRRRRORRRRRRRRRRRRORROORORRRRRRRRRORRRRRRRRRORROORRRRRRRRRRORRRRRRRRORRRRRRORRORRRRRRORROORRRRRRRORRRRORRRRORORRRRRORORRRRRRRRRRRRRORRRRRRRRRRRRRRRORORRRORRRRRRORRRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRORORRRRORRRORRRRRRRRRRRRORRRROORRRRRRRROORRRRRRRRRORRRRRRRRRRRRRRRRRRRRROORRRROORRRRRRRRRRRRRORORRRRRRRRROORRRRRRRRRRRORRRORRRRRRRRRRRORORRRRORRORRRORRRRRRRRRRRRRORRRORRRRRRRRRRRRRRRRRRRRRROORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRROORRRRRRRRRRRRORRRRRRORRRRRRRRORRRORORRORRRORRRRRRRRRRRRRRORRORRRRRRRRRORRRRRORRRRRRRRRORRRRRRRORRRRRRRRRORRORRRRRRRORRRRRRRRRRRROORRRRRRRRRRRRROORRRRRRRRRRORRRRROROORRRRRORRRORRRRRRRRRRRRRRRRRRRRRRRRRRRORRRORRRRRRRRORRRRRRRORORRRRRRORRRRRRRRRORRRRRRRRORRRRORRRRRRRRRRRRRRRRRRRRRRRORRORRRRRRRRRRRRRRRRRRRRRRORORRORROOORRRORRRRRRRORRROORRRRORRORRRORORRRRRRRRRRRRORORRRRRROORRORRRORRRRRORORRRRRRRRRRRRRRRRRORRRRRRRRRRRRROOORRRRRRRRRRORRRORORRRRORORORRRRROORRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRROROROORRRORRRRRRRRRRRRRORRRRRRRR
Download .txt
gitextract_8z7fqhuo/

├── .gitignore
├── Lecture 17.ipynb
├── challenge1/
│   ├── .gitignore
│   ├── README.md
│   ├── coins.cpp
│   ├── coins.py
│   ├── run_tests.sh
│   ├── tests/
│   │   ├── mon0.in
│   │   ├── mon0.out
│   │   ├── mon10a.in
│   │   ├── mon10a.out
│   │   ├── mon10b.in
│   │   ├── mon10b.out
│   │   ├── mon10c.in
│   │   ├── mon10c.out
│   │   ├── mon1a.in
│   │   ├── mon1a.out
│   │   ├── mon1b.in
│   │   ├── mon1b.out
│   │   ├── mon1c.in
│   │   ├── mon1c.out
│   │   ├── mon1d.in
│   │   ├── mon1d.out
│   │   ├── mon2a.in
│   │   ├── mon2a.out
│   │   ├── mon2b.in
│   │   ├── mon2b.out
│   │   ├── mon2c.in
│   │   ├── mon2c.out
│   │   ├── mon3a.in
│   │   ├── mon3a.out
│   │   ├── mon3b.in
│   │   ├── mon3b.out
│   │   ├── mon3c.in
│   │   ├── mon3c.out
│   │   ├── mon3d.in
│   │   ├── mon3d.out
│   │   ├── mon4a.in
│   │   ├── mon4a.out
│   │   ├── mon4b.in
│   │   ├── mon4b.out
│   │   ├── mon5a.in
│   │   ├── mon5a.out
│   │   ├── mon5b.in
│   │   ├── mon5b.out
│   │   ├── mon5c.in
│   │   ├── mon5c.out
│   │   ├── mon6a.in
│   │   ├── mon6a.out
│   │   ├── mon6b.in
│   │   ├── mon6b.out
│   │   ├── mon7a.in
│   │   ├── mon7a.out
│   │   ├── mon7b.in
│   │   ├── mon7b.out
│   │   ├── mon8a.in
│   │   ├── mon8a.out
│   │   ├── mon8b.in
│   │   ├── mon8b.out
│   │   ├── mon9a.in
│   │   ├── mon9a.out
│   │   ├── mon9b.in
│   │   └── mon9b.out
│   └── url.txt
├── challenge2/
│   ├── .gitignore
│   ├── README.md
│   ├── download_test.sh
│   ├── pilots.cpp
│   ├── pilots_n.py
│   ├── pilots_n2.py
│   ├── pilots_n3.py
│   ├── pilots_nlog2n.py
│   ├── pilots_nlogn.py
│   ├── run_tests.sh
│   └── url.txt
├── hello.txt
├── lecture1/
│   ├── Fast exponentiation and fibonacci sequence.ipynb
│   └── Stock Exchange.ipynb
├── lecture11/
│   └── BFS.ipynb
├── lecture12/
│   ├── DFS.ipynb
│   └── Google BFS.ipynb
├── lecture15/
│   └── Dijkstra's algorithm.ipynb
├── lecture16/
│   └── Bignums.ipynb
├── lecture2/
│   ├── Document distance.ipynb
│   └── binary_search.ipynb
├── lecture4/
│   └── Heaps.ipynb
├── lecture5/
│   └── BST.ipynb
├── lecture6/
│   ├── AVL_and_more.ipynb
│   └── Counting BST.ipynb
├── lecture7/
│   ├── Radix Sort Performance.ipynb
│   └── Understanding Radix Sort.ipynb
├── lecture8/
│   └── Hashing and hashtables.ipynb
└── lecture9/
    └── Hashing.ipynb
Download .txt
SYMBOL INDEX (6 symbols across 5 files)

FILE: challenge1/coins.cpp
  function main (line 18) | int main() {

FILE: challenge1/coins.py
  function main (line 4) | def main():

FILE: challenge2/pilots.cpp
  function test (line 15) | bool test(int x) {
  function main (line 36) | int main() {

FILE: challenge2/pilots_n.py
  function ok (line 18) | def ok():

FILE: challenge2/pilots_nlogn.py
  function ok (line 18) | def ok():
Condensed preview — 93 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (8,253K chars).
[
  {
    "path": ".gitignore",
    "chars": 20,
    "preview": ".ipynb_checkpoints/\n"
  },
  {
    "path": "Lecture 17.ipynb",
    "chars": 7118,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"# LCS \"\n   ]\n  },\n  {\n   \"cell_type"
  },
  {
    "path": "challenge1/.gitignore",
    "chars": 6,
    "preview": "coins\n"
  },
  {
    "path": "challenge1/README.md",
    "chars": 182,
    "preview": "# The coins challenge\n\nTo run c++ solution run\n```bash\ng++ coins.cpp -O2 -o coins\n./run_tests.sh ./coins\n```\n\nTo run Pyt"
  },
  {
    "path": "challenge1/coins.cpp",
    "chars": 2227,
    "preview": "#include <algorithm>\n#include <cstdio>\n\n// OVERALL COMPLEXITY: O(n lg n)\n// (due to sorting)\n\n// maximum number of coins"
  },
  {
    "path": "challenge1/coins.py",
    "chars": 1619,
    "preview": "# OVERALL COMPLEXITY: O(n)\n# here we use a dictionary\n\ndef main():\n    # n - number of coins\n    # k - we need k as many"
  },
  {
    "path": "challenge1/run_tests.sh",
    "chars": 352,
    "preview": "#!/bin/bash\n\n# stop script on error and print it\nset -e\n# inform me of undefined variables\nset -u\n# handle cascading fai"
  },
  {
    "path": "challenge1/tests/mon0.in",
    "chars": 21,
    "preview": "15 3\nRORROOROOROOORO\n"
  },
  {
    "path": "challenge1/tests/mon0.out",
    "chars": 2,
    "preview": "8\n"
  },
  {
    "path": "challenge1/tests/mon10a.in",
    "chars": 1000011,
    "preview": "1000000 2\nRRRRRROORRRRRRRRRORRRRRRRRRRRRRORRRRRRORRRRRRRRRRRORRRRRRRORORRRRRRRRRRRRORRRRRRORRRRRRRRRRRORRRRRRRRRRRRRRRRR"
  },
  {
    "path": "challenge1/tests/mon10a.out",
    "chars": 7,
    "preview": "405963\n"
  },
  {
    "path": "challenge1/tests/mon10b.in",
    "chars": 1000012,
    "preview": "1000000 17\nOOOOOOOOOOROOOOOOOOOROOOOOOOOOOOOOOOOOOROOOOOOOOOOROOOOOOOOOOOOOOOOOOOOOOOOROOOOROOOORROOOOOOOOOOOOOOOOOOOOOO"
  },
  {
    "path": "challenge1/tests/mon10b.out",
    "chars": 6,
    "preview": "37260\n"
  },
  {
    "path": "challenge1/tests/mon10c.in",
    "chars": 1000011,
    "preview": "1000000 3\nOOORRROOORRRRRROOOOOOOOORRROOOOOOOOOOOORRRRRROOOOOOOOORRRRRRRRROOOOOOOOOOOOOOORRROOOOOORRROOOOOOOOOOOOOOOOOOOO"
  },
  {
    "path": "challenge1/tests/mon10c.out",
    "chars": 8,
    "preview": "1000000\n"
  },
  {
    "path": "challenge1/tests/mon1a.in",
    "chars": 23,
    "preview": "17 3\nOROOOOOROOOOORRRR\n"
  },
  {
    "path": "challenge1/tests/mon1a.out",
    "chars": 3,
    "preview": "12\n"
  },
  {
    "path": "challenge1/tests/mon1b.in",
    "chars": 20,
    "preview": "14 2\nORROOOOOOORROO\n"
  },
  {
    "path": "challenge1/tests/mon1b.out",
    "chars": 3,
    "preview": "12\n"
  },
  {
    "path": "challenge1/tests/mon1c.in",
    "chars": 18,
    "preview": "12 6\nOORROROOROOR\n"
  },
  {
    "path": "challenge1/tests/mon1c.out",
    "chars": 2,
    "preview": "0\n"
  },
  {
    "path": "challenge1/tests/mon1d.in",
    "chars": 26,
    "preview": "20 2\nRRORRROROORRROORRRRO\n"
  },
  {
    "path": "challenge1/tests/mon1d.out",
    "chars": 2,
    "preview": "3\n"
  },
  {
    "path": "challenge1/tests/mon2a.in",
    "chars": 36,
    "preview": "30 3\nOORROOOOORRROROOOOOROOOOOOOROR\n"
  },
  {
    "path": "challenge1/tests/mon2a.out",
    "chars": 3,
    "preview": "24\n"
  },
  {
    "path": "challenge1/tests/mon2b.in",
    "chars": 39,
    "preview": "33 4\nORROOOOOOOROORROROOOROROOOOOOOOOO\n"
  },
  {
    "path": "challenge1/tests/mon2b.out",
    "chars": 3,
    "preview": "30\n"
  },
  {
    "path": "challenge1/tests/mon2c.in",
    "chars": 35,
    "preview": "29 3\nRRRRRRRRRRRRRRRRORRRRRRRRRRRR\n"
  },
  {
    "path": "challenge1/tests/mon2c.out",
    "chars": 2,
    "preview": "0\n"
  },
  {
    "path": "challenge1/tests/mon3a.in",
    "chars": 1000,
    "preview": "993 7\nOOOOOROOOOOOOORORROOROOOOOOOROOOOOOOOOOOOOOOOOOOOROOOOROOOOOROROROOOOOOROOOOOOOOOOOOOOOOOOOOOOOOOOOOOOROROORROOROR"
  },
  {
    "path": "challenge1/tests/mon3a.out",
    "chars": 4,
    "preview": "960\n"
  },
  {
    "path": "challenge1/tests/mon3b.in",
    "chars": 1254,
    "preview": "1243 1242\nOOOOOOOOOOOOOOOOOOOOOROOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO"
  },
  {
    "path": "challenge1/tests/mon3b.out",
    "chars": 5,
    "preview": "1243\n"
  },
  {
    "path": "challenge1/tests/mon3c.in",
    "chars": 428,
    "preview": "421 3\nRRRRRORRRRRORRRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR"
  },
  {
    "path": "challenge1/tests/mon3c.out",
    "chars": 2,
    "preview": "0\n"
  },
  {
    "path": "challenge1/tests/mon3d.in",
    "chars": 1843,
    "preview": "1835 4\nROOORRRORRRRRORRRRORRROOORORRRRRRRRRRRRRRRRRRRRRRRRORORRRRRRRRRRRORORRORROORRROORORRRRRRRRORROORRRRRRRRRORRRRRROR"
  },
  {
    "path": "challenge1/tests/mon3d.out",
    "chars": 2,
    "preview": "5\n"
  },
  {
    "path": "challenge1/tests/mon4a.in",
    "chars": 32321,
    "preview": "32311 15\nOOOOOOOOOROOOOOOOOROOOOOOOOOOOOOOOROOOROOOOROOOROOOOOOOOROOOOOROOROOOOOOOOORORROOOOOOOOOOOOOOORROOOOOOOOOOOOOOO"
  },
  {
    "path": "challenge1/tests/mon4a.out",
    "chars": 6,
    "preview": "10032\n"
  },
  {
    "path": "challenge1/tests/mon4b.in",
    "chars": 21255,
    "preview": "21243 1242\nOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO"
  },
  {
    "path": "challenge1/tests/mon4b.out",
    "chars": 5,
    "preview": "9944\n"
  },
  {
    "path": "challenge1/tests/mon5a.in",
    "chars": 140323,
    "preview": "140313 3\nROOROOROOOOOOORRRROROOOOOOROOOOOOOORORRROOROORRROOROROROOOORORROOOOOORORRRRRRRROOOOOOOORROOROOOORORRORORROOOROR"
  },
  {
    "path": "challenge1/tests/mon5a.out",
    "chars": 5,
    "preview": "9120\n"
  },
  {
    "path": "challenge1/tests/mon5b.in",
    "chars": 90325,
    "preview": "90313 5321\nOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO"
  },
  {
    "path": "challenge1/tests/mon5b.out",
    "chars": 6,
    "preview": "47898\n"
  },
  {
    "path": "challenge1/tests/mon5c.in",
    "chars": 42220,
    "preview": "42211 7\nRRRRORRRRORRRRRRRRRRORRRORRRRRRRRRRRRRORRRRRRORRRRRRRRRRRRRRRRRORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRORRRRRRR"
  },
  {
    "path": "challenge1/tests/mon5c.out",
    "chars": 2,
    "preview": "0\n"
  },
  {
    "path": "challenge1/tests/mon6a.in",
    "chars": 125843,
    "preview": "125831 152\nOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO"
  },
  {
    "path": "challenge1/tests/mon6a.out",
    "chars": 7,
    "preview": "120258\n"
  },
  {
    "path": "challenge1/tests/mon6b.in",
    "chars": 125841,
    "preview": "125831 2\nORRROOOROOOOOOOOROROROROOOOORROOROOOORROOOROROOROOROORRRRRORROOORROOROOORRORROOOORROROOROOORRROORROOROOROOORROO"
  },
  {
    "path": "challenge1/tests/mon6b.out",
    "chars": 5,
    "preview": "4806\n"
  },
  {
    "path": "challenge1/tests/mon7a.in",
    "chars": 332542,
    "preview": "332532 4\nOOOOOROOOOOOOOOOOOOOORROOOOROOOOOROROOOORRORORROOORRORROOOOOOORORROOOOOORRRRROOOROOROOOOOOOOOROORORRROORORROOOR"
  },
  {
    "path": "challenge1/tests/mon7a.out",
    "chars": 6,
    "preview": "14240\n"
  },
  {
    "path": "challenge1/tests/mon7b.in",
    "chars": 483226,
    "preview": "483212 30242\nRORRRRRRRRRRRORRRRRRRRRORRORRRRRRRRRORRRRORRRROORRRRRORRRRRRORRRRRRRRRRRRRRORRRRORRRRRRRROORRRRRORRRORRRRRR"
  },
  {
    "path": "challenge1/tests/mon7b.out",
    "chars": 7,
    "preview": "332673\n"
  },
  {
    "path": "challenge1/tests/mon8a.in",
    "chars": 843222,
    "preview": "843212 3\nORRRRRRRRRRORRRRRRROORRRRRRRRRRRRRORRRRRORRRRRRRRRRRRRRRRORRRRRRRRRRRORRRRRRORRRORRRRORRRORRRRRRORRRRORRRRRRORR"
  },
  {
    "path": "challenge1/tests/mon8a.out",
    "chars": 7,
    "preview": "141284\n"
  },
  {
    "path": "challenge1/tests/mon8b.in",
    "chars": 432139,
    "preview": "432124 225122\nOOOROOOROOOROORRRROORROORRRROOORORORORRRORRROOOOORROOOOOROOORROOORRRORORROORRRORRROOORROOORRRROOROOORRRRRO"
  },
  {
    "path": "challenge1/tests/mon8b.out",
    "chars": 2,
    "preview": "0\n"
  },
  {
    "path": "challenge1/tests/mon9a.in",
    "chars": 1000009,
    "preview": "999999 2\nOROOOOORRRRROOOOROOOOOROORORROROOOOOOROOROOOOROOROOOROROOOROORRRROROOORRORRRRORRRORORROOROROOOORROOROORORRORROO"
  },
  {
    "path": "challenge1/tests/mon9a.out",
    "chars": 6,
    "preview": "11859\n"
  },
  {
    "path": "challenge1/tests/mon9b.in",
    "chars": 853226,
    "preview": "853212 41329\nOROOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO"
  },
  {
    "path": "challenge1/tests/mon9b.out",
    "chars": 6,
    "preview": "82660\n"
  },
  {
    "path": "challenge1/url.txt",
    "chars": 42,
    "preview": "http://main.edu.pl/en/archive/pa/2010/mon\n"
  },
  {
    "path": "challenge2/.gitignore",
    "chars": 24,
    "preview": "pilots\ntests.zip\ntests/\n"
  },
  {
    "path": "challenge2/README.md",
    "chars": 187,
    "preview": "# The pilots challenge\n\nTo run c++ solution run\n```bash\ng++ pilots.cpp -O2 -o pilots\n./run_tests.sh ./pilots\n```\n\nTo run"
  },
  {
    "path": "challenge2/download_test.sh",
    "chars": 253,
    "preview": "#!/bin/bash\n\n# stop script on error and print it\nset -e\n# inform me of undefined variables\nset -u\n# handle cascading fai"
  },
  {
    "path": "challenge2/pilots.cpp",
    "chars": 937,
    "preview": "\n#include <cstdio>\n#include <algorithm>\n#include <queue>\n#define ST first\n#define ND second\nusing namespace std;\ntypedef"
  },
  {
    "path": "challenge2/pilots_n.py",
    "chars": 1380,
    "preview": "# n solution\n\nfrom collections import deque\n\n# read in the first line of input\nk, n = [int(x) for x in raw_input().split"
  },
  {
    "path": "challenge2/pilots_n2.py",
    "chars": 858,
    "preview": "# n^3 solution\n\n# read in the first line of input\nk, n = [int(x) for x in raw_input().split(' ')]\n# read in the second l"
  },
  {
    "path": "challenge2/pilots_n3.py",
    "chars": 638,
    "preview": "# n^3 solution\n\n# read in the first line of input\nk, n = [int(x) for x in raw_input().split(' ')]\n# read in the second l"
  },
  {
    "path": "challenge2/pilots_nlog2n.py",
    "chars": 12,
    "preview": "# LAZYYYYYY\n"
  },
  {
    "path": "challenge2/pilots_nlogn.py",
    "chars": 1170,
    "preview": "# n * log n solution\n\nfrom bintrees import FastAVLTree\n\n# read in the first line of input\nk, n = [int(x) for x in raw_in"
  },
  {
    "path": "challenge2/run_tests.sh",
    "chars": 382,
    "preview": "#!/bin/bash\n\n# stop script on error and print it\nset -e\n# inform me of undefined variables\nset -u\n# handle cascading fai"
  },
  {
    "path": "challenge2/url.txt",
    "chars": 40,
    "preview": "http://main.edu.pl/en/archive/oi/17/pil\n"
  },
  {
    "path": "hello.txt",
    "chars": 16,
    "preview": "hi\nhow are you?\n"
  },
  {
    "path": "lecture1/Fast exponentiation and fibonacci sequence.ipynb",
    "chars": 20626,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 1,\n   \"metadata\": {\n    \"collapsed\": true\n   },\n   \"outp"
  },
  {
    "path": "lecture1/Stock Exchange.ipynb",
    "chars": 14363,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 5,\n   \"metadata\": {\n    \"collapsed\": true\n   },\n   \"outp"
  },
  {
    "path": "lecture11/BFS.ipynb",
    "chars": 36321,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 11,\n   \"metadata\": {\n    \"collapsed\": true\n   },\n   \"out"
  },
  {
    "path": "lecture12/DFS.ipynb",
    "chars": 106994,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 65,\n   \"metadata\": {\n    \"collapsed\": true\n   },\n   \"out"
  },
  {
    "path": "lecture12/Google BFS.ipynb",
    "chars": 9493,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"# Google BFS question\"\n   ]\n  },\n  "
  },
  {
    "path": "lecture15/Dijkstra's algorithm.ipynb",
    "chars": 35508,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 58,\n   \"metadata\": {\n    \"collapsed\": true\n   },\n   \"out"
  },
  {
    "path": "lecture16/Bignums.ipynb",
    "chars": 11975,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 1,\n   \"metadata\": {\n    \"collapsed\": false\n   },\n   \"out"
  },
  {
    "path": "lecture2/Document distance.ipynb",
    "chars": 28641,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"# Document distance\\n\",\n    \"\\n\",\n "
  },
  {
    "path": "lecture2/binary_search.ipynb",
    "chars": 22222,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 75,\n   \"metadata\": {\n    \"collapsed\": true\n   },\n   \"out"
  },
  {
    "path": "lecture4/Heaps.ipynb",
    "chars": 8253,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 10,\n   \"metadata\": {\n    \"collapsed\": false\n   },\n   \"ou"
  },
  {
    "path": "lecture5/BST.ipynb",
    "chars": 42604,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 38,\n   \"metadata\": {\n    \"collapsed\": false\n   },\n   \"ou"
  },
  {
    "path": "lecture6/AVL_and_more.ipynb",
    "chars": 211827,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 1,\n   \"metadata\": {\n    \"collapsed\": true\n   },\n   \"outp"
  },
  {
    "path": "lecture6/Counting BST.ipynb",
    "chars": 31059,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 60,\n   \"metadata\": {\n    \"collapsed\": true\n   },\n   \"out"
  },
  {
    "path": "lecture7/Radix Sort Performance.ipynb",
    "chars": 17687,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 26,\n   \"metadata\": {\n    \"collapsed\": true\n   },\n   \"out"
  },
  {
    "path": "lecture7/Understanding Radix Sort.ipynb",
    "chars": 24401,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"## Understanding radix sort\\n\",\n   "
  },
  {
    "path": "lecture8/Hashing and hashtables.ipynb",
    "chars": 29610,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 51,\n   \"metadata\": {\n    \"collapsed\": true\n   },\n   \"out"
  },
  {
    "path": "lecture9/Hashing.ipynb",
    "chars": 12627,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"# Rabin-Karp method\\n\",\n    \"\\n\",\n "
  }
]

About this extraction

This page contains the full source code of the nivwusquorum/6.006-2015-notebooks GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 93 files (7.8 MB), approximately 2.1M tokens, and a symbol index with 6 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!