Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save daletovar/4505df9323634e7a87396deeefe0db06 to your computer and use it in GitHub Desktop.
Save daletovar/4505df9323634e7a87396deeefe0db06 to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"id": "0947cf4b",
"metadata": {},
"source": [
"# What is `mybinder`?\n",
"\n",
"\n",
"[`mybinder`] is a service provided by the open source `jupyter` community that generates on-demand ☁️ compute instances, from common content providers, it replaced the former `tmpnb` service. A binder can support a variety of computational environments with [**Ju**lia][julia], [**Pyt**hon][python] and [**R**][r], or more generally an any `dockerfile`.\n",
"\n",
"> In this post we will talk about the usage of the binder service. please visit the binder documentation to learn about [common usage patterns in binder](https://mybinder.readthedocs.io/en/latest/using/using.html#common-usage-patterns-in-binder) or more [specific configuration settings](https://mybinder.readthedocs.io/en/latest/using/using.html#common-usage-patterns-in-binder).\n",
"\n",
"[`mybinder`]: #"
]
},
{
"cell_type": "markdown",
"id": "fed01152",
"metadata": {},
"source": [
"## How is `mybinder` used?\n",
"\n",
"`mybinder` provides the ability to turn content from a provider (eg. Github, GitLab, Zenodo) containing [common configuration files]() that define tailored computational environments. Visitors to __a binder__ will be able to interact with content using [different interactive computing interfaces][interfaces] (eg. [`jupyterlab`], [`notebook`], [RStudio]).\n",
"\n",
"\n",
"The binder concept first appeared ~2015 https://www.youtube.com/watch?v=Or6pMrskYoU\n",
"and it [moved out of beta in 2018](https://blog.jupyter.org/binderhub-is-out-of-beta-fa2781a229d6), now it is supported by a federation of organization that loan computational resources to the open web.\n",
"\n",
"[interfaces]: https://mybinder.readthedocs.io/en/latest/using/using.html#choose-from-multiple-user-interfaces\n",
"\n",
"[julia]: #\n",
"[python]: #\n",
"[r]: #\n",
"[`jupyterlab`]: #\n",
"[`notebook`]: #\n",
"[RStudio]: #\n",
"[`mybinder`]: #\n",
"\n",
"In the coming sections, we'll see in data, that there are over 100,000 units of content deployed with `mybinder` that have seeded over 10 million interactive computing sessions. With numbers of this magnitude there are many applications of `mybinder`. Below is short list of a few popular ways `binder`s help folks:\n",
"* `jupyterlab` uses binder to create previews of each pull request.\n",
"* https://the-turing-way.netlify.app/reproducible-research/binderhub.html\n",
"* projects like `scipy`, `numpy`, and `pandas` provide binders for users to try out the newest versions of their tools.\n",
"* individuals \n",
"* interactive documentation\n",
"* ephemeral classrooms\n",
"* community events\n",
"* demos\n",
"\n",
"With such a low barrier to entry, it is to believe that mybinder is a free, open-source service, anyway all these projects needed to get started were:\n",
"- [x] code or content\n",
"- [x] environment configuration"
]
},
{
"cell_type": "markdown",
"id": "2f9a19ff",
"metadata": {},
"source": [
"## Exploring `binderlytics`\n",
"\n",
"One way to discuss is through data. The binder team provides the [binderlytics] service, built on [datasette], that allows you to explore binders that have been deployed since the end of 2018. i've downloaded the 4gb sqlite database that they serve to analyze in this post. In the following sections we'll create a dataframe of binderlytics that we can talk about."
]
},
{
"cell_type": "raw",
"id": "9389e252",
"metadata": {},
"source": [
"<details><summary>Imports and configuration</summary>"
]
},
{
"cell_type": "code",
"execution_count": 1,
"id": "459fb0a4",
"metadata": {},
"outputs": [],
"source": [
" import pandas, ibis, matplotlib.pyplot\n",
" matplotlib.rcParams.update({\n",
" 'figure.figsize': (12, 6), \"axes.grid\": True,\n",
" })"
]
},
{
"cell_type": "markdown",
"id": "58b1e878",
"metadata": {},
"source": [
"> Disclosure: We help maintain the ibis-framework through Quansight Labs, with funding coming from our open source maintainence agreements."
]
},
{
"cell_type": "raw",
"id": "abba51e6",
"metadata": {},
"source": [
"</details>"
]
},
{
"cell_type": "raw",
"id": "3645d08c",
"metadata": {},
"source": [
"<details open><summary>Query the databases and create a dataframe.</summary>"
]
},
{
"cell_type": "markdown",
"id": "cd303e98",
"metadata": {},
"source": [
"We use `ibis` is construct out query and manipulate the results with `pandas`."
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "dbb961de",
"metadata": {},
"outputs": [],
"source": [
" db = __import__(\"ibis\").backends.sqlite.connect(\"Downloads/binder-launches.db\").table(\"binder\")\n",
" db = db.projection([db.timestamp.substr(0, 7).name(\"date\"), db])\n",
" df = db.groupby([db.date, db.provider, db.origin, db.org]).count().execute(1e8)\n",
" df = df.set_index(df.pop(\"date\").add(\"-01\").pipe(pandas.to_datetime))\n",
" df[\"origin\"] = df.origin.fillna(\"\").str.partition(\":\")[0].replace({\"\": None})"
]
},
{
"cell_type": "raw",
"id": "c03410e1",
"metadata": {},
"source": [
"</details>"
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "d48cf80c",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'The database contains records of 13,946,918 binder deploys'"
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
" f\"\"\"The database contains records of {df[\"count\"].sum():,} binder deploys\"\"\""
]
},
{
"cell_type": "markdown",
"id": "764d4a59",
"metadata": {},
"source": [
"## binder `providers`\n",
"\n",
"The `providers` designate where the binder content comes from. mybinder allows authors to deploy their contents from 8 different providers. the records indicate that GitHub, GitLab, and Git were the first sources for binders. Later others were added, the other services are presented below with the months of their first appearance on binder. \n",
"\n",
"The earliest appearances of the `providers`, according to the data, are shown in the table below."
]
},
{
"cell_type": "code",
"execution_count": 4,
"id": "3c60a015",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th>provider</th>\n",
" <th>GitLab</th>\n",
" <th>Git</th>\n",
" <th>GitHub</th>\n",
" <th>Gist</th>\n",
" <th>Zenodo</th>\n",
" <th>Figshare</th>\n",
" <th>Dataverse</th>\n",
" <th>Hydroshare</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>first record</th>\n",
" <td>2018-11-30</td>\n",
" <td>2018-11-30</td>\n",
" <td>2018-11-30</td>\n",
" <td>2019-04-30</td>\n",
" <td>2019-06-30</td>\n",
" <td>2019-09-30</td>\n",
" <td>2019-12-31</td>\n",
" <td>2020-02-29</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
"provider GitLab Git GitHub Gist Zenodo \\\n",
"first record 2018-11-30 2018-11-30 2018-11-30 2019-04-30 2019-06-30 \n",
"\n",
"provider Figshare Dataverse Hydroshare \n",
"first record 2019-09-30 2019-12-31 2020-02-29 "
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
" providers = df.groupby([pandas.Grouper(freq=\"1M\"), \"provider\"])[\"count\"].sum().unstack().fillna(0)\n",
" providers = providers[providers.sum().sort_values().index]\n",
" appearances = providers.div(providers).apply(pandas.Series.idxmin).sort_values().to_frame(\"first record\"); appearances.T"
]
},
{
"cell_type": "markdown",
"id": "1d40ace4",
"metadata": {},
"source": [
"we can look at the monthly deploys of binder to see that github is by far the most common provider, and collectively binder is being deployed over half a million times a month."
]
},
{
"cell_type": "code",
"execution_count": 5,
"id": "c273ffa1",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAtgAAAHSCAYAAADWoLz+AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/Z1A+gAAAACXBIWXMAAAsTAAALEwEAmpwYAABhWUlEQVR4nO3de5wU1Z338c+PuwIC3hCDCq6KKJdRLqIGGTQKZlEhahSMgDFRIoKXJAs+WSMxxpXEjUYluD7xbhQNLsrjJeqiA7JKFBARBYQYSCAEkJsQBRF/zx9dMzZDzzDDnCq6q7/v16tfTJ+qPt8+daarDzWnqszdERERERGRMOrt7TcgIiIiIpImGmCLiIiIiASkAbaIiIiISEAaYIuIiIiIBKQBtoiIiIhIQBpgi4iIiIgE1GBvv4HQDjzwQG/Xrl2N1//nP/9J06ZN43tDysib+pWRXxlpaIMy8qd+ZeRXRhraoIz8qT9fM+bMmfOxux+Uc6G7p+rRrVs3r43XXnutVuvvCWXkR/3KyK+MNLRBGflTvzLyKyMNbVBG/tSfrxnAbK9iPKopIiIiIiIiAWmALSIiIiISkAbYIiIiIiIBpe4kx1y2b9/OihUr2Lp16y7LWrRowcKFC2PNL7aMJk2a0LZtWxo2bBjr+xERERHJR0UxwF6xYgXNmzenXbt2mNlOyzZv3kzz5s1jzS+mDHdn3bp1rFixgvbt28f6fkRERETyUVFMEdm6dSsHHHDALoNrCc/MOOCAA3L+tUBERESkGBTFABvQ4DpB2tYiIiJSzIpmgF3oTjnllJzlw4cPZ/LkyQm/GxERERGpigbYe8GOHTtq/Zo33ngjSPYXX3wRpB4RERERyU0D7MCWLVvGscceyyWXXELHjh254IIL+PTTT2nXrh1jxozhxBNP5A9/+ANPPPEEnTt3plOnTowZMwaAe++9lx//+McVdT300ENcffXVADRr1gzInER49dVX06FDB77xjW+wZs2aivXnzJlDnz596NatG/369WPVqlUAlJaWcu2119K9e3d+85vfJLUpRERERIqSBtgxWLx4MVdddRULFy5kv/3243e/+x0ABxxwAHPnzuW0005jzJgxvPrqq8ybN4+3336bZ555hvPPP58pU6ZU1PPkk09y8cUX71T3lClTWLx4MR988AGPPPJIxZHt7du3M2rUKCZPnsycOXP47ne/y09+8pOK133++efMnj2bH/7whwlsAREREZHiVRSX6UvaYYcdxqmnngrAd77zHX79618DcNFFFwHw9ttvU1paykEHHQTAJZdcwowZMxg4cCBHHnkks2bN4uijj2bRokUV9ZSbMWMGgwcPpn79+hx66KGcfvrpACxZsoQFCxZw5plnAplpKG3atKl4XXm2iIiIiMRLA+wYVL6KRvnzpk2b7va1F198MU899RTHHnssgwYNqvEVOdyd448/njfffDPn8ppki4iIiEjdaYAdg7/+9a+8+eabnHzyyTz++OOcfPLJvPfeexXLe/bsyejRo/n4449p1aoVTzzxBKNGjQJg0KBB/OIXv+Cdd95h/Pjxu9R92mmn8V//9V8MGzaMNWvW8NprrzFkyBCOPvpo1q5dW5G7fft2PvzwQ44//vjE2i0iIjU3bty4nOUdOnTIuayq9UUk/2gOdgw6dOjAhAkT6NixIxs2bODyyy/faXmbNm247bbb6Nu3L127dqVbt26cd955ALRq1YqOHTuyfPlyevbsuUvdgwYN4uijj+a4445j6NChnHzyyQA0atSIyZMnM2bMGLp27UpJSUmwK4+IiIiISM3pCHYMGjRowGOPPVbxfPPmzSxbtmyndQYPHszgwYNzvv65557bpWzLli1AZrrJPffcs8vyzZs3U1JSwowZM3ZZVlZWVot3LyIiIiJ1oSPYIiIiIiIBaYAdWLt27ViwYMHefhsiIiIispdoioiIiIhIzHRSa3HRAFtEREREdqu2/0mo7jVpt9spImbWwczmZT0+MbNrzWx/M3vFzJZE/7aK1jczu8vMlprZfDM7MauuYdH6S8xsWFZ5NzN7L3rNXRZd/LmqDBERERGRfLXbAba7L3b3EncvAboBnwJTgLHANHc/GpgWPQc4Gzg6elwBTITMYBm4CTgJ6AnclDVgngh8P+t1/aPyqjJERERERPJSbaeInAH82d2Xm9l5QGlU/jBQBowBzgMecXcHZplZSzNrE637iruvBzCzV4D+ZlYG7Ofus6LyR4CBwItRXbkyCk79+vXp3Lkz27dvp0GDBgwdOpTrrruOevWq/j/OsmXLeOONNxgyZEiC71RERNKguj/Na95v+qi/84tlxsE1XNnsAWCuu99jZhvdvWVUbsAGd29pZs8Bt7n7zGjZNDKD4lKgibvfEpXfCHxGZtB8m7t/IyrvDYxx9wFVZeR4X1eQOVpO69atu02aNGmn5S1atOCoo46qeN75F7teK7ou3vvJadUu37FjB23btmXVqlUArF27lssvv5yTTjqJn/zkJ1W+7vXXX+euu+7iD3/4w27fw44dO6hfv37t3jjwxRdf0KBBzf6fVZuMpUuXsmnTplq9ly1bttCsWbNavaa2lJE/GWlogzLyp/5CzCj/TqiscePGbNu2bZfyNm3aBKk/ZEZVCq0vkshIQ3/Xtg17klGVfOzvvn37znH37rmW1fgItpk1As4Fbqi8zN3dzGo+Ut8D1WW4+33AfQDdu3f30tLSnZYvXLiQ5s2bx/bedlf35s2bd1qvefPm3H///fTo0YP/+I//YPny5Vx66aX885//BOCee+7hlFNO4eabb2bhwoX07t2bYcOGMWjQoJzrXXzxxZx//vlceOGFAAwfPpwBAwYwaNAgxo4dS1lZGdu2bWPkyJFceeWVlJWVceONN9KqVSsWLVrEO++8w7e//W1WrFjBjh07uPHGG7nooouYM2cO119/PVu2bOHAAw/knnvu4eijj67RNmnSpAknnHBCrbZjWVkZlfsuNGXkT0Ya2qCM/Km/EDOqO2Fs8eLFu5RXdXOy2tYfMqMqhdYXSWSkob9r24Y9yahKofV3baaInE3m6PXq6PlqM2vj7quiKSBrovKVwGFZr2sbla3kq+ke5eVlUXnbHOtXl1HwjjzySHbs2MGaNWs4+OCDeeWVV2jSpAlLlixh8ODBzJ49m9tuu43bb7+94s6On376ac71LrroIv7whz9w4YUX8vnnnzNt2jQmTpzI/fffT4sWLXj77bfZtm0bp556KmeddRYAc+fOZcGCBbRv356nn36aQw89lOeffx6ATZs2sX37dkaNGsWzzz7LQQcdxJNPPsnNN9/Mo48+ute2mYiIiEghqM0AezDwRNbzqcAw4Lbo32ezyq82s0lkTmjcFA2QXwJuzTqx8SzgBndfH12ZpBfwJ2AocPduMlJl+/btXH311cybN4/69evz4Ycf1mq9s88+m9GjR7Nt2zb++Mc/ctppp7HPPvvw8ssvM3/+fCZPngxkBs5LliyhUaNG9OzZk/bt2wPQuXNnfvjDHzJmzBgGDBhA7969WbBgAQsWLODMM88EMtNDDjrooAS2hoiIiEhhq9EA28yaAmcCV2YV3wY8ZWaXA8uBb0flLwDfBJaSueLIZQDRQPrnwNvRejeXn/AIXAU8BOxD5uTGF3eTUfA++ugj6tevz8EHH8zPfvYzWrduzbvvvsuXX35JkyZNcr7mjjvuyLlekyZN+PrXv85LL73Ek08+ycUXXwyAu3P33XfTr1+/neopKyujadOmFc+POeYY5s6dywsvvMC///u/c8YZZzBo0CCOP/543nzzzYr1yqe6iIiIiEjVanSrdHf/p7sf4O6bssrWufsZ7n60u3+jfLDsGSPd/V/cvbO7z856zQPuflT0eDCrfLa7d4pec3V0BZIqMwrd2rVrGTFiBFdffTVmxqZNm2jTpg316tXj0UcfZceOHUBmrnb2oLaq9QC+9a1v8eCDD/L666/Tv3/mKof9+vVj4sSJbN++HYAPP/ywYv52tr///e/su+++fOc73+HHP/4xc+fOpUOHDqxdu7ZigL19+3YWLlwY2zYRERERSQvdyTEhn332GSUlJRWX6bv00ku5/vrrAbjqqqs4//zzeeSRR+jfv3/F0eUuXbpQv359unbtyvDhw6tcD+CMM87gyiuv5LzzzqNRo0YAfO9732PZsmWceOKJuDsHHXQQzzzzzC7v7b333uPHP/4x9erVo2HDhkycOJFGjRoxefJkRo8ezaZNm/jiiy8YMWIEPXv2jH9jiYiIiBSwohxgL7vtXyt+3rx5c6xXGCmXfbS5sqOPPpr58+dXPB8/fjwADRs25NVXX91p3Vzrla+7fv3OB/jr1avHrbfeyq233rpTeWlp6U5nyfbr12+XaSQAJSUlzJjx1SUNNUVEREREZPdqNEVERERERERqRgNsEREREZGANMAWEREREQlIA2wRERERkYA0wBYRERERCUgDbBERERGRgDTATkj9+vUpKSmpeCxbtoxTTjllj+oaPnx4xe3PRURERCS/FOV1sBnXouLHIFfAHrdpt6vss88+zJs3b6eyN954I0R6rbg77k69evq/lYiIiOSXcePG5Szv0KFDzmVVrb+3aZS1FzVr1gyAL7/8kquuuopjjz2WM888k29+85sVR6jHjh3LcccdR5cuXfjRj35U8doZM2ZwyimncOSRR1asu2XLFs444wxOPPFEOnfuzLPPPgvAsmXL6NChA0OHDqVTp0787W9/41e/+hU9evSgS5cu3HTTTQm3XERERCS9ivMI9l5Qfqt0gPbt2zNlypSKZf/93//NsmXL+OCDD1izZg0dO3bku9/9LuvWrWPKlCksWrQIM2Pjxo0Vr1m1ahUzZ85k0aJFnHvuufTr148mTZowZcoU9ttvPz7++GN69erFueeeC8CSJUt4+OGH6dWrFy+//DJLlizhrbfewt0599xzmTFjBqeddlqSm0REREQklTTATkiuKSLlZs6cyYUXXki9evU45JBD6Nu3LwAtWrSgSZMmXH755QwYMIABAwZUvGbgwIHUq1eP4447jtWrVwOZ6R//5//8H2bMmEG9evVYuXJlxbIjjjiCXr16AfDyyy/z8ssvc8IJJwCZI99LlizRAFtEREQkAA2w81iDBg146623mDZtGpMnT+aee+7h1VdfBaBx48YV67k7AL///e9Zu3Ytc+bMoWHDhrRr146tW7cC0LRp053Wv+GGG7jyyisTbI2IiIhIcdAc7Dxw6qmn8vTTT/Pll1+yevVqysrKgMyR5U2bNvHNb36TO+64g3fffbfaejZt2sTBBx9Mw4YNee2111i+fHnO9fr168cDDzzAli1bAFi5ciVr1qwJ2iYRERGRYqUj2Hng/PPPZ9q0aRx33HEcdthhnHjiibRo0YLNmzdz3nnnsXXrVtydX//619XWc8kll3DOOefQuXNnunfvzrHHHptzvbPOOouFCxdy8sknA5mTLR977DEOPvjg4G0TERERKTbFOcDOuqze5s2bad48yMX6qlV+tDhXWb169bj99ttp1qwZ69ato2fPnnTu3JlDDjmEt956a5fXPfTQQ7vUs3nzZg488EDefPPNnPkLFizY6fk111zDNddcs4etEREREZGqFOcAOw8NGDCAjRs38vnnn3PjjTdyyCGH7O23JCIiIiJ7QAPsPFE+71pERERECptOchQRERERCUhHsEVERCpJy+2aRWTv0BFsEREREZGANMAWEREREQlIA+yENGvWbKfnDz30EFdffXWNX79s2TI6depU5/dRVla20y3XRURERCSsopyD3fnhzkHre2/Ye0Hrq40vvviCBg2S68ak80REREQKjY5g72WbN2+mffv2bN++HYBPPvmk4vmcOXPo2rUrXbt2ZcKECRWveeihhzj33HM5/fTTOeOMM1i/fj2DBw+mS5cu9OrVi/nz5wMwffp0SkpKKCkp4YQTTmDz5s1A5sY0F1xwAcceeyyXXHIJ7g7AzTffTI8ePejUqRNXXHFFRXlpaSnXXnstffr04Te/+Q1z5syhT58+dOvWjX79+rFq1aokN5mIiIhIXtMAOyGfffZZxWC3pKSEn/70pwA0b96c0tJSnn/+eQAmTZrEt771LRo2bMhll13G3XffzbvvvrtLfXPnzmXy5MlMnz6dm266iS5dujB//nxuvfVWhg4dCsDtt9/OhAkTmDdvHq+//jr77LMPAO+88w533nknH3zwAR999BH/+7//C8DVV1/N22+/zYIFC/jss8947rnnKvI+//xzpk+fzujRoxk1ahSTJ09mzpw5fPe73+UnP/lJrNtOREREpJBogJ2QffbZh3nz5lU8br755opl3/ve93jwwQcBePDBB7nsssvYuHEjGzdu5LTTTgPg0ksv3am+M888k/333x+AmTNncvHFFwNw+umns27dOj755BNOPfVUrr/+eu666y42btxYMbWjZ8+etG3blnr16lFSUsKyZcsAeO211zjppJPo3Lkzr776Ku+//35F3kUXXQTA4sWLWbBgAWeeeSYlJSXccsstrFixIoYtJiIiIlKYNJk2D5x66qksW7aMsrIyduzYQadOndi4cWO1r2natOlu6x07diz/+q//ygsvvMCpp57KSy+9BEDjxo0r1qlfvz5ffPEFW7du5aqrrmL27NkcdthhjBs3jq1bt+6S5+4cf/zxvPnmm3vQUhEREZH00xHsPDF06FCGDBnCZZddBkDLli1p2bIlM2fOBOD3v/99la/t3bs3Tz31FJC5SsiBBx7Ifvvtx5///Gc6d+7MmDFj6NGjB4sWLaqyjvLB9IEHHsiWLVuYPHlyzvU6dOjA2rVrKwbY27dv3+lIt4iIiEix0wA7T1xyySVs2LCBwYMHV5Q9+OCDjBw5kpKSkooTDnMZN24c8+bNo0uXLowdO5aHH34YgDvvvJNOnTrRpUsXGjZsyNlnn11lHS1btuT73/8+nTp1ol+/fvTo0SPneo0aNWLy5MmMGTOGrl27UlJSwhtvvLGHrRYRERFJn6KcIpJ9Wb3NmzfTvHnz2DO3bNmy0/Phw4czfPjwiuczZ87kggsuoGXLlhVl3bp12+kEx1/+8pc5X7v//vvzxBNP7NKOu+++e5f3UVpaSmlpacXze+65p+LnW265hVtuuWWX15SVlQFUXIWkpKSEGTNm5G6oiIgUjdreUr6614ikSVEOsPPNqFGjePHFF3nhhRf29lsRERERkTrSADsP5DrSLCIiIiKFqUZzsM2spZlNNrNFZrbQzE42s/3N7BUzWxL92ypa18zsLjNbambzzezErHqGResvMbNhWeXdzOy96DV3mZlF5TkzRERERETyVU1PcvwN8Ed3PxboCiwExgLT3P1oYFr0HOBs4OjocQUwETKDZeAm4CSgJ3BT1oB5IvD9rNf1j8qryhARERERyUu7HWCbWQvgNOB+AHf/3N03AucBD0erPQwMjH4+D3jEM2YBLc2sDdAPeMXd17v7BuAVoH+0bD93n+WZS2U8UqmuXBkiIiIiInnJqrv8G4CZlQD3AR+QOXo9B7gGWOnuLaN1DNjg7i3N7DngNnefGS2bBowBSoEm7n5LVH4j8BlQFq3/jai8NzDG3QeY2cZcGTne4xVkjpbTunXrbpMmTdppeYsWLTjqqKNytm/Hjh3Ur1+/2m1QV8WYsXTpUjZt2lSr+rds2UKzZs325K0powAz0tAGZeRP/aEzVq1albO8cePGbNu2bZfyNm3a5F1GVfUnkVFV/XuSURX9TtWs/iQyQvZ3Ep+9qtS2v/v27TvH3bvnWlaTkxwbACcCo9z9T2b2GypN1XB3N7PqR+p1VF2Gu99H5j8BdO/e3bMvQwewcOHCKi/Fl8Rl+h5//PGKS+yVmz9/Ps8//3y116aujex2LFu2jAEDBrBgwYIgdefK2J0mTZpwwgkn1Kr+srIyKvddaMrIn4w0tEEZ+VN/6IzqLj+3ePHiXcqz72GQLxnVXQ4v7oyq6t+TjKrod6pm9SeREbK/k/jsVSVkf9dkgL0CWOHuf4qeTyYzwF5tZm3cfVU0zWNNtHwlcFjW69tGZSvJHMXOLi+LytvmWJ9qMupk4bEdQ1RToeOihdUuP+eccxgyZEjF8/vuu4/f//739OvXL+j7EBEREZG9b7dzsN39H8DfzKxDVHQGmekiU4HyK4EMA56Nfp4KDI2uJtIL2OTuq4CXgLPMrFV0cuNZwEvRsk/MrFc0DWRopbpyZRSsDz/8kJtvvplHH32UevXq8atf/YoePXrQpUsXbrrpJiBzBLpjx458//vf5/jjj+ess87is88+A2DevHn06tWLLl26MGjQIDZs2ADAO++8Q9euXenatSsTJkyoyNu6dSuXXXYZnTt35oQTTuC1115LvtEiIiIiRaSmVxEZBfzezOYDJcCtwG3AmWa2BPhG9BzgBeAjYCnwf4GrANx9PfBz4O3ocXNURrTO76LX/Bl4MSqvKqMgbd++nSFDhvCf//mfHH744bz88sssWbKEt956i3nz5jFnzpyKOyQuWbKEkSNH8v7779OyZUuefvppAIYOHcr48eOZP38+nTt35mc/+xkAV111FXffffdOd34EmDBhAmbGe++9xxNPPMGwYcPYunVrsg0XERERKSI1utGMu88Dck3iPiPHug6MrKKeB4AHcpTPBjrlKF+XK6NQ3XjjjRx//PFcdNFFALz88su8/PLLFXOVt2zZwpIlSzj88MNp3749JSUlQOaW6cuWLWPTpk1s3LiRPn36ADBs2DAuvPBCNm7cyKZNmzjttNMAuPTSS3nxxcz/UWbOnMmoUaMAOPbYYzniiCP48MMP6dKlS5JNFxERESkaupNjQsrKynj66aeZO3duRZm7c8MNN3DllVfutO6yZcto3LhxxfP69etXTBERERERkfxW0ykiUgcbNmzgsssu45FHHtnpKhz9+vXjgQceYMuWLQCsXLmSNWuqPo+zRYsWtGrVitdffx2ARx99lD59+tCyZUtatGjBzJkzAfj9739f8ZrevXtXPP/www/561//SocOHXatXERERESC0BHsBDzwwAOsWbOGH/zgBzuV33DDDQwZMoSTTz4ZgGbNmvHYY49Ve63phx9+mBEjRvDpp59y5JFH8uCDDwLw29/+lpEjR2JmnHXWWRXrX3XVVfzgBz+gc+fONGjQgIceemino+MiIiIiElZRDrCzL6uXxHWwf/jDH1Z7fcprrrlml7Lsa1j/6Ec/qvi5pKSEWbNm7bL+CSecsNMJjuXX3W7SpEnFIFxERERE4qcpIiIiIiIiARXlEWwRkdqq7u5iuZZV91crqRv1hYSm3ykJTUewRUREREQC0gBbRERERCQgDbBFRERERALSAFtEREREJCANsBOyevVqhgwZwpFHHkm3bt04+eSTmTJlCrNnz2b06NFA5m6Pb7zxRsVrxo0bx+23317jjGbNmgV/3yIiIiJSO0V5FZEJI14NWt/Ie0+vdrm7M3DgQIYNG8bjjz8OwPLly5k6dSqDBg2ie/fuQGaA3axZM0455ZSg709EREREkqMj2AmYPn06jRo1YsSIERVlRxxxBKNGjaKsrIwBAwawbNky7r33Xu644w5KSkoqboeey8CBA+nWrRvHH3889913307LrrvuOo4//njOOOMM1q5dG1ubRERERCQ3DbATsHDhQk488cRq12nXrh0jRozguuuuY968efTu3bvKdR944AHmzJnD7Nmzueuuu1i3bh0A//znP+nevTvvv/8+ffr04Wc/+1nQdoiIiIjI7hXlFJG9beTIkcycOZNGjRrxq1/9qtavv+uuu5gyZQoAf/vb31iyZAnHH3889erV46KLLgLgO9/5Dt/61reCvm8REZGk6SYwUog0wE5Ax44def755yueT5gwgY8//rhi7nVtlJWV8T//8z+8+eab7LvvvpSWlrJ169ac65rZHr9nEUmeBhIiIumgKSIJ6NOnD1u3bmXixIkVZZ9++uku6zVv3pzNmzdXW9emTZto1aoV++67L4sWLWLWrFkVy7788ksmT54MwOOPP87Xv/71QC0QERERkZrSADsBZsYzzzzD9OnTad++PT179mTYsGGMHz9+p/XOOeccpkyZstNJjrfccgtt27atePTv358vvviCjh07MnbsWHr16lXx+qZNm/LWW2/RqVMnXn31VX76058m2k4RERERKdIpItmX1du8eTPNmzePPbNNmzZMmjQp57LS0lIAjjnmGObPn19R3rt375x/An7xxRd3Kdu8eTNbtmwJ8l5FREREZM/pCLaIiIiISEAaYIuIiIiIBKQBtoiIiIhIQBpgi4iIiIgEpAG2iIiIiEhAGmCLiIiIiASkAXZCVq9ezZAhQzjyyCPp1q0bJ598MlOmTGH27NmMHj0ayNyl8Y033tjL71RERERE6qIor4P9nxcNCFrfD598rtrl7s7AgQMZNmwYjz/+OADLly9n6tSpDBo0qOKW6WVlZTRr1oxTTjkl6PsTERERkeQU5QA7adOnT6dRo0aMGDGiouyII45g1KhRlJWVcfvtt3PPPfdw7733Ur9+fR577DHuvvtuevfuvRfftUjhyHVDJoAOHTrkXFbV+iIiIiFogJ2AhQsXcuKJJ1a7Trt27RgxYgTNmjXjRz/6UULvTERERERC0xzsvWDkyJF07dqVHj167O23IiIiIiKB6Qh2Ajp27Mjzzz9f8XzChAl8/PHHFXOvRUTSorbTdap7jYhIodIR7AT06dOHrVu3MnHixIqyTz/9dJf1mjdvzubNm5N8ayIiIiISmAbYCTAznnnmGaZPn0779u3p2bMnw4YNY/z48Tutd8455zBlyhRKSkp4/fXX99K7FREREZG6KMopItmX1du8eTPNmzePPbNNmzZMmjQp57LS0lIAjjnmGObPnx/7exERERGR+NToCLaZLTOz98xsnpnNjsr2N7NXzGxJ9G+rqNzM7C4zW2pm883sxKx6hkXrLzGzYVnl3aL6l0avteoyRERERETyVW2miPR19xJ3Lz8zbywwzd2PBqZFzwHOBo6OHlcAEyEzWAZuAk4CegI3ZQ2YJwLfz3pd/91kiIiIiIjkpbrMwT4PeDj6+WFgYFb5I54xC2hpZm2AfsAr7r7e3TcArwD9o2X7ufssd3fgkUp15coQEREREclLlhnT7mYls78AGwAH/svd7zOzje7eMlpuwAZ3b2lmzwG3ufvMaNk0YAxQCjRx91ui8huBz4CyaP1vROW9gTHuPqCqjBzv7woyR8tp3bp1t8pznVu0aMFRRx2Vs207duygfv36u90GdVGMGUuXLmXTpk21qn/Lli00a9ZsT96aMgowI2T9q1atylneuHFjtm3btkt5mzZtijajKqH6o7ZtgNq3Iy19EXdGVfUnkaH+Tj5D/V13td0P9u3bd07WzI6d1PQkx6+7+0ozOxh4xcwWZS90dzez3Y/U66C6DHe/D7gPoHv37l5+0mC5hQsXVnkiYxInORZjRpMmTTjhhBNqVX9ZWRmV+y40ZeRPRsj6q7v28uLFi3cpHzx4cNFmVCVUf9S2DVD7dqSlL+LOqO764nFnqL+Tz1B/113I76UaTRFx95XRv2uAKWTmUK+OpncQ/bsmWn0lcFjWy9tGZdWVt81RTjUZIiIiIiJ5abcDbDNrambNy38GzgIWAFOB8iuBDAOejX6eCgyNribSC9jk7quAl4CzzKxVdHLjWcBL0bJPzKxXNA1kaKW6cmUUnNWrVzNkyBCOPPJIunXrxsknn8yUKVOYPXs2o0ePrvJ1y5Yt4/HHH0/wnYqIiIhIXdRkikhrYEp05bwGwOPu/kczext4yswuB5YD347WfwH4JrAU+BS4DMDd15vZz4G3o/Vudvf10c9XAQ8B+wAvRg+A26rIqJMVY3e+iUvtZgrvqu1tvatd7u4MHDiQYcOGVQyWly9fztSpUxk0aFC1t0wvH2APGTKkju9SRERERJKw2wG2u38EdM1Rvg44I0e5AyOrqOsB4IEc5bOBTjXNKDTTp0+nUaNGjBgxoqLsiCOOYNSoUZSVlXH77bfz3HPPMX36dK655hogc/fHGTNmMHbsWBYuXEhJSQnDhg3juuuu21vNEBEREZEaKMo7OSZt4cKFnHjiibtd7/bbb2fChAmceuqpbNmyhSZNmnDbbbdVDMBFREREJP/V5TrYsodGjhxJ165d6dGjx07lp556Ktdffz133XUXGzdupEED/f9HREREpNBogJ2Ajh07Mnfu3IrnEyZMYNq0aaxdu3an9caOHcvvfvc7PvvsM0499VQWLVpUuSoRERERyXMaYCegT58+bN26lYkTJ1aUffrpp7us9+c//5nOnTszZswYevTowaJFi2jevDmbN29O8u2KiIiISB1ogJ0AM+OZZ55h+vTptG/fnp49ezJs2DDGjx+/03p33nknnTp1okuXLjRs2JCzzz6bLl26UL9+fbp27codd9yxl1ogIiIiIjVVlJN8sy+rl8QdECFzK8/Kt3AvV37XoLvvvjvn8ldffTWutyUiIiIigekItoiIiIhIQBpgi4iIiIgEVJRTREREitG4ceOqXNahQ4ecy6t7jYiI5KYj2CIiIiIiAWmALSIiIiISkAbYIiIiIiIBaYCdkNWrVzNkyBCOPPJIunXrxsknn8yUKVOYPXs2o0ePBqCsrIw33nij4jXjxo3j9ttv36medu3a8fHHH1ebVVpayuzZs8M3QkRERER2qyhPcgx90s7u6nN3Bg4cyLBhw3j88ccBWL58OVOnTmXQoEF0794dyAywmzVrximnnBL0/YmIiIhIcnQEOwHTp0+nUaNGjBgxoqLsiCOOYNSoUZSVlTFgwACWLVvGvffeyx133EFJSQmvv/56tXUuW7aMTp06VTy/6667dhroP/roo5SUlNCpUyfeeuut4G0SERERkdyK8gh20hYuXMiJJ55Y7Trt2rVjxIgRNGvWjB/96EcATJs2jTvuuIPHHnusYr2///3vNcr89NNPmTdvHjNmzOC73/0uCxYs2PMGiIiIiEiN6Qj2XjBy5Ei6du1Kjx49drvuddddx7x58yoehx56aI0yBg8eDMBpp53GJ598wsaNG+vylkVERESkhjTATkDHjh2ZO3duxfMJEyYwbdo01q5du8d1NmjQgC+//LLi+datW3dabmbVPhcRERGReGiAnYA+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yUuWGdPWcGWzdsAMoBPwV3dvGZUbsMHdW5rZc8Bt7j4zWjYNGAOUAk3c/Zao/EbgM6AsWv8bUXlvYIy7DzCzjbkycryvK8gcLad169bdJk2atMt7X7VqVc42NW7cmG3btu1S3qZNmxpskfRlVFV/EhlV1Z9ERj72RRIZ6u/iylB/F1eG+ru4MtTfyWf07dt3jrt3z7WsQU3fjJk1A54GrnX3T6Jp0gC4u5tZzUfqe6C6DHe/D7gPoHv37l5aWrrLOuPGjctZb4cOHVi8ePEu5YMHD671e0xDRlX1J5FRVf1JZORjXySRof4urgz1d3FlqL+LK0P9nV8ZNbqKiJk1JDO4/r27/3dUvDqa3kH075qofCVwWNbL20Zl1ZW3zVFeXYaIiIiISF6qyVVEDLgfWOjuv85aNBUovxLIMODZrPKh0dVEegGb3H0V8BJwlpm1ik5uPAt4KVr2iZn1irKGVqorV4aIiIiISF6qyRSRU4FLgffMbF5U9n+A24CnzOxyYDnw7WjZC8A3gaXAp8BlAO6+3sx+DrwdrXezu6+Pfr4KeAjYB3gxelBNhoiIiIhIXtrtADs6WdGqWHxGjvUdGFlFXQ8AD+Qon03mxMnK5etyZYiIiIiI5CvdyVFEREREJCANsEVEREREAtIAW0REREQkIA2wRUREREQC0gBbRERERCQgDbBFRERERALSAFtEREREJCANsEVEREREAtIAW0REREQkIA2wRUREREQC0gBbRERERCQgDbBFRERERALSAFtEREREJCANsEVEREREAtIAW0REREQkIA2wRUREREQC0gBbRERERCQgDbBFRERERALSAFtEREREJCANsEVEREREAtIAW0REREQkIA2wRUREREQC0gBbRERERCQgDbBFRERERALSAFtEREREJCANsEVEREREAtIAW0REREQkIA2wRUREREQC0gBbRERERCQgDbBFRERERALSAFtEREREJCANsEVEREREAtIAW0REREQkoN0OsM3sATNbY2YLssr2N7NXzGxJ9G+rqNzM7C4zW2pm883sxKzXDIvWX2Jmw7LKu5nZe9Fr7jIzqy5DRERERCSf1eQI9kNA/0plY4Fp7n40MC16DnA2cHT0uAKYCJnBMnATcBLQE7gpa8A8Efh+1uv67yZDRERERCRv7XaA7e4zgPWVis8DHo5+fhgYmFX+iGfM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\n",
"text/plain": [
"<Figure size 864x432 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
" providers.plot.bar(stacked=True);"
]
},
{
"cell_type": "markdown",
"id": "fefd7667",
"metadata": {},
"source": [
"## 🙏 the binder federation"
]
},
{
"cell_type": "markdown",
"id": "c555a44a",
"metadata": {},
"source": [
"cloud resources ain't free, so we need to give thanks to those providing the infrastructure. binder is a federation. there are several organizations that support the binder federation, and they share together they share the load of providing the world binders."
]
},
{
"cell_type": "code",
"execution_count": 6,
"id": "6efb204c",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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abHLdOr4WSwjhU5XsEOUnZ3NgAEDaNiwIb1792bXrl1kZmayaFFkNvmUlBRuueUWmjVrRseOHfnmm28A2LBhQ3SWw1tvvTXPOu+//35at25N06ZNueOOO4DIVdD69eszaNAgmjRpwsaNG6PLDxkyhJEjR9KuXTtOOukkZs+ezdChQ2nYsCFDhgwBYMKECVx99dXR14wfP55rrrmmyPcAFPk+2rVrd9DvY/jw4Xnex3//+19ee+01brjhBtLT0/nss8/ybP/777+nTp06QGTynO7du9OxY0c6deqU5wrxpEmT6NWrF127dqVevXr85S9/ieZ5+umnOeWUU2jTpg2XXXYZ1113XYHjmZWVRfv27WnRogUtWrTgv//9b7Tub3/7G2lpaTRr1oybbrqpwGtHjx7N2LFjo8+bNGlSYPKbzz//nObNm7Nw4cICrxcRERF/JeYV7DhZu3YtTz/9NBkZGQwdOpTHH388T/3OnTtp164d9957L1dffTXjx4/n1ltvZdSoUYwcOZJBgwbx2GOPRZefNWsW69evZ8GCBTjn6N69Ox988AG///3vWb9+Pc888wzt2rUrkGPLli3MmzeP1157je7duzN37lz+8Y9/0Lp1a5YuXUrfvn259957uf/++wGYOHEiTz31VJHv4frrry/yffzlL3856Pfx+OOP06lTp+jyp512Gt27d6dbt26l6u6xZMkSli9fzlFHHVWgEbt06VI+/vhjKlWqRP369bnyyispV64cd999N0uWLKFq1ap07NiRhg0bFljvcccdx1tvvUVycjLr16+nf//+LFq0iJkzZ/Lqq6/y0UcfccQRR/Djjz+WmDG/tWvXcuGFFzJp0iSaNWt2wK8XORxpljoROVToCnaITjzxRDIyMgC4+OKLmTNnTp76ihUr0q1bNwDS09OjjcG5c+fSv39/gOj06RBpmM6aNYvmzZvTokUL1qxZw/r164HIVOKFNa4BzjvvPMyMtLQ0atSoQVpaGklJSTRu3JisrCxSUlLo2LEjM2bMYN26dezZs4e0tLRSvYf876Nly5YH/T7atGlTmt1bpLPOOoujjjqq0LpOnTqRmppKcnIyjRo14osvvmDBggWceeaZHHXUUVSoUIE+ffoU+to9e/Zw2WWXkZaWRp8+faJ9wt9++20uueQSjjjiCIAit12U7777jh49evDcc8+pcS0iInII0hXsEJlZsc8rVKgQLStXrhzZ2dlFLguRfsk333wzI0aMyFOelZVFlSpVisxRqVIlAJKSkqKPc57nbHPYsGHcd999nHTSSVxyySWlfg9hvo/cypcvz759+wDYvXt3nrrS7IvCspbkwQcfpEaNGixbtox9+/aRnJxc6tfmzps/c2pqKr///e+ZM2fOAfUxFzncDdvdqcRlVu/bRvtSLCciUpZ0BTtEX375JfPmzQPg+eef5/TTTy/V6zIyMpgyZQoAzz33XLS8S5cuTJgwgR07dgCwadMmvv3225hkbdu2LRs3buSll16KXnU+mPcAsX0fVatWzTONe506dVi8eDHAQd/E2Lp1a95//322bNlCdnY206ZNK3S5bdu2UbNmTZKSknj22WfZu3cvELliPnHixGj/9MK6iNSpU4clS5YAkS4sGzZsiNZVrFiRV155hcmTJ/P8888f1HsRERGR8KmBHaL69evz2GOP0bBhQ7Zs2cLIkSNL9bqHHnqIxx57jLS0NDZt2hQt79y5MxdddFH0xsHevXvnaXTmuP3223nttdcOOG/fvn1p27Yt1atXP+j3EOv3ceGFF3L//ffTvHlzPvvsM66//nqeeOIJmjdvzvfff3/A7zW3E044gb/+9a+0adOGjIwM6tSpQ2pqZOSZ1157jdtvvx2Ayy+/nGeeeYZmzZqxZs2a6JXyrl270r17d1q1akV6enr0ZsYnn3ySJ598EoALLriAH3/8kcaNG/Poo49yyimn5MlQpUoVZsyYwYMPPvibjp2IiIjEjznn4p0hplq1auVyRpPIsXr16kJvUivK9u3bqVr1gAfriykfMnTr1o0RI0Zw3nnnxTVHPPbFjh07SElJITs7m/PPP5/+/ftz0UUXhZqhMDn74kDP6ViaPXs2mZmZcdm2bzl8yBBWjtGjRxdbX79+fdauXXtQ6yjJ6gYln/NfXHkFtR95tMj6hmtWH1SG0kik88KHDKU5r0o6Pw/23ITSDU13RJUHi13mYIem0744MAd7fprZYudcq8LqdAVbCti6dSunnHIKlStXjvuHc7yMHj2a9PR0mjRpQt26daM3bYqIiIiURDc5SgHVqlVj3bp1AIV21UgEuceohsTdDyI5SrrBUDcXiojspyvYIiIiIiIxpCvYIiKeO9hph2PRl3H79OHF1u898Qq2Ty+67zMAY8q+/7OIiA/UwBYRERE5DGiseH+oi4iIiIiISAzpCvYhYtGiRUyePJmHH364zLc1evRoUlJSuP766/OUb968mauuuuqAJnKZNGkSixYt4tFHS/jqWERE5DfQVdv9SurKBaXozqWuXDGRkA3stGfSYrq+FYNXxHR9hWnVqhWtWhU61GJojj/++IOeJbEk2dnZlC9/YKfl3r17KVeuXBklEhERn7244W8lLlPrlJ68uOHJIuuvo30sI4moi0hY7r77burXr8/pp59O//79GTt2LJ999hldu3alZcuWtG/fnjVr1gDw0ksv0bZtW5o1a8YZZ5wBRAZDzxmL+f333yc9PZ309HSaN29e6BByKSkp3HDDDTRu3Jg//vGPLFiwgMzMTE466aTozIBnnHEGS5cujb7m9NNPZ9myZQAsW7aMU089lfT0dMaPHw9AVlYWTZo0ASJXpnv16kXXrl2pV68ef/nLX6LrmThxIqeccgpt2rRh7ty50fLvvvuOCy64gNatW9O6deto3ejRoxk4cCAZGRkMHDgwz/t44YUXaNeuHU2aNOHGG2/M8/6uu+46mjVrxrx583j66aej27zsssu44oorfsNREhERETl4amCHYOHChUybNo1ly5Yxc+ZMcmaaHD58OI888giLFy9m7NixXH755QDcddddvPLKKyxbtqzQabLHjh3LY489xtKlS/nwww+pXLlygWV27txJx44dWblyJVWrVuXWW2/lrbfe4pVXXolO9X3ppZcyadIkANatW8fu3btp1qwZAMuXL+fdd9/lnXfe4a677mLz5s0FtrF06VJefPFFVqxYwYsvvsjGjRv5+uuvueOOO5g7dy5z5sxh1apV0eVHjRrFNddcE90fw4YNi9atWrWKt99+mxdeeCFatnnzZm688UZmzJjB0qVLWbhwIdOnT4++v7Zt27Js2TJOOukk7r77bubPn8/cuXOj/1ERERERiYeE7CIStrlz59KjRw+Sk5NJTk7mvPPOY/fu3fz3v/+lT58+0eV++eUXADIyMhg5ciT9+/enV69eBdaXkZHBtddey4ABA+jVqxe1atUqsEzFihXp2rUrAGlpaVSqVIkKFSqQlpZGVlYWAH369OHuu+/m/vvvZ8KECQwZMiT6+h49elC5cmWOPvpoOnTowIIFC0hPT8+zjU6dOpGamgpAo0aN+OKLL/j+++/JzMzk2GOPBaBfv37RSWvefvvtPA3un376iR07dgDQvXv3Av9RWLhwIZmZmRxzzDGUL1+eAQMG8MEHH9CzZ0/KlSvHBRdcAMCCBQs488wzOeqoo6LvK2ebIiIiYfjwg4HF1tevfzSLFxe/TKeOsUwk8aQGdpzs27ePatWq5emikePJJ5/k3XffZfbs2bRs2ZLFixfnqb/ppps499xzeeONN8jIyODNN9+kQYMGeZapUKECZgZAUlISlSpVij7Ozs4G4IgjjuCss87i1VdfZerUqXm2k/Paop4D0XUClCtXLrre4t7z/PnzSU5OLlBXpUqVYl+bX3Jysvpdi4iIiJfURSQEGRkZvP766+zevZsdO3YwY8YMjjjiCOrWrctLL70EgHMu2v/5s88+o3Xr1tx1110ce+yxbNy4Mc/6PvvsM9LS0rjxxhtp3br1QXWJGDZsGFdddRWtW7emevXq0fJXX32V3bt388MPPzB79mxat25dqvW1bduW999/nx9++IE9e/ZE3x9A586deeSRR6LPC/vPRW5t2rSJrmvv3r288MILnHnmmQWWa926Ne+//z5btmwhOzubadOmlSqriIiISFlQAzsErVu3pnv37jRt2pSzzz6btLQ0UlNTee6553j66adp1qwZjRs35tVXXwXghhtuiN7Yd9ppp0X7RecYN24cTZo0oWnTplSoUIGzzz4boEAXjtJo2bIlRx55JJdcckme8qZNm9KhQwc6derEbbfdxvHHH1+q9dWsWZPRo0dz6qmnkpGRQcOGDaN1Dz/8MIsWLaJp06Y0atSIJ58s/I7unPdRs2ZNxowZw7nnnkuzZs1o2bIlPXr0KLD8CSecwF//+lfatGlDRkYGderUiXZdEREREQlbQnYRKWlYve3bt1O1atWYbvP6669n9OjR7Nq1izPOOIOWLVtSt25d/vOf/xRY9l//+leBDJmZmWRmZgLkuQqcW+4rwjl9myEySkduues2b97Mvn376Ny5c6HL585Rp04dPvnkEwCGDBmSp8/2jBkzoo8vueSSAg12gGOOOYYXX3yxQHn+fLnfR//+/enWrVuB45H7PQBcdNFFDB8+nOzsbM4//3x69uxZYDsiIrFwsFPXQ2ymrxcRf+kKdkiGDx9Oeno6LVq04IILLqBFixbxjsTkyZNp27Yt9957L0lJh/apMHr0aNLT02nSpAl169ZVA1tERETiJiGvYMfD888/H+8IBQwaNIhBgwbFO0ZMjB07Nt4RRERERIBSXsE2s2pm9rKZrTGz1WZ2qpkdZWZvmdn64N/qwbJmZg+b2admttzMWuRaz+Bg+fVmNjhXeUszWxG85mELhqwoahsiIiIiIr4qbb+Ah4D/OOcaAM2A1cBNwDvOuXrAO8FzgLOBesHPcOAJiDSWgTuAtkAb4I5cDeYngMtyva5rUF7UNkREREREvFRiA9vMUoEzgKcBnHO/Oue2Aj2AZ4LFngF6Bo97AJNdxHygmpnVBLoAbznnfnTObQHeAroGdUc65+Y75xwwOd+6CtuGiIiIiIiXLNKmLWYBs3Tg78AqIlevFwOjgE3OuWrBMgZscc5VM7MZwBjn3Jyg7h3gRiATSHbO3ROU3wb8DMwOlv9jUN4euNE5183Mtha2jUIyDidytZwaNWq0nDJlSp761NRUTj755FLvlL1798Z9EhMfMviSQxkK5vj000/Ztm1bXDLs2LGDlJSUuGzbtxxhZdi+/ZNi6/ftq0FS0jdF1let2uSgM+xeubLY+l+PO46K335b7DLJjRuXaYbS5DjYDHDwxwNic0xKkii/I998/mmJy1RMrcav27YWWV/jpNK3EYry9ddfF1tfqVKl6IzNRalZs+ZBZdDvyIE52POzQ4cOi51zrQqrK81NjuWBFsCVzrmPzOwh8nXVcM45Myu+pX6QituGc+7vRP4TQKtWrVzOcHY5Vq9efUDD7pXFMH2FyczMZOzYsbRqVfDYlGWG0aNHk5KSwvXXX5+nfPPmzVx11VW8/PLLpc4xadIkFi1axKOPPlomWUuTIQw+ZMidIzk5mebNm8clw+zZs8n/O5aoOcLKMHr07GLr69c/mrVrvy/m9ZkHnWH1n0YWW//FlVdQ+5HiPwcarlldphlKk+NgMwAlDsG3a+c1HFHlwWKXycws+2H6EuV35P97ouSb3Gt16clXb04vsr7fizOKrCut/EPO5le/fn3Wrl1b7DL9+/c/qAz6HTkwZXl+lqaB/RXwlXPuo+D5y0Qa2N+YWU3n3NdBN4+c/w5tAk7M9fpaQdkmIlexc5fPDsprFbI8xWzjoKxu0LDkhQ5ALE5GHxx//PF5GtdlITs7m/LlD2zwmr1795ZRGhEREZHYK7EPtnPuf8BGM6sfFHUi0l3kNSBnJJDBwKvB49eAQcFoIu2Abc65r4E3gc5mVj24ubEz8GZQ95OZtQu6gQzKt67CtnHIufvuu6lfvz6nn346/fv3zzOs3L59+xgyZAi33nore/fu5YYbbuDMM8+kadOmPPXUU4WuLyUlhRtuuIHGjRvzxz/+kQULFpCZmclJJ53Ea6+9BsAZZ5yRZ9KW008/PTod+7Jlyzj11FOpV68e48ePByArK4smTSJfyUyaNIlevXpx/vnnU69ePf7yl79E1zNx4kROOeUU2rRpw9y5c6Pl3333HRdccAGtW7emdevW0brRo0czcOBAMjIyGDhwYJ738cILL5CWlkaTJk248cYb87y/6667jmbNmrFgwQKefvrp6DYvu+wyrrjiigM+BiIiIiJhKO0oIlcCz5nZciAduA8YA5xlZuuBPwbPAd4APgc+BcYDlwM4534E7gYWBj93BWUEy/wjeM1nwMygvKhtHFIWLlzItGnTWLZsGTNnzmTRokXRuuzsbAYMGEC9evW45557ePrpp0lNTeX9999n4cKFjB8/ng0bNhRY586dO+nYsSMrV66katWq3Hrrrbz11lu88sor3H777QBceumlTJo0CYB169axe/fu6LTry5cv591332XevHncddddbN68ucA2li5dyqRJk1ixYgUvvvgiGzdu5Ouvv+aOO+5g7ty5zJkzh1WrVkWXHzVqFNdcc030/Q4bNixat2rVKt5++21eeOGFaNnmzZu58cYbeffdd1m6dCkLFy5k+vTp0ffXtm1bli1bRp06dbj77ruZP38+c+fOZc2aNb/9YIiIiIiUsVJ9V++cWwoU1om7UyHLOuDPRaxnAjChkPJFQIHe7M65HwrbxqFm7ty59OjRg+TkZJKTkznvvPOidSNGjKBv377ccsstAMyaNYvly5czdepUkpKS2LZtG+vXr6du3bp51lmxYkW6do2MZpiWlkalSpWoUKECaWlpZGVlAdCnTx/uvvtu7r//fiZMmJBnavMePXpQuXJlKleuTIcOHViwYAHp6el5ttGpUydSU1NJTk6mUaNGfPHFF3z//fdkZmZy7LHHAtCvXz/WrVsHwNtvv52nwf3TTz9FpzTv3r07lStXzrP+hQsX5lnXgAED+OCDD+jZsyflypXjggsuAGDx4sWceeaZHHXUUdH3lbNNERER8cuHHwwstr5+/aNZvLj4ZTp1jGWi8Gkmxzg77bTTeO+997juuutITk7GOccjjzzCaaedVuxNdRUqVCCYj4ekpCQqVaoUfZydnQ3AEUccwVlnncWrr77K1KlTWbx4cfT1Oa8t6jkQXSdAuXLloustyr59+5g/fz7JyckF6qpUqVLsa/NLTk72YtQOERERkQNV2i4ichAyMjJ4/fXX2b17Nzt27GDGjP13K1966aWcc8459O3bl+zsbLp06cITTzzBnj17gEjXjp07d/7mbQ8bNoyrrrqK1q1bU736/okwX331VXbv3s0PP/zA7Nmzad26danW17ZtW95//31++OEH9uzZw0svvRSt69y5M4888kj0ee7+34Vp06YN77//Pt9//z179+7lhRde4MwzzyywXIsWLXj//ffZsmUL2dnZTJs2rVRZRUREJHzDdncq9ueYfVVLXOZQpyvYIWjdujXdu3enadOm1KhRg7S0NFJTU6P11157Ldu2bWPgwIE899xzZGVl0b59e8yMY489NtovOT09vcRGa34tW7bkyCOP5JJLLslT3rRpUzp06MD333/PbbfdxvHHHx/tWlKcmjVrMnr0aE499VSqVauWp1vJww8/zJ///GeaNm1KdnY2Z5xxBk8++WSBdeS8j5o1azJmzBg6dOiAc45zzz2XHj16FFj++OOP569//Stt2rThqKOOokGDBnn2n4iIiIhPErKBXdKwemUx5vH111/P6NGj2bVrF2eccQYtW7bksssui9bfeeed0cf33XcfN998c4EMuRvXOX2boeDYm7nrNm/ezL59++jcuXORy+eoU6cOn3wSGRx+yJAhDBkyhO3btwPkuep+ySWXFGiwAxxzzDG8+OKLBcrzby/3++jfv3+h437mfg8AF110EcOHDyc7O5vzzz+fnj17FvoeREREJL62Tx9ebP3eE69g+/QS5s8Yc2gPgawuIiEZPnw46enptGjRggsuuIAWLVqU+TYnT55M27Ztuffee0lKOrQP9ejRo0lPT6dJkybUrVtXDWwRERHxVkJewY6H559/PvRtDho0iEGDBoW+3bKQe9zwslDYMIW5VapUqcRljj/++FhGEg+88+4fiq3ftfOaEmcs69Sx7GcjE4mX0sxeWNIyJdWXJLn6tSUuk1R+Z6mWE4mVQ/uypoiIiIiIZ9TAFhERERGJITWwRURERERiSH2wRUQ8V9KYsKv3baP9YTBurIjI4UJXsOMoMzOTRYsWlXr5rl27Uq1aNbp161YmebKysmjSpMCM9UBkwprc06CXRkpKSixiiYiIiBxSEvIK9mN/ejem6/vzkx1jur6i3HDDDezatYunnnoqlO3l9o9//KNM1++cwzl3QMMJZmdnU758Qp7CIiIi4jG1TkJy9913889//pNjjz2WE088kZYtW0br9u3bx9ChQ6lVqxZ33nknN910E++88w7Z2dn8+c9/ZsSIEQB06tSJ2bNnF7udIUOGULlyZT7++GO+/fZbJkyYwOTJk5k3bx5t27Zl0qRJTJgwgeXLlzNu3DgAxo8fz6pVqxg1ahTZ2dkMGDCAJUuW0LhxYx577DGqVq1KZmYmY8eOpVWrVqSkpDBq1ChmzJhB5cqVefXVV6lRowYbNmzgoosuYseOHQVmZLz//vuZOnUqv/zyC+effz533nknWVlZdOnShbZt27J48WLeeOMNateuDUSupg8dOpTvv/+eo446ismTJ/P73/+eIUOGkJyczMcff0xGRgZ//vOfGTBgADt37qRHjx6MGzeuwCQ1Ioe6g5604RCfsEGkOB1n/7nEZb5Iu4Ims4ub2ES/IxJb6iISgoULFzJt2jSWLVvGzJkz83QLyWnQ1qtXj3vuuYenn36a1NRU3n//fRYuXMj48ePZsGHDAW1vy5YtzJs3jwcffJDu3btzzTXXsHLlSlasWMHSpUvp27cvr7/+Onv27AFg4sSJDB06FIC1a9dy+eWXs3r1ao488shCr1zv3LmTdu3asWzZMs444wzGjx8PwKhRoxg5ciQrVqygZs2a0eVnzZrF+vXrWbBgAUuXLmXx4sV88MEHAKxfv57LL7+clStXRhvXAFdeeSWDBw9m+fLl9O3bl6uuuipa99VXX/Hf//6XBx54gFGjRjFq1ChWrFhBrVq1Dmg/iYiIiJQFXcEOwdy5c+nRowfJyckkJydz3nnnRetGjBhB3759ueWWW4BIY3T58uVMnTqVpKQktm3bxvr166lbt26pt3feeedhZqSlpVGjRg3S0tIAaNy4MVlZWaSnp9OxY0dmzJhBw4YN2bNnD2lpaWRlZXHiiSeSkZEBwMUXX8wDDzxQYP0VK1aM9gNv2bIlb731VvR9Tps2DYCBAwdy4403Rt/TrFmzaN68ORCZBn39+vX8/ve/p3bt2rRr167ANubNm8e//vUvAC688EJuv/32aF2fPn0oV65cdLnp06cDkenUr7/++lLvJxGRQ1VJkyBByRMhaRIkkbKjBnacnXbaabz33ntcd911JCcn45zjkUce4bTTTqNq1aq/aZ2VKlUCICkpKfo453l2djYQuWnxvvvuo0GDBlxyySXRZcwsz7ryPweoUKFCtLxcuXLRdRa1vHOOm2++OdrVJUdWVhZVqlQ50Lf3m15zqCjtjJJbt24tdPazg50RTURERA6eGtghyMjIYMSIEdx8881kZ2czY8YMhg+P9Km89NJL+eCDD+jbty//+te/6NKlC0888QStW7cGYN26dZxwwgkxb1S2bduWjRs3smTJEpYvXx4t//LLL5k3bx6nnnoqzz//PKeeeuoBvc8pU6Zw8cUX89xzz0XLu3Tpwm233caAAQNISUlh06ZNVKhQodh1nXbaaUyZMoWBAwcydepU2rdvX+hy7dq1Y9q0afTr148pU6aUOquIiEgsaThNyU19sEPQunVrunfvTtOmTTn77LNJS0sjNTU1Wn/ttdfSvHlzBg4cyLBhw2jUqBHt27enSZMmjBgxInqFuH379vTp04d33nmHWrVq8eabbwJw++2389prrx1wrr59+5KRkUH16tWjZfXr1+exxx6jYcOGbNmyhUsvLfrrxfweeughHnvsMdLS0ti0aVO0vHPnzlx00UWceuqppKWl0bt3b7Zv317g9bnfxyOPPMLEiRNp2rQpU6ZM4aGHHip0m+PGjeOBBx6gadOmfPrpp3n2q4iIiEg8JOQV7JKG1du+fftv7p5RlOuvv57Ro0eza9cuzjjjDFq2bMlll10Wrb/zzjujj++77z5uvvnmAhk+/PDDQtd91113RR9PmjQp+rhOnTp88sknhdYBzJkzh2uuuSbP8mvWrMmzTE5DOPfoJblH6ejduze9e/cGoG7dusybNy9ad88990Qf59yMmF/ufLnfR+3atXn33XejGXL2Rf73cMIJJzB//nzMjClTprB27doC2xD5rT78YGCx9fXrH83ixcUv0ymcUTxFJM4OerQf0Ig/h5GEbGDHw/Dhw1m1ahW7d+9m8ODBtGjRIm5Ztm7dSps2bWjWrBmdOh3aX1ctXryYK664Aucc1apVY8KECfGOJCIiIglODeyQPP/88/GOEFWtWjXWrVsX7xgx0b59e5YtWxbvGCIiIiJRamCLiIgcAHUdEpGSqIEtIiJyiCmpkQ8lN/TVyBcpOxpFREREREQkhnQFW0RERH4Tjf0sUjg1sOMoMzOTsWPH0qpVqxKXXbp0KSNHjuSnn36iXLly3HLLLfTr1y+mebKysujWrVueofNyDBs2jGuvvZZGjRqVen0pKSl5hvQTEZHDi4amEylcQjaw/79+3WK6vutenBHT9RXmiCOOYPLkydSrV4/NmzfTsmVLunTpQrVq1cp82wD/+Mc/ynT9zjmccyQllb7XUnZ2NuXLJ+QpLCIiIh5TH+yQ3H333dSvX5/TTz+d/v37M3bs2Gjdvn37GDJkCLfeeit79+7lhhtu4Mwzz6Rp06Y89dRTAJxyyinUq1cPgOOPP57jjjuO7777rsB2hgwZwsiRI2nXrh0nnXQSs2fPZujQoTRs2JAhQ4YAMGHCBK6++uroa8aPHx+dcCY7O5sBAwbQsGFDevfuza5du4DI1fZFixYBkSvTt9xyC82aNaNdu3Z88803AGzYsCE6W+Ott96aJ9f9999P69atadq0KXfccQcQuWJev359evfuTYMGDVi0aBGbN29m8+bNfPTRR2RkZNCoUSPOPfdcFi5cyObNm+nbty8DBw6kRYsWXH755fz3v/+lXbt20W2mpKQc7KESEREROShqYIdg4cKFTJs2jWXLljFz5sxoQxX2N2jr1avHPffcw9NPP01qairvv/8+CxcuZPz48WzYsCHP+hYsWMCvv/7KH/7wh0K3t2XLFubNm8eDDz5I9+7dueaaa1i5ciUrVqxg6dKl9O3bl9dff509e/YAMHHiRIYOHQrA2rVrufzyy1m9ejVHHnlkoVeud+7cSbt27Vi2bBlnnHEG48ePByKzNY4cOZIVK1ZQs2bN6PKzZs1i/fr1LFiwgKVLl7J48WI++OADANavX8/gwYN57733qFWrVvQ1t956K3369OHtt9+md+/e3HbbbdG6r7/+mldffZXRo0dz++23M2rUKFasWJHn9SIiIiLxogZ2CObOnUuPHj1ITk6matWqnHfeedG6ESNG0KRJE2655RYg0hidPHkyGRkZtG3blh9++IH169dHl//6668ZOHAgEydOLLI7xXnnnYeZkZaWRo0aNUhLSyMpKYnGjRuTlZVFSkoKHTt2ZMaMGaxZs4Y9e/aQlpYGwIknnkhGRgYAF198cZ6pz3NUrFiRbt0i3WxatmxJVlZW9H32798fgIED9w8NNWvWLGbNmkXz5s1p0aIFa9asib6n2rVr07JlywLbWLx4Meeffz4Affv2ZcGCBdG6bt26Ua5cuehyffr0AeCiiy4q/ACIiIiIhEgdWOPstNNO47333uO6664jOTkZ5xyPPPIIp512GlWrVs2z7E8//cS5557LvffeS7t27YpcZ6VKlQBISkqKPs55np2dDURuWrzvvvto0KABl1xySXQZM8uzrvzPASpUqBAtL1euXHSdRS3vnOPmm29mxIgRecqzsrKoUqVKke+jKEccccQBv0YOPaNHjy62vn79+sUuU9LrRUREyoquYIcgIyOD119/nd27d7Njxw5mzNh/U+Sll17KOeecQ9++fcnOzqZLly488cQT0e4b69atY+fOnfz666+cf/75DBo0iN69ex90prZt27Jx40aef/756FVngC+//DJ61fr555/n1FNPPaD3OWXKFACee+65aHmXLl2YMGFCdESRTZs28e233xa7rlatWvHqq68C8PLLL9O2bdtCl2vRogXTpk0DiG5bREREJJ7UwA5B69at6d69O02bNuXss88mLS2N1NTUaP21115L8+bNGThwIMOGDaNRo0a0b9+eJk2aMGLECLKzs5k6dSoffPABkyZNIj09nfT0dJYuXQrA7bffzmuvvXbAufr27UtGRgbVq1ePltWvX5/HHnuMhg0bsmXLFi699NJSr++hhx7iscceIy0tjU2bNkXLO3fuzEUXXRS9AbJ3795s3769wOvvv/9+Zs2aBcA999zDiy++yB//+EemTp3KXXfdVeg277zzTh544AGaNm3Kp59+mme/ioiIiMRDQnYRKWlYve3btxfonnGwrr/+ekaPHs2uXbs444wzaNmyJZdddlm0/s4774w+vu+++7j55pvzZLj44ou5+OKLC1137sbnpEmToo/r1KmTZ0zr3HUAc+bMiY4ekrP8mjVr8iyT0xCePXt2tCz32Na9e/eOXlGvW7dunj7b99xzT/TxqFGjGDVqVIHsn3zyCZs3bwbghhtuiJbXqlWLl156CYh0efnll18AGDduXJ7X16xZk/nz52NmTJkyhbVr1xbYhoiIiEiYStXANrMsYDuwF8h2zrUys6OAF4E6QBbQ1zm3xSKdcB8CzgF2AUOcc0uC9QwGcsZvu8c590xQ3hKYBFQG3gBGOedcUds4qHccJ8OHD2fV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zTXXcN5553H22WcXqF+wYAFdu3bliCOOAKBXr158+OGHdO/endq1a9OuXTsA5s6dS48ePUhOTiY5OZnzzjuv0OMiIiIiEktqYIeoUqVK0cflypUr9IpwYZxzNG7cmHnz5hVaH/SPL/J5aaWlpbF06VK++uor6tatCxDtrvL6669z7733smLFCsqXL/m0KS7zv//9bz744IPoOt9888089X/7299YsmQJ77zzDmeffTbvvvsuVapUKdV7KO1yIiIiImWldHeASZlITU2levXqfPhh5KbLZ599Nno1OyUlhe3bI2Mz169fn++++y7aWN2zZw8rcw3i/uKLLwKRq8mpqamkpqbSvn17nnvuOSAyzuMxxxzDkUceWWQ5QPPmzXnqqafo3r07mzdvZt++fXz11Vd06NCBv/3tb2zbto0dO/JOvJGRkcG0adPYt28f33zzDbNnzy428759+9i4cWOede7cuTPPOrOysmjRogU33HADRx99NJs2bcpT37ZtW958801+/vlndu3axSuvvEL79gVvNM3IyOD1119n9+7d7NixgxkzZhzI4RERERH5TXQFO86eeeYZ/vSnP7Fr1y5OOukkJk6M3Ps5YMAA/vSnP1G5cmXmzZvHyy+/zFVXXcW2bdvIzs7m6quvpnEwy1FycjLNmzdnz5490X7Zo0ePZujQoTRt2pQjjjiCZ555ptjyHKeffjpjx47l3HPPZdasWVx22WXs2LED5xxXXXUV1apVY9GiRTz55JP84x//4IILLuCdd96hUaNGnHjiibRo0YLU1FQqVqxYaOZTTjmFiy++mG3btkXXmZqad6KOe+65hw0bNuCc4/TTT6dJkyZ8+eWX3HDDDTz77LOkpaXRp08fzj33XAD+9Kc/0bx5c7KysvKsp3Xr1nTv3p2mTZtSo0YN0tLSCmxLREREJNYSsoFd0rB6ZTF7YZ06dfjkk0+iz6+//vro4/nz5xdYvkePHlx88cXR5+np6XzwwQcFlsu5YpzfUUcdxfTp00tdnnvWvC5dutClSxcgMj51/n3RqlUr/vGPfwCRqbvHjh1LSkoKP/zwA23atCEtLa3YzHPmzMnzfPPmzfTr149+/foBRNedw8z43e9+x7PPPhstGzFiBCNGjACIDmWYfx9DZD+PHj2aXbt2ccYZZ3h/k6OIiIgc+hKygS2x1a1bN7Zu3cqvv/7Kbbfdxu9+97t4R4oaPnw4q1atYvfu3QwePJgWLVrEO5KUUkmjpKzet432GklFREQ8pAa2HLSirqL74Pnnn493BBEREUkwamCLSB65uwsVpn79+iUuU1K9iIjI4UwNbIm70k6uIiIiInIo0DB9IiIiIiIxpCvYEnd7t35RbL2reBx7t35b9AK1msQ4kYiIiMhvpyvYnpk9ezbdunUr021kZWXRpEnhjdJhw4axatWqA1pfSkpKLGKJiIiIHBYS8gp2rG/AOpxu6Mo/BnWsOedwzpGUVPr/22VnZ1OxDDOJiIiIxJKuYIfkgQceoEmTJjRp0oRx48Zx00038dhjj0XrR48ezdixYwHYsWMHAwcOpEGDBgwYMADnXIH1DRkyhJEjR9KuXTtOOukkZs+ezdChQ2nYsCFDhgwBYMKECVx99dXR14wfP55rrrkGiDRaBwwYQMOGDenduze7du0CIDMzk0WLFgGRK9N33XUXzZo1o127dnzzzTcAbNiwgVNPPZW0tDRuvfXWPLnuv/9+WrduTdOmTbnjjjuAyBXz+vXrM2jQIJo0acLGjRujy2dlZXH2pZfSplcvzhk2jI1ffw3A8Ftu4cq77uKMiy7i9rvu4vONGzlzwABan38+ox9+mGPbtPnNx0JERESkLKmBHYLFixczceJEPvroI+bPn8/48ePp168fU6dOjS4zderU6EyGH3/8MWPGjGHVqlV8/vnnzJ07t9D1btmyhXnz5vHggw/SvXt3rrnmGlauXMmKFStYunQpffv25fXXX2fPnj0ATJw4kaFDhwKwdu1aLr/8clavXs2RRx7J448/XmD9O3fupHXr1ixbtowzzjiD8ePHAzBq1ChGjhzJihUrqFmzZnT5WbNmsX79ehYsWMDSpUtZvHhxdCbH9evXc/nll7Ny5Upq164dfc2VV17JgO7dWfCvf9Hv3HO57v/9v2jdpm++4b1nn+W+u+7i+jFj+POAASx85RVO8GgiGxEREZH81MAOwZw5czj//POpUqUKKSkp9OrViw8//JBvv/2WzZs3s2zZMqpXr86JJ54IQJs2bTjhhBNISkoiPT2drKysQtd73nnnYWakpaVRo0YN0tLSSEpKonHjxmRlZZGSkkLHjh2ZMWMGa9asYc+ePdFpzE888UQyMjIAuPjiiwtMXw5QsWJFunbtCkDLli2jOebOnUv//v0BGDhwYHT5WbNmMWvWLJo3b06LFi1Ys2YN69evB6B27dq0a9euwDbmzZtHv3POAeCibt2Y9/HH0bpenTtTrlw5ABYsW0avzp0BosuLiIiI+Cgh+2D7ok+fPrz88sv873//i169BqhUqVL0cbly5cjOzi709TnLJSUl5XlNUlJS9DXDhg3jvvvuo0GDBlxyySXRZcwsz7ryPweoUKFCtDx/jsKWd85x8803M2LEiDzlWVlZVKlSpdD3UJwqlSsf8GtERERE4k1XsEPQvn17pk+fzq5du9i5cyevvPIK7du3p1+/fkyZMoWXX36ZPn36lMm227Zty8aNG3n++eejV50BvvzyS+bNmwdEphM//fTTS73OjIwMpkyZAsBzzz0XLe/SpQsTJkxgx44dAGzatIlvvy1meD3gtNNO46X//AeAKf/+N6e1aFHocq2bNmX6228D8NLMmaXOKiIiIhI2NbBD0KJFC4YMGUKbNm1o27Ytw4YNo3nz5jRu3Jjt27dzwgkn5OnLXJTbb7+d11577YC337dvXzIyMqhevXq0rH79+jz22GM0bNiQLVu2MHLkyFKv76GHHuKxxx4jLS2NTZs2Rcs7d+7MRRddFL0Bsnfv3mzfvr3Y9/HII4/w7PTptOnVixdmzGDsTTcVus37b7yRhydPpk2vXny+cSNHVtXMjiIiIuKnhOwiUtKwetu3b6dqjBtw1157Lddee22B8hUrVuR5npmZSWZmZrRh+uijj0br7rrrrujjSZMmRR/XqVOHTz75pNA6iPQBzxk9JGf5NWvWFJpz9uzZ0cc7duyI5ujduze9e/cGoG7dutGr3wD33HNP9PGoUaMYNWpUgfXmzpf7fdSuXZuZTz9dYPm/33tvnufHH3cc7z/3HGbGSzNnsm7DhkLzi4iIiMRbQjawE8XWrVtp06YNzZo1o1OnTvGOc1A+XrWKa++7D+ccqVWr8uTdd8c7koiIiEih1MA+jFWrVo1169bFO0ZMZLRsyUfTpsU7hoiIiEiJ1AdbRERERCSG1MAWEREREYkhdRERkTyG7S6+v/7qfdtoX8IyIiIiiUxXsEVEREREYkgN7BBs3bqVxx9//IBfd/vtt/N2MLlKPE2aNIkrrrii0LrTTjvtgNY1e/ZsunXrFotYIiIiIl5KyC4i77z7h5iur1PHz4qtz2lgX3755aVe5969e/OMF+2r//73v2W6/qKmiS/O3r17KVeuXBmkERERESmZrmCH4KabbuKzzz4jPT2d1q1b57mCe8UVV0QnhqlTpw433ngjLVq04JVXXmHIkCG8/PLL0bo77riDFi1akJaWFp0o5rvvvuOss86icePGDBs2jNq1a/P9998XyFCnTh1uvvlm0tPTadWqFUuWLKFLly784Q9/4MknnwRg0KBBTJ8+PfqaAQMG8O9//xuAjRs3kpmZSb169bjzzjujy6SkpACRK9OZmZn07t2bBg0aMGDAAJxzAPznP/+hQYMGtGjRgn/961/R1+7cuZOhQ4fSvn9/2vXpw+vvvgvAs9On0/vKKzn70ks5Z9iwPO/jvfnzadenD63PP58Rt93GL7/+WmDfvfTSS7zxxhs0aNCAli1bctVVV+mquYiIiIRGDewQjBkzhj/84Q8sXbqU+++/v9hljz76aJYsWRKdNTG3Y445hiVLljBy5EjGjh0LwJ133knHjh1ZuXIlvXv35ssvvyxy3b///e9ZunQp7du3jzbe58+fzx133AHApZdeGm3sb9u2jf/+97906dIFgAULFjBt2jSWL1/OSy+9xKJFiwqs/+OPP2bcuHGsWrWKzz//nLlz57J7924uu+wyXn/9dRYvXsz//ve/6PL33nsvHTt25MMXXuA/Tz/NLQ88wM5duwBYumoVzz3wALNyzUq5+5dfGH7rrTx7//0sfOUV9u7dy/gXXyyw73r27MmIESOYOXMmixcv5rvvvit2n4uIiIjEkhrYnunXr1+Rdb169QKgZcuWZGVlAZFp0C+88EIAunbtSvXq1Yt8fffu3QFIS0ujbdu2VK1alWOPPZZKlSqxdetWzjzzTNavX893333HCy+8wAUXXED58pFeRGeddRZHH300lStXplevXsyZM6fA+tu0aUOtWrVISkoiPT2drKws1qxZQ926dalXrx5mxsUXXxxdftasWYwZM4a2vXvTZehQdv/yCxuDBnjHU0/lqNTUPOtfl5VFnRNOoF6dOgAM6N6dOYsXF9h3a9as4aSTTqJu3boA9O/fv8h9IiIiIhJrCdkHO57Kly/Pvn37os93796dp75KlSpFvrZSpUoAlCtX7jf1Tc55fVJSUvRxzvOc9Q0aNIh//vOfTJkyhYkTJ0aXMbM868r/PPf6S5vROce0adP4/Z49ecoXLl9OlcqVS/mu9itu34mIiIiERVewQ1C1alW2b98OQO3atVm1ahW//PILW7du5Z133jmodWdkZDB16lQgckV4y5YtB7W+IUOGMG7cOAAaNWoULX/rrbf48ccf+fnnn5k+fToZGRmlWl+DBg3Iysris88iN4K+8MIL0bouXbrwyCOPRPtqL129uth1nVKnDl9s3sxnQTeYF15/nfatWhVYrn79+nz++efRq/wv5upGIiIiIlLWSt3ANrNyZvaxmc0Intc1s4/M7FMze9HMKgbllYLnnwb1dXKt4+agfK2ZdclV3jUo+9TMbspVXug2DjVHH300GRkZNGnShIcffpi+ffvSpEkT+vbtS/PmzQ9q3XfccQezZs2iSZMmvPTSS/zud7+jatWqAJxzzjls3rz5gNZXo0YNGjZsyCWXXJKnvE2bNlxwwQU0bdqUCy64gFaFNGwLk5yczN///nfOPfdcWrRowXHHHRetu+2229izZw9tevWiZc+e3PXoo4Wuo89FF7H5229JrlSJp+6+mwHXXUfr88/HkpIY1rdvgeUrV67M448/TteuXWnZsiVVq1YlNV93ExEREZGyciBdREYBq4Ejg+d/Ax50zk0xsyeBS4Engn+3OOdONrMLg+X6mVkj4EKgMXA88LaZnRKs6zHgLOArYKGZveacW1XMNg5KScPqbd++PdpIjZXnn38+z/P/+7//K7BMzhXXHJNy3eCXu65Vq1bMnj0bgNTUVN58803Kly/PvHnzWLhwYbSrxhtvvFHo64cMGcKQIUMKrdu1axfr16/P0285//K57dixA4DMzEwyMzOj5Y/maix37do1OupJbpUrV+app57i508+yVM+sGdPBvbsGX3+0vPPU/HbbwHo0K4d8196qcC68u+7Dh06sGbNGpxz/PnPfy71fwhERETk0FeaIZl37byGd969tMj6ktqLxSnVFWwzqwWcC/wjeG5AR+DlYJFngJ7B4x7Bc4L6TsHyPYApzrlfnHMbgE+BNsHPp865z51zvwJTgB4lbEMCX375Ja1bt6ZZs2ZcddVVjB8//jev6+2336Zhw4ZceeWVh/wV3/Hjx5Oenk7jxo3Ztm0bI0aMiHckERERSRCW0/+12IXMXgb+H1AVuB4YAsx3zp0c1J8IzHTONTGzT4CuzrmvgrrPgLbA6OA1/wzKnwZmBpvo6pwbFpQPzLd8gW0Ukm84MBygRo0a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\n",
"text/plain": [
"<Figure size 864x432 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
" df.groupby([pandas.Grouper(freq=\"1M\"), \"origin\"])[\"count\"].sum().unstack().plot.bar(stacked=True);"
]
},
{
"cell_type": "markdown",
"id": "7fc3c076",
"metadata": {},
"source": [
"## how is binder used"
]
},
{
"cell_type": "code",
"execution_count": 7,
"id": "128922d5",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'This dataset counts content from 112,920 different repositories.'"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
" F\"This dataset counts content from {db[[db.provider, db.repo]].distinct().count().execute():,} different repositories.\""
]
},
{
"cell_type": "markdown",
"id": "6f37c9d8",
"metadata": {},
"source": [
"with millions of deploys, and over 100,000 content source, there are diverse applications of binder. below we list some common applications of binders:\n",
"\n"
]
},
{
"cell_type": "markdown",
"id": "bc87cc7d",
"metadata": {},
"source": [
"### i ❤️ binder more than you\n",
"\n",
"A small percentage of the binders deploy content through gist. personally, gist are my favorite way to share ideas and content with others."
]
},
{
"cell_type": "raw",
"id": "8fd5f623",
"metadata": {},
"source": [
"<details open><summary>I was so excited that we could deploy binders with <code>gist</code> I can assure you that I used it the first month it was available.</summary>"
]
},
{
"cell_type": "code",
"execution_count": 8,
"id": "c0e33c97",
"metadata": {},
"outputs": [],
"source": [
" assert (\n",
" # Get the date of the first appearance of binder\n",
" appearances.loc[\"Gist\", appearances.columns[0]].strftime(\"%Y-%m\") \n",
" == \n",
" # and compare it the first record, of my (ie. tonyfast's) first gist binder.\n",
" db.filter([db.org == \"tonyfast\", db.provider==\"Gist\"]).sort_by(\"date\").head(1).date.execute().iloc[0])"
]
},
{
"cell_type": "raw",
"id": "20767eda",
"metadata": {},
"source": [
"</details>"
]
},
{
"cell_type": "code",
"execution_count": 9,
"id": "59f3ebad",
"metadata": {},
"outputs": [],
"source": [
" gist = db[db.provider == \"Gist\"][db.spec, db.repo, db.org].distinct().execute(1e6)"
]
},
{
"cell_type": "markdown",
"id": "c76a4ffa",
"metadata": {},
"source": [
"i've made hella binders, when we look at the numbers, for better or worse, i lead the pack in unique binders i've built with github gist. since i frequently work in notebooks, gist provides a means for me to share content with the minimum number of files necessary. usually, i can get away witha notebook and `requirements.txt` or an `environment.yml`"
]
},
{
"cell_type": "code",
"execution_count": 10,
"id": "901ddfcb",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>tonyfast</th>\n",
" <th>NehaAkashDeo</th>\n",
" <th>ArthurAraujoBrum</th>\n",
" <th>manics</th>\n",
" <th>jtpio</th>\n",
" <th>bollwyvl</th>\n",
" <th>rsignell-usgs</th>\n",
" <th>anonymous</th>\n",
" <th>parente</th>\n",
" <th>ELC</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>binder on gist</th>\n",
" <td>56</td>\n",
" <td>44</td>\n",
" <td>31</td>\n",
" <td>29</td>\n",
" <td>23</td>\n",
" <td>22</td>\n",
" <td>15</td>\n",
" <td>14</td>\n",
" <td>13</td>\n",
" <td>13</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" tonyfast NehaAkashDeo ArthurAraujoBrum manics jtpio \\\n",
"binder on gist 56 44 31 29 23 \n",
"\n",
" bollwyvl rsignell-usgs anonymous parente ELC \n",
"binder on gist 22 15 14 13 13 "
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
" gist.org.value_counts().sort_values(ascending=False).head(10).to_frame(\"binder on gist\").T"
]
},
{
"cell_type": "markdown",
"id": "6692c8f9",
"metadata": {},
"source": [
"## binders are designed and architected\n",
"\n",
"when we make a binder, we are making a statement of the reprodubibility of an idea. at the same time we make a statement that something is reproducible we have to acknowledge that there may be a time when it is not reproducible. the continuous current of software changes in open source may require new techonologies or versions or breaking api changes.\n",
"\n",
"the complexity of a binder grows with the requirements of project, not the content."
]
},
{
"cell_type": "markdown",
"id": "9e92bf13",
"metadata": {},
"source": [
"## making this notebook a binder."
]
},
{
"cell_type": "raw",
"id": "ff685790",
"metadata": {},
"source": [
"<details open><summary>A <code>requirements.txt</code> with the dependencies needed to run this document.</summary>"
]
},
{
"cell_type": "code",
"execution_count": 11,
"id": "5640351f",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Overwriting requirements.txt\n"
]
}
],
"source": [
" %%file requirements.txt\n",
" ibis-framework[sqlite]\n",
" pandas\n",
" matplotlib"
]
},
{
"cell_type": "raw",
"id": "b4eb82cf",
"metadata": {},
"source": [
"</details>"
]
},
{
"cell_type": "markdown",
"id": "b44997e7",
"metadata": {},
"source": [
"> My preferred practice for sharing gist is through official Github `gh` cli."
]
},
{
"cell_type": "markdown",
"id": "5307f041",
"metadata": {},
"source": [
" !gh gist create -p 2021-binder-is-the-best.ipynb requirements.txt"
]
},
{
"cell_type": "markdown",
"id": "d6a51383",
"metadata": {},
"source": [
"The CLI tells me that we now have a gist @ https://gist.github.com/54e95a64de8a959f83f8443710ff53d1"
]
},
{
"cell_type": "markdown",
"id": "e2c734d0",
"metadata": {},
"source": [
"and build the url for our binder on the mybinder site, and we have to remember to gist the Gist provider.\n",
"\n",
"https://mybinder.org/v2/gist/tonyfast/54e95a64de8a959f83f8443710ff53d1/HEAD\n",
" \n",
"[![Binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gist/tonyfast/54e95a64de8a959f83f8443710ff53d1/HEAD)\n",
"\n",
"This won't work til i slice off some data."
]
}
],
"metadata": {
"kernelspec": {
"display_name": "ibis",
"language": "python",
"name": "ibis"
},
"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.8.8"
}
},
"nbformat": 4,
"nbformat_minor": 5
}
ibis-framework[sqlite]
pandas
matplotlib
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment