{ "metadata": { "name": "", "signature": "sha256:ef1254df3ca6957689275349d13ab4f01a17c2d15fd470bd3f30b69a6f7928e6" }, "nbformat": 3, "nbformat_minor": 0, "worksheets": [ { "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "The Receiver Operating Characteristic \"ROC\" illustrates the performance of the binary classifier by plotting the false alarm probability ($P_{FA}$) on the horizontal axis and the detection probability ($P_D$) on the vertical axis. The area under the ROC-curve (AUC) is used to provide a single-figure quantification of the performance of the binary classifier based on the ROC. This article provides an interpretation of the AUC and connects the AUC to the Wilcoxon\u2013Mann\u2013Whitney statistic, which is a nonparametic test to compare two populations. This derivation is pretty hard to find but the connection between the AUC and the Wilcoxon\u2013Mann\u2013Whitney test is important insofar as it provides some perspective on the seemingly arbitrary use of AUC to quantify the performance of the binary classifier.\n", "\n", "Let's proceed with some definitions and some notation. A binary classifier can make two kinds of mistakes, usually and unhelpfully called Type I and Type II errors. The *detection probability* is \n", "\n", "$$P_D= \\mathbb{P}(1|x \\in C_1)$$\n", "\n", "which says that given a member of the $C_1$ class, this is the probability of the binary classifier correctly classifying $x$ as of that class. The *false alarm probability* is\n", "\n", "$$P_{FA}= \\mathbb{P}(1|x \\in C_0)$$\n", "\n", "Which is the probability that an element of the $C_0$ class will Incorrectly be classified as an element of the $C_1$ class. Binary classifiers usually work by comparing the measurement $x$ to a fixed threshold, $c$, to assess class membership. We can rewrite the above two definitions using $c$ as follows:\n", "\n", "$$P_D= \\mathbb{P}(x > c|x \\in C_1)$$\n", "\n", "$$P_{FA}= \\mathbb{P}( x> c|x \\in C_0)$$\n", "\n", "Thus, the ROC-curve is really a plot of the countour\n", "\n", "$$ (P_{FA}(c),P_D(c)) $$\n", "\n", "so that drawing of the curve actually means changing the value of the threshold, $c$. As a concrete example, we take the $f(x|C_0) = \\mathcal{N}(0,1)$ and $f(x|C_1) = \\mathcal{N}(2,1)$ as the two respective probability densities of $C_0$ and $C_1$. The following code constructs a ROC-curve for this situation.\n" ] }, { "cell_type": "code", "collapsed": false, "input": [ "%matplotlib inline\n", "from IPython.html.widgets import interact\n", "from scipy import stats" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 38 }, { "cell_type": "code", "collapsed": false, "input": [ "f0=stats.norm(0,1)\n", "f1=stats.norm(2,1)\n", "fig,ax = subplots()\n", "xi = linspace(-2,5,100)\n", "ax.plot(xi,f0.pdf(xi),label=r'$f(x|C_0)$')\n", "ax.plot(xi,f1.pdf(xi),label=r'$f(x|C_1)$')\n", "ax.legend(fontsize=16,loc=(1,0))\n", "ax.set_xlabel(r'$x$',fontsize=18)\n", "ax.vlines(0,0,ax.axis()[-1]*1.1,linestyles='--',lw=3.)\n", "ax.fill_between(xi,f1.pdf(xi),where=xi>0,alpha=.3,color='g')\n", "ax.fill_between(xi,f0.pdf(xi),where=xi>0,alpha=.3,color='b')" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 37, "text": [ "" ] }, { "metadata": {}, "output_type": "display_data", "png": "iVBORw0KGgoAAAANSUhEUgAAAeUAAAEXCAYAAACTalxwAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3Xd0VNUWx/HvIZWEFjoSWiA0pUsIoBCqERAQfCjYEEUE\nRRRUUCmJPKVIFTAUG09BBESKCkgx0nvvvYTeWwop5/0xCQZIMikzc6fsz1qsx8zc8uMJ2XPvPWcf\npbVGCCGEEMbLZXQAIYQQQphIURZCCCHshBRlIYQQwk5IURZCCCHshBRlIYQQwk5IURZCCCHshNmi\nrJQKVUodUEodVkr1z2C7ukqpBKVUx1TvnVBK7VJKbVdKbbJUaCGEEMIZuWf0oVLKDZgINAfOAJuV\nUgu11vvT2G4EsOSBQ2ggRGt91XKRhRBCCOdk7ko5CDiitT6htY4HZgHt0tiuNzAXuJTGZypnEYUQ\nQgjXYK4olwROp3odlfzePUqpkpgKdUTyW6lbhGlguVJqi1Kqew6zCiGEEE4tw9vX3F9g0zMOGKC1\n1kopxf1Xxg211ueUUkWAZUqpA1rr1dkNK4QQQjgzc0X5DFAq1etSmK6WU6sDzDLVYwoDTyul4rXW\nC7XW5wC01peUUr9huh1+X1GuUKGCPnr0aA7+CEII4ZKOaq0rGB1CWJa529dbgEClVFmllCfwPLAw\n9QZa6wCtdTmtdTlMz5V7aq0XKqV8lFJ5AZRSvkBLYPeDJzh69Chaa4f9NWTIEMMzSH7jc7hifkfO\n7gz5gfI5LwHC3mR4pay1TlBKvQMsBdyAb7XW+5VSPZI/n5LB7sWBeclX0O7ADK31X5aJLYQQQjgf\nc7ev0VovBhY/8F6axVhr/Vqq3x8DauY0oBBCCOEqpKNXDoWEhBgdIUckv7EcOb8jZwfHzy+ck0p+\nNmFcAKW00RlcVVhYWJq/F0LYP6UUWmvpA+FkpCi7sOTn/QDIfwMhHIsUZedk9pmycF5DhgwxOoIQ\nQohU5EpZCCEckFwpOycZ6CWEEELYCSnKQgghhJ2QoiyEEELYCSnKQgghhJ2Q0dcuTOYpCyGEfZHR\n1y5M5ikL4bhk9LVzktvXQgghhJ2QoiyEEELYCSnKQgghhJ2QoiyEEELYCRl97cKk97UQQtgXs6Ov\nlVKhwDjADfhGaz0ine3qAuuB57XWv2Z2Xxl9LYQQWSejr51ThrevlVJuwEQgFKgKdFZKVUlnuxHA\nkqzuK4QQQggTc8+Ug4AjWusTWut4YBbQLo3tegNzgUvZ2FcIIYQQmC/KJYHTqV5HJb93j1KqJKZi\nG5H8Vsq9aLP7CiGEEOJf5gZ6ZeZh7zhggNZaK1OLqJRnHJl+UJy6xWNISAghISGZ3VVkUWwsbNkC\n69fDnTtQoADkzw+FCsHTT4OHh9EJnduRq0dYcGAB12OvE58UT3xiPKXzl6Z95faUKVDG6HjCjkVG\nRhIZGWl0DGFlGQ70UkoFA2Fa69Dk1x8DSakHbCmljvFvIS4MRAPdgYvm9k1+XwZ6WZnWsGgRjBoF\nW7dClSrQoAHs3BlJbKw3d+54c/t2Ta5fh1at4PXXoVkzo1M7j6ibUYxZP4bfD/3O2VtnqVK4Cnm9\n8uKm3HDL5caF2xc4eOUgRX2L8lT5p/isyWcUy1PM6NjCzslAL+dkrii7AweBZsBZYBPQWWu9P53t\nvwcWaa3nZXZfKcrWozUsXw4DB0JMDAwZAk89BXnymD5P3ft68mRNXJxp+3Xr4NFH4fvvISDAoPBO\nID4xnv+u+i9jN4ylRrEaPFnmSR4v8Tgebg/fjkhITGD3pd0sO7qMnRd20juoN4MaD8Lb3duA5MIR\nSFF2TpmZEvU0/05r+lZrPUwp1QNAaz3lgW3vFeX09k3j+FKUrSA6Grp3h82b4bPPoFMnyPXACIIH\ni/Ijj5h+HxsL06fDqlUwYIDp14P7iowtP7ac7ou645nLkx51ehBYKDDT+x68cpDvd3zP1eirTH92\nOi3Lt7RiUuGopCg7J1klygkdPw7PPgvVq8OUKZA7d9rbpVeUUxw8CJMmQYkSsHQp5M1rxdBOZOKm\niXyy4hNerPYiT1d4+r7/n7Ni+bHlfLfjO4Y1G8Y7Qe9YOKVwdFKUnZNc/ziZ5cshOBi6dTNd7aZX\nkDOjUiUYPRoSEqB+fbh40XI5nZHWmn5L+zH478EMbjSYVoGtsl2QAZoHNGdwo8GERYbR8/eeJOkk\nC6YVQtgjuVJ2IitWQOfOMHs2ZGYAu7kr5RRJSTBhAhw5AitXynPmtCTpJDrN6cSGqA0MbjyYEnlK\nWOzYl+9c5r+r/0vlwpVZ1GURuZR8lxZypeyspCg7iQ0b4JlnYO5caNw4c/ukTEWLiYGAgLB0izKY\nBo1Nnw5r18KmTVC6dM4zO5NXfnuFdafX8VnIZ+T1svx9/ui70Xzy9yc8UfoJprefbvHjC8cjRdk5\nSVF2Art3Q/Pm8N130Lp11ve/ds10dZ1RUU4xdSocPmya65wyitvVDf57MNO2TmNki5EU8C5gtfNc\ni7lG/xX9ebX6qwxvMdxq5xGOQYqyc5L7YA7u9GkIDYXx47NXkLOqe3dTMW7f3nRb29V9v/17vtr4\nFYMaDbJqQQbwy+1HeONwpm6bytj1Y616LiGEMaQoO7C7d01TnXr3hhdesM05lYL+/eHoUXj7bduc\n016tOLaCd5e8y0cNPqJU/lI2OWeJvCUY+ORAhkQOYfmx5TY5pxDCdqQoO7CPPza1x/zoI9ue19sb\nBg2COXPgm29se257cSX6Cp1/7cxrNV6jWrFqNj13YKFAutboyovzXuTSnUvmdxBCOAwpyg7qt9/g\n119Ng6+MaOxRpAj06QP9+pmuml2J1prOv3amSuEqtCjfwpAMLcq3oErhKnSa2wkZkyGE85CBXg7o\n2DHTXORFi6BevewfJyujr9PzzTdw5oxpRLardP0at2EcI9aOYFzLcfh4+hiWIzYhlr5L+9Lz8Z58\n0ugTw3IIY8hAL+ckRdnBJCWZpjy1b2+6Ss2JzM5TzkhCAvTtCy+9BEOH5iyPI9hzcQ/1v63PoEaD\nqFK4itFxOHbtGAP/Hsjyl5dTzz8H39CEw5Gi7Jxc5NrGeUydaiqE771ndBITd3dTUR43DjZuNDqN\ndSUkJvCfOf+hTWAbuyjIAAF+AXSo0oFX5r9CQmKC0XGEEDkkRdmBREWZBlh98w24uRmd5l9ly0LH\njqar5QQnrgvD1wwnPjGeFx6z0VD3TOpQuQOJSYl8vvpzo6MIIXJIirKD0Bp69TJNQ3r0UaPTPKxD\nB1PGL74wOol1nLx+kpHrRvLW42/ZXZvLXCoXvR7vxaj1ozh61cVG3QnhZOzrp4tI15w5plHOH39s\ndJK0KQU9esCoUaYremfz5qI3aViqIZUKVTI6SpoCCwXSuExjui3oZnQUIUQOuBsdQJh386bpGfLc\nueDlZbnjDhkyBDCNvraEypVNo8Hfegt+/90yx7QHc/bOYeu5rUx6epLRUTL0ao1X6b24N99v/57X\nar1mdBwhRDbI6GsH8MknpmlH0620DkFWel+bc/u26Tb7jBnQqlXOj2e06Phoyn9Vni6PdSGkbIjR\ncczaELWBqdumcvzd4+TxkubkzkxGXzsns7evlVKhSqkDSqnDSqn+aXzeTim1Uym1XSm1VSnVNNVn\nJ5RSu5I/22Tp8K7gxAmYMsVxntXmyWNaPrJXL4iPNzpNzoVFhlHEp4hDFGSAYP9gSuYtSdg/YUZH\nEUJkQ4ZFWSnlBkwEQoGqQGel1INzQZZrrWtorWsBXYGpqT7TQIjWupbWOshysV3HgAHw7rtQsqTR\nSTIvNBQ8PWHMGKOT5My5W+eYvGUy3Wo61nPabjW7MWXrFM7cPGN0FCFEFpm7Ug4CjmitT2it44FZ\nQLvUG2it76R6mQe4/MAx5PZKNq1bZ1q/+IMPjE6SNUrBK6/AyJFw65bRabLvw2UfUqt4LcoXLG90\nlCwp51eOuo/U5f2l7xsdRQiRReaKckngdKrXUcnv3Ucp1V4ptR9YDLyb6iMNLFdKbVFKdc9pWFeS\nlATvvw+ffw6+vkanyboaNUzzl5M7eTqcvRf3Mv/AfF6t8arRUbLl1eqvsvjIYrae22p0FCFEFpgb\nfZ2pEVha6/nAfKXUk8CPQMq8kYZa63NKqSLAMqXUAa316gf3D0v1kzskJISQkJDMnNapzZ0LiYmm\nhhzW8mDva0t79VX49FPTlX6JEhY/vFX1WdKHZuWaUcS3iNFRsqWgT0FCy4fy7p/vsvb1tUbHERYQ\nGRlJZGSk0TGElWU4+lopFQyEaa1Dk19/DCRprUdksM9RIEhrfeWB94cAt7XWox94X0ZfPyAxER57\nzNS68qmnrHceS/S+NmfUKChVCn76yfLHtpYVx1bQcXZHJreejK+nA96mSBaXEMdbf7zF9PbTaV2x\ntdFxhIXJ6GvnZO729RYgUClVVinlCTwPLEy9gVKqvEr+6a6Uqg2gtb6ilPJRSuVNft8XaAnstvQf\nwBnNnGlaJ7llS6OT5Nwrr8D8+XDggNFJMu+jZR/RrlI7hy7IAF7uXjxT8RkGrhxodBQhRCZlWJS1\n1gnAO8BSYB/wi9Z6v1Kqh1KqR/JmHYHdSqntwHggpTFwcWC1UmoHsBH4XWv9lzX+EM4kPh7Cw00r\nLikn+A5ctKhpVauPPjI6Seb8efhPTt44SbtK7cxv7ACeqfgMUbeiWHhwofmNhRCGk+Yhdubbb02N\nN1autP65bHH7GkzNSXr1Mq25XLWqdc5hKXWm1KFa0Wp0rNrR6CgWs+DAAjaf3czOnjuNjiIsSG5f\nOyfpfW1H7t41XSE727rEfn7QqBEMtPO7qIsPL+bkjZO0qdjG6CgW1TqwNedvn2f+gflGRxFCmCG9\nr+3Id9+Z+kc3bGib81m693VGOnWCd96BQ4egYkXrny87Bv09iDaBbfByt2CDcTvg7uZO20ptGbhy\nIO0qtbvvDokQwr7I7Ws7ER8PgYEwaxYEB9v23JbsfZ2RSZMgXz7TuezNkiNLeHHei0xpPcXpijJA\nQmICPf/syaRWk5zq1rwrk9vXzkluX9uJn3+GgADbF2Rbev55+OMP0xKU9mbQSue8Sk7h7uZO24pt\nGbrKyZ6NCOFkpCjbgaQkGD7cftdKtpTChaFBA/t7thx5PJKj147yTMVnjI5iVU9XeJrTN0+z/Nhy\no6MIIdIhRdkOLFwIPj7QvLnRSazvhRdMf94zdrRWwmerPqNl+ZZOe5Wcwt3NndDyoXz2z2dGRxFC\npEOKssG0hmHDTFfJrjD+pmhRqF3bfpai3HV+F5vPbqZdReeYl2xO24pt2XF+B1vObjE6ihAiDTLQ\ny2ArV5rm8O7bB7ls/BXpwd7X1h7oleLoURg82HS1nDevbc6ZnudmP0dMQgxv1XnL2CA29M22b9Bo\nFnaWhiKOTAZ6OScpygZr0QI6d4ZuBizZa6vmIWkZNAiefRaSZ2UZ4tT1U1T5ugoTQydS2LewcUFs\n7FrMNXr+2ZOdb+2kQsEKRscR2SRF2TnJ7WsDbd8O+/dbdyUoe/Xss/D116apYEb5fPXnPF7icZcq\nyAB+uf1oUKqBPFsWwg5JUTbQ2LHQuzd4ehqdxPZq14Y8eUxtRY1wLeYaM/fM5D9V/2NMAIP9p8p/\nmLd/HpfuXDI6ihAiFSnKBjl7FhYtgjffNDqJcZ55BkaPNg12s7Ux68dQsWBFyhQoY/uT24ESeUtQ\ntUhVRq8bbX5jIYTNSFE2yKRJptvWfn5GJzFOkyZw65ZpipQtJSQmMG3bNNpVdo0R1+lpV6kd3+74\nlvhEA58hCCHuI72vDXDnDkydCuvXG5vDlr2v05Irl2mg26hR0M6G9fGn3T+R2yM3tYrXst1J7VD1\nYtXJ75Wf73d8z5t1XPiWjRB2REZfGyAiApYuhfl2smiPrXpfp+XOHXjjDdi4ER591DbnrDG5Bg38\nG9AqsJVtTmjHlh1dxvLjy9n39j6jo4gsktHXzkluX9tYUhKMGwd9+xqdxD74+ppWxRo2zDbnW3Nq\nDadunKJFQAvbnNDONSnbhIt3LkrrTSHshNmirJQKVUodUEodVkr1T+PzdkqpnUqp7UqprUqpppnd\n1xX9+aepYcaTTxqdxH60b2+6a3DtmvXPNXzNcJqUbYKHm4f1T+YA3N3caVauGcPXDDc6ihACM0VZ\nKeUGTARCgapAZ6VUlQc2W661rqG1rgV0BaZmYV+X89VX0KePa7TUzCx/f9May+PGWfc8p66f4u8T\nf7tMS83MalepHeuj1nPo8iGjowjh8sxdKQcBR7TWJ7TW8cAs4L6faFrrO6le5gEuZ3ZfV3PgAOzc\nCZ06GZ3E/jzzDEybZrq9by0j142kdvHaFPQpaL2TOKC8XnkJLhnMl+u+NDqKEC7PXFEuCZxO9Toq\n+b37KKXaK6X2A4uBd7OyryuZNAm6dwcvO1mMKCwsjLCwMIYPDzM6CnXqgIeHaV1pa4hNiOWnXT/x\nbOVnrXMCB9e2Ult+2fsL0fHRRkcRwqWZmxKVqWHRWuv5wHyl1JPAj0qpylkJkbIwAkBISAghISFZ\n2d0h3LwJM2bArl1GJ/lXeHj4vd9PnhxmXBBMt/NbtjTdwn7xRcsf/9tt31IsTzECCwVa/uBOIMAv\ngFL5SjF161TeC37P6DgiDZGRkURGRhodQ1hZhlOilFLBQJjWOjT59cdAktZ6RAb7HMV06zowM/u6\nypSoiRPhn39gzhyjk/zLyAUp0hIbC6+/DqtWQc2alj32o18/SrOyzWhRXkZdp+fvE3/z+6HfOdRb\nni07ApkS5ZzM3b7eAgQqpcoqpTyB54H7+i8ppcqr5J/uSqnaAFrrK5nZ11VobSrKvXsbncS+eXub\npkeNGmXZ4645tYZzt87RpGwTyx7YyTxZ6kmuxlxlxbEVRkcRwmVlWJS11gnAO8BSYB/wi9Z6v1Kq\nh1KqR/JmHYHdSqntwHjghYz2tc4fw74tX25adEKmQZnXti0sWGC63W8po9aNolGZRri7SQO7jLi7\nudOkbBNGrbfwtyIhRKZJRy8baNcO2rQxDfKyJ/Z2+zrFwIHQpQv0t8DM9ou3L1Luq3JMCJ1AEd8i\nOT+gk0tZa/ngOwfxz+dvdByRAbl97Zzk0sHKTp2CNWtg5kyjkzzM6N7X6QkNhSlT4KOPcj6fe9zG\ncTxW5DEpyJnkl9uPmsVrMmb9GMY8NcboOEK4HLlStrKBA00rIY0fb3SS9BnZ+zotSUmmuwr/+5+p\nQGf7ODqJR0Y/Qs/He1K7RG3LBXRyey7uYcyGMZzre05u+dsxuVJ2TtL72oru3oVvvoG33jI6iWPJ\nlcu0rOPYsTk7zpy9c/B083T51aCy6rGij5HHMw8/77HSpHEhRLqkKFvRb79BlSqmXyJr2rQx3faP\nisr+MSZsmkCTsk3ue3YuMqdJ2SZM2jzJ6BhCuBwpylYUEQE9exqdwjEVKAA1amS/H/bhK4fZfn47\noeVzcP/bhT0V8BR7Lu5h3yVZ0lEIW5KibCX79sHBg6YVkET2tGoFP/6YvX7YY9ePpe4jdcnjlcfy\nwVyAj6cPwSWDGbNeBnsJYUtSlK1k8mRTdypPT6OTpM+eel+npXp1U5/wrHZBu5twl1l7Z9E6sLV1\ngrmINhXbMGffHGITYo2OIoTLkNHXVnDnDpQuDdu3m/7XXtnrPOXU5s6FY8dg9erM7/Pt9m/5YvUX\njHvKymtBuoAPln3Ae/Xeo2ddeQ5jb2T0tXOSK2UrmDXL1C7SnguyowgNhW3b4MiRzO8TsTmC5uWa\nWy+UC2kR0IKILRFGxxDCZUhRtoIpU6BHD/PbCfPy5IHHH8/8gK9d53dx8MpBmgdIUbaEpmWbcurG\nKbac3WJ0FCFcghRlC9u+HS5cyFnTC3G/1q1N6yzHx5vfdsyGMdT3r4+3u7f1g7kADzcP6vvXZ+z6\nHE4aF0JkihRlC5syxdSNys3N6CTOo0oV0xSpGTMy3i4mPoZ5++fRJrCNbYK5iGcqPsPCQwu5HXfb\n6ChCOD3poWdBt26Z2lXu2WN0ksyx197XaWnSxDTvu2vX9Lf5YccPlMhbgnJ+5WyWyxWUyl+K0vlL\n8832b3gv+D2j4wjh1GT0tQVNnQpLlsC8eUYnyRp7632dluho0xSzrVuhUqW0t6k5uSYNSjXg6QpP\n2zacC1h+bDnLjy9nb6+9RkcRyWT0tXOS29cWJAO8rMfHB4KC0u+HvePcDo5dO0bTsk1tG8xFhJQJ\n4czNM2yK2mR0FCGcmtmirJQKVUodUEodVko9tMKtUupFpdROpdQupdRapVT1VJ+dSH5/u1LKqf81\nb9liuuJs0cLoJM6rVSvTFX1aA77GbhxLff/6eLl72T6YC3B3c+eJ0k8wdoMM+BLCmjIsykopN2Ai\nEApUBTorpR5cXuEY0EhrXR0YCkxN9ZkGQrTWtbTWQZaLbX9SBnjlknsPVlOpEvj5wU8/3f9+dHw0\nv+3/jTYVZYCXNbUObM2iQ4u4FXfL6ChCOC1zJSQIOKK1PqG1jgdmAe1Sb6C1Xq+1vpH8ciPg/8Ax\nnP6Zx82bps5Tr71mdBLn17SpqYVpat9v/56SeUtStkBZQzK5Cv98/pQrUI5pW6cZHUUIp2WuKJcE\nTqd6HZX8XnpeB/5M9VoDy5VSW5RS3bMX0f79/DM0awbFixudJGvsvfd1Wpo3h7174cCBf9+bsnUK\nTcvJs2RbaB7QnG+2f2N0DCGclrminOlh0UqpJkA3IPVz54Za61rA08DbSqknsx7R/k2dCm++aXSK\nrAsPDyc8PJyRI8ONjpJpPj5Qr96/A762ndvGyesnaVK2ibHBXESj0o04d/scG05vMDqKEE7J3Dzl\nM0CpVK9LYbpavk/y4K5pQKjW+lrK+1rrc8n/e0kp9Rum2+EPLS0QFhZ27/chISGEhIRk+g9gtK1b\n4epV0xWcsI3WrWHoUJgwAcZvHE/9UjLAy1bc3dxpWKoh4zeOJ7hUsNFxXEpkZCSRkZFGxxBWluE8\nZaWUO3AQaAacBTYBnbXW+1NtUxpYCbyktd6Q6n0fwE1rfUsp5Qv8BYRrrf964BwOPU/5zTehbFn4\n5BOjk2SdI6wSlZ7334cPP47hw4vF+Lzp5/I82Yaibkbx4bIPOdfvHHm98hodx2XJPGXnlOHta611\nAvAOsBTYB/yitd6vlOqhlEqZkTsY8AMiHpj6VBxYrZTagWkA2O8PFmRHd+uWaa1fGeBle02awPAF\nv/JI3kekINuYfz5/yhYoy7fbvzU6ihBORzp65YCjdvBK4chXytHR0GVpEzo9WZsuDUKMjuNyVhxb\nwbLjy6TDl4HkStk5Se/rHJg6Ff77X6NTZJ8j9b5+0Pmk3ajie7iydDI0OGR0HJfTuExjftj5A5ui\nNhHk79QtCISwKblSzqatW6FjRzh61PFXhHKE3tcPGn+0B6fP3+FsxHf8b+1fuHs43t8hRzd562Ty\ne+VnZseZRkdxSXKl7Jyk/1Q2TZ0Kb7zh+AXZEcUlxrD+5hwaPdIa33zx/POHA32bcCKtK7Rm4UFZ\n0lEIS5KinA0pSzR262Z0Ete08vJMCuQqRXGP8lQLusKSn8saHckllcpfijIFysiALyEsSIpyNsya\nBSEhjnW715ksuTSFGl7PAFDriYucOJSPqOM+BqdyTc3KNmPqtqnmNxRCZIoU5WyYMsUxO3g5g+O3\n93A+/jDVfFsC4OWdROBj11n0vwCDk7mmkLKypKMQliSjr7No61a4dAlatjQ6Sc6ldFKLiYGAgDBD\ns2TWwgsTqOTeHE/lfe+9xxtfYO60QLp/slcGfNmYh5sHDUo1YNzGccz0lwFfQuSUjL7OorfeAn9/\nGDjQ6CQ552jzlOMSY3h1V0m6FJhEcY/y93027YtHeaHXIZp1eKgLrLCy0zdO89Hyjzjf7zx5vPIY\nHcdlyOhr5yS3r7Pg1i345Rfp4GWUFZdn4Jer9EMFGaBa0BUWzypjQCohA76EsBwpylkwaxY0bgwl\nM1q8UljN0ktTqZ48wOtBtZ64yMnD+Yg65mvjVAJkwJcQliJFOQsmT4YePcxvJywvZYBXdd+0H+Z7\neSdRsdo1Fk4vZ+NkAmTAlxCWIkU5k7ZsMS3R6AwDvBzRwgsTqOzRHA+V/hKNdRpfYM3ikiTEy2M2\nW/Nw86Bh6YaM3TDW6ChCODQZfZ1JU6ZA9+7O1cHLUXpfxyXGsO7mbF4qEJHhdv7lovHNH0/kwpI0\n7ygDvmytTYU2fLj8Q27F3ZIlHYXIJinKmXDjhmmJxgMHjE5iWSlTolJ6X9urZRf/R6Fc5SjmYX4u\ncvV6l1g8q6wUZQP45/enXIFyTN06lX4N+hkdRwiHJLevM2HGDGjRAooXNzqJa1p6eSo1vdplatua\nDS5x+mheTh2WqTlGaB7QnGnbphkdQwiHJUXZDK1lgJeRDt/axuWEkzzm2zxT23t5ayrVuMb8H6TD\nlxEalW7ExTsXWXVyldFRhHBIZouyUipUKXVAKXVYKdU/jc9fVErtVErtUkqtVUpVz+y+jmDDBtMz\n16ZNjU7imhZc+IoqHi1xVx6Z3ufxxudZt/QR4mLlO6etubu582TpJxm/YbzRUYRwSBn+1FJKuQET\ngVCgKtBZKVXlgc2OAY201tWBocDULOxr91L6XOeSn+82F51wi0235lHXt2OW9itROga/wrGsmFfK\nSslERtpUbMOSo0u4FnPN6ChCOBxzpSYIOKK1PqG1jgdmAfc93NNar9da30h+uRHwz+y+9u7KFZg/\nH7p2NTqJdYSFhREWFsbw4WFGR0nT0ovfUyxXFQp5ZL241mhwWTp8GaR4nuIEFgwkYkvGo+WFEA8z\nV5RLAqdTvY5Kfi89rwN/ZnNfu/PDD/DMM1CkiNFJrCM8PJzw8HBGjgw3Okqall6eSs3c7bO1b/Wg\ny1w848PhPfksnEpkxlPln+Kbbd/gSH3thbAH5opypv9FKaWaAN2AlGfHDv2vMSnJNMCrZ0+jk7im\nPTfWcivxElVzN87W/u6emiq1r7Lgh4f7ZAvra1CqAbfv3uavo38ZHUUIh2JunvIZIPW9w1KYrnjv\nkzy4axrYcP7XAAAgAElEQVQQqrW+lpV94d/5sgAhISGEhISYiWV9y5eDry/Ur290Etc0/8I4HvVs\njZvK/lT6oCbn+eHLR7lzyw3fvIkWTCfMyaVyEVI2hLEbxvJUhaeMjuMUIiMjiYyMNDqGsLIMl25U\nSrkDB4FmwFlgE9BZa70/1TalgZXAS1rrDVnZN3k7u1y68dlnITTUuadC2evSjdfjLtF9bwBvFpxF\nfvecPTv4cVxlQp6JomP3oxZKJzLrWsw1ev7Zk0PvHKJkPod6cuUQZOlG55Th7WutdQLwDrAU2Af8\norXer5TqoZRKKVeDAT8gQim1XSm1KaN9rfTnsKjTp+Gff+DFF41O4poWXfia0u51c1yQAWo/cYEl\nv5TBDr/3OT2/3H7UKFZD+mELkQUZXinbJIAdXikPHmxafGLiRKOTWFfKY4OYGAgICLOLK+UkncRr\nO8vylG9/KuSum+Pj6SSYMLgGfUdup/YTlyyQUGTFrgu7GL9xPGf7nsXdTbr6WpJcKTsn+VfygPh4\nmDbN9EzZ2dlj7+t1VxaQCw/Kez9ukeOpXFCt7mUW/BAgRdkA1YtVJ7dHbmbvm02Xal2MjiOE3ZOW\nGA/49VeoVAkefdToJK5p0cUJVPdqe9/z7pyq2/QC+7YU5PK59Jd9FNbTrGwzJmycYHQMIRyCFOUH\nTJwIvXsbncI1RUUf5ljsFur4trXocfPkTaBclZssmC79sI3wVPmn2HNpD3su7jE6ihB2T4pyKtu3\nw8mT0M6h+o45j/nnx1HRoyneuXwtfuy6Ief5e0EpEhIsfmhhho+nD/X96zNy7Uijowhh96QopzJx\noqlZiLs8abe56ITbrL4xk3p5nrfK8csE3ia3TwKRC/zNbywsrn2l9szbP48bsTfMbyyEC5Pyk+zK\nFZg3Dw4dMjqJ7Tw4+tpISy9+R+Fc5SnuYb0OXDWfuMSiHwNo3jHNHjbCikrlL0X5guWZuGkinzb6\n1Og4QtgtmRKVbORI2LsXpk83Oont2EvzEK01b+6uTAPvbjzq08Rq50m4q/hqYE3Cv1lPpZpyxWZr\n606vY8buGZx876RFB/K5KpkS5Zzk9jWQmAhffy0DvIyy9doyYhNvZ7vPdWa5e2oeq3uZX7+tYNXz\niLTV969PfFI88w/MNzqKEHZLijLw++9QogQ8bpmpsSKLfrswhupe7VHK+n8d6zU9z/bVRbl22dPq\n5xL3U0rRvFxz6fAlRAakKAPjx8tVslHOxRzjUMxagnw72OR8+QvFU6bSTRb8INOjjNCqQiu2ndvG\ngUsHjI4ihF1y+aK8Y4dpcNd//mN0Etf067kxVPRoSm63vDY7Z1CTCyz/tTQJ8fI4ztbyeOWhvn99\nhq0dZnQUIeySy4++Hj8e3n4bPDyMTmJ7Q4YMAUyjr41gmgY1gxcLTLLpectWvEVu3wT+XuBPi+dO\n2/TcAp6t/CwfLf+IcU+Nwy+3n9FxhLArLj36+vx5qFIFjhyBQoUMiWAXUnpf23r09dwzo/nn8mxe\nLmT7FoxbVxVh79ZCTFz0j83PLWBI5BDaVGzDZ00+MzqKw5LR187JpW9fR0TA88+7dkE2SpJO4o/L\nEwjK3dmQ89dscImrF73ZuUH+4xuhXaV2TN06lYREabEmRGouW5RjY2HyZOjTx+gkrmn15bko7U7F\n3PUNOb+bO9QIvsTcKTI9ygi1itfC292bH3f9aHQUIeyKyxblmTOhdm3T7Wthe79dGEMtr46GNpEI\nbnaOAzsKEnXcx7AMrkopxdMVnpbpUUI8wGxRVkqFKqUOKKUOK6X6p/F5ZaXUeqVUrFKq3wOfnVBK\n7VJKbVdKbbJk8JzQGsaNg/feMzqJa9p/cwMX4o9QO08bQ3PkzpNE5ZrXmDuloqE5XFWLgBZE3Yzi\nnxPyXF+IFBmOvlZKuQETgebAGWCzUmqh1np/qs2uAL2B9mkcQgMhWuurFsprEUuXmv63ZUtjcxjN\nqN7Xs8+NoJrnM3go49c3btDyLN+PfJTXB+wlb4F4o+O4FA83D5qWa8oXa76gcVnrdnMTwlGYu1IO\nAo5orU9oreOBWcB9CxtqrS9prbcA6f1Es7vRgSNHwocfgqu33w0PDyc8PJyRI8Ntds6LsafYc2c5\nwXlesNk5M1KoWBz+5W/z23fSTMQI7Su1Z+2ptRy8fNDoKELYBXNFuSSQeiJnVPJ7maWB5UqpLUqp\n7lkNZw1btpimQL1gHzXB5fx85gsCPZqQx81+5qcGNz/HX3PKEH/Xxb+lGSC/d34alGrAZ//I1Cgh\nwHzzkJxOIG6otT6nlCoCLFNKHdBar35wo5TbqAAhISGEhITk8LTp+/JLeP9912wWYrSb8VdZe3Mm\nXQt8Z3SU+5SteIs8+eJZOrsMbV46YXQcl/Nc1efou7Qv526do0TeEkbHsVuRkZFERkYaHUNYWYbN\nQ5RSwUCY1jo0+fXHQJLWekQa2w4BbmutR6dzrDQ/t2XzkKNHoV49OH4c8tquq6PdsvXSjd+d/IS9\nNzbwfMHh1j1RNuzd4seaJSWZtnwFuVx2ToJxhq0ZxuOPPM5XT39ldBSHIc1DnJO5Hz9bgEClVFml\nlCfwPLAwnW3v+8uhlPJRSuVN/r0v0BLYncO8OTJmDLz5phRkI8QmRrPs6hQa+r5idJQ0Va1zjaQk\nxT+LsvJ0RljKc1WeY/rO6dyKu2V0FCEMleHta611glLqHWAp4AZ8q7Xer5Tqkfz5FKVUcWAzkA9I\nUkr1AaoCRYF5yVdj7sAMrfVf1vujZOzSJfj5Z9i3z6gE9seWva9/Px9BoVwB+HtVtf7JskEpCAo5\nz9ypFWjS7ozRcVxOYKFAyhYoy9gNYxnceLDRcYQwjMv0vh440FSYp0yx+qkcjrV7XyckJfD6rnK0\n9PmIQJ961jmJBSQmwqTBNegzbAd1Qy4aHcflbDu3ja+3fE3U+1F4uMmgD3Pk9rVzcomnZ9evm/pc\n93+o9YmwhRWXfsKTPFTIHWR0lAy5uUGdRhf5JSLQ6CguqXaJ2uTzykfElgijowhhGJcoyhMnQps2\nECBTUW1Oa83cC8Ool/tFQ1tqZlZQyHmijuZl/zb7mbLlSjpU7sDItSNloQrhspy+KN++DV99BR9/\nbHQS1xR5aRYJSQlU82lhdJRM8fDS1Gh4kZ/GVzI6iktqWKohHm4efLP9G6OjCGEIpy/KkydDkyZQ\nubLRSVyP1ppZ5z+jvverDnGVnKJhy3Mc2VOAgzvzGx3F5Sil6FC5A8PXDCdJJxkdRwibc+qiHBMD\no0fDp58ancQ+hYWFERYWxvDhYVY5/qrLc4hLiqWGr2M1GffOnUTNBpf4cZwsIWaExmUak6STmL5j\nutFRhLA5px59PXEiLFsGCxZY5fAOz5rNQ7TW9NpTnRoezxq+GlR2xMbkYtLgGvz3h/UEVrthdByX\ns+zoMv488ieHex92qLsstiSjr52T014px8TA8OEwaJDRSVzT2ivziU68SS3fVkZHyRbv3EnUqH+J\nH8fKcw8jNAtoRkx8DDN3zzQ6ihA25bRFefJkePxx0y9hW1prfj4XTj2vF1HKcf+KNXzqLAd2+HFk\nTz6jo7icXCoXz1Z5lrB/wjD6bp4QtuS4PzEzcPs2jBgBn8nCM4ZYc2UetxOvUssBb1unltvXdLX8\nv7HybNkILQJaEJsQy3c77GsBEyGsySmL8sSJ0LgxVK9udBLXk6ST+PHspzT0fh03ZW4RMvv3ROhZ\nDu7w48COAkZHcTm5VC46Ve1EeGS4zFtOg7u7O0opLb8c75eHh8fNdP+72vIvkS3cuGFaeOKff4xO\nYv+s0ft62cX/kZiUSA3fUMsd1EC5fZOo8+RFvh9ZlREz1xkdx+U0LtOY3w78RsSWCHrX6210HLuS\nkJAgt/YdVMpiTWl+ZvR/VEuPvg4PNy3R+L//WeyQTs9Sva8TkuLpvjuQxrl7UdUnxCLZ7EF8nGJS\nWA0+GLWN2k9eMjqOy1kftZ7vtn/HqfdO4enuaXQcu5E8+troGCIbMho571S3r69cgQkTIPkCUNjY\novOT8SQvVXI3NjqKRXl4aeo1Pc/3X1ZFfgbaXn3/+uT3zs/YDWONjiKE1TlVUR46FJ5/HsqXNzqJ\n64lLjOHXi1/Q2KeHU84rDWpynhtXPVmz2EpLaYkMvVjtRUauG8ntuNtGRxHCqpymKB89Cj/9JFfJ\nRplz5ksKqFJ2vxJUdrm5Q4OW5/hxbGWSpPujzdUqXovS+UszJFL+gQvn5jRF+ZNP4P33oWhRo5O4\nnmtxF1l0ZSzN8rxjdBSrqtXwEomJij9nljU6ikvqVrMbU7dNJepmlNFRhLAas0VZKRWqlDqglDqs\nlHpoRWKlVGWl1HqlVKxSql9W9rWUjRth7VpTURaZZ6ne19+dHkA59waU9HLu7ldKQdN2p/l5YkWi\nb7sZHcfllC1QlqBHgui7tK/RUYSwmgyLslLKDZgIhAJVgc5KqQc7KVwBegOjsrFvjmkNH3xgahTi\n42Ppozu38PBwwsPDGTkyPNvHOH57Dxtv/UqzvL0smMx+BVa7QZFHYvhpvHN/AbFXr1R/hcVHFrP1\n3FajowgDbd68mcuXL2dpn3PnzvHll19aJc/du3f5/fffLXIsc1fKQcARrfUJrXU8MAtol3oDrfUl\nrfUWID6r+1rCggWmucmvvmrpI4vMmHr6fWp6diS/exGjo9hMiw6nWD63NOdP5zY6issp6FOQ0PKh\n9Fncx+gowgbu3r1Lt27d6N+/P4OSFzLYvHkzu3fvpnDhwlk+VnR0dJqf3bhxgy+++IIuXbrw9ttv\nM2DAAIYNG0ZcXByvv/46MWaaOXh6enLt2jVmz56dpUxpMVeUSwKnU72OSn4vM3Kyb6bExEDfvqZm\nIW5yN9HmNl1dwsnYXTTK51rfiIo8EkuV2leZ9sVjRkdxSZ0e7cSBywf4bf9vRkcRVjZixAg8PT0p\nUKAAx44dIy4ujhEjRtCtWzeLnWPRokXUq1ePSpUqMXPmTCZNmsTw4cN56aWXqF+/PseOHSN3bvNf\nwF9++WUWLlzIqVOncpTHXEevnMzKzPS+YWFh934fEhJCSEhIpvb78kuoXRuaN89qNJFTCUkJfBP1\nHk94v46ncr0rxqbtThHxWQ32bC7IY3WvGh3HpXi7e9PlsS70WdKH1oGtXaahSGRkJJGRkUbHsKmF\nCxfy9ttv07VrV8BUpF944QWLHf/HH3+kT58+rFq1isceu/9LdqlSpWjUqBHFixfP9PH69OnD0KFD\nmTZtWrYzmSvKZ4BSqV6XwnTFmxmZ3jd1Uc6sEydg/HjYti3LuwoLmHv2S1SSB3XyWPyJhEPInSeJ\n4ObniAirxoRF/5DLaeYxOIbmAc1Zfnw5QyKHMKz5MKPj2MSDFyzh4dkfC+II4uLi2LVrF0FB/06z\nnDFjBtu3b7fI8fft28cbb7xBRETEQwU5hb+/P02bNs30MevWrcvLL79MdHQ0Ptkc5GSuKG8BApVS\nZYGzwPNA53S2fbBjRFb2zbJ+/eC996BMGUsd0fVkt/f15dgz/HZpBC/k+8opG4VkVv3m59mzqTDz\nvw+gw+vHjI7jUpRS9KjTg4F/D6R7ne4E+AUYHUlY0LRp01iyZAkeHh5MmzaNkiVL0qZNGwoWLIhb\nGs8qY2JimDBhAt7e3mzevJm33nqLDRs2sH79ej777DOqVq360D4DBgzA39+f1157Ld0cbdq0oVKl\nSlnKHhQUxMqVK2nTJnur5GVYlLXWCUqpd4ClgBvwrdZ6v1KqR/LnU5RSxYHNQD4gSSnVB6iqtb6d\n1r7ZSvmA5cth+3aYMcMSR3NdKXcoUnpfZ9bXJ3tTyb2500+BMkflgqeeP8HsiIqEPBNFwaJ3jY7k\nUgL8Anii1BP0/KMnS19aanQcYUHdu3cH4NKlS4wda2qv+vPPP1OxYsU0t58wYQK9e/cmd+7ctG/f\nnilTpvDdd9/x2Wef0aNHj4eK8vXr11myZAn9+vXL8MKicuWs/4wrX748O3bsyHZRNnvTTWu9WGtd\nSWtdQWs9LPm9KVrrKcm/P6+1LqW1zq+19tNal9Za305v35yKjYV33oFx48Db2xJHFFmx5epf7I9e\nTbN8PY2OYhfKBN6m/KPXiQiXdUKN8GqNV9l8ZjMLDy40OopdU8q6v6xh27Zt1K5d+97rixcv4ufn\n99B2WmsaNmx4bzDWwYMH6dy5M+7u7ty4cYMWLVo8tM+RI0dISEigbt266Z4/KSmJ2NjYLOcuVKgQ\n58+fz/J+KRzuSdgXX0DVqtC2rdFJXE980l0mn+5Fo9xvkdst3ZXHXE6LjqfYvakw21a7zrQwe+Hr\n6ctL1V6i1x+9iI5Pe7qLMPVzsOYva9ixY8d9RTkuLg5394dv7iqlaNiwIQBnzpzh6NGjNGrUKMNj\neydf0eXLly/dbWbNmsXFixfvvR4+fDjz5s1j4MCBHDp0KN39PD09SUxMzPD8GXGoorx7N0REwMSJ\nRidxTdNPDcaL/NT2zd5tGWflkyeRRq2i+DqsGvF3XfcZu1GaBzSnsE9h6fTlRBITE9m9e/d9Rblo\n0aJcvZr2TIek5Ib0K1asoE6dOvj6+gKwZs2aNLevUqUKJUuWZPfu3Wl+fuXKFaKioihdujQAa9eu\n5dChQ3To0IGePXvy4Ycfppv96tWrFCmS/S/oDlOUExOhe3f4/POcr/srsu7wre38dW0ybfJ94tKD\nu9JTp9ElvHIn8t2IhweUCOtSStG7bm9m7p7JutPrjI4jLGD//v0kJibe9yy4XLlyXLhw4aFt586d\nyyPJRWH+/Pn3njvfvn2bdevS/vvg5ubGpEmTGDNmDMePH7/vs3379jFhwgT69v33S97ff/99bxR4\nyZIl2bx5c7rZL1y4QEBA9gcemht9bTcmTQIvL3jjDaOTOI+UgV4xMRAQEJbudglJCYw98SrBXq9Q\nyKNUutu5MqXgmZeP8d2Ix2jU+ixVal8zOpJLKZqnKM9VfY6u87uyt9dePNw8jI4kcmDz5s0EBweT\nK9Vcw/r16/NGGgXA39+fRo0aMXr0aPr168eECROIiIggOjqad999N91ztG3blsKFC9O/f3/8/Pwo\nVKgQ3t7eVKxY8aFpuhcuXLh31Qymon79+nUKFCjw0HHXrVuX4ZW0OQ5RlI8fN/W2XrsWmQ9qQann\nOU6eHJbudjOj/ktioqZhgS42SOW4Cha5S8OnzjC2fy0m/fE3Hp5Wetgm0tS+UnvWnV7HoJWDGN5i\nuNFxRDbcuHGD/Pnzs2nTJlq1anXfZ56entStW5edO3dSo0aNe+8HBwff194y5flyZjRo0IAGDRqY\n3S4pKem+qVgJCQlpTs26fPky7u7u967cs8PuS1xiIrz8MgwYAFmcLiYs4MTtvfx+ZSxt8n+KUnb/\n18Vwwc0v4O6ZxPdfym1sW0u5jT1pyyS2nN1idByRRbdu3aJ06dIsXryYjRs38sorrzy0TXh4OF99\n9ZXNs5UsWZI7d+7ce52YmEjevA8Pdh03bhxDhw7N0bns/qfsyJHg4WHqcS1sKyEpnpHHO/O4V2eK\neUhzhsxQCp556RjLfy3N/u0PT98Q1lW6QGk6VO7A83OeJyY+i11xhKF8fHxo2bIla9asoX///hQr\nVuyhbQIDAylTpgwbNmywabbmzZuzY8cOAA4fPpzmVKqjR49y6dKlLHUAS4tdF+Vt22DsWJg+XW5b\nG2HqiQ8gyZ3GebsaHcWhFCoWx5OtzvDl+7Vl3WUDdKzSkTyeeej1h2ssJ+os3NzcmDNnDp9//jnP\nP/98utsNHjyYpUuX3jddKTM8PDwytbBEWoKCgihQoAA///wz06ZNY9y4cfd9fvfuXSIiIhg/fny2\njp+a0taaZJbZAErptDLExECdOvDpp/DiiwYEcwGpR1FPnqzvG9W++epSRp/sTDe/6RRwf/gbq8iY\n1vBLRCBFSsTw8QRZ+9fWLkdf5v2l7/ND+x9oX7m90XGsQimF0T+/RfYk/7dLcxqL3Rblt9+GK1fg\n55+t1zHG1T04+jqlKF+Pu8Q7+6vRxKcP1XyaGRfQwcXczsXUL6rzSt99PNXptPkdhEWtPrma73Z8\nx95eeymWx/m+WEpRdlwOV5RnzoTBg2HLFkhjxLmwsJTe1488YmpZN/DA05DgRTu/T42O5vCO78/L\nvO8qMHruKvzLSccpWxu3YRyxibGsfm01uZxsoKIUZceVUVG2u7+l+/ZBnz4wd64UZCP8dHooZ+MO\nE5r/faOjOIVyVW5Ro/4lvngniLhYueVjaz0f78m5W+fot7Sf0VGEyBS7Ksq3b8Nzz8GIEVCzptFp\nXM/Gq3/y+5Vx/Cf/CLxyZW8tUPGwZu2jcHdLYuxHtc1vLCzKy92LAU8M4Psd3/Prvl+NjiOEWXZT\nlLWGN9+E4GDo1s3oNK7n4t1jjDv5Ck/7fkxhj9LmdxCZpnJBxzcOs29rQeZOLW90HJdTIk8J3q77\nNq8vfJ3DVw4bHUeIDNlNUR42DA4elMUmjBCTEMOkq+2p7tmOqj6NjY7jlHLnSaJj98PMnlyR7WsK\nGx3H5QT7B9O8XHNaz2zNrbhbRscRIl12MdBr9mxN376wcaMsNmFLYWFhaDS/JMwlOlcRXik+Qhab\nsLKdGwrx94JSjJ6zmhKlZeCXLWmt+e/q/5LbPTd/d/3b4Qd+yUAvx5Wj0ddKqVBgHOAGfKO1HpHG\nNl8BTwPRQFet9fbk908AN4FEIF5rHZTGvrpwYc1ff0GtWln6c4kcUkpBU6AcdCq2lIr+MrLOFlbM\n9+fongKM+XUV+fzijY7jUuIS4vh4xcc0LN2QH9r/YHScHJGi7LiyPfpaKeUGTARCgapAZ6VUlQe2\naQVU0FoHAm8CEak+1kCI1rpWWgU5xbffSkE2RB3gUeBncMfL6DQuo2m7KIr6RzPotfrExTr21Zqj\n8XL3YlCjQSw+spjPV31udBwhHmLuJ0IQcERrfUJrHQ/MAto9sE1bYDqA1nojUEAplXqmvtn7oW3b\nZj6wsIzFhxdDE2AGpvsbwmZSlnnUGj7vVZfk9dmFjfjl9mPQk4MYuW4kP+z4weg4QtzHXFEuCaRu\nRRSV/F5mt9HAcqXUFqVU95wEFZYTeSKSV+a/YvqKddXoNK7JzQ3+0+MQ5075MuajWshdSNsqU6AM\n/Rv0593F7/LLnl+MjiPEPebWU87sj4r0roaf0FqfVUoVAZYppQ5orVc/uFHqBaVDQkIICQnJ5GlF\nVq09tZZOczox+7nZNP0oZ6uZiJzx8tZ07n2Qn8ZWYdyAmrw3fIe0lLWhasWq8X7w+3Rf1B1fT1/a\nVGxjdKQMRUZGEhkZaXQMu7B582bKlStH4cKZn8lw7tw5fvrpJz788EOL57l79y5//fUXbdrk/O9Q\nhgO9lFLBQJjWOjT59cdAUurBXkqpyUCk1npW8usDQGOt9YUHjjUEuK21Hv3A+2n2vhaWtzFqI8/8\n/Aw/dfiJluVb3vsydO1WLJe9nybAP3srqIicuX3TnR/HVaFmg0u8+/lOKcw2tu70OiZtnsTcTnNp\nWb6l0XEyzRUGet29e5e33nqLIkWK4OnpydChQ9m8eTO7d++mWxYbWpw8eZIffviBIUOGPPTZjRs3\nmDRpEnv27MHPz4+8efOSP39++vbtS69evZg4caLZFaZ+/PFHvLy86NSpk9ksOWmzuQUIVEqVVUp5\nAs8DCx/YZiHwSvKJgoHrWusLSikfpVTe5Pd9gZbAbrNphVWsPbWWtrPa8n277+/94AkLCyMsLIz3\n+g0wOJ1ry5MvgZf67GfH2iJM+LSG3Mq2sQalGvBmnTd5bvZz/Lb/N6PjiFRGjBiBp6cnBQoU4Nix\nY8TFxTFixIgsF+SMLFq0iHr16lGpUiVmzpzJpEmTGD58OC+99BL169fn2LFjmVry8eWXX2bhwoWc\nOnUqR3kyvH2ttU5QSr0DLMU0JepbrfV+pVSP5M+naK3/VEq1UkodAe4AryXvXhyYlzzv1R2YobX+\nK0dpRbb8cegPui7oyowOMxzqSsCV5M2fwEt9DjBjQiWG9a7DR2O34e4h1dlWGpdpjLe7N6/Of5Xr\nsdd5rdZr5ncSVrdw4ULefvttunbtCpiK9AsvvGCx4//444/06dOHVatW8dhjj933WalSpWjUqBHF\nixfP9PH69OnD0KFDmTZtWrYzmXumjNZ6MbD4gfemPPD6nTT2OwZIB2uD/bjzRz5c9iG/d/6dev71\njI4jMpC3QDyv9t3HL19XYmDX+gyeugEfXxmabSv1StZjQMMBvLf0Pa7FXqNv/b5GR3JpcXFx7Nq1\ni6Cgf2fTzpgxg+3bt1vk+Pv27eONN94gIiLioYKcwt/fn6ZNMz/2pm7durz88stER0fj45O99QNk\nkqST0lozbPUwPl35KStfXSkF2UHk9k3ipT4HuBuXi49eeJKrFz2NjuRSqhWrxpBGQ/h89ef0/L0n\nSVq+FBlh2rRpdOnSBQ8PD6ZNm8aoUaM4cOAABQsWxM3N7aHtY2JiGDlyJF999RUvv/wya9euZfTo\n0Tz33HPs27cvzXMMGDAAf39/Xnst/bsibdq0oVYWm2gEBQWxcuXKLO2TmhRlJxQdH03nXzsz78A8\n1r2+jqpFqhodSWSBu6fm+bcOU6hoLH3ah7B/m5/RkVxKYKFARjUfxV/H/qLp9KbcjL1pdCSX0717\nd0JDQ6lduzZjx47lgw8+YPv27VSsWDHN7SdMmEDv3r159913uXXrFlOmTKFPnz4sW7aMM2fOPLT9\n9evXWbJkCZ06dcqwtXDlypWz3Hq4fPny7NixI0v7pGb29rVwLKdunKL9rPY8WvRRVnVdRW6P9Aco\npB59jffTNkooMkPlgtYvnmDzP0UZ8kYwXT/YR6suJ42O5TIK+xZmRLMRjF4/mlpTavFHlz+oXKSy\n0bGyTYVbd0i/HmL58Q/btm2jdu1/lzu9ePEifn4Pf0HVWtOwYcN7g7EOHjzImDFjcHd358aNG2ke\n+zl9OegAABC/SURBVMiRIyQkJFC3bt10z5+UlMTdu3fx9vbOUu5ChQpx4MCBLO2TmhRlJ7LgwAJ6\n/N6DDxt8SN/6fc1+wwsPD7/3+y6fSFG2R3UbX6RYyTvM+Koy+7f78fZnu/DOLbdUbcHL3YuPn/iY\nmXtmEvRNEKNajuLNOm8aHStbrFE0rW3Hjh307Nnz3uu4uDjc3R8uWUopGjZsCMCZM2c4evQojRo1\nyvDYKYU2X7586W4za9YsnnjiCUqX/ncp2ylTplClSpUMj+/p6UliYmKG58+I3L52AtHx0fT6oxfv\nLX2Pec/Po1+DfrLakxMpXeEO3frv4dThfLzTugkHdsjCIbailOLFai/Sv2F/Pl35KR1+6SBLP9pA\nYmIiu3fvvu9KuWjRoly9mnYLwqTkXrUrVqygTp06+Pr6ArBmzZo0t69SpQolS5Zk9+60Z+leuXKF\nqKioewU5NjaWCRMmZGpU9dWrVylSpIjZ7dIjRdnBbTqzibrT6nI99jo7euygQakGRkcSVpA3fwJd\neh+kevAlBnerz//GViIhwehUrqN6seqMf2o8UTejqDypMr8f+t3oSE5t//79JCYmUrXqv+NhypUr\nx4ULFx7adu7cuTySvObv/Pnz7z13vn37NuvWrUvz+G5ubkyaNIkxY8Zw/Pjx+z7bt28fEyZMoG/f\nf0ffe3t707t3b6pVq2a2YcuFCxcICAjI3B80DXL72kHdjLvJpys+Ze7+uYxpOYYXHntBro6dnFIQ\n3PwCAVVvsvB/Aaxb8gjv/Hcnj9WVBua2kNcrL4MaDWLZ0WW8NO8lmgc0Z0qbKRTyKWR0NKezefNm\ngoODyZXr3+vG+vXr88Ybbzy0rb+/P40aNWL06NH069ePCRMmEBERQXR0NO+++26652jbti2FCxem\nf//++Pn5UahQIby9valYseJ9rZ+zat26dTlq5SlF2cForZm9dzb9/upHaIVQ9vbaS8HcBY2OJWyo\n6CMxvP7RXjauLMbQt4KoG3KBNwfukbWZbaRF+RYElQxiytYpVJxQkUGNB/FuvXfJpeTGY07duHGD\n/Pnzs2nTJlq1anXfZ56entStW5edO3dSo0aNe+8HBwcze/bse69Tni9nRoMGDWjQwHJ3Fy9fvoy7\nu/u9K/fskKLsQFadXMWHyz4kISmBmR1n0qhMxoMZzEnpAXvtViyXLRFQ2IzKZbpqfvTxqyydU4Y3\nWzSj9YvH6dTzMF7eMhDM2vJ75+ejhh+x5ewWxm8Yz8RNExndcjTtKj+4sq3IrFu3blG6dGlmzZrF\nxo0b07xaDQ8PZ/jw4Xz77be2D5gsozuS48aNY+jQoTk6vhRlB7DpzCaGrhrK7gu7+bzp53Su1tki\n38pT/tIfP3udgZN25vh4wvbyFojnue5HiDruw98LSrN0dhk6dj9Cqy7H8fJ2vBG3jubxRx6nTok6\nLD66mNcXvs4Xq78gvEk4oRVCjY7mcHx8fGjZsiVr1qyhf//+FCtW7KFtAgMDKVOmDBs2bCA4ONiA\nlKT7TPno0aNcunQpSx3A0iJF2U5prVl5fCXD1gzj0JVDfNDgA+b8Zw7e7lmbMydcg3+5aF5+7wCH\n9+TjrzmlmTs1kNDnT/Ds60fIky/70zOEeUopWlVoRbOyzVh0aBEvzXsJ/3z+DGo0iA5VOshYj0xy\nc3Njzpw5ZrcbPHgw4eHhBAQEULRo0Uwf38PDI1MLS6Tn66+/ZtOmTWitSUxMvK/43r17l4iICMaP\nH5/t46fIcOlGW5ClG+93M+4mP+36iclbJhOfFE//hv3pUq0Lnm7Wa7eYcqUsSzc6jxOH8rLurxKc\nPZGHes3O0fbVYwQ+Jp2pbCE+MZ4/j/zJn4f/xC2XG2/UeoPe9XpbfOyHKyzd6KwyWrpRirIdSExK\nZNXJVcz8f3v3GhvVfadx/Puzx/aMLwTHxmAD5dKaSyCpCblBokCgrICERJFapayiKo3UptJGW0Xq\nRc1Kq31TVat90Xa3Wu1KzVat2izRlt6yaQTZpLDZZAtpF2InQGxI7YANtsE2vttz+e2LmVAn4jJj\nsM8Z+/lIoznnzBzrORbo8bn9T9Pz7D2+l63Lt/KV9V9hy7It0/JXtkp55uruiPLWwfmcOHIz8+pG\n2PLoB2x5+Aw3VemisKnm7hzuOMzLLS9z4sIJNi/dzJMNT/LIykeIFF7/QUqVcv5SKYdQIpXgjQ/e\n4Nfv/ZoX3n2B+WXz2b12N4/f9ji1FbXTmkWlPPMlEkbjoSqO/7GK9j+Vs/yWPu5/sIN7t3dQWT0e\ndLwZr2uwi/3v7+f37b+nf6yfHZ/awWdv+SwP1T9EcWRyR8FUyvlLpRwSbX1tHGg9wL5T+9h3ah/L\n5i5j14pdPLb2MVZVT/+4uhPHvj4f3aFSniWGBwtpOlxNc2MlHW1lLFg8xPr7urh9Uxdr7+jRc5yn\nWMuFFg5+cJC3z71N93A3GxZtYNsnt7Frxa6cHh6jUs5f11XKZrYd+B5QCPzQ3f/+Mt/5R2AHMAw8\n4e5Hclh3RpZyPBmnsbORw+2HOdR+iINtBxmOD/PA0gfYumwrD654kLqKyd/LdiNMPDT+l88eUCnP\nQvExo7lpLiffnUv7n8oZvFjMJ+r7WX17L6saelhzxwVurtGe9FQ5N3iON0+/yTtd79B8oZmSSAnr\na9ezYfEGNi3ZxIZFG664J61Szl+TLmUzKwTeAz4DtANvAbvd/fiE7+wEnnb3nWZ2N/B9d78nm3Uz\n6+d1Kb/62qssX7ec5gvNHOs+RmNXI02dTRw/f5zllcu5q+4u7lx4J/cvuZ/V1atDdSXmTCjl1uY/\nsnTF+qBjTFrY8g9cjHDq3bmceb+CrvYY3WdjlFbEqVs6xJL6fpau7GfZygE+Ud/P+8eOcuvdtwYd\nedKaDjWFKr+7c7LnJI2djbT0ttDa10r3UDeL5yxm1bxVrFuwjjXz1nDb/NtYWbWSokiRSjlPXa2U\nr3W1wV3ASXdvzfygPcAjwMRifRj4MYC7HzKzuWa2AFiWxbqh5u5cHLvIucFzdAx00DHQwZn+M7T1\ntdF2sY3Wvlaa9zZTt6uOFVUrWF29mo2LNvLU+qdYW7OW8uLyoDdhxmtr/r9QlVquwpa/4qYEDRvP\n07AxPZxMMgldZ0o5e7qMzvYY7x2tpO9ClP7eYgoK/pfaJZuoXjDKvLph5i8cprp2hOoFo9TUjXBz\nzWioD4U3HQ5XKZsZ9VX11FfVX1o2ND5ES08LJ3tO8sYHb7D3+F46BzsZHB8MMKlMpWuV8kLg9IT5\nM8DdWXxnIVCXxbo3VDKVZDw5zlhyjLHEGGPJMUbiI4wkRhhNjDIcH2ZofIih+BCD44MMjA3QP9ZP\n/1g/faN99I720jvaS89ID91D3ZwfPk80EqW2opba8lrqKupYWLGQNTVr2Fm/k6Vzl7Ln3B6+/cy3\np3KzRAJTWAi1S4apXTL8keXJJOz/j26WrTpH3/koPZ1R2porGBooYniwiOGBCKPDEUqiSWLlccoq\nEpRWxCn/8H1OnNKKOLGyBKXlCaKlSWKlCaKl6emSaJKSWJJoLEmkKElxNElJNEWkyAnRwaYpV1Zc\nRsOCBhoWNHxk+ameUzzzt88ElEqm0rVKOds/c6/rv8mG5zaQ8hQpT6VvzPbkpflkKnlpPpFKkEwl\nSaQSJFIJ4ql4+j0ZZzyZPu9VXFhMSaSEksISSiIlxCIxopEosaIYsUiM8uJyyorLKCsqY07JHOaU\nzKG2opZV1auojFVSGa2kMlZJTVkN1aXV1xysY2/h3uvZ9NBIJeH90yNBx8hZb388L3N/KJ/zj6VG\nKa46S00VXG4Ih1TSGB0qYmSwhJHBYsZGioiPFXJxIML5C4Uk4sUk4wUkEoUk4wUkEx9/FZJMFJBK\nGqlkAcmE4V5AQWEq/SpwCgocy7wuTVt6GiO9zBwrIP1u6eVmzmDf/3DgpfvSy+DSciBT/BOXf3Tb\nLq2T+fwyk5kFVzk9mMXv+EorpfxOQKU8E13rnPI9wN+5+/bM/LeA1MQLtszsX4AD7r4nM38C2ET6\n8PVV180sPwl88oZulYjIDBeJRDyRSMyi4wYzRyQSGYjH43Mu+9k11v0DUG9mS4EO4DFg98e+8xvg\naWBPpsT73L3TzC5ksS7u/qmst0RERGQGu2opu3vCzJ4G9pG+rek5dz9uZk9lPv9Xd/+tme3M7PEO\nAV+82rpTuTEiIiL5LPDBQ0RERCQtFE/lNrN/MLPjZva2mf3CzG4KOlMuzOxzZvaumSXN7Pag82TD\nzLab2QkzazGzbwadJ1dm9m9m1mlmTUFnyZWZLTaz32X+zbxjZn8ddKZcmFnUzA6Z2VEzO2Zm3wk6\n02SYWaGZHTGzF4POkiszazWzxkz+w0HnkRsnFKUM7AfWuPungWbgWwHnyVUT8Cjw30EHyUZmYJcf\nANuBW4DdZrY62FQ5+xHp/PkoDjzj7muAe4C/yqffv7uPAg+4ewNwG/CAmd0XcKzJ+CpwjOzvMgkT\nBza7+zp3vyvoMHLjhKKU3f0Vd09lZg8Bi4LMkyt3P+HuzUHnyMGlQWHcPQ58OLBL3nD314HeoHNM\nhrufc/ejmelB0gPqBDvmao7c/cMbl4tJXzPSE2CcnJnZImAn8EOu85bOAOVrbrmKUJTyxzwJ/Dbo\nEDPclQZ8kWmWuTthHek/RvOGmRWY2VGgE/idux8LOlOOvgt8HUhd64sh5cB/mdkfzOxLQYeRG+f6\nH+qZJTN7BVhwmY+edfcXM9/5G2Dc3Z+frlzZyiZ/HsnHw3UzjpmVAz8HvprZY84bmSNbDZnrP/aZ\n2WZ3PxBwrKyY2UNAl7sfMbPNQeeZpHvd/ayZzQNeMbMTmaNHkuemrZTdfdvVPjezJ0gfTto6LYFy\ndK38eaYdWDxhfjHpvWWZJmZWBOwFfuruvwo6z2S5+0Uzewm4AzgQcJxsbQQezjxMJwrMMbOfuPsX\nAs6VNXc/m3nvNrNfkj4lpVKeAUJx+DrziMevA49kLiLJZ/lwnufSoDBmVkx6YJffBJxp1rD047me\nA465+/eCzpMrM6s2s7mZ6RiwDTgSbKrsufuz7r7Y3ZcBnwdey6dCNrNSM6vITJcBf0H6YlOZAUJR\nysA/AeWkD8McMbN/DjpQLszsUTM7TfpK2pfM7OWgM12NuydIj8K2j/TVpy/k28AuZvbvwJvACjM7\nbWZfDDpTDu4FHid91fKRzCufriSvBV7LnFM+BLzo7q8GnOl65NvpnPnA6xN+///p7vsDziQ3iAYP\nERERCYmw7CmLiIjMeiplERGRkFApi4iIhIRKWUREJCRUyiIiIiGhUhYREQkJlbKIiEhIqJRFRERC\nQqUsIiISEiplERGRkFApi4iIhIRKWUREJCSm7XnKIvnCzL4MVAOrgJ8AS4Aa4FbgG+6uZ0+LyJTQ\nU6JEJjCzLwFH3f0tM7sTeAV4Ahgi/ajLHe6+L8CIIjKDaU9Z5KOq3P2tzPQSIOXuvzKzGLDJ3V8P\nMJuIzHDaUxa5AjP7AbDQ3R8NOouIzA660EvkyrYCB4IOISKzh0pZJMPMCs1sm5kVmFkdsBI4OOHz\nrwWXTkRmA5WyyJ89RfpirnrgMWAYOANgZruAY8FFE5HZQOeURTLM7NPA14AW4G2gAtgCtAKn3P1n\nwaUTkdlApSwiIhISOnwtIiISEiplERGRkFApi4iIhIRKWUREJCRUyiIiIiGhUhYREQkJlbKIiEhI\nqJRFRERCQqUsIiISEiplERGRkPh/3SvDN9IPsGIAAAAASUVORK5CYII=\n", "text": [ "" ] } ], "prompt_number": 37 }, { "cell_type": "markdown", "metadata": {}, "source": [ "In the above figure, the blue shaded area is the false-alarm probability and the shaded gray area is the probability of detection. These two values are what is plotted on a ROC. The dotted vertical line indicates the threshold value $c$." ] }, { "cell_type": "code", "collapsed": false, "input": [ "def plot_roc_interact(c=0):\n", " xi = linspace(-3,5,100)\n", " fig,axs = subplots(1,2)\n", " fig.set_size_inches((10,3))\n", " ax = axs[0]\n", " ax.plot(xi,f0.pdf(xi),label=r'$f(x|C_0)$')\n", " ax.plot(xi,f1.pdf(xi),label=r'$f(x|C_1)$')\n", " ax.set_xlabel(r'$x$',fontsize=18)\n", " ax.vlines(c,0,ax.axis()[-1]*1.1,linestyles='--',lw=3.)\n", " ax.fill_between(xi,f1.pdf(xi),where=xi>c,alpha=.3,color='g')\n", " ax.fill_between(xi,f0.pdf(xi),where=xi>c,alpha=.3,color='b')\n", " ax.axis(xmin=-3,xmax=5)\n", " crange = linspace(-3,5,50)\n", " ax=axs[1]\n", " ax.plot(1-f0.cdf(crange),1-f1.cdf(crange))\n", " ax.plot(1-f0.cdf(c),1-f1.cdf(c),'o',ms=15.)\n", " ax.set_xlabel('False-alarm probability')\n", " ax.set_ylabel('Detection probability')" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 58 }, { "cell_type": "code", "collapsed": false, "input": [ "interact(plot_roc_interact,c=(-3,5,.05))" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "display_data", "png": "iVBORw0KGgoAAAANSUhEUgAAAlwAAADfCAYAAAAjpw3vAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3Xd4VGX2wPHvSUILvUiR0JtUBaSIgKEpoohtRey9ra6L\n/tTVVQm6a2EtKCrSpLgIuAqCFRENoCC9Sm/SO9ISICHn98edaAxJZpLMzJ1yPs8zT6bccrKLN2fe\n973niKpijDHGGGMCJ8btAIwxxhhjIp0lXMYYY4wxAWYJlzHGGGNMgFnCZYwxxhgTYJZwGWOMMcYE\nmCVcxhhjjDEB5jXhEpGeIrJWRDaIyFN5bNdGRNJF5Los720VkRUislREFvgraGOMKQwR+UBE9orI\nyjy2edtz3VsuIi2DGZ8xJvLkmXCJSCzwDtATaAL0E5HGuWz3KvBNto8USFTVlqra1j8hG2NMoY3G\nua7lSER6AfVVtQFwHzA0WIEZYyKTtxGutsBGVd2qqmnARKBPDts9AnwC7M/hMylciMYY41+qOgc4\nnMcmVwFjPdvOB8qJSJVgxGaMiUzeEq7qwPYsr3d43vudiFTHScIyvwFmLV2vwHciskhE7i1krMYY\nEyw5XfsSXIrFGBMB4rx87kvfn8HAP1RVRUT484jWxaq6W0TOAWaIyFrPN8vf1a9fXzdt2pS/qI0x\n4W6TqtZ3Owgvso/O53g9tGuYMVGnQNcvbwnXTqBGltc1cL7pZdUamOjkWlQCLheRNFWdpqq7AVR1\nv4hMwZmi/FPCtWnTJtzs55iUlERSUlJUnj+af3e3zx/NvzuAiNRz7eS+yX7tS/C8dxa3r2H+4va/\nCX+KhN9FFVJSYMCAJB54IIljx+D4cX7/mfV59p8pKZCamvvj5EkoUgRKlDj7UawYFC3q/Wf253Fx\nzjEzH9lfT5yYxMpjyaxoNatA/3t03JDIF+/+QGwsxMTw+8/MhwRx8VJBr1/eEq5FQAMRqQ3sAvoC\n/bJuoKp1swQxGvhcVaeJSDwQq6rHRKQkcCkwsCBBGmNMkE0DHsb5Mtke+E1V97ockwkzaWnw229w\n6BAcPvzHw9vro0fhxAknoRGBKVOgdGkoVcp5ZD7P/Fm2LFSv7rwuWdJ55JRMZT6KF3cSlmBatAi2\nbyn4F5MyxeIpW9aPAbkgz4RLVdNF5GFgOhALjFLVNSJyv+fzYXnsXhWY7Bn5igPGq+q3/gnbGGMK\nTkQmAJcAlURkOzAAKALOdU1VvxKRXiKyETgB3OletCZUqMKRI7BnT+6PvXvh4EEncUpNdZKhChWg\nfPk/Hpmvzz0XmjY9+/OyZZ1EKjYWkpKcRyQoU7RMwXY8CB2adfBvMC7wNsKFqn4NfJ3tvRwTLVW9\nM8vzzcAFhQ0w0BITE6P2/NH8u7t9/mj+3UOBqvbzYZuHgxFLqIikfxP5/V1UnVGmLVtgx468E6pi\nxaBKFaha9c+Phg2dn1WqOAlUhQrOiFNMIcuLR8r/L4mJibAQvtj9BeRnpEqh8bbG9H+lf6BCCxpx\ne+2BiKjbMRhjgktEUNWIKBlj17DwkJLiJFQ5PTZvdhKjOnWgRg2oVu3shCozmYqPd/s3CV8HDhyg\n410dWddynW99bjKgxsoavP/Q+/Tq3ivg8fmqoNcvS7hclnVhZ7gv8jTGV5ZwGX9The3bYcOGnBOq\no0ehVi0nqapTB+rW/eN5nTrOVJ4JvMXLFnP7c7fzS6tf8k66MqDpkqYMf244HdqG1nSiJVxhSrLc\nWhHN/zuY6GIJlymMY8dg1SpYscJ5rFzp/CxRAho1yjmpqlq18NN7xj/mLphLv1f7sa3Ftpw3UKix\nogYT/zEx5JItsIQrbFnCZaKRJVzGF2fOwKZNf06qVqxw1lI1bgwtWvzxaN4czjnH7YiNr7787kue\nGPIEa2qtgYpZPjgIjX9tzGuPvBZS04hZWcIVpizhMtHIEi6TXXo6LFsGc+f+kVj98gtUrvznxKpF\nC6hfP/hlDYz/nThxgsHDBzN31VxSzqQQHxtPh2Yd+Pt9f6dkyZJuh5crS7jClCVcJhpZwmXS02HJ\nEpg1C5KT4ccfISEBOnaECy5wEqtmzQj72ksm8ljCFaYs4TLRyBKu6JOW5iRYyclOkvXTT1CzJiQm\nwiWXQOfOzmiWMaGuoNcvr3W4TGANGDDA7RCMMcbv0tKc6uKZI1hz5zqL1y+5BO65B8aNg0qV3I7S\nmOCxES5jTNDZCFdkOnoUpk6FSZNg9mznLsHEROfRqRNUrOjtCMaEPptSNMaEDUu4IkdKCnz5JUyc\nCN9954xg9e0Ll1/uVFs3JtIU9PrltSqJiPQUkbUiskFEnspjuzYiki4i1+V3X2OMMeHj1Cn4/HO4\n+WanH+CIEXDFFbB1K0yb5rxvyZYxf5bnCJeIxALrgO7ATmAh0E9V1+Sw3QwgBRitqp/mY9+o/nZo\nTDSyEa7wk54OP/zgjGR99pnTdPnGG+G665yWN8ZEi0Atmm8LbFTVrZ6TTAT6AGuybfcI8AnQpgD7\nGmOMCUGq8PPPMH48/O9/zl2F/fpBUpLTc9AY4ztvCVd1YHuW1zuAdlk3EJHqOIlUV5yES33d17jX\nSzE11fnGWrp00E4ZUo6fOk5MTAzxRawTrTHZqcLXX8NLL8Hu3XDXXU4Zh/r13Y7MmPDlLeHyZZx8\nMPAPVVVxikplDrP5PMaeNdFITEwkMTHR113D3sCBA39/HuiEa8cOePFF58K5cSNkZECpUlC7Njzy\nCNxxB0hETPKcTVX5aOVHvPHzG2z9bStHTx0lRmKoV74eHWp04NlOz1K7fG23w4xYycnJJCcnux2G\n8eLMGfj0UyfRysiAZ56B66+HOCsgZEyheVvD1R5IUtWentdPAxmq+mqWbTbzR5JVCWcd173APm/7\net6PivUPuQlG4dP0dHjlFRg0CFq1gosucqo4Fy/u9CT75RdnTUZ8PLz5prP4NZJ8t/k7HvnqEY6c\nOkKfRn1oUbkFVUtV5dSZU6zYt4L5O+azYNcC+rfvz3Odn6NIbBG3Q454toYrtJw+Df/9r3OdqFgR\n/vlP5zoQqV/AjCmMgJSFEJE4nIXv3YBdwAJyWPieZfvRwOeqOtnXfSPhYlUYgU64jhyBrl3ht9/g\ngQfgvPNy3i4jA775xlmrMXAg9O/v91BcMXTRUJ6a8RQ3Nr2Ry+tfTlxszl/VNxzcwPuL36dYXDFm\n3TGLCiXsFqtAsoQrNKSkwMiR8NprzrXhmWecsg6WaBmTu4DV4RKRy3GmDWOBUar6sojcD6Cqw7Jt\n+3vCldu+ORw/bC9W/hDIhOvQIaddRpky8MQTvk0LbNgA//433HILDB4cvhdeVeWZmc/w/uL3ebrj\n0zSu1NjrPhmawRvz3mDvib3MvmM2lUtZn5FAsYTLXb/9Bu+9B2+9BRdfDE8/DW3aeN/PGGOFT8NW\noBKuQ4egQwfndu3HHoMYrxXX/rBnj3MX0m23wctnpcjh4YVZL/DewvdIuiSJ6mWq+7yfqvLWgrfY\nengr8+6eZ0lXgFjC5Y70dHj9dfjPf6BXL3jqKae8gzHGd5ZwhalA3KWo6kwjnjoF//hHwUapduxw\nvvUOG+ZUjQ4nU9dO5bbPbuOlLi9Rs1zNfO+vqrzx8xukZaQx5845xEg+slXjE0u4gm/lSrjzTqcg\n6dChUK+e2xEZE54s4TK/e/55GDPG+SZbvHjBj7NwoTPlMHs2nH++38ILqLX719J+VHsevPBBOtTo\nUODjnEo/xRPfPcFfmvyFQT0G+TFCA5ZwBVNamjNSPWSIsyj+rrvCd6mAMaEgYK19THj57jtn7dVT\nTxUu2QJnTUefPnD11XDypH/iC6S0M2n0mdiHy+pdVqhkC6BYXDGe6vAUwxYP44v1X/gpQmOCa+lS\n57/j+fOd53ffbcmWMW6xhCuCHD/uLHa/4w6nIrQ/XH+9Uy7iqTDohPnc98+BwM3Nb/bL8aqXqc79\nre7njs/u4MjJI345pjHBcOoUPPssXHaZs4bziy8gIcHtqIyJbpZwRZD/+z+nkWyPHv47pgg8/DCM\nGgWLFvnvuP62at8q3l34Lo+0eeRPNyIUVqdanahXoR5/++ZvfjumMYG0cCG0bg2rVsHy5c7NLzaq\nZYz7LOGKEEuWOIULH3jA/8dOSHCmFm+/3anXFWpUlVun3ErP+j2pVa6W34//QKsHmLJmCnO3z/X7\nsY3xl5MnnZtkrrzSKVw6ZQpUq+Z2VMaYTJZwuSwpKen3R0GpOmszrrwycBfYG25w+i++9lpgjl8Y\n7y58l4MpB7mp2U0BOX6lkpW4+ryruXfavWRoCGacpkBEpKeIrBWRDSJy1qS5iFQSkW9EZJmIrBKR\nO1wI0ycHD0JiIqxfDytWOA2mbVTLmNBidym6zB91uEaMcKrDDxkS2J5nS5c6dy1u3Ro6Ta9T01Kp\nNbgW97W+j3bVA9cbPUMzePSbR/l7+7/z9/Z/D9h5ooXbdymKSCxOJ4zuwE5gIdk6YYhIElBMVZ8W\nkUqe7auoanq2Y7l6Ddu2zVmrddVVzl2IlmgZE1h2l2KUSktzipTefHPgG8y2bOksxs/Sb9t1L815\niSolqwQ02QKIkRhua3EbL815iZPpYXDLpvGmLbBRVbeqahowEeiTbZvdQBnP8zLAwezJltvWrIGO\nHeGee+DVVy3ZMiaUeU24fBh27yMiy0VkqYgsFpGuWT7bKiIrPJ8t8HfwBt5+G0qWdNpzBMPttzvF\nUHfvDs758nIw5SBvL3ib286/LSjna1O9DZXiKzHoJ6vLFSpE5CqRAlWmrQ5sz/J6h+e9rEYATUVk\nF7AceLRgUQbG/PnQpQv861/w+ONuR2OM8SbPMRHPsPs7ZBl2F5Fp2RpQf6eqUz3bNwemAPU9nymQ\nqKqH/B65ITXVmUJ46KHgfbOtV88Z6XrqKRg3LjjnzM0zM5+hSaUmnFcpl47cAXBL81t4bd5r9G/f\nn9LFQmReNbr1BQaLyCfAB6q61sf9fJkDfAZYpqqJIlIPmCEi56vqsewbZl2DmZiYSGJioo9hFMz0\n6U4JmDFj4IorAnoqY6JecnIyycnJhT5Onmu4ROQiYICq9vS8/geAqr6Sx/Zvqmp7z+stwIWqejCP\nc9gaLo/8/u8wcCD873/B73e4bx/87W+wejXU8v9NgT7Ze3wv9d6ux396/IeEMsEtMPT8D89zWb3L\neKVHjv8ZGB/4cw2XiJQF+gF34CRSo4EJOSVGWfZpDyRlubY9DWSo6qtZtvkK+Leq/uR5PRN4SlUX\nZTtWUK9hEybA3/8OkycHb2TbGPOHQK3h8mXYHRG5WkTWAF8DWQsWKfCdiCwSkXvzG1w0GDBgwO+P\n/EhJcSrK3+yfGp/5UrkyXHghvPBC8M+d6cXZL9KiSougJ1sAt7a4lfcWvcfRk0eDfm5zNlU9AnwC\nTALOBa4BlopIXsXTFgENRKS2iBTFGSmblm2btTij+4hIFaARsNnP4efLkCHw5JMwc6YlW8aEG2/L\nrH362qaqnwGfiUgn4EOcCxPAxaq6W0TOwRmOX6uqcwoebuQpaDmIIUOcIqfNmvk3Hl/17etc+F95\nBc45J7jnPnLyCOOWj+OFRHcyvgYVG1C3fF3e/PlNBiTmL1E2/iUifXBGthoA44A2qrpPROKB1cDb\nOe2nquki8jAwHYgFRqnqGhG53/P5MOAlYLSILMf5cvqkm8sjkpLgo49gzhyoXdutKIwxBeUt4doJ\n1MjyugbOKFeOVHWOiMSJSEVVPaiquz3v7xeRKTh3Bp2VcAV7/UO4y8hwFsvfcYd7MdSoAU2bOtOZ\nb7wR3HO/+tOrNKjQgHoV6gX3xFlc2/ha3lnwDs90eoYisUVciyNc+GsNRA6uxVnGMDvrm6qaIiL3\n5LWjqn6NMyqf9b1hWZ4fAHr7MdYCGz3amUr88UdnhNkYE368reGKw6k90w3YBSzg7Fo19YDNqqoi\n0gr4n6rW83zDjFXVYyJSEvgWGKiq32Y7R1Sv4SqI0aOd9Vtvv+3ubeAbNjjTitu3B68uV2paKglv\nJPB/Hf6PZpVdGt7z6D+9P49f9DgPtnnQ1TjCkb/WcInIIFV9Mtt7r6pq0Lp/Bvoatngx9OwJs2ZB\nkyYBO40xxkcBWcPlqTmTOey+GpiUOeyeOfQOXAesFJGlwFvAjZ73qwJzRGQZMB/4InuyZfJPFQYN\ncqrKu11zp0EDZ2ojmCNcQxYMoUqpKq4nWwBXNbqK1+a9VuCCtcYvcuoc2ivoUQTIgQNw3XXw/vuW\nbBkT7qzSfJj56itnKnHYsMAXOvXFwoVOY+vt2yEmwGV0VZW6b9XlhqY30LFmx8CezAcZmsGDXz7I\nWz3f4i9N/+J2OGGlsCNcIvIg8BBQD9iU5aPSwE+qGrTbSQJ1DUtPd0a2LrzQWStpjAkNVmk+TOW3\nl+KgQdCjR2gkW+D8MYiJccpTBNrn6z8nNT2Vi2uExu1ZMRLDZfUu442fg7yIzQB8hLO+ahpwped5\nb6B1MJOtQHr2WWcU+1//cjsSY4w/2AiXy/JTh2vjRjj/fBg5EkqVCnRkvps82Wkx8vPPgT1P4phE\nEsok0Ldp38CeKB9STqdwzxf38PPdP9O0clO3wwkbfhjhKqOqR0WkIjncTR3MuwkDcQ379FOnevyi\nRVCpkl8PbYwpJBvhigKvvw5t2oRWsgXOtMfq1bB8eeDOsf7AehbtWsQV9UOrrHZ80XjaV2/Pf+b+\nx+1Qos0Ez8/FuTzC1urV8OCDTtJlyZYxkcMSrjBx8qRzW/hVV7kdydni450ijIMC2GJw0NxBtEto\nR6liIZZtAn0a9WHymskcO5VrYXPjZ6p6hednbVWtk/3hdnwFdeQIXHMN/Oc/0Lq129EYY/zJEq4w\nMWoUVKni3BkYivr0galTnT8Y/paSlsLHv3zM1Y2u9v/B/aBWuVrULFuTYYuHed/Y+IWItMrr4XZ8\nBXXffdC9u9Mk3hgTWUJk6bXx5r334LLL3I4id9WrO42thw1zKtD70wdLPyChTAK1y9X274H9qGe9\nngxdNJTHL3r8T+vyTMC8Qd6dMLoEKxB/mTnTWbP1yy9uR2KMCQRLuFzmSw/F+fNh1y7oEuJ/Qrp3\nd0bi/J1wDV88nK51uvr3oH7WqVYnxiwfw6yts0isk+h2OBFPVRPdjsGfzpyB/v2dqcTixd2OxhgT\nCHaXYhi4+Wb47Td44AG3I8lbejrcfTd8/rn/Gusu272MS8ZcwqirRlEsrph/Dhogo5aOIlZi+bTv\np26HEvL8cJdiV1X9XkSuI+e7FCcXKsD8xVLoa9jw4U6fxB9+cL+gsTEmb3aXYoRKSYFp06BXGNTO\njotzEq23c2wXXDCD5w+mfUL7kE+2AHo16MX0TdM5evKo26FEg0s8P3vn8ggbR47A8887HRss2TIm\nclnCFeLGjoWEBKhZ0+1IfNOrF3z5JRzzww17qWmpTF4zmSsahFYpiNxUK1WNOuXrMHLJSLdDiXiq\nOsDz8w5VvTP7w+348uPf/4YrroBWYbvU3xjjC68Jl4j0FJG1IrJBRM5qCCsifURkuYgsFZHFItLV\n132NdyNGQGKi21H4LiHB6a84YkThjzV2+ViqlXaSmHDRrXY3Ri0b5XYYUUNEKonIEM/1Z4mIvOUp\nhhoWNm6EDz6wavLGRIM8Ey4RiQXeAXoCTYB+ItI422bfqer5qtoSuAMYno99TR5++QU2bIBu3dyO\nJH+6doXRowt/nFFLRpFYK7HwBwqizrU6s/PoThbtWuR2KNFiIrAPuBa4HtgPTHI1onx48kmnony1\nam5HYowJNG8jXG2Bjaq6VVXTcC5ufbJuoKonsrwsBRzwdV+Tdy/Ft9+Gtm2hWOgvX/qTzp1h61ZY\ntargx9h4aCOrD6yma+3QvjsxuyKxRbgo4SKGLBjidijRoqqqvqiqW1R1s6r+C6jidlC++OEHWLrU\nuTvRGBP5vCVc1YHtWV7v8Lz3JyJytYisAb4G/paffaPdwIEDf39klZHhtPYI5dpbuSlWzEkU3323\n4McYunAoraq2Ir5ovP8CC5LL6l3G1LVTSTuT5nYo0eBbEeknIjGeR1/gW7eD8iazDMSgQVYGwpho\n4a0Ol0/3OqvqZ8BnItIJ+FBEzstPEFlHdxITE0kMp0VLAfLZZ1CiBDQO00nYSy+F115zkq6YfN6a\noapMWDWBBy4M8ToYuahXoR4VSlTg418+5uYWN7sdTkhITk4mOTnZb8cTkeP8cX36O/Ch53kMcAJ4\n3G8nC4DM/76vv97tSIwxweIt4doJ1MjyugbOSFWOVHWOiMQBFTzb+bRvTtNp0W74cP/VsnJDkybO\nN/epU53ecPkxfdN0MjSDC6pcEJjggqBjjY6MXDLSEi6P7F+kso/o5peqhl5TzXx47z149FErA2FM\nNPE29rAIaCAitUWkKNAXmJZ1AxGpJ55eJpk9zFT1oC/7mpwdPgyzZ4fndGJWF1/sJI75NWzRMDrU\n6BDWLXIurXcp83fOZ+/xvW6HEvFEpLyItBWRzpkPt2PKy9q1zg0x117rdiTGmGDKM+FS1XTgYWA6\nsBqYpKprROR+Ebnfs9l1wEoRWQq8BdyY176B+TUiywcfOE2qK1VyO5LCuewymDULDh3yfZ9jp44x\nY/MMetbvGbjAgqBs8bI0PqcxI5b4oT6GyZWI3AvMxlm3NRDnepPkZkzevP++05GhaFG3IzHGBJPX\nXoqq+jXOYvis7w3L8nwQMMjXfc2f5dRLccyY0O+b6ItKlZzEccwYeOwx3/b574r/UrNsTaqVCv/7\n5LvU6sKHKz7k2c7Puh1KJHsUaAPMU9UunvWjL7scU65OnIAPP4QlS9yOxBgTbNZLMcSsXu3c4Tdm\nTPiVg8jJ9Onw00/O7e++aD+yPS0qt6B3o7DqzpKj9DPp3DHtDr6//XtaV2vtdjghpbC9FLMcZ5Gq\nXigiy4D2qnpSRFarahM/hOlrDD5fw0aNctY1TrPFFcaELeulGCFGjIDWrSMj2QK45BJYv96pqO3N\ntt+2sWLvCrrWCa/aW7mJi42j7bltGbHYphUDaLuIlAc+A2aIyDRgq7sh5W7oUHjwQbejMMa4wRKu\nEKIKH3/sVGqPFMWLQ8uWvi2eH7l0JM0rN6dk0ZKBDyxIutbpyuQ1k8nQDLdDiUiqeo2qHlbVJOA5\nYCRwtS/7+tJ6TEQSPW2DVolIcmFiXbjQWc8Y7jfDGGMKxhKuEDJrFpw+7SQokaRLF5g0yUko8zJh\n1QQSaycGJaZgaXpOU+Ji4vhm4zduhxKxRKS1iDwKtAB2qOppH/bx2npMRMoB7wK9VbUZTuugAnvv\nPXjggfzXpTPGRAb7Tz+EjBgB7dpFXm2eCy+E48edtVy5Wbx7MftP7Kd99fbBCywIRIR2Ce0YtcQa\nWgeCiDwPjMGp/VcJGC0iz/mwqy+tx24CPlXVHQCqeoACOnTIKXZ6550FPYIxJtx5vUvRBFZm0dcz\nZ2L48svneeEFd+MJhJgY50aA4cOhY8ectxm+aDhtzm1DXGzk/ZO8tO6lPPndk6SmpVKiSAm3w4k0\ntwAtVPUkgIi8DCwHXvSyX06tx9pl26YBUEREfgBKA2+p6ocUwPjx0KsXnHNOQfY2xkSCyPvrFmb+\nqLh9GbVrQ506bkYTOD16wIsvQno6xGX7V6eqTFk7hf7tI7OLb0KZBKqVqsbEVRO5s6UNcfjZTqAE\ncNLzujh5dMPIwpfbCosArYBuQDwwT0R+VtUN2Tf01p5s2jT46199OKMxJuT4qzWZJVwh4xbaR9Zs\n2p80aAClSzt/eLJX2P5m4zfExsTS9Jym7gQXBB0SOjBm+RhLuPxERIZ4nh4BfhGRzIbVPYAFPhzC\nl7Zl24EDqpoKpIrIbOB8IM+EK7ujR+Hnn2HKFB+iMsaEHH+1JrM1XCEhHrgyrHsn+qJ9e6e+WHYf\nLPuAdtXbhXUrH2+61+3Owp0LOZhy0O1QIsVinPZhU4BngB88j3/ilIjwxpfWY1OBjiISKyLxOFOO\nq/Mb6IwZTpurUmHd/dEYU1iWcIWEPsA8ypRxO47A6t4dvv8eUlL+eO90+mmmb5xOj7o93AssCMoW\nL0ujio0YvWy026FEBFUdo6pjVXUsMAFY4nmM97znbX+vbctUdS3wDbACmA+MUNV8J1xffAFXXpnf\nvYwxkcZrwuWtVo2I3Cwiy0VkhYj8JCItsny21fP+UhHxZZg/St0EjHc7iICrVg0SEuCjj/5473+r\n/8c5Jc+hZtma7gUWJBfXvJiPVn7kfUPjMxFJBNbjlG94F9ggIpf4sq+qfq2qjVS1vqq+7HlvWLbW\nZa+palNVba6qb+c3vjNn4Msv4Yor8runMSbS5Jlw+VKrBtgMdFbVFjh3BmUtcalAoqq2VNW2/gs7\ncjzxxKsUK9adfv2C1onEVRddBOPG/fF67PKxEVcKIjedanRi3YF1bD682e1QIskbwKWq2llVOwOX\nAm+6HNPvFi6EypUj92YYY4zvvI1wea1Vo6rzVPWI5+V8ICHbMSJ3YY4f1KnzJNdcU5x7733G7VCC\nont3WLQI9u2DIyeP8OO2HyN+OjFTfNF4zq9yvtXk8q84VV2X+UJV1xNCNwPZdKIxJpO3hCunWjXV\n89j+buCrLK8V+E5EFonIvQULMbKNHw833eR2FMFTpgw0auQsnh+3fBz1ytejYnxFt8MKmktqX8LH\nqz92O4xIslhERnpa8HQRkZE4C+JDgiVcxphM3r4J+lKrBgAR6QLcBWS91+5iVd0tIufgNJZdq6pz\nsu/rrYZNpNq6FdaudXqr5VWFPdJ06gQTJkCxCuPpUKOD2+EEVdtz2zJ00VCW7F5Cq2qt3A4naPxV\nxyYHD+Asfv+b5/Uc4L1AnCi/tm93HpFc7sUY4zvRPBrciUh7IElVe3pePw1kqOqr2bZrAUwGeqrq\nxlyONQA4rqqvZ3tf84ohkr38spN0DRsGP/zgXJzLl3c7qsA7eRJuf3Af+mgdPugzklLFout++cHz\nB9OoYiPeuyIk8gJXiAiqWqjlBiISB6xS1fP8FFZB48jxGvb++/Djj/Df/7oQlDEmYAp6/fI2pei1\nVo2I1MSl1mjLAAAgAElEQVRJtm7JmmyJSLyIlPY8L4mzmHVlfgOMZB99BDff7HYUwVe8OFTqMoFy\nRztFXbIF0KVWF6asnUK0ftHwF09ph3UiUsvtWHIyYwb07Ol2FMaYUJHnlKKqpotIZq2aWGBUZq0a\nz+fDgOeB8sBQT+HKNM8diVWByZ734nDq43ybw2mi0sqVcOQIzJw5kO+/V7ZsgW7dktwOK2hSG35I\nWvJTcI/bkQRfiyotyNAMftj6A13rdHU7nHBXAafS/ALghOc9VdWrXIwJcKrLDxrkdhTGmFCR55Ri\nUAKI0inFp5+GjAwYNOiPUcmxYzUqphS3p6zj8bVtkTd289LohdRretTtkIJu+OLhlC1elv9eG53z\nTf6YUvQcJ9HzNPMiIjgJ16zCHjsfMZx1DduxA1q2dO7GjeAGCsZEpUBNKZoAyMhwphOj6e7ErGbs\nG0PdIh1p0OQE334S+QVPc9K9bne+WP8F6WfS3Q4lrKlqMrAOKAeUAdYGM9nKzYIF0LatJVvGmD9Y\nwuWCuXOdRs4tWnjfNhL9dORjmhfrSfO2B5g3oxpROMBJ3fJ1KVe8HFPXTXU7lLAmIvfg1P+7Frge\nmC8id7sbFcyfD+3auR2FMSaUWMLlgszRrWj89rvm6HxSM45Rv0Qbajc6hmYIy3+OnjpcWbWr3o6x\ny722/TN5exJoqaq3q+rtQCvgrBZkwWYJlzEmO0u4giwtDf73P+jXz+1I3DFj/2gaFOmCSAwi0LDF\nYb6L4mnF77d8z/FTx90OJZwdALL+D3jc855rzpyBxYudKUVjjMkUMi0wosX06dCw4R+91QYMGADA\nli0uBhUkGZrB/GNTuK70H2Xczu+wn4/ePo/0NCGuSHTNLVYtVZWEMglMWDWBe1tbI4YC2gT8LCKZ\nc7N9gBUi8jjO4vk3gh3QL7/AuedGR009Y4zvLOEKsvHj/1x7K7PKfmbh00i28PA3FCGehGJ/NOqu\nmpBKqTJpzJtRlU69drsYnTs6JHRg3IpxlnAV3CbPIzNbn+p57lqBN5tONMbkxBKuIDp2DL76CoYM\ncTsSd8w8MI6GRbqc9X6jCw7x/Wc1ojLh6lanGxN/mcje43upUqqK2+GEHVVNcjuG7ObPt+lEY8zZ\nbA1XEH32mdNHsFIltyMJvlNnTrLsxNe0jL/irM/Ov2g/qxZUJOV4rAuRuatM8TI0rtSY0ctGux2K\n8ZMFC2yEyxhzNku4gij7dGI0+fHgp5SPqUnFIjXO+qxcxTQqV08leVqCC5G5r2PNjoxfOd7tMIwf\nnDoF69dHb8kXY0zuvCZcItJTRNaKyAYROet2axG5WUSWi8gKEfnJ08jap32jyd69TquPq1xvOOKO\n7w+O47yi3XP9/LyWB/lhanQmXJ1qdmLL4S2sP7De7VBMIW3aBLVqQbFibkdijAk1ea7hEpFY4B2g\nO7ATWCgi01R1TZbNNgOdVfWIiPQEhgPtfdw3akycCL17Q8mSf34/c9F8JPdSPHL6AOtSf6Rbxcdy\n3eb8iw4w64saHNhTjEpVTwUxOvcViytGy2otGb5kOK9d+prb4YQVEakM3AvU5o/rmarqXW7Es3Yt\nnHeeG2c2xoQ6byNcbYGNqrpVVdOAiTi3Xf9OVeep6hHPy/lAgq/7RpMPP4Rbbz37/YEDBzJw4EDG\njRsY/KCC5Lv9H5IQ15JSsbnfJ1+8RAa1GhxlRpTW5OpSqwuTfplENPYVLaSpOC19ZgBfZnm4Yu1a\naNTIrbMbY0KZt4SrOpC1WMEOz3u5uRv4qoD7Rqw1a2D3bujWze1I3JF86L80KXqp1+2atTnI7C+j\n8p8Irc9tTWpaKrN/ne12KOGmhKo+paofq+onnsenbgVjI1zGmNx4Kwvh89dtEekC3AVcnN99M6fV\nABITE0lMTPR117Dw4YdOK5/Y6LsJjx0p69mbvpEby51dDiK78y44xDeTarF5TRnqNj4ahOhCR4zE\n0C6hHSOWjOCS2pe4HY7fJScnk5ycHIhDfyEiV6iqa6NaWa1bBw884HYUxphQJHlNYYhIeyBJVXt6\nXj8NZKjqq9m2awFMBnqq6sZ87quRPI2SkeFUlf/885zvXJIsDRXHjtWIq049auvTbDi2gmvLD/Bp\n+2nj6lC9znEeHLAqwJGFns2HNzMgeQD7n9hPkdgibocTUCKCqha6m6iIHAfigdNAmudtVdUyhT12\nPmJQVUUVypWDzZuhYnS2BzUmKhT0+uVtSnER0EBEaotIUaAvMC3biWviJFu3ZCZbvu4bDWbPdi7C\n0XibuKry45GJtCh+uc/7tGh/gLnTzyWCc/Bc1S1fl/LFy/PJ6k/cDiVsqGopVY1R1eKqWtrzCFqy\nldWePVC0qCVbxpic5TmlqKrpIvIwMB2IBUap6hoRud/z+TDgeaA8MNQzWpOmqm1z2zeAv0tIGjcu\n58XymSK5l+KKI7NJyzhFveJtfN6nVoNjxMQqi2ZVpk3ivgBGF5ouSriI0ctG0695lHY3LwAR6QN0\nxlnGMEtVP3cjjnXrbP2WMSZ3eU4pBiWACJ5STEmBhARYtcppZpuXzF6KkTSlOGjDrZw6BZeVeyRf\n+838rDpn0mN49r1FAYosdB1MOchDXz3Ejsd2UKFEBbfDCRg/Tim+ArQBxgMC3AgsUtWnfdi3JzAY\n5wvhyOzLHbJs1waYB9ygqpNz+FxVlfffh8WLYcSIgv8+xpjQF6gpRVMIU6ZA+/bek61IdOpMKouO\nT6N1yfxXAmndcT/L554Tla1+KsZXpGHFhoxcMtLtUMLFFcClqvqBqo4CegJXetspS53AnkAToJ+I\nNM5lu1eBb3ASulxZSQhjTF4s4QqgMWPgjjvcjsIdyQcmUSGmFpWK5L+uVrlKp6mckML3n53dBiga\nJNZOZNzycW6HES4UKJfldTl8u0Pa1zqBjwCfAPu9HXDLFqhb14czG2OikiVcAbJtGyxZEr2tfGYe\nHEuTopcVeP9mFx5k5pToTLg61+zMtiPbWLFnhduhhIOXgSUiMlZExgKLgZd82M9rnUARqY6ThA31\nvJVnIrd9O9SIzn+yxhgfeKvDZQpo3Djo2xeKF3c7kuDbf3IHm08u5IqKzxb4GC3aHeD7qTXYuTWe\n6rVT/Bhd6CsSW4S257bl3YXvMqz3MLfDCWmqOkFEZuGs41LgKVXd48uuPmwzGPiHqqo4dwTlOqWY\nlJTEunUwaRKcOBF5tQSNiWb+qiNoi+YDQBUaNICPPoK2bfPeNnsvxUhYND9uWxIrfpvDDRVeLtRx\nJo+qR/1mh7nn6ai7uZU1B9Yw6KdB7Hl8D3Gxkfe9qLCL5kWkseeO6dY4yVPmsRRAVZd42d9rnUAR\n2ZzluJWAFOBeVc1eGkdTU5WyZSE1FWJs3sCYiFbQ61fkXclDwE8/OfV42vhQDWHgwD96KEZC82pV\nJfnwOLqU+Fuhj9Wywz6+nFCHu55aE3V/xBpXakx8kXimrpvKdU2uczucUPQYTtPq18l5tMpba4Pf\n6wQCu3DqBP6pFoeq/r4iS0RGA59nT7Yy7dzp3BwTbf9OjTG+s8tDAHzwgbNYXgp903v4WfbbD5zO\nOEXDEhcV+li1zztGTIyy4Icqfogs/Fxc82KGLbYpxZyo6r2epz1VtUvWB+C10q6qpgOZdQJXA5My\nawxm1hnMD1u/ZYzxxhIuPzt6FCZPhttvdzsSd3y1/32aFL30Ty2LCkoEmrQ+xDcTavkhsvBzeb3L\n+XHbj+w+ttvtUELZXB/fO4uqfq2qjVS1vqq+7HlvmKegc/Zt78ypBlem7dudmnvGGJMbS7j8bOJE\n6NYNqkThoMzxtCMsO/41reOv9tsxW3fax6pFlThyMLJ7C+akfInyNKvcjKGLhnrfOMqISDXP+q14\nEWklIq09PxNxeisG1Y4dNsJljMmbJVx+NmIE3Huv9+0i0Yz9Y6ka24TyRar57Zily6WRUPcY33wc\nnaNcPer2YOzysUTajSV+cCnwGk4ph9c9z1/HWdv1TLCDsSlFY4w3XhMuEekpImtFZIOIPJXD5+eJ\nyDwROSkij2f7bKuIrBCRpSKywJ+Bh6Jly2DfPujRw/d9BgwYwIABA7jttgGBCyxIvjs4ihbFvRb5\nzrfz2+9n5uT8F1CNBO2qtyM1LZWZW2a6HUpIUdWxnvVad2Rbw3VVXlN/gWJTisYYb/JMuHxsf3EQ\npxrzazkcQoFEVW2pql4KJIS/UaPgrrsgNh8daZKSkkhKSuKOO5ICFlcwrD+2iIPpO2ga39Xvxz6v\n5WGOHy3CygWR21swNyJCp5qdeGfBO26HEqouFJHfK82LSHkR+Vewg9i1C6pX976dMSZ6eRvh8tr+\nQlX3q+oiIC2XY0TFvXqpqTBhAtx5p9uRuGPqniE0KXIZceL/tVaxsdD0wgN8Pi46+6b0atCLGZtn\ncDj1sNuhhKLLVfW3zBeqehinv2JQ7d8PlSsH+6zGmHDiLeHy2v7CCwW+E5FFIhLRK5smToR27aBm\nFM58nUg7ysLjU2hTMnD1otok7mXpj+dw9HD0LZ6vXLIyDSs25N2F77odSiiKEZHf+zmISAmgaLCD\n2L8fKlUK9lmNMeHEW+HTwq7UvVhVd4vIOcAMEVmrqnOyb5RZbR0gMTE822K89x5kqWEaVabv+4Aq\nMY2pWCRwq4bLVUyjet3jfPlRbfr9dUPAzhOqLq9/OSOWjOCfnf7pl5Ibweav1hg5GA/MFJEPcEbT\n7wSC3vlbBEqWDPZZjTHhJM/WPr60v8iy7QDguKq+nsuxcvw8Elr7LFzo9E3csCF/67ey+uEHZ+Ft\nOLb2uX9FY9oVv51mAVi/ldXaZeVI/jyBUd/PjLqisqrKfV/cx6irRnFFw6DPmPldYVv7ZDvW5UA3\nz8sZqjrdH8fNx/m1Zk3l11+DeVZjjFsKev3yNqX4e/sLESmK0/4ix9YWZFurJSLxIlLa87wkzm3c\nK/MbYDh47z144IGCJVuZi+bHjEnye1zBsOLIHI6fOUzjEp0Dfq5G5/9G+ukYFs86J+DnCjUiQpfa\nXRj882C3QwlFa4Dpqvp/wJzM604w2XSiMcYbr82rPd8eBwOxwChVfTmz9YWqDhORqsBCoAyQARzD\nuaOxMpB5e3YcMD6zmnO244f1CNehQ1CvnjO6VZCLbtbpobFjNexGuF5cdx2x6WXpXvaBoJwv+fPq\nHPutCC+Onh+U84WSIyePcP+X97PmoTXULBfeiwX9NcIlIvfh9FSsoKr1RKQhMFRVu3nZ1W9ERC+7\nTPnmm2Cd0RjjpkCNcHltf6Gqe1S1hqqWVdXyqlpTVY+r6mZVvcDzaJZTshUJxoyB3r2j8xvugVO7\nWHHiW9qWvD5o52yTuJe1yyqwe1uJoJ0zVJQtXpZWVVvx5s9vuh1KKPkr0BE4CqCq63G+7AVVNP73\nb4zJH6s0XwhnzsA778Bf/+p2JO6YsvtN6hTpQJm44P21KVk6nQbNfmPyyPpBO2co6d2wN+OWj+N0\n+mm3QwkVp1T1VOYLEYmj8Df75Ns50TfLbYzJJ0u4CmHqVKha1SkHEW3SMk7zw+ExtI/vF/Rzt+u2\nmzlfVedkavT98218TmMqlazE8CXD3Q4lVMwSkX/i9FTsAfwP+DzYQVjCZYzxJvr+YvnRm29C//5u\nR+GOb/eNoUzMuSQUaxL0c1ermUrFqql89VHtoJ87FPSq34u35r9l/RUdTwH7cW7IuR/4Cng22EFU\niL4mCMaYfPJWh8vkYtEi2LYNrrmmcMcZMMDpobhlix+CCqIv9g+hdfEbXDv/hZ338tVHdbjmrs1R\nVyIisXYi41eO5+uNX9OrQS+3w3HbI6r6FvD7kJ+IPAq8FcwgypYN5tmMMeHIRrgK6M034ZFHIK6Q\nKWs49lJccvg7jqUfoFl80G4EO0uT1odJOxXDvBlVXYvBLTESQ4+6PXj1p7PK4UWjO3J4L+gNtizh\nMsZ4YwlXAezYAV9/Dffc43Yk7pi0+9+0LHY9seLeAKkItOq0j0+GR+fi+SsbXMniXYv5Zd8vbofi\nChHpJyKfA3VE5PMsj2TgYLDjsYTLGOONJVwF8MYbcPvtUK6c25EE34ZjS9h6ajltSwWub6KvLuy8\nl92/lmTVouhbQFOqWCk61exE0qwkt0Nxy1zgdWAt8Jrn+evAY8BlwQ7GEi5jjDeWcOXTwYNO7a3H\nH3c7EndM2PVvmhftTbGYeLdDoUgx5fyL9jPp3QZuh+KKG5rcwFcbvuLX36Kvp4yq/qqqyaraHvgV\niFPVZJwELOhF2izhMsZ4YwlXPg0ZAtdeCwkJbkcSfLtTN7PyxLd0KHWT26H87qLuu1m7rALbNpRy\nO5Sgq1SyEm3PbcsLs15wOxTXeCrN/w8Y5nkrAfgs2HFYwmWM8cZrwiUiPUVkrYhsEJGncvj8PBGZ\nJyInReTx/Owbbo4dg3ffhSef9N8xw6mX4oRdL9GoSHdKxYZO/6ESpTJo2vogH73T0O1QXHFDkxuY\n9Msk9p/Y73YobgmJSvOloi/fN8bkU54Jl4jEAu8APXH6I/YTkcbZNjsIPIKzjiK/+4aV4cOha1do\n6Me/7QMHDmTgwIGMGzfQfwcNgP0ndzDv6Md0LHW726Gc5eLLdrF4dhV2b3N/mjPYEsom0Lxyc16a\n85LbobglJCrNx9hcgTHGC2+XibbARlXdqqppwESgT9YNVHW/qi4C0vK7bzhJSYHXX4enn3Y7End8\nuDOJhnGJVChyrtuhnKVsxTQatzzMuNfPczsUV9zQ5AZGLR3FodRDbofihpCoNG+MMd54S7iqA9uz\nvN7hec8Xhdk35Lz7LnToABdc4HYkwbfv5HbmHf2YzqXudjuUXHW+YgeLZldh59boG+WqX7E+jSs1\nJik5ye1Q3PAPQqDSvDHGeOMt4SrM0HzE9B05dgxeew0GhvasX8B8uCOJhnFdKF+kmtuh5KpM+TQa\ntzrEh29G5yjXLS1uYfSy0ew7vs/tUIJKVc/gLJJ/SFWvV9UR6mPPIx/Wp94sIstFZIWI/CQiLfwd\nvzEmenirXLkTqJHldQ2ckSpf+LxvUlLS788TExNJTEz08RTB8dZb0L07NG3qdiTBt+/kNn4+9jH3\nlPuv26F4dUmvnbz/r+bs2FyShLon3A4nqGqXq02LKi147ofnGNZ7mPcdgiw5OZnk5GS/HU9EBBgA\nPAzEet47AwwBXvCWdGVZY9od51q1UESmqeqaLJttBjqr6hER6YnTPqi9334JY0xUkbyuS54FqOuA\nbsAuYAHQL9tFKXPbJOCYqr6en31FxNcvpK747Tdo0AB++sm/i+UzZSabW7ZAt25JlA+dGwABeHl9\nP1JOn6Z3ufC4yfTrCbUgBgYMW+B2KEG348gOnvjuCdY9vI7qZUJ79l5EUNUCd8EUkceAy4H7VHWL\n5726wPvAN6r6hpf9LwIGqGpPz+t/AKjqK7lsXx5YqapnFYQJ9WuYMca/Cnr9ynNKUVXTcb5BTgdW\nA5NUdY2I3C8i93tOXFVEtgP9gWdFZJuIlMpt3/wG6LaXX4Y+fQKTbEFo91LccGwpS098RZfS97kd\nis8Se29n9aIKrFkSYplrECSUTeDCcy/kiRlPuB1KMNwG3JSZbAGo6mbgZs9n3uR3jendOOvDjDGm\nQLw2w1PVr4Gvs703LMvzPfx56jDPfcPJli0wciSsXOl2JO4Yuf0xWhW9IaTqbnlTolQGbbrsYcRL\nTXnjkx/dDifobj//dh75+hGW7F5Cq2qt3A4nkOJU9aziY6q63zO67o3PQ1Ii0gW4C7g4t21CfVmE\nMabg/LUkIs8pxWAI5eH4vn2hWTN47rnAn+uHH2D7dkJmSnHBoW9469c7eLDSJIpK0DulFEp6ujA0\nqQX3P7eSjpfvdjucoBu3fBy7j+/mx7tCN+H0w5TiUlVtmd/PsmzTHkjKMqX4NJChqq9m264FMBno\nqaobczlWyF7DjDH+F5ApxWg2dy7MmxedPRPTM9L5YMdjdCh+Z9glWwBxcUqny3cy5j9NSE8r8N/0\nsNW3aV/WHljLlDVT3A4lkFqIyLGcHkBzH/ZfBDQQkdoiUhToC0zLuoGI1MRJtm7JLdkyxhhfWcKV\ng4wM6N8fXnoJ4qOvrBOTd73JmQy4sFTY1qnl/A4HiCt6hknvRV9j62Jxxbix2Y08/u3jpJ3JXo84\nMqhqrKqWzuXhy1IJr+tTgeeB8sBQEVkqItF3J4Yxxm9sSjEH778PH34Ic+YEvmVHqN2leODULv66\nuik3lHmDGsXCuw7G7l/j+WhII4Z8PovK1VPdDieoVJUnvnuCvzT5C//q+i+3wzlLYacUQ0koXsOM\nMYFT0OuXJVzZ7NkDzZs7a6qaNQv8+ZxyQo6xY9X1hOtf667n5Ol0rir/jLuB+MlXH9UiQ4UXRs13\nO5Sg23RoE88lP8eS+5bQoGJojfRZwmWMCVe2hstP+veHu+8OTrIVapYc/o5VKcl0L/Ow26H4Tddr\ntrNxVTnmzajqdihBV69CPRJrJXL3tNBtyWSMMdHCEq4spk+Hn3+G5593O5LgS0k/ztvb7iaxxF+J\njy3jdjh+U7xEBl2v3sZ7A1pw/Gis2+EE3W3n38a6A+sYvXS026EYY0xUs4TL4/BhuOceGD48OhfK\nD936KBWkNq1KXeF2KH7Xot0hqtY4wTvPne92KEFXPK4497W+j8e+fYydR3e6HY4xxkQtS7g8/vpX\nuPpq6NHD7UiCb+Gh6Sw89hlXlPmH26EETK+btrJi3jnMnR59U4ttq7elzbltuOnTm7C1RsYY4w5f\nKjJHvEmTYMkS5xFsAwYMAJy7FN1wLO0wQ7bdTbf4v1M6rqI7QQRBydLp9Lj+V95LakGT1ocoV+m0\n2yEF1X2t7uPR6Y/y5s9v8thFj7kdjjHGRB2vdymKSE9gMBALjMxeidmzzds4jWRTgDtUdann/a3A\nUeAMkKaqbXPY19U7fLZuhbZt4csvoU0b18JwpdK8qvLc2l6kpwvXlk8K3oldNHVsHc6kx/Dyf+ci\nEXGPnO/WHFjDi7Nf5Kc7f6JF1RauxmJ3KRpjwlVA7lIUkVjgHaAn0AToJyKNs23TC6ivqg2A+4Ch\nWT5WIFFVW+aUbLnt5Em4/np46il3ky23TNr5KjtPrefKck+5HUrQXNFvKwd2l+DDNxu5HUrQNa7U\nmD6N+tBnUh+OnTrmdjjGGBNVvK3hagtsVNWtqpoGTASylx+/ChgLoKrzgXIiUiXL5yH7LfZvf4M6\ndeCxKJxhWXFkDlP2v8K1Zf8dlu17CiquqHLt3Rv4cnwdlsw5x+1wgu6GJjdQOb4yfT/pa+u5jDEm\niLwlXNWB7Vle7/C85+s2CnwnIotE5N7CBOpvo0Y5leQ/+ICom1rafXILr265jm4l+lOlSF23wwm6\nStVOcelffuW1x1uxY3NJt8MJKhHhsfaPsXzvcl6Y9YLb4RhjTNTwtmje16/AuaUsHVV1l4icA8wQ\nkbWqOif7RpntbQASExNJTEz08bQF8+238MwzMGsWlC4d0FOFnONpRxiw/nKaFenNBaUudzsc1zRv\ne4iD+0rw/N3tGTx5NmXKR2bPwZzEF43n6Yuf5p8//JO65ety6/m3BvycycnJJCcnB/w8xhgTqvJc\nNC8i7YEkVe3pef00kJF14byIvA8kq+pEz+u1wCWqujfbsQYAx1X19WzvB3XB6bJlcOml8Omn0KlT\n0E6bq2D2UkzPSOfZtZdxJj2W68u/+Ke2QtFIFT4bXZfTp2J5ZfxPFCkaXVNsy/YsY9DcQUy9cSpd\n63QN6rlt0bwxJlwFpJeiiMQB64BuwC5gAdBPVddk2aYX8LCq9vIkaINVtb2IxAOxqnpMREoC3wID\nVfXbbOcI2sVq0ya45BJ44w244YagnNKrYPVSzNAMXlx/HXtObuWWCm9TRIoF5kRh5kw6jB9yHuUq\nniJpxHziikTXH86Zm2cydsVYZt42k1bVWgXtvJZwGWPCVUDuUlTVdOBhYDqwGpikqmtE5H4Rud+z\nzVfAZhHZCAwDHvLsXhWYIyLLgPnAF9mTrWDatAm6doV//jN0kq1gydAMXtlwE7tSN3JT+Tct2coi\nNg76PbSOQ3uL86+H2pCR4XZEwdWtbjeuOe8aeozrwZLdLhSiM8aYKOG1DlfAAwjCt8NNm6BLF2fd\n1gMPBPRU+RboEa70jHT+s/FWNqcs59YK71A8ppR/TxAhTp2M4b+Dz6N63eM8M2RR1I10TVk7hc/W\nfsaM22bQulrrgJ/PRriMMeEqICNckWDxYujcGZ59NvSSrUA7eSaF59Zdzq+pq7ml/BBLtvJQrHgG\nNz+6lr3b43nm1g6kHI+uRtfXnHcN1za+lm5juzF943S3wzHGmIgT0QnX559Dz57wzjtw331uRxNc\nh07t4Yk1HTmVdppbKgyhRGyU3Y5ZAMVLZHDzo+vIyIDH/9KJA7uja+q1T6M+3N3ybq7/3/WMWDzC\n7XCMMSaiROSUYkYGvPKKk2h99pnTuidUBeIuxeW/zeI/W2+kbmxHrij3OCIRnVf7nSpM/7gm65ZV\n4PHXl9Cq4363QwqqVftWMWjuIPo17cfbl79NXKz/W67alKIxJlwF5C7FYPD3xWrfPrjlFqdtz4QJ\nUD17mdYQ5Y9eiqrKxzsHMXn/y3Qr0T+q62z5w4r5FZjxSS1637aZmx5ZT0wU5a37Tuxj0NxBlIgr\nwWd9P6N2+dp+Pb4lXMaYcBX1a7hU4eOP4YILnBGt778Pn2TLH3akrOex1R2YfmAkN5V915ItP2jR\n7hC39V9D8rQE/n5tZ7ZtiJ41cJVLVuaVrq9Qq2wtLhh2AUPmD7FWQMYYUwgRMcK1davTF3HzZhgx\nAi66yD+xBVNBR7hOnTnJpJ0v88XBt7ig6LV0KXM3sVIkMEFGqTNnYPaX1Vk8uwo9+27lpr+to3iJ\n6KkfsXzPct5f/D7nlj6XD/p8QLPKzQp9TBvhMsaEq6icUjx4EP79bxg7Fvr3hyefhKJF/RxgkOQ3\n4apg+rYAABG9SURBVMrQDGbuG89/dz9DaalKj1J/o1qxRoENMsrt2VGCGZ/U5LcDxbnpkbVc1ndb\n1Ewzpp1JY/zK8UzfNJ3eDXvz2qWvUb1MwYeQLeEyxoSrqEq4duyAt95yGk/37QvPPw9VqwYowCDx\nNeFKz0hj+r7RTN47iAxVLom/nybxiUGJ0TjWLivHrC8SyMgQrrlrE5ffuDVq2gIdSDnAhys+ZMHO\nBVx93tU83/l5GlZqmO/jWMJljAlXEZ9wZWQ467I++AC++QZuu80Z1apVKwhBBpCvdynuTt3MtL3v\nMvu3Dykp59C+xK00LdEl6vshukUV1iwpz8/fVePo4aJ0vHwnV92+hYS6J9wOLSh2Ht3Jp2s+Zd6O\nebSt3pb7W9/PdY2v8/mORku4jDHhKiITrjNnYN48mDIFPvkEKlaEu+6Cm28u3N18oSSvSvO7T25h\n1oGJ/HT4E/akrad+kUu4MP46ahRr6kKkJjc7tsSzeHYV1q8oT+VzU+jQczeJvXdQvXaK26EF3NGT\nR/l609fM2TaH46eP07NeT/o260uv+r3yTL4s4TLGhKuAJVwi0hMYDMQCI1X11Ry2eRu4HEgB7lDV\npfnY9/eL1Zkz8Msv8NNPMHMmJCc7dxpee63zaN48v7+ed8nJySQmJvr/wD7KmnC9PmIbW0lm5bFk\nVp34gWNnDlAr7kIaFetK4/hOFJUSfj331vWLqd0w8G1couX86aeFNcvKs2ZpBbZtKEPJ0mk0bXOQ\n5m0P0PLiA1Sunvr7tivnr6R5uwD8g/ZRIM6/4eAGZv06i6V7lnIo9RCtqrWie93udK3TlXbV21Ek\n9o+bOUIh4SrMtS3bNhGRcLl9LfQn+11CT6T8HlDw61ee4/8iEgu8A3QHdgILRWSaqq7Jsk0voL6q\nNhCRdsBQoL0v+2Z66CFYuRKWLXMSrPbt4aqrYPBgSEjI76+UP278Izhy8ggbD21k/cH1UBtoD1SF\np3c0oWrceVSNa8KlJZ+kVrEWxIr/i05m+nX9ElcTnkg7f1xRpXnbQzRvewjNgF83lmbjyrJ88WFd\nRr7cjKLFMji31nFqn3eU/bu+QrmEWvWPUbZimt9i8NXKBf5PuBpUbECDig0A2HN8Dwt3LuSbjd8w\ndNFQDqcepm75ujQ5pwktqrTw63kLojDXNlcCDoJI+oNov0voiZTfozC8/TVvC2xU1a0AIjIR6ANk\nTZquAsYCqOp8ESknIlWBOj7sC0CjRnD99dCyZfhMFaoqaRlppKalkpKWwvHTxzl++jhHTh3hyMkj\nHD55mIMpBzmQcoC9J/ay+/hudh3bxa+//Up6Rjr1K9SnYUXPYuMVwLdw26NfUrVicVd/L+MfEgO1\nGx6jdsNjgLPma9/OEuz8tSR7t8ezZW1ZBj/VkiOHiiECZSucomzFU5SreIpylU5RtsJpypQ/TZly\npylZJo1SZdMoWTqNEiXTiS+VTrES6RQtpoTqEr6qparSu1FvejfqDThTj6sPrGbz4c2h0quxoNe2\nKqq6N9jBGmPCn7eEqzqwPcvrHfx/e3cfLEdVp3H8+9ybxITcvEdeYgJxlyy+lZAEUAnshl1jBUqh\n1rjgCyBqKeXWIlWKCqFEtrZYqLJqdXVr2TVIRA1YW0KQKAskEgR5C+BNQoAoiQkCggGMBCHczL33\n5x99bpwMczM9N7d7hvB8qrqme+Z0/86Zme45c/r0aXhXjjRvAqblWBeAVQd+gJXPBPx/nixD8Orm\n+4Em/erXIoIg9nit+rn+6GdL9xZWXbWK/uinP/rpiz76+vt2P1b6K1T6Krsfd/Xtoqevh57eHiQx\nesRoxo4cS9eoLrpGdTFh9AQmvGECk8ZMYsqYKUwZM4XDJx/OwV0HM23cNA6beBiTRk/afSpRp/3l\nF/OPO/p5+ZWdlGX7jgq/eaK8eI6/k4mH/oGJh0JP/zO884T7iYCel0ex47kx/GnHaHpeGslTT45k\n6+axVHomUOnppLJrBJVdnfRWOumrdNC7q5Pe3g4I0TGin87OfjpH9NPRGXR0ZI/qCDo69nyUsgqa\nFLy4/RfccfNxqcIWIPaovEnZc7uXd8/UP3WWr963ADSwr7b8suKhHtumA65wmVnzImLQCVgELKla\nPgP4Vk2aFcC8quVVwNw866bnNwHhyZOn19W0aW/HnqInhn5sm+NjmCdPr/tpSMevRi1cTwEzqpZn\nkP3L21ua6SnNyBzrEhGHN8iDmdlwG+qx7anaDfkYZmZ5NBon+wFglqSZkkYBpwM31qS5ETgLQNK7\ngT+mPg551jUza4V9ObaZmTVtry1cEdEr6V+AW8gunf5ORDwq6Zz0+v9GxE2STpa0CXgJ+MTe1i2y\nMGZmeezLsc3MbChaPvCpmZmZ2f6uLW69K+nfJK2TtFbSzyTNaLzWsMb/mqRHUx6ulzShxNj/JOlh\nSX2S5pQYd6GkjZIek/TlsuKm2FdJ+r2kh8qMm2LPkLQ6vecbJH2u5PijJd2XvuuPSLqszPgpD52S\nuiWtaEHsrZLWp/hryo4/VHn2F0nfTK+vkzS77Dzm1agskj6WyrBe0l2SWj9w2iDyHsckHSOpV9IH\ny8xfXjm/X/PTfrNB0u0lZzG3HN+vqZJuTsfADZLObkE2G8rzO9X0Pt/KK4WqrvIZVzV/Ltmoz2XG\nXwB0pPnLgctLjP0W4G+A1dS5AqqgmJ1kV1bNJLu4YS3w1hLLfAIwG3iozM85xT4YOCrNdwG/KrPs\nKe4B6XEEcC9wfMnxPw8sA25swfu/BZhcdtx9zHPD/QU4Gbgpzb8LuLfV+d6HsrwHmJDmF76Wy1KV\n7jbgJ8CiVud7iJ/JROBhYHpantrqfO9DWS4BLhsoB/A8MKLVea9Tlr3+Tg1ln2+LFq6IeLFqsQt4\nruT4KyOiPy3eR3Y1UlmxN0bEr8uKl+we9DEiKsDAoI+liIg7ge1lxauJ/UxErE3zfyIb6HJayXkY\nuMniKLID1B/Kii1pOtmB4kryDp9VQDZaFHeo8uwvewySCkyUdFC52cylYVki4p6IeCEtlno8bFLe\n49i5wI+AZ8vMXBPylOOjwHUR8SRARJT6G9mEPGV5Ghif5scDz0dEb4l5zCXH71TT+3xbVLgAJF0q\n6bfAx8lamVrlk8BNLYxfhsEGq31dkTST7B/MfSXH7ZC0lmwAzdUR8UiJ4b8OfBHob5SwIAGskvSA\npE+3KA/NyrO/DDZIartpdt//FO17PGxYFklvIvvBvyI91Y6dlvN8JrOAyak7xAOSziwtd83JU5Yl\nwNsl/Q5YB5xXUt6GW9P7fHE36qshaSX1h5deHBErIuIi4CJJF5D9KAzrFUGN4qc0FwG7IuKasmOX\nrB0POqWS1EX2r/e81NJVmtSaelTqK3iLpPkRcXvRcSW9H9gWEd2S5hcdbxDzIuJpSW8EVkramP5J\ntrO8+0tty1077me58yTpRLI/oPOKy84+yVOWbwAXRERIEu3ZupqnHCOBOcA/AAcA90i6NyIeKzRn\nzctTlsXA2oiYL+mvyY4DR9ac6XqtaGqfL63CFRELcia9hgL+UTWKnzrunUz2hS41dgvkGfRxvyVp\nJHAd8IOIuKFV+YiIFyT9FDgauL2EkMcBpyi7KfNoYLyk70XEWSXEBiAink6Pz0paTnYKot0rXMM2\nSGobyLXvp47yS4CFEdGS0/855CnLXOCHWV2LqcBJkioR0U5jQuYpxxPAcxGxE9gp6Q7gSKDdKlx5\nynIccClARGyWtAU4gmxsvNeSpvf5tjilKGlW1eKpQHfJ8ReSnWY5NSJeKTN2bVZKivO6HZQ2/cv9\nDvBIRHyjBfGnSpqY5seQXbBRyvc9IhZHxIyIeDPwYeC2Mitbkg6QNC7NjwXeB5R+peoQ7E+DpDYs\ni6RDgeuBMyJiUwvymFfDskTEX0XEm9N3/kfAZ9ussgX5vl8/Bo5PVxgfQNZJu8yuCHnlKctG4L0A\nqc/TEcBvSs3l8Gh6ny+thauByyQdAfQBm4HPlhz/W2QdmFemf0L3RMQ/lxFY0j8C3yT79/VTSd0R\ncVKRMaPFg9JKuhb4O2CKpCeAiyNiaUnh55HdN2+9pIGKzoURcXNJ8Q8BrpbUQfaH5/sR8bOSYtcq\n+5TXQcDytI+NAJZFxK0l56Fpg+0veg0OkpqnLMDFwCTgivRZVSLi2FbleTA5y9L2cn6/Nkq6GVhP\n1v9yScl9P3PJ+Zn8O7BU0jqyY+CXIqK0C4fyqvqdmpp+p75Kdmp3yPu8Bz41MzMzK1hbnFI0MzMz\n25+5wmVmZmZWMFe4zMzMzArmCpeZmZlZwVzhMjMzMyuYK1xmZmZmBXOFy8zMCiGpT1J31XToXtIW\neoutorc/HCTNl9TU7d4kbZU0uc7z50g6I81/V9KiNL9E0lvS/OLhyLfl0y4Dn5qZ2f7n5YiYnTNt\n0YNCNnMfSQFEAQNVFrDtoM5dSmoGfo00ERHVN42/kGwgUiuBW7jMzKwUksZKWiXpQUnrJZ1SJ80h\nku5ILWIPSTo+Pf8+SXendf8v3R5qKNvvqpcm3Y7mV5KuJrvl1AmSNkpamp5flvJwl6RfSzqmzrbP\nlvRjSatTmosH2fYMSV9L5Vsv6bSqzYyX9JMU+4qBCpqk/5Z0v6QNki6pCf2ltJ37lN0QGkmXSPpC\nnTzeLmmupMuBMel9/oGkf5V0XlW6SyV9rnZ92wcR4cmTJ0+ePA37BPSS3Su0m+yG8Z3AuPTaVOCx\nqrQvpscvAIvTfAfQldL+HBiTnv8y8JU68fJsv24aYCbZ7eWOrVquAG8na0F6gOxWNQCnAMvrxD8b\n+B3ZrZFGk1Wu5tbZ9iLg1rTdA4HHgYOB+cDOlL4jpVmU1plUlf/VwDvS8hay25MBnAmsSPNfBT6f\n5pcCH0zzq4E51e9Jmj8MeLDqfd80ENPT8Ew+pWhmZkXZGVWnFCWNJLt37glk9wScJunAiNhWtc4a\n4KqU9oaIWCdpPvA24O7U4DMKuLtOvI4c26+bJr32eESsqUq7JSIeTnl/GFiVnt9AVimq59aI2J7W\nuR44HrihZtvzgGsiq91sk/Rz4BhgB7AmIram9a9N618HnC7p02RdgQ5J78eGtL1r0+MPga9X5eVV\npxoHExGPS3pe0lFklb9fDpTDhocrXGZmVpaPkbUqzYmIPklbyFqCdouIO1Nl6P3AdyX9B7AdWBkR\nH61OK+lYYKCv0sXAlEbbb5CHl2rS9lTN9wO7qubr/X7W9stSSltv27WVoah5HEgTkmaStfwdHREv\nSFrKq8tVLw/N9hO7kuwmzAcBVzW5rjXgPlxWKkmfkbRY0vckvVfSpyRdKOkaSdNbnT8zK9R4YFuq\n6JxIdhprD+lKxmcj4kqyCsBs4F5gXlX/pLGSZkXEmoiYnaYVebafM81QCVggaZKkMcCpwF28unJ1\nJ1mLVYekNwJ/S9ayJ+DY1OerAzgtpR1PVmHbIekg4KSamKen+dP5S8uf6sStVZFUXXFcDiwEjgZu\nyVlmy8ktXFaa1BzeHRH3pw6nK8n6PPwWuBS4GniydTk0s2FW28KyDFghaT1Zn6hH66Q9EThfUgV4\nETgrIp6TdDZwraQ3pHQXAY8NYft50uRZrtd6FGQVp+uA6cD3I+KXqYVqd/qIWC7pPcC69PwXI2Kb\npLcC9wP/BRwO3BYRywEkdQMbgSeAX9TEnCRpHfAK8JGq5xu1cH0bWC/pwYg4MyIqkm4DtqfTnTaM\n5PfUyiLpgoi4PM1/CPh2RExO/wSPjog7W5tDM7OhS5XCuRFxbqvzMhSpVe1B4EMRsbnV+dnf+JSi\nlWagspXMJ7vqiIjY6cqWme0H8rQqtSVJbyNrMVzlylYx3MJlLSHpUeB/IuI/W50XMzOzormFy0oh\nqVPSgtRJdBpwBKmFK71+futyZ2ZmVixXuKws55Bd9TKL7Eqal0kd5CV9AHikdVkzMzMrlk8pWikk\nHQmcT9ZHYB0wDvh7YCuwOSKWtS53ZmZmxXKFy8zMzKxgPqVoZmZmVjBXuMzMzMwK5gqXmZmZWcFc\n4TIzMzMrmCtcZmZmZgVzhcvMzMysYK5wmZmZmRXMFS4zMzOzgrnCZWZmZlawPwO5po5u6r81eAAA\nAABJRU5ErkJggg==\n", "text": [ "" ] } ], "prompt_number": 59 }, { "cell_type": "markdown", "metadata": {}, "source": [ "If you drag the slider in the interactive figure above, you will see how the colored areas shown on the left frame correspond to movement along the ROC on the right. Better binary classifiers have ROC curves that reach up to the upper left corner because these are the points that correspond to very high detection probabilities at a very low false alarm probability. A test that is no better than guessing just be a diagonal line on the ROC chart. This would correspond to a 100% overlap between the two density functions. You can try this for yourself by changing the values of the respective meanings of the two density functions to see what happens when they overlap more (or less)." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The AUC is independent of the particular threshold value because the ROC-curve is drawn by sweeping over this value. This means that the AUC is indirectly *integrated* over the threshold values. However, the computation of the AUC is based *explicitly* on the $P_{FA}$ as in the following,\n", "\n", "$$ AUC = \\int P_D(P_{FA})dP_{FA} $$\n", "\n", "which doesn't give us a lot of room for interpretation.\n", "We can start to break this up by expanding\n", "\n", "$$ P_D(c) = 1-F_1(c) $$\n", "\n", "where $F_1$ is the cumulative density function for $C_1$, and analogously, for $C_0$, we have the following\n", "\n", "$$ P_{FA}(c) = 1-F_0(c) $$\n", "\n", "Let's start by fixing a particular $c^*$. This corresponds to a particular $P_{FA}(c^*)$. In words, this corresponds to the probability of member of the $C_0$ class such that $x_0>c^*$, or, equivalently $\\mathbb{P}(x_0>c^*|C_0)$. Note that I have introduced subscript here to emphasize that $x_0\\in C_0$. By the same reasoning, we have $P_D(c^*) =\\mathbb{P}(x_1>c^*|C_1) $.\n", "\n", "Now, in terms of the AUC integral, we have to reference $P_D$ through the $P_{FA}$. The trick is choose $c^*$ distributed as $F_0$ as in $c^*\\sim F_0$.\n", "\n", "\n", "$$P_D ( c^*) = \\mathbb{P}(x_1 >c^*|C_1) $$\n", "\n", "Weirdly enough, this makes $P_D$ a random variable in its own right, with corresponding expectation as \n", "\n", "$$ \\mathbb{E}(P_D) =\\int P_D dP_{FA} = AUC $$\n", "\n", "Now, we finally have an interpretation. The AUC is the expected probability that an element $ x_1 \\in C_1 $ would be more probable to be assigned to class $C_1$ than an element drawn from $C_0$ to be assigned to $ C_1 $. This is another way of saying that $1-F_1(t) > 1-F_0(t)$ for all $ t $ (i.e. *stochastically larger*)." ] }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": [ "Wilcoxon\u2013Mann\u2013Whitney test" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The Wilcoxon\u2013Mann\u2013Whitney test (AKA Mann\u2013Whitney U-test) is a nonparametric method to test whether or not samples derive from two separate distributions. The basic idea is that if there is no difference between the two categories, then combining them into one big set and then computing the statistic (or any statistic, really) as a permutation of the larger set should be no different. In other words, if there is no difference, then combining the data and pretending that the actual observed data is just one permutation of the mixture should be indistinguishable statistically.\n", "\n", "Supposed we need to compare to populations using the median, mean, or some other location estimator. In terms of the cumulative distribution functions for the two populations, for $ H_0 $ we have the following:\n", "\n", "$$ H_0: F_X(t) = F_Y(t) $$\n", "\n", "Namely, the data are drawn from the same underlying distribution. The alternative hypothesis is that $ F_X(t) \\lt F_Y(t) $ for all $ t $. For example, this could happen if one of the distributions is shifted with respect to the other. We have two labeled independent samples $ \\lbrace X_i \\rbrace_{i=1}^n$ and $ \\lbrace Y_i \\rbrace_{i=1}^m$. Note that the samples sizes can be different (i.e. $ m\\neq n $).\n", "\n", "The test works by collecting all the samples into one big set and then ranking the samples within the big set. The test statistic $ U $ is the sum of the ranks (taken within the big set) of the $X$-ranks. The idea is that when $U$ is small, the $X$-variables have lower ranks (i.e. are generally smaller than the $Y$-variables). This is evidence that the $ X $-distribution is shifted to the left of the $ Y $-distribution (i.e. $ F_X(t) < F_Y(t) $, stochastically).\n", "\n", "The following code shows an example of this for the two distributions considered above." ] }, { "cell_type": "code", "collapsed": false, "input": [ "print 'p-value ',stats.wilcoxon(f1.rvs(30),f0.rvs(30))[1]" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "p-value 1.79884806918e-05\n" ] } ], "prompt_number": 70 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Because the computed p-value is so small, we can reject the null hypothesis that the distributions $F_X(t)$ and $ F_Y(t) $ are stochastically equal. This is good because we constructed them as such!" ] }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": [ "Connection to AUC" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "Writing the U-statistic this way,\n", "\n", "$$ \\hat{\\theta}_{XY} = \\frac{1}{m n} \\sum_{i=1}^m \\sum_{j=1}^n \\mathbb{I}(Y_j>X_i) $$\n", "\n", "where $ \\mathbb{I} $ is the indicator function, shows that the statistic (for the discrete case) is estimating the probability that $Y$ is stochastically larger than $ X $. Thus, This correspondence means that the value of this (in the large sample limit) is equal to AUC." ] }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": [ "Summary" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In this article, we developed the area under the receiver operating characteristic curve (ROC) and connected it to the Wilcoxon\u2013Mann\u2013Whitney U-statistic. This area (i.e. AUC) is used To quantify the performance of a binary classifier using a single number. The problem is that it does not distinguish between regions of performance along the ROC. Thus, two different classifiers could have the same AUC-value and provide different relative performance for certain regions of ROC graph. This difference may be important to binary classifiers that typically operate in a small region of the ROC-curve." ] }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": [ "References" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "* Boos, Dennis D., and L. A. Stefanski. Essential Statistical Inference. Springer, 2013.\n", "\n", "* Cortes, Corinna, and Mehryar Mohri. \"AUC optimization vs. error rate minimization.\" Advances in neural information processing systems 16.16 (2004): 313-320.\n", "\n", "* Mann, Henry B., and Donald R. Whitney. \"On a test of whether one of two random variables is stochastically larger than the other.\" The annals of mathematical statistics (1947): 50-60.\n", "\n", "* Mozer, Michael C. \"Optimizing classifier performance via an approximation to the Wilcoxon-Mann-Whitney statistic.\" (2003)." ] } ], "metadata": {} } ] }