{
  "cells": [
    {
      "cell_type": "markdown",
      "metadata": {},
      "source": [
        "# Kussmaul-Martensen quadrature (also often called \"Kress quadrature\")"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 1,
      "metadata": {
        "collapsed": false,
        "jupyter": {
          "outputs_hidden": false
        }
      },
      "outputs": [],
      "source": [
        "import numpy as np\n",
        "import matplotlib.pyplot as pt"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 2,
      "metadata": {
        "collapsed": false,
        "jupyter": {
          "outputs_hidden": false
        }
      },
      "outputs": [],
      "source": [
        "t = np.linspace(0, 2*np.pi, 300,endpoint=False)"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {},
      "source": [
        "## Setup"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {},
      "source": [
        "Let's make a curve and pick a target point:"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 3,
      "metadata": {
        "collapsed": false,
        "jupyter": {
          "outputs_hidden": false
        }
      },
      "outputs": [
        {
          "data": {
            "text/plain": [
              "[<matplotlib.lines.Line2D at 0x7fc89533d5a0>]"
            ]
          },
          "execution_count": 3,
          "metadata": {},
          "output_type": "execute_result"
        },
        {
          "data": {
            "image/png": "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\n",
            "text/plain": [
              "<Figure size 432x288 with 1 Axes>"
            ]
          },
          "metadata": {
            "needs_background": "light"
          },
          "output_type": "display_data"
        }
      ],
      "source": [
        "uncircleness = 1\n",
        "\n",
        "path = np.array([\n",
        "    np.cos(t) + uncircleness*0.2*np.sin(3*t),\n",
        "    np.sin(t) + uncircleness*0.1*np.sin(3*t)\n",
        "    ])\n",
        "\n",
        "tgt_index = len(t)//2\n",
        "tgt_t = t[tgt_index]\n",
        "tgt = path[:, tgt_index]\n",
        "\n",
        "pt.gca().set_aspect(\"equal\")\n",
        "pt.plot(path[0], path[1])\n",
        "pt.plot(tgt[0], tgt[1], \"o\")"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {},
      "source": [
        "Get some derivatives of the curve:"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 4,
      "metadata": {
        "collapsed": false,
        "jupyter": {
          "outputs_hidden": false
        }
      },
      "outputs": [
        {
          "data": {
            "text/plain": [
              "[<matplotlib.lines.Line2D at 0x7fc87f19e1d0>]"
            ]
          },
          "execution_count": 4,
          "metadata": {},
          "output_type": "execute_result"
        },
        {
          "data": {
            "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXQAAAD4CAYAAAD8Zh1EAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/YYfK9AAAACXBIWXMAAAsTAAALEwEAmpwYAAA7NklEQVR4nO2deXxkV3Xnf7d21apSVWlXa++W1N3qtqxubGy3Fwa8ERyCPwHDAMmQeDzALFkIMGQyIZnMwsxk8iEhbIEkENYYAg6xAYON2za2u9WburXvu0pVkmqVqkpVdeePek+tVkutUum9etv9fj76WF31VO88v/t+dc65555LKKVgMBgMhvLRSW0Ag8FgMISBCTqDwWCoBCboDAaDoRKYoDMYDIZKYILOYDAYKsEg1Ym9Xi9taGiQ6vQMBoOhSC5cuBCklPp2ek8yQW9oaEBPT49Up2cwGAxFQgiZ2u09lnJhMBgMlcAEncFgMFQCE3QGg8FQCUzQGQwGQyUwQWcwGAyVwASdwWAwVAITdAaDwVAJktWhM25kdCmKnw0sodFrw9s6KkAIkdokhoqglOKFwSWMB+K4s9mDYzUuqU1iiAATdBnwnfPT+OT3ryLLtaZ/5Hgl/uLdt8FkYAEU4+BkshQf/eZFPHdtEQCg1xH86WPH8N43HZLYMobQMMWQmJ7JFXzqn67hrhYvXv/kW/CJh9vw7NVFfO7FUalNY6iE//f8MJ67toiPPXgE5/7zW3B3ixd/+IOruDITkto0hsAwQZeQbJbi0//cj3KHGZ97XxcqXRY8dW8z3nlbDT734ijGAjGpTWQonKnlOL54dgzv6qrFR+5vQbnTgs8+cRsqnBZ8/Hu9yGbZjmVqggm6hDx3bRFX58L4/QePwGkxbr7+h4+2w6An+OJLYxJax1AD/+/5YRh0Onz8oSObr7lKjPjEw20YXIzi54NLElrHEBom6BLy97+cRL3Hil89WXPD6x67Ge/ursM/XZqDP5KQyDqG0glEk/hR7wLe+6ZDKHdabnjv0eNVqHWX4AvMaVAVTNAlYtgfxbnJFbzvTYeg091c0fIbdzViI0Pxw8tzEljHUAPf7ZlBOkt3nPw06HX4wJ31uDC1inGW2lMNTNAl4nsXZmHUEzx+e92O7zd6bThZV4rvX2SCztg/lFJ878Is7mgqQ7PPvuMxj52sgY4AP7jExphaYIIuAZRSPHttAXe1eFFmM+163K911WBwMYqhxWgRrWOogSF/FOPBOH7lRPWux1Q4LbirxYsfXJ4HpWxyVA0wQZeAvvkIZlbW8cixqlse9+DRSgDAzwb8xTCLoSKe7V2AjgBv66i85XEPHavE9MoaRpdY2kUNMEGXgJ/2LUJHgLd2VNzyuAqnBcdrXHiRVSIw9slP+/041VAGn8N8y+MeaCsHALzAxpgqYIIuAS8NB3DbITfct0i38DzQVo6L06tYiaeKYBlDDSyGExhcjOJ+TqxvRZWrBB1VTla+qBKYoBeZlXgKvXNhnGndcY/Xm7jviA9ZCvxyLCiyZdqEUopfjgXxw8tzWIqqo0T07EgAAPY1xi5OrSKeTItplmZZT2XwzJV5vDDoRzKdEfVcrJdLkXllNAhKgTOHvXkdf7zGBbvZgNfHl/H2zt0nuBj7J7GRwZNfv4CzwzkBdFgM+Nx7u3DmcH5CKFdeHgnC5zCjvcqR1/F3Nnvw178YQ8/UKu5V+LXLjRF/FO/9mzcQiCYB5J7nL3+gG5Uuyx5/WRjMQy8yr40F4bAY0FlbmtfxBr0OpxrceG1sWVzDNMjHv9eLs8MB/Je3d+CHH7kLNaUleOofLmAyGJfatIKhlOK1sSDuavbk3bHz9no3jHrCxpjAhNc28P6vnAOlwDd/60347BO3YTwQw4e/cQHpTFaUczJBLzJvTKzgVEMZ9DssJtqNO5o8GAvEVZMSkANnhwP44eV5/M6/OowP3d2IE3Wl+NvfPAWDjuBjT19RbBnfeDCOYCyFO5o8ef+N1WTAidpSvD7OBF1I/s9Ph7AUTeBvf+MU3tzixTtOVOO//9pxXJwO4a9/Ic4KXUUKeiotzreb2ASiSYwH4nhTY9m+/o5/OM9PrIphluaglOK/PzuABo8VT93XtPl6lasEf/BQG85PruLlEWXOWZybWAEAnC5gjF2dC2M9JW6OVytMBuP4xhtT+MCdDThee733/GMna/BvzzThrpb8v3D3g+IE/cfXFnHqz36myB4n5ycLe9jaq5wwG3S4NM0EXQheHV3G4GIUH76/BWaD/ob3fr27DtUuC/7yhRGJrDsY5yZW4LWb0ei17evvuupLkclS9M6GxDFMY/ztqxPQ6wg+fH/zTe998pF23F6/Pw3IF8UJ+pFKB8LrG3j6wqzUpuybnslVWIy6fe8WYzLocLzGhYtM0AXh7345Aa/dhHfssIrSZNDhN+9qxPnJVYz4lbdCt2dqBacb3fve8epknRsAcHE6JIJV2iKa2MA/XpjFr5yoRrlDnMnP3dhT0AkhdYSQFwkh/YSQPkLIf9zhGEII+SwhZJQQ0ksI6RLH3FyPkzc1luEfe2YUl+e8MhvCsWoXjPr9f4921btxbS4ietmT2lmOJfHiUADvur0WFqN+x2Pe2VUDg47gO+dnimzdwViOJTGzso6TdaX7/tsymwmNXhtzGgTgJ31+rKUyeJ8EO0LloyxpAL9HKe0AcAeAjxBCOrYd8zCAVu7nSQCfF9TKbfx6dx0ml9cUNfg2MllcmwvnXd2yna5DpUhlsuibjwhrmMZ49toiMll6U8virXjtZrylvRw/uDyHjII2gOidDQNAwWPstkOluDS9qjhHSW48c2Uete4SdB1yF/3cewo6pXSBUnqR+z0KYADA9qfhMQBfozleB1BKCLl1o5ID8LajFTDpdfgxt0eiEhj2R5FMZ3GirrDNeY9zD2nfXFhAq7THP1+Zx+EKO9oqb12j/fbOagRjKVyYUo7TcGU2BB3J1ToXQmeNC8FYCv5IUmDLtMNyLIlXR4N4x4lqSTZ631fsTwhpAHAbgDe2vVUDYGt8OoubRV8wHBYj7mrx4Md9i4rxJnjv6USB3lO1y4JSqxH9C8xDL5TVeAo9kyt46Gjlng/b/W3lMBmU5TT0zobRUm6HzVzYesGj3BdB/wJzGgrlF0MBZLIUD+/ReE8s8hZ0QogdwPcA/CdKaUGqQgh5khDSQwjpCQQChXzEJg8dq8TMyjoGFpQxcXVlJgRXiRH1HmtBf08IwdFqJ0u5HICzIwFkKfLqcWI3G3Cm1YufKMRpoJTiykyoYIcByFVTAUDfHBtjhfLC0BLKHWYcrXZKcv68BJ0QYkROzL9BKf3+DofMAdi6U0Mt99oNUEq/RCntppR2+3wHW2J835HcQ/nS8MG+GIrFldkwOmtdBwrDOqqcGFyMYkOkVWZq5+cDS/DYTHmL3n1HyjEXWsdYQP4rR+dC61iOp9BZwIQoj91sQIPHypyGAtnIZHF2KID7j5TvuAtZMcinyoUA+AqAAUrpn+9y2DMAPsBVu9wBIEwpXRDQzpuocFrQVunY7MMhZ9ZTGQz7owVVH2zlaLULqXQWY2zLsH1DKcWro0Hc0+rN+2Hj+5ooYYxdmcmlSU4ewEMHcmOsj6VcCqJ3NoxoMo17j0jXDycfD/0uAO8H8AAh5DL38wgh5ClCyFPcMc8CGAcwCuDLAD4sjrk3cuawDz1TK7LvEtc3H0YmSwuuPuDhwzgWEu+fsUAcy/H9LYmvK7Oi0Wvb7F4oZ3pnQzDpdTiyx2TvXnRUOzGzso7w+oZAlmmHQlfpCkk+VS6vUEoJpbSTUnqS+3mWUvoFSukXuGMopfQjlNJmSulxSmmP+KYD97R6sZGhmysw5cqVzQnRwqoPeJp8dliMOhYSFwA/Rk7t82G7p9WLN8ZXZJ/mujIbQnu1EybDwdYK8k5DPxtj++b85AqafTZ47bfeVERMFLdSdCtdh9zQ64jsS8v65sIod5hR7jzYqjG9jqCt0smqEAogtyTehKZ9Lok/3ViG9Y0MBmRcXUQpRd98BMdrDj4Rd7Sar3SR7/XKkUw251hK6Z0DChd0m9mAo9VO2Xvo/QsRdAg063202on++YgiKi/kxDmuy+V+J6W7uZ4b5yfl6zTMrq4jmkijo+pgESAA+BxmlDvM6JtnTsN+GFqMIppIM0E/KN31Zbg8E5JtB0Z+ErOtUhhB76h2IpJIY3Z1XZDP0wJzoXXMhdYLetgqXRbUlZWgR8ZOw+BirnS3Lc8NLfaig3MaGPmzmdJrYIJ+ILob3EhsZGXrUYwFYtjI0Lx3j9kLPiRmefT8OT9xsIetu74M5yfluyR+YCECQoAjFUKNMSdGlmKydZLkyLmJFdSUlqDWXdg6E6FQvqDX5/ol9Mg0JOZzrx1VwnjoreV2AMDokjIWVMmBc5MrcJgNmwtn9kt3gxvBWBJTy2sCWyYMAwsR1JdZC14hup3DFQ5kshQTCt65qZhQSnFucgWnGorfu2U7ihf0cqcF9R6rbPPog4tRmAy6ffen3g2b2YCa0hKMLLFa9Hw5P7GC2xvc+9olaiu8Z98j08n3wcVowV9WO9FanvP0R5jTkBdTy2sIRJP7rqASA8ULOpALiXum5BkSDyxEcLjCDkMBLXN3o7XCjhE/E/R8iCfTGA3EDrSoq8Vnh6vEKMs8+loqjcnluGBzNADQ5LNBR8DGWJ70cg3zDrpwUAhUIeinGtxYiadkuUR7YCGKdgEfNiCXdhkLxBTV2lUqBhYioBQ4Vl14BYhOR9Bd78Y5GQr60GIUlEKwORoAsBj1OFRmxSiLAvOiby4Mk163GdlIiSoEvYvLo1+ZCUlryDYC0SSCsSTaBAyHgVxInExnMbsqz5yunLjKeU/HD7ioq6vejfFAXHYrKPnmdEKmXACgpdzBUi55cnUujLYqx4EXdQmB9BYIQLPPjhKjfvPhlQv8hKiQ3hMAtFTkJkaHWUi8J1fnwvA5zKg44KIufttAufWjH1iIwGE2oNZdIujntlbYMRGMy36FrNRQSnFtLrzvbSXFQhWCrtflWsvKTdAHFzlBFyHlArBJq3zom4vgmACLuvhNI+Q4xtqqHIJvpnC4wo6NDMXUsvzSmHJiZmUdkUT6QCk9IVGFoAO5kLp/PoK0jDyKwcUoKpxmuG0mQT/XYTGiymXBKPPQb8l6KoORpWjBO/hspcxmQq27ZHMCTA5QSjG4GD1wQ66d2Kx0YWPslmym9JiHLizHa1xY38jIamJ0xB/DYYEWe2ynpdzOShf3YGAxgiyFYOHw8RoXrslI0P2RJKKJtChjrNlnByFgY2wPrs2HYdQTHK60S20KABUJeic36dU7G5LWEI5slmJ0KSbazHdruQOjSzFkWaXLrvDiK5ig17owtbyG8Jo8JkaH/bmUmxhjrMSkR627ZPMcjJ25NhfG4QoHzAa91KYAUJGgN3rtsJn0svGg5kLrWN/IoLVCnG/uwxV2rG9kMBdiPV124+psGB6bCVWug02I8sgtj857z6KNMc5pYOwMpRRX58KySbcAKhL03MSoSzY5Tt6zOSzSw9a6WenCPKjduDYfwbGag237txXZCbo/ijKbSbT+2y0VdowH4rKal5ITc6F1hNY2ZFPhAqhI0AF5TYzy3lOLSCmXJm9O0Fm/jZ3ZyGQxuiTskvhSqwl1ZSW4OhcS7DMPwshSbLPiSQyavXakMlkWBe6CWGsADoKqBL2z1oVkOiuLiZxhf67CxVViFOXz3TYTSq1GJui7kKuhpmgTuAKks6ZUFh46pRTD/qho6RYAaPTl+g+xMbYzfHQsRpVRoahK0OXUWnZ0SbwKF55Gr409bLswtCjOw3a0httzU+KJ0aWoeBUuPHxDOTbGdmZoMYpadwnsAnW5FAJVCXqj1wazQSf5dmHZLMWIP4YWEcNhAGj0MEHfjaHFKPQ6giafMF0uefjwemBR2jHGe4dijjGPzQSH2cDG2C4MLUYF60EvFKoSdL2O4EilY3OFplTwFS7F8NAXwgmspzKinkeJDPmjaPLaBC8n41f9DkrsNPALfsQcY4QQNPqY07AT/E5kckq3ACoTdCD3wA0sRCVtpcsvyRdzwgq4nuOcZMuzb2JoMYrDIjxsFU4z3Fbj5oSYVIwsReG2GuEReBXydlhab2cmgnGks5QJuti0VzmwEk9hKZqUzAbeexK7nWaDh+U4d2Itlcb0ypoo4TAhBO1VTslTLiP+GForhO/hsp0Gjw1zoXUkNlgUuJWhzbJkJuiiwreqlTKPPuyPodxhhssqToULD5u02hn+C1Us76m9yomhxahk/eg3K1xEjgCB3GYXlAIzK6xV81aGF6Mw6AiaffJY8s+jOkHnc5xShsQjS9GifHPbzAZUOM1M0LexWeEi0j1oq8z1o5fq//tSNImIyBUuPLzTMM7G2A0MLkbR6LXJogf6VuRljQC4rEbUlJZI5qHzPVzErnDhafDYMMkethsY8kdhMepQVybODuztEkeB11N64o+xBk7Q2Ri7kWG/OHM0B0V1gg7kPCipKl3mQutYS4lf4cLTxKoQbmJoMRchFbop9F60Vtih1xHJxthmU64ijDGnxQiv3cTG2BbiydwcTZvM8ueASgW9vcqJsUBckomcUZEbJm2nwWPDcjwlu63RpGTIHxV1Qtps0KPZZ5MsrTeyFEOpNSe0xaDBY2Mply1cb4rGBL0otFc5keFSH8XmekvT4gh6IwuJbyCS2EAgmhQ95dVe5ZQw5RLF4XLxK1x4Gr0srbeVsc0+TfKaEAVUKuht3B6eUjxwI0sx+BxmlFqL4z01sX4bNzDObXAi9ArR7bRXObEQTiC0lhL1PNuhlGJkKba5r2wxaPTZsBRNIpZMF+2ccmY8GINeR3BIpDmag6BKQW/w2GAx6iQJiUf8UdFa5u5EXZkVOsKqEHjGAznvqbkIgg4Uv5oqEE0ivL6Bw0X0Dhs9LArcynggjkNlVtlVuAAqFfRcC4Dih8S89yT2gqKtmA161LhL2MPGMR6Ic96TyIJeKU0UKEX+lnVdvJHxQBxNXnHHV6GoUtCB3AM3uBgpagsAvsKlWBOiPI1eO3vYOMaDMdS5S0T3nnwOMzw2U9ErXa5XuBRvjLEVydfJZCkmluOip/QKRb2CXuXE6toG/JHitQAo1pL/7TR6rJgIxiXtXyMXxgNxNBVh9d5mC4Aip1yG/TG4SozwibRL0U5YjHpUuyxM0AHMh9aRSmeLMsYKQdWCDhQ3JC5WU67tNHptiCXTCMaKO0EnN7JZiolg8cLh9ioHhvzRou6QNbqUm6MpVoULD+u6mGOMm6NhKZciw/fxKGYTpWF/DF67GW6RO+Btp9HHtqMDcimvZBG9p7ZKJ1LpbNG6XeZ6uMRE29bwVjR6bRgPxDQfBV6vomIeelFxlfAtAIoXEo/4ozhSWfwb3biZ45R+6z0p4St9ipXf5KPA/iKNMb7C5UiR52iAXB49kkhjVeKdmqRmPBiDw2Io2qKu/aJaQQdyIXGxUi7ZbPErXHiqSy0w6gkml7XdEY8vWSyWoDeX22DQkaKNseEibGqxG5sL2DTee5+foyl2yitf9hR0QshXCSFLhJBru7x/HyEkTAi5zP38kfBmFkZ7lRPjgVhRWgAUu4fLVgx6HercVkyxhw0Os6FoE4Zmgx4t5fai7V40VMQeLtup56JANsbiaJZp/hzIz0P/OwAP7XHMy5TSk9zPnxzcLGFor3IiS69Xn4jJ9R3Apcmt1XusmAxq20OfCObKyYrpPRWz0mXEH0WZzSRJuF9XVgJCoOkxFk+msRhJyLZkEchD0CmlZwGsFMEWwWkr4sTo0OamvdI07Kn32DC1rO3SxfFArOiTVW2VDixGEliNi19hNMRtaiFFuG826FHtKtG0hz4RlPeEKCBcDv1OQsgVQshzhJCjux1ECHmSENJDCOkJBAICnXp36j02lBj1RclxjvhjqHJZ4CoRd5ei3WjwWBFPZTRburiWSmM+nCh6OdlmeazITgOlFKN+aTclbvBaNT1PU+xJ90IQQtAvAqinlJ4A8JcAfrDbgZTSL1FKuyml3T6fT4BT35pcC4DiTIwO+6OSttOs92o7xymV91Ssni4L4QSiybS0Y4yLArXKeCAGQq6vnJUjBxZ0SmmEUhrjfn8WgJEQ4j2wZQLRXuXA4GJU1FQE36pXinIyHn6QadWDKlaXxe34HGZ47SbRJ0b5lJ5Y2+rlQ4PHitW1DYQ1Wro4HoijprQEFqNealN25cCCTgipJFxSjxBymvvM5YN+rlC0VzkRWtvAYiQh2jmmV9aQTGcl9Z5q3SXQ64hmPajxQByEXC+vKybtVU7RUy4jm7vMS+80TK1odIwFiz9Hs1/yKVv8FoDXABwhhMwSQj5ECHmKEPIUd8jjAK4RQq4A+CyA91AZzcy1cZtGD4oYEou9KXE+GPU61LpLNLtadDwYQ7VLGu+prdKBYX9M1BYAQ4sxlBexz/5ObO4vqsEokFKKCRl3WeQx7HUApfSJPd7/KwB/JZhFAsNvdtG/EMH9beWinGNks8JF2m/vXI5Tew8bwC/4kOZha6/KtQCYCMZFi9JGlqKSrHHYCr+hw5QGnQZ/JIl4KiN6n/2DouqVokBuk9tad4moE6ND/ihq3SWwmff8fhSVBo8VkxosXaSUYjwQQ7NE4fD1FgDijLFslmLEHyt6W+btWIx6VLksmNBgWu/6KmSFp1zUQFulE4OL4qVcRvwxSdMtPPUeG6Ia7LexFM15T1J56M0+O4x6ItoYm11dx/pGRiZjzKrJKHBMASWLgEYEvaPKIVoLgI1MFuPBmCx2AG/w5EJirfXbuN7SVBrvyWTQodlnFy0KHJZwyf92GjRaujgeiMFq0qPSaZHalFuiCUFvE7EFwGQwjo0MlWzJ/1a02m9DqpLFrbRXOUWbeB+SQYULT73HhmAshWhCW1HgeCCORm9x20oUgiYEXczNLoYl2qVoJ7Tab2M8EEeJUVrvqb1KvBYAI/4oql0WOCzSrELeCh8Fai3tooSSRUAjgl5fZkWJUS/KpNWQPwodkb7CBdBuv43xYAyNXht0Oum8JzGdhiF/DIclXPK/letRoHYEPbGRwezquuxLFgGNCLqOawEgxoa+I/4o6j022awe02K/DSlLFnn49Q4DAk+MpjNZjAVikpcs8tRrcJ5mankNlMp/QhTQiKAD19ucCl3S178QQXuVPB42IDdppaWHLZnOYHZ1TfJwONcCwCy4hz4ejCOVzspmjNnMBpQ7zJqKAvmSRanKYveDZgS9o8qB8LqwLQCiiQ1MLa+hgwu35UCDx4bQ2gZCa9rouji1vIYshSwWfOT6Bgkr6H3zYQBAR5VL0M89CDmnQTtRIN9lUYq2EvtFM4LeJkKOk++wd7RaPg9bvcYmrcYlLlncSnuVU/AWAP3zEa4sUj5ikqtF146HPhaIodJpkXzhYD5oR9C5SaW+OeEEvZ/3nqpl5KFrbO/HMa5ksVEGgtfBtQAYDQhXHts3H0FbpQMGvXwe1QavDf5IEmuptNSmFAU5zNHki3xGicg4LEY0+WzonQsL9pl98xF47SaUO4qzh2U+bPbb0IyHHkeF0wy7DLyn47W5SK13VpgxRilF/0IER2XkMADaigL5thJM0GVIZ40LvbMhwT4vNyHqlNViA77fhlY89PFgTBbpFgBo9NjgMBsEG2Pz4QRCaxuymqMBtrTR1cAYW46nEEmkZTPG9kJbgl5bCn8kCb8AE6OpdBbD/qis8uc8Wum3kfOe5BMO63QEx2pcuCqQh94/n0sPdshsjB3aLF1U/xiTwyrk/aAxQc89GEI8cKNLMWxkqKzy5zxa6bexEk8hvL4hecniVjprXRhYiCKVPvjEaN98GIRcn/+RC06LER6bSRNjTEkli4DGBL2j2gkdgSAhMV9OJrf8JqCdfhty3LT3eK0LqUx2c9OTg9A/H0Gj1ybL6op6j1UTLSbGg3GYDDpUl5ZIbUpeaErQrSYDDlc4BJkY7V+IoMSol+WGsY1ebUxabXpPMspvnqgtBQD0zoUO/Fl98xHZ5c95GrzaiALHAzE0emzQS9hWYj9oStAB4HiNC72z4QOvGO2bi6CtyiHLG13v0Ubp4ngg5z3VuOXjPdW6S1BqNaJ35mBOw2o8hbnQuixTekAurTcfTojSklpOyGmOJh80J+idtS6scA9LoWxksuidC+G2OreAlgmHVsrKxgJxNHissvpSJYTknIYDRoGXZlYBQPZjbGZFvWNsI5PF9MoaE3Q508mFxAeZGB1YiCCxkUVXfakwRgmM1ZTrtzGp8r0f+S6LcuNEbSmG/dEDea8Xp0LQ6whO1MmrwoWnwaP+DaOnV9aQzlI0yiiltxeaE/S2KgdMBh0uTK0W/BkXub/tOiRP7wngK13U+7BtZLKYXpa+KddOnKgrRSZLcWUmVPBnXJpZRVulA1aT/CZEAW3UoiutZBHQoKCbDXqcrC3F+cmVgj/j4nQIlU6LrGe+67kNo9XK7Oo60lkqyx7V3fW5L/pCx1gmS3F5OiRrh8FlNaLUasSEiqPAiaD8Jt33QnOCDgCnG8twbT6CeLKwXhQXp1dlm27hafDasBRVb78NOe/C7raZcKTCgTcmChP0YX8U8VRG9mOsXuVR4HggDo/NBJdV+p2i8kWzgp7JUlyc3n/aZSmawOzquqy9J0D9E6N8OCynLoRbOd1YhotTqwV1XuTHpdzHWIPKo0ClVbgAGhX0rno39DqCcwV4UBenQgCA22T/sKk7xzkejKHMZkKp1SS1KTtyurEM8VSmoG0PL06F4LGZNhutyZV6jw3zoXUk0+osXZRTn6B80aSg280GHKt2FhQSX5pehVFPZLlCdCv1Ku+3MRaIyzJ/znO6sQwACnIaLk2v4rZDpbJq+rYTDR4rsjQ3n6E2wusbCMZSzENXCqcaynB5JrRv7+LC1CqOVrtks4fobjgsRnjtJtWWLso9HK5wWlDvse7baViJpzAejMs+AgSu995XYxQo5zmaW6FZQT/dWIZUOruv3tXxZBqXZ0K4s9kjomXCUa/S/UUjiQ0EY0nZP2ynG8rQM7mCbDb/VcmvjS0DgCLG2GYtugp7uiixZBHQsKCfasiFxPwDlA/nJlaQzlLc3eIVyyxBUWsb3c2HTcYpFyDnNKyubWDIn3+jrldGg3CYDeiskeeCoq24rUY4LAZ1eujBGAw6Ivt5jO1oVtDdNhM6a114aTiQ99+8MhqE2aDD7fXyD4eBnAe1oMJ+G0oJh+9p9QHAvsbYq6NB3NHskdWWc7tBCFHthtHjgTgOlVlhVMB92IqyrBWY+46U49L0KlbjqbyOPzscwKmGMtnnz3n4idFplfXbGA/EoVeA91TpsqC9yokXB5fyOn4yGMf0yppiIkBAvRtGy32OZjc0LegPtJUjS4GzI3t7UJPBOEaWYnigrbwIlgnD9Rynuh648WAMh8qsMBnkP3wfaPOhZ2oV4fW9e9M/3+/n/kZZY2x2dR0bBdTby5VMlmJiOS77CHAn5P9EiEhnjQteuxk/vra457H8w/bWjgqxzRKM67Xo6vPQ5Z4/53mgrQKZLMXPB/x7Hvt8vx9tlQ7UyTzy2Eq9x4p0lmJORaWL86F1pNJZxYyxrWha0HU6gkePV+KFwSXE9mgD8NP+RcU9bHy/DTVVumSzFBNB5YTDt9WVoqa0BD/qXbjlccFYEj1TK3ibghwG4HrpoprG2JhC5mh2QtOCDgBvP1GNZDqL5/t399Knl9dwfnIVb++sKqJlwqC2fhtzoXUk01nFPGw6HcGjnVU4OxxAaG33uZpnLs8jS4FHO6uLaN3BUWOLCaWWLAJM0HH7ITdq3SX49rmZXY/53sVZEAL8WldtES0ThkaPVVUd8XjvqaVcGYIOAL96sgbpLMXTF2Z3PebpC7PorHXhiMw2hN4Ln90Mm0mvOg+91JrbCFtpaF7QdTqC999RjzcmVjCwQ9+NZDqD7/bM4O4Wr6zb5e5GvceG+bB6+m2MLilrF3Ygtzl5d70bX399asdFRhemVtG/EMHjtyvPYSCEqC4KHF2Kodlnl33rhZ3QvKADwLtP1cFi1OHzvxi76b3vX5zDQjiB376nSQLLDk6D1wpKgZkVdUxajQXicFuNKFOY9/TBNzdgankNz167OZf+uRdH4bYa8S4FRoBAboypy0OPy7aL517sKeiEkK8SQpYIIdd2eZ8QQj5LCBklhPQSQrqEN1NcSq0mfOjuRjxzZf6Glrrh9Q189ucjOFHrwj2tyqkN3kq9yroujgViikq38DxyvAptlQ78z+cGb1jo9cvRIF4YXMK/uasRNrM8dyfai3qPDTMra8jso8WBXAmv5dpKKHGMAfl56H8H4KFbvP8wgFbu50kAnz+4WcXn393XggqnGf/+m5fgjySQTGfw8ad7sRRN4tOPHVNk+AWob+/HMS4cVhp6HcEfvb0Ds6vr+IOne5HOZDGzsobf+8craPLa8FsKjQCBXNfFjQzF/AE2XpcLowHlpfS2sqdLQCk9SwhpuMUhjwH4GqWUAnidEFJKCKmilN66Tktm2M0GfPkD3Xj3F1/HW/7vS3BaDJgPJ/CpR9pxsq5UavMKRk39NlbjKSzHU4p92N7c4sXHH2rD//rxIHomVxBJpEEI8KX3d6PEpIzVxztRv2W9g5LKendiTO2Cngc1ALaWiMxyr90k6ISQJ5Hz4nHo0CEBTi0snbWleOajd+HzvxjDWiqDTz9Wq6iFRDuhpn4b4/wej+XKzG8CwFP3NqHJZ8N3z8+gzGbCR+5v2azlVirXo8A47lZoapJnLBCDSa9DrVt5BRCAMIKeN5TSLwH4EgB0d3fLMuHWWuHAn7/7pNRmCEq9x4qrc/m3CZYrY0u5KKPFp6zSvq0QQvDg0Uo8eLRSalMEo9xhhsWoU0WLibGlOBq9NkU0R9sJIayeA1C35d+13GsMmaCWfhujgRhMBh1qFOo9qRWdjqC+TB1R4FggpugIUAhBfwbAB7hqlzsAhJWWP1c79R4rMlmq+K3CxpZiaPLaoNcpc4Jazaih62IyncH0yppi8+dAfmWL3wLwGoAjhJBZQsiHCCFPEUKe4g55FsA4gFEAXwbwYdGsZRREo0r6bYwFlFnhogUavTZMrazta3cmuTG9nCu9VPIYy6fK5Yk93qcAPiKYRQzB2axCCMaBIxIbUyC89/SOkzVSm8LYgXqPDal0FouRhCJXVAPKbCuxHWVm/hn7wms3cf02lJvjnAyuIUuh2BV8aqeBa9Kl5CiQbyvRqOCqIyboGuB6vw3lPmxKrw9WO/Ve5ffeHwvEUe2yKHbFLsAEXTM0eJW9YfTYEt+jWrnek5qpclpgMugU7aHnKlyU7TAwQdcI9R4bZlbXkFZo6eJoIIaa0hJYTcr1ntSMjtvjdSqoTKeBUqrYthJbYYKuEfh+GwvhhNSmFIQavCe10+BRbtfFxUgC8VRG8WOMCbpGqPcot3Qxm6UYW1JuS1OtwPdFzxW+KQt+FbLSxxgTdI2w2W9DgcuzFyIJrG9kFB8Oq50GjxXrGxksRZNSm7JvRpeiAIAWhY8xJugaocJpRolRjwkF5jiH/bmH7XCFcnu4aAG+yZgStzwcXorBVWKEz2GW2pQDwQRdIxBC0OSzbfZ7VhIjm4KubO9J7fARFF/PrSRG/FEcrlDmtnNbYYKuIVrK7Zvlf0piaDGGcocZpVZlbTunNapcFthMesUJOqUUQ4tRVUSATNA1RIvPjrnQOuLJtNSm7IthfxRHKpX/sKkdQgiay+2bi8CUgj+SRCSRVsUYY4KuIfgeFeMB5eQ4s1mKkaUoWsuV/7BpgRafXXEeOj9Ho4YxxgRdQ/CCPhqISmxJ/sysriGxkcWRSpY/VwLN5XYshBOIJjakNiVvhlU0R8MEXUPUe3K9xJXkQQ37c7a2qiC/qQV4p2FMQVHgsD8Kr90Ej13ZFS4AE3RNYTLo0OCxKkzQ+XBY+d6TFtiMAhU0xob8MVVMiAJM0DVHS7mycpzD/ihqSkvgsBilNoWRB/VlVhj1yokCs1mKUb86KlwAJuiao6XcjqnlNcXsL5orJ2PeuVIw6HVo8NgUI+hzoXXEUxkm6Axl0lJuRzpLFdEbPZ3JYjwQx2EVlJNpiRYFlS7yKT21TLozQdcYLb6cOI745f/ATS7HkcpkcVgF5WRaIhcFxpFMZ6Q2ZU+GOEFvUckYY4KuMZrLc/02lBAS9y/kHrb2KqfEljD2Q0u5HVmqjJ4uAwu5ORpXiTrmaJigawyryYBadwmGlSDo8xEY9UTRm/ZqEX6BzrACosD++TA6qtXjMDBB1yBtlQ4MLUakNmNPBhYiaCl3wGRgw1RJNJfn1jvIfYytpzKYCMZVFQGyJ0WDHKl0YDwg/xxn/0IEHSp62LSC2aBHk9eGoUV5r0ge8keRpVDVGGOCrkHaKp1Ic7sAyZWlaAKBaFJV4bCWaKtyYmBB3oLeP5+LII6qaIwxQdcgbVwZ4JBfviExLwZq8p60RFulA3OhdURk3NOlfyEMhzk3p6QWmKBrkAavDSa9DoMy9qAGFnJfNkzQlQnvNAzLOO0ysBBFe5VT8ZtabIUJugYx6nVoKbdjUMYPW/98JFdOZlVHOZnW4HuLy3WMZbMUAwsR1aX0mKBrlLZKBwZlXIXQvxBRVfWB1qgpLYHDbJDtGJtaWcNaKqO6CJAJukY5UumAP5LEajwltSk3kdjIYDwQU533pCUIIThS6ZBtpQs/Iaq2McYEXaO0cZ6JHEPigYUIV06mjuXYWuVIpQODi1FQSqU25Sb65sPQ69S3aI0JukbZrHSRYUjcOxsGAByvLZXWEMaBaKtyIppIYz6ckNqUm+idDeNIhQMWo15qUwSFCbpGKXeY4bYaZVkrfGU2BK/djGqXRWpTGAegnXMaBubl5TRQStE7G8KJulKpTREcJugahRCCo9UuXJsPS23KTfTOhnGi1qWqcjItkisJhOzG2OTyGiKJNE7UuqQ2RXCYoGuYYzUuDPujsmoBEE1sYCwQQydLtygem9mAJq8N1+bkJei9syEAUOUYY4KuYTprXdjIUFlVIlydC4NS4ESd+rwnLXK8xoWrMhP0yzMhWIw6Ve6ExQRdwxyvyYkmPwkpB3hb1Og9aZHjtaXwR5JYishnYrR3Noxj1S4Y9OqTP/VdESNvat0lKLUaZRUS986GUFdWgjKbSWpTGALAOw1y8dLTmSz65sOqdRjyEnRCyEOEkCFCyCgh5BM7vP8bhJAAIeQy9/NbwpvKEBpCiOxC4isz6n3YtMjR6tzEqFzG2LA/hsRGVrUpvT0FnRCiB/A5AA8D6ADwBCGkY4dDv0MpPcn9/I3AdjJE4liNC0OLUSQ2pJ8YDcaSmAut4yQTdNVgMxvQ7LPjqkzSele4CdETKh1j+XjopwGMUkrHKaUpAN8G8Ji4ZjGKRWeNC+msPCZGL02HAECV9cFaRk5R4KXpVZRajaj3WKU2RRTyEfQaADNb/j3LvbaddxFCegkhTxNC6gSxjiE6x2SU4zw/uQKTXodOFdYHa5ljNS4sReUxMXp+chXd9W7VrnEQalL0nwE0UEo7ATwP4O93OogQ8iQhpIcQ0hMIBAQ6NeMg1LpL4LYaZRESn5tYQWetS3XLsbUO/wUtdTXVUjSBiWAcpxrKJLVDTPIR9DkAWz3uWu61TSily5TSJPfPvwFw+04fRCn9EqW0m1La7fP5CrGXITCEEJysK8XF6VVJ7VhPZXBtLoxTjep92LTKsWoXDDoi+Ri7MJk7v5rHWD6Cfh5AKyGkkRBiAvAeAM9sPYAQUrXln+8AMCCciQyx6W4ow8hSDKE16VrpXppZRTpLcVrF3pNWKTHpcbTGhZ5JaQX93OQKLEYdjlWrN6W3p6BTStMAPgrgJ8gJ9XcppX2EkD8hhLyDO+w/EEL6CCFXAPwHAL8hlsEM4emudwMALkxJ98Cdn1gFIUAXZwtDXXTXu3FlNoRUOiuZDecnV3BbnRsmg3qX3+R1ZZTSZymlhymlzZTSP+Ne+yNK6TPc75+klB6llJ6glN5PKR0U02iGsJyoK4VRT3BeQg/q/OQKjlQ44CphW86pke56N5LprGSNuqKJDfTPR3CqQd0Og3q/qhh5YzHqcbTahQtTK5KcP53J4uL0Kk6rOLepdW7nhLRnUpoxdnE6hCxVd/4cYILO4DjV4MaV2bAknRf75iNYS2VUXX2gdcodFtR7rJLl0c9PrECvI+g6xDx0hga4vb4MqXRWkr4ur4wGAQB3NHmKfm5G8eiuL8OFqVVJtqR7eTSIzloXbGZD0c9dTJigMwAAt9fzIXHxPaiXhgPoqHLC5zAX/dyM4tHd4MZyPIWJYLyo512Np9A7G8KZVvWXSjNBZwAAfA4zGr02nJsobo4zmtjAxalVnDms/odN6/ATkueLnEd/ZTQISqGJMcYEnbHJm5s9eH18uailZa+NLSOdpThz2Fu0czKkodlnR4XTjJdHgkU979nhAJwWgyq3nNsOE3TGJmcO+xBPZYq6ou/lkSCsJj2669mEqNohhOCeVh9eGQ0iky1OHp1SipdHgri71avKDS22o/4rZOTNnc0e6HUEL48Ur8/O2ZEA7mzyqHqxB+M697R6EVrbKFozuJGlGBYjCU3kzwEm6IwtOC1GdB0qxdnh4oTEU8txTC2vaSK3ychxT6sPhAAvDxfHaTjLnecejYwxJuiMG7in1Ydr82Esx5J7H3xAnu/3AwDu1cjDxgDKbCYcq3bhbJGiwOf7/Wgtt6OmtKQo55MaJuiMGzhz2AdKr9eGi8lz1xbRXuVEg9cm+rkY8uHMYS8uTocQTWyIep5ANIlzkyt4+HjV3gerBCbojBs4XuNCqdUoetplIbyOC1OrePR4pajnYciPM60+ZLIUr44ui3qeH/ctglLgUSboDK2i1xHcd9iHnw/6sZERr3zxuauLAKAp74mRo6veDVeJET/tWxT1PM/2LqDJZ8PhCruo55ETTNAZN/FoZzVCaxt4VcS0y3PXFtBW6UCzTzsPGyOHUa/Dg0cr8NN+v2ibkwdjSbwxsYxHj1epdru5nWCCzriJM4e9cJgN+JfeBVE+3x9JoGdqFY8w71yzPNpZjVgyvVmFIjQ/6VtElkJzY4wJOuMmzAY93nq0Aj/pWxRl1egPL8+BavBhY1znzc0euK1G/MtVcZyGH1yaQ5PXhrZKhyifL1eYoDN25O2dVYgk0nhlVFgPKpul+Na5GXTXu9FSztItWsWo1+GhY5X4mQhpl2F/FOcnV/HuU3WaSrcATNAZu3B3iw9OiwE/uiKsB/Xa+DImgnG8745Dgn4uQ3k8erwa8VQGLw4uCfq533xjGia9Do/fXivo5yoBJuiMHTEZdHi0swrPXVtERMB64W++MY1SqxEPH2PpFq1zR1MZyh1mfLdnRrDPXE9l8L2Ls3j4eCU8du21Y2aCztiVJ04fwvpGBj+4NCfI5y1FE/hJ3yIe76qFxagX5DMZysWg1+HXu+vwi+EAZlfXBPnMf+6dRzSRxntPazMCZILO2JXO2lIcq3Hi669NCbLLzD+8NoV0luKJN2nzYWPczHtO1wEAvvHG9IE/i1KKv311Eq3lds3uT8sEnXFL/s1djRhZiuEXQwebHI0mNvB3v5zEg0crWO05Y5NatxUPdlTiG69PIZZMH+izXhhcwsBCBP/23mbNTYbyMEFn3JJfOVGNKpcFn39p7EBe+ldfmUQkkcZH7m8R0DqGGnjy3iZEEml8+1zhXno2S/EXPxtBTWkJHjtZLaB1yoIJOuOWGPU6PHVvM85NrBS800wgmsSXzo7hoaOV6KwtFdZAhuLpOuTGXS0e/PUvxgr20n90dQFX58L43bcehlEDG1nshnavnJE3T5w+hFp3Cf7nc4NIF9Df5X88N4BkOos/eOiICNYx1MDHHmzDSjyFL740tu+/jSY28D+eHUBHlRPvvK1GBOuUAxN0xp6YDDp88uF29C9E8LXXpvb1t2eHA/j+xTk8dW8zmljunLELJ+tK8asnq/HFl8YxFojt628/8+MhLEYS+G/vPAadTpu5cx4m6Iy8eOR4Je474sNnfjKIEX80r79Ziibwu9+9gtZyOz76AMudM27Npx7tgMWow+9853LeLSd+2reIr78+hd98cyO6DrlFtlD+MEFn5AUhBJ95VydsJgOe+ocLCK2lbnn8WiqN3/7aBcSSG/ir93axunPGnvgcZnzm8U70zobxX5/p23MS/tpcGL/zncs4XuPCxx9m6TyACTpjH5Q7Lfjc+7ows7KOD371HIK7bFO3Gk/h/V85h6uzIfzlE104orEGSYzCeehYFT58XzO+dW4af/qjAWSyO4v6hakV/OuvvIFSqwl/88FumA3MYQCYoDP2yR1NHvz1+7ow5I/i0c++jB9entsMj5PpDP7p0iwe/IuzuDobxl8+0YW3dlRIbDFDaXzswSP4zbsa8NVXJ/DeL7+OKzOhTW89GEviMz8exLu/+DpcJUZ887ffhAqnRWKL5QMRYgVgIXR3d9Oenh5Jzs04ONfmwvjY070YWIigxKhHudMMfySBxEYW7VVO/O/HO3GsxiW1mQwF893zM/izZwcQXt+A126CxajHXGgdlALvvK0Gf/wrR+GyGqU2s+gQQi5QSrt3fI8JOqNQMlmKs8MBvDwSRDCWhM9hxj2tXpxp9Wm+2oAhDJHEBv6ldwGXp0NIpjNo8tnx8LFKtFZoN43HBJ3BYDBUwq0EneXQGQwGQyUwQWcwGAyVwASdwWAwVAITdAaDwVAJTNAZDAZDJTBBZzAYDJXABJ3BYDBUAhN0BoPBUAmSLSwihAQA7K+59nW8AArbPkd+sGuRJ+xa5Am7FqCeUurb6Q3JBP0gEEJ6dlsppTTYtcgTdi3yhF3LrWEpFwaDwVAJTNAZDAZDJShV0L8ktQECwq5FnrBrkSfsWm6BInPoDAaDwbgZpXroDAaDwdgGE3QGg8FQCYoTdELIQ4SQIULIKCHkE1Lbs18IIZOEkKuEkMuEkB7utTJCyPOEkBHuv26p7dwJQshXCSFLhJBrW17b0XaS47PcfeolhHRJZ/nN7HItf0wImePuzWVCyCNb3vskdy1DhJAHpbH6ZgghdYSQFwkh/YSQPkLIf+ReV9x9ucW1KPG+WAgh5wghV7hr+TT3eiMh5A3O5u8QQkzc62bu36Pc+w0FnZhSqpgfAHoAYwCaAJgAXAHQIbVd+7yGSQDeba99BsAnuN8/AeB/SW3nLrafAdAF4NpetgN4BMBzAAiAOwC8IbX9eVzLHwP4/R2O7eDGmhlAIzcG9VJfA2dbFYAu7ncHgGHOXsXdl1tcixLvCwFg5343AniD+//9XQDv4V7/AoB/x/3+YQBf4H5/D4DvFHJepXnopwGMUkrHKaUpAN8G8JjENgnBYwD+nvv97wH8qnSm7A6l9CyAlW0v72b7YwC+RnO8DqCUEFJVFEPzYJdr2Y3HAHybUpqklE4AGEVuLEoOpXSBUnqR+z0KYABADRR4X25xLbsh5/tCKaUx7p9G7ocCeADA09zr2+8Lf7+eBvAWQsi+N+ZVmqDXAJjZ8u9Z3PqGyxEK4KeEkAuEkCe51yoopQvc74sAKqQxrSB2s12p9+qjXCriq1tSX4q4Fi5Mvw05b1DR92XbtQAKvC+EED0h5DKAJQDPIxdBhCilae6QrfZuXgv3fhiAZ7/nVJqgq4G7KaVdAB4G8BFCyJmtb9JczKXIWlIl287xeQDNAE4CWADwfyW1Zh8QQuwAvgfgP1FKI1vfU9p92eFaFHlfKKUZSulJALXIRQ5tYp9TaYI+B6Buy79rudcUA6V0jvvvEoB/Qu5G+/mwl/vvknQW7pvdbFfcvaKU+rmHMAvgy7gevsv6WgghRuQE8BuU0u9zLyvyvux0LUq9LzyU0hCAFwHciVyKy8C9tdXezWvh3ncBWN7vuZQm6OcBtHIzxSbkJg+ekdimvCGE2AghDv53AG8DcA25a/ggd9gHAfxQGgsLYjfbnwHwAa6q4g4A4S0pAFmyLZf8TuTuDZC7lvdwlQiNAFoBnCu2fTvB5Vm/AmCAUvrnW95S3H3Z7VoUel98hJBS7vcSAG9Fbk7gRQCPc4dtvy/8/XocwAtcZLU/pJ4NLmD2+BHkZr/HAHxKanv2aXsTcrPyVwD08fYjlyv7OYARAD8DUCa1rbvY/y3kQt4N5PJ/H9rNduRm+T/H3aerALqltj+Pa/k6Z2sv94BVbTn+U9y1DAF4WGr7t9h1N3LplF4Al7mfR5R4X25xLUq8L50ALnE2XwPwR9zrTch96YwC+EcAZu51C/fvUe79pkLOy5b+MxgMhkpQWsqFwWAwGLvABJ3BYDBUAhN0BoPBUAlM0BkMBkMlMEFnMBgMlcAEncFgMFQCE3QGg8FQCf8fNFhg8o3ydNcAAAAASUVORK5CYII=\n",
            "text/plain": [
              "<Figure size 432x288 with 1 Axes>"
            ]
          },
          "metadata": {
            "needs_background": "light"
          },
          "output_type": "display_data"
        }
      ],
      "source": [
        "import scipy.fftpack as fft\n",
        "\n",
        "dpath_dt = np.array([\n",
        "    fft.diff(path[0]),\n",
        "    fft.diff(path[1]),\n",
        "    ])\n",
        "\n",
        "dpdt_squared = dpath_dt[0]**2 + dpath_dt[1]**2\n",
        "pt.plot(dpdt_squared)"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {},
      "source": [
        "Get normals to the curve:"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 5,
      "metadata": {
        "collapsed": false,
        "jupyter": {
          "outputs_hidden": false
        }
      },
      "outputs": [
        {
          "data": {
            "text/plain": [
              "<matplotlib.quiver.Quiver at 0x7fc87f1c7af0>"
            ]
          },
          "execution_count": 5,
          "metadata": {},
          "output_type": "execute_result"
        },
        {
          "data": {
            "image/png": "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\n",
            "text/plain": [
              "<Figure size 432x288 with 1 Axes>"
            ]
          },
          "metadata": {
            "needs_background": "light"
          },
          "output_type": "display_data"
        }
      ],
      "source": [
        "normals = np.array([\n",
        "    dpath_dt[1],\n",
        "    -dpath_dt[0]\n",
        "    ]) / np.sqrt(dpdt_squared)\n",
        "\n",
        "pt.plot(path[0], path[1])\n",
        "pt.quiver(path[0], path[1], normals[0], normals[1])"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 6,
      "metadata": {
        "collapsed": false,
        "jupyter": {
          "outputs_hidden": false
        }
      },
      "outputs": [
        {
          "data": {
            "text/plain": [
              "[<matplotlib.lines.Line2D at 0x7fc87ef93b80>]"
            ]
          },
          "execution_count": 6,
          "metadata": {},
          "output_type": "execute_result"
        },
        {
          "data": {
            "image/png": "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\n",
            "text/plain": [
              "<Figure size 432x288 with 1 Axes>"
            ]
          },
          "metadata": {
            "needs_background": "light"
          },
          "output_type": "display_data"
        }
      ],
      "source": [
        "dist_vec = tgt[:, np.newaxis] - path\n",
        "\n",
        "dist = np.sqrt(np.sum(dist_vec**2, axis=0))\n",
        "\n",
        "pt.plot(dist)"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {},
      "source": [
        "## Single-layer potential"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {},
      "source": [
        "Let's look at the integrand for the SLP:"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 7,
      "metadata": {
        "collapsed": false,
        "jupyter": {
          "outputs_hidden": false
        }
      },
      "outputs": [
        {
          "name": "stderr",
          "output_type": "stream",
          "text": [
            "/tmp/ipykernel_384510/797241706.py:1: RuntimeWarning: divide by zero encountered in log\n",
            "  slp_integrand = np.log(dist)\n"
          ]
        },
        {
          "data": {
            "text/plain": [
              "[<matplotlib.lines.Line2D at 0x7fc87effe800>]"
            ]
          },
          "execution_count": 7,
          "metadata": {},
          "output_type": "execute_result"
        },
        {
          "data": {
            "image/png": "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\n",
            "text/plain": [
              "<Figure size 432x288 with 1 Axes>"
            ]
          },
          "metadata": {
            "needs_background": "light"
          },
          "output_type": "display_data"
        }
      ],
      "source": [
        "slp_integrand = np.log(dist)\n",
        "pt.plot(slp_integrand)"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {},
      "source": [
        "Even if this is integrable--Gaussian quadrature will do a terrible job. **Why?**"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 8,
      "metadata": {
        "collapsed": false,
        "jupyter": {
          "outputs_hidden": false
        }
      },
      "outputs": [
        {
          "name": "stderr",
          "output_type": "stream",
          "text": [
            "/tmp/ipykernel_384510/4173338573.py:3: RuntimeWarning: divide by zero encountered in log\n",
            "  log_sin_squared = 0.5*np.log(4*np.sin((tgt_t - t)/2)**2)\n"
          ]
        },
        {
          "data": {
            "text/plain": [
              "[<matplotlib.lines.Line2D at 0x7fc87ee6d8a0>]"
            ]
          },
          "execution_count": 8,
          "metadata": {},
          "output_type": "execute_result"
        },
        {
          "data": {
            "image/png": "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\n",
            "text/plain": [
              "<Figure size 432x288 with 1 Axes>"
            ]
          },
          "metadata": {
            "needs_background": "light"
          },
          "output_type": "display_data"
        }
      ],
      "source": [
        "near_sing_slice = slice(tgt_index-20, tgt_index+20)\n",
        "\n",
        "log_sin_squared = 0.5*np.log(4*np.sin((tgt_t - t)/2)**2)\n",
        "pt.plot(log_sin_squared[near_sing_slice])\n",
        "pt.plot(slp_integrand[near_sing_slice])"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 9,
      "metadata": {
        "collapsed": false,
        "jupyter": {
          "outputs_hidden": false
        }
      },
      "outputs": [
        {
          "name": "stderr",
          "output_type": "stream",
          "text": [
            "/tmp/ipykernel_384510/3811592322.py:1: RuntimeWarning: invalid value encountered in subtract\n",
            "  slp_subtracted = slp_integrand - log_sin_squared\n"
          ]
        },
        {
          "data": {
            "text/plain": [
              "[<matplotlib.lines.Line2D at 0x7fc87eed8c40>]"
            ]
          },
          "execution_count": 9,
          "metadata": {},
          "output_type": "execute_result"
        },
        {
          "data": {
            "image/png": "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\n",
            "text/plain": [
              "<Figure size 432x288 with 1 Axes>"
            ]
          },
          "metadata": {
            "needs_background": "light"
          },
          "output_type": "display_data"
        }
      ],
      "source": [
        "slp_subtracted = slp_integrand - log_sin_squared\n",
        "pt.plot(slp_subtracted[near_sing_slice])"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 10,
      "metadata": {
        "collapsed": false,
        "jupyter": {
          "outputs_hidden": false
        }
      },
      "outputs": [
        {
          "data": {
            "text/plain": [
              "[<matplotlib.lines.Line2D at 0x7fc87ed426e0>]"
            ]
          },
          "execution_count": 10,
          "metadata": {},
          "output_type": "execute_result"
        },
        {
          "data": {
            "image/png": "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\n",
            "text/plain": [
              "<Figure size 432x288 with 1 Axes>"
            ]
          },
          "metadata": {
            "needs_background": "light"
          },
          "output_type": "display_data"
        }
      ],
      "source": [
        "pt.plot(slp_subtracted)"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {},
      "source": [
        "**How does this help?**"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {},
      "source": [
        "### Double-layer potential"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 11,
      "metadata": {
        "collapsed": false,
        "jupyter": {
          "outputs_hidden": false
        }
      },
      "outputs": [
        {
          "name": "stderr",
          "output_type": "stream",
          "text": [
            "/tmp/ipykernel_384510/4139646203.py:1: RuntimeWarning: invalid value encountered in true_divide\n",
            "  grad_slp = dist_vec/dist**2\n"
          ]
        },
        {
          "data": {
            "text/plain": [
              "[<matplotlib.lines.Line2D at 0x7fc87eda9990>]"
            ]
          },
          "execution_count": 11,
          "metadata": {},
          "output_type": "execute_result"
        },
        {
          "data": {
            "image/png": "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\n",
            "text/plain": [
              "<Figure size 432x288 with 1 Axes>"
            ]
          },
          "metadata": {
            "needs_background": "light"
          },
          "output_type": "display_data"
        }
      ],
      "source": [
        "grad_slp = dist_vec/dist**2\n",
        "\n",
        "dlp_integrand = np.sum(grad_slp * normals, axis=0)\n",
        "pt.plot(dlp_integrand)"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {},
      "source": [
        "### S'"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 12,
      "metadata": {
        "collapsed": false,
        "jupyter": {
          "outputs_hidden": false
        }
      },
      "outputs": [
        {
          "data": {
            "text/plain": [
              "[<matplotlib.lines.Line2D at 0x7fc87ec20b80>]"
            ]
          },
          "execution_count": 12,
          "metadata": {},
          "output_type": "execute_result"
        },
        {
          "data": {
            "image/png": "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\n",
            "text/plain": [
              "<Figure size 432x288 with 1 Axes>"
            ]
          },
          "metadata": {
            "needs_background": "light"
          },
          "output_type": "display_data"
        }
      ],
      "source": [
        "sp_integrand = np.sum(grad_slp * normals[:, tgt_index, np.newaxis], axis=0)\n",
        "pt.plot(sp_integrand)"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {},
      "source": [
        "## Questions\n",
        "\n",
        "* How would you apply this for **Helmholtz**?\n",
        "* Name aspects that make this rule slightly **impractical**\n",
        "* How would this apply to D'?"
      ]
    }
  ],
  "metadata": {
    "kernelspec": {
      "display_name": "Python 3 (ipykernel)",
      "language": "python",
      "name": "python3"
    },
    "language_info": {
      "codemirror_mode": {
        "name": "ipython",
        "version": 3
      },
      "file_extension": ".py",
      "mimetype": "text/x-python",
      "name": "python",
      "nbconvert_exporter": "python",
      "pygments_lexer": "ipython3",
      "version": "3.10.4"
    }
  },
  "nbformat": 4,
  "nbformat_minor": 4
}