aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKapileshwar Singh <kapileshwarsingh@gmail.com>2016-02-02 11:52:39 +0100
committerKapileshwar Singh <kapileshwarsingh@gmail.com>2016-02-02 11:52:39 +0100
commit3b09be5ee527d09390f793c32c304243114ff024 (patch)
tree248981f4f1fb7a4d1e656996058064bbd1aa2dcc
parenta50982922ce811b70b28b5bfc26c54ed4dea25cb (diff)
parent3ffa9e2049a55744c2486ec049dc78b20ff1f8eb (diff)
downloadtrappy-3b09be5ee527d09390f793c32c304243114ff024.tar.gz
Merge pull request #137 from JaviMerino/bar-plot-doc
Documentation and tests for BarPlot
-rw-r--r--doc/BarPlotter.ipynb201
-rw-r--r--tests/test_plotter.py17
-rw-r--r--trappy/plotter/BarPlot.py45
3 files changed, 262 insertions, 1 deletions
diff --git a/doc/BarPlotter.ipynb b/doc/BarPlotter.ipynb
new file mode 100644
index 0000000..fc3a675
--- /dev/null
+++ b/doc/BarPlotter.ipynb
@@ -0,0 +1,201 @@
+{
+ "metadata": {
+ "name": "",
+ "signature": "sha256:ca5da22b92912edbee0d2eda0f09e090d254c56896bbb84760126b772ce6d62c"
+ },
+ "nbformat": 3,
+ "nbformat_minor": 0,
+ "worksheets": [
+ {
+ "cells": [
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "%pylab inline\n",
+ "import pandas as pd\n",
+ "import trappy"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Populating the interactive namespace from numpy and matplotlib\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "stream": "stderr",
+ "text": [
+ "/usr/lib/python2.7/dist-packages/matplotlib/font_manager.py:273: UserWarning: Matplotlib is building the font cache using fc-list. This may take a moment.\n",
+ " warnings.warn('Matplotlib is building the font cache using fc-list. This may take a moment.')\n"
+ ]
+ }
+ ],
+ "prompt_number": 2
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "dfr = pd.DataFrame({\"foo\": [1, 2, 3], \"bar\": [2, 3, 1], \"baz\":[3, 2, 1]})"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [],
+ "prompt_number": 3
+ },
+ {
+ "cell_type": "heading",
+ "level": 1,
+ "metadata": {},
+ "source": [
+ "Simple bar plot of one column"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "trappy.BarPlot(dfr, column=\"foo\").view()"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stderr",
+ "text": [
+ "/usr/lib/python2.7/dist-packages/matplotlib/__init__.py:874: UserWarning: axes.color_cycle is deprecated and replaced with axes.prop_cycle; please use the latter.\n",
+ " warnings.warn(self.msg_depr % (key, alt_key))\n"
+ ]
+ },
+ {
+ "metadata": {},
+ "output_type": "display_data",
+ "png": "iVBORw0KGgoAAAANSUhEUgAABE0AAAIQCAYAAAB0X5AyAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3XuY1nWZP/D7YZCZODvkASFCBMWVLA62XKiR4F6YlYvr\nRptlaCcvZFu0A2iWdm11laK2IIcOa9leVma1W+y65bq0WeOhUKCLQkMyUBKFmOUci8M8vz+8nJ8T\nXxzUeebjfD+v119+5/nOwwe8r1vnzfe+n0q1Wq0GAAAAAO30SH0AAAAAgFcioQkAAABAAaEJAAAA\nQAGhCQAAAEABoQkAAABAgZ6pDwAAAAAvV7VajQ0bNsT+/ftTH4VuplevXjF8+PCoVCoHvVbxkcMA\nAAB0d7///e+jV69e0bt379RHoZvZu3dv7N+/P44//viDXjOeAwAAQLe3f/9+gQkvSe/evQ/5hJLQ\nBAAAAKCA0AQAAACggNAEAAAA6Bb+4z/+I173utfFsGHD4te//nXNfz2fngMAAEDp9NiwISqbNtXs\n/atDh0br8OGHde/rX//6+OMf/xg9e/aMurq6OOmkk+Kd73xnzJw5s/ATW/7cE088EW94wxti69at\n0aPH4T378NyvWVdX1/a1FStWxDHHHHNY39+VPv3pT8dtt90WlUol3vOe98S11157yHuvvfbauOGG\nG2LatGldcjahCQAAAKVT2bQp+p93Xs3ef+eyZRGHGZpUKpW4/fbb48wzz4xdu3bFfffdF1deeWU8\n+OCDsWjRog6/v1qtRqVSiRfz4bfP/zVfyIEDB9oFK13t1ltvjR/96EfR1NQUERHnn39+vPa1r42L\nL7648P4nnngiTjrppC47n/EcAAAAqLHnAo9+/frFtGnT4pZbbonbb789HnnkkYiIuPvuu+PNb35z\nvPa1r41TTz01rrvuurbvfdvb3hYREccff3wMGzYsHnzwwdiwYUNMnz49Ro4cGSeeeGJceumlsXPn\nzsJf8/meeOKJGDRoUNx2221x6qmnxvTp0yMi4pJLLomTTz45jj/++Hj729/edq6IiNmzZ8fHP/7x\nmDFjRgwbNizOPffc2LJlS3ziE5+IESNGxMSJE9uNyjz11FMxc+bMOPHEE2PcuHHxla985ZB/Lrff\nfnvMnj07jj322Dj22GNj9uzZ8e1vf/ug+/bv3x/Dhg2L1tbWOPPMM2PChAkREfHb3/42zjvvvDj+\n+OPj9NNPjx//+Mdt37Nz586YNWtWnHjiifGGN7whbrzxxkOe41CEJgAAANDFxo0bF8cdd1w88MAD\nERHRp0+fWLp0aWzcuDFuv/32ticwIiLuvPPOiIjYuHFjPP744zFhwoSoVqtxxRVXxCOPPBIPPPBA\nPPnkk+2Clo7cf//98Ytf/CK+973vRUTEX/3VX8VDDz0U69ati1NPPTUuvfTSdvf/8Ic/jE996lOx\nfv366NWrV0ybNi3Gjh0bv/vd7+Ltb397XH311RHxbFBz4YUXxqmnnhoPP/xw/OAHP4gvf/nL8T//\n8z+F53jkkUdizJgxbddjxoxpF9iceeaZ8f3vfz969eoVjz/+eFSr1WhqaooHH3wwWlpa4t3vfndM\nnTo1Hn300fjCF74QH/rQh+J3v/tdRETMmzcvdu/eHatXr45///d/j+985zvxzW9+87D/jCKEJgAA\nAJDEscceG//7v/8bERGTJk2Kk08+OSIi/uIv/iLOP//8uPfee9vd//wnR44//viYPHly9OzZMxob\nG2PWrFlx3333tbv/Pe95T4wYMSJGjBgR733ve9u+XqlU4sorr4xXvepVUV9fHxERF154YfTu3TuO\nOOKImDt3bvz617+OXbt2tX3PW9/61njd614XvXr1ire+9a3R0NAQ73jHO6JSqcT5558fa9asiYiI\nhx56KLZt2xYf/ehHo66uLoYNGxYXXXRR/Ou//mvhn8GePXuif//+bdf9+/ePPXv2tF3//Oc/jwsu\nuKDwz+HBBx+MvXv3xpw5c6Jnz55x5plnxrRp0+L73/9+tLa2xr/927/FNddcE717947XvOY1cdll\nl8Udd9zxQv9KDmKnCQAAACSwefPmOPLIIyPi2QDgM5/5TDz88MOxf//+eOaZZ+Kv//qvD/m9W7du\njauuuiruv//+2LNnT7S2tsbAgQPb3fPNb37zkDtNjjvuuLZ/bm1tjc985jOxbNmy2LZtW1QqlahU\nKtHc3Bz9+vWLiIijjjqq7f6GhoY4+uij265f9apXtQUdmzZtis2bN8eIESMi4tmAo7W1NSZNmlR4\njj59+rQLZ3bt2hV9+vQ55O/7+TZv3tzu9xER8ZrXvCY2b94c27Zti2eeeSaGDh160GsvhidNAAAA\noIutXLkynnrqqZg4cWJERFx66aVx7rnnxm9+85vYsGFDzJw5s+2JiqJP2PnMZz4TPXr0iPvvvz82\n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\n",
+ "text": [
+ "<matplotlib.figure.Figure at 0x7f3c1f878f50>"
+ ]
+ }
+ ],
+ "prompt_number": 4
+ },
+ {
+ "cell_type": "heading",
+ "level": 1,
+ "metadata": {},
+ "source": [
+ "Multiple columns"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "trappy.BarPlot(dfr, column=[\"foo\", \"bar\"], title=\"Multiple columns\").view()"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "metadata": {},
+ "output_type": "display_data",
+ "png": "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\n9XydOnX08MMPn/O6SZMmyTAMDRw4UH/60588j9eqVUt/+tOfdOjQIS1ZskSTJk2q8jc6l8KJEyc0\nfPhwr/Kd6OhoLVmyRDExMfrqq6/09ddfa/v27YqNjZUk+fr6avjw4dq4caPefvttLVu2TL169TI9\nfoMGDbRy5Ur5+flJOv0L1bBhw5SWlqbk5GQtW7ZMv/3tbz37b9682TOfBw4c6HncMAxFRUVp5MiR\nVvwYAAAWK42JkWJi7B6GpNNXQVamT58+5wQfZxo/frzGjx/v9dgnn3zitf3oo496/l3elR0NGjTQ\n4cOHvR4r++LgTGdekTFnzhyv54YMGaIhQ4Z4tmNjY3Xw4EHPdp06dc75kqIikydP1uTJk02fO7u5\n7dljb9q0qT788EPT14aFhen111+v8jjKw5UmAABTAwYMUGBgoN5//32dOHFC0um+FJmZmWrfvr2a\nNGli8wgv3oQJE0wfLytb2bVrl/7nf/6nSsdauHChDMPQ6NGjvQKTMw0ePFhut1tr1qyp8hiXLVum\n48ePq1atWnr22Wer9Jpt27Z5brdXXglO2S8nGRkZ+vLLL6s8nkvh7F/6pNO/xDVu3FiGYah///6e\nwORMCQkJcrvdXrXPZxs7dqwnMDnTPffcI0nnvDY0NFRut/uCGsMBAICrH6EJAMBUWFiY+vTpo8LC\nQs9lkWXBwJmXTV6p/Pz8yu3k3qhRI0+jsLS0tEqPVVJSoq+++kqS9Mgjj6hevXqm/917772S5NWU\nrDJlTUi7d+/uuS1gZcrGfM0115je/UiSmjRpouuuu85r/+oQGBioRo0amT5X1om/ZcuWps/XqVNH\nkiq8W1P79u1NHy/7rGe/9o477pAk/fOf/9Tdd9+tDz74QLm5uRV8AgAA4CSEJgCAcpXdRedvf/ub\nioqK9N5778nPz6/KJSuXs9q1a8vXt/wq1bI/sg8dOlTpsXJzc3Xy5EnPv7Ozs03/K7uNX3l3gDFz\n8OBBGYah6OjoKr+mbMxln6E8Zbfhq8pnvFTKgg8zPj4+klRuZ/uy50+dOlXuMcpujXi2wMBASad7\nz5zplltu0ZQpU+Tn56ePPvpI9913n2rXrq0bbrhBTz/9tHbt2lX+hwEAAFc9QhMAQLl69eqla665\nRp988omSk5NVUFCg3r17KyIiwu6hXVZKS0s9/962bZtKSkoq/O/sP9ytcj7hjJNNnDhRO3fu1NSp\n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\n+njGJUmjRo3S008/rQEDBig6Olq9e/dWdna2nnnmGcXFxalDhw765ptvPPsfOHBAiYmJatKkieLj\n4/Xmm2+W+3NZunSpRo0apbp166pu3boaNWqUlixZUuHP8W9/+5tatGihFi1aeIVOaWlp6tmzp2Jj\nY9WiRQuNGzfO6w6OkZGRmj9/vm666SbddNNN5b7H2QhNAAAAAACoRvHx8apfv742b94sSQoODta8\nefOUmZmppUuXasGCBVq1apUkaeXKlZJONynfvXu32rdv72m0v2PHDm3evFn79u3zCloqs2nTJn3x\nxRdatmyZJOm2225Tamqqdu7cqdatW2vEiBFe+y9fvlyTJk3Srl275O/vr549e6pt27b68ccf1adP\nH02cOFHS6VBj0KBBat26tbZv365//vOfeuONN/Tpp5+ajmPHjh1eZbAtW7b0Cmy6dOmi9957z+s1\nGzduVGpqqv7xj39o9uzZWr9+vaTTvddefPFF/fTTT1q9erXWr1+v+fPne732X//6l9auXatNmzZV\n+WdFaAIAAAAAQDWrW7eujhw5Iknq2LGjmjdvLkm64YYb1K9fP23cuNFr/zOvHImNjVXXrl3l6+ur\niIgIjRw5Up9//rnX/g8++KDi4uIUFxenoUOHeh43DEPjx49XjRo1FBBwuoRp0KBBCgoKkp+fn5KS\nkvTNN9943QXwzjvvVKtWreTv768777xTgYGB6t+/vwzDUL9+/ZSeni5JSk1NVU5Ojp566in5+Pgo\nOjpaQ4YMKbdZf2FhoUJDQz3boaGhKiws9Gxv2LBB9913n9drxo0bp8DAQN1www0aNGiQJ1Rp06aN\n2rVrJ8MwFBUVpcTExHN+hmPHjlVoaKjnc1cFjWABAI5zKRqSAgAAXIz9+/erVq1akqQtW7ZoypQp\n2r59u06ePKlTp07p7rvvLve1hw4d0oQJE7Rp0yYVFhaqtLRU4eHhXvssXry43J4m9evX9/y7tLRU\nU6ZM0YoVK5STk+P5PSk3N1chISGSTt91sExgYKBXD5kaNWp4go49e/Zo//79iouLk3Q66CktLVXH\njh1NxxEcHOwVzhQUFCg4OLjcz20YhtfYGzRooO3bt0uSfvzxRz377LPatm2bTpw4oZKSErVp06bc\nz11VXGkCAHCUrl27qqSkRD/++KPdQwEAAA6VlpamAwcOqEOHDpKkESNGqHfv3vr222+VkZGhxMRE\nz5UlZl/0TJkyRS6XS5s2bVJGRoZef/31c3qYVHTPlzOPuWzZMv373//W8uXLlZGRoa+//lput7vC\n15fnuuuu8zTb/+mnn/Tzzz8rMzOz3D4lzZo18+qHkp6ermbNmlX4Hnv37vX8e8+ePapbt64k6Xe/\n+52aNGmi1NRUZWRkaOLEied8hgv50ozQBAAAAACAalBQUKDVq1fr4Ycf1oABAzwBQWFhocLDw+Xn\n56fU1FSvPh6RkZFyuVz6+eefPY8dO3ZMwcHBqlmzpvbt26fXXnutymM4O0g4duyYAgICFBYWpsLC\nQr3wwgvnHS6UHbNdu3aqWbOmZs+eraKiIpWUlGj79u3aunWr6eseeOABzZ07V/v379f+/fs1d+5c\nDRo0qML3efnll3XixAlt375d77zzju69915Jp3+2ISEhCgoK0s6dO/X222+f12coD+U5AAAAAICr\nSpT79G2BrTz++Rg0aJB8fHzkcrnUtGlTPfbYY1631Z0xY4aeffZZJSUlqVOnTurXr5/y8vIknS5/\nGTt2rO644w4VFxfrH//4h5KSkvToo48qJiZGcXFxGjBggObNm+c5XkWhx9nP3X///frkk0/UokUL\nRURE6JlnntGCBQvO6/OVHdPlcmnJkiV69tln1bZtW508eVKNGjXyNIo927Bhw5SZmanOnTvLMAwN\nHTpUiYmJnuc7duyop556ytPXxDAMdezY0dMM9/HHH1fXrl0lnb76ZsyYMZo9e7Zat26tfv36acOG\nDVX6mVT42dwXcs0NAAAAAACXge+//96rxwZwIbKzs9W0adNzHqc8BwAAAAAAwAShCQAAAAAAgAlC\nEwAAqtGECRNUt25d+fj46K9//Wu1vrfL5dI777xTre8JAABwJaMRLAAA1eTLL7/UtGnTtGLFCv3X\nf/2XQkND7R4SAAAAKkBoAgBANdm5c6d8fHx011132T2US6q4uFi+vvxKAQAArj6U5wAAUA2GDx+u\noUOHqrS0VC6XSz4+Pp7nXn75ZV1//fUKCAhQo0aNNGvWLK/XHjt2TCNGjNC1116rwMBA3XTTTVqz\nZs0FjePw4cP69a9/rZo1ayoqKkqzZ8/2en727Nlq27atQkJCVK9ePQ0cOFAHDhzwPL9u3Tq5XC79\n61//UpcuXRQUFKT58+df0FgAALgUgoODlZubK24Miwt1/Phx+fv7mz7HLYcBAKgGBQUFevvtt/W7\n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\nPpuRkZEsXrw49913X6699tq5HZLame7evffee3n00Udz9dVXJ0luvvnm3HXXXXM9JjVy+vTp7N27\nN2fOnElHR0c2b96cO+6440vn5B2zaSb3Tt5RwoULF7Jz586Mj4/n4sWLWb9+fe6+++4pZ7ynrb9i\npcnExET279+fHTt2ZMWKFXnooYeybt26rFq1avLMa6+9lu7u7uzZsye/+93vcvDgwfzyl78sNRIN\nMJN7lyQbNmzItm3b5mlK6mjTpk35/ve/n71791a+/u677+bjjz/Onj17cvz48TzzzDN55JFH5nhK\n6ma6e5ck3/nOd/Lggw/O4VTUWWdnZ7Zu3Zprr702n3/+eR588MHceOONU/6elXfMtpncu0TeMfsu\nu+yy7Ny5M4sXL87ExER+/etf56abbsqaNWsmz3hPW3/F1nNGR0fT29ublStXpqurKxs3bszw8PCU\nM8PDw7ntttuSJOvXr8+xY8dKjUNDzOTeQQnf/va3s3Tp0q98/Z/zbu3atTl//nw+/fTTuRqPmpru\n3iWJ570zm6644orJT40sWbIkq1atytjY2JQz8o7ZNpN7l8g7yli8eHGSLz51cvHixS+97j1t/RX7\npMnY2Njk+kOStFqtjI6OfuWZRYsWZenSpTl37ly6u7tLjUXNzeTeJclbb72V999/P729vdm6deuU\nPwMlVN3NsbGxXHHFFfM4FU1w/PjxPPDAA1mxYkV+/OMfp6+vb75Hoib++te/5qOPPsratWun/Fze\nUdJX3btE3lHGxMREfvWrX+Xjjz/Oli1bpnzKJPGetgmKPtPkX6UdZi4MDAzklltuSVdXV1555ZXs\n27cvO3bsmO+xAGbdddddl6eeeiqLFy/Ou+++m127dmX37t3zPRY18Pnnn+eJJ57IT37ykyxZsmS+\nx6EhLnXv5B2lLFq0KI8++mjOnz+fXbt25c9//vMlCznvaeun2HpOq9XKJ598Mvn92NhYWq3WlDM9\nPT05ffp0ki8avM8++0wjx9cyk3vX3d2drq4v+sLBwcGcOHFiTmekmVqt1mTeJV881O7/3k2YbUuW\nLJn8WPFNN92U8fHxnDt3bp6nYqG7ePFiHn/88dx6661Zt27dl16Xd5Qw3b2Td5R2+eWX57vf/W5G\nRkam/Nx72vorVpqsWbMmJ0+ezKlTpzI+Pp4jR45kYGBgypn+/v688cYbSZI333wz119/falxaIiZ\n3Lt/3qt+++23fXSTWdNut7/yvy4MDAxM5t0HH3yQpUuX+qg6s+JS9+6f8+4fq4r+IcfX9fTTT6ev\nr6/y/5qTyDvKmO7eyTtKOHv2bM6fP58k+fvf/55jx47lmmuumXLGe9r662gX/PzQyMhInnvuubTb\n7QwODmZoaCiHDh3K6tWr09/fnwsXLuTJJ5/Mhx9+mGXLlmX79u256qqrSo1DQ0x3755//vm88847\n6ezsTHd3d372s599KfzgX7V79+689957+dvf/pbly5fnnnvuyfj4eDo6OnL77bcnSfbv35+RkZEs\nWbIkP//5z3PdddfN89QsdNPdu9/+9rd5+eWX09nZmW984xvZunVr5XMAYKZ+//vfZ+fOnfnWt76V\njo6OdHR05Ec/+lFOnTol7yhmJvdO3lHCH//4x+zbty8TExNpt9vZsGFD7rzzTu9pG6ZoaQIAAACw\nUBVbzwEAAABYyJQmAAAAABWUJgAAAAAVlCYAAAAAFZQmAAAAABWUJgAAAAAVlCYAAAAAFZQmAAAA\nABX+F598V4fr5ExyAAAAAElFTkSuQmCC\n",
+ "text": [
+ "<matplotlib.figure.Figure at 0x7f3c1f73e610>"
+ ]
+ }
+ ],
+ "prompt_number": 8
+ },
+ {
+ "cell_type": "heading",
+ "level": 1,
+ "metadata": {},
+ "source": [
+ "Stacked plot"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "trappy.BarPlot(dfr, column=[\"foo\", \"bar\", \"baz\"], stacked=True).view()"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "metadata": {},
+ "output_type": "display_data",
+ "png": "iVBORw0KGgoAAAANSUhEUgAABEMAAAIQCAYAAABqlqCBAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3X20lXWBL/DvPgcB5cUXUhERAQlUFAWtWAhZY10m35I0\nLHxB76yGUWya1PANsyszk6Y1hibajMmkKY06ozRmXseaFIUKUBca6FU8CAOKosPLUUM45/7B5VxP\nghx27rNxP5/PWq549n6e/fz27lm/fc737N93l5qbm5sDAAAAUBB11R4AAAAAQHsShgAAAACFIgwB\nAAAACkUYAgAAABSKMAQAAAAolA7VHgAAAAD8sTfeeCMrV66s9jD4kNtrr72y++67v+f2kq/WBQAA\nYEeybNmy/OEPf8juu++eUqlU7eHwIdXc3Jw33ngjnTp1Su/evVvdZ5kMAAAAO5TGxsbsscceghD+\nJKVSKXvssUcaGxvfc58wBAAAACgUYQgAAABQKMIQAAAAoCr+/d//PYceemj69OmTp59+ut3O69tk\nAAAA2OHVNTSktGxZxR6/uXfvNPXt26Z9DzvssLz22mvp0KFD6uvrM2jQoJx66qkZP358m3pOli5d\nmsMPPzyvvvpq6ura9hmFzeesr69vue13v/td9t577zYd356+9a1v5fbbb0+pVMrpp5+eK664Yqv7\nXnHFFbn22mszevTodhyhMAQAAIAPgdKyZel+4okVe/w1M2cmbQxDSqVSZsyYkVGjRmXt2rV5/PHH\nc/HFF2fu3Lm54YYbtnl8c3NzSqVStufLXd99zvezcePGVoFJe5s+fXoeeOCBzJo1K0kyZsyY7L//\n/jnrrLO2uP/SpUszaNCgdhzhJpbJAAAAwHbaHGR069Yto0ePzi233JIZM2Zk0aJFSZKHHnoon/rU\np7L//vtnyJAhufrqq1uOPf7445Mk/fr1S58+fTJ37tw0NDTkpJNOyoABAzJw4MBMmDAha9as2eI5\n323p0qXp0aNHbr/99gwZMiQnnXRSkuTss8/OQQcdlH79+uWEE05oGVeSTJw4Md/4xjcyduzY9OnT\nJ8cee2xWrlyZSy+9NP3798/w4cNbLVl5+eWXM378+AwcODDDhg3LD3/4w62+LjNmzMjEiRPTs2fP\n9OzZMxMnTsydd975nv3Wr1+fPn36pKmpKaNGjcqRRx6ZJHn22Wdz4oknpl+/fjnqqKPyi1/8ouWY\nNWvW5JxzzsnAgQNz+OGH57vf/e5Wx7EtwhAAAAD4Ew0bNiy9evXKnDlzkiRdunTJtGnTsmTJksyY\nMaPlExNJcv/99ydJlixZkpdeeilHHnlkmpub8/Wvfz2LFi3KnDlzsnz58lYByrbMnj07v/nNb3L3\n3XcnST772c9m3rx5ee655zJkyJBMmDCh1f733XdfLr/88jz//PPp2LFjRo8enaFDh+aFF17ICSec\nkMsuuyzJpgBm3LhxGTJkSBYuXJh77703N998c371q19tcRyLFi3KIYcc0rJ9yCGHtApiRo0alXvu\nuScdO3bMSy+9lObm5syaNStz587Nhg0bctppp+WYY47J//k//ydXXXVV/vIv/zIvvPBCkuSiiy7K\nunXr8uSTT+ZnP/tZfvrTn+YnP/lJm1+jdxOGAAAAwAegZ8+eeeONN5IkI0aMyEEHHZQkOfjggzNm\nzJg89thjrfZ/9yc9+vXrl6OPPjodOnTIHnvskXPOOSePP/54q/1PP/309O/fP/3798+ZZ57Zcnup\nVMrFF1+cnXfeOZ06dUqSjBs3Lrvsskt22mmnTJo0KU8//XTWrl3bcsxxxx2XQw89NB07dsxxxx2X\nzp0754tf/GJKpVLGjBmTBQsWJEnmzZuXVatW5YILLkh9fX369OmTM844I//6r/+6xdegsbEx3bt3\nb9nu3r17GhsbW7YfffTRnHzyyVt8HebOnZs333wzX/va19KhQ4eMGjUqo0ePzj333JOmpqb827/9\nW775zW9ml112yX777Zdzzz03//Iv//J+/5dslc4QAAAA+ACsWLEiu+++e5JNv9hPmTIlCxcuzPr1\n6/POO+/k85///FaPffXVV3PJJZdk9uzZaWxsTFNTU3bbbbdW+/zkJz/ZamdIr169Wv7d1NSUKVOm\nZObMmVm1alVKpVJKpVJef/31dOvWLUmy5557tuzfuXPn7LXXXi3bO++8c0uAsWzZsqxYsSL9+/dP\nsim4aGpqyogRI7Y4ji5durQKXdauXZsuXbps9Xm/24oVK1o9jyTZb7/9smLFiqxatSrvvPNOevfu\n/Z77yuGTIQAAAPAnmj9/fl5++eUMHz48STJhwoQce+yxeeaZZ9LQ0JDx48e3fAJiS984M2XKlNTV\n1WX27NlpaGjITTfd9J6OkPcrXH33Y9599935xS9+kfvuuy8NDQ156qmn0tzcvF2FrZvtu+++6du3\nbxYvXpzFixfnxRdfzJIlS7bYA5IkBx54YKu+kQULFuTAAw9s07n22WefLF++vNVty5Ytyz777JMe\nPXpkp512ytKlS1vuW7p0afbZZ5/tfk6JMAQAAADKtnbt2jz44IP5yle+krFjx7b84t/Y2Jjddtst\nO+20U+bNm5d77rmn5ZgePXqkrq4uL774Ystt69atS5cuXdK1a9csX748119/fZvH8Mchx7p169Kp\nU6fsuuuuaWxszJVXXtmmr/zd0mMeccQR6dq1a6ZOnZq33347GzduzMKFC/PEE09s8bgvfelLufHG\nG7NixYqsWLEiN954Y8aNG9emcx5xxBHZeeedM3Xq1GzYsCGzZs3Kgw8+mJNPPjl1dXUZM2ZM/vZv\n/zbr1q3L0qVLM23atIwdO3a7ntdmlskAAACww2vu3XvT199W8PG3x7hx41JfX5+6uroMGjQo5513\nXquvj73mmmsyefLkTJo0KUcddVTGjBmT1atXJ9m0DOX888/P5z73uWzYsCF33XVXJk2alHPPPTd9\n+/ZN//79M3bs2EybNq3l8d4vzPjj+0499dT88pe/zODBg7PHHnvk0ksvzfTp07fr+W1+zLq6utx5\n552ZPHlyhg4dmvXr12fAgAEtBat/7KyzzsqSJUsycuTIlEqlnHnmmRk/fnzL/SNGjMgFF1zQ0hvy\n7rHvtNNOueOOO3LhhRfme9/7Xnr16pWbbropBxxwQJLkqquuykUXXZRhw4alc+fOGT9+fE477bTt\nel4tz6+5nM/JAAAAQIU8++yzrTos4E+xcuXKDBo0qNVtlskAAAAAhSIMAQAAAApFGAIAAAAUijAE\nAAAAKBRhCAAAAFAowhAAAACgUIQhAAAAQKEIQwAAAIBCEYYAAAAA7W7p0qXp0aNHmpqa2v3cHdr9\njAAAALCdltQ15L9Kyyr2+Ps2987+TX3btO9hhx2W1157LR06dEh9fX0GDRqUU089NePHj0+pVNrm\n8UuXLs3hhx+eV199NXV1bfuMwuZz1tfXt9z2u9/9LnvvvXebjm9P3/rWt3L77benVCrl9NNPzxVX\nXLHVfdvyelWCMAQAAIAd3n+VluWU7idW7PHvXjMz+6dvm/YtlUqZMWNGRo0albVr1+bxxx/PxRdf\nnLlz5+aGG27Y5vHNzc0plUppbm5u8/jefc73s3HjxlaBSXubPn16HnjggcyaNStJMmbMmOy///45\n66yzKnre7X3elskAAADAdtocZHTr1i2jR4/OLbfckhkzZmTRokVJkoceeiif+tSnsv/++2fIkCG5\n+uqrW449/vjjkyT9+vVLnz59Mnfu3DQ0NOSkk07KgAEDMnDgwEyYMCFr1qzZ4jnfbfNSk9tvvz1D\nhgzJSSedlCQ5++yzc9BBB6Vfv3454YQTWsaVJBMnTsw3vvGNjB07Nn369Mmxxx6blStX5tJLL03/\n/v0zfPjwPP300y37v/zyyxk/fnwGDhyYYcOG5Yc//OFWX5cZM2Zk4sSJ6dmzZ3r27JmJEyfmzjvv\nfN/X8bbbbsvgwYMzePDgVmHS/PnzM3r06PTr1y+DBw/ORRddlA0bNrTc36NHj9xyyy352Mc+lo99\n7GNbPceWCEMAAADgTzRs2LD06tUrc+bMSZJ06dIl06ZNy5IlSzJjxoyWT0wkyf33358kWbJkSV56\n6aUceeSRaW5uzte//vUsWrQoc+bMyfLly1sFKNsye/bs/OY3v8ndd9+dJPnsZz+befPm5bnnnsuQ\nIUMyYcKEVvvfd999ufzyy/P888+nY8eOGT16dIYOHZoXXnghJ5xwQi677LIkm8KKcePGZciQIVm4\ncGHuvffe3HzzzfnVr361xXEsWrQohxxySMv2IYcc0iqIGTVqVO65555Wxzz22GOZN29e7rrrrkyd\nOjWPPPJIkqS+vj5///d/n8WLF+fBBx/MI488kltuuaXVsT//+c/z8MMPZ/bs2W1+rRJhCAAAAHwg\nevbsmTfeeCNJMmLEiBx00EFJkoMPPjhjxozJY4891mr/d3/So1+/fjn66KPToUOH7LHHHjnnnHPy\n+OOPt9r/9NNPT//+/dO/f/+ceeaZLbeXSqVcfPHF2XnnndOpU6ckybhx47LLLrtkp512yqRJk/L0\n009n7dq1Lcccd9xxOfTQQ9OxY8ccd9xx6dy5c774xS+mVCplzJgxWbBgQZJk3rx5WbVqVS644ILU\n19enT58+OeOMM/Kv//qvW3wNGhsb071795bt7t27p7GxsWX70Ucfzcknn9zqmIsuuiidO3fOwQcf\nnHHjxrWEJYcddliOOOKIlEql9O7dO+PHj3/Pa3j++eene/fuLc+7rXSGAAAAwAdgxYoV2X333ZMk\nc+fOzZQpU7Jw4cKsX78+77zzTj7/+c9v9dhXX301l1xySWbPnp3GxsY0NTVlt912a7XPT37yk612\nhvTq1avl301NTZkyZUpmzpyZVatWpVQqpVQq5fXXX0+3bt2SJHvuuWfL/p07d85ee+3Vsr3zzju3\nBBjLli3LihUr0r9//ySbApympqaMGDFii+Po0qVLq9Bl7dq16dKly1afd6lUajX2/fbbLwsXLkyS\nvPDCC5k8eXKefPLJvPXWW9m4cWMOO+ywrT7v7eGTIQAAAPAnmj9/fl5++eUMHz48STJhwoQce+yx\neeaZZ9LQ0JDx48e3fBJkS9+gMmXKlNTV1WX27NlpaGjITTfd9J6OkPcrXH33Y9599935xS9+kfvu\nuy8NDQ156qmn0tzcvF2FrZvtu+++6du3bxYvXpzFixfnxRdfzJIlS7baA3LggQe26htZsGBBDjzw\nwPc9x3/913+1/HvZsmXp2bNnkuTCCy/MwIEDM2/evDQ0NOSyyy57z3Mo99tohCEAAABQprVr1+bB\nBx/MV77ylYwdO7blF//Gxsbstttu2WmnnTJv3rxWPRk9evRIXV1dXnzxxZbb1q1bly5duqRr165Z\nvnx5rr/++jaP4Y8DgnXr1qVTp07Zdddd09jYmCuvvHK7Q4PNj3nEEUeka9eumTp1at5+++1s3Lgx\nCxcuzBNPPLHF4770pS/lxhtvzIoVK7JixYrceOONGTdu3Pue59prr81bb72VhQsX5o477sgXvvCF\nJJte227dumWXXXbJc889l1tvvXW7nsP7sUwGAACAHd6+zb1z95qZFX387TFu3LjU19enrq4ugwYN\nynnnndfq62OvueaaTJ48OZMmTcpRRx2VMWPGZPXq1Uk2LUM5//zz87nPfS4bNmzIXXfdlUmTJuXc\nc89N3759079//4wdOzbTpk1rebz3CzP++L5TTz01v/zlLzN48ODsscceufTSSzN9+vTten6bH7Ou\nri533nlnJk+enKFDh2b9+vUZMGBAS8HqHzvrrLOyZMmSjBw5MqVSKWeeeWbGjx/fcv+IESNywQUX\ntPSGlEqljBgxoqVE9qtf/WqOPvroJJs+LfM3f/M3mTp1aoYMGZIxY8bk0UcfbdNrss3n11zO52QA\nAACgQp599tlWHRbwp1i5cmUGDRrU6jbLZAAAAIBCEYYAAAAAhSIMAaDwLrnkkvTs2TP19fX58Y9/\n3K7nrquryx133NGu53y3X//616mrq8vy5curNgYAgPamQBWAQvvtb3+bq6++OjNnzswnPvGJdO/e\nvdpDand/SvkYAMCHkTAEgEJ77rnnUl9fn+OPP77aQ/lAbdiwIR06eJsHANgSy2QAKKyzzz47Z555\nZpqamlJXV5f6+vqW+6699toccMAB6dSpUwYMGJDvf//7rY5dt25dJkyYkL322iudO3fOxz72sTz0\n0ENljeO1117LKaeckq5du6Z3796ZOnVqq/unTp2aoUOHplu3btlnn33y5S9/OS+//HLL/ZuXuvz8\n5z/PqFGjsssuu+SWW27ZrjHMnz8/n/jEJ7Lzzjvn0EMPza9+9atW9//lX/5lBgwYkF122SUHHHBA\nLrvssqxfv77l/s2v37v/t66uLi+99FIZrwgAQGUJQwAorKlTp+a6665LfX19XnnllaxYsSJJ8oMf\n/CBXXHFFLr300vz+97/PpEmTcvHFF+fWW29tOfbss8/OQw89lDvuuCNPPfVUjjrqqBx//PF57rnn\ntnscV155Zf7sz/4sTz75ZC666KJccMEF+dnPftZyf6lUyne/+908/fTTuffee7N06dJ8+ctffs/j\nXHjhhbn44ouzcOHCnHDCCW0+f3Nzcy644IJ861vfypNPPplPfOITOfHEE/PKK6+03L/33ntnxowZ\nWbRoUb7//e9n+vTp+fa3v93yGC+//HJWrFiRl19+OcuXL89nPvOZDB48OHvvvfd2vx4AAJVWam5u\nbq72IACgWv75n/85X/nKV1p9yqFPnz457bTTWv2yf/7552fmzJl5/vnn8/zzz2fgwIF54IEHMnr0\n6JZ9jjjiiAwdOjT/9E//1Obz19XV5cwzz8z06dNbbjvttNOybNmy/PrXv97iMU888USOPPLILFu2\nLPvss09+/etf59Of/nRuv/32jBs3bjuefVqO/dGPfpSzzjorSbJx48YccMABGT9+fP7X//pfWzzu\nuuuuy7Rp0/Lss8++577LLrssP/rRj/Kb3/wmffr02a7xAECSPPvss9lrr72qPQxqxMqVKzNo0KBW\nt/lkCAC8y9q1a7Ns2bKMGjWq1e1HH310Ghoa8vbbb2fhwoUplUrv2eeTn/xknnnmme0+5/Dhw1tt\nH3XUUa0e5z//8z/z53/+5+nTp0+6d+/ect4lS5a07FMqlfKxj31su8+9+dh3j6G+vj4f//jHW43h\nH//xHzN8+PD07Nkz3bp1yyWXXNLq/Jvddtttue666zJz5kxBCADwvpYuXZoePXqkqamp3c+tWQ0A\ndmAvvfRSjjvuuIwfPz5XXHFFPvKRj2Tp0qX5zGc+0+rTLEnSpUuXiozhrrvuynnnnZfvfOc7+eQn\nP5nu3bvnX/7lXzJ58uRW+82aNSsTJkzIbbfdVnYwAwBb0/BSXZYtr9w3oPXu1Zy+fdr2S/lhhx2W\n1157LR06dEh9fX0GDRqUU089NePHj2/Tt7QtXbo0hx9+eF599dXU1bXtMwqbz/nujrPf/e53O+SS\n1G9961u5/fbbUyqVcvrpp+eKK67Y6r7V+lY7YQgAvEu3bt3Su3fvPPLIIzn22GNbbv/P//zP9OvX\nL507d87gwYOTJI888kj+/M//vGWfRx55JMOGDdvuc86ZMyd/9Vd/1bL92GOP5eCDD06SzJ07N2+/\n/Xb+4R/+IZ06dUqy6QefD/IHh+bm5syZMycHHnhgkk3LZH77299m/PjxSZJHH300w4YNy9e+9rWW\nY1588cVWj7F48eJ84QtfyDe/+c2cfPLJH9jYAGCzZctLOXFc94o9/sw71qRvGz/UWCqVMmPGjIwa\nNSpr167N448/nosvvjhz587NDTfcsM3jm5ubUyqVsj2tFe8+5/vZuHFjq8CkvU2fPj0PPPBAZs2a\nlSQZM2ZM9t9//5bluDsKy2QA4I9ccskluf766/NP//RPef7553PzzTfn5ptvzmWXXZYk6d+/f045\n5ZSce+65+d//+3/n2Wefzde+9rU888wzmTRp0naf79///d/zgx/8IM8//3yuv/763HXXXbnwwguT\nJB/96EdTKpVy7bXXpqGhIffee2+mTJnynsf4UyvArrrqqjzwwANZtGhR/uqv/iqvvfZazjnnnCTJ\noEGDsmDBgsycOTOLFy/O97///fzbv/1by7Fvv/12jj/++IwYMSJnn312XnnllZb/qvGxVwBoD5vf\ne7t165bRo0fnlltuaSkbT5KHHnoon/rUp7L//vtnyJAhufrqq1uOPf7445Mk/fr1S58+fTJ37tw0\nNDTkpJNOyoABAzJw4MBMmDAha9as2eI5323zUpPbb789Q4YMyUknnZRkU9n7QQcdlH79+uWEE05o\nGVeSTJw4Md/4xjcyduzY9OnTJ8cee2xWrlyZSy+9NP3798/w4cPz9NNPt+z/8ssvZ/z48Rk4cGCG\nDRuWH/7wh1t9XWbMmJGJEyemZ8+e6dmzZyZOnJg777zzfV/H2267LYMHD87gwYNbhUnz58/P6NGj\n069fvwwePDgXXXRRNmzYkGRTEX6fPn1a/tt7771z3nnnbfU8f0wYAgB/5JxzzsmVV16Zb3/72xk8\neHCuueaaXH311a3+onHLLbdk9OjROeOMM3L44Ydn9uzZuf/++/PRj360ZZ9PfepT+bM/+7P3PVep\nVMo3v/nN/Md//EcOO+ywXHXVVbnmmmty4oknJkkOPfTQXH/99fnhD3+YwYMH53vf+957vuZ38+Ns\nSV1dXa688sptjuHaa6/N5ZdfnqFDh2b27NmZOXNmevbsmSSZMGFCzjjjjPzP//k/M2zYsPzud79r\nVaz6yiuv5Nlnn83Pfvaz9OrVK7169co+++yTXr16ZdmyZe97bgCoFcOGDUuvXr0yZ86cJJuWr06b\nNi1LlizJjBkzWj4xkST3339/kk39Xy+99FKOPPLINDc35+tf/3oWLVqUOXPmZPny5a0ClG2ZPXt2\nfvOb3+Tuu+9Oknz2s5/NvHnz8txzz2XIkCGZMGFCq/3vu+++XH755Xn++efTsWPHjB49OkOHDs0L\nL7yQE044oeWPQM3NzRk3blyGDBmShQsX5t57783NN9+cX/3qV1scx6JFi3LIIYe0bB9yyCGtgphR\no0blnnvuaXXMY489lnnz5uWuu+7K1KlT88gjjyTZ1GP293//91m8eHEefPDBPPLII7nllluSJH/9\n13+dl156KS+99FJmz56dj3zkI/nCF77Q5tdrm98ms3z58lx33XUtH+F55ZVXcuqpp7b66DAA8F77\n779/Jk6cWNanRT4IixcvzsCBAzNr1qz3lLQCwI5sS98mM2tOfcWXyYwcvrFN+x5++OGZOnVqPvnJ\nT7a6/X/8j/+Rz33uc/n617/+nmMuvfTS1NXV5W//9m+zdOnSDB06NCtXrtxqZ8jPf/7zXHPNNS2h\nw+GHH57XX389HTpsarsYOXJkfvzjH7c81hNPPJH99ttvi4+1evXq9O/fPw0NDenWrVsmTpyYjh07\n5h/+4R+SbCpK/9GPfpTZs2cnSX7/+9/n+OOPz+LFizN37tz8xV/8RZ566qmWx7vuuuvywgsv5Prr\nr3/Pufbcc8/Mnj07AwYMSLLp55GPf/zjee21196z7+bulN/+9rc54IADkmzqG3njjTe2+Mefm266\nKY8//nh+/OMft9z21ltv5bjjjsuYMWPy1a9+dYvPf0vfJrPNzpBevXrlO9/5TpKkqakp55xzTj7+\n8Y9v6zAAKLQFCxZk5513zvnnn1+1Mdx///0588wzBSEA0E5WrFiR3XffPcmm3q8pU6Zk4cKFWb9+\nfd555518/vOf3+qxr776ai655JLMnj07jY2NaWpqym677dZqn5/85Cdb7Qzp1atXy7+bmpoyZcqU\nzJw5M6tWrUqpVEqpVMrrr7+ebt26JdkUWmzWuXPnVuHTzjvvnMbGxiTJsmXLsmLFivTv3z/Jpk+K\nNDU1ZcSIEVscR5cuXbJ27dqW7bVr175vyXupVGo19v322y8LFy5MkrzwwguZPHlynnzyybz11lvZ\nuHFjDjvssFbH//Vf/3UGDhy41SBka7ZrmcyCBQuy99575yMf+ch2nQQAiubQQw/NokWLWv56Uw1f\n/epX86Mf/ahq5weAIpk/f35efvnllj9CTJgwIccee2yeeeaZNDQ0ZPz48S2dH1ta3jplypTU1dVl\n9uzZaWhoyE033fSejpD3W9jx7se8++6784tf/CL33XdfGhoa8tRTT6W5ubmsjrF99903ffv2zeLF\ni7N48eK8+OKLWbJkyVZ7QA488MBWfSMLFixoKWnfmv/6r/9q+feyZctalupeeOGFGThwYObNm5eG\nhoZcdtllrZ7DddddlxdffDFTp07d7ue1XWHI448/nqOOOmq7TwIAAAC1aO3atXnwwQfzla98JWPH\njm35xb+xsTG77bZbdtppp8ybN69VT0aPHj1SV1fX6tvZ1q1bly5duqRr165Zvnz5FpegbM0fhxzr\n1q1Lp06dsuuuu6axsTFXXnnldn8T3ebHPOKII9K1a9dMnTo1b7/9djZu3JiFCxfmiSee2OJxX/rS\nl3LjjTdmxYoVWbFiRW688caMGzfufc9z7bXX5q233srChQtzxx13tHR/rF27Nt26dcsuu+yS5557\nLrfeemvLcQ899FD+8R//MT/+8Y/TsWPH7XpuyXZ8te6GDRsyd+7cnHbaae+738MPP7zdgwAAAIDN\nunbt+p7OkN69mjPzjjVbOeJP17vX9n1qYty4camvr09dXV0GDRqU8847r1XZ+jXXXJPJkydn0qRJ\nOeqoozJmzJisXr06SVqW0n7uc5/Lhg0bctddd2XSpEk599xz07dv3/Tv3z9jx47NtGnTWh7v/cKM\nP77v1FNPzS9/+csMHjw4e+yxRy699NJMnz59u57f5sesq6vLnXfemcmTJ2fo0KFZv359BgwY0FKw\n+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\nXp3+/v7JmA3gX80OPVAKeQdA1YxZhjQajcydO3fk61qtlkajMaFDAQAAAEwUL1AFaNH5gYGpHgFg\nUsg7AKpmzBeo1mq1nD17duTrRqORWq32tz/zPwcP/vPJgBvH4cNTPcHU6O3Nf+UdlEXeAaUoNe8o\nxphlyOLFi3Pq1KmcOXMmc+bMyaFDh7Jx48ZrXr927dq2DggAAADQTh3NZrM51kX1ej379u1Ls9lM\nX1+fP60LAAAA3LDGVYYAAAAAVIUXqAIAAABFUYYAAAAARRnzBapXU6/Xs3///jSbzaxZs+aKd4gM\nDg5m165dOXnyZGbOnJmXX345t956a1sGplxjnbtPP/00Bw4cyNy5c5Mk69atS19f31SMSoXs2bMn\nhw8fzqxZs/LWW29d9Zr3338/9Xo9XV1defHFF7Nw4cLJHZLKGevcHTt2LFu3bs3tt9+eJHnggQfy\nxBNPTPaYVMy5c+eya9euDAwMpKOjI2vXrs1jjz12xXUyj3Yaz7mTebTb5cuXs2XLlgwODmZoaCgr\nV67Mk08+Oeoa97TVd91lyPDwcPbu3ZvNmzdnzpw5ee2117JixYrMnz9/5JpPPvkkPT092blzZz7/\n/PMcOHAgL730UlsHpyzjOXdJsmrVqjz33HNTNCVVtGbNmjz66KPZtWvXVT8/cuRITp8+nZ07d+b4\n8eN577338uabb07ylFTNWOcuSe65555s2rRpEqei6qZPn54NGzZk4cKFuXTpUjZt2pT7779/1O9a\nmUe7jefcJTKP9rrpppuyZcuWdHV1ZXh4OG+88UaWLl2axYsXj1zjnrb6rntN5sSJE+nt7c28efPS\n2dmZ1atXp7+/f9Q1/f39efjhh5MkK1euzNGjR9szLcUaz7mDiXD33XdnxowZ1/z8r3m3ZMmSXLx4\nMb/++utkjUdFjXXuksT7z2m32bNnjzzl0d3dnfnz56fRaIy6RubRbuM5d4nMo/26urqS/PmUyNDQ\n0BWfu6etvut+MqTRaIysISRJrVbLiRMnrnnNtGnTMmPGjFy4cCE9PT3/cFxKNZ5zlyRffvllvvnm\nm/T29mbDhg2jfgYmwtXOZqPRyOzZs6dwKkpw/PjxvPLKK5kzZ06eeeaZLFiwYKpHokJ++eWX/PDD\nD1myZMmo78s8JtK1zl0i82i/4eHhvPrqqzl9+nTWrVs36qmQxD1tCVp6Z8j10uQyGZYvX54HH3ww\nnZ2dOXjwYHbv3p3NmzdP9VgAbbdo0aK8++676erqypEjR7Jt27bs2LFjqseiIi5dupS33347zz77\nbPf5jzwAAAJ8SURBVLq7u6d6HArxd+dO5jERpk2blq1bt+bixYvZtm1bfvrpp78t2dzTVs91r8nU\narWcPXt25OtGo5FarTbqmrlz5+bcuXNJ/mzcfv/9dw0a/8h4zl1PT086O//s9/r6+nLy5MlJnZEy\n1Wq1kbxL/nwR3P8/m9Bu3d3dI4/3Ll26NIODg7lw4cIUT0UVDA0NZfv27XnooYeyYsWKKz6XeUyE\nsc6dzGMi3XLLLbn33ntTr9dHfd89bfVddxmyePHinDp1KmfOnMng4GAOHTqU5cuXj7pm2bJl+eyz\nz5IkX3zxRe677772TEuxxnPu/rqz/NVXX3l8krZpNpvX/N+A5cuXj+Tdd999lxkzZnhcnLb4u3P3\n17z7v5VB/0CjHfbs2ZMFCxZc9a/IJDKPiTHWuZN5tNv58+dz8eLFJMkff/yRo0eP5o477hh1jXva\n6utotvC8T71ez759+9JsNtPX15f169fnww8/zF133ZVly5bl8uXLeeedd/L9999n5syZ2bhxY267\n7baJmJ+CjHXuPvjgg3z99deZPn16enp68vzzz18RanC9duzYkWPHjuW3337LrFmz8tRTT2VwcDAd\nHR155JFHkiR79+5NvV5Pd3d3XnjhhSxatGiKp+ZGN9a5++ijj/Lxxx9n+vTpufnmm7Nhw4ar7tjD\n9fj222+zZcuW3Hnnneno6EhHR0eefvrpnDlzRuYxYcZz7mQe7fbjjz9m9+7dGR4eTrPZzKpVq/L4\n44+7py1MS2UIAAAAwI3qutdkAAAAAG5kyhAAAACgKMoQAAAAoCjKEAAAAKAoyhAAAACgKMoQAAAA\noCjKEAAAAKAoyhAAAACgKP8LZiQRfMvPlloAAAAASUVORK5CYII=\n",
+ "text": [
+ "<matplotlib.figure.Figure at 0x7f3c1f5f8e50>"
+ ]
+ }
+ ],
+ "prompt_number": 10
+ },
+ {
+ "cell_type": "heading",
+ "level": 1,
+ "metadata": {},
+ "source": [
+ "Signals"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Signals only work with trappy traces. Let's first get a trace."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "trace = trappy.BareTrace()\n",
+ "trace.add_parsed_event(\"my_event\", dfr)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [],
+ "prompt_number": 6
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "If you have a trappy trace, you can use the signal syntax instead of columns and templates"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "trappy.BarPlot(trace, signals=[\"my_event:baz\", \"my_event:foo\"]).view()"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "metadata": {},
+ "output_type": "display_data",
+ "png": "iVBORw0KGgoAAAANSUhEUgAABE0AAAIQCAYAAAB0X5AyAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3Xu0VnWdP/D3OShXBZTEkksoipSNF0BzvCtkxCwvSOFt\nFC/hjJo/FJuQ1H7jMjNvuFLRNZYO2rRKiTLKS1M6mqSlBZlJKmYiyCgkIwfEJOD8/vDnM57cCiaH\nrXu/Xmux1tln72c/X5/1Wd9vvc/+fJ+m1tbW1gAAAADQRnPZAwAAAAB4LxKaAAAAABQQmgAAAAAU\nEJoAAAAAFBCaAAAAABTYpOwBAAAA8P7X2tqaZ555JqtWrSp7KPCOdOzYMQMGDEhTU9ObzjX5ymEA\nAADerT/+8Y/p2LFjunbtWvZQ4B1ZuXJlVq1alW233fZN57TnAAAA8K6tWrVKYML7UteuXd/yCSmh\nCQAAAEABoQkAAABAAaEJAAAA8J71z//8z7n00ktLeW/fngMAAMAG1/zMM2lauLDd7t/at2/WDhiw\nzuv69+/f+HnlypXp1KlTOnTokCS58sorM2bMmPYa4jrdc889mTx5chYtWpRhw4bl6quvTt++fUsb\nTxm++c1vZvr06Zk5c2bZQykkNAEAAGCDa1q4MN0PPbTd7t8yc2ayHqHJs88+2/h5t912y1VXXZV9\n9933La9fs2ZNI1RpT0uWLMmJJ56Y6667LsOHD8+FF16YU045JXfccUe7v/d7SWtra+FX/b5XaM8B\nAACgFlpbW9Pa2trmdxdddFFOPvnkjB8/Ph/+8Iczffr0PPzwwzn44IOz7bbbZqeddso555yTNWvW\nNF4zd+7cjB49OgMHDsxHP/rRXH311Y37T5kyJUOHDs2gQYMyfvz4tLS0FI7lhz/8YXbeeeeMGjUq\nnTp1yqRJkzJnzpw888wzhdePGjUqF198cQ4++OD069cvxx9/fP7nf/6nMe6DDz44zz33XJJk4sSJ\nueCCC9q8/sgjj8w3vvGNt/18Fi1alOOPPz6DBg3KkCFDcsMNNyRJnnvuufTp0yfLly9vXDt79uzs\nuOOOWbt2bZLk5ptvzsc//vEMHDgwRx55ZGMsa9asSa9evTJt2rQMGzYsAwcOzDnnnNP4HM8555w8\n+OCD6d+/fwYNGvSWY/vTn/6U0aNHp3///jn88MMb90+SSZMm5WMf+1gGDBiQESNG5KGHHmqc69+/\nf+Nfv3790qtXr/z3f//3234ObyQ0AQAAoNbuuOOOjB07NvPnz8/o0aOz6aab5qtf/Wqefvrp3Hnn\nnfmv//qvTJs2LUnS0tKSI444IqNGjcrjjz+ehx56KPvss0+SZOrUqfnpT3+aO+64I7/73e/SrVu3\nTJo0qfA9H3/88ey0006N48033zz9+/fP448/niSZMmVKjj/++Davue2223LDDTfkscceyxNPPJGR\nI0fmxBNPzB//+McMGDAgl19+eZLkqKOOyve+973G65YsWZIHHnggn/70p9/yM2htbc3RRx+doUOH\n5ve//32+973v5Zprrsn999+fPn36ZMiQIfnRj37UuH7GjBkZPXp0mpubM3PmzEydOjXf/va3M2/e\nvAwdOjSnnHJKm/vffffduffee3Pvvfdm+vTp+dnPfpaPfvSjueSSS/L3f//3efbZZ/Pkk08mSW69\n9dYcdNBBbV4/ffr0fPGLX8wf/vCHDBo0KKeeemrj3LBhw/LAAw/k6aefzqGHHpoTTzwxf/nLX5K8\n9qTR6/9OPvnk7Lffftl6663f8nP4a0ITAAAAam3PPffMJz7xiSRJp06dsuuuu2bIkCFpampK//79\nc9xxx+XnP/95kuSuu+5K3759M378+Gy66abZbLPNsttuuyVJbrrpppx//vnZeuut07Fjx3z+85/P\nD37wg8L3fPnll9O9e/c2v+vevXtWrFiR5LWnRW6++eY254899tj069cv3bt3z0EHHZTtt98+e+21\nV5qbm3PYYYfl0UcfTZLsscce6dy5c2PMM2bMyP7775+ePXu+5Wfw0EMPZcWKFZkwYUI6dOiQAQMG\n5Nhjj22EL2PGjMl3v/vdJK8FLLfddlsjhJk2bVomTpyY7bbbLs3NzZk4cWJmz56d559/vnH/s846\nK5tttln69euXvffeuzHWImPHjs0999zT5ncjR47M7rvvnk033TTnnXdeHnjggSxevDhJ8pnPfCbd\nu3dPc3NzzjjjjCxfvjxPP/10m9dPnz49P/zhDzNt2rQ0N69/FGJPEwAAAGptm222aXM8b968nH/+\n+XnkkUeycuXKrF27NkOHDk3yWqvKtttuW3ifhQsX5uijj278n/LW1tY0NzdnyZIl2Wqrrdpc261b\ntzbtLkmyfPnybLbZZm85zt69ezd+7tKlS5t7du7cuRG4JK8FD7feemv23nvvTJ8+PRMmTHi7jyAL\nFy7MggULst122zXGvnbt2sb+L4cddljOO++8/OlPf8pjjz2Wzp07Z9iwYY3X/su//EsmT57ceO0m\nm2ySRYsWNcb4xrF37do1L7/88tuO56/16dOn8XP37t3TvXv3PP/88+ndu3euuuqqfOtb32qEKK+8\n8kqWLl3auH7OnDk577zzctttt6VHjx7v6H2FJgAAANTaX29EOnHixOy+++7593//93Tp0iXXXHNN\nfvKTnyR57f+833777YX36dOnT66//voMGTJkne85ePDgfP/7328cL1++PM8++2wGDx78Lv5L/teR\nRx6ZAw44IJ/97GfzzDPPZOTIkW97fZ8+fTJw4MA8+OCDhee32GKL7Lvvvrntttvy29/+NkcccUSb\n137xi1/M4Ycf/qbXvXEvmCLruwnsG/cwaWlpyfLly/PBD34ws2bNynXXXZcf/OAHjT1RPvzhDzf2\nrnnhhRcybty4TJkyJR/5yEfW673eSHsOAAAAvMGKFSvSvXv3dOnSJU888URuuummxrmRI0fmueee\nyw033JBVq1Zl+fLlmT17dpJk3LhxufDCC7Pw/3/V8pIlS3LXXXcVvschhxyS3/3ud7nzzjvz6quv\n5tJLL81uu+2WAevxjUDro2/fvtlpp51y2mmn5bDDDkvHjh3f9vrdd989HTt2zNSpU/Pqq69mzZo1\nmTt3bh555JHGNWPGjMl3vvOd3H777W32RznhhBNyxRVXNPYkWbZs2Xp/hXDv3r2zaNGirF69+m2v\nu+uuu/KrX/0qr776ai666KLstdde6d27d1asWJFNNtkkW2yxRVatWpWLL744r7zySpJk9erVGTdu\nXI499tj8wz/8w3qN56950gQAAIANrrVv39e+Frgd7/9Ore9TDRdeeGHOPvvsTJkyJbvssktGjx6d\nX/7yl0leaw2ZMWNGJk+enC9/+cvp0qVLTjvttAwZMiSnn356mpqaMnr06CxevDi9e/fOEUccUfiU\nx1ZbbZUbb7wxkyZNyvjx47P77rvn+uuvb5y//PLLM2fOnHzrW996R2N/o6OOOipnnHFGY4PYt9Oh\nQ4fccsstOffcc7Prrrtm1apVGTRoUM4777zGNaNGjcpZZ52VgQMHZscdd2z8/rDDDssrr7ySE088\nMc8991x69OiRgw46KIf+/6+c/uuxv/H4gAMOyHbbbZcdd9wxnTp1yty5c/Od73wn1113Xe67777G\n9WPHjs1FF12UX//619l1111z7bXXJkk+8YlPZL/99suwYcOy2Wab5fTTT29s9LpgwYL86le/yty5\nczN16tTGez788MPrvRlsU+tff98SAAAAvENPPPFEm30rKN/999+fCRMmNJ6E4a0tXry4TRD0Ou05\nAAAAUDGrVq3Kv/3bv2XcuHFlD+V9TWgCAAAAFTJ37twMHDgwy5Yty/jx4xu/nz9/fvr371/474UX\nXihxxO9d2nMAAAB417Tn8H6mPQcAAADgHRCaAAAAABQQmgAAAAAUEJoAAAAAFBCaAAAAABQQmgAA\nAADvWa+88kqOPPLIbLvttjnllFM26ntvslHfDQAAgFp4prkpC5va7/59W5MBa1vXeV3//v0bP69c\nuTKdOnVKhw4dkiRXXnllxowZ025jXJd77rknkydPzqJFizJs2LBcffXV6du3b2njKcM3v/nNTJ8+\nPTNnznzLa77//e9n2bJlefrpp9PU1I5FVUBoAgAAwAa3sCk5tHundrv/zJZXM2A9rnv22WcbP++2\n22656qqrsu+++77l9WvWrGmEKu1pyZIlOfHEE3Pddddl+PDhufDCC3PKKafkjjvuaPf3fi9pbW1d\nZxCyYMGCbL/99hs9MEm05wAAAFATra2taW1t+3TKRRddlJNPPjnjx4/Phz/84UyfPj0PP/xwDj74\n4Gy77bbZaaedcs4552TNmjWN18ydOzejR4/OwIED89GPfjRXX3114/5TpkzJ0KFDM2jQoIwfPz4t\nLS2FY/nhD3+YnXfeOaNGjUqnTp0yadKkzJkzJ88880zh9aNGjcrFF1+cgw8+OP369cvxxx+f//mf\n/2mM++CDD85zzz2XJJk4cWIuuOCCNq8/8sgj841vfONtP59Fixbl+OOPz6BBgzJkyJDccMMNSZLn\nnnsuffr0yfLlyxvXzp49OzvuuGPWrl2bJLn55pvz8Y9/PAMHDsyRRx7ZGMuaNWvSq1evTJs2LcOG\nDcvAgQNzzjnnND7Hc845Jw8++GD69++fQYMGvWlMF110Ua688spMnz49/fv3zy233JLW1tZceuml\n2WWXXTJ48OB87nOfy4oVKxqv+dGPfpS99tor2223XUaPHp2nnnrqbf+7347QBAAAgFq74447Mnbs\n2MyfPz+jR4/Opptumq9+9at5+umnc+edd+a//uu/Mm3atCRJS0tLjjjiiIwaNSqPP/54Hnrooeyz\nzz5JkqlTp+anP/1p7rjjjvzud79Lt27dMmnSpML3fPzxx7PTTjs1jjfffPP0798/jz/+eJJkypQp\nOf7449u85rbbbssNN9yQxx57LE888URGjhyZE088MX/84x8zYMCAXH755UmSo446Kt/73vcar1uy\nZEkeeOCBfPrTn37Lz6C1tTVHH310hg4dmt///vf53ve+l2uuuSb3339/+vTpkyFDhuRHP/pR4/oZ\nM2Zk9OjRaW5uzsyZMzN16tR8+9vfzrx58zJ06NA37T1y991359577829996b6dOn52c/+1k++tGP\n5pJLLsnf//3f59lnn82TTz6ZJLn11ltz0EEHJUnOPffcnHHGGfnMZz6TZ599NkceeWRuuummzJgx\nI7fffnt+/etf56WXXmoEMU888UROO+20XHbZZZk3b17222+/HHvssW1Cr3dCaAIAAECt7bnnnvnE\nJz6RJOnUqVN23XXXDBkyJE1NTenfv3+OO+64/PznP0+S3HXXXenbt2/Gjx+fTTfdNJtttll22223\nJMlNN92U888/P1tvvXU6duyYz3/+8/nBD35Q+J4vv/xyunfv3uZ33bt3bzwxMXHixNx8881tzh97\n7LHp169funfvnoMOOijbb7999tprrzQ3N+ewww7Lo48+miTZY4890rlz58aYZ8yYkf333z89e/Z8\ny8/goYceyooVKzJhwoR06NAhAwYMyLHHHtsIX8aMGZPvfve7SV4LWG677bZGCDNt2rRMnDgx2223\nXZqbmzNx4sTMnj07zz//fOP+Z511VjbbbLP069cve++9d2OsRcaOHZt77rnnLc/PmDEjp59+evr2\n7Ztu3brlvPPOa4zz+9//fj71qU9l7733TocOHXLmmWempaUlv/rVr97yfm/HniYAAADU2jbbbNPm\neN68eTn//PPzyCOPZOXKlVm7dm2GDh2a5LVWlW233bbwPgsXLszRRx+d5ubXnk9obW1Nc3NzlixZ\nkq222qrNtd26dWvT7pIky5cvz2abbfaW4+zdu3fj5y5durS5Z+fOndu0qIwdOza33npr9t5770yf\nPj0TJkx4u48gCxcuzIIFC7Lddts1xr527drG/i+HHXZYzjvvvPzpT3/KY489ls6dO2fYsGGN1/7L\nv/xLJk+e3HjtJptskkWLFjXG+Maxd+3aNS+//PLbjuftPP/88+nXr1/juF+/flm1alX+9Kc/velc\nU1NTttlmm/z3f//33/ReQhMAAABq7a83GJ04cWJ23333/Pu//3u6dOmSa665Jj/5yU+SJH369Mnt\nt99eeJ8+ffrk+uuvz5AhQ9b5noMHD873v//9xvHy5cvz7LPPZvDgwe/iv+R/HXnkkTnggAPy2c9+\nNs8880xGjhz5ttf36dMnAwcOzIMPPlh4fosttsi+++6b2267Lb/97W9zxBFHtHntF7/4xRx++OFv\net262mL+ls1dP/jBD2bBggWN4wULFqRjx475wAc+kA9+8IP54x//2DjX2tqaRYsW5UMf+tA7fp9E\new4AAAC0sWLFinTv3j1dunTJE088kZtuuqlxbuTIkXnuuedyww03ZNWqVVm+fHlmz56dJBk3blwu\nvPDCLFy4MMlre4ncddddhe9xyCGH5He/+13uvPPOvPrqq7n00kuz2267ZcCAARvkv6Fv377Zaaed\nctppp+Wwww5Lx44d3/b63XffPR07dszUqVPz6quvZs2aNZk7d24eeeSRxjVjxozJd77zndx+++1t\n9kc54YQTcsUVVzT2JFm2bNnbfoXwG/Xu3TuLFi3K6tWr1/u/bcyYMbn22muzYMGCLF++PF/5ylca\nXx19+OGH584778wDDzyQ1atX56qrrsrmm2/eeCrmnfKkCQAAABtc39bXvha4Pe//Tq3vUw0XXnhh\nzj777EyZMiW77LJLRo8enV/+8pdJXtt3ZMaMGZk8eXK+/OUvp0uXLjnttNMyZMiQnH766Wlqasro\n0aOzePHi9O7dO0cccUThUx5bbbVVbrzxxkyaNCnjx4/P7rvvnuuvv75x/vLLL8+cOXPyrW996x2N\n/Y2OOuqonHHGGY0NYt9Ohw4dcsstt+Tcc8/NrrvumlWrVmXQoEE577zzGteMGjUqZ511VgYOHJgd\nd9yx8fvDDjssr7zySk488cQ899xz6dGjRw466KAceuihhWN/4/EBBxyQ7bbbLjvuuGM6deqUuXPn\n5jvf+U6uu+663HfffYVjPf744/PCCy9k1KhRWbVqVUaMGJGvfOUrSV57gufaa6/NxIkTs3jx4uy8\n88751re+9Td/jXRT619/3xIAAAC8Q0888USbfSso3/33358JEyY0noThrS1evLhNEPQ67TkAAABQ\nMatWrcq//du/Zdy4cWUP5X1NaAIAAAAVMnfu3AwcODDLli3L+PHjG7+fP39++vfvX/jvhRdeKHHE\n713acwBgIzjwwAOzww47tOlVLst9992Xz33uc3niiSeyzz775J577il7SABUgPYc3s/eqj3HRrAA\nUDOnnnpqPv7xj+fHP/5xunbtWvZwAADes7TnAEDNzJs3LyNGjMg222yTnj17lj0cAID3LKEJAGwk\na9euzeTJk7PVVlulR48e+ad/+qesWrWqcf6nP/1pDjzwwPTq1Ss9e/bMAQcckIcffrhx/oILLkhz\nc3M6dOiQ5ubmxr+TTjppvd7/vvvuS3Nzc9auXZvjjjsuHTp0yM0335wk+cUvfpH9998/Xbt2zZZb\nbpljjz02S5YsafP6m266KTvttFM6deqUfv365fzzz8/atWs3wCcDQBV07NgxK1euLHsY8I6tXLky\nHTt2LDxnTxMA2AgOPPDAzJ49O0cddVQmTpyYp556KieddFL+8R//MVdccUWS5Lbbbsvq1auz6667\n5i9/+UuuvPLKzJgxI0899VS22GKLrFy5MitWrGjc86GHHsqYMWNyww035B//8R/XOYbVq1dn6dKl\n+eAHP5hrr702RxxxRHr06JGXXnopgwYNyqGHHprJkyfnpZdeyqmnnpotttgi9957b5Lk9ttvz2GH\nHZavfOUrOeKIIzJnzpz80z/9U84444xccMEF7fKZAfD+0trammeeeabNHwTg/aBjx44ZMGBAmpqa\n3nROaAIAG8GBBx6Y+fPn5w9/+ENjQf7617+eCRMm5MUXX0yXLl3e9Jq1a9fmAx/4QKZOnZqjjz66\nzbkFCxbk4x//eMaNG5eLL774HY2lubk5//Ef/5FjjjkmSXL++efnpptuytNPP51NNnltu7Pf/va3\n2XXXXfOzn/0s++yzT/bbb7/06dMn3/72txv3ueqqqzJ58uQsW7as8ToAgCrRngMAG8kee+zR5i8Y\ne++9d1599dX84Q9/SJI888wzOe6447LDDjukR48e6dGjR1paWjJ//vw293n55ZdzyCGHZO+9937H\ngUmRuXPnZs8992wTfOy8887p0aNHHnvssSTJY489ln333bfN6/bff//8+c9/bowfAKBq/FkIAEr0\nxgc+/+Ef/iG9e/fOtddem379+qVjx47Ze++92zzm3NramqOOOiqdO3fON7/5zTKGDABQG540AYCN\n5OGHH24Tkvz85z9P586dM3DgwCxdujS///3vc8455+QTn/hEBg8enI4dO2bx4sVt7nH22Wfn0Ucf\nzQ9/+MN07tx5g4xrp512yi9+8YusXr268btHHnkky5Yty9/93d81rvnZz37W5nX33ntvunTpkoED\nB26QcQAAvNcITQBgI3nxxRdz+umn5/HHH8/tt9+eL33pS/nnf/7ndOnSJVtssUW22mqrfP3rX8+8\nefPy4IMP5phjjknXrl0br582bVquu+66fOMb38jatWvzwgsv5IUXXkhLS8u7GtfnPve5tLS05IQT\nTshjjz2WWbNm5fjjj8/++++fvfbaK0kyefLkzJgxI5dccknmzZuXW2+9NRdccEE+//nP288EAKgs\noQkAbARNTU359Kc/nc033zz77LNPjjnmmBx66KGNPUmampry3e9+N3/4wx+yyy675KSTTspZZ52V\nD33oQ419UO67776sWrUqn/zkJ7PNNts0/p155plJkvnz56e5ubnxNcJvN5Y36t27d/7zP/8zCxcu\nzB577JFDDz00O++8c6ZPn9645lOf+lRuvPHG3Hzzzfm7v/u7nH322fnc5z6XL33pSxvyYwIAeE9Z\n57fn/OUvf8n//b//N6tXr86aNWuy55575jOf+Uyba1avXp1rrrkmTz/9dDbffPOcddZZ+cAHPtCu\nAwcA2rrnnntyyCGH5LHHHsuAAQPKHg4AwPveen3l8KuvvppOnTpl7dq1Of/883PiiSdm++23b5z/\nz//8zzz77LP57Gc/mwceeCAPPfRQ469eAMDGcfbZZ6dnz545//zzyx4KAEAlrFcTcqdOnZK89tTJ\nmjVr3nT+4YcfztixY5Mke+65Z2644YYNOEQAYH1cccUVZQ8BAKBS1is0Wbt2bc4555y88MIL+eQn\nP9nmKZMkWbp0aXr16pUkaW5uTrdu3bJixYpsttlmG37EAAAAABvBeoUmzc3NufTSS7Ny5cpcdtll\nWbhwYfr27fuW16+r4+fuu+9+Z6MEAACA95Dhw4eXPQQ2gnf0HYFdu3bNTjvtlN/85jdtQpNevXrl\nxRdfzJZbbpm1a9fmlVdeWedTJsNHjPjbRsz7WsvMmVmzzz5lDwMAgA1kVoemHNq9U9nDoAQzW17N\nPmvWuUVmJc2ePbvsIbCRrPMrh1taWrJy5cokyapVq/Loo49mm222aXPN0KFDc9999yVJHnzwwXzs\nYx9rh6HCuzNr1qyyh0ANqTvKovYog7oDoGrW+aTJSy+9lKlTp2bt2rVpbW3NXnvtlSFDhuTWW2/N\nwIEDM3To0Bx00EG5+uqr83/+z//J5ptvngkTJmyMsQMAAAC0m/X6yuEN7e6779aeU1PacwAAqkV7\nTn3VvT3Hnib1sM72HAAAAIA6EppQG/qsKYO6oyxqjzKoOwCqRmgCAAAAUEBoQm3sYy8VSqDuKIva\nowzqDoCqEZoAAAAAFBCaUBv6rCmDuqMsao8yqDsAqkZoAgAAAFBAaEJt6LOmDOqOsqg9yqDuAKga\noQkAAABAAaEJtaHPmjKoO8qi9iiDugOgaoQmAAAAAAWEJtSGPmvKoO4oi9qjDOoOgKoRmgAAAAAU\nEJpQG/qsKYO6oyxqjzKoOwCqRmgCAAAAUEBoQm3os6YM6o6yqD3KoO4AqBqhCQAAAEABoQm1oc+a\nMqg7yqL2KIO6A6BqhCYAAAAABYQm1IY+a8qg7iiL2qMM6g6AqhGaAAAAABQQmlAb+qwpg7qjLGqP\nMqg7AKpGaAIAAABQQGhCbeizpgzqjrKoPcqg7gCoGqEJAAAAQAGhCbWhz5oyqDvKovYog7oDoGqE\nJgAAAAAFhCbUhj5ryqDuKIvaowzqDoCqEZoAAAAAFBCaUBv6rCmDuqMsao8yqDsAqkZoAgAAAFBA\naEJt6LOmDOqOsqg9yqDuAKgaoQkAAABAAaEJtaHPmjKoO8qi9iiDugOgaoQmAAAAAAWEJtSGPmvK\noO4oi9qjDOoOgKoRmgAAAAAUEJpQG/qsKYO6oyxqjzKoOwCqRmgCAAAAUEBoQm3os6YM6o6yqD3K\noO4AqBqhCQAAAEABoQm1oc+aMqg7yqL2KIO6A6BqhCYAAAAABYQm1IY+a8qg7iiL2qMM6g6AqhGa\nAAAAABQQmlAb+qwpg7qjLGqPMqg7AKpGaAIAAABQQGhCbeizpgzqjrKoPcqg7gCoGqEJAAAAQAGh\nCbWhz5oyqDvKovYog7oDoGqEJgAAAAAFhCbUhj5ryqDuKIvaowzqDoCqEZoAAAAAFBCaUBv6rCmD\nuqMsao8yqDsAqkZoAgAAAFBAaEJt6LOmDOqOsqg9yqDuAKgaoQkAAABAAaEJtaHPmjKoO8qi9iiD\nugOgaoQmAAAAAAWEJtSGPmvKoO4oi9qjDOoOgKoRmgAAAAAUEJpQG/qsKYO6oyxqjzKoOwCqRmgC\nAAAAUEBoQm3os6YM6o6yqD3KoO4AqBqhCQAAAECBTdZ1wYsvvphrrrkmy5YtS1NTU4YPH55Ro0a1\nuWbu3Lm59NJLs/XWWydJ9thjj4wZM6Z9Rgx/o1mzZvkLGBuduqMsao8yqDsAqmadoUmHDh0ybty4\nDBgwIH/RpC74AAAgAElEQVT+858zadKk7LLLLunTp0+b6z7ykY9k0qRJ7TZQAAAAgI1pne05PXv2\nzIABA5IknTt3Tp8+fbJ06dI3Xdfa2rrBBwcbkr98UQZ1R1nUHmVQdwBUzTqfNHmjxYsXZ/78+dlh\nhx3edG7evHn5whe+kC222CLHHXdc+vbtu8EGCQAAALCxrfdGsH/+858zZcqUnHDCCencuXObc9tt\nt12uvfbaXHrppRk5cmQuu+yyDT5QeLdmzZpV9hCoIXVHWdQeZVB3AFTNeoUma9asyRVXXJH99tsv\nu++++5vOd+7cOZ06dUqS7Lbbblm9enVWrFixYUdKZcyaNavN/6hy7LjKx48++uh7ajyOHTt23J7H\njz766HtqPI433jH1Vnb9lXFMfTS1rsdmJNdcc00233zzjBs3rvD8Sy+9lJ49eyZJnnrqqVx55ZWZ\nOnXqW97v7rvvzvARI/7GIfN+1jJzZtbodwYAqIxZHZpyaPdOZQ+DEsxseTX7rKnn3pazZ8/O8OHD\nyx4GG8Em67rg8ccfz/3335/+/fvnC1/4QpqamnL00UdnyZIlaWpqyogRI/KLX/wiP/nJT9KhQ4d0\n7NgxZ5555sYYOwAAAEC7WWdoMnjw4Nxyyy1ve83IkSMzcuTIDTYoaA+zZs2yqz8bnbqjLGqPMqg7\nAKpmvTeCBQAAAKgToQm14S9flEHdURa1RxnUHQBVIzQBAAAAKCA0oTZ8NRhlUHeURe1RBnUHQNUI\nTQAAAAAKCE2oDX3WlEHdURa1RxnUHQBVIzQBAAAAKCA0oTb0WVMGdUdZ1B5lUHcAVI3QBAAAAKCA\n0ITa0GdNGdQdZVF7lEHdAVA1QhMAAACAAkITakOfNWVQd5RF7VEGdQdA1QhNAAAAAAoITagNfdaU\nQd1RFrVHGdQdAFUjNAEAAAAoIDShNvRZUwZ1R1nUHmVQdwBUjdAEAAAAoIDQhNrQZ00Z1B1lUXuU\nQd0BUDVCEwAAAIACQhNqQ581ZVB3lEXtUQZ1B0DVCE0AAAAACghNqA191pRB3VEWtUcZ1B0AVSM0\nAQAAACggNKE29FlTBnVHWdQeZVB3AFSN0AQAAACggNCE2tBnTRnUHWVRe5RB3QFQNUITAAAAgAJC\nE2pDnzVlUHeURe1RBnUHQNUITQAAAAAKCE2oDX3WlEHdURa1RxnUHQBVIzQBAAAAKCA0oTb0WVMG\ndUdZ1B5lUHcAVI3QBAAAAKCA0ITa0GdNGdQdZVF7lEHdAVA1QhMAAACAAkITakOfNWVQd5RF7VEG\ndQdA1QhNAAAAAAoITagNfdaUQd1RFrVHGdQdAFUjNAEAAAAoIDShNvRZUwZ1R1nUHmVQdwBUjdAE\nAAAAoIDQhNrQZ00Z1B1lUXuUQd0BUDVCEwAAAIACQhNqQ581ZVB3lEXtUQZ1B0DVCE0AAAAACghN\nqA191pRB3VEWtUcZ1B0AVSM0AQAAACggNKE29FlTBnVHWdQeZVB3AFSN0AQAAACggNCE2tBnTRnU\nHWVRe5RB3QFQNUITAAAAgAJCE2pDnzVlUHeURe1RBnUHQNUITQAAAAAKCE2oDX3WlEHdURa1RxnU\nHQBVIzQBAAAAKCA0oTb0WVMGdUdZ1B5lUHcAVI3QBAAAAKCA0ITa0GdNGdQdZVF7lEHdAVA1QhMA\nAACAAkITakOfNWVQd5RF7VEGdQdA1QhNAAAAAAoITagNfdaUQd1RFrVHGdQdAFUjNAEAAAAoIDSh\nNvRZUwZ1R1nUHmVQdwBUjdAEAAAAoIDQhNrQZ00Z1B1lUXuUQd0BUDWbrOuCF198Mddcc02WLVuW\npqamDB8+PKNGjXrTdTfeeGN+85vfpFOnTjn99NMzYMCA9hgvAAAAwEaxzidNOnTokHHjxmXKlCm5\n6KKL8uMf/zjPPfdcm2vmzJmTF154IVdddVVOOeWUfP3rX2+3AcPfSp81ZVB3lEXtUQZ1B0DVrDM0\n6dmzZ+Opkc6dO6dPnz5ZunRpm2sefvjh7L///kmSHXbYIStXrsxLL7204UcLAAAAsJG8oz1NFi9e\nnPnz52eHHXZo8/ulS5emV69ejeMtt9zyTcEKlE2fNWVQd5RF7VEGdQdA1axzT5PX/fnPf86UKVNy\nwgknpHPnzu05Jiru9Ud3X/8fVo4dV/l48S9+kW4vvpjuPXokSVqWLUsSxzU4/sNuu+axtCZJenTv\nniRZ1tLiuOLHvV5emT17b52k/PnHseONeUy9lV1/ZRx37dp1fT8e3ueaWltbW9d10Zo1a/LVr341\nu+22W+EmsNdff30+9rGPZa+99kqSnHnmmfnXf/3X9OzZs/B+d999d4aPGPEuh877UcvMmVlT0uI6\na9YsCzsb3cu3356+xx1X9jAowY8WzM8hfbcqexhsZDNbXs0+a9b5P60qy1pbT7M6NOXQ7p3KHgYl\nqPOcN3v27AwfPrzsYbARrFd7znXXXZe+ffsWBiZJMmzYsNx3331JkieffDLdunV7y8AEAAAA4P1g\nne05jz/+eO6///70798/X/jCF9LU1JSjjz46S5YsSVNTU0aMGJEhQ4Zkzpw5OeOMM9K5c+eceuqp\nG2Ps8I74yxdleL1tA6AOrLUAVM06Q5PBgwfnlltuWeeNTj755A0yIAAAAID3gnf07Tnwfvb6Bk6w\nMb2+MShAHVhrAagaoQkAAABAAaEJtaHPmjLY0wSoE2stAFUjNAEAAAAoIDShNvRZUwZ7mgB1Yq0F\noGqEJgAAAAAFhCbUhj5rymBPE6BOrLUAVI3QBAAAAKCA0ITa0GdNGexpAtSJtRaAqhGaAAAAABQQ\nmlAb+qwpgz1NgDqx1gJQNUITAAAAgAJCE2pDnzVlsKcJUCfWWgCqRmgCAAAAUEBoQm3os6YM9jQB\n6sRaC0DVCE0AAAAACghNqA191pTBniZAnVhrAagaoQkAAABAAaEJtaHPmjLY0wSoE2stAFUjNAEA\nAAAoIDShNvRZUwZ7mgB1Yq0FoGqEJgAAAAAFhCbUhj5rymBPE6BOrLUAVI3QBAAAAKCA0ITa0GdN\nGexpAtSJtRaAqhGaAAAAABQQmlAb+qwpgz1NgDqx1gJQNUITAAAAgAJCE2pDnzVlsKcJUCfWWgCq\nRmgCAAAAUEBoQm3os6YM9jQB6sRaC0DVCE0AAAAACghNqA191pTBniZAnVhrAagaoQkAAABAAaEJ\ntaHPmjLY0wSoE2stAFUjNAEAAAAoIDShNvRZUwZ7mgB1Yq0FoGqEJgAAAAAFhCbUhj5rymBPE6BO\nrLUAVI3QBAAAAKCA0ITa0GdNGexpAtSJtRaAqhGaAAAAABQQmlAb+qwpgz1NgDqx1gJQNUITAAAA\ngAJCE2pDnzVlsKcJUCfWWgCqRmgCAAAAUEBoQm3os6YM9jQB6sRaC0DVCE0AAAAACghNqA191pTB\nniZAnVhrAagaoQkAAABAAaEJtaHPmjLY0wSoE2stAFUjNAEAAAAoIDShNvRZUwZ7mgB1Yq0FoGqE\nJgAAAAAFhCbUhj5rymBPE6BOrLUAVI3QBAAAAKCA0ITa0GdNGexpAtSJtRaAqhGaAAAAABQQmlAb\n+qwpgz1NgDqx1gJQNUITAAAAgAJCE2pDnzVlsKcJUCfWWgCqRmgCAAAAUEBoQm3os6YM9jQB6sRa\nC0DVCE0AAAAACghNqA191pTBniZAnVhrAaiaTdZ1wXXXXZfZs2enR48eufzyy990fu7cubn00kuz\n9dZbJ0n22GOPjBkzZsOPFAAAAGAjWmdocuCBB+ZTn/pUrrnmmre85iMf+UgmTZq0QQcGG5o+a8pg\nTxOgTqy1AFTNOttzBg8enG7dur3tNa2trRtsQAAAAADvBRtkT5N58+blC1/4Qi6++OIsXLhwQ9wS\nNjh91pTBniZAnVhrAaiadbbnrMt2222Xa6+9Np06dcqcOXNy2WWX5Wtf+9qGGBsAAABAad71kyad\nO3dOp06dkiS77bZbVq9enRUrVrzrgVFds2bNavOXqI11/HqfdVnv77iex0C9LGtpafxc9vxTxvEb\nvRfG49h6x8ZRdv2VPd9RbU2t67EhyeLFi3PJJZfkiiuueNO5l156KT179kySPPXUU7nyyiszderU\nt73f3XffneEjRvyNQ+b9rGXmzKyxSRw10mHWrHQ/9NCyh0EJfrRgfg7pu1XZw2Ajm9nyavZZY683\n6mVWh6Yc2r1T2cOgBHWe82bPnp3hw4eXPQw2gnW253zta1/L3Llzs3z58px66qkZO3ZsVq9enaam\npowYMSK/+MUv8pOf/CQdOnRIx44dc+aZZ26MccM7NmvWLLv6s9G1LFuW7mUPAmAjsdYCUDXrDE0m\nTJjwtudHjhyZkSNHbrABAQAAALwXbJBvz4H3A3/5ogzde/QoewgAG421FoCqEZoAAAAAFBCaUBt2\nuaYMLcuWlT0EgI3GWgtA1QhNAAAAAAoITagNfdaUwZ4mQJ1YawGoGqEJAAAAQAGhCbWhz5oy2NME\nqBNrLQBVIzQBAAAAKCA0oTb0WVMGe5oAdWKtBaBqhCYAAAAABYQm1IY+a8pgTxOgTqy1AFSN0AQA\nAACggNCE2tBnTRnsaQLUibUWgKoRmgAAAAAUEJpQG/qsKYM9TYA6sdYCUDVCEwAAAIACQhNqQ581\nZbCnCVAn1loAqkZoAgAAAFBAaEJt6LOmDPY0AerEWgtA1QhNAAAAAAoITagNfdaUwZ4mQJ1YawGo\nGqEJAAAAQAGhCbWhz5oy2NMEqBNrLQBVIzQBAAAAKCA0oTb0WVMGe5oAdWKtBaBqhCYAAAAABYQm\n1IY+a8pgTxOgTqy1AFSN0AQAAACggNCE2tBnTRnsaQLUibUWgKoRmgAAAAAUEJpQG/qsKYM9TYA6\nsdYCUDVCEwAAAIACQhNqQ581ZbCnCVAn1loAqkZoAgAAAFBAaEJt6LOmDPY0AerEWgtA1QhNAAAA\nAAoITagNfdaUwZ4mQJ1YawGoGqEJAAAAQAGhCbWhz5oy2NMEqBNrLQBVIzQBAAAAKCA0oTb0WVMG\ne5oAdWKtBaBqhCYAAAAABYQm1IY+a8pgTxOgTqy1AFSN0AQAAACggNCE2tBnTRnsaQLUibUWgKoR\nmgAAAAAUEJpQG/qsKYM9TYA6sdYCUDVCEwAAAIACQhNqQ581ZbCnCVAn1loAqkZoAgAAAFBAaEJt\n6LOmDPY0AerEWgtA1QhNAAAAAAoITagNfdaUwZ4mQJ1YawGoGqEJAAAAQAGhCbWhz5oy2NMEqBNr\nLQBVIzQBAAAAKCA0oTb0WVMGe5oAdWKtBaBqhCYAAAAABYQm1IY+a8pgTxOgTqy1AFSN0AQAAACg\ngNCE2tBnTRnsaQLUibUWgKoRmgAAAAAUEJpQG/qsKYM9TYA6sdYCUDVCEwAAAIACQhNqQ581ZbCn\nCVAn1loAqmaTdV1w3XXXZfbs2enRo0cuv/zywmtuvPHG/OY3v0mnTp1y+umnZ8CAARt6nAAAAAAb\n1TqfNDnwwANz7rnnvuX5OXPm5IUXXshVV12VU045JV//+tc36ABhQ9FnTRnsaQLUibUWgKpZZ2gy\nePDgdOvW7S3PP/zww9l///2TJDvssENWrlyZl156acONEAAAAKAE73pPk6VLl6ZXr16N4y233DJL\nly59t7eFDU6fNWWwpwlQJ9ZaAKrGRrAAAAAABda5Eey6bLnllnnxxRcbxy+++GK23HLLd3tbKurp\nQTvkdy8vT5L06N49SbKspWWjHL/+u431fo7/97jXyyuzZ++tk/xvv/vrf42s+vF/L1qU1z4JoA6W\ntbQk3TZPUv78U8bxB1pastP/n/9f39Pp9SfuHFf4eM89knQK9fVemH829nHXrl3X9+Phfa6ptbW1\ndV0XLV68OJdcckmuuOKKN52bPXt2fvzjH2fy5Ml58sknc9NNN+Wiiy562/vdfffdGT5ixN8+at63\nfrRgfg7pu1XZw2Ajm9nyavZZs86pppJevv329D3uuLKHQQnMd/VU5/kuMefVlfmuvuo8582ePTvD\nhw8vexhsBOt80uRrX/ta5s6dm+XLl+fUU0/N2LFjs3r16jQ1NWXEiBEZMmRI5syZkzPOOCOdO3fO\nqaeeujHGDfC+YE8ToE7MeQBUzTpDkwkTJqzzJieffPIGGQwAAADAe4WNYAHa0es93wB1YM4DoGqE\nJgAAAAAFhCYA7Uh/P1An5jwAqkZoAgAAAFBAaALQjvT3A3VizgOgaoQmAAAAAAWEJgDtSH8/UCfm\nPACqRmgCAAAAUEBoAtCO9PcDdWLOA6BqhCYAAAAABYQmAO1Ifz9QJ+Y8AKpGaAIAAABQQGgC0I70\n9wN1Ys4DoGqEJgAAAAAFhCYA7Uh/P1An5jwAqkZoAgAAAFBAaALQjvT3A3VizgOgaoQmAAAAAAWE\nJgDtSH8/UCfmPACqRmgCAAAAUEBoAtCO9PcDdWLOA6BqhCYAAAAABYQmAO1Ifz9QJ+Y8AKpGaAIA\nAABQQGgC0I709wN1Ys4DoGqEJgAAAAAFhCYA7Uh/P1An5jwAqkZoAgAAAFBAaALQjvT3A3VizgOg\naoQmAAAAAAWEJgDtSH8/UCfmPACqRmgCAAAAUEBoAtCO9PcDdWLOA6BqhCYAAAAABYQmAO1Ifz9Q\nJ+Y8AKpGaAIAAABQQGgC0I709wN1Ys4DoGqEJgAAAAAFhCYA7Uh/P1An5jwAqkZoAgAAAFBAaALQ\njvT3A3VizgOgaoQmAAAAAAWEJgDtSH8/UCfmPACqRmgCAAAAUEBoAtCO9PcDdWLOA6BqhCYAAAAA\nBYQmAO1Ifz9QJ+Y8AKpGaAIAAABQQGgC0I709wN1Ys4DoGqEJgAAAAAFhCYA7Uh/P1An5jwAqkZo\nAgAAAFBAaALQjvT3A3VizgOgaoQmAAAAAAWEJgDtSH8/UCfmPACqRmgCAAAAUEBoAtCO9PcDdWLO\nA6BqhCYAAAAABYQmAO1Ifz9QJ+Y8AKpGaAIAAABQQGgC0I709wN1Ys4DoGqEJgAAAAAFhCYA7Uh/\nP1An5jwAqkZoAgAAAFBAaALQjvT3A3VizgOgaoQmAAAAAAU2WZ+LfvOb32TatGlpbW3NgQcemMMP\nP7zN+XvvvTf/8R//kV69eiVJPvnJT+aggw7a8KMFeJ/R3w/UiTkPgKpZZ2iydu3a3HDDDfnSl76U\nLbbYIpMnT87uu++ePn36tLlur732ykknndRuAwUAAADYmNbZnvPUU0/lQx/6ULbaaqtssskm2Xvv\nvfPwww9vjLEBvO/p7wfqxJwHQNWs80mTpUuXNtpukmTLLbfMU0899abrfvnLX+b3v/99PvShD2Xc\nuHFtXgMAAADwfrNBNoIdNmxYpk6dmssuuyw777xzpk6duiFuC1TEspaWxs+zZs3KrFmzanMM1Eud\n5ztzH9TXe2H+Md/RXppaW1tb3+6CJ598MtOnT8+5556bJLntttuS5E2bwb5u7dq1OemkkzJt2rS3\nvOfdd9+d4SNG/I1D5v3sRwvm55C+W5U9DDaymS2vZp81bzvVVFaHWbPS/dBDyx4GJTDf1VOd57vE\nnFdX5rv6qvOcN3v27AwfPrzsYbARrPNJk+233z7PP/98lixZktWrV+fnP/95hg0b1uaal156qfHz\nr371q/Tt23fDjxTgfUh/P1An5jwAqmade5o0Nzfn5JNPzpe//OW0trbmoIMOSt++fXPrrbdm4MCB\nGTp0aO644478+te/TocOHbLZZpvltNNO2xhjBwAAAGg36wxNkmTXXXfN1772tTa/Gzt2bOPnY445\nJsccc8yGHRlABXTv0aPsIQBsNOY8AKpmg2wECwAAAFA1QhOAdqS/H6gTcx4AVSM0AQAAACggNAFo\nR/r7gTox5wFQNUITAAAAgAJCE4B2pL8fqBNzHgBVIzQBAAAAKCA0AWhH+vuBOjHnAVA1QhMAAACA\nAkITgHakvx+oE3MeAFUjNAEAAAAoIDQBaEf6+4E6MecBUDVCEwAAAIACQhOAdqS/H6gTcx4AVSM0\nAQAAACggNAFoR/r7gTox5wFQNUITAAAAgAJCE4B2pL8fqBNzHgBVIzQBAAAAKCA0AWhH+vuBOjHn\nAVA1QhMAAACAAkITgHakvx+oE3MeAFUjNAEAAAAoIDQBaEf6+4E6MecBUDVCEwAAAIACQhOAdqS/\nH6gTcx4AVSM0AQAAACggNAFoR/r7gTox5wFQNUITAAAAgAJCE4B2pL8fqBNzHgBVIzQBAAAAKCA0\nAWhH+vuBOjHnAVA1QhMAAACAAkITgHakvx+oE3MeAFUjNAEAAAAoIDQBaEf6+4E6MecBUDVCEwAA\nAIACQhOAdqS/H6gTcx4AVSM0AQAAACggNAFoR/r74f+1dz8vUf17HMdfo/bVm+NVxx9hSog/oEgI\nUUM0EjWQaiNFQYswok20MDdZRLpqoxn4KxdhupAW/gVBXsmFSVg5INgPRSwKNHXIEpUcZ76LuNLc\nTs18bx4Hz3k+duP5NLwXb951Xp33EXbCzAMAWA2hCQAAAAAAgAFCEwAwEfv9AOyEmQcAsBpCEwAA\nAAAAAAOEJgBgIvb7AdgJMw8AYDWEJgAAAAAAAAYITQDAROz3A7ATZh4AwGoITQAAAAAAAAwQmgCA\nidjvB2AnzDwAgNUQmgAAAAAAABggNAEAE7HfD8BOmHkAAKshNAEAAAAAADBAaAIAJmK/H4CdMPMA\nAFZDaAIAAAAAAGCA0AQATMR+PwA7YeYBAKyG0AQAAAAAAMAAoQkAmIj9fgB2wswDAFgNoQkAAAAA\nAIABQhMAMBH7/QDshJkHALAaQhMAAAAAAAADhCYAYCL2+wHYCTMPAGA1hCYAAAAAAAAGCE0AwETs\n9wOwE2YeAMBqCE0AAAAAAAAMEJoAgInY7wdgJ8w8AIDVEJoAAAAAAAAYiArlkNvtVm9vr/x+v8rL\ny1VdXR1w3ev1qqOjQ9PT04qLi1NdXZ2Sk5NNKRgAdpIvS0v6d7iLAIBtwswDAFhN0CdNfD6furu7\ndfPmTbW0tGh4eFgfP34MODM4OCin06m2tjadPHlSfX19phUMAAAAAACwHYKGJlNTU0pLS1NKSoqi\noqJUWlqq0dHRgDOjo6MqKyuTJBUXF2t8fNycagFgh2G/H4CdMPMAAFYTNDTxeDxKSkra/OxyueTx\neH55JiIiQrGxsVpeXt7iUgEAAAAAALaPKS+C9fv9ZnwtAOw4X5aWwl0CAGwbZh4AwGqCvgjW5XJp\nYWFh87PH45HL5Qo4k5SUpMXFRblcLvl8Pq2ursrpdP72e/8zMPB/loyd7F9vJjXwZjLcZSAMXoa7\ngHBJS9Mb5p0tMe/sy7bzTmLm2RTzzt5sPfNgC0FDk5ycHM3Ozmp+fl6JiYkaHh5WbW1twJmCggIN\nDQ0pNzdXIyMjysvL++13VlZW/lnVAAAAAAAAJnP4Q9ilcbvd6unpkd/vV0VFhaqrq9Xf36/s7GwV\nFBRofX1d7e3tmpmZUVxcnGpra5Wamrod9QMAAAAAAJgipNAEAAAAAADAbkx5ESwAAAAAAMBOR2gC\nAAAAAABgIOiLYP+E2+1Wb2+v/H6/ysvLVV1dHXDd6/Wqo6ND09PTiouLU11dnZKTk80sCTYQrO+e\nPHmivr4+JSUlSZKqqqpUUVERjlJhIV1dXXr58qXi4+N1584dwzMPHjyQ2+1WdHS0rly5oszMzO0t\nEpYTrO8mJibU1NSkPXv2SJIOHz6s06dPb3eZsJDFxUV1dHRoaWlJDodDlZWVOnHixE/nmHfYSqH0\nHfMOZlhfX1djY6O8Xq82NjZUXFysM2fOBJzhntb6TAtNfD6furu71dDQoMTERN24cUNFRUVKT0/f\nPDM4OCin06m2tjY9ffpUfX19unr1qlklwQZC6TtJKikp0cWLF8NUJayovLxcx48fV0dHh+H1sbEx\nzc3Nqa2tTZOTk7p//75u3769zVXCaoL1nSQdOHBA9fX121gVrCwyMlI1NTXKzMzU2tqa6uvrdejQ\noYC/Z5l32Gqh9J3EvMPW27VrlxobGxUdHS2fz6dbt24pPz9fOTk5m2e4p7U+09ZzpqamlJaWppSU\nFEVFRam0tFSjo6MBZ0ZHR1VWViZJKi4u1vj4uFnlwCZC6TvADPv371dsbOwvr/8473Jzc7WysqLP\nnz9vV3mwqGB9J0m87x1bKSEhYfOpkZiYGKWnp8vj8QScYd5hq4XSdxLzDuaIjo6W9P2pk42NjZ+u\nc09rfaY9aeLxeDbXHyTJ5XJpamrql2ciIiIUGxur5eVlOZ1Os8qCxYXSd5L07NkzvXr1Smlpaaqp\nqQn4M4AZjHrT4/EoISEhjFXBDiYnJ3Xt2jUlJibq/PnzysjICHdJsIhPnz7p3bt3ys3NDfg58w5m\n+lXfScw7mMPn8+n69euam5tTVVVVwFMmEve0dmDqO03+KdJhbIfCwkIdOXJEUVFRGhgYUGdnpxoa\nGsJdFgBsuaysLN27d0/R0dEaGxtTc3OzWltbw10WLGBtbU13797VhQsXFBMTE+5yYBO/6zvmHcwS\nERGhpqYmraysqLm5WR8+fPhtIMc9rfWYtp7jcrm0sLCw+dnj8cjlcgWcSUpK0uLioqTvCd7q6iqJ\nHP5IKH3ndDoVFfU9L6yoqND09PS21gh7crlcm/NO+v5Su//tTWCrxcTEbD5WnJ+fL6/Xq+Xl5TBX\nhZ1uY2NDLS0tOnr0qIqKin66zryDGYL1HfMOZtu9e7cOHjwot9sd8HPuaa3PtNAkJydHs7Ozmp+f\nl9fr1fDwsAoLCwPOFBQUaGhoSJI0MjKivLw8s8qBTYTSdz/uVT9//pxHN7Fl/H7/L/93obCwcHPe\nvX37VrGxsTyqji3xu777cd79d1WRf8jhT3V1dSkjI8Pwt+ZIzDuYI1jfMe9ghi9fvmhlZUWS9O3b\nN42Pj2vv3r0BZ7intT6H38Tnh9xut3p6euT3+1VRUaHq6mr19/crOztbBQUFWl9fV3t7u2ZmZhQX\nF3ZKnxcAAAEGSURBVKfa2lqlpqaaVQ5sIljfPXz4UC9evFBkZKScTqcuXbr00/AD/qnW1lZNTEzo\n69evio+P19mzZ+X1euVwOHTs2DFJUnd3t9xut2JiYnT58mVlZWWFuWrsdMH67tGjR3r8+LEiIyP1\n119/qaamxvA9AECoXr9+rcbGRu3bt08Oh0MOh0Pnzp3T/Pw88w6mCaXvmHcww/v379XZ2Smfzye/\n36+SkhKdOnWKe1qbMTU0AQAAAAAA2KlMW88BAAAAAADYyQhNAAAAAAAADBCaAAAAAAAAGCA0AQAA\nAAAAMEBoAgAAAAAAYIDQBAAAAAAAwAChCQAAAAAAgAFCEwAAAAAAAAN/A/HcCxT164kJAAAAAElF\nTkSuQmCC\n",
+ "text": [
+ "<matplotlib.figure.Figure at 0x7f3c1f6a1690>"
+ ]
+ }
+ ],
+ "prompt_number": 7
+ }
+ ],
+ "metadata": {}
+ }
+ ]
+} \ No newline at end of file
diff --git a/tests/test_plotter.py b/tests/test_plotter.py
index e675311..ae59384 100644
--- a/tests/test_plotter.py
+++ b/tests/test_plotter.py
@@ -246,3 +246,20 @@ class TestPlotter(BaseTestThermal):
self.assertTrue([4, 5, 1] in data["task1-15411"])
self.assertEquals(procs, expected_procs)
self.assertEquals(window, [1, 5])
+
+class TestBarPlot(unittest.TestCase):
+ def setUp(self):
+ self.dfr = pd.DataFrame({"foo": [1, 2, 3],
+ "bar": [2, 3, 1],
+ "baz": [3, 2, 1]})
+
+ def test_barplot_dfr(self):
+ """BarPlot plots dataframes without exploding"""
+ trappy.BarPlot(self.dfr, column=["foo", "bar"]).view(test=True)
+
+ def test_barplot_trace(self):
+ """BarPlot plots traces without exploding"""
+ trace = trappy.BareTrace()
+ trace.add_parsed_event("event", self.dfr)
+
+ trappy.BarPlot(trace, signals=["event:foo", "event:bar"]).view(test=True)
diff --git a/trappy/plotter/BarPlot.py b/trappy/plotter/BarPlot.py
index 33442bb..fda4284 100644
--- a/trappy/plotter/BarPlot.py
+++ b/trappy/plotter/BarPlot.py
@@ -21,7 +21,50 @@ import numpy as np
from trappy.plotter.StaticPlot import StaticPlot
class BarPlot(StaticPlot):
- """A matplotlib static plotter which produces line plots"""
+ """BarPlot can plot data as vertical bars
+
+ Values are plotted against their position in the list of data.
+
+ :param traces: The input data
+ :type traces: A single instance or a list of :mod:`trappy.trace.FTrace` or :mod:`pandas.DataFrame`
+
+ :param column: specifies the name of the column to be plotted.
+ :type column: str or list(str)
+
+ :param templates: TRAPpy events
+
+ .. note::
+
+ This is not required if a :mod:`pandas.DataFrame` is
+ used
+
+ :type templates: :mod:`trappy.base.Base`
+
+ :param signals: A string of the type event_name:column
+ to indicate the value that needs to be plotted
+
+ .. note::
+
+ - Only one of `signals` or both `templates` and
+ `columns` should be specified
+ - Signals format won't work for :mod:`pandas.DataFrame`
+ input
+
+ :type signals: str or list(string)
+
+ :param title: A title describing the generated plots
+ :type title: str
+
+ :param stacked: The series are grouped by default. If you want a
+ stacked plot, set stacked to True.
+ :type stacked: bool
+
+ :param spacing: A proportion of the size of each group which
+ should be used as the spacing between the groups. e.g. 0.2
+ (default) means that 1/5 of the groups total width is used as
+ a spacing between groups.
+ :type spacing: float
+ """
def __init__(self, traces, templates=None, **kwargs):
# Default keys, each can be overridden in kwargs