Skip to content
GitLab
Explore
Sign in
Register
Primary navigation
Search or go to…
Project
5
5Give
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Package Registry
Container Registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Ashwin Rao
5Give
Commits
7c722128
Commit
7c722128
authored
4 years ago
by
Ashwin Rao
Browse files
Options
Downloads
Patches
Plain Diff
Cleaned up ipy
parent
e7e36f4d
No related branches found
Branches containing commit
No related tags found
No related merge requests found
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
parse_results/parse_rtcm3_logs.ipynb
+0
-169
0 additions, 169 deletions
parse_results/parse_rtcm3_logs.ipynb
with
0 additions
and
169 deletions
parse_results/parse_rtcm3_logs.ipynb
deleted
100644 → 0
+
0
−
169
View file @
e7e36f4d
{
"cells": [
{
"cell_type": "code",
"execution_count": 24,
"metadata": {},
"outputs": [],
"source": [
"# Parse the RTCM3 Logs\n",
"import seaborn as sns\n",
"import pandas\n",
"import matplotlib.pyplot as plt"
]
},
{
"cell_type": "code",
"execution_count": 25,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" Location Technology ts_relay ts_client Latency\n",
"0 University Ethernet 1.612947e+09 1.612947e+09 3.827095\n",
"1 University Ethernet 1.612947e+09 1.612947e+09 3.447056\n",
"2 University Ethernet 1.612947e+09 1.612947e+09 3.516912\n",
"3 University Ethernet 1.612947e+09 1.612947e+09 3.500938\n",
"4 University Ethernet 1.612947e+09 1.612947e+09 3.642082\n",
"... ... ... ... ... ...\n",
"6490 University 5G 1.612960e+09 1.612960e+09 16.270876\n",
"6491 University 5G 1.612960e+09 1.612960e+09 16.198874\n",
"6492 University 5G 1.612960e+09 1.612960e+09 4.643917\n",
"6493 University 5G 1.612960e+09 1.612960e+09 15.842915\n",
"6494 University 5G 1.612960e+09 1.612960e+09 21.540880\n",
"\n",
"[6495 rows x 5 columns]\n"
]
}
],
"source": [
"# Read the file\n",
"timestamps = pandas.read_csv(\"./timestamps.csv\")\n",
"timestamps[\"Latency\"] = (timestamps[\"ts_client\"]-timestamps[\"ts_relay\"])*1000\n",
"print(timestamps)"
]
},
{
"cell_type": "code",
"execution_count": 33,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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+/b88MMPvPzyyzRv3hxnZ2cAPv744/uqoV27dowePZr//ve/vPrqq1StWpVq1arh4uLCpUuXiI6O5vr160yYMIHHH3/8vu6VF97e3nz11VeMGDGCDz/8kFmzZlGrVi08PDxISEjg6NGjXLhwgc6dO9OhQwdzv7Zt2/LVV18xf/58jh07Rrly5TAYDPTo0YPGjRvne913sigQ/v7773z11Vc0btyY9957L9O5OXPm8OWXX5onexoMBv71r38RGBhovWpFREQKSOEb5CifLzVnNyJ3p9q1a5sD4b///W8MBgMbN25k48aNpKamAvcfCAEGDRpEixYtCAoKIiwsjF27dmFvb0/ZsmVp2rQpbdq0uev2MtbUvHlzfvnlFxYsWMC2bdvYv38/aWlpeHl5UblyZfr165dlW5o6deowbdo0vv/+e/bu3UtSUhJwey/FBx0IDaZ/7jCdi//7v/9j5cqVfPrpp5neFxwdHW1+5Uz58uVxcHAgJiYGg8HAggULMm0m+bAICAggLCwMPz8/goKCCrocERG5D9HR0cDtv6BFCgtLft/eLbdYNIfwwIEDAFk2glyyZAkmk4kOHTqwZcsWNm3axIABAzCZTCxatMiSW4iIiIjIA2ZRILxy5QqOjo5Z3lH8+++/YzAYCAwMNO/dk/FKl3379lmpVBERERHJDxYFwoSEhCybOf7999+cO3eOUqVKUb9+ffPxMmXK4OLiwuXLl61TqYiIiIjkC4sCoYuLCwkJCeZJjwB//PEHQLbzBA0Gw329u1hERERE8p9FgTDjRc/Lly8HwGQysXTpUgwGQ5b3Gl67do3ExMQcX4AtIiIiIrbBom1nunXrRlhYGJ999hm///47V65cISoqCicnJ5577rlMbcPDwwGoUaOG9aoVEREREauzaITQ39+f5557jrS0NHbs2EFUVBSOjo68//77eHh4ZGq7Zs0aAFq0aGG9akVERETE6iwaITQYDEyZMoW+ffuyf/9+XF1dadGiBVWqVMnULjU1lYoVKzJw4EDatGlj1YJFRERExLru6dV1TZs2pWnTpjmed3R0ZNSoUfdclIiIiIg8OBY9MhYRERGRh889jRBmuHnzJtevXyctLS3XdhUqVLif24iIiIhIPrI4EF67do25c+cSHBxMTEzMXdsbDAYOHz58T8WJiIiISP6zKBBeuHCB/v37c+HCBUwm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V0RERGxQ9erVAbh48aL5WN26dQE4dOhQgdQkeWe1bczt7e1p3bo1nTt3Nv8GMJlMpKSksG7dOl5++WX8/f35448/rHVLERERsRHx8fEAmR71tmnTBoCQkJAcRwnFNlglEB4+fJiPPvrIPBp44MABHBwc6NixI1OmTKFnz544OTkRHR3NK6+8Yl6GLiIiIg+H9evXA5lXFLds2ZIGDRqQkpLChx9+iMlkKqjy5C7u+U0lV69eZc2aNaxYsYKjR48Ct0cEq1evTq9evejatat5VdFzzz3H6NGj+eSTT1ixYgVfffWV+V8NIiIiYvuio6OJjY2ldevW2Nvbm4+npaXx448/EhQUBGRdeDJlyhR69erF+vXruXXrFqNGjcr2Pch79uzJ1/oldxYFQqPRyI4dO1ixYgVbt24lLS0Nk8mEk5MTnTp1omfPnjRp0iTbvq6urkycOJH169dz/PhxqxQvIiLyQMWD3TarzbbKX/FARetd7ty5c7z55puUKlWKunXr4uHhQXx8PEePHuXvv//Gzs6Od999l1atWmXqV6VKFRYvXsyIESPYvHkzW7ZsoVatWlSpUgUnJycSEhI4evQo586dA6Bjx464urpar3DJE4sCYevWrbly5Yp5yLdu3br06tWLLl265Ok/nqOjI6VLl+bChQv3Vq2IiEgBqVmzZkGXYJmK1q3Zx8eHgQMHcvDgQY4fP058fDwGg4Hy5cvTvXt3+vfvn+MG1DVq1GD16tUEBwfz22+/ceDAAUJCQkhLS8Pd3Z3q1avTpUsXunTpUvh+zg8JiwLh5cuXcXNz4/nnn6d3797UqVPH4huOGjWKpKQki/uJiIgUpOHDhxd0CQWqcuXKjB079p7729vb07lzZzp37mzFqsRaLAqEkydP5tlnn6V48eL3fMOOHTvec18RERERsT6LAmG3bt3yqQwRERERKSgWBcKbN29y8OBBihcvTsOGDXNte+DAAVJSUmjYsOF9jSiKiIiISP6yaKnUmjVrGDhwIL/++utd2y5btoyBAweybt26ey5ORERERPKfRYEwODgYgK5du961be/evTGZTOaNKkVERETENlkUCE+ePImjoyO1a9e+a9t69erh6OjIX3/9dc/FiYiIiEj+sygQXrp0CWdnZwwGw90vbGeHi4sLly9fvufiRERERCQra78G0KJA6OrqSkJCAjdv3rxr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yLpz/uGvv/5Knz59aNSoEY0aNeKll15iz5492fb75xzC9PR0WrVqhY+PD3/++WeO9xs+fDg+Pj4sWLAg03GTycS6det45ZVXaNasGfXr1+fpp59m3Lhx2c5TvPMxbnJyMtOmTaNTp040bNiQrl27mtsdOHCA4cOH06pVK+rVq0eTJk1o374977zzDqGhoZmumd0cwoCAAAYOHAhAWFiY+eeVcW+TyUSHDh3w8fFh//79OX7ut956Cx8fHxYuXJhjGxEpWAqEIlLkffnll7zzzjs4Ojry1FNPUb58ef744w9efvll9u3bd9f+9vb25iC2YsWKbNvEx8ezZcsWHB0def75583HU1NTGT58OG+//TYRERHUrFmTNm3a4OTkxLJly+jevTsHDx7M9popKSkEBATw448/8sgjj9CmTRsqVaoEwM6dO+nXrx/BwcF4enrSrl07mjdvjru7O8HBwaxfv/6un6tVq1Y8+eSTAHh6euLv72/+1apVKwwGA/369QNg0aJF2V7j4sWLbNmyBRcXl0xhVURsix4Zi0iRt2jRIpYtW0b9+vUBMBqNfPDBByxdupTp06czb968u17D39+fuXPn8ssvv/Dee+/h4JD5/17XrVtHamoqHTt2pFSpUubjX375Jb/99hu+vr58/vnnlC9f3nxuwYIFTJo0ibfffpv169dnuWZkZCR16tRh48aNeHp6Zjo3e/ZsUlNTmTJlSqYACnD16lXOnTt3188UGBjIY489RkhICNWrV2fy5MlZ2vTo0YMvv/ySDRs2MGbMmCxzEH/66SfS0tLo06cPrq6ud72niBQMjRCKSJH31ltvmcMggJ2dHSNGjABgz549pKam3vUaNWrU4PHHH+fKlSts3749y/mVK1cCt4Njhvj4eIKCgnB2dubLL7/MFAYBBgwYwNNPP82ZM2fYsWNHtvcdP358ljAIcOXKFQBat26d5Vzp0qUzfd774ebmRteuXUlJSeHnn3/OdC41NZVly5YBmEcSRcQ2KRCKSJH39NNPZznm6elJyZIluXXrFvHx8Xm6TkbYywh/GU6cOMHBgwfx8vKiVatW5uO7d+/m5s2b+Pn5UaZMmWyv6evrC5DtHD1PT08aN26cbb+GDRsC8M477xAREUF6enqePsO9GDBgAABLlizBaDSaj2/cuJFLly7h5+dHzZo18+3+InL/9MhYRAot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\n",
"text/plain": [
"<Figure size 720x360 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"fig, ax = plt.subplots(figsize=(10,5))\n",
"sns.set_context(\"poster\"),\n",
"sns.set_style(\"white\")\n",
"\n",
"sns.boxplot(data=timestamps, x=\"Location\", y=\"Latency\",hue=\"Technology\", whis=[5,95], showfliers=False)\n",
" \n",
"#handles, labels = ax.get_legend_handles_labels() \n",
"#ax.set_xticklabels(labels=['Ethernet', 'Wi-Fi', '5G'])\n",
"ax.set_ylim(0,50)\n",
"ax.set_xlabel(\"Location\")\n",
"ax.set_ylabel(\"Latency (ms)\")\n",
"ax.grid(True, which='major', axis='y')\n",
"plt.savefig(\"timestamps.pdf\", dpi=1200, bbox_inches='tight')"
]
},
{
"cell_type": "code",
"execution_count": 30,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" Location Technology rtt\n",
"0 University Ethernet 1.49\n",
"1 University Ethernet 2.00\n",
"2 University Ethernet 1.57\n",
"3 University Ethernet 1.68\n",
"4 University Ethernet 1.98\n",
"... ... ... ...\n",
"5418 University 5G 25.60\n",
"5419 University 5G 24.00\n",
"5420 University 5G 20.60\n",
"5421 University 5G 18.70\n",
"5422 University 5G 30.60\n",
"\n",
"[5423 rows x 3 columns]\n"
]
}
],
"source": [
"ping = pandas.read_csv(\"./ping.csv\")\n",
"print(ping)\n",
"ping['Latency'] = ping['rtt']/2.0"
]
},
{
"cell_type": "code",
"execution_count": 37,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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G7GxseGXX37hl19+yXYua6h+2bJlbN26lXvuuYf33nuPmjVrAnD27Nk8rxsfHw9gbisiIiKWCwgIKPAIoJQcxS4Qwo1FkuHh4XmeP336NKdPn+bKlSsANG3aFICjR49y7dq1XN80PnDgAECBhlVFREREypJiFwg3b96c57msodVXX32Vp59+2nzc09OTZs2aER0dzfr16+nbt2+2fuHh4cTHx+Ph4UGrVq0Kq3QRERHh/9YGZsmaOs6S2xTyhQsXmDNnDlu3biUhIYGqVavSq1cvXnjhBcqXL5/rfaKiovjuu++IjIwkISEBZ2dn7r//fsaMGUPbtm1ztL95Cvunn37ixx9/5K+//uLq1atEREQQExPDyJEjadeuHd9++y1ff/01q1at4syZMzg7O/PAAw/w0ksv5bmrSVxcHN988w2///47cXFx2NnZce+99zJo0CD8/PwwGAzAjR1PunXrZu73+uuv8/rrr5v/XBRTyMUuEN6ugIAAJk6cyCeffEKrVq2oU6cOABcvXmT69OkAjB07Vt8yFhERKWRNmjTBz8+P4OBgAPz8/PJtHxcXR79+/TCZTLRq1YqrV68SGRnJwoULOXbsGF999VWOPt9++y0fffQRcGOm8P777+fcuXNs27aNbdu2MX36dAYNGpTr/d555x2CgoJo3bo1jzzyCMePHzeHNYD09HTGjh1LVFQU7dq1o0GDBuzbt481a9awe/duVq9eTcWKFbNd848//mD8+PEkJSVRp04dOnfuTEpKCvv27eP111/njz/+MNfr6OiIn58fkZGRnDp1itatW5tzC8A999xTgN+ydVkUCDMzM4mOjiYyMpKoqCjOnz/PpUuXuHbtGpUrV8bV1ZX69evTpk0b2rZtm21haWHr2bMnQ4cOZdmyZfj6+tKpUyfs7OwICwsjOTkZHx8fRowYcdfqERERKat8fHzw8fExB8IZM2bk237FihUMHDiQqVOnUq5cOQD++usvBgwYwJYtW4iMjMy2o8e2bdv48MMPqVq1KnPnzuW+++4zn4uMjCQgIIC3334bb29v6tWrl+N+q1atYvny5bRs2TLXevbu3Uvz5s3ZuHEjVapUAW7s4/fkk08SHR3N0qVLee6558zt//nnHyZMmEBKSgozZsygb9++5oAZFxfHc889x6pVq+jQoQP9+vXDzc2NGTNmMHnyZE6dOsXAgQNLxkslR48e5eeff2b16tUkJiYCYDKZsrXJeqFj586dLFmyBABvb28GDBhAjx498hzutaZp06bRpk0bli5dSnh4OEajkfr169O/f3+GDh2q0UEREZE7NHLkyDzPubi4sHv3bouv6enpyRtvvGEOgwANGjSgT58+LFu2jLCwsGyBMGs6+t13380WBgHatGnDuHHj+Oijj1i+fDmTJ0/Ocb8xY8bkGQYBDAYD77//vjkMZj3bmDFjePHFFwkLC8sWCBcvXszly5cZM2ZMjtFQT09P3nnnHQYMGMCSJUuKPPjlJd9AGB0dzaeffsrOnTvNAdDR0ZFmzZrh5eWFq6srlSpVonz58ly+fJkrV65w5swZDhw4wKlTpwgPDyciIoL33nuPsWPHMnLkyGz/YVtqxowZt/xfGb6+vvj6+t72PURERCRv+W07k9fnY2+lQ4cOufatX78+cGMELktCQgL79+/H2dmZBx98MNfreXt7A7Bv375czz/66KP51lOjRo0c6x7zqgdg+/btwI3Zytw0b94cR0dHYmJiSEtLuyuDZJbKMxBOnDiR//3vf5hMJmrVqsXjjz/OY489hpeXV7Z59rxcuXKFrVu3snbtWnbs2MHMmTMJDAxkxowZdOzY0aoPISIiIndHYWw7k/V52X9zdnYG4Pr16+ZjWZ+gTU5ONu8ykpeEhIRcj99qCzpL6oEbu58ADBgwIN/rAiQmJlKtWrVbtrvb8gyEISEhtGvXjueee+62AlzFihXp3bs3vXv3JjExke+//56lS5cSGRmpQCgiIiJmlizpMhqNwI0pXB8fn3zburq65nr8ViOZli4xy8zMBKBXr163HP2zt7e36Np3S56BcNmyZVbboqVy5cpMmDCBp59+Ot/No0VERETykzV6Z2dnd8tlZHeLp6cnJ0+eZNy4cTRq1Kioy7kteUbgwtivz8nJqcT+okRERMQyWaNhGRkZVrtmtWrVuPfee7l06RK7du2y2nXvRJcuXQBYv369Rf2yfj9ZI4xFSa/dioiISKGoWrUqcGMLGWuaOHEiAK+88gqhoaE5zmdmZhIWFpbnSyXW9vTTT+Ps7Mz8+fNZunRprgH46NGj/O9//8t2LGstobV/P7fDqhtTHzlyhMjISK5fv84DDzxAw4YNrXl5ERGRImWTkkCFQ78WdRkFYpOSAFS3+nUXLFhg3l8wN0888YT57d9HH32U7777jlGjRtGhQwccHR0BeO+99+6oBh8fHyZPnszHH3/M008/Td26dalXrx5OTk6cP3+emJgYrly5wrRp07j//vvv6F4F4enpybx585g4cSJvv/02X375JY0aNcLNzY2kpCSOHDlCXFwcvXr1onv37uZ+3bp1Y968eSxevJijR49SrVo1DAYD/fv3p3Xr1oVe980sCoS///478+bNo3Xr1rz66qvZzi1YsIDZs2ebF3saDAb+85//EBAQYL1qRUREikjJG+SoXig15zYid7PGjRubA+GLL76IwWBgw4YNbNiwgfT0dODOAyHA6NGj6dixI4GBgYSHh7Nz505sbW2pWrUqbdu2pWvXrrfcXsaaOnTowK+//sqSJUvYunUr+/btIyMjAw8PD2rXrs2wYcNybEvTpEkTZs2axbfffsuePXtISUkBbuyleLcDocH07x2m8/Hf//6X4OBgPvjgg2zfC46JiTF/cqZ69erY2dkRGxuLwWBgyZIl2TaTLC38/f0JDw+nXbt2BAYGFnU5IiJyB2JiYoAb/wUtUlJY8vf2VrnFojWE+/fvB8ixEeTy5csxmUx0796dzZs3s3HjRkaMGIHJZCIoKMiSW4iIiIjIXWZRILx48SL29vY5vlH8+++/YzAYCAgIMO/dk/VJl71791qpVBEREREpDBYFwqSkpBybOf7zzz+cOXOGypUr07x5c/PxKlWq4OTkxIULF6xTqYiIiIgUCosCoZOTE0lJSeZFjwB//PEHQK7rBA0Gwx19u1hERERECp9FgTDrQ88rVqwAwGQy8eOPP2IwGHJ81/Dy5cskJyfn+QFsERERESkeLNp2pm/fvoSHh/Phhx/y+++/c/HiRaKjo3FwcODxxx/P1jYiIgKABg0aWK9aEREREbE6i0YI/fz8ePzxx8nIyGD79u1ER0djb2/Pm2++iZubW7a2q1evBqBjx47Wq1ZERERErM6iEUKDwcDMmTMZOnQo+/btw9nZmY4dO1KnTp1s7dLT06lZsyYjR46ka9euVi1YRERERKzrtj5d17ZtW9q2bZvneXt7e1577bXbLkpERERE7h6LpoxFREREpPS5rRHCLNeuXePKlStkZGTk265GjRp3chsRERERKUQWB8LLly+zcOFCQkJCiI2NvWV7g8HAoUOHbqs4ERERESl8FgXCuLg4hg8fTlxcHCaTqUB9CtpORERERIqGRYHw448/5uzZs7i7u/PKK6/QsWNH3N3dzd8vFhERKa3mzJnDsWPHiroMizRs2JAJEyYUdRlSAlgUCHfs2IHBYGDOnDm0bt26sGoSEREpdo4dO8aRg3u4xzmzqEspkFPJtla71smTJ+nevTu2traEh4fj7Oyco82CBQuYOXMmAD/++CP33XdfjjZbtmzh2WefxcPDg9DQUCZPnkxwcDAffPAB/fr1K3A9K1eu5PXXX8+3TePGjVm1apW5rZ+fHzNmzCjwPcoaiwJheno6Dg4OCoMiIlIm3eOcyRttk4u6jAJ5d3fO0Ha76tSpQ/Xq1YmPj2f37t08/PDDOdrs2rUr28+5BcLw8HAA2rVrZ5W63N3d6dy5c67nPD09rXKPssKiQFi3bl2OHj1KRkYGdnZ39IKyiIiIlCDe3t6sWbOGXbt25QiEGRkZ7Nmzh0aNGnHixAnCw8MJCAjIcY2sQNi+fXsAXnrpJcaOHUvVqlVvq6b69evfctTv0Ucf5b777sPFxeW27lFWWLT4b/DgwaSnp7N+/frCqkdERESKoawQlxXqbhYdHU1KSgqdO3emefPm7NmzJ8eWdMnJycTExAD/N0JYtWpVGjRoUKhhzcXFhQYNGtx26CwrLA6Ejz/+OG+99Zb5W8UiIiJS+mUFwpiYGJKTs0+bZ4VEb29vvL29uXr1KtHR0dnaREZGkpmZSdWqValXrx4AkydPxsvLi5UrVxZa3StXrsTLy4vJkycX2j1KA4vnfWfOnMns2bN57bXXmDVrFg0aNMDDwyPP9gaDgffff/+OihQREZGidc899+Dp6UlcXFyOdYTh4eHY2NjQtm1b7OzsWLBgQY51hFlrDK21flCsy+JA+N133/Hdd99hMpmIi4sjLi4u3/YKhCIiIqWDt7c3q1evJjw83BwIMzMz2bNnD15eXlSsWJHWrVtja2tLREREtnWEERERAHTo0KEoSpdbsCgQrlq1yrx4s06dOrRv354qVapga2u9V9tFRESkeGrfvr05EGaJjo4mOTmZtm3bAuDs7EyTJk3MU8S2trYkJyebv1pmzRHC8PBwvLy8cj23adMmatWqZbV7lXYWBcLvvvsOg8HAkCFDmDp1KgaDobDqEhERkWImax3hoUOHSE5OxtnZOdetZLy9vTl48CDR0dG0bNmSyMhIMjIyqF69OnXq1LFaPfltO+Po6Gi1+5QFFgXC48ePYzAYmDRpksKgiIhIGVO7dm1q1KjB2bNniYyM5KGHHiIiIgKDwWAeIYQbgXDRokXs2rWLli1bmqeLCzI6uHv3bn7++eccxwcMGJDtHlCwbWekYCwKhM7Ozly/fh0nJ6fCqkdERESKMW9vb1atWsWuXbt48MEHiYyMpGHDhri5uZnbtG3bFoPBQHh4OGPHjs2x/2B+Tp06RXBwcI7j7dq1yxEIxXosCoTt27fnt99+4+zZs9SoUaOwahIREZFiqn379qxatYrw8HBiYmJISkriiSeeyNamUqVK3HvvvURGRpKUlGTegqYggbBfv34WfcZOrMOifQiff/55HB0deffddzEajYVVk4iIiBRTWdO+hw4dYsuWLdmO3SxrP8Lvv/+ejIwMatSoQe3ate9qrVJwFgXCChUq8O677xIREcHjjz/OTz/9RFRUFGfPns33HxERESkdateuTc2aNcnMzCQwMBC4Ef7+LevY4sWLAe0/WNxZNGXcrVs388/JyclMnTr1ln0MBoP5VXMREZGS7FSyLe/udi7qMgrkVLIt9xbStb29vTlz5gyXL1+mbt26uX6gIisQXr58GSjYdLEUHYsCoclksvgGt9MHIDAwkN27d3PkyBESEhJITk7GxcWFxo0b4+fnR+/evXN909loNLJs2TJWrFjB8ePHsbGxwcvLi2HDhuVY4yAiIlJQDRs2LOoSLHIvhVdz+/bt+eWXX4DcRwcBqlSpQv369fn7778BjRAWdwbT7Sa2QtalSxcSEhJo1KgR1apVw8HBgbNnzxIVFYXJZKJbt27MnTsXG5v/m/XOzMxk/PjxbN68GWdnZzp27Mj169cJCwvj+vXr+Pv788Ybb1ilPn9/f8LDw2nXrp15yFxEREqmmJgYAJo0aVLElYgUnCV/b2+VWyz+dN3d8umnn9K0adMcG0sePXqUUaNGsWnTJoKDg+nfv7/53OLFi9m8eTMNGzZk8eLFuLu7A3DixAmGDx9OYGAgHTp0wMfH564+i4iIiEhxZtFLJXdT27Ztc91lvFGjRgwbNgyAnTt3mo9nZmby9ddfAzBt2jRzGASoW7cukyZNAuCrr74qzLJFRERESpxiGwjzY2d3Y2CzXLly5mN79+7l4sWLVK9ePdf1DD179sTe3p4DBw5w7ty5u1ariIiISHGXZyD09/fnjz/+sNqNLl++zOzZs/n+++/v6DqnT5/mhx9+AKBr167m41nz6C1atMi1n4ODg3lxbVZbEREREclnDWFkZCSjR4/mvvvuY/DgwTz66KM4O1v+qv3evXtZu3YtK1euJDU1lYkTJ1rUf8WKFURERJCens65c+fYu3cvRqORZ599lkcffdTcLjY2FiDfL6h4enoSExNjbmsNSUlJREZGWu16IiJSNCpUqMDVq1eLugyRAjMajVy7dq1AOSQpKSnf83kGwjVr1jBr1iw2btxIVFQUb731Fp06daJ169Y0b94cLy8vXF1ds73le/XqVWJjYzl48CAHDhxg+/btxMXFYTKZcHd355VXXmHQoEEWPCrs2bMn2zcN7ezsmDhxIqNHj87WLiUlBbgxEpiXrDWJ+hdeRERE5P/kGQgbNGjA3LlziYqKYtGiRWzatImtW7eybdu2bO0cHR2xt7cnOTmZzMxM8/Gs3Wzq1KnD4MGDGTp0aL5hLS/vvfce7733HteuXSM2NpYVK1Ywd+5c1q1bx4IFC6hWrZrF17QmFxcX2rRpU6Q1iIjInclaSuTk5FTElYgUnI2NDY6OjgXadsbFxSXf87fcdua+++7js88+IzExkTVr1rBjxw727t1r3nn836NtNjY2NGrUiDZt2tCrVy/atm17yyILokKFCjRs2JDXXnsNDw8PPvzwQ9555x3mzp0L/N/oX2pqap7XyBpF1L/wIiIiIv+nwPsQVq5cGX9/f/z9/QE4efIk58+f59KlS1y/fp1KlSrh6upKnTp1bmutoSX8/Pz48MMP2bJlC+np6djb21OzZk2AfL+dHB8fD2BuKyIiIiJ3sDF1nTp1qFOnjjVrKbBKlSphZ2dHRkYGly9fxt3dnaZNmwJw4MCBXPukpqZy9OhRAHNbERERESmh+xBGRESQkZFBxYoVcXV1BaBVq1a4ubkRHx9PREREjj7r168nPT2dFi1aFPm6QxEREZHipFgGwt27d7NlyxYyMjJynIuMjGTKlCkADBgwAFtbWwBsbW0ZM2YMcONLJRcvXjT3OXHiBDNnzgTg2WefLezyRUREREqUYvkt41OnTvH6669TsWJFmjZtiru7O1evXuX06dMcO3YMgIcffjjHnoajRo0iIiKCLVu20L17dzp27EhGRgY7d+4kLS0Nf39/fcdYRERE5F+KZSD09vZm3Lhx7N69m5MnT7J3715MJhMeHh706NGD3r175xrsbG1t+eKLLwgKCmLlypWEhoZiY2NDs2bNGDZsGL6+vkXwNCIiUhrMmTPHPChRUjRs2JAJEyYUdRlSAhTLQFi7dm2Lv2iSxcbGhhEjRjBixAgrVyUiImXZsWPH2Bu9FyoXdSUFlGj9S06ePDnbxyL+rV69eqxfvz7Xc0ajkZCQEDZs2EBUVBQJCQmkp6dTqVIl6tevj7e3N7169TJ/ZlburmIZCEVERIqlymB82FjUVRSIzdbCe02gdevWue404uHhkWv7EydOMGHCBA4fPozBYKBRo0Y0btyYChUqcPHiRQ4ePEh4eDhffPEFzzzzDC+++GKh1S65UyAUERERiwwcOJB+/foVqO3p06cZPHgwiYmJdO3alddff5177rknW5vMzExCQ0OZP38+x48fL4yS5RYUCEVERKTQvPzyyyQmJvLYY48xa9YsDAZDjja2trY89NBDdOnSJc/9hKVwWTSenJycXFh1iIiISCkTFhZGVFQU5cuXZ+rUqbmGwZsZDAZatmx5l6qTm1k0Qti5c2e6d+9Ov379aN++fWHVJCIiIsXYrl27OHz4MCkpKVSpUoU2bdrwwAMPYGOTfZxp8+bNADz44IO4ubkVRalSQBYFwtTUVFavXs3q1aupVasW/fr1w8/Pj+rVqxdWfSIiIlLM/PLLLzmONWzYkE8//RQvLy/zsejoaACaN29+t0qT22RRIFy8eDE///wzGzdu5PTp08yZM4e5c+fSqVMn+vfvT7du3bC3ty+sWkVERKQINW7cmDfeeINOnTrh6elJcnIyhw4dYtasWfz555+MHj2a4OBg8ydiL126BJDn6OCaNWvYsWNHjuNvvvkmTk5OhfcgkoNFgbB9+/a0b9+e5ORk1q5dy8qVK4mKiuL3338nNDSUSpUq4evrS//+/WncuHFh1SwiIiJFYNSoUdn+7OjoSNWqVenUqRP+/v7s27eP+fPnM3Xq1AJdb//+/bnua/jqq68qEN5lt7VJkbOzM4MHD2b58uWsXbuW0aNHU6VKFRITE1myZAl+fn7069ePoKAgkpKSrF2ziIiIFCPlypUjICAAgG3btpmPu7q6ApCQkJBrvylTpnD48GHzP1J07njXygYNGvDaa6+xbds25s2bR7du3bC1tSUmJoZ33nmHBx98kJdffpldu3ZZo14REREphurXrw/AuXPnzMeaNm0KwMGDB4ukJik4q21jbmtrS5cuXejVq5f5L4DJZCItLY21a9cyatQo/Pz8+OOPP6x1SxERESkmEhMTAbJN9Xbt2hWA0NDQPEcJpXiwSiA8dOgQ7777rnk0cP/+/djZ2dGjRw9mzpzJgAEDcHBwICYmhqeeesr8GrqIiIiUDuvWrQOyv1HcqVMnWrRoQVpaGm+//TYmk6moypNbuO0vlVy6dInVq1ezcuVKjhw5AtwYEaxfvz4DBw6kT58+5reKHn/8cSZPnsz777/PypUrmTdvnvl/NYiIiEjxFxMTQ3x8PF26dMHW1tZ8PCMjg++//57AwEAg54snM2fOZODAgaxbt47r16/z2muv5fod5N27dxdq/ZI/iwKh0Whk+/btrFy5ki1btpCRkYHJZMLBwYGePXsyYMAA2rRpk2tfZ2dnpk+fzrp16zh27JhVihcREbmrEsFmq9VWWxWuRKCm9S535swZnn/+eSpXrkzTpk1xc3MjMTGRI0eO8M8//2BjY8Mrr7xC586ds/WrU6cOy5YtY+LEiWzatInNmzfTqFEj6tSpg4ODA0lJSRw5coQzZ84A0KNHD5ydna1XuBSIRYGwS5cuXLx40Tzk27RpUwYOHIivr2+B/sOzt7fH1dWVuLi426tWRESkiDRs2LCoS7BMTevW7OXlxciRIzlw4ADHjh0jMTERg8FA9erV6devH8OHD89zA+oGDRqwatUqQkJC+N///sf+/fsJDQ0lIyODihUrUr9+fXx9ffH19S15v+dSwqJAeOHCBVxcXHjiiScYNGgQTZo0sfiGr732GikpKRb3ExERKUoTJkwo6hKKVO3atZkyZcpt97e1taVXr1706tXLilWJtVgUCGfMmMFjjz1G+fLlb/uGPXr0uO2+IiIiImJ9FgXCvn37FlIZIiIiIlJULAqE165d48CBA5QvX56WLVvm23b//v2kpaXRsmXLOxpRFBEREZHCZdGrUqtXr2bkyJH89ttvt2z7008/MXLkSNauXXvbxYmIiIhI4bMoEIaEhADQp0+fW7YdNGgQJpPJvFGliIiIiBRPFgXC48ePY29vT+PGjW/ZtlmzZtjb2/P333/fdnEiIiIiUvgsCoTnz5/H0dERg8Fw6wvb2ODk5MSFCxduuzgRERERycnanwG0KBA6OzuTlJTEtWvXbtn22rVrJCUlUaFChdsuTkRE5G7IGugwGo1FXIlIwWT9XS3IIF1BWBQIvby8MBqN/O9//7tl25CQEDIzM2nUqNFtFyciInI3ZO2GcfXq1SKuRKRgrly5AmC1gTeLAuFjjz2GyWRixowZHD16NM92R44cYcaMGRgMBh577LE7LlJERKQwubi4ABAfH09SUhJGo9HqU3Iid8JkMmE0Grl27Rrnz58nPj4eAFdXV6tc36J9CPv378+yZcv4888/GTBgAP3796dLly54enoCcPbsWbZt20ZwcDBpaWnce++9DBo0yCqFioiIFBY3NzeuXr1KSkoKsbGxRV2OSIG4ublRsWJFq1zLokBoZ2fH/PnzefbZZ4mJiWHZsmUsW7YsRzuTyUSTJk348ssvsbe3t0qhIiIihcXGxobatWuTkJBAUlISaWlpGiGUYsdgMGBnZ4ejoyMVK1bE2dnZate2KBACVKtWjeXLl/PTTz+xevVqoqOjycjIuHExOzuaNWtGnz59GDBgAOXKlbNaoSIiIoXJxsYGd3d33N3di7oUkbvO4kAIUK5cOYYPH87w4cPJyMjg8uXLAFSqVAk7u9u6pIiIiIgUkTtOb3Z2dlSpUsUatYiIiIhIEbDoLWMRERERKX1ua4TQaDSyZ88ejh49ypUrV0hPT8+3/fjx42+rOBEREREpfBYHwg0bNvDOO+9w/vz5W7Y1mUwYDAYFQhEREZFizKJAuHPnTiZOnIjRaMTe3p6WLVtSrVo18w7vIiIiIlLyWBQIv/rqK4xGI97e3sycOZOqVasWVl0iIiIicpdY9FJJdHQ0BoOBGTNmKAyKiIiIlBIWjRCaTCacnZ2pWbNmYdUDQHp6Ort372bbtm2Eh4dz4sQJrl+/jqurK61atWL48OG0b98+z/5r1qxh2bJlHD58GKPRSL169ejfvz9Dhw7FxkYvVouIiIjczKJA2KBBA2JiYkhLSyvUdYMRERGMHj0aAA8PD7y9vXFwcOCvv/4iJCSEkJAQxo0bx8SJE3P0nT59OkFBQZQvX56OHTtiZ2dHWFgYb7/9NmFhYcyZM0ehUEREROQmFgXCYcOG8frrr7Nq1SoGDRpUWDVhMBjo0aMHI0eOpG3bttnO/fbbb0yaNIkvvviC9u3b06FDB/O5kJAQgoKC8PDwYMmSJdStWxeACxcuMHLkSDZs2EBgYCBPPvlkodUuIiIiUtJYNFTm5+fHgAEDeP/991m7dm1h1UTHjh2ZM2dOjjAI0KtXL/z8/ABYvXp1tnPz588HYNKkSeYwCODu7s60adMAWLhwIUajsXAKFxERESmBLBohfP3114Eb3zKeNGkSM2fOpHnz5jg5OeXZx2Aw8P77799Zlf/StGlTAM6dO2c+Fh8fT3R0NPb29vTs2TNHn3bt2lGtWjXOnTvHvn37aN26tVVrEhERESmpLAqEwcHBGAwGTCYTAGfPnuXs2bP59imMQHjixAngxvrCLIcOHQKgUaNGVKhQIdd+LVq04Ny5c8TExCgQioiIiPx/FgXC4vDFkfPnzxMcHAxA9+7dzcdjY2MBqFGjRp59PT09s7UVERERkRIWCDMyMnjllVdISkqiY8eOdO3a1XwuJSUFAAcHhzz7Z01tX7161Wo1JSUlERkZabXriYiIiFhbUlJSvudL1P4rb731FmFhYXh6evLxxx8XdTkiIiIipYJFI4T/ZjKZuHTpEteuXct3qtYa3n33XX7++Wc8PDz47rvvsq0fBHB0dAQgNTU1z2tkjQzm9xKMpVxcXGjTpo3VriciIiJibS4uLvmev61AuHfvXubPn8+uXbu4du0aBoPB/FIHwJUrV5gxYwYGg4E33ngj32ncgpgxYwaBgYG4ubnx3XffZdtSJkvW11Pye8klPj4+W1sRERERuY0p46VLlzJixAi2bt1KamoqJpPJ/NZxlooVK3Lp0iVWrlxJSEjIHRX40UcfsWjRIipXrsyiRYto2LBhru2ytqI5evQo165dy7XNgQMHAGjSpMkd1SQiIiJSmlgUCPfv3897772HwWDg5ZdfZuvWrbi7u+fatn///phMJrZv337bxX3yySd88803VKpUiUWLFtG4ceM823p6etKsWTPS09NZv359jvPh4eHEx8fj4eFBq1atbrsmERERkdLGokC4aNEiTCYTL7zwAmPHjqV69ep5tvX29gYgOjr6tgqbNWsWCxcupGLFinz77bfmEcD8BAQEADeC5MmTJ83HL168yPTp0wEYO3asvmUsIiIichOL1hDu3r0buPFN41upVKkSTk5O2b4mUlCbNm3iq6++AuCee+5hyZIlubarX7++OQQC9OzZk6FDh7Js2TJ8fX3p1KkTdnZ2hIWFkZycjI+PDyNGjLC4HhEREZHSzKJAeOnSJZydnW/5pkoWW1tb0tPTLS7q8uXL5p8PHjzIwYMHc23Xrl27bIEQYNq0abRp04alS5cSHh6O0Wikfv369O/fn6FDh2p0UERERORfLAqELi4uXL58mevXr1OuXLl82yYkJJCUlES1atUsLqpfv37069fP4n5ZfH198fX1ve3+IiIiImWJRcNljRs3xmQyFejLHMHBwZhMJlq2bHnbxYmIiIhI4bMoEPbp0weTycTMmTPz/fxbaGgoc+bMwWAw0L9//zsuUkREREQKj0VTxn369GHVqlWEhYUxaNAgBg4cyPXr1wHYvHkzZ8+eZfv27YSGhmI0Gnn00Ud56KGHCqVwEREREbEOiwKhwWBg7ty5vPrqq2zatIkPP/zQfO75558HMG9S3b1792znRURERKR4svjTdU5OTsybN4+wsDBWrlzJvn37OH/+PEajEXd3d+6//378/Pzo3LlzYdQrIiIiIlZ2W98yBujYsSMdO3a0Zi0iIiIiUgS0KZ+IiIhIGWfxtjOWTAV37dq1QJ+cExEREZGiY/EIYdZLI4XVXkRERETurkKdMr5+/Tq2traFeQsRERERuUOFFgjPnz9PQkIClStXLqxbiIiIiIgV5PuWcUREBLt27cp2LCUlhblz5+Z70StXrvD7779jMplo3br1nVcpIiIiIoUm30C4a9cu5s6di8FgMB9LTU1l3rx5+V40a91gpUqVGD9+vBXKFBEREZHCkm8gbNy4MX5+fuY/BwcHU758eR577LE8+xgMBpydnWnUqBE+Pj64urpar1oRERERsbp8A6GPjw8+Pj7mPwcHB+Ps7MwHH3xQ6IWJiIiIyN1h0ZdKvv/+e+zt7QurFhEREREpAhYFwnbt2hVWHSIiIiJSRPTpOhEREZEyzqIRwiz79+/nhx9+YM+ePfzzzz+kpqbm2dZgMHDo0KHbLlBERERECpfFgXDBggV89tlnGI3GArXXp+tERKSs+OGHH1i0aFG+AyUCDg4OjB49miFDhhR1KfL/WTRl/Mcff/Dpp59iMBiYMGECwcHBALi5ubFhwwaWLVvGCy+8gKurK66urnzxxRds2rSpUAoXEREpbpYvX64wWACpqaksX768qMuQm1gUCJcsWYLBYOCFF15g3LhxNGnS5MZFbGyoXbs2rVq14vnnn2fVqlVUrFiRKVOmYGd3W7PSIiIiJc7gwYNxcHAo6jKKPQcHBwYPHlzUZchNLEprUVFRAAwaNCjb8X9PC1etWpVp06YxevRovvrqK9566607LFNERKT4GzJkSLGbBu3SpYv55+3btxdhJVKcWTRCeOnSJRwcHHBzczMfs7Ozy3V4vEOHDlSoUEF/+URERESKOYsCYaVKlbC1tc12rGLFiqSmppKUlJTtuMFgwGAwcP78+TuvUkREREQKjUWBsFq1aiQnJ3P16lXzsQYNGgCwa9eubG3//PNPUlNTtZZCREREpJizKBA2b94cuLEPYZZu3bphMpn46KOP2L9/P+np6URHR/Paa69hMBj0dRMRERGRYs6iQJgV/tauXWs+NnToUOrUqcOpU6cYPHgwLVu2ZMCAARw+fJgKFSowfvx4qxctIiIiItZjUSDs3Lkza9asYcyYMeZj5cuXZ8mSJfTs2RN7e3vzG8f3338/ixcvxsvLy7oVi4iIiIhVWbTtjI2NDY0aNcpx3MPDg88++4z09HQuXbqEk5MTTk5OVitSRERERAqPVXeNtre3p2rVqgBkZmayZ88eALy9va15GxERESD7Hntya/p93VpZ3S6v0D4jcuXKFfz9/bGxseHQoUOFdRsRERERuUMWrSG8Hf/+iomIiIiIFC/60LCIiJQKmQMzi7oEKaFsf7K9daNSrtBHCEVERESkeFMgFBERESnjFAhFREREyjgFQhEREZEyrti+VPL333/z+++/c+DAAQ4ePMiJEycwmUzMnj2bnj175tt3zZo1LFu2jMOHD2M0GqlXrx79+/dn6NCh2NgoA4uIiIjcLN9AOHLkyNu+cEZGxm33BVi2bBnff/+9xf2mT59OUFAQ5cuXp2PHjtjZ2REWFsbbb79NWFgYc+bMUSgUERERuUm+gTA8PByDwVAkewnee++9PP300zRv3pzmzZszZcoUwsPD8+0TEhJCUFAQHh4eLFmyhLp16wJw4cIFRo4cyYYNGwgMDOTJJ5+8C08gIiJ3k7YOEbl9+QbCvn37YjAY7lYt2QwcONDiPvPnzwdg0qRJ5jAI4O7uzrRp0/D392fhwoXmL6iIiIiIyC0C4YwZM+5WHXcsPj6e6Oho7O3tc11j2K5dO6pVq8a5c+fYt28frVu3LoIqRURERIqfYvtSiaWyvpfcqFEjKlSokGubFi1acO7cOWJiYhQIRURKGX2pRG6XlhuUokAYGxsLQI0aNfJs4+npma2tNSQlJREZGWm164mIiEjRKa3/nZ6UlJTv+VKzkC4lJQUABweHPNs4OTkBcPXq1btSk4iIiEhJUGpGCIuKi4sLbdq0KeoyRERExApK63+nu7i45Hu+1IwQOjo6ApCamppnm6yRwayRQhEREREpRSOENWvWBODs2bN5tomPj8/WVkRESg+9GCBy+0rNCGHTpk0BOHr0KNeuXcu1zYEDBwBo0qTJXatLREREpLgrNYHQ09OTZs2akZ6ezvr163OcDw8PJz4+Hg8PD1q1alUEFYqIiIgUT6VmyhggICCAiRMn8sknn9CqVSvq1KkDwMWLF5k+fToAY8eO1VdKRERKie3btxd1CcVely5dzD/r9yV5KbaBMDo62hziAI4dOwbArFmz+Pbbb83Hf/zxR/PPPXv2ZOjQoSxbtgxfX186deqEnZ0dYWFhJCcn4+Pjw4gRI+7eQ4iIiIiUAMU2ECYnJxMVFZXj+IkTJ/LtN23aNNq0acPSpUsJDw/HaDRSv359+vfvz9ChQzU6KCIiIvIvxTYQtm/fnsOHD99WX19fX3x9fa1ckYiISP5++OEHFi1alO8WaEXp5unjouTg4MDo0aMZMmRIUZci/5+Gy0RERKxk+fLlxTYMFiepqaksX768qMuQmygQioiIWMngwYPz/YSq3ODg4MDgwYOLugy5SbGdMhYRESlphgwZomlQKZE0QigiIiJSxikQioiIiJRxCoQiIiIiZZwCoYiIiEgZp0AoIiIiUsYpEIqIiIiUcQqEIiIiImWcAqGIiIhIGadAKCIiIlLGKRCKiIiIlHEKhCIiIiJlnAKhiIiISBmnQCgiIiJSxikQioiIiJRxCoQiIiIiZZwCoYiIiEgZp0AoIiIiUsYpEIqIiIiUcQqEIiIiImWcAqGIiIhIGadAKCIiIlLGKRCKiIiIlHEKhCIiIiJlnAKhiIiISBmnQCgiIiJSxikQioiIiJRxCoQiIiIiZZxdURcgIlJUfvjhBxYtWkRqampRl1KsOTg4MHr0aIYMGVLUpYhIIdEIoYiUWcuXL1cYLIDU1FSWL19e1GWISCFSIBSRMmvw4ME4ODgUdRnFnoODA4MHDy7qMkSkEGnKWETKrCFDhhS7adAuXbqYf96+fXsRViIiZYkCoYjcNTeHHbk1/b5uTaFZxDo0ZSwiIiJSxikQioiIiJRxpXbKeM2aNSxbtozDhw9jNBqpV68e/fv3Z+jQodjYKAeLiIiIZCmVgXD69OkEBQVRvnx5OnbsiJ2dHWFhYbz99tuEhYUxZ84chcIC0Polsbbitt5L+xAWjPYhFCn9Sl0gDAkJISgoCA8PD5YsWULdunUBuHDhAiNHjmTDhg0EBgby5JNPFm2hIlLkiuNbxiIiRaHUDZPNnz8fgEmTJpnDIIC7uzvTpk0DYOHChRiNxiKoTkRERKT4KVWBMD4+nujoaOzt7enZs2eO8+3ataNatWqcP3+effv23f0CRURERIqhUjVlfOjQIQAaNWpEhQoVcm3TokULzp07R0xMDK1bt76b5ZU4xW29l4iIiBSOUhUIY2NjAahRo0aebTw9PbO1vV0nT54E4ODBg/Tt2/eOriUiIiJSmLJyS9b//bdSFQhTUlIA8v02qZOTEwBXr161yr1SUlKIiYm5o2uJiIiI3A1Z+eXfSlUgvJtq1apFbGwsjo6O1KlTp6jLEREREcnTyZMnSUlJoVatWrmeL1WB0NHRESDfPcWyRgazRgpv1y+//HJH/UVERESKi1L1lnHNmjUBOHv2bJ5t4uPjs7UVERERKetKVSBs2rQpAEePHuXatWu5tjlw4AAATZo0uWt1iYiIiBRnpSoQenp60qxZM9LT01m/fn2O8+Hh4cTHx+Ph4UGrVq2KoEIRERGR4qdUBUKAgIAAAD755JNsr1ZfvHiR6dOnAzB27Fh9y1hERETk/zOYTCZTURdhbdOmTWPZsmWUL1+eTp06YWdnR1hYGMnJyfj4+DBnzhxsbW2LukwRERGRYqFUBkKANWvWsHTpUo4cOYLRaKR+/fr079+foUOHanRQRERE5CalNhCKiIiISMFoqExERESkjFMgFBERESnjFAhFREREyjgFQhEREZEyToFQREREpIxTIBQREREp4xQIRaTEio2NxcvLCy8vr1u2zWoXGxt7x/ft2rWr1a5VXHz++ed4eXnx+eefF3UpIlIEFAhFRCRPu3btwsvLC39//6IuRUQKkV1RFyAiUtJ89913pKenU61ataIuxWqGDx9Or169cHV1LepSRKQIKBCKiFjonnvuKeoSrM7NzQ03N7eiLkNEioimjEWkzLp5/eFvv/3G4MGDadWqFa1ateLJJ59k9+7dufb79xrCzMxMOnfujJeXF3/++Wee95swYQJeXl4sWbIk23GTycTatWt56qmnaN++Pc2bN+fhhx/mjTfeyHWd4s3TuKmpqcyaNYuePXvSsmVL+vTpY263f/9+JkyYQOfOnWnWrBlt2rTh0Ucf5eWXXyYsLCzbNXNbQ+jv78/IkSMBCA8PN/++su5tMpno3r07Xl5e7Nu3L8/nfuGFF/Dy8mLp0qV5thGRoqVAKCJl3uzZs3n55Zext7fnoYceonr16vzxxx+MGjWKvXv33rK/ra2tOYitXLky1zaJiYls3rwZe3t7nnjiCfPx9PR0JkyYwEsvvURkZCQNGzaka9euODg48NNPP9GvXz8OHDiQ6zXT0tLw9/fn+++/55577qFr167UqlULgB07djBs2DBCQkJwd3fHx8eHDh06ULFiRUJCQli3bt0tn6tz5848+OCDALi7u+Pn52f+p3PnzhgMBoYNGwZAUFBQrtc4d+4cmzdvxsnJKVtYFZHiRVPGIlLmBQUF8dNPP9G8eXMAjEYjb731Fj/++CNz5sxh0aJFt7yGn58fCxcu5Ndff+XVV1/Fzi77/3tdu3Yt6enp9OjRg8qVK5uPz549m//97394e3vzySefUL16dfO5JUuW8M477/DSSy+xbt26HNeMioqiSZMmbNiwAXd392zn5s+fT3p6OjNnzswWQAEuXbrEmTNnbvlMAQEB3HfffYSGhlK/fn1mzJiRo03//v2ZPXs269ev5/XXX8+xBvGHH34gIyODwYMH4+zsfMt7ikjR0AihiJR5L7zwgjkMAtjY2DBx4kQAdu/eTXp6+i2v0aBBA+6//34uXrzItm3bcpwPDg4GbgTHLImJiQQGBuLo6Mjs2bOzhUGAESNG8PDDD3Pq1Cm2b9+e632nTp2aIwwCXLx4EYAuXbrkOOfq6prtee+Ei4sLffr0IS0tjZ9//jnbufT0dH766ScA80iiiBRPCoQiUuY9/PDDOY65u7tTqVIlrl+/TmJiYoGukxX2ssJflr/++osDBw7g4eFB586dzcd37drFtWvXaNeuHVWqVMn1mt7e3gC5rtFzd3endevWufZr2bIlAC+//DKRkZFkZmYW6Blux4gRIwBYvnw5RqPRfHzDhg2cP3+edu3a0bBhw0K7v4jcOU0Zi0iJZTAYzD+bTKZsf76ZyWTKtU+WGjVq5NrP2dmZy5cvk5aWVqB6Hn/8cT744AO2bt3KpUuXzNOnWQHR19c327Tv6dOnAdi6destN9dOSEgocN0AL730En/++Sfbt29n+/btODg40Lx5czp06ECfPn2oXbt2gZ6pIBo2bEinTp3YuXMnv//+Ow899BDwf+sKhw8fbrV7iUjhUCAUkRLLwcHB/HNKSgpOTk65trt69ar5Z0dHxxznbWysM1ni4uKCj48Pv/76K7/++iv+/v4YjUZWr14NZJ8uBsyjafXq1eP+++/P99r33XdfjmMVKlTIs72HhwcrVqxg165d7Ny5kz179hAVFUVERARffvkl06dPZ8CAARY+Yd5GjBjBzp07CQoK4qGHHuLIkSNERERQtWpVfHx8rHYfESkcCoQiUmJVqlQJR0dHUlJSOHXqFE2aNMm13cmTJ4EbYbBSpUqFWpOfnx+//vorwcHB+Pv7s2PHDs6dO0ezZs249957s7XNWjN477335vrCxp2ysbGhY8eOdOzYEbgRmpcsWcLMmTN5++236dmzp9Ve9HjkkUeoVasW27dvJzY21jw6OHjw4Bwvw4hI8aM1hCJSYtna2tK2bVsAQkJC8myXdc7b29tqo4F56dSpE9WrVyc6OpojR47wyy+/ANCvX79c29rb2xMWFsaVK1cKtS64EYgDAgKoXr06aWlp/P3337fsY29vD0BGRka+7WxsbBg2bBhGo5FvvvmG1atXY29vz6BBg6xSu4gULgVCESnRnnrqKQwGA4sWLWLr1q05zm/evJnvvvsOg8HAU089Vej12NjY0LdvXwACAwPZuHFjjr0Hs7i7uzNs2DCuXLnCc889x19//ZWjTUpKCmvWrOHChQsW1fHNN98QFxeX4/iBAwc4f/48NjY2eHp63vI6WZ/nO3Xq1C1D4YABA3BwcCAoKIirV6/SrVs3qlatalHdIlI0NI4vIiVax44dmTRpEp988gnPPPMMjRo1Mr/ReuzYMY4ePYrBYGDSpEl06NDhrtTk5+fHV199xY8//giQY+/Bm73yyiv8888/rFu3Dl9fXxo3bkzt2rUxGAycOXOGP//8k+vXr/Pbb7/lur1MXr788ks++ugjGjRoQIMGDShXrhxxcXHs3bsXo9FIQEAAHh4et7xOzZo1adq0KYcOHaJ37940a9aMcuXKUa9ePcaMGZOtbaVKlejduzfLly8H9DKJSEmiQCgiJd6YMWNo164dS5YsITIyks2bNwM3Xqzo06cPI0aMMG/DcjfUrVuX1q1bs2fPHiDnyyQ3s7e357PPPqN37978/PPP7N+/nyNHjuDk5ISHhwdPPPEE3bp1s/j7yVOnTmXnzp0cPHjQvL2Nh4cHjzzyCMOGDTN/gaQgPv/8cz755BMiIiJYu3YtmZmZtGvXLkcghBvT4MuXL6dRo0a0a9fOoppFpOgYTDfvxyAiInIHnn/+eTZu3Mhbb72lzahFShCtIRQREas4ePAgmzdvpnLlyuZ1lCJSMmjKWERE7siUKVNISUlh27ZtGI1GJkyYkOt+jyJSfGnKWERE7oiXlxc2NjbUqFGDYcOG8fTTTxd1SSJiIQVCERERkTJOawhFREREyjgFQhEREZEyToFQREREpIxTIBQRkWwmT56Ml5cXn3/+eVGXIiJ3ibadEZFSJSMjg9WrV7N27VoOHz5MYmIiDg4OuLu7U7t2bdq2bUuHDh3u6pdLRESKOwVCESk1EhISGDt2LAcPHjQfK1++PCaTiePHj/P333+zbds2XFxc2L17dxFWWrx5eHhQr149XF1di7oUEblLtO2MiJQaTz/9NKGhoTg5OTFu3Dj69OmDh4cHAMnJyezfv58NGzawbds28/eORUREgVBESom//vqLXr16ATB79mx69uyZZ9u0tDTKly9/t0oTESn2NGUsIqXCkSNHzD8/8sgj+bbNKwympKSwbNkyNmzYwN9//01qaipVq1alUaNG9OrVi8ceewx7e/tsfYxGI6tXr2bVqlXExMSQnJxM5cqVadu2LaNHj+a+++7LcZ/PP/+cuXPn4ufnx4wZMwgODiYoKIhjx45hMBho1qwZzz77LA888ECudUZERBASEkJUVBRxcXEkJibi4uJC06ZNGThwYJ5hePLkyQQHBzN+/HieeeYZvvnmG3777TdiY2NJSUkhIiKCihUrZmv3wgsv5LjO9evXWbp0Kb/99ht///036enpeHp68vDDDzNmzBjzqKyIlBwKhCJS6pw7d4577rnHoj7Hjh0jICCAM2fOAGBnZ4ezszPx8fHExsayZcsWWrduTa1atcx9kpOTeeGFF9i5cycABoMBJycnzp8/z7p16wgJCWHKlCmMGDEiz/tOmTKFn3/+GVtbWxwcHEhOTiY8PJzdu3fz2Wef0aNHj2ztr169mu16Tk5OlC9fnoSEBEJDQwkNDWXw4MG8/fbbed4zLS2N4cOHs3//fuzt7alQoUKBf08JCQk8/fTTHDp0CIBy5cphb2/PiRMn+O677wgODmbBggXcf//9Bb6miBQ9bTsjIqVC8+bNzT9Pnz6dhISEAvdNTExkzJgxnDlzhlq1ajFv3jz27t3Lrl272LdvH0FBQfTr1w87u+z/G/q1115j586dNGvWjG+++YaoqCgiIyMJDw/nP//5D7a2trz33ntERkbmet9NmzaxZs0apk2bRmRkJJGRkWzcuBFvb2+MRiPvvPMOGRkZ2frY2NjQo0cP5s2bx65du9izZw+RkZFEREQwdepUHB0dWb58OevWrcvzeZcuXcqJEyeYNWsWe/bsYffu3WzevBkHB4db/q5effVVDh06RKVKlfjss8/Yt28fe/bs4eeff+bee+/l8uXLPP/88xb9/kWk6CkQikipULt2bfr27QtAaGgoXbp0YdSoUcyaNYuNGzfmG1AWLFhAXFwcrq6uBAUF4ePjQ7ly5QCwt7enTZs2fPDBB1SvXt3cZ+fOnWzcuJF69eqxePFiHnzwQfNUdKVKlXjuueeYMGECRqORBQsW5HrfK1eu8O677zJ06FBzGKtduzYzZ87E3t6e8+fPs3fv3mx9HBwcmDNnDj4+PlSuXNl8vGLFigwfPpy33noLgKCgoDyfNyUlhVmzZtGrVy/zc9asWTPHdPi/7d69m99//x2AmTNn8thjj2FrawtAixYtWLRoEZUqVeLChQsEBgbmey0RKV4UCEWk1HjnnXcYPXo09vb2pKenExYWxldffcXzzz9Px44dGTBgAKtXr+bf79KtWrUKgKeeeopq1aoV6F7BwcEADBo0CBcXl1zb+Pr6ArBr1y4yMzNznK9Ro4a5zc2qVatm3ifx5rWRBdG1a1cAoqKicr0ngJeXFw8++KBF1wVYv349cGM0tnPnzjnOu7u7M2TIEIB8RyhFpPjRGkIRKTXKlSvH5MmTGTt2LBs2bCAiIoKDBw9y8uRJTCYTBw4c4JVXXmHTpk3MmjULGxsbYmNjuXDhAgAPPfRQge+VNXL35Zdf8s033+TbNjU1lcTERKpUqZLtePPmzTEYDLn2yQqmV65cyXEuIyOD4OBg1q9fb958Oz09PVubtLQ0Ll++jJubW47+t7u+L2vdYPv27fNs06FDB+bPn8+JEydISUnB0dHxtu4lIneXAqGIlDpVqlRhyJAh5tGqCxcusGXLFubNm0dcXBzr16+ndevWPPnkk1y8eNHcr0aNGgW+x/nz54HcA1tuUlNTcxxzcnLKs33W9PO/1xBevXqVp59+OttUcoUKFXBxccHG5sakT1bAze2eQK4hsSCypt3zG0XNOmcymbh06ZICoUgJoUAoIqWeu7s7AwcOpFu3bvj6+nLhwgVWrFjBk08+edvXNBqNAMybNw8fHx9rlXpLX3zxBXv37sXV1ZXJkyfTuXPnbCOPmZmZNG3aFCDH1HiWrHV/tystLe2O+otI8aM1hCJSZri5udGtWzcATpw4AZAtTGVtOVMQ7u7uAJw9e9Z6BRZA1jq+N998k759++aYhs4aHSwMWSOLcXFxebY5d+4ccGMLHn36TqTkUCAUkTIl623erDdqa9WqZd5Iefv27QW+TtY6PEv6WENW4GrSpEmu58PCwgrt3lkjjxEREXmOPv7xxx8A1K1bV9PFIiWIAqGIlAqnT5/m1KlT+bZJTU1l48aNQPZA1bt3bwC+/fZbc+C6FT8/P+DGFje3CoWXL18u0DULwtnZGcj97eOrV6/y5ZdfWu1e/5b1BZSjR4+yadOmHOcvXLjADz/8AMBjjz1WaHWIiPUpEIpIqXDs2DF69uzJ+PHj+e233/jnn3/M51JSUti8eTPDhw8nNjYWgJEjR5rPjx07lmrVqnHp0iWGDRvGpk2buH79OgDp6emEh4fz4osvEh8fb+7TpUsXunfvjslkYvz48Xz99dfZ9jpMTExk48aNPPvss8yYMcNqz5n1ObsZM2YQHh5uHqnbv38/o0aNIjEx0Wr3+re2bduat5v573//y/r1681b2xw8eJCnnnqKy5cv4+7unu33KyLFn14qEZFSwc7OjszMTDZs2MCGDRuAG2/f2tvbk5SUZG5na2vLhAkT6N69u/mYq6srCxcuJCAggNjYWMaNG4e9vT1OTk4kJyeb3/R9+eWXs93zww8/xGg0snHjRj7++GM++eQTXFxcyMzM5OrVq+Z2/fr1s9pz/uc//2HHjh3ExcXh7+9P+fLlsbW1JSUlhQoVKjBv3jyefvppq93v3z766COeeuopYmJimDhxIuXLl8fOzs78vJUqVWLu3LlaPyhSwigQikip0LlzZ9avX8+WLVuIjIzk6NGjnDt3jpSUFCpWrEjt2rVp27YtAwcOpFGjRjn6e3l5sXbtWgIDA9m4cSMnTpwgNTUVT09PvLy86NWrV7YvlQA4Ojoyb948tm7dyooVK4iKiiIhIQEbGxvq1KlD06ZN6dKlS47vEd+J2rVr89NPPzFnzhx27NjBlStXqFy5Mt26deOZZ57J9dmsyc3NjeXLl7N06VLWrl3L8ePHSU9Pp27dujz00EOMGTOGqlWrFmoNImJ9BlNeK4NFREREpEzQGkIRERGRMk6BUERERKSMUyAUERERKeMUCEVERETKOAVCERERkTJOgVBERESkjFMgFBERESnjFAhFREREyjgFQhEREZEyToFQREREpIxTIBQREREp4/4fZQUlH7VeCzgAAAAASUVORK5CYII=\n",
"text/plain": [
"<Figure size 720x360 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"fig, ax = plt.subplots(figsize=(10,5))\n",
"sns.set_context(\"poster\"),\n",
"sns.set_style(\"white\")\n",
"sns.boxplot(data=ping, x=\"Location\", y=\"Latency\",hue=\"Technology\", whis=[5,95], showfliers=False)\n",
"ax.set_xlabel(\"Scenario\")\n",
"ax.set_ylabel(\"Latency (ms)\")\n",
"ax.set_ylim(0,50)\n",
"ax.grid(True, which='major', axis='y')\n",
"plt.savefig(\"ping.pdf\", dpi=1200, bbox_inches='tight')"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "5Give-venv",
"language": "python",
"name": "5give-venv"
},
"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.6.9"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
%% Cell type:code id: tags:
```
python
# Parse the RTCM3 Logs
import
seaborn
as
sns
import
pandas
import
matplotlib.pyplot
as
plt
```
%% Cell type:code id: tags:
```
python
# Read the file
timestamps
=
pandas
.
read_csv
(
"
./timestamps.csv
"
)
timestamps
[
"
Latency
"
]
=
(
timestamps
[
"
ts_client
"
]
-
timestamps
[
"
ts_relay
"
])
*
1000
print
(
timestamps
)
```
%% Output
Location Technology ts_relay ts_client Latency
0 University Ethernet 1.612947e+09 1.612947e+09 3.827095
1 University Ethernet 1.612947e+09 1.612947e+09 3.447056
2 University Ethernet 1.612947e+09 1.612947e+09 3.516912
3 University Ethernet 1.612947e+09 1.612947e+09 3.500938
4 University Ethernet 1.612947e+09 1.612947e+09 3.642082
... ... ... ... ... ...
6490 University 5G 1.612960e+09 1.612960e+09 16.270876
6491 University 5G 1.612960e+09 1.612960e+09 16.198874
6492 University 5G 1.612960e+09 1.612960e+09 4.643917
6493 University 5G 1.612960e+09 1.612960e+09 15.842915
6494 University 5G 1.612960e+09 1.612960e+09 21.540880
[6495 rows x 5 columns]
%% Cell type:code id: tags:
```
python
fig
,
ax
=
plt
.
subplots
(
figsize
=
(
10
,
5
))
sns
.
set_context
(
"
poster
"
),
sns
.
set_style
(
"
white
"
)
sns
.
boxplot
(
data
=
timestamps
,
x
=
"
Location
"
,
y
=
"
Latency
"
,
hue
=
"
Technology
"
,
whis
=
[
5
,
95
],
showfliers
=
False
)
#handles, labels = ax.get_legend_handles_labels()
#ax.set_xticklabels(labels=['Ethernet', 'Wi-Fi', '5G'])
ax
.
set_ylim
(
0
,
50
)
ax
.
set_xlabel
(
"
Location
"
)
ax
.
set_ylabel
(
"
Latency (ms)
"
)
ax
.
grid
(
True
,
which
=
'
major
'
,
axis
=
'
y
'
)
plt
.
savefig
(
"
timestamps.pdf
"
,
dpi
=
1200
,
bbox_inches
=
'
tight
'
)
```
%% Output
%% Cell type:code id: tags:
```
python
ping
=
pandas
.
read_csv
(
"
./ping.csv
"
)
print
(
ping
)
ping
[
'
Latency
'
]
=
ping
[
'
rtt
'
]
/
2.0
```
%% Output
Location Technology rtt
0 University Ethernet 1.49
1 University Ethernet 2.00
2 University Ethernet 1.57
3 University Ethernet 1.68
4 University Ethernet 1.98
... ... ... ...
5418 University 5G 25.60
5419 University 5G 24.00
5420 University 5G 20.60
5421 University 5G 18.70
5422 University 5G 30.60
[5423 rows x 3 columns]
%% Cell type:code id: tags:
```
python
fig
,
ax
=
plt
.
subplots
(
figsize
=
(
10
,
5
))
sns
.
set_context
(
"
poster
"
),
sns
.
set_style
(
"
white
"
)
sns
.
boxplot
(
data
=
ping
,
x
=
"
Location
"
,
y
=
"
Latency
"
,
hue
=
"
Technology
"
,
whis
=
[
5
,
95
],
showfliers
=
False
)
ax
.
set_xlabel
(
"
Scenario
"
)
ax
.
set_ylabel
(
"
Latency (ms)
"
)
ax
.
set_ylim
(
0
,
50
)
ax
.
grid
(
True
,
which
=
'
major
'
,
axis
=
'
y
'
)
plt
.
savefig
(
"
ping.pdf
"
,
dpi
=
1200
,
bbox_inches
=
'
tight
'
)
```
%% Output
%% Cell type:code id: tags:
```
python
```
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment