Full Code of johnowhitaker/aiaiart for AI

master 728f077e4d3f cached
12 files
46.8 MB
8.3M tokens
1 requests
Copy disabled (too large) Download .txt
Showing preview only (33,307K chars total). Download the full file to get everything.
Repository: johnowhitaker/aiaiart
Branch: master
Commit: 728f077e4d3f
Files: 12
Total size: 46.8 MB

Directory structure:
gitextract_6ftzropk/

├── AIAIART_1.ipynb
├── AIAIART_2.ipynb
├── AIAIART_3.ipynb
├── AIAIART_4.ipynb
├── AIAIART_5.ipynb
├── AIAIART_6.ipynb
├── AIAIART_7.ipynb
├── AIAIART_8.ipynb
├── AIAIART_9.ipynb
├── LICENSE
├── intro.html
└── readme.md

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

================================================
FILE: AIAIART_1.ipynb
================================================
{
  "nbformat": 4,
  "nbformat_minor": 0,
  "metadata": {
    "colab": {
      "name": "AIAIART #1.ipynb",
      "provenance": [],
      "collapsed_sections": []
    },
    "kernelspec": {
      "name": "python3",
      "display_name": "Python 3"
    },
    "language_info": {
      "name": "python"
    },
    "widgets": {
      "application/vnd.jupyter.widget-state+json": {
        "5d90b8dfe85246419a76ac5e3228751a": {
          "model_module": "@jupyter-widgets/controls",
          "model_name": "FloatSliderModel",
          "model_module_version": "1.5.0",
          "state": {
            "_dom_classes": [],
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "FloatSliderModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/controls",
            "_view_module_version": "1.5.0",
            "_view_name": "FloatSliderView",
            "continuous_update": true,
            "description": "",
            "description_tooltip": null,
            "disabled": false,
            "layout": "IPY_MODEL_46ab4fa592ec4635b040df3368d2527a",
            "max": 5,
            "min": 0,
            "orientation": "horizontal",
            "readout": true,
            "readout_format": ".2f",
            "step": 0.1,
            "style": "IPY_MODEL_fb154a3c5eba4d74bfe77092480323e1",
            "value": 1
          }
        },
        "46ab4fa592ec4635b040df3368d2527a": {
          "model_module": "@jupyter-widgets/base",
          "model_name": "LayoutModel",
          "model_module_version": "1.2.0",
          "state": {
            "_model_module": "@jupyter-widgets/base",
            "_model_module_version": "1.2.0",
            "_model_name": "LayoutModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "LayoutView",
            "align_content": null,
            "align_items": null,
            "align_self": null,
            "border": null,
            "bottom": null,
            "display": null,
            "flex": null,
            "flex_flow": null,
            "grid_area": null,
            "grid_auto_columns": null,
            "grid_auto_flow": null,
            "grid_auto_rows": null,
            "grid_column": null,
            "grid_gap": null,
            "grid_row": null,
            "grid_template_areas": null,
            "grid_template_columns": null,
            "grid_template_rows": null,
            "height": null,
            "justify_content": null,
            "justify_items": null,
            "left": null,
            "margin": null,
            "max_height": null,
            "max_width": null,
            "min_height": null,
            "min_width": null,
            "object_fit": null,
            "object_position": null,
            "order": null,
            "overflow": null,
            "overflow_x": null,
            "overflow_y": null,
            "padding": null,
            "right": null,
            "top": null,
            "visibility": null,
            "width": null
          }
        },
        "fb154a3c5eba4d74bfe77092480323e1": {
          "model_module": "@jupyter-widgets/controls",
          "model_name": "SliderStyleModel",
          "model_module_version": "1.5.0",
          "state": {
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "SliderStyleModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "StyleView",
            "description_width": "",
            "handle_color": null
          }
        },
        "c7b5f49855d94b059e6bca5612f52831": {
          "model_module": "@jupyter-widgets/controls",
          "model_name": "FloatSliderModel",
          "model_module_version": "1.5.0",
          "state": {
            "_dom_classes": [],
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "FloatSliderModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/controls",
            "_view_module_version": "1.5.0",
            "_view_name": "FloatSliderView",
            "continuous_update": true,
            "description": "",
            "description_tooltip": null,
            "disabled": false,
            "layout": "IPY_MODEL_1cd7db1aa67d4aacb790ba3f1951f668",
            "max": 1,
            "min": -1,
            "orientation": "horizontal",
            "readout": true,
            "readout_format": ".2f",
            "step": 0.1,
            "style": "IPY_MODEL_b6c05b3e6cef42bf996bfdda685d65c1",
            "value": 1
          }
        },
        "1cd7db1aa67d4aacb790ba3f1951f668": {
          "model_module": "@jupyter-widgets/base",
          "model_name": "LayoutModel",
          "model_module_version": "1.2.0",
          "state": {
            "_model_module": "@jupyter-widgets/base",
            "_model_module_version": "1.2.0",
            "_model_name": "LayoutModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "LayoutView",
            "align_content": null,
            "align_items": null,
            "align_self": null,
            "border": null,
            "bottom": null,
            "display": null,
            "flex": null,
            "flex_flow": null,
            "grid_area": null,
            "grid_auto_columns": null,
            "grid_auto_flow": null,
            "grid_auto_rows": null,
            "grid_column": null,
            "grid_gap": null,
            "grid_row": null,
            "grid_template_areas": null,
            "grid_template_columns": null,
            "grid_template_rows": null,
            "height": null,
            "justify_content": null,
            "justify_items": null,
            "left": null,
            "margin": null,
            "max_height": null,
            "max_width": null,
            "min_height": null,
            "min_width": null,
            "object_fit": null,
            "object_position": null,
            "order": null,
            "overflow": null,
            "overflow_x": null,
            "overflow_y": null,
            "padding": null,
            "right": null,
            "top": null,
            "visibility": null,
            "width": null
          }
        },
        "b6c05b3e6cef42bf996bfdda685d65c1": {
          "model_module": "@jupyter-widgets/controls",
          "model_name": "SliderStyleModel",
          "model_module_version": "1.5.0",
          "state": {
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "SliderStyleModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "StyleView",
            "description_width": "",
            "handle_color": null
          }
        },
        "02a97ff18a274f269bf6cad4cc1c2212": {
          "model_module": "@jupyter-widgets/output",
          "model_name": "OutputModel",
          "model_module_version": "1.0.0",
          "state": {
            "_dom_classes": [],
            "_model_module": "@jupyter-widgets/output",
            "_model_module_version": "1.0.0",
            "_model_name": "OutputModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/output",
            "_view_module_version": "1.0.0",
            "_view_name": "OutputView",
            "layout": "IPY_MODEL_66ba54a7a0114507b4c4caa438785c7a",
            "msg_id": "",
            "outputs": [
              {
                "output_type": "stream",
                "name": "stdout",
                "text": [
                  "RMSE: tensor(0.7199)\n"
                ]
              },
              {
                "output_type": "display_data",
                "data": {
                  "text/plain": "<Figure size 432x288 with 1 Axes>",
                  "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXQAAAD4CAYAAAD8Zh1EAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAbW0lEQVR4nO3de3SV9Z3v8feXEEp6RIOAVRLSUIOcgljBeKuDVdGCHAaR4vV4G2Sojvczw1LKWTjjLI522ePR1lux9KCeKhZKI9NaWR28oLYgICgVi6CDkh1EiQZ1DBjge/7YOxjCTvazk/3sy7M/r7Wy3Jdv9vN92PGTJ7/nt3+PuTsiIlL4euS6ARERyQwFuohIRCjQRUQiQoEuIhIRCnQRkYjomasN9+/f36urq3O1eRGRgrRmzZod7j4g2XM5C/Tq6mpWr16dq82LiBQkM3uvo+c05CIiEhEKdBGRiFCgi4hERM7G0JNpaWmhvr6eXbt25boV6aLevXtTWVlJaWlprlsRKTp5Fej19fX06dOH6upqzCzX7Uia3J3Gxkbq6+sZPHhwrtsRKTp5Fei7du1SmBcwM6Nfv3589NFHuW5FJC/VrY1x99KNNDQ1M7C8jBljhzJpZEXGXj+vAh1QmBc4vX8iydWtjTFz8XqaW/YCEGtqZubi9QAZC3WdFBURyYK7l27cH+atmlv2cvfSjRnbhgI9ZMuXL2fUqFH07NmTRYsWdVi3Zs0aRowYQU1NDTfeeCNt16mfP38+W7ZsIcy168eNG0d5eTkTJkzosGb37t1cdNFF1NTUcPLJJ7Nly5bQ+hGJmoam5rQe7woFesiqqqqYP38+l156aad11157LY888gibNm1i06ZNPPvss8RiMaZNm8bWrVt5+eWXueaaa7rUQ5AlFmbMmMHjjz/eac28efPo27cvmzdv5pZbbuHWW2/tUj8ixWhgeVlaj3eFAr2N2bNnc++99+6/P2vWLO67775uvWZ1dTXHHXccPXp0/E+9bds2Pv30U0455RTMjCuuuIK6ujoqKiqYM2cO8+bNY8GCBTz00EPs2bOHE088kRdeeAGAmTNnMmvWrG71CDBmzBj69OnTac3TTz/NlVdeCcCUKVNYtmxZqH81iETJjLFDKSstOeCxstISZowdmrFt5N1J0f3W3AyfrMvsa/Y9Hk64t8Onp06dyuTJk7n55pvZt28fCxYs4NVXXz2obvTo0Xz22WcHPf6Tn/yEs88+O+22YrEYlZWV++9XVlYSi8VoaGjg9ttvZ+rUqQwePJjrrruOhx56iPnz5zNlyhR+9rOf8eyzz7Jy5cq0t9kVsViMQYMGAdCzZ08OO+wwGhsb6d+/f1a2L1Loepf22D+OXl5Wyj9PHB7tWS65VF1dTb9+/Vi7di3bt29n5MiR9OvX76C6l156KSv9DBw4kEceeYT58+czevRoLrvsMgCGDx/O5ZdfzoQJE/jzn/9Mr169DvreOXPmsHDhQgAaGho4/vjjATjttNN44IEHstK/iMS1n+ECsHvPvoxvJ38DvZMj6TBNmzaN+fPn88EHHzB16tSkNZk+Qq+oqKC+vn7//fr6eioqvvqtfdVVVx30PevXr6e8vJwPP/ww6WvOmjVr/1BMdXU169Z1/6+diooKtm7dSmVlJXv27GHnzp1Jf+GJyIE6m+GiI/QQnX/++cyePZuWlhaeeOKJpDWZPkI/6qijOPTQQ1mxYgUnn3wyjz32GDfccEOH9YsXL+bjjz9m+fLlTJgwgVdffZXy8vKM9pTMxIkTefTRRzn11FNZtGgRZ511luadiwSQjRkuoJOiB+nVqxdnnnkmF154ISUlJam/IYVVq1ZRWVnJwoUL+eEPf8jw4cP3P9c6DALw4IMPMm3aNGpqajj66KM599xzk77ejh07uO222/jFL37BMcccw/XXX89NN93U7T5Hjx7NBRdcwLJly6isrGTp0qVA/ETxkiVLALj66qtpbGykpqaGe+65h7vuuqvb2xUpBtmY4QJguZqlUFtb6+0vcPHWW2/x7W9/Oyf9tNq3bx+jRo1i4cKFDBkyJKe9FKp8eB9F8kmyMfSy0hLunDwi7SEXM1vj7rXJntMRehsbNmygpqaGMWPGKMxFJGMmjazgzskjqCgvw4CK8rIuhXkqGkNvY9iwYbz77ru5bkNEImjSyIqMB3h7eXeErg+qFDa9fyK5k1eB3rt3bxobGxUKBap1PfTevXvnuhWRopRXQy6VlZXU19drPe0C1nrFIhHJvrwK9NLSUl3pRkSki/JqyEVERLouZaCbWW8ze9XMXjezN83sX5LUfM3MnjKzzWa20syqw2hWREQ6FuQIfTdwlrt/BzgeGGdmp7SruRr4xN1rgP8D/DizbYqISCopA93jPk/cLU18tZ+Gch7waOL2ImCMaZEPEZGsCnRS1MxKgDVADfCAu7dfgLsC2Arg7nvMbCfQD9iRwV5FRHKqbm2Mu5dupKGpmYHlZcwYOzT0DwulI9BJUXff6+7HA5XASWZ2bFc2ZmbTzWy1ma3W1EQRKSSt67HEmppxINbUzMzF66lbG8t1a/ulNW3R3ZvM7HlgHPCXNk/FgEFAvZn1BA4DGpN8/1xgLsQX5+pq0yIi2dD2iLyHGXvbfegxjDXNuyPILJcBZlaeuF0GnAP8tV3ZEuDKxO0pwHOuj3uKSAFrf0TePsxbZXpN8+4IcoR+FPBoYhy9B/Brd/+dmd0BrHb3JcA84HEz2wx8DFwcWsciIlmQ7CpDyWR6TfPuSBno7v4GMDLJ47Pb3N4FXJDZ1kREcifIkXdZaQkzxg7NQjfB6JOiIiJJdHTkXWIW6prm3ZFXa7mIiOSLGWOHZuwqQ9miQBcRSaI1tPN53nl7CnQRkQ5k4ypDmaQxdBGRiFCgi4hEhAJdRCQiNIYuIgUn3xfJyhUFuogUlNaP5LdOJ2xdJAso+lDXkIuIFJRkH8lvXSSr2CnQRaSgdPSR/HxaJCtXFOgiUlA6+kh+Pi2SlSsKdBEpKDPGDqWstOSAx/Jtkaxc0UlRESkohfiR/GxRoItIwSm0j+Rni4ZcREQiQoEuIhIRCnQRkYhQoIuIRIQCXUQkIhToIiIRoWmLIlKUorhiowJdJAKiGE5hiuqKjRpyESlwreEUa2rG+Sqc6tbGct1a3orqio0KdJECF9VwClNUV2xMGehmNsjMnjezDWb2ppndlKTmDDPbaWbrEl+zw2lXRNqLajiFKaorNgY5Qt8D/KO7DwNOAa4zs2FJ6l5y9+MTX3dktEsR6VBUwylMUV2xMWWgu/s2d38tcfsz4C2gcM8aiERMVMMpTJNGVnDn5BFUlJdhQEV5GXdOHlHQJ0QhzVkuZlYNjARWJnn6VDN7HWgA/snd30zy/dOB6QBVVVXp9ioiSWg52a6J4oqN5u7BCs0OAV4E5rj74nbPHQrsc/fPzWw8cJ+7D+ns9Wpra3316tVdbFtEpDiZ2Rp3r032XKBZLmZWCvwG+FX7MAdw90/d/fPE7WeAUjPr342eRUQkTUFmuRgwD3jL3e/poObIRB1mdlLidRsz2aiIiHQuyBj6acDlwHozW5d47EdAFYC7PwxMAa41sz1AM3CxBx3LERGRjEgZ6O7+MmApau4H7s9UUyIikj59UlREJCIU6CIiEaFAFxGJCAW6iEhEKNBFRCJCgS4iEhEKdBGRiFCgi4hEhK4pKiKB6Lql+U+BLiIpRfWiylGjIRcRSUnXLS0MCnQRSUnXLS0MCnQRSUnXLS0MCnQRSUnXLS0MOikqRUUzNbpG1y0tDAp0KRqaqdE9UbyoctQo0KVodDZToztBpaN+yRcKdCkaYczU0FG/5BOdFJWiEcZMDc3PlnyiQJeiEcZMDc3PlnyiQJeiMWlkBXdOHkFFeRkGVJSXcefkEd0aGtH8bMknGkOXopLpmRozxg49YAwdND9bckeBLtINmp8t+USBLtJNmp8t+SLlGLqZDTKz581sg5m9aWY3JakxM/upmW02szfMbFQ47YqISEeCHKHvAf7R3V8zsz7AGjP7o7tvaFNzLjAk8XUy8FDivyIikiUpj9DdfZu7v5a4/RnwFtD+78vzgMc8bgVQbmZHZbxbERHpUFpj6GZWDYwEVrZ7qgLY2uZ+feKxbe2+fzowHaCqqiq9TkVECtGWBfCnSw58bPRvYNDkjG8qcKCb2SHAb4Cb3f3TrmzM3ecCcwFqa2u9K68hIpK3mtbDsyfCvt2d1x1eG8rmAwW6mZUSD/NfufviJCUxYFCb+5WJx0REounLT2D5+fDhi6lrSw+D7/8JDhsWakspA93MDJgHvOXu93RQtgS43swWED8ZutPdt3VQKyJSWHwfvP4j2PDjYPV/sxCqpoTbUxJBjtBPAy4H1pvZusRjPwKqANz9YeAZYDywGfgC+LvMtyoikiWbfg6rrglWO+xWOG4O9ChJXRuylIHu7i8DlqLGgesy1ZSISNZ8vAaeDTimfcT34PTfQq++4fbURfqkqIgUj+YP4LdpzKg+5xUY8N3w+skwBbqIRJPvg7oqaA44P2PUPfBfbwm3p5Ap0EUkGl7/n/DmnGC1VgIXfgElvcLtKcsU6CJSeLYuhpd+ELz+bzdBn5rw+skTCnQRyW9fNEBdGqtZnvr/YPB/D6+fPKZAF5H84Q5PpnEhtcNPgHGrw+unwCjQRSR3VkyFd/9v8PoLP4ee/yW8fgqcAl1EsqPhD/DC+OD1318J/U8Kr58IUqCLSObt2gGLBwSvP3Y2HPcv4fVTJBToItI96Y579zocpjSG108RU6CLSHpWXQebHgxeP6UJeh0WXj+ynwJdRDrWsBReGBe8/uwX4YjTw+tHOqVAF5G43R/Db/oFrx96C5zQ0YrakgsKdJFi9USni6ge7JJ9YGl+j2SVAl2kGKy+Ed7+WfD6yduh9xHh9SOhUKCLRM2Hy+Hfvxe8/vQ6qDwvvH4kaxToIoWs5TNYeGjw+kGT41ecl0hSoIsUkgW9U19Rvi2NexcVBbpIvkpnfW+ASVvh65Xh9SN5T4Eukg8aV8HSNNYt+e6voPrS8PqRgqRAF8m2Pc3w668Hr//GWTBmWXj9SGQo0EXC9tsKaG4IXn/xHuhREl4/ElkKdJFM2vBjWHdb8PqJ78Ah3wqvHykqCnSRrvpsM/zbkOD1J82Fmr8Prx8peikD3cx+CUwAPnT3Y5M8fwbwNPAfiYcWu/sdmWxSJOf2tcCCNK4Q33cUnLsmvH5EkghyhD4fuB94rJOal9x9QkY6EskHL18I7y8MXn9xC/TQH7ySWyl/At19uZlVh9+KSI68vzAe4EFNfBcOGRxePyJdlKlDilPN7HWgAfgnd38zWZGZTQemA1RVVWVo0yJp+M/34elvBq/XfG8pIJkI9NeAb7r752Y2HqgDkp4pcve5wFyA2tpaz8C2RTq2by8sSONHvGIifO/p8PoRCVm3A93dP21z+xkze9DM+rv7ju6+tkhaVk6Dd+YFr79oN5SkcaJTJM91O9DN7Ehgu7u7mZ0E9AB0BVgJV+x38OLfBq+f8Fc4dGh4/YjkgSDTFp8EzgD6m1k9cDtQCuDuDwNTgGvNbA/QDFzs7hpOKUB1a2PcvXQjDU3NDCwvY8bYoUwaWZHrtqD5A/jtUcHrT3oEaqaF149Ingoyy+WSFM/fT3xaoxSwurUxZi5eT3PLXgBiTc3MXLweILuh7vvgqd7xed9BHHEGnP18qC2JFApNnBUA7l66cX+Yt2pu2cvdSzeGG+hrboaN9wWvv/AL6FkWXj8iBUyBLgA0NDWn9XiXfLAMnjs7eP34N6B8ROa2LxJxCnQBYGB5GbEk4T2wvItHw7t2wOIBwetPuA+G3ti1bYkIoECXhBljhx4whg5QVlrCjLEBZoa4w5M9gm/s8BNg3OoudCkinVGgC/DVic9As1z+dBls+VXwF7/gMyg9JEOdppa3s3VEQqZAl/0mjaw4OPhiz8CL/y34i4xdBf1qM9tYGvJmto5IDijQ5StfNsGivsHra66Bkx4Kr58uyNlsHZE8oEAvVu7xizN8/k7w77k0/z8vlpXZOiJ5SoFeLN78X/D6rOD1P9gBX+sXXj8hyfhsHZECokCPosbVsPTE4PVnvwRH/E14/WRRt2briBQ4BXqha/kcFvYJXj/8R/CdOeH1k2NpzdYRiRgFeqH5wyj4ZG2w2t5HwPkfgFm4PeWZpLN1RIqAAj2fvb8IXr4geP3kj6B3//D6EZG8pkDPF5+/C0uODl5/1h/hyDTWRRGRyFOg58Le3fHwbo4Fqz/hpzD0hnB7EpGCp0DPhjW3wMZ7g9UeeQ6cubToxr1FpPsU6JkW+z28OCF4fYHO9xaR/KNA747/3ApPVwWvP+cVGPDd8PoRkaKmQA9qXws8MwI+3Ris/vi7YNit4fYkItKGAr0jTevh7Qdg889T1/Y/Nf5pyx4l4fclItIBBTpA83Z45xF4+37YtT11/fkfQNk3wu+rQIS5/rjWNhcJrvgCfU8zvP9UPLw/XtNxXdlAOOZ6OPrq+CcuJakw1x/X2uYi6Yl2oLvD9mXx8K5/uvPaIf8Q/yofnp3eIiLM9ce1trlIeqIV6Dvfio97b3qg87rK82DIdXDkGLA0roUpBwlz/XGtbS6SnpSBbma/BCYAH7r7sUmeN+A+YDzwBXCVu7+W6UYPsusjeGde/Oi7s09cHn5CfOik6iLoqTWxMy3M9ce1trlIeoIcoc8H7gce6+D5c4Ehia+TgYcS/w3HF/VQNyj5c72/kRj3ngZlR4bWQrbl84nBMNcf19rmIulJGejuvtzMqjspOQ94zN0dWGFm5WZ2lLtvy1CPB7IS6NEL9n0JNdPjQyd9jwtlU/kg308Mhrn+uNY2F0mPxXM4RVE80H/XwZDL74C73P3lxP1lwK3uvjpJ7XRgOkBVVdUJ7733XreaLwan3fVc0mGHivIyXrntrBx0JCK5ZGZr3L022XNZPSnq7nOBuQC1tbX5f8XhPNCVE4P5PEQjIuHJxBSPGNB2ULsy8ZhkQEcnADt6vHWIJtbUjPPVEE3dWr0lIlGXiUBfAlxhcacAO0MbPy9CM8YOpaz0wCUFOjsx2NncbRGJtiDTFp8EzgD6m1k9cDtQCuDuDwPPEJ+yuJn4tMW/C6vZYpTuiUHN3RYpXkFmuVyS4nkHrstYR3KQdC56rLnbIsVLH5OMmHSHaEQkOqL10X/JyNxtzZIRKUwK9AhKZ4imvXz/IJOIdExDLnIAzZIRKVwKdDmAZsmIFC4Fuhwg3Q8yiUj+UKDLATRLRqRw6aSoHEArHIoULgW6HKQ7s2REJHc05CIiEhEKdBGRiFCgi4hEhAJdRCQiFOgiIhGhQBcRiQgFuohIRCjQRUQiQoEuIhIRCnQRkYhQoIuIRIQCXUQkIhToIiIRoUAXEYkIBbqISEQo0EVEIiJQoJvZODPbaGabzey2JM9fZWYfmdm6xNe0zLcqIiKdSXnFIjMrAR4AzgHqgVVmtsTdN7Qrfcrdrw+hRxERCSDIEfpJwGZ3f9fdvwQWAOeF25aIiKQryDVFK4Ctbe7XAycnqfuBmZ0OvA3c4u5b2xeY2XRgOkBVVVXazdatjenixSIiHcjUSdF/A6rd/Tjgj8CjyYrcfa6717p77YABA9LaQN3aGDMXryfW1IwDsaZmZi5eT93aWLeb72ybp931HINv+z2n3fVcqNsSEemuIIEeAwa1uV+ZeGw/d290992Ju78ATshMe1+5e+lGmlv2HvBYc8te7l66MdObAnLzC0REpDuCBPoqYIiZDTazXsDFwJK2BWZ2VJu7E4G3MtdiXENTc1qPd1e2f4GIiHRXyjF0d99jZtcDS4ES4Jfu/qaZ3QGsdvclwI1mNhHYA3wMXJXpRgeWlxFLEt4Dy8syvSkg+79ARES6K9AYurs/4+7HuPvR7j4n8djsRJjj7jPdfbi7f8fdz3T3v2a60Rljh1JWWnLAY2WlJcwYOzTTmwI6/kUR1i8QEZHuKphPik4aWcGdk0dQUV6GARXlZdw5eURos1yy/QtERKS7gkxbzBuTRlZkbZpi63Y0TVJECkVBBXq2ZfMXiIhIdynQO6EPMolIIVGgd6B1Hnrr1MXWeeiAQl1E8lLBnBTNNs1DF5FCo0DvgOahi0ihUaB3QPPQRaTQKNA7oHnoIlJodFK0A5qHLiKFRoHeCc1DF5FCoiEXEZGIUKCLiESEAl1EJCIU6CIiEaFAFxGJCHP33GzY7CPgvU5K+gM7stROvtG+Fyfte3FKd9+/6e4Dkj2Rs0BPxcxWu3ttrvvIBe279r3YaN8zs+8achERiQgFuohIRORzoM/NdQM5pH0vTtr34pSxfc/bMXQREUlPPh+hi4hIGhToIiIRkfNAN7NxZrbRzDab2W1Jnv+amT2VeH6lmVVnv8twBNj3/2FmG8zsDTNbZmbfzEWfYUi1723qfmBmbmaRmdIWZN/N7MLEe/+mmT2R7R7DEuBnvsrMnjeztYmf+/G56DMMZvZLM/vQzP7SwfNmZj9N/Nu8YWaj0t6Iu+fsCygB3gG+BfQCXgeGtav5B+DhxO2Lgady2XOW9/1M4OuJ29cW074n6voAy4EVQG2u+87i+z4EWAv0Tdw/Itd9Z3Hf5wLXJm4PA7bkuu8M7v/pwCjgLx08Px74A2DAKcDKdLeR6yP0k4DN7v6uu38JLADOa1dzHvBo4vYiYIyZWRZ7DEvKfXf35939i8TdFUBllnsMS5D3HeBfgR8Du7LZXMiC7PvfAw+4+ycA7v5hlnsMS5B9d+DQxO3DgIYs9hcqd18OfNxJyXnAYx63Aig3s6PS2UauA70C2Nrmfn3isaQ17r4H2An0y0p34Qqy721dTfy3dxSk3PfEn5uD3P332WwsC4K878cAx5jZK2a2wszGZa27cAXZ938GLjOzeuAZ4IbstJYX0s2Eg+iKRQXAzC4DaoHv5bqXbDCzHsA9wFU5biVXehIfdjmD+F9ly81shLs35bSr7LgEmO/u/9vMTgUeN7Nj3X1frhsrBLk+Qo8Bg9rcr0w8lrTGzHoS/zOsMSvdhSvIvmNmZwOzgInuvjtLvYUt1b73AY4FXjCzLcTHE5dE5MRokPe9Hlji7i3u/h/A28QDvtAF2fergV8DuPufgd7EF68qBoEyoTO5DvRVwBAzG2xmvYif9FzSrmYJcGXi9hTgOU+cQShwKffdzEYCPyce5lEZR4UU++7uO929v7tXu3s18fMHE919dW7azaggP/N1xI/OMbP+xIdg3s1mkyEJsu/vA2MAzOzbxAP9o6x2mTtLgCsSs11OAXa6+7a0XiEPzvyOJ34E8g4wK/HYHcT/B4b4G7oQ2Ay8Cnwr1z1ncd//HdgOrEt8Lcl1z9na93a1LxCRWS4B33cjPuS0AVgPXJzrnrO478OAV4jPgFkHfD/XPWdw358EtgEtxP8Kuxq4Brimzfv+QOLfZn1Xfub10X8RkYjI9ZCLiIhkiAJdRCQiFOgiIhGhQBcRiQgFuohIRCjQRUQiQoEuIhIR/x/NFXnZwE2zQAAAAABJRU5ErkJggg==\n"
                },
                "metadata": {
                  "needs_background": "light"
                }
              }
            ]
          }
        },
        "66ba54a7a0114507b4c4caa438785c7a": {
          "model_module": "@jupyter-widgets/base",
          "model_name": "LayoutModel",
          "model_module_version": "1.2.0",
          "state": {
            "_model_module": "@jupyter-widgets/base",
            "_model_module_version": "1.2.0",
            "_model_name": "LayoutModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "LayoutView",
            "align_content": null,
            "align_items": null,
            "align_self": null,
            "border": null,
            "bottom": null,
            "display": null,
            "flex": null,
            "flex_flow": null,
            "grid_area": null,
            "grid_auto_columns": null,
            "grid_auto_flow": null,
            "grid_auto_rows": null,
            "grid_column": null,
            "grid_gap": null,
            "grid_row": null,
            "grid_template_areas": null,
            "grid_template_columns": null,
            "grid_template_rows": null,
            "height": null,
            "justify_content": null,
            "justify_items": null,
            "left": null,
            "margin": null,
            "max_height": null,
            "max_width": null,
            "min_height": null,
            "min_width": null,
            "object_fit": null,
            "object_position": null,
            "order": null,
            "overflow": null,
            "overflow_x": null,
            "overflow_y": null,
            "padding": null,
            "right": null,
            "top": null,
            "visibility": null,
            "width": null
          }
        },
        "25ee8e84ac074f42bbb41d2165106e65": {
          "model_module": "@jupyter-widgets/controls",
          "model_name": "HBoxModel",
          "model_module_version": "1.5.0",
          "state": {
            "_dom_classes": [],
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "HBoxModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/controls",
            "_view_module_version": "1.5.0",
            "_view_name": "HBoxView",
            "box_style": "",
            "children": [
              "IPY_MODEL_1f79eca980c947a7b9c2d12b8e072043",
              "IPY_MODEL_0ad289245ff943f0802a098859e41638",
              "IPY_MODEL_dee723ae415046a5a06fc5ff9a286b8f"
            ],
            "layout": "IPY_MODEL_082a8ecce842492888b9f35234655c43"
          }
        },
        "1f79eca980c947a7b9c2d12b8e072043": {
          "model_module": "@jupyter-widgets/controls",
          "model_name": "HTMLModel",
          "model_module_version": "1.5.0",
          "state": {
            "_dom_classes": [],
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "HTMLModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/controls",
            "_view_module_version": "1.5.0",
            "_view_name": "HTMLView",
            "description": "",
            "description_tooltip": null,
            "layout": "IPY_MODEL_b633b70c00d44f0ebc62ce9113485fd0",
            "placeholder": "​",
            "style": "IPY_MODEL_45e8bf12df234a6ba5738c4a5db61e91",
            "value": "100%"
          }
        },
        "0ad289245ff943f0802a098859e41638": {
          "model_module": "@jupyter-widgets/controls",
          "model_name": "FloatProgressModel",
          "model_module_version": "1.5.0",
          "state": {
            "_dom_classes": [],
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "FloatProgressModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/controls",
            "_view_module_version": "1.5.0",
            "_view_name": "ProgressView",
            "bar_style": "success",
            "description": "",
            "description_tooltip": null,
            "layout": "IPY_MODEL_8807557597e64df8b82871cb847935a0",
            "max": 200,
            "min": 0,
            "orientation": "horizontal",
            "style": "IPY_MODEL_b9341a3eaac64c96852ae47b90859244",
            "value": 200
          }
        },
        "dee723ae415046a5a06fc5ff9a286b8f": {
          "model_module": "@jupyter-widgets/controls",
          "model_name": "HTMLModel",
          "model_module_version": "1.5.0",
          "state": {
            "_dom_classes": [],
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "HTMLModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/controls",
            "_view_module_version": "1.5.0",
            "_view_name": "HTMLView",
            "description": "",
            "description_tooltip": null,
            "layout": "IPY_MODEL_5bcf23960f43426da59c64d6dbd52f3c",
            "placeholder": "​",
            "style": "IPY_MODEL_acb45521073b451199c2f671458dca17",
            "value": " 200/200 [01:41&lt;00:00,  2.23it/s]"
          }
        },
        "082a8ecce842492888b9f35234655c43": {
          "model_module": "@jupyter-widgets/base",
          "model_name": "LayoutModel",
          "model_module_version": "1.2.0",
          "state": {
            "_model_module": "@jupyter-widgets/base",
            "_model_module_version": "1.2.0",
            "_model_name": "LayoutModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "LayoutView",
            "align_content": null,
            "align_items": null,
            "align_self": null,
            "border": null,
            "bottom": null,
            "display": null,
            "flex": null,
            "flex_flow": null,
            "grid_area": null,
            "grid_auto_columns": null,
            "grid_auto_flow": null,
            "grid_auto_rows": null,
            "grid_column": null,
            "grid_gap": null,
            "grid_row": null,
            "grid_template_areas": null,
            "grid_template_columns": null,
            "grid_template_rows": null,
            "height": null,
            "justify_content": null,
            "justify_items": null,
            "left": null,
            "margin": null,
            "max_height": null,
            "max_width": null,
            "min_height": null,
            "min_width": null,
            "object_fit": null,
            "object_position": null,
            "order": null,
            "overflow": null,
            "overflow_x": null,
            "overflow_y": null,
            "padding": null,
            "right": null,
            "top": null,
            "visibility": null,
            "width": null
          }
        },
        "b633b70c00d44f0ebc62ce9113485fd0": {
          "model_module": "@jupyter-widgets/base",
          "model_name": "LayoutModel",
          "model_module_version": "1.2.0",
          "state": {
            "_model_module": "@jupyter-widgets/base",
            "_model_module_version": "1.2.0",
            "_model_name": "LayoutModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "LayoutView",
            "align_content": null,
            "align_items": null,
            "align_self": null,
            "border": null,
            "bottom": null,
            "display": null,
            "flex": null,
            "flex_flow": null,
            "grid_area": null,
            "grid_auto_columns": null,
            "grid_auto_flow": null,
            "grid_auto_rows": null,
            "grid_column": null,
            "grid_gap": null,
            "grid_row": null,
            "grid_template_areas": null,
            "grid_template_columns": null,
            "grid_template_rows": null,
            "height": null,
            "justify_content": null,
            "justify_items": null,
            "left": null,
            "margin": null,
            "max_height": null,
            "max_width": null,
            "min_height": null,
            "min_width": null,
            "object_fit": null,
            "object_position": null,
            "order": null,
            "overflow": null,
            "overflow_x": null,
            "overflow_y": null,
            "padding": null,
            "right": null,
            "top": null,
            "visibility": null,
            "width": null
          }
        },
        "45e8bf12df234a6ba5738c4a5db61e91": {
          "model_module": "@jupyter-widgets/controls",
          "model_name": "DescriptionStyleModel",
          "model_module_version": "1.5.0",
          "state": {
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "DescriptionStyleModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "StyleView",
            "description_width": ""
          }
        },
        "8807557597e64df8b82871cb847935a0": {
          "model_module": "@jupyter-widgets/base",
          "model_name": "LayoutModel",
          "model_module_version": "1.2.0",
          "state": {
            "_model_module": "@jupyter-widgets/base",
            "_model_module_version": "1.2.0",
            "_model_name": "LayoutModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "LayoutView",
            "align_content": null,
            "align_items": null,
            "align_self": null,
            "border": null,
            "bottom": null,
            "display": null,
            "flex": null,
            "flex_flow": null,
            "grid_area": null,
            "grid_auto_columns": null,
            "grid_auto_flow": null,
            "grid_auto_rows": null,
            "grid_column": null,
            "grid_gap": null,
            "grid_row": null,
            "grid_template_areas": null,
            "grid_template_columns": null,
            "grid_template_rows": null,
            "height": null,
            "justify_content": null,
            "justify_items": null,
            "left": null,
            "margin": null,
            "max_height": null,
            "max_width": null,
            "min_height": null,
            "min_width": null,
            "object_fit": null,
            "object_position": null,
            "order": null,
            "overflow": null,
            "overflow_x": null,
            "overflow_y": null,
            "padding": null,
            "right": null,
            "top": null,
            "visibility": null,
            "width": null
          }
        },
        "b9341a3eaac64c96852ae47b90859244": {
          "model_module": "@jupyter-widgets/controls",
          "model_name": "ProgressStyleModel",
          "model_module_version": "1.5.0",
          "state": {
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "ProgressStyleModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "StyleView",
            "bar_color": null,
            "description_width": ""
          }
        },
        "5bcf23960f43426da59c64d6dbd52f3c": {
          "model_module": "@jupyter-widgets/base",
          "model_name": "LayoutModel",
          "model_module_version": "1.2.0",
          "state": {
            "_model_module": "@jupyter-widgets/base",
            "_model_module_version": "1.2.0",
            "_model_name": "LayoutModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "LayoutView",
            "align_content": null,
            "align_items": null,
            "align_self": null,
            "border": null,
            "bottom": null,
            "display": null,
            "flex": null,
            "flex_flow": null,
            "grid_area": null,
            "grid_auto_columns": null,
            "grid_auto_flow": null,
            "grid_auto_rows": null,
            "grid_column": null,
            "grid_gap": null,
            "grid_row": null,
            "grid_template_areas": null,
            "grid_template_columns": null,
            "grid_template_rows": null,
            "height": null,
            "justify_content": null,
            "justify_items": null,
            "left": null,
            "margin": null,
            "max_height": null,
            "max_width": null,
            "min_height": null,
            "min_width": null,
            "object_fit": null,
            "object_position": null,
            "order": null,
            "overflow": null,
            "overflow_x": null,
            "overflow_y": null,
            "padding": null,
            "right": null,
            "top": null,
            "visibility": null,
            "width": null
          }
        },
        "acb45521073b451199c2f671458dca17": {
          "model_module": "@jupyter-widgets/controls",
          "model_name": "DescriptionStyleModel",
          "model_module_version": "1.5.0",
          "state": {
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "DescriptionStyleModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "StyleView",
            "description_width": ""
          }
        },
        "2567cd7a4c27483184eadc3c3a3240f3": {
          "model_module": "@jupyter-widgets/controls",
          "model_name": "HBoxModel",
          "model_module_version": "1.5.0",
          "state": {
            "_dom_classes": [],
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "HBoxModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/controls",
            "_view_module_version": "1.5.0",
            "_view_name": "HBoxView",
            "box_style": "",
            "children": [
              "IPY_MODEL_1b8c85fe7300404d81fc0e759c43611f",
              "IPY_MODEL_650526ba34c34d0181ecbe2b68add0fc",
              "IPY_MODEL_174322e7ce9d44758c9273e8115a53dd"
            ],
            "layout": "IPY_MODEL_83fd9d0aaeaa43c1acb9a6e838b901a8"
          }
        },
        "1b8c85fe7300404d81fc0e759c43611f": {
          "model_module": "@jupyter-widgets/controls",
          "model_name": "HTMLModel",
          "model_module_version": "1.5.0",
          "state": {
            "_dom_classes": [],
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "HTMLModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/controls",
            "_view_module_version": "1.5.0",
            "_view_name": "HTMLView",
            "description": "",
            "description_tooltip": null,
            "layout": "IPY_MODEL_91086b1cfd394d5f910826fb70e00459",
            "placeholder": "​",
            "style": "IPY_MODEL_95de228a174848618eb60be1e11e6cb6",
            "value": "100%"
          }
        },
        "650526ba34c34d0181ecbe2b68add0fc": {
          "model_module": "@jupyter-widgets/controls",
          "model_name": "FloatProgressModel",
          "model_module_version": "1.5.0",
          "state": {
            "_dom_classes": [],
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "FloatProgressModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/controls",
            "_view_module_version": "1.5.0",
            "_view_name": "ProgressView",
            "bar_style": "success",
            "description": "",
            "description_tooltip": null,
            "layout": "IPY_MODEL_3dd20a2fc91949c9b1f374239eea5df9",
            "max": 200,
            "min": 0,
            "orientation": "horizontal",
            "style": "IPY_MODEL_0ac156543958443c85d38653ea668a34",
            "value": 200
          }
        },
        "174322e7ce9d44758c9273e8115a53dd": {
          "model_module": "@jupyter-widgets/controls",
          "model_name": "HTMLModel",
          "model_module_version": "1.5.0",
          "state": {
            "_dom_classes": [],
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "HTMLModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/controls",
            "_view_module_version": "1.5.0",
            "_view_name": "HTMLView",
            "description": "",
            "description_tooltip": null,
            "layout": "IPY_MODEL_b14ec60a69794f909f02fe68d14adecd",
            "placeholder": "​",
            "style": "IPY_MODEL_54db47219610411287115c4630fde6d7",
            "value": " 200/200 [01:34&lt;00:00,  2.14it/s]"
          }
        },
        "83fd9d0aaeaa43c1acb9a6e838b901a8": {
          "model_module": "@jupyter-widgets/base",
          "model_name": "LayoutModel",
          "model_module_version": "1.2.0",
          "state": {
            "_model_module": "@jupyter-widgets/base",
            "_model_module_version": "1.2.0",
            "_model_name": "LayoutModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "LayoutView",
            "align_content": null,
            "align_items": null,
            "align_self": null,
            "border": null,
            "bottom": null,
            "display": null,
            "flex": null,
            "flex_flow": null,
            "grid_area": null,
            "grid_auto_columns": null,
            "grid_auto_flow": null,
            "grid_auto_rows": null,
            "grid_column": null,
            "grid_gap": null,
            "grid_row": null,
            "grid_template_areas": null,
            "grid_template_columns": null,
            "grid_template_rows": null,
            "height": null,
            "justify_content": null,
            "justify_items": null,
            "left": null,
            "margin": null,
            "max_height": null,
            "max_width": null,
            "min_height": null,
            "min_width": null,
            "object_fit": null,
            "object_position": null,
            "order": null,
            "overflow": null,
            "overflow_x": null,
            "overflow_y": null,
            "padding": null,
            "right": null,
            "top": null,
            "visibility": null,
            "width": null
          }
        },
        "91086b1cfd394d5f910826fb70e00459": {
          "model_module": "@jupyter-widgets/base",
          "model_name": "LayoutModel",
          "model_module_version": "1.2.0",
          "state": {
            "_model_module": "@jupyter-widgets/base",
            "_model_module_version": "1.2.0",
            "_model_name": "LayoutModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "LayoutView",
            "align_content": null,
            "align_items": null,
            "align_self": null,
            "border": null,
            "bottom": null,
            "display": null,
            "flex": null,
            "flex_flow": null,
            "grid_area": null,
            "grid_auto_columns": null,
            "grid_auto_flow": null,
            "grid_auto_rows": null,
            "grid_column": null,
            "grid_gap": null,
            "grid_row": null,
            "grid_template_areas": null,
            "grid_template_columns": null,
            "grid_template_rows": null,
            "height": null,
            "justify_content": null,
            "justify_items": null,
            "left": null,
            "margin": null,
            "max_height": null,
            "max_width": null,
            "min_height": null,
            "min_width": null,
            "object_fit": null,
            "object_position": null,
            "order": null,
            "overflow": null,
            "overflow_x": null,
            "overflow_y": null,
            "padding": null,
            "right": null,
            "top": null,
            "visibility": null,
            "width": null
          }
        },
        "95de228a174848618eb60be1e11e6cb6": {
          "model_module": "@jupyter-widgets/controls",
          "model_name": "DescriptionStyleModel",
          "model_module_version": "1.5.0",
          "state": {
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "DescriptionStyleModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "StyleView",
            "description_width": ""
          }
        },
        "3dd20a2fc91949c9b1f374239eea5df9": {
          "model_module": "@jupyter-widgets/base",
          "model_name": "LayoutModel",
          "model_module_version": "1.2.0",
          "state": {
            "_model_module": "@jupyter-widgets/base",
            "_model_module_version": "1.2.0",
            "_model_name": "LayoutModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "LayoutView",
            "align_content": null,
            "align_items": null,
            "align_self": null,
            "border": null,
            "bottom": null,
            "display": null,
            "flex": null,
            "flex_flow": null,
            "grid_area": null,
            "grid_auto_columns": null,
            "grid_auto_flow": null,
            "grid_auto_rows": null,
            "grid_column": null,
            "grid_gap": null,
            "grid_row": null,
            "grid_template_areas": null,
            "grid_template_columns": null,
            "grid_template_rows": null,
            "height": null,
            "justify_content": null,
            "justify_items": null,
            "left": null,
            "margin": null,
            "max_height": null,
            "max_width": null,
            "min_height": null,
            "min_width": null,
            "object_fit": null,
            "object_position": null,
            "order": null,
            "overflow": null,
            "overflow_x": null,
            "overflow_y": null,
            "padding": null,
            "right": null,
            "top": null,
            "visibility": null,
            "width": null
          }
        },
        "0ac156543958443c85d38653ea668a34": {
          "model_module": "@jupyter-widgets/controls",
          "model_name": "ProgressStyleModel",
          "model_module_version": "1.5.0",
          "state": {
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "ProgressStyleModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "StyleView",
            "bar_color": null,
            "description_width": ""
          }
        },
        "b14ec60a69794f909f02fe68d14adecd": {
          "model_module": "@jupyter-widgets/base",
          "model_name": "LayoutModel",
          "model_module_version": "1.2.0",
          "state": {
            "_model_module": "@jupyter-widgets/base",
            "_model_module_version": "1.2.0",
            "_model_name": "LayoutModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "LayoutView",
            "align_content": null,
            "align_items": null,
            "align_self": null,
            "border": null,
            "bottom": null,
            "display": null,
            "flex": null,
            "flex_flow": null,
            "grid_area": null,
            "grid_auto_columns": null,
            "grid_auto_flow": null,
            "grid_auto_rows": null,
            "grid_column": null,
            "grid_gap": null,
            "grid_row": null,
            "grid_template_areas": null,
            "grid_template_columns": null,
            "grid_template_rows": null,
            "height": null,
            "justify_content": null,
            "justify_items": null,
            "left": null,
            "margin": null,
            "max_height": null,
            "max_width": null,
            "min_height": null,
            "min_width": null,
            "object_fit": null,
            "object_position": null,
            "order": null,
            "overflow": null,
            "overflow_x": null,
            "overflow_y": null,
            "padding": null,
            "right": null,
            "top": null,
            "visibility": null,
            "width": null
          }
        },
        "54db47219610411287115c4630fde6d7": {
          "model_module": "@jupyter-widgets/controls",
          "model_name": "DescriptionStyleModel",
          "model_module_version": "1.5.0",
          "state": {
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "DescriptionStyleModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "StyleView",
            "description_width": ""
          }
        },
        "271bcf85710d4470847ebb185bbdc1ea": {
          "model_module": "@jupyter-widgets/controls",
          "model_name": "HBoxModel",
          "model_module_version": "1.5.0",
          "state": {
            "_dom_classes": [],
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "HBoxModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/controls",
            "_view_module_version": "1.5.0",
            "_view_name": "HBoxView",
            "box_style": "",
            "children": [
              "IPY_MODEL_841391ad612c44969cc04d9a0ffe015c",
              "IPY_MODEL_45c40734733b4c7c93b48a8e30f3359f",
              "IPY_MODEL_7652d782b08243fa85c36ba8c22cc3da"
            ],
            "layout": "IPY_MODEL_29a586c234db4201bd4724c0190d58da"
          }
        },
        "841391ad612c44969cc04d9a0ffe015c": {
          "model_module": "@jupyter-widgets/controls",
          "model_name": "HTMLModel",
          "model_module_version": "1.5.0",
          "state": {
            "_dom_classes": [],
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "HTMLModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/controls",
            "_view_module_version": "1.5.0",
            "_view_name": "HTMLView",
            "description": "",
            "description_tooltip": null,
            "layout": "IPY_MODEL_ecd42cff1c394706b26aad6523c0df87",
            "placeholder": "​",
            "style": "IPY_MODEL_72d18297280042ffa0ae9757e874e13b",
            "value": "100%"
          }
        },
        "45c40734733b4c7c93b48a8e30f3359f": {
          "model_module": "@jupyter-widgets/controls",
          "model_name": "FloatProgressModel",
          "model_module_version": "1.5.0",
          "state": {
            "_dom_classes": [],
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "FloatProgressModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/controls",
            "_view_module_version": "1.5.0",
            "_view_name": "ProgressView",
            "bar_style": "success",
            "description": "",
            "description_tooltip": null,
            "layout": "IPY_MODEL_682e67e69f3345d29f3eb4bf9b9a6b61",
            "max": 100,
            "min": 0,
            "orientation": "horizontal",
            "style": "IPY_MODEL_a065ac549d6944df8cb29769ac94d3ea",
            "value": 100
          }
        },
        "7652d782b08243fa85c36ba8c22cc3da": {
          "model_module": "@jupyter-widgets/controls",
          "model_name": "HTMLModel",
          "model_module_version": "1.5.0",
          "state": {
            "_dom_classes": [],
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "HTMLModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/controls",
            "_view_module_version": "1.5.0",
            "_view_name": "HTMLView",
            "description": "",
            "description_tooltip": null,
            "layout": "IPY_MODEL_e55bfb4066f540eebc4cecec71c0614f",
            "placeholder": "​",
            "style": "IPY_MODEL_85980a73115440c094fef695f85524c1",
            "value": " 100/100 [03:05&lt;00:00,  1.84s/it]"
          }
        },
        "29a586c234db4201bd4724c0190d58da": {
          "model_module": "@jupyter-widgets/base",
          "model_name": "LayoutModel",
          "model_module_version": "1.2.0",
          "state": {
            "_model_module": "@jupyter-widgets/base",
            "_model_module_version": "1.2.0",
            "_model_name": "LayoutModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "LayoutView",
            "align_content": null,
            "align_items": null,
            "align_self": null,
            "border": null,
            "bottom": null,
            "display": null,
            "flex": null,
            "flex_flow": null,
            "grid_area": null,
            "grid_auto_columns": null,
            "grid_auto_flow": null,
            "grid_auto_rows": null,
            "grid_column": null,
            "grid_gap": null,
            "grid_row": null,
            "grid_template_areas": null,
            "grid_template_columns": null,
            "grid_template_rows": null,
            "height": null,
            "justify_content": null,
            "justify_items": null,
            "left": null,
            "margin": null,
            "max_height": null,
            "max_width": null,
            "min_height": null,
            "min_width": null,
            "object_fit": null,
            "object_position": null,
            "order": null,
            "overflow": null,
            "overflow_x": null,
            "overflow_y": null,
            "padding": null,
            "right": null,
            "top": null,
            "visibility": null,
            "width": null
          }
        },
        "ecd42cff1c394706b26aad6523c0df87": {
          "model_module": "@jupyter-widgets/base",
          "model_name": "LayoutModel",
          "model_module_version": "1.2.0",
          "state": {
            "_model_module": "@jupyter-widgets/base",
            "_model_module_version": "1.2.0",
            "_model_name": "LayoutModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "LayoutView",
            "align_content": null,
            "align_items": null,
            "align_self": null,
            "border": null,
            "bottom": null,
            "display": null,
            "flex": null,
            "flex_flow": null,
            "grid_area": null,
            "grid_auto_columns": null,
            "grid_auto_flow": null,
            "grid_auto_rows": null,
            "grid_column": null,
            "grid_gap": null,
            "grid_row": null,
            "grid_template_areas": null,
            "grid_template_columns": null,
            "grid_template_rows": null,
            "height": null,
            "justify_content": null,
            "justify_items": null,
            "left": null,
            "margin": null,
            "max_height": null,
            "max_width": null,
            "min_height": null,
            "min_width": null,
            "object_fit": null,
            "object_position": null,
            "order": null,
            "overflow": null,
            "overflow_x": null,
            "overflow_y": null,
            "padding": null,
            "right": null,
            "top": null,
            "visibility": null,
            "width": null
          }
        },
        "72d18297280042ffa0ae9757e874e13b": {
          "model_module": "@jupyter-widgets/controls",
          "model_name": "DescriptionStyleModel",
          "model_module_version": "1.5.0",
          "state": {
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "DescriptionStyleModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "StyleView",
            "description_width": ""
          }
        },
        "682e67e69f3345d29f3eb4bf9b9a6b61": {
          "model_module": "@jupyter-widgets/base",
          "model_name": "LayoutModel",
          "model_module_version": "1.2.0",
          "state": {
            "_model_module": "@jupyter-widgets/base",
            "_model_module_version": "1.2.0",
            "_model_name": "LayoutModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "LayoutView",
            "align_content": null,
            "align_items": null,
            "align_self": null,
            "border": null,
            "bottom": null,
            "display": null,
            "flex": null,
            "flex_flow": null,
            "grid_area": null,
            "grid_auto_columns": null,
            "grid_auto_flow": null,
            "grid_auto_rows": null,
            "grid_column": null,
            "grid_gap": null,
            "grid_row": null,
            "grid_template_areas": null,
            "grid_template_columns": null,
            "grid_template_rows": null,
            "height": null,
            "justify_content": null,
            "justify_items": null,
            "left": null,
            "margin": null,
            "max_height": null,
            "max_width": null,
            "min_height": null,
            "min_width": null,
            "object_fit": null,
            "object_position": null,
            "order": null,
            "overflow": null,
            "overflow_x": null,
            "overflow_y": null,
            "padding": null,
            "right": null,
            "top": null,
            "visibility": null,
            "width": null
          }
        },
        "a065ac549d6944df8cb29769ac94d3ea": {
          "model_module": "@jupyter-widgets/controls",
          "model_name": "ProgressStyleModel",
          "model_module_version": "1.5.0",
          "state": {
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "ProgressStyleModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "StyleView",
            "bar_color": null,
            "description_width": ""
          }
        },
        "e55bfb4066f540eebc4cecec71c0614f": {
          "model_module": "@jupyter-widgets/base",
          "model_name": "LayoutModel",
          "model_module_version": "1.2.0",
          "state": {
            "_model_module": "@jupyter-widgets/base",
            "_model_module_version": "1.2.0",
            "_model_name": "LayoutModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "LayoutView",
            "align_content": null,
            "align_items": null,
            "align_self": null,
            "border": null,
            "bottom": null,
            "display": null,
            "flex": null,
            "flex_flow": null,
            "grid_area": null,
            "grid_auto_columns": null,
            "grid_auto_flow": null,
            "grid_auto_rows": null,
            "grid_column": null,
            "grid_gap": null,
            "grid_row": null,
            "grid_template_areas": null,
            "grid_template_columns": null,
            "grid_template_rows": null,
            "height": null,
            "justify_content": null,
            "justify_items": null,
            "left": null,
            "margin": null,
            "max_height": null,
            "max_width": null,
            "min_height": null,
            "min_width": null,
            "object_fit": null,
            "object_position": null,
            "order": null,
            "overflow": null,
            "overflow_x": null,
            "overflow_y": null,
            "padding": null,
            "right": null,
            "top": null,
            "visibility": null,
            "width": null
          }
        },
        "85980a73115440c094fef695f85524c1": {
          "model_module": "@jupyter-widgets/controls",
          "model_name": "DescriptionStyleModel",
          "model_module_version": "1.5.0",
          "state": {
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "DescriptionStyleModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "StyleView",
            "description_width": ""
          }
        }
      }
    }
  },
  "cells": [
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "YMJZP6P_9jmi"
      },
      "source": [
        "# Welcome to AIAIART!"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "AhB1mgJ8slj2",
        "cellView": "form"
      },
      "source": [
        "#@title Setup and Imports (run this first)\n",
        "import torch \n",
        "import random\n",
        "import numpy as np\n",
        "import matplotlib.pyplot as plt\n",
        "from PIL import Image\n",
        "import IPython.display as ipd"
      ],
      "execution_count": 1,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 337
        },
        "id": "fdSNcSjnWBBv",
        "outputId": "00cc90a2-53ca-4507-bfe2-e7651e205bb5",
        "cellView": "form"
      },
      "source": [
        "#@title Lesson 1 Video\n",
        "html = ipd.display(ipd.HTML('<iframe width=\"560\" height=\"315\" src=\"https://www.youtube.com/embed/p814BapRq2U\" title=\"YouTube video player\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen></iframe>'))\n",
        "html"
      ],
      "execution_count": 2,
      "outputs": [
        {
          "output_type": "display_data",
          "data": {
            "text/plain": [
              "<IPython.core.display.HTML object>"
            ],
            "text/html": [
              "<iframe width=\"560\" height=\"315\" src=\"https://www.youtube.com/embed/p814BapRq2U\" title=\"YouTube video player\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen></iframe>"
            ]
          },
          "metadata": {}
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "jIAc_ozUr2kS"
      },
      "source": [
        "There's been a bit of an explosion of AI-generated art recently, with the advent of CLIP-guided text-to-image methods and a renewed interest in all things generative. Diving into the various communities, I quickly realised that although there are lots of folks using these methods, only a small subset feel confident enough with the code to modify the notebooks being shared around. This course aims to change that by equipping more coders and artists with the understanding and tools necessary to explore this space, creating new tools and getting to grips with existing ones. \n",
        "\n",
        "The idea had been brewing for some time, but when I put out this tweet expecting one or two responses and ended up with more engagement than I'd ever seen before it became obvious that this needs to happen asap :)\n"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "_RjHtbVA23bj"
      },
      "source": [
        "![Screenshot from 2021-09-12 09-08-09.png](data:image/png;base64,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)"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "hdnKaRMU3MO2"
      },
      "source": [
        "We'll be using Discord to run the course and keep everything organised. If you haven't already, do join us there (https://discord.gg/P92X2pxC) to stay up-to-date on all things course-related. These notebooks are designed to work as standalone lessons, but you'll get much more value out of them if you join us in our weekly sessions (Sundays 4pm UTC) to work through the material together. \n",
        "\n",
        "There will be four main lessons along with additional bonus notebooks. We'll start with Lesson #1 on September 19 and do one every week following that. The content for each lesson will hopefully be released at least a week before the live session. Links to the notebooks for each lesson will be included here as they become available:\n",
        "\n",
        "\n",
        "\n",
        "*   Lesson #1 (This one!): Intro to PyTorch and Optimizing via Gradient Descent\n",
        "*   Lesson #2: Learning Representations, ConvNets, Style Transfer and Auto-Encoders\n",
        "*   Lesson #3: GANs and CLIP\n",
        "*   Lesson #4: Going Further\n",
        "\n"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "P_RLUcBP6ym8"
      },
      "source": [
        "# Navigating The Notebooks\n",
        "\n",
        "![Navigating](https://c.tenor.com/CbhnRg0n7ksAAAAM/kermit-the-frog-looking-for-directions.gif)\n",
        "\n",
        "We're cramming a lot into each lesson, but don't despair! A lot of the code will be illustrative examples which you can skim now and refer to later if you ever need to remind yourself about some specific function. Our goal is NOT to memorize everything, merely to get a high-level overview. I recommend collapsing sections as we complete them to make navigation easier, and if you get lost remember that you can see the table of contents in the panel on the left. \n",
        "\n",
        "Within each section there will be \n",
        "- Text explanations with code examples\n",
        "- Video content (currently just part of the full run-through video linked at the top)\n",
        "- Coding exercises to practice what you've learnt\n",
        "- Discussion questions to talk through as a group, marked with **THINK/DISCUSS**\n",
        "\n",
        "This is version one of this course, so there may be mistakes or concepts that are unclear. Please ask questions and share any feedback via Discord or directly during the live lessons.\n",
        "\n",
        "The live lessons will be recorded (if participants are OK with that), so if you're working through this after we run the lesson there will be a video you can work along with linked here. \n",
        "\n",
        "At the start of each notebook, we'll have a setup section that imports some libraries that will give us access to functionality beyond that offered by Python's standard library. If you haven't already run it, scroll up to the start of this notebook and run the cell so that you're ready to view the videos and dive into the code. You'll notice the code is hidden - click 'show code' to see what's going on. Throughout these notebooks we'll hide code to keep things tidy, but you can always take a peek under the hood to see what's going on. \n"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "wYJXxl4ssGY_"
      },
      "source": [
        "# Section 1: PyTorch and Tensors\n",
        "\n",
        "![PyTorch Logo](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAT4AAACfCAMAAABX0UX9AAAAxlBMVEX////uTCwlJSUAAAAhISEiIiIXFxcUFBQcHBwRERHR0dHj4+PuSSgNDQ2Dg4NQUFCgoKCtra2amppmZmbw8PDuRiN1dXXtQRr5zMbp6enNzc01NTX5xLv/+vnuRB/4+PhAQEAuLi7Z2dnCwsL8495JSUn1mor1oJH0kYD+9vTtNgCAgIAxMTGQkJCbm5u0tLReXl796+jziHbyfmlhYWH4urD7083wYUTvWTz3sKXwaFDydl/2rKDuUTP2pZfziXnxcFrwZkzh9DwPAAAMHElEQVR4nO2dCXeaTBSGkXUQiLtEMbinSYzVJI1Z2rTN//9T3x1QGGBAQPvF5Nzn9LSJMCyvd+YuM1BBQBAEQRAEQRAEQRAEQRAEQRAEQRAEQRAEQRAEQRAEQTwG5x99BZ+ZcxflK8/GtFG+0gxMlK88G9OsoHxlOQf1UL6yDN5APZSvJJsOVQ/lK8fAVw/lK8Wm4quH8pXB8xooX0kGO9tD+Uqw9RooXykGjHqmOfvoy/lknL+F6lXcx8i26+uLD7qqz0LoNWjX/c1uml2+Pj08pjVEhIjXANv7Ftlku6bZsR+uP+raTh/Wa1TsiHqzbae2Lz/q4k4e1mtU3KhO9+728xsc//hEvca36MZnjKSz2US8RryPBtLagw+5ulNnYGbYniD87Ow6791HXN2pE7W9hHrgeP1NndcPuLiT5zyz5wIXVzewh+m+fZE8ZNhfLevHOlim19jy+6njvj18EfUEQ9WlxZGOle01dtxtzr+KeCCfLqpnxzlUVrx3AP3qjsnEaOdoMKlm0jvWhVEM7VjybSrZXiOFx32mKClbxPHtqNZqToZ7GtSIkoF1tKGKcjT5ourltr2Xm/c96a/E3LssE10arbIF/IzyzZ73ew0OL3bF3VM+kERR1i1A11SiiPCbNu9nNajphAEaKLrX3kc6RfkunjqlbI8Ol/ZV5j6SKM/rHs2z1tjSQRAiTzMaLLsMLVBvVGeZ5L24PBxHvougFFDIa7zc+HL/ytpJEkkr/K3dWFuKKKtZ+rH0oMfX8l5PcY4j3wujXn6v8bKzWDfLfUTlg0i1QWRRHu9zIFsM+fTlu2MCvgI919616vzMGP7i8gnCSlZEq5nvJMYnsD6m6xaI976FraL1/ChJ+YTvliiP8oSAn0K+czvU4b5AGTRU3aykF2A48rVFRZSquc5x+vJdvwddt1gh5SIoX1XcdO/LkU84U0U9X+9Nla83bSwXi+WqGh9E29Wp4f1QXdUb2x/ZNmfNRj/4lJGvN101VtH9c/EYGtFzsWz2Lkzz0r0HT74GpJpd+LdWq60TF7yCT1e7X1JcR7XrEEtTVc0S581IGtcYjSXaeloTIUpUnXUQ6EyCNrLTnfqq7+Qb9lsjAvsTp5WvV4SEZZabohOQofLp5seTb6X6H3YtIjXiG+cqEYN75lpfe2GpsqjIRKZ/Ww57iLql0KjoTPNCdFGRvm/bdHVoA7tD9ijKRFp7oftWvuoPicje/rIqreKny2QQjHydh0INKcHwl264WfL1QZxRbNuEsA148vUdDUJvsLt1zdFViCKlRdiD62DYU+EMUkXVkkBlzf8mqrSNrOu3I4eG7jD2Lr3DU/mGTRBPBdODP1TwxBeaxZ9gAOtsirTzmAXmZ7+k7JLSeQntvMMaaBVLI5qaKIVBNUe+iUjASGoro9duG5PFWBVFvRtsBfnIdKUr6vhsWl2dOYrfxiGioo6aE6NnGNV6jaiSd1qQjyy6GlFvF9PJZNKo0W9jXKCocxf0Xfc+f6uAy8D8nlL2SHEdmvft163tDwHDkSyPQmNKjn0GKEFuQwvpdXUII4ODgHxK05GtxTYw8vpobwxtRKZXThaOt92gdqzqo8bujE2wPy1nTEp5CfpuqYVAs3DgTGnOkW/oyFsL68Fg5EQiwKkUufyk9bVUUXYiFgu3rFi7T0A+0YnXZboaBJpRK/ctjMqnkC7jvRdw+FHOlAj4G6QOZYyPmXtLy3w58oFEyraHwNVKkfy3C4bJ3GhCvqkK9xur2Cw035FTqHwK05kpfejfErfUQOWL1nAMum/u3jt7CwavcjO3QczdeeBH3En5JmB82jba6qvRzYYjE1auhHwwWlrf4+cYy4GkVD5Si5rPnIgqv85FXUd0rmO4JqKUWVBjGQSOwy637OLuydwNfvzMIyFfD+5GkXbhniMrbFdsaKLFRg5x+QwJ+lbCOKDV7vug8lnRes4E+uOcnyNysg4Yl63csctv97C+KwhXuyPYfMcdk69Xh0GcGeoh/9UZy5jLUXXirmOpx32Nd9A5RG3+j9Tzxqy9rvHa+IdPyreELzB36PIQDF1l1+w97npvSuhC5RsOh+12u2dMGt0xhAaiFV6ycQvOI/xNit1O3Ppa/K4FI6blq+4FLrGNJDXD5sjXLCDfRVijLx70+cxudoEPv1gDbsJp/Viva/PRGOJSEI9IZ8zYRG8u6L1NPTbGx+Rr18Bnc04CAdC2x4J8clSrNpgmSanvHCjf9c500kauHAS+4yd3s0RDA0CWvbSI5ksR6wA3HIzecKckFuVF5Zs4ikI4J6lKou7fM0c+CI7SQpED5QtMxyy/aCX0HdzNEtXMh6g0J5/GbuU2HO76EEVHLz0u35jt6sxu0m4ETcrXg6Cv9m/k24RhR84WSXbDp/nM3UzlG3nMfywa02RIRTvs1tW1iOJEd4i5jglY0pxzknaWfDD6rv+NfEG9oLTjDV2v+cYt2UOkUcusLINFbXtsb6yo0YCXZ30jzjGMjM77D60vcJsZ9c59XB4on7AGf+L5Cwjf4m41Jp8BY5/KOUQf5PMtmD/2Of/GdYTylV/T8juQj+t99su3S3Mh4I/nC1zPyzkaiLbNermeNzUN+wrW194WWaAHavHcihP3WZw5Yoh+dP+npHxeUJiSR5zS2PfMTfv2y0cDfdpp6T9xK4lnHeBn1OSCvN4oCHg48kHWkayZbQ//CTzvXvkMi1ZPadCXuEtOzqvIieLJd3039PHkM1RREflVgFOK+965m3PIJ8yJ7PT6qqIn+mWi4vKDiHHvLAyJEoSOHPlolYasuSc+payD3//zyLeCnGvVJZwdE/L1wU3Hqk/DlioGExQ8+bx6H7docEo5L3+pQR75YOyS56KoJ28xWW3uaqKisvc3BNcQemyefMIZLQIuWafe9nOfQ+U7ZsWFX2/NI59XIgcLSU5SJ+c6vHKhuggOWa2BZwiHQ658bTpTpP8IPh82atJuruMQ+Zh6X1nf8SeYbONPduSSb0JTO5575My09Rzoi6remlYnk2pjbtGZo1AwrnyCMVLp3KaznPb702VN14nEzvOyFJIvrDa7h1ab//KXWeWSj47uosoJznjzvMZap2UvS74dw19gireMK+bLB20sOj2u0QWqGhi67M9wHCrf3aFPqZ3vy1sk3UqplLOs6PwZJzE1NFVP1AiGddEisr/Wmejqkj18XVI1bm20Oba2KwkUmUhjf2rSkIgVCyObklpgovzQmbZw8EyRf9lsNvZP/E1JMFsRodftdjk+s91Yj2RLsoizji5xEabQgL/Op13/4bVRx7XdEheht16vYxNPKzhA3rWvgvArXJ124DzvQU/40gmaYquWjep0Ou0XbdOnbfItLczFgasMgomiUq0D2hadETnkCB/FfeA8SiwzmIULZA56PrphFRivT4qDVlgFI5/5ekjfHUIqJn1K42PX9xV2vo/hJPtB7yapyoqaUhM5eZhFQgVXl14HK/LNp4PeTHKmibmf9Dg1rl/Dtc38okkKzNrmw4yPOo602YjTZ8CsrL8qMIQFXreg7AnouoijPqr2/xJaUYFnioRvoeqHud0JJGa3R4zF/m9mFfapopz2x6hXQHOWnp8dGHMSnxz/ZDCpR179wkJL2iTHXrrOclWt1kdEJPGqwOci8kSl/bq/8Dz7GQpulsr2INgbE9WSJF0WiVP8aZST4pp9GrrzvC/+Gzwzj/+6Jb3uVJJFD3Vc9FGUk4Md/iqmnfmmkdm9Xeq1BzF6TUeSLLC/lArJpyLyLoNKx71PE3B2ZTOmd8j8uveQWSO+4OqTMnBZ/Spu5X6Q9AgX5/dvLrtboUDxSxN5ZyS1QLvy53ETJmPXm8erit0xo+p94AWfGJu3TkS/itlxK8+vD38uLy//PLw/V9yogYLCZce9L8nsya7EMc1Ox3XdTsc0E5sKP4H5xbm4tBMipWK/fp13WR2Lx2d3v3Bev+1c4RsQk1xf2p394pn2K768lM/mobNHQNN+T3t6FxGE85923Mcy2kFA84L9NpPZt3f6enCedm/32G33c725/PvWscN4BYJAu/J+P0DDy8vs/Nf93zf7BgDlHn4PNpihlQD/iwkEQRAEQRAEQRAEQRAEQRAEQRAEQRAEQRAEQRAEQU6S/wCIV/TfHmqm6wAAAABJRU5ErkJggg==)\n",
        "\n",
        "PyTorch is primarily a deep learning framework. It has been designed to make creating and working with deep neural networks as easy, fast and flexible as possible. Today we'll look at one of the core components that makes this possible: tensors. We'll start by looking at how to contruct and manipulate tensors, and then we'll explore the magic of autograd and how we can use it for optimization with gradient descent. \n",
        "\n",
        "Video:\n",
        "- What is PyTorch?\n",
        "- Creating tensors\n",
        "- Modifying them\n",
        "- Debugging tips\n",
        "- Images as tensors\n",
        "\n",
        "A lot of the material for this lessson was taken from the excellent content over at https://deeplearning.neuromatch.io/tutorials/W1D1_BasicsAndPytorch/student/W1D1_Tutorial1.html"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "HShEqOrSxZts"
      },
      "source": [
        "## 1.1 Creating Tensors\n",
        "\n",
        "![tensor lesson 1](https://i.imgflip.com/5moxki.jpg)\n",
        "\n",
        "We can construct a tensor directly from some common python iterables, such as list and tuple. Nested iterables can also be handled as long as the dimensions make sense."
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "2vfZ13I1smeE",
        "outputId": "a1fd5b91-8bc8-4d3e-ca46-e4f27a07a87e"
      },
      "source": [
        "# tensor from a list\n",
        "a = torch.tensor([0, 1, 2])\n",
        "\n",
        "#tensor from a tuple of tuples\n",
        "b = ((1.0, 1.1), (1.2, 1.3))\n",
        "b = torch.tensor(b)\n",
        "\n",
        "# tensor from a numpy array\n",
        "c = np.ones([2, 3])\n",
        "c = torch.tensor(c)\n",
        "\n",
        "print(f\"Tensor a: {a}\")\n",
        "print(f\"Tensor b: {b}\")\n",
        "print(f\"Tensor c: {c}\")"
      ],
      "execution_count": 3,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Tensor a: tensor([0, 1, 2])\n",
            "Tensor b: tensor([[1.0000, 1.1000],\n",
            "        [1.2000, 1.3000]])\n",
            "Tensor c: tensor([[1., 1., 1.],\n",
            "        [1., 1., 1.]], dtype=torch.float64)\n"
          ]
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "cihog7elk04X"
      },
      "source": [
        "The numerical arguments we pass to these constructors determine the shape of the output tensor - try changing them and see what happens."
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "hNIXxogkwcoK",
        "outputId": "037468cc-5a70-4465-85c4-d1da99000154"
      },
      "source": [
        "x = torch.ones(5, 3)\n",
        "y = torch.zeros(2)\n",
        "z = torch.empty(1, 1, 5)\n",
        "print(f\"Tensor x: {x}\")\n",
        "print(f\"Tensor y: {y}\")\n",
        "print(f\"Tensor z: {z}\")"
      ],
      "execution_count": 4,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Tensor x: tensor([[1., 1., 1.],\n",
            "        [1., 1., 1.],\n",
            "        [1., 1., 1.],\n",
            "        [1., 1., 1.],\n",
            "        [1., 1., 1.]])\n",
            "Tensor y: tensor([0., 0.])\n",
            "Tensor z: tensor([[[7.6451e-31, 3.0939e-41, 3.3631e-44, 0.0000e+00,        nan]]])\n"
          ]
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "tIYOqpPbwmbC"
      },
      "source": [
        "Notice that `.empty()` does not return zeros, but seemingly random small numbers. Unlike `.zeros()`, which initialises the elements of the tensor with zeros, `.empty()` just allocates the memory. It is hence a bit faster if you are looking to just create a tensor.\n",
        "\n",
        "There are also constructors for random numbers:"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "S_qkpbmSwlZO",
        "outputId": "66210761-0633-43be-e564-bebb01c2bb4d"
      },
      "source": [
        "# uniform distribution\n",
        "a = torch.rand(1, 3)\n",
        "\n",
        "# normal distribution\n",
        "b = torch.randn(3, 4)\n",
        "\n",
        "print(f\"Tensor a: {a}\")\n",
        "print(f\"Tensor b: {b}\")"
      ],
      "execution_count": 5,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Tensor a: tensor([[0.3682, 0.8918, 0.4300]])\n",
            "Tensor b: tensor([[ 0.3662,  1.0566, -1.4481, -0.3543],\n",
            "        [-0.6821, -0.4614,  0.6763,  0.8091],\n",
            "        [-0.4049, -0.6253, -0.6337, -1.4377]])\n"
          ]
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "hySuFeSEmMIq"
      },
      "source": [
        "**THINK/DISCUSS**: What's the difference? If you're curious, use `plt.hist(torch.randn(100))` to view the distribution.\n",
        "\n",
        "There are also constructors that allow us to construct a tensor according to the above constructors, but with dimensions equal to another tensor:"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "3csqjS_cmHSF",
        "outputId": "5f0dfebf-bcfe-43ad-8bbb-a5969f87fb84"
      },
      "source": [
        "c = torch.zeros_like(a)\n",
        "d = torch.rand_like(c)\n",
        "print(f\"Tensor c: {c}\")\n",
        "print(f\"Tensor d: {d}\")"
      ],
      "execution_count": 6,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Tensor c: tensor([[0., 0., 0.]])\n",
            "Tensor d: tensor([[0.7247, 0.1910, 0.6216]])\n"
          ]
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "FmOHzGx4w2lm"
      },
      "source": [
        "Finally,  `.arange()` and `.linspace()` behave how you would expect them to if you are familar with numpy."
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "slxXZsSnwgCM",
        "outputId": "4565747b-5816-484c-ec10-87fcb0ad7178"
      },
      "source": [
        "a = torch.arange(0, 10, step=1) # Equivalent to np.arange(0, 10, step=1)\n",
        "b = torch.linspace(0, 5, steps=11) # np.linspace(0, 5, num=11)\n",
        "\n",
        "print(f\"Tensor a: {a}\\n\")\n",
        "print(f\"Tensor b: {b}\\n\")"
      ],
      "execution_count": 7,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Tensor a: tensor([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])\n",
            "\n",
            "Tensor b: tensor([0.0000, 0.5000, 1.0000, 1.5000, 2.0000, 2.5000, 3.0000, 3.5000, 4.0000,\n",
            "        4.5000, 5.0000])\n",
            "\n"
          ]
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "Sle-zg1ow_KK"
      },
      "source": [
        "#### Coding Exercise 1: Creating Tensors\n",
        "Below you will find some incomplete code. Fill in the missing code to construct the specified tensors.\n",
        "\n",
        "We want the tensors:\n",
        "\n",
        "*A*: 20 by 21 tensor consisting of ones\n",
        "\n",
        "*B*: a tensor with elements equal to the elements of numpy array Z\n",
        "\n",
        "*C*: a tensor with the same number of elements as A but with values ∼U(0,1)\n",
        "\n",
        "*D*: a 1D tensor containing the even numbers between 4 and 40 inclusive."
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "8cBZCTu3xKk7"
      },
      "source": [
        "# The numpy array required for B\n",
        "Z = np.vander([1, 2, 3], 4) \n",
        "\n",
        "# Fill in your solutions:\n",
        "A = ...\n",
        "B = ...\n",
        "C = ...\n",
        "D = ...\n",
        "\n",
        "# Check your answers"
      ],
      "execution_count": 8,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "HpIy-S-dxRyn"
      },
      "source": [
        "Tip: use `.shape` to check the dimensions of a tensor. "
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "juZn5ZcCxeE4"
      },
      "source": [
        "## 1.2 Tensor Operations\n",
        "\n",
        "![tensor operations](https://thumbs.gfycat.com/ElementaryDimpledBeardedcollie-max-1mb.gif)\n",
        "\n",
        "We can perform operations on tensors using methods under `torch.`. However, in PyTorch most common Python operators are overridden, so we can use those instead. The common standard arithmetic operators (+, -, \\*, /, and **) have all been lifted to elementwise operations."
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "3DM6Fi7TSA2P",
        "outputId": "b0628c6b-f7f6-46a5-84c0-b277dcfd6d41"
      },
      "source": [
        "x = torch.tensor([1, 2, 4, 8])\n",
        "y = torch.tensor([1, 2, 3, 4])\n",
        "print('Addition via torch.add:', torch.add(x, y))\n",
        "print('Addition using \"+\":', x+y) # The same\n",
        "print('Some other operations:')\n",
        "x + y, x - y, x * y, x / y, x**y  # The ** operator is exponentiation"
      ],
      "execution_count": 9,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Addition via torch.add: tensor([ 2,  4,  7, 12])\n",
            "Addition using \"+\": tensor([ 2,  4,  7, 12])\n",
            "Some other operations:\n"
          ]
        },
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "(tensor([ 2,  4,  7, 12]),\n",
              " tensor([0, 0, 1, 4]),\n",
              " tensor([ 1,  4, 12, 32]),\n",
              " tensor([1.0000, 1.0000, 1.3333, 2.0000]),\n",
              " tensor([   1,    4,   64, 4096]))"
            ]
          },
          "metadata": {},
          "execution_count": 9
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "IAP5PxDCSZsw"
      },
      "source": [
        "**THINK/DISCUSS**: What does 'element-wise' mean? Inspect the outputs above and discuss."
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "YpLCQbgQTFrJ"
      },
      "source": [
        "Tensors also have many built-in methods such as `.mean()` or `.sum()` (see the full list here: https://pytorch.org/docs/stable/tensors.html). Whenever you're working with a multi-dimensional tensor, pay attention to the dimensions and think about what result you're aiming to achieve."
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "Ob5Yid5ATEQ4",
        "outputId": "d823dffc-0756-4670-f5d4-10634172f880"
      },
      "source": [
        "x = torch.rand(3, 3)\n",
        "print(x)\n",
        "print(\"\\n\")\n",
        "# sum() - note the axis is the axis you move across when summing\n",
        "print(f\"Sum of every element of x: {x.sum()}\")\n",
        "print(f\"Sum of the columns of x: {x.sum(axis=0)}\")\n",
        "print(f\"Sum of the rows of x: {x.sum(axis=1)}\")\n",
        "print(\"\\n\")"
      ],
      "execution_count": 10,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "tensor([[0.3556, 0.6408, 0.4905],\n",
            "        [0.8050, 0.9791, 0.0330],\n",
            "        [0.9721, 0.9983, 0.5862]])\n",
            "\n",
            "\n",
            "Sum of every element of x: 5.860609531402588\n",
            "Sum of the columns of x: tensor([2.1327, 2.6182, 1.1097])\n",
            "Sum of the rows of x: tensor([1.4869, 1.8172, 2.5566])\n",
            "\n",
            "\n"
          ]
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "Euo-dRWED409"
      },
      "source": [
        "### Coding Exercise 2\n",
        "\n",
        "\n",
        "1.   Display the mean of each column in x\n",
        "2.   Make a new tensor `x_squared` which is x but every element has been raised to the power of 2\n",
        "3.   Find the sum of all elements in `x_squared`\n",
        "\n"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "qnBXMtVlEjZZ"
      },
      "source": [
        "# Your solution here"
      ],
      "execution_count": 11,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "E0pEvtTPUfbg"
      },
      "source": [
        "Remember we said most operations default to 'element-wise'? What if we want the matrix operation? Torch has you covered there as well. `torch.matmul()` or the `@` symbol let you do matrix multiplication. For dot multiplication, you can use torch.dot(). \n",
        "\n",
        "Transposes of 2D tensors are obtained using `torch.t()` or `Tensor.T`. Note the lack of brackets for `Tensor.T` - it is an attribute, not a method.\n",
        "\n"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "VSr9CgCEWECq"
      },
      "source": [
        "# Exercise: create a few 2D tensors and try out some of these operations."
      ],
      "execution_count": 12,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "PeOm_wZJT01u"
      },
      "source": [
        "## 1.3 Manipulating Tensors\n",
        "\n",
        "Beyond mathematical operations, we often want to access specific items or sets if items in a tensor, or perform operations like changing the shape of a tensor. Here are a few examples of some common tasks. These may feel simple if you're used to something like numpy, but it's worth making sure you know how to do these basic operations (or at least, you know where to find these examples again to refer to them!) since we'll use these a lot in the coming lessons. "
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "Igu1ukW2xfoI",
        "outputId": "a490fa55-0de7-4e54-fb6b-66596b271a7a"
      },
      "source": [
        "# Indexing tensors\n",
        "x = torch.arange(0, 10)\n",
        "print(x)\n",
        "print(x[-1])\n",
        "print(x[1:3]) # From index 1 up to but NOT INCLUDING index 3\n",
        "print(x[:-2])"
      ],
      "execution_count": 13,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "tensor([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])\n",
            "tensor(9)\n",
            "tensor([1, 2])\n",
            "tensor([0, 1, 2, 3, 4, 5, 6, 7])\n"
          ]
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "lnF0-ZAjE3Qr"
      },
      "source": [
        "Reshaping works as long as the shapes make send. (3, 4) -> (4, 3) is fine, but (3, 4) -> (8, 2) won't work since there aren't enough elements!"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "Luu9gNG_xUmQ",
        "outputId": "d9a38484-49a0-44f9-94b0-53f434ab8f7f"
      },
      "source": [
        "# Reshaping\n",
        "z = torch.arange(12).reshape(6, 2)\n",
        "print(f\"Original z (6, 2) : \\n {z}\")\n",
        "\n",
        "# 2D -> 1D\n",
        "z = z.flatten()\n",
        "print(f\"Flattened z: \\n {z}\")\n",
        "\n",
        "# and back to 2D\n",
        "z = z.reshape(3, 4)\n",
        "print(f\"Reshaped (3x4) z: \\n {z}\")"
      ],
      "execution_count": 14,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Original z (6, 2) : \n",
            " tensor([[ 0,  1],\n",
            "        [ 2,  3],\n",
            "        [ 4,  5],\n",
            "        [ 6,  7],\n",
            "        [ 8,  9],\n",
            "        [10, 11]])\n",
            "Flattened z: \n",
            " tensor([ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11])\n",
            "Reshaped (3x4) z: \n",
            " tensor([[ 0,  1,  2,  3],\n",
            "        [ 4,  5,  6,  7],\n",
            "        [ 8,  9, 10, 11]])\n"
          ]
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "a4nW02YJerEk"
      },
      "source": [
        "Concatenating tensors is done with torch.cat - take a look at this examples and take note of how the dimension specified affects the output:"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "8QzCDLe9cxQd",
        "outputId": "7443889f-24d3-4108-9915-6f92e88e7068"
      },
      "source": [
        "# Create two tensors of the same shape\n",
        "x = torch.arange(12, dtype=torch.float32).reshape((3, 4))\n",
        "y = torch.tensor([[2.0, 1, 4, 3], [1, 2, 3, 4], [4, 3, 2, 1]])\n",
        "\n",
        "\n",
        "#concatenate them along rows\n",
        "cat_rows = torch.cat((x, y), dim=0)\n",
        "\n",
        "# concatenate along columns\n",
        "cat_cols = torch.cat((x, y), dim=1)\n",
        "\n",
        "# printing outputs\n",
        "print('Concatenated by rows: shape{} \\n {}'.format(list(cat_rows.shape), cat_rows))\n",
        "print('\\n Concatenated by colums: shape{}  \\n {}'.format(list(cat_cols.shape), cat_cols))"
      ],
      "execution_count": 15,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Concatenated by rows: shape[6, 4] \n",
            " tensor([[ 0.,  1.,  2.,  3.],\n",
            "        [ 4.,  5.,  6.,  7.],\n",
            "        [ 8.,  9., 10., 11.],\n",
            "        [ 2.,  1.,  4.,  3.],\n",
            "        [ 1.,  2.,  3.,  4.],\n",
            "        [ 4.,  3.,  2.,  1.]])\n",
            "\n",
            " Concatenated by colums: shape[3, 8]  \n",
            " tensor([[ 0.,  1.,  2.,  3.,  2.,  1.,  4.,  3.],\n",
            "        [ 4.,  5.,  6.,  7.,  1.,  2.,  3.,  4.],\n",
            "        [ 8.,  9., 10., 11.,  4.,  3.,  2.,  1.]])\n"
          ]
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "susBhttAePb8"
      },
      "source": [
        "## 1.4 Squeezing Tensors\n",
        "\n",
        "When processing batches of data, you will quite often be left with singleton dimensions. e.g. [1,10] or [256, 1, 3]. This dimension can quite easily mess up your matrix operations if you don’t plan on it being there…\n",
        "\n",
        "In order to compress tensors along their singleton dimensions we can use the .`squeeze()` method. We can use the `.unsqueeze()` method to do the opposite."
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "EqTZ3AMGciXI",
        "outputId": "e12b5d50-517b-4b08-c3da-903e90db32ea"
      },
      "source": [
        "x = torch.randn(1, 10)\n",
        "print(x.shape)\n",
        "print(f\"x[0]: {x[0]}\") # printing the zeroth element of the tensor will not give us the first number!"
      ],
      "execution_count": 16,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "torch.Size([1, 10])\n",
            "x[0]: tensor([ 0.9819, -0.7094, -0.1398,  0.1669, -2.0277,  0.2903, -0.0075, -0.6227,\n",
            "         0.9910,  0.2557])\n"
          ]
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "w9cmMuESeZq1"
      },
      "source": [
        "We could do `x[0][0]` but this can get tedious - instead, we can use `squeeze` to get rid of that extra dimension:"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "shVuBS5ycnKT",
        "outputId": "76cbffb4-20c0-42b1-eeaf-f9ab4c8187b8"
      },
      "source": [
        "# lets get rid of that singleton dimension and see what happens now\n",
        "x = x.squeeze(0)\n",
        "print(x.shape)\n",
        "print(f\"x[0]: {x[0]}\")"
      ],
      "execution_count": 17,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "torch.Size([10])\n",
            "x[0]: 0.9818704128265381\n"
          ]
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "xaPIjwXitrfp"
      },
      "source": [
        "Adding singleton dimensions works a similar way, and is often used when tensors being added need same number of dimensions:"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "PLieYb6He5G6",
        "outputId": "57c48bd3-0513-4dde-ddab-61c21cd0995b"
      },
      "source": [
        "y = torch.randn(5, 5)\n",
        "print(f\"shape of y: {y.shape}\")\n",
        "\n",
        "# lets insert a singleton dimension\n",
        "y = y.unsqueeze(1) # Note the argument here is 1 - try 0 and 2 and make sure you get a feel for what unsqueeze does. \n",
        "print(f\"shape of y: {y.shape}\")"
      ],
      "execution_count": 18,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "shape of y: torch.Size([5, 5])\n",
            "shape of y: torch.Size([5, 1, 5])\n"
          ]
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "UMhHS9wmEquy"
      },
      "source": [
        "### Coding Exercise 3\n",
        "\n",
        "\n",
        "\n",
        "1.   Create a tensor shape (1, 10) containing the digits 5..14 \n",
        "2.   Reshape to (2, 5)\n",
        "3.   Use indexing to access just the first column in this reshaped tensor\n",
        "\n"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "-Ss-7jWdFHDQ"
      },
      "source": [
        "# Your solution here"
      ],
      "execution_count": 19,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "aTJ69R0qsc2L"
      },
      "source": [
        "## 1.5 Image Operations\n",
        "\n",
        "As you can imagine, we'll be dealing with images a lot in this course. In this section we'll look at loading images, working with them and displaying them using the PIL library and converting back and forth between the format expected by PIL and that commonly used for tensor image processing.\n",
        "\n",
        "First up, we need an image to play with. We'll grab one from a URL and open it using PIL aka the Pythin Imaging Library):"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "SAJG8MjmuOUQ",
        "outputId": "09a4cb38-7580-4201-e402-0b1cf0b20bcf"
      },
      "source": [
        "# Downloading the original hastily-prepared course logo:\n",
        "!curl https://raw.githubusercontent.com/johnowhitaker/aiaiart/master/logo.png > logo.png"
      ],
      "execution_count": 23,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current\n",
            "                                 Dload  Upload   Total   Spent    Left  Speed\n",
            "\r  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0\r100  179k  100  179k    0     0   749k      0 --:--:-- --:--:-- --:--:--  752k\n"
          ]
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 517
        },
        "id": "KP2ht3AGtj_0",
        "outputId": "74fd7171-12ac-4a86-f607-d73f9e96b9cb"
      },
      "source": [
        "fn = 'logo.png'\n",
        "im = Image.open(fn)\n",
        "im # PIL images are easy to view directly in Jupyter"
      ],
      "execution_count": 24,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "<PIL.PngImagePlugin.PngImageFile image mode=RGBA size=500x500 at 0x7F363C006B10>"
            ],
            "image/png": "iVBORw0KGgoAAAANSUhEUgAAAfQAAAH0CAYAAADL1t+KAAEAAElEQVR4nMz9W4ItuaotCIL5Ov1vTHUnu1E/lTGN/BADBgjZNF8RJ29p7xXubqYHQryFZPr//b/+P6aqYmqiqqJyiYqImoipiMlHzNa7z+f/FhERVRUz83+3qEoUMxNRERETMX/o76/rR1SysqEequklev3I9fPDtUT0j9h1iaqJ3P+IqYrpJSo/colFH6o/InbJfa0h7f6IqImqyC0iaioqRn2r6PUj933HvNYv9xpWf2gCFvDcaiLys+CVSxIBP6tP1VVbRVR+vLnKreud6rXwJOZ1jdFA+NDA/Rr5I2KrvYiK2LXq6L36oE4uURH9EZP/EdNb1F/dKoJVuFXETEX9b7u8b7P1j/Akl6650AgLq9KencpU/3bcEgGJredOgAuPJnKb+F9icudcTcUs106V6UvL36sJw3gvNJqJlvkuWM0+CZ/e0ca2uuu53hif3muv74/j2R30AcpUuZ0GLwf74/1e0Rdoo+O0zBfTjjbe3tDGudE+EmuhNsC76EHpnRqPexNsixYvXlNz6uygGdfDmJfszGDUZMDlMGfML9vXcZaculdbe6Lbu5LnBIeNVba62kAPGaGXmN3Rj/mYKX8exh5KyItSDzhg+XOX10G5MRniWVMRXZLC5DR3ponO11OdCxOa66lWolE91P2vCsnQe8m8gM+E5Lyc4XhRJ9Vi0mRf051V3s37TwrCi4SED+o0wMqnKnNijg3iJkjVSn+prGgSl8r1o0txiwSzGTHhavNTJm1QnCIiessF/ejCawl2IJAErl5LWAY/n5DGArrWcTqnekvZ1/qaP8eyhGBVmBNenwRPqwrmc7zDQOtspiJpgLSxz4Lyb8rdfsZIDSJLHAPoBpeIBU3oqAC8eYdfda66PcP4/vuvZAgpPeKnYwGIba5m5pTK7cmQKUamlHZvi/Y/7Nyelfk+7OV1VMwuEfn0xqJmu0IrS98V+7+bG+onDTzwnzaaZMOvNfkNDEkHshT2spqlGgmuzEu5BvinMhnJJxh1eO/tSSnPVCUhvwwGt/QGXTZBFr6XWf//UGLNZivunVHxzeD6C7heyRIR+WPyca/cvT4XlooFNCjy/Ht5tEb/duLjweH59+cd4I5EA8fr8lqMJMD6L1uPYIxulSbNrdYqzNyT8NWl/eucOtNL0eQCQZ4eWp3LjTmqitmay3VdC5cK5XMT+N8YYXkY5rBKF7bFyPAIhF1LZ9gyQKMGCPVU/jPF/o0g74RHzCMRtjFIrOpkoXC922Its+VEYxOcRONp8c3eq8AGgSFw05vz2HW+XrSto9dbivI0UYGT/1igOLTQCPEvR9cYbGHD4skwRZWqFm4FfxdgTo2f+wbol700cHd5IAIef5pH5Xe7z3D9ijv0FkRDlrcLGZYOB9jZZFfo1ahqivWvyrUiQmWQU393qZLDfsNj6pY0Ql6snb2hte9V3pcaEbDb0hcrMD3B8xuj07x61VNH6F4o9T9qInK59W3wjpx9DUr0LnByWBHPpzBPGgPOPG7cLGUmHtm2fH/tSlZEi4xbYW4JD9xExX6u1Zc5s+iPsLEBAlq9GVDpjGNnRKkL0lCYzojX/0hlPITsYfQ4wTr8iy4xt4ovcTzvfnMtZiYXKWKLalaoIHGzth74pTH1q8hliR0mLnjtBRrVVJCvCwTAG8F79jQ6z6ZTh99uEdnDkws9FnJhtLrHMtfrESkFtxfSmQzcrgy/KbM7wQBb+lqP/MXNJ9DZYDvWGfqAfg91vuTAbHhT0YVzoyHNbFihCYC932k7ZeHoFiMB3Gkz/2R5ZcP7Vobn3yjnSdA+yeAE0eWVkcy7qpNRYC/40qDxMxD8SwihEbgQd0SqnWqTtH2LrkdltsGZBs88wFGN4eXQbTD3X5XCp422u237t2XcJupd/7tpRPmzFJuKNg80LUHa523vuxcez5SoQGX97WFdE7xvfapuwsIhc6FpcomJXeoe0y1y3yLX5QsB6aNyh2f38VG6J+1wDR7S7mFb+1lx0GstgwIwgQZTmStFiMOIEt4fvhbMpeM0QnjJgxiZYCC8tbYVB4Mfc388u+DlWPtp+t+U0pu603s2xBySjc5yDgokv+GEY7isPwPN4B/zA1XvAk+xFRCUPplmh/Eri++eWWtR1p6NQ3GUUV8wamQQlG4E4zF7h1eH3iq1pMF1p/ZGXoJXI/Nj4XQLI0/4WLjYjUfbf9sZMGFTE5XMV9k8Qzut0e8KG3qPBm8scwO65F3Myo7JT+UmR/KKl7HGW+tugt2rn4cIR/B/V3CikpHEc/uQ3YKIhEiPqHzD13rPeNnfi4jno7CkHzSjTf3YTH5/UdLIxzDfqeqk1P9qXB/vz0qq+hEwNRPnZevZTQOlIkfoJOvf9y2my5Ms4T+LtCv3XrtFCQtcpMU3VkjZpcOtJmoql16rv58VyrkEcm3tlf+4J3NnN8Xcwu7kinK7Ai6FgC/wKL3jCQD+n4Jk5xpRvReBu6IvI5nU8VVozmkPiZnYjysKWPHULqGyUDoXe4garChyLe8cNjXqATuPOqc8mBiaNV6F7FyYtJN49HIFwL2D9ozzLzyn4isTwcrSHHbOeZJpr9/slgx8X81L8v4lGew44yAPx7XmfMws18FX6OLtqmaUcGqGmvPLVjRXKpSb9iqV5ophbbEOPe9lVdjH3HZUB6vwvFy1Xgot3w4EH2qvC4OKLNdS56JI4ocMlP+u7N6Y+jzhZOyRqLT0ZeFSfRvOYB5env5hzp7PBlHPVdgnuZlqY5kpWGVLLN3qcV7LbKCISEQ06zOJ+qftywJKiA3wy89c/aDP/4v1/5qkOIDxWOkwxpvo6B8zDaFQvW5KenPEZVIawj+cKGMpZMFTWhUg981z6PtrnN2tauSkXc1TWf2nBQ7k3sV7Ti/T2d0Rc9/umdhSuBkWb8gzE5O7zcf7MRrDPoLkwlTyGrBPEiz2zsn3WUr8s+aL6MiUjCfmEV8n5IIX/DwTG8OfsJzq6wNvPW0ZABdPRG/0W9JGRDCsoq5Hi+L56P39Pct26zf0r0AYcd17m6Z6MtjWr5Ay9ycVbuBaiwIo0Rj8jjVzCxnysHIUIdAS1hDYR4HERlbivYf9C3xSQ8O9/JtEy9wWFJlIIO2KlN4nQahfafIlPO33riqt/PIw3uhB1qJkqAT00/z+ayvl1yU9exhyKvK/BJc5G+gmz6gK/U7805+9Ge1Qd5uaVSl1mvobd+c09pS39ue6flxRY7+8Kt2bBA977+tIjwShxhZQga4O1jD7O8BF5VJdCq4IWnj9dADGk+PWkTr3N4hhUpDRWAdlDiECdZueF2UzS7atM4cQXcpcVemIHMbiBEOVdXxp/V1Esk7hL6G2LtB1HX+ajjVxngMiGnNpTOIY2wXjHfXnciLXTurd0AMuxOdUFcnakjAR8pd53eb9632uSc80Nu81Uz29reAc+MlpJJ8kHW5D5oyLXiJ8x9g5/2LwDMZmoZ99ksW43V8zznN+ZT52XuFVKJRtc9zme5j9BN+dxizhvM9n1pe68XIeAf2dfvnqhYHfwsgCBCwUf29AuIQTNpQg6ZaS1Fxj1TT0XnUOWn+q3zPpe93JMIIBKJRoKSL2EeQIZF82wDGtTMVr6BwRTwYqDFv7AI/ESZL3ONoN1jOEnagm6Qdsdfr7W1vH4PDIWqk/q+u7rQkp81aWUvpEZ2oVmItl8SaI5ByKJGEsIqJ+zjsMB1lrsI5hpQBJD1ckRckdStg8EzpHZQ+CFTD2/98ds0hljPASsHCL2I+sZL/1TnUp9GrUqKxMvs4sjget+3saBJx72orxQKx4F5SO/avfHx1J5ciKpjPVt3JiGtZmTdDT2pDptQnUiCaMx9oGxdf6eJ8gly0W3NgPZIPCSq3p971Y1FnypzCOFAXwVfjwev9IHkdy3m7i40m5bkZgvB5CxVw8gfRqxlmrNEPfIyH1bfx4wueTwTLTwRmn35T3U7nVpEu4h82XVwWbO5Ox+Rvv8t9A8Lz+JHepbKF/EZEm1dajl3Mo0akXdUtE67/D05EO/w9FRli6X8sz9xDcpWQsraQYJSsXR65C8A7Cx8z8bDZCzbCI+exwjpFe4CZaJLLHReO/6ZGwd9gsPi9Kgy3j2ajOkDHs1WMcE4ndf3i1FcTiZeU8PBtec+4IjeaYN83FaqdoA6zZHYaTCtOmFXjT+HEjR2Go7cScj7U+LGtWn8+9dFvzVAjvDfdZhhhEW6M9Oe3UV1bb/3ZabPSAMbCwSfsqGYLidofRCLZ9fSUM4a11CdOlMmcD9BSyXrjRhI1gZJ6OfwPPFDwWsA/4NdDwqnJ9U/pDX3VMk7giqUUBv1FYypr8Fzxkfs+DiuxHWytdnWmprWOrBk9p4Za59w1O+jjt11g3phE4A80Y+hcKvnNDN0s2+LaWD8/wq/Y/eD3mkfe+TM6ORau3Pa59PcqOcC7h8LXE8QHSUx8dtGhvHB2f2z1uYbVXf27eo/OOw6p1WV0IHt6vkdh33KprUOyo4g6yZKwkvHTQNBYn7DbaywWjwktUEclksEwQy8kncuJse0HIswLIENkQSuIkNFU/9uWnOInGVOF5rYfrkped8a6BHC7xJEQRkUgCcsGpfxYmw2C6xQPsXv2KE67s397YklAaX0Vw09yOA/6je40cSXFvRP9HvnpwIeYSf/v0U6iClpgWEtbqYZZ5tZn0VUx50k4oaK67eQ7GZWQ2qq8X6+w4ntigKm56KuZ6WQnhwj3zb+fIiyBsUaaS/4Djm3XWZUsCkaFiXH8bvsCx/l3vG8mw4AShzyNJTNLA+66ktOFUqBtILmk5DUc5UJQPtR/0DMuzpZ5U4n4EM7keL5SaJkKDaD67Qs457iGAH46AfR23z3+MgvW+5rGs0dP2R3lBOCG+Y12Siat5Tr86H7xIVb7P86b+KSSPrc+o9RAl0t43RX+mCCIbBPiljxW0JRL68btxmTPq0P6ZYEeIZ+xuMJaKcFKNPB1437fVM4rVM98RaLYuXVmCRwcq2a0ZPjZXw2y/tZD3SaaBsP5zSrSpMA69TgtkS9WV/RkTP5N/l55KcD4EcAr2dUadrlNMCymU/OrIZJTEJ9nQFdYvC3u9FX5O5DsR71cb2C8ZObXV/RE93fNGmrEQ188OvamEYnyhc6jc9HPigRa6ZGUdtHm1v/HsyLlDeVevCBjN/v+WHrisPvrFJt+Ni+cw/TDGssDqc29733cRpDmIm6EqYQioW15Ggpy3HSO/2/4b/BRgylWt6kr9yShhA/h5rWfZdJrEr4j9SznJ6b+R2yhfjKjg275dOpXz/Ri/hmpol5HsWue7jpnLH07mMEnCNTNRV6oByL2YuQ6zKz4kZeHZCTgTpaNVXdFjxq1/NTHD/rnD494c/jubCdnHk0XWBcUGP7xuOxGCiuAyGr/ha7ETcMeCQULIpFKHb+2/g6c0z+1r9NDWousuh1EdHsiAS7e7oV6W3yiKXelo3+8mQ4YohxTYKZqyK1426kR4XS09YHlm3aKgo+3C8W0Ho0Gz7qkkTJyrQgo6nA0SvMWT/LQ5bSNsnkcff2+bhgBvA52EVfD2XXH7bwru5K/OGywuUphNRkxwnTwllP5+VOBcH/P1JTG55IKBrRvn1bbHN/+mBJHkTz7Pzop9vzT/a+/lBAW3tE+jnWE//VfRHQnZWP8W8Y+H+DPLZ7+hswc+GIDYn2zh/Dp+pxkkOePWz4kO/0Y5/+1pkD8nAr9ElxALqFwR3M8ARlY5JYHxHvwI9Ffc38vL1JWot5Gr5Rnea3XsL6BYq9cyhpkHw4Lf9WiCKm5OG8Dt8xQYu1wfMKnUxCWFi76OrjmB3X4+tUQe6vLEaEq9i4rfMEfbFLeI/OwwfuOb5Xl8J85Uzuj8oAyFcf12/xXCiwXavHXQyxuvb63rDs+jiHjwxkbG3nDRejemjdOi8FHBfr9Beupni9+CP0W+4wZlDsO+Nw85j2VReVUQk6J9MjJerXvIg12xY2ulGFARCm0OcBh8GkpJpcl/o7ZfIfteisHy6ESIJCGyokcE6fyhlzE8PIyPaGw3zFeFvzTujNuSjD2G1L929rVJkv1KWNYwAiYZB5iqDkGZT9bwWFX/vd0b/5tiZvJHfXa3raM58PzsUtHbmf4SUbvdSwEj0FnvbkFfUEosyHdGSt1kWwg4EWGlXVp35NkFcxGyBM+q6nxCRiyOGw5XjLGUqopfvYrpqcitt6j0LHIeDRbf+qIVmEIsMB310zi07fxyZCLc6pfr3ICMCOmS9rWYStxkyNutstNfH7PfH84CHLD/iMq9C56qOx5LnOG+a7ud4PGe8YtcglPfq/6J2ZBYZPxMPqKy6F1VROVHrlsceXlEMsFLnlDLe/u3okT/UKQsuNhAA508Iu9J2TP+aFughO9rm16/KyaO6yDWVDfniOa7Uh5GVIaNn/+Fd/ImuakDct5Dz+fqM+Un67/rdryQQt1QDzQ/CPkkunynNP9yf/yC4ZaP/Gw8uf6tACavB+SvFdp7W0pehVGfD/W5PJ4yIZlliPw2m3b9ydu1frpKRUr+j+Wd+NnHnatmFClsNxrG+qgIXyNc6dfp2UiAPp4cylNX3yJHMfgvSjEKHBLzCOKfZNa0bLoCjJB86SiJhO/41ggNpzJEyLPA3kPr8bg/6wjRdYOYJGOYe8sbiknqvhESEfIXdaeyA81dYo6Y99ynxtWMINpFwIuWquCrN7/BgIEASflgflf2Fh4i44mNm1sXHV/7dL4U3qfX6BUBx5FEEZpuAmQ6JjZHRR4IP4x3ddj2L63tUSBqSOvJBuI2ogol32oY/QWINiMwlJhfUawq2zUjRmsoLdMd9wwQnyHxscNeujwIUfaEKwwcOdltr44GHqNj8W9L3hrZ6Ff2+ZTxNfNXyr6+/J0RcMoMLz1pnTvz44gRphVlWdHo/bYZ7yR3Urpkh1eXcgaOnKAHP+k2x97HkQY4UjkNcaj77f0eEWDex8yfIz9JC6s6btQ8ghm4JUakYSfNY0ZOV2fmXyric3nfD+TMThur/CnWnCwGWzTYrMMWKqhEp2V+wXi3VSNVSWny4uoM3COzmgXC+WKXmlxWYe7lW4gk6kV/rfJPojVlUxNQqm5pf3z+iCTU40g7BjIkuvq9HLZb8D3jIrxbOHVBokm7bIke/aUnUQ0FkeHd+Sy3ydoO4P3zQ48xB3jYX46gmQrvcZs+fRDiXSlU7vCsHDt1dgCuu0I9WEeFSAbvU3I/fsee7ymHIsfvOL4FT4RoXPO0g0mli9P55xSmEOTnvXMUViOujg9iaO5nM36kKuTflJPSf9pr/67wp/X9Bpvtv55YIn41kTGidEXzElCItaqGZXrPd44b7fjrgG786nnMU/nbfdxTeV7rta0a2nm7zGaXj6XPx6VC+0tU/nH8wpI/zZHH/CYbh9Ycgf6XJZS4klMWL6WA+ScGF3Hn6jnBoSCQFZguAghx06weOJ9Q5uGN0mCvCYisO+Yj/H7Ts/5uU4TDuF043GLy4/fHn+yyMGzQB/1c7xhv+N33wXX//vGu7Nlw2ZnT3NVa18XD+7tq/w7HrtAf8E4TNpESKlxChveF9qNSX3oXs08oc57LuDeFOcUfs8H2bV8Lba2E0Jw2CTVv+bGH3tF2mTa+R0twbExZOxHOqTAPM0J4Q5nyN7N3aquwHKB+WW9qN1H63/T1f7ZUL9GaQHk2REVoScvR2XZCobXF5VC1wzSyVSkHBlEfyfdH3t3A/aYQ/3dLj6oskCA4WOjXX5Keny+z2Y3Vb5ffcL1Z1uSze3DOmlKPsMCLIf9FAQ20D2duBXj2Y2tWkM1WIH4e4VZxj92J8XKl15RuUZ4tsUbdGOhk1xPTMKdRmb2w9IPtaBFvyUUdPXZN8XVL3fuCx4zb6OCmAx/LCNRy3rzcN23V4saFK9dVvVtYe5eoEI/veDoYRMAtEkbDEH7Clars2bLZEDDZ7QmLBaoUSlXwz1Z2/GW7h/59D+r5JryzUs/x+eOA2e6T6LzFPzHc2vV++fvs5iuv5s3fKTsINFbU1eDZ58KGK/bIf3M72VOYe38hoxyb90dbO3r/1jH/jQffo4gMSw/VbyWO4335yOs0BmPj4bvpQvQdsEAGQC9DFomLEzQVyFI+uuYNtcfKnq5q/X+nFMM4jJL9XdKSOtj+F+cYvNSau+zY25vUy9OWA5trnteGe22mmSYnOmZLdOw/zgNB2aQd20bmWe7mHgQUYzKBewdOiKmLmKhWcsgFpWE567MImieDY3IiMjKf6p5+dhm8z39CSFwu1Lj59UXpnYqGd8VfRLtF5ce3wG0ZMeE03SJ6+V7X5bjyj6eYiconmDKS7cJogLL8hOJUwivCZvgkJIhzrc1PGBwcUl3/Vbli/XCM7ZtylVi4UHg/ufSJTpW4JFhlZcCqSOROYKbOIHJpCLHpAxknRjDMHQZNVGOKgDI8Z73Xff22jw12uU0u+RF8GTAVOJaFEwpT8cplGR1RFbF/4vKhkweX2yrtiJ/WOrmuXHeYm92SlzlNQq57Izx3Gs8sv8kdb3GgkoijeLlpvOswdg4ww868f0xi9NKjHLQKASnohSd75n4YGWvNTdwpIaWKPgBjfu89z7FPhs42lwEIVnpxnJMMb1b0eUER09JEV/vfVa5+pH8hclJggPm0pRH5V9tzKZ7DkSclUcIfCgO99TIHT3INEoZikdN4KknRHVfMq1L76pYJJb/BEFh5vSqXqdxKOA2HuRqZk468XK/YVVZ7+70XUzq2Nlm0tbZV184RbjqY6w/lxKwiLDoPjDCWeuQl4d9rvu+zw7VbXVBYMCR7wk4V+KwYXh7x2axuEV5ODY+CwumhZaUJzY6M3+NA5CSgNzu1jWHlZ3odJ8UyF6Wu+Pc66ntvZBe+w7qMkgPzIKWu1D4J+HHs87gwSmQPv0b7OwRxAdfZc7yRb4KnkcHuZYNe/ZsEM9L/18ubE1FVDP+LsjQ5359TxymWFrebgTxFK+Y8Fu6uKsaNyyKCAzrkWpcgI3zJIze6X3iAmwEoTNLV4DLWBS/WaIzidJj+g0V8kvGPUZrfjiMiyFuBBzt9EhbjnTYFQp6xt10iFN8Loj37TXEiwouf4ewUzLy/aySef3xSZubbSrvyZqXLAus3iC7W5OZZzn2U7YMXSr0bONszGDiDsq9M/4EZuP7MF5uTXBjXbsfLZJPdQUTXtWCw6GFdb1n3uiuJmXaYBytYSXyXapPCnm4oy9nUJTFShu9Cg7zXeV45j3qoiB+0b2M+jcHKEnv6fuY/vHSiLe8r8cPHuQgzQWt42m+Vu6Ny3sP/fa7ZZ5tFhFXY6EYj/KDdWODktqXECgQ3taGkxe6df3c+jyXBW8Ioj4lWXP8nivorLBbh8jcf7pnkg7Z3tUGr5M/6SCQq8g/1EyYxJrfAUVimmKaUXanjzPXUz+TIsb3KEbsYYdi7K9N7ZdTyxTVXe/ds+HzfjuOCo5wkT0ONfUR0/rx1LfOlOvkWxpO7cCBhTVcMp6fyum46dtao4Rs027w1Qu65h5yWnw3KvHViOw6CWAYCHvfEzUrIpvf1pHxzvzHhqHOY+rvivSozwT6HnKZthKqUyBbbFQVWXHtrqRSKLOStDYKfxsRvWhh1P3GwFM/l4ewGe0PtMTd5YwoHCnaBCx+LTxBSvc3unAXLotnv+J7KNw8s3hXwONT2fYxi9AUHigiH8YCH0nDVg5U8F4okcUcdNN0fRXVNZceCmWHnc7saNidtP3UhPCqVQxQp7IS6VVH4NND0fGIhZ7iMwbJxQnzy++8E/mV5GVH5jTMQbToHh8c29xV174Lk4vhAdhkSa7N34W9OrKFwGU4db/pQTb7cYTKTdWS40c+/KkVPsHHyoik7nTKsTefVwjOUrBpbtCksWYdkv3zWP564hNachkjcyonbQgkESPECajciM4LYYZIKU8jl9eefHRGViLijiUHNVgY4lBoj91KVm5iTjQZ2XEKpP5Rve6Lpge0Z463F4zgYa9sjanBsC0CKd7WlS2TUlsKVEx5vV+r7OBXqj6hfVrAs7jQIFi32UNuENx37/1rUBczXZtMlOxjXXq311lq1hkDfNt80r/f5zYDQejQsPk0bpwuK7xI/4TlDED8m421xZP4Epe3Vxdf5YFyPwkzXL936P0bDarUC28rr8PbTjCKK8mKcY/ntAv+H5aTX/jKyJ1KF7t+Ukg9zcIYW3YkLwMuNIZbDgMv/E23v0Vh6+kCQoqMuBo508730VOgMfkJe/F2/C1TaFkWkQ0W+ugdhBFE/o/O3YL/2R16WsdU/m7H5RCIHpvL/UET1xLdoHiH3Vdk/pSq7En8ibPYC+d1tRpnVHGq/5JZLLr1XOAJZ3Y0wFjxa2ooLtZxcKorVz9kz2BOCElk8RwCSe9K0BaF/Kjl4yHsR+4+IflZoS1RM/vFFuUT0I2nxiUwruG4ZqwoQQllFxe4fMYdlwXaJyM9660rP3DRc2x5QP0jC83PMbDEOQkr18i0TtxL9RiyDMQa8KyADs4vkmfKOU4ktllpYUw/FjaNASW86Pr+W4jNm4G4Rm/ANd5nnUPcHSySpbWOEweurprg5rCnrjoN6qUy/0zr5bDpCugn2CBMnSjIxT9xTZsHO820i/SjjgH+GZwl2a7ZP8OZTtreIrKuNkzYTAP+m+kmSc1Sig66Wz63iJfmcvVfUuRn1LhfqsCpabjIERfW6S62yrKK16cqwyLrZCKzbdy4H5OPz8JscGVcqa8sNf2BO8V/NiN5QFEpkw+6DcfIv7C9zxc1bCqnIXcZNx3TZ3nYcRDKhw1n4VfMCGoEMK9thImofT7T/WYbAbTlWw1dddxZEfoOgiXOviRglH3rbUOoDr4S+86iMNJ3bL9Bh5IRCh3ddFHj8baXOkyf5rQB9YQC8bdfCixxaPyXaTYr9ydPvwjuFeHLxOg94jYCrW2SLFqGI+m1mRspmMDB8nJFzDAwpEsy8JpWifzsj0vZ9NMyPZulPSJFYrODzgG/79UU5aeBDbaK99Xe7YcAF7Cnru/bT5okQZplYdt9xE/QQa8QqVBqCyujNgJsEQQHLBTdX9XUv4+Ta81hrJAtlLtLql3FvDDjAXXkCYxeheaDTyp9cx+JXzjnO90yrlWe84zJONxw57Gl9naItbUmU9k0mTezX/k5FnX9UFfFcThHP6H9wNsKJiWndUs1kV4Iiwnwf+LZl0D/DB9qft15OkYN/U2YZ5LTR33XDujVhY3urEY9ptYvFi07SCVjKd51egocaOCCZvcZVqZSSSt3gMES/6veGJM+UNadfgpcnIqRncbEM/xRS5qdFnUreblXvAFdVuS4PFRc41jeM5LY4cjXd+nZO3qp/j3vLL8rGOKOy7kMTEcQjSnKK/7KAMpEtbPtcONyTSYCr7bpvPvsyWQldaZnuY5QrQb7h6L7rKQYj+tHa+8Tg53Ar6C1/fyqYrTRhVj5QwkSvvg6msUxh/GHIuLHvLvM7w269go8FNq20J4J1wOeEqnLDtgz3H0aD0PZN0A1wi0VIOgjDR1lc5FgasKO+iIYiwLv52FPM5fsyHdrjYpz9yKlsOPisxeq20o17uom5Gtn+2rE40ub+jhVYMVYiGfLadI6JeA7Df6PwGJYFh6ThaYD5KbGrG0jf4OqGAdP3HuU4Fufxteu4j4m94k1PPeFtkltT9A+LQMq/pv/s/Jys1Xuz8KwjajDYnPsfWn8LBYgE0x/8mcZ70JdM7N5wXh2PfjEwza8JMK5Fnvxcf85uPwwVoahpnEnaYnvgVJ4U1TerOMFrAq6CXH8HsxezceqTe3lvKCUObsFmstEZxzhz+4seX436xFQHG+vdnunvIIUBBIIPB7GFI3ervdMBjl4NypxrRbJQKuEaqsY/KXUAxt7G4l8Z7t75qPZB/fdzVN0pYyPHaDsqhrb4XWN+/vOwHGng81DZJyu5HuHDp7qRxXv+YC8P7t89uM1BUxk3dUfBNsDNsN32fOkLd69a/n2tT7P4L3mw4xTParnE4qa6W3b6nPtd5Razjxtd7461/U0JxWf7P9wnEHddbPjW2UiBd/wE89jsmwFiNeuc4cVNjYP+28uE/1mnqtIcma94+4B/Nni5UMidvwQ2KWsMjrC7CCXjD4Cn+Aqrkt4rvinsXgVwV62m1XV6PPliCv8njNVqeWLKfY8KcFaGVp8PLMpoL1DU6smlrOnW89WGrVw+VpVGS7G7oJ+U+qSjA1DhqT80lT1EjHt0HH6cMvYTDhorwZcMWpQTzkMfvZyJvhrH3VgjmAyWrLW2MGoyyXKFH68g/qZqv8M2fua14acYMjcvn8OGKBWvdb/8RgoC1rnya6OtDkwMRXzhGIgXwBX2FQPkzRtmuB3PRjw2GkgTVH3NJOaBjaCGoug/+GyuIWmBnGlt8lZO1uYmX8o7orFkvBIl3J0c9r6qJ4ZLo6qMorXXvzfBV589K3v1v8QF8FnzjBIGlTwmmX1mP1JgTv6ncgJ9QE/sWPaEi6hG8BV2O1Fe4xIC8DGSFKRktBS7DrkZTihv9fB4vGOcdtiAe5F1/JXxasIJ0khCKRBY/SUcXiUl3+fvJY6tgXmwLzB56D1z2kzkKueiLskLT/J5hspM9MJFKP6/WMAhoah5VyclMD17G+oqe+cC66ztZdi0T++Mbrm0IZgiHOd77QYhi4qHTHDOTYg3FQfrIlkNMRi3jRLRJAeCwXXoay5lz1TZ83fiGizJXtLYOo1xlKt1DQWGECsMMjjIcFmJQtXcUBH/BCrd/KUq4Y1oTcZZljIr9TSILpkAxp4vGK8l71iqtKQdlbWf1nfUCDmE9S40zOcNIcj2XuKDmlptPxejuonfXeVgy6cp7yEaVz7jGWuVSq6OzhtHO6zv1d6DNB866Qb/flT02mncHRFsg1m0qqc34vdBZqw+XD6QPH2cWYfVjUB8LrnLpqrIm5blA9Ii8uX+sdU3glkt5M+wiUj9bkFRzvhlXIgFGYySaN+vpTSCOeWB8p/TDJqTqKSzlIVRyD7XgfzeTJCLuHY5tDg6HSaRH1HaklmNVUInkOPRS0gKXiZLO+3JZvkj/hm/yK42kzv2rB5aHoqVzGICkvbPIey77p4uEfi2z/tmr7zXmf5mcL/vA8Prwl5HGilplAyC1L/7+26fa6pzEc24uN0+VfeMi2En8wCHtr/b76Nn9K5syvkREqOsXR/fGCZnvo3mmN7aSDDYmkDqnibangukHAzhzuD3RtEx1lO3TyUMxBRs2z73le/eYPj7+5kWAlcuQ/boeB6j3Nr0vu0u/P82yfVvy9iXqUcOe2GvTAQeduRBuMA12a8chiRAMiVyJFZXfD8FKOcjyKh+wkFuO+5m17SmOV1rRgS3zWhSbiOyvaj1wZOY+C/LtFYl+Xem8hEcyA5qHq15HM1nJQkwGsyTDUOrO2L/US7FNx6IpDgTW/eda57bG2l+8lb9M6l67USCZLj61GtN++oY1PvSAXn/JWPDhhXLyy3ORgLPe6WkhQ9rJml9kYC/wpeWevfy35aLDKb8Z5RdGcaTLQIL5a8hi6j497v9N36OOUutPrDPrtyRwNXX6teEfeZKSXZ0XJeoQJM8ZnQ3dx4HKb3+hq6CLtE3jRsOyonpF+WEl4BIgBuITIc51hMoiG7RmJjvsZGfq29fm+tzrDJ7UOb5YN2UpZJ71RyZ6gJOUr74zFt3XXPs5VtEbvdqZ75OI2sZyJlEiM53EN7s3yfkw6ZCGJVKawVcrdp3Y1YkS9o2l8HgPhYcEe6OAOBfnmScHPFP9hb9bz3BGSv8H8nlJ9zChvYdS+bjLVIkXGfoj/rddFSrv+XrbKeXuN5aS0S56ymcjRK+lkiGZrI8dJHn0EXkvp8TI8zyS2C5t+RWiexWZWRn0+S7NzR6y5JEsiugfbJoN/XdYdrai1UUv8Y3sPsTIeTLJeASUH5DUIQe52xOhuSdiUt3a6vKig7sXjemQYck1n83oqeLR8Z5N4U8Vnon3PAMdDHVrcc2HjxMGEdGf8OAEZE0rnDuG6Fx9rJWB9UIQF9puM3zI+76smyRva444956Qkjv+hGNK38HnojQo4j5ZUSXMIO4ILnrFkERyH1c8h6mffCwVb2ncmwtCvq3+GDRukrTqPESglVZrvVQCKvtesmqsOp2jBa8j8ZTLDFxwBAh8SA6PWn0+bi+1+P7VNDrZ6qNpAOl/JcckBBPHzRaiVl0TPWlEoWTpmLr40xd0EWUC32u90haM+VPkaz6Scsm2971L4zjXxn9UAif3UycPXkh3LVXmk4OlP5Wr+0PLhxqhN07/neZ96xPN3hO70Er8U7Guf1ZniZdJkPZ42o11xsXt4ikgApPXukcaFPq+xey5slVgZJy6jmsjj3Wb/VksG405onXe+g2m8Y9vKoS30CO9cbtbZZeMeC/pXhCDYjDrGBo8M132OUXp0ITuZCAVRc/DwAm8F1srVf12ZstjOw022BOdZ5FBFB5I4zulHEbOHukQ4XWzgQW1oLH/Mib3w2w1udkhIRtgAVfa9CjKwfQIeACLsvDheu9tTk5XKbEeybli3zUtqwNCRWNSAx7Sk+Zzh/63SSZtFfMX8LAumnv/ii4mdkOQs808Lo8EMdDSYuWHLcKhSbMC0UGioEfvJtOYK9hjd7tdBu4NzLaCRaGdvfILPrS2EslnIzs5ueeReKCk9rnF6W3Ghb4syVC/eqXRd0O1yUrOfPOCCMAvC1Sfywu4rliJiX4f6CJdPv4YU+U88gnh7k1HRg78G0fKSf+cObeCtGc61Cp+/vf5GTqyvpMZLrgCP0foz8CXuhOT5qNf0yKyIhFjAgunIKC4JxYenfVo8hjH/v61lDRNNk6jSfP2+iITt8KOCmm6v1sb/ctBUliLZFAEYls/dY/DBjz886c0AD0wxAYvacBbivrcWEhxto961YoRNZrTpmT+9iJ862HoI2JgPe6v3n+VXgFfMgWpVCuiVxFAGj5MUAhoRnI6FOA0YymUVH1ELaJW3T0aeA2Jk55cI/wBNqAg3cvciHJb1D403SLsDau3GBvcLJ8SJDYEKHxoECCLiAiWNrQPeQWLTe5k4mLKk/kULwXmkNgcmaV+PRz7+cu0QUynETcSMN6Wtx4lv9065HF8BzpavNhmTu8rwYe5PGd1/MMxnk1xLAug2Kz8m1H76fd2NiE4ZGDfQ7XOJ/uUDgeaTsiachI3PXTI+1vBQ99L2/qvGk36RL817Z6SG2uPR0jy+CHtbChpKuEMP98KjGfGvYXIaC6cuvESlYzP1X+BvkG1+aR93Lc/7sJXl6/p1UxEH+Hwl9GH8+7QGHlGpDtGdB6yw3ik8zwjoU7u5r0vIqUbTtzCNVO/YUSKQVJGixSJPD4GOoZ4X1X2Gz7XR8W1xueFH2JCog481N7/zvvVX8PbdIBhBho7gQ3NIhle1vJpQhPin1ELhxVfCFCTJo3MtPPFYIu8fG1a7NGDf68ez+sZEXcv5ovoDmPmrT99DGQUThqMwj43UNRUgTLIOD5PEBp2MvHeMsjvGz5jeWjHO79xvlpI8dI83rlXBX89iPv7qDQlgza3nnfafhFZkgpW1h3eu+yGkaAyMuP4kQEq5snlRbDsLpnWrFInMwrwKMHk5iXhsCHQkvZ2fMw9khYPv+bBLWTTMztw2c+2CQ8qc1490K0FlpWeuK0Ur6HXrLOW/89Ga7uZy0El1BT8+gLUG8RahWgjThNtsza04KFc/Bl6DeWcw6maTkZxzoQjjG5fnWBTC81azb3UHdP5reF11c9EeaWPTLxpkx7QW8TzM7hpT1RKt+VDkiPa8PHOwSl4YUnZO2r//3NyHEB83R6YobrpIhZIGWew748RuOLfMTWZ4x/Wd6sV4Raf90v6MqGd/l4T5LNzPct4vSlPBmCT6dYlPCuFEEY0b53vpwYEwENaVTGYr6hRyjCDnO2Lz2BfglQNr20/Yw/MIfGJicIOb8JtK2hWFnZDoL5S98+gMTXMCkUv7VR8trtCmN25Yqo8IVEvN6s66Krv5B3BLD3lSeeXnfXdSL/biLniOpzl4fvoaMGLrxYIb3r+vG/Tw0qZWQSUJ1oZ6JzcgD25xe4EU2wj+j1I5H9J9Xg6CGLtzhGRGLfq8ws1ZSxVyGUtb+TTS6rXkaGVau3/JiwF0znvwTHrj5Ur7DSn/tCG37inh1JrLfGzJY8dfDwu8p6X4Y902+wtKrOE5LCNJ4KIinHvpqwM+n3ZbcSdhbXgddM/EDXwEIgJq74dnMIy3qZySX3SqAqY6fBeL80YODBbvOmthEmBWLDW2R8irxZ3aqQ2BGgUDjeNK/6W+/VscAvgNTGDjj/J0cpAip49yRDJizvz9Kwr4bb5P929ZtgTfzVt0DLRMMgoR4PH2OJGjAi5IVSclpYTnDb0+Uo7zSMwzfiSn/irypX2BjqPefRUDY4ulNRHNdm0E1yc9MhLOuzlhsPtA6TcsQxRECvjeJO3v/0mHk35FVC9GflDN3S98Hu+5ZbL7lcoGhkU/PlMSIG5YIJiq1s3aLs1qC3ZZb8OjIzUw4LgKhym6y7noEM9aUEfD/RdutPGTmpsG8Pp0W7B8WEPSRlS1RqgO66V+ho7cl9isBemdaZef2mJEjex62ilx9tgiXblMm+9yoil8itt6gkwyzFsNZ8iZ1XQbatPIXrF/xToHbVg0M9HupQdQanhM0FuBSlcAn9DVg88xg35wVMIyTZztRD2LnGKne5Mr40k0VYdusyfoXDnmtmfEUxlDPbDfzhn9XtvZKgXKmpGxTXuD44nkgGlH1E9M8W3q5eSsOpDIKN9lXv0j/jH8bpTf264G0Kx+6PLxYJVp640LpTefqMyKTMOz6Orc3XVmiOuE+CleiymOV2nVciBcM3MKvzUmWFj0SjJvVfuMSGLicyXbP/mHv7zkvxta1B2TMyypvDkdnLk3vv2xNF1REgu2Oz1v+mCAJpaD8/n1dR+Y2J/BEpcRoZeWmdCCoRmRCA1bDFZ6KDvgxjfEq9qaiK9GuIbTB2dqNvoKfgXecn/Tnk2loooHUdMtMFI8HxNm6b0gQeytFDR0LbvHcLAC4/uy7Sp/tk2Tx56NWr1x2xIGJnrukYzbd9kt9YaL3+NI6hTjEOjsO/Ltu4a0GGrquH0fwNf6jlYbWh3wP7NpSekDz0P3Sl3ypE0swInBP8mwzUPo7jBwasZwAv+TZglAytNG7fHZVc770PdqxAN22N8/dy5mQ17tEtFwp6pUG1BSlGeHjE3mf+LG9spLS9hEfBquzMU2e49rLB9JcFTkfvLBXMYFwM0ruCD/wwlBdtw7kiJBhWEJIMKHm5n/2XZUWfEO2sfLPJyV/0q5uZLlUpj+t6lsMnOrhMxK5lfPb1CZIvi/Jo5r2s0RvsOq4WGl9FuvO8HBfdeJn2XJ4VObX7Y/c6xjMJ6pU9m9ccJnCTECEgmjJfY9ZjHtNePNedwiW1rMSTyNBUuoteDnvBbaWcDopiBtynnIHrSq+cGa4niv5O8fWpGSVQNfhbeTNOsOlLZfNflJrUiDWqVv98kM6J3W/VO+6x01xK6NSWoTmZNetIIRszve96ZW0kPD3ONK1vcQ8LrXSDr4yUaCGXKrdn2GKnfgOYtb/bt5gQri+4sdxacc4sPB/0zh49T49YvyQpqUj/SFKJasl6/4S/jhv2XaaV5/pT3b+h7Njn9/XHv8xZwSDNEZk6C8eym2RU+0YEiaI3tD7daMpnTjNhIMn6knN3aKbkM7cWQFUV9o/byFfQZERDIf+fbDfbRhM0CCWu4Ms1+qJLhoQNHzaEgAYTjgCF7ECTIoBXH5ksyGBNvJg4DDn5UoFyPb1ttr66Q8BXwoKuWCaa1vF/Ia//dGXOTI69rD0ntglrwWJJzW7nOQ0K/DdKD4RRw4J83rArkH1RoPAZlm/efIf/t+9+XSCk8ScrK0o6NJGWd/LEcSJsdk35sG/x8L60vV2GPYT+wUh05rW+piKkPA/DKo/NH8CB3EGik0V3KSxTmDAqFm4mYd7PppOFbjRmKzhznYlirlBxD1GcE04jdTN8QogOEaq7460f9ewADQoAz2mczXttvLyTzxf+tu675h8I/OEufigjFBbTUwIYT6HiqCsJSYWAGkaNw6jf5zJxS3QZ8moIr0b/eb9BUf9FVqKfEYSot4XGD4B1LFjMUeT+WEQ/QXPmbZ8iKhlmR+e4mClpHErTyDDSsvpw9vw/Cr2DtyQHRcXCmSOD5ygTvsu1tY2pvIC/7udEJ4t3VCqlNs3fx2P99Qs9+ZgUZ/YR9XBALnQ7cxqTuEXk56wUBotjq8lE+RDmxj58Plyd/dd+56MSP0UB/qLPkyquSTvsreohDufKaIC2jj/tp/2X2Nv3n8ZZQk/EF8pE9omRsv8LEM29gzG3wMu0o8XDq4hs4dVQdm20FgXhSE/ZUy7yPQUcb93k3PvYFWqrnbHK2t9TYUx/RW3ovs0aeGjwJIhOwm+4NIiSirL32vas7/rTgf+Iz1ZS16rGa/Z2K2C2aXhOn52WhBX47pk+Oou30ZXbf196DlEa3dder8ArMt3oGFeS+f72Sp+4RMstjCi/31RI/rqTZ4ixwqCSn7YoE10+ZWpw0/eKtUEr9cukw+2eTsAqVW78tvw5MbuIyC1/ZL9xjGCAAeGCWC8PFfREH5sWXEooJ70kaqoqcbbXyMqjPnM3oIqx1eYTD25dCRsreukWoDNvRNa4b0Lmfd8klD+CZK1lJf7E2CEAwgts+FSENf0SFEpsM/eE1vWxVyNCFZGfuFpWLo3Qp4quM/DRwMNamgx1xe1U8M5qctgliYO/OWSnkrehqUgJy4qnc40mhK22vKWzzvsO0/fylH8RfwNNvhYzc+wqANs3K4ELl0XbroFFmuIE5MMci7d1Rd2f+KCPQ+FHfS64Gpbtza48Ix6DLNrW+8l7Kg0CDhM+oto8JKoX8NPca+LfehJrcPP5aHG8Ze59gwQUWbzt4AUP9a795qTf4DWnqp60tKlKwO9RC9OP9KKOBsW1qsP99n8dvcKNYujzUpFbpW5VVGUqkvi/rp9DJBGe/ZK32ML5BuW8VSX+zGR5vD8i8iPF7VVdyZ/yR2xLsDMx+0ewFy92rURrkYi0yEdF9P+WWMOIPkDWAU8SBKT9prvAwSfmuYXK8RygX3cmoSnLwGwbqvVvFHYJv7NhvRL34Jxv6xKGDZQkXuBWPPsreOh76JMFymHBFNBdCODcHO8F9j63jEH+Ox4P5AgBRHCGwNdDG2mEO8ly1BtG7sxb9tJp2LU/CIsr57aHIp1wDPmVHIqTJWyUFNqV758MrhPzGp2bPmBnfGL0u25vV28l1SU44wjirws+ofhUOLmGWua62RsBPBgOIU32tq9unPxaYGTFf+rY6ukTBAUE/3n8na9qSXNqX1MWQFWAdPO4tGxRiF6NHQDmrw2rLjeMhXsbp16j2mFo8GMkTfliVhXdHmjpZkby7L/KgxHGT5oadh/ML6PoDlqYid15t/8Ij0l6qTocuY3uB8OXfue8FpzQScFZb+iUFjVI+JDX5FdAs4W1JrQZLj4BSXpMAzhrevb8IVN/o0eOnplJXKP7L9ZzpPm37xEVrcetJL91wG2IWP8C3D9PBFBCcuFpYE3auWZFnT2A+da6fVMLFuAqdzybhFrSU4Yyu7Wkl5b6k5V/LlZ+zgKAF0zbJ31z/2cZCeeV3Nig8EYlCjglGb6dwtjnwmKomTGtnHYu5eluie/F6Jx4k8CquEGrdn4PnhQiLqzoc4xhbgjTXVfUtXj+DeT3Ge7Z8zrWw8ekrqBYcQFm9aRe67qPu9PgEMJelVOQTvbRBK+mp7jx2wOOLqlKo8IPKjsLykd8Qm9YPrD27qlsOPvLUOcIGitKj9AsVM24WrQtAq9e3XMYZRLPzUm41zuN8zqcq5Zy0xJXPUdKAU9EJ/lb392C4vPmuMCpMuYO95qg+VHbJ6Vat6wIBmqytX/grfX439EDjLNi4W4AzFeA/7Y87qGDwBDSTUQP5/bcQjx6jQcL8YDL0FYlvBeV9szaSZiWES0Jr4ZJDgDLzpDdI1G3DswsbuhCSJM6aWOYiLQMdigehvskIHXIfi/wZSLVGhrh+TWAyVK016F7lHLNCRRdGfuhA6P1/oLfMLngXRiv+Xn/t3er97pP+7Y08lLa1zZpI2QkA/9dN4V9XICtr4P1/cWncqQXGqVyDy6L8bnbvZ45xPh62XNSJvp+XtTNFygC6wtBaF2LWC/8fBrXPaZ+xHSRKd0GB0+mKPibWGGXO2Qqj7R2igqenJgpchjY+UuBm+H1tU2X/JS0svOjr5atj6aEnIThWmQY3bpO8L81MPdIKZW4P+DKvvqxKxGXS0xhMJKHuvxsGnPEBRufJp/Ld74pAlM+3bsNueYxbjVg+iZ7PsJmlDQu8l+fcAz6X9VV0qtMObd+gNLa81+UP0KLn/tFgu2G8B7MGfJSWlgYQ5oeMM918pqrN7FuzuJQSSFcy4mtyMRSfGzTrXDTQtXJojrhenqsSpm1G7wtBNgUvPFiuCLX+J1Fz6aOspPtLZDKXuQVuM+67eMElvCdyYLWh6HAl7vKnDSbwMsYrTETw5fdvghAFYnthnWGm3MP2DByQo/13Qde5Gi4eV3AGJyxHLSK91bnv2rgqOYVMOCs7ql0wVnCmYzjRHDDAzN86Th7cbz3W7neKfJhn/2+QxBOnkkXUMZkYHk5DjL2Ywr+H9V3d4snfZlE5M1DkUnClT/G/gg+wLGRnw3t6PfID4Dx4aAIjMPtlr5teo/zXXi1TV5tpUc8eN2HJiu/qOEb/DnZlIGglElp/FussTMVNZwnvGjjQzqAhZMKtgTWz3a50HC/v1LHMKZVITe97g0469yenbD65cMkWOIp73fbduUxWOEyTZR2xPfdHiB+3weBJP69MhdxD32tAR/PwKRk3VZ0tMLBdDWTkBUb7z+XlrBSWdQoLxkxKhVFW588HwupoVVXKDoIswGWKozRVjYDM+m97nNn0l47uqSYl+8t+asWY2iEQAl4IqK6kkzYQ1435YHRO7NpmqxtoziFLj/Z+zC/nWrx03rHe3yhMMVEyu3hnvNwlj8EZTsx0bmTGUfAGD7mJbuAFd8xhiChizLCYHG62wInIlJvAfQz68tsd5ywcmZ66bfZeS8QZEHLO7OfC69LaioW2lAQ5y7qenVjQVu9eW4MkQui4gWp6M0GoQn2W4wV08moDoav58CTU86GVBF8Va7OZVp0Hzn40vES3p+3m0zj57gEOl+YgZduFEGKcdngNyvjrp90QyUp4W/cdUEScyTF6vFA1PTZS1E2ljQYrhS8vY6biIgRnKSsIVc3A+dhBsBTwYWXn7DceB5C+KlKuconpWcp9wKj/uhxK0lzinne/SZck64qBbL+2xmTF7Q1lCHkDgSuPQu9XETbLdPpiPDmHdiJ0J5Dhreo/qnN/Y9ybaa8myLvoeQd3G9bex8EN5Qr+o7PlnarUqFARhJppXnTI2zcrt98tn6f04Uwcl4lwvi/trpVeCssmRA2Ny0wKRcovQZZeHI0rUf15UR1TupMwy68NbO00MdS2dcn5mFKhI6fEmywX+eTCUWKfxcxajVCeMUbJr18O0cwXU2L5++O96Thkj2MFNaiT6WPWHPQ9L4485YCGT0mDvOHlOmoUXOZyQDAPCbjSfTnLGy/lB5RmfH1ve+Z/OrT0Inx/CATuvG0yUw+BlZqSmG0IibqWAWy0vdb+egRNLbWG69nVv/c3+v9+6/lm8ycC9koX+p9cQSdtpXlQvT9vNYLB19B/avyZ+5Z6R8YwC006YzsdiaeTd/WFWnCg66AdKJbRmoqDvbyTTT3Nu6d8OdSTNDyZyeqTmDx3d4v6wkLzMziayyGOfq7kiLYBAmDt/Vf5nWA1YEwE7ojH2P8lHBl3x9U98DXMnejhxWfrD3ei4kUtSaifycIizUdCnPoxQ5qrBiRSZunshi0C7fW1qCQU1k38Uw/93kXBSEHmfaohPqaI0vbYo32/b/fK54zz+x1wiBm/hHxO6mHVaN1WS1XngLmsbbqiFYjUgdd0RUiG7MW7dSPBMX82MstEMHo9LW5ewRNy5oEy0wo6h5b96yH+vEZYIYIz+Voxf5S6XkehuKmt+RLnneE0K2P+0vDCO252Y0tLdANjn1KCTkredZvIqfR7i804JRDkNtbkIXN6GFj5TBkoZ8yoEbE7H9JXz8WM3u+y130WjI/rK6D0NRdYfAgbViBYErLe/XPlgtbSGErqK69P/ciT9ntaxQLhVueDwy0w27Ou0Zw0dE1Mynp8noX1VbH4A8W0HtlYhoEEcunKV18Y8ipH+CPCNp4/AVfKopP7cPSKywCHnINQqmP6Yf72QS48VEG2y9xsCbYwoBkUJheMA9Ii2Lxtt5Hg4Dv0q5/m91xh7uER9gNho5rF9j74/b3LDjz8S5oEZbE3uYbz/Gx0NJ/7SkUdlWoTM35poVryfjBllQ8t1vkanRA7UKx27pLwBodgG1K+yeBb+/xtrquQr5uNfW+uyExWgJBp9h+CzzQGN/klMg+zSL/eLVccWfEoxkjvyijjJ3sF2GjLGkXffwbz3xXzrMcf2qb7Q/a2o0vkSreT7Dn0rvJqLou+jnJom2wXv69GfAnlcGQue5El8gkAe8AXHrxMeqxRGJD8zASUclAS4fqOF8QCBQ/fC7oxuzP0hJUlXXxgkj90s9agPtpsSR16fLEwReISjiWnBAyOJHnfpl0zEz0Urn9ZqJM6EOSUc0JqEl4xCSBnpwnYKvHxRy3RKi53kJ/nwpLUv+PqsjNAvpq9aw1paxlE6nfh3cMWeJsPfZnd+9LyGP1NlGH9sst+96VhmU/be4RPjOTtXebhhLyGUQgFHoWRGfHIEoaj8fhwnyl7f0lkWvwlwK5j//23ZpBTyIRV/TmF3ZY8IHIfLHlwF3SPbzkEXQHgq40qOUndzALoK/3B/wSpxOuMPK2KQIPEBqWecKSBlVETuft99IuWyljDTgr7c5jHA0IfnzWpdSRkKZzA/wQtZ3GPuVvzAV1RV5fiQX2VhO5VOyTn0autjc5eQBFB8OiMH7fGj3MwZZu3R3SWQ8DHrP9ltRibKjKH1amBVBZk84J7NfVwWs9nTcuR1togtXiUfqXgguKe4fp5AnzwJLM5F6GuSTQ1t+etJdHyEIdqBQvm+xoEbEM0UsKwGIZN+DgfWTkg99jUesZ77qPX6MZ2/aBcl8OO8Oo2W9ptxUtv63ABBsGe72cBnlaCYUwDYhYfrExmpmI36hXlx2TDY50OYleWWj46m1gGb3daceEI0c7Yx6TO0siJP6DdZzwxYU+l8n//RfKe4TxITKVD+bb7g69klNtgS6cORfmbx+/fH40ol+rL/V6lRUYI1LzO9tSPCVYnZ63DryyStnGaF5m9DlEIw+iWHoyZKKHnre5TnCb5FHUwKsm/0yRhJNH27dUwinaq278+WQkJR/4+r5C/g4X98WyNGjW0gmq1mCTa/sA8TQuRDvpXXKCuv1vxK28dfA1CkHioNCPiiBvJ5PQXVKVtdrhiwiyRFLcNSq5O7ySyxV6HkVSqgux9UTwacQkV6LPqmgqsJjIIjQ2hzg7PpGkInSjntH7Fv7BkjCRkMrBcvVw+eoPnnMzhGy6VnJf7PgGe8Djc4/p7d6fkPAdvQRLYRqwd+IehNAmNId126IqX0QkUL/waEEjE8w0w/x9EM4Bw+HLgDUb+hy+3DzOMsj0CJd8TP2tn/UMMXP+feSJ9bPd8S2Jbw0F+F3FHpX/xH9c2pxUbF9vkUJ3g0lT4ega6XZv3qt2IaZItDrM08zqTdu5J1fHbbCuv5sUFhGlhMZR+DozPobZUY+9uFYSZwsS1R6dhFJW4cjhE2elMaQxF0+zxoRLB7wedQOM80mokZ3Hh0E/lT7/6sjZ4Wx4uxxM2kpZGox9LRJi3EyXCv8JNsCz7IFbTH5eyTMeOzt2A6s+EjG+Jnxvo7U2wXmWLzJM78Tzf1ZFJxAockfy5ceeTiIliJm8xmPxyaiq3IoxdQf+BCyIsztOA6/vz+vVhUV5k6LckifaXKc5pcOxC7t1MYnDfmBYKw9Nxot/rU+8jUOGKa9HV0TH0tA9Rcie1nfa/4PFGMs2Thz1KUlSnmY6jQ+B8BM1znuRrEyrdbvecl0+H9tZl4D9rm9p+H38vYqJ+idHiwF6WsepKx1/fSyIGm3dkNH1fEKOlYfkwlNfs7eU/b+CttFgp8lpvcv7Jmfg7Z366PJhCg9PZMDbf9vcOEFNRPq3Fb4X9Adj6UE2lDbtd75x6kV5S0tlqxCfAjVrdNwimdl4H/dRhvUw9zNc8dN2zHAvxRE79Q+5G8thDv9FkuMio/VctNDJ7oj1ORTgNZ9vV78amRFma4/cBIuU067Kj9aBlAuX2Bkmyyv35Pu+6jAZG55hXJ/QNexDHYlh4MJULKl9J2Y9CYFCEDrsLTdYNl7StbBsrT0mGmrWiTC+aozTp/5kcJXrHE/z0wNCpnKQzyH4ralIMyLqA8wmUhn4OyDV/sMJi1Mux5leqpcY5kCdon/DvX6koYe1MccJdpP1sZrhzcmrbN8bNwBIsE0eFHuYBf4tBEmK3uqfBTbWT7fJeMb1WIyEyFmY/b7sbX/T2xJ3afhvPEzgjv2yZ2kU/YAWCBlelcuzQauSCXbeTdDGujfihpfICxXJNYPVRrbXb7H9FJ3wCjGmml+prDCWl/LT2tjv3HiAhNehDLXLjuu62vOVlBhJ04N+QbeP/mmsLehj9XFpjX0EHO/NIemKvUerNzgscf6nC7J1W5A3utQv6cgvYuGTqnAkox0LCBfYvCgfCin+iIrKz3rimECIgi9ewM8tbKIicq+rVj8KnqBsdMGaUwY3CcQyZ8WcRUSvCMmIe7e5/4+kpWtFyKD8efxCiG1RiiV9B3555y3DgY7Ln0twa9tqS2Eq+sqbiMnt/LoujcCVElOKEpd+zSZ6s/VFJev73iJifMUjcOow35TSFV1ykh8n9KTiWnP+HI1BdIdz/llnhx395T4brXuECzrLyaYYyyUbqRnrOKKSl2fYBsrijxRcgKN+aYvh7klVPkoYcD9iH7+R65ove9JotzA2Cdx8hmtVORmzF1ICzXJQ+Th60kjDvqSJED9270yEcV8DFr8z0pIDPIpSjGE+weEC/NLET8PfZDSlV3fL+MEkoIa3JZrSX2lXuXl320dUyUCmOcfhl28z73VMBB9VueJLaTSHQZlrkT1z2YzB+EXj7w1vViNaqirr42vQAdAljd+36AonCw+KrP9Ojoh6mB8XBYXNqOZ40twJsHnNT0bFOLaI6AW6v6PPdSmYjgjOtrFpTeMmITwZN/1d+doaK0V/yLKodMCKsQM5PeejMkWN5H+evdHy96qPDzNitDfW/GP4UhiZ9OyN14D5fen/2/u97p7VuGDa4T5vjgyAZssR7zOLL9w8KaU3464lZ4NgUYO2ehWm34037/dOMO3rXd9Hhw91vuH93Xo/C3MR7M/ZIzwJ1/MWGBQVJ+FM5d7qweBcsvYAMAlJNVzt+4Y+n8sRPa3rJcRhDFM1lx9vzu+X/r7w7HluBvVFfe39BV9bTmXiyxMcT1T81O7fFjgz+wsIRF1rYLbdk85GUDYj5+GFQiv9CeGADI6CmOiXc9sn4wBaapa/x9LzBSwNS4yz9xEr7u/78ywdZ5tC7w/2v9cZ625NTQp92ksVWVdxlgtWXJvbnd+1lcs9XBj7clZ8WAIrz86C5UlIhiBzT+IeEFWX/BaRHw/VIEt7CbjTEbhpTB/kXKlY+ddXnbBIryvJbeTW4sGwib74Z2fAKyMyQaxt2yIUgoSV3GE5GSkM6T4Ptm5zHKX9K5Hd8tZIVCPz/FCCNg5Vpi2CLlhHnhiShM575FURcgQq+tsbzX3tXctlbmArPWRYS33/u9yjbfGT781XScP9f1WRf6mTYHqkgOqNTsxYzP+/f2lsG29QUlsTOxj2TJIq617xrWmlBW53UurfHAzU+WY87IbRjvMavaCrsQcn4MmoYUcvHEsG5OBMrl8I3q927ymx0RWeG4BvaHjpLj5mqoSgrybX1/4XuAee9BIeOitoVLp+1kDqsHFd1GNkRIjaMvR8D4OiXALPstooEAZvJxWCBXBRXyISSnoq3Svqn/1c+zALIsPNak0h2DHzuoz05X0tl2ru71BJXA+N3Oo6K/NuqkIJA+uQJCaZ3T0IFc/mv2BxezjvGAZz2HK/aWdssgnyufdjAt5aMGNLJOfB8817rzehWjKN5/XK0KqH4I8MnzDynE0moV4V+jelwG2byCsRqsV/zzCtVoe+/cVlvpnxwutPS4JYgfriEvuGeokNJ0B+U3ZM+vOv68k0ufNNeoSn9U1lYtajDGhbyPwIQ27f5fOgLTJ2gdeRSki39Wt/AqSh4b4V0NoaZ77nM8AxGSo+qfm5iOi1hKm5AfNNBF4hBJoQ3nse8Jw3Aj62DM8CZzqIpItxU4+OPcmAgKDoBRF8XS/bVs3GsnzR0C+cQZnr/+kvulDGO7I7zpYVU/UXKrMgIH2o9VxiH3+A9+T9/hehp/xoSlqdX0P5pf1JPOX7CE89LDSP+UxsndCe3q/f8a2xrjh32GejY/c+yOBqeRJgBGtafcMZlEKY3t8u42DmqX1PxWI/PJ60953OG5CyGzbAWTL1+6xceHIdhmrQDI3k6f3flhSESrhMBwTeDMo6UrSa2m+uoq+j9giHVH7Pn4NCYe9buW03igbZ1LzfE2wY59VcErAXxtO5gwiKHeA7Cf2v8I4wzbrhNN7u5DmQttctsAwK+omGq3pxOtAls/J4n3QhIkGIrn9MtfdWjWZ5v0U6lw6EbvRatxn+nY6iPXR+zB/k8CfxkY6fAIL33kIdmLlFnucLRWSF0y8VjTvHP5JHGyzuPDbxEL1eXycGD4AJqHg26vvsRgEPAjZObGMu4kZC+74wBJMioSbjk+HF/agEIWXo3ZUgEqK8jYisr9jJ5SHPW0T+SAYqLdosi+UWIS+a9yb7OqnjVg7fLv9m4UFh3PiMKBsUJqLbRq9b4YTYvl2xlmC2cEHcVwDf3yF8BQ8nrd5VZ32FzkQiKTGHV1mJOLhXGp1P8Z875Owtn/ja1uqrnkWH5a4Nn2NxqzPp8mcZJoO3JGKRKa/8mIoy7YX9zDQ/nFzvQhRjkRF3mdR24BmGzRP84Dzp9l2FW0Cfi47wvQBbMtRhCTxKUhKr7PteURJV9duH6wc/Vj8tyjN5ZpBN4WC4YeGRJzZVs0mbk7hsuhb/sTEaEQhqcm+0RREz5j2pdOHk9mQml4dxQ6QkXvNlTYZd+onCwGjUBymRFP86JMvVwVYc6f/mOVlpsxKQkX8hK2HM5Z5hXpuC9QRafEteSckyT4asYiEixYDql7eImdy6aEv1x4+MZvspwgydd3Iaa0EyMOAEUFdGJNQK1aDO+vRLbrJcoiOtsrz9E+gDwStlEhsdvXJF172TIniG+R1DWWw9R3ONPiegpzZjqOfgtY7hya4QT2HuyeOUasxIqbdf1rPqcB9pAOGByTSWSNV2f2fBsXB+umoyE5ha+F6rsCpWeBAqJAVcsg7rsF6SRBxClpU5xg7h4IYSCRuVZ8t21eHjMidctnO9tyuy+KYzkpwmYm9dmoh6Jvlu6X+ojUo9/O8GGwvEh3m1B7vHObZ8WpfEQfLcFWtSQ70QBHoYiG+6kkLbzSwM5Ytb41IRDwoxePw8Qx5ndaWzDC6KltoprXTo04GPqfTjSQHeZj14REq32gMkxB+/iTzGI5P8SpvzgC5oV9/MDxL1zNqNldHfmc+A454EqUwfmyxkesrSt0sgHwvvvYl0OC1t+gaOUVxQc3v/zShTSKY0G9mI+u5RT9YTPXM5sfq5yusYkR2f1kuyB32cZclktmyqMFfJY1yoX7+i00fx5wYjidjBEoBoQhYgZ0NiEX4ThjiGv5t8eFOWV6g1v8EXoNWkNt9ji/m9ZcJBue4V7/brdtPImghFDs/w5jlbHF7wcy+9QPliLvsYa03wwYZMlAtiZffk0MffFIy7oMQ2TxoCItUADOPCl8DoUoiiPDcBvZdfrcyml18IqgTz2O8bg2DnlcFg0uXVxq6i0y68DxJzbczK48gf2BJIzSoKMv44eiKbHSPP9Pqbd1h/MxsT03ZYdkOD+z6r6e+lREhkWE8XaFMo2+jjSufx+zbTEZLHXgDbtYT98ibN9nwk6mElY7osIGP+NPaJlHt0VuSsZEd+uADNj/Qrty8al5Vn+ZVo9VtZ64LeIMvbyTJ0/lIGCDX5s/owB0ahfQVEwiE+/juS3vjsNXEVy7ti9e5w5IJQbb4ffYP/pLAxxm+s2NpxLEoxIlqzckP3YPmJ5E1t3apmJ87iiXJUyIUY8NrN+xfGzWTL2FJmeHVKFFQ1j5C6iffl+8YpOM6XA613d84PCiL/rHRRhJgbNZy417wyLQKNMFsU8Ur0g4mUyp0Uu1DEZdtP/1bICDIaXGAkSQ1Rm0plWIaF4a+Cblt77f3sQuu0TwwDtwrE23GAdTf3uDhvpMI8q1MrYMEwunntJzj72lIEi9+x2K1XHtfyJplpVM5uwf/WUJojhiIduCLU4WUYZGDUkoRg6GR43pWa+bWyuIumqGX9ZjR32fNQ09cuwtGSvGBalXmMb8Rvmv0A9jS0F42HkWB2zMcoe/g8YSXv2gWOmYldKtdtYoq7O3YTuWDY4KuPg1csvfbc/Qrf9sr8ngf0gztGyhA+LsofWMDxwiduspRqRkrIi2khbbP8Coz5kRajgRghRwZxwC/3iG83IPiGuYKDNv4pVB7VB4GGhS9ZxyYlIS3gjmdG75pAKn+lz9IhYyMJdUHc/ct19UIZD5WjWaxt9mNhlE2AsYQ1wiP61lRGoflyTGPlUaImXVo5CE2SLQGT37GGYuadofT8LGEqE8kx00LOnA/emoERgf7f8Bf2rHL1DlXZ6ChKCPjBrxBG0uqjEs8rlTnm0o0XFnjjVlAFshk18zxgcBScBnjgE14bSd4etqIw7TTYiE9zctRGXFA2DoLTILscUJIqNswP8ms3brj/2metyPueHpdgkBvqpyjCqYQyBx4jgYR+Nh4u22WYu8LotvyT6sNwSr1WOy0ylTooW2ldejGp0usLPjdHu2j8bS4xdNIXD2LcCPgXoT75xlEtPxnUfqLEej1LujTaymPaUJd7OrRlHMSvJn7wB/x8lcp5gPIsXwjYVm3SKFm2LHelX7B3JvIRuep+aLekVFXuOz0xRohd+sg8CM1EXwLFhhvcCD6tf/fSjQ1tz/FgZjxWniIi/mlYOga+Ppqx34SE5lXMiMwhcxFOg8DJaRU3ooQFRv18agF1WNvFVttVOO10tsjV9ktMJD5zqMrCC4Sn1L8EU53xSOfPSTFf3e0ZmIL7yaS3WzLCMClCf2O5NkpH2HL/v9OfOnwBrDPwew+djzY9MZsDKDLwgIjzAePLhJj/UKivrlTK18mmpiTEVdTz15jH9/u2IaMuOV8u1IX4Sm7j7Oeaibz0xvlSqavxdDTkMbVT/Fxe6Ns2xLzvfurnzfZAQMhkDKnhyu4SHU5uga7J/DLxT1jfIrdfpN1kbRg31EfXQurHy0Q7Lq38GtxmHsOBkR9zWAqM++CwNQ0ZvYdCLWNWOdxLJKUypEd5tI8L3hKDpMJHrVWkJ0XLTl+1s+GF6bptM2QvzQlsB+1PMNVOr5qULCKZID2XP+UvVpzeefUCsM9QmQuMWi2br6JtpU2BAW7HYzcIB/k/9VtCLYf3LjkGJV9/RsTBiBj1jvm93d+cCy/u+cpNK0zSF7X2V6Mma0vI7CMZHFrh5qu0asRttt3kNMGk5Z4/JM5YYcqg1T4fSWHEl6tYUYg4089Hzj5SQ/p1/ouBPq78loBJO3BX5Lz9EKFlpudxfQ+UtyTSAbahOnup9KwWKPOlVDmhripXk7jSUyVyWoDPR2W+KWMX9yplbYrdZ4yFYT0Yh9LHXziGDFtmCm+75F0O4/bA41zquDkbKTJhMhxOkb0eXfo2Lj2s2n5pv6H1vDpphFkxrkZoPIpg1r/4V4dv5J2Jnt0IgswJbaNi+pGkR0rYEjceOHphwJ3DdRusiQcLCD8ZQA05+5vcqdLtL3iy5NC8djaeOrTvMqGJEzM+p+HrMyju2Erg4RBlVyUPPUJlfHZzjYrL7EfYOezDZ2w5JOJCL6w5PO9XATbAp72tv13gqWwiGszoIAai5FcyOzp3++GhpMKtYGQYtDbn+/YexTXYUUTW9oXKTuSLd+uadLwXo6eE4rKX9LpkWWWG7YNkkDKO1fb5M/uSLzMsnahUZog76GElboOW+nHZBBTZklQOAI77pBFGw/4FYZyFDe9rC6JAJChZwGS4dNXJSzmkKALMsRs0+bvHc0D3PE5Wil9V6p3880RkWDxe3/p0q3mgx6KcD8a7UrtNecueO/K0XbebB7VMprg53+Zalg2lVtnhulihEP47n8C5CdB8jGHbozQ3QHun0UfTM7PZ5ljQUQPkiWj+frjFcjKyHno/K/yYwGzkKclrNmIjr+aFuuBryXMLwFyOueH5JdE5+JPkHW6OyyODPBdCuLE8chhogQqdH+YDGvjj0kJE3PvUpJpFXD+iesltmjeDbZORaI8xO31sITGf8A2kq8SibgtheUXl0wL9xqIzDBcE3hO1qhCEJczvpjkFvPnr4BGw/zIIpSCoVQ17TBkdMFH9CXzVLRNSnP4Y4XaDwG5twsm7IQjOeFx7V0YEDiViqWhckePIVsJAgusw9+pNfVvTzOJlGVf+Lv1CCNX9t4gQkFVsescHh6DKY7y3NDZ4498NgOloTlUelmA6ne20+raY3KKGqNt99PTGtjw/Ds1Z0mHuQc6jc1+jyCzeLudNzJEO9BjZ9OgGz8koinfDmjSVOEQcDoU8dPhcqSxBW1IUKOAOp1mpPvOyeS44+DiemTBfT+fjV908hsa8siXuQPapCi4QUOEo2Y8khpxWXaDCcbB7bQWw8fkbZyxkZtsqS1n6/cua38bbDELQDBK9DUc08dGuyXJZ/0FCYOJxSSDWJ9VFW2f+oQ9iCzaU+3zjHcvHNXR1tT3kDjeALcrUdmYmP74PNn8WkbikIGiwrOhJhg809jCNm9oKAycKpEYhvDOTyqg+z6i0eZxWCToNCLfRFHu9tChuxdrTR6EBkg/3fH3tQS/4Q7p8lAiPj1VYHaxAIJJYvknIpoGhuiEqLVQZwpL2Wei4EZpP6UN3CIZnvJr/8TH/cSt3YKIOt4ns1812TGJ/W9t7bc8qseyUyH8hi9tEbnjig0IuWw5VkdatD1wQ9NP6We06Hp4MqHyTBgxQdGMpYo1tdh2pP/rD+Qxfuks5EAY2GUKL2XLu4ItU5omOFMgx2A5HiphfmCBtPlvPta9Tv9+MfwLt2EehSjL8yFSWSqert67MU4BPvIGFtvo3DCb0jihr8ea00U5Vil8VrBkZO6QPyNNX3EsAjzSOuavs5tS34Xa4ECjbQV1bAXzJ1Ld+e99DRYkMJBNBtDF4wNyYJ3IvDlQ8zGRUpauGbod7xbwTNkQIS5SxFJJrdj06zn+K8FZYiWisBZPcwcQQe7hWSFBkJ8X2YGHQxiphZ/99yZv8vmw5z/qFbmKhaIzyrlYGUAkfrFsViRuXNgPjSoU4gVUEOSuGDmyeNjgnnpFxJJx13oBq3Z8SiCz+M7wk2Csd1CRdLR0mgy6+8JvEqHOT+rGUi3VywMrCQai+KxYWXLrG1QKIe56xlCz4Gm4NeE04N+xv0RsSGmGUGv3zUS0F6rYnTkZXl171L0r082ZKUzHbLfujEeWCV9t69fVj+DrN4je9dyNFRIhFhiS6xov/ZluNvewxyTeGbAYNbzG25ww/e/+nvjd6gZwoDxmPCWuinOYBZWkDDaY6SXh5i9CfT14Dh5QZhrnkPn22b/1txukVkTwBHPJDf88jTVnqYoigWXneb00r7R4U+Ne9dePoI41BkZDcKtbCMqw3g+sVx+3iXtOyC5iG0dMasE5tsqH9nUlxEIAcipUVulqfczX50WWhrGx2zLNbjiykHm4jKxSSPzq6gYYiQrvmUYks+d53nTDeLyG2I+cqbTJJwtKDC4GPeYijTUXl50hk52JFkKVxVRn+N/1JgXCwO8qtZOJGVmCnmgrUeFI2rLC64k03MlevhBSZdrCm8f1w9Edr2uVT6vQyl9wU41vNmtChWS4rGXtdGobk9FW0Putg7fBmu3KqSj07gEDOkH+xQcbRUNJTv+CVkTbZhNYwDQh+bfS2tb2dB2LhsK+YiinCjdQ3cLJIbQnCp13IwJJJpQs58AArQowX+Y2Jj8rLL3nJso9+pLWAMDUleswohAff8XEga7ze54hmZDRN48WlPpsBY7lSmPc3RSbD2jNADGMxOtJ4MJGQlyJsFLFCPquuLWrFz+iacGzfLWkDXrgEF1dxX781Eo/Ok2VWPU5sOECjMcr2mxh732nY7nn6IisU35+9p13KcmdJS4ApkxbVxoUTIw1MgA6FhYnmMY3R+0/8FcHwXt0p/cvFnr3aBuOjxzQPFRnXj/CgZBi37Qg3uN+WrsJjxiLaoWqq6cht/MeVnsERBjII5EC8wSFQuDshVwaQ/FytlirxhzW8qmlEiSdPzKhuGb4bjb107+6FwES/GXJFdEEdvmoos9DYn6EeGVC7LRflDfWkIb43MFK0z7LF9wpxMYs7AN++9a7b70QPU7avtFMthH4FqCRPyvx+Ubj/bziM8LkDEHAk0Hu/XzoejYZjp72Oibi3PCUYfyudY0t+y4t6G5w2HwE8wdPHWwav0eLefgrp82QNfy2zAn3uL/fLa2Tqu+FohKxuBF8iTzLnRfmTyJ8ZdVld68VNFApmsgbcOTw8WPDU/xEJVvkZ1tBJ4YcI3Oqk58XjoV4VnmTMWFtwKAEVQYirLJBb5H27os+pC5sqjTfzae6H2kfrIMT1cZWEibtLPJS9TuoLf+oEzrHwvjUnzflNSJuSqFnt1azNPjWUnQM0wWOfHDNoYR3Xi7AdjZnBA4u0kDXVdRSvJxqN4eQQ9rsAYxxiPWCtTyH33JpOejBjHLUxxedLZAveKMrtSbjc7V529jyMYApzrNIah22DF8RCLFXY5wx3bJeYGX3U43dmOmQkywAEoborklneRHPFxlut1rbZ9I76GpRkzXlIIPsWD4wWGAGBWc05dTSsLizkLqKMpW+Do7WAP6LyixLS9jOjrSYy5BGNJpcljrZETy8c7Z1gyPEhJ4ApE4664ZrbiU9PkdsnwyY/o8wzcnoK0rFNHBmtaR0/JIKvLW+bQSZwfg7DmCdLtHx0S0ofIvw9dAcBF46Y3XLpHwcgD4kbEcw6H0wAiIjct1yq8mFFaXc1ShzBH8sb5vAOljf+2c5VxTOCIBIV0UtDWF+eSopUlZNgK0y5HsgPMbOqrq94bRgssjSUP+5oN8U894Qt1vUZqqlH0mKfV3nPtJJOWgVr7up4v4LoHMgSOlYnqCWMK8PQEGyPuPQIpuy4vG8XppcozhNfH4kMcvHxJgFlkt65qYjW72abiFy3w4lxVZIBXNDcEVFK+hW7PImRlVxTeDE/IQF+R3It3r9XMUkLuUSWChfv2ywLLRlU6IIA4DK7r2muhEfu8ym5Du/X7/cKUUZy7SAIi8AD9Faer9+uFG6hk20/Pqcq9rnJsJaAn4evys/qSx6Yug+jAC3csIkbLJvhW+cpRP+pMNBAVf28dQPhoDys4e2828sKly7xQfXx+KEbQR21BHVGjcRptx47DmntMnILE4+ggte0wLX6hbI5bCOY05J6sqznGYmI6GUewhYR+UmdZybXmFaMfeu7GIQrG4eMeoJhgim2nETKKKtulUFhiGvvoyfeMt/2Pq09y7arv7YhZXc5Ytkd0JMxUj7Owg1WkgX2yoAyke6FQcH3CdTkON2enwAq5/G6RWz1+WMoSUX4VpoJnqkPESh2/H5LZc86T374Zp9jmjUs72lP3/pXYdr4Hbd9OyLm8mCN1kFzmIKb0r5J04CXzdXc81pdNkUadW8xfGloAHE8UtSfmQk+HCKwkFmBlrpVwDJqaeoyr9S7AqGc/fW+3vfNc91u+hURUS28ux41em7e2BJmFQdPdDnBzN63hsE+beec+ZmNx1Ck1u3FmdbQ3zd58i0EOsmq+06nJZyHYw97f+2JWAs1V+Nq1Ym8Datt35ZqBPmKhk04Mda7/itNwehgS4otMVaR4GfihSDUvMw3TjOJ54PbQ7QWQwbeymReyYqi3P0nu0sjRiDfbXz8q8IO3FNUer0hb9z8tBKv61DiYpl5IkkklxO6xWHJFVi7iqvaFHAJ6eqR+bQtvogmXeLHQ4KSt8xblsKj9N553AdiUYdzQ1gh2qHdU5/IeCQr2OK3ub+EZt8a4HeTkEWfqai+E8E2ss7WZwjXgkeEi+qnFrcreznqEA+d2cPz5ktqTMTy9PopZAfhEUYDIhD+9spH5QKJmFEIa3qpT15Vw8hm6IiwYrP7k5GkRMZjX0fFd2j6JLSmUuxD8pB3/pwMkbqGYTgVvYvz+nix3mnsOqSZU/QKloCV3OAwfJ2rBWnJFHn41seCiYxDkmPJgSeZOY7gLINtSs6kPjT1tZknXyy6w7gr9yRgf+OF91GaIcjGfUTecl+GoFpbbKu67g6FStAd0+KloEXbsAsjPdUDX4kdM97biJAuWM+uzo+WYOL5TfNf896jIqOZNxGFWRz3nrZxw5lpS1nyTizvIhGaV6eRevUrLtdXEfErPTlTXdVkZXIjtA0Gr4DkPOzx9witS59gQONfmKHJPYQbvPPSFmyYMoqI+9QXIbKEwL6UeS/KszF5wSwvXHBSEcYeBWOa945ZfcGBVHz+1pS0MKmtjlU1gaTQ8LoYEp9Jpa2KeEVCbT24hQ0B7zVEhHp/nQkwx9Xf0hSXKOV/bwghjzN/j2Q9W/vti7kurx8mYQqwR/qj/XmnA86SnkJvO5iDmChr+TB+q8dwdSPvbkfIujLfSaYqczMrl9Dkfd1uehWPUQKfzCO73VzV7xrr2j0v1YibTU4C4GKVwcbuVsCX4Y17SqutvKGI+Gy8LTvODfwzYLAoCCtNi3y86UQAC+xx3S1f8W1WstYnzoifYEnTV4zOqrfuvY3zh0r1Votmpod92XBxlYs7iI0SITnwB7sya3p0nE5p7SYfBMahVKWdVXZnAZdFlvdYC3JStzmKjOuE8HkcU1PzSIcGjPULjFYBHdYwJ5Dj/TnVQZ/lD00Fvwj/PliQPNb7lHuRurhGVhwYjRVt6VfVCbh0ts+HHo1bAyTQRW0Ls5wKBPEp7BmE+K2PaHcN757q/y+UzYzFz0h7oitSee5SOd6V5XqXUYcbCr8YCnP5Olfje5hmbIf3f5mIeeb1BcOVFVxVdkb9ffV+H1/bLk1+WY5bVV+NXFJoQ925Xx3rhNFS6lnt1/b23M+0J6gitG8KOXPs5gHuCv+4bcF90C+bQPbxl2H/jQZJKct33mR+Gbf+fsnfKSPSCMIVojM83cvdcTkZl121mGBr1sPICMXQHG8V+QF3kpzOW/POC122sEq1NBoLbW7RUJrPZmC3313xX0KheJNkbDb0X65NiQxjvvFoyR5bVkkTuR36o7sSJRR6hIHcasgwQzvnGAuAo0T1oouoJFKQ3J8d977pJrof3z82kfgcHRIBGS61lTgVy8tef9QzMe1hE43QV8gfeEhIrgJVNORmmFiTkPm5ebav/SMiKobsxEH++EiCzNr8uMq1lE/spTCZkb2i67pHizBAtfJOBLiFfYaSDEQ3JUFI3OlZP/YRddjDu0XlU8OZJvITwkCpzb3D7vM2Wi86KSr8NTswIUKAZnf9YmXxDNfWQU2Cund5w38bJU1qwsANEPUwH697lhcl8WO8cj79UFbIk++KrvMSgXdg8TlR5+xdYJhFX0c12TxzHpiPJi4FUvlKDBG3W26PUl1O84p+YrJ0iVMMw2eRn8oyxnHbIj7/ezJ6+BhhL4gQfnNcSn/oc4gsLPDXPANffABE8+hqCXEP8ifkG48pIvu3tVdS82783PM6TzQHvtVu9CTvrmOiS0Yt+ZVz+BloJq8HM9kv4KG5Ulsk86JyvSzMv2tmNAHSJ4C76GdtQ8IxK85igyfWpb0bjIqojxMkIR8uh5uv4mUkgcLJwJ3uzW90+YcVUVfeff9oQnaNCJF19IIBxjrFIs46sUtqNSx3NaCKkrpw73ZabI9j453D0b3u/660fcjtM3M1GlELW2nE8NS2/mwjD8q9KNUeWdBDTw9e3tEKDohXmD5u1DO2hilD91A4LGzUBqExMHT3/gogjLthrA31GyMFMOMyQXHzkzjS0sPmWD+lxod+dxDy63RLSLHRJcWbZjyE6kU9niL9sa3pZgM0we7P6vyEF2uezOnxRg9LWe+XVlUjFn9ejvfq+9xU59k0OMEk8k7GtYarHcBV/BUL5FV2xZAh5WoIhoLiiMdXynkPay/wptOQVspNsfimeBgsmA93F/MmXPxHhbBZ6A1LdXuNzQhqZeH3IyVJj2WJSV7QxZ71ITS+00qNRH0vpGgTyK1WzXK32mgi2H0fEJiqSj/V6POd5lzGMDUJpK3+l75ULzmKRUvC+9rZX5Ye6gsepAktL+wnoghRRmHRTUKqa0Odhzn9F0bKO4GWgvYtiiM0LrSbzgk+YaD362qWYnuOe+9HEP966Z++OmZ9rRLSR/DMRkaNXsZ3dxig667oP94VGY0PQ+Z7+niN6hJmpDi+FTZ+q9KSTWjXFEoq/ahWUXzPJaIyrK9VKKT7PWT5dQw2UP9WsWcHpa8teXIaY1iHV+M32f6kRB+3b3r70G6ApUbHTAb5HesxKSn5BUNyZfrOgSSaipEqIvvFWnPZHQDZabkYmS+B/mu524GYy59iAZN+64QUIUu9d2VATKyq6xOC5GFz6OXrkQTvLu6YHuCIaZX1bAYFbRl0ZslFNnpX4ZoU3nNC1ItCTFVoQ5GLkBCuSARwJlRb4+fmNdHmVIRrN487//42lwiPO/P93iGx8JThOGVoPGejrX6093FTb1pa3d1T4bmNAgSC6sv63Usg7UlDGOTOuZzmTR5W39NLYcZroYGnZcCGdCS4Jea+XXMcuK3GtR5M6TU3v+wnjhitcJ7eNJY8z7MbH/Wsc66FryLluPh+OeECcFXu8H7Kh0mwHfGZvaG4y34dhKrHPi+yqieo55Icx2YZo4FONUzt30QrV0cF4dxnjzJVhdPmMIynd96NEWP9prAhTR/MSqvJ6fROOTEqc2oXYDIsX6JzFSQYaavDhyh5Pv/FtNOxcMewOZc6/AadUsb8C4OPIzAxgprI4WIZlD9ofHl8n0HpiSvr93t7ZyYtxT6B6HcbF8FDwNdMxwoD77tir19ZoQ1l1WvhVF1GQsAubLgAWBlXfdsTIVi5dp1LWlW7EZQ9pHFCSISwo/DphLfswbJZEZL1xiM21DY4efgWSl1CX+TEKUiMQch7XxswR2aMh4LazOkA1h9nfRau1VL2mYdASKW66t5pDhXFkfUmELas24NAqFsLEH6JX4pEjm0C1sUgNOe2PQMYiNd6nOK1RPT2DJWpe+XupT8bLkzvq59te8N7Dy85jMR690AsJQn60QNmUiEF2DBEfxH/9DozW+U7GKMIKzPOdR/rWOqkctCY+w79hMcH9hufczQrXZYH2gg87b2Z5ft6YVA3kCTWpYvRsgWmedNoN05yUg/ynfmDBEFxWKTKZ9BM30Ye7z4pYs+9f+fpzYkwOul18RHH2czrf3VaivZ9qc7LEyVC7vXSub0sJKxBSioF5n8l40FocmKB2UpSCWWqk0I+2cB4vZR0kCYbGt4cQmLp52QBFjo5GikX3gs6hFJHj3bw7jOgiPEqkaHGUnH7/vmC7ZL5MAXViQ8WMDzidoDSg2/FXDEMiTMRokLCJLVixvTZCK1NEbOFcRDa9SNnQX0Dfg+REry7PAJUvRTMJwXyIlwIVqzvz6o6jKvu4f2mpOG5vE+PWudNwF/0rBa6a4op9vG6AJxOmjwLbRWR2z5rfreJyEdUsRlBWxIv+SANkRzjXNi7I/70//a7Cs6Z2b3XqQx1Y8gM0W4G6KSICl3frqN3b+lkG0gfg1qkHNoVBff5CzOt9O4dZicnkTApDDJEDf2Bp9hr7111RR3PLXguFVlPAKNOAPvRIUq+so6/Q+n5HTP/t6mpecIfPXpwQoXnP+EoLHNc0c39UZRuB/7R0Pkjbinn/QBpXUx99oQjwNYM/fKOVVpnngh5jwqeheQ6t7cyBff3ILdlOPjYJofvt1c4zxnef8NC2wjyzVzatzeq1fimdKsw7wg4CEijDH8X8sggXcbW7tWzoVDXJam3J+4oFCjzPuhHVPiISxmvbU20GgKWG5mTmImT4ip+0Y8UYRFn8L8o845TDq9foi6DLGyJbLfPqUz/ieaGy5XOgiuFZMURKQnb21/GtPSsRJY8TmGL7YKjvmjo3k4uuLKc2og4TbbOuy1b+6I1p0oaOPl4Xd3oGkZh0HAkrhKtDBGEp3110CEU/CI1qEmWY7WvUKqnbSaj2fPVx9z44PkW2mCju/HVNqcDneYW7uLhMTLpymIp9Rd5DQejPniOYXPDPpwNn++K7s5rxX32ucRzo7nFFxS7MyZ+0ujBZtq8d5EldUwynI4E36n9R/R2ehxoLJPitFnOKkWo3/cdgjsyyystMHxVwLe6/C7G9snEvsVGDJP5WEtc/qASinwK/84h4Qqf0V5iF9hRLQj33FUas7fPkdOBypDxW83qfbY0z/OYrdUUcLvwnNoWGPtYSsbf1gZ4GULCBsXR7m1vimdTfCRs153tw21bJw1E3oSaiGk7wUDnTBPWZqXyOESfGR51hQZjpCsfmtOTsbiNaEh6+77NRH/lz9Eyb3ApbZfQ6yezcnlb7k0YYWvgFe7LuD3ePRjVccJFePuIhQx+oD/+ap1IeOLSVLJ5qHSUNR1nmj8bPpEjtAwatG4G39DT0YVroKgsecQOYqyTdf4zwaU4AjHSjQzcHTGKrja3rtj1vFb40AqcpBrybz0XT9MVvNXxJwPmVIw8ykv9S/K3rW9cyMwCiK2m4TRs/SaxSMdWbhtpvDvJrNlYyGPUgCNwFzkuDeYnvSUif2BlKL4YgoEkkdn3JU6l7jPV2XVmrmUXzJXZZd1spSLlfts+fgjSPEePdZ4QffSCtZIfe6AbjI6zk3Un8ptEOgio+QOxHOJeYObNVqJa+UNmRkgFdsuESxh2wVuTUvqKnxQYx1mqNoL1tTMpn8qNN6QM15ZPGoBny5qUaJUmNOwybGpuyEkK1f7jd3Mu0vb5wylU+KVMFBmq5JmXi3BSJaU2Vbae5KjFGPqqyFFuHJtqnzX+Buyx88E58I9uQK37wJLfC3iG2WSdww460JUnYIZnd1u2etVr3LMRdFkNNpMmr2THeTfkvuPHZzsoVDE2XAlhOYjbHdWMKLyCRXvwtPET2uA+0bKDEI4e7gQhZVVnlXACjKXcLjcK8kSLqo5G+vBF3QL75Y5dyP8pumH7OpXIc/Hmmfb8BJWftRexkNmPhmkYOugjJdqqlMbhKg+RC5NCoz44XSwjInKzUNsVkRaN3QqMlNOahxfgBoRLbvbD5pBbWp5PYgbexXVdInqJ6TUTAi1YeR37q8saDm698wzMEw/WUDMWiDkPFpzFYtzN0ljMk18Iu/SPw9gUmHWrv2bZrq9o8eyGkL8JMVPCt+ZxJXJsWfy5uJdHK3xcV4ARNIS8gHVulDFeQnYfEe7XPiGItmslJQ/CqIioXXQPRRNUdHNdnb84g1NynOc51JyJOz2tsGqmYilYzXKPvMx/0fNifno+9XUYJyz5yUNANOvQIyv48kJERC9fG3xw43M0cLsBiWdxEqXVZW+jqhSiCwCjTFPp4bJhhZjBGnrRcjOdvB5o1UcDPUnTW/HZWMyFaZN/EofdTuOQBUIC3hlpP+9OOAmPdRYk1SDIsXkvPcYyHnfr6gBHShIOq9eQO3msvk4IeAZmwBM8dlkzIQPf/8Z0LMPhMU+tnjkng4YOIpwTwhImfkYwQB6pG6tl7gJ7Zue7UV6p0CmZS+y+t/6OZVtzazgLBK05F9kNnbhMpnwG/Sm5bvctf5QBL554nxRnI1drp++txJ48Ht0UxvMJKK5VrSsSv+0h991q6t5qr1t+hdXFbf3nZlWRx7mWz71CyzG3dtoJBWOkgNmtRC3wBG5CySXAgb9GfxyeD2EroY28zrAfjrbi50YpbBScjOXOp9JvbQsPmAH0tqvW5d4ibkRSFyQBhZxD/z4b8p41H3vSZQplEXyLO5/lp2SzjnInwjisiquw4LZ/nbkaVeJt1Uh/WfQFr2QJOVtbYg8eUHoCSTtWDEYqh1ClmeUeeUvoYsVRjdMU7hw44n1FTN16fz5na8+CnkxkbSOkaAy+CeHZhCYEvZgIfy4zljDxA7ihiXq/AWsxZoVMpDYulNuDDE8erHOGIaOiea/3JuO8D4bPPHSMiFZTMtm3QnxIpKiSdx3RRDeMxn3/BVTi5DRPa/NqRbV9btZIToyF9Y5s9+ZPbJE5+/Ryc57EDYYuD18oYaG1pPXiJMOwz2gKdtc1KrKk4Dm3e8DLWsKTAUW8r3S7HK+i9eChMyN0RcX7x9Nk6zMhryAJQhPuJYRhcYVStW3RNkVtIvEFp5elM5Uc/p7CtuTU+c80AKY+Jtjnd18A1u1XAROK1o99bEehKELwvP+UynvtY3tIcrgekpX5GgLzz/GSxhP4iCJAYYWYZKYziWtVi6LdoYUyS7z8iBgZitLXhBS99bFbMcmFUVfeRu113K3Pxg3uGgq7UiE7T15xd6orieK1tn6Cj6HQD7RX0Grjs6r704hSkS2ysXmMm8I8GyDFC1fwv+YUSt+ksCHMQngtur+G+QYllGXg0HleqWnAf8C3TIJ65SvmaE4vjRdUKm6lyY3ON4GCxEWVZcnTde2rUhKz4peNxaIqdHZ+BKTUy755y7EcaDvQIsN/37MBvq/ruZ9QUPe9oqkUIUF+C/d1GmeAorYKJL9tP8PLbZvYo3FSp3GkisesTqCV9nA4RLkecq54e2nVmebxJwX7MCBNgidymHUAVT32qBCaXXW7/V2evLQF28P3Y2eAlgomJqr7E9k3e91pSSf4QeN6UP4nuH8BLQGUXNl7M93nYLXK2pcmhSEq+zWDfS3PawvGW/dzJK1oSsrjSYLcQpnW9ibBXdtsDGRtQURENOek4jkWgvsJRCpDnwv6D+a4JZTfIMP3clDm0/Kt6vexw76/p+1ZgbnRAJSrYT1IoCNCFn2ToVUnYoX+t5HRp9W/pxLL5SSIcHqdO5Q2iX+7hQP1G2W5QAv4IuNY6pxLmwUEQtFbJj4pOpCOFT5Slx8MZxopERbujoNIIX3wrtI8wrHZ1nlA7q6b9ir4ngMMKIqwlj4Ij4kG2+awR/T+g2L+2W3JaMVbRw2h9Ofqvt6g5W84+yLTu27kCG3HzzdjYeddyK2EfG9T+TlfLJoygu2Pai5kX9xjSIgE4HXtXwXLgUkwC9GX752ncWsj0qbyjcAQui7iykhEsGXTFoiqhEDFTu+bcqufPz602bzfQQAYv7P6NoVk9Qy4DbYG5EqcZo2PYE1uu0n5rYv/c0+5fct6dbLuGiiEpd6G9rHL/H0/unzAByF0FpgVP9vaq87eYMCIqJIRPjLcWPr8C5n0wOoh+Pk+/rIXLLntorfJGCKvXW5/LyXjZ/bDkcF8ZccN2T8Znah8tublClVE4rD8YhDqrHryjYLTKCP5YcABKa/1PSko8M7DIR0GBMhgABH13RI4VZq3ttroua8l8xJ/8jWVbsJwk8yKtk7ZN+CcZBJNYzrznA5TU6aAuxsg1C48DdBY2htZh4Fo8+peNeZgLicv0gFvPVuezyTPeZ9cXYYYfeDKzGLXONr0rYavoNQLtab5ot9rEezehTupaTye+8GzEmJH+6ZHy7aMSrl/gkRa1A1jGH0yiI1W/yyA06rjkDJ7rAWLm7yFpepWiso6LkDVTT6i9iPXrcGAt1xyXQhtffzLRhYX0kwHvDZvGuO7UDX1EJ2ZGDzH7coiYFLKfJlwb/MEu/AGSOEXpPJZEoRFblEcm7tvEf0RVsDoSmVljkbS1OVC1USQBLe2VS4RzTu6s3WbFhOfISv4FhU+EphzWIaLLWGrhsFi3Fs/izbskosSu8L4RzYqPMCBeK8IF/HYInaDPrA77AZiI2Zx2hD9ob+B6wAkw4HiIUr6Uh8cltsT8YqSjzkRPrFnyZqxX6oDY2XtPbhey2thty94nawCuwRHCFeCX8u4LniAasq1ZGVejWnZnoukL4AoS77hO+57P03RxdNk8IgQUMOuLOoGiStgwx0YKTxPJfGdUqHmSHR1icxjx+8os3cv6zaTi88Y+6Q450ftI5yaNx3l3cby9105YNw+T9Sf9ruz3cK9CUi03rsQNIFEXzO55Q5HbHTa4NlKNUC436eCCOwJFTV1EWMR7wjyQ+Z510g164Be9mRgNvpWDYukvU39d2PnttwypvEjmnYxLm/hT41PBTKzRl1vHLwRuf5kvWjk8oESWkzScIirX1mZM7DosNtMsa82WJaRVcjIpn0SZuvuNVhDQICttDcxWX2kmDe0NSVxykQtrZiYhrpjdIBzsW+NbPWcyV2JoffnQnb5dEugcIDpmXinedwrmbmd96bKhxnGLI7eQdaoQrrDkhm7nTkPWyxtsBUm9Tu4C53cctGxuzLvokxvWde+5p6WCeGQlACE2zXR1zBvjjB9vSN6E5qrH7Okka7Ma3EcxEU8KfDeek7b8Bjbnmkqp2C0lA+0s+mHpFsMCcGN+ibTZ1n3uX0Lj57aKhkN0Q/VBZXy+s+dgiY7oYZleAKmvi/fnigaAtzu2npVDfOiGwSDLsb8+vMeXdhBPNNROAD7kGMfExbeGWs53hMsfR//TBdpOsSPTaATOl/IWBZnpRafjtKtaoH1NMZy1uFM31E/DCkTwamQeEf9/DmtYVhuHiZUbhyemKQn+gUREf7QTPfnoZV+FpAcI2xn3Y9MTcksKalFBEJXA+nwrqJi8Fyz2guE4+RKjdhvtjXv2hMGSQsZuEB4KxnWlgfTxod3dQBGRDwU3A9absqyE7IrT4HiIwUaEiEkhivG1icpqKnU8F1apXP79Xs3Kdia9S+VNLMhYVyhN9gDN3XbPHVqFn+AN8MrvMqrkNHGCiKVhjcmQXy79/8j0vCrIpnNvMEFs655md0YPjHz9Bh2LqaJpDiOJAU2YUxlBApvy7yjneRZ5AIutkG8tdF2BBHTNwOlR+hEBrljlt6/uKxyKbIME2p/ZYh4GrkYJILtny+K+6GUlqeurF2xLTlv0N7G2pZGCWi+7td+h20HNmkweqKx49nk6feuDs9PrbK/mj91Dzcm1vqdHhjJKcOSHr+Xqt9u4SPX3DOrkuCA18ZyPY204VhEin4T2eTFHzSZPU7qDcqbkLkJxGEQfzD0vxKYMpxYJxD1j3xDe1+aKK2eNf3tDK2y/GhuI8GkrGwSqSXK0ucyhMriFfoiWZfTgqCflRVj9HDTccxy/9vku8vYxrQUsD2s6ZXqnL6WvHryWF8pFyNqd+XuKj34EEkk9bKPNPiaQWFJWSo4e01eOqFKXVLi87YlCUYqs4nVcXI9n3DjwUaPmNSVVrcFmhAXk4vC4dXbrZGBMJIHELBuk5AodGtGSXSNr6M+ohPYaiHuNcB8Yl2suQ3HVidD+iBfYg12AzwtrduNZKnGgkldJzYyUV8ansMpmA2oQiunUDFFCCpKquBnxY1tmARpIQ0yiUPTwQM+/C15eqhHHXiOpxIRFal836LO0WGoX1rXHlEdHTEWjJLtsuS1rYjocj/j9SsWBz2jD+iHm/mGxi4R6S7Li6Er4gpxELPZh5iUj5N9LYrjw6uHlEvzSbP1sjphVwFWGiIbYc/m6zcgZbcMGjnAqnxToIyfJgkLfN8KkCIEq9W14yAFNwPAyWYnkUVjqopeneScgEZLU8lSe8bJmv9d/q0u3ivzU4k95FeFk9xuMf83fmr3mPX+om9dWxb1nO5Df04HpXqH50T79CyVgIPR3stNgv5g7FGLNjcWO2yMYl5PuJqN8Onfib86L8T4TbHuIWb822G4wvC6JY5FkoGHPvm+hHEv91D6ekxkir7WldUf/2fvSbr1gy89njpgWVQcgpMgnjspbfcLlqQYI328qOBgnu8Ze+OTZs2vRjyNh22T+75LWHzaJj12d6jztW2nCchvW4Y09uu/DH7A6wGOB/mxEu505MdjiW3aNzLyLvCqqvyJUFfzdjNam6lpLOJvQRZjnQBPrlpmGHh55qJCx0dURH+284dpMa2nt/pekltVa7vhJ1BUzlFrhtxMRC7KdMcnkhEhWLbKQg6MBcxn0UM08PfrK117ICL7g1W55gm/0kTuj8j1swTduk0ksRvW5yUqJrdV/F5I+YK3oFgfFc4o70R7JqA18mUav98uBu6bvEL3EBWJadQWXwoKr0thWV6iJWjI54J9T8hyveOYULH3LBRoetmonwJv9cnrkYybGbVpm5lZJGMWD7db4YATEGzel0iGkKkdVTD5iHgG7/paE9fpIbaco1J4+46jXLPRWaNSEAY/BV94C1jNPeSlewl5WBPuM1JDJg2zvIonIbXWBl5E4hJlUxhhMC845qs/07LCGX+ObuH3SAIUEbFPMRyYXHLodhzpUqqTrinTDqg8ZacG3YZ8cwVTLtwiQTzlAAWfqC4acFltTvA1OWxBsW7KzPbTidLcBHxW7MuTrXMLGcrrV5QAKuxKvI9mqCckF3SnJbNMlEbCXT+IKyKBl5xe6hf1sUygOyxPJDUFvbkyzVjPdeZat78G8rOXzKyijHRaI+5TqIsUKycrZL8w7A901eA4P5Y3iVlTiAUE2loQ8qex6rh3e1GIbRgz3kG5Uzg/lo+taklUKBk7b0oP0zDrpLKfCkaFhVYZIvvNMBoUeZb7N0v4uvBX2dbPeta9Ji4+m8DwklROIaTGTEeikIJbGDQicghQmIh9/KY0EaWz2UVN2RMd5nqYS6PT9cJIgIyPdbixhXYTeFP2bhh6IkW49tA7NXTDmC2cdkSQ50jGSx03h+/whgIVXQpw9O5TiGP+IcHZU9Kk72nZntajgDmGcum9yeP937WR1j+pI8ZPeN+qkUu0RAkSiI07AaCh3HkN7OxOe7NUdE8BuKdIy95n/LbVH2UoG1qDUVCNtJwnHKEwAe/54qtHM8PxDHo4hdnTARhgBw2YjgmYXHcPsdPvk/469IP6qWdcBzYagKExtX9M0GtlyIsHo56B/M0AARD4eFTcdlzNHg6vMMzKcxvf/1MVhSelucDc6tcBK7KfddYw+hKwpnmFKeM3D8fxfE+DsOKnkwcqj0S69XKysNlgKPN+MOBuK55MiEQoNuoBRtd/bXmEdcyKkIyj83zP5ZmhvjBxVMlk0Em+C41hrb22396BXdtP3lFEytQNqwZ7Nzw1l7bakIneAyiU4GkiOJpX4NA6y5j/SXbu0/Q/fy+XzgV0e1XFexgfNg+iHiOAeEped30+VCZj55vM4RMDhwoFdu3PvjTh0umjKsDaPuwhpqdi36RueFrrofuvsNtmwb0/jfJOz+3yRXWPHazIypexg+x53HWN7HSD56m4Qte0HBCiahOarvs7TbgmkgBgJNBoM4A/5WxsTEzPVuKycKxcGbhZ+U4EnOiNPkNpDoSSDOQhSVdUDElaVdmm4yM80etHQsuZiFxVma/fPcx3i8h1Of7uB4ZrHLI6er3oW28tAiCioqejblEni15aDjXuX47OcQTvmrIvY+NX0s2FGXx9YrqXVzJzhoSEEGLQ5cH/DMbhOMMDPksEpryusQlWXNi7MzPcQHIMYaaZmkdWJs8g6T63KtCjk1TM4WrIzAs3VJZrmGsd/BVjk2ASt8WK0rJU3AWuPSu62Fz+/p4+pmOSXv+BpHejOyufFZG0GO3e+XI4foh2FjbWfPxvTfqe6cF5164Tq5aJdVmJ30fcCC7pqTSGeZ9oFsZi+bBTyB4GLodcbHaJ6O2JkrbVEcIJYNhg8rELKlpkiDswa3iVhjPVSM7uegI4mEL31EP+3Y1KVf8419CY2/Acm55bpV1sY1wl/4jwvbdd9vKCH5HkO+48mMfn8geDMYEAKZ1g2TPuFhmeV2UFXKV4rzr6PhB8JZJ8UQWDBJF4XR1ucsLClnDwggfwdeHdP1KfPzV4fEIpM2ZA5nspX4PRLuTW783KUAjIxMluMB26PVqaVf2U/bwCK2W6am+3SjhslntuSHiqZGKpgDYXa3iGBReiIJpKqMRIgIRHmAo0aLmEt5pAMiHCNJHPTYp1wYZkzHKZSrRYxokVDoLmWvCwnYH1zO7JiIRCFhOxzMwlaB2vOOLoeRANc6xkq8ikvu41Bs6/K/IKEEEqOpV7Wbd7TfjsuOb1S5sr1wUZCIMYiP5QvnpM4L0W0q1CU4qht3UhIplVTtntkBfeR+AWa+T1PezhfWHvlxl5ArvOa4/yWBkzpqG1fvSjWuYHWR7r2ZRYGZfoJhiuwVzH9fm6Euz5DKVvOI59mwiDLTaSCK03oxe/P20rsM7CGlbgqV52IAIj2xFVNQDXSyQUXmEA/JfYernmvIAKV6tD+gAS+SkKjfIHCq8QPQDuU7pcUGkmYmUbE4gVc0II5W/L44zrMUMRc1LUJOCr4XB5i1tTiKnhgjVOZkhxDKTXxBX8fkn9dKZEv1xuo8smcHbWJVQhPL8VbvX/Eb3+J6cTl8qchBJpiBUa2OriQgv8FylWC92nS0nqtYplvFKw/i2805i/42uL5PjPdf9ZhcmI2HeFnjCgpw1TQQrmhhLdg0yfaQ0lEnVWX9eA+1A0bYxeLknByMk0OfcrPGFzabt+MFzf2NEafq8zf/AcCvD1lq7YzgmFQApS7sSlQhF3ZFiMD8M41s/6HYAjdNkPzu6GkbtkSejX4DHOjjbZQ6cPxQjeRvOsWuNztx1ag1K4Gj+a0zRdZiSFNSR4LUa6g6so/fd16UbR9ryVEgHrfW3iNROAO9/UMV5kW1sqm8kwgxFUZS/kc687KC3qcDdcWz12RIkWeMw6p0yxS5pp2ywT77UoQNCVEN3ZuqWzO8eZVCf55b3Qq0J3MtT1JLOwPOO//2xJXN1bbdZHGACGad+RgZgeJo4Z+W1nX6TlKYRRQvdOFcUIEFkh7HK5TfVoOhJPY09hG+pkjeO/d8QK9bHwYqepSn/RPe/2crOki7XKQsuoAjVBKH/aY8w58q1nTuy3J1fpJWYfwT5OT8xSuuIwZ8eGXpt9WWoYgL3+QUVgbuZjpCYolZI+XEmZwIfKOYcXWtXc8lZ3mtjht/zDvF+CJ/aj4bmEQpyn5pXJu10T3e1c4k1ZRkudW84v9BEBzsK7eOG3iF6XO3d3mQOiNmt6H6jiEJ5LcBUgJdc2YYLssFDwJmKfAmtMDPhjxQvv/7pS1gzGJssxJB+FAmMLhBm5YrkKcf6VDXhEVLzKRQ5NMR5VvF6lwb/Z8+e2QWODx8rvu/IMcXpnhCdAfZSTfWxt70nBHZRgL6r7rW+ZD2Dx8w2u+BhwieykJ+Ay1S/xEuCKw9ni86Ik2zYHNhjwe7A+jx26YD4/D9gsDHnGr0jZhxda19Ke7E6Rcjn4pszZk86JseKDnzhZPtoswHZ3MPZlDgs1hvq7MhiMESGmYYOgM8L2DswvuzpZsFz0+0Cw0ZYSgfCTFGcNISYx/LZo+9064F3egbgSEm8H750Y1NcnpqDqgj7br0zVjilSKC4AUllfkbRnQ5uw77W96nPmid6gTjqLmSsQ42MJUqFQn848yRhtT7GPT7ApfrGEbXmTnxAi+XzuM7qzti+qIjIc8eL6Du1mdK950SPa/zyhF/wF3NUxOZJGH9dTlfvO8DkPzO3jVgUYqLuVsp5P9zL8wjsvyVZduPrv6jk8mg97L2QAFSau/Qzev8vuIiF58TV2vytsf6PYpwIaPvvUzi/DuGMInGfia/1gBVGbmdhPUaZunJhZ+ehXD2u/Uu5krPLFXMGPl/fT15F1BUhaki+KtPbpLt696N3t9cnjNiJl1RXNXY3D0OcTMUVT14klrH2+0hT6qawEtBMidV9jnvNEtA/rcSJyNibCh2njsPXylkmmcFMvceiALLy9DqMhE5PqOLq17YZKJfp9IBufVhgKQS5TPOZRlTobY089s+X6pJlYGdTPYI79myW1i0m5XjVa2fOQBxhW93cYETopEmF8uxXdPjV6qs92WgqBqjS70bX1wcJDRPi8ww0js/fhym9EiVUaqIKwf+rIDVoI0mGLgw1FNiC6kWEUJYA1W87m407qi4TepNQPpUQK+jp+s5S2zppAZgMRD7uBeyisxFftgX7NSE5llkWrtBtXT1M4eKwTjdX6TmWuXM4GhdHPQQY1nHGUcPO7vsA8bXn2MU8RiKlEJAa9EL3067p6lGHoTCJ6erJjQqk322BAwmZEHgzD4Dmp+R8sqQPyNoU/vJdy354cw9dvisldpEqdGaxzReJPg56VXIbC+GMZWavOTWMrDR4yLPxEgoZwG4VoC6OvgpgbrgGs7/f9YCLWRMrmxZmIrItXVuhE/VgQPNXCzNF47bnlKPgqGyl/NMe3OeQSU1eW/plTs7tcDhILHR4y30EOGODJdsqDYh0eE6KLd24i7B7phjM0dMvVlRW8sqhT5Crqikj/DGJZcCSOVSUrgn128LSxBi6KXEY80HCbckQ3vEXlCjiHKKDCDiwCHgqbGHwJ90wWA4ToayvwkEWohf9FdpKFdWdRJZI88SyEvOdnEM0DxBXtRoKYw8l4cX7064nS81JcEJP09VsPdfLwxraMT9SLV3cKaaG5b+1VmA8ignKty50S0yqXGeE+P1EcWe48BG3Nc8H3KQo9hBxILoq52J60DA906r+EgUuFZKY0GPd3JeLSUJZrXJ89RV+jjfj2BIyaq28hzX32THSIoDCyyhq38dF3MGliLpNeA4om+1lvYS4ifJlT5nx4RIaXM2B4igSuFx8Y9RRJ2NcXFsX6K/bQjYnIF5VFXZlQu34IgE3w5bNkc2niqjjvREwZtpzNvhRPbEL1v1a5RJdQ8QVY65mtE0wLoeQmXtlj0cZcPOjaL7HSZiklv6M3dWn0X4LAo7VGDKdJdIoxyTOMNsZM8yQsrfx4EnIa8SDU6x4fN8X+paXiJ8MmV23h+g6lrsEpmBfvVSUsjZMlhUO2zdNs+LHNisYKSgN/PHiQIRBKlWoY5DZRBLEXM076pwiWyoeVa6QZIyK4NCYVFlgefdph8jdxYQ2bLyV9F6HV82syarXPN/4WJqm0uNblPrmn+Cj8J9AZd9TPFELuvSokPtH8GM4l4y8MLxHBx6qSsGjLzueJy0vSIyF4XRF1A/HyMcv+vOY+L3dykQzathSfcMUVSKHx3vPqi294NMLLvBLoki/vAZp7HcyNuwfvrQTNegSS+azogdKhU3xR0k9U0zSQ47cYOoeI3jYfX/fbaVv7xKv2fFyf3nt8/fvJ4G1O67aHvpCzhPVNFbO9Sn6c4Vs5XdKHv3l1JuQtcfb+YP03xDXbhpJ5gs7jd2Oa/15MRfSufwsxNcRbMZYo5F2kX9f86J+ALPM4hYkdry/udjek8RTL96L/yvLyytcG0P824lxC51l7fFr7JWwuIaYJWN8sDBsT/Ji2Z+47KRNGmc30U5j4MMnCyl9olsODHEEY2xHejsLRYUth5LTH3ga3UxHtx89URc1Sb13cDkYd1r2udu8HZ+55Dn2t36ziqQ5T4Vs2/VY242Kj1fXMFFEMNzypRubiZP6GiOPWoV1oXArr6ZK4xHAaqYVuqO63fpoOPNZXkntQ7RUNVUmtRk5zbOu0Jj0dYs2dDBWR+FQszmIz/Fx4P7zfVPiqwEhSjOxRFnzD/LcEhXnHhvnq99/Q5Z6iZLLd5cvTEFfoyM6+HI670HP/PvBbEGFpVqWY1yKuOrlo3Ure2XQJ4Z2Yvu0pGf+kuvdtI8ojKeHb7ELfAtY7F/JSZ2hnCRbctPWQV0Z6e1ntWakrh/i+wJbf0G2Tf5rI4S7uLdRsQlRm1DkSPDD+MPiWcbhCVGYIMTewyHLHWOr/naDV4SuAPomYSzHXRg+7zvtYDP95L0iU1r3YacY43BW0ioz7+rkmP4JjVZBCC0/Y1tqD9+bws3fNhiYbLKtronLiwVOikuYg9Oz5+BPTWsdB/z59oUkKR264GQquHX30akdLntWn5x5EwufZpNgNvJxD/OwGosoGnzUcVHCf8z4CkG+VeCsT9GDDvj9bKXjHuDQycTgSYLuLuGPZqEu+06CNM/HnF696q36s+7t+RNI9fWvE92dl9J3Z89c76T5MOmoeHrrJJwwsQWjX7jjrLboY6+1t4cmcDCALQT0ITRx1cyHemZw2cGoSXMdBLjxYUYlQeri9GqAmotckK2hBJg5RMhisEcX+BbXirbT9M8PezC++nGYuZJ7CY1RbQgl31RnMmU
Download .txt
gitextract_6ftzropk/

├── AIAIART_1.ipynb
├── AIAIART_2.ipynb
├── AIAIART_3.ipynb
├── AIAIART_4.ipynb
├── AIAIART_5.ipynb
├── AIAIART_6.ipynb
├── AIAIART_7.ipynb
├── AIAIART_8.ipynb
├── AIAIART_9.ipynb
├── LICENSE
├── intro.html
└── readme.md
Copy disabled (too large) Download .json
Condensed preview — 12 files, each showing path, character count, and a content snippet. Download the .json file for the full structured content (33,403K chars).
[
  {
    "path": "AIAIART_1.ipynb",
    "chars": 2624735,
    "preview": "{\n  \"nbformat\": 4,\n  \"nbformat_minor\": 0,\n  \"metadata\": {\n    \"colab\": {\n      \"name\": \"AIAIART #1.ipynb\",\n      \"proven"
  },
  {
    "path": "AIAIART_2.ipynb",
    "chars": 4406890,
    "preview": "{\n  \"nbformat\": 4,\n  \"nbformat_minor\": 0,\n  \"metadata\": {\n    \"colab\": {\n      \"name\": \"AIAIART #2.ipynb\",\n      \"proven"
  },
  {
    "path": "AIAIART_3.ipynb",
    "chars": 6899206,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"# AIAIART #3 - GANs and CLIP\"\n   ]\n"
  },
  {
    "path": "AIAIART_4.ipynb",
    "chars": 6921791,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"# AIAIART #4 - Going Further\\n\",\n  "
  },
  {
    "path": "AIAIART_5.ipynb",
    "chars": 4084637,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"# Welcome to AIAIART Part 2!\\n\",\n  "
  },
  {
    "path": "AIAIART_6.ipynb",
    "chars": 3473082,
    "preview": "{\n  \"nbformat\": 4,\n  \"nbformat_minor\": 0,\n  \"metadata\": {\n    \"colab\": {\n      \"name\": \"AIAIART #6.ipynb\",\n      \"proven"
  },
  {
    "path": "AIAIART_7.ipynb",
    "chars": 3190276,
    "preview": "{\n  \"nbformat\": 4,\n  \"nbformat_minor\": 0,\n  \"metadata\": {\n    \"colab\": {\n      \"name\": \"AIAIART #7.ipynb\",\n      \"proven"
  },
  {
    "path": "AIAIART_9.ipynb",
    "chars": 1699264,
    "preview": "{\n  \"nbformat\": 4,\n  \"nbformat_minor\": 0,\n  \"metadata\": {\n    \"colab\": {\n      \"name\": \"AIAIART #9.ipynb\",\n      \"proven"
  },
  {
    "path": "LICENSE",
    "chars": 1074,
    "preview": "MIT License\n\nCopyright (c) 2022 Jonathan Whitaker\n\nPermission is hereby granted, free of charge, to any person obtaining"
  },
  {
    "path": "intro.html",
    "chars": 117,
    "preview": "<!doctype html>\n<html>\n  <head>\n    <title>AIAIART</title>\n  </head>\n  <body>\n    <p>Test para</p>\n  </body>\n</html>\n"
  },
  {
    "path": "readme.md",
    "chars": 3035,
    "preview": "# AIAIART course\n\nNEWS: I'm working on a successor to this course called 'The Generative Landscape' which will be out mi"
  }
]

// ... and 1 more files (download for full content)

About this extraction

This page contains the full source code of the johnowhitaker/aiaiart GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 12 files (46.8 MB), approximately 8.3M tokens. 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!