{ "cells": [ { "cell_type": "markdown", "id": "e4dd8d87", "metadata": { "toc": true }, "source": [ "

Table of Contents

\n", "
" ] }, { "cell_type": "markdown", "id": "19989cc4", "metadata": {}, "source": [ "# CS4423 Assignment 2: Part 2\n", "\n", "This is a template for your solution to the `networkx` questions on Assignment 2 (Part 2). \n" ] }, { "cell_type": "markdown", "id": "4fc2a5c6", "metadata": {}, "source": [ "### Instructions and Collaboration Policy\n", "\n", "This is a homework assignment. You are welcome to collaborate with\n", "class-mates if you wish. Please note:\n", "* You may collaborate with at most two other people;\n", "* Each of you must submit your own copy of your work;\n", "* In Cell `[1]`, choose your own node colour in `opts`. It should not be the same as given here (`#ABCDEF`), or the same as your collaborators. For more, see https://matplotlib.org/stable/users/explain/colors/colors.html\n", "* If the question asks you to construct an example, then that example should be unique to you (and your collaborators). If copied from anybody else, all involved will score zero.\n", "* The file(s) you submit must contain a statement on the collaboration: who you collaborated with, and on what part of the assignment.\n", "* *The use of any AI tools, such as ChatGPT or DeepSeek is prohibited, and will be subject to disciplinary procedures.* \n", "* Upload your file, in either **PDF or HTML** formats, to https://universityofgalway.instructure.com/courses/31889/assignments To convert your notebook to `pdf` the easiest method maybe to first export as 'html', then open that in a browser, and then print to pdf.\n", "* Your file must include your name and ID number." ] }, { "cell_type": "markdown", "id": "bc5829ef", "metadata": {}, "source": [ "## Preliminaries" ] }, { "cell_type": "markdown", "id": "eb8aa930", "metadata": {}, "source": [ "### Task 1.1: Give you name, ID, and list of collaborators\n", "\n", "**Your name goes here:** Andrew Hayes\n", "\n", "**Your ID number goes here:** 21321503\n", "\n", "*Place your collaboration statement here:*" ] }, { "cell_type": "markdown", "id": "50688c85", "metadata": {}, "source": [ "### Task 1.2: Load any Python modules, and choose your own colour for nodes" ] }, { "cell_type": "code", "execution_count": 1, "id": "b96b6a50", "metadata": {}, "outputs": [], "source": [ "import networkx as nx\n", "### Change the next line so nodes appear in your favourite colour.\n", "opts = { \"with_labels\": True, \"node_color\": '#654321' } # show labels; IMPORTANT: Choose your own colour here" ] }, { "cell_type": "markdown", "id": "145b812c", "metadata": {}, "source": [ "Other ones that Niall used when preparing solutions. Add any you need:" ] }, { "cell_type": "code", "execution_count": 2, "id": "d548d182", "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", "import matplotlib.pyplot as plt\n", "import random\n", "import pandas as pd\n", "import math\n", "import statistics" ] }, { "cell_type": "markdown", "id": "488bfec3", "metadata": {}, "source": [ "## Centrality Measures\n", "\n", "Before you do this set of tasks, it may be helpful to review the example at the end of [Week 7 Part 2](https://www.niallmadden.ie/2425-CS4423/W07/CS4423-W07-Part-2.html)" ] }, { "cell_type": "markdown", "id": "6d7af8b8", "metadata": {}, "source": [ "**Adjacency Lists**.\\\n", "One way of representing a graph is an as adjacency list. It has one row per node. That row starts with the node label, followed by a colon, followed by a list of its neighbours. For an undirected graph, one does not list an edge twice. \n", "\n", "Consider the following list, for a graph, $G_1$, on the nodes $\\{1, 2, 3, \\dots, 10\\}$:\n", "\n", "1: 2 3 4 6 7\n", "2: 3\n", "3: 4\n", "4: 5 8\n", "5: 6\n", "6: 7\n", "7: \n", "8: 9 10\n", "9:\n", "10:\n", "\n", "\n", "So, in the adjacency list for $G_1$, no neighbours of Node 7 are listed, because the associated edges are already accounted for in the neighbour lists on Nodes 1 and 7.\n" ] }, { "cell_type": "markdown", "id": "5920d2d6", "metadata": {}, "source": [ "### TASK 2.1: Define $G_1$ in `networkx` and draw it.\n", "\n", "Let $G_1$ be the network prescribed by the adjacency list above. Define it as a `networkx` network, and draw it." ] }, { "cell_type": "code", "execution_count": 3, "id": "0cddf432", "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAApQAAAHzCAYAAACe1o1DAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjAsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvlHJYcgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAYpRJREFUeJzt3XlcVOXiBvBn5jDsyjrKIuCuqOCC4QKKZu6appZb7mW5laX1yyxDy8zuzbrlUmqpmYa5B7jliiBpggsqKpYhseOGIMswM78/FBLZmRnOLM/38+HzuTJnznngJjy+7znvK1Gr1WoQEREREdWSVOwARERERGTYWCiJiIiISCMslERERESkERZKIiIiItIICyURERERaYSFkoiIiIg0wkJJRERERBphoSQiIiIijbBQEhEREZFGWCiJiIiISCMslERERESkERZKIiIiItIICyURERERaYSFkoiIiIg0wkJJRERERBphoSQiIiIijbBQEhEREZFGWCiJiIiISCMslERERESkERZKIiIiItIICyURERERaYSFkoiIiIg0wkJJRERERBphoSQiIiIijbBQEhEREZFGWCiJiIiISCMslERERESkERZKIiIiItIICyURERERaYSFkoiIiIg0wkJJRERERBphoSQiIiIijbBQEhEREZFGWCiJiIiISCMslERERESkERZKIiIiItIICyURERERacRM7ABExiw/LxeZyYlQKAohk5lD7u4FSysbsWMRERFpFQslkZalJCYgInQr4s4cQ2ZKEgD1E69KIHfzgI9/b/QcOg5uXi3EiklERKQ1ErVara76MCKqSlZqEjZ/tRDxMZGQSgWoVMoKjy1+3dsvEBPmLoWzq0cdJiUiItIuFkoiLTi5bxtCVgZDqSyCSllxkXyaVBAgCGYYMzsYPQaN1mFCIiIi3WGhJNJQ+JZV2LvhC43PM2zKPAweP0sLiYiIiOoWn/Im0sDJfdu0UiYBYO+GLxC5f5tWzkVERFSXOEJJVEtZqUn4aFo/KAoLyryWcb8AZ/+6i4z7+VADkNezQOdmDnCxt6z0nDJzCyz+/hDvqSQiIoPCEUqiWtr81UIolUVlPp+ZXYCw2FQoVSr0aitHrzZyKFVq7DuXhvT7+ZWeU6kswuavFuoqMhERkU6wUBLVQkpiAuJjIst9AOfsn3dhbibFwA4uaCy3QZMGNhjY0QUyQYLTCXcqPa9KqUR8TCRSE2/oKjoREZHWsVAS1UJE6FZIpUK5r6Xfz4ervSXMhH//epmbSeFib4n0+wV4WFB2VPNJUkHAidAtWs1LRESkSyyURLUQd+ZYhetMKlVqCFJJmc8Xf+5OTmGl51YplYg7c1zjjERERHWFhZKohvIf5jzeAad8DjbmyMguwJPPu6lUamRkP3p4J1+hqvIamSm3kJ+Xq3lYIiKiOsBCSVRDmSm3UHo7xdLaetTH/YcKRF27jdz8IuTkFyHyWhZy8h9NdUvKDl6WQ43M5ESt5CUiItI17uVNVEMKReVT1q3c6iGvUInzf99DfPIDAEADOwv4etrhQuJ92FhU769dVdchIiLSFyyURDUkk5lXeUyHxvbw8bTD/YcKyAQJ6lnJcDI+C2aCBM71qn5/da9DRESkD1goiWpI7u4FQILKpr2BRw/hONo+KoU5+UX4KyMXrd3qlXr6u2KSx9chIiLSfyyURDVkaWUDuZvH43spy7qTU4ibGbmQ17eAIJXg9oNCXEi8h/pWZujc1KFa15C7ecLSykabsYmIiHSGhZKoFnz8e+P4rz+Vu3SQVCpByt18XE7KhkKpgq2lGbzd66N9YzvIqjE6KRUE+Pj30kFqIiIi3eBe3kS1kJKYgOBp/XV2/sXfH4KrV3OdnZ+IiEibuGwQUS24ebWAt18gpEL5u+XUllQQ4O0XyDJJREQGhYWSqJYmzF0KQdDuXSOCYIYJc5dq9ZxERES6xkJJVEvOrh4YMztYq+ccOycYzq4eWj0nERGRrrFQEmmgx6DRGDZlnlbONXzqPAQOHK2VcxEREdUlPpRDpAUn921DyMpgKJVFUCnLPvldEakgQBDMMHZOMMskEREZLBZKIi3JSk3C5q8WIj4mElJBqLRYFr/u7ReICXOXcpqbiIgMGgslkZalJCYgInQr4s4cf7z4+ZN/xSSQu3nCx78XgoaO59PcRERkFFgoiXQoPy8XzwZ2Rfv2vnj//YWQu3txBxwiIjI63CmHSIcsrWygNLNGkWANj+ZtxI5DRESkE3zKm0jHzM3NUVBQIHYMIiIinWGhJNIxCwsLFBYWih2DiIhIZ1goiXSMI5RERGTsWCiJdIwjlEREZOxYKIl0jCOURERk7FgoiXTMwsKChZKIiIwaCyWRjnHKm4iIjB0LJZGOccqbiIiMHQslkY5xhJKIiIwdCyWRjnGEkoiIjB0LJZGOcYSSiIiMHQslkY5xhJKIiIwdCyWRjnGEkoiIjB0LJZGOcR1KIiIydiyURDpWPOWtVqvFjkJERKQTLJREOmZhYQG1Wg2lUil2FCIiIp1goSTSMXNzcwDgtDcRERktFkoiHbOwsAAAPphDRERGi4WSSMc4QklERMaOhZJIxzhCSURExo6FkkjHigslRyiJiMhYsVAS6RinvImIyNixUBLpGKe8iYjI2LFQEukYRyiJiMjYsVAS6RhHKImIyNixUBLpGEcoiYjI2LFQEukYRyiJiMjYsVAS6RhHKImIyNixUBLpGEcoiYjI2LFQEukYFzYnIiJjZyZ2ALHl5+UiMzkRCkUhZDJzyN29YGllI3YsMiKCIEAikbBQEhGR0TLJQpmSmICI0K2IO3MMmSlJANRPvCqB3M0DPv690XPoOLh5tRArJhkJiUQCCwsLTnkTEZHRMqlCmZWahM1fLUR8TCSkUgEqlbKco9TITLmF47/+hKN7NsHbLxAT5i6Fs6tHnecl42Fubs4RSiIiMlomcw/lyX3b8NG0frh2PhoAKiiT/yp+/dr5aHw0rR9O7tum84xkvDhCSURExswkRijDt6zC3g1f1Oq9KqUSKqUSm1csQPbdLAweP0vL6cgUcISSiIiMmdGPUJ7ct63WZfJpezd8gcj9HKmkmuMIJRERGTOjLpRZqUkIWRms1XP+/E0wslKTtHpOMn4WFhYcoSQiIqNl1FPem79aCKWyCIVFKpy7eQ+3cwpw+0Eh8hUqdGpiD7+mDmXek5VdgNM37iAjuwBSiQRuDpbo0sIR9a1kAAClsgibv1qIt5b/WNdfDhkwc3NzjlASEZHRMtoRypTEBMTHREKlVKJAocTVlAdQqgAvuXWF77mXW4iw2FSo1Gr0adcAPb2dcf+hAqExqcgrfPSQjkqpRHxMJFITb9TVl0JGgCOURERkzIy2UEaEboVUKgAAbC3NMLGnJ4b6ucK/mWOF7zn71z0IUgn6t3eBp7M1mjSwQf/2DZFfqMTFW/dLjpMKAk6EbtH510DGgw/lEBGRMTPaQhl35ljJ0j8SiQQSiaTS41UqNW5lPUTjBjYwN/v321LPSgZXByv8nZH777FKJeLOHNdJbjJOfCiHiIiMmVEWyvyHOY93wKm+7DwFlCo1nGzNy7zmZGuO7LwiFClVJZ/LTLmF/LzcMscSlYcjlEREZMyMslBmptxC6e0Uq1ageFQWLczKfkssZI8+V1ikeuKzamQmJ9Y2IpkYjlASEZExM8pCqVBo8Iu78plx7V2HTAofyiEiImNmlIVSJis7bV2V4lHI4pHKJxV/zvyp0cvaXIdME5cNIiIiY2aUhVLu7oUaDTUCqG8lgyCV4E5O2V/6d3IKUd/KDGbCk98uyePrEFWNI5RERGTMjLJQWlrZQO7mUaP3SKUSeDlb4++M3FL3SubkFyHlbh6aNLApdXyRRIbvf9iI69evQ62u2f2aZHo4QklERMbMKAslAPj49y5ZhxIAkrIe4q/0XCRmPQQA3M1V4K/0XPyVnlvy9LZfU3sUqdQ4eCEdSVkPcTMjFwfOp8HSXICPp92/J5dIkKO0wFtvvYVWrVqhSZMmmD59OrZv3447d+7U6ddJhoEjlEREZMyMduvFnkPH4eieTSV/jrx2Gzn5RSV/vpmRi5uP15Yc070R6llJYW9jjsGdXHHmxh0cjsuARAK4OVqha3NHWJn/W06hVuN/G3biBycXnDhxAocOHcJvv/2GdevWQSKR4JlnnkG/fv3Qt29fdO3aFebmvNfS1HHZICIiMmYStRHP1375fxNx7Xw0VEql1s4pFQS06tCt3L28k5KS8Ntvv+HQoUM4fPgwbt++DVtbW/Tu3Rv9+vVDv3790KJFiyoXWSfj89FHH+GHH35AUlLN1kclIiIyBEZdKLNSk/DRtH5QFGpvZEhmboHF3x+Cs2vl92iqVCqcO3cOhw4dwqFDhxAVFQWFQgFPT8+SctmnTx84Ola8FSQZj08//RRfffUVMjIyxI5CRESkdUZ7DyUAOLt6YMzsYK2ec+yc4CrLJABIpVL4+flhwYIFOHbsGO7cuYPw8HC88MILOHXqFF566SU4OzvD398fH3zwASIiIvjQhhHjQzlERGTMjHqEslj4llXYu+ELjc8zfOo8DBo3SwuJgH/++afU9HhWVhZsbGxKpsf79u2LVq1acXrcSHzzzTd49913kZeXJ3YUIiIirTOJQgkAJ/dtQ8jKYCiVRTW6p1IqCBAEM4ydE4zAgaN1kk2lUuH8+fOlpscLCwvh4eFRanrcyclJJ9cn3fvuu+8wc+ZMKLV4Py8REZG+MJlCCTy6p3LzVwsRHxMJqSBUWiyLX/f2C8SEuUurNc2tLbm5uYiIiCgpmFeuXIFEIoGfn19JwezWrRufHjcgGzduxJQpU6BQKGBmZrSLKxARkYkyqUJZLCUxARGhWxF35jgyU24BePJbIIHczRM+/r0QNHQ8XL2aixWzRHJycqnp8czMTNjY2KBXr14lBZPT4/pt69atGD9+PHJzc2FtbS12HCIiIq0yyUL5pPy8XGQmJ0KhKIRMZg65uxcsrWyqfqNIVCoVLly4UDJ6GRkZicLCQjRq1KjU9Lizs7PYUekJO3fuxKhRo3Dnzh04ODiIHYeIiEirTL5QGrqHDx+Wmh6/fPkyJBIJOnXqVGp63MLCQuyoJi0sLAxDhw5FamoqXFxcxI5DRESkVSyURiY5ORmHDx8u2b0nMzMT1tbWpabHW7duzenxOnbo0CH0798fiYmJ8PT0FDsOERGRVrFQGjGVSoWLFy+WjF6ePHmyZHq8b9++6NevH5577jlOj9eBEydOoFevXrh+/TpatGghdhwiIiKtYqE0IQ8fPsTJkydLCualS5cgkUjQsWPHktHL7t27c3pcB6Kjo9G9e3dcunQJbdu2FTsOERGRVrFQmrCUlJRS0+MZGRmwtrZGUFBQScH09vbm9LgWxMbGws/PDzExMejUqZPYcYiIiLSKhZIA/Ds9Xrw80cmTJ1FQUAA3N7eScvncc89BLpeLHdUgXbp0CT4+PoiOjkbXrl3FjkNERKRVLJRUrocPHyIyMrJkejwuLg4A0KlTp5L7LwMCAjg9Xk0JCQlo2bIljh8/jqCgILHjEBERaRULJVVLampqqenx9PR0WFlZlZoeb9OmDafHK5CYmIjGjRvj0KFD6Nu3r9hxiIiItIqFkmpMrVYjLi6uZPQyIiKiZHr8yafHGzRoIHZUvZGWlgZXV1eEhoZiyJAhYschIiLSKhZK0lheXl6p6fGLFy8CADp27FhqetzS0lLkpOK5e/cuHB0dsWPHDowcOVLsOERERFrFQklaVzw9XvyAz5PT48UFs23btiY1PZ6bmwtbW1ts3boVY8eOFTsOERGRVrFQkk4VT48Xl8uIiAjk5+fD1dW11PR4w4YNxY6qU0VFRZDJZNiwYQMmT54sdhwiIiKtYqGkOlU8PV5cMC9cuAAA6NChQ0nBDAwMNLrpcbVaDUEQ8O2332L69OlixyEiItIqFkoSVXp6esnT44cOHUJaWhosLS1LTY+3a9fOKKbHrays8Pnnn2POnDliRyEiItIqFkrSG2q1GpcuXSpZmujEiROlpseLPwx1etzOzg6LFi3CvHnzxI5CRESkVSyUpLfy8/NLTY+fP38eANC+fXv069cPffv2RWBgIKysrMQNWk0NGjTA3Llz8f7774sdhYiISKtYKMlgFE+PFxfM1NRUWFpaomfPniXT4z4+Pno5PZ6fl4tOPq0xfNjzmDFjFuTuXrC0shE7FhERkVawUJJBUqvVuHz5cqnp8by8PLi4uJSaHndxcREtY0piAiJCtyLuzDFkpiQBePKvmgRyNw/4+PdGz6Hj4ObVQqyYREREGmOhJKOQn5+PqKiokoJ57tw5AICvr2/J9HiPHj3qZHo8KzUJm79aiPiYSEilAlQqZYXHFr/u7ReICXOXwtnVQ+f5iIiItI2FkoxSRkZGqb3HU1JSYGFhgZ49e5YUTF9fX61Pj5/ctw0hK4OhVBZBpay4SD5NKggQBDOMmR2MHoNGazUTERGRrrFQktFTq9W4cuVKSbk8fvw48vLy0LBhw1LT466urhpdJ3zLKuzd8IXGeYdNmYfB42dpfB4iIqK6wkJJJqegoKDU9HhsbCwAwMfHp9T0uLW1dbXPeXLfNmxesUBrGSfOW4bAgRypJCIiw8BCSSYvIyMDR44cKSmYycnJsLCwQI8ePdCvX7+Sp8elUmm5789KTcJH0/pBUVhQ/usPChD71z1kZhegoEgFW0szNG9oA18vO5gJ5Z9TZm6Bxd8f4j2VRERkEFgoiZ6gVqsRHx9fsnPPiRMn8PDhQzRo0KBkaaKnp8e//L+JuHY+utx7Ju/mFGL3Hymws5ahQ2M7WMoEpN3Lx7m/78HTyRr92pe/SLtUENCqQze8tfxHnX2tRERE2sJCSVSJgoICnDp1qmT0MiYmBgDQrl079OvXD107+eC3DUsqfP8ff97B+b/vY3S3RqhvLSv5/Mn4LFxNeYCJPT1hIRMqfP/i7w/B1au59r4gIiIiHSh/vo2IAAAWFhbo3bs3li1bhrNnzyIjIwM///wznnnmGfzyyy/4csk8qCr5N5n08VPk5mal/6qZy6SQAJBKK37KXCoIOBG6RStfBxERkS5xhJKoltRqNd4dG4j7WakVHvMgT4FdZ1Lg7mgJ/+aOsJQJSL2Xj+OXM9HCxRbdWzlVeg25mxeW/nhM29GJiIi0ykzsAESGqiAvF/ez0io9pp6VDMM6u+K3ixnYduqfks+3bVQf3Vo6VnmNzJRbyM/L5TaNRESk11goiWopM+UWSm+nWNaDPAUOXkiHlbmA53wawFImRUZ2Ac7dvAeFUoWgNvIqrqJGZnIiPJq30VpuIiIibWOhJKolhaKwymPO3LgLRZEKI7q4Q/Z4iSBXBytYygRExGehpastXB0q3w6yOtchIiISEx/KIaolmcy8ymNu5xTC3sa8pEwWk9e3AADcyVFo5TpERERiYqEkqiW5uxeAyvcCt7YQcDe3EIoiVanPZ9zPBwDYWFa8ZNAjksfXISIi0l8slES1ZGllA7lb5TvZ+HjUR75ChX3n0vBneg6S7+Th3N/38HvCHdjbyODhVPn2jnI3Tz6QQ0REeo+FkkgDPv69IZVWPMroJbfB4I4ukJlJEX39Dg5eSEdCag5au9fDUD9XCFWsQ+nj30sHqYmIiLSL61ASaSAlMQHB0/rr7PzcKYeIiAwBRyiJNODm1QLefoGQClXdC1kzUkGAt18gyyQRERkEFkoiDU2YuxSCoL0VuNRqQCoVMGHuUq2dk4iISJdYKIk05OzqgTGzg7V2PokEuPBPPm5nP9TaOYmIiHSJhZJIC3oMGo1hU+Zp5Vy9R76CeyobBAQE4PTp01o5JxERkS6xUBJpyeDxszDh7WWQmVvU+J5KqSBAZm6BifOWYeyM93Hy5Em0bt0azz77LPbt26ejxERERNrBp7yJtCwrNQmbv1qI+JhISAUBKqWywmOLX/f2C8SEuUvh7PrvupZ5eXkYM2YMwsPDsX79ekyePLkO0hMREdUcCyWRjqQkJiAidCvizhxHZsotAE/+VZNA7uYJH/9eCBo6vsKnuYuKijBz5kysW7cOy5Ytw//93/9BIql8dx4iIqK6xkJJVAfy83KRmZwIhaIQMpk55O5e1d4BR61WIzg4GEuWLMEbb7yBL7/8ElIp71YhIiL9wUJJZCC+/fZbzJw5Ey+++CJ+/PFHWFhYiB2JiIgIAAslkUHZtWsXxo0bh4CAAOzevRv169cXOxIRERELJZGhiYiIwPPPP48mTZpg//79cHFxETsSERGZOBZKIgMUFxeHAQMGwMLCAgcPHkSLFi3EjkRERCaMd/YTGSAfHx+cOnUKFhYW6N69O/744w+xIxERkQljoSQyUF5eXoiMjETz5s3Ru3dvHDx4UOxIRERkolgoiQyYk5MTjhw5gt69e2PIkCH46aefxI5EREQmiIWSyMBZW1tj9+7dmDhxIiZMmID//ve/YkciIiITYyZ2ACLSnJmZGdavXw9XV1e88847SE1NxX/+8x8ugE5ERHWChZLISEgkEnzyySdwcXHBG2+8gbS0NGzYsAHm5uZiRyMiIiPHZYOIjND27dvx8ssvIygoCDt37kS9evXEjkREREaMhZLISB07dgzDhw9HixYtsG/fPjRo0EDsSEREZKRYKImM2IULFzBgwADY2Njg4MGDaNasmdiRiIjICPGOfSIj1r59e0RHR0MQBHTv3h2xsbFiRyIiIiPEQklk5Bo3bozIyEg0btwYQUFBOHz4sNiRiIjIyLBQEpkAuVyOo0ePokePHhg0aBBCQkLEjkREREaEhZLIRNjY2GDv3r0YN24cxo4di6+++krsSEREZCS4DiWRCZHJZNiwYQNcXFzw1ltvITU1FZ999hkkEonY0YiIyICxUBKZGIlEgs8++6ykVKalpWH9+vWQyWRiRyMiIgPFZYOITFhISAgmTpyIPn36YPv27bC1tRU7EhERGSAWSiITd/jwYbzwwgvw9vZGeHg45HK52JGIiMjAsFASEWJjYzFw4EDY2dnh4MGDaNKkidiRiIjIgPApbyJCp06dcOrUKahUKnTv3h0XLlwQOxIRERkQFkoiAgA0a9YMp06dgru7O3r27Iljx46JHYmIiAwECyURlWjQoAGOHTuGLl26YMCAAdi+fbvYkYiIyACwUBJRKfXq1UNYWBhGjRqF0aNHY+XKlWJHIiIiPcd1KImoDHNzc2zevBkuLi6YM2cOUlNT8cknn3ABdCIiKhcLJRGVSyqV4osvvoCbmxvmz5+P1NRUrF27FmZm/LFBRESl8TcDEVVq3rx5aNiwIaZMmYKMjAz88ssvsLa2FjsWERHpEa5DSUTVcvDgQYwcORI+Pj4ICwuDk5OT2JGIiEhPsFASUbX98ccfGDx4MBwdHXHw4EF4eXmJHYmIiPQAn/Imomp75plnEBUVhcLCQnTv3h1xcXFiRyIiIj3AQklENdKiRQucOnUKDRo0QI8ePRARESF2JCIiEhkLJRHVmIuLC06cOAE/Pz/069cPu3btEjsSERGJiIWSiGqlfv362LdvH4YPH45Ro0ZhzZo1YkciIiKRcNkgIqo1CwsLbN26FS4uLpg5cyZSU1OxePFiLoBORGRiWCiJSCNSqRRffvklXF1d8d577yEtLQ2rV6/mAuhERCaEP/GJSGMSiQT/93//BxcXF0ybNg3p6ekICQmBlZWV2NGIiKgOcB1KItKq/fv3Y9SoUejQoQNCQ0Ph6OgodiQiItIxFkoi0rrTp09j8ODBaNiwIQ4cOAAPDw+xIxERkQ7xKW8i0rouXbogKioKubm56N69Oy5fvix2JCIi0iEWSiLSiVatWuHUqVNwdHREYGAgoqKixI5EREQ6wkJJRDrj5uaGiIgIdOjQAc899xz27t0rdiQiItIBFkoi0ik7Ozvs378fQ4YMwYgRI7Bu3TqxIxERkZaxUBKRzllaWiIkJAQzZszA9OnTsWTJEvB5QCIi48F1KImoTgiCgG+++QZubm5YuHAhUlNTsXLlSgiCIHY0IiLSEAslEdUZiUSC999/Hy4uLpg+fTrS09OxdetWWFpaih2NiIg0wHUoiUgUYWFheOmll9C5c2f8+uuvsLe3FzsSERHVEgslEYkmOjoaQ4YMgZubGw4cOAB3d3exIxERUS2wUBKRqOLj49G/f38AwMGDB+Ht7S1yIiIiqik+5U1EovL29kZ0dDTs7OwQGBiI6OhosSMREVENsVASkejc3d0RERGBtm3bok+fPggLCxM7EhER1QALJRHpBQcHBxw8eBADBgzA8OHD8cMPP4gdiYiIqomFkoj0hpWVFbZv345XXnkF06ZNw9KlS7kAOhGRAeA6lESkVwRBwJo1a+Dm5oYPPvgAqamp+N///scF0ImI9BgLJRHpHYlEgkWLFsHFxQUzZsxAeno6Nm/ezAXQiYj0FJcNIiK9tmfPHowdOxZdu3bFnj17YGdnJ3YkIiJ6CgslEem9yMhIDB06FJ6enti/fz/c3NzEjkRERE9goSQig3D58mUMGDAAgiDg4MGDaNWqldiRiIjoMT7lTUQGoW3btjh16hSsra0REBCA06dPix2JiIgeY6EkIoPh4eGByMhItGrVCs8++yz2798vdiQiIgILJREZGEdHRxw+fBjPPfcchg4dik2bNokdiYjI5LFQEpHBsbKyws6dOzFlyhRMnjwZy5cv5wLoREQi4jqURGSQzMzMsHbtWri6uuK9995DamoqVqxYAamU/04mIqprLJREZLAkEgmWLFkCV1dXzJo1C+np6di4cSMsLCzEjkZEZFK4bBARGYVdu3Zh3LhxCAwMxK5du1C/fn2xIxERmQwWSiIyGidOnMCwYcPQtGlT7N+/Hw0bNhQ7EhGRSWChJCKjEhcXhwEDBsDS0hIHDx5E8+bNxY5ERGT0ePc6ERkVHx8fnDp1CjKZDN27d8fZs2fFjkREZPRYKInI6Hh5eSEqKgrNmjVDr169cOjQIbEjEREZNRZKIjJKTk5OOHz4MHr16oXBgwdjy5YtYkciIjJaLJREZLRsbGywe/duvPzyy3j55ZexYsUKsSMRERklrkNJREZNJpPhhx9+gKurK+bNm4eUlBR8/vnnXACdiEiLWCiJyOhJJBJ8+umncHV1xZtvvom0tDT88MMPMDc3FzsaEZFR4LJBRGRSfvnlF0yYMAG9evXCzp07YWtrK3YkIiKDx0JJRCbn6NGjGD58OFq1aoXw8HA0aNBA7EhERAaNhZKITNL58+cxcOBA2Nra4uDBg2jatKnYkYiIDBbvSicik9ShQwecOnUKEokE3bt3x7lz58SORERksFgoichkNWnSBFFRUfD09ERQUBCOHDkidiQiIoPEQklEJk0ul+Po0aPo3r07Bg4ciJCQELEjEREZHBZKIjJ5tra2CA0NxZgxYzB27Fj873//EzsSEZFB4TqURER4tAD6xo0b4eLigrlz5yI1NRXLli2DRCIROxoRkd5joSQiekwqleLzzz+Hq6sr3n77baSmpmL9+vWQyWRiRyMi0msslERET3nrrbfg4uKCSZMmITMzE9u3b4eNjY3YsYiI9BbXoSQiqsBvv/2GESNGoE2bNggPD4ezs7PYkYiI9BILJRFRJWJiYjBo0CDY29vj4MGDaNy4sdiRiIj0Dp/yJiKqhJ+fH06dOgWlUolu3brhwoULYkciItI7LJRERFVo1qwZoqKi4Obmhp49e+L48eNiRyIi0isslERE1dCwYUMcP34c/v7+6N+/P3bs2CF2JCIivcFCSURUTfXq1UN4eDhGjhyJl156CatWrRI7EhGRXuCyQURENWBubo6ffvoJLi4umD17NlJTU/Hxxx9zAXQiMmkslERENSSVSrFixQq4ubnhnXfeQWpqKr777juYmfFHKhm//LxcZCYnQqEohExmDrm7FyytuE6rqeNPPyKiWpo/fz4aNmyIqVOnIiMjA9u2bYO1tbXYsYi0LiUxARGhWxF35hgyU5IAPLnioARyNw/4+PdGz6Hj4ObVQqyYJCKuQ0lEpKEDBw5g1KhR8PX1RWhoKJycnKr1Po70kL7LSk3C5q8WIj4mElKpAJVKWeGxxa97+wViwtylcHb1qMOkJDYWSiIiLfjjjz8waNAgODs74+DBg/D09Cz3OI70kKE4uW8bQlYGQ6ksgkpZcZF8mlQQIAhmGDM7GD0GjdZhQtInLJRERFqSkJCA/v37o6CgAAcOHICPj0/JaxzpIUMSvmUV9m74QuPzDJsyD4PHz9JCItJ3LJRERFqUlpaGgQMH4ubNm/j111/Rs2dPjvSQQTm5bxs2r1igtfNNnLcMgQP536+xY6EkItKy7OxsvPDCC4iKisLH86Yh4fR+jc/JkR6qC1mpSfhoWj8oCgvKvJZyNw/hsWnlvu/5zq5oaGdZ7msycwss/v4QR9qNHAslEZEOFBQUYNpLA2Gd+7fWzsmRHtK1L/9vIq6djy53JL24UD7TzAGuDqXLo6ONOWRm5e+VIhUEtOrQDW8t/1EnmUk/cKccIiIdeHAnA3aKVK2e8+dvgpGVmqTVcxIVS0lMQHxMZJW3ZdS3kqGhnWWpj4rKJAColErEx0QiNfGGtiOTHmGhJCLSgc1fLYRSWVTt468mP8C6Izex4fjfFR6jVBZh81cLtZCOqKyI0K2QSgWdnFsqCDgRukUn5yb9wEJJRKRl1R3pKZabX4TTN+7A2qLyX+Yc6SFdijtzrNLVB4qdupaF9UdvYuPxv7HvXBrS7uVX+R6VUom4M8e1kJL0FQslEZGW1XSkJ/JaFlzsLeHuaFXlsRzpIV3If5jzeF3UipmbSdHOoz4CvZ0xuKMrurV0Qm5+EcJiU5F0+2GV18hMuYX8vFxtRSY9w60XiYi0rLojPQCQkJqD1Lv5GNW1Ec7+dbfK44tHesbgI01jkhaoVCoUFRVV+qFQKKo8RszjioqKYKbKRzv7yp/Rda5nAed6FiV/dnWwRGO5NXaeTsaZG3fh4VTVtqNqZCYnwqN5Gy1850nfsFASEWlRdUZ6iuUVKhGdcBv+zR1ha1n9H8fFIz36sk2jWq2GUqnUasHR9xJWfFxdLJQiCALMzMzKfMhksnI/X9lxlpaW5R4jKHKgTPq9xtksZAI8na0Rn/wARUoVzITKJz4VisLafhtIz7FQEhFpUWbKLZTeTrFiUVezYG8tg7d7vRpeRY2vPv8UZjYOelGuioqq//CRJiorUDUtVxUVK03KmraOffI4QRAgkUh0/r1NunEFH78+pFbvrUmllsnMa3UN0n8slEREWlTdEZibGblIzHqIEf7utSoMa9aswv18aFRwqipVuipXtTlOKuUt/7okd/cCIEHN6iFQoFAiKeshnGzNqxydBCSPr0PGiIWSiEiLqjMCoyhSIerabbT1qA9rCwEFikf3W6pUj36ZFyiUkEolkFXyCzoy8hTvRSOtsbSygdzN4/EIe/mOXsqAraUZnOtZwNJciuyHCly8lY2HhUoEtZFXeQ25m6fe3KZB2sdCSUSkRdUZ6clXKJFXqETcrWzE3cou8/qPEbfg5WyNfu0bVnAGjvSQ9vn498bxX3+q8IEyR1tz/JWei/jkB1AoVbAwk8LF3hK928ohr29R7nuKSQUBPv69dJCa9AULJRGRFlVnpMfKXMDgTi5lPn/h7/tIvZePAR0awlJW8bJDHOkhXeg5dByO7tlU4esdGtujQ2P7Wp1bpVQiaOj4WiYjQ8CbUoiItMzHv3el61CaCVK4OViV+bCyECCRAG4OVnC0LX/qnCM9pCtuXi3g7RcIqaDd3XKkggBvv0C4ejXX6nlJv7BQEhFpWc+h46q9DmVNcaSHdGnC3KUQBO1OXgqCGSbMXarVc5L+YaEkItKy2o709Gojx5RejSt8nSM9pGvOrh4YMztYq+ccOycYzq4eWj0n6R8WSiIiHeBIDxmqHoNGY9iUeRqdo3jB9+FT5yFw4GhtxCI9x0JJRKQDHOkhQzZ4/CxMeHsZZOYWNR5pl0oFqCHBxdQidH7uRR0lJH3DQklEpCPaHOkZMnEuR3qoTvUYNBqLvz+EVh26AUCVxbL49VYdu+GtFb/g79uFGDt2bJ3tpETikqjrYiNSIiITdnLfNoSsDIZSWQSVsvoP60gFARKJFCfjM9GhxyBs3ry5TrbhI3paSmICIkK3Iu7M8XK2F5VA7uYJH/9eCBo6vuQe3xMnTqBPnz545513sGzZMlFyU91hoSQiqgNZqUlY/9k8/HX5LCCRAJX86JUKAlRKJbz9AjFh7lIciTiFMWPGYPHixVi0aFEdpiYqKz8vF5nJiVAoCiGTmUPu7lXhuqj//e9/8c4772DPnj0YNmxYHSelusSFzYmI6oCzqwce2rVG+MVDWLZgFq6dO1XtkZ7Ro0fjxo0b+OCDD9C8eXOMGzdOlK+BCHi0eH91t/2cN28eoqOjMXHiRJw9exYtWrTQcToSC0coiYjqgEKhgJeXF4YPH47Vq1cDqNlIj1qtxuTJkxESEoKjR48iICCgLuMT1Vp2djaeeeYZWFhYIDo6GjY23OXJGLFQEhHVgR07duDFF1/ExYsX4ePjU6tzFBQUoF+/frhy5QpOnz6Npk2bajklkW5cvnwZ/v7+GDFiBH788UfeC2yEWCiJiOrAs88+i8LCQkRGRmp0ntu3b6Nr164wMzNDdHQ07O3ttROQSMd+/vlnjBs3DqtXr8aMGTPEjkNaxmWDiIh07OrVqzh27Bhmzpyp8bmcnJwQHh6O9PR0vPjii1AoFFpISKR7Y8eOxZw5c/Dmm2/i9OnTYschLeMIJRGRjs2dOxdbt25FUlISLCwstHLOEydOoG/fvpg8eTK+++47TiGSQSgsLESvXr2QlJSE2NhYyOVysSORlnCEkohIh3Jzc7Fx40ZMnTpVa2USAIKCgrB27VqsW7cOK1as0Np5iXTJ3Nwc27dvR0FBAcaNGwdlDdZlJf3GQklEpEMhISHIzs7Ga6+9pvVzT548GQsWLChZ54/IELi7u5esVsB1VY0Hp7yJiHRErVajc+fOcHFxQXh4uE6uoVKpMHr0aOzbtw8RERHw8/PTyXWItG358uV47733sHfvXjz//PNixyENsVASEenImTNn0KVLF4SGhmLIkCE6u05eXl7JfWlnzpxBo0aNdHYtIm1Rq9UYMWIEjh07hrNnz6J58+ZiRyINsFASEenIlClTcOzYMfz5558QBEGn10pLS0OXLl3g4OCAyMhI2Nra6vR6RNpw//59PPPMM7CyskJ0dDSsra3FjkS1xHsoiYh04M6dOwgJCcFrr72m8zIJAC4uLggLC8Nff/2FsWPH8mEHMgh2dnbYuXMnEhISMHPmTHCMy3CxUBIR6cDGjRuhVCoxbdq0Orumj48PfvnlF+zbtw/z58+vs+sSacLHxwfr1q3Dpk2bsHbtWrHjUC1xypuISMtUKhVat26Nzp07Y+vWrXV+/dWrV2PWrFnckYQMyuzZs7Fu3TpERkbimWeeETsO1RALJRGRlh0+fBh9+/ZFREQEevToIUqGN998E6tWrUJ4eDj69+8vSgaimigoKEBQUBBSUlIQGxsLZ2dnsSNRDbBQEhFp2YgRI3D9+nXExcWJtoONUqnEsGHDcPLkSURFRaFdu3ai5CCqiaSkJHTq1AkdO3bE/v376+T+Y9IO3kNJRKRFycnJ+PXXXzFz5kxRt0MUBAE///wzGjdujCFDhiA9PV20LETV5eHhgZCQEBw5cgTBwcFix6EaYKEkItKidevWwdLSEi+//LLYUVCvXj2EhYWhoKAAw4YNQ15entiRiKrUp08ffPLJJ/jkk08QFhYmdhyqJk55ExFpiUKhgJeXF55//nl8++23YscpcfbsWfTs2RNDhgxBSEgIpFKOJZB+U6lUeOGFFxAREYGYmBg0bdpU7EhUBf5UISLSkl9//RWpqal692R1586dsWXLFuzYsYN7J5NBkEql2LRpE5ycnDBy5EiOrhsAjlASEWnJc889h7y8PERFRYkdpVz/+c9/8O6772Ljxo2YNGmS2HGIqnTx4kV07doVY8aMwffffy/qfclUOY5QEhFpwbVr13DkyBG9G5180vz58/HKK6/g1VdfRUREhNhxiKrk6+uLb7/9Fhs2bMD69evFjkOV4AglEZEWvPXWW/jpp5+QlJQES0tLseNUSKFQYMCAATh//jx+//13tGjRQuxIRFWaMWMGfvjhB0RFRaFz585ix6FysFASEWno4cOHcHd3x/Tp07F8+XKx41Tp7t276NatG1QqFX7//Xc4OjqKHYmoUgUFBejZsyfS09MRExMDJycnsSPRUzjlTUSkoZCQENy/fx+vvfaa2FGqxcHBAeHh4bhz5w5GjBiBwsJCsSMRVcrCwgLbt29HTk4Oxo8fD6VSKXYkegoLJRGRhtasWYMBAwYY1NImzZo1w549exAdHY3p06eDk1Wk7zw9PfHzzz/j0KFDWLJkidhx6CkslEREGvjjjz9w9uxZvX4YpyKBgYH44YcfsGnTJnz22WdixyGqUt++ffHxxx9jyZIl2Ldvn9hx6Am8h5KISANTp07FkSNH8NdffxnsvsPBwcFYvHgxfvnlF7z44otixyGqlEqlwrBhwxAVFYWYmBg0adJE7EgEFkoiolq7e/cu3N3d8cEHH+D9998XO06tqdVqjB8/Hrt378bx48fRpUsXsSMRVeru3bvo3Lkz7O3tERUVpdcrK5gKTnkTEdXSpk2bUFRUhGnTpokdRSMSiQQ//PADOnXqhOeffx6JiYliRyKqlIODA3bu3IkrV65g9uzZYschcISSiKhW1Go1WrdujY4dOyIkJETsOFqRmZmJLl26wMbGBlFRUahfv77YkYgqtXHjRkyZMgXr1683+H/YGTqOUBIR1cLRo0dx/fp1zJw5U+woWiOXyxEeHo6kpCSMHj0aRUVFYkciqtTkyZMxffp0zJo1CzExMWLHMWkcoSQiqoVRo0bh6tWriIuLM7r9hQ8fPowBAwbgtddew8qVK43u6yPjkp+fjx49eiArKwsxMTFcqF8kHKEkIqqh5ORk7NmzB6+//rpRlq3nnnsOa9aswerVq/HNN9+IHYeoUpaWltixYweys7Px8ssvQ6VSiR3JJLFQEhHV0Pr162FhYYEJEyaIHUVnXn31VcyfPx9vvfUWwsLCxI5DVCkvLy9s3boVBw4cwCeffCJ2HJPEKW8iohpQKBRo3LgxhgwZgu+++07sODqlVCoxatQo/Pbbb4iKikL79u3FjkRUqSVLliA4OBj79u3DgAEDxI5jUlgoiYhqYNeuXRg5ciTOnTuHDh06iB1H53Jzc9GzZ09kZGTg9OnTcHNzEzsSUYVUKhWGDh2K33//HTExMWjcuLHYkUwGCyURUQ307dsXOTk5iI6OFjtKnUlJSYG/vz9cXFxw4sQJ2NjYiB2JqEJ37tyBn58fnJycEBkZyUXP6wjvoSQiqqbr16/j8OHDRrVUUHW4ubkhLCwMV69exYQJE/jQA+k1R0dH7Ny5E5cuXcIbb7whdhyTwUJJRFRN3377LZycnExyv+sOHTogJCQEe/fuxYIFC8SOQ1SpTp06YfXq1Vi3bh02bNggdhyTwEJJRFQNeXl5JbtymOoU2pAhQ/DFF1/g888/x/r168WOQ1SpqVOn4pVXXsHMmTNx7tw5seMYPd5DSURUDcVl8saNG2jWrJnYcUSjVqsxa9YsrFu3DgcOHECfPn3EjkRUofz8fAQEBODu3buIiYmBg4OD2JGMFgslEVE1+Pv7w9HREQcOHBA7iuiKioowePBgnD59GtHR0fD29hY7ElGFbt68CT8/P3Tv3h2//vorpFJOzuoCv6tERFWIiYnBH3/8gRkzZogdRS+YmZnhl19+QaNGjTBkyBBkZmaKHYmoQk2aNMGWLVuwb98+fPrpp2LHMVoslEREVVizZg08PDwwePBgsaPoDTs7O4SFhSEnJwcvvPAC8vPzxY5EVKGBAwdi0aJFWLRoEQ4dOiR2HKPEQklEVIm7d+9i69atmD59OszMzMSOo1caN26MvXv3IiYmBtOmTQPvoCJ9tmjRIvTv3x/jxo1DYmKi2HGMDgslEVElfvzxRygUCrzyyitiR9FLXbt2xaZNm7B161YsWbJE7DhEFZJKpfjpp59ga2uLF198EQUFBWJHMioslEREFVCr1VizZg1GjBgBFxcXsePorZdeeglLly5FcHAwtm7dKnYcogo5OTlh586duHjxIt58802x4xgVFkoiogocO3YM165d48M41bBgwQJMmjQJU6ZMQVRUlNhxiCrk5+eHlStX4rvvvsOmTZvEjmM0uGwQEVEFXnzxRVy+fBmXL1+GRCIRO47eKygoQL9+/XDlyhWcPn0aTZs2FTsSUbnUajWmTZuGn3/+Gb///jvat28vdiSDx0JJRFSOlJQUeHl5YcWKFZgzZ47YcQzG7du30bVrV5iZmSE6Ohr29vZiRyIqV15eHgICApCdnY2zZ8/yv1UNccqbiKgc69evh7m5OSZOnCh2FIPi5OSE8PBwpKenY9SoUVAoFGJHIiqXlZUVduzYgdu3b2PixIlQqVRiRzJoLJRERE8pKirC2rVrMW7cONjZ2Ykdx+C0bNkSu3fvRkREBGbOnMnlhEhvNW3aFD/99BNCQ0Px2WefiR3HoLFQEhE9JSwsDMnJyXwYRwNBQUFYu3Yt1q9fjy+++ELsOEQVGjx4MD788EN8+OGHOHz4sNhxDBbvoSQiekq/fv2QnZ2N33//XewoBm/hwoVYtmwZdu3aheHDh4sdh6hcSqUSgwYNQmxsLGJjY+Hh4SF2JIPDQklE9ISEhAS0bNkSGzduxKRJk8SOY/BUKhXGjBmD8PBwREREwM/PT+xIROXKysqCn58fXFxcEBERAQsLi3KPy8/LRWZyIhSKQshk5pC7e8HSyqaO0+ofFkoioifMnz8fGzZswD///AMrKyux4xiFvLw89O7dG7du3cKZM2fQqFEjsSMRleuPP/5AYGAgXnnlFaxatark8ymJCYgI3Yq4M8eQmZIE4MnqJIHczQM+/r3Rc+g4uHm1qPPc+oCFkojosby8PDRq1AhTpkzBf//7X7HjGJX09HT4+/vDwcEBkZGRsLW1FTsSUbm+++47vP7669i8eTMG9AnC5q8WIj4mElKpAJVKWeH7il/39gvEhLlL4exqWtPmLJRERI9t2rQJkydPxvXr19GihWmOMuhSXFwcAgICEBQUhD179kAQBLEjEZWhVqsxZcoUxB4PRUBrOdRqJVTKiovk06SCAEEww5jZwegxaLQOk+oXPuVNRPTYmjVr0K9fP5ZJHfHx8cEvv/yCffv2Yf78+WLHISqXRCLB8F7t0bW5HYoUhTUqkwCgUiqhKCzA5hULEL5lVdVvMBIslEREAGJjY3H69GkuFaRjAwYMwDfffIOvvvoKq1evFjsOURkn923Dvp++AQBouuPq3g1fIHL/Ni2k0n+c8iYiAvDqq6/iwIEDuHnzJszMzMSOY/Tmzp2LlStXIiwsDAMGDBA7DhEAICs1CR9N6wdFYYHWzikzt8Di7w8Z/T2VLJREZPLu378PNzc3vPfee/jwww/FjmMSlEolhg0bhoiICJw6dQrt2rUTOxIRvvy/ibh2PrrSae60e/k4//c9pN8vgFKlho2FgBautujUxKHc46WCgFYduuGt5T/qKrZe4JQ3EZm8H3/8EYWFhXjllVfEjmIyBEHAzz//jKZNm2LIkCFIT08XOxKZuJTEBMTHRFZaJm+k5SAsJhXmZlL0aiPHgPYN0d7LvvQqQk9RKZWIj4lEauIN7YfWIyyURGTS1Go11qxZg+HDh8PV1VXsOCalXr16CA0NRWFhIYYNG4a8vDyxI5EJiwjdCqm04pUHcvOLcPJqFlq718Oz7RrAS24NN0crtHavh05Nyx+dLCYVBJwI3aLtyHqFhZKITNqJEycQHx+PmTNnih3FJHl4eCA0NBQXL17EpEmToFKpxI5EJiruzLFK15m8mvIARUo12nvZ1fjcKqUScWeOa5BO/7FQEpFJW7NmDVq3bo1evXqJHcVk+fn5YcuWLdixYwcWLVokdhwyQfkPcx7vgFOxtHv5sDCT4t5DBXaeTsb6ozexOSIRJ69mobCo6n8IZabcQn5errYi6x0WSiIyWampqdi1axdef/11SDRdH4Q08sILL2D58uVYunQpNm3aJHYcMjGZKbdQ6Y2QAHILlChSqXEkLgPNGtpgUEcX+HrZISE1BwfOp6HqZ5zVyExO1FpmfcO1MYjIZH3//feQyWSYNGmS2FEIj/ZRv379Ol599VU0btwYQUFBYkciE6FQFFZ5jFqthlKlRqdmDujQ2B4A4OZgBUEiQXTCHaTczYe7o5XG1zFUHKEkIpNUVFSEtWvXYty4cbC3txc7DuHRDiWrV69Gjx498MILL+D69etiRyIjp1arkZKSgjN//FHlsZayRw/sNHIqXRobOVsDALIeVL12pUxmXouUhoEjlERkksLDw5GUlMSdcfSMTCbDjh070L17dwwZMgTR0dFwcnISOxYZgby8PFy5cgUXLlzAxYsXSz5u374NM0GCyUFeld764mhrjozsckrj46luCaq6bUYCubuXBl+BfmOhJCKjlp+Xi8zkRCgUhZDJzCF394KllQ3WrFkDf39/+Pn5iR2RnuLg4ICwsDB07doVI0eOxKFDh2BubrwjO6RdarUaSUlJZYrj9evXoVKpIJFI0Lx5c/j6+uKNN95A+/bt4evri/WLpiAz9VaF523SwBpXUx4g6XYenOtZlHw+6faj5a4a2FlU9FYAgNzNE5ZWNtr5IvUQCyURGZ2UxAREhG5F3Jljj5/cfPJmeQns5S7IvnkVk2a8J1ZEqkKzZs2wZ88ePPvss5g+fTo2bNjAB6eojNzcXFy6dKlMebx//z4AwN7eHr6+vnjuuecwb948+Pr6om3btrCxKVvsfLr0xvFff6pw6aBGTtbwdLbGuZv3oFar0dDOEpnZBYi9eQ+ezlZwsbesMKdUEODj30srX7O+4taLRGQ0slKTsPmrhYiPiYRUKlS6ppxKrYZUIoG3XyAmzF1q9PvsGqqtW7di/Pjx+PTTT7FgwQKx45BIVCoV/v777zLF8c8//4RarYZUKkWrVq3g6+tbMuLo6+uLRo0aVfsfIimJCQie1r/SY4qUKsTevIcbaTl4WKiEjYWA5g1t0ampAwRp5ddZ/P0huHo1r/bXbGhYKInIKJzctw0hK4OhVBZVunXa06SCAEEww5jZwegxaLQOE1JtBQcHY/Hixfjll1/w4osvih2HdCw7O7tUabx48SLi4uKQk5MDAHByckL79u1LFUdvb29YWVX+hHV1VGcv75oylb28WSiJyOCFb1mFvRu+0Pg8w6bMw+Dxs7SQiLRJrVZj/Pjx2L17N44fP44uXbqIHYm0QKlU4s8//ywz6vj3338DAMzMzODt7V1m1NHFxUVntz9kpSbho2n9oCis+ont6pKZW2Dx94eMfhaEhZKIDNrJfduweYX2pkInzluGwIEcqdQ3+fn56NOnD27cuIHTp0+jcePGYkeiGrhz506ZUcdLly6V7N/u4uJSUhiLy2Pr1q1FeRiLP1Nqh4WSiAwWRxNMS2ZmJrp06QJra2tERUXBzq7meyqTbhUVFeH69etlRh3/+ecfAIC5uTnatm1basTRx8cHDRo0EDl5adqa9Rg+dR4GjTONWQ8WSiIyWJXd73T7QQH++PMu7uQUIl+hgplUAjtrGdo0qo8WrrYVntNU7ncyVPHx8ejWrRu6du2KsLAwmJlxsRKxZGZmlimOV65cQUHBo3/gNWrUqMx0dcuWLQ3m/zNN78seOyfYJEYmi7FQEpFBquqJzJS7efgzPRcudpawsRCgUKnxZ1oO/kzPhV9Te3Rq4lDp+Y39iUxDduTIEQwYMADTp0/HypUruZyQjhUWFiI+Pr7MlHVaWhoAwMrKCu3atSsz6ujo6Chycs2VWjlCECotlsWvm+rKESyURGSQQlYurnTNuIrs/SMFuQVFGBfoWeExUkFAr6EvY8zsjzSNSTqybt06TJ8+Hf/73//wxhtviB3HKKjVaqSlpZUZdYyPj0dRUREAoHHjxmVGHZs1awZBEEROr1v/rm17HJkpt/D02rZyN0/4+PdC0NDxJvsPURZKIjJICyf2evyDvWYOnE/DvVwFxgRUPnogd/PC0h+P1TYe1YF3330XX3zxBfbu3YshQ4aIHceg5Ofn4/Lly2VGHbOysgAAtra28PHxKVUc27Vrx/tW8Wj3ra+/+Azf/O9/OBX9e8nuW6bOMG5kICJ6Qv7DnMc74FRNrVZDrQYKilS4mZGLf+7kIaBl1XtDZ6bcQn5eLn9R6LHPPvsMCQkJGDNmDKKiotC+ffsKj61oC05jV7wN4dPF8dq1ayXbEDZr1gzt27fHnDlzSspj48aNIZVKxY6vlyytbODo4oV/sh7AvWlrfp8eY6EkIoNTdsqpYpHXbuNq8gMAgFQCdG/pBO9G9avxTjUykxPh0bxN7YOSTkmlUvz000/o2bMnhgwZgtOnT8PNza3k9aq24JS7ecDHvzd6Dh0HN68WdZ5f24q3IXy6PN67dw8AYGdnB19fX/Tp0wdvvfVWyTaEtrYVP6RG5SteRD0/Px/W1tYip9EPnPImIoPzV/x5fDZnRLWOzckvQl6hEnmFStzKeoiryQ/g39wRvl5VT91ZNe8JF69WkMvlaNCgAeRyeclH/fr1+TCInkhJSYG/vz9cXFxw4sQJ5GXfqfYWnMWvG9KDFMXbED5dHG/cuFGyDWHLli1LTVf7+vrCw8OD/81qya5duzBy5EhkZWXByanqGQ9TwBFKIjI4Mln1Fzu2tTSDreWjH3Wezo9GEs78eQctXG1hZV75gwRRp6Jxc3so7ty5U+Y1c3NzODs7lymaT348+Zq9vT1/meuIm5sbwsLCEBgYiFdeGghHdSaUykcPkVT10Fbx69fOR+Ojaf30bgvO7OxsxMXFldmG8MGDR6Pujo6OaN++PQYPHlxSHNu0aaOVbQipYsXf3+KF2YmFkogMkNzdC4AE1Z32LvXe+haIT36AB3mKKgqlBJGnY2FpZYOioiLcvn0bmZmZJR8ZGRml/pycnIzz588jIyMDt2/fxtOTP2ZmZnB2di53tLO8Aurg4MB7s2qgQ4cOWPL2FFw9FQ5FLd6vUiqhUiqxecUCZN/NqvMtOIu3IXx61PHmzZsAHv3307p1a7Rv3x7Dhg0rKY+urq78h4oIiqe5WSj/xUJJRAbH0soGcjePWj3lnXI3HxIA9axklR4nd/MseWjDzMwMDRs2RMOGDat1DaVSiTt37lRYPjMzM5Geno64uDhkZmYiKysLKpWq1DkEQYCTk1O1C6ijo6PRL91SmZP7tuHqqXCtnGvvhi9g5+iss0Wp7969W+42hA8fPgQANGzYEO3bt8fIkSNLimPr1q1hYWGhkzxUcxyhLIuFkogMko9/70rXoTwZnwWZmQTy+hawNheQr1Dhr/Rc/JWRC19Pu0pHJ6WCAB//XrXOJghCSdGrDpVKhbt371ZaQDMzMxEfH19SQIvXBSwmkUhKCmh1SqiTk5PB7FhSlazUJISsDC73tcIiFc7dvIfbOQW4/eDRrkmdmtjDr2nlC9v//E0wWnfortE9lcXbED5dHpOSHq1QYG5ujjZt2qB9+/YYPXp0yYLg1f2HC4mHhbIs4/hpQkQmp+fQcTi6Z1OFrzews8D11AdISM1BQZEKMkEKJ1tz9Gojr3TrReDR9GfQ0PHajlwhqVQKJycnODk5oXXr1lUer1arce/evSoLaEJCQsn/VihKTwRLJBI4ODhUu4A6OztDJqt8VFcsm79aWHLP5NMKFEpcTXkAR1tzeMmtcS0lp1rnVCqLsPmrhdXegjMzM7NMcbx8+XLJNoTu7u5o3749xo8fX2obQn39nlLlWCjLYqEkIoPk5tUC3n6BFe7l3cqtHlq51avxeYv38tbn3S6Ky6CDgwNatmxZ5fFqtRrZ2dlVFtCbN2+W/O/iIvQke3v7Kgvok6+Zm1f/4anaSklMQHxMZIWv21qaYWJPT0gkEuQXKqtdKFVKJeJjIpGaeKPUfwuFhYW4evVqmfKYmpoKALC0tES7du3QsWNHTJo0qWTUkU8CGxcWyrJYKInIYE2YuxQfTetX6f66NSUIZpgwd6nWzqcPJBIJ7OzsYGdnh+bNqy7KarUaOTk5VRbQ2NjYkv9d3i/W+vXrV3jPZ3mft7S0rPHXFhG6tdKlgTR5YEUqFfDjqk8hlXvj4sWLuHDhQrnbEE6bNq1k1LF58+YmfS+rqWChLIuFkogMlrOrB8bMDsbmFQu0ds6xc4INYi1CXZJIJKhXrx7q1auHpk2bVus9ubm5lRbQjIwMXLx4seTPubm5Zc5ha2tbrQJa/Jq1tTXizhyr8X7u1aVSKREb+RvCL/4CX19fdO/eHa+//nrJqCO3ITRdxYWy+EEqYqEkIgPXY9BoZN/Nwt4NX2h8ruFT5+nsyV5jZ2NjAxsbGzRu3Lhax+fl5VU6+pmRkYErV66U/Ll43cUn1be1wUv+cp0um2NnLUNGeiqsbWp++wQZr+LRdI5Q/ouFkogM3uDxs1DfwRkhK4OhVBbVaApcKggQBDOMnRPMMlmHrKys4OnpCU9Pz2odn5+fj6ysrFIFNOnGFdyMDNFxUuB2ahKsuQUnPUEikcDS0pKF8gkslERkFHoMGg3vjt3/3XJPECotlsWvt+rQzWC23DNllpaWaNSoERo1alTyub/iz+OzOiiUCkWhzq9Bhsfa2pqF8gkslERkNJxdPfDW8h+RkpiAiNCtiDtz/PHi5//uWqNWq2FmVR9BA0YgaOh4vX6amypXky04DeE6ZFisrKxYKJ/AQklERsfNqwXGzP4IY/AR8vNykZmcCIWiEDKZOd6Y/x7uZ+dgzeyPxI5JGtJkC87qkzy+DlFpLJSlcaNYIjJqllY28GjeBk29O8CjeRsE9gjC77//XmahbzI8xVtwViUp6yH+Ss9FYtajJ3Lv5ioe7ZqUnosiparS9+Yp1Fjy8VLExMSU2Z+dTBsLZWkslERkUgIDA5GXl4dz586JHYW0wMe/N6TSytd9jLx2G0cuZSAiPgsAcDMjF0cuZeDIpQzkFVZ8n61EIoW5gzu+/fZbdO7cGU2aNMHbb7+NqKioMnuvk+lhoSyNU95EZFI6duwIKysrREZGwt/fX+w4pCHHxr5VrkM5NqB2D1yp1Sp88r8N+NbNCydOnMCuXbvw888/48svv4SLiwteeOEFjBgxAkFBQdxC0QRZWVlxHconcISSiEyKubk5/P39ERlZ8XZ9pP/u37+P2bNnY8DzI3G/UIBEqt1fZ1JBgLdfIFy9mkMmk+G5557D6tWr8c8//yAyMhJjx47Fvn370LdvX7i4uGDKlCkIDQ1Ffn6+VnOQ/uIIZWkslERkcgIDAxEVFcV74gyQWq1GSEgIWrdujU2bNmHFihX439ZDMDPT7ghhRVtwCoKAgIAArFixAjdv3sTZs2fx+uuvIzo6Gs8//zzkcjnGjh2L7du3IyenevuGk2FioSyNhZKITE5gYCAyMjJw48YNsaNQDSQkJKB///4YO3YsAgICEB8fj7lz58KlUROMmR2s1WtVZwtOiUQCPz8/LF26FPHx8bh8+TLeffddXL16FS+99BLkcjmGDx+OzZs34+7du1rNR+LjOpSlsVASkcnp1q0bJBIJp70NRH5+PhYvXgwfHx8kJCQgPDwcO3bsKLXIeY9BozFsyjytXK82W3BKJBK0adMGH374Ic6dO4cbN27g448/Rnp6OiZOnIgGDRqgf//+WLt2LTIyMrSSk8TFEcrSWCiJyOTY2dnB19eXhdIAHD58GL6+vli6dCnmzZuHy5cvY9CgQeUeO3j8LEx4exlk5haQCpU/+f00qSBAZm6BifOWYdC4WRrnbtasGebPn4/o6Gj8888/+PLLL6FQKDBjxgy4uroiKCgIX3/9NZKSkjS+FomDhbI0FkoiMkmBgYEslHosLS0N48ePR9++feHq6orz589j6dKlsLa2rvR9PQaNxuLvD6FVh24AUGWxLH69VYduWPz9IZ3s5+7u7o7Zs2fj6NGjSEtLw9q1a2FjY4P58+fD09MTXbp0wfLly3kLhoFhoSxNouZd6URkgn7++WeMGzcOGRkZkMvlYsehx5RKJdauXYsFCxZAJpPhv//9LyZOnAiJRFLjc1W2BScggdzNEz7+vUTbgvP+/fsICwvDzp07ceDAAeTl5cHHxwcjR47EiBEj0K5du1p93VQ3goODsX79evzzzz9iR9ELLJREZJKSkpLg6emJ3bt3Y/jw4WLHIQDnzp3D66+/jjNnzuDVV1/FsmXL4OTkpJVzP70Fp9zdC5ZWNlo5tzbk5ubi4MGD2LlzJ8LCwpCdnY0WLVpgxIgRGDlyJDp37sxyqWeWL1+Ozz//HLdv3xY7il7glDcRmSQPDw94enpy2lsPZGdnY+7cuejcuTPy8vIQGRmJtWvXaq1MAmW34NSnMgkANjY2GDFiBLZs2YKMjAyEh4ejZ8+eWL9+Pfz9/eHl5YW5c+ciIiICSmXlC7lT3eDC5qWxUBKRyeJ9lOJSq9XYsWMHvL29sW7dOixfvhwxMTEICAgQO5qoLCwsMGjQIKxfvx5paWk4evQonn/+eWzfvh1BQUFwc3PDa6+9hkOHDnFPehFZWVkhPz+f69k+xkJJRCYrMDAQMTExHGUQwV9//YXBgwfjxRdfxDPPPIP4+HjMnz+fWxg+xczMDL1798bKlSuRlJSEU6dOYeLEifjtt9/Qv39/NGjQAJMmTcLevXv5gEgds7KyAgDujvQYCyURmayAgAAUFRXhzJkzYkcxGYWFhfj000/Rtm1bXLp0CXv27MGePXvg6ekpdjS9J5VK0a1bN/znP//Bn3/+iXPnzmH27Nn4448/MHz4cMjlcrz00kvYtm0bHjx4IHZco1e84gCL/CMslERkstq2bQs7OztERUWJHcUknDhxAh06dMCiRYswZ84cXLlyBcOGDRM7lkGSSCTo0KEDPv74Y1y5cgVXrlzB+++/jz///BNjxoyBXC7H888/j40bN+LOnTtixzVKxSOULJSPsFASkckSBAHdu3fnfZQ6lpmZicmTJ6NXr15wcHDAuXPn8Pnnn8PW1lbsaEbD29sb77//PmJiYnDz5k18+umnuHPnDqZOnYoGDRqgb9+++Pbbb5GWliZ2VKPBQlkaCyURmbTAwECcOnWKT87qgEqlwvr169GqVSuEhoZi/fr1OHnyJHx8fMSOZtQaN26Mt99+G5GRkUhOTsbXX38NtVqN2bNnw83NDT169MCXX36JxMREsaMaNBbK0lgoicikBQYGIjs7G5cuXRI7ilG5ePEiAgMD8eqrr2LYsGG4evUqpk2bBqmUv3bqkqurK2bOnInDhw8jLS0N33//Pezt7fHee++hcePG6Ny5M5YtW4Zr166JHdXgsFCWxr/ZRGTSnnnmGchkMk57a0lOTg7eeecddOrUCffu3cPx48exYcMG7kakB5ydnTFlyhSEhoYiMzMTP//8M5o0aYJPPvkErVu3Rrt27bBo0SJcuHCBS+FUAwtlaSyURGTSrKys4OfnxwdztGDv3r1o06YNVq1ahU8++QTnz59HUFCQ2LGoHPXr18eYMWOwfft2ZGZmYvfu3ejYsSO+/vprdOjQAc2bN8e7776L33//HSqVSuy4eqm4UHLZsUdYKInI5HGBc80kJibi+eefx/Dhw+Hj44PLly/jvffeg7m5udjRqBqsra0xfPhwbN68GRkZGdi/fz/69OmDjRs3olu3bvD09MScOXNw/PhxFBUViR1Xb3CEsjQWSiIyeYGBgUhKSsKtW7fEjmJQFAoFPv/8c7Rp0waxsbEl+1A3adJE7GhUS+bm5hgwYADWrl2L1NRUHD9+HCNGjMDu3bvRu3dvuLq64tVXX8X+/ftRWFgodlxRsVCWxkJJRCave/fuAMBRyhqIjIxEp06dsGDBArz22muIj4/HiBEjIJFIxI5GWiIIAoKCgvD111/j1q1bOH36NKZOnYpjx45h0KBBkMvlePnll7F7926TnPa1tLQEwEJZjIWSiEyeXC5H69atWSir4fbt23jllVfQo0cPWFtb4+zZs1ixYgXq1asndjTSIalUCn9/fyxfvhwJCQm4cOEC3nrrLVy4cAEjRoyAXC7HqFGjsHXrVmRnZ4sdt05IpVJYWlqyUD7GQklEhEfbMLJQVkytVmPjxo1o1aoVduzYgTVr1uDUqVPo2LGj2NGojkkkEvj6+iI4OBhxcXG4du0aPvzwQyQmJmL8+PGQy+UYPHgwfvjhB2RlZYkdV6esrKxYKB9joSQiwqP7KC9duoR79+6JHUXvXLlyBb169cKUKVMwYMAAXLt2Da+//joEQRA7GumBli1b4r333sMff/yBxMREfP7553jw4AFeeeUVuLi4oE+fPli1ahVSUlLEjqp1LJT/YqEkIsKjQqlWqxEdHS12FL3x8OFDvP/++2jfvj3S0tJw+PBh/PTTT2jYsKHY0UhPeXp64s0330RERARSU1OxatUqmJmZYe7cuXB3d0f37t3xxRdf4ObNm2JH1QoWyn+xUBIRAWjWrBkaNmzIae/HwsPD0bZtW6xYsQKLFi3CxYsX0adPH7FjkQFp2LAhXnvtNRw8eBDp6enYuHEj5HI5Fi5ciKZNm6JTp0745JNPEB8fL3bUWrOysjLJB5LKw0JJRIRH94VxPUrgn3/+wciRIzFkyBC0bNkSly5dwocffggLCwuxo5EBc3R0xKRJk7B3715kZmZi27ZtaNmyJZYvX442bdrA29sbH3zwAWJjYw1qlx6OUP6LhZKI6LHAwECcOXPGJNfXKyoqwpdffglvb2+cOnUKISEhOHDgAJo3by52NDIy9erVw0svvYSQkBBkZmbi119/RZcuXbB69Wr4+fmhadOmmDdvHk6dOqX3u/SwUP6LhZKI6LGAgADk5+cjNjZW7Ch16vTp0+jcuTPmzZuHKVOm4OrVqxg9ejTXlCSds7S0xNChQ7Fx40akp6fj0KFDGDBgALZs2YKAgAA0atQIs2bNwpEjR/Rylx5ra2sWysdYKImIHuvQoQOsra1NZtr77t27mDFjBrp16wYzMzOcOXMGX3/9Nezs7MSORiZIJpOhb9++WLNmDZKTk3Hy5EmMHj0aYWFheO6559CwYUNMnToV4eHhKCgoEDsu8vNyYWuuhjL3DpJuXEF+Xq7YkUQlURvSzQpERDrWp08f1KtXD3v27BE7is6o1Wps2bIF8+bNQ15eHj799FPMmDGDywCRXlKr1YiJicHOnTuxc+dOJCQkoF69ehgyZAhGjBiBgQMHwsbGpk6ypCQmICJ0K+LOHENmShKAJyuUBHI3D/j490bPoePg5tWiTjLpCxZKIqInfPTRR1i1ahUyMzONcsr32rVrmDFjBo4dO4bRo0djxYoVcHNzEzsWUbWo1WpcvnwZu3btwq5du3DhwgVYWlpiwIABJQ+T2dvba/26WalJ2PzVQsTHREIqFaBSKSs8tvh1b79ATJi7FM6uHlrPo49YKImInvDbb7+hX79+iI+PR+vWrcWOozV5eXlYtmwZli9fDg8PD6xatQr9+/cXOxaRRm7cuIHdu3dj586dOH36NGQyGfr06YMRI0Zg+PDhkMvlGl/j5L5tCFkZDKWyCCplxUXyaVJBgCCYYczsYPQYNFrjHPqOhZKI6AkPHjyAvb09vvvuO7zyyitix9GKgwcPYtasWbh16xbee+89LFiwAFZWVmLHItKqpKQk7NmzBzt37sTJkycBAD169MDIkSPxwgsvoFGjRjU+Z/iWVdi74QuNsw2bMg+Dx8/S+Dz6jIWSiOgpnTp1Qvv27bFhwwaxo2gkJSUFb7/9NrZt24Znn30Wq1evRqtWrcSORaRzGRkZ2Lt3L3bt2oUjR45AoVCgS5cuGDFiBEaOHIlmzZpVeY6T+7Zh84oFWss0cd4yBA403pFKFkoioqe88cYb2L9/PxISEsSOUitKpRJr1qzBwoULYWlpiRUrVmDcuHFGeU8oUVXu3buHsLAw7Ny5EwcOHEB+fj58fX0xcuRIjBgxAm3bti3zdyMrNQkfTesHRaH2niaXmVtg8feHjPaeShZKIqKn/PLLLxg9ejRSU1Ph4uIidpwaOXv2LF5//XXExsbitddew6effgoHBwexYxHphdzcXOzfvx+7du1CWFgYHjx4gJYtW5aMXPr5+UEikeDL/5uIa+ejK7xn8viVTCSk5lR4nec7u6KhnWWpz0kFAa06dMNby3/U6tekL1goiYiekpycjEaNGmHHjh0YOXKk2HGq5f79+/jggw+watUq+Pr64ttvv0XXrl3FjkWkt/Lz83HkyBHs3LkTe/fuxZ07d+Dp6Ynhg55DXsKxSt+b/VCBPEXZsnnoQjoEqQRjAjwgrWBGYPH3h+DqZXw7UHFhcyKip7i7u6NJkyYGscC5Wq3Gtm3b0Lp1a2zcuBErVqzA2bNnWSaJqmBpaYnBgwfjhx9+QHp6Og4fPowhQ4bgyu+/QaWqfKytvrUMDe0sS32oVGrkK1Ro6VqvwjIpFQScCN2iiy9HdCyURETlCAgIQFRUlNgxKnXjxg0MGDAAY8aMQUBAAOLj4zF37lyYmZmJHY3IoJiZmaFPnz5YtWoV/Ns1hVRa8/uNr6Y8mgJv6WZb4TEqpRJxZ47XNqZeY6EkIipHYGAgYmNjkZurf9upFRQU4OOPP0a7du1w/fp1hIWFYceOHbVaFoWI/pX/MAeZqUk1fl9hkQo3M3Lh7miJ+laySo/NTLlllNs0slASEZUjMDAQSqUSp0+fFjtKKUePHoWvry+WLFmCt99+G5cvX8bgwYPFjkVkFDJTbqH0dorVcyMtB0qVGq1c61XjaDUykxNrfA19x0JJRFQOb29vODg46M19lOnp6Xj55ZfRp08fNGzYEOfPn8enn34Ka2trsaMRGQ2ForBW77uW8gAWMikaN6jenuK1vY4+Y6EkIiqHVCpFQECA6IVSpVLh22+/RatWrXDw4EFs2LABJ06cQNu2bUXNRWSMZDLzGr/n9oNCZD0oRAsXWwjVvPeyNtfRdyyUREQVCAgIQHR0NIqKikS5/vnz59G9e3fMmDEDL774Iq5evYrJkydzgXIiHZG7ewGo2d+vaykPAACt3Koz3Q0AksfXMS4slEREFQgMDEROTg7i4uLq9LoPHjzA22+/DT8/P+Tm5iIyMhLr1q2Dk5NTneYgMjWWVjaQu1V/JxulSo0baTmQ17eAo231Rh3lbp6wtKre1LghYaEkIqpA586dYW5uXmfT3mq1Gjt37oS3tze+++47fPbZZ4iNjUVAQECdXJ+IAB//3pBKhWod+3dmLgqKVGhdyVJBT5IKAnz8e2mQTn+xUBIRVcDS0hLPPPNMnRTKmzdvYsiQIRg1ahT8/Pxw5coVvPPOO5DJKl+ChIi0q+fQcVCpyt9y8WnXUh7ATJCgacPqFUqVUomgoeM1iae3WCiJiCoRGBiIyMhI6GqX2sLCQixbtgxt27ZFXFwc9uzZg71798LLy/jusSIyBG5eLeDtFwipUPUo5aCOrpjSqzHMzaquU1JBgLdfoFFuuwiwUBIRVSowMBApKSm4fjUeSTeu4K/480i6cUUrCxNHRESgQ4cO+PDDDzF79mxcuXIFw4YN00JqItLEhLlLIQja3XFKEMwwYe5SrZ5Tn3B/LiKiCqQkJiDrahRe6tYIX8wZ8tSrEsjdPODj3xs9h46Dm1eLap83MzMT7777LjZu3Iju3bsjNjYWvr6+2g1PRLXm7OqBMbODsXnFAq2dc+ycYDi7Vv+BH0MjUetqHoeIyEBlpSZh81cLER8TCalUqPR+quLXvf0CMWHu0kp/YahUKmzYsAHvvvsu1Go1Pv/8c0ydOhVSKSeLiPRR+JZV2LvhC43PM3zqPAwaN0sLifQXCyUR0RNO7tuGkJXBUCqLoFJW78Z84NH9UYJghjGzg9Fj0Ogyr8fFxWHGjBmIiorCpEmT8J///AdyuVyb0YlIBzT9mTB2TjACB5b9mWBsWCiJiB7T1mjEsCnzMHj8o9GI3NxcLFmyBCtWrECLFi2wZs0aBAUFaXwNIqo7pWYtBKHSYln8enVmLYwJCyURER6NQmjzfqmJ85bhjsIKc+bMQUZGBhYtWoR58+bB3Nz4tlwjMhUpiQmICN2KuDPHkZlyC8CTFUoCuZsnfPx7IWjoeKN9mrsiLJREZPKyUpPw0bR+UBQWaO2cakiwLeoWAnv3xcqVK9G0aVOtnZuIxJefl4vM5EQoFIWQycwhd/cyyh1wqouFkohM3pf/NxHXzkeXO42VfCcPN9JykH6/ALn5RTCXSSGvZ4GOTewhr29R4TlVajXkHi3x6YYD3HubiIweHy0kIpOWkpiA+JjICu+Jik/OxoP8IrTzqI8BHRqiWwsn5BUqsfdsCpLv5FV4XqlEgtv/JCDt1p+6ik5EpDdYKInIpEWEbq10396AVs4Y0skVbRrVh6uDFZo2tMGgji6wlAk4//e9Ss8tFQScCN2i5cRERPqHhZKITFrcmWOVrjNpZV62bMrMpLC3kSG3oPIlRFRKJeLOHNc0IhGR3mOhJCKTlf8wB5kpSTV+X2GRCrcfFMLBRlblsZkpt7SyTSMRkT5joSQik1V22Y/qibqWBYVShQ6N7atxtBqZyYk1vgYRkSFhoSQik6VQFNb4PWf/vIsbabno1sKp0qe8Nb0OEZEhYaEkIpMlk9VskfGYv+7i3N/30LmZA9p61NfZdYiIDA0LJRGZLLm7F4DqrREZ89ddxN68h05N7NGxWlPdxSSPr0NEZLxYKInIZFla2UDuVvU+u7E3H5XJjo3t4dfUoUbXkLt5mvTuGURkGlgoicik+fj3rnQdyouJ9xHz1z00crKCh7MV0u/nl/qojFQQ4OPfS8uJiYj0j5nYAYiIxNRz6Dgc3bOpwtdvZT0EAPxzOw//3C67M86rfZpU+F6VUomgoeM1D0lEpOdYKInIpLl5tYC3X2CFe3kP8XOt1XmlgoBWHbrB1au5phGJiPQep7yJyORNmLsUgqDdf18LghkmzF2q1XMSEekrFkoiMnnOrh4YMztYq+ccOycYzq5VP/BDRGQMWCiJiAD0GDQaw6bM08q5hk+dh8CBo7VyLiIiQyBRq9U133eMiMhIndy3DSErg6FUFpV7T2VFpIIAQTDD2DnBLJNEZHJYKImInpKVmoTNXy1EfEwkpIJQabEsft3bLxAT5i7lNDcRmSQWSiKiCqQkJiAidCvizhxHZsotAE/+uJRA7uYJH/9eCBo6nk9zE5FJY6EkIqqG/LxcZCYnQqEohExmDrm7F3fAISJ6jIWSiIiIiDTCp7yJiIiISCMslERERESkERZKIiIiItIICyURERERaYSFkoiIiIg0wkJJRERERBphoSQiIiIijbBQEhEREZFGWCiJiIiISCMslERERESkERZKIiIiItIICyURERERaYSFkoiIiIg0wkJJRERERBphoSQiIiIijbBQEhEREZFGWCiJiIiISCMslERERESkERZKIiIiItIICyURERERaYSFkoiIiIg0wkJJRERERBphoSQiIiIijbBQEhEREZFGWCiJiIiISCMslERERESkERZKIiIiItIICyURERERaYSFkoiIiIg0wkJJRERERBphoSQiIiIijbBQEhEREZFGWCiJiIiISCMslERERESkERZKIiIiItIICyURERERaYSFkoiIiIg08v85Bs07yLhbuwAAAABJRU5ErkJggg==", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "G1 = nx.Graph()\n", "\n", "edges = [\n", " (1, 2), (1, 3), (1, 4), (1, 6), (1, 7),\n", " (2, 3),\n", " (3, 4),\n", " (4, 5), (4, 8),\n", " (5, 6),\n", " (6, 7),\n", " (8, 9), (8, 10)\n", "]\n", "\n", "G1.add_edges_from(edges)\n", "nx.draw(G1, **opts)\n" ] }, { "cell_type": "markdown", "id": "7f8a8400", "metadata": {}, "source": [ "### TASK 2.2: Compute Centralities\n", "\n", "Compute the Degree, Eigenvector, Closeness, and Betweenness Centralities of the nodes in this graph. Display all four in a table (using a pandas `DataFrame`) sorted by the eigenvector centrality. " ] }, { "cell_type": "code", "execution_count": 4, "id": "a6d6c25a", "metadata": {}, "outputs": [], "source": [ "degree_centrality = nx.degree_centrality(G1)\n", "eigenvector_centrality = nx.eigenvector_centrality(G1)\n", "betweenness_centrality = nx.betweenness_centrality(G1)\n", "closeness_centrality = nx.closeness_centrality(G1)\n", "\n", "centrality_df = pd.DataFrame({\n", " \"Degree\": degree_centrality,\n", " \"Eigenvector\": eigenvector_centrality,\n", " \"Closeness\": closeness_centrality,\n", " \"Betweenness\": betweenness_centrality\n", "})\n", "\n", "centrality_df_sorted = centrality_df.sort_values(by=\"Eigenvector\", ascending=False)" ] }, { "cell_type": "code", "execution_count": 5, "id": "652dfa5d", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
DegreeEigenvectorClosenessBetweenness
10.5555560.5441330.6000000.351852
40.4444440.4241310.6428570.560185
30.3333330.3981950.5294120.064815
60.3333330.3333100.4500000.050926
20.2222220.2966460.4090910.000000
70.2222220.2762190.4285710.000000
50.2222220.2384430.4736840.055556
80.3333330.1665240.5000000.416667
90.1111110.0524230.3461540.000000
100.1111110.0524230.3461540.000000
\n", "
" ], "text/plain": [ " Degree Eigenvector Closeness Betweenness\n", "1 0.555556 0.544133 0.600000 0.351852\n", "4 0.444444 0.424131 0.642857 0.560185\n", "3 0.333333 0.398195 0.529412 0.064815\n", "6 0.333333 0.333310 0.450000 0.050926\n", "2 0.222222 0.296646 0.409091 0.000000\n", "7 0.222222 0.276219 0.428571 0.000000\n", "5 0.222222 0.238443 0.473684 0.055556\n", "8 0.333333 0.166524 0.500000 0.416667\n", "9 0.111111 0.052423 0.346154 0.000000\n", "10 0.111111 0.052423 0.346154 0.000000" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "centrality_df_sorted" ] }, { "cell_type": "markdown", "id": "dda1a182", "metadata": {}, "source": [ "### TASK 2.3: Draw the graph with node size proportional to eigenvector centrality" ] }, { "cell_type": "code", "execution_count": 6, "id": "51619b7d", "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAApQAAAHzCAYAAACe1o1DAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjAsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvlHJYcgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAdxJJREFUeJzt3Xd4FNXCBvB3ZnbTe6eGUEINBER6lyaCBAQVpETELtjL9Vq5fjYsV7EXDAJ2OiggXUBRpAYDhBZ6QnpPdnfm+yOQK0IgZXfP7Oz7e577eCWbnZeYbN49Z845kqZpGoiIiIiIakkWHYCIiIiIXBsLJRERERHVCQslEREREdUJCyURERER1QkLJRERERHVCQslEREREdUJCyURERER1QkLJRERERHVCQslEREREdUJCyURERER1QkLJRERERHVCQslEREREdUJCyURERER1QkLJRERERHVCQslEREREdUJCyURERER1QkLJRERERHVCQslEREREdUJCyURERER1QkLJRERERHVCQslEREREdUJCyURERER1QkLJRERERHVCQslEREREdUJCyURERER1QkLJRERERHVCQslEREREdUJCyURERER1QkLJRERERHVCQslEREREdUJCyURERER1QkLJRERERHVCQslEREREdWJSXQAIqo5TdNw5K8dOLxvB44d3INjB/agKD8Pqs0Kk9kDIZH10bRVPBrHxqF1p54Ii2ooOjIRERmYpGmaJjoEEVVPcWE+fvt5EdYtSkLG6TRIsgwJElTVdsljFcUEm80KQEK7a/ugf8IktL22L2SZExNERGRfLJRELkDTNGzfsALz/vsMSooLLvxhtT9flhWoqg3RsXGY8tRbqNe4mYOSEhGRO2KhJNK5grxszH3raezashqQpBoVyX+SFQWSJCHh9scwaOxUjlYSEZFdsFAS6VjOuTN449FxyDp76rLT2nXRY8gYTHzkZSgKb6UmIqK64W8SIp3KzzmH1x++BTkZZ+xeJgFg6+oFAIDJj70GSZLs/vxEROQ+ON9FpEOqzYb3n7sbOeccUyYBAJqGrat+wM/ff+aY5yciIrfBQkmkQ2sXfYGjKbug2hxUJv9m0eyZOHP8sMOvQ0RExsVCSaQz6SePYuFnM512PU3TMPu1R6GqqtOuSURExsJCSaQzK7/5GJrmvHKn2mxIO7AH+7Zv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RHbDEUoiB/hz009YNvcdnD56ELKiOOQccFlWoKo2NGt7DRJuf/SSUcnLef/99/HAAw/giSeewKuvvspSSUREdsFCSeQgmqbhaMourF86F3+sXw5NtdV9xPL8PZoent7oMXQM+o24DfWbxNboKd555x089NBDeOaZZ/Cf//ynbnmIiIjAQknkFAW5Wdiy6gfs3LwKJw6lwGopAwAoigk2m7XKz/v7xz29fRHdoh2u7T8cXa8bCS8fv1rneeONN/D4449jxowZePbZZ2v9PERERAALJZHTqTYbzp48grSDyTieuhdpqftQXJAHS1kprFYLTGYPeHh6wS8wBNGxcWgSG4fGse0QXq+xXaeoX375Zfz73//GK6+8gqeeespuz0tERO6HhZLIjb344ot44YUX8MYbb+DRRx8VHYeIiFwUV3kTubHnnnsO5eXleOyxx2A2mzF9+nTRkYiIyAWxUBK5MUmS8NJLL8FiseDBBx+E2WzGvffeKzoWERG5GBZKIjcnSRJee+01WCwW3HfffTCZTLjzzjtFxyIiIhfCQklEkCQJb7311kWbnycmJoqORURELoKFkogAVJTKd999FxaLBVOmTIHZbMZtt90mOhYREbkAFkoiqiTLMj788ENYLBZMmjQJZrMZN998s+hYRESkcyyURHQRWZbx6aefwmq1Yvz48TCZTBg9erToWEREpGPch5KILstms2HChAn44YcfsGDBAtx4442iIxERkU6xUBJRlaxWK2699VYsXboUixcvxrBhw0RHIiIiHWKhJKIrslgsGDt2LFauXImlS5di8ODBoiMREZHOsFAS0VWVlZVh9OjRWLduHVasWIEBAwaIjkRERDrCQklE1VJaWoqRI0di8+bN+Omnn9CnTx/RkYiISCdYKImo2kpKSjB8+HBs27YNq1evRo8ePURHIiIiHWChJKIaKSoqwrBhw7Bz506sWbMGXbp0ER2JiIgEY6EkohorLCzE0KFDkZycjLVr1+Kaa64RHYmIiARioSSiWsnPz8fgwYNx8OBBrFu3DvHx8aIjERGRICyURFRrubm5GDRoEI4ePYoNGzagXbt2oiMREZEALJREVCfZ2dm47rrrcPr0aWzYsAGtW7cWHYmIiJyMhZKI6iwzMxMDBgzAuXPnsHHjRsTGxoqORERETsRCSUR2kZGRgf79+yMvLw8bN25Es2bNREciIiInYaEkIrs5e/Ys+vbti5KSEmzcuBExMTGiIxERkROwUBKRXZ06dQp9+/aFzWbDxo0b0bhxY9GRiIjIwVgoicjuTpw4gb59+0KWZWzcuBENGjQQHYmIiBxIFh2AiIynUaNGWLduHSwWC/r3748zZ86IjkRERA7EQklEDtGkSROsW7cOxcXFGDBgANLT00VHIiIiB2GhJCKHadasGdavX4+8vDwMHDgQmZmZoiMREZEDsFASkUO1aNEC69atQ0ZGBgYOHIjs7GzRkYiIyM5YKInI4Vq1aoW1a9fi1KlTGDx4MHJzc0VHIiIiO2KhJCKnaNeuHdasWYOjR49iyJAhyMvLEx2JiIjshIWSiJymQ4cO+Pnnn3Hw4EEMGzYMBQUFoiMREZEdsFASkVN16tQJq1evRnJyMm644QYUFRWJjkRERHXEQklETnfttddi5cqV2LlzJ0aMGIHi4mLRkYiIqA5YKIlIiO7du+PHH3/Etm3bkJCQgNLSUtGRiIiollgoiUiY3r17Y/ny5di8eTNGjx6NsrIy0ZGIiKgWWCiJSKj+/ftj6dKlWLduHcaOHYvy8nLRkYiIqIZYKIlIuIEDB2Lx4sVYtWoVxo0bB4vFIjoSERHVAAslEenC0KFD8cMPP2DZsmWYMGECrFar6EhERFRNLJREpBsjRozAt99+iwULFiAxMRE2m010JCIiqgYWSiLSlVGjRuGrr77C119/jalTp0JVVdGRiIjoKkyiAxAR/dPNN98Mq9WKiRMnwmQy4eOPP4Ys8/0vEZFesVASkS6NHz8eFosFt99+O8xmM95//31IkiQ6FhERXQYLJRHp1uTJk2G1WjF16lSYzWb897//ZakkItIhFkoi0rU77rgDFosF9957L8xmM2bOnMlSSUSkMyyURKR799xzDywWC6ZPnw4PDw/83//9H0slEZGOsFASkUuYNm0aLBYLHn30UZjNZrz44ouiIxER0XkslETkMh555BFYLBY89dRTMJvNeOaZZ0RHIiIisFASkYt58sknUV5ejmeffRYeHh544oknREciInJ7LJRE5HKeffZZWCwWPPnkkzCbzXj44YdFRyIicmsslETkkl588UWUl5fjkUcegdlsxgMPPCA6EhGR22KhJCKXJEkSXnnlFVgsFkybNg1msxl333236FhERG6JhZKIXJYkSXjjjTdgsVhwzz33wGw2Y8qUKaJjVbJaypF+8ihyzp1FblY68rLPIS87A2XFRbBZLdCgQVZMMJs94B8chsCQCASGhCMoLBKRDWLgFxgs+q9ARFQtLJRE5NIkScI777wDi8WCqVOnwmQyYdKkSUKyZJxOw4FdvyHt4B4cTdmNU8cOQrVZKz8uKyZIEqCpGjRoFfkhAZIESQJUmw2aplU+PigsEjGt4tEkNg4xbTqiebvOMJnMTv97ERFdjaT9/dWLiMhFqaqKu+++G7Nnz8bcuXMxfvx4x1/TZsPRA7uxe+sa7Ni8ChknjwIAFMUE29+KZF1IsgwJElTVBk8vH8R1G4D4HgPRrks/+PgF2OUaRER1xUJJRIahqiqmTJmCefPm4euvv8bYsWMdcp287HPY/OO3WL90LvKzz0FWFKg2m0Ou9U8XriUrCjr1Hor+IyeiebtreXIQEQnFQklEhmKz2TBp0iR89913+P7775GQkGC35z781w6sXfgFdmxaCU3ToGmq3Z67Ni6Uy3qNm2PAqMnoMWQMzB6eQjMRkXtioSQiw7FarRg/fjwWL16MhQsXYvjw4XV6vpNH9mPhZ68j+fcNTh2NrDZJAjQNASHhSLj9UXQfPBqKwlvkich5WCiJyJAsFgtuueUWrFixAkuWLMHQoUNr/BxZ6aew+Is3sW3NEsiKrL8i+U/ni2VEgya46a6nEN9jEKfCicgpWCiJyLDKy8sxZswYrF69GsuXL8fAgQOr9XmqqmLTsvn4/uOXYbNZ9V8k/0GSZWiqig7dB2LCw/+HwJBw0ZGIyOBYKInI0MrKypCQkICNGzfixx9/RL9+/a74+MwzJ/DFzMeRuud35wR0IFlW4Ontg/HTZ6DLgBs5WklEDsNCSUSGV1JSghtvvBG//vorVq5ciV69el32cb+tWYy5b/3LJUclq3R+GrxjryG4/YmZ8PLxE52IiAyIhZKI3EJxcTFuuOEGbN++HatXr0b37t0rP6babFj4+Uys/u4TgQkdS5JlRDaIwfSXZyOsXiPRcYjIYFgoichtFBYW4vrrr8eePXuwZs0aXHvttSguzMen/zcd+/7YJDqew12YAr/vxY/RMr6b6DhEZCAslETkVgoKCjBkyBCkpKRg6aIfsHrOKzh3Kg2qapAp7quoOHkHuP3JN9H1upGi4xCRQbBQEpHbycvLw7DBA9DEIxN+3mZoqtgNysWQMOnRV9Dr+ptFByEiA5BFByAicjbNUopeTb3h46G4aZkEAA1fvvkv/Lp6oeggRGQALJRE5FaKCvLwxqPjkJedDu6ioyFp5uPYuXmV6CBE5OJYKInIbag2Gz55aRoyz5wwzrZAdaQB+PT/HsKJwymioxCRC2OhJCK3seCz15CyY4vbLMCpFk2DarNi1r/vQEFulug0ROSiWCiJyC1sXb0AP3//GcB1iJdQVRvys8/hg+fvhtVSLjoOEbkgFkoiMrz0k0cx7+1/i46ha6pqw5G/dmLF/PdFRyEiF8RCSUSGpqoqvnj9Md4zWQ2apuHH+e8jLTVZdBQicjHch5KIDG3twi/w7Qf/ER3DZciygsiGMXj24+UwmT1ExyEXlpuZjrTUZKQd3INjB/bizPFDsJSVwVJeBpvVAllRYDJ7wMPTC8FhUWjSqgOiY+MQ3aIdIhvGQFYU0X8FqgEWSiIyrIzTaXjhjiG8L7CmJAnDJ0zDjZMfEp2EXEhuVgZ+Xb0AqXv/wLH9u1GYnwMAkJWK/V6vVjcUxQSbzQoAMHt6oXGzNmjathO6DhiJxi3aOjw/1Q0LJREZ1scz7sfOzau5qrsWFJMZL8/biOCwKNFRSMc0TcPBPb9jw5IvsXPzKmgVf3jV8lhdsqJAtdkQ3bI9rhuViGv6XA+zh6ddnpvsi4WSiAwp7eBe/N99PKu6tmRZQc/rx2Liwy+LjkI6VFJUgN/WLMK6RXOQfvJoZfFzFEmWoakqvH390Wf4OPQdfhvC6jVy2PWo5lgoiciQ3np8Ag7u2cbFOHUgSTJenL0aUY2aio5COqFpGras/B7ffjADZSUlgASnb8UlywpUVcWAhEkYdcfj8PT2cer16fK4ypuIDGf/rl+xf+dWlsk6kmQJS754U3QM0omcc2fwzlOJ+PLNp1BWUgxAE7Kva8UtLBrWL5mL56cOwcE9vzs9A12KhZKIDGfND59DlrlCtK5Umw07flmJ7IzToqOQQBdGJZ+bMgj7d20VHaeSpqnIOXcGbzxyK755f8b5kkuisFASkaFkpZ/C3m3ruRDHXiQJv6z4RnQKEiQ3Mx3v/CsRc954EmUlxbob9ddUFQCwfvGXeH7qEKTu/UNwIvfFQklEhrJpxdeAJImOYRiaqmLDsvnceskNnT1xBP9330js36mfUcmqXBitfPOx8di+YYXoOG6JhZKIDMNqKcemZV9VjlqQfRTl52Dn5tWiY5ATHU/dh1en34SCvCzdjUpWRVNVqDYVn7w0Hb/8+K3oOG6HhZKIDOPgnt9RVJArOobhyLKC7Rs56uMujqfuw8xHbkFpUaHLlMn/0QBomPvWv7Bx2XzRYdwKCyURGcaeX9fyuDYHUFUbkn/fAEt5mego5GBnTxzBW09MgKWszOXvQ57/znP4fd1S0THcBgslERmCpmnY8ctKFxxRcQ2W8jIc2PWb6BjkQDmZZ/Hmo+NRWlzo8mWygobPX30Ee3/fIDqIW2ChJCJDOHV0P3Kz0kXHMCxZMWH3r2tExyAH0TQNSTOfcKl7JqtD0zR8/vJDyM/JFB3F8FgoicgQ9u/8FZLElzRHUW1W7Nu+SXQMcpAtK79Hyp+bDVUmAQCahtLiInz17nOikxgeX32JyBDSUpMhcbsgh8o8cxIlRQWiY5CdZWecxjfvvyg6hsOoasUG/ds3/ig6iqGxUBKRIRz5a4dB7vvSMw3HD/0lOgTZkaZpmPPGU8bfZ1SSMO/tpzn17UAslETk8kqLC3Hu9AnRMQxPkmQcT90rOgbZ0ZaV3yFlhwGnuv/p/NT3/HeeFZ3EsFgoicjlnTp2EBX7z5EjSZKEE4dSRMcgOykuzMe37/9HdAynUVUbdm5ehX1/8F5gR2ChJCKXl5NxRnSEWtt/qgCfrj2KLzYcEx3lqlTVhqyMU6JjkJ389vMilJWViI7hVLKsYO3CL0THMCQWSiJyeXnZGS65wruo1Ipth7Lh4+k6m7HnnjsrOgLZgaZpWLsoSXQMp1NVG5L/2ITMM7xFxt5c7xWYiOgf8rIyICuu93K2+UAmooK80CDEW3SUauOiBmM4sPs3nDudBmjud6uILEvYtPwr0TEMx/VegYmI/iE3KwOa6lq/GFPPFOJMTil6tgwVHaVGykqLUVbqXtOkRrRhyVy3PaZUVVVsWvE1jxK1MxZKInJ5JS52VFxJuQ2/pmahS/MQ+HmZRMepsdLiQtERqA5yM9Oxc/Nq46/svoLiwnz8uekn0TEMhYWSiFyearOKjlAjW/ZnIsjHjNYN/EVHqRVX+3rTxbau/gFw8zMAJFnGxmXzRccwFBZKInJ5rjQ6eTSjCGmZxejdKsxlT/ZRVVV0BKqD1D1/uOW9k3+nqSqOHdgNq9UiOophsFASkctTFLPoCNVisarYciALbRsFwMdTQZnFhjKLDer5+z/LLDZYbPova4ePHMGJEyeQk5MDq5Wjla5E0zQcO7AbmpsXSgCwWa04cyxVdAzDcL2bd4iI/sFkNkOSJN3/kiy12FBSbsPe4/nYezz/ko9/uek4osN8MLhDpIB01denbz+UWf5XfD09PeHv7w9/f3/4+fld8Z/VeYyXl5fLjt7qXc65MygqyBMdQzeOHdyLRs3biI5hCCyUROTy/INCIcsKbDq/t8/bQ8ENnaIu+fPdx/JwJrcUQ+Mj4WXW98pbSZKwZu0GFBUXo6CgAIWFhZf954X/f+bMmUs+VlpaesVrKIpSp2L6zz/z8/ODLHNCDgDSUpOFXft0TglW7Lj8PqY3dq6HyEAvp+ZRFBOOH9wLDLvFqdc1KhZKInJ5gaERLnHwokmRUT/40j0nD54phCThsh/TG9+AYPTq3btOz2G1Wqssov8spP/856lTpy55TGFh4VVHp318fGo8Unqlj3l4eNTpayDK8YPJkBVF6Arva5sFo17wxeUxxNf5X0+bzYoj+3c5/bpGxUJJRC4vKDSCK4+dJCis7tPxJpMJQUFBCAoKqnsgVCwSKikpqVExvfDP7OxspKWlXfIxi+XKizXMZrNdp/l9fHycMs1/7MAeaIIXVQV4m50+GlmV08cOwmq1wGRyjfuw9YyFkohcXmBIhOgIddKvTTj6tQkXHaNaQsLriY5wCVmW4evrC19fX7s9Z3l5ebUK6eUec+7cuUseU1xcfMXrSZJkl2L692l+k+nSX/Fnjh/S/b3GzmSzWpGdcRoR9aNFR3F5LJRE5PIiGjQRHcEtKIoJkQ1jRMdwCg8PD4SGhiI01D4nGdlsNhQVFdVqmj89PR2HDx++5DFX277Jy8vrkrLZ0isdou/S3XogE+v2ZcAkS4gI9EKnmCBEBYkbsbSUXfmeXqoeFkoicnnh9aPh4eWNch4J6FA2mxWNW7QTHcMlKYqCgIAABAQE2OX5NE1DaWlpjaf5pZOXXxTjDB4mGe0aBaBesBc8TQrySyzYk5aH5TvOYEiHSDQK9RGSi4XSPlgoicjlybKM6BbtkLr3D9FRDC86Nk50BELFFLm3tze8vb0REVH9Wz7uu74VrJZyByarWpi/J8L8PSv/vV6wF5qE+2DBtlP4/VCOuEJp4Zne9sB9FIjIEGJaxUNR+B7ZkTw8vXl7gYuTFdET3hfzNCtoHOaD7MJyWAVt6u8qByPoHQslERlCTOsOut+H0pVJkoQmLdtzP0cXZzZ7Xv1BTiZ6iZDZUx8rzl0dXxmIyBBad+rFsuNgHXoMFB2B6sjsoa9CWWax4URmMUL9PGBSxPz8enjq62viqjg/RESG4OMXgOZxXZC6Zxu3RXEATdPQoft1omNQHQWHRyE3K13ItdclZ8DPy4Qwf094ecjIL7Zgz/F8FJfb0Ffgtln+QWHCrm0kLJREZBgdew1G6p5tomMYUkSDJrx/0gCatOyA46n7hNweEuLngSPpRUg5VQCLTYWnSUZUkBf6tw1HeICYUcLQyIbw8bPPynt3x0JJRIbRoftAfPv+DNExDEdWFHTqNUR0DLKD6JZxsC0Rc69xfJMgxDcJEnLty5FlGU3bdBQdwzB4wxERGUZYVEPEtu8KWdbXSlZXp9ps6DF0rOgYZAfR3Ee0kgZug2VPLJREZCj9EyZBVW2iYxiGLCtoGd8dUY2aio5CdhDVuBlMZg/RMXRBU1UWbDtioSQiQ+nQYyD8g+xzXB4BqmrDgIRJomOQnSiKCQ2bthIdQzcaNW8jOoJhsFASkaGYTGb0u3ECJG4hZBcBwWFoz9XdhtKsbSfIPAQA4fUac0GOHfEVl4gMZ0DCZHhws2K7GD5hGk8gMpiuA0ZCdfNDACRJRo8hY0THMBQWSiIyHN+AIAwbdx8kSRIdxWVJkoSQyAbodcOtoqOQnTVp1QGNmrWBJLlvBZAkoNewW0THMBT3/W4iIkMbMCoRvgHBAFgqa0PTNIy+43GYTDzn2IgGjJoMTRNzdrZosqKgU+/rERgibjN1I2KhJCJD8vT2wcjEhyH+pGDXI8sK6sfEonO/4aKjkIN07jccXj5+omMIodps6DdyougYhsNCSUSG1XvYrYhu2R6ywn0pa0LTVEx+9DWejW5gnl7e6D3sFvfbs1WSENmwKVrEXSs6ieHw1YKIDEtWFEx58k3eS1kDkiRhyC13I6ZVB9FRyMH6DB/vlnu2Dhg1ia8JDsBCSUSGVq9xM4ya8rjoGC5BlhVENGiCEZMeFB2FnCCyYQz6DB/vNltsybKCiHqN0et6LsZxBPf4LiIitzbwpilo2qYjp76vRgLueOotmD08RSchJxlz11MIDIlwi1KpaSqm8PvbYYz/HUREbk9WFNz7wkfwCwzhfYFXMOGhl9CEU91uxcvHD1OefAOaauwV35IkYdDYO9G0TUfRUQyLr6xE5BYCQ8Ix7aXPIMkKuJXQxSRJwoCEyZwKdFOtOvYw9NS3LCsIr9f4/K4P5CjG/O4hIrqM6Ng43P7ETHArof+RZQUt2nfF2Hv/LToKCWTkqW9OdTuH8b5ziIiuoMuAGzF66hOiY+iCLCuoF90c977wIY9XdHNePn6446m3DPle6/px93Gq2wlYKInI7Qy99R7cOPkh0TGEurCi+5E35sPXP1B0HNKBlvHdMOWpN2CcW0IkdB98E27kVLdTsFASkVsaPnE6EqY8KjqGEBdGJh//77fwDwwRHYd0pOt1CRg/7QXRMepMkiTE9xyESY++woV4TiJpmmbAAW4iourZsGQuvn7vRQBwj7ONJQkt4q7FfS9+zJFJqtLaRUn49v0ZomPUjiShQ/eBuOuZd3nfpBOxUBKR20vZsQUfvnAvystKoNqMfXJIv5ETcfO9z8BkMouOQjq3dfUCzJn5BCpagutUhe6Db8KkR1/hfcFOxkJJRAQg43QaZj09Beknj8GVfnlWR8V5zRrGT/8P+gwfJzoOuZBdW9dg9quPoLy0RNfHNMqyDE3TMHTcvRiZ+AinuQVgoSQiOm/dmp/x4vTxaFnfH5IkG2IKXNM0hEQ2xF3PvINmbTqJjkMuKC/7HOa+/TT2/LoWkCRAZ7VBkiSE1WuEKU+9xe9xgVjhiYgA5ObmYsrUO6GGtsIDL30O/+BQl96Tr2JUEjh0zoLDZeFo2prbplDtBIaE4/4Zn+COf70FL2/fyu8t0dTzxXbQmKl4/tOVLJOCue6rJRGRHd1///3IycnB3Llz0b5bf8yY/TN6DhkLQHKtM8Clii1fwhtE48l3vse9z7yFBQsX4bvvvhMcjFyZJEnoel0C/pO0Fu269gMAgcVSAiQJZu8ArNiZgfb9b4KHp5egLHQBp7yJyO3NmzcPEydOxFdffYVx4y6+x/DU0QNY9PlM7PltHWRZ0fV9ZJAkBAaHY9Qdj6HbwFGVRfjmm2/GunXrsG/fPkRGRgoOSa5O0zTs3bYOaxfOQcqOzU77uZAVBarNhogGTTBgVCKu6TcC8R07oXXr1lixYgUkySj7Z7omFkoicmtHjhxBfHw8EhIS8OWXX1b5uEPJ27Hws9dxKHl75S82PZBkGZqqwsc/EDfcdj/63Tjxkq1Szp07h7Zt26JXr15YsGABf/GS3aSfPIpNK77GLyu+QWlxISRJgr1rhSTLkADE9xyC/iMnIrZD18rv4cWLF2PUqFFYunQpRowYYdfrUs2wUBKR27JarejTpw/Onj2LXbt2ISAg4Kqfc+JwCjYum4dfVy+Epbz8/BoF57+MXii1Tdt0xICEyejYa8gV99xbsGABxowZg/nz52P8+PFOTEruoLysFNs3LMeGZfNxPDX5/Bsu6fz3qbXaz3PhvmVNrVgQFxrVED2HjEGv629BUNilo+uapmHo0KE4dOgQ9u3bBy8vTn2LwkJJRG7rhRdewEsvvYRffvkF3bt3r9HnFhfm47c1i7F9w3Ic3vcnNE1z+NTfhdHIoNBIdOo9FD2vvxmNmrWu9uePGzcOq1atwr59+1CvXj2H5ST3Zikvw6mjB5CWmoy0A3txdP8unDl+6Kqj+iER9RHTOh7RsXFoEhuHxi3awcfv6m/yDhw4gLi4ODz33HN45pln7PXXoBpioSQit7Rlyxb06dMHzz33HJ5//vk6PVdhXg6S/9iIXVtWI2XnVpQU5gMAZMVUUTBr8TKrKCbYbDYAGmRFQaOmrRHfczA69LgODWJa1WraOjMzE23btkXXrl2xZMkSTn2T01jKy5CVfgqW8jJYykphKS+DyWyGycMTHh5eCAgJr9PJTU8++SRmzZqFlJQUREdH2zE5VRcLJRG5nby8PMTHx6NBgwbYsGEDTCb7naihaRqyM07jeGoy0g4m48Thv5CVfgp5WRkoKsy7Yrn08PSGf3AogsOiUK9xc0THxiE6th3qN4m12xFyixYtwujRo/Hll19i4sSJdnlOItEKCgrQsmVL9OzZE99//73oOG6JhZKI3M6ECROwbNky7N69G02aNHHadW02K/JzMlFaXATVZoWmqVAUMxSzGQFBofDy8XNKjgkTJmDFihXYt28f6tev75RrEjnaV199hdtuuw0///wzBg4cKDqO22GhJCKHsNmsyDp7ErlZGcjNSkdeVgbyc87BaimHzWaDdP6GfW9ffwSGRiAwJAJBoREIjWwA/6BQh+WaP38+JkyYgHnz5uG2225z2HX0LDs7G23btsU111yDZcuWceqbDEHTNPTt2xeZmZnYvXs3zGaeV+9MLJREZBeZZ07g4J5tSDuYjKP7d+Hkkf2wWsorPy7J8t82Qr7wslNxjJvtH6tA/YNCEdMqHk1axiG6ZXvExnWBp7dPnTMePXoU8fHxGDFiBObNm1fn53NlS5cuxciRI5GUlITJkyeLjkNkF7t370anTp0wc+ZMPPLII6LjuBUWSiKqFVVVcezAHuz+dQ12/rIKZ08cBnBhMUn1twmpiiTJkCQJqmqDYjKjdaee6NhzMOK6DUBQaESNn89qtaJv3744ffo0du3ahcDA2i8AMIpJkyZh6dKlSE5ORsOGDUXHIbKLadOmYc6cOThw4AB3M3AiFkoiqpGC3CxsWfk91i/+EjmZZ512SsaFLXMACW0698KAhElod22/ah+L+OKLL2LGjBnYtGkTevbs6diwLiInJwdt27ZFhw4d8OOPP3LqmwwhJycHsbGxGDZsGObMmSM6jttgoSSiaklLTcaaHz7HHxtWQFNtQjbzvuBCiQ0Oi0L/hEnoO+I2ePv6V/n4rVu3onfv3nj22WfxwgsvOC+oC1ixYgWGDx+Ozz//HFOmTBEdh8guPvvsM9x5553YsmULevToITqOW2ChJKIrSj95FItnv4E/N/2kqyMHL5AkGV4+fhg+cRr63Tjhku118vPzER8fj6ioKGzatMmuWwQZxe23346FCxciOTkZjRo1Eh2HqM5UVUXXrl1hs9nwxx9/QKnmTAbVHgslEV1WQW4WliS9jV9+/AYSJKdMa9eJJCEwJAKj73gc3QaNqpy+nThxIpYsWYLdu3cjJiZGcEh9ys3NRbt27dC2bVusXLmSU99kCNu2bUO3bt3w4Ycf4p577hEdx/BYKInoEts3/oh5bz9dsV+i3ovk31UcrI1WnXpi8qOvYtXajbjtttswd+5cTJgwQXQ6Xfvpp58wbNgwfPLJJ7jzzjtFxyGyiylTpmDJkiU4ePAgQkPrvh2ZpmkozM9BXlYGCnKzYLVaoKk2yLIJJrMZAcFhCAyNhI9fgNu9MWOhJKJKBblZmP/Os9jxy8rKcuaKZEWBopiw9UAW2nQdiPlffSU6kkuYOnUqvv32WyQnJ/P4OjKE9PR0tGzZEuPGjcOHH35Yo88tyMtG2oG9SDu4F8cO7sXxg3uRn5NZrV0sFJMZgaERaBIbV3niVXRs+zodL6l3LJREBAA4lLwd7z97F0qKClxrVLIKmlbRidt07oN7nnvPaafQuLK8vDzExcUhNjYWP//8s9uNsJAxvfvuu3jooYewfft2dOrUqcrHaZqGM2mp2L11DXZsXoW0g8kANMiyAg3a+V0makaSZUiouKdTkiQ0bdMJHXsNQYfu1yGyobFuwWGhJCL88uO3mP/OM9C02r1o6pkky4ho0ATT/282wus3Fh1H91avXo0hQ4bwvjMyDKvVio4dO8Lf3x+bN2+GLMsXfby4MB+//bwI6xbPQcapY+e3KNPwvwMY7KfiTZoETVNRv0ksrhuViC4DbrTLwQ2isVASuTGbzYrvPnwJ6xd/KTqKQ8mKAk8vH9z7wodo1ZFbiFzN3Xffjfnz52Pv3r1cyESGsGHDBvTv3x9z5szBpEmTAAAZp45h1Xef4tfVC2C1Wioe6MRKJEkSNE2Dh5c3el1/CwaPnYqQiPpOu769sVASuSmrpRyfvDQdu7f+LHRPSWeR5IqTd+5+7n107DlYdBxdy8/PR1xcHJo1a4Y1a9ZcMqJD5IpuvfVWbNiwAdt/24INi7+o2MFCknSxFZosK5BkCQNGJeL6W++FX2Cw6Eg1xkJJ5IaslnJ8+MK9SP59g1uUyUqSBAkS7nr2XVzTZ5joNLq2Zs0aDBo0CO+99x7uv/9+h16rKD8XJ46kIOfcWeRlpSMvOwO5mRnIzUpHeVkpbFYLoGmQlYqVtP5BoQgKi0JgSDiCQiMRFBaBqMbNEV6vMe/7pCodO3oEtw7thvaNAyBL+twKTZJlmD08MXzidAwacwcUxXX2zWWhJHIzVqsFH894AHt+XeNeZbKSBEmWcO/zHyK+5yDRYXTtvvvuw5w5c7B37140bdrULs9ptVpwOPlPHEnZibSDyTi6fydyzp2t/PiFkRrVpkLTqr6fV1ZMkICLVtx6evsiOrYdmrTsgCaxcWjZsTv8A0Pskptc27EDe/D5q48g/cQR0VGqrXHztpjy1Juo3yRWdJRqYaEkciOapmH+f5/Bph+/cdktgexCkiDLCp54+1s0bdNRdBrdKiwsRFxcHBo3boz169fXeuq7qCAPyb9vwO6ta7B323qUlRZDOv9cjlgEpigm2GxWSJKEmNbx6NhzCDr0GIioRvYpxeQ6bDYrls15Bz99/WHF9LYORyWrIisKAAkJtz+CwTffpftbT1goidzIhiVz8dWs50XH0AVJluHrH4RnP16O4LAo0XF0a/369RgwYADeffddTJs2rdqfZ7NZsee3ddiwZB7279wKTVPFHN15/jYHTVMRXq8x+gwfjx5Dx3Dk0g0U5efiwxfvQ+qebS4/G9OhxyDc8a+34OXtKzpKlVgoidzE/l2/4u0nJhpuW6C6kBUFDWJa4sl3foCHp5foOLr1wAMPYPbs2dizZw+aN29+xcfm55zDLz9+hw1L5iIvOwOyrOhqVEiSJMiKgmv7jUC/kRMR06oD77s0oNNpqXj36SnIPXdWV99/tSXJMqIaNsW0l2cjLKqh6DiXxUJJ5AZyMs/ihTuGoLSkiIXyHyRJRreBCbj9yTdER9GtwsJCdOjQAfXr18fGjRsvO/WWk3kWy+e+iy0rv4emale8/1EPLoyWRrdsjzF3PoWW8d1ERyI7ObB7G2Y9PQVWS7khyuQFsqzAy8cXD8+ch+gW7UTHuQQLJZHBaZqGd5++HSk7tuhiewy9um/GJ4jvMVB0DN3atGkT+vbti7fffhsPPfRQ5Z8XFeRh1Tcf4ecFs6Gpqsv9Ar8wgtq6Uy/cdOeTaNyirehIVAd//bkZ7z0zFTab1ZBvnmVZhtnTCw+/Pg9NW8eLjnMRFkoig9u66gckzXxCdAxdkyQJvgHB+M8Xa+AbECQ6jm49+OCD+OSTT7B79240b9YMaxd9gWVz3kFZWYnL//K+MGJ5bb/hGHvvMwgKjRAdiWrowO5teOepybBZLS5/z+SVSLIMT09vPPbWN7p6A8RCSWRgOZln8dztA1FWUiw6iu7JsoJr+w/HHf96W3QU3SoqKkJ8fDwaRgbjurgoHE9NFh3J7mRZgYenF8ZNn4FuAxN4f6WLOH3sIF6+fxQsljKXf3NTHbIsw8vXH89+tByhkQ1ExwEA6HsNOhHVyfcf/R8s5WWiY7gEVbVh29olOLB7m+gouuXt5YVH7xiDph7ncPzQPtFxHEJVbSgtKcYXrz2K956ZitysDNGR6CoK83Lw7vl7Jt2hTAKAqqooLS7ErH9P0c2AAQslkUEdT92H7RtW8L7JGpBlBT988oqhp8tqKyfzLF6dfhN2rPkWiiwZfB/Tir/bvj824bnE67Br6xrBeagqVqsFH714H3Iz013u/t26Um02nDl+GLNfexSqDoo0CyWRQS349LXzG+NSdamqDWkH9mDX1p9FR9GVI3/txH/uHm7YUcmqqKoNpaXF+OC5u/HTVx/wjYYOLU16G6l7f3e7MnmBpqrYuXkV1i6cLToKCyWREe3f9StSdmzm6GQtSLKMBZ+8yq/deVtXL8DrD9+CooJc9/yaaBoADYtmv4FP/286ykpLRCei847u341V337Mog9g4WczcVbwsZIslEQGtPLrjyDLHJ2sDU1VkXHqGPZsWy86ilCqquKHj19B0uuPQzXoFiw19eemn/Da9Jt4X6UOWMrL8PkrD0OSWGMAQNNUzH71EaFv+vhfgshgMk6n4a8/f3HbKSB7kGUF6xd/KTqGMKrNhrlvP43V338qOoquaKqK02mpeP3BscjOOC06jltbMe89nDudxte581SbDccO7MG6xXOEZWChJDKYTcu+4uhkHamqDSk7NiPj1DHRUZxOVVUkzXwCW376TnQUXVJtNmRnnMZrD45BVvop0XHcUs65M1j13Sec6r6MpXP+i+LCfCHXZqEkMpDyslL88uM3fNduB7KsYOOy+aJjOJWqqpj79tP4bc0i0VF0TVVtyMs+hzceuRW5memi47idZV++w1swqlBWWoxV334s5NoslEQG8tefm1FSVCA6hiGoqg2/rVmsi+04nGXx5zM5MllNqs2GnMyzePOx8fyZc6Izxw9jy8rv+aa5Cpqq4ucfPhfyRoeFkshA9vy6BrJiEh3DMApyswx5Gszl/LZmMVYKGtlwVarNhnOnj+PTl6a75wp4AVZ/9wkkmdXlSlSbDWsWfuH06/K/CpFBqKqKnZtXQ7VZRUcxDFlWsPvXtaJjONzR/bsx5w2e914bqmpD8h8bsfiLN0VHMbyigryKWQOW9ytSVRt+WfG1009JY6EkMohj+3ejqCBXdAxDUVUbdm5eJTqGQ+VmpuO9Z6bynrQ6WvnNR/h93VLRMQxt66of+Ia5mkqKCrB9449OvSYLJZFBpOzcCplTQXZ3+thBFORli47hEKrNho9m3FexaTkLZR1J+OL1x3Hm+GHRQQxJ0zSsWzzH2Cd+2pEkyVi3KMmp1+RvHyKDSDu4B3ytdYzjqcY8cnDd4jk48tdOTiHahVaxufRrj/Lr6QAnD6cg6+xJgK9y1aJpKtIO7nXqfqkslEQGcTRlN6ctHUCWFRw/uFd0DLtLP3kUCz97XXQMQ1FtFWfBr1kg/lxlo9n96xrOwNSUJGGPE+8B538dIgMoyM1CXjaPg3MEDRqOGaxQqjZbxUgat15xiEWzZ3Lq2852bF7F2zJqSJIk7Nz6s9Oux/1FiAzg1NEDoiNcVVZBGf44nIPswnKUWlSYZAmBPma0aRiAFvX8RMerkqaqhts6aOPy+Tiaskt0DMPSVA1JMx/HU+8ugCRJouO4vLzsczh5OEV0DJejqSoO7PoVZSXF8PT2cfj1OEJJZAA5LnBaR5lVha+XCdc2C8HQDpHo2zYc/t4mbPjrHHYczREd74rysjMNc8xbaXEhlnzxlugYhqaqNhxN2YVdThwdMrKj+3eLjuCyVJsNJ484p4yzUBIZQF52hu7P764f7I3ercLQop4f6od4IzrMBwPaRSAiwBP7T+n7pBGrpQylxYWiY9jF6u8/48kuTiDJMhZ88ips3Oamzo6n7oWs6Pv1Ta8kSULaQefMsLBQEhlAXlY6JNk1p9Y8zTJkF5gWzM1y/XtU83Myseq7Twwz2qpnmqoi49Qx/PYzz0Wvq2MH9nDBYS1Jsow0J92yw3soiQwgLzsTqs01XnA1TYOmVUyBH80owsnsEvSMDRUd66rysjNQr3Ez0THq5MevPoDVUi46hvuQJCye/Sa6DLgRZg9P0WlcVtrBZF2+CTqbW4pdx3KRnlcGm6rB11NBi3p+6BQTLDpaJdVmw7EDe5xyLRZKIgMoLy2BprlGodx8IKtyiluWgB6xoWjdMEBwqquzlJWKjlAnRQV52LhsPkd6nEnTkJedgd/XLUXPoWNFp3FJqs2GQh0eLHDobCE27DuHppG+6NcmHGZFQn6JFcVl+rvFITfzrFOuw0JJZABWq+uMOnVsEoRW9f1RUm7D8cxibD2QBatNQ/voQNHRrshm1d8viprgsXViSJKEdYvmsFDWUn5ulu5GJ4tKrfhlfyZaNfBHr1ZhlX9eX2CmKykpKoClvMzho+S8h5LIAFxpaxI/LxPCAzzROMwHvVqFoVUDf/x+OBsl5freE1Fy4U2VVVXlsXWCaJqGE4f/wjGuVK6VvCz97WCx/3QBrDYNHXT+Jvjv8nMyHX4N132FJKJKisksOkKthQd4QtOAghKL6ChX5MqrTPfv3MJj6wSSFQXrl84THcMl5edmiY5wibO5pfA0ycgttmDBtlP4bN1RzN2Uhl/2Z6Lcqs9bSgpYKImoOry8fFx2BO10TikkAP7e+i7Fnl6O3xjYUTYsne/ShdjVqTYbfl+3FMWF+aKjuBybRX9vNIvKbLCqGtbuzUCzSF8M6xiF9tGBSD1TiJW7zupuih4ArFbHfx15DyWRAQSGRUKWZdh0vODil5RMmE0SwgM84eOhoNSi4kh6EY5kFKF940B4e+i78ASFRoiOUCtlpSXYu209VJu+bykwOpvVguTfN6DLgBtFR3EpejweVNM02FQNnZoFI75JEICKfXYVScKvqdk4nVOKBiHeYkP+g80JP/+uOaRBRBcJDInQ/Tm3EYGeOJdfhq0HsrBi51lsSslESbkN/dqEo2uLENHxriowxDULZcqOLbA5YXSCrkxWFOzaukZ0DJejxwMbvMwVmRqGXlwaG4ZVzGJkFpQ5PdPVKE6YoeAIJZEBBIaE6347mJb1/dGyvr/oGLUiyQoWLl6CFi1aoEWLFggMdJ2b8ff8ugayYuIKb8FUmw17f1sHq6UcJrOH6DguQ49fqxA/D2TkX6Y0np/qlqC/RZImJ9xnz0JJZAAhEfVERzC0ghILxo8fX/nv4eHhaN68eWXBvPC/5s2bIyBAP3tqqqqKnVtWs0zqRFlpMVL3/oHWnXqKjuISioqKkFtQJDrGJWIifLD/dAFOZJUgzP9/W/GcyCoBUDEbozf+wWFXf1AdsVASGUCDmFaiIxiWLCsYcP2N+GDZCzh06BBSU1ORmpqKQ4cO4eDBg1ixYgWysv63EjUiIuKSknnhn/7+zh2hPZ6ajKL8XKdek6omKybs3bbe7QtlQUEBzpw5g9OnT1/0z3/+WUFBAbw9FEzo3Vh05Is0DPVB4zAf7DyaC03TEBnohXP5ZdhxNBeNw7wRFeQlOuIlAkPCHX4NFkoiA/DxC0BoZANkpZ8SHcVwNE1DdGw7BAUFoXPnzujcufMlj8nJyaksmRcK519//YUlS5YgJyen8nFRUVEXlcy/l05fX1+7Zz+2fzcgSeAGlPqg2qw4krJTdAyH0DQNBQUFl5TEy5XGwsLCiz7X19cX9evXR7169VC/fn107Nix8t+joqLw7at36e57+Lp24dhxNBf7TxVgx9Fc+HoqiGsUgE5N9XPs4gXevv5OuXWAhZLIIJq27oicc2d1uSrSlWmaisYt4q74mODgYHTp0gVdunS55GPZ2dmVJfPC/5KTk7Fo0SLk5uZWPq5evXqXnUJv3rw5fHxqt2VRWmoyZFnhlLeOnDj0F1SbzWW2cdI0DXl5eVWOIv79n8XFxRd9rr+/f2UxbNiwIa699trK0vj3f15t5P6nj0KdsjF3TZgUGV2ah6BLc/0vKAwOj3LKdVgoiQwiumV7bN/4o+gYBiShcfM2tf7skJAQdO3aFV27dr3ozzVNQ1ZW1kVT6Kmpqdi1axe+//575Of/b8/CBg0aXDKF3qJFCzRr1gze3lVvT3IkZRfLpM5YysuQfvIo6kU3F5pD0zTk5ORUa+q5tPTic+wDAwMrC2Hjxo3RrVs31KtX76KSWK9ePfj5+dkla+PYOOz7fYMu93fUO1lR0KRle6dci4WSyCDaXNMTP2j6XuntciQJMS3bw9vX/vc+SpKEsLAwhIWFoXv37hd9TNM0nDt37qIp9NTUVPz555/45ptvUFBQUPnYRo0aXXYKvXGjhkg/ccTuuanujh3c67BCqWkasrOzrzjlfOH/l5VdvFI5ODi4sgw2bdoUPXv2vGQ0sV69erUeMa+tJrFx+Gv7JmjcS7XGNPXqMyz2wkJJZBANYlohKDQSuTo8+9ZVSZKEjr2GCLluREQEIiIi0KNHj4s+pmkaMjIyLhnZ/P333zF//nwUFVWsig3z98SoLvWdnp2uTFFMOHkkBcCoGn2eqqrIysq64pTz6dOncfbsWZSXl1/0uSEhIZWFsHnz5ujTp88lU89RUVFXHO0WKTo2jhvz19KFe8CdgYWSyCAkSUKn3kOxYdk8vvjaiaaqaN/9OtExLiJJEiIjIxEZGYlevXpd9DFN03D27FkcOnQI29avwMFN3wlKSVVRNRW5mWf/9++qinPnzl1xyvnCn1mtF9++EBYWVlkIW7VqhQEDBlwy9RwVFQUvL/2tOq6JmFbOmbI1IlkxoWHT1k65FgslkYG0734d1i2eIzqGYYRE1Ee9xmLvdasJSZIqC4Wad8LlC2W5VcXOo7nIKixDVkE5Si0qOsUE4RodrqStLk1VsWXjOny6pAtOnz6N9PT0S4pieHh4ZSFs164dBg0adNGU84URRQ8P/W367QgBweFo1LwtThz6CwDvo6wuSZbRqmN3eHo5Z+SZhZLIQFrGd0NAcJjuVkS6IkmW0ev6myFJ+jv1ojrystKhKCbYXHhRTpnFhv2nCxDi54HocB8cOF149U9yAbJqQfv27TF06NBLpp4jIyNhNjv+VBNX06nXEJw6kgJVZaGsLk3V0LHnYKddj4WSyEAUxYR+Iydi2Zfv6P4oRr2TAPS6/hbRMWotNzPD5cdy/LxMmNSnMSRJQmm5zTCF0ttDxvuffSY6hkvp0OM6LEl6S3QMF6OhfbcBTrua7LQrEZFT9Lr+Fh2eJOtaZEVBfM8hCAqLFB2l1vJzMl1+yyBJklx2hPhKLOVlKCspvvoDqVKDmFYIr98Y4KtbtUiyjJhWHRAc7rxjeVkoiQwmKDQCHXsNdZmNk/VItdnQb+QE0THqxFJeevUHkTBWS/nVH0SVJEnCgITJ7JPVpKkqBoya7NRrslASGdCw8fdxpXctyXLFRsAtO3QTHaVObFbXHp00Ole+t1WU7oNvgsnE+0urw8cvAJ16X+/Ua7JQEhlQo+ZtcG2/4RylrAVVtWHM3U+7/FSr5vJ3UBobT32pOR+/AHQbmMDXtauQZQV9bhgHs4enc6/r1KsRkdOMnPIowF9aNSIrCtpe2wex7S89k9vVKArXXOoZ//vUzpBb7mYZvwpZMeG6m6Y4/7pOvyIROUVE/Wj0HTEBsswf8+pSbSpGT31SdAy7cPboBNWMYmKhrI3IhjHoPexWyDJHKS9HkmQMuflOBIaEO/3a/E1DZGAjb38EfoEhLj996wySJGHQ2DvQqJlzTpVwNL/AEP7S1SlFMcHLx090DJc1fMI0TntXwcvHF4NvvlPItVkoiQzMxy8Akx9/nVNEVyHLCsLqNcLIxEdER7GbwJBwQ7yROJFZjCPpRUjLrNhmJ6fIgiPpRTiSXgSrzTX3WvUL4pu8uggKi8TQW+8B+DW8xMjER+Dt6y/k2iyURAYX16UfegwZw6nvK1BVFVOeegsenq595vHfBYVGQlVdf6X/5gNZWJucgU0pFac/Hc0owtrkDKxNzkBJuWv+/YLDokRHcHnXj7sXUQ2bchT+PFlW0LRNR/QbOVFYBt7EQeQGbr73GaTs2IK8rAxDlAx7u378vWjWppPoGHYVGBpuiJHpcT0biY5gV5IkOXWzaaMye3jijn+9hZfvHyU6ii7IioIpT74pdOCAQxZEbsDHLwDTX54NxWzmNNHfyLKMdtf2xcjJD4uOYndBHAXTJVlREBTquicw6Ul0bByGjb+Pr2kAbrrrKUQ0aCI0AwslkZtoENMSdz79DrcSOk+WFYRFNcLUf79jyBv86zVuLjoCXYbNakP9Ji1ExzCM4ZOmo1XHHm479S3JMjr3u6HiFCHBWCiJ3Eh8z0EYefujomMIJ8kyPLy8Me3l2fDxCxAdxyF8/AIQEtlAdAy6hIboFu1EhzAMRTHh7mffQ0hEfUO+MbwSWVHQoEksJj/2ui4WebFQErmZYePvw3WjE0XHEEaSZZjNnnj49bmIbBgjOo5DNW0d77YjN3olywoaNG0lOoah+PoHYtrLs2E2e0Jyk8WHsqzA2zcAD7z0GTy9vEXHAcBCSeR2JEnCzfc+i74jJoiO4nQXyuRDr81BTKsOouM4XHSLOB7BqDP1optz03kHqNe4GR58NQkmkxmSZOxqI8kyPL198Ogb8xASUV90nErG/qoT0WVJkoTx01/EoDF3iI7iNLKswNPTG4+8MR/N23UWHccpolvGQVNdc69GI5IVE2JaxYuOYVjN23XG9Je/gMlsNuxIpSwr8PTywSMz56FhU30dwmDMrzgRXZUkSRhz99O45f7nIEmyLu7BcRRZVhAcXg//em8RmraOFx3HaZq16cTRMB1RbVa0vba36BiG1jK+Gx5+fS48PL0Md0+lrCjw9vXH429/i+jYONFxLsFCSeTGJEnCdaMS8eCrSfD09jXcC3AFCbEduuKZj5ahXrR7rXw2e3ii7bV9eR+lTsiKCW079xEdw/Cat+uMf3+wFCERDQzzvS/JMuo1bo5nPlqm2+NhWSiJCG2u6YVnPlyKiPpNDDNSeWHKa9CYKXjw1ST4+gcKTiRGfM9B3MxeByRZRsv4bjzD20miGjXFMx8uRauOPURHsYtOvYbgqVkLEarjnRtYKIkIABDRoAme/Xg5htxyNyRJcul39pIsIzAkAo/MnIex9/wbiuK+h4LFdelnmDcJrkzTNHTsMUh0DLdy4UCHEZMehCzLLveaJisKFJMZY+/5N+569j3drOauCgslEVUye3hi9NQn8K9ZCxFev7HLFZELvzB6D7sVM2avNszoRF34B4WiaeuOhl2k4DI0DaZA/azIdReyomDEpAfx7w+XISq6GQDXeU2LbhGH5z/9CYPG3OESr8WSZoTDXonI7izlZVi/ZC5WzJuF0uIiaJp+VwtLsgxNVRHTOh5j7voXWsRdKzqSrvz68yJ88Ro3tBdHQnqBBUt/P4EOHTogMTER48ePR0REhOhgbsVqtWDVt5/gx6/eh9VSrssdECRZhqeXD0YmPoz+Iye51H3tLJREdEXFhflY9d0n+Pn7z2CzWXX1InyhSEY2aooxd/0L7bsNcIl38s5WkJ+HJ27pBpulTHQUt3XPCx/hdG45kpKSsHTpUmiahhtuuAGTJ0/GDTfcAA8PD9ER3UZ+TiZ++voDrF8yF9Cgi3uMZVmBrCgYNOYODLnlbpc8wYuFkoiqJS/7HDYum4+NS+ehIC+7ssyJICsKVJsNzeOuxYCEyejUa4hLvZN3lhMnTuDDDz/Ep59+iqaBNrRvEuRCE37GERQWiVfnb678Hs3KysLXX3+NOXPmYPv27QgNDcVtt92GxMRExMfH802Rg2mahtysdOzdth5bVy1A2oE9sNmsTs8hSTI0TYW3rz96DbsFg8ZMRVCo645as1ASUY1YrRbs3voz1i3+Eql7/gCgQZZlqE4ql4rJjM59b8D14+9F/egWTrmmK9E0DZs2bcKsWbOwePFi+Pj44Pbbb8dtt4zGZ89NAXhyjlNJkoyEKY/i+nH3XvbjycnJmDNnDubOnYv09HTExcUhMTERt912GyIjI52c1phyMs8i7cBepKUm49iBPTh2YDeK8nMBALIsVxY7Z7yGVZzio0HTNDRu0Q4DRk1G5743wMPTy+HXdjQWSiKqtfycTOzdth67tv6MfX9sgtVS7vBrXnjxb92pF/onTEL7rv05OgmguLgY8+fPx6xZs7B37160bt0aDzzwACZOnAh/f38AwAfP3409v62DahM/xecuzJ5eePWrzfAPDLni46xWK1avXo2kpCQsWbIENpsNw4YNw+TJkzF8+HB4enKD+pqwlJfhz00/Ye2iJKQd2AOgYh9QTbXBmbVHlhVomgZNUyErCmLbd0V8j0Fo3/06hEU1dFoOZ2ChJKJaU1UV+7ZvwvrFXyL59w2VZc8ZZFmBqtoQGBqB/iMnotf1NyMgONwp19aTo0eP4v3338fnn3+OvLw8jBgxAtOmTcN11113ydTp6bRUvDh1qFN/obozSZIwfOJ0jJj0YI0+Lzs7G9988w3mzJmD33//HSEhIRg/fjwSExPRqVMnTolfQeaZE9i0/CtsWvE1igvzhd2a4+HljaDQSDRp2R7Rse3QuEUcolu0NfQ+pCyURFQrOzevwrcf/AfZGacr72kURZJkSLKE7oNvwpi7/mX4Tcw1TcOaNWswa9YsLF++HEFBQbjjjjtw3333ISYm5oqfmzTzCfz28yJdLEQwOh//QLw6/5c6lYi//vqrckr8zJkzaNu2LRITEzFhwgRERUXZMa1r++vPX7Dmh9lI/mPT+VtwnPv9XVHyJbS9tg8Gj70TrTp2d+r19YCFkohqpDAvB1/Peh5/bFgOSZJ0NdolyTL8AoIx+bHX0L7bANFx7K6goABffvkl3nvvPezfvx/t27fHtGnTMH78ePj4+FTrObIzTuPfk/rBZnX+IgR3c8v9z+G6UYl2eS6r1Yo1a9YgKSkJixcvhtVqxdChQzF58mSMGDECXl6ufw9ebRTm5eCrWc9j+4bllbMWIl14c91/5CSMmvo4vLx9heZxJhZKIqq2nZtX4cs3/4WSogLhL9xVuVByuw0ajVvue9YQo5UHDx7Ee++9h6SkJBQXF2PUqFGYNm0aevfuXavpzx8+fgU/L/hcV1tAGYkkywgKjcBLc9bD7GH/ex9zcnLw7bffYs6cOfjtt98QHByMcePGITExEZ07d3abKXE9vx5JkoygsEhMefJNtIzvJjqOU7BQEtFV6XlUsiquPlqpqip++uknzJo1C6tWrUJYWBjuuusu3HPPPWjUqFGdnru0pAjP3z4IuVkZut6w3pU99NoctLmmt8Ovs3//fsyZMwdffvklTp8+jdatW1dOidevb8yTef4+Kqnn16ML92+6y2glCyURXdH+nVvx8X+moaQwX3ejAFdz4ZdNjyFjMOGhl2Ay63/z6NzcXHzxxRd4//33cfjwYXTu3BnTpk3DzTffbNdpzf07t+KtxyfY7fmogiTL6Dl0LCY98opTr2uz2bB27VokJSVh0aJFKC8vx5AhQzB58mSMHDnSMFPiu7auwZyZT+hyVLIqF0Yrpz79NlrEdREdx2FYKImoSjs3r8LH/5nm9K027E2SJLTu1Av3vvgRPL28Rce5rH379uG9997Dl19+CYvFgrFjx2LatGno2rWrw6Yw57/zLDat+JpT33YiyTICgsMxY/ZqePv6C8uRl5eH7777DklJSdi6dSuCgoJw6623YvLkyQ79fnK0dYu/xDfvvaDrUcmqSLIMSZJw57/fxTV9rhcdxyFYKInosrauXoA5M5+o2AbbAC8TkiwjpmUHTH/lC90ca2a1WrFs2TLMmjUL69evR1RUFO655x7cfffdTlnBWzn1nZ3BUmknzprqrq6DBw9WTomfPHkSLVu2RGJiIiZOnIgGDRqIjlctmqbhx/nvY0nSW6Kj1I0kQQIw6dFX0XPoWNFp7I6FkogusXXVD0ia+YToGHYnyzIaNm2Nx976Wuh+cFlZWfjss8/wwQcf4Pjx4+jRowemTZuG0aNHO/1M56P7d+P1h8Zy1bcdDL3lboy+80nRMS7LZrNh/fr1SEpKwsKFC1FWVoaBAwciMTERCQkJ8PbW58g9ACya/QZ++uoD0THsavz0Geh3o7FuOWGhJKKL7PhlJT6ecb/LTSlVlyTLaN6uMx56dY5DVuBeyc6dO/Hee+/hq6++gqZpGDduHKZNm4ZOnTo5Ncc//bZmMWa/+ojQDK5MkmW07dwHD/znU5c4tSk/Px/ff/89kpKSsHnzZgQEBOCWW25BYmIiunfvrqsp8ZXffISFn70uOoYDSLjjX2+i63UJooPYDQslEVX668/NePfpKRU3uxv4pUGSZMR17Yd7X/wIimJy6LUsFgsWLlyIWbNmYcuWLWjUqBHuvfdeTJ06FeHh+jnZZ8Gnr2LVt5+IjuFyZEVBWFQj/PuDJULvm6ytQ4cOVU6JHz9+HC1atKicEq/rbgJ1tXH5V5j/32eEZnAkSZJx34yP0aH7daKj2AULJREBAPKyz+G52weitLjQsKOTF5EkjJz8MG6Y8IBDnj49PR2ffPIJPvroI5w+fRr9+vXDtGnTcOONN8JkcmyJrQ3VZsOsZ+5Ayp+bofJ+ymqRZBmeXj545sOliGjQRHScOlFVFRs2bEBSUhIWLFiAkpISXHfddUhMTMSoUaOqvXG+vRz5aydee3CMsV+LJAkmkwde+HwlIupHi05TZyyURARN0/DBc3dj77b1LrMVhz3IioJnPlyGhk1b2e05t23bhvfeew/fffcdFEXBxIkT8cADDyAuLs5u13CU0pIivP34RKQd3MNSeRWSLMNk9sAjM+ehWRuxtyzYW0FBAX744QckJSVh06ZN8Pf3x80334zExET07NnT4VPi5WWlePHOocg6e9Lw34eyoiCmVTwef/tbyLIsOk6duHZ6IrKLP9Yvw+5f17hVmQQAaMDsVx+B1Wqp09OUlZVh7ty56NKlC7p164YtW7bg5ZdfxqlTp/Dxxx+7RJkEAC9vXzz4ahIaxLSCLOv/XkBRJFmGopjw4CtJhiuTAODv74/bb78dGzduxKFDh/Dwww9j7dq16N27N2JjY/HSSy8hLS3NYddfOue/yDxzwvBlEqiYGTi8709sWDpPdJQ64wglkZu7MNVdUlxo6Psmq1SHqe9Tp07ho48+wieffIKMjAwMHjwY06ZNw/XXXw/FBRZnVKW4MB9vPzERxw/t43ZC/3BhZPLBV5IQ2964m1T/k6qq2LRpE5KSkvDDDz+gqKgIAwYMQGJiIkaPHg1fX/ucAuMWU92XYTJ7uvzUNwslkRtz16nuf6rJ1LemadiyZQtmzZqFhQsXwsvLC4mJibj//vvRqpX9ps5FKy0uxKxnpuLQ3j/c7pd7VWRFgaeXDx58JQlN23QUHUeYwsJCLFiwAElJSdiwYQP8/PwwduxYJCYm1vp8ecC9prr/yQhT366Zmojswm2nuv+pGlPfJSUl+Pzzz9GpUyf07t0bu3btwltvvYVTp05h1qxZhiqTAODl44eHX5+L3jeMEx1FFyRZRkT9Jnjmw2VuXSYBwM/PD5MnT8b69etx5MgRPP7449iwYQP69u2L5s2bY8aMGTh27FiNn9edprr/yQhT3xyhJHJTlvIyPHFrDxQV5LrnVPdlTHjo/9Bn+MUFKi0tDR988AE+++wz5OTk4IYbbsADDzyAQYMGuexIQk1tWDoPX7/3AgC47RR4+24DMPXp/wrdEF/PVFXF5s2bkZSUhO+//x6FhYXo168fEhMTcdNNN8HP78pft+yM0/jXbX2gae75/XWBp5cPZn6/DV7e9rmFwJnc49WQiC6x45eVKMrPYZk8T5IkrF30BTRNg6ZpWLduHUaNGoWmTZvi448/RmJiIlJTU7Fs2TIMGTLEbcokAPS7cQIemTkf3j5+brVYRzr/33jY+Ptx34xPWCavQJZl9OnTB7Nnz8bZs2fx5ZdfQpZlJCYmIioqComJidiwYUOVo4+/rPgG0M9+6sKUlRbj97VLRceoFY5QErmpV6aNxrEDe9x2xKkqLfqOQ9I3i/HXX3+hbdu2mDZtGiZMmGC3RQeuLD/nHOa+/Qx2b/0ZkCRDvxmRJBlBYZG4/ck30Cq+u+g4ListLQ1z585FUlISDh8+jCZNmmDy5MmYNGkSmjZtCgCwWsrx+C3dK97gujlJkhDVuDle+Gylrk4sqg4WSiI3dOJwCv5z9w2iY+iOqmo4mlGMoJa98MADD6Bfv34u96LuaJqm4Y8NyzH/v8+grKTYcPffSrIMTVXR78aJGH3nEy459ahHFxazJSUl4bvvvkNBQQH69OmDxMRENIvyw7w39XkGuihPvvM9mrW9RnSMGmGhJHJD8/77b2z+6TuoNmOVAXuQZAUzv/0VAcFhoqPoWn7OOXz17vPY8ctKyLJigGIpAdAQVq8RJj36KkclHai4uBiLFi1CUlIS1q5dixs710d4gAdnvM+TFQWd+96AqU//V3SUGmGhJHIzxYX5ePzmrrCUl4mOokuSJCPh9kdw/fj7REdxCUdSduGHT17Bob1/VI7uuRxJgn9gCEYmPoIeQ8fAZDKLTuQ2/vx1Iz5+9nbRMXRHVkx4/ZutLvXG1n3uKiciAMBvaxbDUl4uOoZuaZqKdUu+5OhtNTVtHY/H3/oG01/+AvWimwOAayzckSRAkuDp7YvRdzyOl+dtQp/h41gmnezA9nWQXfgQAEfRVBVbVn4vOkaNmEQHICLn+mP9MtERdC8vKwNHD+w25LF6jiBJEtp16Ys2nXtj3x8bsX7JXCT/vhGyLOtuKlxWFKg2G8LrNcKAUYnoPmg0fPwCRMdyW8m/b+Cbt8vQNA0pf27G9ePuFR2l2lgoidyIqqo4fmgfAN7pciWSJCHtYDILZQ3Jsoy4rv0R17U/Ms+exKblX2HT8q9QXJgPWTFBtVkF5aq4x1OSZHToPhD9R05Ey/juXHAlWElRATLPnBQdQ6c0HDu4F5qmucz3KQslkRtJP3kUlrJS0TF0T5JlHE/dKzqGSwuLaojRU5/AjZMfQureP7D717XY8ctK5Gaerdzf0ZH3WyqKCTabFWYPT7Tr0g8degxEXJd+8A8Kddg1qWaOH/oLfHNbtdLiQmSeOYHw+o1FR6kWFkoiN8KSVD2qzYYjf+0UHcMQTGYPtO7UE6079cQt9z2LU0cPYO+29TiSsgtH9+9CfvY5ABWjiJIsQbXZanR2uKyYIAGwnR/9NHt6oXHztohp1QFtrumNlvHdYPbwdMRfjeroeOpeSJLs9qfjXElaajILJRHpT9rB5MqRG7qy9JNHUVZaAk8vb9FRDEOSJDRs2goNm/7v3PP8nEwcT92HE4f/Qk7mWeRmpiPn3BnkZp5FYV7Opd+rkgQfX38EhkYgOLwegsOiEBgSgXrRzREdG4eIBk3c6hQjV5Z2MBmSJAndH3/DX+eQeqawyo/f2LkeIgO9nJjofxTFhOMH96Jz32FCrl9TLJREbuRoyi5dlMlT2SU4dLYQ6XllKCq1wsMsI9zfEx1jghAeoI/RJE3TcPJICu+jdLCA4DC069IX7br0vezHNU2DzWaFpqpQTGaWRQM5krJT+KKtTk2C0LqB/yV/vnp3OhRZEvp6ZLPZcOzAHmHXryn+ZBK5CVVVcfzwX6JjAABSTuWjoNSKdo0CMDQ+Et1bhKKk3IYl20/jVHaJ6HgAzi/MOcBbBESTJAkmkxlmD0+WSQOpuD9Q/IKcAB8zIgO9LvqfqmootaiIrecPWeiCmP8tzHEFHKEkchNZZ0/qZkFOz5Zh8Pa4eO+5RqHe+PbXk9h1LBcNQsRPM0uygpNH9ouOQWRIedkZ0OuCnP2nK6bAY+v7CU5SUbytlnKXuA+Yb/eI3ERJUYHoCJX+WSYBwGySEeRrRlGZPvak01QVpcVV31tFRLVXXqbPk7rKrSqOZhShQYgXArz1scl9uU4GAq6GhZLITVgs+nwBv6DcqiKroBzBvvp4Edc0lcdTEjmIXn+2Dp0thE3V0LLepfdViqLXr9U/sVASuQm9THdXZcuBTFhsKuKbBImOUqmstFh0BCJDslr0efzrgdMF8DTLaBLhKzpKJSsLJRHpic0qfnV3VbYfzsGhs0Xo3iJUN6u8AcBqtYiOQGRIikl/SziyCsqRWVCOFlF+UGT9nE6jmPUxa3M1LJREbsKk05u6/zySg53HctG5WTDaNtLXmcoenmL2nyMyOrNZf69HB05X3Gfesr5+prsBfX6tLoeFkshN6LEc/XkkBzuO5qJTTBA66miq+wJuak7kGGadvR7ZVA2HzhYiPMATIX4eouNcRG9fq6qwUBK5CbOHvl4kdxytKJMdmwThmqbBouNcQpJllxkZIHI1fgFBoiNc5Ni5IpRZVbTSwVZBf6ec34PVFejvJgYicoiA4DDRESrtScvDn0dy0TDUG43CvJGed/GCIVFHnf2dLMnwDw4VHYPIkPyDQuEfFIqC3CzRUQBUTHebFAlNI/VVKBs2beUyG/qzUBK5iYDgcN28gB/PrFg9fTKrBCezLj0Z587rYpwd6RI2mxWNW8SJjkFkWDGt4rF32zpdnAQzrGM90REuoSgmxLSOFx2j2lgoidxIk1YdkLxtvfAX8OHX6O/F+3KaxLJQEjlKk5ZxSP59AzRNH4cZ6I3NZkV0i3aiY1Sba4yjEpFdNImNgyTxx746zB6eiGwofqSUyKgat2gHVWWZvJLoWBZKItKh6Fi+gFdXo+ZtICuXHhFJRPYRzRmAK1JMZtSLbiE6RrWxUBK5Ed4TWD2KYkJMqw6iYxAZWmBIxX3ddHkNm7aCorjOnYkslERuJCg0gi/g1WCzWREd2150DCLDi23fFbLMmYB/khUFsR26io5RIyyURG6mWdtr+AJeDRyhJHK83jfcyttwLkO12dDr+ltEx6gRFkoiN9Pr+rF8Ab8CSZbRtE1HLsghcoJWHXsgrF4jAPo5O1s0WZYR274r6jVuJjpKjbBQErmZdtf2Q3BYlOgYuqWpKgaMShQdg8gtyLKMAQmTIbFPVlJVFf0TJomOUWMslERuRlYU9E+YBImv4Jfl6x+ETr2GiI5B5Da6D74JisksOoZu+AeFokOPgaJj1BgLJZEb6jl0LCTeR3kJWZbRd8RtMJn1de45kZH5+gei63UJ3KYLFbfc9LtxAkwuWLBZKInckH9QKK7tdwNfwP9B0zT0vuFW0TGI3E6/kROg2nhvNzSg9zDXfA1ioSRyU/1GTuQL+N/IsoK4bgMQGtlAdBQitxPdoh3iug1w6x0opPMzJEFhkaKj1AoLJZGbatq6I6Jbtuco5XmqasOgm+4QHYPIbU18+GV4eHrBHVd8S7KMoNBIjL7zCdFRao2FkshNSZKExMdegzu+eP+TJMvoMWQMWsZ3Ex2FyG0FhUZg3PQZADTRUZxOU1VMefJNeHn7io5SayyURG6sQUxL3Dj5QdExhJIkGf5Bobj53mdERyFye90GJiCua3+3mvquWIgz0eXf0LJQErm5IbfcjYbNWrvt1LemqZj82Gvw8QsQHYXI7UmShImPvOI2U99GmOq+gIWSyM0pigl3PPUW3OHF+58uTHXHdeknOgoRnedOU99GmOq+gIWSiNxy6ptT3UT61W1gAnoMGQOjH6EzfOJ0l5/qvoCFkogAVEx9N27e1m2mvjVNReJjr3Oqm0iHKqa+X0bHnoMNe6rXgFGJGDHJOG/kWSiJCEDF1Pe0l2cjOCzKLUrlrQ+8gHZd+oqOQURVUBQTpj79X7Ts2AOSZKC6IknoNmg0br73GUOVZQP9FyKiugoMCcejb34Nv4BgQ6+yHJn4CAYkTBIdg4iuwuzhiQf+8ynadu5tmPLVc8gYJD72GmTZWBXMWH8bIqqzsKiGePSNr+Dt62/IkcrBN9+FYbfdLzoGEVWTh6cX7vvPJ+jc9wbRUeps0NipmPToq4Z8bZU0TTP+MioiqrH0k0fxxqPjUZCTCVU1xhGNNyY+jBtue8AwIx1E7kS12bB49htY+e0nkGQJmqqKjlQtFeVRwk13PoGBN91h2NcfFkoiqlJ2xmm8+dh4ZJ095bKlUpIkaJqGW+9/HgNGTRYdh4jq6PC+P/H5q48i6+wJuEKFadS8DaY8+SYaxLQUHcWhWCiJ6IoK8rIx7+1/Y+fmVRVbeLjQS4YsK/D29cfkx15DfM9BouMQkZ2Ul5ViSdJb+Pn7z3U5WnlhVHLk5Icw+Ja7oCgm0ZEcjoWSiK5K0zRs37AC8/77DMpKinQ/WnlhVLJzvxswbtqL8A8MER2JiBzgf6OVJ6Fp+imV7jIq+XcslERUbfk5mZj/zrO6Hq28MCo58ZGX0an3UNFxiMjBystKsfKbD7Fu8ZcoLsiDJMtOH7GUZQWqakNgaAQGj52KAaMS3WJU8u9YKImoRvQ6Wnnhl0jnfsMxftqL8AsMFh2JiJzIUl6GnZtXYd3iOTjy107IigLV5tjXpwtFss01vdA/YTLiuvQz5Aru6mChJKJayc/JxE9ff4DNP32HspLiymlmZ7vwS6NZ22tw/bh70L7bdU7PQET6cuJwCjYum4dfVy+EpbwMimKCzWat+xNLUkWJtFnh5eOH3jfcir7DxyOiQZO6P7eLY6EkojopKynG7+uXYe3CL3D62EGnjApUTLcDZk9P9BwyBn1H3OZW9yoRUfUUF+Zj3x+bkJaajGP7dyMtdS/KSooB4Ool82/lEQB8/ALQpGUHNGnZHtEt49C2cx94eHo546/hElgoicguNE3D0ZRdWL90Lv5YvxyqzWq/UQEAsixDA6CpKiIbNcV1oxLRbWACvHz87PL8RGR8mqbh3JnjOH4wGccO7kX6iSMoKy1GeVkJyktLIUkSzJ5e8PTyhpePL+o1boHo2HZo3KIdQiLqG3YPSXtgoSQiuyvIzcK+7b8g7eBeHNu/G8cP/wVLWSmAaowK4OLyCAChkQ3RtHU8olu2R/O21yCmdTxf2ImIdISFkogcTlVVpJ88iuOpe5F2MBknj+xHSXEhLGWlKC8rhWqzwsPTC2YPL3h4eSMkvB6iW7ZHdIt2aNS8DXz8AkT/FYiI6ApYKImIiIioTmTRAYiIiIjItbFQEhEREVGdsFASERERUZ2wUBIRERFRnbBQEhEREVGdsFASERERUZ2wUBIRERFRnbBQEhEREVGdsFASERERUZ2wUBIRERFRnbBQEhEREVGdsFASERERUZ38P02mg90Co2rqAAAAAElFTkSuQmCC", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "node_sizes = [10000 * eigenvector_centrality[node] for node in G1.nodes()] # multiplying by 10000 because the nodes aren't visible otherwise\n", "nx.draw(G1, **opts, node_size=node_sizes)" ] }, { "cell_type": "markdown", "id": "f76aacf2", "metadata": {}, "source": [ "### TASK 2.4: Make your own example\n", "\n", "If TASK 2.3 went as intended, you should find that, for $G_1$, Node **4** had both the greatest closeness and betweenness centrality. Make up an example of a graph, $G_2$, which the node with the greatest closeness centrality is different from the one with the greatest betweenness centrality. Define and draw the graph in `networkx`, and compute the centralities to verify your result.\n", "\n", "*WARNING* You have to construct this example yourself. Do not try to use the same graph as anyone other than a listed collaborator." ] }, { "cell_type": "code", "execution_count": 7, "id": "e09a9ffe", "metadata": {}, "outputs": [], "source": [ "G2 = nx.Graph()\n", "\n", "edges = [\n", " # define two separate star graphs, wherein the highest betweenness will be the central node \n", " (0,1), (0,2), (0,3), (0,5),\n", " (7,8), (7,9), (7,10), (7,11),\n", "\n", " # create a bridge node between the two star graphs, thus having the highest betweenness\n", " (12,7), (12,0)\n", "]\n", "\n", "G2.add_edges_from(edges)" ] }, { "cell_type": "markdown", "id": "f46bca53", "metadata": {}, "source": [ "Don't remove the following cell. It will plot your network, `G2`, and identify the nodes with greatest betweenness and closeness centralities." ] }, { "cell_type": "code", "execution_count": 8, "id": "a76e5712", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Node 0 has the greatest betweenness, and Node 12 has the max closeness\n" ] }, { "data": { "image/png": "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KZooinj++ecxe/ZsvP3223j++efljkRERL/CQklEiiUIAmbOnIkFCxZg7ty5mDFjhtyRiIioDSyURKRIDocDjz32GBYvXozMzEykp6fLHYmIiC6BhZKIFMdut2PSpEn49NNPsWzZMjz88MNyRyIiostgoSQiRWlqasLEiROxceNGfPrppxg3bpzckYiI6ApYKIlIMSwWC8aNG4dt27Zh7dq1uPfee+WORERE7cBCSUSKYDKZMHr0aOzbtw+bNm3CkCFD5I5ERETtxEJJRLKrr6/HyJEjcejQIWzevBn9+/eXOxIREXUACyURyaq2thbDhg3Dzz//jK1bt+J3v/ud3JGIiKiDWCiJSDaVlZUYMmQIzpw5g507d+KWW26ROxIREXUCCyURyaK8vByDBg1CaWkpvv76a9xwww1yRyIiok5ioSQityspKcHAgQNRU1ODPXv24Oqrr5Y7EhEROYGFkojcqqCgAAMGDIDVasXevXuRlpYmdyQiInKSVu4AROQ9Tp8+jb59+0IQBJZJIiIPwkJJRG6RnZ2Nvn37wt/fH3v37kXXrl3ljkRERBJhoSQil/v555/Rr18/hIWFYc+ePUhISJA7EhERSYiFkohc6vDhw7jrrrsQGxuL3bt3IzY2Vu5IREQkMRZKInKZ77//HgMHDkS3bt2wa9cuREVFyR2JiIhcgIWSiFzim2++wd13341rrrkGO3bsQHh4uNyRiIjIRVgoiUhyO3fuxJAhQ3DzzTfjq6++QkhIiNyRiIjIhVgoiUhSW7ZswfDhw3HnnXfiyy+/RFBQkNyRiIjIxVgoiUgyGzZswKhRozBkyBBs3LgRer1e7khEROQGLJREJInVq1dj7NixGD16NNasWQOdTid3JCIichMWSiJy2tKlSzFx4kRMnDgRq1atgp+fn9yRiIjIjVgoicgpH3/8MSZPnoypU6diyZIl8PX1lTsSERG5GQslEXXa+++/j8cffxwzZszARx99BK2WbylERN6I7/5E1Cn/+Mc/8Mwzz+APf/gD3n//fZZJIiIvxu8ARNQhoijiL3/5C/70pz/htddewz/+8Q9oNBq5YxERkYz4sBMRtZsoinjxxRfxj3/8A2+99RZefPFFuSMREZECsFASUbuIoohnn30W77//PubMmYNnn31W7khERKQQLJREdEWCIGD69On46KOPsGDBAjz55JNyRyIiIgVhoSSiy3I4HJg2bRqWLVuGRYsWYcqUKXJHIiIihWGhJKJLstlseOSRR7BmzRqsXLkSEyZMkDsSEREpEAslEbXJarXiwQcfxJdffonPPvsMY8aMkTsSEREpFAslEV3EbDbj/vvvx65du7B+/XoMHz5c7khERKRgLJREdIHGxkbce++92L9/P7744gsMGjRI7khERKRwLJRE1Kqurg7Dhw/H0aNH8dVXX6Fv375yRyIiIhXwykLpcDhgNpthtVohCAJEUYRGo4FWq4W/vz/0ej18fb3yPw15sZqaGgwdOhQnTpzA9u3b8dvf/lbuSEREpBJe0ZoEQUBtbS3q6+thNpths9mu+Ht8fX2h1+sRHByM0NBQ+Pj4uCEpkTwqKiowePBg5OfnY+fOnbjpppvkjkRERCqiEUVRlDuEqzQ1NaGqqgpVVVUQBKHT19FoNAgPD0dERAR0Op2ECYnkd/bsWQwaNAhnz57Fjh07cP3118sdiYiIVMYjC6XD4UBpaSlqamokv3ZISAji4uI4JU4eobi4GAMHDkRdXR127tyJq666Su5IRESkQh5XKOvr61FUVASHw+Gye2i1WsTHxyM0NNRl9yBytfz8fAwYMAB2ux07d+5E9+7d5Y5EREQq5TGFUhAElJSUuGRU8lJCQkIQHx/P5ytJdU6dOoUBAwbAz88Pu3btQnJystyRiIhIxTyiUDocDuTn58NkMrn93gEBAUhJSeEUOKnG8ePHMXDgQISEhGDnzp2Ij4+XOxIREamcVu4AzhIEAXl5ebKUSQCwWCzIzc2F3W6X5f5EHXHs2DH069cPERER2LNnD8skERFJQtWFUhAE5Ofnw2w2y5rDarUiPz/fqZXkRK72ww8/oH///khISMDXX3+NLl26yB2JiIg8hKoL5blz59DY2Ch3DADNZx+XlZXJHYOoTfv378eAAQOQlpaGXbt2ITIyUu5IRETkQVRbKM1mM86dOyd3jAtUVVUppuAStdizZw/uvvtu3HDDDdi+fTvCwsLkjkRERB5GlYVSEAQUFRXJHaNNRUVFnPomxdi2bRuGDRuGPn36YMuWLQgODpY7EhEReSBVFsrKykpYrVa5Y7TJZrOhvLxc7hhE+OKLLzBy5Ej0798fn3/+OQIDA+WOREREHkp1hVIURVRUVMgd47KcPeqRyFlr167Ffffdh+HDh2P9+vUICAiQOxIREXkw1RXKuro6l56CIwVBENy6wTrR+VatWoXx48dj7NixWL16Nfz9/eWOREREHk51hbKqqkruCO1SWVkJD9gznlRm0aJFePjhh/HII49gxYoV8PPzkzsSERF5AVUd79LU1CTZKmpRFLFz506sWrUKubm5aGhoQExMDG6++WZMnToViYmJTl3farXCYrFAr9dLkpfoShYsWICnnnoKTzzxBObPnw+tVnU/LxIRkUqp6ujF6upqFBcXS3Ktt99+G8uWLUNUVBT69++PwMBAnDx5Et9++y0MBgOWL1+OtLQ0p+4RExPD/f7ILWbPno3f//73ePbZZzF79mxoNBq5IxERkRdR1QilxWKR5DoVFRVYsWIF4uPjsWbNGgQFBbV+bvny5fjnP/+JZcuW4fXXX3fqPlLlJbqct956Cy+//DJefPFFvPnmmyyTRETkdqqaE5PqvO7i4mIIgoAbb7zxgjIJAH379gUgzbOacp0vTt5BFEW89tprePnll/GXv/yFZZKIiGSjmhFKURQlG/FLTk6Gn58fjh49isbGxgv259u3bx8A4NZbb3X6Pk1NTXA4HPDx8XH6WkTnE0URL7zwAt555x384x//wAsvvCB3JCIi8mKqKZSCIEi2ajosLAxPP/00/vWvf+Hee+9F//79YTAYkJOTg++++w5jx47FxIkTJbmX3W5noSRJCYKAZ555BvPmzcN7772Hp59+Wu5IRETk5VRVKKU0efJkREVF4a9//StWr17d+vEbb7wRI0aMkGy7FRWteSIJCILQ+sOPRqOBVquVdLW1w+HAE088gYULF+Kjjz7CY489Jtm1iYiIOks1hVJqH330ET788ENMnz4dI0eOREhICLKzs/H2229j2rRpeOeddzBo0CC5Y5KCCYKAxsZGmM3m1l92u/2i1/n4+MBgMECv10Ov18NgMHRq1Nput2PKlClYtWoVlixZgkcffVSKPwYREZHTVLNtkN1ux4kTJyS51vfff4/09HQ88sgjFz17VlVVhWHDhiE0NBTbtm1z+l5paWnQ6XROX4eUw2KxoKqqCtXV1Z0agdZoNAgLC4PRaGz3PqU2mw0PPfQQ1q1bh5UrV2L8+PEdvi8REZGrqGaEUsppw7179wJoe+GN0WhEWloafvzxR1RXVyM8PNype1VVVSEmJoarbz1AY2Mjzp496/TqfVEUUV1d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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "### Do not delete this cell. It has an overly-elaborate way of showing the difference in centralities.\n", "CC = nx.closeness_centrality(G2)\n", "BC = nx.betweenness_centrality(G2)\n", "\n", "max_betweenness = max(BC, key=BC.get)\n", "max_closeness = max(CC, key=CC.get)\n", "print(f\"Node {max_betweenness} has the greatest betweenness, and Node {max_closeness} has the max closeness\")\n", "# Node colors: highlight key nodes\n", "node_colors = []\n", "for node in G2.nodes():\n", " if node == max_betweenness:\n", " node_colors.append(\"pink\") # Highest betweenness\n", " elif node == max_closeness:\n", " node_colors.append(\"skyblue\") # Highest closeness\n", " else:\n", " node_colors.append(\"lightgray\")\n", "\n", "nx.draw(G2, with_labels=True, node_color=node_colors, edge_color=\"black\", node_size=1000, font_size=14)\n" ] }, { "cell_type": "markdown", "id": "57dfc616", "metadata": {}, "source": [ "## Random Networks\n", "\n", "We'll learn in class that one way in which ER models don't reflect some real-world networks in that they tend to have fewer triangles (3-cycles) than real-world graphs. Here a _triangle_ in $G$ means a subgraph that is isomorphic to $C_3$. So, for example, $C_3$ has 1 triangle, and the [Wheel Graph, $W_n$](https://en.wikipedia.org/wiki/Wheel_graph) has $n-1$.\n", "\n", "One way to count all the triangles in a graph is as folllows:\n", "1. Compute the adjacency matrix, $A$, of $G$\n", "2. Compute $B=A^3$. Note that $b_{ij}$ is twice the number of paths of length 3 from $i$ to $j$. And, in particular, $b_{ii}$ is the number of 3-cycles involving Node $i$. Note: $b_{ii}$ double counts the number of triangles involving $i$ because, if $i \\to j \\to k \\to i$ is a 3-cycle, so too is $i \\to k \\to j \\to i$. \n", "3. Compute the _trace_ of $B$ (i.e., the sum the diagonal entries in $B$), and divide by 6 to calculate the number of 3-cycles. \n", "\n", "Asides:\n", "* It is not a homework question, but work out why you should divide the trace of $B$ by 6.\n", "* Well done: you've just come up with a proof that the trace of the cube of any $0-1$ matrix is divisible by 6.\n", "\n" ] }, { "cell_type": "markdown", "id": "ec032666", "metadata": {}, "source": [ "### TASK 3.1: Count Triangles\n", "\n", "Write a function (**with some sensible name of your own choosing**) that takes as its input a graph, and returns the total number of triangles in $G$. \n", "Tip: `np.trace()` returns the trace of a 2D numpy array." ] }, { "cell_type": "code", "execution_count": 25, "id": "971ba5cf", "metadata": {}, "outputs": [], "source": [ "def num_triangles(G):\n", " A = nx.adjacency_matrix(G).todense()\n", " A_bin = (A != 0).astype(int) # handle weighted edges\n", "\n", " B = np.linalg.matrix_power(A_bin, 3)\n", " trace = np.trace(B)\n", " return int(trace / 6)" ] }, { "cell_type": "markdown", "id": "b7c1f565", "metadata": {}, "source": [ "Verify that your function works by checking that, e.g., the graph returned by `nx.wheel_graph(5)` has 4 triangles." ] }, { "cell_type": "code", "execution_count": 26, "id": "582a7740", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "4" ] }, "execution_count": 26, "metadata": {}, "output_type": "execute_result" } ], "source": [ "num_triangles(nx.wheel_graph(5))" ] }, { "cell_type": "markdown", "id": "944614ef", "metadata": {}, "source": [ "### TASK 3.2: Comparing $G_{ER}(n,m)$ with graphs from social science\n", "\n", "`networkx` comes with some generators from graphs that are much-studied in the network science.\n", "In [Week7: Part 2](https://www.niallmadden.ie/2425-CS4423/W07/CS4423-W07-Part-2.html#Example:-15th-century-Florentine-marriages) we considered the _Florentine Families_ graph, which is generate by `nx.florentine_families_graph()`. There are others such as \n", "* The [Karate Club Graph](https://en.wikipedia.org/wiki/Zachary%27s_karate_club) which is generated using `nx.karate_club_graph()`\n", "* The (Les Miserables network)[https://networkx.org/documentation/stable/reference/generated/networkx.generators.social.les_miserables_graph.html] generated by `nx.les_miserables_graph()`\n" ] }, { "cell_type": "markdown", "id": "16fcc76c", "metadata": {}, "source": [ "For each of the three networks mentioned above:\n", "* Generate the graph, and output the number of order and size of the network, and the number of triangles it has.\n", "* Use `nx.gnm_random_graph()` to make a graph drawn from $G_{ER}(n,m)$ that has the same size and order. Output how many triangles it has. " ] }, { "cell_type": "code", "execution_count": 27, "id": "459dae88", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Florentine order: 15\n", "Florentine size: 20\n", "Florentine number of triangles: 3\n", "GER number of triangles: 4\n" ] } ], "source": [ "florentine = nx.florentine_families_graph()\n", "order = florentine.number_of_nodes()\n", "size = florentine.number_of_edges()\n", "triangles = num_triangles(florentine)\n", "\n", "print(\"Florentine order: \" + str(order))\n", "print(\"Florentine size: \" + str(size))\n", "print(\"Florentine number of triangles: \" + str(triangles))\n", "\n", "ger = nx.gnm_random_graph(order, size)\n", "print(\"GER number of triangles: \" + str(num_triangles(ger)))" ] }, { "cell_type": "code", "execution_count": 28, "id": "c84c4df4", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Karate Club order: 34\n", "Karate Club size: 78\n", "Karate Club number of triangles: 45\n", "GER number of triangles: 21\n" ] } ], "source": [ "karate = nx.karate_club_graph()\n", "order = karate.number_of_nodes()\n", "size = karate.number_of_edges()\n", "triangles = num_triangles(karate)\n", "\n", "print(\"Karate Club order: \" + str(order))\n", "print(\"Karate Club size: \" + str(size))\n", "print(\"Karate Club number of triangles: \" + str(triangles))\n", "\n", "ger = nx.gnm_random_graph(order, size)\n", "print(\"GER number of triangles: \" + str(num_triangles(ger)))\n" ] }, { "cell_type": "code", "execution_count": 30, "id": "6fcedf05", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Les Miserables order: 77\n", "Les Miserables size: 254\n", "Les Miserables number of triangles: 467\n", "GER number of triangles: 45\n" ] } ], "source": [ "mis = nx.les_miserables_graph()\n", "order = mis.number_of_nodes()\n", "size = mis.number_of_edges()\n", "triangles = num_triangles(mis)\n", "\n", "print(\"Les Miserables order: \" + str(order))\n", "print(\"Les Miserables size: \" + str(size))\n", "print(\"Les Miserables number of triangles: \" + str(triangles))\n", "\n", "ger = nx.gnm_random_graph(order, size)\n", "print(\"GER number of triangles: \" + str(num_triangles(ger)))" ] }, { "cell_type": "markdown", "id": "2e1d165d", "metadata": {}, "source": [ "## Extras \n", "\n", "The following isn't part of the assignment, but you might find it interesting:\n", "1. Use `np.linspace(0,1,100)` to create an array of probabilities. \n", "2. For $n=100$ make a $G_{ER}(n,p)$ graph with the values of $p$ drawn from above, and count the number of triangles. Call this $T(G)$.\n", "3. I conjecture that $T(G)/m(G) \\approx C p^2$, for some constant $C$ that depends on $n$. Try to produce a plot that supports (or refutes) this conjecture, and try to estimate $C$" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.13.2" }, "toc": { "base_numbering": 1, "nav_menu": {}, "number_sections": true, "sideBar": true, "skip_h1_title": true, "title_cell": "Table of Contents", "title_sidebar": "Contents", "toc_cell": true, "toc_position": {}, "toc_section_display": true, "toc_window_display": false }, "varInspector": { "cols": { "lenName": 16, "lenType": 16, "lenVar": 40 }, "kernels_config": { "python": { "delete_cmd_postfix": "", "delete_cmd_prefix": "del ", "library": "var_list.py", "varRefreshCmd": "print(var_dic_list())" }, "r": { "delete_cmd_postfix": ") ", "delete_cmd_prefix": "rm(", "library": "var_list.r", "varRefreshCmd": "cat(var_dic_list()) " } }, "types_to_exclude": [ "module", "function", "builtin_function_or_method", "instance", "_Feature" ], "window_display": false } }, "nbformat": 4, "nbformat_minor": 5 }