{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"[Home](index.ipynb) > [Data Transformation](data_transformation.ipynb) > Meaning structures"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### ``compsoc`` – *Notebooks for Computational Sociology* (alpha)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Meaning structures: Bipartite matrix projection\n",
"Authors: [Haiko Lietz](https://www.gesis.org/person/haiko.lietz)\n",
"\n",
"Version: 0.91 (14.09.2020)\n",
"\n",
"Please cite as: Lietz, Haiko (2020). Meaning structures: Bipartite matrix projection. Version 0.91 (14.09.2020). *compsoc – Notebooks for Computational Sociology*. GESIS. url:[github.com/gesiscss/compsoc](https://github.com/gesiscss/compsoc)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"
\n",
"Significance \n",
"\n",
"Bla.\n",
"
"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Introduction\n",
"According to the model of complex socio-cultural systems sketched in the introduction, transactions resemble the building blocks of these systems. From all the transactions in a field, a patterned macrobehavior emerges that provides expectations or meaning for future microbehavior. We refer to such structures as meaning structures (Mohr, xxxx). To get a grip on this concept, we mapped the systems model to a unified model for digital behavioral data. The fundamental idea is that agents make transactions and transactions select facts. The latter notion expresses the duality that a selection is both a top-down and a bottom-up hypothesis. In downward causation, selection expresses how agents are influenced by emergent facts -- in Padgett & Powell's (2012) words, \"relations make actors\"; as part of emergence, selection expresses how agents are free to chose facts -- \"actors make relations\".\n",
"\n",
"... Social and cultural meaning structures ... agency\n",
"\n",
"White's market profiles\n",
"\n",
"cores... Fuchs\n",
"\n",
"Flack's power distributions\n",
"\n",
"Zipf's Law\n",
"\n",
"communities and blocks\n",
"\n",
"catalysis\n",
"\n",
"attention economics\n",
"\n",
"Breiger\n",
"\n",
"domains... types of tie"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"| |\n",
"|:--|\n",
"|**Figure 1**: Mapping of socio-cultural systems model to mathematical framework (fig. 2 in Lietz, 2020) |"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**In this notebook**, we demonstrate how we can use the unified data model to study the meaning encoded in networks. We will lay out a core part of the ``compsoc`` mathematical framework (figure 1). We will see how digital behavioral data can be naturally represented by bipartite matrices, how meaning structures can be obtained by projecting these matrices, how matrix normalization can be used to account for potential behavioral differences in subfields, and how matrix algebra and community detection go hand in hand to uncover multiple layers or domains of social life from data. Two basic functions will be developed. They are largely based on the mathematical framework developed by Batagelj and Cerinšek (2013). Lietz (2020, particularly the [technical appendix](https://link.springer.com/article/10.1007/s11192-020-03527-0#appendices)) can be read to gain traction on the formalism used in this notebook. To be able to process large data collections, this notebook uses sparse matrix methods."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Dependencies and settings"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import compsoc as cs\n",
"import networkx as nx\n",
"import numpy as np\n",
"import pandas as pd"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"#import warnings"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"#warnings.filterwarnings('ignore')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Understanding the basic formalism\n",
"A simple toy model shall help us to keep things simple and understandable. It contains only the most central aspects of transactions selecting facts and transactions belonging to domains. The data model consists of yellow tables for entities and green tables of relationships among two types of entities:"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"| |\n",
"|:--|\n",
"|**Figure 2**: Subset of unified model for digital behavioral data |"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The data, depicted in figure 1, resembles a field that consists of $m=5$ distinct transactions. Our computational framework requires that identifiers are integers $i=0,...,m-1$. Like all entity and relationship tables, transactions are stored in a pandas dataframe. The `transaction_id` column contains the integers $i$ and the `transaction` column contains transaction names:"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" transaction_id \n",
" transaction \n",
" domain_id \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" 0 \n",
" 1 \n",
" 0 \n",
" \n",
" \n",
" 1 \n",
" 1 \n",
" 2 \n",
" 0 \n",
" \n",
" \n",
" 2 \n",
" 2 \n",
" 3 \n",
" 1 \n",
" \n",
" \n",
" 3 \n",
" 3 \n",
" 4 \n",
" 1 \n",
" \n",
" \n",
" 4 \n",
" 4 \n",
" 5 \n",
" 1 \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" transaction_id transaction domain_id\n",
"0 0 1 0\n",
"1 1 2 0\n",
"2 2 3 1\n",
"3 3 4 1\n",
"4 4 5 1"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"transactions = [[0, '1', 0], [1, '2', 0], [2, '3', 1], [3, '4', 1], [4, '5', 1]]\n",
"transactions = pd.DataFrame(transactions, columns=['transaction_id', 'transaction', 'domain_id'])\n",
"transactions"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"In this field, $n=9$ distinct facts are selected. Each fact has an identifier $j=0,...,n-1$ and a name:"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" fact_id \n",
" fact \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" 0 \n",
" 1 \n",
" \n",
" \n",
" 1 \n",
" 1 \n",
" 2 \n",
" \n",
" \n",
" 2 \n",
" 2 \n",
" 3 \n",
" \n",
" \n",
" 3 \n",
" 3 \n",
" 4 \n",
" \n",
" \n",
" 4 \n",
" 4 \n",
" 5 \n",
" \n",
" \n",
" 5 \n",
" 5 \n",
" 6 \n",
" \n",
" \n",
" 6 \n",
" 6 \n",
" 7 \n",
" \n",
" \n",
" 7 \n",
" 7 \n",
" 8 \n",
" \n",
" \n",
" 8 \n",
" 8 \n",
" 9 \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" fact_id fact\n",
"0 0 1\n",
"1 1 2\n",
"2 2 3\n",
"3 3 4\n",
"4 4 5\n",
"5 5 6\n",
"6 6 7\n",
"7 7 8\n",
"8 8 9"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"facts = [[0, '1'], [1, '2'], [2, '3'], [3, '4'], [4, '5'], [5, '6'], [6, '7'], [7, '8'], [8, '9']]\n",
"facts = pd.DataFrame(facts, columns=['fact_id', 'fact'])\n",
"facts"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Finally, there are 15 selections. The according `selections` dataframe contains the relationships among transactions and facts. Note that all transactions select a different number of overlapping facts; in the transaction with ``transaction_id=0``, five facts are selected; ``transaction_id=1`` selects four facts; etc. Each selection also has a `weight` (in the example set to 1):"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" transaction_id \n",
" fact_id \n",
" weight \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 1 \n",
" \n",
" \n",
" 1 \n",
" 0 \n",
" 1 \n",
" 1 \n",
" \n",
" \n",
" 2 \n",
" 0 \n",
" 2 \n",
" 1 \n",
" \n",
" \n",
" 3 \n",
" 0 \n",
" 3 \n",
" 1 \n",
" \n",
" \n",
" 4 \n",
" 0 \n",
" 4 \n",
" 1 \n",
" \n",
" \n",
" 5 \n",
" 1 \n",
" 2 \n",
" 1 \n",
" \n",
" \n",
" 6 \n",
" 1 \n",
" 3 \n",
" 1 \n",
" \n",
" \n",
" 7 \n",
" 1 \n",
" 4 \n",
" 1 \n",
" \n",
" \n",
" 8 \n",
" 1 \n",
" 5 \n",
" 1 \n",
" \n",
" \n",
" 9 \n",
" 2 \n",
" 4 \n",
" 1 \n",
" \n",
" \n",
" 10 \n",
" 2 \n",
" 5 \n",
" 1 \n",
" \n",
" \n",
" 11 \n",
" 2 \n",
" 6 \n",
" 1 \n",
" \n",
" \n",
" 12 \n",
" 3 \n",
" 6 \n",
" 1 \n",
" \n",
" \n",
" 13 \n",
" 3 \n",
" 7 \n",
" 1 \n",
" \n",
" \n",
" 14 \n",
" 4 \n",
" 8 \n",
" 1 \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" transaction_id fact_id weight\n",
"0 0 0 1\n",
"1 0 1 1\n",
"2 0 2 1\n",
"3 0 3 1\n",
"4 0 4 1\n",
"5 1 2 1\n",
"6 1 3 1\n",
"7 1 4 1\n",
"8 1 5 1\n",
"9 2 4 1\n",
"10 2 5 1\n",
"11 2 6 1\n",
"12 3 6 1\n",
"13 3 7 1\n",
"14 4 8 1"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"#selections = [[0, 0, 1], [0, 1, 1], [0, 2, 1], [0, 3, 1], [0, 4, 1]]\n",
"selections = [[0, 0, 1], [0, 1, 1], [0, 2, 1], [0, 3, 1], [0, 4, 1], [1, 2, 1], [1, 3, 1], [1, 4, 1], [1, 5, 1], [2, 4, 1], [2, 5, 1], [2, 6, 1], [3, 6, 1], [3, 7, 1], [4, 8, 1]]\n",
"selections = pd.DataFrame(selections, columns=['transaction_id', 'fact_id', 'weight'])\n",
"selections"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The ``selections`` dataframe contains all the information for the bipartite **selection matrix** $G$. Since all transaction and fact identifiers are present, $G$ is an $m\\times n$ matrix where ``weight`` gives the strength or number of times that a transaction is selecting a fact.\n",
"\n",
"We use the ``scipy.sparse`` package to handle matrices. It uses different formats to store information that have advantages and drawback for certain tasks. For matrix construction, the [COOrdinate](https://docs.scipy.org/doc/scipy/reference/generated/scipy.sparse.coo_matrix.html) format is intended:"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [],
"source": [
"from scipy.sparse import csr_matrix, coo_matrix, triu"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"First, extract three lists that contain the rows, columns, and cell information for the matrix:"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [],
"source": [
"rows = selections['transaction_id'].tolist()\n",
"columns = selections['fact_id'].tolist()\n",
"cells = selections['weight'].tolist()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Then, build the (coordinate) matrix:"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [],
"source": [
"G = coo_matrix((cells, (rows, columns)))"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"scipy.sparse.coo.coo_matrix"
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"type(G)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Technical summary of the matrix:"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"{'_shape': (5, 9),\n",
" 'maxprint': 50,\n",
" 'row': array([0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 3, 3, 4], dtype=int32),\n",
" 'col': array([0, 1, 2, 3, 4, 2, 3, 4, 5, 4, 5, 6, 6, 7, 8], dtype=int32),\n",
" 'data': array([1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]),\n",
" 'has_canonical_format': False}"
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"G.__dict__"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Easy-to-read summary:"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" (0, 0)\t1\n",
" (0, 1)\t1\n",
" (0, 2)\t1\n",
" (0, 3)\t1\n",
" (0, 4)\t1\n",
" (1, 2)\t1\n",
" (1, 3)\t1\n",
" (1, 4)\t1\n",
" (1, 5)\t1\n",
" (2, 4)\t1\n",
" (2, 5)\t1\n",
" (2, 6)\t1\n",
" (3, 6)\t1\n",
" (3, 7)\t1\n",
" (4, 8)\t1\n"
]
}
],
"source": [
"print(G)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Row indices of selections can be accessed like this:"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 3, 3, 4], dtype=int32)"
]
},
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"G.nonzero()[0]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Column indices of selections can be accessed like this:"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([0, 1, 2, 3, 4, 2, 3, 4, 5, 4, 5, 6, 6, 7, 8], dtype=int32)"
]
},
"execution_count": 14,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"G.nonzero()[1]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Weights of selections can be accessed like this:"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1])"
]
},
"execution_count": 15,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"G.data"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Finally, a sparse matrix can be transformed into a dense array like this:"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([[1, 1, 1, 1, 1, 0, 0, 0, 0],\n",
" [0, 0, 1, 1, 1, 1, 0, 0, 0],\n",
" [0, 0, 0, 0, 1, 1, 1, 0, 0],\n",
" [0, 0, 0, 0, 0, 0, 1, 1, 0],\n",
" [0, 0, 0, 0, 0, 0, 0, 0, 1]])"
]
},
"execution_count": 16,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"G.toarray()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"And if we want a nicer design, we can plot this array as a dataframe:"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" 0 \n",
" 1 \n",
" 2 \n",
" 3 \n",
" 4 \n",
" 5 \n",
" 6 \n",
" 7 \n",
" 8 \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" 1 \n",
" 1 \n",
" 1 \n",
" 1 \n",
" 1 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" \n",
" \n",
" 1 \n",
" 0 \n",
" 0 \n",
" 1 \n",
" 1 \n",
" 1 \n",
" 1 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" \n",
" \n",
" 2 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 1 \n",
" 1 \n",
" 1 \n",
" 0 \n",
" 0 \n",
" \n",
" \n",
" 3 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 1 \n",
" 1 \n",
" 0 \n",
" \n",
" \n",
" 4 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 1 \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" 0 1 2 3 4 5 6 7 8\n",
"0 1 1 1 1 1 0 0 0 0\n",
"1 0 0 1 1 1 1 0 0 0\n",
"2 0 0 0 0 1 1 1 0 0\n",
"3 0 0 0 0 0 0 1 1 0\n",
"4 0 0 0 0 0 0 0 0 1"
]
},
"execution_count": 17,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"pd.DataFrame(G.toarray())"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Matrix normalization\n",
"Consider an academic field where transactions are publications, selections are citations, and facts are the references cited in a puplication. Further consider that the field is interdisciplinary: authors from one discipline cite 10 references on average, authors from another discipline cite 20 references on average. Intuitively, a reference that receives one citation out of 10 has a larger influence on the publication than a reference that receives one citation out of 20. By dividing a citation (selection) by the number of citations (selections) made, this difference can be accounted for. Mathematically, this amounts to a row normalization of the selection matrix $G$. This way of normalizing selections has first been proposed by Leydesdorff and Opthof (2010) for counting citations. Batagelj and Cerinšek (2013) have made it a pillar in their general (scientometric) matrix formalism that we use here.\n",
"\n",
"For fast row normalization, we first transform $G$ to the [Compressed Sparse Row](https://docs.scipy.org/doc/scipy/reference/generated/scipy.sparse.csr_matrix.html) format:"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"{'_shape': (5, 9),\n",
" 'maxprint': 50,\n",
" 'indices': array([0, 1, 2, 3, 4, 2, 3, 4, 5, 4, 5, 6, 6, 7, 8], dtype=int32),\n",
" 'indptr': array([ 0, 5, 9, 12, 14, 15], dtype=int32),\n",
" 'data': array([1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], dtype=int32),\n",
" '_has_canonical_format': True,\n",
" '_has_sorted_indices': True}"
]
},
"execution_count": 18,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"G = G.tocsr()\n",
"G.__dict__"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The row-normalized matrix depicted in the middle of figure 1 is called $G^\\mathrm{N}$:"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {},
"outputs": [],
"source": [
"from sklearn.preprocessing import normalize"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {},
"outputs": [],
"source": [
"GN = normalize(G, norm='l1', axis=1)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Compare the normalized to the unnormalized selections:"
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" fact_id \n",
" 0 \n",
" 1 \n",
" 2 \n",
" 3 \n",
" 4 \n",
" 5 \n",
" 6 \n",
" 7 \n",
" 8 \n",
" \n",
" \n",
" transaction_id \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" 1 \n",
" 1 \n",
" 1 \n",
" 1 \n",
" 1 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" \n",
" \n",
" 1 \n",
" 0 \n",
" 0 \n",
" 1 \n",
" 1 \n",
" 1 \n",
" 1 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" \n",
" \n",
" 2 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 1 \n",
" 1 \n",
" 1 \n",
" 0 \n",
" 0 \n",
" \n",
" \n",
" 3 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 1 \n",
" 1 \n",
" 0 \n",
" \n",
" \n",
" 4 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 1 \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
"fact_id 0 1 2 3 4 5 6 7 8\n",
"transaction_id \n",
"0 1 1 1 1 1 0 0 0 0\n",
"1 0 0 1 1 1 1 0 0 0\n",
"2 0 0 0 0 1 1 1 0 0\n",
"3 0 0 0 0 0 0 1 1 0\n",
"4 0 0 0 0 0 0 0 0 1"
]
},
"execution_count": 21,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df_selections = pd.DataFrame(G.toarray())\n",
"df_selections.index.name = 'transaction_id'\n",
"df_selections.columns.name = 'fact_id'\n",
"df_selections"
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" fact_id \n",
" 0 \n",
" 1 \n",
" 2 \n",
" 3 \n",
" 4 \n",
" 5 \n",
" 6 \n",
" 7 \n",
" 8 \n",
" \n",
" \n",
" transaction_id \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" 0.2 \n",
" 0.2 \n",
" 0.20 \n",
" 0.20 \n",
" 0.200000 \n",
" 0.000000 \n",
" 0.000000 \n",
" 0.0 \n",
" 0.0 \n",
" \n",
" \n",
" 1 \n",
" 0.0 \n",
" 0.0 \n",
" 0.25 \n",
" 0.25 \n",
" 0.250000 \n",
" 0.250000 \n",
" 0.000000 \n",
" 0.0 \n",
" 0.0 \n",
" \n",
" \n",
" 2 \n",
" 0.0 \n",
" 0.0 \n",
" 0.00 \n",
" 0.00 \n",
" 0.333333 \n",
" 0.333333 \n",
" 0.333333 \n",
" 0.0 \n",
" 0.0 \n",
" \n",
" \n",
" 3 \n",
" 0.0 \n",
" 0.0 \n",
" 0.00 \n",
" 0.00 \n",
" 0.000000 \n",
" 0.000000 \n",
" 0.500000 \n",
" 0.5 \n",
" 0.0 \n",
" \n",
" \n",
" 4 \n",
" 0.0 \n",
" 0.0 \n",
" 0.00 \n",
" 0.00 \n",
" 0.000000 \n",
" 0.000000 \n",
" 0.000000 \n",
" 0.0 \n",
" 1.0 \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
"fact_id 0 1 2 3 4 5 6 7 8\n",
"transaction_id \n",
"0 0.2 0.2 0.20 0.20 0.200000 0.000000 0.000000 0.0 0.0\n",
"1 0.0 0.0 0.25 0.25 0.250000 0.250000 0.000000 0.0 0.0\n",
"2 0.0 0.0 0.00 0.00 0.333333 0.333333 0.333333 0.0 0.0\n",
"3 0.0 0.0 0.00 0.00 0.000000 0.000000 0.500000 0.5 0.0\n",
"4 0.0 0.0 0.00 0.00 0.000000 0.000000 0.000000 0.0 1.0"
]
},
"execution_count": 22,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df_selections = pd.DataFrame(GN.toarray())\n",
"df_selections.index.name = 'transaction_id'\n",
"df_selections.columns.name = 'fact_id'\n",
"df_selections"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Matrix projection\n",
"The two bold arrows in figure 1 show the two projections that can be obtained via [matrix multiplication](https://en.wikipedia.org/wiki/Matrix_multiplication). Projection generally involves multiplications with the transposed selection matrix. The transpose of the selection matrix $G$ is called $G^\\mathrm{T}$ and has dimensionality $n\\times m$, i.e., the rows (columns) of $G$ are its columns (rows). Similarly, the transpose of the normalized selection matrix $G^\\mathrm{N}$ is $(G^\\mathrm{N})^\\mathrm{T}$.\n",
"#### Projection to the transaction mode\n",
"The first kind of projection results in transaction similarity matrices:\n",
"\n",
"- $H=G\\times G^\\mathrm{T}$ is a transaction similarity matrix where weights $x_{ik}\\in \\mathbb{N}$ are the numbers of facts co-selected by transactions $i$ and $k$;\n",
"- $H^\\mathrm{N}=G^\\mathrm{N}\\times(G^\\mathrm{N})^\\mathrm{T}$ is a normalized transaction similarity matrix where weights $x_{ik}^\\mathrm{N}\\in \\mathbb{R}_{[0,1]}$ are the products of the normalized selections made in transactions $i$ and $k$, summed over all facts $j$.\n",
"\n",
"$H^\\mathrm{N}$ is the complementary transformation of the one described by Batagelj and Cerinšek (2013, section 3.4). Transaction matrices are directed but symmetric. Weights $x_{ik}$ and $x_{ik}^\\mathrm{N}$ can be interpreted as transaction similarities.\n",
"\n",
"Transpose the two matrices $G$ and $G^\\mathrm{N}$:"
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {},
"outputs": [],
"source": [
"GT = csr_matrix.transpose(G)\n",
"GNT = csr_matrix.transpose(GN)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Note that transposing a matrix in [Compressed Sparse Row](https://docs.scipy.org/doc/scipy/reference/generated/scipy.sparse.csr_matrix.html) format creates a matrix in [Compressed Sparse Column](https://docs.scipy.org/doc/scipy/reference/generated/scipy.sparse.csc_matrix.html) format:"
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"scipy.sparse.csc.csc_matrix"
]
},
"execution_count": 24,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"type(GT)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Multiply the matrices to obtain the projections:"
]
},
{
"cell_type": "code",
"execution_count": 25,
"metadata": {},
"outputs": [],
"source": [
"H = G*GT\n",
"HN = GN*GNT"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The format of a projected matrix is determined by the format of the first factor:"
]
},
{
"cell_type": "code",
"execution_count": 26,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"scipy.sparse.csr.csr_matrix"
]
},
"execution_count": 26,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"type(HN)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Since weights in transaction matrices can be interpreted as transaction similarities, there is no use in carrying along both triangular portions of the matrix. To remove a portion, transform the matrix into [COOrdinate](https://docs.scipy.org/doc/scipy/reference/generated/scipy.sparse.coo_matrix.html) format, ..."
]
},
{
"cell_type": "code",
"execution_count": 27,
"metadata": {},
"outputs": [],
"source": [
"HN = HN.tocoo()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"... remove the upper portion (you could just as well use ``tril()`` to remove the lower portion) of the matrix, ..."
]
},
{
"cell_type": "code",
"execution_count": 28,
"metadata": {},
"outputs": [],
"source": [
"HN = triu(HN)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"... and transform the matrix back into [Compressed Sparse Row](https://docs.scipy.org/doc/scipy/reference/generated/scipy.sparse.csr_matrix.html) format:"
]
},
{
"cell_type": "code",
"execution_count": 29,
"metadata": {},
"outputs": [],
"source": [
"HN = HN.tocsr()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"To draw $H^\\mathrm{N}$ as a graph, create an edge list (by concatenating three pandas series), ..."
]
},
{
"cell_type": "code",
"execution_count": 30,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" transaction_id_from \n",
" transaction_id_to \n",
" weight \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 0.200000 \n",
" \n",
" \n",
" 1 \n",
" 0 \n",
" 1 \n",
" 0.150000 \n",
" \n",
" \n",
" 2 \n",
" 0 \n",
" 2 \n",
" 0.066667 \n",
" \n",
" \n",
" 3 \n",
" 1 \n",
" 1 \n",
" 0.250000 \n",
" \n",
" \n",
" 4 \n",
" 1 \n",
" 2 \n",
" 0.166667 \n",
" \n",
" \n",
" 5 \n",
" 2 \n",
" 2 \n",
" 0.333333 \n",
" \n",
" \n",
" 6 \n",
" 2 \n",
" 3 \n",
" 0.166667 \n",
" \n",
" \n",
" 7 \n",
" 3 \n",
" 3 \n",
" 0.500000 \n",
" \n",
" \n",
" 8 \n",
" 4 \n",
" 4 \n",
" 1.000000 \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" transaction_id_from transaction_id_to weight\n",
"0 0 0 0.200000\n",
"1 0 1 0.150000\n",
"2 0 2 0.066667\n",
"3 1 1 0.250000\n",
"4 1 2 0.166667\n",
"5 2 2 0.333333\n",
"6 2 3 0.166667\n",
"7 3 3 0.500000\n",
"8 4 4 1.000000"
]
},
"execution_count": 30,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"similarities_norm = pd.concat([\n",
" pd.Series(HN.nonzero()[0]), \n",
" pd.Series(HN.nonzero()[1]), \n",
" pd.Series(HN.data)\n",
"], axis=1)\n",
"similarities_norm.columns = ['transaction_id_from', 'transaction_id_to', 'weight']\n",
"similarities_norm"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"... construct the graph using ``compsoc``'s ``construct_graph(directed=False, ...)`` function described [here](construct_graph.ipynb), ..."
]
},
{
"cell_type": "code",
"execution_count": 31,
"metadata": {},
"outputs": [],
"source": [
"hn = cs.construct_graph(\n",
" directed=False, \n",
" multiplex=False, \n",
" graph_name='HN', \n",
" node_list=transactions, \n",
" edge_list=similarities_norm, \n",
" node_label='transaction'\n",
")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"... and draw the graph using ``compsoc``'s custom ``draw_graph()`` wrapper described [here](draw_graph.ipynb):"
]
},
{
"cell_type": "code",
"execution_count": 32,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"cs.draw_graph(\n",
" hn, \n",
" node_pos=nx.circular_layout(hn), \n",
" node_size_factor=.25, \n",
" node_color=cs.uniform_vertex_property(hn, 'black'), \n",
" node_border_width=2, \n",
" edge_width_factor=50, \n",
" labels='text', \n",
" font_size_factor=2, \n",
" font_color='white', \n",
" figsize='small', \n",
" margins=.2\n",
")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Projection to the fact mode\n",
"The second kind of projection results in fact co-selection matrices:\n",
"\n",
"- $I=G^\\mathrm{T}\\times G$ is a fact co-selection matrix where weights $y_{jl}\\in \\mathbb{N}$ are the numbers of transactions that co-select facts $j$ and $l$ (Batagelj and Cerinšek 2013, section 3.2);\n",
"- $I^\\mathrm{N}=G^\\mathrm{T}\\times G^\\mathrm{N}$ is a normalized fact co-selection matrix where weights $y_{jl}^\\mathrm{N}\\in \\mathbb{R}_{\\geq0}$ are the normalized numbers of transactions that co-select facts $j$ and $l$ (Batagelj and Cerinšek 2013, section 3.3).\n",
"\n",
"Fact matrices are also directed and symmetric. It is these matrices that resemble **meaning structures**. According to our general systems model, they emerge from the collective transactions in a field, and they harbor the patterns that agents observe and which influence future transactions via downward causation. Co-selection weights $y_{ik}$ and $y_{ik}^\\mathrm{N}$ of meaning structures can be interpreted as **catalyses**. Padgett & Powell (2012, chapter 4) have adapted this concept from chemistry to mean that the selection of a product in a social network entails – or makes more likely – the selection of another product (which results in a self-sustaining production cycle). Co-selection is mutual catalysis because the selection of a fact makes the selection of a co-selected fact more likely."
]
},
{
"cell_type": "code",
"execution_count": 33,
"metadata": {},
"outputs": [],
"source": [
"I = GT*G\n",
"IN = GT*GN"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"To correctly access indices and weights, co-selection matrices must be transformed from [Compressed Sparse Column](https://docs.scipy.org/doc/scipy/reference/generated/scipy.sparse.csc_matrix.html) to [Compressed Sparse Row](https://docs.scipy.org/doc/scipy/reference/generated/scipy.sparse.csr_matrix.html) format:"
]
},
{
"cell_type": "code",
"execution_count": 34,
"metadata": {},
"outputs": [],
"source": [
"I = I.tocsr()\n",
"IN = IN.tocsr()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Transform $I^\\mathrm{N}$ to an edge list:"
]
},
{
"cell_type": "code",
"execution_count": 35,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" fact_id_from \n",
" fact_id_to \n",
" weight \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" 0 \n",
" 0 \n",
" 0.2 \n",
" \n",
" \n",
" 1 \n",
" 0 \n",
" 1 \n",
" 0.2 \n",
" \n",
" \n",
" 2 \n",
" 0 \n",
" 2 \n",
" 0.2 \n",
" \n",
" \n",
" 3 \n",
" 0 \n",
" 3 \n",
" 0.2 \n",
" \n",
" \n",
" 4 \n",
" 0 \n",
" 4 \n",
" 0.2 \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" fact_id_from fact_id_to weight\n",
"0 0 0 0.2\n",
"1 0 1 0.2\n",
"2 0 2 0.2\n",
"3 0 3 0.2\n",
"4 0 4 0.2"
]
},
"execution_count": 35,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"co_selections_norm = pd.concat([\n",
" pd.Series(IN.nonzero()[0]), \n",
" pd.Series(IN.nonzero()[1]), \n",
" pd.Series(IN.data)\n",
"], axis=1)\n",
"co_selections_norm.columns = ['fact_id_from', 'fact_id_to', 'weight']\n",
"co_selections_norm.head()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"For the purpose of illustrating co-selections as mutual catalyses, set ``directed=True``:"
]
},
{
"cell_type": "code",
"execution_count": 36,
"metadata": {},
"outputs": [],
"source": [
"_in = cs.construct_graph(\n",
" directed=True, \n",
" multiplex=False, \n",
" graph_name='IN', \n",
" node_list=facts, \n",
" edge_list=co_selections_norm, \n",
" node_label='fact'\n",
")"
]
},
{
"cell_type": "code",
"execution_count": 37,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAcwAAAHBCAYAAADkRYtYAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAgAElEQVR4nOy9eZhc1X2n/3a3utVSa2staENCSGAQiwmIfbMBGwyY2AbHG2bzirEdO57EycxkfHKe3+RJHE9ImIztEJtgG7yDAWFsQxCr2IVZBAghgQTad7W61Zu6u35/fM7RvVV1762lq7We93nq6e7qqrq3tvM5370ul8sRCAQCgUAgm/q9fQKBQCAQCOwPBMEMBAKBQKAMgmAGAoFAIFAGQTADgUAgECiDIJiBQCAQCJRBEMxAIBAIBMogCGYgEAgEAmUQBDMQCAQCgTIIghkIBAKBQBkEwQwEAoFAoAyCYAYCgUAgUAZBMAOBQCAQKIMgmIFAIBAIlEEQzEAgEAgEyiAIZiAQCAQCZRAEMxAIBAKBMgiCGQgEAoFAGQTBDAQCgUCgDIJgBgKBQCBQBkEwA4FAIBAogyCYgUAgEAiUQRDMQCAQCATKIAhmIBAIBAJlEAQzEAgEAoEyCIIZCAQCgUAZBMEMBAKBQKAMgmAGAoFAIFAGQTADgUAgECiDIJiBQCAQCJRBEMxAIBAIBMogCGYgEAgEAmUQBDMQCAQCgTIIghkIBAKBQBkEwQwEAoFAoAyCYAYCgUAgUAZBMAOBQCAQKIMgmIFAIBAIlEEQzEAgEAgEyiAIZiAQCAQCZRAEMxAIBAKBMgiCGQgEAoFAGQTBDAQCgUCgDIJgBgKBQCBQBsP29gkEAoGhx1rbApwDzANOAqYCTUAP8DawyF2eMsbs2lvnGQjsy9Tlcrm9fQ6BQGCIsNbOBb4EXAOMKeMu64AfAP9hjFkzlOcWCOxvBMEMBA5ArLWjgH9CYgnAtGnTmDFjBlOnTqW1tZWGhgb6+vrYvHkz69atY+XKlWzZssXfvBewwD8ZY/r2/DMIBPY9gmAGAgcY1tqzgNuBWfX19Zx44omccsopTJ48OfN+uVyOt99+m2effZYlS5b4qxcBnzLGLBvasw4E9n2CYAYCBxDW2g8CdwDDp0yZwoc//OGSQpnEm2++yfz589mxYwfAJuD9xpiXanu2gcD+RRDMQOAAwVp7PvB7oGnevHlcfPHFNDQ07P7/okWLuOeee3juuedYvnw5mzZtoru7m4kTJ3LyySdz3XXX8eEPf3j37Xt6evj1r3/Nm2++CRLNs40xb+zhpxUI7DMEwQwEDgCstROB14BJp5xyChdffDF1dXV5t7n++uu5+eabd/89atQo+vr66O7u3n3dFVdcwc9//nMaGxsB6Ovr4xe/+IUXzReA00IWbeBgJdRhBgIHBv8PmDRr1qxEsQQ444wz+Jd/+Reef/552tvbaW9vp6uri3feeYe/+qu/AuDOO+/kH//xH3ffZ9iwYXzsYx9j3LhxACcCf7NHnk0gsA8SLMxAYD/HWvt+4IHGxka+9KUv0draWtXjXHXVVdx+++3Mnj3bW5S7WbFiBT/5yU8AdgFHGWNWDPa8A4H9jdC4IBDYx7HW1gGNyCNUF7vgfv4FwNlnn121WAKccsop3H777axdu7bof4cffjjHH388ixcvbgS+SLA0AwchQTADgSHCCV0T0FJwGeGu95fGjL8b3SWNccDFDQ0NzJs3b1Dn++STTwISxyROPfVUFi9eDPBZa+3fGWO6E28YCBygBMEMBCrECeFoJFbjKBbEFmCU+znU37G5AHPnzqWlpaXiO3d0dPDWW29x880388tf/hKAr3zlK4m3nT59OpMnT2bDhg0TgfcCf6j2pAOB/ZEgmIFAAtbaZqDVXcYV/D6Ofee7Mw3SrcIkVq9ezYwZM4qub25u5n/8j//BDTfckHi/uro6Zs2axYYNGwBOJghm4CBjX/nSBwJ7nJilODl2mYiEsXkvnlolTAOYOnVq2XdoaGjY3cxg27Zt9Pb2MmzYMP77f//vqdbl7oNNm+Z/HZz/NxDYDwmCGTgosNY2AYcgUfQ/J6N44v5KA7J2mTRpUtl3mjp1KuvXrwdgYGCA5cuX8+1vfxtjDLfccgu/+93vOPbYYxPvGzvO7MGceCCwPxIEM3DAYa1tRJbXTPdzMrIai4sT9z/qkEhOBibhaqnjHX0qob6+nne9613ccsstjBs3jhtvvJFPf/rTPP/889TXF5dpDxu2e8kYXtUBA4H9mCCYgX0Ga229MWagivu1IHGc4X5ORdbX/kA9EvVWlA2bA7oTLg1ElnGRWOVyucRmBZXw1a9+lRtvvJEXX3yRF154ITHrdmBg99vTG7/eWjsMGItc3B3GmM2DOplAYB8kNC4I7FXcGKrzgMOACcB2YA3wkDFma8Lt61Cc0YvjTGD8Hjvh2jIGOA6VjyTRgESolUgke4AdwBZgADgDaPrqV7/K+PGDexl27dpFU5NO5Ze//CUf+9jHim6zdOlSfvGLXwD8EfjfRIlQo8m34J8HfmuMCQtM4IAhWJiBvYa19kjgI8DI2NU+G/Voa+19xpgXrLUjgTnAkcARBbffX2kmWSzrkJCOR6UphZZyExKnCcBbQAcwft26dYMWzBUrouY9o0aNSrxNrKlBK/AhYAPQlXDTeaj37OpBnVQgsA8RBDOwV7DWHgV8nPR+xuOAL1trX0UCciDEH+PMIhJLL5KtSCTL+V42ow1EBzB+1apVqYk6AP39/dTX12e6bb/zne8AilOeccYZibdZvXq3/nW55zALaEPCuRGID5venxOqAoEigmAG8rDWNgAXAGciK+E4ZNHkkCtwMRoq/ATwaJUxxyOAj5EvlsOQYExA1pUXk4nAi9U8l32YemAKUX1nkiVZDo24jcTixYt53/veF0/KyWPVqlVcccUVfPnLX+bCCy/k0EMPBRSTfPnll/nOd77Dz372M0CxzKQWe9u3b+ett94CfRa2x/411l2OQGPA1gJvA6uqeE6BwD5LiGEGgN3job6A+oTOLPNubwLfB24xxmwvdWN3nMOBK5FANqFMz0lowU0yfwaAx9EivT/jaz7HAIcDx6DXIEf03JJ+j/8d/+lpR5uKQz7ykY/w7ne/O/HgK1euzGtu0NzczKhRo2hvb6enp2f39ddeey0/+MEPEoV3wYIFLFy4EGRJLkk4TA9KUNoBvITet5dCC73AgUIQzIMcl0TzCTQeajzA+PHjOeqoo5g2bRpTpkxhxAh51jo7O1m3bh1r167l9ddfp62tzT/MeuCLxpj5JY41E/gsygrNEslCngU6K392e4R+5JJsB3bGLt3IchyHnutc9LwnIAvzsBodvw8lSZ3b2trK9ddfvztxJ05vby933303CxYs4Nlnn2XdunVs2bKF5uZmZs6cyRlnnMF1113HWWedlXiQ7du38/3vf5/e3l6AZcjC7HHPH/QZeD3hrruAV4BFxpg1g32ygcDeJAjmQYy1djTwI+ByUHu1s846i9mzZ5csURgYGGDZsmUsXLgwHte6DfhCkkXhEnz+JxKKSuKROWSpVOz6rSHtwDZ32V7we7sxZsBl+/rM3RmotKUVuV4PoTj8MZ3spupZNLrHq0Ovz+vIfd5y6qmncvHFF1f5sMnkcjluu+02nxTUhdytXUSu5B53WQ68mvFQa5E7/xVjTG/G7QKBfZIgmAcp1tpxwP3AqU1NTVx00UWceOKJFdfy5XI5nnnmGRYsWEBfXx/AQ8BlxpjdFqG19jDkuq02u/VxIktmqNhFlLiyAdiKE0VjTDyRxdccTiJqjjCDqLTF10tOR4KSxijkSi1FHRLHYUgohxPFOxvQRmI7ih0eA9RdccUVHHfccWU8dHk88sgjPProo7hjrXHn0gO8487JN5uvR+Umi0s8ZA9y2S4yxmys2YkGAkNMEMyDEGvtcOBB4Oxx48Zx1VVXZZYkdHR0MHfu3N2W5K233sq1116bd5sNGzZw++2309HRAWrKfZkxps8lEf0Qxe2qpQMtwj2lblgGOSSEGwou2wprBp27eiz5vWYnI7dq4c5iJBLQKZSfTDcJiU0hfqTXMKLEqAYiq9L/XYcsvX7kmt0MHFVfX8/ll1+emTVbDrlcjscff5yHH37YX7WRqITE14W+hTYbdeg1aAAyXfMFLAMWAu+Ems3Avk7Ikj04+Tvg7DFjxnDNNdcwbty4zBv/7d/+bdztmsjkyZO55ppruPXWW+ns7PwA8A3gn4CzGJxYgqyXI1EsrFI2o2zN1TgLstAd6JuwW2tbkYjFxTGrBVwdEs/pyP1aKZuIZl6CxMaLThxvYfpj+kHSvSi2uwsJ5gDwxMDAwFl33HEHq1at4oILLqCxsXLP786dO/nd737Ha6+95q/aTH69ZQ96bY5CLlofw90BfBdNMzmB0k3sj3SX1dbahcDSIJyBfZVgYR5kWGtPAZ4G6j/zmc8kjnmK88c//pFTTz2Vk08+mWeeeQZItjA9y5cv56c//SloQT0R+AAqcK8Fi5C1mUY/ipO9g0RylTFmJ+SN64qP6qp2XFcTilFOY/A9VSeg7Nl6Irdm4bH8dV4sc0i8thXctg5Y585rBiiB6/zzz+foo48uq99sb28vL7/8Mg8//DCdnZ0gUf6Ne7xDC26eQ7WWw5H1uQ643RjzQ9jd0/c4JJ7TSx5cbEYlSy8bY4baDR8IVEQQzIMMa+3TwGlnnHEGF154YeZtBwYGOO2003jhhRd47rnnOOmkk4BswQS45557ePHFF0Gu2WfQsOFasAzF0DxdKDtzC4o5diCLJj7I2beWq0UR/Vi08E+ido0UpqBzLmxYUIfEsi729wCyJLuRNRfHxze3IOEajay/FlDnnhNOOIEZM2Ywbdo0Ro8eDcjtun37dtauXcvKlStZvHhxvMxkBXKvdiFxPBY4nkjAfaOCUe7YLwHXp7Q0nIqE83jSWwHGaQeeAp43xtTCFR8IDJogmAcR1tqTgeeam5v5xje+UdJVd9NNN/H1r3+dr3zlK/zbv/3b7oSgUoLZ1dXFjTfe6JOAvgW8r+AmLWhBb0SWqK/h9K7Gwp/+901oEW9D4tjP0HcAakCu2ekkxxsHy0RUmzmm4Ji+RnOXu85/UXeRL5Y+duhdtLvQa+T/N9Wde17CVUNDAw0NDfT19cUbqntWoVKeuAt8Enr9ZwDnINHrRhuWOJuBbxtjnkt6ss7SPwH1wM2OBYhu4DngGWNMlnchEBhygmAeRFhr/xO4rhzrcs2aNcydO5eRI0eydOlSxo4dW7ZgQp6V+SJaGH225wiKY3Q9JPcjBYlil7u8zJ7rHtNClMQzlJNPRrtjeDGuR5ZkNxK/FiKLrlAsm9DruQu9PqOR1VcoYiBrbRgqPzkJWcuejcjd/TxwJ+rbW9gBYQIS7a1I3M9H7+s6ipOxuoFfAj9Lsw6ttfXIYj3LPf9S9LlzfNy72QOBPU0QzIMEl9iyCZjw5S9/mYkTsysaLr/8cu666y5uu+02Pv3pTwNUJJirV6/mlltuAcXZlqFFOC1O2Ed+bNILaBfRYpwDniSyuIYCPwllOuVZP7UghyzYFiK3K+i18tdB8Ws0HImlf418LPF1JFhxtgH/aox5FHZ/FpqR4PYAPfFEGzcu7csUlwEdhzr89KNNxJnI3b0j4Xn1offrP4wxqRlj7lzmUH5yWC+KwT8ZOggF9jRBMA8SrLWzgBUjR47kL//yLzPrLe+9917+9E//lPe+973xkoKKBHNgYIB/+Id/8G7ZF5AVkVaX2IsW3W6iMokcEg/fHm41KmEYcP+vZSOD4ch1OZU9Mxi5G1lqbwAPI8vwn2PHHo4Ezb9JSW7YMUQZsg3otW0DVhYcawBZZncYY54t9wSttSegSTJxDnHHXR67bhPwQZJjxDkksL9ElmHme2atnY6Ecy6lXe1dKDnoGWPMUG6iAoHdhLKSg4d5ANOmTcsUy507d/KVr3yFxsZGvvvd71Z9sPr6eiZPnsyaNWtArk0/CHk4URlFjqg0oh5ZNEnNDXYiYZhccP1AwaU/4bqs60eghgNjGBoh9nQiMWtDLsynkXt5A3A2em+WoOblE4lKMfqRBZjUFcfHcHHPo9c9XiGr3fHTXN5pvIxijbNj121Er9UootrYu1FN79/iMnNj1KFmCtcBc6y1v8nqOexa5/3KWjsBWa9/Qro7fASKjZ9urX0U+GPIqg0MNUEwDx4OBUrOTPzWt77FO++8wze/+U2OOeaYQR1wwoQJXjD9otdJ1BO2l2jRH1Zw8XG8PiQyaa63etLHg2UxEsXwkqxJb9n2x36W+j3OAMrw9AK5Az3X5Sh5ZblrpTcauIrIDfkWEsxu8t3QhfSgTNhp7u9G9/g7KRbFblQjScL/MjHG5Ky1vwW+RH4Lv+XIxXurMca7Ypdaa78KfBM4jWKRm4U2AVOstX8AXsiqtTTGbAHutdY+DJwOnEp6Zu0o4FLgTGvtI8DiaiboBALlUM1iE9g/aQIya/FefPFFbrrpJmbMmMG3vvWtQR8wdqxCk9bXEXaghb4NicAGVDayyv3cQLpYVkodWlynI9dimuu1Di34TUQlKmNQTHOCu+8U9zgz3U8/jqwHuVp3EgnpSuAu4LfAMieWRwDXE4nlCOBolC3cS/6Ukjg7UUJPL3rN/KaiF4nY2wW3X05khVb8OrrykEcS/tWKykPit90O/H+oZjMppjkFOAX1Lb7aNYkodfwOY8yDwE0oaakv4+atyIX8JWvtXBcbDQRqShDMg4de0CDhNL72ta/R39/P3//935PL5ejo6Mi7eHp6eujo6PCF7anEjuUX/3pkrTSjBfQoIktpqPDxvunI3Vltw3OfudpOVOv4DhL2rej1He6OMcrddps77uXAXwD/y1r7/1AHpD9BLszDkRXVggRhrXvsQny/WP9avgMsdddvRLHQ+P22oBIPT6UuWc/TJGfdnmetzXNXGGO6gJtRE/63KRb9VvS8jwZusNae4bJlMzHG7DTG3A/8G+pVm2VBTkKDyT9rrS1stBAIDIqQ9HOQYK39KPDrI444giuvvDLxNrNmzeLttwuNlHQOO+wwVq5cmfr/H/7wh94lu51s62ADxaOhGohcrvFL/Pos6onqGyvZGOaIrDZf19hb4vxBi/gGJHjtCf9vRsks8XKOUeT3pfU9YfuQ23i4u24zsig965E4/om779uo9rIB1UgOIPdvV+xx/6naBgDW2mnA5yn2FLwF3JbSg/d8lAw0l+L2eD0o/tmBYqzzK2nC7mKc56Gs3VK8CDwYajgDtSAI5kGCG9z8VlaWbC0FsyBLdjtRAktSRmMP8POyDxyRJKQjkFU3mahZeeGlz51HPBnIU6krr4vIKkwT1YnIqornDLSSL56FeJfwTqKs4V3uWGuRO7gJifkTROJ4ErJ4V8Ye6w1jzM/KfUJJWGsvQs0GCrnLGPNSyn3mobaI76K41rIPjQLbhp7fY8DCShJ3rLVTgAtQL9oseoBHUUZtSAwKVE0QzIMEt+vfArSWU4eZRJV1mD4JxosVaJGPi+d2lG05GFpQWch4IkH0FqKv6/SZulkuvTrktvVN0ZN+H0bkIs0qoq9HNYbxPqp1yG1YatRZL9oE+EBwvzteNypDmeCu34pihr55wRZ3aXDn9g5qIDAoC8ta2wTcQHF9aifw3bRmAm4O6p8hwXwX+dZmDrmVvct3I3BPpYOm3WDyCyg9lHsz8AdjzPIStwsEEgmCeZBgrX0XsuJOKqfTTxJVdvrpoTjhxGfC9iO33MOouYF3hXqxK/zdC61PFtqJXK4noEzMobYeOlEMbZEvj3Djy0YiwfY/W5BAvJ9o4olvLDCZ0r1Uu5A4DkNJRv1ITHzDgOno9dvpbhfnZSSio9zt1yFX8XqiUWZbq5kI4sQvyZ//sjHmNxn3m+ruNxaVqUwj35JfSWQR51CCz8OV1FfGGiD41zyLpcD9ST1vA4EsgmAeBLgespeihfbz5faSLaTKXrLryXdV5ojqKgeQ+HUgS+hRypiNGFscz0ZCOdSsQjHB1wqHSSdhrX03it/FhXEMajc3kmgYdGE5TR2yFuML+Qb0mrUiwZ3gfrZRbN1uprwRaL1Eg7J3C2k5MU4XC0+KHd6eZbm5geVXIut6LEr4ilvZ65GQ+fd9G/A7Y8yyks8m/zj1qK71fLIb7vejTkSPF457CwTSCIJ5AOOE5QIkLJ7PAdOrsTLLFcz58+fzwgsvgIRwI8V1eR3kZ3DG6UTWxmPA48BaL55uMTzGPZ9y+o8Ohl0oMeU5Y0xS1moRzm15CUrGiXMIimFmJR/l0KZhG1G/3VeQKLYicZmExCrpS9uPRH0wZTjxwdpeSPMGa1trR6G2eYVitB34Xpb4WGtHoAzWWei1OAzFYr21uQ3FNeObkjeQNbilkidirR2JEoNOJjsuvQP4L+CVMIczUIogmAco1tphwIcptgamA58F6sqZh1kpsXmY/cC/osV+JhK4+HDkLNH0dKJMzEdQXO54FKMcSrYg4Xmxkl6l1trJKFZXGBw+jNI9UvuA14gsy7XAr40xu+ddukYHX0Ov4wgUC/Q/m9Em451yz7cCfAehuJBOQR6LQp40xjyQ9WDuc/khojrOUWgz4dsm+g5CcWu3H7lpH68009clBl1M6fjmcuC3WZ2IAoEgmAcgbif/CdIXiQuAs8eMGcN1113HuHG16TO+efNmbr31Vl+f+SDK3hwgcj9OQtaFF88tZCfN1KEEl7FEZRvLkTDUupvL28gdvLwSS8NZ8fPQoOx4Fmw9cjuWiqd1IYHwRa1PoTKIvHistfYDqF4ziS3AT9HrO9ldpqDNxVAU8A+gTUAjUTejHmT5/kcpizxWdnKOu6oO1aTOQq9bvOwkTjuyBhdX8R4dC1xI/hi1QnrR5/a5YG0GkgiCeYBRECtKowG4Bpgxbtw4rrrqqpIt80qxceNGbrvtNt/gYDnwMyLXoU9A8aUPw5Gb0k/MmEC+uzIulEmtiXpQ/d4bJPdPrYSlqJyh4rFhbrbjZWgxjtOELPusxRkkNq8g928ncLcx5o2E48wAPkO6+P3YGLOi8ErnIp6ExHNy7FJYF1kNI1DnHv++daPn8ybwf1FMNHNxcWUnl8YeYyTKpB1HftlJIatQfLMsV3nseE3InX8W2SPb3kG1oaU8IIGDjCCYBxCuwPxTpE8FidOMmmIf0tTUxEUXXcSJJ56Y2Zg9iVwuxzPPPMOCBQt8ks9KJJaFGY6HIAGNZ3UuAF5CyTDnu5+HITduuX2OO9AC+iZyaZZjeQ4gC+aJSgrm47hSho+gc43TgtyNpURpPRL8AWTd3hnrzRo/TiPwRYpdvZ4/GmPmV3DedWgj4q1QL6LVWKMzyW/O7lnuLqvc5R1gTVLWa6zsJJ4gdQhK6moiv+wkTg5lLD9U6XxM16HoQuQKTqMfhQKeDLWbAU8QzAMEVzbyZ5Tf+q0BFaKfgFuMDz/8cM4880zmzJlTUjgHBgZYtmwZCxcuZPXq3eMOf+Iu56TczTcTWIsE6x5jzC63iM9FsaZj0SLsLaFyF/EcctmtRYv0Vorbwe1Ci+xT1caqnJVyPmoyXnhu4935lxo4/RYSkRxKbno0rWG4tfZ95CdtxdmBEm0G3W/XPa9DyHfp+pKYNOpQUk1LwfVJCUgDRO0E3wFW+drQWNlJfKPXgAR5Btnx2W5UlrSoUmFz35kPku0JWI8+pxVZs4EDkyCYBwCxspFyxGUW2ln7ocU9aIGbitvljx8/nqOOOopp06YxZcoURoxQQmRnZyfr1q1j3bp1LFmyhLa23d3a1gNf9JaOtfZo1D81qd7Qt3L7NbIOZ6OYamFP2SZ3TnPQ4l2qdjFOHxLPTe6yDngAWZQVWSNx3EzRD1FsVYJez6PJfg/60Rivzei535nkSo0dbzrKak57zJ8luXBrRcwajVui08hvXjAGODHhHLch70EWW3HiibJsP0BxKKEZTXHpoHjWZ+FjPUyF2a7W2uGodvPkjJsNoBKUR8PszYObIJj7MSllI2mMAs5FVoRvSO4XuW7k0uxGcwjLjXG9CXwfuKXQYnNZox8nPau1AS2So8s4ThMS+jloQS23N2wfinW+jizPFUTuws3lLqzO+nofGjOVxKFoUc+iB8Ur293x78oSb5dN+gX0fiXxkjHmrhLHHBJcxu5MIgvwHIpnYYKe5+qE69PY5R6nCcVD24lc7K3ofS9VXrIBufqXVSics4A/JTsLewuKbZbfPzJwQBEEcz8lo2ykkAYUF/wTItfTSLQo+TFbvnZuA1qUmpBlMQpZocNQNusW5EpdhHbcj2TNHnRJMR8mP1bUgjIsJ7rjv4UsjHJpRokhs9AimmR97SIq7M/FrtuArE0/UsyL54o0t6brwfshilvCeWZRunlCOxLLLrSYP1lGQsx5wHtS/t2B2tFVO4GkprjazL9BG4cxRMlaA8DzZGdCFxLPLu5Hm6qt6LPXg9634WS7ikGfqQXGmJUVPI9G4L1o05jlKXjKPXbJJhaBA4sgmPshZZSNeMYjcWklKm9oQFZdDmVmehdTPRLSZeTXwHl+ZYz5XhXnWocWoEuJYpOFi9FmZAVWugCNQ5bdDCTufuB09twxxf7Wo6YKfWhhX0UkoOvRpqGUq+5I8vvEJrEJPbctwB3GmJIWl6sd/ALplvQvjTFLSj3OnsRaOxu42v1ZhzZGY9Hn7A3KS0SLk/TadiLxfBaNVTu+8E4JvInEbW25B3bJcx8iuyRoA3o/C1sTBg5ggmDuZ1hrxwKfJrtspAktOJPQ4jWdKOt0FFEf0niSxGgkHttIzkp8CPjflU6zd9bHOcileTzpscguos42lbISnfMRaFrHBPJdzmn4hubrkSXjaUJxOz/TsjBu5ZOU0tylHp+9uwS58kpahK437edQ/DaJV40xvy71OHuDjFrRJ4FniNy4M4lCA1nMIdnVC3KxP408Fc2U3iQtQRm1ZQmcex/OQlZ+WhJXH3A/SjgKC+lBQLmp+4F9ADel/hrS3YO4/x1H9N7GSzQa0SLVQX75he/pOUDyZ6IXieyhlNlNxrljz0QLaBNySy5CWaRJY61GILGrpLZyCY3FNMMAACAASURBVErk2W21WWvHIPfzqciiHe8uSULdgIRxChLsje484kLos2+3IlHdicSyVOHqmyhmWumCeibpYtkJ/K7Mx9kbPIhe88KNxJkoprgYufT95+NQojjooRRneL+JPpNJnpRpKHa/BL23M91ttxKNDIszFzjaWvsSSt5Jqu/cjcu4fcxauwRZm0nDqIchz8kR1tr5g0koC+wfBAtzP8ENzb2G7BT4caiW0bvyfKap38mPQFZT/E1vQoLZQSRshTFFH7tcaIx5sMR5NiKxOpvk5td1aFHN6sm3FrlGk6zZATSR44ksa8G5gmehDM5j0GvjxXMsxdbNCGSZNiDx7KDYaqknsoz8FBafZezxLshXUHu7JGs97ZwnAdeTbtHc6URnn8W5kz9P8XPYAXw/zcp2Ft0UIgt0FtHnJ6u94GbUVnAAvX+z0ee5DYnnVoo7Bg2gpghPlPP+uB7Gp6MEu7T3pgM1ngijww5ggmDuB7iF9BpKx4HmEWWd1hErFUELeaFI1BO5Yne639dSnIn4NrKWNhhjvp9yjg3Isnsv5WW+TkLJHWlejna0qPlknBwS7UcqHcvkYr7HIQt2Klr0WpF4TnTXJZ2zHz/mLfK00VzxmZsvA/eiTjRlT8Fwi/JnSLZkQHHQX+4Prj9r7Vko/lvIK8aYO8p8jHpkRR7hLqeTnom8FW1QBojmjR5OJLi9ROK5lfxY+XLUwnFlGYlYU4ErSG8iAXITPxgSgg5MgmDu47gd+9WUHjg8FllTnlYi12c7SsIoTCJpRtmG7UiQWlA8sHBH/gpRo/R/McbsLsB0ltwxaPddaX89L2SFhe+eXcjl9jRK3BhsGzz/ep6ILPFDUVLUKHcuvpl50sZiONFg6iQGUAnFS+6n73CzCnW5yVxArbVnou4zSXSjrNj2rMfYV3BidzXJ2cNVWclu+shlqLtSkot9O9pQeWvfbxgPIz+jNu5i30r02V+DhPP1EpnfjcBFZCeDbUDPs6ouUoF9lyCY+zAuW+8qsuf6eSajOA1o0Z+CFoKtaHFJsqBGEpWWDHO/r0WuyLhoPE1k6d1rjHnend9kNM6qVLZuFg1ItJIyErcjy3Y+Gd1wKsVZnJcgkZ9KfiOCOqJJIH7os0+UAi3IPUSlOP66xWhjkSSM/UQdiHyXm93xLudu/xLp1vbdxpgXy3+Gex+XnPYlimt6u5Frtq34XmU97omoXnI0xS72NvQ+xN+DepT0NpPkLli7kEdlI4p9bkZJSi9lbXJcc44/JX0j24eaZZTVyN3FdN+NvERHoNetDyWlvQA8X4l7PzA0BMHcR3ENtz9N6Xozz1Tk4vSurHr0ZfNdfJIyEhvRlzLnfvq2da+6+4xCC8oTsfs8jDIez0OxylpNw/Dut3pk4b5F/iDlN9GuvVQ2ZCbW2qOQpRJ3b/sNxhTyF/jhRG5tP+TZC2cOCecONPh6TYWnsplIQM8i3c23HPjp/uCKLcQN0r484V8rUcP4qp6Te9wPE70Xw4hi1A2oNKpQ7BqQcB5KeqZ2H3pfNqH35kmUsJVWozvancecjNNdgjY8RaVazjtzLnADspxLtbV8BTUKuT2p73Bg6AmCuQ9irT0M9daspB3cSCRgE5FltAFZQYUiEGeru20jWvxbUFH2UqJEi8IWZ8uQuKW5UQdDPxKytPKLNpRIU0n3GGC3S+8DaBefRh1aeKeipKTJFLux64jEsxsJ3jrkhq1mEZuOSoB63f3b0IZhJ3IXfq9aa2xv4wThCpKbazxgjHlyEI99DPBRkmtVd6KM7EORWzieqFOPvhMzyPbcePFcg5qwP5sUEnDP8XRUNpWWELQZxZ83xe53MvADYsPGJ02axLRp05g0aRKNjY0MDAzQ1ta2ux1lb+9up0YHYFF4JDSG34MEwdzHcAXgn6T8JupxzkULwQb0hR9Jeq3gLiKr6G2UXdiAOtH0u99PQa6qt5ALbCrp2auDoR0tSi8iq+4K0nft/cAfKLNUw8XT5qGG6eW4tkGv2bFIvEdTvHHpQ6/Z0+i18N1tfA/bHeRnIqfRjF7jtIX2RdQpxw9u3oBa+u03i6Rzf3+J4uzufuAHg3EzOm/Bx0h+/TahQQA9aPN3BNqY+Dh7HdpczqR0klofctu+BPwezePcbcFaa1vQBtf3c36D4jyAXhRaeAMwwF8DDaNGjeKkk05i3rx5jBmTngDf39/PkiVLWLRoEW+/vbsz39PAtcaYpSXOP1AjgmDuQ1hr5yCxrKY+tglNHhmBdtF1yBJME96NKFbpO9GcjRb/x2O38S7amcjaWk1xfdtg6EJDm5+NN7V2IncuKhpPc/kuRvHU1ExUN4LrEmRRlMs0tLDGj9uMFvyRSBBXoMUz6bWoI4pZ7nSPl7Ygn0ByI3dIb17ejywWL6AbgPX7cg1gQRegOBvRwOmqM0rdd+YTJH/OtyLXbzxJbTxR5q0fgt2KPuNp70WcPvTePoo+fxuttR9CiWT1aKM3Gb13hUlaPmFoHsDpp5/O+eefT2NjZXvjZcuWce+999Le3g6K819ijHmqogcJVEUQzH0Et7hfRXWWJciyXI8stKOQqy8ta7WLyGX7HBKCE9EX/Hl3Gy+466i9RbkLuX6fzBpNZa09AlmbaZbhRtSyL2/Qr4stvZ9s92sSWfV+3ciq3IFep3IawPegcWKvIwvU1xhOQq/tUSn3SxqPVYoO8i3RfcoatdZehMbJFfK0MeYPg3zsWWgObFIIYzsSzaJGBS7j9QiU5X0UquOcQdQhqxR9qAa0AYmzf60nIeF8hcjSbECb4TkjR47k4x//ODNnztz9QO+88w6/+c1vWLBgAS+99BIbNmygqamJ2bNnc/HFF/O1r32NqVOjfhbd3d3cfffdLF26FPR5PN8Ys6iMcw4MgiCY+wCuvutayk/wKcRbpH6n3oiss5FoYY93BsohEexFVtoWokHAvt5yLLKympEFWCv6UWzpcT8LsRTW2nHI7VY4/svTi5IqXnO1oKehWtBK4r+ghTOtBnINcks/j9xqzais4FTK65GaQwvr08aYVS67+K/QwjoWWa9xAV5G5UlESfjWf3lCujesUTcs4PMkZ0P/xBjz1iAfPytJboc7xuaE//n7NyKROxZZ/n6sXKnZpiChbUYemOXo++WHBLyBPDkfAE5raWnh2muvZeLEKMdr1apVHHbYYcTX4jFjxrBz5076+6XBra2t3HnnnZx33nm7bzMwMMBdd93FK6+8gjvmcZXWKAcqIwjmXsY1JbiO0nWWaexALr/4jriwcfVYIndTOxLJtejLDOrxOg4V3U8jWtS2uusGS849ziOlWpIl4Rbbi1C8L40VSHgmVPjwdUTzQQvpQglQ25FF/EA8burO6ziU9FGu23c1svxbiOKcdeg9HOOO+SoS03IW62rws0K3JVy6hyoj120UvkDx8/LJTYOavlKiDKsDiWbJ2kj3vh6BPBTnosShrI1RPYrve+9QJ9rwrHTnUgd8qq6ujs9+9rNMn57fU37lypXMnj2bSy65hGuvvZYLLriA1tZWent7WbBgAV/+8pdZsWIFY8aMYenSpUyZEn3U+vv7+fGPf8yqVasAbjPGJLm+AzUiCOZexPWG/QzldcZJYjUSw/j9W5D1ExfQOpTIMhx9kTuQpeddSGej7Mxx5C9mK5DVORheR02vB13Eba09Afgg+W7rZqI5mW1IbMrtsFOP3HFJJR2r0fPvR4lQC9OEJNaG7wxkVWTh62W70Xuxjsgz0IdqFLc4a3ki0eBmP8S50qkfleIbzscv2/3Pwbp4Mxo0vIqmfwxqQXKifDXJWdw7gf80xpSaqRl/vGHo83UO8tpMJ9kd71v7xT+bOfRdmwOMOPfcc/MsRE9bWxsrV67khBNOSDyH119/nRNPPJHu7m7+7u/+DmNM3v+3bNnCv//7v9PX1wfwAWPM/eU+v0BlBMHcS7gm4ddRXqJBEsvRF3d2wfXvJj122Ynct68QlUAMQ82xkxaBF8mf4lEJq4D7qykBycItiB9DAjkDuZPjIt+L3J+lzttbh4WN7LuQyLehBe++SmJD1tqJyOI8geJ4dBNy48aTuvqJylLmlyq1cNNfJpMvpBMZOms0Tg59bpIs021AZxnt5eqQoCXFin9jjBm0R8N5ba4meSPahkSz4lIdJ57HABej78xYoi5Qw4iaXMQZCUwaP348N9xwAw0N1b1N5513Ho888giXXXYZ8+fPL/r/448/zkMPPQTwX8aYtI5RgUESBHMv4GoCryN7RFcWS1E86tyC68eTnujSjeYIPooEYRxycZ5JslWUQ/HLSi2KDuC/gJeHwrXnFtzjgP9G+uDmHLIOV5Fc3tGEXqdRBffxVuUAet53GWNeqfI8R6JsyFOJFu7jSG9Q0Ab8DLl+V1Xy2sWsUW+FeiEdilrZLHopFtF2ZNl1up/dyPWc1AWoB1nY1W7SduOyYa8heTLOFuDWcuPoKY8/DH0Gr0VhgAF0/oXv22Sg+eKLL+bUU0+t9nB89KMf5c477+SSSy7hvvvuK/p/V1cXN954o7cyjzLGvFF0o8CgCYK5h3EtsK4hfYRTKV5Dlt8nKc7kO5l0l92rKI74I+Q6PBvtiueSHL/bgTI8y2UA1YU9mtTVpBa4FnIfQDFakIU5m/SMxu1ocxDPNm0mKr/xdLrbeat7Fyo0H/TkCSdmx6Js3/ek3GwAJRT5ZJw1SDiXDMYFGrNG40I6ifIyfIeKAfR6j0UbiF1IaHe5y0rgp+i12MkgYqouYew6kkVzPfCjrCztEo/dCvwcfZ4aiGawNqDnk3O/H9rY2Mg3vvENmpvT+odk09fXx4wZM1i/fj3f/OY3+fa3v514u/nz5/PCCy+A5tb+r6oOFsgkCOYexFrbhDL5Zpa6bQqvIevtCxQnNkxCC3MSbahM4QFkUcbdkKeT3AnIDz8uh7eA3w/V9Hn3up2Dzr3QpzUWPe+sdmfLkEXegixLn0k5gJ7n20SlM13Az4wxhSPOBnP+LcCXUULVoWhxjYt8Wqy4DXkFnq92YU84l2Hu+K0Jl3Hs2Rm5aZu1+OvhBTZupSb93kvUHL8v9rsXzaSN5CqUKFP2VBmP69TzfxL+Ndwds8kd85A5c+bw6U9/utJD7Oamm27i61//OvX19bz88ssce2zy13zJkiX86le/AiWnXVT1AQOpBMHcQ7hi/E8SWUeVsgz4NXIBFZZY1CHrMs0F5ydoFP5/OMm1cZA/oSSNNjQgeckQul+PRUkiWXNAm4hmXqbRjuJJXnC3oDhwV8Ftbqv1lAlr7UfJbw83AgmnH1z9PNmdgXpRA+4nh7JNnnu9R5Mspq3UPuFoGPrcFm7YfFb1NvJbERZefIOOrAvocz7b3T4XO0YOfYaXIhe8v24g9nv8gntMH7f0CWiFCXb+tmOBlrPPPpsLLrigslfG8fLLL3PGGWfQ2dnJn//5n3PTTTel3ratrY1//dd/BX22J+2P/Yf3dYJg7gHcQnQJ2WURWaxEbqq0sUKHIMFIwjcpWFnh/Z4gfZRVH2pM/Xi8Q08tsdYegl6zWWXepQ4lkiRZ783oufoRXL7+NM5WJJYVl71kYa09DvU8TaIeZSsfQfaGwNOP3OSP743m287SH0exVep/T2q6kSV4vmn6kei1iF98vXCtGE5yb2CQlVqNd2Q0ypptIBLa+GUCMPKKK67guOOS2ulms27dOs466yxWrFjBvHnzWLhwYaZbN5fL8e1vf5uenh6AQ4bK43MwsyfdLwczp1O9WK5BsZLjSRZLX9JQSD1KAlqHXE9JpC3SnaSL5VKU/TokBdKuS8+5KGGmklhbjmjCyVwit+sIJJZ+DqJvsL6NyA27Hk2AqDoJJAkX57os4yYPG2MednHOY5C1n9agAaL+vidZa59HwjnkMzKdG3c00bxQH6drQ4kubeg1HIs+c15IxyKrvhF5ARpJzubNkWy9TnGPWwt6UGeoyRTHvH1NbCmPSiHtyPMzBr0+hZ/XeoDhwyvvR7J161YuvPBCVqxYwZFHHsl9991XMgZaV1fH8OHDvWC2UN0mIJBBEMwhxs3NqzbNeyOyLKcj908Sh1Dc9GAk2t3uRK68tMSRpGQI0AJYyFYUp1yWdcLV4pKhzkKbi2rbA4ISfZ5Dmb8z0evTSX7rshloYV+C4sI/q1WM0ONE8KOkd2/aiOvb6xJ7FltrX3HnfAZq1ZaWzNSAsm+9cC6sVjidGI6JXcYW/D2GyrNt/aSPJAGqJxLPuJAeTVSm0eAuTeh9qtXmrBuJSFLru1FoA1XpsfpRstgwil+nqtx3bW1tXHTRRbzyyivMnDmTBx98kMmTk0K9xcQ8hvtES8QDjSCYQ4i1djrKjqxmZuRW4Db0JfwYydZWoXXprcpR6Mv6HBKLJBpIj0nFBXMX8Bjw1GCaZKfhWpKdhrJ2q0sjLMY3yD7E/UyylltQ79h7kPVRa84nv9tSnAHgnsLX08Wc3gbedmURp6Eev2kJTcPcbeZZaxch4dxtJbvXtlD8CkWx2g5T1TKAhKtwg7IBeRUKNxh1KNbcRr7AFv4ed+c2xH4v/O51IiFPKuka486v3LKWOmQFe09N3B3rXbR0dJTvuNi5cyeXXHIJixYtYsqUKTz44IN5PWez6O/vp7Nz99d90KU5gWJCDHOIcCntn6O6RIkdwH+ihf9zpCezTEE7c4isSu/yWolGZqXRisorkniGqEXbA0ORaOIssBNRqUW1nY7SGIFEYQNaVOdS/BpuQKUkOfRa3VWr5+maxmelRS4wxjye8f/4Y41AVvfp5ItJg/s7fmlAGwTfhL/ccWb7CmPRfMhCketG1vgWIrHtRm7huEj1UxxHhCgBKC6ix6DNhr+e2O8vIpGOC6//PZ4U9AnyG4cULqYTgcknn3wyl156ackn39XVxaWXXsrDDz/MhAkTePTRR1MzYpNYv349N998M8Cbxpgjyr5joGyChTkEOPfip6hOLHcCP3Y/ryVdLL11WY+EMu4O6kKil0WaO7YXWTm/N8asKOuMKyDWeOA80jsSDYY1yLLz2a89aAGcgZKC6snvowt6Hb9krb3PGLN4MAd3tY8fybjJCpRQlfUYDWhD4y3BAXe+J6Gs4RbS3dYzicaLvUN6LHpP0l3BZS5yzfvSEJ+92oaaDdTKG/CItXYxkJS+OgJYYYxJrUN2HZ0+R3GcsAG9PyNQjHPy2rVrS55Mb28vl19+OQ8//DDjxo3jgQceqEgsAWLHeT7rdoHqCYJZY9xi92ekD27Oohu5YbciN2yaSw/U+GA8+VYlaJF5hfxyiSSSBLMPdQK6udZjoZxQHolclZXMpyyXdShe+76U/69CiT4tyLospBm4wg0lvq+aRuDuOX6E9JhfJ2r/NuBu34SskEkFP8eT7ILfhaz+Q90lrc9aA9ogTEMbiFUMTjh9T1TfqaeSS69/vuVgrV2K1qVCtZgIXGatvbOG5RIL0ft+VsL/LrPW9hhjXk25bwfayHjLcyTaIDciD9FGd/3stWvX1m/ZsoUJE5LnAvT39/OpT32KP/zhD4wePZrf//73nHTSSRU/mcWLd+/1Hq34zoGyCC7ZGuIWzMuQJVApA6isYYW19v0kf4k9w1HJRaHo+VT8x8iepViHYobxBXc9yjK9t9bDaK21h6GdfLUNG7LoQs3RN5A+3snzAnCfO5e0+lPQgndXpRa2tfYsNIezkEYkoo+i98WLYzmlJGk0IlH0ZQ1Z9JMunD57eEfBpS32e8eenKtprR2ORoEltRH8vTGmlPekkmPVoYS6eQn/HgB+npTo5pKlvoVyFEYS9dndQf782KOAKaeffjoXXZTcS+Cxxx7jPe9RE6jm5mbGjk1z/sCMGTN47rnniq7ftGkT3/ve90CbsmlDWa97MBMEs4ZYa09Hrduq4W5jzIuug0haRizIcp1HcoeULajso1QfydFEC0R8hBXAD4wxtZjFiLV2ChKnaps1ZJFDrqeHkNv6arKThl5EiTY5d26zgQ+TLVpPoXhjyWQna+2hwA3IymhBi6i/NFJZ56RKyBLOHHJJ+8tOVMf5JNpgeDGs9YDwQeMaqH+e4oSnAeSarWUnpnrgcvKbS3j60Eb27dhUmncj13Ez8vBMcbdroni83ChgXlNTEzfccEOiGD7yyCOJU0ySOOyww1i5cmXR9XfccQevvvoqwH8YY75Y1oMFKiYIZo2w1s5EMcdq+nQ+Zox5yCWLfCrlMZpQqcQktDgWutN3oOy/Zyid9XkoGjm0hmiEFcj6+McajHAaj2KUxw/mcTJYBfzOGLPODd++hmyxfBltSPKEwSXUfJD0loIgYfmNMWaDu88w5DKNu1GnoAkWaa7YdmTd1lKYBsi3CHtQjHY2USbqLpJLG3rQ5+Spwc6gHEqstccjC66QduDfazkI24VSPk7yIIJG1OxiGtkbrMI5tKD35nhg1pw5c7jyyiupq6smaT6dWEu8TuD4wQ7jDqQTBLMGuESPL1Jdtudi4Dfoi3Y1ySUEk1E3GF8mUJgs04liJmtQIXUpZiKXW6HbZoUx5sdln3kBrunAe5BLeigafOdNQnEW7DVkZ4O+QixuWIizGo4HLiXfnTuMyEJsRu7qbei1L1zxjiE9Zt2PuvlUKkwdKJYdd43GLzuTnpP7LJ6FGhyUylHY54XTWnsxymYtZAWy/Gq2CXFlOFciK7IFbYgOcb/vQpuetDKtw1GZEkTfxw3u90eAu4DWiy66iNNPP71Wp8y2bdv44Q9/6MtJvmqM+X81e/BAESHpZ5A4d85HqU4s30F1gJNR/K1QLIejHa9389RRHLfsRZl6A+7xssihiSJdJItMqfsn4iy1s9HCNhSfqV7kHn3SZ0m61nlXky2Wr5Ihlo56tLg9CXwILXwjKY6FzkKC+Tr5FvwUshO83iBdLHPuMTej99AX+2+qtpGCq8O831r7BHpPTib9PRmOuiqdZq19Cni61g0casADaDN5aMH1hyMvxoJaHMRtnKagz8KFFHdcakRlWC9QnB8wDiXhrUYiGW8i8VtjzPPW2i8Bv7j//vtpamqqKqmnkO3bt3Pbbbd5sXwQ+N6gHzSQSbAwB0kZCTppbAV+iBbn6yh2501ENZbxxa7QuuxDST796MuaNY5qMxLnTuCrKbe5zRhTdpzNZXmehp5/rZoOxOlHzRcej7vfXHzrWrI70CwB7oi7l92i2IoWYH+ZSvQa16GF2ZefJNGHRHAjeu/mkZ50sx4JbB+KL+eJIrBlKJpBxHFW/9nuPEttZrrRhmqfEk43bP16kpss/NwYs7TKx21A7/XR7uLLwBpRPWjS56sLiWavuyxBn6nDKHZ//5cxZncJkbX2v+EmnJxxxhmcd955NDZW19Rq+fLlzJ8/n/b2dpAH44K90V/4YCMI5iCw1s5FcY9K6UJi2Q98hvy4SD2KLxbGQvxi7hfnAbQg97rHecb9XkgOWU+PGGN2WWtPRJZU0u3+sZw6Nzcc+VQklkNRHJ9DSTqPFg4TdvVv15Jd47oU+JU7Ny+M09zPcs53FErqyBLkje528UW8j2jc1DrgFvdz+95OrHGi44WzVFZtN7Lonx6q2aaV4pK0riK5qcF/lNvb2GXgHoEE8l2kZ1U3ocYahZ+XHAp7fA941X2nzqS4/eXjxpgi69da+xXgJqB+4sSJXHLJJcyaNavsuGZ7ezsPP/ywn3sJ+hx+E7iz1r2QA8UEwawSN8z4C2SXMSTRD/wEWZjXkW8xjkTxsCQxGIt2sqAv7UYiV19aBuYmlBm6OnbeH0ILQSHrjDE3Z524tXYsKseYx+D6vWaxBHgoadKCe82vJdn93eCub3OPMZX05gzlUI8SaApdgSCX7Gj03r9BFKvyG5Z+4IfGmFpO26gJTjjPQXHmUsLZhYTzmX1BOK2156I63kLWA7ekTc5x80iPQiI5m/LDBs3ouzIcfa42oO+Ur4e9w8XSh6GN85HovX8MJfIlLq7W2tPQIPejAQ455BDmzZvHnDlzGD9+fJF4dnV1sXr1al566SWWLFnCwMAAaA1Ygb77zyGvxR9w8f0yn1+gQoJgVoFzRX6O6poT3IMsoGsL7j8Z7XiTFrF68ssGthDFSfqRGy2+WAygbjKPxl1+ziX550TCG+cZY8zvk07YuUDPQun0Q5HMA0qqWZBW0uIyb69F1ngd2lSMJpoUMRLFA1+hNtmoObSpqUfWJkTWYytRCUIOucNXxI77B2PM0zU4hyHDbX7OQYJQjnA+gT4je61zkPv8fpLkTNYXjDH3xG7bSuRqnUnl/ZxzKKa/HiVQJX3u86xItxnZVU4ClesG9k1UirS7RKypqYlJkybR1NTEwMAAbW1tbN9e1BZ2M/q8+QSkbWjmLSgs89tCz0ygNgTBrBD3pb2c6komnkdJDFcTuVwb0M40q/tN3LrcQf5EhbfRl8ezEZVQFPXjcu7Mr6Qc49eFXU1c8/iz0aJT21z4iDVIKBNT4d3rPRtlIfu0/lEUL2DbUMZxNWLZ6c5jLbIiNgNb/WajoPxkOEqkKbSwO5Bl+wKKq+0XXyzX8/hsyhPONpRc8sreen7uvfgiyS0j/QzXo6mum1Q/2rgtAZb6uLm1dgbKxk6yTO82xrxYxbFwj92E1pNPoM9VUnevPiTc65CIJzV0iM947UXWb6l67ECFBMGsEGvtPLJnHKaxFrliP0mUft6CFuGsiRH1yC1YT/Gg2z4Uu9yFhGIhcgUlJpJYa89AQ6gLyQHfMcZ0xgTqbJQQMVRsQk0HXo8vvi5JJZ6UMxs1Hs9KKqpELHehhWdN7LK9lAC41+UE4G9JXrBAltg/ozmX+9V4JSec3uIs5UVYjazo1SVuNyS42tvPEpVZTXSX4agxQyWxvB7kVn8dWJ7mes6oCe1HyXIrKzhmKq5U6ggUO73I/dyCPtvj0HOeTXFstRO5Zv3neBfwz/tS8taBQBDMCnBuwetJH7eUhk/yuRh9CFA3GQAAIABJREFUGUDW0hGUXpzGuUsXsh7jb9hKd9mAdrqZMTNr7VUooaiQ1Wg6ylwklFNLnNNgaEN1aS+hL388IWc6+QlQw1G2YlaiznYklkkCNUBUn+ovm6pNwLHWvhd1cjqaYgsnh57TdvR+3Lu3BGUwOFfmOeh1L/XZXAw8uCfbsLl44WzUGvISir+L3ciTk+U67kAC+TqwstxMZWvte1ApSyFdKGa9JeF/VWOt/SD5Q+NbUBinnfyQgPf+LEOfcc8P98fP4L5MEMwycfWW16E2ZJWQQxmbpxAlHBxF8jy+Qrx12YsW4fib1YeyXx9CsZRMi8a5fv6aYrdbPUocGMHQTA/xdCKX2QZkYR+OhDJtUS5HLNtQFx//3LeRL47rahVzs9bOQm45PypqBtG0GCh2jft5pAv2hYSZSnHCeS6yqrOE038OFxpjkrK0a3EuzShscbT76UXyKJI3d9vR5iX+fdmKBHIJsLoal3Ksuf67E/69FQlUWmODiknIaB+OXoOX0HdjHFoblqK4bh3yOPWjjcP/GeqypYONIJgpuC/pu9GHcjhqHnAklU99WIgW18NQcsqxlF+zOA4JxgaK3Y3PIzfq+nIeyE3h+GTsqgYkWIeiRJn2pPsNkjq0uK3BNYWmvAzFJrQgZLmqNwK/RUK1Blhby8UqjiujuZ7itmi+/KQPlcEkfZl2oDZ+rw/FuQ01Lu59IcmJNnE6UBOBl2pRQuNc8z6z9XDSk+FOIjmrfD3wMBLI15FnYdCLnbNwryZ5kMDbyD1bE5FyzTluiF3VgLLUF6LnfDJaFx5D36vDkPv2ZeQyLz1XLFARQTATsNaehMZE+QV7FCql6Edfvs1lPtRK9EE+FInmbMpPnqlD7hffxceTQzGXr1fSzizm3ml05+P70fYiC6FWjEQJSmPQIrqeyjYZSWLZjwTdT9VYimrvhjw+46yKT6DFO4le9Jk4nuz3dgmatLFfFpdba+egmFqpzPD1aLFeWeHjDyP6jsxGm6tyvivNRN2M/NxM3xziPlPmoO4Kz3UkypJP8si8hMIjtRDneuBvyHc7n4s2yzuJWjI+RrRGdAE3hdjl0BAEs4CEZgT1SCzjRexLSJ6pGGcn+vBORbvk5GF46TQSTZH39Lhj31nJQuAW/b9BcY8pFI/1Goz1MxwJZCuyiJvcY66kdBP4Qnz7sfjIqXZknfoP6lrgJ3tqQbDWnopiZWn8yhjzmrV2GkoGy4r/9qAs00X7SxZtHLeAn4TieFlNHUCfqQfSGgq4x5qKxPFwZLFV01axD31GjkIu+cLNWVH2dy2w0QDpJG/RQ8aYx2p0nKvRa+Q5BX0H1iDv00kUDyR/zBjzUC2OH8gnCGYM54b9Bvk7uiMoLl7vAZ4lOdEEJLKdSJzmUnlzgx4id6ZnKxLLncCN5QqGy7r7AFH8rZDXkHuzXBqRMHqB9JbgAMo+XUX2LM5CtqNU+S1ELfbSXHrrkFjukUbh7rX7HOkL+SJjzG9jt69HGb3nkd3YYRVKCqrkdd9ncN+Tc9BzzSpF6Uffk0fRZ3oikUDOovp2it3Iy7IEeNMY05uRvd4H/Ggokl+stYej7kNJMd47jDGv1OAYhc0apqLNt3/sgYTj9yIrs2bTXAIiCGYMa+2xwJ/FrmpFFk8a7WghWIN2tyCRa0KLw2FUXr+4C1lnfoZkDtWG+fl/Txtj/pD1AM69dQzajc5wl6Ts2BzanWbFXBqI6kDHIfd0/Dn1ESXZlJP0sRMlx6wA3jLGbHO1ddeQXTu3AfjxUMUpC3FJUl8gvYRkI5odWuRudgkzlxJlRCfhm0s8tjebAQwG9zzfR/p4NO99GEk0eaXaBaed/MzWos1qRl/nnei9qnkxf0aryT70eR3U3E5XA/rZgqtHoHru9SjD/c8p3riUXCcClRMEM4a19jKiwcrDkOBkWYcNRJbEOhRbm4V2zkmF1aXwySNHuPt3IwvQx70GgP+b9sV3tXQno1q6uMvsBJK7+7ShQvs4dSj+6AVyDMk76F4k4uvIFtxetAFYgYR/Y0Hd5QiURJHlytyIFp89tmPOaCEI2tT8IMtCdG7wY8mekwkSknuNMSsybrNPYzUL9gNog+i9D60UZzjvRC0cy+r7iuKQXiTXlFkr+zGizkxxNgL/ORSufGvt+1A5ViE7UebstoT/lfvYDSicUuix+Hef8Get/QCy9uP0Af+2J0t+DgaCYMaw1l5JZNlldQsZhtwi8QXBlxusoLpddB/Kbssh0d6EBDguRq8YY+4oOOc6ZD2eQpRaHqcB7bqTRG8FyuwbRb6bNcvN1oWEcj3JrtN+938vkGvTSl7c/MFrSO7X6tmEXGp7UiyPQyPb0rjXGPN8mY81Ang/ijVl8SKK+e0RC7oWOCvclwjNRlnlcygdgtiKhLPwPS3yPlRxTo2o/KtwPBfumD+tdSN89x38M+TVKWQT6nNbtVCn1E/fb4x5yv1/FPA1ikX1eWPMvdUeN1BMEMwY1tovoC9aliu2CQlpXIC82xK0GKwm2+oqpA9l1/nkhXYU2C/kP3yquFuIT0QWZVb95ESiImfPMGQFr0WiX04j9Q4Ua9xE/oYgh6xML5DvlONidPG+T5BdrrAZieUem8Lg3IzXk77o7266XeHjzkIxtqzkr07UQHvxvpgU5Kwd331pNvn9jT0NRGGArI2X79X6CLIgi7wPgzjP0cDnKS4DAo3Cuq/Wr68T6mtJbm33FhLqqro/WWvPRq7vOEuNMT+P3eYCFFeOMwB8t9YNFQ5mgmDGsNb+BRLLU0gumK9DrsN4Ms4wZJXVIVddDxLNUlm0nl1ILDvQDvsQinfeoLjNj1w25imojKGcrMJ3oU3AcBRLGokE0luCpfBJOXE3mm/+/JY7r4qScNyO/DKyra4tSCyHoj40EWcxfYZ0z8J25AqrylpwseVzkPsuS0zeRA20q3bl1QL3Pk0mStQ5jPK7XA1394m/lgMovLDNXdpR2OEx1Ni9ZkX2LmHrMynnu9s6qyXO0vs8yVNynkfvaTUNEw5FyWdxuoF/8tay20B/jeJEqsXGmDsrPWYgmSCYDrc4/E8kMElFyVA8wLmZaHqGL6HoJZqHWKqsoheJ5U7kkusjvxWWpx7tjCeTvINNog4J+TnuHAvFtZ2oWXMSm5FQ7nAXL5ArBltL6FrMvTfjJtuAW/dkzaJ7/6+g2Br3DLhzGlQShzvWJLRhSPucgTZSjwJP7am+tDYasO0F8nCym0eUIoe+C5PRJq2N9AzobcB/AUtqZf1Za9+FmnUUhilywC9MlYOnSxxzMhLqJA/FA8aYimuenTfmrxMec7fHyd3uHOCCgtvkkJVZbu14IIMgmA6rwbJ/j+KHaZmthxIJTwtRxmgv0ULgBTM+giuJHqLeo/ehNPm/IH9H3Ew0oaOciQgNSNAnEsVY0wR2I9F4IE8OWcbLUNq6F8ktNVzESjWv34FiPns0WSHF7RVnQS2L4J04zXPHzCqv2ADMNyljzwZ5Do3IY+L7+M5gcDNEIcH74J7rXBTLTUo+i/M2sgBr0qXGavbkxQn/2oWSgGo+s9RaewRwJclC/ctquj4V5Fd4/ssY80TsNk3IyixMMguxzBoRBNPhGqv/O+mdTEbG/jcWLXJ1yCqMu5Lig4T9kOfCF7kbieVKVFi9uWDBHo8WsPHuGEuRxZpEIxLHSWgxisdWCy1iTw65Y+Mi/xJqbfYysL7WiRGwuz3fJ0jfkHSjRWyP1idaa48EPkX6eb0F3D5Er8lolGGaVpoBer+eRQXxVfWldVbKIeQ3uj+Ewc83Ldv74FzSp6FuNVmJQb6R/YJauOSttZcApyb8qx1lO9fck2GtPQWVFhWyC3kqKtoQWGvPRC0K4ywzxvy04HZJE4n6gX/Zk7kABypBMB1u0byZ9AVkCrLYWomswAHyaw99jCbOLmQleFHtQovB42gn3eeSKf4K7SCnkR8/7UUDouOLdTPRSKOxpC/0U0i2XrqQFbkBNW+/b6jdny4Ocw3pCUZ9qA/n20N5HoVYayeguFOalbcdLapDmqXr3IeXkm3h7UDvVaYr0Vl048gfkzaV8pK7StGFNnpvIaGs2PtgrW1BzR2yvDmg785C4MnB1Kq6zcInKbbQQBvRW4eicXxKuQdIqG+uRMBc7sIXCq7uBb4dd9k7T9lfUPx5zht2HaiOIJgOq9E9NuXfw5E7djz5yRpxV2wOJe4kxZv60BezHU0T+LVrp1aH4liXIzdlVulHC7IiJ5LcbLqQeuRi8wtSDi12nSge+hPkqhnySRqujdhnSI+H5VCLuSVDfS5x3OLyedKbE+xC7uGyGtzX4HyaUFeX08gWktdQX9p2d78WisekDSb2GGcXimV7gayZ98HF+y4kualGnDbUwL7qmKN7rz+D4qmFLEWu0lqXm2Rlgq9AG8Syjuke65sUC+EthXH1lIzZbmRl7neTc/YlgmA6XGztn1P+fSjFo6jirth+JERZyRnrgduAnyLRPYFoGsopJBe3N6LFyk8tqYSRSAi8SHYSjb/630MRu0nCuRw/S3Yjh98ZY57dE+fjcZuVT5Jd1lKT9maVYq2djjZQSdm6DWjD1EzUr7eaJhlpDKDPiHezrq5l9moh7n04Egln2sbFswR9Vqpy01prx6INUtKG8yljzP3VPG6JYw5HdaFJ7+VCY8yDFTzWJykeAlBkObps3a9TnOhXVdJRICIIpsNlLv6C4nT/MaiJQVwsc2ihyqGdW6ldWzeKQX0XlYPEC/XHE83Xq0MLoS//2En5XVE8vSjxYrQ79z4k1mvd4+1AO80hf+NLLBaeveIqstaej2JpaVS0mNUa56Y/EzV+n4Dez9FoYxW3PttQwli1LuM2imeI7nErxD3fk1H2dNbmcFAN7N1m5FqS3dO/NcYsqvQxyzjmWOROTdoU/7xcy9laezLwwYKrNxhjvp9w23jXMs8O1GN2j2RdH4gcNILpEg7mIrfmMCRib6JONDl3m39A8+Y8o1Gru8IPei/64naRnibv6UFWYgOKWxa+4Cci63UkWii8MOfQAlbO7r6LaKTRDnff41Gm7gbyLd8/GmPml/GYg8ItgFeSP2mhkJqNQqoEa+0xqIVaGsvQQlbzJJ80YiUdhXHHUcgKzmpOMYCaZbxNtpejCzc71P1cs68lgrh6wvegJJ2shKSqG9jb4olEngHUYODNSh+zjGPORo3aC13t3ag8pOTG2Fo7Bg2HKORfC9tlutj8VxKOd7cxppyM+0ACB7Rguh6Xn0fp7CeQnNixAXgO+CWyAv+JqE3cWLS7j+9GdyFRykpCaECJQT1oIfMJBY+jBa3JPe6hqJ1WUrxqJ+qqk0Y7kUh662IAua1WkpyhB4rVDGms0GZPpvcsR6K0R3e7Lm72OdITYLagJJ8hGx/mNm8+szmeuZplWR2CegxnNQ7oxcUZ0edzHfnW47Z9sYNQEm7Bv5jsBvb9RA3sK3IbW2vPQutCIT0oLljzTO2UOknQ+3VLmR2yvkhx3+XEkIa19uMU99XdCHx/f/kc7GtUM39un8dq6sjfU5BI09raytixY6mvr2fXrl1s2rSJ7u7uycjN8UEkPj9Du3mfrehdtN796i04yE+oqUeLcJP7fTv5pRudaGGcSNTsYCLpyR2FWauFw3HjC3o7SuT5ozGm3X0xkxhAcamh5n1ki+ValOSzp8VyJErCSBPLHlTQXhOxtBqD5RO1/M+JaDNW6RSbjcg9P4fiBTOHNk0+tteJZqYur+7M9z7GmC3W2p+S3cC+AbnVj7XW/tZU1sD+SbRpKew2NRy40lr7n0NQC7wQJeIVxs2nAJdaa+8pQ8jeoPj9Pwpt9gt5gmLBPATFjN8o64wDeRxQFqbbuf8V8HdAU319PccccwwnnHAC06dPZ8SI/A18Lpdj27ZtvPXWWyxatIgNG3Z3s9uCrMFmtPA3Uex+bXYXL6h+8ffF/+uRcLa4S4e7eBqQhZm0cHYTNTffigRyC8VW7Qr0RXmjILXc98QtZKUx5kcJ19cMa+3pqK4wjW1oN71HXYEuy/Aq1L0miaq6vzhrejTFojiJ8rKZq6GeqCHFDtKzs5eiRI/9updoBQ3sX0DF/GU1sHdhg0+T/JnYgspNavo5dc/lCyQ3cJhvjPljifsnlZf0ozZ5RbFna+21KKwU521jzK3lnnMg4oARTBdYn49L5DjxxBM5//zzGTWqvDUrl8vxzjvvcN9997Fp025P6P1ILAvjcC0o5lhPJHi7kEvMu2BbkIutjuQ2dN7lW8gAaka9Aoll4ULYg7r+LDLGFLlsXQOGP095mnmdQWqNs+w/Srr11InEco8v4Bk1cZ6HjDGPZdy/Hr1nhaI4kcoHhFdCJ/lu1bXGmJ2xvrRnke0pGsANca605+++hlUD+w+SnU27E31vy2pg7wTssymPuR6Nlavp62atneqOWfi+9aHGHalNDdwG7RtokxbnV8aY1xJufyTKJSjkB0PRPepA54AQTCeWC4B5o0eP5kMf+hBz5kSlXT/60Y+47rrrMh+jpaWFjo4O+vr6eOSRR3jiid268hiyBP1g6BEkx5F8zGgYkRu4H4ll4fzKOuSa8bfrI7/041mKk4M2uOsXZxVZZ8RJQBlyQ9LQ2y1mV5HeVHwXaqa+x7+k1to/AT6ccZPXUG1szrWLm0ixKE4gu2F6LUiKO27PWvitZqC+n+xOQSAPySNoo7XfZknaIWhg7zaZnyHZI7AK1UvWtLGBTR88vR01NUgV6ZQM2BeNMXcn3LYO+BLFHcxeMMbcU9lZB/Z7wXQ7//uB97W2tnL11Vczblx+WZoXzMbGRsaPT042bGlp4c3/n733DpOjOvO2756gCcoRRZCEQCggBApkGBMNAptgDCaDA8nL2the29+37x6f/bzeb6O960CwDThgG4MBmYyN5AFsgkSSkIRyTqNRGo1GGk3o94/n1FR1dVV1dU/PSN1z7uvqa6Tp6u6ame76nfOE37PaLY774IMPmDu34/20BtldlJOe/yrBDZ02Ixc9p9WkieDZmP2QFaIjkt5QykrkQgkiuEuRoqSNMVfMdxHcnL1ZKfXTTI/PBVNIcxvhbjntSIHPyq54/ShMG8FtpK/my5EowQEk1zMAEcco56R80oAUddUji6HNwI5cK3NNgdvFZDbnrwdeQWzVCvbDr+Mb2P8FeCvTIiHDe3g18v7Naz+q1vpTBIeZVwK/Cfv7GIvJz/m+3QT8Z9D7J0ScW4D/6sritmKkGIp+7gYuqK6uDhRLL2eccQZ/+ctfYj3p9OnTOXToEC+++CLIh3INbrLdG4ptRkI39bi9mWHsR4o3jia9qAfkTbwNKe5ZiKwCs7HPGkqwWILMccw7Znd/I9EG4s92p1iaRVQf5O/1eaSIq8Jzc6IELcjYpVlddCreHLQjjvVAfb57HZVSG7TWP0PaiS4geBYkyG75emCN1vplpVTcMXRHFEqpHVrrRxDBuZDg91+5ue9ErfWzUdENpdR2rfWvgZtJjyAdC1yttX4iz61GLyLvUX8Rz3HILjosRbAGiUp5r9/VyGIpaJrOR8hiyvs7KkfqM7rVMKTQKegdptZ6HPJmqP7sZz/LpEn+gjDB2WGee+65sQUTJK/529/+lpUrV4KIYSNuyNWxmnOqF8NoRnYQdebxYcOp25BxTo8hJtZZfzB19Nis7+e76s/kf25HdmZhROYGc3jNElxTBu+tv+fffZC/00mEe7MmEaP5fISoW0gXxR3ArsMR/jRh5TOQsGWUf2wSeA/5G3WpV25XouMb2L8NzI9arJh+yRsIDvfmvW9Yy8DyO0gX/CRi+B/YE6q1vp70attQsw2t9SWI5aIX22KSJYW+w/wmUD1lypRQsewMiUSCyy67jJ/85Cc0NzdXIBfGNnM7gBT3lCOCUYpb2t+KXDC3k56/9K4mk+Z+p6r2v3OtyjO5irBZjhu6QCzLkbBQlFguRKqN4z5nKcFi6BVEZ6RaJo4j2sh8NdmLZROpwuh83XskXXRMP1+t1vp9xJt2esihzoixqVrr15HQZZfZ4HUVxirvCa31h4Qb2CeQoq9JWutQX1ql1Bqt9ROIsYXfOOEk4KDW+qV8/b2VUru11k+THmJNILvaB0M+u8tJF8yJiAtSEO+SLpjDkFqKDdmddc+lYHeYJhS4Geh99913M3Ro+HU71x2mwyuvvMKbb74J7qzL/YgoOlZ2TginBelvmkewA1A54iR0ABHJ7bj5yyVKqSeyPjmDycHcFXL3i0qpt3N97oDXKgGuIb3Hy8vHSOWeMxG+lGAh9N7iimEmRhLtEbvNnF8Ye0kXxR1x2xWONEwrwsXAMRkO3Y1ccJceSQuAbNA5GtgHPM80ZChCELVKqfmdOtH01wsyTAepun/EH6kwu+qvBRx/f1iYXWt9O+k530VKqadyOOUeSSHvMK8Heo8dOzZSLL0sWbKEKVOmsGbNGsrKyjjmmGO48MILuffeexk3Lqw9D2bOnOkIZi/kAtqGCGUFIpwHELFMInkEpxDIy37zuPcJHiz9bqwfIpyw3WUSuTh0GiOUFcCnkLxfWchtj/l6i2ned4Ztdwf9CR7j5NCALGrakVYf/45xZ74rIg83SqktWutHyTzEeSCyENpgdlF5GeLcnZi/3Uta68WEG9iDOGyN11r/GZnak7JAUEotMl7IQY5Z52qtm1V+jcznI9cOfwvbaGSx84Lv/PZprTeR6ksNch0Iy0svJF0wJ5u/dUEuBrubQt5h/g649rLLLmPGDH+FdSretpJEIsHAgQNpaGigtVWiT1VVVfzsZz/j+uuvD32On//852zatAlkFd6GCOUh0ot8ksDvERFtRXYyi5AQ4N1Ie4Kf3cD/5rqqN+HYewm+EK5VSv3CHOcIXmWOtwrkAxflD9uE5MUOR2ivAgkxOgU9zb7bbuBR3HaNgm2vyBUdf4gzuEOcu3RWaldhohqnIXn9qFxuqC9thjatZ5VSnV3oel+rN5LPDCrY+oNSarHv+FMRFyQve5D2sbRrifnb30f66LeXlVJv5nziPYhCFsyVwIQ77riD4cOjhmFISPWtt97i6quv5rjjjqNXr140Nzfz6quv8o1vfIOlS5dSWlrKvHnzOOec4AEWL774Iu+88w7ITtHbI5Xw/Xs30gayhVTj88HINAbnuAQirglETDf47nOe1z8lJYm7e203t76IWbXXsq/E3FYhu6dyZNfX7nkOJx/bSnR1r8NwZHJLGM3IDrqrS9WbkLBpg+fWhKzE+5vz8O/w25A+0KAqwh6HuTjXIO/JTEOc/4oMcS7InbcprJlDZl/aN5DpOSmLPa31BUgBlZ8kImR5GwGntR6DtLf486ctiNlAnefYPkhY1v/3S5uR6XnMRUhBmJedwI8KNQzfnRSkYJo3yr7S0lK+/e1vU1qaez/53r17mTlzJqtWreL000/nb38LjrJ4+jJbkIszpIpbOyKWmwjeXYUNfk6ax3RmtxPmGpQk1c82inbkvL0i6v1ajRvOcYQ66fl3CyKWnS0uckaQ+QWx4xZwQUsAVxMeloYYtmM9Ea31MGQWZZSYgPzuX0VyXgV30fAUxX2SYF9ah53IznGd77FzcBe8XvLeYxyycwRZ+P7UW+Wrtb6J9AHc7yilXiAALab2fxdw1y+y9OLtkRSqYI4CNvXp04evfS0o750djzzyCLfffjuJRILt27cH5kRXrVrFY489BiIg3ukgLbiVrmHCVIJUo+UylSQOownORzvFRZ2lF7K7DBu35PjnHjT/bgm4HUIuuruRi5KTP3TachqAfblUaerwyRMOC5RSz2f7vD0JY6F2EdFVzyCRk5eUUgVZWWkM+C9ExupF8T7iw3vAPK4EmcBzYsCxrYgb0Po8nWPUAnAJMtjcGUkY5GK1HzElCLweaa1vId0/t1NFhz2FQhXMMcCGvn37ct99QePhsmPp0qVMmSItXO+88w6zZqX3sa9evZpf//rXIB+O3bhCACISTYhwBo3o6Uf4PMPtpIZ4s6WC9MZnh3pSDd9zoRSpOnW28e0Bt/WIALZG3KJMHZzCqaaAWyNSJOXcGr0XAq31BKRvLiysuB74ZU/MV2aLyfnNQEK1/jyXn6WIN3GXWC12NaaH+zKCawoc9gPPOx6t5vdzLcEV2M3ILi0vhVKm2veLBC9gXlJKvWWOqwS+TvqC+dcqZFqN8Xy+xvftNsQpqKD9hruaQhXMwUB9r169+Na3vkUi0blOhCVLljB1qizmFixYwMyZ6ZGXpUuX8sQTT4BrVhDGbtLDkiMJ9p9tRcKxnWEQwUUCYeHYKFHz39qQyspqXHH0syoPP0M2JHFFNImYjydxh3o7X1uQv8NDhdyUfzgwhhTnIHnxqHxHG/AWkvcrOIu1LHxpP0BaUJpN//H1BE84aUJaQDobMXLObygimv5rRxsSmt1mjvssUvXr5UOl1NMhz1uKFP/4Q9M2bZGBQhXMBCJaQ+69914GDgyrko+HE5IFqKurCwzJzps3j9dffx1EHDaSWrjT7vv6Jq6PbD/c8E/ScwPxjFwZ8hzJgP+DW9AD8iG/AKlg9RYKgfQavkVqntF5jNP+UY5rFxe06phEuNUe5veQ9+n0MSlFbNHC8lEtiGnCZlJ3qA1IJGAPEgIuvA9AN2EWphcSXegFsoh8E3g735Z/3YHJ416OpE3C2AM8ZSwIKxALvSDf3n3IxJG87Ly11lORCUB+6pDFYKvWehKy8/VyCPgPFTKUOsT5Z41S6pedPedipiAFE0Br/RJw8TXXXMPkyf7FlUsymYzcgTY0NDBr1ixWrFjB7Nmzefvt4P7+xx57jFWrVoEMmP4AEcKwMN8jTj5Da30FwU4rScSuLueSfTMh5NaQu59SSi2K+TwJ3OHXjoCegYTmSnFF1vt1M9J24PVorSS6fD9fJBAfzKiV0lKiIwEgfz9HPHcH/LvJCmpH+PJiwnsaHQ4gg5nTjLTYAAAgAElEQVTfKTThNJ+BGcgCIazdJolU0v7FHHMr6VNAQN4/D4eZIuRwbkHiBvCmUupl7c4B9p/3E0qpQA9prfVo4Au+bycRt7G8nHcxUsjGBW8DF69YsSJSMNevX891113HF7/4RS688EKOPloKPQ8dOsS8efP4xje+wYoVKygpKeFf//VfA5+jubmZ9es78vl1uLuaakQk9uHmLvcgI5qc/EKYv+XKPPS3hVWFtiLWWbEwonDI3BpNXnAKkgMNYj1S5JBWoGNCVlXI7ybuLdv34QlEi+UGMosliPAPJjyPdUhr7YhomqgWYhgyF5RSa7XWDyHWcOcTbkJRZe4/XWvtCGdBtKKYz8BCrfVypCI2aFedQEK4E4CngF8hXsr+9+JA4Cat9S/ylA74EzIE2h/tOV1rvdLY+S0lvZBpKuFDFzYj72fvuSeQz/1bnT7jIqWQd5gTgJVlZWXcd999VFVVBR63bt26FBefyspKevfuTUNDAy0tonHV1dU88MAD3HTTTYHP8c477zhTS9YBv/DdXYKsMg8h4cknnMS/1no2cGnIj/DbMD/LOJiqva8TXJyxTCn1eI7POxjJm4RNH8lrXtCzu/WLaBWyMOnru00leqTTLmAx8fpKO8tBRDy9Vb876YJpJEcKJhx5JhKByLTQaUJ6OBcUinBCx3tyOtLaEVR7ALIofQVJqdxO+kBnkOr3X+Zjx2asL79Eeq61AbgfqZPwX8AiC3m01uchuWovXTYGsBgoWMEENyz7iU98ItRw4MCBA/zsZz/jjTfe4MMPP2THjh00NDTQu3dvjjvuOM4//3zuuusujjkm2Gazra2N+++/n507dwI8QWabuXZk/M5SpJggqDp2HxKOzXlUkNb6WNI/IA6hoZgMz1mBhGnCWgtakFDT1myfOx9orU9DFiBO6Nj/9RDiMhQ25Ls72YdPRM3XPZ35ux8pGC/ncxFhCWs3ctiPCOfCAhPOgYifbFRucxUSpv0swYvXXUj1bKeHH2itz0Baf/wsAf6AFPL4d/+hLj6mqOiegLt+qJTa2ZlzLVYKXTAvAP5UWlrKnXfeyZAhQ/L+GvPnz+e1114Daf94IIuH9kWKUvYg4cF63LDta0qpeZ05L631pwnuJYtM9kc8XwK4Dpl4EEaaPVd3YUrhP0N4+8h+xOFklzm+gvTdqTP1ZAASispkDdcVtOHOyPTvSguupN+IyjlIuDaucC7I9v15uDCRnLOQfH7Yz9eEhDHPJPg9tQcRzU4VApnP6M0EV+g+hbSXne77fj3w47BcvNb6TtJz0/OVUrWdOddipaAFE0DLENlbR48eza233top1x8/W7Zs4ec//znt7e0gq+mFSOPySUgIJIqJBI/yqgP+WUUMs82EKQv/BsFh04+UUk/m8JyfQH7GMP6qlPpTts+bD0xx002El/63ILZ3sX+n5uJTiSueAwL+3R0FTF6848OckW/bCyG8q7UehAjnNDILZyPujrNQhHMkYiYQ1be5AfnMB71vGpDwbFhdQNzz6I9MJfJ/9puBxxFB9fOo17nI93xBph+RItuTKQbBHIAMkR41efJkrrrqqryIZn19PY8++ij79+8HCVHc63vdoYhwTiO9D7IUyfEEncgupLp0PRK2XZZtjkNrfTzSCxbE75RSUaOrgp4vqCzdyyrgN4cjlGhyN7cRnlPNuzWZed0EkkMdQLCYDiC6dy+f7MaIp+frniPxgmaE81zkc5GpQboRCWe+WwjCacwELkQm9YTh2EgGLXIaEdGMU5AWdR4nIuLtZz2yMB/r+37oItoI8FcD7nrwcKVejmQKXjABtNanIONx+h1//PFcccUVoUVAcdiwYQOPP/44TU1NIBVql4et8s2FdTRSXTYZEc8RhIc2l5BqhZdEVqaOeGasnNVaX02wRVczEo6NbS9nBOnzhOf8diFN0t0eLjQf5i8QXFDh8IxS6oNuOqUOzN+9L5KjHox4BTtfB5KfuZ5RNJMqoNuAuiNFeEzx2LnI+zTT72IfrnAe8QOsjY3gpwmvFq5GrgPbSS8+a0IqzDslRhHXgFWk+wK3Ie0igYV6WuvbSJ+V+jel1CudOcdipCgEEzoMi18G+vfp04fLLruMiROj0nHptLS08Oqrr3p7MZcDN8Qd4WMuoqOQ6tUTSN8VHUIavKN+6Y54Lg0ST+OF+TWCdzeh7h4h51uFVN6FtWgcQsQyL84l2WDO7XaivU3nKaVe66ZTio3pixtIqog6X3NfyWUmieRD/bvRw2bQoLUeggjnVOIJ5+vAe0e6cJppL5cTbupQjeQa1+IOa3A4iFjX5eyQZVrW7iJ96EI77lQiL39SSv015LlmIjaBXjpdmFiMFI1gAmitL0UKc8YAjBkzhlmzZjFp0iTKysIr4Pfu3cu7777L+++/T2Njh/XqBqSNJInsMv9HKZXRl1VrPQKZaQeyAxmKtJ1Umudck8WPtBFXPPea5z8daSIPItQ/MuA8S4AbiZ5tmXV4Nx+YXs6biG4fWQC8cCSGJaMwC54gIR1E5txfrjSRvhvd0Z3+uiaFcQ7xhLMBEc73j2ThNAvkk5EJKEERmirk592C9D16aQYe64yJvTGUuJn03+cgpF7CK3ahM3fNe/LrpL//QseE9VSKTTDPQRqnT0Wq2ioAysvLGTFiBCNGjKB///6UlJRw6NAhduzYwdatW6mvT8nDNwIrkBWWl/eAx5DVb+gvTWs9h+AcR18k7HQ00U33YWxGwrlnEBwK2ouIeqwVodb6YtIr6rwclko5I+TXILZ8YXwM/L6YVr+mkGsAssA6ytyGE27a31na8RUXAdu62nfXCOe5SAojk3DuxRXOI9Y83+Rtr0JSM34qkVqHJiRi5W2raUHy79ksov2vHTTfstKci3/x/CulVKCVpdb6BuA437dfV0q9muu5FSPFJpifQlo5QFZ8JyIz7DJZejlG5b2QHWBQHqgZeAcJsTwbFKY0O6OvE1xavlYp9QuzKh2O5DunkN0FsT+yot2HVNvuwB3WHFvgtNYnIaOKwliGCFK3vjnM7+ZSoosqNiAf/CMiV9fVmEITRzydr8Pouj7TXchnwbnVdcX7wPi3OsKZib3Aa8AHR6pwmoXe2cjP5N+pVSCiWY6IpneF3go8nmvRmgn/f5F0F6BpyN/P28oSamgSEpatU0r9JJfzKlaKTTCD5ryB5BNGILu78cgbug3xvmzEHVg8neiRWOsRwWxDyuJf84aMdPDYHIcnlW8yuxGIoxDxnIyE5qI4gXTxd8Tzn1WMeXxaZoneRrhLSx0Siun2Vgat9dlIhCCMHYhxQsH1K+YT874ZRLqQBg0R7ywHcQcObAQ25dN8wBSdnUv6tI0g9iDC+eERLJyjkN2mv/2kFyJifRDrzFW4XtRtiNlITukP8zv8Iqmf6SHIjnEh7gagHclLplXla637IcYHfn6glNqTy3kVI8UmmF9BwlpRnEW6WDQhonma+bor5LHtSO7MuWDvQHY7Deb1g8bsYI7/r6h8jLkIDsWttvUXu5QhIdSgYp+diB3cNiTnuSTIqUNr3Qcp8gkaB+ac50+d5v/uRAcPwvWyD/hZPhxTihVTKOUN5x6F7Ebz6RmdRN5n3l3o3s7uQrXWwxHhjArFOxzRwmmiAhch0S0v5Yho9kU+a8uQ6w3IteUp/6I6i9f01zYkcK9nXtev0EiU1voO0mfrvqiUCp5I0QMpGsE0IZF/JHPhxDTcMGhvJDHfhojfCYh4Rg2BdcTJ+/8HkTfoNwi+OC1USj2X4bxSMLkeRzyHIdW3/hyDw2JzHl624xYM7TA5slsIL6RJIkVD3T6uy/gCX0/4364Z2Vlu776zKg7M52IwIqDe3WhYS0QuNJAqoNtyFTIjnDVkHikGEm58DVh0hArn8Uj7iXcEXRlu77bTUrYOd4Tf3FzapMyC+yZSi/jGmtsy5HoAsvD8n6DFu9a6Bvnde1mtlPpVtudTrBSTYA4E/j7GoeMQIRqJ6/3oDBzuj1y01xI+qQNgEam70D8ggnlVyPGhThtxMKX530Z6O/0XumbcuZdh1CGLhCFI6Dno2FDPya7EhLBuITwn14YI+druO6vix7RFeAV0OBLVyEf/aAtSpNYhotmG0U21eQ3RVo0O+5D6goVHWrje/J4/RerPUYrUVzjRsH2IqDntJ88ppRbm8Fr9gLtx29kqkF1mGxKadeod5iql3g94vLfC36EN+PdCcJvqDopJMMchF95MzEQ8H70XhgPIh7wfcuFuQQQxLCd4AAnNOlWaC5EwS9CHuxFpGu6M0fooJEcBsiN2WlX64OZVoxgJHG/+3YaszHeZ20FkAfD0YSjyGYSYJoQNgYaA3K+lazD+u6ORtqyjzb/zVVy0g9Rd6M447zdjSVeD+/6NogWZVfvWkWQeHtJ+UoKIplMx34ZMO3KiWy8ppbIesxVQR+FEqPYiv5skIdZ35jy/SnrKJqdhDsVIMQnmKchKLoqjgfNIz3PuR6rV+iNC6hQF7SC9f8phDRJOARmaeyrB+cW3lVIvZjr/KHzVv14qkWG2RxPubdsfKWYK2zlsRYZiLwfW5bOgIwqz8v480VXCh2XXaxFMOHcYIqCOiGaqEYhLE6kCuiWq8tksGmsIT0v4WYGYhKw7Unp1A9pPSpBol7dAaCdu+8mflVJv5PA6VyFhX5CF/Azzb+81K7DHWmt9Gem516wMUYqZYhLM85Gy7iiuxp1a4c2X7UME0n8xSCKrvqCq2TYkDHQQCYmG9TQ+3Mnm5ArE2Sdopb9KKfVrc9xA3GrbUeb+CuTDErZLOAS8i+t72YbsWFcjVXxd1VLQC5lWH2Vgb625jkC01n1xBXQMUiSSD0/ddmTxtgE3jBtUzTkaEU6//VsY2xDh/OhIyHMGtJ8kSC/ya0HqD3YjC+LabD6HAS5AJyE72STyeW9Efr8/D3hskE91EzJXs2j6nnOlmAQzzFvRwdldguQuvSLi5PUcIW1H3sgJZPe5BrcE3Mt24OfIKjzoA7wXKcvO+ZestZ6BWHAF8XulVNp8TmNIfyISxg0r8mlHTOCjqk73IcK5GlijlPJbfGWNKT76HNEXvMVIxWBxvDmLGNN7PJJUEQ2aC5kLexDxdES0zrloG+E8A6mqjZN3bcTNc3b6fdxZzPlfiewuE0iRk7eXMokUA61HzvulbARLy4SfW8xzD8Ldce5HUkhJAhbz5u/5D6RPXOnUwr9YKCbB/ALBThsO5+BWkFXgenq245Z298VdLR8wx7TiOqI0Iqu/Ktz+tB8ikz6CKjw7vUvSWn+J4J3YfiQ3mibkJhdxFSKaFcgHZhCyynSqeFcQXQ3sJ4mEp53d5+ZsV5zmvD6NhIjDWINYhh323YAle8zfeDCpAhrlB5wNhxABWWVuu5Co0KlIjjDOfNNW3Dxnp0ZtdRZf+0kCydP62zp2Is5Wi5F5tLENO7TWFyL1GpjXcAoG1yK/x+VKqd8GPO5zpNdjHLbxfkcS+ezPOtxE2c0lSA23ei/G3ot+K65gtplbKSKQ/Qlu37iR4N0npPY/ZY2pWgsLW0bZhZ2Ou9tuRkJdW5HfQ19kAVBvnjtuVaQzlWU0Ek46qLVeg7l4BRnFB/AJosVyG+J6YsWyQDFRgXpzex86+kO9AjqK3GaN9kJymE4ecw+ueP4NyQeeSnSetQwRj5la65VIuHbt4YhmmHqB58x5fArJXbbjplRAFh8zkHqFvlrr32RhXzgfOBapgN6I2+N6DHINmKi1HhrgWracdME8DvHU7tEUxQ7TrNT+n4hD+iMOMv1830sgq1YnRFOGuwo7gAhhHyRs2Qy8SKrVFEh+YAupI7sgwuw4LhG+tJjnTjMYMD2NNxAuhBuQ6e9txnR5PBIePZboMVqZqMPdfa7393lprWcBcyIevwdxGMpqNqil8DBh+aOQdIEjomFmGnFpR0RhNfLen2CeNw7bkTqExYfL7N0UwV2NfB6PJf3c24GVSG7z13GrgE1f65eQhf+puC0ne5Cd9vtKqbm+x/RF6ib8/EdXew0f6RSLYA5D+o/CGE9qCTe44deDuP1J4IZrW5CwZzUinlsQ4VyI7ERBVryn47aZeH+ZnTIuNouArxHhSxvwmEHIhyNs2HID8JAKmLpiQmlOLnYCcjHLtZijBcm/OAI6FPgs4SJ+ABHLwxoisxw+tMw+dSpxxyCC2pnpLfsRUeiHfO7jCGEj8jleeDiEwRQE1SDpo9EE5/m3IbUHsSedeEKzfvOT5Uha6X/8ESKt9d3I9cBLj28vKZaQbKbpH0NIN1R3wq/+PJxjYlCG6zHbYr5fiYQzHDccp9Hb8ar15gQ7+8aaQnhOJm0+pxHY6wgXy1aklDzQJ9fshLeb21/N843F3X36vTGjKMcNnfVHcjN7kZzTHlIvXq3Ab6xY9myM5eFe4CPoeD+PIrUnNOy9HURv3P5eJ3LUBylkayDYvKMPkjY4W2v9IZLn7LZZsKYmYJ7WehNSENSMhFG9CwfHpamP1vqxoKK/AP6CVOKWIp9pJxx+LJJiOg3w11qsI10wx9H561pBUyyCGZWzqEIEzS+YTp4sqHClHQnV7jXHteL+rkYiYc0WUt9QYxGxaUPyN521cQvquwQJHweZNH+S9De4lz8qpWIX+Zj8ygpzc9pWnN3nOOI1tFcj8wDLkYvXSORCtRcJWe9EvGvtzD1LCub9t9bcnN3XCOQiPwER0Lg7UCeKtM88xwREjLzmHV7KkLzhDK31KiTPuaa78pxKqRVa64eQqMwh3M+QQx8kvNpPa/0bRNhDz00p1aK1fg6xztuMXKtAfs4JQKPW+q++XfVaYLbvqcbSwymWkOwnkVVSEGOQD1kCWak6YcFSJCzbQLBoguTlmpAPVV/cN+0K5GLv7710qs/+opT6S7Y/h0OGEPObSqmXfcdPBT4T8ZR57Wk0OagxuAIaND6tGinwiRLW5UjIdg3yu9sI1Nt2EksmTK+hk++bQHaTWryVvP1xP+NOBCToelCH5DkXdVee04zuugQZGDENt7LfywbgccQkPbJqXWt9JVLwdDqpi43FiB3fy55jqxFvbH8a5b96cp1BsQhmUBm0w4m44cTRpO6q+xPdh+jshPYhO0Ynp7Ae2WH6cwytwNtI72XOoRyt9SXICjKIH3uf2+z87iQ8fLsayXd0WdOxmYLiXLic8O30iHMCCfmsC/j+AVIdYDZnU0pv6XmY/PsQ3PfgWOJHzxwjBie90o6bPtiF5EK97EfynAu6K89pJvlcibTOBBVH7QGeRlIbUW5J1cCXEfH1tuAdRHbRP/BOA9Ja30n6YvgPSqnF9FCKRTDvIn2AqsNs3Ebq4aTmQapxK2SDOIgk2ZsRIZxtHr8VCTEGvXkXKaXujX3yPkzj8H0ErybXK6Ue8Rxbisy2DOs/3Qs80J2G1B4T/GOQ3s9+pK9StyK7yzi0I38DrwNMnBYWSw/FfIaOwRXQOH2gFUjOdCSpYusN3e7Gzb+3Ih7Mbyml6vJz5uGYatfrkN1m0NzcQ8CrwI+ihFxrPc08j9/KcxPS0vWs59igyN17Sqk/5vRDFAEFL5hmdfltwkN/Z+O+MYaSavRdSngPJcjFegOSd3sNEeUTkDdXmEitAr6uchy6at7QYVNPnlZKfeg59gLkAxREOzIlpdvcOYzD0G2khsfKkByzY56wHyns6Mwbby+pDjDbrW2XJQxTgeuI53iii4dKkYX1aNIXrUkk2uQI6D7zvfXAe8govS6Lhpgw9FVIe9aogEOSSKvId8PaTsz18kbgAmRR4X3sQuD/dx6rtZ6IuHJ52aWU+t/O/ByFTOl3vvOdw30OnaK2trY3UoYdxnDc3GMlqWHCQ0S3TjjWeI7PZQMiuq2EzxNcCZTX1NTkND29trZ2DsH5mIPAH2tqahxrsGMJt8wDGRS7KJdzyAVzUbqN9AKsdmQXvxN4A/hf3NFpfk/fuFQiBU7HYXIytbW142trawfX1taW1tbWNtXU1ByWfjrLkUdNTU1zTU3N1pqamiW1tbV/Qxa1+5DrQl9SIyCOKG5B2kx64QpsArl+DECKh0aZxw9GxHhGbW3tgNra2v21tbWNNTU1+f45Wmtraz9C0kNjSK9cT5jzOqu2tnZRTU1NWp92TU0NtbW1G5HK9TG4n78Ect1pqKmpWQpQW1u7n/TJTlW1tbXv1dTU9MhxX8Www/SOvgpiIq7dVD9Sp2PsI3Ozfj3ywXkPt0BoNsGCuQ9p+UgCDyqltmU6fy8ZfpaOqScmZ3hnyDmA5AZ/2V27LjOH7zai23vWI7nUjmkopqjhGHMbg6zqc3GA8ZMkdZzUBmC3LSay+PGZd0wg+DPVF3lvDiPaGWs/sjDcgYjy+0iKJu/etWac4T1INX3QorMR2S0GTjvRWp+JTAsa77trNWIC04h8Li8l/XeSEunqSRSDYGaqEPUaD/cmNZ+xw9wftcvch3wIliAruyeB7xHcyrIauUADrFRKPZbp/L1ora9B+i+DuF8ptd2EVG4g3Ly8Cclbdkuez7iC3Eb0mK6NiDtJ5KrUtA4MJ9VGLZvqxyj2kz5Oyu5CLR3EMO8Iy3MGcRC5vmxDzNPfR1pT8raINZ+9O4CLCV5otgKPIgtV/+zLEmSiyadJTWe1I45mFcjPeKz5WbxjDtPcgXoKxSCYZyO2d1FMQvKPFaSaG29FLshR0xUcL9aPgZ8gu6hPE9wn+SbuqCyQHOK6DOcGdBTL3EvwCnadUupRc9wZiGFzGL9RSq2I85qdxXxgbyXa1GAT8KtMYhnxGo4DjHMbTuccYBzakLBbh4iGmTpYeiY+844JuItCJ885iniTWRzxXIOYCHyglPJbbOZ6jqVIBe3nCS4UBPGU/Z4/v6plOPd3SB/O3Qep2WhAPtuTEK9eR+z3KKV+kI/zLzSKQTCjejAdyhHP1wGkFutsRMItUcYHSaRI5ZfI7vJuZJc6hdTd6l6M2bSHzcDP4oQCM/wcvzHNzKOQD0aYYLyllHop02vlAxMWvoXoCsTNiFj6G8M787q9kBW+14c0GweYKHbjqcYFdthiIouDsZ50iocc845+yCJ8GPGsJJsR8VyIVLUuy0ekw4wB/H8Jj/SsAL7tLwYyLWx/T+pnaBTy/n8N+ZnOQlppvKHl/+6J1erFIJhXED0Bw6EEeaOfYf7vVLdVIbvPFuSC2YYIrDMX8wCSv3zN3O4xj69GjNGdHeEqZDflJ3Bmpe9nqAK+SnCl7w5kZ9sLyVuG5Qm3In6sXR5mNEbRtxDtLLQVyaN2aUuLpwfP60OajY1fFM3I33QDIv7b7C7UAoHmHaOQxeMI4qcRmpH31WvAK9k4cYWc03AkXeTPSzrUA//sFAOaGoI5iP/0cCRvmUR+hjLgJeT6MwMpZvQK5ONKqWWdOd9CpBgE81rcsTVxOAd5Q5cjeckEslqMurBvQN4860gNhx6Pa/f2JlJ162cn8JOokVVa67OQMu8g/ojsXJ35lkEcQoqMYk0w6AymSOIWwvteQfI2v+jO/k8vRtBHkzpOKl82kPuRn2+752u9HUnWszERl4lI5Gky8p47ingWkiCf4eXAn4E/5VoopLWuAP4Jdw6mn4PAT4HngP9A6jsqkc/LAURUByAbiXrgeWRBsBNppXF4Qyn151zOsZApBsG8BRG8uJyKOwD6LfM973DVIBoQJ41232tVIBWzjaSHY708p5RaGHSHWal+heBq3f3A9xEvySsinv8ZpdQHEffnBbMTvoVgKzyH7YhYHvap9g7mdzwCV0CPJvrvnS1tuAUeHWJ6uBYMlsOLWVSegHxuZyLiOYj4s2cPIlGtlxBhymVQ+21Iv2VQ+qYdqcmYgtsP7Zjbt5jvOY97E0k3OcMZHNYopX6ZzXkVA8UgmF8ifMhyEDMQcWpE8gjgmjmHkQSeQfIV/jzFOOSCGWUQ0IjMr0zbgRrbqzAxnIfMv7uD8HaLRUiZd5f+IU3T9M1E/67rELE8omfmmQvKAFKLiY4i/gUtLg2k70Z32bxoz8GI50SkSPB0RDzDinOC2Iss7F9A5nXGfu9orc8Dvk5wYdJARMQ3IrvbEiQ/6zdeOIgId29SK2XbgB+Zxzb1lJatYhDMe4luafAzHblYOgNUQXJeYeFOh2UETyBxQn2ZcofzlFKveb9hLtx3EZwLbEGa/G8gfEe3CwnFdmkTsRHLmwh2F3GoR6qCCzLHZ0JZ3jDuaKK9cHOlBVlYeHej27v6b2g5/JgIzUQkLXQaskiLO3M2ibxf3kDCtqvipAG01scDmtTuABDRHoWEjDchi7tBiJD6n3cVEu0aYp5nBKlFQruRHfG7yMYicnpKIVMMgvkPxCvtdnDM2Osxs/cQ0fM7WvhpRsITfvYhJdcXZ3jdZmRQa0eoUms9AQmbBLEACZ2EmbC3IUU+nSoUyIQRkpuI3oHvRMSyaKYYmD61oUj4dhSyaBlK7kO1M7Gb9N3onmK98PR0zCL0ROBCJK0TVanvpwWJaNXijh6LqpEYCPwf0lvhRiGLwgpk8V2HRJD8o8T64svFlpWVUVZWRmtrK62taXuF94EfI9Gmoup1LmjBNDu0fyS7i9hkZEe3Hdk1OpxCsJm6wxCkrcTP+0hi/O/IXB2XMppLa30zwRVtSaR5+NKI53pZKRUk4HnDtHDciIhGGLsQsSz6EnOTCx2CiOdRnq+9ox7XCZoxRUXIosT5utsWGRUPRjxPQxbdJ5Ndm1QDUu3/GvAhIp5pImUM6f8FKVpsQ95bFbgV5eVI+HUnsjDshbzXewFUV1dz0kkncfTRRzNy5Ej69u1LIpEgmUzS0NDA1q1bWb9+PYsWLaKpqWNP8A5wazFV0xa6YJYjvUfZ4FS2bkZKpR3GEy4M5chq7DHSY/y/V0ot1VqfhDQQR9GG7DIbTAn4nSHHrUNEPWznvBLpzeyyP54RyxtINWj2sxsRy6gRaUWNWbT1IVVAhyMXonwYLG/MyJUAACAASURBVATRjixUvCLqfO0x+aRixOQ8L0LMWCYTfzPgvCc2IhGvRcBqRzy11n+PGK4MQa4th5DrkTeqljDf64VJv/Tv35/zzjuPyZMnU1aWudC8tbWVJUuWMG/ePBoaGkCE+e+UUj+N+XMc0RS6YPZBktrZcCySo1qPmeZuGIiYGwTheNC+SGoesx34d6XUQRPCu4Podgswu0wzzDXo9RJIoj9st9uI2OR1WWGNWYhcT3T18R5ELHOaylLsmN/hUNJ3o/kyWQjjAOlCWo/sSosqPFbsaK2HAJcBNcg1K654tiF/+01IyHYt8G+ex1cjgthG+rDsfphe71NOOYWLLrqIiorsU/kHDx7klVde4f33O5oHvqaU+u+sn+gIo9AFcwgyEDUbxpqb1/cVZDdwFsG7AmeO5jtI1aqDfz7l8YjQRNEC/AwR16DXqiK8JzSJOOesyfAaOWMu9J8jvPkZRNAfzZe9V0/B7Eb7k74bzaZoLVeSSERgp/m6G1n07EHENG9uTJb8Yt43xwPOYPm4rkIgxYj7kJRTI1K804REzUaY53FEoA8mRHv55ZdzyimpKc99+/Yxf/58FixYwMKFC1mwYAE7d0rr97JlyzjhhBPSXnzBggW88MILzn9vVUr9IuZ5H5Hkq5n7cJFLFaOT+/GvttuRfIA/+V7ieR2/y87KgP+vJzqMWY4U0QSJZX/kbxImmG90sViWAdcSLZYNSDLfimWWmFCpI1IdA7RNYdUwUkV0GPGb3uOQwJ1JmobW+qA5rxQhdf4d1BJl6R7M+2Y5sNxU2k5HwrZTEIGLEs8y3OvWCGTBfhBZ9NYh15xK5Lo0CGDOnDlpYgnw6quvcuWVmbJOqcyaNYtkMsmLL74I8GOtdW1cf+0jkUIXzFzCW22+r172kC6Ylbhx/t6IeDotACmCqZRKaq3nI4bkYZQirj4LfOfgjLpaHPK4TYhxc5dgxPKzhE9BAVmp/kIplTZnz5I7pqXE8a8FOnYVg5Cc0xDkwuh87Yoio0pEqANbmLTWTYSIKbC3KwcnW1yMGcabwJta6xFIX/nZSNRsMOHX9I1IGLYSCcn2Rq4/TYiIDgcSJ554IjNnzgx9/WHDhjFz5kxmzZrFqFGj+NKXvpTxnGfPns369etZunRpb+DnWusLC7UXuScKphN+CMrn7EbeeF78TcYDkbL/BmSF5mc98uYcE/L6Tg/TSFJDwicg4bKgGPlB4Mmuqow01Z/XkD61wEsjIpZdbr9n6dhV7DS35d77zC7DK6DO10y7jc5QjZv7SsPsUBuQRVXYrdFW9+YPpdRW4Dmt9QvIYnsaklY6mnTxbEUKHYd7vp/ANZCv7N27N5/85CdDX+/yyy/niitcj5V169bFPtdLL72UdevW0dTUdB7iX/ts7AcfQRS6YHamsTxIMBuQVZf3ouMXzAGIYK4KqkY0u8zXCc5lJnD7Gccgb+B2RDz7k9rm4uXZriquMWL5GaShOoz9iFjWd8U5WLLD7DI24TP7N4Vn/UkVUuffmQald5ZKc4sy5E9qrfcTLaoN2ErfrDC7tbXAWq31c0hKZRoyaGI0UrxXRXoaKInsLgcBnH322VRXh7e0l5bmvhbr3bs3Z555Jn/6059AJj5ZwTwM5LLDdMKrQYKZRGL7Tp6nF+m/Iycf4M9felmJVNP6K2aH4p5zL2S1txcJg24kOEz8rlJqScRr5Yy5wF5NtHl9EyKWO7riHCz5w1w4nYKelPenyZMORt7bA5D38QDPrat2pl6cFpw+pDvPeGnXWh9A3ntxb4esyILZwa8EVmqtXwR+gYRf+yGCmST12lcOVJaXl3PSSWFNAvlh+vTpzJ8/n9bW1k9qrY9VSq3u0hfsAgpdMPO9wwS52DiCGeT56DhjhBbfeHaZn/Hd5Q/THuM5j82kswPxccw7RiyvQnq9wjiAjOgKCj1bCgiTJ91ibimYfKkzF9YvpgNxL7bdRQlykc8mV9tm8qxBtwNIWqMZ6T9s9t2KVWwvQRbpO5DWompksVKNRLYSmAX8pEmTqKzs2o6n6upqJk6cyJIlS0CKlu7v0hfsAnqyYIblUryhzzCT5OYY3p9LkUZiR3wHkB4WG4l8kFeRPhqsFclb5r2YwhT4fAbJm4ZxEBHLbfl+fcuRhRGLBnNLGyJgFldOf16QqPahewU1iFLk85VT6FlrHSikEd9zGv9bPV/D/t12mIpcvAWMSSS1sh/5W1Uj17eBAKNHRzlf5o/Ro0c7gjmjW14wzxS6YHaGsDdwI/Im70W6IEcVDKWglGrXWr8BfMp8y7+7rEY+3BWkFv84vKSUCjJ77xQmNPc50oubvDhiuTXfr28pPMzF3qmITcMIqvN+dm79fP/vS9dZCOaDXubWJblerXU7GUQV9/ri/Rr0vbhfyxHR7IWbikp47j9k7mPkyGwGPuWO53XS+1YKgJ4smGE4vXJHE27GXqa1TsQI4ywCPoFrleZQ4vl/K3Kx8c6PXIo4/+cVM1j5RqLzR82IOUKXmrpbigcjqI3mFrrIMgVmfQgWU6/QdsWUmMNNCa4odyevIeLUB1ekW3AjbKUgFnjdwYABHZveTI5oRyRWMIPZTXi40nFEcQzcQ1FKtWqt/wbc57vLW/7fgIizU4G6F6mKzWtORWs9ADFMGBxx2CHg10qpoHyqxdIpTEHKXnMLxaQMnDaWKs+/w269sdeyMHYh48AGIMWF/sHpJdC5CthsKCnpiNx398IhLxT6myzfA38d9hCev3Sa9seRQTANm0jNJTgfcJDd3EHc/NBO4A+mbSBvaK2HImIZNY3lIPCYUiooPGyxdBvG89bJqcbCWDqGCWoVbrGec+vl+3cx4zhJBYXE24HSlpYWqqqymWudGy0tHSUZBWnFWOiC2VVECbFXMN+K8VxnIqI5jtRQLKSutI8G5iql0oouOoPWehQydSRqZmgjEobNe87UYukOTHFcxt1rECYH6wioV0jDBLYCyQ+WItfQspB/e793uDgK6bEOK8o6AJTX19fTr1/Uejo/1Nd3tHJ3mcVnV9ITBTNO7GEwsgLyr8icPjeAsVrrkqjqN631SCS0uxkRxCGe1z9Eat6yF2IInze01uOB64heQe9GxNLa3Vl6JOYzfJAu2vWYtp0SMourvzAnEfK9uF/7IJGlJbgFRP5Coipg9pYtWxg/PspCOj9s2dJRGpH3Go3uwApmMIOQlZdfMPfgJssrkOKZqHxfjfnqhJiO9T2XQxL4GDgdsdbrNFrrSUjrSNTPux3JWe7Lx2taLJZ0TD1CG+7g5m7BXAPC3Ln2IwVBi4HZa9eu5ayzzuryc/LY6S3s8hfrAg5379ThINMioQzJ9QWtNv1vvlCjcq31aFxv1jKkAtBZ2TWTurvciNiCnaC1jrIWi4XW+hTESD1KLDciI7qsWFosxclm0gfeHwTmIYPs3wb+CDSvWbOGXbsyB5nq6+s7brt3uwOL9uzZk3Jfe3t64K2+vt4RzCbghbQDCgArmOn0Q8IZTgm2QxJxzPAS5b/6Cc+/x5vXbTT/9+4um4B1nv93apmntT4T6f2MysOuQsKweS0uslgsRw5KqQbgd8jiuA54HRHK15xxbWaYwu8A3nnnnYzPOXTo0I6bdwTY6aefnnLfhg3ppRie53+sUAfP98SQbKaf2duQdAC3kbmF1F0hwEitdT/zxuxAa300bvh1IOLoA1KQUI4779KZc+ddjk3VWs/Pdt6kyZNcgBQZRbEYeMZOjbBYih/j15qpNuKHwC0LFixg+vTpDB8eOOGtU2zZsoWFCxeCXPN+nPcX6CZ64g7TCVOG7cD8gungF0uHoF2ms7ss9d3fiuzuHDaTXtVXQmbRS8FU+V0e43ELgKesWFosFgel1LvAj9vb25k7dy5tbeGXh2QyGes2duzYjse0trYyd+5ckskkwA+UUh929c/UVRS6YObis+rsMIPye44JtcMB3LxjY/rhgE8wtdbjkBYSzFevo/Fe3BFeB5CRPEGcrLWOZdFlmryvIbPVVC3wQpGaTFssls7xLWDttm3beOaZZwJzkLnQ3t7O008/TV1dHcgUlX/MyxMfJgpdMHOpOIsSzL6+7ydxd5lhgjnO+LM6YdEa8/3+uLMvHdYi1Wn1SCg2bClXCpwacl8H5nWvJ3o8F4gv7XwrlhaLJQilVCOy8N730Ucf8dRTT3lNBnKipaWFJ598kqVLl4JsFj6rlAqL1BUEhS6Y/gkfcYgSzCBDxSYkx7g/5PlKcatlxyEju0pIt9bzmlc/S4iRtYdTzO4xEK11NXAzUlAURjvwtFIqjsGCxWLpwZjQ7KVAw5IlS3jwwQfZuDE3468NGzbwwAMPsGzZMhCxvEQp9UH+zvbwUOiCmcsO0xHKIDEKEswD5nWillsTze7yPPN/Z8K5Fyf8uhepSgsLxzpUA1OC7tBa9wNuA0ZFPL4VeLyQ8wUWi6V7UUq9AZwDLN25cycPP/wwTz/9NJs2bXJykKEkk0k2btzIU089xSOPPOK0qXwEnK2UerPrz77rKfQq2Wx3mCW4i4S4O8w2xA4vqlDmeHMbjbSl+EOxu3GLe55VSjWbAdPjiGY2kCJ4WushiHtH1HiBZuA3Sqm8mCBYLJaeg1LqQ631DEAB/7Bo0aKSRYsWMWzYMMaMGcPIkSMZNGgQZWVltLa2smvXLrZs2cKGDRvYsaOj864N+FfguzFmBxcMiUyrhiMZrfWxiHjEpRdwhvn3ElL7KqsRgQpiBxKajdoVNiO7yhmkOwS9hzj9fKCUesacewK4CzFFjuIhZ9SW1noEMp4raq7gfsS9x86ytFgsncIUMd4BfB6x9szEDuCnyHWr6BbsPW2H6f15/TvMsB1bEplCPyDkfhDv2YHIqsovZjsRsdwHvOx8UymV1FovAOZkOOdZwFyt9Vhk8HPUrMA9iCHBzgzPabFYLBlRSq0FvqW1/g5i3TnD3EYjG5BDiDHCu+b2ZjHtKP0UumBm+4fJRTAbEbGLCsmOI3zXt858fS7AWWcRcCHR5ugnaq3XIX2WUX+vHYhYxh6JZLFYLHFQSh0E5ptbj6XQi36y3WF6RdIvPmGC6eQeV4bcPwSZCjCKdOGrR8R2sVJquf+BZiWWqShnNPDlgPP1sgl4xIqlxWKxdB3FvsNMIII2Eskv9kNyhk1IIY4TY+9F+MBoRzA/JrgqdRwitr2QPKjXuWcdklN8MeIcFyBh1yBGIy0rBwifirIaqYbNpcXGYrFYLDEp9B1mM5Jj7Iv0P04DpiI9kGOR5v8pSH6xEsn/OdNIjgeOQ34HURWnjgCuJ70XcxiS23Tym94hzTuQcO4LUc26Sqk6Us3XHcbh9ndWISPH/CwBfmvF0mKxWLqeQt9hViAm50fHPN6fwxyF5B7DXHwO4IZ9DwArgJPN/xOIKA/B9aWtMM/biojgMmBpjPNaYJ7Led7jcA3bHUYi7S0O7wLPRw2wtlgsFkv+KNgdptZ6AHAn0dWrfsoC/j0AV6z8eMOrDYidncMwYDjpVavVyO6yHhG0OH07HyO5zlJkh+wXS5BKXMeX9nWkiMiKpcVisXQTBSmYpofxU0goNZtK2aAq2QQiUEG/C0cwm0yBzmpk91iChHQHBjymCtldvmj8GTNipocsRwzUB4cc5pznK0qpV60vrMVisXQvBSmYSK7S8VDNJn/nFcwEIpoVyO8hqL/REcw9AEqpFkQ0R5lb0IiwNsQOanHck9JajwGmk5oD9ZNEQrKZp7xaLBaLJe8UqmB6R2rF3WE6AumlFDfMWem7zzsw2jvMeT0i2P7jwRW1j+PuALXWJwK3IGJeH3JYO1LgsweYHOd5LRaLxZJfCq7ox4Rjj/F8K65gBv2sZYQ753jzl17BPI7wsGkjko8cQ4adoGcU2Lmeb28GhvoObUV2rM50k9mI4YHFYrFYupFC3WF6eybjCmZ5wPeckCyIMHnxCuYeAK31MOAKgsPA7cAaYCtwnNY6yNwd8zzlwGdIFUvndbytKwcQH1rvKLDRxlPWYrFYLN1IwQmmCXV6HW06s8OsxP0d+Md3pewwzY7wTqTQJ6ivchfSRuI8b2Cri9a6L3ArIaO7gC3m6x5ELINeK8zowGKxWCxdRMEJpsFrLt4ZwXSKbNp9z9NOam/mbuBEZE4cyM7PSyvwPnDQ8z3/AGm01sOBLxI9x3IbYmb8IeEzOE/UWoc5E1ksFoulCyhUwfQOI20nXqVs2A4TRAC9RToN5nkx399Hqp9rC6litp5067rJWuuO36/WeiJwO+IyFEYSeAl43Hc+fsqRqlqLxWKxdBOFKpirSRUo/44viCDBdMzS/WFPv2HBJUjfpZcmz9eFAc/dFxirtU5orc8AriN6KkkL4gn7V8T5JxMzTZjYYrFYLN1AQQqmyWPOxd3lhXq1enAEsxwpGqpCin5KSBfcfZ5/7wduC3g+5zU/DHi8w3RkLNdFBPdsOjQADyulPgZQSm3HNYYPYzBuL6rFYrFYupiCFEzoMC1/yfw3k2A6wliJeMdWIIJZgeQfnfCrc0wZrsCdSrCjTzNSoLMi5DXLkYHPMzOc22bgp0qprb7vx9llzo5xjMVisVjyQMEKpuE9pKE/k2CWke7mkzA3p92kEumfHA9cDHwWKfSZFvKcbcDDBOcaqxGbu6GIOXsYS4BHlVL7Au5bRrgpvMPxWuuonKjFYrFY8kRBC6YJzT6LVJVGFck4O0ZvWLTE85gKxEy9n+e4KsRYIMyurhZ4JuD7AxGxdKpYj4p4/JPGbi8N4y/7bshjHRKIWbvFYrFYupiCFkwApdRB4Dekjr7yU0a6oCaQcGwbImq9kNBtm7m/AhHLoEKd/cCPlFL1uH2TIObo00gtMBpEqmlCG/CUUmp+DPu8d3HDxWGE7YAtFovFkkcKXjABlFKbgKcjDilDhKfN870ErqtOCe7vwjmmHyKyCc/x1cjO8UmllCPQi8x9E5BKWn9xTwLZvWJe71GlVCxrO6VUA7Ayw2HDtdZhu1iLxWKx5ImiEEzDY6T2Z3pxdnyO/V0CKdrxGg04QtcG9MEdBN2GiOcYRPiqgEFaa8fzdQViiD464tyOAuqQ4p6NMX8ehw9jHHNils9psVgsliwpGsE04c3/Q7DpuRMSdfKFB0j1ZwURTCdEWo0IZQsSmh2E+7t6G+mxnGOGWF9H+hQUPy3A00op/2vGYQWZ3Yym2Z5Mi8Vi6VqKRjABlFKtwDcBjQxxdvJ/pYgY1iOmBzsCHp7A3U0mEJHz5w834RomnAjcgew6t0ec1iZk2kiaVV4czM+0JMNh/YCxuTy/xWKxWOJRcOO9MmF2mvOB+cZvdQbSD7kbCbFOJbhQxqmOrcC12vMKZiuyuwQRybG4Bgf1iNh6d5pJJP/oFAVN01r/Je6cTB+LkMrbKKYBa3N4bovFYrHEoKh2mH6UUgcQwdqBm7/cSfCorxIkP9mKG5r1CuZyRCDHIjlLby6yjdRdaysict4K2oFE5zmjWE+qXV8Qk83YMIvFYrF0AUUtmIbjkN3XJxGLu6sR4RqJ7BT7I0LptI94K2kdwdyPFN9MRop/liNzL704YVlnhuVu0smpBcTsShdnOKyCdL9bi8ViseSJogvJApgCmAuAu4FPEb4wcHxlHZpJLf5pN/9ejIRyW5CioqAinD2IaK4ifCzXVK31S8aUIFsWAWdlOGYamfOdFovFYsmBRDKZS0rtyEVrPQZ4CNlRUlJSwoQJExg9ejQjRoygf//+lJSU0NLSQl1dHVu3bmXNmjXU1dV5n+YgIop7kZ3iRqR4J6q4530k93lqhlP8nWOynsPPdgcwIuKQduA/lVJxzOgtFovFkgVFtcPUWl8P3A/0q6ys5PTTT+eUU06hT58+gccPHz6cadOmkUwm2bRpE2+//TZLliwB8ZUtR8Krm5HdXdiuMQn8GfgbMJzMgjkNyEkwzXlECWYJMIV4xu0Wi8ViyYKiyWFqrb+CmBf0mzhxIvfccw/nnHNOqFh6SSQSjBkzhs985jPccMMN9OvXD6TidSBSeRomlh0zLE2ecRvBLStejtdaV2Y4JoyPiPbMBWuVZ7FYLF1CUQim1vqLwPcBLr74Yq699tpAoVyzZg1f/epXmTRpEn369KF///5MmjSJ22+/ndraWgAmTJjAXXfdxTHHHANSSHMzUhjkJ2WGJXQU52SyvStDioeyxkw1WZPhsDFa60G5PL/FYrFYwil4wdRaTwV+BHDppZdy2mmnkUikm948/PDDTJ06lR/84Ad8/LFoXEtLCx9//DGPPPIIv/rVrzqOrays5IYbbuDoo48GcfW5klSP2LAZlpC5mhU6twuM40Nrd5kWi8WSZwpaMLXWZcAjQK9TTjmFWbNmBR73u9/9ji984QscOHCAL3/5y6xevZrGxkaamprYtm0bv/rVrzjjjDNSHlNeXs61115L7969AY4BnCd/D3gkZIYlxv5uXYZTH6u1Dtq1xmEZ4SFiB2uVZ7FYLHmmoAUT+CIws3///lx00UWBB9TV1XH33XeTTCb53ve+xw9/+EPGjx/fcf9RRx3FjTfeyO2335722OrqaubMmeP89wKgVin1R2NXF0WcXWBOhulKqUNkLhoaBIzK5fktFovFEkzBCqbZQX0Z4IILLqCioiLwuPvvv5/du3czceJEvvnNb2b9OpMmTeLYY48FqZo9OebDlpJqgBDESZ3YBdqwrMVisXQzBSuYwLnA5D59+jBp0qTQgx577DEAbr75ZkpKcvtxPaHeu7XWGZ/EDLVenuGwoeS+C1yNO8szjKla60xTVCwWi8USk0IWzKsApk+fTmlpsC7s3LmTlStl/vJZZ53FvHnzuPjiixk4cCDV1dVMnjyZb33rW9TX10e+0HHHHUffvn0BjiX+zi3OLjA46ZoBpVQ7mYuLqpHztVgsFkseKGTBnAkwduzY0AMcsQR45ZVXuOCCC3jllVdoa5No6bJly/i3f/s3pk+fzrJly0Kfp6SkxKmYBZl+EoeViPFBFFO01tUxn8+PDctaLBZLN1KQgmmqY6cDjBgRbnyzZ487r/l73/seU6ZM4e2336ahoYHGxkZeeOEFhg0bxubNm7n66qtpbQ2v5Rk5cqTzz1iCafxi4/Rkxs2L+tmKjBWL4gStdXBy12KxWCxZUZCCCQwGqqqqqqiuDt+gtbe707lKS0t5+umnmT17NiC7xksuuYSHH34YkN3m008/Hf6Cgwc7/zwmi/NcGOOYmXHyon662iTBYrFYLKkUqmBWgPRKRuF1+5kzZw4TJkxIO2bOnDkcf7xMxfrzn/8c+lxlZR22u7F3bEqpHWQe6jwQSD+xeMQxSQiviLJYLBZLbApVMFuAjlxkGJ4wKhMnTgw9zrlv48aNocd4XutQzHN0eCfGMbkW/+wGNmQ4bLzWuleGYywWi8WSgUIVzJ1Ay/79+2luDhpNKYwfP56qKhl3GWSX5yfqmN27O+ZBB9nhRbEc8Z2NYoLWemCWz+uQaZdZhq2WtVgslk5TkIJp3G4WA2zdGq5fJSUl1NTUAHT4xwaxfLm0TBrD9UA8r/NulufaHuMxCUzVbw5k6vcECN9eWywWiyUWBSmYhnchOowKcNNNNwHw/PPPs2rVqrT7n3/+eVasWAGIeXsQyWTS+zpZCabhPWS4cxSnaK2jk7IBKKUagC0ZDjs+l8Iii8VisbgU8kX0OYAPPviAZDJ8ROS1117LjBkzaG1t5corr2TBApmt3N7ezksvvcTnP/95AGbPnu31jU1h/fr17Nq1C2Te5XvZnqgxal+a4bAqZPhzLmTylq0GxuT43BaLxWKhsAXzeWDDrl27WL16dehBJSUlPPPMM4wfP56PPvqI2bNn069fP/r27csll1zC9u3bmThxIk8++WRoDnPhwo7ukIeUUpkmhYSxIMYxORX/YMOyFovF0uUUrGAaY4AHQNpBoipmR48ezYcffohSiqlTp9LW1kYikeDkk0/mX/7lX1i4cCFjxgRvwNavX8+SJUtAzNTf11pPzDG8uQGoy3DMKK11Lv6ydcDuDMecYEd+WSwWS+4kosKZRzpa697Ah8Cx55xzDp/4xCfy+vwtLS088MADTjh2A9JTmUQGSL+GmKBvBDYppZpinO8sIDju6/KBUuqZbM9Va/1J4LQMh/3Y9IZaLBaLJUsKdocJoJTaD9wO8Prrr3dUu+aD9vZ25s6d64jlftyh0AlgNGL+/kngeuAftNZ/p7W+0uxAw3Zyi4DwPhhhao7+sjYsa7FYLF1IQQsmgFLqNeC7yWSSJ554IrJ9JC5tbW0888wz3lDsMmRn6aUSOAWx6cN8PQn4HPAlrXVVwLk2IzviKDp8crNkPZnN3k/I4XktFovFQhEIpuGfgB+2tbXx+OOP8/LLL9PSklttTl1dHQ8//DCLFy8GaQXZSvjsyVJgKukVqCOAq0MeE6v4J9t8o+n3XJnhsFFa6z4ZjrFYLBZLAEUhmMaI/O8R4Wx/6623ePDBB1m8eHHkBBIvDQ0NvPrqqzz00ENs2bIFxJ1nKbLD7Bfx0ATipDPR/NthgtY67XFd7C+baXudAI7P4XktFoulx1OW+ZDCwIjm/6e1fgl4dOfOnZOfeuopevfuzdSpUxk9ejQjRoygf//+lJSU0NLSQl1dHVu3bmXNmjWsWLHC28/5HvAKMunjJGAA0AREqe8IoBwRWcekYDjBtngLgHEZfqRZZN4x+lmNCHzwRG3hBHLoJbVYLJaeTkFXyYZhZkDeCtwDnBjzYe1IrvJtpPIVRACvAHoj+cHtMZ5nL2Lb1wr8UCm1M+D8SoGvAH0jnicJ/K8xWI+N1vpGonenrcC/G3tBi8ViscSkKEKyfpRSzUqpB5Hd4ZnAd4BnEQs5J7l5ABG2R4H/Ab4PPIkrlphjF5tjqxDhzER/ZCj0bmBXyPm10XX+spnCstaM3WKxWHKgaEKyQZgw7d/MrQOtdcLc5/y/DLgLoxzhdgAAIABJREFUt+LVy3oktDrI3A4iYc8oyhFxHQzUhxzzLnAO0YuWk7XW85VS8RKxwnLgsgzHTER20xaLxWKJSVHuMDPhFUvz/1ZkBxrEAWAHslvcg4hmGNuRPOLbQC/gdq316JBz2Edm0apGqnBjY553c4bDrBm7xWKxZIm9aBqUUuuA90PudsK0+8wtrccSsadbZo51dqDVwC1a6+NCnjdOi8mZOVjaZTIxsGbsFovFkiVWMFP5E1IN66cBt9r1IHCI9LBs2GiucuBzWuuTAu5bT2Z/2aFk79BjXX8sFoslz1jB9GD8YF8IudtbDNSGCKdXXPdEPHUJcKXWerbv9ZLE22WeneUu05qxWywWS56xgulDKfURsCTgrh3m5tAbyVk2IP6wW2M8/aV+0USs8jIZt48ic99mB0aIM+0yBwFD4j6nxWKx9HSsYAbzPNAY8P3lyBBpp2joGKAWmIuEaeNwqZlaAoDph3w7xuPOjvn8DnFMdW1Y1mKxWGJiBTMAE5r9Y8BdrYgQvYW45byL7DAfQiaRxGWO1trbY/kOmQV3XFjFbQgbsGbsFovFkjesYIaglFpBuIVcMyKU+5Fw6ZnA0/j6PTNwmSOaSqkDxMtlnhX3ybMwYw+q+LVYLBaLDyuY0bxMdDGPw7nAcKXUK4gHbVwu01rPMP9+i2ivWpBCnWFZPH8cM/axWTyfxWKx9FisYEZg5lc+E+PQEuBqrXUvpdTfkJxmXJPey7XWM4zhwAcxjo+9y0RMFNozHBO7mMhisVh6MlYwM2AMDd6KcegQ4FLzmPcJzoGGcbnW+hTgr2QWuBO11gPjPKkR/EyuP1YwLRaLJQZWMOPxKuGesF6ma62nQ26iiYRHP8pwXALJmcYl0+zNoXaotMVisWTGCmYMlFItSFFPpt0fSAXsUPO494gvmgngU0jbSiZO1lpHjQbzkkkwwe4yLRaLJSNWMGOilNoMvBHj0HLgs1rrXuZx7xFu7O4nAZxH5t1sKXB6zOfcROZiIiuYFovFkgErmNlRS6pFXhhDgUuc/yil3iW+aJYBI8k8e3NmnJYQszvOdM5WMC0WiyUDVjCzwAx+fpLMhgAgYdMOw3Ujms/FfKlDSH9nRcQxvQC/zV4YmcKyA7XWA2I+l8VisfRIrGBmiVJqL/FaTUD6LId6HrsQsd2Lww7gJMKnoACc5oR+M2DzmBaLxdJJrGDmgFJqOfFcfcqBa7TWHaKnlFpA+EQUL7uR3OOJhP+dqoAZIfd52UIM670Yz2OxWCw9lkQyGbe/3uJFa10K3AbE8Xd9TymVUi2rtT4POCfD44YAU4GdSLtJ0B9rH/A/SqnIwh6t9Q1A2CBr53n+20w6sVgs3YjWugyYhCyAJwCVyIJ5BzLY/j2lVBzXMUsXUna4T6BQUUq1aa2fBO5E3txRnKK13mQqZh3mA32AUyIeV4/41Q4Gjid4ZFdfJHT7boZzWEu0YPY1rxOn39RisXQSM492FnA3cA1QneH4d4D7gceN/7Slm7Eh2U5gVnxx85lztNZHex6bRIqAMs2t3GC+jiA8bHqm1jrT39LmMS2WIwSt9YmIs9fbwC1A9YABA5g8eTLnnnsuF1xwAeeffz4zZ85k1KhRlJaWghT5PQJs1lrfE+Mzb8kzNiSbB7TWFxOvL3I/8JApHHIeWw7cDIwJeUwCOBV3F7sMGVzt50kz/DrsHBPAPyB5zzCWKqV+H3G/xWLpBCb0+i3gn4DyqqoqTj75ZGbMmMGgQYNCH9fS0sKSJUtYsGABW7Zscb79F+B2pVScxbAlD1jBzAMmn3k70gqSia3Aw6Y/0nl8lXn80JDHjERCsiBuQx8g48W81AEPmLFeYed5LZInCeMA8O82j2mx5B+tdSXwO+DTADNmzODCCy+koiKqeyydpUuX8vzzz9PU1ARS33CxaVuzdDF2S58HPP2ZB2McPgK4wuz4nMcfAH5Nugg6bMOtci1BCoH8n7JhSEVtFJlWolXAURmOsVgsWWIiSU8An66srOSmm27isssuSxHLZDLJY489xvnnn8/gwYOprKxk3Lhx3Hnnnaxd6350J0+ezD333MOECRNA6g7+rLWe1s0/Uo/ECmaeUErtRvxm4+zOpgBn+x6/FxHNINFtJ9Wtpxcimv6/33km5BOGzWNaLIeHfwEuq6qq4tZbb2X8+PEpd7a0tHDllVdy4403Mm/ePBoaGqiurmbdunU8+OCDTJs2jXnz5nUcX11dzXXXXccJJ5wAMAB4Tmvdvzt/oJ6IFcw8Yvoz52U8UDhPa32C7/F1wG8I9n7d4vt+X2Ci75j+SNVdGPVI+0gUVjAtljyitT4N+FoikeBzn/scRx2VHsT55je/ydy5cykrK+P73/8+e/fuZdeuXWzcuJFrrrmGxsZGrrrqKrZu3drxmNLSUq6++mpGjhwJUgPxn931M/VUrGDmnzfIPKLL4SqtdcqnRym1AfhDwLFtpHvCHgUc7fveOSZXkobJTWbaZY41OVmLxdJJTMTnEaDkjDPOYMyY9Nq+uro6fvzjHwNw33338ZWvfIXqaukwGT16NL/97W+ZNGkSe/fu5bvf/W7KY8vKyrjiiiucKtovmP5uSxdhBTPPGFGaixT3ZKIXcJ3WOqX/Sim1DOnT9LPp/7Z359FVlff+x98ZSAIBQgiEISgQEMGBSRzb2lBaraWg1eW1lalaB8CqC9veav2t+/TpXdrqurZ0ubT+FK0zV37gcKVQpaVGr4rIIDIJKhKGhDEhBBMy//549k5OTs7J2SGBkOTzWmsvknP2PgOQfM4zfR8aV+wZihvH8HWl6f0yYwVmEm6SkYi03BRgZHp6Ojk5ORFPWLlyJRUV7sd63rx5je5PSEjgrrvuAmDhwoVUVlY2uL9v375861t1Izy/aqXXLREoME8CbwbsfwPHApyejtsOLHzs8V1gS9ht1cDOsNvicDNfQ0P3kib2y9Q4psipMxfgoosuIjEx8vSCvLw8ANLS0ujfv3/Ec7yxSoqKili3bl2j+y+88EK/lfl9a+2wVnjdEoEC8yTxJvG8ggu5WIYAPwqbOVuLK4oQvqF0AVAadlsiboas/xPZBciJ8rqO4OrUNkWBKdJC1tos4LuJiYmMGTMm6nlxce7HvqYm+v70VVX10xc2b97c6P5u3bpx3nnn+d/OOJHXK7EpME8iY8xugm/pdS7u02FoaFbgWqpfh5wXbRyyK3AOrsUJbnuxPlGeK1Yr84wYs21FJLaLAM4880y6do1eL2Tw4MEAlJSUsHt35K1rt2yp72wKKVzQwIgR/lJtLj6B1yoBKDBPMmPMeuDDgKdfTNj4o9ciXIRbWuI7SOQ1m72pnwQUD0yK8jyxAjOR6JWHRCSYCwB/FmtUEydOJCnJ7dL30EMPNbq/oqKC+fPn131fUhJ5onvI80wI/eAtrUeBeWqsAL4MeO53rbVjQ28wxuTReB/NHVGuH4JblwUwylobaTeVnQFehwJTpGXOASIuIwmVmZnJ7NmzAXj88ce5//772bNnD5WVlaxfv54f/OAHfPXVV3Tp4nYJjI+P/Gs7LS3NL4TQh4YTAaWVKDBPAa9c3WJcGasgplprG+ws4pW+Wh1y05EojxeH+0H1N5b+XvinTWNMCa6V2pQgZf5EJLpuQKDSdw8//DBTpkyhtraWBx98kDPOOIOkpCTGjx/PP//5T+644466Yge9evWK+BhxcXGhz5XaKu9AGlBgniJe+buXaDgeGU08buZseOvwLRp2p35F5MpCSbiZs3HAYCJv6xV5sKRelrp1RFokcE3m5ORk3njjDRYtWsTVV1/N8OHDGTp0KFdddRWvvvoq8+fPZ9cut3HRWWdF36UvpDZ49BlEcsIUmKeQMaYQF5rhaykj6QLcGDpxx6tZ+/+on+V6DFd0PZJ06sczJ0XYCmhvjOfvDvQM8DpFJLIjAMeOBVld5lqI119/Pa+//jqff/45O3bsYNmyZfzoRz9i3bp1lJW5LTAvueSSiNfX1NTUnQMURzxJWkSBeYoZY/Jxy02CfALsBkwPXVNpjCnFhaa/XOWrJh5rCG48sx+NC7PHCkxQt6xIS2wAGpSzO1F//etfAcjJyYk6iejgwYP+8pOvjDHRNnKQFlBgtgFjzJcE33i6FzAjtBqQF7pve98ex9WZjcQvatCFxoXZDwKVEa+qp8AUOXFrIfoykKA+/PBDFixYAMB9990X9byQ59FWXyeJArONGGM+xY1JBpEJzAorobcat5k0QB6RC7aD2wZsFGGF2b3u3VgffRWYIiduNVC+d+9eCgsLmzzxX//6F3/605/YsWMH1dWu86ioqIhHH32UK6+8kqqqKm677TauuOKKqI+xaVNdCet3W+flSzgFZhsyxnwIfBDw9H7ATD80Q2rWHsG1FJuaxOOvzwwvzB6rW3ZghLFPEQkgpNoXa9c23ejLy8vjnnvuYdiwYaSkpJCenk5GRgZ33XUXJSUl3HLLLTz++ONRrz98+DA7duwAtwn8i633LiSUfhm2vRXApwHP7U/D0DxO/XhmpMLsoYZ614cWRogVmEm4NV0icmIeBxeY0QoOAHzzm9/k7rvvZty4caSlpVFaWsqgQYP48Y9/zMqVK3nqqaf8WrERvftuXaNyobc3r5wECsw2FtJS/CLgJf1xY5pdvev34kI3UmH2UP545jestf7sV038ETm5VgPLysvLWbp0aeiyjwaGDx/O/PnzWbduHYcOHaK8vJxdu3axcOFCJk6c2OQTbNu2jU8//RTcfIY/tPYbkHoKzNOAN564iGABBjAA19L0C1R+BHxG5MLsoVJwoflt7/sjMc4HiFQpSEQC8D4Q3wYUb9++nTVr1rTq4xcXF7N0aV256vuNMZ+36hNIAwrM04RXaP0lYH/AS+pCM6SVWkTsOrEDcOX3snDjomXUF2yPRC1MkRbweoHuBFi2bJnfGmyxo0eP8sILL/jrPN8F/twqDyxRJfz2t79t69cgnpycnMrc3NwtwHBc4YBYegDDcnNztxhjynJzc/cAI3B1JJuqxzUEN5Z5Jq6M3ijc+GekKkTdcnNzP8jJyVHlEJETlJOT82lubm418J3PPvuM2tpazjzzzKh1YWPZuXMnCxcupKioCNwciO97a7TlJFJgnma80NxK80IzOzc3d6sx5nBubm4lMBA31hlJd9wylTRclaDjuFZkH1zloLKw8+OAL3JyclQ5RKQFcnJy3s3NzS0DvpeXl8e2bdvo378/PXsGL6hVWlrKP/7xD5YtW0Z5eTm44ZgrvSpicpLFRRuElrZlrU0FZuHCLYhDuOnkxd51U4i8Y8EZgD/dbg/wHnCp9/1RoPF27vCWtwRGRFrIWvtt4BkgG9y2XBMmTCA7O5uePXvWbSjtq6ioID8/nw0bNrBp0ya/mk8V8CDwgDecI6eAAvM0dgKhWQK8gOte/RVwGW7Xgi64QtDluDFMXzVur84M3AbUAO/TuALQJmPM4hN4CyISgfez/X+A23F1nwHo1q0bmZmZJCUlUV1dTXFxMYcOHQq//C3gN8aYSB9u5SRSYJ7mvB+snwJ9A15yHHgZN075KC5sa4m+RvNrYDv1P7Qf03gss8gYowkFIq3Mm+l+A3AjMIGQ8AxRBWzGLR97wiutKW1AgdkOWGu741qaQUMzETgXGImbCRuPK9BeRuT6sQeoX17yCd4uC2Ee1qQCkZPH205vKDAM1+NTiRtq2egVKZE2psBsJ5oRmvG4McnhuGUmmdRPHqrFdduGz3iNxy1n+RrYQuQtw17SGi8R6cy0DrOdMMYcA54j+v6XvjTcPpZxuBqyJdRvBRZH/VhlqBrqCxR0ifK4Wo8pIp2aArMd8ULzr8CuJk7rQX1AggvI0KUiXYj8756E675VYIqIRKDAbGeMMWW4mbDbopxShpvgEzpWWR12TqSiBlW47tseEe4DyPLGWEREOiUFZjtkjKnEbRu03rupC25N10W4iT7gum79PTJrceOTfusxicbl8Kpx6zPPivK03XCbWYuIdEoKzHbKGFMD/A9uN4QLcGXuulFflKCShsXYK3HrMJNx/+7hrUw/XDNwY5945/XBVQ4aAFxmrU1s7fciItIeaJZsO2etvQ74Pm5WbLQu0264IEzAzbKNx3Xbhu+bl4br0i3HtUb7Ux/AvjJcy/Z9YIExZnvL34WIyOlPgdmOeWOKv8IFYiauOzZar0E8blF0X1zXai2ujJ6/vqsrrmXZoAXZq1cvunZ1E2tLS0spLm5UUvYfuPJc77Ts3YiInN4UmO2Y1z36G+pDMh04j8atwlDJuB1NUnHdsIW4oEwFSEpKYsyYMYwaNYoBAwaQkpLS4OLS0lIKCgrYsmULGzdupLKybm7RE8C/G2OibysvItKOKTDbOWvtrTRc8tEDF5pNbe+VAJyNC8lkICExMZGcnBwmTJhAcnJTl9Y7fvw4q1at4r333qOmpgZgB3CVumlFpCPSpJ/2LxfXveorwe040lRLrxpXcisFSBg0aBCzZ8/mG9/4BikpKcTFxQU6PvroI3Jycrjtttvo378/uJm671lrzz5J71VEpM2ohdkBWGsvACbhxjJ9CbgxzUil9JJxM2u7jBw5kuuuu47ERDd06QVfVEePHqWsrIykpCTy8/PJyHA7iFVUVPDKK6+wY8cOgN3AOGPM4RN4Lwm4WprDcDNzS3DdxmuNMZFq3IqInBIKzA7CWpuE62Y9A1fmrj+uB2EoMDjs9POB3tnZ2dx4440kJDQ15NnQ2LFj2bBhA9deey1LlixpcF9lZSXPP/88e/bsAVhojLmxGa8/ARgHfAs3WzdcFfAB8I63pEZE5JRSYHZQ1touuPWTZwDjcUHUFxekZ6ekpDB37lx69IhW2KexTz75hHHjxgHwxhtvMHXq1EbnFBYW8sQTT/iTga41xrwW43UmAGOBy4kclOFyjTH/CvyiRURaiQKzk/CWoCQDXwBZ11xzDWPGjGnWY8ybN4/58+fTt29f8vPz67pxw3300Uf8/e9/B9gKnGuMafSfLKRFeSVudq9/Tq131OBaleFl/QCeM8Z81awXLyLSQqra0kkYY2qttVcBWRkZGYwePbpZ11dVVfHyyy8DMG3atKhhCTBhwgTef/99SkpKRgHfBt4Jvd9aOwm4Fbd2NNbEs1pcaFbjArQKSLPWfoArsFCOK6ZwNPQwxkTbMFtE5IQoMDuX2QAXXnghcXHNq6O+fPlyDhxwO4vNmjWryXMTEhIYP348ubm5AHPwAtNaG49bN/rdZjx1HO7/aSL1S2XOwRVdiMpaGx6ixSFfH8aFqrpXRCQwBWYn4Y1pfhvg/PPPb/b1zz77LACjR49m7NixMc8fM2aMH5jfsdbGeeE0g+aFZTTRtiAL1dU7+kW5v8Jaewg4GHYc0aQiEYlEgdl5nAMkp6en061bt5gnhyosLGTp0qUA/PSnPw10jV9Sr6ysrA9whrW2HAg8azaG47FPiSkJNylqYNjtVdbawzQM0XygWC1Skc5Ngdl5jAMYODA8H2JbuHAhFRUVJCYmMm3atEDXxMXFMWDAAH9d5jgi75Byok5m+b1EXKs0vGX6tbV2L1B3eHuTikgnocDsPHoDdO/evdkXPvfccwBcddVVZGZmBr4uZMnKdbjJOUm4XVJaqi1myKbiavCO8G+w1hYSEqDAPm+vUhHpgBSYnUcCQHx886ohbt26lY8//hiIPdknXMhz9cIFzkDcLNdS72iNrtW21Ns7/EHhGmvtfmAnLtTzjDHlbfTaRKSVKTA7jzKA8vLm/f72J/v07t2bKVOmNOvaioq6xmQlbmbqMNz/uZ7eUUN9eJbRsCZuU4YAnzXrxZwa8bhyfgOAS3EBmo8Lz53ALrVARdovBWbnsQ3g4MGDgS+oqanhxRdfBOAnP/kJSUlJzXrC/fv3+18eBo7h6teG1uGLB7p7Ry0uNP3wjFSwwNezWS+k7cTjyhQOwlVaqrbW7sEF6FfAHmNMU+9TRE4jCszOYx1AQUEBNTU1gbpmV6xYQX5+PtD87tiKigoOHToErhW5HxeA23CzdSOJwxWP74YLz3LqW59VYeem0D4l4Or6DgZygEpr7S7gS+AzY0xhG742EYlBpfE6EWvtF8CwmTNnMnTo0Jjn33jjjSxcuJBzzjmHzZs3N+u5tm7dyqJFiwAKgCe9m+Nxu6pkRbsuigrqW57luC7e95v5GO3BAVxX82dAwclYxmKt7QaMxo0nd8H9fe4ENqu7WKRpamF2Li8CZs2aNTED8+jRo7z++utA81uXAGvWrPG/3BBycw2wAjgXN1EmaEsxyTt6Ud9iHQQUAV83+8WdvjK943LgqLV2Gy48d7ak69ZaOxS4HZgMjKJht7iv3Fr7KbAEeMYYE7zvXqSTUAuzE7HWZgF58fHxCXfeeSe9evWKeu6CBQu49dZbiY+PZ/fu3c1av7l//36eeOIJcF2pjxB5NqzfPZmNC0OfX7Mv3jviQr72j3xcyygB131bDBzBBWhHXBt5HPgcF55fBJ15a60dBTyMC8o4cOtj+/btS3p6OgkJCVRVVXHo0CEKCxv0BlcAC4F7jTH7WvONiLRnCsxOxlr7IjAtOzub6dOnN7umbCw1NTU888wz7N27F+BjYFmMSxJwXbRnEKzk3R7cjiuhknBFEZJxIX0EN8mojPpZucE3/Ty9VQM7cOG5zRhzLPwEa20i8AvAAskJCQmce+65jBs3jqysLLp0afzXfPz4cfLy8li3bh3bt2/3by4E7sTtbapfFNLpKTA7GWttP2AzkDF58mQmTJjQqo//3nvvsXLlSnBFzh/HtQSDiBWctbiW5RcEX34Crst2L+6X/zFcoPbE7Q3aF9fN217V4j5AbMNNGjpkre0OvIZXs3fcuHFMmjSJ1NTUwA9aWFjIsmXL+PLLL/2bngLmaEavdHYKzE7IWnsD8N/x8fHccMMNjBgxIuY1QWzatIklS5b4376Im/3ZXAlAH9wemT1wgXscF3qtNV55mPrqPAdwk4h6Ux+ifb3nb16Vh7ZXDNwEnJ+amso111zD8OHD6+6sqanhueee46WXXmLDhg0cOXKE1NRUzj77bKZOncpdd91VV52ptraW9evXs3z5cqqqqgCeB25SYXrpzBSYnZS19mHgV/Hx8UydOpXRo0efcPdsbW0ta9asYfny5Xj/n1YAH7Tiyz3ZaoB93lG3awlut5NBuJZvFi5EW1Mq7kNBCi60i3CzgU/UvwGjevbsyaxZs+jdu3fdHaWlpUyZMsVv/QPQs2dPSkpK/H8zBg8ezMqVK8nOzq47Jy8vj5deeonKykqA/zTG/EcLXp9Iu6bA7KSstXHAfwH3AIwaNYrJkyc3q+sO3GzaN998ky++qBtW/A/cRJPhwEjgLNrvuskKIHQLsGO47uLuuGUZWbh1o82VjJvsFGnrsVIgD9fybc4P5/nAtcnJydxyyy306dOnwZ333Xcff/jDH4iLi+OBBx5g7ty5pKWlUVFRwauvvsqcOXM4cuQIEydObBCqAF9++aVfwKIauMQYswaRTkiB2Yl5oXkL8Eege3JyMmPHjuXCCy8kIyOjyWsPHDjAxx9/zIYNG/zWRxHwc2PMy2HPkYArZTcSOJv2U6WnKdW4MdGjuDHRFFyI9vb+LKdxsQVfF1zFo1gfIpoTnKnAHUDXKVOmMH78+EYnDB48mF27dnHzzTfz9NNPN7r/2Wef5aabbgLcGGZ6esPG9FtvvcWqVavAjX+PN8a0RhF9kXZFgSlYawfjigtc4d+WmZnJgAED6N+/P127dgVct96+ffvIz8/3q/j4XgfmGmMKYjxPHK7O6kjvCL71SfvhrxftjuvSTcB1t1Z5xxDvvpqQozbsa18twYJzInB5UzOfU1JSKC8v59FHH+XnP/95o/s3btzI6NGjAdizZw9ZWQ1rS1RWVvKXv/yFoqIigB8bY16J9Rch0tGocIFgjMkDrrTWjgfmANMOHDjQ9cCBA2zYsCHaZSW4iSB/McYEKgPkLU3I946V1toMXKtzJG52bOuucWkbFbhwO+B9n4IL0HRcF+7gE3jMs3B/358B28PuSwDGA1x++eVRx6GHDBnCtm3bWL9+fcT7165dC0C/fv0irrnt0qULl112GX/7298A5gIKTOl01MKURqy1XYExuK7D83ATU2pwv7Q3AmuAja25dZW3HGIELjyz6Zgf5s7EfUBIwbU+u9L8Dwl7gHep31d0FPBvmZmZzJ49O2pgPvLII/zyl78kLi6OBx98kDlz5tSNYb722mvMnj2b4uJinn/+eaZPnx7xMcrLy/njH//o70IzyhhzOu4YI3LSKDDltGOtTaLhpKGubfuKWs1IoH/I93G49+YXnQ+6jCUfeNv7+krgkokTJ3L55ZdHvaC6upq7776bxx57rO62tLQ0SkpKqKmp4ZJLLuH+++/nhz/8YZNPvGTJEjZt2gRwmzHmqYCvV6RD6Iif4qWd8yaUbAG2eOOe/YCh3jEYN8u0PQovEeiPUfpLSVKoD8+mfjYH4j5QfOF9HbN0YUJCAvPnzyc7O5tf//rXVFVVUVxcXHd/SUlJoK3fBgwY4AfmBbiCBiKdhgJTTmveuKe/RvJDa208LiT8AA1aUu90EGuN5XHvKMRNHvLDM9JGpGfhArMfuCBryr59+7j66qtZvXo1s2bN4p577mHYsGEUFBSwePFifve733HzzTezfft2fv/730d9nJDnGRPjvYh0OApMaVe8SjN7vOM9r25qFvUBOojTt27sQdzYY5CduCu84wju59QPz2RcV26ad14yQLduTS8HnTlzJqtXr+ZnP/sZCxYsqLt9+PDh3HvvvWRlZTFz5kwefvhhpk2bxnnnnRfxcULW6XaE5UEizaLAlHbNGFOFW3aRB7xjre2CW7qSxcmr0HOianFLTIIEZqgq3JrPo7hxTj84A9V23bJlCytWrABg3rx5Ec+ZMWMG8+bO6ZG1AAAFJ0lEQVTN4/DhwyxdujRqYIZMKmpvZQNFWkyBKR2KtwnyLu8AwFqbSn1lHr/UXVtMJPJnxrZEDa7i0BbgIeA3QEp5eTkpKZFrIWzdurXu66b2Qc3Ozubw4cPs3Lkz6jnHj9cNw3akfUhFAlFgSodnjPkat5/k51BXQMFfF5mFK6DQF7d85mTqTeu1zLYZYyqstZuBC/bt28eQIUMinhgfX/+Uu3btYuTIkRHPy8vLA6grwB7Jvn1122MGWnsr0pEoMKXT8SYSFXrHRv92a20KLjj70HDnktbaAqy1aup+Dfxf7+s1wAUFBQVRA3Ps2LF1Xz/11FM88sgjjc558803OXDA1Vq4+OKLoz5xfn6+/+XaZr9qkXZOgSniMcYcB3Z7Rx1vXWgG9QGahpv04h9Bf45ao3VZBTxqjPFrE64Cbt+2bRuXXnppxAuGDh3KFVdcwdtvv838+fNJSkpi3rx5ZGZmcuzYMRYvXswvfvELwFUEmjp1asTHqa6uDi2yv6oV3otIu6LCBSIt4HXvdsUFZ3iQ9sTVjU32jkHAuS14unzggdBShNbaHt7t3efMmUNmZuTyvAUFBUyaNKnBeGaPHj0oKSmp+75fv34sX76ccePGRXyMzZs3s3jxYnDdsed7LXWRTkOBKXKKeF2+/44L2ETc8pfwP+NCDrw/9+Mq++R6s4LDH/cxYO6YMWO45pproj5/WVkZTz75JK+++iqbNm2iuLiY1NRUhg8fzuTJk7nzzjvp27dvxGtra2t5+umn2bt3L8AdxpjHT+TvQKQ9U2CKnELW2tHAtQFPP4KrG7vBGBN1CYm1dgRuLDZp+vTpDBs2rOUvNMyqVat46623wBWQGGGMKYlxiUiHo8AUOcWstd8BvkX0wuvFuKD8pKmgDHvMe4Hf9+zZk9tvvz1mIYPmOHjwIE8++SRVVVUAU40xb7bag4u0IwpMkTZgre0HTMIta0nFFTT4CreFV5MtyiiPlwi8D1w0cOBAZsyYEXVdZnMUFRXx7LPPcvToUYAXjDEzW/ygIu2UAlOkjXmzcGsijU8283EGAv8LDO3Xrx/XX389GRkZJ/x4u3fvZtGiRRw7dgzvca80xsSqhyvSYSkwRToQa+2ZwApgRGJiIpMmTeKiiy5qULwglsrKSlauXMmqVXUrR94BrjbGHG31FyzSjigwRToYa2068GdgBkCvXr2YMGECY8eODS2e3khRURFr165l/fr1lJaWgivD9xBgW3OzcJH2SoEp0kFZa6cC83G7uACQkZHBgAEDSE9PJyEhgaqqKg4dOkRBQUGD/TFxlXzmGGM+PsUvW+S0pcAU6cCstQnAlcBc4Hs0vVPK18DrwGPAKhUmEGlIgSnSSXiTi84DLgD648KzHLc12hpge3Nn54p0JgpMERGRALQJrIiISAAKTBERkQAUmCIiIgEoMEVERAJQYIqIiASgwBQREQlAgSkiIhKAAlNERCQABaaIiEgACkwREZEAFJgiIiIBKDBFREQCUGCKiIgEoMAUEREJQIEpIiISgAJTREQkAAWmiIhIAApMERGRABSYIiIiASgwRUREAlBgioiIBKDAFBERCUCBKSIiEoACU0REJAAFpoiISAAKTBERkQAUmCIiIgEoMEVERAJQYIqIiASgwBQREQlAgSkiIhKAAlNERCQABaaIiEgACkwREZEAFJgiIiIBKDBFREQCUGCKiIgEoMAUEREJQIEpIiISgAJTREQkAAWmiIhIAApMERGRABSYIiIiAfx//k0nLP/F3ssAAAAASUVORK5CYII=\n",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"cs.draw_graph(\n",
" _in, \n",
" node_pos=nx.circular_layout(_in), \n",
" node_size_factor=.25, \n",
" node_border_width=2, \n",
" edge_width_factor=25, \n",
" edge_transparency=.5, \n",
" curved_edges=True, \n",
" labels='text', \n",
" font_size_factor=2, \n",
" figsize='medium'\n",
")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Data enrichment\n",
"Normalized fact co-selection matrices $I^\\mathrm{N}$ are additive, i.e., fact co-selections from additional transactions can simply be added to existing co-selection weights. Due to this nature, these matrices have a number of unique properties.\n",
"\n",
"The sum of all weights equals the sum of all weights in $G$:"
]
},
{
"cell_type": "code",
"execution_count": 38,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"15.0"
]
},
"execution_count": 38,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"IN.sum()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Fact attributes\n",
"The summed **weight** of rows or columns in $I^\\mathrm{N}$, i.e., the weighted in- or outdegree $w$ in the corresponding graph, equals the weighted number of selections per fact in the selection matrix $G$. Fact 5 (``fact_id=4``) has been selected most oftern:"
]
},
{
"cell_type": "code",
"execution_count": 39,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"0 1.0\n",
"1 1.0\n",
"2 2.0\n",
"3 2.0\n",
"4 3.0\n",
"5 2.0\n",
"6 2.0\n",
"7 1.0\n",
"8 1.0\n",
"dtype: float64"
]
},
"execution_count": 39,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"w = IN.sum(axis=1)\n",
"w = np.squeeze(np.array(w))\n",
"w = pd.Series(w).round(4)\n",
"w"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Elements $a$ in the diagonal are a measure of how strongly, in absolute terms, the respective facts are **autocatalytic** (catalyze themselves). In our toy example, e.g., transaction 1 selects each of its five facts with a normalized weight of 0.2. Projection of just these five selections to the fact mode would result in a fully connected graph in which facts mutually catalyze each other (including themselves) with a weight of 0.2. Since fact 1 (``fact_id=0``) is not selected in any other transaction, 0.2 is also its final value of autocatalysis, stored in the matrix diagonal. While fact 5 has been selected most often, fact 9 (``fact_id=8``) ist most autocatalytic because it is not co-selected with any other fact:"
]
},
{
"cell_type": "code",
"execution_count": 40,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"0 0.2000\n",
"1 0.2000\n",
"2 0.4500\n",
"3 0.4500\n",
"4 0.7833\n",
"5 0.5833\n",
"6 0.8333\n",
"7 0.5000\n",
"8 1.0000\n",
"dtype: float64"
]
},
"execution_count": 40,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"a = np.array(IN.diagonal())\n",
"a = pd.Series(a).round(4)\n",
"a"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The fraction of autocatalyses $a$ among all weighted selections $w$ can be turned into a measure of **embeddedness**, $e=1-a/w$. Here, embeddedness basically tells to what extent facts are co-selected. Facts 1 and 2 are most embedded because they are each co-selected among four other facts. Fact 5 is not embedded because it is not co-selected:"
]
},
{
"cell_type": "code",
"execution_count": 41,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"0 0.8000\n",
"1 0.8000\n",
"2 0.7750\n",
"3 0.7750\n",
"4 0.7389\n",
"5 0.7084\n",
"6 0.5834\n",
"7 0.5000\n",
"8 0.0000\n",
"dtype: float64"
]
},
"execution_count": 41,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"e = (1-a/w).round(4)\n",
"e"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"To compute facts' distinct co-selections or **degrees**, autocatalyses (loops) must be removed. This change of the sparsity structure is fastest using the [LInked List](https://docs.scipy.org/doc/scipy/reference/generated/scipy.sparse.lil_matrix.html) matrix format:"
]
},
{
"cell_type": "code",
"execution_count": 42,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"{'_shape': (9, 9),\n",
" 'maxprint': 50,\n",
" 'dtype': dtype('float64'),\n",
" 'rows': array([list([1, 2, 3, 4]), list([0, 2, 3, 4]), list([0, 1, 3, 4, 5]),\n",
" list([0, 1, 2, 4, 5]), list([0, 1, 2, 3, 5, 6]),\n",
" list([2, 3, 4, 6]), list([4, 5, 7]), list([6]), list([])],\n",
" dtype=object),\n",
" 'data': array([list([0.2, 0.2, 0.2, 0.2]), list([0.2, 0.2, 0.2, 0.2]),\n",
" list([0.2, 0.2, 0.45, 0.45, 0.25]),\n",
" list([0.2, 0.2, 0.45, 0.45, 0.25]),\n",
" list([0.2, 0.2, 0.45, 0.45, 0.5833333333333333, 0.3333333333333333]),\n",
" list([0.25, 0.25, 0.5833333333333333, 0.3333333333333333]),\n",
" list([0.3333333333333333, 0.3333333333333333, 0.5]), list([0.5]),\n",
" list([])], dtype=object)}"
]
},
"execution_count": 42,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"IN_nodiag = IN.tolil()\n",
"IN_nodiag.setdiag(values=0)\n",
"IN_nodiag.__dict__"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"With a degree of 6, fact 5 is most strongly connected to other facts:"
]
},
{
"cell_type": "code",
"execution_count": 43,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"0 4\n",
"1 4\n",
"2 5\n",
"3 5\n",
"4 6\n",
"5 4\n",
"6 3\n",
"7 1\n",
"8 0\n",
"dtype: int64"
]
},
"execution_count": 43,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"k = [len(i) for i in IN_nodiag.data.tolist()]\n",
"k = pd.Series(k)\n",
"k"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"A final score is most intuitive when facts are persons but also applies to cultural entities. A person that only goes to few parties but talks to many persons during those transactions may be called sociable. **Sociability** is the extent to which activity (measured as the number of selections $w$) is turned into connections $k$. Facts 1 and 2 are most sociable because one selection each results in four co-selections. Fact 5 is only moderately sociable because it took three selections to obtain six co-selections."
]
},
{
"cell_type": "code",
"execution_count": 44,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"0 4.0\n",
"1 4.0\n",
"2 2.5\n",
"3 2.5\n",
"4 2.0\n",
"5 2.0\n",
"6 1.5\n",
"7 1.0\n",
"8 0.0\n",
"dtype: float64"
]
},
"execution_count": 44,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"s = (k/w).round(4)\n",
"s"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"With these fact attributes, we can now enrich the ``facts`` dataframe:"
]
},
{
"cell_type": "code",
"execution_count": 45,
"metadata": {
"scrolled": true
},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" fact_id \n",
" fact \n",
" degree \n",
" weight \n",
" autocatalysis \n",
" embeddedness \n",
" sociability \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" 0 \n",
" 1 \n",
" 4 \n",
" 1.0 \n",
" 0.2000 \n",
" 0.8000 \n",
" 4.0 \n",
" \n",
" \n",
" 1 \n",
" 1 \n",
" 2 \n",
" 4 \n",
" 1.0 \n",
" 0.2000 \n",
" 0.8000 \n",
" 4.0 \n",
" \n",
" \n",
" 2 \n",
" 2 \n",
" 3 \n",
" 5 \n",
" 2.0 \n",
" 0.4500 \n",
" 0.7750 \n",
" 2.5 \n",
" \n",
" \n",
" 3 \n",
" 3 \n",
" 4 \n",
" 5 \n",
" 2.0 \n",
" 0.4500 \n",
" 0.7750 \n",
" 2.5 \n",
" \n",
" \n",
" 4 \n",
" 4 \n",
" 5 \n",
" 6 \n",
" 3.0 \n",
" 0.7833 \n",
" 0.7389 \n",
" 2.0 \n",
" \n",
" \n",
" 5 \n",
" 5 \n",
" 6 \n",
" 4 \n",
" 2.0 \n",
" 0.5833 \n",
" 0.7084 \n",
" 2.0 \n",
" \n",
" \n",
" 6 \n",
" 6 \n",
" 7 \n",
" 3 \n",
" 2.0 \n",
" 0.8333 \n",
" 0.5834 \n",
" 1.5 \n",
" \n",
" \n",
" 7 \n",
" 7 \n",
" 8 \n",
" 1 \n",
" 1.0 \n",
" 0.5000 \n",
" 0.5000 \n",
" 1.0 \n",
" \n",
" \n",
" 8 \n",
" 8 \n",
" 9 \n",
" 0 \n",
" 1.0 \n",
" 1.0000 \n",
" 0.0000 \n",
" 0.0 \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" fact_id fact degree weight autocatalysis embeddedness sociability\n",
"0 0 1 4 1.0 0.2000 0.8000 4.0\n",
"1 1 2 4 1.0 0.2000 0.8000 4.0\n",
"2 2 3 5 2.0 0.4500 0.7750 2.5\n",
"3 3 4 5 2.0 0.4500 0.7750 2.5\n",
"4 4 5 6 3.0 0.7833 0.7389 2.0\n",
"5 5 6 4 2.0 0.5833 0.7084 2.0\n",
"6 6 7 3 2.0 0.8333 0.5834 1.5\n",
"7 7 8 1 1.0 0.5000 0.5000 1.0\n",
"8 8 9 0 1.0 1.0000 0.0000 0.0"
]
},
"execution_count": 45,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"facts_enriched = pd.concat([facts, k, w, a, e, s], axis=1)\n",
"facts_enriched.columns = ['fact_id', 'fact', 'degree', 'weight', 'autocatalysis', 'embeddedness', 'sociability']\n",
"facts_enriched"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"\n",
"Caution \n",
"\n",
"It is important to understand the effects of matrix normalization as we have discussed it so far. For example, a strong co-selection of two facts can result from few transactions in which few facts are co-selected or from many transactions in which many facts are co-selected. Matrix normalization complicates interpretability when the number of selections per transaction exhibits large variance. In small-data settings, it may therefore be advised to not use matrix normalization. In big-data settings, it may be possible to remove outlier transactions with exceptionally many selections (e.g., publications with either very short or very long reference lists).\n",
"
"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Cumulative co-selection fractions\n",
"Sometimes it is can be helpful to filter graphs, e.g., to uncover a pattern that may otherwise be hidden in relational \"noise\". An observer of a meaning structure may neglect weak ties to identify the core facts of the field. Hence, removing weakly selected nodes or edges is not only a step we can do as network analysts, but an analytical step towards understanding what an observer in a field may have observed as he or she was trying to reduce uncertainty.\n",
"\n",
"As an alternative to simply filtering edges with small weights, one can keep those co-selections that collectively account for a specified amount of attention in the field. For this purpose we enrich edges by **cumulative fractions** of total matrix weights.\n",
"\n",
"First, distinct edge weights and the weight (attention) they collectively account for are identified. In the toy example, a single co-selection tie with a ``weight == 1`` also accounts for a total weight of 1. But 16 co-selection ties with ``weight == 0.2`` account for a total weight of 3.2:"
]
},
{
"cell_type": "code",
"execution_count": 46,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"weight\n",
"1.000000 1.000000\n",
"0.833333 0.833333\n",
"0.783333 0.783333\n",
"0.583333 1.750000\n",
"0.500000 1.500000\n",
"0.450000 3.600000\n",
"0.333333 1.333333\n",
"0.250000 1.000000\n",
"0.200000 3.200000\n",
"Name: weight, dtype: float64"
]
},
"execution_count": 46,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"co_selections_norm_cumfrac = co_selections_norm.copy()\n",
"co_selections_norm_cumfrac.index = co_selections_norm_cumfrac.weight\n",
"co_selections_norm_cumfrac = co_selections_norm_cumfrac['weight'].groupby(co_selections_norm_cumfrac.index).sum()\n",
"co_selections_norm_cumfrac = co_selections_norm_cumfrac.sort_index(ascending=False)\n",
"co_selections_norm_cumfrac"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Second, the summed weights are turned into cumulative co-selection fractions ``cumfrac`` such that all weights at least as strong as the smallest one account for 100 percent of the attention in the whole field. In the toy example, if we wanted to keep those co-selections that account for no more than 75 percent of the attention (``cumfrac <= .75``), we would have to remove all edges with ``weight < 0.3333``:"
]
},
{
"cell_type": "code",
"execution_count": 47,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"weight\n",
"1.000000 0.0667\n",
"0.833333 0.1222\n",
"0.783333 0.1744\n",
"0.583333 0.2911\n",
"0.500000 0.3911\n",
"0.450000 0.6311\n",
"0.333333 0.7200\n",
"0.250000 0.7867\n",
"0.200000 1.0000\n",
"Name: cumfrac, dtype: float64"
]
},
"execution_count": 47,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"co_selections_norm_cumfrac = co_selections_norm_cumfrac.cumsum()/sum(co_selections_norm_cumfrac)\n",
"co_selections_norm_cumfrac = co_selections_norm_cumfrac.round(4)\n",
"co_selections_norm_cumfrac.rename('cumfrac', inplace=True)\n",
"co_selections_norm_cumfrac"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The cumulative fractions can then be merged back into the co-selection dataframe:"
]
},
{
"cell_type": "code",
"execution_count": 48,
"metadata": {},
"outputs": [],
"source": [
"co_selections_norm = pd.merge(left=co_selections_norm, right=co_selections_norm_cumfrac, left_on='weight', right_on=co_selections_norm_cumfrac.index)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Apply the edge filter:"
]
},
{
"cell_type": "code",
"execution_count": 49,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" fact_id_from \n",
" fact_id_to \n",
" weight \n",
" cumfrac \n",
" \n",
" \n",
" \n",
" \n",
" 16 \n",
" 2 \n",
" 2 \n",
" 0.45 \n",
" 0.6311 \n",
" \n",
" \n",
" 17 \n",
" 2 \n",
" 3 \n",
" 0.45 \n",
" 0.6311 \n",
" \n",
" \n",
" 18 \n",
" 2 \n",
" 4 \n",
" 0.45 \n",
" 0.6311 \n",
" \n",
" \n",
" 19 \n",
" 3 \n",
" 2 \n",
" 0.45 \n",
" 0.6311 \n",
" \n",
" \n",
" 20 \n",
" 3 \n",
" 3 \n",
" 0.45 \n",
" 0.6311 \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" fact_id_from fact_id_to weight cumfrac\n",
"16 2 2 0.45 0.6311\n",
"17 2 3 0.45 0.6311\n",
"18 2 4 0.45 0.6311\n",
"19 3 2 0.45 0.6311\n",
"20 3 3 0.45 0.6311"
]
},
"execution_count": 49,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"co_selections_norm_filter = co_selections_norm[co_selections_norm['cumfrac'] <= .75]\n",
"co_selections_norm_filter.head()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"And construct and draw the filtered meaning structure:"
]
},
{
"cell_type": "code",
"execution_count": 50,
"metadata": {},
"outputs": [],
"source": [
"in_filter = cs.construct_graph(\n",
" directed=True, \n",
" multiplex=False, \n",
" graph_name='IN_filter', \n",
" node_list=facts, \n",
" edge_list=co_selections_norm_filter, \n",
" node_label='fact'\n",
")"
]
},
{
"cell_type": "code",
"execution_count": 51,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAcwAAAHBCAYAAADkRYtYAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAgAElEQVR4nOzdeXyV5Z3//9fJRiAJIewBwibI5sYOUq27IjrVMmirQl26qLXT3/y+007rt+3V6zedTv0501k6tdUZl6lLra3Vli+KFKxWUYEAsi+yI4QlQEgCZD/fPz73nXOSnHPu+5ycE3KSz/PxOA+z3Oe679DCO9f2uQLBYBCllFJKxZZxvh9AKaWUSgcamEoppZQPGphKKaWUDxqYSimllA8amEoppZQPGphKKaWUDxqYSimllA8amEoppZQPGphKKaWUDxqYSimllA8amEoppZQPGphKKaWUDxqYSimllA8amEoppZQPGphKKaWUDxqYSimllA8amEoppZQPGphKKaWUDxqYSimllA8amEoppZQPGphKKaWUDxqYSimllA8amEoppZQPGphKKaWUDxqYSimllA8amEoppZQPGphKKaWUDxqYSimllA8amEoppZQPGphKKaWUDxqYSimllA8amEoppZQPGphKKaWUDxqYSimllA8amEoppZQPGphKKaWUDxqYSimllA8amEoppZQPGphKKaWUDxqYSimllA8amEoppZQPGphKKaWUDxqYSimllA9Z5/sBlFKdg7U2G5gNTAOmAiOBHkAdcARY67zeN8ZUn6fHVOq8CQSDwfP9DEqp88haOxT4CvBVoNjHW6qAXwG/MMZsSeWzKdWZaGAq1U1Za7OA/wVYpCdJv379GDFiBEOGDKF///5kZWXR2NhIRUUFhw8f5uDBgxw+fDi8mSeBbxljqjr+J1CqY2lgKtUNWWvHAC8CMwAmTJjAjBkzGDFiBIFAIOZ7jx49ypo1a1i/fj1NTU0A+4GFxpj3Uv3cSp1PGphKdTPW2ouB5cDA3r17c+uttzJmzJi42zl27Bivv/46ZWVlALXAAmPM4uQ+rVKdhwamUt2I07NcCQwcPXo0CxYsIDc3t/n7paWl/OEPf2DNmjXs2rWL48ePU1NTQ//+/Zk2bRr33Xcft912W/P1jY2NLF26lNLSUpDFQfOMMcs7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\n",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"cs.draw_graph(\n",
" in_filter, \n",
" node_pos=nx.circular_layout(in_filter), \n",
" node_size_factor=.25, \n",
" node_border_width=2, \n",
" edge_width_factor=25, \n",
" edge_transparency=.5, \n",
" curved_edges=True, \n",
" labels='text', \n",
" font_size_factor=2, \n",
" figsize='medium'\n",
")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Function\n",
"The ``project_selection_matrix()`` function performs all these steps with just a few parameter inputs. It has two additional features: First, to handle cases where transaction and fact identifiers are not integers from $0$ to $m$ or $n$, that normal form is created (using a function defined in lines 38-40). Second, for transaction matrices the degrees $k$ and selection weights $w$ of transactions are provided."
]
},
{
"cell_type": "code",
"execution_count": 52,
"metadata": {},
"outputs": [],
"source": [
"def project_selection_matrix(\n",
" selections, \n",
" how, \n",
" transaction_id, \n",
" fact_id, \n",
" norm=True, \n",
" remove_loops=True, \n",
" symmetrize=True\n",
"):\n",
" '''\n",
" Description: This function uses the terminology of the compsoc unified data model \n",
" according to which \"transactions select facts\"; these selections are stored in a \n",
" selection matrics; the function projects a selection matrix to a transaction \n",
" similarity matrix or a fact co-selection matrix; computes fact attributes; \n",
" computes cumulative co-selection fractions for matrix filtering.\n",
" \n",
" Inputs:\n",
" selections: Dataframe containing the selection matrix indices and data; must \n",
" contain a 'weight' column that contains the cell weights.\n",
" how: String that specifies which projection is to be made; must be either \n",
" 'transactions' or 'facts'; if 'transactions', then the matrix of transactions \n",
" coupled by facts will be created; if 'facts', then the matrix of facts \n",
" coupled by transactions will be created.\n",
" transaction_id: Name of the column of the dataframe ``selections`` that holds the \n",
" identifiers of the transactions selecting facts.\n",
" fact_id: Name of the column of the dataframe ``selections`` that holds the \n",
" identifiers of the facts getting selected in transactions.\n",
" norm: Boolean parameter specifying if matrix normalization should be performed.\n",
" remove_loops: Boolean parameter specifying if the matrix diagonal should be \n",
" removed; if False, loops will be included in computing cumulative \n",
" co-selection fractions.\n",
" symmetrize: Boolean parameter specifying if the lower portion of the matrix \n",
" should be removed.\n",
" \n",
" Output: A dataframe containing the projected matrices (enriched by cumulative \n",
" fractions in the case of a normalized projection to the fact mode); a dataframe \n",
" containing matrix-based attributes of transactions or facts (depending on the \n",
" type of projection)\n",
" '''\n",
" \n",
" # function\n",
" def get_unique(s):\n",
" l = s.unique().tolist()\n",
" return {identifier: index for index, identifier in enumerate(l)}\n",
" \n",
" # map identifiers of transactions and facts to unique integers\n",
" import pandas as pd\n",
" d_transactions_indices = get_unique(selections[transaction_id])\n",
" d_facts_indices = get_unique(selections[fact_id])\n",
" \n",
" # construct selection matrix\n",
" rows = [d_transactions_indices[transaction_id] for transaction_id in selections[transaction_id].values]\n",
" columns = [d_facts_indices[fact_id] for fact_id in selections[fact_id].values]\n",
" cells = selections['weight'].tolist()\n",
" from scipy.sparse import csr_matrix, coo_matrix, triu\n",
" G = coo_matrix((cells, (rows, columns))).tocsr()\n",
" GT = csr_matrix.transpose(G)\n",
" from sklearn.preprocessing import normalize\n",
" GN = normalize(G, norm='l1', axis=1)\n",
" \n",
" # project selection matrix ...\n",
" import numpy as np\n",
" \n",
" # ... to transaction similarity matrix\n",
" if how == 'transactions':\n",
" if norm == True:\n",
" GNT = csr_matrix.transpose(GN)\n",
" H = GN*GNT\n",
" else:\n",
" H = G*GT\n",
" \n",
" # derive transaction attributes dataframe\n",
" H_nodiag = H.tolil()\n",
" H_nodiag.setdiag(values=0)\n",
" \n",
" k = pd.Series([len(i) for i in H_nodiag.data.tolist()])\n",
" w = pd.Series(np.array(H.diagonal()))\n",
" if norm == True:\n",
" w = (1/w).round(4)\n",
" else:\n",
" w = w.round(4)\n",
" \n",
" d_indices_transactions = {index: identifier for identifier, index in d_transactions_indices.items()}\n",
" \n",
" transaction_attributes = pd.concat([pd.Series(d_indices_transactions), k, w], axis=1)\n",
" transaction_attributes.columns = [transaction_id, 'degree', 'weight']\n",
" \n",
" # construct similarities dataframe\n",
" if remove_loops == True:\n",
" H = H.tolil()\n",
" H.setdiag(0)\n",
"\n",
" if symmetrize == True:\n",
" H = triu(H.tocoo()).tocsr()\n",
" else:\n",
" H = H.tocsr()\n",
" \n",
" transaction_id_from = [d_indices_transactions[index] for index in H.nonzero()[0].tolist()]\n",
" transaction_id_to = [d_indices_transactions[index] for index in H.nonzero()[1].tolist()]\n",
" weight = H.data.tolist()\n",
" \n",
" similarities = pd.concat([pd.Series(transaction_id_from), pd.Series(transaction_id_to), pd.Series(weight)], axis=1)\n",
" similarities.columns = [transaction_id+'_from', transaction_id+'_to', 'similarity']\n",
" \n",
" return similarities, transaction_attributes\n",
" \n",
" # ... to fact co-selection matrix\n",
" if how == 'facts':\n",
" if norm == True:\n",
" I = GT*GN\n",
" else:\n",
" I = GT*G\n",
" \n",
" # derive fact attributes dataframe\n",
" I_nodiag = I.tolil()\n",
" I_nodiag.setdiag(values=0)\n",
" \n",
" k = pd.Series([len(i) for i in I_nodiag.data.tolist()])\n",
" \n",
" d_indices_facts = {index: identifier for identifier, index in d_facts_indices.items()}\n",
" \n",
" if norm == True:\n",
" w = pd.Series(np.squeeze(np.array(I.sum(axis=1)))).round(4)\n",
" a = pd.Series(np.array(I.diagonal())).round(4)\n",
" e = (1-a/w).round(4)\n",
" s = (k/w).round(4)\n",
" \n",
" fact_attributes = pd.concat([pd.Series(d_indices_facts), k, w, a, e, s], axis=1)\n",
" fact_attributes.columns = [fact_id, 'degree', 'weight', 'autocatalysis', 'embeddedness', 'sociability']\n",
" \n",
" else:\n",
" fact_attributes = pd.concat([pd.Series(d_indices_facts), k], axis=1)\n",
" fact_attributes.columns = [fact_id, 'degree']\n",
" \n",
" # construct co-selections dataframe with cumulative co-selection fractions\n",
" if remove_loops == True:\n",
" I = I.tolil()\n",
" I.setdiag(0)\n",
" \n",
" if symmetrize == True:\n",
" I = triu(I.tocoo()).tocsr()\n",
" else:\n",
" I = I.tocsr()\n",
" \n",
" fact_id_from = [d_indices_facts[index] for index in I.nonzero()[0].tolist()]\n",
" fact_id_to = [d_indices_facts[index] for index in I.nonzero()[1].tolist()]\n",
" weight = I.data.tolist()\n",
" \n",
" co_selections = pd.concat([pd.Series(fact_id_from), pd.Series(fact_id_to), pd.Series(weight)], axis=1)\n",
" co_selections.columns = [fact_id+'_from', fact_id+'_to', 'weight']\n",
" \n",
" co_selections_cumfrac = co_selections.copy()\n",
" co_selections_cumfrac.index = co_selections_cumfrac.weight\n",
" co_selections_cumfrac = co_selections_cumfrac['weight'].groupby(co_selections_cumfrac.index).sum()\n",
" co_selections_cumfrac = co_selections_cumfrac.sort_index(ascending=False)\n",
" co_selections_cumfrac = co_selections_cumfrac.cumsum()/sum(co_selections_cumfrac)\n",
" co_selections_cumfrac = co_selections_cumfrac.round(4)\n",
" co_selections_cumfrac.rename('cumfrac', inplace=True)\n",
" \n",
" co_selections = pd.merge(left=co_selections, right=co_selections_cumfrac, left_on='weight', right_on=co_selections_cumfrac.index)\n",
" \n",
" return co_selections, fact_attributes"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"As part of the ``compsoc`` library, we can call this function, e.g., to compare the fact co-selection matrices with and without normalization:"
]
},
{
"cell_type": "code",
"execution_count": 53,
"metadata": {},
"outputs": [],
"source": [
"with_normalization, _ = cs.project_selection_matrix(\n",
" selections=selections, \n",
" how='facts', \n",
" transaction_id='transaction_id', \n",
" fact_id='fact_id', \n",
" norm=True, \n",
" remove_loops=False, \n",
" symmetrize=False\n",
")"
]
},
{
"cell_type": "code",
"execution_count": 54,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" fact_id_to \n",
" 0 \n",
" 1 \n",
" 2 \n",
" 3 \n",
" 4 \n",
" 5 \n",
" 6 \n",
" 7 \n",
" 8 \n",
" \n",
" \n",
" fact_id_from \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" 0.2 \n",
" 0.2 \n",
" 0.20 \n",
" 0.20 \n",
" 0.2000 \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" \n",
" \n",
" 1 \n",
" 0.2 \n",
" 0.2 \n",
" 0.20 \n",
" 0.20 \n",
" 0.2000 \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" \n",
" \n",
" 2 \n",
" 0.2 \n",
" 0.2 \n",
" 0.45 \n",
" 0.45 \n",
" 0.4500 \n",
" 0.2500 \n",
" NaN \n",
" NaN \n",
" NaN \n",
" \n",
" \n",
" 3 \n",
" 0.2 \n",
" 0.2 \n",
" 0.45 \n",
" 0.45 \n",
" 0.4500 \n",
" 0.2500 \n",
" NaN \n",
" NaN \n",
" NaN \n",
" \n",
" \n",
" 4 \n",
" 0.2 \n",
" 0.2 \n",
" 0.45 \n",
" 0.45 \n",
" 0.7833 \n",
" 0.5833 \n",
" 0.3333 \n",
" NaN \n",
" NaN \n",
" \n",
" \n",
" 5 \n",
" NaN \n",
" NaN \n",
" 0.25 \n",
" 0.25 \n",
" 0.5833 \n",
" 0.5833 \n",
" 0.3333 \n",
" NaN \n",
" NaN \n",
" \n",
" \n",
" 6 \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" 0.3333 \n",
" 0.3333 \n",
" 0.8333 \n",
" 0.5 \n",
" NaN \n",
" \n",
" \n",
" 7 \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" 0.5000 \n",
" 0.5 \n",
" NaN \n",
" \n",
" \n",
" 8 \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" 1.0 \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
"fact_id_to 0 1 2 3 4 5 6 7 8\n",
"fact_id_from \n",
"0 0.2 0.2 0.20 0.20 0.2000 NaN NaN NaN NaN\n",
"1 0.2 0.2 0.20 0.20 0.2000 NaN NaN NaN NaN\n",
"2 0.2 0.2 0.45 0.45 0.4500 0.2500 NaN NaN NaN\n",
"3 0.2 0.2 0.45 0.45 0.4500 0.2500 NaN NaN NaN\n",
"4 0.2 0.2 0.45 0.45 0.7833 0.5833 0.3333 NaN NaN\n",
"5 NaN NaN 0.25 0.25 0.5833 0.5833 0.3333 NaN NaN\n",
"6 NaN NaN NaN NaN 0.3333 0.3333 0.8333 0.5 NaN\n",
"7 NaN NaN NaN NaN NaN NaN 0.5000 0.5 NaN\n",
"8 NaN NaN NaN NaN NaN NaN NaN NaN 1.0"
]
},
"execution_count": 54,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"pd.pivot_table(\n",
" data=with_normalization, \n",
" values='weight', \n",
" index='fact_id_from', \n",
" columns='fact_id_to'\n",
").round(4)"
]
},
{
"cell_type": "code",
"execution_count": 55,
"metadata": {},
"outputs": [],
"source": [
"without_normalization, _ = cs.project_selection_matrix(\n",
" selections=selections, \n",
" how='facts', \n",
" transaction_id='transaction_id', \n",
" fact_id='fact_id', \n",
" norm=False, \n",
" remove_loops=False, \n",
" symmetrize=False\n",
")"
]
},
{
"cell_type": "code",
"execution_count": 56,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" fact_id_to \n",
" 0 \n",
" 1 \n",
" 2 \n",
" 3 \n",
" 4 \n",
" 5 \n",
" 6 \n",
" 7 \n",
" 8 \n",
" \n",
" \n",
" fact_id_from \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" 1.0 \n",
" 1.0 \n",
" 1.0 \n",
" 1.0 \n",
" 1.0 \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" \n",
" \n",
" 1 \n",
" 1.0 \n",
" 1.0 \n",
" 1.0 \n",
" 1.0 \n",
" 1.0 \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" \n",
" \n",
" 2 \n",
" 1.0 \n",
" 1.0 \n",
" 2.0 \n",
" 2.0 \n",
" 2.0 \n",
" 1.0 \n",
" NaN \n",
" NaN \n",
" NaN \n",
" \n",
" \n",
" 3 \n",
" 1.0 \n",
" 1.0 \n",
" 2.0 \n",
" 2.0 \n",
" 2.0 \n",
" 1.0 \n",
" NaN \n",
" NaN \n",
" NaN \n",
" \n",
" \n",
" 4 \n",
" 1.0 \n",
" 1.0 \n",
" 2.0 \n",
" 2.0 \n",
" 3.0 \n",
" 2.0 \n",
" 1.0 \n",
" NaN \n",
" NaN \n",
" \n",
" \n",
" 5 \n",
" NaN \n",
" NaN \n",
" 1.0 \n",
" 1.0 \n",
" 2.0 \n",
" 2.0 \n",
" 1.0 \n",
" NaN \n",
" NaN \n",
" \n",
" \n",
" 6 \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" 1.0 \n",
" 1.0 \n",
" 2.0 \n",
" 1.0 \n",
" NaN \n",
" \n",
" \n",
" 7 \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" 1.0 \n",
" 1.0 \n",
" NaN \n",
" \n",
" \n",
" 8 \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" 1.0 \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
"fact_id_to 0 1 2 3 4 5 6 7 8\n",
"fact_id_from \n",
"0 1.0 1.0 1.0 1.0 1.0 NaN NaN NaN NaN\n",
"1 1.0 1.0 1.0 1.0 1.0 NaN NaN NaN NaN\n",
"2 1.0 1.0 2.0 2.0 2.0 1.0 NaN NaN NaN\n",
"3 1.0 1.0 2.0 2.0 2.0 1.0 NaN NaN NaN\n",
"4 1.0 1.0 2.0 2.0 3.0 2.0 1.0 NaN NaN\n",
"5 NaN NaN 1.0 1.0 2.0 2.0 1.0 NaN NaN\n",
"6 NaN NaN NaN NaN 1.0 1.0 2.0 1.0 NaN\n",
"7 NaN NaN NaN NaN NaN NaN 1.0 1.0 NaN\n",
"8 NaN NaN NaN NaN NaN NaN NaN NaN 1.0"
]
},
"execution_count": 56,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"pd.pivot_table(\n",
" data=without_normalization, \n",
" values='weight', \n",
" index='fact_id_from', \n",
" columns='fact_id_to'\n",
")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Multiplex data\n",
"As we have just seen, the weight of edges in meaning structures is intimately related to the number of transactions and the number of selections per transaction in a field. If we simply filter co-selections in a field (using weights or cumulative fractions), we may unwillingly punish a subfield that is not as voluminous or exhibits a different style of behavior as another subfield. For example, an academic field may harbor subfields of different size (different number of publications) and with different publication practices (different conventions of how many references to cite in a publication). In such cases, it is advised to use multiplex data, i.e., to use one network layer per subfield. These layers are the different **domains** of social life. Each domain has its own **type of tie**, but domains can – and typically do – overlap in terms of facts. It is a beauty of the matrix formalism that a mapping of transactions to domains translates to a separate type of tie per domain in the meaning structure (see figure 1).\n",
"\n",
"### Function\n",
"\n",
"The ``meaning_structures()`` function is a software wrapper around, i.e., it calls and does things in addition to, the ``project_selection_matrix()`` function that is tailored to creating multi-layer meaning structures (it is restricted to projecting selection matrices to the fact mode). The ``multiplex`` parameter decides if multi-layer fact matrices are created. If ``multiplex=True``, a ``transactions`` dataframe must be provided that maps a ``transaction_id`` to a ``domain_id``. Consult the description below for details, e.g., about outputs:"
]
},
{
"cell_type": "code",
"execution_count": 57,
"metadata": {},
"outputs": [],
"source": [
"def meaning_structures(\n",
" selections, \n",
" transaction_id, \n",
" fact_id, \n",
" multiplex=False, \n",
" transactions=None, \n",
" domain_id=None, \n",
" facts=None, \n",
" norm=True, \n",
" remove_loops=True, \n",
" symmetrize=True\n",
"):\n",
" '''\n",
" Description: Projects a selection matrix to (multiplex) co-selection matrix.\n",
" \n",
" Inputs:\n",
" selections: Dataframe containing the selection matrix indices and data; must \n",
" contain a 'weight' column that contains the cell weights.\n",
" transaction_id: Name of the column of the dataframe ``selections`` that holds the \n",
" identifiers of the transactions selecting facts.\n",
" fact_id: Name of the column of the dataframe ``selections`` that holds the \n",
" identifiers of the facts getting selected in transactions.\n",
" multiplex: Boolean parameter specifying if selections occurr in multiple domains; \n",
" set to False by default.\n",
" transactions: Dataframe containing the ``transaction_id`` identifiers of the \n",
" ``selections`` dataframe; must be specified if ``multiplex=True``; set to None \n",
" by default.\n",
" domain_id: Name of the column of the dataframe ``transactions`` that holds the \n",
" identifiers of the domains the transactions belong to; must be an integer from \n",
" 0 to d where d is the number of domains; must be specified if \n",
" ``multiplex=True``; set to None by default.\n",
" facts: Dataframe containing the ``fact_id`` identifiers of the ``selections`` \n",
" dataframe; if specified, it will be enriched by fact attributes; set to None \n",
" by default.\n",
" norm: Boolean parameter specifying if matrix normalization should be performed.\n",
" remove_loops: Boolean parameter specifying if the matrix diagonal should be \n",
" removed; if False, loops will be included in computing cumulative \n",
" co-selection fractions.\n",
" symmetrize: Boolean parameter specifying if the lower portion of the matrix \n",
" should be removed.\n",
" \n",
" Output: At least two dataframes will be returned: first, a dataframe containing the \n",
" co-selection matrix independent of domain; second, a dataframe containing fact \n",
" attributes (if no ``facts`` dataframe is provided), or an enriched ``facts`` \n",
" dataframe (if one is provided), independent of domain. When ``multiplex=True`` \n",
" two additional dataframes will be returned: third, a dataframe containing the \n",
" co-selection matrix for domains; fourth, a list of dataframes containing fact \n",
" attributes (if no ``facts`` dataframe is provided), or a list of enriched \n",
" ``facts`` dataframes (if a ``facts`` dataframe is provided), for domains.\n",
" '''\n",
" \n",
" if multiplex == True:\n",
" if transactions is None:\n",
" print('A transactions dataframe must be specified.')\n",
" else:\n",
" if domain_id is None:\n",
" print('The domain identifier for the transactions dataframe must be specified.')\n",
" else:\n",
" if domain_id not in transactions.columns:\n",
" print('The specified domain identifier is not a column in the transactions dataframe.')\n",
" else:\n",
" domain_ids = set(transactions[domain_id])\n",
" if (len(domain_ids) > 1) & (min(domain_ids) == 0) & (max(domain_ids) == len(domain_ids)-1):\n",
" \n",
" # co-selections and fact attributes dataframes independent of domain\n",
" co_selections, fact_attributes = project_selection_matrix(selections=selections, how='facts', transaction_id=transaction_id, fact_id=fact_id, norm=norm, remove_loops=remove_loops, symmetrize=symmetrize)\n",
" \n",
" # co-selections and fact attributes dataframes for domains\n",
" co_selections_domain = pd.DataFrame(columns=[fact_id+'_from', fact_id+'_to', 'weight', 'cumfrac', domain_id])\n",
" fact_attributes_domain = []\n",
" facts_enriched_domain = []\n",
" for identifier in set(transactions[domain_id]):\n",
" df = selections[selections[transaction_id].isin(transactions[transactions[domain_id] == identifier][transaction_id])]\n",
" df_co_selections, df_fact_attributes = project_selection_matrix(selections=df, how='facts', transaction_id=transaction_id, fact_id=fact_id, norm=norm, remove_loops=remove_loops, symmetrize=symmetrize)\n",
" df_co_selections[domain_id] = identifier\n",
" co_selections_domain = pd.concat([co_selections_domain, df_co_selections])\n",
" if facts is None:\n",
" fact_attributes_domain.append(df_fact_attributes)\n",
" else:\n",
" df_facts_enriched = pd.merge(left=facts, right=df_fact_attributes, on=fact_id, how='left')\n",
" facts_enriched_domain.append(df_facts_enriched)\n",
" co_selections_domain.reset_index(drop=True, inplace=True)\n",
" if facts is None:\n",
" return co_selections, fact_attributes, co_selections_domain, fact_attributes_domain\n",
" else:\n",
" facts_enriched = pd.merge(left=facts, right=fact_attributes, on=fact_id, how='left')\n",
" \n",
" return co_selections, facts_enriched, co_selections_domain, facts_enriched_domain\n",
" else:\n",
" print('The specified domain identifier does not contain multiple domains or domains are not coded as integers starting with zero.')\n",
" else:\n",
" \n",
" # co-selections and fact attributes dataframes independent of domain\n",
" co_selections, fact_attributes = project_selection_matrix(selections=selections, how='facts', transaction_id=transaction_id, fact_id=fact_id, norm=norm, remove_loops=remove_loops, symmetrize=symmetrize)\n",
" \n",
" if facts is None:\n",
" return co_selections, fact_attributes\n",
" else:\n",
" facts_enriched = pd.merge(left=facts, right=fact_attributes, on=fact_id, how='left')\n",
" \n",
" return co_selections, facts_enriched"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's see how node communities in transaction similarity graphs are mirrored in link communities (types of tie) in fact co-selection graphs. The `transactions` dataframe of the toy example contains the necessary mapping of `transaction_id` to `domain_id`. Since each transaction only belongs to a single domain, we spare the green \"Belong\" table in figure 2 and story the information in the `transactions` table. To use these domain identifiers for coloring nodes in transaction graphs using the `draw_graph()` function, we must create a dictionary that maps a `domain_id` to a color. [colorbrewer2.org](https://colorbrewer2.org/) is a great source of color advice for cartography. In our dictionary, we want the first domain to be colored in red and the second in blue:"
]
},
{
"cell_type": "code",
"execution_count": 58,
"metadata": {},
"outputs": [],
"source": [
"domain_color = {0: '#e41a1c', 1: '#377eb8'}"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"To draw the transaction graph, this dictionary is the color source for the nodes. Create a dictionary that maps a node to a color by using the `partition_to_vertex_property()` helper described [here](draw_graph.ipynb). The needed partition is the `domain_id` column of the `transactions` table:"
]
},
{
"cell_type": "code",
"execution_count": 59,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"{0: '#e41a1c', 1: '#e41a1c', 2: '#377eb8', 3: '#377eb8', 4: '#377eb8'}"
]
},
"execution_count": 59,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"node_color = cs.partition_to_vertex_property(transactions['domain_id'], {0: '#e41a1c', 1: '#377eb8'})\n",
"node_color"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Now we simply assign this dictionary to the `node_color` parameter of the `draw_graph()` function:"
]
},
{
"cell_type": "code",
"execution_count": 90,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"cs.draw_graph(\n",
" hn, \n",
" node_pos=nx.circular_layout(hn), \n",
" node_size_factor=.25, \n",
" node_color=node_color, \n",
" node_border_width=2, \n",
" edge_width_factor=50, \n",
" labels='text', \n",
" font_size_factor=2, \n",
" font_color='white', \n",
" figsize='small', \n",
" margins=.2\n",
")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"To draw the fact graph, the `domain_color` dictionary is the color source for the edges. We now call the ``meaning_structures()`` function to create a multiplex fact matrix. By setting `multiplex=True`, we specify that selections occurr in multiple domains and that one matrix is created per domain. With `domain_id='domain_id'` we set which column of the `transactions` dataframe contains the information which domain a transaction belongs to. Optionally, we specify the name of the `facts` entity table to enrich it. Note that, since we do not set the `norm` and `remove_loops` parameters, default values will be used, i.e., co-selections will be normalized and self-loops will be removed:"
]
},
{
"cell_type": "code",
"execution_count": 61,
"metadata": {},
"outputs": [],
"source": [
"co_selections, facts_enriched, co_selections_domain, facts_enriched_domain = cs.meaning_structures(\n",
" selections=selections, \n",
" transaction_id='transaction_id', \n",
" fact_id='fact_id', \n",
" multiplex=True, \n",
" transactions=transactions, \n",
" domain_id='domain_id', \n",
" facts=facts, \n",
" symmetrize=False\n",
")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The first two outputs are the edge and node lists when the domain information is not used, i.e., the first output is the singleplex edge list ..."
]
},
{
"cell_type": "code",
"execution_count": 62,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" fact_id_from \n",
" fact_id_to \n",
" weight \n",
" cumfrac \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" 0 \n",
" 1 \n",
" 0.2 \n",
" 1.0 \n",
" \n",
" \n",
" 1 \n",
" 0 \n",
" 2 \n",
" 0.2 \n",
" 1.0 \n",
" \n",
" \n",
" 2 \n",
" 0 \n",
" 3 \n",
" 0.2 \n",
" 1.0 \n",
" \n",
" \n",
" 3 \n",
" 0 \n",
" 4 \n",
" 0.2 \n",
" 1.0 \n",
" \n",
" \n",
" 4 \n",
" 1 \n",
" 0 \n",
" 0.2 \n",
" 1.0 \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" fact_id_from fact_id_to weight cumfrac\n",
"0 0 1 0.2 1.0\n",
"1 0 2 0.2 1.0\n",
"2 0 3 0.2 1.0\n",
"3 0 4 0.2 1.0\n",
"4 1 0 0.2 1.0"
]
},
"execution_count": 62,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"co_selections.head()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"... and the second output is the singleplex node list:"
]
},
{
"cell_type": "code",
"execution_count": 63,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" fact_id \n",
" fact \n",
" degree \n",
" weight \n",
" autocatalysis \n",
" embeddedness \n",
" sociability \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" 0 \n",
" 1 \n",
" 4 \n",
" 1.0 \n",
" 0.2000 \n",
" 0.8000 \n",
" 4.0 \n",
" \n",
" \n",
" 1 \n",
" 1 \n",
" 2 \n",
" 4 \n",
" 1.0 \n",
" 0.2000 \n",
" 0.8000 \n",
" 4.0 \n",
" \n",
" \n",
" 2 \n",
" 2 \n",
" 3 \n",
" 5 \n",
" 2.0 \n",
" 0.4500 \n",
" 0.7750 \n",
" 2.5 \n",
" \n",
" \n",
" 3 \n",
" 3 \n",
" 4 \n",
" 5 \n",
" 2.0 \n",
" 0.4500 \n",
" 0.7750 \n",
" 2.5 \n",
" \n",
" \n",
" 4 \n",
" 4 \n",
" 5 \n",
" 6 \n",
" 3.0 \n",
" 0.7833 \n",
" 0.7389 \n",
" 2.0 \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" fact_id fact degree weight autocatalysis embeddedness sociability\n",
"0 0 1 4 1.0 0.2000 0.8000 4.0\n",
"1 1 2 4 1.0 0.2000 0.8000 4.0\n",
"2 2 3 5 2.0 0.4500 0.7750 2.5\n",
"3 3 4 5 2.0 0.4500 0.7750 2.5\n",
"4 4 5 6 3.0 0.7833 0.7389 2.0"
]
},
"execution_count": 63,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"facts_enriched.head()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The last two outputs are the edge and node lists when the domain information is used, i.e., the third output is the multiplex edge list ..."
]
},
{
"cell_type": "code",
"execution_count": 64,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" fact_id_from \n",
" fact_id_to \n",
" weight \n",
" cumfrac \n",
" domain_id \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" 0 \n",
" 1 \n",
" 0.2 \n",
" 1.0 \n",
" 0 \n",
" \n",
" \n",
" 1 \n",
" 0 \n",
" 2 \n",
" 0.2 \n",
" 1.0 \n",
" 0 \n",
" \n",
" \n",
" 2 \n",
" 0 \n",
" 3 \n",
" 0.2 \n",
" 1.0 \n",
" 0 \n",
" \n",
" \n",
" 3 \n",
" 0 \n",
" 4 \n",
" 0.2 \n",
" 1.0 \n",
" 0 \n",
" \n",
" \n",
" 4 \n",
" 1 \n",
" 0 \n",
" 0.2 \n",
" 1.0 \n",
" 0 \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" fact_id_from fact_id_to weight cumfrac domain_id\n",
"0 0 1 0.2 1.0 0\n",
"1 0 2 0.2 1.0 0\n",
"2 0 3 0.2 1.0 0\n",
"3 0 4 0.2 1.0 0\n",
"4 1 0 0.2 1.0 0"
]
},
"execution_count": 64,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"co_selections_domain.head()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"... and the fourth output is list with one node list per domain:"
]
},
{
"cell_type": "code",
"execution_count": 65,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" fact_id \n",
" fact \n",
" degree \n",
" weight \n",
" autocatalysis \n",
" embeddedness \n",
" sociability \n",
" \n",
" \n",
" \n",
" \n",
" 4 \n",
" 4 \n",
" 5 \n",
" 5.0 \n",
" 2.0 \n",
" 0.45 \n",
" 0.775 \n",
" 2.5 \n",
" \n",
" \n",
" 5 \n",
" 5 \n",
" 6 \n",
" 3.0 \n",
" 1.0 \n",
" 0.25 \n",
" 0.750 \n",
" 3.0 \n",
" \n",
" \n",
" 6 \n",
" 6 \n",
" 7 \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" \n",
" \n",
" 7 \n",
" 7 \n",
" 8 \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" \n",
" \n",
" 8 \n",
" 8 \n",
" 9 \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" NaN \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" fact_id fact degree weight autocatalysis embeddedness sociability\n",
"4 4 5 5.0 2.0 0.45 0.775 2.5\n",
"5 5 6 3.0 1.0 0.25 0.750 3.0\n",
"6 6 7 NaN NaN NaN NaN NaN\n",
"7 7 8 NaN NaN NaN NaN NaN\n",
"8 8 9 NaN NaN NaN NaN NaN"
]
},
"execution_count": 65,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"facts_enriched_domain[0].tail()"
]
},
{
"cell_type": "code",
"execution_count": 66,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" fact_id \n",
" fact \n",
" degree \n",
" weight \n",
" autocatalysis \n",
" embeddedness \n",
" sociability \n",
" \n",
" \n",
" \n",
" \n",
" 4 \n",
" 4 \n",
" 5 \n",
" 2.0 \n",
" 1.0 \n",
" 0.3333 \n",
" 0.6667 \n",
" 2.0 \n",
" \n",
" \n",
" 5 \n",
" 5 \n",
" 6 \n",
" 2.0 \n",
" 1.0 \n",
" 0.3333 \n",
" 0.6667 \n",
" 2.0 \n",
" \n",
" \n",
" 6 \n",
" 6 \n",
" 7 \n",
" 3.0 \n",
" 2.0 \n",
" 0.8333 \n",
" 0.5834 \n",
" 1.5 \n",
" \n",
" \n",
" 7 \n",
" 7 \n",
" 8 \n",
" 1.0 \n",
" 1.0 \n",
" 0.5000 \n",
" 0.5000 \n",
" 1.0 \n",
" \n",
" \n",
" 8 \n",
" 8 \n",
" 9 \n",
" 0.0 \n",
" 1.0 \n",
" 1.0000 \n",
" 0.0000 \n",
" 0.0 \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" fact_id fact degree weight autocatalysis embeddedness sociability\n",
"4 4 5 2.0 1.0 0.3333 0.6667 2.0\n",
"5 5 6 2.0 1.0 0.3333 0.6667 2.0\n",
"6 6 7 3.0 2.0 0.8333 0.5834 1.5\n",
"7 7 8 1.0 1.0 0.5000 0.5000 1.0\n",
"8 8 9 0.0 1.0 1.0000 0.0000 0.0"
]
},
"execution_count": 66,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"facts_enriched_domain[1].tail()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"With these tables at hand, we can now construct the multiplex fact graph. As node list we use the original `facts` table; as edge list we use the multiplex `co_selections_domain` table. Note that the `edge_list` parameter needs the first four columns in the given order:"
]
},
{
"cell_type": "code",
"execution_count": 77,
"metadata": {},
"outputs": [],
"source": [
"in_domain = cs.construct_graph(\n",
" directed=True, \n",
" multiplex=True, \n",
" graph_name='IN_domain', \n",
" node_list=facts, \n",
" edge_list=co_selections_domain[['fact_id_from', 'fact_id_to', 'weight', 'domain_id']], \n",
" node_label='fact'\n",
")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Finally, we can draw the multiplex fact co-selection matrix:"
]
},
{
"cell_type": "code",
"execution_count": 78,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"cs.draw_graph(\n",
" in_domain, \n",
" node_pos=nx.circular_layout(in_domain), \n",
" node_size_factor=.25, \n",
" node_border_width=2, \n",
" edge_width_factor=25, \n",
" edge_transparency=.5, \n",
" curved_edges=True, \n",
" labels='text', \n",
" font_size_factor=2, \n",
" figsize='medium'\n",
")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Alternatively, when drawing graphs for individual domains, we can also use node attributes from the enriched `facts_domain` table:"
]
},
{
"cell_type": "code",
"execution_count": 179,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"for i in [0, 1]:\n",
" in_domain_i = cs.construct_graph(\n",
" directed=False, \n",
" multiplex=False, \n",
" graph_name='IN_domain_i', \n",
" node_list=facts, \n",
" edge_list=co_selections_domain[co_selections_domain['domain_id'] == i], \n",
" node_label='fact'\n",
" )\n",
" \n",
" node_autocatalysis = dict(facts_enriched_domain[i]['autocatalysis'])\n",
" \n",
" cs.draw_graph(\n",
" in_domain_i, \n",
" node_pos=nx.circular_layout(in_domain), \n",
" node_size=node_autocatalysis, \n",
" node_size_factor=2500, \n",
" node_border_width=2, \n",
" edge_width_factor=25, \n",
" edge_transparency=.5, \n",
" labels='text', \n",
" font_size=node_autocatalysis, \n",
" font_size_factor=50, \n",
" figsize='small', \n",
" margins=.2\n",
" )"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"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.8.3"
}
},
"nbformat": 4,
"nbformat_minor": 2
}