{ "cells": [ { "cell_type": "markdown", "id": "665cadf4", "metadata": {}, "source": [ "# Gradients, Parallelization and Precision\n", "\n", "This section describes how to obtain gradients for more efficient optimization and how to speedup execution via parallelization." ] }, { "cell_type": "markdown", "id": "e643ae8c", "metadata": {}, "source": [ "**Install PyWake if needed**" ] }, { "cell_type": "code", "execution_count": 1, "id": "d977451d", "metadata": {}, "outputs": [], "source": [ "# Install PyWake if needed\n", "try:\n", " import py_wake\n", "except ModuleNotFoundError:\n", " !pip install git+https://gitlab.windenergy.dtu.dk/TOPFARM/PyWake.git" ] }, { "cell_type": "markdown", "id": "de1f4cc5", "metadata": {}, "source": [ "## Gradients\n", "\n", "PyWake supports three methods for computing gradients:\n", "\n", "\n", "| Method | Pro | Con |\n", "| :------ | :--- | :--- |\n", "| Finite difference (`fd`) | - Works out of the box in most cases
- Fast for small problems | - Less accurate
- Sensitive to stepsize
- Requires `n+1` function evaluation |\n", "| Complex step (`cs`) | - More accurate
- Works out of the box or with a few minor changes
- Fast for small problems | - Requires `n` function evaluations\n", "| Automatic differentiation (`autograd`) | - Exact result
- Requires 1 smart function evaluation | - `numpy` must be replaced with `autograd.numpy`
- Often code changes and debugging is required
- Debugging is very hard
- Gradient functions (e.g. using `fd` or `cs`) must be specified if `autograd` fails\n", "\n" ] }, { "cell_type": "markdown", "id": "b9f7b105", "metadata": {}, "source": [ "**Example problem**\n", "\n", "To demonstrate the three methods we first define an example function, `f(x)`, with one input vector of three elements, `x = [1,2,3]`\n", "\n", "$f(x)=\\sum_x{2x^3\\sin(x)}$" ] }, { "cell_type": "code", "execution_count": 2, "id": "ad450706", "metadata": {}, "outputs": [], "source": [ "%load_ext py_wake.utils.notebook_extensions\n", "import numpy as np\n", "import matplotlib.pyplot as plt\n", "\n", "def f(x):\n", " return np.sum((2 * x**3) * np.sin(x))\n", "\n", "def df(x):\n", " # analytical gradient used for comparison\n", " return 6*x**2 * np.sin(x) + 2*x**3 * np.cos(x)\n", "\n", "x = np.array([1,2,3], dtype=float)" ] }, { "cell_type": "markdown", "id": "77f4e1f7", "metadata": {}, "source": [ "**Plot variation+gradients of** `f` **with respect to** $x_0, x_1, x_2$" ] }, { "cell_type": "code", "execution_count": 3, "id": "2f374054", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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NhurVq1y1bdQpT322GNGQECAsWbNGiMpKan4Kzs7u3if3/6O+P777w13d3fjH//4h7F//37j5ZdfNiwWi7F7925XfAtVWnn6V7+DS++5554z1q5daxw5csTYtWuX8dxzzxkmk8lYsWKFYRj67DpCWfu4qnx+a3SwMwzDePfdd4369esbHh4eRrdu3YzNmzcXv9e7d2/j/vvvL349YcKE4n3DwsKMoUOHGjt27HBB1dVD0fQav/0q6tP777/f6N279yXHdOzY0fDw8DAaN25szJgxo9Lrri7K2r9//etfjSZNmhheXl5GUFCQ0adPH+Pbb791TfHVwOX6Fijxmfzt7wjDMIwvvvjCaN68ueHh4WG0adPG+Oabbyq38GqiPP2r38Gl9+CDDxoNGjQwPDw8jHr16hn9+/cvDhyGoc+uI5S1j6vK59dkGIZReeODIiIiIuIsNfYeOxEREZHaRsFOREREpIZQsBMRERGpIRTsRERERGoIBTsRERGRGkLBTkRERKSGULATERERqSEU7ERERERqCAU7ERERkRpCwU5ERESkhlCwExEREakhFOxEREREaoj/B/1n+rJSYcsYAAAAAElFTkSuQmCC\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "dx_lst = np.linspace(-.5,.5,100)\n", "\n", "import matplotlib.pyplot as pltq\n", "from py_wake.utils.plotting import setup_plot\n", "\n", "for i in range(3):\n", " label=\"f([1,2,3])\".replace(str(i+1),f\"$x_{i}$\")\n", " c = plt.plot(x[i] + dx_lst, [f(x + np.roll([dx,0,0],i)) for dx in dx_lst], label=label)[0].get_color()\n", " plt.plot(x[i]+[-.5,.5], f(x) + df(x)[i]*np.array([-.5,.5]), '--', color=c)\n", " plt.plot(x[i], f(x), '.', color=c)\n", "setup_plot(ylim=[0,40])\n", "plt.legend()" ] }, { "cell_type": "markdown", "id": "b9636f37", "metadata": {}, "source": [ "**In PyWake, gradients can be calculated via three methods: finite difference, complex step, and automatic diferentiation (AD) or autograd.**\n", "\n", "Below is the theoretical background of each method, followed by a comparison made between the three methods in terms of simulation time required." ] }, { "cell_type": "markdown", "id": "80780155", "metadata": {}, "source": [ "### Finite difference `fd`\n", "\n", "$\\frac{d f(x)}{dx} = \\frac{f(x+h) - f(x)}{h}$\n", "\n", "Finite difference applied to the example function:\n" ] }, { "cell_type": "code", "execution_count": 4, "id": "51ba6915", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Analytical gradient: [6.129430520583658, 15.164788859062082, -45.83911438119122]\n", "Finite difference gradient wrt. x0: 6.129437970514573\n", "Finite difference gradient wrt. x1: 15.164782510623809\n", "Finite difference gradient wrt. x2: -45.839169114714196\n" ] } ], "source": [ "print (\"Analytical gradient:\", list(df(x)))\n", "h = 1e-6\n", "for i in range(3):\n", " print (f\"Finite difference gradient wrt. x{i}:\", (f(x+np.roll([h,0,0],i)) - f(x))/h)" ] }, { "cell_type": "markdown", "id": "523117ef", "metadata": {}, "source": [ "In this example the gradients are accurate to 4th or 5th decimal. The accuracy, however, is highly dependent on the step size, `h`. If the step size is too small the result becomes inaccurate due to nummerical issues. If the step size, on the other hand, becomes too big, then the result represents the gradient of a neighboring point.\n", "\n", "This compromize is illusated below:" ] }, { "cell_type": "code", "execution_count": 5, "id": "7436be1b", "metadata": {}, "outputs": [ { "data": { "image/png": "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T+fKlSuMGTOG5557TncatiatW7fmb3/7G88//zzvvvsuHTp04MqVKyQnJxMSEkL//v0NWo+vry8//fQTJ06cwMPDAxcXl0pH+YQQJlbfg/yEEObrxo0bysSJE5WOHTsqLi4uir29vRIUFKS8+eabyvXr13Xt/v3vfyutWrVSrKyslJYtW+qWJyUlKd26dVPUarXi7OysPPzww3pXbgLKBx98oPTt21extbVVfH19ldWrV1cbz9GjR5WoqCilUaNGiq2trdK6dWtl8eLFutdvHex/8+KAij8RERG69rt27VL69u2rODo6Kg4ODkpISIgya9as2+6T6nLSaDRKnz59lKioKEWj0ejajxkzRgkICNBduWtIzgcPHlR69eql2NnZKe7u7sqLL76o618xz5tee+01vdxKSkqUadOmKb6+voq1tbXi7e2tPPnkk8rBgwd1+8fFxUVvHWvXrlVu/Vq5fPmybv8Ayi+//HLbfSOEqDuVosiACCHEvUmlUrF27dr76u4G92POQgjDyRg7IYQQQggzIYWdEEIIIYSZkFOxQgghhBBmQo7YCSGEEEKYCSnshBBCCCHMhBR2QgghhBBmQgo7IYQQQggzIYWdEEIIIYSZkMJOCCGEEMJMSGEnhBBCCGEmpLATQgghhDAT/w/Q6X3io5nlRAAAAABJRU5ErkJggg==\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "h_lst = 10.**(-np.arange(1,21)) # step sizes [1e-1, ..., 1e-20]\n", "\n", "for i in range(3):\n", " # Plot error compared to analytical gradient, df(x)\n", " plt.semilogy(np.log10(h_lst), [np.abs(df(x)[i] - (f(x+np.roll([h,0,0],i))-f(x))/h) for h in h_lst], \n", " label=f'Finite difference wrt. $x_{i}$')\n", "plt.xticks(np.arange(-20,-1,2))\n", "setup_plot(ylabel='Error of gradient', xlabel='Step size exponent')" ] }, { "cell_type": "markdown", "id": "0efc0482", "metadata": {}, "source": [ "### Complex step\n", "\n", "The complex step method is described [here](https://blogs.mathworks.com/cleve/2013/10/14/complex-step-differentiation/).\n", "\n", "It utilizes that \n", "\n", "$\\frac {d f(x)}{x}= \\frac{\\operatorname{Im}(f(x+ih))}{h}+O(h^2)$\n", "\n", "Applied to the example function, the result is accurate to the 15th decimal." ] }, { "cell_type": "code", "execution_count": 6, "id": "c14cab89", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Analytical gradient: [6.129430520583658, 15.164788859062082, -45.83911438119122]\n", "Finite difference gradient wrt. x0: 6.129430520583658\n", "Finite difference gradient wrt. x1: 15.164788859062082\n", "Finite difference gradient wrt. x2: -45.83911438119122\n" ] } ], "source": [ "print (\"Analytical gradient:\", list(df(x)))\n", "h = 1e-10\n", "\n", "for i in range(3):\n", " print (f\"Finite difference gradient wrt. x{i}:\", np.imag(f(x+np.roll([h*1j,0,0],i)))/h)" ] }, { "cell_type": "markdown", "id": "b6f26658", "metadata": {}, "source": [ "Furthermore, the result is much less sensitive to the step size as seen below" ] }, { "cell_type": "code", "execution_count": 7, "id": "ebebf371", "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAnYAAAHWCAYAAAD6oMSKAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy89olMNAAAACXBIWXMAAA9hAAAPYQGoP6dpAAB+7UlEQVR4nO3dd3gU9drG8e+m90YgoYSELr1KFSS0EJBixUoQRVGwISpYKCpiRY6CIjawHgQPcAREQgBBejH03qWETkgCaTvvHznsa6QlsJvJbu7PdeW6ZmZnZ+9nN2QfZuY3YzEMw0BEREREnJ6b2QFERERExD7U2ImIiIi4CDV2IiIiIi5CjZ2IiIiIi1BjJyIiIuIi1NiJiIiIuAg1diIiIiIuQo2diIiIiIvwMDuAs7JarRw+fJjAwEAsFovZcURERMTJGIbBuXPnKFeuHG5u9tnXpsbuOh0+fJioqCizY4iIiIiTO3jwIBUqVLDLttTYXafAwEAg78MICgqy+/azs7OZN28enTp1wtPT0+7bN5ur1weuX6Pqc36uXqPqc26uXh/AqVOnqFSpkq2nsAc1dtfp4uHXoKAghzV2fn5+BAUFueQvtKvXB65fo+pzfq5eo+pzbq5eH+TVCNj1lC4NnhARERFxEWrsRERERFyEGjsRERERF6Fz7ERExOXl5ubazmdyFdnZ2Xh4eHDhwgVyc3PNjmN3rlCfp6cn7u7uRfqaauxERMSlpaSkcO7cObNj2J1hGERGRnLw4EGXvJ6qq9QXEhJCZGRkkdWgxk5ERFxWYGAgqampRERE4Ofn59QNwj9ZrVbS0tIICAiw28VtixNnr88wDDIyMjh27BgAZcuWLZLXVWMnIiIuKTc3l8DAQEqXLk2pUqXMjmN3VquVrKwsfHx8nLLxuRZXqM/X1xeAY8eOUaZMmSI5LOuc75SIiMg15OTk4Obmhp+fn9lRpAS7+PtXVOd4qrETERGXZBgGYN+Lv4oUVlH//qmxExEREXERauxEREScRNu2bXn22WcLvP6+ffuwWCwkJyc7LNPfxcTEMHbsWNu8xWJhxowZtvlt27bRvHlzfHx8aNCgwRWXyfXT4AkREZFipE+fPkyePPmS5Tt37uQ///lPoe6bGhUVxZEjRwgPDwdg0aJFxMbGcvr0aUJCQuwV+YqOHDlCaGiobX748OH4+/uzfft2AgICrrhMrp8aOxERkWKmc+fOfP311/mWlS5dutCjKt3d3YmMjLRntEL552vv3r2brl27Eh0dfdVlhZWVlYWXl9d1P9+V6FCsiIhIMePt7U1kZGS+H3d390sOxdarV4/Ro0fTt29fAgMDqVixIhMnTrQ9/vdDsfv27SM2NhaA0NBQLBYLffr0AfIuLTJ69GgqVaqEr68v9evXZ9q0aVfNeOzYMbp164avry+VKlXi+++/v2Sdvx+KtVgsrF27ltdffx2LxcKIESMuuwzg4MGD9OrVi+joaMLDw+nRowf79u2zbbdPnz707NmTUaNGUa5cOWrUqGF73j333ENISAhhYWFXfN77779P2bJlKVWqFAMGDMg3YjUzM5OXXnqJqKgovL29qVq1Kl9++aXt8U2bNhEfH09AQAARERE89NBDnDhx4qrvVVHSHrti6ERaJuMX7GTvPjeSf93utNfvuRqr1erS9QF4ukHYebNTiMhFhmFwPtucW1P5ero7bHTkmDFjeOONN3j55ZeZNm0aTzzxBLfeequt2bkoKiqKn3/+mTvvvJPt27cTFBRku87a6NGj+e6775gwYQLVqlVj8eLFPPjgg5QuXZpbb731sq/bp08fDh8+zMKFC/H09OTpp5+2XYz3co4cOUKHDh3o3LkzgwcPJiAggP79+1+yLDs7m7i4OJo3b86cOXMICQnhrbfeonPnzmzYsMG2Zy4pKYmgoCASExMBbM9r0aIFS5YswcPDgzfffPOS5y1cuJCyZcuycOFCdu3aRa9evWjQoAH9+vUDoHfv3ixfvpyPPvqI+vXrs3fvXlvjdubMGdq1a8ejjz7Khx9+yPnz53nppZe45557WLBgwQ18ivajxq4YOns+m6+X7QfcWHRkv9lxHMjV6wMPiztZpffSv21VPNxds4EVcRbns3OpNew3U157y+tx+HkV/Ct31qxZ+c43i4+PZ+rUqZddNz4+nieffBKAl156iQ8//JCFCxde0ti5u7sTFhYGQJkyZWzn2GVmZvLWW28xf/58WrRoAUDlypX5448/+Oyzzy7b2O3YsYNff/2VVatWcfPNNwPw5ZdfUrNmzSvWFBkZiYeHBwEBAbZDtAEBAZcs++6777BarXz++eecO3eOoKAgvv76a0JCQli0aBGdOnUCwN/fny+++MLWsF183hdffGFroi/3vNDQUMaNG4e7uzs33XQTXbt2JSkpiX79+rFjxw5++uknEhMT6dChg+29uGjcuHE0bNiQt956y7bsq6++Iioqih07dlC9evUr1l9U1NgVQyG+njzeuhK7d++mSpUquLlgQ2DNtbp0fQAbDp5h6e6TvJ+4k3lbj/HeXfWpERlodiwRcQKxsbF8+umntnl/f/8rrluvXj3btMViITIy8qp7zv5p165dZGRk0LFjx3zLs7KyaNiw4WWfs3XrVjw8PGjcuLFt2U033WSXARnr169n165dBAcH51t+4cIFdu/ebZuvW7duvvPqLj4vMDDwqs+rXbt2vnMVy5Yty8aNGwFITk7G3d39insp169fz8KFCy87yGP37t1q7OTySgV4M7hTNebM2UmXTtUKNQLKWWRnZ7t0fZD3R3Hk5Ln8csibDX+d5baPl/B0u2r0b1sFTxdtZkWKM19Pd7a8HmfaaxeGv78/VatWLdC6//wbarFYsFqtBX6ttLQ0AGbPnk358uXzPebt7V3g7dhLWloajRs35ttvv73kXrGlS5e2rffPZvfi8y53rt/fn3e19+vioemrZevWrRvvvPPOJY8V1b1gr0WNnYiDWCwWmpYxeOKOloyYtY35W4/xQeIO5m4+ynt31adWuSCzI4qUKBaLpVCHQ13RxT1cubn/f65hrVq18Pb25sCBA1fcU/VPN910Ezk5Oaxdu9Z2KHb79u2cOXPmhjM2atSIKVOmUKZMGcqUKUNQUFCBzsX++/OCgq7v72vdunWxWq38/vvvtkOx/3yNn3/+mZiYGDw8iufvknYbiDhYRJAPn/duwtheDQjx82Tz4VS6j/uDDxN3kJVT8P9Vi4jcqOjoaCwWC7NmzeL48eOkpaURGBjI4MGDee6555g8eTK7d+9m3bp1fPzxx5e9nh5AjRo16Ny5M48//jgrV65k7dq1PProo9fc41UQDzzwAOHh4dx+++0sW7aMvXv3smjRIp5++mn++uuvaz6vR48eLFmypMDP+7uYmBgSEhLo27cvM2bMsG3jp59+AmDAgAGcOnWK++67j9WrV7N7925+++03Hn744XzNspnU2IkUAYvFQs+G5Zn3XBviakeQYzX4V9JOuo/7g02HzpodT0RKiPLlyzNy5EiGDBlCREQEAwcOBOCNN97gtddeY/To0dSsWZPOnTsze/ZsKlWqdMVtff3115QrV45bb72VO+64g8cee4wyZcrccEY/Pz8WL15MVFQUvXv3pnbt2jzyyCNcuHDhqnviLj6vYsWK3HHHHdSsWbNAz/unTz/9lLvuuosnn3ySm266iX79+pGeng5AuXLlWLp0Kbm5uXTq1Im6devy7LPPEhISUmyu8GAxLt4lWQolNTWV4OBgzp49e927fK8m7xy0OXTp0sUlz0Fz9frgyjUahsGsDUcY/t/NnErPwt3NwhO3VuGp9lXx9ijceThmcvXP0NXrA9ev8dy5c+zYsYOaNWvi5+dndhy7s1qtpKamFvhQpbNxlfouXLjA3r17qVSpEj4+PvkeO3nyJOHh4XbtJZz3nRJxUhaLhW71yzHvuTZ0rVuWXKvBuIW76PbxH6w/eMbseCIi4sTU2ImYJDzAm/EPNOKTBxpRyt+LHSlp3P7JUt7+dRsXTLqIqoiIODc1diIm61K3LImDbqV7/XJYDZjw+266frSEdQdOmx1NREScjBo7kWIgzN+Lj+5ryGcPNSY8wJvdx9O569NljJq9RXvvRESkwNTYiRQjcbUjmT+oDXc0LI/VgM+X7KXLv5awZt8ps6OJiIgTUGMnUsyE+HkxplcDvkxoQkSQN3tOpHP3Z8sZ+ctmMrJyzI4nIiLFWIlu7GbNmkWNGjWoVq0aX3zxhdlxRPJpXzOCec/dyt2NK2AY8PXSfXQeu4QVe06aHU1ERIqpEtvY5eTkMGjQIBYsWMCff/7Je++9x8mT+sKU4iXY15P37q7PpIdvpmywDwdOZXDvxBUMm7mJ9EztvRMRkfxKbGO3atUqateuTfny5QkICCA+Pp558+aZHUvkstrWKMO859pwX9OKAHyzfD9xYxezdNcJk5OJSEmzb98+LBYLycnJZkeRy3Daxm7x4sV069aNcuXKYbFYmDFjxiXrjB8/npiYGHx8fGjWrBmrVq2yPXb48GHKly9vmy9fvjyHDh0qiugi1yXQx5PRd9Tlu0eaUT7El79On+eBL1by8vSNnLuQbXY8EbGjo0eP8tRTT1G5cmW8vb2JioqiW7duJCUlmR3NdIsWLcJisXDmzBmzoxRLTtvYpaenU79+fcaPH3/Zx6dMmcKgQYMYPnw469ato379+sTFxXHs2LEiTipiX7dUC+e359rwUPNoAH5YeYC4DxezeMdxk5OJiD3s27ePxo0bs2DBAt577z02btzI3LlziY2NZcCAAWbHk2LOw+wA1ys+Pp74+PgrPj5mzBj69evHww8/DMCECROYPXs2X331FUOGDKFcuXL59tAdOnSIpk2bXnF7mZmZZGZm2uZTU1OBvHstZmfbf2/JxW06YtvFgavXB46t0dsNhnWtQaeapRk6YzN/nT5P769WEVerDP3bVKZOefvfv/ifXP0zdPX6wPVrzMnJOw/VMAysVqvJaQruiSeewGKxsGLFCvz9/W3La9asSZ8+fWy17N+/nwEDBrB48WLc3NyIi4vjo48+IiIiAoCRI0cyc+ZMBg4cyOuvv86pU6d46KGH+OijjxgzZgwffvghVquVp59+mpdfftn2Ou7u7owbN45ffvmF33//nbJly/L2229z1113Adhe32q12qY3bdrEiy++yB9//IG/vz8dO3ZkzJgxhIeHs2jRIjp37kxiYiKtW7cG4L333uODDz5g/fr1trx/t3//fp566in++OMPsrOziYmJ4Z133qFWrVrExsYCEBoaCkDv3r35+uuvsVqtvPvuu3z++eccPXqU6tWr88orr9hyL1q0iPbt2/Pf//6XV155hR07dtCgQQMmTpxInTp17PcB/oPVasUwDLKzs3F3z38/cEf823Paxu5qsrKyWLt2LUOHDrUtc3Nzo0OHDixfvhyApk2bsmnTJg4dOkRwcDC//vorr7322hW3OXr0aEaOHHnJ8nnz5jn05tKJiYkO23Zx4Or1geNrfLoazDrgxuKjbvy25Ri/bTlGjWArHcobVAsysFgc+vIu/xm6en3gujV6eHgQGRlJenq60zSvp0+f5rfffuPVV18lNzfXthPhIjc3N1JTU7FarfTo0QN/f39mzZpFTk4OL7zwAnfffTezZs0C8nZI7N69m1mzZvHTTz+xd+9e+vTpw86dO6lSpQq//PILq1atYuDAgTRv3pwmTZrYXmfYsGEMHz6cN998kylTpnD//fcTHR1NjRo1SEtLA/KOnKWmpnL27Fnat2/PQw89xOuvv86FCxcYMWIEd911F//9739p1KgR/fv356GHHmLJkiXs37+fYcOG8fXXX+Pr63tJjQD9+/cnOzub2bNn4+/vz7Zt27BYLAQHB/PNN9/Qu3dvVq9eTWBgID4+PqSmpvL+++8zdepU3n//fapUqcKyZcvo3bs3/v7+tGrVioyMDABeeOEFRo8eTZkyZXjjjTfo1q0ba9as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5ubarkNUtWpVAgIC6NixIy+88AIDBgzgqaeewmq18vbbb+Ph4UFsbKy54QvgWvVVr16dHj168MwzzzBx4kSCgoIYOnQoN910k1PUB9eu8Z/N24kTJwCoWbPmNa97Vxxcq75NmzbRrl074uLiGDRokO28M3d3d7s2j45yrfo6depErVq1eOihh3j33Xc5evQor776KgMGDHDKG7K3aNGC0NBQEhISGDZsGL6+vnz++efs3buXrl27mh3vhgUFBdG/f3+GDx9OVFQU0dHRvPfeewDcfffdJqezj3+eqxsQEABAlSpVbP9BdmYF+e4vMHsPz5Ub8/XXXxvAZX/+bv369cYtt9xieHt7G+XLlzfefvttkxIXXkJCwmXrW7hwoW2defPmGa1atTKCg4ON0NBQo127dsby5cvNC10IBanv7NmzRt++fY2QkBAjLCzMuP322/Nd3qW4K0iNf7dw4UKnutzJteobPnz4ZR+Pjo42NXdBFeTz27dvnxEfH2/4+voa4eHhxvPPP29kZ2ebF/oGrV692ujUqZMRFhZmBAYGGs2bNzfmzJljdiy7ycrKMp5//nmjTJkyRmBgoNGhQwdj06ZNZsdymL1797rU5U4K+t1fEBbD+N/JLyIiIiLi1DQqVkRERMRFqLETERERcRFq7ERERERchBo7ERERERehxk5ERETERaixExEREXERauxEREREXIQaOxEREREXocZOREq8Pn360LNnT7NjiIjcMDV2IuIQx48f54knnqBixYp4e3sTGRlJXFwcS5cuta1jsViYMWOGeSH/51//+heTJk0yO4bLUKMsYh4PswOIiGu68847ycrKYvLkyVSuXJmUlBSSkpI4efKk2dEuERwcbHYEERG70B47EbG7M2fOsGTJEt555x1iY2OJjo6madOmDB06lO7duwMQExMDwO23347FYrHNA8ycOZNGjRrh4+ND5cqVGTlyJDk5ObbHLRYLn376KfHx8fj6+lK5cmWmTZt21UzTpk2jbt26+Pr6UqpUKTp06EB6ejqQfw/Tvn37sFgsl/y0bdvWtq0//viD1q1b4+vrS1RUFE8//bRtW1dytZpef/11ypUrl6/p7dq1K7GxsVit1gLXvHHjRtq1a2er8bHHHiMtLc32+MU633//fcqWLUupUqUYMGAA2dnZtnUyMzMZPHgw5cuXx9/fn2bNmrFo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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "h_lst = 10.**(-np.arange(3,21))\n", "\n", "plt.semilogy(np.log10(h_lst), [np.abs(df(x)[0] - (f(x+[h,0,0])-f(x))/h) for h in h_lst], label='Finite difference')\n", "plt.semilogy(np.log10(h_lst), [np.abs(df(x)[0] - np.imag(f(x+[h*1j,0,0]))/h) for h in h_lst], label='Complex step')\n", "plt.xticks(np.arange(-20,-1,2))\n", "setup_plot(ylabel='Error of gradient', xlabel='Step size exponent')" ] }, { "cell_type": "markdown", "id": "b27fdb2f", "metadata": {}, "source": [ "**Common code changes**\n", "\n", "The complex step method calls the function with a complex number, i.e. all intermediate functions and routines must support complex number. A few `numpy` functions have different or undefined behaviour for complex numbers, so often a few changes is required. In PyWake, the module `py_wake.utils.gradients` contains a set of replacement functions that supports complext number, e.g.:\n", "\n", "- `abs`\n", " - For a real value, `x`, `abs(x)` returns the positive value, while for a complex number, it returns the distance from 0 to z, $abs(a+bi)= \\sqrt{a^2+b^2}$. \n", " - In most cases `abs` should therefore be replaced by `gradients.cabs`, which returns `np.where(x<0,-x,x)`\n", "- `np.hypot(a,b)`\n", " - `np.hypot` does not support complex numbers\n", " - replace with `gradients.hypot`, which returns `np.sqrt(a\\*\\*2+b\\*\\*2)` if `a` or `b` is complex\n", "- `np.interp(xp,x,y)`\n", " - replace with `gradients.interp(xp,x,y)`\n", "- `np.logaddexp(x,y)`\n", " - replace with `gradients.logaddexp(x,y)` \n", " \n", "Furthermore, the imaginary part must be preserved when creating new arrays, i.e.\n", "- `np.array(x,dtype=float)` -> `np.array(x,dtype=(float, np.complex128)[np.iscomplexobj(x)])`\n" ] }, { "cell_type": "markdown", "id": "59086a67", "metadata": {}, "source": [ "### Automatic Differentiation (Autograd)" ] }, { "cell_type": "markdown", "id": "76fd609d", "metadata": {}, "source": [ "[Autograd](https://github.com/HIPS/autograd) is a python package that can automatically differentiate native Python and Numpy code.\n", "\n", "Autograd performs a two step automatic differentiation process.\n", "\n", "First the normal result is calculated and during this process autograd setups up a calculation tree where each element in the tree holds the associated gradient functions:\n", "\n", "
\n", "\n", "For most numpy functions, the associated gradient function is predefined when using `autograd.numpy` instead of `numpy`. You can see the autograd module that defines the gradients of numpy functions [here](https://github.com/HIPS/autograd/blob/master/autograd/numpy/numpy_vjps.py#L32) and the functions used in the example is shown here:\n", "\n", "```python\n", "defvjp(anp.multiply, lambda ans, x, y : unbroadcast_f(x, lambda g: y * g),\n", " lambda ans, x, y : unbroadcast_f(y, lambda g: x * g))\n", "defvjp(anp.add, lambda ans, x, y : unbroadcast_f(x, lambda g: g),\n", " lambda ans, x, y : unbroadcast_f(y, lambda g: g))\n", "defvjp(anp.power,\n", " lambda ans, x, y : unbroadcast_f(x, lambda g: g * y * x ** anp.where(y, y - 1, 1.)),\n", " lambda ans, x, y : unbroadcast_f(y, lambda g: g * anp.log(replace_zero(x, 1.)) * x ** y))\n", "defvjp(anp.sin, lambda ans, x : lambda g: g * anp.cos(x))\n", "```\n", "\n", "In the second step, the gradients are calculated by backward propagation\n", "\n", "
" ] }, { "cell_type": "markdown", "id": "093a9b84", "metadata": {}, "source": [ "**Applied to the example function,** `autograd`, **gives the exact results.**" ] }, { "cell_type": "code", "execution_count": 8, "id": "7873b0aa", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Analytical gradient: [6.129430520583658, 15.164788859062082, -45.83911438119122]\n", "Autograd gradient: [6.129430520583658, 15.164788859062082, -45.83911438119122]\n" ] } ], "source": [ "from py_wake import np\n", "from py_wake.utils.gradients import autograd\n", "\n", "def f(x):\n", " return np.sum((2 * x**3) * np.sin(x))\n", "\n", "print (\"Analytical gradient:\", list(df(x)))\n", "print (f\"Autograd gradient:\", list(autograd(f)(x)))" ] }, { "cell_type": "markdown", "id": "d7ce4ab1", "metadata": {}, "source": [ "Note, autograd needs its own numpy, `autograd.numpy`, to work. In PyWake, the `autograd` wrapper defined in `py_wake.utils.gradients`, handles this numpy replacement automatically. All it requires is to use `from py_wake import np` instead of the standard `import numpy as np`. This approach also allows an easy switch to single precision for faster simulation." ] }, { "cell_type": "markdown", "id": "cc7e8ed0", "metadata": {}, "source": [ "**Common code changes**\n", "\n", "- `x[m] = 0` -> `x = np.where(m,0,x)`\n", " - Item assignment not supported\n", " " ] }, { "cell_type": "markdown", "id": "e18c09b5", "metadata": {}, "source": [ "### Comparison - Scalability of example problem\n", "As seen in the examples, autograd computed the gradients with respect to all input elements in one smart (but slow) function evaluation, while finite difference and complex step required `n + 1` and `n` function evaluations, respectively.\n", "\n", "This difference has a high impact on the performance of large scale problems. The plot below shows the time required to compute the gradients as a function of the number of elements in the input vector. In this example the `fd`, `cs` and `autograd` functions from `py_wake.utils.gradients` is utilized." ] }, { "cell_type": "markdown", "id": "69dd031e", "metadata": {}, "source": [ " from py_wake.utils.gradients import fd, cs, autograd\n", " from py_wake.tests.check_speed import timeit\n", "\n", " n_lst = np.arange(1,3500,500)\n", " x_lst = [np.random.random(n) for n in n_lst]\n", "\n", " def get_gradients(method,x):\n", " return method(f, vector_interdependence=True)(x)\n", "\n", " for method in [fd, cs, autograd]:\n", " plt.plot(n_lst, [np.mean(timeit(get_gradients, min_time=.2)(method,x)[1]) for x in x_lst], label=method.__name__)\n", " setup_plot(title='Time to compute gradients of f(x)', xlabel='Number of elements in x', ylabel='Time [s]')" ] }, { "cell_type": "markdown", "id": "407d2c22", "metadata": {}, "source": [ "![image1.png](images/Optimization_gradient_methods.png)" ] }, { "cell_type": "markdown", "id": "d8a0e437", "metadata": {}, "source": [ "### Gradients in PyWake\n", "\n", "As described above, PyWake, contains a module, `py_wake.utils.gradients` which defines the three methods, `fd`, `cs` and `autograd`, as well as a number of helper functions and constructs.\n", "\n", "With only a few exceptions, all PyWake models, turbines and sites support the three gradient methods.\n", "\n", "Unfortunately, autograd is not working very well with xarray, i.e. the normal xarray `SimulationResult` must be bypassed. This mean that you can compute gradients of the [AEP](#Gradients-of-AEP) or [WS, TI, Power and custom functions](#Gradients-of-WS,-TI,-Power-and-custom-functions) by setting the argument `return_simulationResult=False` when running the wind farm model: `WindFarmModel(..., return_simulationResult=False)`.\n", "\n", "Below we show a simple example with the Hornsrev1 Site and turbines while using the ZongGaussian wake model." ] }, { "cell_type": "code", "execution_count": 17, "id": "2fcd561f", "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", "import matplotlib.pyplot as plt\n", "\n", "from py_wake.examples.data.hornsrev1 import Hornsrev1Site, HornsrevV80\n", "from py_wake.utils.gradients import fd, cs, autograd\n", "from py_wake.utils.profiling import timeit\n", "from py_wake.utils.plotting import setup_plot\n", "from py_wake.literature.gaussian_models import Zong_PorteAgel_2020, Bastankhah_PorteAgel_2014\n", "from py_wake.deflection_models.jimenez import JimenezWakeDeflection\n", "from py_wake.turbulence_models.crespo import CrespoHernandez\n", "from py_wake.superposition_models import LinearSum\n", "from py_wake.utils.layouts import rectangle" ] }, { "cell_type": "code", "execution_count": 18, "id": "1aa9df78", "metadata": {}, "outputs": [], "source": [ "site = Hornsrev1Site()\n", "wt = HornsrevV80()\n", "wfm = Zong_PorteAgel_2020(site, wt, deflectionModel=JimenezWakeDeflection(), superpositionModel= LinearSum())" ] }, { "cell_type": "code", "execution_count": 19, "id": "05202062", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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q01ERERVUNDDzdmzZzFgwAC88sorqFOnjjK9oKAA//3vfzF//nz861//QqdOnbBs2TJs27YNO3bsAAB8+umn+OGHH/DGG2/g0ksvxY033ojp06fjxRdfRElJSbBXnYiIiKqgoIebzMxM9O7dGz179tRM37t3L0pLSzXT09LS0KRJE2zfvh0AsH37drRv3x5JSUlKmYyMDBQWFuL77783fc3i4mIUFhZqHkRERFQ9BLVD8apVq7Bv3z7s3r3bZV5eXh6io6NRu3ZtzfSkpCTk5eUpZdTBRp4vzzMza9YsPPHEE36uPRERUfBIIiCK/tdBroLWcpOTk4NRo0ZhxYoViI2NDdbLGMrKykJBQYHyyMnJCenrExERUfgELdzs3bsXJ06cQMeOHWG322G327FlyxY8//zzsNvtSEpKQklJCU6fPq1ZLj8/H8nJyQCA5ORkl6un5OdyGSMxMTGIj4/XPIiIiKh6CFq4ue6663DgwAF88803yqNz584YMGCA8v+oqChs2rRJWebQoUPIzs5Geno6ACA9PR0HDhzAiRMnlDIbN25EfHw82rRpE6xVJyIioiosaH1uatWqhXbt2mmm1axZE/Xq1VOmDx06FGPGjEHdunURHx+PRx55BOnp6bjyyisBAL169UKbNm1w7733Yu7cucjLy8OkSZOQmZmJmJiYYK06ERERVWFhHaH42WefhdVqxe23347i4mJkZGTgpZdeUubbbDZ89NFHeOihh5Ceno6aNWti4MCBePLJJ8O41kRERP4TRAmC6OcIxX4uH6kskhT5YzcXFhYiISEBBQUF7H9DRESmQnG8kF9j96HjuKCWf69x9kwhLm+VwuObDm+cSURERBGF4YaIiIgiCu8KTkREFAaiJEH0s2eIv8tHKrbcEBERVQOCIGDy5Mlo3rw54uLi0LJlS0yfPh2eut6uWLECl1xyCWrUqIGUlBQMGTIEf/31l6bMggUL0KpVK8TFxSE1NRWPPvooioqKgrk5brHlhoiIqBqYM2cOFi1ahOXLl6Nt27bYs2cPBg8ejISEBIwcOdJwma+//hr33Xcfnn32WfTp0we5ubl48MEHMWzYMKxZswYAsHLlSowfPx5Lly5F165dcfjwYQwaNAgWiwXz588P5SYqGG6IiIiqgW3btuGWW25B7969AQDNmjXDm2++iV27dpkus337djRr1kwJP82bN8fw4cMxZ84cTb3dunXD3XffrdTbv39/7Ny5M4hb4x5PSxEREVVxhYWFmkdxcbFLma5du2LTpk04fPgwAODbb7/F1q1bceONN5rWm56ejpycHKxbtw6SJCE/Px/vvPMObrrpJk29e/fuVULS0aNHsW7dOk2ZUGPLDRERURiIogTRz0H45OVTU1M106dOnYpp06Zppo0fPx6FhYVIS0uDzWaDIAiYMWMGBgwYYFp/t27dsGLFCtx5550oKiqCw+FAnz598OKLLypl7r77bvz555+46qqrIEkSHA4HHnzwQUyYMMGvbfMHW26IiIiquJycHBQUFCiPrKwslzJvv/02VqxYgZUrV2Lfvn1Yvnw5nn76aSxfvty03h9++AGjRo3ClClTsHfvXqxfvx6//fYbHnzwQaXM5s2bMXPmTLz00kvYt28f1qxZg48//hjTp08PyrZ6gyMUExERlQnlCMXbf8gNyAjF6W0aebW+qampGD9+PDIzM5VpTz31FN544w389NNPhsvce++9KCoqwurVq5VpW7duRffu3XHs2DGkpKSge/fuuPLKKzFv3jylzBtvvIEHHngAZ8+ehdUa+nYUttwQERFVA+fOnXMJGjabDaIo+rwMAOUScm/KhBr73BAREVUDffr0wYwZM9CkSRO0bdsW+/fvx/z58zFkyBClTFZWFnJzc/H6668rywwbNgyLFi1CRkYGjh8/jtGjR+OKK65Aw4YNlTLz58/HZZddhi5duuDIkSOYPHky+vTpo4ScUGO4ISIiCgNBkiD42bLhy/ILFy7E5MmT8fDDD+PEiRNo2LAhhg8fjilTpihljh8/juzsbOX5oEGDcObMGbzwwgt47LHHULt2bfzrX//SXAo+adIkWCwWTJo0Cbm5uWjQoIESpMKFfW6IiIjKhLLPzdbv/whIn5ur2jbm8U2HfW6IiIgoojDcEBERUURhnxsiIqIwEEQJgp+D+Pm7fKRiyw0RERFFFIYbIiIiiigMN0RERBRRGG6IiIgoorBDMRERURiIovPhbx3kii03REREFFEYboiIiCiiMNwQERFRRGG4ISIioojCDsVERERhIEoSRD/vXe3v8pGKLTdEREQUURhuiIiIKKIw3BAREVFEYbghIiKiiMIOxURERGEgiRJE0b8OwZKfy0cqttwQERFRRGG4ISIioojCcENEREQRhX1u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A2+99Ra6dOkCAEhPT8fEiRNRWlqKqKgoAMDGjRvRqlUr1KlTRymzadMmjB49Wqlr48aNSE9P92W1iYiIqBoJyiB+TZo00Ty/4IILAAAtW7ZE48aNAQB33303nnjiCQwdOhTjxo3DwYMH8dxzz+HZZ59Vlhs1ahR69OiBZ555Br1798aqVauwZ88ezeXiRERERGphG6E4ISEBn376KTIzM9GpUyfUr18fU6ZMwQMPPKCU6dq1K1auXIlJkyZhwoQJuOiii/D++++jXbt24VptIiKigBAFARarnyMU+3lX8UgVknDTrFkzSJLkMr1Dhw746quv3C7br18/9OvXL1irRkRERBGGN84kIiKiiMJwQ0RERBGF4YaIiIgiCsMNERFRODhKAvOooNmzZ8NisWiGW3Fn1apVsFgs6Nu3r2a6JEmYMmUKUlJSEBcXh549e+Lnn3+u8HoFAsMNERFRNbN79268/PLL6NChg1flf/vtNzz++OPo3r27y7y5c+fi+eefx+LFi7Fz507UrFkTGRkZKCoqCvRqe43hhoiIqBo5e/YsBgwYgFdeeUUZNNcdQRAwYMAAPPHEE2jRooVmniRJWLBgASZNmoRbbrkFHTp0wOuvv45jx47h/fffD9IWeMZwQ0REVMUVFhZqHsXFxaZlMzMz0bt3b/Ts2dOrup988kkkJiZi6NChLvN+/fVX5OXlaepKSEhAly5dsH37dt83JEDCNogfERFRtSY4AGup/3UASE1N1UyeOnUqpk2b5lJ81apV2LdvH3bv3u1V9Vu3bsV///tffPPNN4bz8/LyAABJSUma6UlJScq8cGC4ISIiquJycnIQHx+vPDe6eXROTg5GjRqFjRs3IjY21mOdZ86cwb333otXXnkF9evXD+j6BhvDDRERURUXHx+vCTdG9u7dixMnTqBjx47KNEEQ8OWXX+KFF15AcXExbDabMu+XX37Bb7/9hj59+ijTRFEEANjtdhw6dAjJyckAgPz8fKSkpCjl8vPzcemllwZi0yqE4YaIiKgauO6663DgwAHNtMGDByMtLQ3jxo3TBBsASEtLcyk/adIknDlzBs899xxSU1MRFRWF5ORkbNq0SQkzhYWF2LlzJx566KGgbo87DDdERETVQK1atVxuPF2zZk3Uq1dPmX7fffehUaNGmDVrFmJjY13K165dGwA000ePHo2nnnoKF110EZo3b47JkyejYcOGLuPhhBLDDRERUTiIpYBg81zOUx0BlJ2dDavVtwup//Of/+Cff/7BAw88gNOnT+Oqq67C+vXrverXEywWyeh23RGmsLAQCQkJKCgo8HhOkoiIqq9QHC/k14j513RY7P4FAMlRhOLPJ/P4psNxboiIiCiiMNwQERFRRGG4ISIioojCDsVEREThIDgAi8P/OsgFW26IiIgoojDcEBERUURhuCEiIqKIwnBDREREEYUdiomIiMKhtASQ/GxjcJQEZl0iDFtuiIiIKKIw3BAREVFEYbghIiKiiMI+N0REROEgOACLn3f15iB+hthyQ0RERBGF4YaIiIgiCsMNERERRRSGGyIiIooo7FBMREQUDkIpYPGzjUHws0NyhGLLDREREUUUhhsiIiKKKAw3REREFFEYboiIiCiisEMxERFROAglACwBqIP02HJDREREEYXhhoiIiCIKww0RERFFFIYbIiIiiigMN0REROEgCIDg8PMheP1yixYtQocOHRAfH4/4+Hikp6fjk08+MS1/zTXXwGKxuDx69+6tKffjjz/i5ptvRkJCAmrWrInLL78c2dnZFd4tgcCrpYiIiKqBxo0bY/bs2bjooosgSRKWL1+OW265Bfv370fbtm1dyq9ZswYlJeVXY/3111+45JJL0K9fP2XaL7/8gquuugpDhw7FE088gfj4eHz//feIjY0NyTaZYbghIiKqBvr06aN5PmPGDCxatAg7duwwDDd169bVPF+1ahVq1KihCTcTJ07ETTfdhLlz5yrTWrZsGeA19121CDeSJAEACgsLw7wmRERUmcnHCfm4EVRCCfx+lbJxbvTHt5iYGMTExJgvJghYvXo1/vnnH6Snp3v1Uv/9739x1113oWbNmgAAURTx8ccf4z//+Q8yMjKwf/9+NG/eHFlZWejbt2/FtidQpGrgl19+kQDwwQcffPDBh1ePX375JWjHpPPnz0vJyckBW9cLLrjAZdrUqVMNX/u7776TatasKdlsNikhIUH6+OOPvVrnnTt3SgCknTt3KtOOHz8uAZBq1KghzZ8/X9q/f780a9YsyWKxSJs3bw7ErqowiySFIp6G1+nTp1GnTh1kZ2cjISEh3KsTNoWFhUhNTUVOTg7i4+PDvTphw/3gxP3gxP3gxP3gVFBQgCZNmuDvv/9G7dq1g/Y6RUVFmv4s/pAkCRaLdqRjs5abkpISZGdno6CgAO+88w5effVVbNmyBW3atHH7GsOHD8f27dvx3XffKdOOHTuGRo0aoX///li5cqUy/eabb0bNmjXx5ptv+rllFVctTktZrc6LwhISEqr1H61M7ilf3XE/OHE/OHE/OHE/OMnHjWCJjY0NS6fb6OhoXHjhhQCATp06Yffu3Xjuuefw8ssvmy7zzz//YNWqVXjyySc10+vXrw+73e4SjFq3bo2tW7cGfuV9wEvBiYiIqilRFFFcXOy2zOrVq1FcXIx77rlHMz06OhqXX345Dh06pJl++PBhNG3aNODr6otq0XJDRERU3WVlZeHGG29EkyZNcObMGaxcuRKbN2/Ghg0bAAD33XcfGjVqhFmzZmmW++9//4u+ffuiXr16LnWOHTsWd955J66++mpce+21WL9+PT788ENs3rw5FJtkqlqEm5iYGEydOtVtz/HqgPvBifvBifvBifvBifvBKZL3w4kTJ3Dffffh+PHjSEhIQIcOHbBhwwZcf/31AIDs7GyX03GHDh3C1q1b8emnnxrWeeutt2Lx4sWYNWsWRo4ciVatWuHdd9/FVVddFfTtcadadCgmIiKi6oN9boiIiCiiMNwQERFRRGG4ISIioojCcENEREQRJWLCzW+//YahQ4eiefPmiIuLQ8uWLTF16lSXESC/++47dO/eHbGxsUhNTdXc7Eu2evVqpKWlITY2Fu3bt8e6detCtRlB8+KLL6JZs2aIjY1Fly5dsGvXrnCvUkDNmjULl19+OWrVqoXExET07dvXZeyFoqIiZGZmol69erjgggtw++23Iz8/X1MmOzsbvXv3Ro0aNZCYmIixY8fC4XCEclMCavbs2bBYLBg9erQyrbrsh9zcXNxzzz2oV68e4uLi0L59e+zZs0eZL0kSpkyZgpSUFMTFxaFnz574+eefNXWcOnUKAwYMQHx8PGrXro2hQ4fi7Nmzod6UChMEAZMnT9Z8L06fPl1z36RI3A9ffvkl+vTpg4YNG8JiseD999/XzA/UNntzPKEwCduNHwLsk08+kQYNGiRt2LBB+uWXX6S1a9dKiYmJ0mOPPaaUKSgokJKSkqQBAwZIBw8elN58800pLi5Oevnll5UyX3/9tWSz2aS5c+dKP/zwgzRp0iQpKipKOnDgQDg2KyBWrVolRUdHS0uXLpW+//57adiwYVLt2rWl/Pz8cK9awGRkZEjLli2TDh48KH3zzTfSTTfdJDVp0kQ6e/asUubBBx+UUlNTpU2bNkl79uyRrrzySqlr167KfIfDIbVr107q2bOntH//fmndunVS/fr1paysrHBskt927dolNWvWTOrQoYM0atQoZXp12A+nTp2SmjZtKg0aNEjauXOndPToUWnDhg3SkSNHlDKzZ8+WEhISpPfff1/69ttvpZtvvllq3ry5dP78eaXMDTfcIF1yySXSjh07pK+++kq68MILpf79+4djkypkxowZUr169aSPPvpI+vXXX6XVq1dLF1xwgfTcc88pZSJxP6xbt06aOHGitGbNGgmA9N5772nmB2KbvTmeUPhETLgxMnfuXKl58+bK85deekmqU6eOVFxcrEwbN26c1KpVK+X5HXfcIfXu3VtTT5cuXaThw4cHf4WD5IorrpAyMzOV54IgSA0bNpRmzZoVxrUKrhMnTkgApC1btkiSJEmnT5+WoqKipNWrVytlfvzxRwmAtH37dkmSnF+IVqtVysvLU8osWrRIio+P13xmqoIzZ85IF110kbRx40apR48eSripLvth3Lhx0lVXXWU6XxRFKTk5WZo3b54y7fTp01JMTIz05ptvSpIkST/88IMEQNq9e7dS5pNPPpEsFouUm5sbvJUPoN69e0tDhgzRTLvtttukAQMGSJJUPfaDPtwEapu9OZ5Q+ETMaSkjBQUFqFu3rvJ8+/btuPrqqxEdHa1My8jIwKFDh/D3338rZXr27KmpJyMjA9u3bw/NSgdYSUkJ9u7dq9kmq9WKnj17Vtlt8kZBQQEAKO//3r17UVpaqtkPaWlpaNKkibIftm/fjvbt2yMpKUkpk5GRgcLCQnz//fchXHv/ZWZmonfv3i6f5eqyHz744AN07twZ/fr1Q2JiIi677DK88soryvxff/0VeXl5mv2QkJCALl26aPZD7dq10blzZ6VMz549YbVasXPnztBtjB+6du2KTZs24fDhwwCAb7/9Flu3bsWNN94IoPrsB7VAbbM3xxMKn4gdofjIkSNYuHAhnn76aWVaXl4emjdvriknf4Hn5eWhTp06yMvL03ypy2Xy8vKCv9JB8Oeff0IQBMNt+umnn8K0VsEliiJGjx6Nbt26oV27dgCc7290dLTLXX7V763Zey/PqypWrVqFffv2Yffu3S7zqst+OHr0KBYtWoQxY8ZgwoQJ2L17N0aOHIno6GgMHDhQ2Q53f+t5eXlITEzUzLfb7ahbt26V2Q/jx49HYWEh0tLSYLPZIAgCZsyYgQEDBgBAtdkPaoHaZm+OJxQ+lb7lZvz48bBYLG4f+oN0bm4ubrjhBvTr1w/Dhg0L05pTuGRmZuLgwYNYtWpVuFcl5HJycjBq1CisWLEiLHccrixEUUTHjh0xc+ZMXHbZZXjggQcwbNgwLF68ONyrFlJvv/02VqxYgZUrV2Lfvn1Yvnw5nn76aSxfvjzcq0YUVJU+3Dz22GP48ccf3T5atGihlD927BiuvfZadO3aFUuWLNHUlZyc7HJViPw8OTnZbRl5flVTv3592Gy2iNomd0aMGIGPPvoIX3zxBRo3bqxMT05ORklJCU6fPq0pr94P3nw+Kru9e/fixIkT6NixI+x2O+x2O7Zs2YLnn38edrsdSUlJ1WI/pKSkoE2bNppprVu3RnZ2NoDy7XD3d5GcnIwTJ05o5jscDpw6darK7IexY8di/PjxuOuuu9C+fXvce++9ePTRR5UbI1aX/aAWqG2OhL+TSFbpw02DBg2Qlpbm9iGf88zNzcU111yDTp06YdmyZS43AEtPT8eXX36J0tJSZdrGjRvRqlUrpQkxPT0dmzZt0iy3ceNGpKenB3lLgyM6OhqdOnXSbJMoiti0aVOV3SYjkiRhxIgReO+99/D555+7NBd36tQJUVFRmv1w6NAhZGdnK/shPT0dBw4c0Hypbdy4EfHx8S4Hysrquuuuw4EDB/DNN98oj86dO2PAgAHK/6vDfujWrZvLUACHDx9G06ZNAQDNmzdHcnKyZj8UFhZi586dmv1w+vRp7N27Vynz+eefQxRFdOnSJQRb4b9z5865fA/abDaIogig+uwHtUBtszfHEwqjcPdoDpQ//vhDuvDCC6XrrrtO+uOPP6Tjx48rD9np06elpKQk6d5775UOHjworVq1SqpRo4bLpeB2u116+umnpR9//FGaOnVqRFwKHhMTI7322mvSDz/8ID3wwANS7dq1NVfDVHUPPfSQlJCQIG3evFnz3p87d04p8+CDD0pNmjSRPv/8c2nPnj1Senq6lJ6ersyXL4Hu1auX9M0330jr16+XGjRoUKUugTaivlpKkqrHfti1a5dkt9ulGTNmSD///LO0YsUKqUaNGtIbb7yhlJk9e7ZUu3Ztae3atdJ3330n3XLLLYaXA1922WXSzp07pa1bt0oXXXRRpb4EWm/gwIFSo0aNlEvB16xZI9WvX1/6z3/+o5SJxP1w5swZaf/+/dL+/fslANL8+fOl/fv3S7///rskSYHZZm+OJxQ+ERNuli1bJgEwfKh9++230lVXXSXFxMRIjRo1kmbPnu1S19tvvy1dfPHFUnR0tNS2bVvp448/DtVmBM3ChQulJk2aSNHR0dIVV1wh7dixI9yrFFBm7/2yZcuUMufPn5cefvhhqU6dOlKNGjWkW2+9VRN+JUmSfvvtN+nGG2+U4uLipPr160uPPfaYVFpaGuKtCSx9uKku++HDDz+U2rVrJ8XExEhpaWnSkiVLNPNFUZQmT54sJSUlSTExMdJ1110nHTp0SFPmr7/+kvr37y9dcMEFUnx8vDR48GDpzJkzodwMvxQWFkqjRo2SmjRpIsXGxkotWrSQJk6cqLl8ORL3wxdffGH4fTBw4EBJkgK3zd4cTyg8LJKkGqqSiIiIqIqr9H1uiIiIiHzBcENEREQRheGGiIiIIgrDDREREUUUhhsiIiKKKAw3REREFFEYboiIiCiiMNwQERFRRGG4ISIioojCcENEREQRheGGiIiIIgrDDREREUWU/welz36h6Gyh8wAAAABJRU5ErkJggg==\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "x,y = rectangle(3,3, wt.diameter()*5)\n", "wfm(x,y,wd=[270],ws=10, yaw=[20,-10,0], tilt=0).flow_map().plot_wake_map()" ] }, { "cell_type": "markdown", "id": "08aa0f26", "metadata": {}, "source": [ "#### Gradients of AEP\n", "The gradients of the AEP can be computed by the `aep_gradients` method of `WindFarmModel` with respect to most of the input arguments. " ] }, { "cell_type": "code", "execution_count": 20, "id": "b6c604b5", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Gradients of AEP wrt. x [array([-0.00127428, -0.0001223 , 0.00139658])]\n", "Gradients of AEP wrt. y [array([ 0.00021054, -0.00043951, 0.00022897])]\n", "Gradients of AEP wrt. ['x', 'y'] [array([-0.00127428, -0.0001223 , 0.00139658]), array([ 0.00021054, -0.00043951, 0.00022897])]\n", "Gradients of AEP wrt. h [array([-2.43899073e-04, -8.14497165e-06, 2.52044045e-04])]\n" ] } ], "source": [ "for wrt_arg in ['x','y',['x','y'],'h']:\n", " daep = wfm.aep_gradients(gradient_method=autograd, wrt_arg=wrt_arg)(x=x,y=y, h=[69,70,71], yaw=[20,-10,1], tilt=0)\n", " print (f\"Gradients of AEP wrt. {wrt_arg}\", daep)" ] }, { "cell_type": "markdown", "id": "341ca41e", "metadata": {}, "source": [ "**AEP gradients with respect to (x,y) or (xy)**\n", "\n", "When computing gradients with autograd, a significant speed up (40-50%) can be obtained by computing the gradients with respect to both `x` and `y` in one go:\n", "\n", "```\n", "wfm.aep_gradients(gradient_method=autograd, wrt_arg=['x','y'])(x,y)\n", "```\n", "\n", "Instead of first computing with respect to `x` and then with respect to `y`,\n", "\n", "```\n", "wfm.aep_gradients(gradient_method=autograd, wrt_arg='x')(x,y)\n", "wfm.aep_gradients(gradient_method=autograd, wrt_arg='y')(x,y)\n", "```\n", "\n", "Functionality to do this automatically under the hood has been implemented in the autograd function.\n", "\n", "For finite difference and complex step, the speed is similar." ] }, { "cell_type": "markdown", "id": "cc3d8958", "metadata": {}, "source": [ " from tqdm.notebook import tqdm\n", " wfm = BastankhahGaussian(site, wt)\n", "\n", " def get_aep(wrt_arg_lst, method):\n", " return lambda x,y: [wfm.aep_gradients(gradient_method=method, wrt_arg=wrt_arg)(x,y) for wrt_arg in wrt_arg_lst]\n", "\n", " N_lst = np.arange(100,600,100) # number of wt\n", " D = wt.diameter()\n", " method=autograd\n", " res = [(wrt_arg_lst,method, [np.mean(timeit(get_aep(wrt_arg_lst, method=method), min_runs=1)(*rectangle(N,5,D*5))[1]) \n", " for N in tqdm(N_lst)])\n", " for wrt_arg_lst in (['x','y'],[['x','y']])]\n", "\n", " ax1,ax2 = plt.subplots(1,2, figsize=(12,4))[1]\n", " ax1.plot(N_lst, res[0][2], label=f\"Wrt. (x), (y), {res[0][1].__name__}\")[0].get_color()\n", " ax1.plot(N_lst, res[1][2], label=f\"Wrt. (x, y), {res[1][1].__name__}\")\n", " ax2.plot(N_lst, (np.array(res[0][2]) - res[1][2])/res[0][2]*100)\n", "\n", " setup_plot(ax=ax1, title='Time to compute AEP gradients', ylabel='Time [s]', xlabel='Number of wind turbines')\n", " setup_plot(ax=ax2, title=\"Speedup of (xy) compared to (x,y)\", ylabel='Speedup [%]', xlabel='Number of wind turbines', ylim=[0,60])" ] }, { "cell_type": "markdown", "id": "dc244d14", "metadata": {}, "source": [ "![image2.png](images/Optimization_xy.svg)" ] }, { "cell_type": "markdown", "id": "a68caa07", "metadata": {}, "source": [ "**Gradients of WS, TI, Power and custom functions**\n", "\n", "The normal `WindFarmModel.__call__` method, which is invoked by `wfm(x,y,...)` returns a xarray Dataset SimulationResult. This step breaks the autograd data flow. We therefore need to specify the argument `return_simulationResult=False`.\n", "\n", "The relevant output is:\n", "\n", " WS_eff_ilk, TI_eff_ilk, power_ilk, ct_ilk, *_ = WindFarmModel(..., return_simulationResult=False)\n", "\n", "**Below are a two basic examples**" ] }, { "cell_type": "markdown", "id": "739818e1", "metadata": {}, "source": [ "**1) Mean power wrt (x,y) - 2 x 1D inputs, one output**\n", "\n", "Compute the gradients of the mean power with respect to both x and y.\n", "\n", "Note, there is no need to convert it to a one-merged-input function, as the autograd method in PyWake does this under the hood" ] }, { "cell_type": "code", "execution_count": null, "id": "563ed183", "metadata": {}, "outputs": [], "source": [ "def mean_power(x,y):\n", " power_ilk = wfm(x=x, y=y, yaw=0, tilt=0, return_simulationResult=False)[2] # index 2 = power_ilk\n", " return power_ilk.mean()\n", "\n", "mean_power_gradients_function = autograd(mean_power,vector_interdependence=True, argnum=[0,1])\n", "d_aep = mean_power_gradients_function(x, y)\n", "\n", "print ('AEP Gradients:',d_aep)\n", "print (np.shape(d_aep))" ] }, { "cell_type": "markdown", "id": "24a8ca98", "metadata": {}, "source": [ "**2) Power per wind speed wrt. x - 1D input, 1D output**\n", "\n", "Compute the gradients of the power per wind speed (i.e. power meaned over wind turbine and direction) with respect to x." ] }, { "cell_type": "code", "execution_count": null, "id": "c43dd8e6", "metadata": {}, "outputs": [], "source": [ "def ws_power(x):\n", " power_ilk = wfm(x=x, y=y, yaw=0, tilt=0, return_simulationResult=False)[2] # index 2 = power_ilk\n", " return power_ilk.mean((0,1)) # mean power pr wind speed\n", "\n", "ws_power_gradients_function = autograd(ws_power,vector_interdependence=True)\n", "np.shape(ws_power_gradients_function(x))" ] }, { "cell_type": "markdown", "id": "4c8de853", "metadata": {}, "source": [ "**Manual gradient functions for autograd**\n", "\n", "Autograd can be supplemented with custom gradient functions, that bypass the automatic differentiation process and returns the gradients directly.\n", "This is usefull for functions that cannot be analytically differentiated by autograd, e.g. interpolation functions. Some commonly used functions have been implemented in `py_wake.utils.gradients`, e.g.\n", "\n", "- trapz (np.trapz)\n", "- interp (np.interp)\n", "- PchipInterpolator (scipy.PchipInterpolator)\n", "- UnivariateSpline (scipy.UnivariateSpline)\n", "\n", "\n", "Specifying the gradient functions and ensuring that they return the gradients in the right dimensions is, however, not trivial. \n", "\n", "It was expected that the computational time could be reduced by specifying maually-implemented gradient functions of some time-critical functions. An example is shown below, where functions to calculate the gradients of `calc_deficit` of the `BastankhahGaussianDeficit` with respect to all inputs are implemented." ] }, { "cell_type": "code", "execution_count": null, "id": "90122db9", "metadata": {}, "outputs": [], "source": [ "from py_wake.deficit_models.gaussian import BastankhahGaussianDeficit\n", "from py_wake.utils.gradients import set_vjp\n", "from py_wake.utils.model_utils import method_args\n", "import warnings\n", "\n", "class BastankhahGaussianDeficitGradients(BastankhahGaussianDeficit):\n", " def __init__(self, k=0.0324555, ceps=.2, use_effective_ws=False):\n", " BastankhahGaussianDeficit.__init__(self, k=k, ceps=ceps, use_effective_ws=use_effective_ws)\n", " self._additional_args = method_args(self.calc_deficit)\n", " self.use_effective_ws = use_effective_ws\n", " self.calc_deficit = set_vjp([self.get_ddeficit_dx(i) for i in range(6)])(self.calc_deficit)\n", "\n", " @property\n", " def additional_args(self):\n", " return BastankhahGaussianDeficit.additional_args.fget(self) | self._additional_args\n", "\n", " def calc_deficit(self, WS_ilk, WS_eff_ilk, D_src_il, dw_ijlk, cw_ijlk, ct_ilk, **kwargs):\n", " return BastankhahGaussianDeficit.calc_deficit(self, D_src_il, dw_ijlk, cw_ijlk, ct_ilk,\n", " WS_ilk=WS_ilk, WS_eff_ilk=WS_eff_ilk, **kwargs)\n", "\n", " def get_ddeficit_dx(self, argnum):\n", " import numpy as np # override autograd.numpy\n", " from numpy import newaxis as na\n", "\n", " def ddeficit_dx(ans, WS_ilk, WS_eff_ilk, D_src_il, dw_ijlk, cw_ijlk, ct_ilk, **kwargs):\n", " _, _, _, K = np.max([dw_ijlk.shape, cw_ijlk.shape, WS_ilk[:, na].shape], 0)\n", " eps = 0\n", " WS_ref_ilk = (WS_ilk, WS_eff_ilk)[self.use_effective_ws]\n", " ky_ilk = self.k_ilk(**kwargs)\n", " beta_ilk = 0.5 * (1 + 1 / np.sqrt(1 - ct_ilk))\n", " sigma_ijlk = ky_ilk[:, na] * dw_ijlk * (dw_ijlk > eps) + \\\n", " .2 * D_src_il[:, na, :, na] * np.sqrt(beta_ilk[:, na])\n", " a_ijlk = ct_ilk[:, na] / (8. * (sigma_ijlk / D_src_il[:, na, :, na])**2)\n", " sqrt_ijlk = np.sqrt(np.maximum(0., 1 - a_ijlk))\n", " layout_factor_ijlk = WS_ref_ilk[:, na] * (dw_ijlk > eps) * np.exp(-0.5 * (cw_ijlk / sigma_ijlk)**2)\n", " with warnings.catch_warnings():\n", " warnings.simplefilter(\"ignore\")\n", " if argnum == 0:\n", " dWS = ans / WS_ref_ilk[:, na]\n", " elif argnum == 1:\n", " dWS_eff = ans / WS_eff_ilk[:, na]\n", " elif argnum == 2:\n", " dD_sqrt_pos = (a_ijlk * (1 / D_src_il[:, na, :, na] - 0.2 * np.sqrt(beta_ilk[:, na]) / sigma_ijlk) / sqrt_ijlk +\n", " (1 - sqrt_ijlk) * (cw_ijlk**2 / sigma_ijlk**3) * .2 * np.sqrt(beta_ilk[:, na])) * layout_factor_ijlk\n", " dD_sqrt_neg = (cw_ijlk**2 / sigma_ijlk**3) * .2 * np.sqrt(beta_ilk[:, na]) * layout_factor_ijlk\n", " dD = np.where(sqrt_ijlk == 0, dD_sqrt_neg, dD_sqrt_pos)\n", " elif argnum == 3:\n", " ddw_sqrt_pos = (-a_ijlk / sqrt_ijlk + (1 - sqrt_ijlk) * (cw_ijlk / sigma_ijlk)**2) * \\\n", " ky_ilk[:, na] / sigma_ijlk * layout_factor_ijlk\n", " ddw_sqrt_neg = (cw_ijlk / sigma_ijlk)**2 * ky_ilk[:, na] / sigma_ijlk * layout_factor_ijlk\n", " ddw = np.where(sqrt_ijlk == 0, ddw_sqrt_neg, ddw_sqrt_pos)\n", " elif argnum == 4:\n", " dcw = ans * (- cw_ijlk / (sigma_ijlk**2))\n", " elif argnum == 5:\n", " dsigmadct_ilk = 0.2 * D_src_il[:, :, na] / (8 * np.sqrt(beta_ilk * (1 - ct_ilk)**3))\n", " dct_sqrt_pos = (a_ijlk * (1 / (2 * ct_ilk[:, na]) - dsigmadct_ilk[:, na] / sigma_ijlk) / sqrt_ijlk +\n", " (1 - sqrt_ijlk) * (cw_ijlk**2 / sigma_ijlk**3) * dsigmadct_ilk[:, na]) * layout_factor_ijlk\n", " dct_sqrt_neg = (cw_ijlk**2 / sigma_ijlk**3) * dsigmadct_ilk[:, na] * layout_factor_ijlk\n", " dct = np.where(sqrt_ijlk == 0, dct_sqrt_neg, dct_sqrt_pos)\n", "\n", " def dWS_ilk(g):\n", " r = g * dWS[:g.shape[0], :g.shape[1], :g.shape[2], :g.shape[3]]\n", " j = np.r_[np.where(g)[1], 0][0]\n", " ilk = (slice(None), j)\n", " return r[ilk]\n", "\n", " def dWS_eff_ilk(g):\n", " r = g * dWS_eff[:g.shape[0], :g.shape[1], :g.shape[2], :g.shape[3]]\n", " j = np.r_[np.where(g)[1], 0][0]\n", " ilk = (slice(None), j)\n", " return r[ilk]\n", "\n", " def dD_src_il(g):\n", " r = g * dD[:g.shape[0], :g.shape[1], :g.shape[2], :g.shape[3]]\n", " j = np.r_[np.where(g)[1], 0][0]\n", " k = np.r_[np.where(g)[3], 0][0]\n", " il = (slice(None), j, slice(None), k)\n", " return r[il]\n", "\n", " def ddw_ijlk(g):\n", " r = g * ddw[:g.shape[0], :g.shape[1], :g.shape[2], :g.shape[3]]\n", " if dw_ijlk.shape[-1] == 1 and K > 1:\n", " # If dw_ijlk is independent of ws, i.e. last dimension is 1 while len(ws)>1\n", " # then we need to sum the gradients wrt. wind speeds\n", " r = r.sum(3)[:, :, :, na]\n", " return r[:, :, :, 0:dw_ijlk.shape[3]]\n", "\n", " def dcw_ijlk(g):\n", " r = g * dcw[:g.shape[0], :g.shape[1], :g.shape[2], :g.shape[3]]\n", " if cw_ijlk.shape[-1] == 1 and K > 1:\n", " # If cw_ijlk is independent of ws, i.e. last dimension is 1 while len(ws)>1\n", " # then we need to sum the gradients wrt. wind speeds\n", " r = r.sum(3)[:, :, :, na]\n", " return r[:, :, :, 0:cw_ijlk.shape[3]]\n", "\n", " def dct_ilk(g):\n", " r = g * dct[:g.shape[0], :g.shape[1], :g.shape[2], :g.shape[3]]\n", " j = np.r_[np.where(g)[1], 0][0]\n", " ilk = (slice(None), j)\n", " return r[ilk]\n", "\n", " return [dWS_ilk, dWS_eff_ilk, dD_src_il, ddw_ijlk, dcw_ijlk, dct_ilk][argnum]\n", " return ddeficit_dx\n" ] }, { "cell_type": "markdown", "id": "b3e2220c", "metadata": {}, "source": [ "In this example, however, the model with manual gradient functions performs worse than the original where autograd derives the gradient functions automatically." ] }, { "cell_type": "code", "execution_count": null, "id": "c3c84e8a", "metadata": {}, "outputs": [], "source": [ "from py_wake.wind_farm_models import PropagateDownwind\n", "from py_wake.examples.data.hornsrev1 import wt16_x, wt16_y\n", "\n", "wfm_autograd = PropagateDownwind(site, wt, BastankhahGaussianDeficit())\n", "wfm_manual = PropagateDownwind(site, wt, BastankhahGaussianDeficitGradients())\n", "\n", "ws = np.arange(4,26)\n", "x,y = wt16_x, wt16_y\n", "ref, t_auto = timeit(lambda: wfm_autograd.aep_gradients(gradient_method=autograd, wrt_arg=['x','y'])(x, y, ws=ws))()\n", "res, t_manual = timeit(lambda: wfm_manual.aep_gradients(gradient_method=autograd, wrt_arg=['x','y'])(x, y, ws=ws))()\n", "np.testing.assert_array_almost_equal(res, ref, 4)\n", "\n", "print (\"Time, automatic gradients\", np.mean(t_auto))\n", "print (\"Time, manual gradients\", np.mean(t_manual))" ] }, { "cell_type": "markdown", "id": "ec141aea", "metadata": {}, "source": [ "### Comparison - Scalability of AEP gradients\n", "\n", "As seen in the previous comparison of scalability example, the autograd scales much better with the number of input variables than finite difference and complex step. \n", "\n", "When considering large wind farms, autograd is convincingly outperforming both finite difference and complex step, but it also requires much more memory.\n", "\n", "**The following plots are based on simulation performance on the Sophia HPC cluster.**" ] }, { "cell_type": "code", "execution_count": null, "id": "12100684", "metadata": {}, "outputs": [], "source": [ "data = {\n", " \"fd\":((10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 150,200, 250, 300),\n", " [0.89, 3.06, 7.13, 14.77, 24.46, 41.06, 64.46, 105.98, 140.76, 171.53, 590.46, 1501.62, 2957.65, 4904.31],\n", " [14.1, 31.9, 58.8, 92.2, 135.3, 184.2, 240.6, 303.1, 373.6, 450.7, 946.5, 1620.8, 2470.1, 3500.5]), \n", "\"cs\":((10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 150, 200, 250),\n", " [1.18, 4.9, 12.44, 25.58, 44.56, 72.82, 115.46, 171.42, 245.15, 312.9, 960.64, 2883.04, 5345.27],\n", " [22.3, 55.7, 107.6, 171.0, 244.1, 338.7, 442.7, 566.9, 690.9, 839.0, 1787.4, 3088.9, 4742.4]),\n", "\"autograd\":((10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 150, 200, 250, 300, 350, 400, 450, 500),\n", " [0.32, 0.78, 1.52, 2.49, 3.75, 5.33, 7.14, 9.12, 11.43, 14.02, 32.35, 53.73, 84.94, 130.53, 169.34, 229.62, 270.19, 342.01],\n", " [26.7, 92.9, 196.4, 340.0, 525.9, 749.6, 1011.1, 1312.2, 1656.0, 2039.7, 4555.0, 8066.8, 12569.9, 18072.6, 24568.2, 32069.6, 40558.9, 50036.6]),\n", " }\n", "ax1,ax2 = plt.subplots(1,2, figsize=(12,4))[1]\n", "for k,(n,t,m) in data.items():\n", " ax1.plot(n,np.array(t)/60, label=k)\n", " ax2.plot(n,np.array(m)/1024, label=k)\n", "setup_plot(ax1, xlabel='Number of wind turbines', ylabel='Time [min]')\n", "setup_plot(ax2, xlabel='Number of wind turbines', ylabel='Memory usage [GB]')\n", "plt.savefig('test.png', dpi=600)\n", "import os\n", "os.getcwd()" ] }, { "cell_type": "markdown", "id": "d087399e", "metadata": {}, "source": [ "## Chunkify and Parallelization\n", "\n", "PyWake makes it easy to chunkify the run wind farm simulations see also section [Run Wind Farm Simulation](https://topfarm.pages.windenergy.dtu.dk/PyWake/notebooks/RunWindFarmSimulation.html).\n", "\n", "This construct is also available and usefull when computing gradients to reduce the memory usage and/or speed up the computation by parallel execution.\n", "\n", "The arguments, `wd_chunks`, `ws_chunks` and `n_cpu` are available in the `WindFarmModel.aep(...)`, `WindFarmModel(...)` and `WindFarmModel.aep_gradients(...)` methods.\n" ] }, { "cell_type": "code", "execution_count": null, "id": "da77d44a", "metadata": {}, "outputs": [], "source": [ "from py_wake import np\n", "import matplotlib.pyplot as plt\n", "\n", "from py_wake.literature.noj import Jensen_1983\n", "from py_wake.examples.data.hornsrev1 import Hornsrev1Site, HornsrevV80, wt_x, wt_y, wt16_x, wt16_y\n", "from py_wake.utils.profiling import timeit\n", "import multiprocessing\n", "from py_wake.utils.gradients import autograd, fd\n", "from py_wake.utils.plotting import setup_plot" ] }, { "cell_type": "code", "execution_count": null, "id": "e20ff75b", "metadata": {}, "outputs": [], "source": [ "site = Hornsrev1Site()\n", "wt = HornsrevV80()\n", "wfm = Jensen_1983(site, wt)\n", "x,y = wt16_x,wt16_y" ] }, { "cell_type": "markdown", "id": "d52b3a61", "metadata": {}, "source": [ "### AEP\n", "\n", "Computing AEP in parallel chunks.\n", "\n", "Setting `n_cpu=None`, splits the problem into `N` wind direction chunks which is computed in parallel on `N` CPUs, where `N` is the number of CPUs on the machine. Alternatively, a number can be specified." ] }, { "cell_type": "code", "execution_count": null, "id": "1f8af440", "metadata": {}, "outputs": [], "source": [ "print('Total AEP: %f GWh'%wfm.aep(x, y, n_cpu=None))" ] }, { "cell_type": "markdown", "id": "1679a383", "metadata": {}, "source": [ "### WS, TI, Power and custom functions\n", "\n", "Computing mean power in parallel chunks" ] }, { "cell_type": "code", "execution_count": null, "id": "52e571fa", "metadata": {}, "outputs": [], "source": [ "def mean_power(x,y):\n", " power_ilk = wfm(x=x, y=y, n_cpu=None, return_simulationResult=False)[2] # index 2 = power_ilk\n", " return power_ilk.mean()\n", "\n", "print('Mean Power: %f MW'%(mean_power(x,y)/1e6))" ] }, { "cell_type": "markdown", "id": "6d97c071", "metadata": {}, "source": [ "### AEP gradients\n", "\n", "In the previous section, [Gradients of AEP](#Gradients-of-AEP), the `aep_gradients` method was used like this:" ] }, { "cell_type": "markdown", "id": "e8794831", "metadata": {}, "source": [ "```python\n", "gradient_function = wfm.aep_gradients(fd, wrt_arg='xy')\n", "daep = gradient_function(x=x,y=y)\n", "```" ] }, { "cell_type": "markdown", "id": "efe73a0a", "metadata": {}, "source": [ "When dealing with chunkification and/or parallelization, the `aep_gradients` must be used in a slightly different way:" ] }, { "cell_type": "code", "execution_count": null, "id": "5c5c8367", "metadata": {}, "outputs": [], "source": [ "daep = wfm.aep_gradients(autograd, wrt_arg=['x','y'], n_cpu=None, x=x, y=y)" ] }, { "cell_type": "markdown", "id": "14d7dc9c", "metadata": {}, "source": [ "Note, in this case, the arguments normally passed to `wfm.aep` (here `x` and `y`) are passed directly to the `wfm.aep_gradients` method as keyword arguments and the method returns the gradients results instead of a function." ] }, { "cell_type": "markdown", "id": "f29410f7", "metadata": {}, "source": [ "**The plot below shows the time it takes to compute the gradients of AEP with respect to x and y plotted as a function of number of wind turbines and CPUs**" ] }, { "cell_type": "markdown", "id": "23fb8d0f", "metadata": {}, "source": [ " from py_wake.utils import layouts \n", " from py_wake.utils.profiling import timeit\n", " from tqdm.notebook import tqdm\n", "\n", " n_lst = np.arange(100,600,100)\n", "\n", " def run(n, n_cpu):\n", " x,y = layouts.rectangle(n,20,5*wt.diameter())\n", " return (n, n_cpu, np.mean(timeit(wfm.aep_gradients)(autograd, ['x','y'], n_cpu=n_cpu, x=x,y=y)[1]))\n", "\n", " res = {f'{n_cpu} CPUs': np.array([run(n, n_cpu=n_cpu) for n in tqdm(n_lst)]) for n_cpu in [1, 4, 16, 32]}\n", "\n", " ax1,ax2 = plt.subplots(1,2, figsize=(12,4))[1]\n", " for k,v in res.items():\n", " n,n_cpu,t = v.T\n", " ax1.plot(n, t, label=k)\n", " ax2.plot(n, res['1 CPUs'][:,2]/n_cpu/t*100, label=k)\n", " setup_plot(ax=ax1,xlabel='No. wind turbines',ylabel='Time [s]')\n", " setup_plot(ax=ax2,xlabel='No. wind turbines',ylabel='CPU utilization [%]')\n", " plt.savefig('images/Optimization_time_cpuwt.svg')" ] }, { "attachments": { "Optimization_time_cpuwt.svg": { "image/svg+xml": [ "PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIKICAiaHR0cDovL3d3dy53My5vcmcvR3JhcGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEuZHRkIj4KPHN2ZyB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgd2lkdGg9Ijg2NHB0IiBoZWlnaHQ9IjI4OHB0IiB2aWV3Qm94PSIwIDAgODY0IDI4OCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2ZXJzaW9uPSIxLjEiPgogPG1ldGFkYXRhPgogIDxyZGY6UkRGIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgeG1sbnM6Y2M9Imh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL25zIyIgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4KICAgPGNjOldvcms+CiAgICA8ZGM6dHlwZSByZGY6cmVzb3VyY2U9Imh0dHA6Ly9wdXJsLm9yZy9kYy9kY21pdHlwZS9TdGlsbEltYWdlIi8+CiAgICA8ZGM6ZGF0ZT4yMDIyLTA1LTA2VDExOjQ5OjI1LjMxMzUwOTwvZGM6ZGF0ZT4KICAgIDxkYzpmb3JtYXQ+aW1hZ2Uvc3ZnK3htbDwvZGM6Zm9ybWF0PgogICAgPGRjOmNyZWF0b3I+CiAgICAgPGNjOkFnZW50PgogICAgICA8ZGM6dGl0bGU+TWF0cGxvdGxpYiB2My41LjEsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvPC9kYzp0aXRsZT4KICAgICA8L2NjOkFnZW50PgogICAgPC9kYzpjcmVhdG9yPgogICA8L2NjOldvcms+CiAgPC9yZGY6UkRGPgogPC9tZXRhZGF0YT4KIDxkZWZzPgogIDxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+KntzdHJva2UtbGluZWpvaW46IHJvdW5kOyBzdHJva2UtbGluZWNhcDogYnV0dH08L3N0eWxlPgogPC9kZWZzPgogPGcgaWQ9ImZpZ3VyZV8xIj4KICA8ZyBpZD0icGF0Y2hfMSI+CiAgIDxwYXRoIGQ9Ik0gMCAyODggCkwgODY0IDI4OCAKTCA4NjQgMCAKTCAwIDAgCkwgMCAyODggCnoKIiBzdHlsZT0iZmlsbDogbm9uZSIvPgogIDwvZz4KICA8ZyBpZD0iYXhlc18xIj4KICAgPGcgaWQ9InBhdGNoXzIiPgogICAgPHBhdGggZD0iTSAxMDggMjUyIApMIDQxMi4zNjM2MzYgMjUyIApMIDQxMi4zNjM2MzYgMzQuNTYgCkwgMTA4IDM0LjU2IAp6CiIgc3R5bGU9ImZpbGw6ICNmZmZmZmYiLz4KICAgPC9nPgogICA8ZyBpZD0ibWF0cGxvdGxpYi5heGlzXzEiPgogICAgPGcgaWQ9Inh0aWNrXzEiPgogICAgIDxnIGlkPSJsaW5lMmRfMSI+CiAgICAgIDxwYXRoIGQ9Ik0gMTIxLjgzNDcxMSAyNTIgCkwgMTIxLjgzNDcxMSAzNC41NiAKIiBjbGlwLXBhdGg9InVybCgjcDA2M2M4ZjVlYjgpIiBzdHlsZT0iZmlsbDogbm9uZTsgc3Ryb2tlOiAjYjBiMGIwOyBzdHJva2Utd2lkdGg6IDAuODsgc3Ryb2tlLWxpbmVjYXA6IHNxdWFyZSIvPgogICAgIDwvZz4KICAgICA8ZyBpZD0ibGluZTJkXzIiPgogICAgICA8ZGVmcz4KICAgICAgIDxwYXRoIGlkPSJtNTgzYjZlNWY1OSIgZD0iTSAwIDAgCkwgMCAzLjUgCiIgc3R5bGU9InN0cm9rZTogIzAwMDAwMDsgc3Ryb2tlLXdpZHRoOiAwLjgiLz4KICAgICAgPC9kZWZzPgogICAgICA8Zz4KICAgICAgIDx1c2UgeGxpbms6aHJlZj0iI201ODNiNmU1ZjU5IiB4PSIxMjEuODM0NzExIiB5PSIyNTIiIHN0eWxlPSJzdHJva2U6ICMwMDAwMDA7IHN0cm9rZS13aWR0aDogMC44Ii8+CiAgICAgIDwvZz4KICAgICA8L2c+CiAgICAgPGcgaWQ9InRleHRfMSI+CiAgICAgIDwhLS0gMTAwIC0tPgogICAgICA8ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxMTIuMjkwOTYxIDI2Ni41OTg0Mzcpc2NhbGUoMC4xIC0wLjEpIj4KICAgICAgIDxkZWZzPgogICAgICAgIDxwYXRoIGlkPSJEZWphVnVTYW5zLTMxIiBkPSJNIDc5NCA1MzEgCkwgMTgyNSA1MzEgCkwgMTgyNSA0MDkxIApMIDcwMyAzODY2IApMIDcwMyA0NDQxIApMIDE4MTkgNDY2NiAKTCAyNDUwIDQ2NjYgCkwgMjQ1MCA1MzEgCkwgMzQ4MSA1MzEgCkwgMzQ4MSAwIApMIDc5NCAwIApMIDc5NCA1MzEgCnoKIiB0cmFuc2Zvcm09InNjYWxlKDAuMDE1NjI1KSIvPgogICAgICAgIDxwYXRoIGlkPSJEZWphVnVTYW5zLTMwIiBkPSJNIDIwMzQgNDI1MCAKUSAxNTQ3IDQyNTAgMTMwMSAzNzcwIApRIDEwNTYgMzI5MSAxMDU2IDIzMjggClEgMTA1NiAxMzY5IDEzMDEgODg5IApRIDE1NDcgNDA5IDIwMzQgNDA5IApRIDI1MjUgNDA5IDI3NzAgODg5IApRIDMwMTYgMTM2OSAzMDE2IDIzMjggClEgMzAxNiAzMjkxIDI3NzAgMzc3MCAKUSAyNTI1IDQyNTAgMjAzNCA0MjUwIAp6Ck0gMjAzNCA0NzUwIApRIDI4MTkgNDc1MCAzMjMzIDQxMjkgClEgMzY0NyAzNTA5IDM2NDcgMjMyOCAKUSAzNjQ3IDExNTAgMzIzMyA1MjkgClEgMjgxOSAtOTEgMjAzNCAtOTEgClEgMTI1MCAtOTEgODM2IDUyOSAKUSA0MjIgMTE1MCA0MjIgMjMyOCAKUSA0MjIgMzUwOSA4MzYgNDEyOSAKUSAxMjUwIDQ3NTAgMjAzNCA0NzUwIAp6CiIgdHJhbnNmb3JtPSJzY2FsZSgwLjAxNTYyNSkiLz4KICAgICAgIDwvZGVmcz4KICAgICAgIDx1c2UgeGxpbms6aHJlZj0iI0RlamFWdVNhbnMtMzEiLz4KICAgICAgIDx1c2UgeGxpbms6aHJlZj0iI0RlamFWdVNhbnMtMzAiIHg9IjYzLjYyMzA0NyIvPgogICAgICAgPHVzZSB4bGluazpocmVmPSIjRGVqYVZ1U2Fucy0zMCIgeD0iMTI3LjI0NjA5NCIvPgogICAgICA8L2c+CiAgICAgPC9nPgogICAgPC9nPgogICAgPGcgaWQ9Inh0aWNrXzIiPgogICAgIDxnIGlkPSJsaW5lMmRfMyI+CiAgICAgIDxwYXRoIGQ9Ik0gMTU2LjQyMTQ4OCAyNTIgCkwgMTU2LjQyMTQ4OCAzNC41NiAKIiBjbGlwLXBhdGg9InVybCgjcDA2M2M4ZjVlYjgpIiBzdHlsZT0iZmlsbDogbm9uZTsgc3Ryb2tlOiAjYjBiMGIwOyBzdHJva2Utd2lkdGg6IDAuODsgc3Ryb2tlLWxpbmVjYXA6IHNxdWFyZSIvPgogICAgIDwvZz4KICAgICA8ZyBpZD0ibGluZTJkXzQiPgogICAgICA8Zz4KICAgICAgIDx1c2UgeGxpbms6aHJlZj0iI201ODNiNmU1ZjU5IiB4PSIxNTYuNDIxNDg4IiB5PSIyNTIiIHN0eWxlPSJzdHJva2U6ICMwMDAwMDA7IHN0cm9rZS13aWR0aDogMC44Ii8+CiAgICAgIDwvZz4KICAgICA8L2c+CiAgICAgPGcgaWQ9InRleHRfMiI+CiAgICAgIDwhLS0gMTUwIC0tPgogICAgICA8ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxNDYuODc3NzM4IDI2Ni41OTg0Mzcpc2NhbGUoMC4xIC0wLjEpIj4KICAgICAgIDxkZWZzPgogICAgICAgIDxwYXRoIGlkPSJEZWphVnVTYW5zLTM1IiBkPSJNIDY5MSA0NjY2IApMIDMxNjkgNDY2NiAKTCAzMTY5IDQxMzQgCkwgMTI2OSA0MTM0IApMIDEyNjkgMjk5MSAKUSAxNDA2IDMwMzggMTU0MyAzMDYxIApRIDE2ODEgMzA4NCAxODE5IDMwODQgClEgMjYwMCAzMDg0IDMwNTYgMjY1NiAKUSAzNTEzIDIyMjggMzUxMyAxNDk3IApRIDM1MTMgNzQ0IDMwNDQgMzI2IApRIDI1NzUgLTkxIDE3MjIgLTkxIApRIDE0MjggLTkxIDExMjMgLTQxIApRIDgxOSA5IDQ5NCAxMDkgCkwgNDk0IDc0NCAKUSA3NzUgNTkxIDEwNzUgNTE2IApRIDEzNzUgNDQxIDE3MDkgNDQxIApRIDIyNTAgNDQxIDI1NjUgNzI1IApRIDI4ODEgMTAwOSAyODgxIDE0OTcgClEgMjg4MSAxOTg0IDI1NjUgMjI2OCAKUSAyMjUwIDI1NTMgMTcwOSAyNTUzIApRIDE0NTYgMjU1MyAxMjA0IDI0OTcgClEgOTUzIDI0NDEgNjkxIDIzMjIgCkwgNjkxIDQ2NjYgCnoKIiB0cmFuc2Zvcm09InNjYWxlKDAuMDE1NjI1KSIvPgogICAgICAgPC9kZWZzPgogICAgICAgPHVzZSB4bGluazpocmVmPSIjRGVqYVZ1U2Fucy0zMSIvPgogICAgICAgPHVzZSB4bGluazpocmVmPSIjRGVqYVZ1U2Fucy0zNSIgeD0iNjMuNjIzMDQ3Ii8+CiAgICAgICA8dXNlIHhsaW5rOmhyZWY9IiNEZWphVnVTYW5zLTMwIiB4PSIxMjcuMjQ2MDk0Ii8+CiAgICAgIDwvZz4KICAgICA8L2c+CiAgICA8L2c+CiAgICA8ZyBpZD0ieHRpY2tfMyI+CiAgICAgPGcgaWQ9ImxpbmUyZF81Ij4KICAgICAgPHBhdGggZD0iTSAxOTEuMDA4MjY0IDI1MiAKTCAxOTEuMDA4MjY0IDM0LjU2IAoiIGNsaXAtcGF0aD0idXJsKCNwMDYzYzhmNWViOCkiIHN0eWxlPSJmaWxsOiBub25lOyBzdHJva2U6ICNiMGIwYjA7IHN0cm9rZS13aWR0aDogMC44OyBzdHJva2UtbGluZWNhcDogc3F1YXJlIi8+CiAgICAgPC9nPgogICAgIDxnIGlkPSJsaW5lMmRfNiI+CiAgICAgIDxnPgogICAgICAgPHVzZSB4bGluazpocmVmPSIjbTU4M2I2ZTVmNTkiIHg9IjE5MS4wMDgyNjQiIHk9IjI1MiIgc3R5bGU9InN0cm9rZTogIzAwMDAwMDsgc3Ryb2tlLXdpZHRoOiAwLjgiLz4KICAgICAgPC9nPgogICAgIDwvZz4KICAgICA8ZyBpZD0idGV4dF8zIj4KICAgICAgPCEtLSAyMDAgLS0+CiAgICAgIDxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDE4MS40NjQ1MTQgMjY2LjU5ODQzNylzY2FsZSgwLjEgLTAuMSkiPgogICAgICAgPGRlZnM+CiAgICAgICAgPHBhdGggaWQ9IkRlamFWdVNhbnMtMzIiIGQ9Ik0gMTIyOCA1MzEgCkwgMzQzMSA1MzEgCkwgMzQzMSAwIApMIDQ2OSAwIApMIDQ2OSA1MzEgClEgODI4IDkwMyAxNDQ4IDE1MjkgClEgMjA2OSAyMTU2IDIyMjggMjMzOCAKUSAyNTMxIDI2NzggMjY1MSAyOTE0IApRIDI3NzIgMzE1MCAyNzcyIDMzNzggClEgMjc3MiAzNzUwIDI1MTEgMzk4NCAKUSAyMjUwIDQyMTkgMTgzMSA0MjE5IApRIDE1MzQgNDIxOSAxMjA0IDQxMTYgClEgODc1IDQwMTMgNTAwIDM4MDMgCkwgNTAwIDQ0NDEgClEgODgxIDQ1OTQgMTIxMiA0NjcyIApRIDE1NDQgNDc1MCAxODE5IDQ3NTAgClEgMjU0NCA0NzUwIDI5NzUgNDM4NyAKUSAzNDA2IDQwMjUgMzQwNiAzNDE5IApRIDM0MDYgMzEzMSAzMjk4IDI4NzMgClEgMzE5MSAyNjE2IDI5MDYgMjI2NiAKUSAyODI4IDIxNzUgMjQwOSAxNzQyIApRIDE5OTEgMTMwOSAxMjI4IDUzMSAKegoiIHRyYW5zZm9ybT0ic2NhbGUoMC4wMTU2MjUpIi8+CiAgICAgICA8L2RlZnM+CiAgICAgICA8dXNlIHhsaW5rOmhyZWY9IiNEZWphVnVTYW5zLTMyIi8+CiAgICAgICA8dXNlIHhsaW5rOmhyZWY9IiNEZWphVnVTYW5zLTMwIiB4PSI2My42MjMwNDciLz4KICAgICAgIDx1c2UgeGxpbms6aHJlZj0iI0RlamFWdVNhbnMtMzAiIHg9IjEyNy4yNDYwOTQiLz4KICAgICAgPC9nPgogICAgIDwvZz4KICAgIDwvZz4KICAgIDxnIGlkPSJ4dGlja180Ij4KICAgICA8ZyBpZD0ibGluZTJkXzciPgogICAgICA8cGF0aCBkPSJNIDIyNS41OTUwNDEgMjUyIApMIDIyNS41OTUwNDEgMzQuNTYgCiIgY2xpcC1wYXRoPSJ1cmwoI3AwNjNjOGY1ZWI4KSIgc3R5bGU9ImZpbGw6IG5vbmU7IHN0cm9rZTogI2IwYjBiMDsgc3Ryb2tlLXdpZHRoOiAwLjg7IHN0cm9rZS1saW5lY2FwOiBzcXVhcmUiLz4KICAgICA8L2c+CiAgICAgPGcgaWQ9ImxpbmUyZF84Ij4KICAgICAgPGc+CiAgICAgICA8dXNlIHhsaW5rOmhyZWY9IiNtNTgzYjZlNWY1OSIgeD0iMjI1LjU5NTA0MSIgeT0iMjUyIiBzdHlsZT0ic3Ryb2tlOiAjMDAwMDAwOyBzdHJva2Utd2lkdGg6IDAuOCIvPgogICAgICA8L2c+CiAgICAgPC9nPgogICAgIDxnIGlkPSJ0ZXh0XzQiPgogICAgICA8IS0tIDI1MCAtLT4KICAgICAgPGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMjE2LjA1MTI5MSAyNjYuNTk4NDM3KXNjYWxlKDAuMSAtMC4xKSI+CiAgICAgICA8dXNlIHhsaW5rOmhyZWY9IiNEZWphVnVTYW5zLTMyIi8+CiAgICAgICA8dXNlIHhsaW5rOmhyZWY9IiNEZWphVnVTYW5zLTM1IiB4PSI2My42MjMwNDciLz4KICAgICAgIDx1c2UgeGxpbms6aHJlZj0iI0RlamFWdVNhbnMtMzAiIHg9IjEyNy4yNDYwOTQiLz4KICAgICAgPC9nPgogICAgIDwvZz4KICAgIDwvZz4KICAgIDxnIGlkPSJ4dGlja181Ij4KICAgICA8ZyBpZD0ibGluZTJkXzkiPgogICAgICA8cGF0aCBkPSJNIDI2MC4xODE4MTggMjUyIApMIDI2MC4xODE4MTggMzQuNTYgCiIgY2xpcC1wYXRoPSJ1cmwoI3AwNjNjOGY1ZWI4KSIgc3R5bGU9ImZpbGw6IG5vbmU7IHN0cm9rZTogI2IwYjBiMDsgc3Ryb2tlLXdpZHRoOiAwLjg7IHN0cm9rZS1saW5lY2FwOiBzcXVhcmUiLz4KICAgICA8L2c+CiAgICAgPGcgaWQ9ImxpbmUyZF8xMCI+CiAgICAgIDxnPgogICAgICAgPHVzZSB4bGluazpocmVmPSIjbTU4M2I2ZTVmNTkiIHg9IjI2MC4xODE4MTgiIHk9IjI1MiIgc3R5bGU9InN0cm9rZTogIzAwMDAwMDsgc3Ryb2tlLXdpZHRoOiAwLjgiLz4KICAgICAgPC9nPgogICAgIDwvZz4KICAgICA8ZyBpZD0idGV4dF81Ij4KICAgICAgPCEtLSAzMDAgLS0+CiAgICAgIDxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDI1MC42MzgwNjggMjY2LjU5ODQzNylzY2FsZSgwLjEgLTAuMSkiPgogICAgICAgPGRlZnM+CiAgICAgICAgPHBhdGggaWQ9IkRlamFWdVNhbnMtMzMiIGQ9Ik0gMjU5NyAyNTE2IApRIDMwNTAgMjQxOSAzMzA0IDIxMTIgClEgMzU1OSAxODA2IDM1NTkgMTM1NiAKUSAzNTU5IDY2NiAzMDg0IDI4NyAKUSAyNjA5IC05MSAxNzM0IC05MSAKUSAxNDQxIC05MSAxMTMwIC0zMyAKUSA4MTkgMjUgNDg4IDE0MSAKTCA0ODggNzUwIApRIDc1MCA1OTcgMTA2MiA1MTkgClEgMTM3NSA0NDEgMTcxNiA0NDEgClEgMjMwOSA0NDEgMjYyMCA2NzUgClEgMjkzMSA5MDkgMjkzMSAxMzU2IApRIDI5MzEgMTc2OSAyNjQyIDIwMDEgClEgMjM1MyAyMjM0IDE4MzggMjIzNCAKTCAxMjk0IDIyMzQgCkwgMTI5NCAyNzUzIApMIDE4NjMgMjc1MyAKUSAyMzI4IDI3NTMgMjU3NSAyOTM5IApRIDI4MjIgMzEyNSAyODIyIDM0NzUgClEgMjgyMiAzODM0IDI1NjcgNDAyNiAKUSAyMzEzIDQyMTkgMTgzOCA0MjE5IApRIDE1NzggNDIxOSAxMjgxIDQxNjIgClEgOTg0IDQxMDYgNjI4IDM5ODggCkwgNjI4IDQ1NTAgClEgOTg4IDQ2NTAgMTMwMiA0NzAwIApRIDE2MTYgNDc1MCAxODk0IDQ3NTAgClEgMjYxMyA0NzUwIDMwMzEgNDQyMyAKUSAzNDUwIDQwOTcgMzQ1MCAzNTQxIApRIDM0NTAgMzE1MyAzMjI4IDI4ODYgClEgMzAwNiAyNjE5IDI1OTcgMjUxNiAKegoiIHRyYW5zZm9ybT0ic2NhbGUoMC4wMTU2MjUpIi8+CiAgICAgICA8L2RlZnM+CiAgICAgICA8dXNlIHhsaW5rOmhyZWY9IiNEZWphVnVTYW5zLTMzIi8+CiAgICAgICA8dXNlIHhsaW5rOmhyZWY9IiNEZWphVnVTYW5zLTMwIiB4PSI2My42MjMwNDciLz4KICAgICAgIDx1c2UgeGxpbms6aHJlZj0iI0RlamFWdVNhbnMtMzAiIHg9IjEyNy4yNDYwOTQiLz4KICAgICAgPC9nPgogICAgIDwvZz4KICAgIDwvZz4KICAgIDxnIGlkPSJ4dGlja182Ij4KICAgICA8ZyBpZD0ibGluZTJkXzExIj4KICAgICAgPHBhdGggZD0iTSAyOTQuNzY4NTk1IDI1MiAKTCAyOTQuNzY4NTk1IDM0LjU2IAoiIGNsaXAtcGF0aD0idXJsKCNwMDYzYzhmNWViOCkiIHN0eWxlPSJmaWxsOiBub25lOyBzdHJva2U6ICNiMGIwYjA7IHN0cm9rZS13aWR0aDogMC44OyBzdHJva2UtbGluZWNhcDogc3F1YXJlIi8+CiAgICAgPC9nPgogICAgIDxnIGlkPSJsaW5lMmRfMTIiPgogICAgICA8Zz4KICAgICAgIDx1c2UgeGxpbms6aHJlZj0iI201ODNiNmU1ZjU5IiB4PSIyOTQuNzY4NTk1IiB5PSIyNTIiIHN0eWxlPSJzdHJva2U6ICMwMDAwMDA7IHN0cm9rZS13aWR0aDogMC44Ii8+CiAgICAgIDwvZz4KICAgICA8L2c+CiAgICAgPGcgaWQ9InRleHRfNiI+CiAgICAgIDwhLS0gMzUwIC0tPgogICAgICA8ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgyODUuMjI0ODQ1IDI2Ni41OTg0Mzcpc2NhbGUoMC4xIC0wLjEpIj4KICAgICAgIDx1c2UgeGxpbms6aHJlZj0iI0RlamFWdVNhbnMtMzMiLz4KICAgICAgIDx1c2UgeGxpbms6aHJlZj0iI0RlamFWdVNhbnMtMzUiIHg9IjYzLjYyMzA0NyIvPgogICAgICAgPHVzZSB4bGluazpocmVmPSIjRGVqYVZ1U2Fucy0zMCIgeD0iMTI3LjI0NjA5NCIvPgogICAgICA8L2c+CiAgICAgPC9nPgogICAgPC9nPgogICAgPGcgaWQ9Inh0aWNrXzciPgogICAgIDxnIGlkPSJsaW5lMmRfMTMiPgogICAgICA8cGF0aCBkPSJNIDMyOS4zNTUzNzIgMjUyIApMIDMyOS4zNTUzNzIgMzQuNTYgCiIgY2xpcC1wYXRoPSJ1cmwoI3AwNjNjOGY1ZWI4KSIgc3R5bGU9ImZpbGw6IG5vbmU7IHN0cm9rZTogI2IwYjBiMDsgc3Ryb2tlLXdpZHRoOiAwLjg7IHN0cm9rZS1saW5lY2FwOiBzcXVhcmUiLz4KICAgICA8L2c+CiAgICAgPGcgaWQ9ImxpbmUyZF8xNCI+CiAgICAgIDxnPgogICAgICAgPHVzZSB4bGluazpocmVmPSIjbTU4M2I2ZTVmNTkiIHg9IjMyOS4zNTUzNzIiIHk9IjI1MiIgc3R5bGU9InN0cm9rZTogIzAwMDAwMDsgc3Ryb2tlLXdpZHRoOiAwLjgiLz4KICAgICAgPC9nPgogICAgIDwvZz4KICAgICA8ZyBpZD0idGV4dF83Ij4KICAgICAgPCEtLSA0MDAgLS0+CiAgICAgIDxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDMxOS44MTE2MjIgMjY2LjU5ODQzNylzY2FsZSgwLjEgLTAuMSkiPgogICAgICAgPGRlZnM+CiAgICAgICAgPHBhdGggaWQ9IkRlamFWdVNhbnMtMzQiIGQ9Ik0gMjQxOSA0MTE2IApMIDgyNSAxNjI1IApMIDI0MTkgMTYyNSAKTCAyNDE5IDQxMTYgCnoKTSAyMjUzIDQ2NjYgCkwgMzA0NyA0NjY2IApMIDMwNDcgMTYyNSAKTCAzNzEzIDE2MjUgCkwgMzcxMyAxMTAwIApMIDMwNDcgMTEwMCAKTCAzMDQ3IDAgCkwgMjQxOSAwIApMIDI0MTkgMTEwMCAKTCAzMTMgMTEwMCAKTCAzMTMgMTcwOSAKTCAyMjUzIDQ2NjYgCnoKIiB0cmFuc2Zvcm09InNjYWxlKDAuMDE1NjI1KSIvPgogICAgICAgPC9kZWZzPgogICAgICAgPHVzZSB4bGluazpocmVmPSIjRGVqYVZ1U2Fucy0zNCIvPgogICAgICAgPHVzZSB4bGluazpocmVmPSIjRGVqYVZ1U2Fucy0zMCIgeD0iNjMuNjIzMDQ3Ii8+CiAgICAgICA8dXNlIHhsaW5rOmhyZWY9IiNEZWphVnVTYW5zLTMwIiB4PSIxMjcuMjQ2MDk0Ii8+CiAgICAgIDwvZz4KICAgICA8L2c+CiAgICA8L2c+CiAgICA8ZyBpZD0ieHRpY2tfOCI+CiAgICAgPGcgaWQ9ImxpbmUyZF8xNSI+CiAgICAgIDxwYXRoIGQ9Ik0gMzYzLjk0MjE0OSAyNTIgCkwgMzYzLjk0MjE0OSAzNC41NiAKIiBjbGlwLXBhdGg9InVybCgjcDA2M2M4ZjVlYjgpIiBzdHlsZT0iZmlsbDogbm9uZTsgc3Ryb2tlOiAjYjBiMGIwOyBzdHJva2Utd2lkdGg6IDAuODsgc3Ryb2tlLWxpbmVjYXA6IHNxdWFyZSIvPgogICAgIDwvZz4KICAgICA8ZyBpZD0ibGluZTJkXzE2Ij4KICAgICAgPGc+CiAgICAgICA8dXNlIHhsaW5rOmhyZWY9IiNtNTgzYjZlNWY1OSIgeD0iMzYzLjk0MjE0OSIgeT0iMjUyIiBzdHlsZT0ic3Ryb2tlOiAjMDAwMDAwOyBzdHJva2Utd2lkdGg6IDAuOCIvPgogICAgICA8L2c+CiAgICAgPC9nPgogICAgIDxnIGlkPSJ0ZXh0XzgiPgogICAgICA8IS0tIDQ1MCAtLT4KICAgICAgPGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMzU0LjM5ODM5OSAyNjYuNTk4NDM3KXNjYWxlKDAuMSAtMC4xKSI+CiAgICAgICA8dXNlIHhsaW5rOmhyZWY9IiNEZWphVnVTYW5zLTM0Ii8+CiAgICAgICA8dXNlIHhsaW5rOmhyZWY9IiNEZWphVnVTYW5zLTM1IiB4PSI2My42MjMwNDciLz4KICAgICAgIDx1c2UgeGxpbms6aHJlZj0iI0RlamFWdVNhbnMtMzAiIHg9IjEyNy4yNDYwOTQiLz4KICAgICAgPC9nPgogICAgIDwvZz4KICAgIDwvZz4KICAgIDxnIGlkPSJ4dGlja185Ij4KICAgICA8ZyBpZD0ibGluZTJkXzE3Ij4KICAgICAgPHBhdGggZD0iTSAzOTguNTI4OTI2IDI1MiAKTCAzOTguNTI4OTI2IDM0LjU2IAoiIGNsaXAtcGF0aD0idXJsKCNwMDYzYzhmNWViOCkiIHN0eWxlPSJmaWxsOiBub25lOyBzdHJva2U6ICNiMGIwYjA7IHN0cm9rZS13aWR0aDogMC44OyBzdHJva2UtbGluZWNhcDogc3F1YXJlIi8+CiAgICAgPC9nPgogICAgIDxnIGlkPSJsaW5lMmRfMTgiPgogICAgICA8Zz4KICAgICAgIDx1c2UgeGxpbms6aHJlZj0iI201ODNiNmU1ZjU5IiB4PSIzOTguNTI4OTI2IiB5PSIyNTIiIHN0eWxlPSJzdHJva2U6ICMwMDAwMDA7IHN0cm9rZS13aWR0aDogMC44Ii8+CiAgICAgIDwvZz4KICAgICA8L2c+CiAgICAgPGcgaWQ9InRleHRfOSI+CiAgICAgIDwhLS0gNTAwIC0tPgogICAgICA8ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgzODguOTg1MTc2IDI2Ni41OTg0Mzcpc2NhbGUoMC4xIC0wLjEpIj4KICAgICAgIDx1c2UgeGxpbms6aHJlZj0iI0RlamFWdVNhbnMtMzUiLz4KICAgICAgIDx1c2UgeGxpbms6aHJlZj0iI0RlamFWdVNhbnMtMzAiIHg9IjYzLjYyMzA0NyIvPgogICAgICAgPHVzZSB4bGluazpocmVmPSIjRGVqYVZ1U2Fucy0zMCIgeD0iMTI3LjI0NjA5NCIvPgogICAgICA8L2c+CiAgICAgPC9nPgogICAgPC9nPgogICAgPGcgaWQ9InRleHRfMTAiPgogICAgIDwhLS0gTm8uIHdpbmQgdHVyYmluZXMgLS0+CiAgICAgPGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMjE2LjI4MzM4MSAyODAuMjc2NTYzKXNjYWxlKDAuMSAtMC4xKSI+CiAgICAgIDxkZWZzPgogICAgICAgPHBhdGggaWQ9IkRlamFWdVNhbnMtNGUiIGQ9Ik0gNjI4IDQ2NjYgCkwgMTQ3OCA0NjY2IApMIDM1NDcgNzYzIApMIDM1NDcgNDY2NiAKTCA0MTU5IDQ2NjYgCkwgNDE1OSAwIApMIDMzMDkgMCAKTCAxMjQxIDM5MDMgCkwgMTI0MSAwIApMIDYyOCAwIApMIDYyOCA0NjY2IAp6CiIgdHJhbnNmb3JtPSJzY2FsZSgwLjAxNTYyNSkiLz4KICAgICAgIDxwYXRoIGlkPSJEZWphVnVTYW5zLTZmIiBkPSJNIDE5NTkgMzA5NyAKUSAxNDk3IDMwOTcgMTIyOCAyNzM2IApRIDk1OSAyMzc1IDk1OSAxNzQ3IApRIDk1OSAxMTE5IDEyMjYgNzU4IApRIDE0OTQgMzk3IDE5NTkgMzk3IApRIDI0MTkgMzk3IDI2ODcgNzU5IApRIDI5NTYgMTEyMiAyOTU2IDE3NDcgClEgMjk1NiAyMzY5IDI2ODcgMjczMyAKUSAyNDE5IDMwOTcgMTk1OSAzMDk3IAp6Ck0gMTk1OSAzNTg0IApRIDI3MDkgMzU4NCAzMTM3IDMwOTYgClEgMzU2NiAyNjA5IDM1NjYgMTc0NyAKUSAzNTY2IDg4OCAzMTM3IDM5OCAKUSAyNzA5IC05MSAxOTU5IC05MSAKUSAxMjA2IC05MSA3NzkgMzk4IApRIDM1MyA4ODggMzUzIDE3NDcgClEgMzUzIDI2MDkgNzc5IDMwOTYgClEgMTIwNiAzNTg0IDE5NTkgMzU4NCAKegoiIHRyYW5zZm9ybT0ic2NhbGUoMC4wMTU2MjUpIi8+CiAgICAgICA8cGF0aCBpZD0iRGVqYVZ1U2Fucy0yZSIgZD0iTSA2ODQgNzk0IApMIDEzNDQgNzk0IApMIDEzNDQgMCAKTCA2ODQgMCAKTCA2ODQgNzk0IAp6CiIgdHJhbnNmb3JtPSJzY2FsZSgwLjAxNTYyNSkiLz4KICAgICAgIDxwYXRoIGlkPSJEZWphVnVTYW5zLTIwIiB0cmFuc2Zvcm09InNjYWxlKDAuMDE1NjI1KSIvPgogICAgICAgPHBhdGggaWQ9IkRlamFWdVNhbnMtNzciIGQ9Ik0gMjY5IDM1MDAgCkwgODQ0IDM1MDAgCkwgMTU2MyA3NjkgCkwgMjI3OCAzNTAwIApMIDI5NTYgMzUwMCAKTCAzNjc1IDc2OSAKTCA0MzkxIDM1MDAgCkwgNDk2NiAzNTAwIApMIDQwNTAgMCAKTCAzMzcyIDAgCkwgMjYxOSAyODY5IApMIDE4NjMgMCAKTCAxMTg0IDAgCkwgMjY5IDM1MDAgCnoKIiB0cmFuc2Zvcm09InNjYWxlKDAuMDE1NjI1KSIvPgogICAgICAgPHBhdGggaWQ9IkRlamFWdVNhbnMtNjkiIGQ9Ik0gNjAzIDM1MDAgCkwgMTE3OCAzNTAwIApMIDExNzggMCAKTCA2MDMgMCAKTCA2MDMgMzUwMCAKegpNIDYwMyA0ODYzIApMIDExNzggNDg2MyAKTCAxMTc4IDQxMzQgCkwgNjAzIDQxMzQgCkwgNjAzIDQ4NjMgCnoKIiB0cmFuc2Zvcm09InNjYWxlKDAuMDE1NjI1KSIvPgogICAgICAgPHBhdGggaWQ9IkRlamFWdVNhbnMtNmUiIGQ9Ik0gMzUxMyAyMTEzIApMIDM1MTMgMCAKTCAyOTM4IDAgCkwgMjkzOCAyMDk0IApRIDI5MzggMjU5MSAyNzQ0IDI4MzcgClEgMjU1MCAzMDg0IDIxNjMgMzA4NCAKUSAxNjk3IDMwODQgMTQyOCAyNzg3IApRIDExNTkgMjQ5MSAxMTU5IDE5NzggCkwgMTE1OSAwIApMIDU4MSAwIApMIDU4MSAzNTAwIApMIDExNTkgMzUwMCAKTCAxMTU5IDI5NTYgClEgMTM2NiAzMjcyIDE2NDUgMzQyOCAKUSAxOTI1IDM1ODQgMjI5MSAzNTg0IApRIDI4OTQgMzU4NCAzMjAzIDMyMTEgClEgMzUxMyAyODM4IDM1MTMgMjExMyAKegoiIHRyYW5zZm9ybT0ic2NhbGUoMC4wMTU2MjUpIi8+CiAgICAgICA8cGF0aCBpZD0iRGVqYVZ1U2Fucy02NCIgZD0iTSAyOTA2IDI5NjkgCkwgMjkwNiA0ODYzIApMIDM0ODEgNDg2MyAKTCAzNDgxIDAgCkwgMjkwNiAwIApMIDI5MDYgNTI1IApRIDI3MjUgMjEzIDI0NDggNjEgClEgMjE3MiAtOTEgMTc4NCAtOTEgClEgMTE1MCAtOTEgNzUxIDQxNSAKUSAzNTMgOTIyIDM1MyAxNzQ3IApRIDM1MyAyNTcyIDc1MSAzMDc4IApRIDExNTAgMzU4NCAxNzg0IDM1ODQgClEgMjE3MiAzNTg0IDI0NDggMzQzMiAKUSAyNzI1IDMyODEgMjkwNiAyOTY5IAp6Ck0gOTQ3IDE3NDcgClEgOTQ3IDExMTMgMTIwOCA3NTIgClEgMTQ2OSAzOTEgMTkyNSAzOTEgClEgMjM4MSAzOTEgMjY0MyA3NTIgClEgMjkwNiAxMTEzIDI5MDYgMTc0NyAKUSAyOTA2IDIzODEgMjY0MyAyNzQyIApRIDIzODEgMzEwMyAxOTI1IDMxMDMgClEgMTQ2OSAzMTAzIDEyMDggMjc0MiAKUSA5NDcgMjM4MSA5NDcgMTc0NyAKegoiIHRyYW5zZm9ybT0ic2NhbGUoMC4wMTU2MjUpIi8+CiAgICAgICA8cGF0aCBpZD0iRGVqYVZ1U2Fucy03NCIgZD0iTSAxMTcyIDQ0OTQgCkwgMTE3MiAzNTAwIApMIDIzNTYgMzUwMCAKTCAyMzU2IDMwNTMgCkwgMTE3MiAzMDUzIApMIDExNzIgMTE1MyAKUSAxMTcyIDcyNSAxMjg5IDYwMyAKUSAxNDA2IDQ4MSAxNzY2IDQ4MSAKTCAyMzU2IDQ4MSAKTCAyMzU2IDAgCkwgMTc2NiAwIApRIDExMDAgMCA4NDcgMjQ4IApRIDU5NCA0OTcgNTk0IDExNTMgCkwgNTk0IDMwNTMgCkwgMTcyIDMwNTMgCkwgMTcyIDM1MDAgCkwgNTk0IDM1MDAgCkwgNTk0IDQ0OTQgCkwgMTE3MiA0NDk0IAp6CiIgdHJhbnNmb3JtPSJzY2FsZSgwLjAxNTYyNSkiLz4KICAgICAgIDxwYXRoIGlkPSJEZWphVnVTYW5zLTc1IiBkPSJNIDU0NCAxMzgxIApMIDU0NCAzNTAwIApMIDExMTkgMzUwMCAKTCAxMTE5IDE0MDMgClEgMTExOSA5MDYgMTMxMiA2NTcgClEgMTUwNiA0MDkgMTg5NCA0MDkgClEgMjM1OSA0MDkgMjYyOSA3MDYgClEgMjkwMCAxMDAzIDI5MDAgMTUxNiAKTCAyOTAwIDM1MDAgCkwgMzQ3NSAzNTAwIApMIDM0NzUgMCAKTCAyOTAwIDAgCkwgMjkwMCA1MzggClEgMjY5MSAyMTkgMjQxNCA2NCAKUSAyMTM4IC05MSAxNzcyIC05MSAKUSAxMTY5IC05MSA4NTYgMjg0IApRIDU0NCA2NTkgNTQ0IDEzODEgCnoKTSAxOTkxIDM1ODQgCkwgMTk5MSAzNTg0IAp6CiIgdHJhbnNmb3JtPSJzY2FsZSgwLjAxNTYyNSkiLz4KICAgICAgIDxwYXRoIGlkPSJEZWphVnVTYW5zLTcyIiBkPSJNIDI2MzEgMjk2MyAKUSAyNTM0IDMwMTkgMjQyMCAzMDQ1IApRIDIzMDYgMzA3MiAyMTY5IDMwNzIgClEgMTY4MSAzMDcyIDE0MjAgMjc1NSAKUSAxMTU5IDI0MzggMTE1OSAxODQ0IApMIDExNTkgMCAKTCA1ODEgMCAKTCA1ODEgMzUwMCAKTCAxMTU5IDM1MDAgCkwgMTE1OSAyOTU2IApRIDEzNDEgMzI3NSAxNjMxIDM0MjkgClEgMTkyMiAzNTg0IDIzMzggMzU4NCAKUSAyMzk3IDM1ODQgMjQ2OSAzNTc2IApRIDI1NDEgMzU2OSAyNjI4IDM1NTMgCkwgMjYzMSAyOTYzIAp6CiIgdHJhbnNmb3JtPSJzY2FsZSgwLjAxNTYyNSkiLz4KICAgICAgIDxwYXRoIGlkPSJEZWphVnVTYW5zLTYyIiBkPSJNIDMxMTYgMTc0NyAKUSAzMTE2IDIzODEgMjg1NSAyNzQyIApRIDI1OTQgMzEwMyAyMTM4IDMxMDMgClEgMTY4MSAzMTAzIDE0MjAgMjc0MiAKUSAxMTU5IDIzODEgMTE1OSAxNzQ3IApRIDExNTkgMTExMyAxNDIwIDc1MiAKUSAxNjgxIDM5MSAyMTM4IDM5MSAKUSAyNTk0IDM5MSAyODU1IDc1MiAKUSAzMTE2IDExMTMgMzExNiAxNzQ3IAp6Ck0gMTE1OSAyOTY5IApRIDEzNDEgMzI4MSAxNjE3IDM0MzIgClEgMTg5NCAzNTg0IDIyNzggMzU4NCAKUSAyOTE2IDM1ODQgMzMxNCAzMDc4IApRIDM3MTMgMjU3MiAzNzEzIDE3NDcgClEgMzcxMyA5MjIgMzMxNCA0MTUgClEgMjkxNiAtOTEgMjI3OCAtOTEgClEgMTg5NCAtOTEgMTYxNyA2MSAKUSAxMzQxIDIxMyAxMTU5IDUyNSAKTCAxMTU5IDAgCkwgNTgxIDAgCkwgNTgxIDQ4NjMgCkwgMTE1OSA0ODYzIApMIDExNTkgMjk2OSAKegoiIHRyYW5zZm9ybT0ic2NhbGUoMC4wMTU2MjUpIi8+CiAgICAgICA8cGF0aCBpZD0iRGVqYVZ1U2Fucy02NSIgZD0iTSAzNTk3IDE4OTQgCkwgMzU5NyAxNjEzIApMIDk1MyAxNjEzIApRIDk5MSAxMDE5IDEzMTEgNzA4IApRIDE2MzEgMzk3IDIyMDMgMzk3IApRIDI1MzQgMzk3IDI4NDUgNDc4IApRIDMxNTYgNTU5IDM0NjMgNzIyIApMIDM0NjMgMTc4IApRIDMxNTMgNDcgMjgyOCAtMjIgClEgMjUwMyAtOTEgMjE2OSAtOTEgClEgMTMzMSAtOTEgODQyIDM5NiAKUSAzNTMgODg0IDM1MyAxNzE2IApRIDM1MyAyNTc1IDgxNyAzMDc5IApRIDEyODEgMzU4NCAyMDY5IDM1ODQgClEgMjc3NSAzNTg0IDMxODYgMzEyOSAKUSAzNTk3IDI2NzUgMzU5NyAxODk0IAp6Ck0gMzAyMiAyMDYzIApRIDMwMTYgMjUzNCAyNzU4IDI4MTUgClEgMjUwMCAzMDk3IDIwNzUgMzA5NyAKUSAxNTk0IDMwOTcgMTMwNSAyODI1IApRIDEwMTYgMjU1MyA5NzIgMjA1OSAKTCAzMDIyIDIwNjMgCnoKIiB0cmFuc2Zvcm09InNjYWxlKDAuMDE1NjI1KSIvPgogICAgICAgPHBhdGggaWQ9IkRlamFWdVNhbnMtNzMiIGQ9Ik0gMjgzNCAzMzk3IApMIDI4MzQgMjg1MyAKUSAyNTkxIDI5NzggMjMyOCAzMDQwIApRIDIwNjYgMzEwMyAxNzg0IDMxMDMgClEgMTM1NiAzMTAzIDExNDIgMjk3MiAKUSA5MjggMjg0MSA5MjggMjU3OCAKUSA5MjggMjM3OCAxMDgxIDIyNjQgClEgMTIzNCAyMTUwIDE2OTcgMjA0NyAKTCAxODk0IDIwMDMgClEgMjUwNiAxODcyIDI3NjQgMTYzMyAKUSAzMDIyIDEzOTQgMzAyMiA5NjYgClEgMzAyMiA0NzggMjYzNiAxOTMgClEgMjI1MCAtOTEgMTU3NSAtOTEgClEgMTI5NCAtOTEgOTg5IC0zNiAKUSA2ODQgMTkgMzQ3IDEyOCAKTCAzNDcgNzIyIApRIDY2NiA1NTYgOTc1IDQ3MyAKUSAxMjg0IDM5MSAxNTg4IDM5MSAKUSAxOTk0IDM5MSAyMjEyIDUzMCAKUSAyNDMxIDY2OSAyNDMxIDkyMiAKUSAyNDMxIDExNTYgMjI3MyAxMjgxIApRIDIxMTYgMTQwNiAxNTgxIDE1MjIgCkwgMTM4MSAxNTY5IApRIDg0NyAxNjgxIDYwOSAxOTE0IApRIDM3MiAyMTQ3IDM3MiAyNTUzIApRIDM3MiAzMDQ3IDcyMiAzMzE1IApRIDEwNzIgMzU4NCAxNzE2IDM1ODQgClEgMjAzNCAzNTg0IDIzMTUgMzUzNyAKUSAyNTk3IDM0OTEgMjgzNCAzMzk3IAp6CiIgdHJhbnNmb3JtPSJzY2FsZSgwLjAxNTYyNSkiLz4KICAgICAgPC9kZWZzPgogICAgICA8dXNlIHhsaW5rOmhyZWY9IiNEZWphVnVTYW5zLTRlIi8+CiAgICAgIDx1c2UgeGxpbms6aHJlZj0iI0RlamFWdVNhbnMtNmYiIHg9Ijc0LjgwNDY4OCIvPgogICAgICA8dXNlIHhsaW5rOmhyZWY9IiNEZWphVnVTYW5zLTJlIiB4PSIxMzQuMjM2MzI4Ii8+CiAgICAgIDx1c2UgeGxpbms6aHJlZj0iI0RlamFWdVNhbnMtMjAiIHg9IjE2Ni4wMjM0MzgiLz4KICAgICAgPHVzZSB4bGluazpocmVmPSIjRGVqYVZ1U2Fucy03NyIgeD0iMTk3LjgxMDU0NyIvPgogICAgICA8dXNlIHhsaW5rOmhyZWY9IiNEZWphVnVTYW5zLTY5IiB4PSIyNzkuNTk3NjU2Ii8+CiAgICAgIDx1c2UgeGxpbms6aHJlZj0iI0RlamFWdVNhbnMtNmUiIHg9IjMwNy4zODA4NTkiLz4KICAgICAgPHVzZSB4bGluazpocmVmPSIjRGVqYVZ1U2Fucy02NCIgeD0iMzcwLjc1OTc2NiIvPgogICAgICA8dXNlIHhsaW5rOmhyZWY9IiNEZWphVnVTYW5zLTIwIiB4PSI0MzQuMjM2MzI4Ii8+CiAgICAgIDx1c2UgeGxpbms6aHJlZj0iI0RlamFWdVNhbnMtNzQiIHg9IjQ2Ni4wMjM0MzgiLz4KICAgICAgPHVzZSB4bGluazpocmVmPSIjRGVqYVZ1U2Fucy03NSIgeD0iNTA1LjIzMjQyMiIvPgogICAgICA8dXNlIHhsaW5rOmhyZWY9IiNEZWphVnVTYW5zLTcyIiB4PSI1NjguNjExMzI4Ii8+CiAgICAgIDx1c2UgeGxpbms6aHJlZj0iI0RlamFWdVNhbnMtNjIiIHg9IjYwOS43MjQ2MDkiLz4KICAgICAgPHVzZSB4bGluazpocmVmPSIjRGVqYVZ1U2Fucy02OSIgeD0iNjczLjIwMTE3MiIvPgogICAgICA8dXNlIHhsaW5rOmhyZWY9IiNEZWphVnVTYW5zLTZlIiB4PSI3MDAuOTg0Mzc1Ii8+CiAgICAgIDx1c2UgeGxpbms6aHJlZj0iI0RlamFWdVNhbnMtNjUiIHg9Ijc2NC4zNjMyODEiLz4KICAgICAgPHVzZSB4bGluazpocmVmPSIjRGVqYVZ1U2Fucy03MyIgeD0iODI1Ljg4NjcxOSIvPgogICAgIDwvZz4KICAgIDwvZz4KICAgPC9nPgogICA8ZyBpZD0ibWF0cGxvdGxpYi5heGlzXzIiPgogICAgPGcgaWQ9Inl0aWNrXzEiPgogICAgIDxnIGlkPSJsaW5lMmRfMTkiPgogICAgICA8cGF0aCBkPSJNIDEwOCAyNDQuNDkwNDI5IApMIDQxMi4zNjM2MzYgMjQ0LjQ5MDQyOSAKIiBjbGlwLXBhdGg9InVybCgjcDA2M2M4ZjVlYjgpIiBzdHlsZT0iZmlsbDogbm9uZTsgc3Ryb2tlOiAjYjBiMGIwOyBzdHJva2Utd2lkdGg6IDAuODsgc3Ryb2tlLWxpbmVjYXA6IHNxdWFyZSIvPgogICAgIDwvZz4KICAgICA8ZyBpZD0ibGluZTJkXzIwIj4KICAgICAgPGRlZnM+CiAgICAgICA8cGF0aCBpZD0ibTY3OGNmNTIyODIiIGQ9Ik0gMCAwIApMIC0zLjUgMCAKIiBzdHlsZT0ic3Ryb2tlOiAjMDAwMDAwOyBzdHJva2Utd2lkdGg6IDAuOCIvPgogICAgICA8L2RlZnM+CiAgICAgIDxnPgogICAgICAgPHVzZSB4bGluazpocmVmPSIjbTY3OGNmNTIyODIiIHg9IjEwOCIgeT0iMjQ0LjQ5MDQyOSIgc3R5bGU9InN0cm9rZTogIzAwMDAwMDsgc3Ryb2tlLXdpZHRoOiAwLjgiLz4KICAgICAgPC9nPgogICAgIDwvZz4KICAgICA8ZyBpZD0idGV4dF8xMSI+CiAgICAgIDwhLS0gMCAtLT4KICAgICAgPGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoOTQuNjM3NSAyNDguMjg5NjQ3KXNjYWxlKDAuMSAtMC4xKSI+CiAgICAgICA8dXNlIHhsaW5rOmhyZWY9IiNEZWphVnVTYW5zLTMwIi8+CiAgICAgIDwvZz4KICAgICA8L2c+CiAgICA8L2c+CiAgICA8ZyBpZD0ieXRpY2tfMiI+CiAgICAgPGcgaWQ9ImxpbmUyZF8yMSI+CiAgICAgIDxwYXRoIGQ9Ik0gMTA4IDIxNS45NzE2NzggCkwgNDEyLjM2MzYzNiAyMTUuOTcxNjc4IAoiIGNsaXAtcGF0aD0idXJsKCNwMDYzYzhmNWViOCkiIHN0eWxlPSJmaWxsOiBub25lOyBzdHJva2U6ICNiMGIwYjA7IHN0cm9rZS13aWR0aDogMC44OyBzdHJva2UtbGluZWNhcDogc3F1YXJlIi8+CiAgICAgPC9nPgogICAgIDxnIGlkPSJsaW5lMmRfMjIiPgogICAgICA8Zz4KICAgICAgIDx1c2UgeGxpbms6aHJlZj0iI202NzhjZjUyMjgyIiB4PSIxMDgiIHk9IjIxNS45NzE2NzgiIHN0eWxlPSJzdHJva2U6ICMwMDAwMDA7IHN0cm9rZS13aWR0aDogMC44Ii8+CiAgICAgIDwvZz4KICAgICA8L2c+CiAgICAgPGcgaWQ9InRleHRfMTIiPgogICAgICA8IS0tIDUwIC0tPgogICAgICA8ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSg4OC4yNzUgMjE5Ljc3MDg5NilzY2FsZSgwLjEgLTAuMSkiPgogICAgICAgPHVzZSB4bGluazpocmVmPSIjRGVqYVZ1U2Fucy0zNSIvPgogICAgICAgPHVzZSB4bGluazpocmVmPSIjRGVqYVZ1U2Fucy0zMCIgeD0iNjMuNjIzMDQ3Ii8+CiAgICAgIDwvZz4KICAgICA8L2c+CiAgICA8L2c+CiAgICA8ZyBpZD0ieXRpY2tfMyI+CiAgICAgPGcgaWQ9ImxpbmUyZF8yMyI+CiAgICAgIDxwYXRoIGQ9Ik0gMTA4IDE4Ny40NTI5MjcgCkwgNDEyLjM2MzYzNiAxODcuNDUyOTI3IAoiIGNsaXAtcGF0aD0idXJsKCNwMDYzYzhmNWViOCkiIHN0eWxlPSJmaWxsOiBub25lOyBzdHJva2U6ICNiMGIwYjA7IHN0cm9rZS13aWR0aDogMC44OyBzdHJva2UtbGluZWNhcDogc3F1YXJlIi8+CiAgICAgPC9nPgogICAgIDxnIGlkPSJsaW5lMmRfMjQiPgogICAgICA8Zz4KICAgICAgIDx1c2UgeGxpbms6aHJlZj0iI202NzhjZjUyMjgyIiB4PSIxMDgiIHk9IjE4Ny40NTI5MjciIHN0eWxlPSJzdHJva2U6ICMwMDAwMDA7IHN0cm9rZS13aWR0aDogMC44Ii8+CiAgICAgIDwvZz4KICAgICA8L2c+CiAgICAgPGcgaWQ9InRleHRfMTMiPgogICAgICA8IS0tIDEwMCAtLT4KICAgICAgPGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoODEuOTEyNSAxOTEuMjUyMTQ2KXNjYWxlKDAuMSAtMC4xKSI+CiAgICAgICA8dXNlIHhsaW5rOmhyZWY9IiNEZWphVnVTYW5zLTMxIi8+CiAgICAgICA8dXNlIHhsaW5rOmhyZWY9IiNEZWphVnVTYW5zLTMwIiB4PSI2My42MjMwNDciLz4KICAgICAgIDx1c2UgeGxpbms6aHJlZj0iI0RlamFWdVNhbnMtMzAiIHg9IjEyNy4yNDYwOTQiLz4KICAgICAgPC9nPgogICAgIDwvZz4KICAgIDwvZz4KICAgIDxnIGlkPSJ5dGlja180Ij4KICAgICA8ZyBpZD0ibGluZTJkXzI1Ij4KICAgICAgPHBhdGggZD0iTSAxMDggMTU4LjkzNDE3NiAKTCA0MTIuMzYzNjM2IDE1OC45MzQxNzYgCiIgY2xpcC1wYXRoPSJ1cmwoI3AwNjNjOGY1ZWI4KSIgc3R5bGU9ImZpbGw6IG5vbmU7IHN0cm9rZTogI2IwYjBiMDsgc3Ryb2tlLXdpZHRoOiAwLjg7IHN0cm9rZS1saW5lY2FwOiBzcXVhcmUiLz4KICAgICA8L2c+CiAgICAgPGcgaWQ9ImxpbmUyZF8yNiI+CiAgICAgIDxnPgogICAgICAgPHVzZSB4bGluazpocmVmPSIjbTY3OGNmNTIyODIiIHg9IjEwOCIgeT0iMTU4LjkzNDE3NiIgc3R5bGU9InN0cm9rZTogIzAwMDAwMDsgc3Ryb2tlLXdpZHRoOiAwLjgiLz4KICAgICAgPC9nPgogICAgIDwvZz4KICAgICA8ZyBpZD0idGV4dF8xNCI+CiAgICAgIDwhLS0gMTUwIC0tPgogICAgICA8ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSg4MS45MTI1IDE2Mi43MzMzOTUpc2NhbGUoMC4xIC0wLjEpIj4KICAgICAgIDx1c2UgeGxpbms6aHJlZj0iI0RlamFWdVNhbnMtMzEiLz4KICAgICAgIDx1c2UgeGxpbms6aHJlZj0iI0RlamFWdVNhbnMtMzUiIHg9IjYzLjYyMzA0NyIvPgogICAgICAgPHVzZSB4bGluazpocmVmPSIjRGVqYVZ1U2Fucy0zMCIgeD0iMTI3LjI0NjA5NCIvPgogICAgICA8L2c+CiAgICAgPC9nPgogICAgPC9nPgogICAgPGcgaWQ9Inl0aWNrXzUiPgogICAgIDxnIGlkPSJsaW5lMmRfMjciPgogICAgICA8cGF0aCBkPSJNIDEwOCAxMzAuNDE1NDI1IApMIDQxMi4zNjM2MzYgMTMwLjQxNTQyNSAKIiBjbGlwLXBhdGg9InVybCgjcDA2M2M4ZjVlYjgpIiBzdHlsZT0iZmlsbDogbm9uZTsgc3Ryb2tlOiAjYjBiMGIwOyBzdHJva2Utd2lkdGg6IDAuODsgc3Ryb2tlLWxpbmVjYXA6IHNxdWFyZSIvPgogICAgIDwvZz4KICAgICA8ZyBpZD0ibGluZTJkXzI4Ij4KICAgICAgPGc+CiAgICAgICA8dXNlIHhsaW5rOmhyZWY9IiNtNjc4Y2Y1MjI4MiIgeD0iMTA4IiB5PSIxMzAuNDE1NDI1IiBzdHlsZT0ic3Ryb2tlOiAjMDAwMDAwOyBzdHJva2Utd2lkdGg6IDAuOCIvPgogICAgICA8L2c+CiAgICAgPC9nPgogICAgIDxnIGlkPSJ0ZXh0XzE1Ij4KICAgICAgPCEtLSAyMDAgLS0+CiAgICAgIDxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDgxLjkxMjUgMTM0LjIxNDY0NClzY2FsZSgwLjEgLTAuMSkiPgogICAgICAgPHVzZSB4bGluazpocmVmPSIjRGVqYVZ1U2Fucy0zMiIvPgogICAgICAgPHVzZSB4bGluazpocmVmPSIjRGVqYVZ1U2Fucy0zMCIgeD0iNjMuNjIzMDQ3Ii8+CiAgICAgICA8dXNlIHhsaW5rOmhyZWY9IiNEZWphVnVTYW5zLTMwIiB4PSIxMjcuMjQ2MDk0Ii8+CiAgICAgIDwvZz4KICAgICA8L2c+CiAgICA8L2c+CiAgICA8ZyBpZD0ieXRpY2tfNiI+CiAgICAgPGcgaWQ9ImxpbmUyZF8yOSI+CiAgICAgIDxwYXRoIGQ9Ik0gMTA4IDEwMS44OTY2NzQgCkwgNDEyLjM2MzYzNiAxMDEuODk2Njc0IAoiIGNsaXAtcGF0aD0idXJsKCNwMDYzYzhmNWViOCkiIHN0eWxlPSJmaWxsOiBub25lOyBzdHJva2U6ICNiMGIwYjA7IHN0cm9rZS13aWR0aDogMC44OyBzdHJva2UtbGluZWNhcDogc3F1YXJlIi8+CiAgICAgPC9nPgogICAgIDxnIGlkPSJsaW5lMmRfMzAiPgogICAgICA8Zz4KICAgICAgIDx1c2UgeGxpbms6aHJlZj0iI202NzhjZjUyMjgyIiB4PSIxMDgiIHk9IjEwMS44OTY2NzQiIHN0eWxlPSJzdHJva2U6ICMwMDAwMDA7IHN0cm9rZS13aWR0aDogMC44Ii8+CiAgICAgIDwvZz4KICAgICA8L2c+CiAgICAgPGcgaWQ9InRleHRfMTYiPgogICAgICA8IS0tIDI1MCAtLT4KICAgICAgPGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoODEuOTEyNSAxMDUuNjk1ODkzKXNjYWxlKDAuMSAtMC4xKSI+CiAgICAgICA8dXNlIHhsaW5rOmhyZWY9IiNEZWphVnVTYW5zLTMyIi8+CiAgICAgICA8dXNlIHhsaW5rOmhyZWY9IiNEZWphVnVTYW5zLTM1IiB4PSI2My42MjMwNDciLz4KICAgICAgIDx1c2UgeGxpbms6aHJlZj0iI0RlamFWdVNhbnMtMzAiIHg9IjEyNy4yNDYwOTQiLz4KICAgICAgPC9nPgogICAgIDwvZz4KICAgIDwvZz4KICAgIDxnIGlkPSJ5dGlja183Ij4KICAgICA8ZyBpZD0ibGluZTJkXzMxIj4KICAgICAgPHBhdGggZD0iTSAxMDggNzMuMzc3OTI0IApMIDQxMi4zNjM2MzYgNzMuMzc3OTI0IAoiIGNsaXAtcGF0aD0idXJsKCNwMDYzYzhmNWViOCkiIHN0eWxlPSJmaWxsOiBub25lOyBzdHJva2U6ICNiMGIwYjA7IHN0cm9rZS13aWR0aDogMC44OyBzdHJva2UtbGluZWNhcDogc3F1YXJlIi8+CiAgICAgPC9nPgogICAgIDxnIGlkPSJsaW5lMmRfMzIiPgogICAgICA8Zz4KICAgICAgIDx1c2UgeGxpbms6aHJlZj0iI202NzhjZjUyMjgyIiB4PSIxMDgiIHk9IjczLjM3NzkyNCIgc3R5bGU9InN0cm9rZTogIzAwMDAwMDsgc3Ryb2tlLXdpZHRoOiAwLjgiLz4KICAgICAgPC9nPgogICAgIDwvZz4KICAgICA8ZyBpZD0idGV4dF8xNyI+CiAgICAgIDwhLS0gMzAwIC0tPgogICAgICA8ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSg4MS45MTI1IDc3LjE3NzE0MilzY2FsZSgwLjEgLTAuMSkiPgogICAgICAgPHVzZSB4bGluazpocmVmPSIjRGVqYVZ1U2Fucy0zMyIvPgogICAgICAgPHVzZSB4bGluazpocmVmPSIjRGVqYVZ1U2Fucy0zMCIgeD0iNjMuNjIzMDQ3Ii8+CiAgICAgICA8dXNlIHhsaW5rOmhyZWY9IiNEZWphVnVTYW5zLTMwIiB4PSIxMjcuMjQ2MDk0Ii8+CiAgICAgIDwvZz4KICAgICA8L2c+CiAgICA8L2c+CiAgICA8ZyBpZD0ieXRpY2tfOCI+CiAgICAgPGcgaWQ9ImxpbmUyZF8zMyI+CiAgICAgIDxwYXRoIGQ9Ik0gMTA4IDQ0Ljg1OTE3MyAKTCA0MTIuMzYzNjM2IDQ0Ljg1OTE3MyAKIiBjbGlwLXBhdGg9InVybCgjcDA2M2M4ZjVlYjgpIiBzdHlsZT0iZmlsbDogbm9uZTsgc3Ryb2tlOiAjYjBiMGIwOyBzdHJva2Utd2lkdGg6IDAuODsgc3Ryb2tlLWxpbmVjYXA6IHNxdWFyZSIvPgogICAgIDwvZz4KICAgICA8ZyBpZD0ibGluZTJkXzM0Ij4KICAgICAgPGc+CiAgICAgICA8dXNlIHhsaW5rOmhyZWY9IiNtNjc4Y2Y1MjI4MiIgeD0iMTA4IiB5PSI0NC44NTkxNzMiIHN0eWxlPSJzdHJva2U6ICMwMDAwMDA7IHN0cm9rZS13aWR0aDogMC44Ii8+CiAgICAgIDwvZz4KICAgICA8L2c+CiAgICAgPGcgaWQ9InRleHRfMTgiPgogICAgICA8IS0tIDM1MCAtLT4KICAgICAgPGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoODEuOTEyNSA0OC42NTgzOTIpc2NhbGUoMC4xIC0wLjEpIj4KICAgICAgIDx1c2UgeGxpbms6aHJlZj0iI0RlamFWdVNhbnMtMzMiLz4KICAgICAgIDx1c2UgeGxpbms6aHJlZj0iI0RlamFWdVNhbnMtMzUiIHg9IjYzLjYyMzA0NyIvPgogICAgICAgPHVzZSB4bGluazpocmVmPSIjRGVqYVZ1U2Fucy0zMCIgeD0iMTI3LjI0NjA5NCIvPgogICAgICA8L2c+CiAgICAgPC9nPgogICAgPC9nPgogICAgPGcgaWQ9InRleHRfMTkiPgogICAgIDwhLS0gVGltZSBbc10gLS0+CiAgICAgPGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNzUuODMyODEyIDE2My42MDg5MDYpcm90YXRlKC05MClzY2FsZSgwLjEgLTAuMSkiPgogICAgICA8ZGVmcz4KICAgICAgIDxwYXRoIGlkPSJEZWphVnVTYW5zLTU0IiBkPSJNIC0xOSA0NjY2IApMIDM5MjggNDY2NiAKTCAzOTI4IDQxMzQgCkwgMjI3MiA0MTM0IApMIDIyNzIgMCAKTCAxNjM4IDAgCkwgMTYzOCA0MTM0IApMIC0xOSA0MTM0IApMIC0xOSA0NjY2IAp6CiIgdHJhbnNmb3JtPSJzY2FsZSgwLjAxNTYyNSkiLz4KICAgICAgIDxwYXRoIGlkPSJEZWphVnVTYW5zLTZkIiBkPSJNIDMzMjggMjgyOCAKUSAzNTQ0IDMyMTYgMzg0NCAzNDAwIApRIDQxNDQgMzU4NCA0NTUwIDM1ODQgClEgNTA5NyAzNTg0IDUzOTQgMzIwMSAKUSA1NjkxIDI4MTkgNTY5MSAyMTEzIApMIDU2OTEgMCAKTCA1MTEzIDAgCkwgNTExMyAyMDk0IApRIDUxMTMgMjU5NyA0OTM0IDI4NDAgClEgNDc1NiAzMDg0IDQzOTEgMzA4NCAKUSAzOTQ0IDMwODQgMzY4NCAyNzg3IApRIDM0MjUgMjQ5MSAzNDI1IDE5NzggCkwgMzQyNSAwIApMIDI4NDcgMCAKTCAyODQ3IDIwOTQgClEgMjg0NyAyNjAwIDI2NjkgMjg0MiAKUSAyNDkxIDMwODQgMjExOSAzMDg0IApRIDE2NzggMzA4NCAxNDE4IDI3ODYgClEgMTE1OSAyNDg4IDExNTkgMTk3OCAKTCAxMTU5IDAgCkwgNTgxIDAgCkwgNTgxIDM1MDAgCkwgMTE1OSAzNTAwIApMIDExNTkgMjk1NiAKUSAxMzU2IDMyNzggMTYzMSAzNDMxIApRIDE5MDYgMzU4NCAyMjg0IDM1ODQgClEgMjY2NiAzNTg0IDI5MzMgMzM5MCAKUSAzMjAwIDMxOTcgMzMyOCAyODI4IAp6CiIgdHJhbnNmb3JtPSJzY2FsZSgwLjAxNTYyNSkiLz4KICAgICAgIDxwYXRoIGlkPSJEZWphVnVTYW5zLTViIiBkPSJNIDU1MCA0ODYzIApMIDE4NzUgNDg2MyAKTCAxODc1IDQ0MTYgCkwgMTEyNSA0NDE2IApMIDExMjUgLTM5NyAKTCAxODc1IC0zOTcgCkwgMTg3NSAtODQ0IApMIDU1MCAtODQ0IApMIDU1MCA0ODYzIAp6CiIgdHJhbnNmb3JtPSJzY2FsZSgwLjAxNTYyNSkiLz4KICAgICAgIDxwYXRoIGlkPSJEZWphVnVTYW5zLTVkIiBkPSJNIDE5NDcgNDg2MyAKTCAxOTQ3IC04NDQgCkwgNjIyIC04NDQgCkwgNjIyIC0zOTcgCkwgMTM2OSAtMzk3IApMIDEzNjkgNDQxNiAKTCA2MjIgNDQxNiAKTCA2MjIgNDg2MyAKTCAxOTQ3IDQ4NjMgCnoKIiB0cmFuc2Zvcm09InNjYWxlKDAuMDE1NjI1KSIvPgogICAgICA8L2RlZnM+CiAgICAgIDx1c2UgeGxpbms6aHJlZj0iI0RlamFWdVNhbnMtNTQiLz4KICAgICAgPHVzZSB4bGluazpocmVmPSIjRGVqYVZ1U2Fucy02OSIgeD0iNTcuOTU4OTg0Ii8+CiAgICAgIDx1c2UgeGxpbms6aHJlZj0iI0RlamFWdVNhbnMtNmQiIHg9Ijg1Ljc0MjE4OCIvPgogICAgICA8dXNlIHhsaW5rOmhyZWY9IiNEZWphVnVTYW5zLTY1IiB4PSIxODMuMTU0Mjk3Ii8+CiAgICAgIDx1c2UgeGxpbms6aHJlZj0iI0RlamFWdVNhbnMtMjAiIHg9IjI0NC42Nzc3MzQiLz4KICAgICAgPHVzZSB4bGluazpocmVmPSIjRGVqYVZ1U2Fucy01YiIgeD0iMjc2LjQ2NDg0NCIvPgogICAgICA8dXNlIHhsaW5rOmhyZWY9IiNEZWphVnVTYW5zLTczIiB4PSIzMTUuNDc4NTE2Ii8+CiAgICAgIDx1c2UgeGxpbms6aHJlZj0iI0RlamFWdVNhbnMtNWQiIHg9IjM2Ny41NzgxMjUiLz4KICAgICA8L2c+CiAgICA8L2c+CiAgIDwvZz4KICAgPGcgaWQ9ImxpbmUyZF8zNSI+CiAgICA8cGF0aCBkPSJNIDEyMS44MzQ3MTEgMjM2LjQ3NjU3NCAKTCAxOTEuMDA4MjY0IDIxMy45NjYyMjIgCkwgMjYwLjE4MTgxOCAxNzIuNDMxNTg5IApMIDMyOS4zNTUzNzIgMTE2LjA4MDIyOCAKTCAzOTguNTI4OTI2IDQ0LjQ0MzYzNiAKIiBjbGlwLXBhdGg9InVybCgjcDA2M2M4ZjVlYjgpIiBzdHlsZT0iZmlsbDogbm9uZTsgc3Ryb2tlOiAjMWY3N2I0OyBzdHJva2Utd2lkdGg6IDEuNTsgc3Ryb2tlLWxpbmVjYXA6IHNxdWFyZSIvPgogICA8L2c+CiAgIDxnIGlkPSJsaW5lMmRfMzYiPgogICAgPHBhdGggZD0iTSAxMjEuODM0NzExIDI0MS42MTA3MTQgCkwgMTkxLjAwODI2NCAyMzUuMzkzNDE4IApMIDI2MC4xODE4MTggMjIzLjk1MzU4MiAKTCAzMjkuMzU1MzcyIDIwOS4xMTM2MTcgCkwgMzk4LjUyODkyNiAxODkuNjE4NTM2IAoiIGNsaXAtcGF0aD0idXJsKCNwMDYzYzhmNWViOCkiIHN0eWxlPSJmaWxsOiBub25lOyBzdHJva2U6ICNmZjdmMGU7IHN0cm9rZS13aWR0aDogMS41OyBzdHJva2UtbGluZWNhcDogc3F1YXJlIi8+CiAgIDwvZz4KICAgPGcgaWQ9ImxpbmUyZF8zNyI+CiAgICA8cGF0aCBkPSJNIDEyMS44MzQ3MTEgMjQyLjExNjM2NCAKTCAxOTEuMDA4MjY0IDI0MC45NTMzMjcgCkwgMjYwLjE4MTgxOCAyMzYuNDk3MDU4IApMIDMyOS4zNTUzNzIgMjMwLjc3Mjg0MyAKTCAzOTguNTI4OTI2IDIyNC4yNzk4MTkgCiIgY2xpcC1wYXRoPSJ1cmwoI3AwNjNjOGY1ZWI4KSIgc3R5bGU9ImZpbGw6IG5vbmU7IHN0cm9rZTogIzJjYTAyYzsgc3Ryb2tlLXdpZHRoOiAxLjU7IHN0cm9rZS1saW5lY2FwOiBzcXVhcmUiLz4KICAgPC9nPgogICA8ZyBpZD0ibGluZTJkXzM4Ij4KICAgIDxwYXRoIGQ9Ik0gMTIxLjgzNDcxMSAyNDAuOTg1NTAxIApMIDE5MS4wMDgyNjQgMjQxLjYzNjc1MiAKTCAyNjAuMTgxODE4IDIzNy45MDMwODIgCkwgMzI5LjM1NTM3MiAyMzMuMDU4MTM1IApMIDM5OC41Mjg5MjYgMjI4LjY5NDY4MiAKIiBjbGlwLXBhdGg9InVybCgjcDA2M2M4ZjVlYjgpIiBzdHlsZT0iZmlsbDogbm9uZTsgc3Ryb2tlOiAjZDYyNzI4OyBzdHJva2Utd2lkdGg6IDEuNTsgc3Ryb2tlLWxpbmVjYXA6IHNxdWFyZSIvPgogICA8L2c+CiAgIDxnIGlkPSJwYXRjaF8zIj4KICAgIDxwYXRoIGQ9Ik0gMTA4IDI1MiAKTCAxMDggMzQuNTYgCiIgc3R5bGU9ImZpbGw6IG5vbmU7IHN0cm9rZTogIzAwMDAwMDsgc3Ryb2tlLXdpZHRoOiAwLjg7IHN0cm9rZS1saW5lam9pbjogbWl0ZXI7IHN0cm9rZS1saW5lY2FwOiBzcXVhcmUiLz4KICAgPC9nPgogICA8ZyBpZD0icGF0Y2hfNCI+CiAgICA8cGF0aCBkPSJNIDQxMi4zNjM2MzYgMjUyIApMIDQxMi4zNjM2MzYgMzQuNTYgCiIgc3R5bGU9ImZpbGw6IG5vbmU7IHN0cm9rZTogIzAwMDAwMDsgc3Ryb2tlLXdpZHRoOiAwLjg7IHN0cm9rZS1saW5lam9pbjogbWl0ZXI7IHN0cm9rZS1saW5lY2FwOiBzcXVhcmUiLz4KICAgPC9nPgogICA8ZyBpZD0icGF0Y2hfNSI+CiAgICA8cGF0aCBkPSJNIDEwOCAyNTIgCkwgNDEyLjM2MzYzNiAyNTIgCiIgc3R5bGU9ImZpbGw6IG5vbmU7IHN0cm9rZTogIzAwMDAwMDsgc3Ryb2tlLXdpZHRoOiAwLjg7IHN0cm9rZS1saW5lam9pbjogbWl0ZXI7IHN0cm9rZS1saW5lY2FwOiBzcXVhcmUiLz4KICAgPC9nPgogICA8ZyBpZD0icGF0Y2hfNiI+CiAgICA8cGF0aCBkPSJNIDEwOCAzNC41NiAKTCA0MTIuMzYzNjM2IDM0LjU2IAoiIHN0eWxlPSJmaWxsOiBub25lOyBzdHJva2U6ICMwMDAwMDA7IHN0cm9rZS13aWR0aDogMC44OyBzdHJva2UtbGluZWpvaW46IG1pdGVyOyBzdHJva2UtbGluZWNhcDogc3F1YXJlIi8+CiAgIDwvZz4KICAgPGcgaWQ9ImxlZ2VuZF8xIj4KICAgIDxnIGlkPSJwYXRjaF83Ij4KICAgICA8cGF0aCBkPSJNIDExNSAxMDEuMjcyNSAKTCAxODguNDQzNzUgMTAxLjI3MjUgClEgMTkwLjQ0Mzc1IDEwMS4yNzI1IDE5MC40NDM3NSA5OS4yNzI1IApMIDE5MC40NDM3NSA0MS41NiAKUSAxOTAuNDQzNzUgMzkuNTYgMTg4LjQ0Mzc1IDM5LjU2IApMIDExNSAzOS41NiAKUSAxMTMgMzkuNTYgMTEzIDQxLjU2IApMIDExMyA5OS4yNzI1IApRIDExMyAxMDEuMjcyNSAxMTUgMTAxLjI3MjUgCnoKIiBzdHlsZT0iZmlsbDogI2ZmZmZmZjsgb3BhY2l0eTogMC44OyBzdHJva2U6ICNjY2NjY2M7IHN0cm9rZS1saW5lam9pbjogbWl0ZXIiLz4KICAgIDwvZz4KICAgIDxnIGlkPSJsaW5lMmRfMzkiPgogICAgIDxwYXRoIGQ9Ik0gMTE3IDQ3LjY1ODQzNyAKTCAxMjcgNDcuNjU4NDM3IApMIDEzNyA0Ny42NTg0MzcgCiIgc3R5bGU9ImZpbGw6IG5vbmU7IHN0cm9rZTogIzFmNzdiNDsgc3Ryb2tlLXdpZHRoOiAxLjU7IHN0cm9rZS1saW5lY2FwOiBzcXVhcmUiLz4KICAgIDwvZz4KICAgIDxnIGlkPSJ0ZXh0XzIwIj4KICAgICA8IS0tIDEgQ1BVcyAtLT4KICAgICA8ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxNDUgNTEuMTU4NDM3KXNjYWxlKDAuMSAtMC4xKSI+CiAgICAgIDxkZWZzPgogICAgICAgPHBhdGggaWQ9IkRlamFWdVNhbnMtNDMiIGQ9Ik0gNDEyMiA0MzA2IApMIDQxMjIgMzY0MSAKUSAzODAzIDM5MzggMzQ0MiA0MDg0IApRIDMwODEgNDIzMSAyNjc1IDQyMzEgClEgMTg3NSA0MjMxIDE0NTAgMzc0MiAKUSAxMDI1IDMyNTMgMTAyNSAyMzI4IApRIDEwMjUgMTQwNiAxNDUwIDkxNyAKUSAxODc1IDQyOCAyNjc1IDQyOCAKUSAzMDgxIDQyOCAzNDQyIDU3NSAKUSAzODAzIDcyMiA0MTIyIDEwMTkgCkwgNDEyMiAzNTkgClEgMzc5MSAxMzQgMzQyMCAyMSAKUSAzMDUwIC05MSAyNjM4IC05MSAKUSAxNTc4IC05MSA5NjggNTU3IApRIDM1OSAxMjA2IDM1OSAyMzI4IApRIDM1OSAzNDUzIDk2OCA0MTAxIApRIDE1NzggNDc1MCAyNjM4IDQ3NTAgClEgMzA1NiA0NzUwIDM0MjYgNDYzOSAKUSAzNzk3IDQ1MjggNDEyMiA0MzA2IAp6CiIgdHJhbnNmb3JtPSJzY2FsZSgwLjAxNTYyNSkiLz4KICAgICAgIDxwYXRoIGlkPSJEZWphVnVTYW5zLTUwIiBkPSJNIDEyNTkgNDE0NyAKTCAxMjU5IDIzOTQgCkwgMjA1MyAyMzk0IApRIDI0OTQgMjM5NCAyNzM0IDI2MjIgClEgMjk3NSAyODUwIDI5NzUgMzI3MiAKUSAyOTc1IDM2OTEgMjczNCAzOTE5IApRIDI0OTQgNDE0NyAyMDUzIDQxNDcgCkwgMTI1OSA0MTQ3IAp6Ck0gNjI4IDQ2NjYgCkwgMjA1MyA0NjY2IApRIDI4MzggNDY2NiAzMjM5IDQzMTEgClEgMzY0MSAzOTU2IDM2NDEgMzI3MiAKUSAzNjQxIDI1ODEgMzIzOSAyMjI4IApRIDI4MzggMTg3NSAyMDUzIDE4NzUgCkwgMTI1OSAxODc1IApMIDEyNTkgMCAKTCA2MjggMCAKTCA2MjggNDY2NiAKegoiIHRyYW5zZm9ybT0ic2NhbGUoMC4wMTU2MjUpIi8+CiAgICAgICA8cGF0aCBpZD0iRGVqYVZ1U2Fucy01NSIgZD0iTSA1NTYgNDY2NiAKTCAxMTkxIDQ2NjYgCkwgMTE5MSAxODMxIApRIDExOTEgMTA4MSAxNDYyIDc1MSAKUSAxNzM0IDQyMiAyMzQ0IDQyMiAKUSAyOTUwIDQyMiAzMjIyIDc1MSAKUSAzNDk0IDEwODEgMzQ5NCAxODMxIApMIDM0OTQgNDY2NiAKTCA0MTI4IDQ2NjYgCkwgNDEyOCAxNzUzIApRIDQxMjggODQxIDM2NzYgMzc1IApRIDMyMjUgLTkxIDIzNDQgLTkxIApRIDE0NTkgLTkxIDEwMDcgMzc1IApRIDU1NiA4NDEgNTU2IDE3NTMgCkwgNTU2IDQ2NjYgCnoKIiB0cmFuc2Zvcm09InNjYWxlKDAuMDE1NjI1KSIvPgogICAgICA8L2RlZnM+CiAgICAgIDx1c2UgeGxpbms6aHJlZj0iI0RlamFWdVNhbnMtMzEiLz4KICAgICAgPHVzZSB4bGluazpocmVmPSIjRGVqYVZ1U2Fucy0yMCIgeD0iNjMuNjIzMDQ3Ii8+CiAgICAgIDx1c2UgeGxpbms6aHJlZj0iI0RlamFWdVNhbnMtNDMiIHg9Ijk1LjQxMDE1NiIvPgogICAgICA8dXNlIHhsaW5rOmhyZWY9IiNEZWphVnVTYW5zLTUwIiB4PSIxNjUuMjM0Mzc1Ii8+CiAgICAgIDx1c2UgeGxpbms6aHJlZj0iI0RlamFWdVNhbnMtNTUiIHg9IjIyNS41MzcxMDkiLz4KICAgICAgPHVzZSB4bGluazpocmVmPSIjRGVqYVZ1U2Fucy03MyIgeD0iMjk4LjczMDQ2OSIvPgogICAgIDwvZz4KICAgIDwvZz4KICAgIDxnIGlkPSJsaW5lMmRfNDAiPgogICAgIDxwYXRoIGQ9Ik0gMTE3IDYyLjMzNjU2MiAKTCAxMjcgNjIuMzM2NTYyIApMIDEzNyA2Mi4zMzY1NjIgCiIgc3R5bGU9ImZpbGw6IG5vbmU7IHN0cm9rZTogI2ZmN2YwZTsgc3Ryb2tlLXdpZHRoOiAxLjU7IHN0cm9rZS1saW5lY2FwOiBzcXVhcmUiLz4KICAgIDwvZz4KICAgIDxnIGlkPSJ0ZXh0XzIxIj4KICAgICA8IS0tIDQgQ1BVcyAtLT4KICAgICA8ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxNDUgNjUuODM2NTYyKXNjYWxlKDAuMSAtMC4xKSI+CiAgICAgIDx1c2UgeGxpbms6aHJlZj0iI0RlamFWdVNhbnMtMzQiLz4KICAgICAgPHVzZSB4bGluazpocmVmPSIjRGVqYVZ1U2Fucy0yMCIgeD0iNjMuNjIzMDQ3Ii8+CiAgICAgIDx1c2UgeGxpbms6aHJlZj0iI0RlamFWdVNhbnMtNDMiIHg9Ijk1LjQxMDE1NiIvPgogICAgICA8dXNlIHhsaW5rOmhyZWY9IiNEZWphVnVTYW5zLTUwIiB4PSIxNjUuMjM0Mzc1Ii8+CiAgICAgIDx1c2UgeGxpbms6aHJlZj0iI0RlamFWdVNhbnMtNTUiIHg9IjIyNS41MzcxMDkiLz4KICAgICAgPHVzZSB4bGluazpocmVmPSIjRGVqYVZ1U2Fucy03MyIgeD0iMjk4LjczMDQ2OSIvPgogICAgIDwvZz4KICAgIDwvZz4KICAgIDxnIGlkPSJsaW5lMmRfNDEiPgogICAgIDxwYXRoIGQ9Ik0gMTE3IDc3LjAxNDY4NyAKTCAxMjcgNzcuMDE0Njg3IApMIDEzNyA3Ny4wMTQ2ODcgCiIgc3R5bGU9ImZpbGw6IG5vbmU7IHN0cm9rZTogIzJjYTAyYzsgc3Ryb2tlLXdpZHRoOiAxLjU7IHN0cm9rZS1saW5lY2FwOiBzcXVhcmUiLz4KICAgIDwvZz4KICAgIDxnIGlkPSJ0ZXh0XzIyIj4KICAgICA8IS0tIDE2IENQVXMgLS0+CiAgICAgPGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTQ1IDgwLjUxNDY4NylzY2FsZSgwLjEgLTAuMSkiPgogICAgICA8ZGVmcz4KICAgICAgIDxwYXRoIGlkPSJEZWphVnVTYW5zLTM2IiBkPSJNIDIxMTMgMjU4NCAKUSAxNjg4IDI1ODQgMTQzOSAyMjkzIApRIDExOTEgMjAwMyAxMTkxIDE0OTcgClEgMTE5MSA5OTQgMTQzOSA3MDEgClEgMTY4OCA0MDkgMjExMyA0MDkgClEgMjUzOCA0MDkgMjc4NiA3MDEgClEgMzAzNCA5OTQgMzAzNCAxNDk3IApRIDMwMzQgMjAwMyAyNzg2IDIyOTMgClEgMjUzOCAyNTg0IDIxMTMgMjU4NCAKegpNIDMzNjYgNDU2MyAKTCAzMzY2IDM5ODggClEgMzEyOCA0MTAwIDI4ODYgNDE1OSAKUSAyNjQ0IDQyMTkgMjQwNiA0MjE5IApRIDE3ODEgNDIxOSAxNDUxIDM3OTcgClEgMTEyMiAzMzc1IDEwNzUgMjUyMiAKUSAxMjU5IDI3OTQgMTUzNyAyOTM5IApRIDE4MTYgMzA4NCAyMTUwIDMwODQgClEgMjg1MyAzMDg0IDMyNjEgMjY1NyAKUSAzNjY5IDIyMzEgMzY2OSAxNDk3IApRIDM2NjkgNzc4IDMyNDQgMzQzIApRIDI4MTkgLTkxIDIxMTMgLTkxIApRIDEzMDMgLTkxIDg3NSA1MjkgClEgNDQ3IDExNTAgNDQ3IDIzMjggClEgNDQ3IDM0MzQgOTcyIDQwOTIgClEgMTQ5NyA0NzUwIDIzODEgNDc1MCAKUSAyNjE5IDQ3NTAgMjg2MSA0NzAzIApRIDMxMDMgNDY1NiAzMzY2IDQ1NjMgCnoKIiB0cmFuc2Zvcm09InNjYWxlKDAuMDE1NjI1KSIvPgogICAgICA8L2RlZnM+CiAgICAgIDx1c2UgeGxpbms6aHJlZj0iI0RlamFWdVNhbnMtMzEiLz4KICAgICAgPHVzZSB4bGluazpocmVmPSIjRGVqYVZ1U2Fucy0zNiIgeD0iNjMuNjIzMDQ3Ii8+CiAgICAgIDx1c2UgeGxpbms6aHJlZj0iI0RlamFWdVNhbnMtMjAiIHg9IjEyNy4yNDYwOTQiLz4KICAgICAgPHVzZSB4bGluazpocmVmPSIjRGVqYVZ1U2Fucy00MyIgeD0iMTU5LjAzMzIwMyIvPgogICAgICA8dXNlIHhsaW5rOmhyZWY9IiNEZWphVnVTYW5zLTUwIiB4PSIyMjguODU3NDIyIi8+CiAgICAgIDx1c2UgeGxpbms6aHJlZj0iI0RlamFWdVNhbnMtNTUiIHg9IjI4OS4xNjAxNTYiLz4KICAgICAgPHVzZSB4bGluazpocmVmPSIjRGVqYVZ1U2Fucy03MyIgeD0iMzYyLjM1MzUxNiIvPgogICAgIDwvZz4KICAgIDwvZz4KICAgIDxnIGlkPSJsaW5lMmRfNDIiPgogICAgIDxwYXRoIGQ9Ik0gMTE3IDkxLjY5MjgxMyAKTCAxMjcgOTEuNjkyODEzIApMIDEzNyA5MS42OTI4MTMgCiIgc3R5bGU9ImZpbGw6IG5vbmU7IHN0cm9rZTogI2Q2MjcyODsgc3Ryb2tlLXdpZHRoOiAxLjU7IHN0cm9rZS1saW5lY2FwOiBzcXVhcmUiLz4KICAgIDwvZz4KICAgIDxnIGlkPSJ0ZXh0XzIzIj4KICAgICA8IS0tIDMyIENQVXMgLS0+CiAgICAgPGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTQ1IDk1LjE5MjgxMylzY2FsZSgwLjEgLTAuMSkiPgogICAgICA8dXNlIHhsaW5rOmhyZWY9IiNEZWphVnVTYW5zLTMzIi8+CiAgICAgIDx1c2UgeGxpbms6aHJlZj0iI0RlamFWdVNhbnMtMzIiIHg9IjYzLjYyMzA0NyIvPgogICAgICA8dXNlIHhsaW5rOmhyZWY9IiNEZWphVnVTYW5zLTIwIiB4PSIxMjcuMjQ2MDk0Ii8+CiAgICAgIDx1c2UgeGxpbms6aHJlZj0iI0RlamFWdVNhbnMtNDMiIHg9IjE1OS4wMzMyMDMiLz4KICAgICAgPHVzZSB4bGluazpocmVmPSIjRGVqYVZ1U2Fucy01MCIgeD0iMjI4Ljg1NzQyMiIvPgogICAgICA8dXNlIHhsaW5rOmhyZWY9IiNEZWphVnVTYW5zLTU1IiB4PSIyODkuMTYwMTU2Ii8+CiAgICAgIDx1c2UgeGxpbms6aHJlZj0iI0RlamFWdVNhbnMtNzMiIHg9IjM2Mi4zNTM1MTYiLz4KICAgICA8L2c+CiAgICA8L2c+CiAgIDwvZz4KICA8L2c+CiAgPGcgaWQ9ImF4ZXNfMiI+CiAgIDxnIGlkPSJwYXRjaF84Ij4KICAgIDxwYXRoIGQ9Ik0gNDczLjIzNjM2NCAyNTIgCkwgNzc3LjYgMjUyIApMIDc3Ny42IDM0LjU2IApMIDQ3My4yMzYzNjQgMzQuNTYgCnoKIiBzdHlsZT0iZmlsbDogI2ZmZmZmZiIvPgogICA8L2c+CiAgIDxnIGlkPSJtYXRwbG90bGliLmF4aXNfMyI+CiAgICA8ZyBpZD0ieHRpY2tfMTAiPgogICAgIDxnIGlkPSJsaW5lMmRfNDMiPgogICAgICA8cGF0aCBkPSJNIDQ4Ny4wNzEwNzQgMjUyIApMIDQ4Ny4wNzEwNzQgMzQuNTYgCiIgY2xpcC1wYXRoPSJ1cmwoI3AyOGE0YjY1YzM0KSIgc3R5bGU9ImZpbGw6IG5vbmU7IHN0cm9rZTogI2IwYjBiMDsgc3Ryb2tlLXdpZHRoOiAwLjg7IHN0cm9rZS1saW5lY2FwOiBzcXVhcmUiLz4KICAgICA8L2c+CiAgICAgPGcgaWQ9ImxpbmUyZF80NCI+CiAgICAgIDxnPgogICAgICAgPHVzZSB4bGluazpocmVmPSIjbTU4M2I2ZTVmNTkiIHg9IjQ4Ny4wNzEwNzQiIHk9IjI1MiIgc3R5bGU9InN0cm9rZTogIzAwMDAwMDsgc3Ryb2tlLXdpZHRoOiAwLjgiLz4KICAgICAgPC9nPgogICAgIDwvZz4KICAgICA8ZyBpZD0idGV4dF8yNCI+CiAgICAgIDwhLS0gMTAwIC0tPgogICAgICA8ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSg0NzcuNTI3MzI0IDI2Ni41OTg0Mzcpc2NhbGUoMC4xIC0wLjEpIj4KICAgICAgIDx1c2UgeGxpbms6aHJlZj0iI0RlamFWdVNhbnMtMzEiLz4KICAgICAgIDx1c2UgeGxpbms6aHJlZj0iI0RlamFWdVNhbnMtMzAiIHg9IjYzLjYyMzA0NyIvPgogICAgICAgPHVzZSB4bGluazpocmVmPSIjRGVqYVZ1U2Fucy0zMCIgeD0iMTI3LjI0NjA5NCIvPgogICAgICA8L2c+CiAgICAgPC9nPgogICAgPC9nPgogICAgPGcgaWQ9Inh0aWNrXzExIj4KICAgICA8ZyBpZD0ibGluZTJkXzQ1Ij4KICAgICAgPHBhdGggZD0iTSA1MjEuNjU3ODUxIDI1MiAKTCA1MjEuNjU3ODUxIDM0LjU2IAoiIGNsaXAtcGF0aD0idXJsKCNwMjhhNGI2NWMzNCkiIHN0eWxlPSJmaWxsOiBub25lOyBzdHJva2U6ICNiMGIwYjA7IHN0cm9rZS13aWR0aDogMC44OyBzdHJva2UtbGluZWNhcDogc3F1YXJlIi8+CiAgICAgPC9nPgogICAgIDxnIGlkPSJsaW5lMmRfNDYiPgogICAgICA8Zz4KICAgICAgIDx1c2UgeGxpbms6aHJlZj0iI201ODNiNmU1ZjU5IiB4PSI1MjEuNjU3ODUxIiB5PSIyNTIiIHN0eWxlPSJzdHJva2U6ICMwMDAwMDA7IHN0cm9rZS13aWR0aDogMC44Ii8+CiAgICAgIDwvZz4KICAgICA8L2c+CiAgICAgPGcgaWQ9InRleHRfMjUiPgogICAgICA8IS0tIDE1MCAtLT4KICAgICAgPGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNTEyLjExNDEwMSAyNjYuNTk4NDM3KXNjYWxlKDAuMSAtMC4xKSI+CiAgICAgICA8dXNlIHhsaW5rOmhyZWY9IiNEZWphVnVTYW5zLTMxIi8+CiAgICAgICA8dXNlIHhsaW5rOmhyZWY9IiNEZWphVnVTYW5zLTM1IiB4PSI2My42MjMwNDciLz4KICAgICAgIDx1c2UgeGxpbms6aHJlZj0iI0RlamFWdVNhbnMtMzAiIHg9IjEyNy4yNDYwOTQiLz4KICAgICAgPC9nPgogICAgIDwvZz4KICAgIDwvZz4KICAgIDxnIGlkPSJ4dGlja18xMiI+CiAgICAgPGcgaWQ9ImxpbmUyZF80NyI+CiAgICAgIDxwYXRoIGQ9Ik0gNTU2LjI0NDYyOCAyNTIgCkwgNTU2LjI0NDYyOCAzNC41NiAKIiBjbGlwLXBhdGg9InVybCgjcDI4YTRiNjVjMzQpIiBzdHlsZT0iZmlsbDogbm9uZTsgc3Ryb2tlOiAjYjBiMGIwOyBzdHJva2Utd2lkdGg6IDAuODsgc3Ryb2tlLWxpbmVjYXA6IHNxdWFyZSIvPgogICAgIDwvZz4KICAgICA8ZyBpZD0ibGluZTJkXzQ4Ij4KICAgICAgPGc+CiAgICAgICA8dXNlIHhsaW5rOmhyZWY9IiNtNTgzYjZlNWY1OSIgeD0iNTU2LjI0NDYyOCIgeT0iMjUyIiBzdHlsZT0ic3Ryb2tlOiAjMDAwMDAwOyBzdHJva2Utd2lkdGg6IDAuOCIvPgogICAgICA8L2c+CiAgICAgPC9nPgogICAgIDxnIGlkPSJ0ZXh0XzI2Ij4KICAgICAgPCEtLSAyMDAgLS0+CiAgICAgIDxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDU0Ni43MDA4NzggMjY2LjU5ODQzNylzY2FsZSgwLjEgLTAuMSkiPgogICAgICAgPHVzZSB4bGluazpocmVmPSIjRGVqYVZ1U2Fucy0zMiIvPgogICAgICAgPHVzZSB4bGluazpocmVmPSIjRGVqYVZ1U2Fucy0zMCIgeD0iNjMuNjIzMDQ3Ii8+CiAgICAgICA8dXNlIHhsaW5rOmhyZWY9IiNEZWphVnVTYW5zLTMwIiB4PSIxMjcuMjQ2MDk0Ii8+CiAgICAgIDwvZz4KICAgICA8L2c+CiAgICA8L2c+CiAgICA8ZyBpZD0ieHRpY2tfMTMiPgogICAgIDxnIGlkPSJsaW5lMmRfNDkiPgogICAgICA8cGF0aCBkPSJNIDU5MC44MzE0MDUgMjUyIApMIDU5MC44MzE0MDUgMzQuNTYgCiIgY2xpcC1wYXRoPSJ1cmwoI3AyOGE0YjY1YzM0KSIgc3R5bGU9ImZpbGw6IG5vbmU7IHN0cm9rZTogI2IwYjBiMDsgc3Ryb2tlLXdpZHRoOiAwLjg7IHN0cm9rZS1saW5lY2FwOiBzcXVhcmUiLz4KICAgICA8L2c+CiAgICAgPGcgaWQ9ImxpbmUyZF81MCI+CiAgICAgIDxnPgogICAgICAgPHVzZSB4bGluazpocmVmPSIjbTU4M2I2ZTVmNTkiIHg9IjU5MC44MzE0MDUiIHk9IjI1MiIgc3R5bGU9InN0cm9rZTogIzAwMDAwMDsgc3Ryb2tlLXdpZHRoOiAwLjgiLz4KICAgICAgPC9nPgogICAgIDwvZz4KICAgICA8ZyBpZD0idGV4dF8yNyI+CiAgICAgIDwhLS0gMjUwIC0tPgogICAgICA8ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSg1ODEuMjg3NjU1IDI2Ni41OTg0Mzcpc2NhbGUoMC4xIC0wLjEpIj4KICAgICAgIDx1c2UgeGxpbms6aHJlZj0iI0RlamFWdVNhbnMtMzIiLz4KICAgICAgIDx1c2UgeGxpbms6aHJlZj0iI0RlamFWdVNhbnMtMzUiIHg9IjYzLjYyMzA0NyIvPgogICAgICAgPHVzZSB4bGluazpocmVmPSIjRGVqYVZ1U2Fucy0zMCIgeD0iMTI3LjI0NjA5NCIvPgogICAgICA8L2c+CiAgICAgPC9nPgogICAgPC9nPgogICAgPGcgaWQ9Inh0aWNrXzE0Ij4KICAgICA8ZyBpZD0ibGluZTJkXzUxIj4KICAgICAgPHBhdGggZD0iTSA2MjUuNDE4MTgyIDI1MiAKTCA2MjUuNDE4MTgyIDM0LjU2IAoiIGNsaXAtcGF0aD0idXJsKCNwMjhhNGI2NWMzNCkiIHN0eWxlPSJmaWxsOiBub25lOyBzdHJva2U6ICNiMGIwYjA7IHN0cm9rZS13aWR0aDogMC44OyBzdHJva2UtbGluZWNhcDogc3F1YXJlIi8+CiAgICAgPC9nPgogICAgIDxnIGlkPSJsaW5lMmRfNTIiPgogICAgICA8Zz4KICAgICAgIDx1c2UgeGxpbms6aHJlZj0iI201ODNiNmU1ZjU5IiB4PSI2MjUuNDE4MTgyIiB5PSIyNTIiIHN0eWxlPSJzdHJva2U6ICMwMDAwMDA7IHN0cm9rZS13aWR0aDogMC44Ii8+CiAgICAgIDwvZz4KICAgICA8L2c+CiAgICAgPGcgaWQ9InRleHRfMjgiPgogICAgICA8IS0tIDMwMCAtLT4KICAgICAgPGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNjE1Ljg3NDQzMiAyNjYuNTk4NDM3KXNjYWxlKDAuMSAtMC4xKSI+CiAgICAgICA8dXNlIHhsaW5rOmhyZWY9IiNEZWphVnVTYW5zLTMzIi8+CiAgICAgICA8dXNlIHhsaW5rOmhyZWY9IiNEZWphVnVTYW5zLTMwIiB4PSI2My42MjMwNDciLz4KICAgICAgIDx1c2UgeGxpbms6aHJlZj0iI0RlamFWdVNhbnMtMzAiIHg9IjEyNy4yNDYwOTQiLz4KICAgICAgPC9nPgogICAgIDwvZz4KICAgIDwvZz4KICAgIDxnIGlkPSJ4dGlja18xNSI+CiAgICAgPGcgaWQ9ImxpbmUyZF81MyI+CiAgICAgIDxwYXRoIGQ9Ik0gNjYwLjAwNDk1OSAyNTIgCkwgNjYwLjAwNDk1OSAzNC41NiAKIiBjbGlwLXBhdGg9InVybCgjcDI4YTRiNjVjMzQpIiBzdHlsZT0iZmlsbDogbm9uZTsgc3Ryb2tlOiAjYjBiMGIwOyBzdHJva2Utd2lkdGg6IDAuODsgc3Ryb2tlLWxpbmVjYXA6IHNxdWFyZSIvPgogICAgIDwvZz4KICAgICA8ZyBpZD0ibGluZTJkXzU0Ij4KICAgICAgPGc+CiAgICAgICA8dXNlIHhsaW5rOmhyZWY9IiNtNTgzYjZlNWY1OSIgeD0iNjYwLjAwNDk1OSIgeT0iMjUyIiBzdHlsZT0ic3Ryb2tlOiAjMDAwMDAwOyBzdHJva2Utd2lkdGg6IDAuOCIvPgogICAgICA8L2c+CiAgICAgPC9nPgogICAgIDxnIGlkPSJ0ZXh0XzI5Ij4KICAgICAgPCEtLSAzNTAgLS0+CiAgICAgIDxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDY1MC40NjEyMDkgMjY2LjU5ODQzNylzY2FsZSgwLjEgLTAuMSkiPgogICAgICAgPHVzZSB4bGluazpocmVmPSIjRGVqYVZ1U2Fucy0zMyIvPgogICAgICAgPHVzZSB4bGluazpocmVmPSIjRGVqYVZ1U2Fucy0zNSIgeD0iNjMuNjIzMDQ3Ii8+CiAgICAgICA8dXNlIHhsaW5rOmhyZWY9IiNEZWphVnVTYW5zLTMwIiB4PSIxMjcuMjQ2MDk0Ii8+CiAgICAgIDwvZz4KICAgICA8L2c+CiAgICA8L2c+CiAgICA8ZyBpZD0ieHRpY2tfMTYiPgogICAgIDxnIGlkPSJsaW5lMmRfNTUiPgogICAgICA8cGF0aCBkPSJNIDY5NC41OTE3MzYgMjUyIApMIDY5NC41OTE3MzYgMzQuNTYgCiIgY2xpcC1wYXRoPSJ1cmwoI3AyOGE0YjY1YzM0KSIgc3R5bGU9ImZpbGw6IG5vbmU7IHN0cm9rZTogI2IwYjBiMDsgc3Ryb2tlLXdpZHRoOiAwLjg7IHN0cm9rZS1saW5lY2FwOiBzcXVhcmUiLz4KICAgICA8L2c+CiAgICAgPGcgaWQ9ImxpbmUyZF81NiI+CiAgICAgIDxnPgogICAgICAgPHVzZSB4bGluazpocmVmPSIjbTU4M2I2ZTVmNTkiIHg9IjY5NC41OTE3MzYiIHk9IjI1MiIgc3R5bGU9InN0cm9rZTogIzAwMDAwMDsgc3Ryb2tlLXdpZHRoOiAwLjgiLz4KICAgICAgPC9nPgogICAgIDwvZz4KICAgICA8ZyBpZD0idGV4dF8zMCI+CiAgICAgIDwhLS0gNDAwIC0tPgogICAgICA8ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSg2ODUuMDQ3OTg2IDI2Ni41OTg0Mzcpc2NhbGUoMC4xIC0wLjEpIj4KICAgICAgIDx1c2UgeGxpbms6aHJlZj0iI0RlamFWdVNhbnMtMzQiLz4KICAgICAgIDx1c2UgeGxpbms6aHJlZj0iI0RlamFWdVNhbnMtMzAiIHg9IjYzLjYyMzA0NyIvPgogICAgICAgPHVzZSB4bGluazpocmVmPSIjRGVqYVZ1U2Fucy0zMCIgeD0iMTI3LjI0NjA5NCIvPgogICAgICA8L2c+CiAgICAgPC9nPgogICAgPC9nPgogICAgPGcgaWQ9Inh0aWNrXzE3Ij4KICAgICA8ZyBpZD0ibGluZTJkXzU3Ij4KICAgICAgPHBhdGggZD0iTSA3MjkuMTc4NTEyIDI1MiAKTCA3MjkuMTc4NTEyIDM0LjU2IAoiIGNsaXAtcGF0aD0idXJsKCNwMjhhNGI2NWMzNCkiIHN0eWxlPSJmaWxsOiBub25lOyBzdHJva2U6ICNiMGIwYjA7IHN0cm9rZS13aWR0aDogMC44OyBzdHJva2UtbGluZWNhcDogc3F1YXJlIi8+CiAgICAgPC9nPgogICAgIDxnIGlkPSJsaW5lMmRfNTgiPgogICAgICA8Zz4KICAgICAgIDx1c2UgeGxpbms6aHJlZj0iI201ODNiNmU1ZjU5IiB4PSI3MjkuMTc4NTEyIiB5PSIyNTIiIHN0eWxlPSJzdHJva2U6ICMwMDAwMDA7IHN0cm9rZS13aWR0aDogMC44Ii8+CiAgICAgIDwvZz4KICAgICA8L2c+CiAgICAgPGcgaWQ9InRleHRfMzEiPgogICAgICA8IS0tIDQ1MCAtLT4KICAgICAgPGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNzE5LjYzNDc2MiAyNjYuNTk4NDM3KXNjYWxlKDAuMSAtMC4xKSI+CiAgICAgICA8dXNlIHhsaW5rOmhyZWY9IiNEZWphVnVTYW5zLTM0Ii8+CiAgICAgICA8dXNlIHhsaW5rOmhyZWY9IiNEZWphVnVTYW5zLTM1IiB4PSI2My42MjMwNDciLz4KICAgICAgIDx1c2UgeGxpbms6aHJlZj0iI0RlamFWdVNhbnMtMzAiIHg9IjEyNy4yNDYwOTQiLz4KICAgICAgPC9nPgogICAgIDwvZz4KICAgIDwvZz4KICAgIDxnIGlkPSJ4dGlja18xOCI+CiAgICAgPGcgaWQ9ImxpbmUyZF81OSI+CiAgICAgIDxwYXRoIGQ9Ik0gNzYzLjc2NTI4OSAyNTIgCkwgNzYzLjc2NTI4OSAzNC41NiAKIiBjbGlwLXBhdGg9InVybCgjcDI4YTRiNjVjMzQpIiBzdHlsZT0iZmlsbDogbm9uZTsgc3Ryb2tlOiAjYjBiMGIwOyBzdHJva2Utd2lkdGg6IDAuODsgc3Ryb2tlLWxpbmVjYXA6IHNxdWFyZSIvPgogICAgIDwvZz4KICAgICA8ZyBpZD0ibGluZTJkXzYwIj4KICAgICAgPGc+CiAgICAgICA8dXNlIHhsaW5rOmhyZWY9IiNtNTgzYjZlNWY1OSIgeD0iNzYzLjc2NTI4OSIgeT0iMjUyIiBzdHlsZT0ic3Ryb2tlOiAjMDAwMDAwOyBzdHJva2Utd2lkdGg6IDAuOCIvPgogICAgICA8L2c+CiAgICAgPC9nPgogICAgIDxnIGlkPSJ0ZXh0XzMyIj4KICAgICAgPCEtLSA1MDAgLS0+CiAgICAgIDxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDc1NC4yMjE1MzkgMjY2LjU5ODQzNylzY2FsZSgwLjEgLTAuMSkiPgogICAgICAgPHVzZSB4bGluazpocmVmPSIjRGVqYVZ1U2Fucy0zNSIvPgogICAgICAgPHVzZSB4bGluazpocmVmPSIjRGVqYVZ1U2Fucy0zMCIgeD0iNjMuNjIzMDQ3Ii8+CiAgICAgICA8dXNlIHhsaW5rOmhyZWY9IiNEZWphVnVTYW5zLTMwIiB4PSIxMjcuMjQ2MDk0Ii8+CiAgICAgIDwvZz4KICAgICA8L2c+CiAgICA8L2c+CiAgICA8ZyBpZD0idGV4dF8zMyI+CiAgICAgPCEtLSBOby4gd2luZCB0dXJiaW5lcyAtLT4KICAgICA8ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSg1ODEuNTE5NzQ0IDI4MC4yNzY1NjMpc2NhbGUoMC4xIC0wLjEpIj4KICAgICAgPHVzZSB4bGluazpocmVmPSIjRGVqYVZ1U2Fucy00ZSIvPgogICAgICA8dXNlIHhsaW5rOmhyZWY9IiNEZWphVnVTYW5zLTZmIiB4PSI3NC44MDQ2ODgiLz4KICAgICAgPHVzZSB4bGluazpocmVmPSIjRGVqYVZ1U2Fucy0yZSIgeD0iMTM0LjIzNjMyOCIvPgogICAgICA8dXNlIHhsaW5rOmhyZWY9IiNEZWphVnVTYW5zLTIwIiB4PSIxNjYuMDIzNDM4Ii8+CiAgICAgIDx1c2UgeGxpbms6aHJlZj0iI0RlamFWdVNhbnMtNzciIHg9IjE5Ny44MTA1NDciLz4KICAgICAgPHVzZSB4bGluazpocmVmPSIjRGVqYVZ1U2Fucy02OSIgeD0iMjc5LjU5NzY1NiIvPgogICAgICA8dXNlIHhsaW5rOmhyZWY9IiNEZWphVnVTYW5zLTZlIiB4PSIzMDcuMzgwODU5Ii8+CiAgICAgIDx1c2UgeGxpbms6aHJlZj0iI0RlamFWdVNhbnMtNjQiIHg9IjM3MC43NTk3NjYiLz4KICAgICAgPHVzZSB4bGluazpocmVmPSIjRGVqYVZ1U2Fucy0yMCIgeD0iNDM0LjIzNjMyOCIvPgogICAgICA8dXNlIHhsaW5rOmhyZWY9IiNEZWphVnVTYW5zLTc0IiB4PSI0NjYuMDIzNDM4Ii8+CiAgICAgIDx1c2UgeGxpbms6aHJlZj0iI0RlamFWdVNhbnMtNzUiIHg9IjUwNS4yMzI0MjIiLz4KICAgICAgPHVzZSB4bGluazpocmVmPSIjRGVqYVZ1U2Fucy03MiIgeD0iNTY4LjYxMTMyOCIvPgogICAgICA8dXNlIHhsaW5rOmhyZWY9IiNEZWphVnVTYW5zLTYyIiB4PSI2MDkuNzI0NjA5Ii8+CiAgICAgIDx1c2UgeGxpbms6aHJlZj0iI0RlamFWdVNhbnMtNjkiIHg9IjY3My4yMDExNzIiLz4KICAgICAgPHVzZSB4bGluazpocmVmPSIjRGVqYVZ1U2Fucy02ZSIgeD0iNzAwLjk4NDM3NSIvPgogICAgICA8dXNlIHhsaW5rOmhyZWY9IiNEZWphVnVTYW5zLTY1IiB4PSI3NjQuMzYzMjgxIi8+CiAgICAgIDx1c2UgeGxpbms6aHJlZj0iI0RlamFWdVNhbnMtNzMiIHg9IjgyNS44ODY3MTkiLz4KICAgICA8L2c+CiAgICA8L2c+CiAgIDwvZz4KICAgPGcgaWQ9Im1hdHBsb3RsaWIuYXhpc180Ij4KICAgIDxnIGlkPSJ5dGlja185Ij4KICAgICA8ZyBpZD0ibGluZTJkXzYxIj4KICAgICAgPHBhdGggZD0iTSA0NzMuMjM2MzY0IDIxNC43NTA1MzIgCkwgNzc3LjYgMjE0Ljc1MDUzMiAKIiBjbGlwLXBhdGg9InVybCgjcDI4YTRiNjVjMzQpIiBzdHlsZT0iZmlsbDogbm9uZTsgc3Ryb2tlOiAjYjBiMGIwOyBzdHJva2Utd2lkdGg6IDAuODsgc3Ryb2tlLWxpbmVjYXA6IHNxdWFyZSIvPgogICAgIDwvZz4KICAgICA8ZyBpZD0ibGluZTJkXzYyIj4KICAgICAgPGc+CiAgICAgICA8dXNlIHhsaW5rOmhyZWY9IiNtNjc4Y2Y1MjI4MiIgeD0iNDczLjIzNjM2NCIgeT0iMjE0Ljc1MDUzMiIgc3R5bGU9InN0cm9rZTogIzAwMDAwMDsgc3Ryb2tlLXdpZHRoOiAwLjgiLz4KICAgICAgPC9nPgogICAgIDwvZz4KICAgICA8ZyBpZD0idGV4dF8zNCI+CiAgICAgIDwhLS0gMjAgLS0+CiAgICAgIDxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDQ1My41MTEzNjQgMjE4LjU0OTc1MSlzY2FsZSgwLjEgLTAuMSkiPgogICAgICAgPHVzZSB4bGluazpocmVmPSIjRGVqYVZ1U2Fucy0zMiIvPgogICAgICAgPHVzZSB4bGluazpocmVmPSIjRGVqYVZ1U2Fucy0zMCIgeD0iNjMuNjIzMDQ3Ii8+CiAgICAgIDwvZz4KICAgICA8L2c+CiAgICA8L2c+CiAgICA8ZyBpZD0ieXRpY2tfMTAiPgogICAgIDxnIGlkPSJsaW5lMmRfNjMiPgogICAgICA8cGF0aCBkPSJNIDQ3My4yMzYzNjQgMTcyLjE3MzgwOCAKTCA3NzcuNiAxNzIuMTczODA4IAoiIGNsaXAtcGF0aD0idXJsKCNwMjhhNGI2NWMzNCkiIHN0eWxlPSJmaWxsOiBub25lOyBzdHJva2U6ICNiMGIwYjA7IHN0cm9rZS13aWR0aDogMC44OyBzdHJva2UtbGluZWNhcDogc3F1YXJlIi8+CiAgICAgPC9nPgogICAgIDxnIGlkPSJsaW5lMmRfNjQiPgogICAgICA8Zz4KICAgICAgIDx1c2UgeGxpbms6aHJlZj0iI202NzhjZjUyMjgyIiB4PSI0NzMuMjM2MzY0IiB5PSIxNzIuMTczODA4IiBzdHlsZT0ic3Ryb2tlOiAjMDAwMDAwOyBzdHJva2Utd2lkdGg6IDAuOCIvPgogICAgICA8L2c+CiAgICAgPC9nPgogICAgIDxnIGlkPSJ0ZXh0XzM1Ij4KICAgICAgPCEtLSA0MCAtLT4KICAgICAgPGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNDUzLjUxMTM2NCAxNzUuOTczMDI3KXNjYWxlKDAuMSAtMC4xKSI+CiAgICAgICA8dXNlIHhsaW5rOmhyZWY9IiNEZWphVnVTYW5zLTM0Ii8+CiAgICAgICA8dXNlIHhsaW5rOmhyZWY9IiNEZWphVnVTYW5zLTMwIiB4PSI2My42MjMwNDciLz4KICAgICAgPC9nPgogICAgIDwvZz4KICAgIDwvZz4KICAgIDxnIGlkPSJ5dGlja18xMSI+CiAgICAgPGcgaWQ9ImxpbmUyZF82NSI+CiAgICAgIDxwYXRoIGQ9Ik0gNDczLjIzNjM2NCAxMjkuNTk3MDg0IApMIDc3Ny42IDEyOS41OTcwODQgCiIgY2xpcC1wYXRoPSJ1cmwoI3AyOGE0YjY1YzM0KSIgc3R5bGU9ImZpbGw6IG5vbmU7IHN0cm9rZTogI2IwYjBiMDsgc3Ryb2tlLXdpZHRoOiAwLjg7IHN0cm9rZS1saW5lY2FwOiBzcXVhcmUiLz4KICAgICA8L2c+CiAgICAgPGcgaWQ9ImxpbmUyZF82NiI+CiAgICAgIDxnPgogICAgICAgPHVzZSB4bGluazpocmVmPSIjbTY3OGNmNTIyODIiIHg9IjQ3My4yMzYzNjQiIHk9IjEyOS41OTcwODQiIHN0eWxlPSJzdHJva2U6ICMwMDAwMDA7IHN0cm9rZS13aWR0aDogMC44Ii8+CiAgICAgIDwvZz4KICAgICA8L2c+CiAgICAgPGcgaWQ9InRleHRfMzYiPgogICAgICA8IS0tIDYwIC0tPgogICAgICA8ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSg0NTMuNTExMzY0IDEzMy4zOTYzMDMpc2NhbGUoMC4xIC0wLjEpIj4KICAgICAgIDx1c2UgeGxpbms6aHJlZj0iI0RlamFWdVNhbnMtMzYiLz4KICAgICAgIDx1c2UgeGxpbms6aHJlZj0iI0RlamFWdVNhbnMtMzAiIHg9IjYzLjYyMzA0NyIvPgogICAgICA8L2c+CiAgICAgPC9nPgogICAgPC9nPgogICAgPGcgaWQ9Inl0aWNrXzEyIj4KICAgICA8ZyBpZD0ibGluZTJkXzY3Ij4KICAgICAgPHBhdGggZD0iTSA0NzMuMjM2MzY0IDg3LjAyMDM2IApMIDc3Ny42IDg3LjAyMDM2IAoiIGNsaXAtcGF0aD0idXJsKCNwMjhhNGI2NWMzNCkiIHN0eWxlPSJmaWxsOiBub25lOyBzdHJva2U6ICNiMGIwYjA7IHN0cm9rZS13aWR0aDogMC44OyBzdHJva2UtbGluZWNhcDogc3F1YXJlIi8+CiAgICAgPC9nPgogICAgIDxnIGlkPSJsaW5lMmRfNjgiPgogICAgICA8Zz4KICAgICAgIDx1c2UgeGxpbms6aHJlZj0iI202NzhjZjUyMjgyIiB4PSI0NzMuMjM2MzY0IiB5PSI4Ny4wMjAzNiIgc3R5bGU9InN0cm9rZTogIzAwMDAwMDsgc3Ryb2tlLXdpZHRoOiAwLjgiLz4KICAgICAgPC9nPgogICAgIDwvZz4KICAgICA8ZyBpZD0idGV4dF8zNyI+CiAgICAgIDwhLS0gODAgLS0+CiAgICAgIDxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDQ1My41MTEzNjQgOTAuODE5NTc5KXNjYWxlKDAuMSAtMC4xKSI+CiAgICAgICA8ZGVmcz4KICAgICAgICA8cGF0aCBpZD0iRGVqYVZ1U2Fucy0zOCIgZD0iTSAyMDM0IDIyMTYgClEgMTU4NCAyMjE2IDEzMjYgMTk3NSAKUSAxMDY5IDE3MzQgMTA2OSAxMzEzIApRIDEwNjkgODkxIDEzMjYgNjUwIApRIDE1ODQgNDA5IDIwMzQgNDA5IApRIDI0ODQgNDA5IDI3NDMgNjUxIApRIDMwMDMgODk0IDMwMDMgMTMxMyAKUSAzMDAzIDE3MzQgMjc0NSAxOTc1IApRIDI0ODggMjIxNiAyMDM0IDIyMTYgCnoKTSAxNDAzIDI0ODQgClEgOTk3IDI1ODQgNzcwIDI4NjIgClEgNTQ0IDMxNDEgNTQ0IDM1NDEgClEgNTQ0IDQxMDAgOTQyIDQ0MjUgClEgMTM0MSA0NzUwIDIwMzQgNDc1MCAKUSAyNzMxIDQ3NTAgMzEyOCA0NDI1IApRIDM1MjUgNDEwMCAzNTI1IDM1NDEgClEgMzUyNSAzMTQxIDMyOTggMjg2MiAKUSAzMDcyIDI1ODQgMjY2OSAyNDg0IApRIDMxMjUgMjM3OCAzMzc5IDIwNjggClEgMzYzNCAxNzU5IDM2MzQgMTMxMyAKUSAzNjM0IDYzNCAzMjIwIDI3MSAKUSAyODA2IC05MSAyMDM0IC05MSAKUSAxMjYzIC05MSA4NDggMjcxIApRIDQzNCA2MzQgNDM0IDEzMTMgClEgNDM0IDE3NTkgNjkwIDIwNjggClEgOTQ3IDIzNzggMTQwMyAyNDg0IAp6Ck0gMTE3MiAzNDgxIApRIDExNzIgMzExOSAxMzk4IDI5MTYgClEgMTYyNSAyNzEzIDIwMzQgMjcxMyAKUSAyNDQxIDI3MTMgMjY3MCAyOTE2IApRIDI5MDAgMzExOSAyOTAwIDM0ODEgClEgMjkwMCAzODQ0IDI2NzAgNDA0NyAKUSAyNDQxIDQyNTAgMjAzNCA0MjUwIApRIDE2MjUgNDI1MCAxMzk4IDQwNDcgClEgMTE3MiAzODQ0IDExNzIgMzQ4MSAKegoiIHRyYW5zZm9ybT0ic2NhbGUoMC4wMTU2MjUpIi8+CiAgICAgICA8L2RlZnM+CiAgICAgICA8dXNlIHhsaW5rOmhyZWY9IiNEZWphVnVTYW5zLTM4Ii8+CiAgICAgICA8dXNlIHhsaW5rOmhyZWY9IiNEZWphVnVTYW5zLTMwIiB4PSI2My42MjMwNDciLz4KICAgICAgPC9nPgogICAgIDwvZz4KICAgIDwvZz4KICAgIDxnIGlkPSJ5dGlja18xMyI+CiAgICAgPGcgaWQ9ImxpbmUyZF82OSI+CiAgICAgIDxwYXRoIGQ9Ik0gNDczLjIzNjM2NCA0NC40NDM2MzYgCkwgNzc3LjYgNDQuNDQzNjM2IAoiIGNsaXAtcGF0aD0idXJsKCNwMjhhNGI2NWMzNCkiIHN0eWxlPSJmaWxsOiBub25lOyBzdHJva2U6ICNiMGIwYjA7IHN0cm9rZS13aWR0aDogMC44OyBzdHJva2UtbGluZWNhcDogc3F1YXJlIi8+CiAgICAgPC9nPgogICAgIDxnIGlkPSJsaW5lMmRfNzAiPgogICAgICA8Zz4KICAgICAgIDx1c2UgeGxpbms6aHJlZj0iI202NzhjZjUyMjgyIiB4PSI0NzMuMjM2MzY0IiB5PSI0NC40NDM2MzYiIHN0eWxlPSJzdHJva2U6ICMwMDAwMDA7IHN0cm9rZS13aWR0aDogMC44Ii8+CiAgICAgIDwvZz4KICAgICA8L2c+CiAgICAgPGcgaWQ9InRleHRfMzgiPgogICAgICA8IS0tIDEwMCAtLT4KICAgICAgPGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNDQ3LjE0ODg2NCA0OC4yNDI4NTUpc2NhbGUoMC4xIC0wLjEpIj4KICAgICAgIDx1c2UgeGxpbms6aHJlZj0iI0RlamFWdVNhbnMtMzEiLz4KICAgICAgIDx1c2UgeGxpbms6aHJlZj0iI0RlamFWdVNhbnMtMzAiIHg9IjYzLjYyMzA0NyIvPgogICAgICAgPHVzZSB4bGluazpocmVmPSIjRGVqYVZ1U2Fucy0zMCIgeD0iMTI3LjI0NjA5NCIvPgogICAgICA8L2c+CiAgICAgPC9nPgogICAgPC9nPgogICAgPGcgaWQ9InRleHRfMzkiPgogICAgIDwhLS0gQ1BVIHV0aWxpemF0aW9uIFslXSAtLT4KICAgICA8ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSg0NDEuMDY5MTc2IDE4OS44Mzc4MTMpcm90YXRlKC05MClzY2FsZSgwLjEgLTAuMSkiPgogICAgICA8ZGVmcz4KICAgICAgIDxwYXRoIGlkPSJEZWphVnVTYW5zLTZjIiBkPSJNIDYwMyA0ODYzIApMIDExNzggNDg2MyAKTCAxMTc4IDAgCkwgNjAzIDAgCkwgNjAzIDQ4NjMgCnoKIiB0cmFuc2Zvcm09InNjYWxlKDAuMDE1NjI1KSIvPgogICAgICAgPHBhdGggaWQ9IkRlamFWdVNhbnMtN2EiIGQ9Ik0gMzUzIDM1MDAgCkwgMzA4NCAzNTAwIApMIDMwODQgMjk3NSAKTCA5MjIgNDU5IApMIDMwODQgNDU5IApMIDMwODQgMCAKTCAyNzUgMCAKTCAyNzUgNTI1IApMIDI0MzggMzA0MSAKTCAzNTMgMzA0MSAKTCAzNTMgMzUwMCAKegoiIHRyYW5zZm9ybT0ic2NhbGUoMC4wMTU2MjUpIi8+CiAgICAgICA8cGF0aCBpZD0iRGVqYVZ1U2Fucy02MSIgZD0iTSAyMTk0IDE3NTkgClEgMTQ5NyAxNzU5IDEyMjggMTYwMCAKUSA5NTkgMTQ0MSA5NTkgMTA1NiAKUSA5NTkgNzUwIDExNjEgNTcwIApRIDEzNjMgMzkxIDE3MDkgMzkxIApRIDIxODggMzkxIDI0NzcgNzMwIApRIDI3NjYgMTA2OSAyNzY2IDE2MzEgCkwgMjc2NiAxNzU5IApMIDIxOTQgMTc1OSAKegpNIDMzNDEgMTk5NyAKTCAzMzQxIDAgCkwgMjc2NiAwIApMIDI3NjYgNTMxIApRIDI1NjkgMjEzIDIyNzUgNjEgClEgMTk4MSAtOTEgMTU1NiAtOTEgClEgMTAxOSAtOTEgNzAxIDIxMSAKUSAzODQgNTEzIDM4NCAxMDE5IApRIDM4NCAxNjA5IDc3OSAxOTA5IApRIDExNzUgMjIwOSAxOTU5IDIyMDkgCkwgMjc2NiAyMjA5IApMIDI3NjYgMjI2NiAKUSAyNzY2IDI2NjMgMjUwNSAyODgwIApRIDIyNDQgMzA5NyAxNzcyIDMwOTcgClEgMTQ3MiAzMDk3IDExODcgMzAyNSAKUSA5MDMgMjk1MyA2NDEgMjgwOSAKTCA2NDEgMzM0MSAKUSA5NTYgMzQ2MyAxMjUzIDM1MjMgClEgMTU1MCAzNTg0IDE4MzEgMzU4NCAKUSAyNTkxIDM1ODQgMjk2NiAzMTkwIApRIDMzNDEgMjc5NyAzMzQxIDE5OTcgCnoKIiB0cmFuc2Zvcm09InNjYWxlKDAuMDE1NjI1KSIvPgogICAgICAgPHBhdGggaWQ9IkRlamFWdVNhbnMtMjUiIGQ9Ik0gNDY1MyAyMDUzIApRIDQzODEgMjA1MyA0MjI2IDE4MjIgClEgNDA3MiAxNTkxIDQwNzIgMTE3OCAKUSA0MDcyIDc3MiA0MjI2IDUzOSAKUSA0MzgxIDMwNiA0NjUzIDMwNiAKUSA0OTE5IDMwNiA1MDczIDUzOSAKUSA1MjI4IDc3MiA1MjI4IDExNzggClEgNTIyOCAxNTg4IDUwNzMgMTgyMCAKUSA0OTE5IDIwNTMgNDY1MyAyMDUzIAp6Ck0gNDY1MyAyNDUwIApRIDUxNDcgMjQ1MCA1NDM3IDIxMDYgClEgNTcyOCAxNzYzIDU3MjggMTE3OCAKUSA1NzI4IDU5NCA1NDM2IDI1MSAKUSA1MTQ0IC05MSA0NjUzIC05MSAKUSA0MTUzIC05MSAzODYyIDI1MSAKUSAzNTcyIDU5NCAzNTcyIDExNzggClEgMzU3MiAxNzY2IDM4NjQgMjEwOCAKUSA0MTU2IDI0NTAgNDY1MyAyNDUwIAp6Ck0gMTQyOCA0MzUzIApRIDExNTkgNDM1MyAxMDA0IDQxMjAgClEgODUwIDM4ODggODUwIDM0ODEgClEgODUwIDMwNjkgMTAwMyAyODM3IApRIDExNTYgMjYwNiAxNDI4IDI2MDYgClEgMTcwMCAyNjA2IDE4NTQgMjgzNyAKUSAyMDA5IDMwNjkgMjAwOSAzNDgxIApRIDIwMDkgMzg4NCAxODUzIDQxMTggClEgMTY5NyA0MzUzIDE0MjggNDM1MyAKegpNIDQyNTAgNDc1MCAKTCA0NzUwIDQ3NTAgCkwgMTgzMSAtOTEgCkwgMTMzMSAtOTEgCkwgNDI1MCA0NzUwIAp6Ck0gMTQyOCA0NzUwIApRIDE5MjIgNDc1MCAyMjE1IDQ0MDggClEgMjUwOSA0MDY2IDI1MDkgMzQ4MSAKUSAyNTA5IDI4OTEgMjIxNyAyNTUwIApRIDE5MjUgMjIwOSAxNDI4IDIyMDkgClEgOTMxIDIyMDkgNjQyIDI1NTEgClEgMzUzIDI4OTQgMzUzIDM0ODEgClEgMzUzIDQwNjMgNjQzIDQ0MDYgClEgOTM0IDQ3NTAgMTQyOCA0NzUwIAp6CiIgdHJhbnNmb3JtPSJzY2FsZSgwLjAxNTYyNSkiLz4KICAgICAgPC9kZWZzPgogICAgICA8dXNlIHhsaW5rOmhyZWY9IiNEZWphVnVTYW5zLTQzIi8+CiAgICAgIDx1c2UgeGxpbms6aHJlZj0iI0RlamFWdVNhbnMtNTAiIHg9IjY5LjgyNDIxOSIvPgogICAgICA8dXNlIHhsaW5rOmhyZWY9IiNEZWphVnVTYW5zLTU1IiB4PSIxMzAuMTI2OTUzIi8+CiAgICAgIDx1c2UgeGxpbms6aHJlZj0iI0RlamFWdVNhbnMtMjAiIHg9IjIwMy4zMjAzMTIiLz4KICAgICAgPHVzZSB4bGluazpocmVmPSIjRGVqYVZ1U2Fucy03NSIgeD0iMjM1LjEwNzQyMiIvPgogICAgICA8dXNlIHhsaW5rOmhyZWY9IiNEZWphVnVTYW5zLTc0IiB4PSIyOTguNDg2MzI4Ii8+CiAgICAgIDx1c2UgeGxpbms6aHJlZj0iI0RlamFWdVNhbnMtNjkiIHg9IjMzNy42OTUzMTIiLz4KICAgICAgPHVzZSB4bGluazpocmVmPSIjRGVqYVZ1U2Fucy02YyIgeD0iMzY1LjQ3ODUxNiIvPgogICAgICA8dXNlIHhsaW5rOmhyZWY9IiNEZWphVnVTYW5zLTY5IiB4PSIzOTMuMjYxNzE5Ii8+CiAgICAgIDx1c2UgeGxpbms6aHJlZj0iI0RlamFWdVNhbnMtN2EiIHg9IjQyMS4wNDQ5MjIiLz4KICAgICAgPHVzZSB4bGluazpocmVmPSIjRGVqYVZ1U2Fucy02MSIgeD0iNDczLjUzNTE1NiIvPgogICAgICA8dXNlIHhsaW5rOmhyZWY9IiNEZWphVnVTYW5zLTc0IiB4PSI1MzQuODE0NDUzIi8+CiAgICAgIDx1c2UgeGxpbms6aHJlZj0iI0RlamFWdVNhbnMtNjkiIHg9IjU3NC4wMjM0MzgiLz4KICAgICAgPHVzZSB4bGluazpocmVmPSIjRGVqYVZ1U2Fucy02ZiIgeD0iNjAxLjgwNjY0MSIvPgogICAgICA8dXNlIHhsaW5rOmhyZWY9IiNEZWphVnVTYW5zLTZlIiB4PSI2NjIuOTg4MjgxIi8+CiAgICAgIDx1c2UgeGxpbms6aHJlZj0iI0RlamFWdVNhbnMtMjAiIHg9IjcyNi4zNjcxODgiLz4KICAgICAgPHVzZSB4bGluazpocmVmPSIjRGVqYVZ1U2Fucy01YiIgeD0iNzU4LjE1NDI5NyIvPgogICAgICA8dXNlIHhsaW5rOmhyZWY9IiNEZWphVnVTYW5zLTI1IiB4PSI3OTcuMTY3OTY5Ii8+CiAgICAgIDx1c2UgeGxpbms6aHJlZj0iI0RlamFWdVNhbnMtNWQiIHg9Ijg5Mi4xODc1Ii8+CiAgICAgPC9nPgogICAgPC9nPgogICA8L2c+CiAgIDxnIGlkPSJsaW5lMmRfNzEiPgogICAgPHBhdGggZD0iTSA0ODcuMDcxMDc0IDQ0LjQ0MzYzNiAKTCA1NTYuMjQ0NjI4IDQ0LjQ0MzYzNiAKTCA2MjUuNDE4MTgyIDQ0LjQ0MzYzNiAKTCA2OTQuNTkxNzM2IDQ0LjQ0MzYzNiAKTCA3NjMuNzY1Mjg5IDQ0LjQ0MzYzNiAKIiBjbGlwLXBhdGg9InVybCgjcDI4YTRiNjVjMzQpIiBzdHlsZT0iZmlsbDogbm9uZTsgc3Ryb2tlOiAjMWY3N2I0OyBzdHJva2Utd2lkdGg6IDEuNTsgc3Ryb2tlLWxpbmVjYXA6IHNxdWFyZSIvPgogICA8L2c+CiAgIDxnIGlkPSJsaW5lMmRfNzIiPgogICAgPHBhdGggZD0iTSA0ODcuMDcxMDc0IDEwOS4yMjA2ODkgCkwgNTU2LjI0NDYyOCA3OC43NDkyNyAKTCA2MjUuNDE4MTgyIDcwLjU4NzkzOCAKTCA2OTQuNTkxNzM2IDY0LjE0Njg0MyAKTCA3NjMuNzY1Mjg5IDYzLjI5OTQ3OCAKIiBjbGlwLXBhdGg9InVybCgjcDI4YTRiNjVjMzQpIiBzdHlsZT0iZmlsbDogbm9uZTsgc3Ryb2tlOiAjZmY3ZjBlOyBzdHJva2Utd2lkdGg6IDEuNTsgc3Ryb2tlLWxpbmVjYXA6IHNxdWFyZSIvPgogICA8L2c+CiAgIDxnIGlkPSJsaW5lMmRfNzMiPgogICAgPHBhdGggZD0iTSA0ODcuMDcxMDc0IDIxMi40MTQzNTMgCkwgNTU2LjI0NDYyOCAxNDIuNTA2ODUgCkwgNjI1LjQxODE4MiAxMzcuMzgyOTY2IApMIDY5NC41OTE3MzYgMTMyLjc3NzE0OCAKTCA3NjMuNzY1Mjg5IDEyNS42MzA2OSAKIiBjbGlwLXBhdGg9InVybCgjcDI4YTRiNjVjMzQpIiBzdHlsZT0iZmlsbDogbm9uZTsgc3Ryb2tlOiAjMmNhMDJjOyBzdHJva2Utd2lkdGg6IDEuNTsgc3Ryb2tlLWxpbmVjYXA6IHNxdWFyZSIvPgogICA8L2c+CiAgIDxnIGlkPSJsaW5lMmRfNzQiPgogICAgPHBhdGggZD0iTSA0ODcuMDcxMDc0IDI0Mi4xMTYzNjQgCkwgNTU2LjI0NDYyOCAxODYuMTY3OTE5IApMIDYyNS40MTgxODIgMTg0LjU1NDQ2NiAKTCA2OTQuNTkxNzM2IDE4Mi42MDM1NDcgCkwgNzYzLjc2NTI4OSAxNzMuMDc0NTc4IAoiIGNsaXAtcGF0aD0idXJsKCNwMjhhNGI2NWMzNCkiIHN0eWxlPSJmaWxsOiBub25lOyBzdHJva2U6ICNkNjI3Mjg7IHN0cm9rZS13aWR0aDogMS41OyBzdHJva2UtbGluZWNhcDogc3F1YXJlIi8+CiAgIDwvZz4KICAgPGcgaWQ9InBhdGNoXzkiPgogICAgPHBhdGggZD0iTSA0NzMuMjM2MzY0IDI1MiAKTCA0NzMuMjM2MzY0IDM0LjU2IAoiIHN0eWxlPSJmaWxsOiBub25lOyBzdHJva2U6ICMwMDAwMDA7IHN0cm9rZS13aWR0aDogMC44OyBzdHJva2UtbGluZWpvaW46IG1pdGVyOyBzdHJva2UtbGluZWNhcDogc3F1YXJlIi8+CiAgIDwvZz4KICAgPGcgaWQ9InBhdGNoXzEwIj4KICAgIDxwYXRoIGQ9Ik0gNzc3LjYgMjUyIApMIDc3Ny42IDM0LjU2IAoiIHN0eWxlPSJmaWxsOiBub25lOyBzdHJva2U6ICMwMDAwMDA7IHN0cm9rZS13aWR0aDogMC44OyBzdHJva2UtbGluZWpvaW46IG1pdGVyOyBzdHJva2UtbGluZWNhcDogc3F1YXJlIi8+CiAgIDwvZz4KICAgPGcgaWQ9InBhdGNoXzExIj4KICAgIDxwYXRoIGQ9Ik0gNDczLjIzNjM2NCAyNTIgCkwgNzc3LjYgMjUyIAoiIHN0eWxlPSJmaWxsOiBub25lOyBzdHJva2U6ICMwMDAwMDA7IHN0cm9rZS13aWR0aDogMC44OyBzdHJva2UtbGluZWpvaW46IG1pdGVyOyBzdHJva2UtbGluZWNhcDogc3F1YXJlIi8+CiAgIDwvZz4KICAgPGcgaWQ9InBhdGNoXzEyIj4KICAgIDxwYXRoIGQ9Ik0gNDczLjIzNjM2NCAzNC41NiAKTCA3NzcuNiAzNC41NiAKIiBzdHlsZT0iZmlsbDogbm9uZTsgc3Ryb2tlOiAjMDAwMDAwOyBzdHJva2Utd2lkdGg6IDAuODsgc3Ryb2tlLWxpbmVqb2luOiBtaXRlcjsgc3Ryb2tlLWxpbmVjYXA6IHNxdWFyZSIvPgogICA8L2c+CiAgIDxnIGlkPSJsZWdlbmRfMiI+CiAgICA8ZyBpZD0icGF0Y2hfMTMiPgogICAgIDxwYXRoIGQ9Ik0gNjk3LjE1NjI1IDI0NyAKTCA3NzAuNiAyNDcgClEgNzcyLjYgMjQ3IDc3Mi42IDI0NSAKTCA3NzIuNiAxODcuMjg3NSAKUSA3NzIuNiAxODUuMjg3NSA3NzAuNiAxODUuMjg3NSAKTCA2OTcuMTU2MjUgMTg1LjI4NzUgClEgNjk1LjE1NjI1IDE4NS4yODc1IDY5NS4xNTYyNSAxODcuMjg3NSAKTCA2OTUuMTU2MjUgMjQ1IApRIDY5NS4xNTYyNSAyNDcgNjk3LjE1NjI1IDI0NyAKegoiIHN0eWxlPSJmaWxsOiAjZmZmZmZmOyBvcGFjaXR5OiAwLjg7IHN0cm9rZTogI2NjY2NjYzsgc3Ryb2tlLWxpbmVqb2luOiBtaXRlciIvPgogICAgPC9nPgogICAgPGcgaWQ9ImxpbmUyZF83NSI+CiAgICAgPHBhdGggZD0iTSA2OTkuMTU2MjUgMTkzLjM4NTkzOCAKTCA3MDkuMTU2MjUgMTkzLjM4NTkzOCAKTCA3MTkuMTU2MjUgMTkzLjM4NTkzOCAKIiBzdHlsZT0iZmlsbDogbm9uZTsgc3Ryb2tlOiAjMWY3N2I0OyBzdHJva2Utd2lkdGg6IDEuNTsgc3Ryb2tlLWxpbmVjYXA6IHNxdWFyZSIvPgogICAgPC9nPgogICAgPGcgaWQ9InRleHRfNDAiPgogICAgIDwhLS0gMSBDUFVzIC0tPgogICAgIDxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDcyNy4xNTYyNSAxOTYuODg1OTM4KXNjYWxlKDAuMSAtMC4xKSI+CiAgICAgIDx1c2UgeGxpbms6aHJlZj0iI0RlamFWdVNhbnMtMzEiLz4KICAgICAgPHVzZSB4bGluazpocmVmPSIjRGVqYVZ1U2Fucy0yMCIgeD0iNjMuNjIzMDQ3Ii8+CiAgICAgIDx1c2UgeGxpbms6aHJlZj0iI0RlamFWdVNhbnMtNDMiIHg9Ijk1LjQxMDE1NiIvPgogICAgICA8dXNlIHhsaW5rOmhyZWY9IiNEZWphVnVTYW5zLTUwIiB4PSIxNjUuMjM0Mzc1Ii8+CiAgICAgIDx1c2UgeGxpbms6aHJlZj0iI0RlamFWdVNhbnMtNTUiIHg9IjIyNS41MzcxMDkiLz4KICAgICAgPHVzZSB4bGluazpocmVmPSIjRGVqYVZ1U2Fucy03MyIgeD0iMjk4LjczMDQ2OSIvPgogICAgIDwvZz4KICAgIDwvZz4KICAgIDxnIGlkPSJsaW5lMmRfNzYiPgogICAgIDxwYXRoIGQ9Ik0gNjk5LjE1NjI1IDIwOC4wNjQwNjMgCkwgNzA5LjE1NjI1IDIwOC4wNjQwNjMgCkwgNzE5LjE1NjI1IDIwOC4wNjQwNjMgCiIgc3R5bGU9ImZpbGw6IG5vbmU7IHN0cm9rZTogI2ZmN2YwZTsgc3Ryb2tlLXdpZHRoOiAxLjU7IHN0cm9rZS1saW5lY2FwOiBzcXVhcmUiLz4KICAgIDwvZz4KICAgIDxnIGlkPSJ0ZXh0XzQxIj4KICAgICA8IS0tIDQgQ1BVcyAtLT4KICAgICA8ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSg3MjcuMTU2MjUgMjExLjU2NDA2MylzY2FsZSgwLjEgLTAuMSkiPgogICAgICA8dXNlIHhsaW5rOmhyZWY9IiNEZWphVnVTYW5zLTM0Ii8+CiAgICAgIDx1c2UgeGxpbms6aHJlZj0iI0RlamFWdVNhbnMtMjAiIHg9IjYzLjYyMzA0NyIvPgogICAgICA8dXNlIHhsaW5rOmhyZWY9IiNEZWphVnVTYW5zLTQzIiB4PSI5NS40MTAxNTYiLz4KICAgICAgPHVzZSB4bGluazpocmVmPSIjRGVqYVZ1U2Fucy01MCIgeD0iMTY1LjIzNDM3NSIvPgogICAgICA8dXNlIHhsaW5rOmhyZWY9IiNEZWphVnVTYW5zLTU1IiB4PSIyMjUuNTM3MTA5Ii8+CiAgICAgIDx1c2UgeGxpbms6aHJlZj0iI0RlamFWdVNhbnMtNzMiIHg9IjI5OC43MzA0NjkiLz4KICAgICA8L2c+CiAgICA8L2c+CiAgICA8ZyBpZD0ibGluZTJkXzc3Ij4KICAgICA8cGF0aCBkPSJNIDY5OS4xNTYyNSAyMjIuNzQyMTg4IApMIDcwOS4xNTYyNSAyMjIuNzQyMTg4IApMIDcxOS4xNTYyNSAyMjIuNzQyMTg4IAoiIHN0eWxlPSJmaWxsOiBub25lOyBzdHJva2U6ICMyY2EwMmM7IHN0cm9rZS13aWR0aDogMS41OyBzdHJva2UtbGluZWNhcDogc3F1YXJlIi8+CiAgICA8L2c+CiAgICA8ZyBpZD0idGV4dF80MiI+CiAgICAgPCEtLSAxNiBDUFVzIC0tPgogICAgIDxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDcyNy4xNTYyNSAyMjYuMjQyMTg4KXNjYWxlKDAuMSAtMC4xKSI+CiAgICAgIDx1c2UgeGxpbms6aHJlZj0iI0RlamFWdVNhbnMtMzEiLz4KICAgICAgPHVzZSB4bGluazpocmVmPSIjRGVqYVZ1U2Fucy0zNiIgeD0iNjMuNjIzMDQ3Ii8+CiAgICAgIDx1c2UgeGxpbms6aHJlZj0iI0RlamFWdVNhbnMtMjAiIHg9IjEyNy4yNDYwOTQiLz4KICAgICAgPHVzZSB4bGluazpocmVmPSIjRGVqYVZ1U2Fucy00MyIgeD0iMTU5LjAzMzIwMyIvPgogICAgICA8dXNlIHhsaW5rOmhyZWY9IiNEZWphVnVTYW5zLTUwIiB4PSIyMjguODU3NDIyIi8+CiAgICAgIDx1c2UgeGxpbms6aHJlZj0iI0RlamFWdVNhbnMtNTUiIHg9IjI4OS4xNjAxNTYiLz4KICAgICAgPHVzZSB4bGluazpocmVmPSIjRGVqYVZ1U2Fucy03MyIgeD0iMzYyLjM1MzUxNiIvPgogICAgIDwvZz4KICAgIDwvZz4KICAgIDxnIGlkPSJsaW5lMmRfNzgiPgogICAgIDxwYXRoIGQ9Ik0gNjk5LjE1NjI1IDIzNy40MjAzMTIgCkwgNzA5LjE1NjI1IDIzNy40MjAzMTIgCkwgNzE5LjE1NjI1IDIzNy40MjAzMTIgCiIgc3R5bGU9ImZpbGw6IG5vbmU7IHN0cm9rZTogI2Q2MjcyODsgc3Ryb2tlLXdpZHRoOiAxLjU7IHN0cm9rZS1saW5lY2FwOiBzcXVhcmUiLz4KICAgIDwvZz4KICAgIDxnIGlkPSJ0ZXh0XzQzIj4KICAgICA8IS0tIDMyIENQVXMgLS0+CiAgICAgPGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNzI3LjE1NjI1IDI0MC45MjAzMTIpc2NhbGUoMC4xIC0wLjEpIj4KICAgICAgPHVzZSB4bGluazpocmVmPSIjRGVqYVZ1U2Fucy0zMyIvPgogICAgICA8dXNlIHhsaW5rOmhyZWY9IiNEZWphVnVTYW5zLTMyIiB4PSI2My42MjMwNDciLz4KICAgICAgPHVzZSB4bGluazpocmVmPSIjRGVqYVZ1U2Fucy0yMCIgeD0iMTI3LjI0NjA5NCIvPgogICAgICA8dXNlIHhsaW5rOmhyZWY9IiNEZWphVnVTYW5zLTQzIiB4PSIxNTkuMDMzMjAzIi8+CiAgICAgIDx1c2UgeGxpbms6aHJlZj0iI0RlamFWdVNhbnMtNTAiIHg9IjIyOC44NTc0MjIiLz4KICAgICAgPHVzZSB4bGluazpocmVmPSIjRGVqYVZ1U2Fucy01NSIgeD0iMjg5LjE2MDE1NiIvPgogICAgICA8dXNlIHhsaW5rOmhyZWY9IiNEZWphVnVTYW5zLTczIiB4PSIzNjIuMzUzNTE2Ii8+CiAgICAgPC9nPgogICAgPC9nPgogICA8L2c+CiAgPC9nPgogPC9nPgogPGRlZnM+CiAgPGNsaXBQYXRoIGlkPSJwMDYzYzhmNWViOCI+CiAgIDxyZWN0IHg9IjEwOCIgeT0iMzQuNTYiIHdpZHRoPSIzMDQuMzYzNjM2IiBoZWlnaHQ9IjIxNy40NCIvPgogIDwvY2xpcFBhdGg+CiAgPGNsaXBQYXRoIGlkPSJwMjhhNGI2NWMzNCI+CiAgIDxyZWN0IHg9IjQ3My4yMzYzNjQiIHk9IjM0LjU2IiB3aWR0aD0iMzA0LjM2MzYzNiIgaGVpZ2h0PSIyMTcuNDQiLz4KICA8L2NsaXBQYXRoPgogPC9kZWZzPgo8L3N2Zz4K" ] } }, "cell_type": "markdown", "id": "463da0c9", "metadata": {}, "source": [ "**Result precomputed on the Sophia HPC cluster on a node with 32 CPUs.**\n", "\n", "![Optimization_time_cpuwt.svg](attachment:Optimization_time_cpuwt.svg)" ] }, { "cell_type": "markdown", "id": "855f1c55", "metadata": {}, "source": [ "**Parallelization of gradients of WS, TI, Power and custom functions is not implemented yet**" ] }, { "cell_type": "markdown", "id": "d9f08646", "metadata": {}, "source": [ "## Precision\n", "\n", "**As default, PyWake simulates in double precision, i.e. 64 bit floating point values.**\n", "\n", "In some cases, however, single precision, i.e. 32 bit floating point values, may be sufficient and faster. \n", "\n", "In PyWake, the `Numpy32` context manager makes switching to single precition is very easy:" ] }, { "cell_type": "code", "execution_count": null, "id": "daeab853", "metadata": {}, "outputs": [], "source": [ "from py_wake.utils.numpy_utils import Numpy32\n", "\n", "with Numpy32():\n", " print (np.array([1.,2,3]).dtype)\n", " print (np.sin([1,2,3]).dtype)" ] }, { "cell_type": "code", "execution_count": null, "id": "0981f988", "metadata": {}, "outputs": [], "source": [ "# same with out context manager\n", "print (np.array([1.,2,3]).dtype)\n", "print (np.sin([1,2,3]).dtype)" ] }, { "cell_type": "markdown", "id": "152e64d3", "metadata": {}, "source": [ " from py_wake.utils import layouts \n", " from py_wake.utils.profiling import timeit\n", " from tqdm.notebook import tqdm\n", "\n", " n_lst = np.arange(50,550,50)\n", " xy_lst = [layouts.rectangle(n,20,5*wt.diameter()) for n in n_lst]\n", "\n", " t_lst_64 = [np.mean(timeit(wfm.aep, min_runs=10)(x,y)[1]) for x,y in tqdm(xy_lst)]\n", "\n", " with Numpy32():\n", " t_lst_32 = [np.mean(timeit(wfm.aep, min_runs=10)(x,y)[1]) for x,y in tqdm(xy_lst)]\n", "\n", " ax1, ax2 = plt.subplots(1,2,figsize=(12,4))[1]\n", " ax1.plot(n_lst, t_lst_64, label='Double precision')\n", " ax1.plot(n_lst, t_lst_32, label='Single precision')\n", " setup_plot(ax=ax1, ylabel='Time [s]',xlabel='No. wind turbines')\n", " ax2.plot(n_lst, np.array(t_lst_64) / t_lst_32)\n", " setup_plot(ax=ax2, ylabel='Speedup',xlabel='No. wind turbines')\n", " plt.savefig('images/Optimization_precision.svg')" ] }, { "cell_type": "markdown", "id": "c036a80c", "metadata": {}, "source": [ "**Result precomputed on the Sophia HPC cluster.**\n", "\n", "![image1.png](images/Optimization_precision.svg)" ] } ], "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.9.13" }, "toc": { "base_numbering": 1, "nav_menu": {}, "number_sections": true, "sideBar": true, "skip_h1_title": false, "title_cell": "Table of Contents", "title_sidebar": "Contents", "toc_cell": false, "toc_position": { "height": "calc(100% - 180px)", "left": "10px", "top": "150px", "width": "426.667px" }, "toc_section_display": true, "toc_window_display": true } }, "nbformat": 4, "nbformat_minor": 5 }