{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "f7f2c27a-611d-4258-9262-7f8ea1b1566e",
   "metadata": {},
   "source": [
    "# Quasi-bound states in the continuum (qBICs) in symmetry-breaking dielectric metasurfaces\n",
    "\n",
    "Dielectric metasurfaces, composed of subwavelength nanostructures, have emerged as a transformative platform in nanophotonics due to their ability to precisely manipulate light while maintaining low optical losses. Within this domain, quasi-bound states in the continuum (qBICs) have garnered significant attention for their ability to support ultrasharp resonances with high quality factors. These qBICs arise from symmetry-breaking in the metasurface design, converting otherwise non-radiative modes into accessible, yet highly localized, resonant states. By carefully engineering the symmetry properties of these structures, it is possible to achieve angularly tunable optical responses, opening new avenues for advanced photonic devices such as spectral filters, sensors, and imaging systems.\n",
    "\n",
    "In this notebook, we investigate the angular response of symmetry-breaking dielectric metasurfaces supporting qBICs, as described in `ACS Photonics 2022, 9(11), 3642–3648.` [DOI: 10.1021/acsphotonics.2c01069](https://doi.org/10.1021/acsphotonics.2c01069). Through simulations of the metasurface transmission spectra at varying incident angles, we analyze the impact of these angles on the spectral shifts of the qBICs. \n",
    "\n",
    "<img src=\"img/metasurface_qbic.png\" width=\"400\" alt=\"Schematic of the metasurface\">\n",
    "\n",
    "Tidy3D offers two approaches for simulating oblique plane waves in periodic structures:\n",
    "\n",
    "1. Fixed in-plane $k$-vector with Bloch boundaries.\n",
    "2. Fixed angle mode with periodic boundaries.\n",
    "\n",
    "While both methods yield identical results at the central source frequency, their behavior can differ significantly for frequencies away from the central one. Understanding these differences is crucial for an accurate simulation. More details are introduced in this dedicated [tutorial](https://www.flexcompute.com/tidy3d/examples/notebooks/BroadbandPlaneWaveWithConstantObliqueIncidentAngle/). In this notebook we will use the second approach as it is more cost-effective and easier to set up. \n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "1305d5e7-5fa2-4326-b8fc-be32facda1ce",
   "metadata": {},
   "outputs": [],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "import numpy as np\n",
    "import tidy3d as td\n",
    "import tidy3d.web as web\n",
    "from tidy3d.plugins.dispersion import FastDispersionFitter"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "55653478-a379-4f8b-b1c2-874424ba009e",
   "metadata": {},
   "source": [
    "## Simulation Setup\n",
    "\n",
    "### Basic Parameters\n",
    "\n",
    "Define the simulation wavelength range from 700 nm to 900 nm."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "0400e094-58a2-4855-b0ff-4eff97e09cfa",
   "metadata": {},
   "outputs": [],
   "source": [
    "lda0 = 0.8  # central wavelength\n",
    "freq0 = td.C_0 / lda0  # central frequency\n",
    "ldas = np.linspace(0.7, 0.9, 201)  # wavelength range\n",
    "freqs = td.C_0 / ldas  # frequency range\n",
    "fwidth = 0.5 * (np.max(freqs) - np.min(freqs))  # width of the source frequency range"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "608aa0db-1a5d-4f03-8b90-b53c2c498fa6",
   "metadata": {},
   "source": [
    "The metasurface consists of two elliptical amorphous silicon nanodisks. The geometric parameters of the metasurface are defined by the dimensions and orientation of its constituent elliptical nanodisks. Each nanodisk is characterized by its major axis diameter and minor axis diameter. The thickness of the nanodisks determines their vertical dimension. The rotation angle specifies the orientation of each nanodisk relative to a reference axis. Additionally, the periodicity in the x and y directions governs the size of the unit cell as well as our simulation domain. These parameters collectively determine the optical and physical properties of the metasurface. In this notebook, we use the parameters from the [paper](https://doi.org/10.1021/acsphotonics.2c01069)."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "7b09a501-1f2f-4cac-9e00-d4ad8b19e419",
   "metadata": {},
   "outputs": [],
   "source": [
    "h = 0.126  # height of the silicon nanodisk\n",
    "dx = 0.226  # major axis diameter of the nanodisk\n",
    "dy = 0.152  # minor axis diameter\n",
    "px = 0.51  # unit cell size in the x direction\n",
    "py = 0.265  # unit cell size in the y direction\n",
    "alpha = np.deg2rad(38)  # rotation angle of the nanodisks"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "1a7d6457-f472-42a2-9198-e062132976e0",
   "metadata": {},
   "source": [
    "### Define Materials\n",
    "\n",
    "Pyrex, which has a constant refractive index of 1.47 in the visible range, is used as the substrate. For amorphous silicon, we aim to use the same refractive index as the original paper. We do so by discretizing the refractive index plot from the paper, saving the index data in a .txt file, and using [FastDispersionFitter](https://docs.flexcompute.com/projects/tidy3d/en/latest/api/_autosummary/tidy3d.plugins.dispersion.FastDispersionFitter.html#tidy3d.plugins.dispersion.FastDispersionFitter) to fit it. As the plot shows, the fit of the dispersive refractive index is very good.\n",
    "\n",
    "Alternatively, one can use the refractive index data from [refractiveindex.info](https://refractiveindex.info) by conveniently using the [from_url](https://docs.flexcompute.com/projects/tidy3d/en/latest/api/_autosummary/tidy3d.plugins.dispersion.DispersionFitter.html#tidy3d.plugins.dispersion.DispersionFitter.from_url) method from the [FastDispersionFitter](https://docs.flexcompute.com/projects/tidy3d/en/latest/api/_autosummary/tidy3d.plugins.dispersion.FastDispersionFitter.html#tidy3d.plugins.dispersion.FastDispersionFitter). \n",
    "Tidy3D's [material library](https://docs.flexcompute.com/projects/tidy3d/en/latest/api/material_library.html) also contains amorphous silicon however the supported wavelength range is outside of the wavelength of interest in this case."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "9084a58f-c104-4a45-b88c-d290d9e39ea2",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "728d1010d4dd4f39b2461fd361161a41",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Output()"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"></pre>\n"
      ],
      "text/plain": []
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"color: #7fbfbf; text-decoration-color: #7fbfbf\">08:30:04 CEST </span><span style=\"color: #800000; text-decoration-color: #800000\">WARNING: Unable to fit with weighted RMS error under              </span>\n",
       "<span style=\"color: #7fbfbf; text-decoration-color: #7fbfbf\">              </span><span style=\"color: #008000; text-decoration-color: #008000\">'tolerance_rms'</span><span style=\"color: #800000; text-decoration-color: #800000\"> of </span><span style=\"color: #008080; text-decoration-color: #008080; font-weight: bold\">1e-05</span><span style=\"color: #800000; text-decoration-color: #800000\">                                          </span>\n",
       "</pre>\n"
      ],
      "text/plain": [
       "\u001b[2;36m08:30:04 CEST\u001b[0m\u001b[2;36m \u001b[0m\u001b[31mWARNING: Unable to fit with weighted RMS error under              \u001b[0m\n",
       "\u001b[2;36m              \u001b[0m\u001b[32m'tolerance_rms'\u001b[0m\u001b[31m of \u001b[0m\u001b[1;36m1e-05\u001b[0m\u001b[31m                                          \u001b[0m\n"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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nVCwExEREbETCnYiIiIidkLBTkRERMROKNiJiIiI2AkFOxERERE7oWAnIiIiYicU7ERERETshIKdiIiIiJ1QsBMRERGxEwp2IiIiInZCwU5ERETETijYiYiIiNgJBTsRERERO6FgJyIiImInFOxERERE7ISCnYiIiIidULATERERsRM2DXbTpk2ja9eueHt74+3tTd++ffn5559t2SQRERGRi5ZNg12zZs145ZVXWLt2LWvWrCE8PJwRI0awdetWWzZLRERE5KJkMgzDsHUjzubn58drr73G2LFjL3hsWloaPj4+pKam4u3tXQetExEREalblck7TnXUpgsqKCjgf//7H5mZmfTt29fWzRERERG56Ng82G3evJm+ffuSnZ2Np6cn3377LZdddlmZx+bk5JCTk2N5npaWVlfNFBEREan3bL4qtkOHDmzYsIGVK1fy0EMPce+997Jt27Yyj50yZQo+Pj6WR0hISB23VkRERKT+qnfX2A0ZMoQ2bdrw0UcflXqtrBG7kJAQXWMnIiIiduuivMauWGFhoVV4O5urqyuurq513CIREZH6q6CggLy8PFs3Q6rB2dkZR0fHGqnLpsHuueeeY9iwYTRv3pz09HTmzp1LQkICv/zyiy2bJSIiUu8ZhsHRo0c5ffq0rZsiNcDX15cmTZpgMpmqVY9Ng93x48e55557OHLkCD4+PnTt2pVffvmFoUOH2rJZIiIi9V5xqGvUqBEeHh7VDgRiG4ZhcObMGY4fPw5AUFBQteqzabCbMWOGLU8vIiJyUSooKLCEOn9/f1s3R6rJ3d0dMA94NWrUqFrTsjZfFSsiIiKVU3xNnYeHh41bIjWl+HdZ3eslFexEREQuUpp+tR819btUsBMRERGxEwp2IiIiUq/l5ubStm1bli9fXu4xe/fuxWQysWHDhlpvz4cffsjw4cNr/TxVoWAnIiIi9dqHH35Iq1at6NevX43WO2bMGG6++eZKv+/+++9n3bp1LF26tEbbUxMU7ERERC4xUVEQG1v2a7Gx5tfrC8MwmDp1KmPHjrV1UyxcXFwYNWoU7777rq2bUoqCnYiIyCXG0REiIkqHu9hYc3kN3QShlLCwMB577DGefvpp/Pz8aNKkCVEXSJFr164lMTGRG264wap81apVhIaG4ubmRs+ePVm/fr3V6wUFBYwdO5ZWrVrh7u5Ohw4deOed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vsvVV19d6+erV9fYpaamAuDn52fjloiIiEhtW7hwIT4+PsyZM6fcY+bNm1dqKjMsLIxHH32UJ554goYNG9K4cWOmT59OZmYm9913H15eXrRt25aff/7Z6n1Lliyhd+/euLq6EhQUxLPPPkt+fr7l9czMTO655x48PT0JCgrijTfeKNWenJwcnnrqKZo2bUqDBg3o06cPCQkJ5/2cw4cP5/vvvycrK6sCvVI99SbYFRYW8sQTT9C/f386d+5c5jE5OTmkpaVZPURERC55hgH5mbZ5GEaVmjx37lxGjhzJnDlzGD16dJnHJCcns23bNnr27FnqtU8//ZSAgABWrVrFo48+ykMPPcRtt91Gv379WLduHddccw133303Z86cAeDQoUNcf/319OrVi40bNzJt2jRmzJjBiy++aKlz0qRJLFmyhAULFvDrr7+SkJDAunXrrM77yCOPsGLFCubNm8emTZu47bbbuO6669i9e3e5n7Vnz57k5+ezcuXKqnRVpdh0KvZs48ePZ8uWLfz555/lHjNlyhSio6PrsFUiIiIXgYIz8JWnbc59ewY4NajUW95//32ef/55fvjhBwYOHFjucfv378cwDIKDg0u91q1bN1544QUAnnvuOV555RUCAgIYN24cABEREUybNo1NmzZx5ZVX8sEHHxASEsLUqVMxmUx07NiRw4cP88wzzxAREcGZM2eYMWMGn3/+OYMHDwbM4bFZs2ZW7Zk1axb79++3tOmpp55i0aJFzJo1i5dffrnMz+Hh4YGPjw/79u2rVD9VRb0Ido888gg//vgjf/zxh1UHnuu5555j4sSJludpaWmEhITURRNFRESkBnz99dccP36cZcuW0atXr/MeWzx16ebmVuq1rl27Wv7s6OiIv78/Xbp0sZQ1btwYgOPHjwOwfft2+vbti8lkshzTv39/MjIyOHjwICkpKeTm5tKnTx/L635+fnTo0MHyfPPmzRQUFNC+fXurtuTk5ODv73/ez+Lu7m4ZPaxNNg12hmHw6KOP8u2335KQkECrVq3Oe7yrqyuurq511DoREZGLhKOHeeTMVueuhNDQUNatW8fMmTPp2bOnVdA6V0BAAAApKSkEBgZavebs7Gz13GQyWZUV11tYWFip9p1PRkYGjo6OrF27FkdHR6vXPD3PP2KanJxc6jPUBpsGu/HjxzN37lwWLFiAl5cXR48eBcDHxwd3d3dbNk1EROTiYTJVejrUVtq0acMbb7xBWFgYjo6OTJ069bzHent7s23btlKjZJXVqVMn5s+fj2EYltC3bNkyvLy8aNasGX5+fjg7O7Ny5UqaN28OmAPlrl27LNPFoaGhFBQUcPz48UqtcE1MTCQ7O5vQ0NBqfYaKsOniiWnTppGamkpYWBhBQUGWx5dffmnLZomIiEgtat++PYsXL2b+/Pnn3fzXwcGBIUOGnPf6+4p6+OGHOXDgAI8++ig7duxgwYIFREZGMnHiRBwcHPD09GTs2LFMmjSJ+Ph4tmzZwpgxY3BwKIlK7du3Z/To0dxzzz188803JCUlsWrVKqZMmcLChQvLPffSpUtp3bo1bdq0qfbnuBCbT8WKiIjIpadDhw7Ex8dbRu7K2loE4IEHHmDcuHH85z//sQpZldW0aVN++uknJk2aRLdu3fDz82Ps2LGWBRgAr732GhkZGQwfPhwvLy+efPJJy1ZsxWbNmsWLL77Ik08+yaFDhwgICODKK6/kxhtvLPfcX3zxhWVRR20zGRdxukpLS8PHx4fU1FS8vb1t3RwREZE6kZ2dTVJSEq1atSpzYYE9MQyDPn36MGHCBEaOHGnr5lTa1q1bCQ8PZ9euXfj4+JR73Pl+p5XJO/VmHzsRERGRc5lMJj7++GOrjYQvJkeOHOGzzz47b6irSfViuxMRERGR8nTv3p3u3bvbuhlVMmTIkDo9n0bsREREROyEgp2IiIiInVCwExEREbETCnYiIiIXqZq8q4LYVk39LrV4QkRE5CLj4uKCg4MDhw8fJjAwEBcXl/PemkvqL8MwyM3N5cSJEzg4OODi4lKt+hTsRERELjIODg60atWKI0eOcPjwYVs3R2qAh4cHzZs3r9YmzKBgJyIiclFycXGhefPm5OfnU1BQYOvmSDU4Ojri5ORUI6OuCnYiIiIXKZPJhLOzM87OzrZuitQTWjwhIiIiYicU7ERERETshIKdiIiIiJ1QsBMRERGxEwp2IiIiInZCwU5ERETETijYiYiIiNgJBTsRERERO6FgJyIiImInFOxERERE7ISCnYiIiIidULATERERsRMKdiIiIiJ2QsFORERExE4o2ImIiIjYCQU7ERERETuhYCciIiJiJxTsREREROyEgp2IiIiInVCwExEREbETCnYiIiIidkLBTkRERMROKNiJiIiI2AkFOxERERE7oWAnIiIiYicU7ERERETshIKdiIiIiJ1QsBMRERGxEwp2IiIiInZCwU5ERETETijYiYiIiNgJBTsRERERO6FgJyIiImInFOxERERE7ISCnYiIiIidULATERERsRMKdiIiIiJ2QsFORERExE4o2ImIiIjYCQU7ERERETuhYCciIiJiJxTsREREROyEgp2IiIiInVCwExEREbETCnYiIiIidkLBTkRERMROKNiJiIiI2AkFOxERERE7oWAnIiIiYicU7ERERETshIKdiIiIiJ1QsBMRERGxEwp2IiIiInZCwU5ERETETijYiYiIiNgJmwa7P/74g+HDhxMcHIzJZOK7776zZXNERERELmo2DXaZmZl069aN999/35bNEBEREbELTrY8+bBhwxg2bJgtmyAiIiJiN2wa7CorJyeHnJwcy/O0tDQbtkZERESkfrmoFk9MmTIFHx8fyyMkJMTWTRIRERGpNy6qYPfcc8+RmppqeRw4cMDWTRIRERGpNy6qqVhXV1dcXV1t3QwRERGReumiGrETERERkfLZdMQuIyODPXv2WJ4nJSWxYcMG/Pz8aN68uQ1bJiIiInLxsWmwW7NmDYMGDbI8nzhxIgD33nsvs2fPtlGrRERERC5ONg12YWFhGIZhyyaIiIiI2A1dYyciIiJiJxTsREREROyEgp2IiIiInVCwExEREbETCnYiIiIidkLBTkRERMROKNiJiIiI2AkFOxERERE7oWAnIiIiYicU7ERERETshIKdiIiIiJ1QsBMRERGxEwp2IiIiInZCwU5ERETETijYiYiIiNgJBTsRERERO6FgJyIiImInFOxERERE7ISCnYiIiIidULATERERsRMKdhVx5AhERZl/ioiIiNRTCnYVceQIREcr2ImIiEi9pmBXEWm/QihgFJSUaRRPRERE6hknWzeg3jpyxPww8uDgq/AUsP16SB4NviMgOdc8infTTRAUZOvWioiIiGjErlwffQQ9esBVV8LPpyETcDgJJ96BLeGw5QloXsb7NJInIiIiNmIyDMOwdSOqKi0tDR8fH1JTU/H29q7ZyotH7ADWrYPx4+Ctf4LPKjDtLzmuoA00uxu8hkLTVub39OgBa9fCFVfUbJtERETkklOZvKMRu/IEBZmDWfEjF9joB3fth2jgLyAfcEyEI1Gwvj98cwvkJJWu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zZwFd9551rGnYe48GDXS/NmLy+bMhVGjze0ESDkNn38Od90FDf2KylLgs//CQw+ZR7nS0819cvIkvP9B0e+86Njk0zBrFtx3n7lNAMkpMGMmjB1rXTb9Exj3APj5m8tOJcPH02HiRPNIXGoa+PjC8ePw+hvwf/9nHnnDZP6M0z4saVPx+9//AMY/DP4B5rKTp2Dq+/DII+b/RorL3n0Pnv83NG5s7gffhnDsGMS+BE88XnLsiVPw9tvwxBMlswcnTsKbb8HUj8yL1MD2q91r9Wq/C8jJyTEcHR2Nb7/91qr8nnvuMW666aYLvl+LJ0QuURVdNFLRMsO4OC7K1nl0Hp2n/p+nFlQm79h0uxMXFxd69OhBXFycpaywsJC4uDirqVkRESvlbRNT1bLi8oqMIlan7HzlIiI1wOZTsRMnTuTee++lZ8+e9O7dm7fffpvMzEzLKlkRkTpR3anlipSd79i6CJA6j86j89T+eWzMposnik2dOpXXXnuNo0eP0r17d95991369OlzwfdV5mJCERERkYvRRbMqtroU7ERERMTeVSbv2PQaOxERERGpOQp2IiIiInZCwU5ERETETijYiYiIiNgJBTsRERERO6FgJyIiImInFOxERERE7ISCnYiIiIidULATERERsRMKdiIiIiJ2QsFORERExE442boB1VF8m9u0tDQbt0RERESkdhTnnOLccz4XdbBLT08HICQkxMYtEREREald6enp+Pj4nPcYk1GR+FdPFRYWcvjwYby8vDCZTLV2nrS0NEJCQjhw4ADe3t61dp76TH2gPgD1AagPQH0A6gNQH0Dd9YFhGKSnpxMcHIyDw/mvoruoR+wcHBxo1qxZnZ3P29v7kv3LW0x9oD4A9QGoD0B9AOoDUB9A3fTBhUbqimnxhIiIiIidULATERERsRMKdhXg6upKZGQkrq6utm6KzagP1AegPgD1AagPQH0A6gOon31wUS+eEBEREZESGrETERERsRMKdiIiIiJ2QsFORERExE5cssHu/fffp2XLlri5udGnTx9WrVpV7rGzZ8/GZDJZPdzc3KyOMQyDiIgIgoKCcHd3Z8iQIezevbu2P0a11HQfjBkzptQx1113XW1/jGqpTB8AnD59mvHjxxMUFISrqyvt27fnp59+qladtlbTfRAVFVXq70HHjh1r+2NUS2X6ICwsrNTnM5lM3HDDDZZj7P37oCJ9cCl8H7z99tt06NABd3d3QkJCmDBhAtnZ2dWq09Zqug/s/fsgLy+PmJgY2rRpg5ubG926dWPRokXVqrPajEvQvHnzDBcXF2PmzJnG1q1bjXHjxhm+vr7GsWPHyjx+1qxZhre3t3HkyBHL4+jRo1bHvPLKK4aPj4/x3XffGRs3bjRuuukmo1WrVkZWVlZdfKRKq40+uPfee43rrrvO6pjk5OS6+DhVUtk+yMnJMXr27Glcf/31xp9//mkkJSUZCQkJxoYNG6pcp63VRh9ERkYal19+udXfgxMnTtTVR6q0yvbBqVOnrD7bli1bDEdHR2PWrFmWY+z9+6AifWDv3wdz5swxXF1djTlz5hhJSUnGL7/8YgQFBRkTJkyocp22Vht9YO/fB08//bQRHBxsLFy40EhMTDQ++OADw83NzVi3bl2V66yuSzLY9e7d2xg/frzleUFBgREcHGxMmTKlzONnzZpl+Pj4lFtfYWGh0aRJE+O1116zlJ0+fdpwdXU1vvjiixprd02q6T4wDPMX+YgRI2qwlbWrsn0wbdo0o3Xr1kZubm6N1WlrtdEHkZGRRrdu3Wq6qbWmur+zt956y/Dy8jIyMjIMw7g0vg/OdW4fGIb9fx+MHz/eCA8PtyqbOHGi0b9//yrXaWu10Qf2/n0QFBRkTJ061ars1ltvNUaPHl3lOqvrkpuKzc3NZe3atQwZMsRS5uDgwJAhQ1ixYkW578vIyKBFixaEhIQwYsQItm7danktKSmJo0ePWtXp4+NDnz59zlunrdRGHxRLSEigUaNGdOjQgYceeohTp07Vymeorqr0wffff0/fvn0ZP348jRs3pnPnzrz88ssUFBRUuU5bqo0+KLZ7926Cg4Np3bo1o0ePZv/+/bX6WaqqJn5nM2bM4M4776RBgwbApfN9cLZz+6CYPX8f9OvXj7Vr11qm1P7++29++uknrr/++irXaUu10QfF7Pn7ICcnp9RlSe7u7vz5559VrrO6Lrlgd/LkSQoKCmjcuLFVeePGjTl69GiZ7+nQoQMzZ85kwYIFfP755xQWFtKvXz8OHjwIYHlfZeq0pdroA4DrrruOzz77jLi4OF599VWWLFnCsGHDSv2jXx9UpQ/+/vtvvv76awoKCvjpp5+YPHkyb7zxBi+++GKV67Sl2ugDgD59+jB79mwWLVrEtGnTSEpK4uqrryY9Pb1WP09VVPd3tmrVKrZs2cIDDzxgKbsUvg/OVlYfgP1/H4waNYqYmBiuuuoqnJ2dadOmDWFhYfz73/+ucp22VBt9APb/fXDttdfy5ptvsnv3bgoLC/ntt9/45ptvOHLkSJXrrC6nWqnVzvTt25e+fftanvfr149OnTrx0UcfERsba8OW1Z2K9MGdd95peb1Lly507dqVNm3akJCQwODBg+u8zTWtsLCQRo0a8fHHH+Po6EiPHj04dOgQr732GpGRkbZuXp2oSB8MGzbMcnzXrl3p06cPLVq04KuvvmLs2LG2anqtmDFjBl26dKF37962borNlNcH9v59kJCQwMsvv8wHH3xAnz592LNnD48//jixsbFMnjzZ1s2rExXpA3v/PnjnnXcYN24cHTt2xGQy0aZNG+677z5mzpxpszZdciN2AQEBODo6cuzYMavyY8eO0aRJkwrV4ezsTGhoKHv27AGwvK86ddal2uiDsrRu3ZqAgIDzHmMrVemDoKAg2rdvj6Ojo6WsU6dOHD16lNzc3Brp17pUG31QFl9fX9q3b283fw+KZWZmMm/evFL/OF1K3wfl9UFZ7O37YPLkydx999088MADdOnShVtuuYWXX36ZKVOmUFhYeEl8H1yoD8pib98HgYGBfPfdd2RmZrJv3z527NiBp6cnrVu3rnKd1XXJBTsXFxd69OhBXFycpaywsJC4uDirEanzKSgoYPPmzQQFBQHQqlUrmjRpYlVnWloaK1eurHCddak2+qAsBw8e5NSpU+c9xlaq0gf9+/dnz549Vl9Yu3btIigoCBcXlxrp17pUG31QloyMDBITE+3m70Gx//3vf+Tk5HDXXXdZlV9K3wfl9UFZ7O374MyZMzg4WP8TWvw/PIZhXBLfBxfqg7LY6/eBm5sbTZs2JT8/n/nz5zNixIhq11lltbIko56bN2+e4erqasyePdvYtm2b8a9//cvw9fW1bN9x9913G88++6zl+OjoaOOXX34xEhMTjbVr1xp33nmn4ebmZmzdutVyzCuvvGL4+voaCxYsMDZt2mSMGDGi3m9vUJN9kJ6ebjz11FPGihUrjKSkJOP33383rrjiCqNdu3ZGdna2TT7jhVS2D/bv3294eXkZjzzyiLFz507jxx9/NBo1amS8+OKLFa6zvqmNPnjyySeNhIQEIykpyVi2bJkxZMgQIyAgwDh+/Hidf76KqGwfFLvqqquMO+64o8w67f37oFh5fXApfB9ERkYaXl5exhdffGH8/fffxq+//mq0adPGuP322ytcZ31TG31g798Hf/31lzF//nwjMTHR+OOPP4zw8HCjVatWRkpKSoXrrGmXZLAzDMN47733jObNmxsuLi5G7969jb/++svy2sCBA417773X8vyJJ56wHNu4cWPj+uuvt9qjxjDMWxxMnjzZaNy4seHq6moMHjzY2LlzZ119nCqpyT44c+aMcc011xiBgYGGs7Oz0aJFC2PcuHH19gusWGX6wDAMY/ny5UafPn0MV1dXo3Xr1sZLL71k5OfnV7jO+qim++COO+4wgoKCDBcXF6Np06bGHXfcYezZs6euPk6VVLYPduzYYQDGr7/+WmZ99v59YBjn74NL4fsgLy/PiIqKMtq0aWO4ubkZISEhxsMPP2z1D/qF6qyParoP7P37ICEhwejUqZPh6upq+Pv7G3fffbdx6NChStVZ00yGUc54qYiIiIhcVC65a+xERERE7JWCnYiIiIidULATERERsRMKdiIiIiJ2QsFORERExE4o2ImIiIjYCQU7ERERETuhYCciIiJiJxTsREREROyEgp2IiIiInVCwExG7FhYWxhNPPGHrZlhUtT2nTp2iUaNG7N27t8bbdK4777yTN954o9bPIyI1T8FORKrtww8/xMvLi/z8fEtZRkYGzs7OhIWFWR2bkJCAyWQiMTGxjltZt2o6UL700kuMGDGCli1b1lid5XnhhRd46aWXSE1NrfVziUjNUrATkWobNGgQGRkZrFmzxlK2dOlSmjRpwsqVK8nOzraUL168mObNm9OmTRtbNPWidObMGWbMmMHYsWPr5HydO3emTZs2fP7553VyPhGpOQp2IlJtHTp0ICgoiISEBEtZQkICI0aMoFWrVvz1119W5YMGDQJg0aJFXHXVVfj6+uLv78+NN95oNZL38ccfExwcTGFhodX5RowYwf333w9AYWEhU6ZMoVWrVri7u9OtWze+/vrrcttakePDwsJ47LHHePrpp/Hz86NJkyZERUVZHZOens7o0aNp0KABQUFBvPXWW5ZRujFjxrBkyRLeeecdTCYTJpPJagq1sLDwvHWf66effsLV1ZUrr7zSqvzPP//E2dnZKjjv3bsXk8nEvn37LH+eP38+AwYMwN3dnV69erF//36WLl3KlVdeiYeHB4MHD+b06dNWdQ8fPpx58+adt10iUv8o2IlIjRg0aBCLFy+2PF+8eDFhYWEMHDjQUp6VlcXKlSstwS4zM5OJEyeyZs0a4uLicHBw4JZbbrEEudtuu41Tp05Z1ZucnMyiRYsYPXo0AFOmTOGzzz7jww8/ZOvWrUyYMIG77rqLJUuWlNnOih7/6aef0qBBA1auXMl//vMfYmJi+O233yyvT5w4kWXLlvH999/z22+/sXTpUtatWwfAO++8Q9++fRk3bhxHjhzhyJEjhISEVLjucy1dupQePXqUKt+wYQOdOnXCzc3NUrZ+/XoaNmxIixYt2LhxIwDTpk3j5ZdfZvny5Rw7doy77rqLV155halTp7J48WI2btzIrFmzrOru3bs3q1atIicnp9x2iUj942TrBoiIfRg0aBBPPPEE+fn5ZGVlsX79egYOHEheXh4ffvghACtWrCAnJ8cS7P7xj39Y1TFz5kwCAwPZtm0bnTt3pmHDhgwbNoy5c+cyePBgAL7++msCAgIYNGgQOTk5vPzyy/z+++/07dsXgNatW/Pnn3/y0UcfMXDgQKv6K3N8165diYyMBKBdu3ZMnTqVuLg4hg4dSnp6Op9++qlVu2bNmkVwcDAAPj4+uLi44OHhQZMmTUr11fnqLsu+ffssdZ9t48aNhIaGWpVt2LCBbt26Wf7s5+fHl19+ib+/PwADBw7kzz//ZOvWrXh4eADQq1cvjh49alVPcHAwubm5HD16lBYtWpTZLhGpfzRiJyI1IiwsjMzMTFavXs3SpUtp3749gYGBDBw40HKdXUJCAq1bt6Z58+YA7N69m5EjR9K6dWu8vb0tCwP2799vqXf06NHMnz/fMnI0Z84c7rzzThwcHNizZw9nzpxh6NCheHp6Wh6fffZZmYszKnN8165drZ4HBQVx/PhxAP7++2/y8vLo3bu35XUfHx86dOhQob46X91lycrKshqVK7Zhwwa6d+9uVbZ+/XpL2caNG7nlllssoQ7MfXvHHXdYQl1xWatWrazqcXd3B8zX94nIxUMjdiJSI9q2bUuzZs1YvHgxKSkpltGv4OBgQkJCWL58OYsXLyY8PNzynuHDh9OiRQumT59uuZauc+fO5ObmWh1jGAYLFy6kV69eLF26lLfeegswr7wFWLhwIU2bNrVqj6ura6k2VuZ4Z2dnq+cmk6nUtX5VVdm6AwICSElJsSorKChgy5YtpUbs1q1bZxkJ3bBhA88995zV6xs3bmTChAmW59nZ2ezcudMyylcsOTkZgMDAwAp+KhGpDxTsRKTGDBo0iISEBFJSUpg0aZKlfMCAAfz888+sWrWKhx56CDDvy7Zz506mT5/O1VdfDZgXA5zLzc2NW2+9lTlz5rBnzx46dOjAFVdcAcBll12Gq6sr+/fvLzXtWpbKHl+e1q1b4+zszOrVqy2jj6mpqezatYsBAwYA4OLiQkFBQZXPcbbQ0NBSK1R37txJdna21RTtihUrOHToEN27dyctLY29e/daBb+kpCRSU1OtyjZv3oxhGHTp0sWq/i1bttCsWTMCAgJq5DOISN1QsBORGjNo0CDGjx9PXl6eVXAaOHAgjzzyCLm5uZbr6xo2bIi/vz8ff/wxQUFB7N+/n2effbbMekePHs2NN97I1q1bueuuuyzlXl5ePPXUU0yYMIHCwkKuuuoqUlNTWbZsGd7e3tx7771W9VT2+PJ4eXlx7733MmnSJPz8/GjUqBGRkZE4ODhgMpkAaNmyJStXrmTv3r14enri5+eHg0PVrn659tpree6550hJSaFhw4aAeTQO4L333uOxxx5jz549PPbYYwDk5uayceNGHB0d6dy5s6We4mvuzr5mbsOGDbRp0wZPT0+rcy5dupRrrrmmSu0VEdvRNXYiUmMGDRpEVlYWbdu2pXHjxpbygQMHkp6ebtkWBcDBwYF58+axdu1aOnfuzIQJE3jttdfKrDc8PBw/Pz927tzJqFGjrF6LjY1l8uTJTJkyhU6dOnHdddexcOHCUteMVfX48rz55pv07duXG2+8kSFDhtC/f3+rFapPPfUUjo6OXHbZZQQGBlpdN1hZXbp04YorruCrr76ylG3YsIFrr72Wv//+my5duvD8888THR2Nt7c37777Lhs3bqRDhw5W1+aVtdhi48aNpaZhs7Oz+e677xg3blyV2ywitmEyDMOwdSNERC52mZmZNG3alDfeeKNWNhJeuHAhkyZNYsuWLTg4OHDttdfSq1cvXnzxxRo/17Rp0/j222/59ddfa7xuEaldmooVEamC9evXs2PHDnr37k1qaioxMTGAefPk2nDDDTewe/duDh06REhICBs3brRs0lzTnJ2dee+992qlbhGpXRqxExGpgvXr1/PAAw+wc+dOXFxc6NGjB2+++WapRQi14ejRowQFBbF161Yuu+yyWj+fiFw8FOxERERE7IQWT4iIiIjYCQU7ERERETuhYCciIiJiJxTsREREROyEgp2IiIiInVCwExEREbETCnYiIiIidkLBTkRERMROKNiJiIiI2AkFOxERERE7oWAnIiIiYif+H9luICmDWdxPAAAAAElFTkSuQmCC",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "n_pyrex = 1.47  # refractive index of the Pyrex substrate\n",
    "pyrex = td.Medium(permittivity=n_pyrex**2)\n",
    "\n",
    "# create a fitter from the refractive index file\n",
    "fitter = FastDispersionFitter.from_file(\"misc/amorphous_silicon_from_paper.txt\")\n",
    "\n",
    "# alternatively one can create the fitter object from a refractiveindex.io url\n",
    "# url = \"https://refractiveindex.info/tmp/database/data-nk/main/Si/Pierce.txt\"\n",
    "# fitter = FastDispersionFitter.from_url(url, delimiter=\"\\t\")\n",
    "\n",
    "# fit the data\n",
    "silicon, error = fitter.fit(max_num_poles=2)\n",
    "ax = fitter.plot(silicon)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "e375da54-f182-4267-bddb-f61fabb0e2cd",
   "metadata": {},
   "source": [
    "### Create the Nanodisk Structures\n",
    "\n",
    "To create the rotated elliptical nanodisk structures, we first define a function that takes the geometric parameters of the nanodisk and return the vertices of the ellipse. This can be done by noting that the boundaries of an ellipse can be described by \n",
    "\n",
    "$$\n",
    "X'(\\theta) = \\frac{b}{2} \\cos(\\theta),\n",
    "$$\n",
    "\n",
    "$$\n",
    "Y'(\\theta) = \\frac{a}{2} \\sin(\\theta),\n",
    "$$\n",
    "\n",
    "where $\\theta \\in [0, 2\\pi)$, $a$ and $b$ are the major and minor axis diameters. To rotate the ellipse by an angle $\\alpha$ counterclockwise, apply the rotation transformation:\n",
    "\n",
    "$$\n",
    "\\begin{pmatrix} \n",
    "X \\\\ \n",
    "Y \n",
    "\\end{pmatrix} \n",
    "=\n",
    "\\begin{pmatrix} \n",
    "x_0 \\\\ \n",
    "y_0 \n",
    "\\end{pmatrix} \n",
    "+ \n",
    "\\begin{pmatrix} \n",
    "\\cos(\\alpha) & -\\sin(\\alpha) \\\\ \n",
    "\\sin(\\alpha) & \\cos(\\alpha) \n",
    "\\end{pmatrix} \n",
    "\\begin{pmatrix} \n",
    "X'(\\theta) \\\\ \n",
    "Y'(\\theta) \n",
    "\\end{pmatrix}.\n",
    "$$\n",
    "\n",
    "Substituting $X'(\\theta)$ and $Y'(\\theta)$:\n",
    "\n",
    "$$\n",
    "X(\\theta) = x_0 + \\frac{b}{2} \\cos(\\theta) \\cos(\\alpha) - \\frac{a}{2} \\sin(\\theta) \\sin(\\alpha),\n",
    "$$\n",
    "\n",
    "$$\n",
    "Y(\\theta) = y_0 + \\frac{b}{2} \\cos(\\theta) \\sin(\\alpha) + \\frac{a}{2} \\sin(\\theta) \\cos(\\alpha).\n",
    "$$\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "b00b665d-1a0e-469c-8749-028a1c0202cf",
   "metadata": {},
   "outputs": [],
   "source": [
    "def ellipse_vertices(x0, y0, dx, dy, n, alpha):\n",
    "    \"\"\"\n",
    "    Generate N points along the boundary of a rotated ellipse.\n",
    "\n",
    "    Parameters\n",
    "    ----------\n",
    "    x0, y0 : float\n",
    "        The coordinates of the center of the ellipse.\n",
    "    dx : float\n",
    "        The length of the ellipse's major axis.\n",
    "    dy : float\n",
    "        The length of the ellipse's minor axis.\n",
    "    n : int\n",
    "        The number of points to sample on the ellipse boundary.\n",
    "    alpha : float\n",
    "        The rotation angle in radians. alpha=0 means the major axis is aligned\n",
    "        with the y-axis.\n",
    "\n",
    "    Returns\n",
    "    -------\n",
    "    vertices : list of tuples\n",
    "        A list of (x, y) coordinates on the ellipse boundary.\n",
    "    \"\"\"\n",
    "\n",
    "    vertices = []\n",
    "    dtheta = 2.0 * np.pi / n\n",
    "\n",
    "    for i in range(n):\n",
    "        theta = i * dtheta\n",
    "        Xp = (dy / 2.0) * np.cos(theta)\n",
    "        Yp = (dx / 2.0) * np.sin(theta)\n",
    "\n",
    "        # Rotate by alpha:\n",
    "        x = x0 + Xp * np.cos(alpha) - Yp * np.sin(alpha)\n",
    "        y = y0 + Xp * np.sin(alpha) + Yp * np.cos(alpha)\n",
    "        vertices.append((x, y))\n",
    "\n",
    "    return vertices"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "91d45c10-9d5b-4a12-9fe7-46ddc8ad1753",
   "metadata": {},
   "source": [
    "With the above function defined, we can create each nanodisk structure as [PolySlab](https://docs.flexcompute.com/projects/tidy3d/en/latest/api/_autosummary/tidy3d.PolySlab.html)."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "27fd632f-4ecc-4d32-a668-d143d4c950b1",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAnYAAAFtCAYAAACKrSc8AAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjMsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvZiW1igAAAAlwSFlzAAAPYQAAD2EBqD+naQAAZyxJREFUeJzt3Xd4FOXCBfAz29M2hTQCIQkJEHoJEFAQldBBURBBFEQuKEVFbCAoCCpWsFEUpUiRqqiAtFClQwLSm4GQnpBkN3XrfH9wyXcjEBJSZsv5Pc8+yuzM5uxOsnt2yjuCKIoiiIiIiMjuyaQOQERERERVg8WOiIiIyEGw2BERERE5CBY7IiIiIgfBYkdERETkIFjsiIiIiBwEix0RERGRg2CxIyIiInIQLHZEREREDoLFjoioEnbv3g1BELB7926poxARsdgREZXHvHnzsGTJEqlj3JeVK1fiyy+/lDoGAMBqteLTTz9FWFgYNBoNWrRogZ9//rncy+fm5mL06NHw8/ODm5sbHnnkEcTFxd1x3ry8PLz11lsICwuDWq1GnTp1MHDgQBQWFlbV0yGyOQKvFUtEdG/NmjWDr6/vbVvmrFYrjEYjVCoVZDLb/K7ct29fnD59GlevXpU6CiZPnoyPP/4Yo0aNQrt27fDbb79h06ZN+PnnnzF48OAyl7VarejcuTNOnjyJN998E76+vpg3bx6uX7+O48ePo0GDBiXz6nQ6dOnSBUlJSRg9ejQiIiKQmZmJffv2YdmyZfD29q7up0okCRY7Iiq3goICuLm5SR1DEncrdvbAVopdcnIywsLCMHr0aHz77bcAAFEU0aVLFyQkJODq1auQy+V3XX7NmjV4+umnsXbtWgwcOBAAkJmZiYYNG6JXr15YuXJlybxjx47Fzz//jLi4OISFhVXvEyOyIbb59ZKIql1ycjJGjhyJoKAgqNVqhIWFYcyYMTAajQCAJUuWQBAE7NmzB2PHjoW/vz/q1q1bsvy8efPQtGlTqNVqBAUFYdy4ccjNzS31My5duoQBAwYgMDAQGo0GdevWxeDBg6HT6Urm2b59Ozp16gQvLy+4u7ujUaNGeOedd+6ZvzzLGQwGTJs2DREREVCr1QgODsZbb70Fg8Fw2+MtX74c7du3h6urK7y9vfHQQw9h27ZtAIDQ0FCcOXMGe/bsgSAIEAQBDz/8MIC7H2O3du1aREVFwcXFBb6+vnj22WeRnJxcap7nn38e7u7uSE5ORv/+/eHu7g4/Pz+88cYbsFgs93wNfvvtN/Tp06dkHYaHh2PmzJmlln344YexadMmXLt2rSR7aGjoXR/z+eefL5nv37fp06ffM9O98ppMJowdO7ZkmiAIGDNmDJKSknDw4MEyl1+3bh0CAgLw5JNPlkzz8/PDoEGD8Ntvv5Ws19zcXCxevBijR49GWFgYjEbjHdc5kSNSSB2AiGpeSkoK2rdvX3K8UmRkJJKTk7Fu3ToUFhZCpVKVzDt27Fj4+fnhvffeQ0FBAQBg+vTpeP/99xETE4MxY8bgwoULmD9/Po4ePYr9+/dDqVTCaDSiR48eMBgMePnllxEYGIjk5GRs3LgRubm58PT0xJkzZ9C3b1+0aNECM2bMgFqtxuXLl7F///4y85dnOavVisceewx//fUXRo8ejcaNG+PUqVOYM2cOLl68iA0bNpTM+/7772P69Ol44IEHMGPGDKhUKhw+fBg7d+5E9+7d8eWXX+Lll1+Gu7s7pkyZAgAICAi4a74lS5ZgxIgRaNeuHWbNmoX09HR89dVX2L9/P+Lj4+Hl5VUyr8ViQY8ePRAdHY3PP/8cO3bswBdffIHw8HCMGTOmzNdhyZIlcHd3x8SJE+Hu7o6dO3fivffeg16vx2effQYAmDJlCnQ6HZKSkjBnzhwAgLu7+10f88UXX0RMTEypaVu2bMGKFSvg7+9fMi0rK6vMbLd4eHhArVYDAOLj4+Hm5obGjRuXmqd9+/Yl93fq1OmujxUfH482bdrctsu7ffv2+P7773Hx4kU0b94cf/31F4qLixEREYGBAwdiw4YNsFqt6NixI+bOnYtWrVqVKzuRXRKJyOkMGzZMlMlk4tGjR2+7z2q1iqIoiosXLxYBiJ06dRLNZnPJ/RkZGaJKpRK7d+8uWiyWkunffvutCEBctGiRKIqiGB8fLwIQ165de9ccc+bMEQGImZmZFcpfnuWWLVsmymQycd++faWmL1iwQAQg7t+/XxRFUbx06ZIok8nEJ554otTzEcX/fy1EURSbNm0qdunS5bafs2vXLhGAuGvXLlEURdFoNIr+/v5is2bNxKKiopL5Nm7cKAIQ33vvvZJpw4cPFwGIM2bMKPWYrVu3FqOiosp+EURRLCwsvG3aiy++KLq6uorFxcUl0/r06SOGhITc8/Hu5NKlS6Knp6fYrVu3Ur8HAMp1W7x4cakc9evXv+1nFBQUiADESZMmlZnFzc1NfOGFF26bvmnTJhGAuGXLFlEURXH27NkiALFWrVpi+/btxRUrVojz5s0TAwICRG9vbzElJeW+Xgsie8BdsUROxmq1YsOGDejXrx/atm172/2CIJT696hRo0od97Rjxw4YjUZMmDCh1JaTUaNGQavVYtOmTQAAT09PAMDWrVvvehbirS1Xv/32G6xWa7mfQ3mWW7t2LRo3bozIyEhkZWWV3B599FEAwK5duwCgZGvOe++9d9uWoH+/FuVx7NgxZGRkYOzYsdBoNCXT+/Tpg8jIyJLX53+99NJLpf7duXNn/PPPP/f8WS4uLiX/n5eXh6ysLHTu3BmFhYU4f/58hbP/W0FBAZ544gl4e3vj559/LvV7sH379nLdevToUbJMUVFRyda7/3XrdSoqKiozT3mXz8/PB3Bz/cXGxuKZZ57BmDFjsGHDBuTk5GDu3LkVfCWI7Ad3xRI5mczMTOj1ejRr1qxc8//7wPNr164BABo1alRqukqlQv369UvuDwsLw8SJEzF79mysWLECnTt3xmOPPYZnn322pPQ9/fTT+OGHH/Cf//wHkyZNQteuXfHkk09i4MCBZZ5hWp7lLl26hHPnzsHPz++Oj5GRkQEAuHLlCmQyGZo0aVKu1+Ne7vb6AEBkZCT++uuvUtM0Gs1tGb29vZGTk3PPn3XmzBlMnToVO3fuhF6vL3Xf/x7HeL9GjRqFK1eu4MCBA6hVq1ap+/69u7Y8XFxc7nisW3Fxccn9VbH8rf/269ev1G7nDh06ICwsDAcOHKhwdiJ7wWJHRGW614dtWb744gs8//zz+O2337Bt2za88sormDVrFg4dOoS6devCxcUFe/fuxa5du7Bp0yZs2bIFq1evxqOPPopt27bd9QzJ8ixntVrRvHlzzJ49+46PERwcfN/PqyqVdRZoWXJzc9GlSxdotVrMmDED4eHh0Gg0iIuLw9tvv12hLaB38tVXX+Hnn3/G8uXL73hMWlpaWrkex9PTs+R3qHbt2ti1axdEUSy1NTQ1NRUAEBQUVOZj1a5du2Te//Xv5W/9907HQfr7+5erNBPZK+6KJXIyfn5+0Gq1OH369H0tHxISAgC4cOFCqelGoxEJCQkl99/SvHlzTJ06FXv37sW+ffuQnJyMBQsWlNwvk8nQtWtXzJ49G2fPnsWHH36InTt3luwqvZt7LRceHo7s7Gx07doVMTExt91ubVELDw+H1WrF2bNny/x55d0te7fX59a0f78+92v37t24ceMGlixZgldffRV9+/ZFTEzMHcdnq+gu5X379uGNN97AhAkTMHTo0DvOU7t27XLdVq9eXbJMq1atUFhYiHPnzpV6rMOHD5fcX5ZWrVohLi7uttJ6+PBhuLq6omHDhgCAqKgoALjtLGTg5olDd9uKS+QIWOyInIxMJkP//v3xxx9/4NixY7fdL95jaMuYmBioVCp8/fXXpeb98ccfodPp0KdPHwCAXq+H2WwutWzz5s0hk8lKdqdlZ2ff9vi3PtzLGp6iPMsNGjQIycnJWLhw4W3zFhUVlZzh279/f8hkMsyYMeO2wvC/z8/Nze224VzupG3btvD398eCBQtKPYc///wT586dK3l9KuvWlr7/zWg0GjFv3rzb5nVzcyv3rtnU1FQMGjQInTp1Kjmz9k7u5xi7xx9/HEqlslRGURSxYMEC1KlTBw888ECpHOfPn4fJZCqZNnDgQKSnp+OXX34pmZaVlYW1a9eiX79+JcffNWrUCC1btsRvv/1W6uzdbdu24fr16+jWrVu5Xgsie8RdsURO6KOPPsK2bdvQpUuXkqFAUlNTsXbtWvz111+lhuP4Nz8/P0yePBnvv/8+evbsicceewwXLlzAvHnz0K5dOzz77LMAgJ07d2L8+PF46qmn0LBhQ5jNZixbtgxyuRwDBgwAAMyYMQN79+5Fnz59EBISgoyMDMybNw9169Ytc9iL8iz33HPPYc2aNXjppZewa9cuPPjgg7BYLDh//jzWrFmDrVu3om3btoiIiMCUKVMwc+ZMdO7cGU8++STUajWOHj2KoKAgzJo1C8DNrUDz58/HBx98gIiICPj7+5eciPG/lEolPvnkE4wYMQJdunTBkCFDSoY7CQ0NxWuvvXa/q62UBx54AN7e3hg+fDheeeUVCIKAZcuW3bGYR0VFYfXq1Zg4cSLatWsHd3d39OvX746P+8orryAzMxNvvfUWVq1aVeq+Fi1aoEWLFgDu7xi7unXrYsKECfjss89gMpnQrl07bNiwAfv27cOKFStK7ZaePHkyli5dioSEhJJx9wYOHIgOHTpgxIgROHv2bMmVJywWC95///1SP2vOnDno1q0bOnXqhBdffBE6nQ6zZ89Gw4YN7zmMDJFdk/CMXCKS0LVr18Rhw4aJfn5+olqtFuvXry+OGzdONBgMoij+/3AndxoSRRRvDm8SGRkpKpVKMSAgQBwzZoyYk5NTcv8///wjvvDCC2J4eLio0WhEHx8f8ZFHHhF37NhRMk9sbKz4+OOPi0FBQaJKpRKDgoLEIUOGiBcvXiwze3mXMxqN4ieffCI2bdpUVKvVore3txgVFSW+//77ok6nKzXvokWLxNatW5fM16VLF3H79u0l96elpYl9+vQRPTw8RAAlQ5/8e7iTW1avXl3yeD4+PuLQoUPFpKSkUvMMHz5cdHNzu+35TZs2TSzP2/P+/fvFDh06iC4uLmJQUJD41ltviVu3br0tT35+vvjMM8+IXl5eIoAyhz7p0qXLXYcumTZt2j0z3YvFYhE/+ugjMSQkRFSpVGLTpk3F5cuX3zbfraFgEhISSk3Pzs4WR44cKdaqVUt0dXUVu3Tpctff0e3bt4sdOnQo+f177rnnxNTU1Eo/ByJbxkuKERERETkIHmNHRERE5CBY7IiIiIgcBIsdERERkYNgsSMiIiJyECx2RERERA6CxY6IiIjIQXCA4ipgtVqRkpICDw+PCl+6h4iIiKgsoigiLy8PQUFBkMnK3ibHYlcFUlJSbOaC4kREROSYrl+/jrp165Y5D4tdFfDw8ABw8wXXarUSpyEiIiJHotfrERwcXNI3ysJiVwVu7X7VarUsdkRERFQtynO4F0+eICIiInIQLHZEREREDoLFjoiIiMhBsNgREREROQgWOyIiIiIHwWJHRERE5CBY7IiIiIgcBIsdERERkYNgsSMiIiJyECx2RERERA6CxY6IiIjIQbDYERERETkIFjsiIiIiB8FiR0REROQgWOyIiIiIHASLHREREZGDYLEjIiIichAsdkREREQOgsWOiIiIyEGw2BERERE5CBY7IiIiIgfBYkdERETkIFjsiIiIiBwEix0RERGRg2CxIyIiInIQLHZEREREDoLFjoiIiMhB2F2xmzt3LkJDQ6HRaBAdHY0jR47cdd4zZ85gwIABCA0NhSAI+PLLLyv9mERERES2yq6K3erVqzFx4kRMmzYNcXFxaNmyJXr06IGMjIw7zl9YWIj69evj448/RmBgYJU8JhEREZGtEkRRFKUOUV7R0dFo164dvv32WwCA1WpFcHAwXn75ZUyaNKnMZUNDQzFhwgRMmDChyh7zFr1eD09PT+h0Omi12oo/MSIiIqK7qEjPUNRQpkozGo04fvw4Jk+eXDJNJpMhJiYGBw8erNHHNBgMMBgMJf/W6/X39fOJKiMvLw9Xr15FQkJCyS0pKQnZ2dnIyc1Brk4HvU6HvLx8mIxGyBVyyOUKyOVyyOUyyBUKeHt7oXZgbdQJqoOAgAAEBgaibt26aNq0KZo0aQI3NzepnyZRhYiiiPT0dJw6dQoXLlxAamoq0tPTkZqaiuTUFKSlpaGoqAgWsxkWiwUWswUWiwWiKMLF1RXuHu7w9PSEl6cXfLy94evri9DQUISFhZX8Nzg4GEqlUuqnSnRHdlPssrKyYLFYEBAQUGp6QEAAzp8/X6OPOWvWLLz//vv39TOJKspqteLKlSuIi4tDXFwcjh47hhMnTyDnRnbJPDKlHCqtK+Aqh6iUQaaSQ3BXQKjlCo3SAxq5DBBFQBQhWkVABCxWKzKKDUjLvIT46+cgGKywFJpgLCgCREAQBNStF4zWLVuhRYsW6Ny5Mzp16gRXV1cJXw2i0pKTk7Fz504cPnwYJ//+G6dOn4IuJxcAIJPLofTQQNAoIGpkkGkUkNVWQlBqIQgClDIBSgGATAAgQDRZUGC0IM+ow/XcbIgZFginrBDzTTDkFQL/3b8lk8lQt14wotu1R5s2bUpuvr6+Ur0MRCXsptjZksmTJ2PixIkl/9br9QgODpYwETkSo9GIQ4cOITY2Fjt37URcXDwKCwoAAGpPVwg+GshDXaBtGQ65hxpyDzVkrkoIglAlP180WWDOLYY5uxA3sguxLX4vtsRuwwcffAClUonoDh3QvVs3dO3aFdHR0ZDL5VXyc4nKQ6fTITY2FrGxsdi6bSuuXL4CANDUcge8VJCHu8PTxw8KH1fIPdQQZFX0d2GxwpJvhCXPAIvegKzcIvxxYDt+/X0DzAYTACAwqDYe7PgAunbtiq5du6JBgwZV9ndJVF52U+x8fX0hl8uRnp5eanp6evpdT4yorsdUq9VQq9X39TOJ/k0URZw4cQI7duzA9h3bsW/fPhQXFUPpooI80B2Kpj7w8guGspYrZC7Vv/tHUMqh9HOD0u//d8OKoghLThGMyXocu34Ghz46jPfeew/+gQF4buizGDp0KFq1asUPMaoWBoMBmzdvxvLly/HHxo0wGY1Qe7tBFugGz5gIqIK01f63IchlUHhqoPDUlJouiiIsegPMmQXQZxVg08Ed+OXXXyFarQisHYju3bqja9eu6NatG2rXrl2tGYkAOyp2KpUKUVFRiI2NRf/+/QHc3EUVGxuL8ePH28xjEpWH1WrFwYMHsX79eqxeswYpycmQKxVQBnpA0cIPPnU8oajlWmVbGypLEAQofFyh8HEFmgdCtIowZeQj7/INfL3gW3zxxRdo0Kghnh82HP/5z3/g7+8vdWRyAEePHsXChQuxavUq5OnzoPHXQt0mEJ71fSD3sI0v14IglBQ+TUQtAIDVaIEpLQ/6ZB3W/PkrfvrpJwBAh44dMOipQRgwYADq1asnZWxyYHZ1Vuzq1asxfPhwfPfdd2jfvj2+/PJLrFmzBufPn0dAQACGDRuGOnXqYNasWQBu7tI6e/YsAKB3794YOnQohg4dCnd3d0RERJTrMcuDZ8VSeVitVuzbtw/r1q3DmrVrkZGeDpW7BvJ6WqjDfKCq7QFBblcjEAG4uYvKmKxH8aUbMF3LhVwmw8gXRuL1119HeHi41PHIzoiiiC1btmDWxx9j3969UHm6QlnfC5oGtaDwts/jO61FJhgSc2G8mgtjkg5WswVtotrg6UFP46mnnkJYWJjUEcnGVaRn2FWxA4Bvv/0Wn332GdLS0tCqVSt8/fXXiI6OBgA8/PDDCA0NxZIlSwAAV69eveMfTJcuXbB79+5yPWZ5sNhRWZKSkrB48WJ8/8NCJCVeh0rrAkU9T6jr+0AZ4G4zW+WqgrXYhMKzGTCezYS5yIQBTz6JyZMno02bNlJHIxtnsViwcuVKzPrkY5w7cxaaAC3ULQKgDvV2rL8RoxmGa7kwJuTAlKSHxWRGl4cfxuhRo/Dkk09Co9Hc+0HI6Th0sbNFLHb0byaTCRs3bsT3C7/Htq3bIChkUNX3hqaR380y5+DHoolmK4ouZsJ4KhOG3AIMHz4cs2bN4jFGdEe7d+/G+JfH48zpM3AJ8YGmRQCUtT0c/+/EZEFxQg6MF7NQnKyD1lOL4f89nKFFixZSxyMbwmJXw1js6JbMzEzMmzcP38z9Fjcys6AJ1ELZsBY04T6QqezmkNYqI1pFFJ3PQPHxVCggx3vvvosJEyZwqwQBABISEvD6G2/g119+gSZQC9eOwVD6u0sdSxLm3CIUnc+E6UoOTPnFaNuuLd54/Q0MGDAACoXzvXdQaSx2NYzFji5duoTZs2dj0eJFsIhWqCJ84NIkAMpa9nlMUFWzGswoOJ6MojMZCK4XjKWLl+Dhhx+WOhZJxGw24+OPP8aMmTMhqOXQtAuCJqKWw2+hKw/RYoUhMReGs5koTspF3XrBePP1N/DCCy/A3d05Sy+x2NU4FjvndfDgQXz62Wf4bcMGKFzVUDXxhWsTf8g0HJX+Tsw5RSjYfw2GFD3eeustzJgxAyqVSupYVIMSEhIw5JlncOTwYbi0DIR7mzoQlBwL8U5MWQUo+jsNxVduwMPDA+PHjcfLL79830N8kf1isathLHbO59ChQ5g0eTL27N4NtY8bVM384dLAF4LC/s5qrWmiVUTh36koPJaM5s2bY9XPqxAZGSl1LKpmoihi+fLleGnMGJgVItweDoUq0EPqWHbBkmdA4ek0GC7cgEwUMG7sWEyePJnDCjkRFrsaxmLnPE6cOIF3pryDPzf/CY2fB9StA2+etcddSBVmyixAwe4EoNCMxYsWY8iQIVJHompiMBgwatQoLFu2DC4N/eD+YD2nPOa0sqwGMwpPp8NwKh1KuQKvTXgNb7zxBry9vaWORtWMxa6Gsdg5vvPnz+Pdd9/FunXroPZ2g6ZNbajDfVjoKkk0WZD31zUUXczEzJkzMWXKFL6mDiYrKwuPPf4YDh85AvfOoXBpyOupVpa12IyCkykwnM2Ei9oFb7/1Fl599VV4eHALqKNisathLHaOKzMzE1OmTMEPP/4IpbsGmtYB0DT0c6hxtaQmiiIK4lNQcDQJw4YNw8KFC3ncnYO4dOkSuvfsgeS0FLh3C+eu1ypmKTSiID4FhvNZ8PL0xMezPsYLL7zA6zc7IBa7GsZi53hMJhPmz5+Pqe9ORZHRAJc2teHSxN8urwxhL4ouZSF/71U8+MCD2PjHH/xbsnMHDx5Er969UCyzwL1HOBRaDnFTXSx5BhQcS0LRxSy0aNkC8+bOw4MPPih1LKpCFekZ/JQi+pfY2Fg0b9kCr06YAHNdF3gPagbX5oEsddXMpYEvPHs3xMEjh9CzV08UFBRIHYnu05EjRxDTrRsMroD2sUYsddVM7qGG9pFwePdvgotpV9GpUycMHToUycnJUkcjCfCTiui/EhMT8cSTTyAmJgbXdKnwebIptJ3DIHPh0CU1RVVbC4+eEThy/Bj69O2LoqIiqSNRBcXHxyOmWzdYtQp49GwAmZonSdQUVYAHtI9HQtslDGt/+wUNGjbArFmzYDQapY5GNYjFjpye1WrF3Llz0bhJY2zesRXaruHQ9m0Epa+b1NGckirAA9ruEfhr/1944sknYDAYpI5E5XTmzBk82vVRmFwAjx4RkHF8uhonCAJcIv3h9VRTCBGemPLuVLRq0xrHjh2TOhrVEBY7cmoXL15Ep86dMH78eIgh7vAc2AQuEb48M1NiqiAtPLpHYPuOHRj67LPgocC27/r163jk0UdQpLBwS50NkKkV8OgYAu/+TfBP5nW0j47GW2+9xa3gToDFjpyS2WzGJ598gmbNmyPu7El492t8c7crx9ayGeq6nvB4tD7Wr1uHWbNmSR2HylBUVITHHn8MOkMBtL0aQKbh35GtUPq6wfOxSLi1rYMv5sxG0+bNsHfvXqljUTVisSOnc+bMGbRt3w6TJ0+GMrIWPJ9sAlUQz8C0RZowH7i1qYOpU6di8+bNUsehOxBFES+++CJOnT4N95j6PCbVBglyGdxaB8H7yaZILbyBLl26YOzYsTxByUGx2JHTEEUR8+fPR5uoNjifeBne/ZvAo2M9XqfSxrm1rQNNiDeeHjwYly5dkjoO/cvXX3+NZcuWwa1zCI9LtXEKbxdo+zWCx4Mh+P6HhWjVpjVOnDghdSyqYix25BRujX4/duxYKCK84dm/MZT+7lLHonIQBAHuj4TBpLSi3+OPobi4WOpI9F8HDhzAxNcnwrVFIFwa8IoS9kAQBLg2C4TXE01wPScN7du3x5w5c2C1WqWORlWExY4c3s6dO9G0eTNsjd0Ozx4N4dEpFIKCv/r2RKZSwL1rfVy6dAnTp0+XOg7h5nF1zw0fBpWfO9yj60kdhypI4e0Cz8cjoYyshYkTJ6JX715IT0+XOhZVAX66kcMymUyYNGkSYmJioFcY4PlkE2hCebFse6XwcYVrm9r49LPPcOTIEanjOL13330XV69ehdtDobzEnp0S5DJ4PBACr16NsOuvvWjarCm2bNkidSyqJBY7ckjp6el4tGtXfPrZZ3BrXxfa3g0hd+P1R+2da8sgqP3c8dyw57hLVkIHDhzA7Nmz4RoVBIW3i9RxqJLU9bzg+WQTFLha0bt3b8yYMYO7Zu0Yix05nCNHjqBV61Y4HH8UXn0bwa1VEMelcxCCTIDbQyG4fOUK3n//fanjOKXi4mIMe3441IFauLaoLXUcqiJyVyW0PRvANSoI06ZPx+P9H4dOp5M6Ft0HFjtyKD/88AM6deqEXLEQnv0bQ1Wbw5g4GoWPK1xaBuLzzz9HQkKC1HGczty5c/HPlStw61yPu2AdjCAIcI+qC68eDbBl+za0aRuFs2fPSh2LKojFjhyCwWDA6NGjMWrUKCgaeEPbtxF3vTowt5a1IdMo8M4770gdxalkZ2fj/RkzoIn0h8LbVeo4VE3UITdHDkjOTUe79u2wfv16qSNRBbDYkd3LyMjAQ10ewo+LF0HbJQzazmEQ5PzVdmSCUg51m9pYtWoVr4FZg2bNmoXC4kK4RdWROgpVM4WnBtrHIiEGumDgwIF47733eGk/O8FPP7JrFy5cQNv27RB/+m949YuES6S/1JGohrg08oO6ljtef+MNfuDUgKtXr+Krr76CpnkA5K68uoQzkCnl8OgaDvf2wZg5cyaeffZZGAwGqWPRPbDYkd3au3cv2kdHIyM/++Z4TBxw2KkIMgEubYOwd88e7NixQ+o4Dm/69OmAWg7XljxhwpkIggC31kHwjInAqjWrEdOtG3JycqSORWVgsSO7tHLlSsTExMDoIUDbrxHkHmqpI5EEVCFeUPt74NPPPpM6ikNLTU3FihUroG7qBxkvweeUNOG14NmnEQ4fP4L2HaJ54pINY7EjuyKKIj766CMMHToUijAvaHs2gEytkDoWSUQQBKib+mHH9u08e68azZs3D6IMcGnMQx2cmSrQA9rHInE9MwXt2rfjQOE2isWO7IbVasW4ceMwZcoUuLWtA4+HeZIE3dySoHLXYM6cOVJHcUhFRUWYO28uVA1r8UsU3Typol8jFCjNeKjLQ7xShQ3ipyLZBbPZjOHDh2P+ggXweCgM7lF1OegwAbh5WSRlY1/8tOwnZGVlSR3H4Sxfvhw5OTlwbRYodRSyETIXJbS9G0IW6IZ+/fpxOBQbw2JHNs9gMGDgU09hxcqV8Hw0HK7cHUT/4trYHxarFT/88IPUURzOnK++hEuoDxSeGqmjkA0RFDJ4xIRDGeqFQYMG4aeffpI6Ev0Xix3ZtMLCQvTt2xd/bPwDnt0joImoJXUkskEyFyWUIZ5YuowfLlXp1KlTOHfmLNSNfKWOQjZIkMvg8Uh9qBv6Yvjw4Zg3b57UkQgsdmTDdDodYrrFYNfe3fDs2QDqEG+pI5EN04TXwvmz53Dq1CmpoziMn3/+GUoXFVR1PaWOQjZKkAnweCgUrs0DMW7cOHzyySdSR3J6LHZkk3Q6HR7t+iiOxh2HtndDqOrwg4XKpgr2hNJFhZ9//lnqKA5BFEUsW7EcihBPnqREZRIEAe4d68GtTR1MmjQJM2bMkDqSU+NfK9mc/Px89OjZE3+fOX2z1AV4SB2J7IAgl0ER4ollK5bzShRV4NChQ0hKvM7DH6hcBEGAe7u6cG9fF9OmTeOWOwmx2JFNKSwsRO8+fXA8/ji0vRpA6ecmdSSyI5qIWkhKvI7Dhw9LHcXurVq1CioPFyhra6WOQnbErXWdki13X331ldRxnBKLHdmM4uJiPP744zhw6AA8ejbgJcKowpS1tVBoVNi6davUUezexk0bIa/rAUHGYYWoYtza1oFry9qYMGECFixYIHUcp8NiRzbBaDRiwIAB2LVnF7TdI6AK5O5XqjhBJkBR2x1bt7HYVUZiYiL+ufIPT5qg+yIIAtyjg+HSLABjxozB4sWLpY7kVFjsSHIWiwWDhwzBlm1b4dEtgidKUKUo62hx5MgR5OXlSR3FbsXGxgICoAribli6P4IgwOOBELg08cfIkSOxatUqqSM5DRY7kpQoihg/fjw2bPgVHl3DoQ72kjoS2TlVXU9YzBbs3btX6ih2a8eOHdD4ayHT8BJidP8EQYBHp1BoGvjiueeeu/mFgaodix1JatasWViwYAE8OodCE8px6qjy5Fo11J6u2LFjh9RR7JIoitiybStktXniElWeINwc504R5IHHHn8cJ0+elDqSw2OxI8ksXboUU6ZMgVtUHbhE8jJhVDUEQYAQ4Ipde3ZLHcUuXb58GdlZN7gblqqMIJfBo2s4LG4ydO/RHdeuXZM6kkNjsSNJbNu2DSNHjoRLpD/coupIHYccjNLXDWfPnIXJZJI6it2Jj48HcPM1JKoqMpUcHj0ikFucj249uiM7O1vqSA7L7ord3LlzERoaCo1Gg+joaBw5cqTM+deuXYvIyEhoNBo0b94cmzdvLnX/888/f/Mb/v/cevbsWZ1PwenFxcXhiSefgLKuFh6dQyEIHE6BqpailitMRiMuXLggdRS7c+LECai1rpC5KKWOQg5G7qqCR88IXL1+DX379UVxcbHUkRySXRW71atXY+LEiZg2bRri4uLQsmVL9OjRAxkZGXec/8CBAxgyZAhGjhyJ+Ph49O/fH/3798fp06dLzdezZ0+kpqaW3HhJouqTnJyMnr16wuqugLZrOMfIomqhqOUK4GZJoYqJi4+H4K2WOgY5KIWXC9y7h+PI0aMYPnw4rxJTDeyq2M2ePRujRo3CiBEj0KRJEyxYsACurq5YtGjRHef/6quv0LNnT7z55pto3LgxZs6ciTZt2uDbb78tNZ9arUZgYGDJzdubB/FXh6KiIvR7rB90xflw7x4BQSmXOhI5KJlaAbWXG4vdfYiLOw65j4vUMciBqQI84P5wGNasWYOPP/5Y6jgOx26KndFoxPHjxxETE1MyTSaTISYmBgcPHrzjMgcPHiw1PwD06NHjtvl3794Nf39/NGrUCGPGjMGNGzfKzGIwGKDX60vdqGyiKOI///kP/j51Cu4x4ZC7cjcPVTNvNY4dPy51CruSkZGBzIxMKHxdpY5CDk5T3wdubepgypQp+OOPP6SO41DspthlZWXBYrEgICCg1PSAgACkpaXdcZm0tLR7zt+zZ0/89NNPiI2NxSeffII9e/agV69esFgsd80ya9YseHp6ltyCg4Mr8cycw+eff46VK1fC/aFQXv+VaoTcU4OLly5KHcOuXLp0CcDN3WVE1c2tbR1oQr0xeMgQnD17Vuo4DsNuil11GTx4MB577DE0b94c/fv3x8aNG3H06FHs3r37rstMnjwZOp2u5Hb9+vWaC2yH/vzzT7z99ttwbRUETUQtqeOQk5B7qJCelg6z2Sx1FLuRmJgIAJC5qyROQs5AEAS4P1wfFo2APv36IicnR+pIDsFuip2vry/kcjnS09NLTU9PT0dgYOAdlwkMDKzQ/ABQv359+Pr64vLly3edR61WQ6vVlrrRnV24cAGDnn4a6hBvuLevK3UcciJydzWsFgtSU1OljmI3EhMToXRRQabiFSeoZshUcrh3D0dyajKeeuopfhGrAnZT7FQqFaKiokpdksRqtSI2NhYdO3a84zIdO3a87RIm27dvv+v8AJCUlIQbN26gdu3aVRPciRUUFODx/o/DpLTC45EwDmtCNUr+361Ot7ZC0b0lJiZC4a6ROgY5GYVWA/eu9RG7MxbTpk2TOo7ds5tiBwATJ07EwoULsXTpUpw7dw5jxoxBQUEBRowYAQAYNmwYJk+eXDL/q6++ii1btuCLL77A+fPnMX36dBw7dgzjx48HAOTn5+PNN9/EoUOHcPXqVcTGxuLxxx9HREQEevToIclzdCTjxo3D5X+uwD0mnFsAqMbJWOwq7Nq1a7C68mx1qnmqOp5wbxeMjz76CFu3bpU6jl2zq0/bp59+GpmZmXjvvfeQlpaGVq1aYcuWLSUnSCQmJkIm+/+u+sADD2DlypWYOnUq3nnnHTRo0AAbNmxAs2bNAAByuRx///03li5ditzcXAQFBaF79+6YOXMm1GqO41QZS5cuxdKlS6F9pD4U3jwQm2qeTKWA0kXFYlcB/1xNgMyNZ6yTNFxb1YY5LR9DnhmCU3+fQp06vCrR/RBEjg5YaXq9Hp6entDpdDzeDsDZs2cR1TYKQj0PaB+uL3UccmK6tWfwyn/G4pNPPpE6il0IDKqN/NpyuLfj8bAkDWuRCbpfz6Jdy7bYvWsXFAq72v5UbSrSM+xqVyzZvsLCQgwYOACiqwIeD4ZIHYecnKCUcZzJCijIz4eg4q5Yko7MRQm3h8NwYP9+TJ8+Xeo4donFjqrU+PHjcenyZbg/GsYrS5DkRIUMeXl5UsewC6IoorCgEIKSHwskLVWQFm5t6+Cjjz7Ctm3bpI5jd/gXTFVmzZo1WLx4MdweqAeFD0euJ+mJcrDYlVNhYSGsViu/kJFNcG0dBHVdLwx9diiysrKkjmNXWOyoSqSmpmL0i6PhUr8WNI18pY5DdJNSjlydTuoUduFWAZax2JENEAQB7l1CocvX48WXXgJPByg/FjuqtFvXgS00FcO9UwjHqyObIVPKoNPlSh3DLtwqdjzGjmyF3E0F1wfq4Zf167Fq1Sqp49gNFjuqtMWLF2Pz5s1w7RQCmQuHSiAbIhNgLuO6z/T/Sq6PzS9mZEM0EbXgElELL415CSkpKVLHsQssdlQpV69excuvvAKXRn7QhHpLHYeoNPHmeJV0byWvE3d5kY1xfzAExRYjRrwwgrtky4HFju6b1WrFsOHDYZaLcH+gntRxiG4nilCw2JULix3ZKplGCdfOIdi2dRsWLlwodRybx2JH923+/PnYt3cv3B6qx0uGkU0SRUAu5+9medy6ag97HdkidT0vuDT2x4TXJvBqMvfAYkf3JSUlBW+//TZcGvtDVcdT6jhEdyaKUCi4xa48SrbYWdnsyDa5dwiGRQ6MGz9O6ig2jcWO7ssrr74KIyxwjw6WOgrR3VlFHmNXTtwVS7ZOplLApUNdbPxjIzZs2CB1HJvFYkcVtnnzZqxftw4uHepApuZuLrJdosUKVxcOll0eLi4uAG6+ZkS2Sh3mDU2oD14aO4aDj98Fix1VSGFhIV4c8xI0wV7QhNeSOg5RmQSjCF9fDphdHp6enhAEAdZiDg9DtksQBLg/UA9ZN7Lw3nvvSR3HJrHYUYXMmDEDqakpcHuQAxGT7RNMVvj4+Egdwy7IZDJ4eGohGsxSRyEqk9xDDZc2Qfjq668RFxcndRybw2JH5Xb69Gl8/vnn0LSqDYWnRuo4RPdkLTaz2FWAt7c3rCx2ZAdcmwVAVcsN/xn1H1itPHzgf7HYUbmIoohXJ0yAQquBW8vaUschKhdzkZHFrgJq+fiw2JFdEOQyuD4QjPi4ePz0009Sx7EpLHZULn/++Sd2xsZC074OBDl/bcj2iWYrLCYzatXisaDl5e/nD7GYxY7sgyrQAy4RtfDWpLdRUFAgdRybwU9ouieTyYRXX5sATV0vqEO8pI5DVC7WYhMAcItdBfj6+kJm5HAnZD/c2gfjxo0b+PTTT6WOYjNY7OievvvuO1y+dBmu0XV5wgTZDUueAQAQEhIicRL7Ua9ePVjzjVLHICo3uYcammb++OTTT5CUlCR1HJvAYkdlysnJwbvvvQuXRn5Q+rpJHYeo3G4Vu9DQUGmD2JGwsDAY8go5lh3ZFbfWQbDKBUyePFnqKDaBxY7K9MEHHyCvIB9u7epIHYWoQix5BvjUqgU3N34hKa+wsDBABCzcakd2RKZSQBNVG8uXL8fRo0eljiM5Fju6q8TERHz99dfQtAyE3FUldRyiCrHoDTeLCpXbrdfr1tZOInvh0sgPal93vPHmm1JHkRyLHd3VBx98AEEth2vzQKmjEFVcgRkNIiKkTmFXgoODIZPJYNGz2JF9EWQCNFG1sXfPHuzevVvqOJJisaM7SkhIwKJFi6BuHgCZkhdRJ/sj5hu5xa6ClEolAoNqw5JXLHUUogpTh3hD4++Bqe9OhSg679ndLHZ0RzNnzoTMRQnXJv5SRyGqMKvRAoOuEI0aNZI6it1p0rgxrLksdmR/BEGApk1t7P9rP3bu3Cl1HMmw2NFtLl++jKU/LYWmRQAEbq0jO2TOLgQAtGzZUuIk9qd1q9YQc3nyBNknVT0vaAK1eGfKO0671Y7Fjm7z/vvvQ+Gqhktjbq0j+2S+UQi5Qo7GjRtLHcXutGzZEobcAl5ajOzSra12Rw4fwdatW6WOIwkWOyrlwoULWLFyJdQt/CEo+OtB9sl8oxANGzaEWq2WOordubWV03yjUOIkRPdHVdcTmtqemDJ1ilNuteMnN5Xy+eefQ+Gqgkskt9aR/RJzDGgb1VbqGHapUaNGUKpULHZktwRBgKZ1IOKOx2HPnj1Sx6lxLHZUIj09HUt/+gnqJr7cWkd2S7SKMGUX8Pi6+6RUKtG4cSRMLHZkx1R1PaH2dcennznfNWT56U0l5s6dCyuscGkcIHUUovtm0RXDYjSz2FVC26i2QA7HsiP7JQgC1M398efmP3H27Fmp49QoFjsCABQWFuLrb76GqmEtyDQKqeMQ3TdjWh5kMhnat28vdRS71bFjRxgy82A18gQKsl+a8FpQebjgiy++kDpKjWKxIwDAkiVLoNfp4carTJCdM6XmoVnz5tBqtVJHsVudO3eGKIowpeVLHYXovglyGVRNfLFs2TKkpaVJHafGsNgRLBYLPv38M2jq+0Cu1Ugdh6hSxMwiPPLww1LHsGsNGzaEj28tmNLypI5CVCkujf1hlQHffvut1FFqDIsdYdOmTbiWcBUuLbi1juybJd8AQ24BOnfuLHUUuyYIArp0fgiW9AKpoxBVikytgLphLXw791sUFzvHFVVY7AjzF8yHJkALpb+71FGIKsX43y1MLHaV16VLFxgz8iFarFJHIaoUlyb+0OXqsH79eqmj1AgWOyeXmJiIrVu2QtmoltRRiCrNlJqH+hHh8PfnOIyV1blzZ1jNFpgyuNWO7JvCywWaul6Yv2C+1FFqBIudk/vxxx8hVymgiWCxI/tnTStAzKNdpY7hEFq2bAkPrQeMyTqpoxBVmrqRL/b/tR/nz5+XOkq1Y7FzYmazGQu+/w7KcG/IlHKp4xBVillXDEN2AXr37i11FIcgl8vRs0dPWJJ4AgXZP3WYN5Suanz//fdSR6l2LHZObPPmzchIS4dLY+62IvtnuJYDpVKJrl25xa6q9O3bF8XpelgKjVJHIaoUQS6DMsIHixYvcviTKFjsnNiC7xbcPGnC103qKESVZk7So8vDXeDuzpOAqkqvXr0gCAKMidwdS/bPpbGfU5xEwWLnpNLT02+eNNHQR+ooRJVmNVlgTNGjX99+UkdxKH5+fohqGwXjdRY7sn8KLxdogjyxZMkSqaNUK7srdnPnzkVoaCg0Gg2io6Nx5MiRMudfu3YtIiMjodFo0Lx5c2zevLnU/aIo4r333kPt2rXh4uKCmJgYXLp0qTqfgk1Yu3YtRACa+ix2ZP+MSTpYLVb06dNH6igO57F+j8GcouewJ+QQlOHe2LlrJzIyMqSOUm0qXOyGDx+OvXv3VkeWe1q9ejUmTpyIadOmIS4uDi1btkSPHj3uuoIOHDiAIUOGYOTIkYiPj0f//v3Rv39/nD59umSeTz/9FF9//TUWLFiAw4cPw83NDT169HD4ffArVq6AOtgLMo1S6ihElWZIzEVEgwiEh4dLHcXh9O3bF+ZiE69CQQ5BE+YDUQTWrVsndZRqU+Fip9PpEBMTgwYNGuCjjz5CcnJydeS6o9mzZ2PUqFEYMWIEmjRpggULFsDV1RWLFi264/xfffUVevbsiTfffBONGzfGzJkz0aZNm5JLi4iiiC+//BJTp07F448/jhYtWuCnn35CSkoKNmzYUGPPq6YlJibi0MFDUNX3ljoKUaWJFiss1/QYOGCg1FEcUqtWrVAnuC6Kr2RLHYWo0mQuSqjremL5iuVSR6k2FS52GzZsQHJyMsaMGYPVq1cjNDQUvXr1wrp162AymaojIwDAaDTi+PHjiImJKZkmk8kQExODgwcP3nGZgwcPlpofAHr06FEyf0JCAtLS0krN4+npiejo6Ls+JgAYDAbo9fpSN3uyevVqyJVyqENZ7Mj+GZP1MBUZMGTIEKmjOCRBEPDsM0Nhvqbj7lhyCKpwbxw8cBDXr1+XOkq1uK9j7Pz8/DBx4kScPHkShw8fRkREBJ577jkEBQXhtddeq5Zj1LKysmCxWBAQEFBqekBAANLS0u64TFpaWpnz3/pvRR4TAGbNmgVPT8+SW3BwcIWfj5SWrVgOZbAXZCqOXUf2z3D5Bho2aoTmzZtLHcVhDRkyBKZCA4zJ9vUlluhO1KHekCvlWL16tdRRqkWlTp5ITU3F9u3bsX37dsjlcvTu3RunTp1CkyZNMGfOnKrKaHMmT54MnU5XcrOn1n/x4kWcOvk31OE8aYLsn2i2wpSow7NDh0IQBKnjOKwWLVogokEDFF+5IXUUokqTqRRQBnti+coVUkepFhUudiaTCevXr0ffvn0REhKCtWvXYsKECUhJScHSpUuxY8cOrFmzBjNmzKjSoL6+vpDL5UhPTy81PT09HYGBgXdcJjAwsMz5b/23Io8JAGq1GlqtttTNXvz+++83d8MGe0odhajSDIk5MBtMGDx4sNRRHJogCHh26H93x5q5O5bsnyrUGyfjT9ToeQI1pcLFrnbt2hg1ahRCQkJw5MgRHDt2DC+99FKpcvPII4/Ay8urKnNCpVIhKioKsbGxJdOsVitiY2PRsWPHOy7TsWPHUvMDwPbt20vmDwsLQ2BgYKl59Ho9Dh8+fNfHtHd/bNwIZZAWAi8hRg7AcCUbLVu3QoMGDaSO4vAGDx4Ms8EEQ2Ku1FGIKk0d7AVBEPDnn39KHaXKVbjYzZkzBykpKZg7dy5atWp1x3m8vLyQkJBQ2Wy3mThxIhYuXIilS5fi3LlzGDNmDAoKCjBixAgAwLBhwzB58uSS+V999VVs2bIFX3zxBc6fP4/p06fj2LFjGD9+PICb30InTJiADz74AL///jtOnTqFYcOGISgoCP3796/y/FLT6XTYv/8vKLm1jhyA1WCGMVGHZ58ZKnUUp9CoUSO0aNUShsvcHUv2T6ZRQB2oxR8bN0odpcopKrrAc889Vx05yuXpp59GZmYm3nvvPaSlpaFVq1bYsmVLyckPiYmJkMn+v6s+8MADWLlyJaZOnYp33nkHDRo0wIYNG9CsWbOSed566y0UFBRg9OjRyM3NRadOnbBlyxZoNJoaf37Vbfv27bCYLVDX85I6ClGlFV/MggBp35Oczej/jMLLr7wMS4ERcjeV1HGIKkUR7IHt27fBYDBArVZLHafKCKIoilKHsHd6vR6enp7Q6XQ2fbzdiBEjsGrjengOaCJ1FKJKEUURul/Oom+XHg490Kityc3NRWDtQCib+8GtTR2p4xBViulGIbLXncK2bdvQrVs3qeOUqSI9w+4uKUb3x2q14veNf0BWhxdIJ/tnSs+HISsfL730ktRRnIqXlxeGDB4C48VscJsA2TuFjwtUWhds2rRJ6ihVisXOSZw4cQLZWTe4G5YcQvG5TNQLDcGjjz4qdRSn8+KLL8KoK4QxSSd1FKJKEQQB8joe2LjJsY6zY7FzEnv37oVMIYcygFvsyL5ZDWYYE7Ix5sWXSh1TSzUjOjoajZs2geF8ltRRiCpNFaTFlctXbhv2zJ7xXdFJ7N27F6oAdwhyrnKyb8WXsgAReP7556WO4pQEQcDYl8ag+Go2LAVGqeMQVYqytgcA4K+//pI4SdXhp7wTEEURu/fugdzfTeooRJUiWkUYz2bhif5PlDmIOFWvZ599FhqNBkVnM6SOQlQpcjcV1F5u2Ldvn9RRqgyLnRO4ePEicm5kl3wzIbJXhms5MOQU4I033pA6ilPz8vLCqP+MgvFcFkSTReo4RJUi+Ltg1+5dUseoMix2TmDv3r0QBIHH15HdM5zOQMcHOiI6OlrqKE5vwoQJsBhMKLrIY+3IvikDPXD61Gno9Xqpo1QJFjsnsG/fPqj9PSBTVXg8aiKbYUzLQ3GKDm+/9bbUUQg3L8k4YMAAGE9nQrRy6BOyX6raHrBarThw4IDUUaoEi50T2H/wAARfF6ljEFVK8al0hIXXR79+/aSOQv/15ptvwpBbAMPVHKmjEN03uacGSlc1Dh8+LHWUKsFi5+AKCgqQcOUfKH1dpY5CdN/MumIUJdzA22++xSFObEi7du3wYKdOMJzmSRRkvwRBgNzHBSdOnJA6SpXgO6SDO336NERRhKIWix3Zr8K/U+Hj44Nhw4ZJHYX+ZdLbb6M4VQdjqmMcn0TOSeatwfH4OKljVAkWOwd38uRJCIIAhTeLHdknS54BhgtZeOP1N+DiwkMKbE3v3r3RtFlTFMWlSh2F6L4parni+rVEhziBgsXOwZ08eRJqHzcICq5qsk8F8Snw9PTEyy+/LHUUugOZTIaZM2aiOCkXxhT7/1Ak53Rrr9apU6ckTlJ5/LR3cHHxcYC3WuoYRPfFoi9G8YUsvDP5Hbi7c7geW9W/f3+0aNkCRXEpEEWeIUv2R+HtAplchpMnT0odpdJY7ByYKIr4++9TUPhwNyzZp4L4FNSq5YOxY8dKHYXKIAgCPvzgQxQn62BM5lY7sj+CXAaVjxuLHdm2zMxMFBYUQO6pkToKUYWZdcUovpiFKe9Mgasrv5zYuj59+qBNVBsUx6Vyqx3ZJdFdgUuXLkkdo9JY7BxYQkICAECu5a5Ysj+Fccnw8/PDiy++KHUUKoeSrXapOhiv66SOQ1Rhcg8NLv9zReoYlcZi58BKip0Hix3ZF9ONAhRduoF3p77LM2HtSI8ePRDdoQOKjqXwahRkd+RaNVKSk2Gx2Pf1j1nsHFhCQgKULirI1LyUGNkPURRReCgJ9cPrc2udnREEAXNmz4YhMw/FFzOljkNUIXIPNSxmC5KSkqSOUiksdg7s6tWrUHjw+DqyL8bEXBQn5eLL2XOgVCqljkMV1LFjRzz99NMoOp4Kq8m+t3yQc7l12NLVq1elDVJJLHYO7Mo/V2B149Y6sh+ixYqiI8no8vDD6Nu3r9Rx6D598skngNGKwhMpUkchKje5+81id+swJnvFYufAEq9fh9xNJXUMonIrOpcBY04hvvrySwiCIHUcuk8hISF44/XXUXwqHZZ8g9RxiMpFUMigctdwVyzZruwbNyBouMWO7IPVYEZxXBpGjBiBli1bSh2HKmnSpEnw8vRCwRH7/pAk5yLTKJGdnS11jEphsXNQoihCl6uDTC2XOgpRueQfS4JSJseHH34odRSqAlqtFrM+moWiS1kwpuVJHYeoXASVnMWObFNBQQHMZjNkGh58TrbPlFmA4jMZmD5tOgIDA6WOQ1XkhRdeQKvWrVB44DpEi1XqOET3ZFUKuHHjhtQxKoXFzkHd+sYhcIsd2TjRKqJw/zU0adoEEyZMkDoOVSG5XI4fFv4A440CFJ5KkzoO0T0Jajkys7KkjlEpLHYO6tY3DhmPsSMbV3QmHYaMfPyw8AcOb+KAoqKi8Oorr6AoPhWWPJ5IQbZNplEg64Z9j8HIYuegcnJyAACCisWObJcl34Ci4yl48cUX0aFDB6njUDWZMWMG/Hz9kL8/kdeRJZsmqBTIzcmVOkalsNg5KJPJBAAQ5BwygmxXwcHr8Pb0wqxZs6SOQtXIw8MD8+fOQ/G1bBgScqSOQ3RXglyAyWyWOkalsNg5qJJr3XEsMLJRhqs5KPrnBr75+ht4eXlJHYeqWf/+/dHvsX4oOpQEq8G+PzjJgQkCrLxWLNmi/y920uYguhNrsRmF+xPRo2cPDBo0SOo4VEPmfjsXCqsM+QcTpY5CdGcCYLHzM7hZ7BzUrWLH0fvJFuXvvwaNXIVFPy7i76gTCQ4OxrfffIOiC5kwXOUuWbI9giDAauUWO7JB3BVLtqr48g0UXc7CgvkLEBQUJHUcqmHPP/88evfujYK/EmEtMkkdh6g0AbByix3ZIqv1v7+Y7HVkQywFRhQeSMSAgQMxePBgqeOQBARBwI8//gg3lQb5f13jWbJkWwQBFiuLHdkgtVoNABAtfNMk2yCKIvL3XYWnuxYL5s/nLlgnFhgYiO+/+x5F/9xA8WX7HuWfHItosUKtVkkdo1JY7ByUh4cHAEA02fexAuQ4is5novhaDhYvWgxfX1+p45DEnnrqKQwePBiFB67Dks+Bi8k2iCYL3NzcpI5RKSx2Dqqk2BlZ7Eh65pwiFB66jhdeeAF9+/aVOg7ZiLlz56KWtw/yd1+FaOXeBZKeaLTA/b+fn/aKxc5BcYsd2QrRZEH+zn8QUT8cX3/9tdRxyIb4+PhgzarVMKbqUXA8Seo4RBBN1pLPT3vFYuegWOzIVuQdSATyTVi/br3d7+KgqvfQQw9h5syZKIhPhSFJJ3UccnKiyQJPrVbqGJXCYuegtP/9xbSy2JGEii5moeh8BubPm4+mTZtKHYds1KRJkxDTtSsKdifAUmCUOg45MdFkgZenl9QxKoXFzkG5ublB46KBtZDjRJE0zDlFKNh/Dc899xyef/55qeOQDZPJZFixYgW83T2RvzuBx9uRZIRiKwIDA6WOUSl2U+yys7MxdOhQaLVaeHl5YeTIkcjPzy9zmeLiYowbNw61atWCu7s7BgwYgPT09FLzCIJw223VqlXV+VRqhCAIqFO3Lqz5/PZLNe/WcXX1Q8Mwb948Dm1C9+Tv7481q9fAkKJHwfFkqeOQk7LmG1GvXj2pY1SK3RS7oUOH4syZM9i+fTs2btyIvXv3YvTo0WUu89prr+GPP/7A2rVrsWfPHqSkpODJJ5+8bb7FixcjNTW15Na/f/9qehY1Kyw0FBYWO6phoigib+9VyAotWL9uPdzd3aWORHaiS5cumPH++yiIS0YxLzlGNUw0W2EsKLb7YqeQOkB5nDt3Dlu2bMHRo0fRtm1bAMA333yD3r174/PPP7/jZYl0Oh1+/PFHrFy5Eo8++iiAmwWucePGOHToEDp06FAyr5eXl91ver2T0JBQ7D91VOoY5GQKT6ai6HIWVq9ejebNm0sdh+zMO++8g2PHj2Pjn5ugeEwNhY+r1JHISdw6vtPei51dbLE7ePAgvLy8SkodAMTExEAmk+Hw4cN3XOb48eMwmUyIiYkpmRYZGYl69erh4MGDpeYdN24cfH190b59eyxatMhhLnFTr149WPI48CfVHMO1HOQfScKUKVMwaNAgqeOQHZLJZFi+bBkaRjRA/vZ/YC02Sx2JnMStz0t7L3Z2scUuLS0N/v7+paYpFAr4+PggLS3trsuoVCp4eXmVmh4QEFBqmRkzZuDRRx+Fq6srtm3bhrFjxyI/Px+vvPLKXfMYDAYYDP9fmPR6/X08q+oXEhICY0ExRJMFglIudRxycOacIuTvSkCfPr0xY8YMqeOQHXN3d8emPzaiTVQb5O28Am3PhhBkPE6Tqpf1v1dAqVu3rsRJKkfSLXaTJk2648kL/3s7f/58tWZ499138eCDD6J169Z4++238dZbb+Gzzz4rc5lZs2bB09Oz5BYcHFytGe9X48aNAdz8wCWqTlaDGfnbryA8rD5WrlgJmcwudgaQDQsLC8Mv63+BMUWP/IOJUschJ2DOLkJIWGjJtdbtlaTvvq+//jrOnTtX5q1+/foIDAxERkZGqWXNZjOys7PvemxcYGAgjEYjcnNzS01PT08v83i66OhoJCUlldoi92+TJ0+GTqcruV2/fr38T7oGNWvWDDK5DKYbhVJHIQcmWkXk7fwHaqscG//YWDKGIlFlPfLII/jqy69QeDoNRecz7r0AUSVYs4vRtk2U1DEqTdJdsX5+fvDz87vnfB07dkRubi6OHz+OqKibL/rOnTthtVoRHR19x2WioqKgVCoRGxuLAQMGAAAuXLiAxMREdOzY8a4/68SJE/D29i6zsavVarto9C4uLoho0ADXs3h2GVUPURSRt+8qTMl6/LFlCyIiIqSORA5m3LhxOHXqFBb+sBAyVxXU9bykjkQOSBRFmLML0aZNG6mjVJpdHGPXuHFj9OzZE6NGjcKCBQtgMpkwfvx4DB48uOSM2OTkZHTt2hU//fQT2rdvD09PT4wcORITJ06Ej48PtFotXn75ZXTs2LHkjNg//vgD6enp6NChAzQaDbZv346PPvoIb7zxhpRPt0q1i2qLxJ0bpY5BDqrgeDKKzmdg6dKlpU5UIqoqgiBg7ty5uJ50Hdt2bIesbySUfrw0HVUta74R5iIjWrVqJXWUSrObA2FWrFiByMhIdO3aFb1790anTp3w/fffl9xvMplw4cIFFBb+/27HOXPmoG/fvhgwYAAeeughBAYG4pdffim5X6lUYu7cuejYsSNatWqF7777DrNnz8a0adNq9LlVp1atWsF0o4AjuVOVKzyXgYLjyfjwww8xbNgwqeOQA1MoFFi7Zi1atWiJvG2XYdEXSx2JHIwpqwAAHKLYCaKjjO0hIb1eD09PT+h0Ops7vmjnzp3o2rUraj3VnONBUZUxXMuBbtslvDj6RV5ZgmpMZmYm2neIRmpuBrR9G0HmopQ6EjmIvMPXoUkyICsj0ybfzyrSM+xmix3dnw4dOkCpVMKYbJtDspD9MWXkI2/nP+jbty++/fZbm3wTJMfk5+eHHdu2w01QI2/bZYgmi9SRyEFY0/IR82hXh3g/Y7FzcK6uruj4wAMwpbDYUeWZcwqRt/UyolpHYdXPqyCXc3xEqlnh4eHYumUrBL0JebH/QLRYpY5Eds5qMMOQnodu3bpJHaVKsNg5gR7du8Ocms83QKoUc24R9JsvoUFYODZv2gRXV+7aJ2m0bdsWv234DebUfOhjr/C9jSrFmKKHKIoOcwIYi50TiImJgdlggimzQOooZKfM+mLkbb6E0KBg7Nq5C7Vq1ZI6Ejm5bt264Zf162G+rkfe7n94ghjdN2OyHiGhIQgNDZU6SpVgsXMCUVFRcPfwgDFJJ3UUskOWPAPyNl9CkF8gdu/afdvl/Yik0rdvX6xevRqGhBzk7UlwmOt8U80RRRHW1AL07NFT6ihVhsXOCcjlcvTr2xeWazzOjirGUmBE3p+X4O9ZC3t37ykZN5LIVjz55JNYsXwFii/fQN6+qyx3VCHm7CIYsvPRt29fqaNUGRY7J/HMM8+gOCuPlxejcrtV6rxdtNi7e4/NXhOZaPDgwVi8aBGKzmUgb/81ljsqt+LLWfD08kT37t2ljlJlWOycRPfu3eHp5Yniy1lSRyE7YMkzIG/jBXip3LFn126EhYVJHYmoTMOHD8f333+P4rMZN3fL8pg7ugdRFGFO0GHw04OhUqmkjlNlWOychEqlwtODnoY5Qcdvs1Qmc24R9H9cQICXHw7uP4CGDRtKHYmoXEaNGoWffvoJhss3kLeTZ8tS2Uzp+TDqCjFkyBCpo1QpFjsnMmTIEBh1hTCl50sdhWyU6UYh9BsvIqxOPRzcf4Bb6sjuPPvss1i/bj3MiXrot1+BaGa5ozsrvnwDAbUD0blzZ6mjVCkWOyfy0EMPoW69YBSdzZA6CtkgU3o+9BsvoEmDRvhr3188UYLsVv/+/bFp0yYgoxD6LZdgNfIKFVSa1WiB6XI2Rgx/HjKZY1Uhx3o2VCaZTIaJE16D4Uo2LAVGqeOQDTEk6aD78yLato7Cnt174OvrK3Ukokrp1q0btm/bDrnOjLw/L8JaZJI6EtmQ4guZEM1WjBs3TuooVY7FzsmMHDkSLi4uKDqTLnUUshFFFzKh+/MiHnnoYezYvh2enp5SRyKqEp06dcKe3bvhalJA/8cFmHXFUkciGyBaRRjPZuKpp55C3bp1pY5T5VjsnIxWq8XoUaNgPH+DF9B2cqIoIv9YEvS7/8ELI0Zg86ZNcHNzkzoWUZWKiorC0SNHUde3NvS/n4cxLU/qSCQxw7UcGHILMXHiRKmjVAsWOyf0yiuvwGIwoegihz5xVqLFirzdCSg4noxZs2Zh4cKFUCqVUsciqhb169fHkUOHER3VHrpNF1B85YbUkUgioijCcDoDHTp2RLt27aSOUy1Y7JxQWFgYBg0aBMPJdG61c0JWgxn6LZdgTsjFzz//jEmTJkEQBKljEVUrHx8f7Ni+HYMHPQ3djssoOJHCoZ+ckPG6DsUpOrwzebLUUaoNi52T+vDDD2EtMqHwVJrUUagG3RqjTp0vIjY2FoMHD5Y6ElGNUavVWL58OaZOnYr8w9eRt/cqx7pzIqJVRNHRZDzYqZNDXULs31jsnFT9+vUxbtw4FP+dzrPFnIThag50G86hrk8gjhw+4nBjNxGVhyAImDlzJpYsWQLzP7nQb7wAS75B6lhUA4ovZcGQlY8vPv/cofdSsNg5salTp0KtVCM/LlnqKFSNRFFE/tEk5G69iN49eyHu2HFeTYKc3vDhw7H/r7/gLXeHbsN5GFP0UkeiaiSarSiOS8XAgQMRHR0tdZxqxWLnxHx9fTF1yhQUn82EObtQ6jhUDawGM/RbL6MwPgUffPABfv3lV2i1WqljEdmEdu3a4URcPDpEtUfupgsoPJXG4+4cVMGJFFgKjZg1a5bUUaodi52TmzBhAho2bID8PVd50WwHY84uhP6381DmmLFp0yZMmTLF4UZYJ6osf39/7IyNxWsTJiDvwDXk7U7gSWUOxnSjAIXxqZg8aTIiIiKkjlPt+C7v5DQaDX5a+hOMWQUoPJkidRyqAqIoovBMOnI3nEV4UAji4+LQq1cvqWMR2SyFQoEvvvgCK1euhHg9D7oN52C6USB1LKoCosWKgj3XENk4Eu+++67UcWoEix2hffv2eOvNN1EYl8pdsnbOWmxC3vbLyPvrKkaNHIVjR48hPDxc6lhEdmHIkCGIOx6HBnXCkLvhHHfNOoCCE6kwZRdg2dKfoFKppI5TI1jsCAAwffp0hNevf3OXLE//t0vGZB10v5yFKseCDRs2YP78+XBxcZE6FpFdady4MY4eOYpXxr+MvAPXoN96iSMH2ClTZgGK4lMwedJkREVFSR2nxrDYEYCbu2RXrlgJa04x8v66xm+pdkS0WJF3OBE5my6gY1QHnDl9Bo8//rjUsYjslkajwZw5c7B582a4FciQ+8tZGK7nSh2LKsBaZEL+jito3ry50+yCvYXFjkq0bdsW3333HYrOZ6DoXIbUcagcTFkF0P12HoZTGfh41izE7tiBOnXqSB2LyCH06tULZ06fwSMPPoTczReg35sAq8EsdSy6B9EqIm/nP3BXuuD3336HWq2WOlKNYrGjUkaMGIFx48ah4EAijKm8WLatEs1W5B2+jpxfzyAioB4OHz6Mt99+G3K5XOpoRA4lICAAf27+E/PmzYOQmA/d+rMwXMuROhaVIf9QIkypefj1l19Rr149qePUOBY7us2cOXPQseMDyN/5D8z6Yqnj0L8Y0/Kg+/UcjGcyMeP9GYg7HudUx48Q1TSZTIYxY8bg3NlzePiBzsjdchH6nVd47J0NKjqfgcJTafjqq6/w0EMPSR1HEix2dBulUolf1q9H3YAg5G2+xMvt2AiryQL9/qvI+f0cmodH4uSJE5g6darTnOlFJLV69ephy59bsHTpUigzTMhdfwbFl2/wmGQbUXQ5C/q9V/HSSy9h7NixUseRDIsd3ZG/vz/27NoNf89aN8tdgVHqSE5LFEUUXcqCbu0ZWC/nYvYXX+DQwUNo0qSJ1NGInI4gCBg2bBguXriAfj37Qhd7Gfo/L3KoKIkV/5ONvF3/YNhzz2Hu3LkOfS3Ye2Gxo7sKDg7G3t174KXxQN6fPOVfCqbMAuj/uAD9zivo2703Lpy/gNdee43H0hFJLCAgAOvXrcOmTZtQW+WD7PWnod9/lSdXSMCQmIu8nVfw1MCnsGjRIqe/wo5zP3u6p7CwMOzdvQceMg30Gy/wmLsaYi0yQb8nAdm/nkGYdxB27tyJ9evWISQkROpoRPQ/evfujfNnz+GTjz+BkJCH3DWnUXg2g5dorCFFl7Og334Zffv2xfLly/mlFyx2VA4NGzbEgf0HUNvLH/rfz8OYzrNlq4tosqDgRApy1pyGMrUY337zDf4++TceeeQRqaMR0V2oVCq8+eabuHzpMoYMfBp5+xKg23AOhsRcHn9XTURRRH5cMvSxVzB0yDNYu2YtlEql1LFsAosdlUuDBg1w9PARtG3ZBvpNF1B85YbUkRyKaLGi8HQactacRvHxVLw4chSuXL6CcePGQaFQSB2PiMqhdu3aWLp0KQ4dOoTWEc2Q++cF6DdegDFFL3U0hyJarMjbnYCCo0mYOXMmli5dypPI/geLHZWbr68vdu3chUEDB0G34zLyj17n5ccqSbSKKDqfgdw1Z1Bw8DqeGfA0Ll26hG+//Ra+vr5SxyOi+xAdHY0D+/dj8+bNaOQfipw/zkG3+SJMGflSR7N7lnwD9JsvwpyQixUrVmDq1KlOfaLEnbDYUYWo1WqsWLECH374IYpOpt087k7H4+4qSrRYUXQhE7p1Z6Dfk4DHe/TBmTNnsGTJEoSGhkodj4gqSRAE9OrVC/Fx8Vi3bh1C3PyR/esZ6LddgimdBe9+FF++gdz1Z+EFV+zatQvPPPOM1JFskiDyAIBK0+v18PT0hE6ng1arlTpOjTl8+DCeHjIYSclJcOtYD5pGvvzmdA9WgxlF5zJgPJsFY14R+vbti5kzZ6JVq1ZSRyOiamSxWPDzzz/jvenTkHDlH2iCPKFuHgB1iBffN+/BajQjf38iii5mYtCgQViwYAG8vb2ljlWjKtIzWOyqgLMWOwDIy8vDq6++isWLF0MT4gO3DnWh8HKROpbNseQZUHgqDcaLNyBYgWHDhuH1119H48aNpY5GRDXIarXi999/xyeffopDBw9C7eMGVVN/uDT0haDgTrT/JYoiDAk5KDqSDIVZwIL58/Hss886ZRFmsathzlzsbvntt98w7uXxSE1JgaZpANzaBEGmdu6D/kWrCGOSDsUXMmG4mgMPDw+8PP5ljB8/HoGBgVLHIyKJHTx4EJ9+9hl+27ABClcVlBE+cIn045djAKYbBSg8mITi5Fz06t0L337zLerXry91LMmw2NUwFrubioqKMHv2bHzw4QewyABNm9pwaeQLQe5c30IteQYUXciE6VI2jPoiRDZpjHFjxuL555+Hu7u71PGIyMZcvnwZ33zzDZYsXQK9Tg9NkCdUjWpBE+YDQelc47JZCowoiEtG8blMhDeIwDdffY2ePXtKHUtyLHY1jMWutOTkZLz11ltYuXIlVB4uUDX1g0tjP8hUjrsFz2o0w5CYC+OlbBRfz4GLiyueHToU//nPf9CuXTun3HVARBVTXFyMX3/9Fd99/x327N4DhUYFZX0vaCJ8oQx0d+j3EXNOIQpPpsFw+Qbc3Nwxc8YMjB07lmPT/ReLXQ1jsbuzs2fP4rPPPsPy5csBuQBVY1+4Ng2A3F0tdbQqYTWYYbiaA+PVXBiv62C1WNA+uj1eHP0iBg0axK1zRHTfrly5gkWLFuGHRT8iIy0dKncN5PW00NT3gbK2FoLM/kueKIowpeah6FQ6iq9mwz8wAG++/gZGjx7Nz9J/cchil52djZdffhl//PEHZDIZBgwYgK+++qrMD8/vv/8eK1euRFxcHPLy8pCTkwMvL69KP+6/sdiVLTk5GV999RXmzpuHwsICaIK8oIrwhjrMx66OwxNFERZdMYzJepgSdTAk6SBarejQsQMGPTUITz75JC/5RURVymq14uDBg1i/fj1WrVmN1OQUKF3VUNTTQhXsBVUdrV29jwKAOacIxZezYP4nF4bcQjSMbITJb0/CM888w4GG78Ihi12vXr2QmpqK7777DiaTCSNGjEC7du2wcuXKuy7z5Zdforj45hhrkydPvmOxu5/H/TcWu/LR6/X45Zdf8NOyZdi9axcEuQyqYE+oQr2gquMJuZvt/UFbCowwJutgTNbDmlYAo74IMrkcDzzwAJ4eNAhPPPEE6tSpI3VMInICoiji6NGjWL9+PdasXYOrCVcBAdD4ayELdIOqjhaqQA+bOy5PFEWYbxTCmKSDOUGH4gw93D088PSgQRg6dCi6dOkCmcy5jsWuKIcrdufOnUOTJk1w9OhRtG3bFgCwZcsW9O7dG0lJSQgKCipz+d27d+ORRx65rdhV9nFvYbGruJSUFKxatQo/LV+Gk/EnAACaWu4QAt2gCtJCGegOmYuyRo8psRaZYLpRCHNWAcyZBRBzDDDkFAAAmjRtih7du6Nr16546KGH4OHhUWO5iIju5OrVq9i5cydiY2Oxdfs23MjMgkwhh8rXDYK3BgpfNyj9XKHwdq3RoVRE63/3bqToYUrRw5JaAFORAWqNGr169sJzzz2H3r17Q6PR1Fgme+dwxW7RokV4/fXXkZOTUzLNbDZDo9Fg7dq1eOKJJ8pc/m7F7n4f12AwwGAwlPxbr9cjODiYxe4+ZWZmYteuXTffnLZtxbWr1wAASlc15N4uELzUUPi4QuGlgcxVebPwqeQVLn2iKEI0WGDJM/z/TV8Ma74R0Blh0BUCAFzd3NC6dSu0a9sOHTp0wCOPPAJ/f/8qf95ERFVFFEWcPXsWu3btwrFjx3DoyGFcunARVqsVgkwGta87RHcF5B7q/79p1ZC7q++r9IlWEdZiM6xFJlgLjDBnF8KcXQTojDBmF8BqtkCukKNt27bo3u3ml+IOHTpArXaMY6xrWkWKnV3smE9LS7vtg1WhUMDHxwdpaWk1/rizZs3C+++/f98/l0rz8/PDoEGDMGjQIADAtWvXEBcXh1OnTuH06dOIP3kC/xz4B1aLpWQZmVIOpZsGgkYByAVAAEQBwK0bAMEMCGYrRKMFFoMZ5mITROv/X9vWxdUVIaEhaNAyApGRkYiKikKbNm0QHh7O3QJEZFcEQUDTpk3RtGnTkmmFhYU4deoU4uLiEB8fj4uXLuHKP1eQcvp6qfdTuVIBuUYJmUoBQSmDqBQgygWIoghBBAQRwH9vgtEKS5ERpgID/ne7kKubK5o1bYrWD7dCs2bN0KxZM7Rr1457NyQgabGbNGkSPvnkkzLnOXfuXA2lKb/Jkydj4sSJJf++tcWOqkZISAhCQkJKbTE1GAxISEhAeno60tPTkZaWVvL/xcXFMJvNMJvNsFgsMJvNsFqt8PT0vO3m5+eHsLAwhIaGolatWg49fAAROTdXV1dER0cjOjq61HSz2Yzk5GQkJCQgMTEROTk50Ol0pW75+flQKpVQKBQlN7lcDq1Wi8DAQAQEBJT8NygoCHXr1uX7qY2QtNi9/vrreP7558ucp379+ggMDERGRkap6WazGdnZ2ZUawf9+H1etVnNzcg1Tq9WIjIxEZGSk1FGIiOyaQqEo+QJNjkfSYufn5wc/P797ztexY0fk5ubi+PHjiIqKAgDs3LkTVqv1tm8iFVFdj0tEREQkBbs4kKhx48bo2bMnRo0ahSNHjmD//v0YP348Bg8eXHLmanJyMiIjI3HkyJGS5dLS0nDixAlcvnwZAHDq1CmcOHEC2dnZ5X5cIiIiInthF8UOAFasWIHIyEh07doVvXv3RqdOnfD999+X3G8ymXDhwgUUFhaWTFuwYAFat26NUaNGAQAeeughtG7dGr///nu5H5eIiIjIXtjFcCe2juPYERERUXWpSM+wmy12RERERFQ2FjsiIiIiB8FiR0REROQgWOyIiIiIHASLHREREZGDYLEjIiIichAsdkREREQOgsWOiIiIyEGw2BERERE5CBY7IiIiIgfBYkdERETkIFjsiIiIiBwEix0RERGRg2CxIyIiInIQLHZEREREDoLFjoiIiMhBsNgREREROQgWOyIiIiIHwWJHRERE5CBY7IiIiIgcBIsdERERkYNgsSMiIiJyECx2RERERA6CxY6IiIjIQbDYERERETkIFjsiIiIiB8FiR0REROQgFFIHcASiKAIA9Hq9xEmIiIjI0dzqF7f6RllY7KpAXl4eACA4OFjiJEREROSo8vLy4OnpWeY8glie+kdlslqtSElJgYeHBwRBkDpOtdHr9QgODsb169eh1WqljkN3wHVkH7iebB/XkX1wlvUkiiLy8vIQFBQEmazso+i4xa4KyGQy1K1bV+oYNUar1Tr0H5Aj4DqyD1xPto/ryD44w3q615a6W3jyBBEREZGDYLEjIiIichAsdlRuarUa06ZNg1qtljoK3QXXkX3gerJ9XEf2gevpdjx5goiIiMhBcIsdERERkYNgsSMiIiJyECx2RERERA6CxY6IiIjIQbDY0V1lZ2dj6NCh0Gq18PLywsiRI5Gfn1/m/C+//DIaNWoEFxcX1KtXD6+88gp0Ol0NpnY+FV1PAPD999/j4YcfhlarhSAIyM3NrZmwTmTu3LkIDQ2FRqNBdHQ0jhw5Uub8a9euRWRkJDQaDZo3b47NmzfXUFLnVZF1dObMGQwYMAChoaEQBAFffvllzQV1chVZTwsXLkTnzp3h7e0Nb29vxMTE3PNvz9Gw2NFdDR06FGfOnMH27duxceNG7N27F6NHj77r/CkpKUhJScHnn3+O06dPY8mSJdiyZQtGjhxZg6mdT0XXEwAUFhaiZ8+eeOedd2oopXNZvXo1Jk6ciGnTpiEuLg4tW7ZEjx49kJGRccf5Dxw4gCFDhmDkyJGIj49H//790b9/f5w+fbqGkzuPiq6jwsJC1K9fHx9//DECAwNrOK3zquh62r17N4YMGYJdu3bh4MGDCA4ORvfu3ZGcnFzDySUkEt3B2bNnRQDi0aNHS6b9+eefoiAIYnJycrkfZ82aNaJKpRJNJlN1xHR6lV1Pu3btEgGIOTk51ZjS+bRv314cN25cyb8tFosYFBQkzpo1647zDxo0SOzTp0+padHR0eKLL75YrTmdWUXX0f8KCQkR58yZU43p6JbKrCdRFEWz2Sx6eHiIS5cura6INodb7OiODh48CC8vL7Rt27ZkWkxMDGQyGQ4fPlzux9HpdNBqtVAoeFni6lBV64mqjtFoxPHjxxETE1MyTSaTISYmBgcPHrzjMgcPHiw1PwD06NHjrvNT5dzPOqKaVxXrqbCwECaTCT4+PtUV0+aw2NEdpaWlwd/fv9Q0hUIBHx8fpKWllesxsrKyMHPmzHvuFqT7VxXriapWVlYWLBYLAgICSk0PCAi46zpJS0ur0PxUOfezjqjmVcV6evvttxEUFHTbFydHxmLnZCZNmgRBEMq8nT9/vtI/R6/Xo0+fPmjSpAmmT59e+eBOpqbWExGRo/r444+xatUq/Prrr9BoNFLHqTHcP+ZkXn/9dTz//PNlzlO/fn0EBgbednCq2WxGdnb2PQ8czsvLQ8+ePeHh4YFff/0VSqWysrGdTk2sJ6oevr6+kMvlSE9PLzU9PT39ruskMDCwQvNT5dzPOqKaV5n19Pnnn+Pjjz/Gjh070KJFi+qMaXNY7JyMn58f/Pz87jlfx44dkZubi+PHjyMqKgoAsHPnTlitVkRHR991Ob1ejx49ekCtVuP33393qm9JVam61xNVH5VKhaioKMTGxqJ///4AAKvVitjYWIwfP/6Oy3Ts2BGxsbGYMGFCybTt27ejY8eONZDY+dzPOqKad7/r6dNPP8WHH36IrVu3ljr+2GlIffYG2a6ePXuKrVu3Fg8fPiz+9ddfYoMGDcQhQ4aU3J+UlCQ2atRIPHz4sCiKoqjT6cTo6GixefPm4uXLl8XU1NSSm9lsluppOLyKridRFMXU1FQxPj5eXLhwoQhA3Lt3rxgfHy/euHFDiqfgcFatWiWq1WpxyZIl4tmzZ8XRo0eLXl5eYlpamiiKovjcc8+JkyZNKpl///79okKhED///HPx3Llz4rRp00SlUimeOnVKqqfg8Cq6jgwGgxgfHy/Gx8eLtWvXFt944w0xPj5evHTpklRPwSlUdD19/PHHokqlEtetW1fqMygvL0+qp1DjWOzorm7cuCEOGTJEdHd3F7VarThixIhSfxwJCQkiAHHXrl2iKP7/0Bl3uiUkJEjzJJxARdeTKIritGnT7rieFi9eXPNPwEF98803Yr169USVSiW2b99ePHToUMl9Xbp0EYcPH15q/jVr1ogNGzYUVSqV2LRpU3HTpk01nNj5VGQd3fo7+vetS5cuNR/cyVRkPYWEhNxxPU2bNq3mg0tEEEVRrLntg0RERERUXXhWLBEREZGDYLEjIiIichAsdkREREQOgsWOiIiIyEGw2BERERE5CBY7IiIiIgfBYkdERETkIFjsiIiIiBwEix0RERGRg2CxIyIiInIQLHZERDUgMzMTgYGB+Oijj0qmHThwACqVCrGxsRImIyJHwmvFEhHVkM2bN6N///44cOAAGjVqhFatWuHxxx/H7NmzpY5GRA6CxY6IqAaNGzcOO3bsQNu2bXHq1CkcPXoUarVa6lhE5CBY7IiIalBRURGaNWuG69ev4/jx42jevLnUkYjIgfAYOyKiGnTlyhWkpKTAarXi6tWrUschIgfDLXZERDXEaDSiffv2aNWqFRo1aoQvv/wSp06dgr+/v9TRiMhBsNgREdWQN998E+vWrcPJkyfh7u6OLl26wNPTExs3bpQ6GhE5CO6KJSKqAbt378aXX36JZcuWQavVQiaTYdmyZdi3bx/mz58vdTwichDcYkdERETkILjFjoiIiMhBsNgREREROQgWOyIiIiIHwWJHRERE5CBY7IiIiIgcBIsdERERkYNgsSMiIiJyECx2RERERA6CxY6IiIjIQbDYERERETkIFjsiIiIiB8FiR0REROQg/g8O8+meLNL0zwAAAABJRU5ErkJggg==",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# parameters for the first nanodisk\n",
    "x0_1 = -px / 4\n",
    "y0_1 = 0\n",
    "alpha_1 = -alpha\n",
    "\n",
    "# parameters for the second nanodisk\n",
    "x0_2 = px / 4\n",
    "y0_2 = 0\n",
    "alpha_2 = alpha\n",
    "\n",
    "# create the nanodisk structures\n",
    "n = 100\n",
    "nanodisk_1 = td.Structure(\n",
    "    geometry=td.PolySlab(\n",
    "        vertices=ellipse_vertices(x0_1, y0_1, dx, dy, n, alpha_1), axis=2, slab_bounds=(0, h)\n",
    "    ),\n",
    "    medium=silicon,\n",
    ")\n",
    "\n",
    "nanodisk_2 = td.Structure(\n",
    "    geometry=td.PolySlab(\n",
    "        vertices=ellipse_vertices(x0_2, y0_2, dx, dy, n, alpha_2), axis=2, slab_bounds=(0, h)\n",
    "    ),\n",
    "    medium=silicon,\n",
    ")\n",
    "\n",
    "# plot the nanodisk structures to verify\n",
    "ax = nanodisk_1.plot(z=h / 2)\n",
    "nanodisk_2.plot(z=h / 2, ax=ax)\n",
    "ax.set_xlim(-px / 2, px / 2)\n",
    "ax.set_ylim(-py / 2, py / 2)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "82670799-87f7-469a-aeea-0cb64dc05455",
   "metadata": {},
   "source": [
    "### Create the Substrate and Monitor\n",
    "\n",
    "Next we create the Pyrex substrate as a simple [Box](https://docs.flexcompute.com/projects/tidy3d/en/latest/api/_autosummary/tidy3d.Box.html). "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "aeea68f4-729b-407e-960c-cd4b72af968b",
   "metadata": {},
   "outputs": [],
   "source": [
    "# create the substrate structure\n",
    "inf_eff = 1e2\n",
    "substrate = td.Structure(\n",
    "    geometry=td.Box.from_bounds(rmin=(-inf_eff, -inf_eff, -inf_eff), rmax=(inf_eff, inf_eff, 0)),\n",
    "    medium=pyrex,\n",
    ")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "32493be2-81f7-4874-a9be-88ff4759fef1",
   "metadata": {},
   "source": [
    "To measure the transmission spectrum, we add a [FluxMonitor](https://docs.flexcompute.com/projects/tidy3d/en/latest/api/_autosummary/tidy3d.FluxMonitor.html) below the nanodisks. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "4f1f4e45-9190-4af5-8fc5-8f31f52f664a",
   "metadata": {},
   "outputs": [],
   "source": [
    "# create a flux monitor to measure the transmission spectrum\n",
    "monitor_z = -1  # monitor z position\n",
    "flux_monitor = td.FluxMonitor(\n",
    "    center=[0, 0, monitor_z], size=[td.inf, td.inf, 0], freqs=freqs, name=\"flux\"\n",
    ")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "0d544287-cd48-4bc4-ad24-706e9628ed1e",
   "metadata": {},
   "source": [
    "### Create Simulation at Given Incident Angle\n",
    "\n",
    "To facilitate parameter sweeping of the incident angle of the plane wave, we first define a `make_sim(theta)` function that takes the incident angle as input and creates a tidy3d [Simulation](https://docs.flexcompute.com/projects/tidy3d/en/latest/api/_autosummary/tidy3d.Simulation.html) object. In this function, we will create a [PlaneWave](https://docs.flexcompute.com/projects/tidy3d/en/latest/api/_autosummary/tidy3d.PlaneWave.html) source with `angle_theta` set to the incident angle. Importantly, we set `angular_spec=td.FixedAngleSpec()`, which means we will use the fixed angle plane wave source instead of a constant in-plane wavevector source. When this is used, the boundary condition in the $x$ and $y$ directions needs to be periodic instead of bloch. In the $z$ direction, we will simply use the PML boundary. If the simulations diverge, we can use the absorber boundary condition instead. When the absorber is used, it's recommended to use a larger number of layers to effectively minimize the undesired artificial reflection.\n",
    "\n",
    "To visualize the simulation setup, we create a dummy simulation and plot it in 3D."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "6fb22a1a-2129-4b3f-8986-e96af61c804d",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "\n",
       "    <div class=\"simulation-viewer\" data-width=\"800\" data-height=\"800\" data-simulation=\"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\" ></div>\n",
       "    <script>\n",
       "        \n",
       "        /**\n",
       "        * Simulation Viewer Injector\n",
       "        *\n",
       "        * Monitors the document for elements being added in the form:\n",
       "        *\n",
       "        *    <div class=\"simulation-viewer\" data-width=\"800\" data-height=\"800\" data-simulation=\"{...}\" />\n",
       "        *\n",
       "        * This script will then inject an iframe to the viewer application, and pass it the simulation data\n",
       "        * via the postMessage API on request. The script may be safely included multiple times, with only the\n",
       "        * configuration of the first started script (e.g. viewer URL) applying.\n",
       "        *\n",
       "        */\n",
       "        (function() {\n",
       "            const TARGET_CLASS = \"simulation-viewer\";\n",
       "            const ACTIVE_CLASS = \"simulation-viewer-active\";\n",
       "            const VIEWER_URL = \"https://tidy3d.simulation.cloud/simulation-viewer\";\n",
       "\n",
       "            class SimulationViewerInjector {\n",
       "                constructor() {\n",
       "                    for (var node of document.getElementsByClassName(TARGET_CLASS)) {\n",
       "                        this.injectViewer(node);\n",
       "                    }\n",
       "\n",
       "                    // Monitor for newly added nodes to the DOM\n",
       "                    this.observer = new MutationObserver(this.onMutations.bind(this));\n",
       "                    this.observer.observe(document.body, {childList: true, subtree: true});\n",
       "                }\n",
       "\n",
       "                onMutations(mutations) {\n",
       "                    for (var mutation of mutations) {\n",
       "                        if (mutation.type === 'childList') {\n",
       "                            /**\n",
       "                            * Have found that adding the element does not reliably trigger the mutation observer.\n",
       "                            * It may be the case that setting content with innerHTML does not trigger.\n",
       "                            *\n",
       "                            * It seems to be sufficient to re-scan the document for un-activated viewers\n",
       "                            * whenever an event occurs, as Jupyter triggers multiple events on cell evaluation.\n",
       "                            */\n",
       "                            var viewers = document.getElementsByClassName(TARGET_CLASS);\n",
       "                            for (var node of viewers) {\n",
       "                                this.injectViewer(node);\n",
       "                            }\n",
       "                        }\n",
       "                    }\n",
       "                }\n",
       "\n",
       "                injectViewer(node) {\n",
       "                    // (re-)check that this is a valid simulation container and has not already been injected\n",
       "                    if (node.classList.contains(TARGET_CLASS) && !node.classList.contains(ACTIVE_CLASS)) {\n",
       "                        // Mark node as injected, to prevent re-runs\n",
       "                        node.classList.add(ACTIVE_CLASS);\n",
       "\n",
       "                        var uuid;\n",
       "                        if (window.crypto && window.crypto.randomUUID) {\n",
       "                            uuid = window.crypto.randomUUID();\n",
       "                        } else {\n",
       "                            uuid = \"\" + Math.random();\n",
       "                        }\n",
       "\n",
       "                        var frame = document.createElement(\"iframe\");\n",
       "                        frame.width = node.dataset.width || 800;\n",
       "                        frame.height = node.dataset.height || 800;\n",
       "                        frame.style.cssText = `width:${frame.width}px;height:${frame.height}px;max-width:none;border:0;display:block`\n",
       "                        frame.src = VIEWER_URL + \"?uuid=\" + uuid;\n",
       "\n",
       "                        var postMessageToViewer;\n",
       "                        postMessageToViewer = event => {\n",
       "                            if(event.data.type === 'viewer' && event.data.uuid===uuid){\n",
       "                                frame.contentWindow.postMessage({ type: 'jupyter', uuid, value: node.dataset.simulation, fileType: 'hdf5'}, '*');\n",
       "\n",
       "                                // Run once only\n",
       "                                window.removeEventListener('message', postMessageToViewer);\n",
       "                            }\n",
       "                        };\n",
       "                        window.addEventListener(\n",
       "                            'message',\n",
       "                            postMessageToViewer,\n",
       "                            false\n",
       "                        );\n",
       "\n",
       "                        node.appendChild(frame);\n",
       "                    }\n",
       "                }\n",
       "            }\n",
       "\n",
       "            if (!window.simulationViewerInjector) {\n",
       "                window.simulationViewerInjector = new SimulationViewerInjector();\n",
       "            }\n",
       "        })();\n",
       "    \n",
       "    </script>\n",
       "    "
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "run_time = 1e-11  # simulation run time\n",
    "\n",
    "Lz = 3  # simulation domain size in z\n",
    "\n",
    "\n",
    "def make_sim(theta):\n",
    "    \"\"\"\n",
    "    Create a simulation with the plane wave incident at an angle theta\n",
    "\n",
    "    Parameter\n",
    "    ----------\n",
    "    theta : float\n",
    "        The incident angle of the plane wave\n",
    "\n",
    "    Returns\n",
    "    -------\n",
    "    sim : td.Simulation\n",
    "        A tidy3d simulation\n",
    "    \"\"\"\n",
    "\n",
    "    # create a plane wave source\n",
    "    source_z = 1  # source z position\n",
    "\n",
    "    # create an oblique plane wave source\n",
    "    plane_wave = td.PlaneWave(\n",
    "        center=[0, 0, source_z],\n",
    "        size=[td.inf, td.inf, 0],\n",
    "        source_time=td.GaussianPulse(freq0=freq0, fwidth=fwidth),\n",
    "        direction=\"-\",\n",
    "        angle_theta=theta,\n",
    "        angular_spec=td.FixedAngleSpec(),\n",
    "    )\n",
    "\n",
    "    # construct simulation\n",
    "    sim = td.Simulation(\n",
    "        size=(px, py, Lz),\n",
    "        grid_spec=td.GridSpec.auto(min_steps_per_wvl=25, wavelength=lda0),\n",
    "        structures=[substrate, nanodisk_1, nanodisk_2],\n",
    "        sources=[plane_wave],\n",
    "        monitors=[flux_monitor],\n",
    "        run_time=run_time,\n",
    "        boundary_spec=td.BoundarySpec(\n",
    "            x=td.Boundary.periodic(),\n",
    "            y=td.Boundary.periodic(),\n",
    "            z=td.Boundary.pml(),\n",
    "        ),\n",
    "    )\n",
    "\n",
    "    return sim\n",
    "\n",
    "\n",
    "# create a dummy simulation for visualization\n",
    "sim = make_sim(theta=np.deg2rad(20))\n",
    "sim.plot_3d()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "1535bd5a-f27f-4c61-8c7f-2f2fadd7cf84",
   "metadata": {},
   "source": [
    "Before running any simulations, we can inspect the grid around the nanodisks to ensure it's sufficiently fine. This is crucial to capture the accurate resonant behavior of the metasurface. In this case, we use the automatic nonuniform grid of 25 steps per wavelength, which results in about 10 nm minimal grid size."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "400cc333-d3b5-4ae5-bc06-9352df8bfc29",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "ax = sim.plot(z=h / 2)\n",
    "sim.plot_grid(z=h / 2, ax=ax)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "c86570cb-e33c-4685-8ab4-703e5ec7e66c",
   "metadata": {},
   "source": [
    "## Parameter Sweeping the Incident Angle\n",
    "\n",
    "We now proceed with a parameter sweep of the incident angle ranging from 0 to 16 degrees. For demonstration purposes, we conduct 17 simulations at 1-degree increments. However, to generate a smoother result, similar to Fig. 2 in the paper, a denser sampling of angles would be required.\n",
    "\n",
    "To perform the simulations in parallel, we construct a dictionary of simulations and subsequently create a [Batch](https://docs.flexcompute.com/projects/tidy3d/en/latest/api/_autosummary/tidy3d.web.api.container.Batch.html) object."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "5e2db74d-1e6e-4dba-97e6-82cb5ea8dcc8",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "dac3af9341dd4b73b30d6fd0ef0f5a41",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Output()"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"></pre>\n"
      ],
      "text/plain": []
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"color: #7fbfbf; text-decoration-color: #7fbfbf\">08:30:14 CEST </span>Started working on Batch containing <span style=\"color: #008080; text-decoration-color: #008080; font-weight: bold\">17</span> tasks.                     \n",
       "</pre>\n"
      ],
      "text/plain": [
       "\u001b[2;36m08:30:14 CEST\u001b[0m\u001b[2;36m \u001b[0mStarted working on Batch containing \u001b[1;36m17\u001b[0m tasks.                     \n"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"color: #7fbfbf; text-decoration-color: #7fbfbf\">08:30:30 CEST </span>Maximum FlexCredit cost: <span style=\"color: #008080; text-decoration-color: #008080; font-weight: bold\">5.072</span> for the whole batch.               \n",
       "</pre>\n"
      ],
      "text/plain": [
       "\u001b[2;36m08:30:30 CEST\u001b[0m\u001b[2;36m \u001b[0mMaximum FlexCredit cost: \u001b[1;36m5.072\u001b[0m for the whole batch.               \n"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"color: #7fbfbf; text-decoration-color: #7fbfbf\">              </span>Use <span style=\"color: #008000; text-decoration-color: #008000\">'Batch.real_cost()'</span> to get the billed FlexCredit cost after   \n",
       "<span style=\"color: #7fbfbf; text-decoration-color: #7fbfbf\">              </span>the Batch has completed.                                          \n",
       "</pre>\n"
      ],
      "text/plain": [
       "\u001b[2;36m             \u001b[0m\u001b[2;36m \u001b[0mUse \u001b[32m'Batch.real_cost\u001b[0m\u001b[32m(\u001b[0m\u001b[32m)\u001b[0m\u001b[32m'\u001b[0m to get the billed FlexCredit cost after   \n",
       "\u001b[2;36m              \u001b[0mthe Batch has completed.                                          \n"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "b8b8428cc7054d788358bc4857f1dfe7",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Output()"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"color: #7fbfbf; text-decoration-color: #7fbfbf\">08:41:10 CEST </span>Batch complete.                                                   \n",
       "</pre>\n"
      ],
      "text/plain": [
       "\u001b[2;36m08:41:10 CEST\u001b[0m\u001b[2;36m \u001b[0mBatch complete.                                                   \n"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"></pre>\n"
      ],
      "text/plain": []
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "69808049382a410ab6123b8021549ecc",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Output()"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"></pre>\n"
      ],
      "text/plain": []
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "theta_list = np.linspace(0, 16, 17)  # theta values for the parameter sweep\n",
    "\n",
    "# create a dictionary of simulations\n",
    "sims = {f\"theta={theta:.1f}\": make_sim(np.deg2rad(theta)) for theta in theta_list}\n",
    "\n",
    "# create and run a batch of simulations\n",
    "batch = web.Batch(simulations=sims)\n",
    "batch_results = batch.run(path_dir=\"data\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "2069d9e0-9830-418e-9fa6-e4ea73f25e6f",
   "metadata": {},
   "source": [
    "After the batch finished, we can check the actual cost of running the batch, which can often be significantly lower than the maximum cost due to early shutoff of the simulations."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "id": "2514154c-b39b-4ec8-a300-77f82afaa99b",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"color: #7fbfbf; text-decoration-color: #7fbfbf\">08:41:29 CEST </span>Total billed flex credit cost: <span style=\"color: #008080; text-decoration-color: #008080; font-weight: bold\">3.496</span>.                             \n",
       "</pre>\n"
      ],
      "text/plain": [
       "\u001b[2;36m08:41:29 CEST\u001b[0m\u001b[2;36m \u001b[0mTotal billed flex credit cost: \u001b[1;36m3.496\u001b[0m.                             \n"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "real_cost = batch.real_cost()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "8d0c5f3f-a82d-4dec-aac4-76ad59268902",
   "metadata": {},
   "source": [
    "## Extract and Visualize the Transmission Spectra\n",
    "\n",
    "To extract the transmission spectrum of from each simulation, we can do a quick list comprehension. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "id": "cf0aab50-f9bc-46cc-8f0a-978f553b1ae2",
   "metadata": {},
   "outputs": [],
   "source": [
    "T = np.array(\n",
    "    [np.abs(batch_results[f\"theta={theta:.1f}\"][\"flux\"].flux.values) for theta in theta_list]\n",
    ")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "6a66448b-4544-4a54-b82c-c1dbdc58f616",
   "metadata": {},
   "source": [
    "Next, we plot the transmission as a function of wavelength and incident angle as a false-color map. Here we can clearly see the dispersion of the electric dipole (ED) qBIC mode. Compared to Fig. 2(a) in the referenced paper, the qBIC feature in our results appears slightly less prominent. This discrepancy comes from the difference in the silicon refractive index used, which has a slightly higher loss in this notebook compared to that reported in the paper."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "id": "3150ef46-fa95-4ebc-8583-8014880adcd5",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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FX09vyfGCV+Ib0YmyOMGeY6sgfLJHeJsRa9Mj8U4WPyBSv96PAD5753099yQeOuEiIiIDMZSKhqm9A8CERERlTK8okFERGQEMhTvv33pLSdTxYoGERGRERT31gmfOiEiIiKLxysaRERERlDcfjTM5UoBKxpERERGYCm3TljRICIiMgJLqWiYy5UXIiIiMkO8okFERGQEbKNBREREBsNbJ0RERETFxCsaRERERpB/QM2iYM+gREREpJGltNEwl3ISERGRGeIVDSIiIiMobmNQ3johIiIijXjrhIiIiKiYeEWDiIjICHjrhIiIiAyGFQ0iIiIyGEtpo2ExFY38NUdNB0das8yVTCtqj1ka8ksp8ivWo9iurSQ9T01e63zz1K1LWjZNpPml65FOS5eTyhBjihifivG2GI+JsZYYe4kxvIE8xl2Sx1Vi+gXJehTrz9aiXNYa8igoPu+i1voL+z6UJsX5r6okmMsPqiXQ9Luobp6U4rfPWYzVxPiBGD9W/IC8Kv4CbBGX6CsPO8WNiT8jeCjGoaPkMW2UN4CCvyPS3xNNv6d5AHIK2QfSncVUNIiIiExJcXsGNZd/fljRICIiMoLittEw9SuRCrwiSURERAbDKxpERERGwMagREREZDC8dVICDh06hC5dusDLywsymQzbtm3TmHfYsGGQyWRYunRpiZWPiIiIiseoFY20tDT4+/tj+fLlL833yy+/4Pjx4/Dy8iqhkhERERmWlR5e5sCot046deqETp06vTTPvXv3MGrUKOzevRudO3cuoZIREREZlqXcOjHpNhp5eXno378/Jk6ciIYNG2q1TGZmJjIzM5XTycnJhioeERERFcKkr7wsWLAANjY2GD16tNbLREZGws3NTfny9vY2YAmJiIiKxloPL3NgshWNM2fOYNmyZVi/fj1kMpnWy4WHhyMpKUn5SkhIMGApiYiIikaG4rXP0P4vo3GZbEXj8OHDePToEXx8fGBjYwMbGxvcuXMH48ePR/Xq1TUuZ29vD1dXV5UXERGRqbGUKxom20ajf//+CA4OVkkLCQlB//79MWjQICOVioiIiHRh1IpGamoqrl+/rpy+desW4uLiUL58efj4+KBChQoq+W1tbeHp6Ym6deuWdFGJiIj0ik+dlIDTp0+jXbt2yumwsDAAQGhoKNavX2+kUhERERkeuyAvAW3btoUgCFrn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",
      "text/plain": [
       "<Figure size 640x480 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# plot the transmission as a false color image\n",
    "plt.pcolormesh(1e3 * ldas, theta_list, T, cmap=\"hot_r\", vmin=0, vmax=1)\n",
    "plt.xlabel(\"Wavelength (nm)\")\n",
    "plt.ylabel(\"Incident angle (degree)\")\n",
    "\n",
    "# add text label and arrow in the plot\n",
    "x_point = 840\n",
    "y_point = 8\n",
    "plt.annotate(\n",
    "    \"ED-qBIC\",\n",
    "    xy=(x_point, y_point),\n",
    "    xytext=(x_point - 100, y_point + 3),\n",
    "    arrowprops=dict(linewidth=2, edgecolor=\"white\", arrowstyle=\"->\"),\n",
    "    fontsize=20,\n",
    "    color=\"white\",\n",
    ")\n",
    "\n",
    "plt.colorbar()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "510e7700-39c7-4d30-af51-5640cd4fd052",
   "metadata": {},
   "source": [
    "## Final Remarks\n",
    "\n",
    "This notebook aims to demonstrate how to perform broadband simulations with plane waves at a constant incident angle. It only explores one metasurface configuration and one polarization. Different geometries and polarizations can be studied in a similar fashion. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "f1670926-e49a-4b37-b1cd-889cae8e01d1",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "applications": [
   "Metamaterials, gratings, and other periodic structures"
  ],
  "description": "This notebook presents a simulation of the blocking properties of a metal oxide-based sunscreen using Tidy3D.",
  "feature_image": "./img/metasurface_qbic.png",
  "features": [
   "Parameter sweep",
   "Material fitting"
  ],
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "keywords": "metasurface, qBIC, quasi-bound states in the continuum, oblique incidence, Tidy3D, FDTD",
  "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.11.13"
  },
  "title": "Quasi-bound States in the Continuum (qBICs) in Symmetry-breaking Dielectric Metasurfaces | Flexcompute",
  "widgets": {
   "application/vnd.jupyter.widget-state+json": {
    "state": {
     "0777f44839d246abac7dedabe42cf1f9": {
      "model_module": "@jupyter-widgets/base",
      "model_module_version": "2.0.0",
      "model_name": "LayoutModel",
      "state": {
       "_model_module": "@jupyter-widgets/base",
       "_model_module_version": "2.0.0",
       "_model_name": "LayoutModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/base",
       "_view_module_version": "2.0.0",
       "_view_name": "LayoutView",
       "align_content": null,
       "align_items": null,
       "align_self": null,
       "border_bottom": null,
       "border_left": null,
       "border_right": null,
       "border_top": null,
       "bottom": null,
       "display": null,
       "flex": null,
       "flex_flow": null,
       "grid_area": null,
       "grid_auto_columns": null,
       "grid_auto_flow": null,
       "grid_auto_rows": null,
       "grid_column": null,
       "grid_gap": null,
       "grid_row": null,
       "grid_template_areas": null,
       "grid_template_columns": null,
       "grid_template_rows": null,
       "height": null,
       "justify_content": null,
       "justify_items": null,
       "left": null,
       "margin": null,
       "max_height": null,
       "max_width": null,
       "min_height": null,
       "min_width": null,
       "object_fit": null,
       "object_position": null,
       "order": null,
       "overflow": null,
       "padding": null,
       "right": null,
       "top": null,
       "visibility": null,
       "width": null
      }
     },
     "1337d6279c1c42d79334571cec3aff1e": {
      "model_module": "@jupyter-widgets/output",
      "model_module_version": "1.0.0",
      "model_name": "OutputModel",
      "state": {
       "_dom_classes": [],
       "_model_module": "@jupyter-widgets/output",
       "_model_module_version": "1.0.0",
       "_model_name": "OutputModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/output",
       "_view_module_version": "1.0.0",
       "_view_name": "OutputView",
       "layout": "IPY_MODEL_e33bec4b9c294fd38a1ac5ab5c691c2b",
       "msg_id": "",
       "outputs": [
        {
         "data": {
          "text/html": "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\">theta=0.0       → <span style=\"color: #008000; text-decoration-color: #008000\">success      </span> <span style=\"color: #729c1f; text-decoration-color: #729c1f\">━━━━━━━━━━━━━━━━━━━━━━━━━</span> <span style=\"color: #800080; text-decoration-color: #800080\">100%</span> <span style=\"color: #808000; text-decoration-color: #808000\">0:00:11</span>\ntheta=1.0       → <span style=\"color: #008000; text-decoration-color: #008000\">success      </span> <span style=\"color: #729c1f; text-decoration-color: #729c1f\">━━━━━━━━━━━━━━━━━━━━━━━━━</span> <span style=\"color: #800080; text-decoration-color: #800080\">100%</span> <span style=\"color: #808000; text-decoration-color: #808000\">0:00:11</span>\ntheta=2.0       → <span style=\"color: #008000; text-decoration-color: #008000\">success      </span> <span style=\"color: #729c1f; text-decoration-color: #729c1f\">━━━━━━━━━━━━━━━━━━━━━━━━━</span> <span style=\"color: #800080; text-decoration-color: #800080\">100%</span> <span style=\"color: #808000; text-decoration-color: #808000\">0:00:10</span>\ntheta=3.0       → <span style=\"color: #008000; text-decoration-color: #008000\">success      </span> <span style=\"color: #729c1f; text-decoration-color: #729c1f\">━━━━━━━━━━━━━━━━━━━━━━━━━</span> <span style=\"color: #800080; text-decoration-color: #800080\">100%</span> <span style=\"color: #808000; text-decoration-color: #808000\">0:00:10</span>\ntheta=4.0       → <span style=\"color: #008000; text-decoration-color: #008000\">success      </span> <span style=\"color: #729c1f; text-decoration-color: #729c1f\">━━━━━━━━━━━━━━━━━━━━━━━━━</span> <span style=\"color: #800080; text-decoration-color: #800080\">100%</span> <span style=\"color: #808000; text-decoration-color: #808000\">0:00:10</span>\ntheta=5.0       → <span style=\"color: #008000; text-decoration-color: #008000\">success      </span> <span style=\"color: #729c1f; text-decoration-color: #729c1f\">━━━━━━━━━━━━━━━━━━━━━━━━━</span> <span style=\"color: #800080; text-decoration-color: #800080\">100%</span> <span style=\"color: #808000; text-decoration-color: #808000\">0:00:10</span>\ntheta=6.0       → <span style=\"color: #008000; text-decoration-color: #008000\">success      </span> <span style=\"color: #729c1f; text-decoration-color: #729c1f\">━━━━━━━━━━━━━━━━━━━━━━━━━</span> <span style=\"color: #800080; text-decoration-color: #800080\">100%</span> <span style=\"color: #808000; text-decoration-color: #808000\">0:00:10</span>\ntheta=7.0       → <span style=\"color: #008000; text-decoration-color: #008000\">success      </span> <span style=\"color: #729c1f; text-decoration-color: #729c1f\">━━━━━━━━━━━━━━━━━━━━━━━━━</span> <span style=\"color: #800080; text-decoration-color: #800080\">100%</span> <span style=\"color: #808000; text-decoration-color: #808000\">0:00:09</span>\ntheta=8.0       → <span style=\"color: #008000; text-decoration-color: #008000\">success      </span> <span style=\"color: #729c1f; text-decoration-color: #729c1f\">━━━━━━━━━━━━━━━━━━━━━━━━━</span> <span style=\"color: #800080; text-decoration-color: #800080\">100%</span> <span style=\"color: #808000; text-decoration-color: #808000\">0:00:09</span>\ntheta=9.0       → <span style=\"color: #008000; text-decoration-color: #008000\">success      </span> <span style=\"color: #729c1f; text-decoration-color: #729c1f\">━━━━━━━━━━━━━━━━━━━━━━━━━</span> <span style=\"color: #800080; text-decoration-color: #800080\">100%</span> <span style=\"color: #808000; text-decoration-color: #808000\">0:00:09</span>\ntheta=10.0      → <span style=\"color: #008000; text-decoration-color: #008000\">success      </span> <span style=\"color: #729c1f; text-decoration-color: #729c1f\">━━━━━━━━━━━━━━━━━━━━━━━━━</span> <span style=\"color: #800080; text-decoration-color: #800080\">100%</span> <span style=\"color: #808000; text-decoration-color: #808000\">0:00:09</span>\ntheta=11.0      → <span style=\"color: #008000; text-decoration-color: #008000\">success      </span> <span style=\"color: #729c1f; text-decoration-color: #729c1f\">━━━━━━━━━━━━━━━━━━━━━━━━━</span> <span style=\"color: #800080; text-decoration-color: #800080\">100%</span> <span style=\"color: #808000; text-decoration-color: #808000\">0:00:08</span>\ntheta=12.0      → <span style=\"color: #008000; text-decoration-color: #008000\">success      </span> <span style=\"color: #729c1f; text-decoration-color: #729c1f\">━━━━━━━━━━━━━━━━━━━━━━━━━</span> <span style=\"color: #800080; text-decoration-color: #800080\">100%</span> <span style=\"color: #808000; text-decoration-color: #808000\">0:00:08</span>\ntheta=13.0      → <span style=\"color: #008000; text-decoration-color: #008000\">success      </span> <span style=\"color: #729c1f; text-decoration-color: #729c1f\">━━━━━━━━━━━━━━━━━━━━━━━━━</span> <span style=\"color: #800080; text-decoration-color: #800080\">100%</span> <span style=\"color: #808000; text-decoration-color: #808000\">0:00:08</span>\ntheta=14.0      → <span style=\"color: #008000; text-decoration-color: #008000\">success      </span> <span style=\"color: #729c1f; text-decoration-color: #729c1f\">━━━━━━━━━━━━━━━━━━━━━━━━━</span> <span style=\"color: #800080; text-decoration-color: #800080\">100%</span> <span style=\"color: #808000; text-decoration-color: #808000\">0:00:08</span>\ntheta=15.0      → <span style=\"color: #008000; text-decoration-color: #008000\">success      </span> <span style=\"color: #729c1f; text-decoration-color: #729c1f\">━━━━━━━━━━━━━━━━━━━━━━━━━</span> <span style=\"color: #800080; text-decoration-color: #800080\">100%</span> <span style=\"color: #808000; text-decoration-color: #808000\">0:00:07</span>\ntheta=16.0      → <span style=\"color: #008000; text-decoration-color: #008000\">success      </span> <span style=\"color: #729c1f; text-decoration-color: #729c1f\">━━━━━━━━━━━━━━━━━━━━━━━━━</span> <span style=\"color: #800080; text-decoration-color: #800080\">100%</span> <span style=\"color: #808000; text-decoration-color: #808000\">0:00:07</span>\n</pre>\n",
          "text/plain": "theta=0.0       → \u001b[32msuccess      \u001b[0m \u001b[38;2;114;156;31m━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[35m100%\u001b[0m \u001b[33m0:00:11\u001b[0m\ntheta=1.0       → \u001b[32msuccess      \u001b[0m \u001b[38;2;114;156;31m━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[35m100%\u001b[0m \u001b[33m0:00:11\u001b[0m\ntheta=2.0       → \u001b[32msuccess      \u001b[0m \u001b[38;2;114;156;31m━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[35m100%\u001b[0m \u001b[33m0:00:10\u001b[0m\ntheta=3.0       → \u001b[32msuccess      \u001b[0m \u001b[38;2;114;156;31m━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[35m100%\u001b[0m \u001b[33m0:00:10\u001b[0m\ntheta=4.0       → \u001b[32msuccess      \u001b[0m \u001b[38;2;114;156;31m━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[35m100%\u001b[0m \u001b[33m0:00:10\u001b[0m\ntheta=5.0       → \u001b[32msuccess      \u001b[0m \u001b[38;2;114;156;31m━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[35m100%\u001b[0m \u001b[33m0:00:10\u001b[0m\ntheta=6.0       → \u001b[32msuccess      \u001b[0m \u001b[38;2;114;156;31m━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[35m100%\u001b[0m \u001b[33m0:00:10\u001b[0m\ntheta=7.0       → \u001b[32msuccess      \u001b[0m \u001b[38;2;114;156;31m━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[35m100%\u001b[0m \u001b[33m0:00:09\u001b[0m\ntheta=8.0       → \u001b[32msuccess      \u001b[0m \u001b[38;2;114;156;31m━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[35m100%\u001b[0m \u001b[33m0:00:09\u001b[0m\ntheta=9.0       → \u001b[32msuccess      \u001b[0m \u001b[38;2;114;156;31m━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[35m100%\u001b[0m \u001b[33m0:00:09\u001b[0m\ntheta=10.0      → \u001b[32msuccess      \u001b[0m \u001b[38;2;114;156;31m━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[35m100%\u001b[0m \u001b[33m0:00:09\u001b[0m\ntheta=11.0      → \u001b[32msuccess      \u001b[0m \u001b[38;2;114;156;31m━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[35m100%\u001b[0m \u001b[33m0:00:08\u001b[0m\ntheta=12.0      → \u001b[32msuccess      \u001b[0m \u001b[38;2;114;156;31m━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[35m100%\u001b[0m \u001b[33m0:00:08\u001b[0m\ntheta=13.0      → \u001b[32msuccess      \u001b[0m \u001b[38;2;114;156;31m━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[35m100%\u001b[0m \u001b[33m0:00:08\u001b[0m\ntheta=14.0      → \u001b[32msuccess      \u001b[0m \u001b[38;2;114;156;31m━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[35m100%\u001b[0m \u001b[33m0:00:08\u001b[0m\ntheta=15.0      → \u001b[32msuccess      \u001b[0m \u001b[38;2;114;156;31m━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[35m100%\u001b[0m \u001b[33m0:00:07\u001b[0m\ntheta=16.0      → \u001b[32msuccess      \u001b[0m \u001b[38;2;114;156;31m━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[35m100%\u001b[0m \u001b[33m0:00:07\u001b[0m\n"
         },
         "metadata": {},
         "output_type": "display_data"
        }
       ],
       "tabbable": null,
       "tooltip": null
      }
     },
     "4d91625c491b42c39fa5f88fb552cf3a": {
      "model_module": "@jupyter-widgets/output",
      "model_module_version": "1.0.0",
      "model_name": "OutputModel",
      "state": {
       "_dom_classes": [],
       "_model_module": "@jupyter-widgets/output",
       "_model_module_version": "1.0.0",
       "_model_name": "OutputModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/output",
       "_view_module_version": "1.0.0",
       "_view_name": "OutputView",
       "layout": "IPY_MODEL_90220861d31d4b00a4e67e0ce44ee922",
       "msg_id": "",
       "outputs": [
        {
         "data": {
          "text/html": "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\">Downloading data for 17 tasks <span style=\"color: #f92672; text-decoration-color: #f92672\">━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╸</span><span style=\"color: #3a3a3a; text-decoration-color: #3a3a3a\">━━</span> <span style=\"color: #800080; text-decoration-color: #800080\"> 94%</span> <span style=\"color: #808000; text-decoration-color: #808000\">0:00:03</span>\n</pre>\n",
          "text/plain": "Downloading data for 17 tasks \u001b[38;2;249;38;114m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[38;2;249;38;114m╸\u001b[0m\u001b[38;5;237m━━\u001b[0m \u001b[35m 94%\u001b[0m \u001b[33m0:00:03\u001b[0m\n"
         },
         "metadata": {},
         "output_type": "display_data"
        }
       ],
       "tabbable": null,
       "tooltip": null
      }
     },
     "4f059c50acf9428e997cf312846df658": {
      "model_module": "@jupyter-widgets/output",
      "model_module_version": "1.0.0",
      "model_name": "OutputModel",
      "state": {
       "_dom_classes": [],
       "_model_module": "@jupyter-widgets/output",
       "_model_module_version": "1.0.0",
       "_model_name": "OutputModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/output",
       "_view_module_version": "1.0.0",
       "_view_name": "OutputView",
       "layout": "IPY_MODEL_dacb54e681644eb4aa1083bf8e11b9ae",
       "msg_id": "",
       "outputs": [
        {
         "data": {
          "text/html": "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\">Uploading data for 17 tasks <span style=\"color: #f92672; text-decoration-color: #f92672\">━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</span><span style=\"color: #3a3a3a; text-decoration-color: #3a3a3a\">╺━━━━</span> <span style=\"color: #800080; text-decoration-color: #800080\"> 88%</span> <span style=\"color: #808000; text-decoration-color: #808000\">0:00:04</span>\n</pre>\n",
          "text/plain": "Uploading data for 17 tasks \u001b[38;2;249;38;114m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[38;5;237m╺\u001b[0m\u001b[38;5;237m━━━━\u001b[0m \u001b[35m 88%\u001b[0m \u001b[33m0:00:04\u001b[0m\n"
         },
         "metadata": {},
         "output_type": "display_data"
        }
       ],
       "tabbable": null,
       "tooltip": null
      }
     },
     "53cce49b2a7b46869b1290851157bf86": {
      "model_module": "@jupyter-widgets/output",
      "model_module_version": "1.0.0",
      "model_name": "OutputModel",
      "state": {
       "_dom_classes": [],
       "_model_module": "@jupyter-widgets/output",
       "_model_module_version": "1.0.0",
       "_model_name": "OutputModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/output",
       "_view_module_version": "1.0.0",
       "_view_name": "OutputView",
       "layout": "IPY_MODEL_0777f44839d246abac7dedabe42cf1f9",
       "msg_id": "",
       "outputs": [
        {
         "data": {
          "text/html": "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\">Best weighted RMS error so far: 0.0278 <span style=\"color: #729c1f; text-decoration-color: #729c1f\">━━━━━━━━━━━━━━━━━━━━━━━━━━━━</span> <span style=\"color: #800080; text-decoration-color: #800080\">100%</span> <span style=\"color: #008080; text-decoration-color: #008080\">0:00:00</span>\n</pre>\n",
          "text/plain": "Best weighted RMS error so far: 0.0278 \u001b[38;2;114;156;31m━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[35m100%\u001b[0m \u001b[36m0:00:00\u001b[0m\n"
         },
         "metadata": {},
         "output_type": "display_data"
        }
       ],
       "tabbable": null,
       "tooltip": null
      }
     },
     "90220861d31d4b00a4e67e0ce44ee922": {
      "model_module": "@jupyter-widgets/base",
      "model_module_version": "2.0.0",
      "model_name": "LayoutModel",
      "state": {
       "_model_module": "@jupyter-widgets/base",
       "_model_module_version": "2.0.0",
       "_model_name": "LayoutModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/base",
       "_view_module_version": "2.0.0",
       "_view_name": "LayoutView",
       "align_content": null,
       "align_items": null,
       "align_self": null,
       "border_bottom": null,
       "border_left": null,
       "border_right": null,
       "border_top": null,
       "bottom": null,
       "display": null,
       "flex": null,
       "flex_flow": null,
       "grid_area": null,
       "grid_auto_columns": null,
       "grid_auto_flow": null,
       "grid_auto_rows": null,
       "grid_column": null,
       "grid_gap": null,
       "grid_row": null,
       "grid_template_areas": null,
       "grid_template_columns": null,
       "grid_template_rows": null,
       "height": null,
       "justify_content": null,
       "justify_items": null,
       "left": null,
       "margin": null,
       "max_height": null,
       "max_width": null,
       "min_height": null,
       "min_width": null,
       "object_fit": null,
       "object_position": null,
       "order": null,
       "overflow": null,
       "padding": null,
       "right": null,
       "top": null,
       "visibility": null,
       "width": null
      }
     },
     "dacb54e681644eb4aa1083bf8e11b9ae": {
      "model_module": "@jupyter-widgets/base",
      "model_module_version": "2.0.0",
      "model_name": "LayoutModel",
      "state": {
       "_model_module": "@jupyter-widgets/base",
       "_model_module_version": "2.0.0",
       "_model_name": "LayoutModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/base",
       "_view_module_version": "2.0.0",
       "_view_name": "LayoutView",
       "align_content": null,
       "align_items": null,
       "align_self": null,
       "border_bottom": null,
       "border_left": null,
       "border_right": null,
       "border_top": null,
       "bottom": null,
       "display": null,
       "flex": null,
       "flex_flow": null,
       "grid_area": null,
       "grid_auto_columns": null,
       "grid_auto_flow": null,
       "grid_auto_rows": null,
       "grid_column": null,
       "grid_gap": null,
       "grid_row": null,
       "grid_template_areas": null,
       "grid_template_columns": null,
       "grid_template_rows": null,
       "height": null,
       "justify_content": null,
       "justify_items": null,
       "left": null,
       "margin": null,
       "max_height": null,
       "max_width": null,
       "min_height": null,
       "min_width": null,
       "object_fit": null,
       "object_position": null,
       "order": null,
       "overflow": null,
       "padding": null,
       "right": null,
       "top": null,
       "visibility": null,
       "width": null
      }
     },
     "e33bec4b9c294fd38a1ac5ab5c691c2b": {
      "model_module": "@jupyter-widgets/base",
      "model_module_version": "2.0.0",
      "model_name": "LayoutModel",
      "state": {
       "_model_module": "@jupyter-widgets/base",
       "_model_module_version": "2.0.0",
       "_model_name": "LayoutModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/base",
       "_view_module_version": "2.0.0",
       "_view_name": "LayoutView",
       "align_content": null,
       "align_items": null,
       "align_self": null,
       "border_bottom": null,
       "border_left": null,
       "border_right": null,
       "border_top": null,
       "bottom": null,
       "display": null,
       "flex": null,
       "flex_flow": null,
       "grid_area": null,
       "grid_auto_columns": null,
       "grid_auto_flow": null,
       "grid_auto_rows": null,
       "grid_column": null,
       "grid_gap": null,
       "grid_row": null,
       "grid_template_areas": null,
       "grid_template_columns": null,
       "grid_template_rows": null,
       "height": null,
       "justify_content": null,
       "justify_items": null,
       "left": null,
       "margin": null,
       "max_height": null,
       "max_width": null,
       "min_height": null,
       "min_width": null,
       "object_fit": null,
       "object_position": null,
       "order": null,
       "overflow": null,
       "padding": null,
       "right": null,
       "top": null,
       "visibility": null,
       "width": null
      }
     }
    },
    "version_major": 2,
    "version_minor": 0
   }
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
