{ "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import os,sys,inspect\n", "currentdir = os.path.dirname(os.path.abspath(inspect.getfile(inspect.currentframe())))\n", "parentdir = os.path.dirname(currentdir)\n", "sys.path.insert(0,parentdir) " ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "from cipher.caesar import *\n", "from cipher.affine import *\n", "from cipher.keyword_cipher import *\n", "from cipher.vigenere import *\n", "from cipher.playfair import *\n", "from cipher.column_transposition import *\n", "from support.text_prettify import *\n", "from support.plot_frequency_histogram import *" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "# import logger as myl\n", "# import logging\n", "# myl.logger.setLevel(logging.DEBUG)\n", "# mylg = logging.getLogger('cipherbreak')\n", "import logging\n", "from logger import logger\n", "\n", "import re\n", "from datetime import datetime\n", "import pandas as pd\n", "import csv\n", "import matplotlib as mpl\n", "import matplotlib.pyplot as plt\n", "%matplotlib inline\n", "\n", "from scipy.stats import kendalltau" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "logger.setLevel(logging.DEBUG)" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "def commonest_alphabet(text):\n", " counts = collections.Counter(sanitise(text))\n", " letters = cat(p[0] for p in counts.most_common())\n", " return cat(deduplicate(letters + string.ascii_lowercase))" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": [ "def random_ciphertext(message_length):\n", " sample_start = random.randint(0, corpus_length - message_length)\n", " sample = corpus[sample_start:(sample_start + message_length)]\n", " key = list(string.ascii_lowercase)\n", " random.shuffle(key)\n", " key = cat(key)\n", " ciphertext = keyword_encipher(sample, key)\n", " return key, ciphertext" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [], "source": [ "def log_parse(text, verbose=False):\n", " parts = text.split(' - ')\n", " dt = datetime.strptime(parts[0], \"%Y-%m-%d %H:%M:%S,%f\")\n", " blurb = parts[-1]\n", " worker = int(re.search('worker (\\d+)', blurb).group(1))\n", " iteration = int(re.search('iteration (\\d+)', blurb).group(1))\n", " fitness = float(re.search('fitness (-?\\d+\\.\\d+)', blurb).group(1))\n", " if verbose:\n", " ca = re.search('current alphabet (\\w+)', blurb).group(1)\n", " pa = re.search('plain alphabet (\\w+)', blurb).group(1)\n", " mapped_ca = cat(p[1] for p in sorted(zip(pa, ca)))\n", " return {'time': dt, 'worker': worker, 'iteration': iteration, 'fitness': fitness, \n", " 'cipher_alphabet': ca, 'plain_alphabet': pa, 'mapped_cipher_alphabet': mapped_ca}\n", " else:\n", " return {'time': dt, 'worker': worker, 'iteration': iteration, 'fitness': fitness}" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [], "source": [ "# ps = [log_parse(line, verbose=True) for line in open('cipher.log').readlines()[:10]]\n", "# df = pd.DataFrame(ps)\n", "# df = df.set_index(['worker', 'iteration']).sort_index()\n", "# df[['fitness', 'plain_alphabet', 'cipher_alphabet']].to_csv('test.csv', header=True)\n" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [], "source": [ "def dump_result(starttime, filename, verbose=False, target_cipher_alphabet=''):\n", " parsed = [log_parse(line, verbose=verbose) for line in open('cipher.log')]\n", " trace = pd.DataFrame([p for p in parsed if p['time'] > starttime])\n", " trace = trace.set_index(['worker', 'iteration']).sort_index()\n", " trace['target_cipher_alphabet'] = target_cipher_alphabet\n", " workers = list(sorted(set(trace.index.get_level_values(0))))\n", " if verbose:\n", " trace[['fitness', 'plain_alphabet', 'cipher_alphabet', 'mapped_cipher_alphabet', 'target_cipher_alphabet']].to_csv(filename, header=True)\n", " else:\n", " trace.fitness.to_csv(filename, header=True)\n", " return workers, trace" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'etoainhsrdlumwycfgpbvkxjqz'" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "plain_alpha = cat(p[0] for p in english_counts.most_common())\n", "plain_alpha" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [], "source": [ "def unscramble_alphabet(cipher_alphabet, plain_alphabet):\n", " mapping = {p: c for p, c in zip(plain_alphabet, cipher_alphabet)}\n", " unscrambled = cat(mapping[p] for p in sorted(mapping))\n", " return unscrambled" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'theadventuresofsherl'" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# pt = sanitise(open('../2017/8b.plaintext').read())\n", "corpus = sanitise(open('../support/sherlock-holmes.txt').read())\n", "corpus_length = len(corpus)\n", "pt = corpus\n", "pt[:20]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Development" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "-542391.5369482826" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "Pletters(pt)" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "-1471429.4753165497" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "Ptrigrams(pt)" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'etaoihnsrdlumwcyfgpbvkxjqz'" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "commonest_alphabet(pt)" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "('sbyopakxntlewgimvfcduqrzhj',\n", " 'seirqinyprxncmpfporselmscdwpsg',\n", " 'alowvoicewhisperedwalkpastmean')" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "k, c = random_ciphertext(30)\n", "k, c, keyword_decipher(c, k)" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'yearningforrespiteth'" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pt = sanitise(open('../2017/8b.plaintext').read())\n", "pt[:20]" ] }, { "cell_type": "code", "execution_count": 40, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'qviaysynjpaaverswvwxvapciyeetjjvavzieziqewtayvzsywpfvvmeiyzfvvmesywpcpywxefswxgihnigteiyzwxvgihvzpys'" ] }, "execution_count": 40, "metadata": {}, "output_type": "execute_result" } ], "source": [ "ct_key = list(string.ascii_lowercase)\n", "random.shuffle(ct_key)\n", "ct_key = cat(ct_key)\n", "# ct = keyword_encipher(pt, 'arcanaimperii')\n", "ct = keyword_encipher(pt, ct_key)\n", "ct_alpha = commonest_alphabet(ct)\n", "ct[:100]" ] }, { "cell_type": "code", "execution_count": 50, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "('vwpisyxeazhtcfqgjnrokmldbu', -14681.308607565503)" ] }, "execution_count": 50, "metadata": {}, "output_type": "execute_result" } ], "source": [ "start_time = datetime.now()\n", "sa_cipher_alphabet, score = simulated_annealing_break(ct, plain_alphabet=plain_alpha, cipher_alphabet=ct_alpha)\n", "sa_cipher_alphabet, score" ] }, { "cell_type": "code", "execution_count": 51, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'iogzvjnxsdmhcyprbaewtkflqu'" ] }, "execution_count": 51, "metadata": {}, "output_type": "execute_result" } ], "source": [ "ct_key" ] }, { "cell_type": "code", "execution_count": 52, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'iogzvjnxsdmhcyprbaewtkflqu'" ] }, "execution_count": 52, "metadata": {}, "output_type": "execute_result" } ], "source": [ "cat(p[1] for p in sorted(zip(plain_alpha, sa_cipher_alphabet)))" ] }, { "cell_type": "code", "execution_count": 53, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'arcnimpebdfghjkloqstuvwxyz'" ] }, "execution_count": 53, "metadata": {}, "output_type": "execute_result" } ], "source": [ "keyword_cipher_alphabet_of('arcanaimperii')" ] }, { "cell_type": "code", "execution_count": 54, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "cipher.log old.cipher.log\n" ] } ], "source": [ "!ls *log" ] }, { "cell_type": "code", "execution_count": 55, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "['2019-10-28 09:59:14,978 - cipherbreak - DEBUG - Simulated annealing worker 2: iteration 0, temperature 200, current alphabet rjgzieptunyxodfsmbacqhkwvl, plain alphabet etoainhsrdlumwycfgpbvkxjqz, current_fitness -17464.568516864027, best_plaintext getsninycassehpioeoresamtnhhuccesedthdtghousnedino',\n", " '2019-10-28 09:59:14,978 - cipherbreak - DEBUG - Simulated annealing worker 8: iteration 0, temperature 200, current alphabet rjgzieptunyxocfsmbadqhkwvl, plain alphabet etoainhsrdlumwycfgpbvkxjqz, current_fitness -17394.10216261065, best_plaintext geosninycassehpitetresamonhhuccesedohdoghtusnedint',\n", " '2019-10-28 09:59:14,980 - cipherbreak - DEBUG - Simulated annealing worker 0: iteration 0, temperature 200, current alphabet rjgzieptunyxodcsmbafqhkwvl, plain alphabet etoainhsrdlumwycfgpbvkxjqz, current_fitness -17476.383874573305, best_plaintext geosninbcassehpitetresamonhhuccesedohdoghtusnedint',\n", " '2019-10-28 09:59:14,980 - cipherbreak - DEBUG - Simulated annealing worker 1: iteration 0, temperature 200, current alphabet rjgzieptunyxodfsmbacqhkwvl, plain alphabet etoainhsrdlumwycfgpbvkxjqz, current_fitness -17464.568516864027, best_plaintext geosninychsseapitetreshmonaauccesedoadogatusnedint',\n", " '2019-10-28 09:59:14,980 - cipherbreak - DEBUG - Simulated annealing worker 4: iteration 0, temperature 200, current alphabet rjgzieptunyxodfsmbacqhkwvl, plain alphabet etoainhsrdlumwycfgpbvkxjqz, current_fitness -17464.568516864027, best_plaintext geosninycassezpitetresamonzzuccesedozdogztusnedint']" ] }, "execution_count": 55, "metadata": {}, "output_type": "execute_result" } ], "source": [ "recs = open('cipher.log').read().splitlines()\n", "recs[:5]" ] }, { "cell_type": "code", "execution_count": 66, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{'time': datetime.datetime(2019, 10, 28, 9, 59, 14, 978000),\n", " 'worker': 2,\n", " 'iteration': 0,\n", " 'fitness': -17464.568516864027}" ] }, "execution_count": 66, "metadata": {}, "output_type": "execute_result" } ], "source": [ "log_parse(recs[0])" ] }, { "cell_type": "code", "execution_count": 57, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[{'time': datetime.datetime(2019, 10, 28, 9, 59, 14, 978000),\n", " 'worker': 2,\n", " 'iteration': 0,\n", " 'fitness': -17464.568516864027},\n", " {'time': datetime.datetime(2019, 10, 28, 9, 59, 14, 978000),\n", " 'worker': 8,\n", " 'iteration': 0,\n", " 'fitness': -17394.10216261065},\n", " {'time': datetime.datetime(2019, 10, 28, 9, 59, 14, 980000),\n", " 'worker': 0,\n", " 'iteration': 0,\n", " 'fitness': -17476.383874573305},\n", " {'time': datetime.datetime(2019, 10, 28, 9, 59, 14, 980000),\n", " 'worker': 1,\n", " 'iteration': 0,\n", " 'fitness': -17464.568516864027},\n", " {'time': datetime.datetime(2019, 10, 28, 9, 59, 14, 980000),\n", " 'worker': 4,\n", " 'iteration': 0,\n", " 'fitness': -17464.568516864027}]" ] }, "execution_count": 57, "metadata": {}, "output_type": "execute_result" } ], "source": [ "parsed = [log_parse(line) for line in open('cipher.log')]\n", "parsed[:5]" ] }, { "cell_type": "code", "execution_count": 58, "metadata": { "scrolled": true }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
fitnesstime
workeriteration
00-17464.5685172019-10-28 10:14:21.136
500-18531.6797622019-10-28 10:14:22.493
1000-20903.4871092019-10-28 10:14:23.787
1500-19941.5718072019-10-28 10:14:25.084
2000-18871.6998012019-10-28 10:14:26.133
2500-18847.2468762019-10-28 10:14:27.408
3000-19111.3861962019-10-28 10:14:28.707
3500-19693.4528172019-10-28 10:14:29.835
4000-18959.2891752019-10-28 10:14:31.228
4500-19040.5565832019-10-28 10:14:32.569
5000-18169.8123742019-10-28 10:14:33.891
5500-16657.8601232019-10-28 10:14:35.200
6000-16220.2684682019-10-28 10:14:36.485
6500-16472.9522742019-10-28 10:14:37.784
7000-17046.4189122019-10-28 10:14:39.054
7500-17320.8654892019-10-28 10:14:40.343
8000-16438.4134882019-10-28 10:14:41.622
8500-16116.7682422019-10-28 10:14:42.893
9000-16085.6599772019-10-28 10:14:44.167
9500-15679.5741712019-10-28 10:14:45.405
10000-16473.3254472019-10-28 10:14:46.650
10500-16421.0273872019-10-28 10:14:48.070
11000-16167.7521072019-10-28 10:14:49.371
11500-15213.0742622019-10-28 10:14:50.686
12000-15634.9793372019-10-28 10:14:51.967
12500-15296.3972972019-10-28 10:14:52.824
13000-15025.9835102019-10-28 10:14:53.881
13500-15175.9127502019-10-28 10:14:54.871
14000-15235.5137002019-10-28 10:14:56.119
14500-14923.5204622019-10-28 10:14:57.339
............
95000-19218.6449682019-10-28 10:14:34.337
5500-18770.8286222019-10-28 10:14:35.625
6000-18390.2331282019-10-28 10:14:36.920
6500-17361.5472112019-10-28 10:14:38.208
7000-16846.1134902019-10-28 10:14:39.501
7500-15002.3181652019-10-28 10:14:40.762
8000-16992.7809322019-10-28 10:14:41.757
8500-17115.2422952019-10-28 10:14:43.037
9000-17297.0124372019-10-28 10:14:44.327
9500-16511.9484052019-10-28 10:14:45.552
10000-16175.0591782019-10-28 10:14:46.828
10500-15482.7111952019-10-28 10:14:48.096
11000-15190.3597822019-10-28 10:14:49.376
11500-15776.6678962019-10-28 10:14:50.523
12000-15112.7983872019-10-28 10:14:51.327
12500-15539.2671692019-10-28 10:14:52.194
13000-15209.9379302019-10-28 10:14:52.907
13500-14917.8337322019-10-28 10:14:53.804
14000-14822.0680932019-10-28 10:14:54.706
14500-14996.7725832019-10-28 10:14:55.742
15000-14818.3840232019-10-28 10:14:57.001
15500-14698.8649822019-10-28 10:14:58.250
16000-14689.8415592019-10-28 10:14:59.546
16500-14698.8649822019-10-28 10:15:00.651
17000-14681.3086082019-10-28 10:15:01.702
17500-14681.3086082019-10-28 10:15:02.920
18000-14681.3086082019-10-28 10:15:04.255
18500-14681.3086082019-10-28 10:15:05.523
19000-14681.3086082019-10-28 10:15:06.791
19500-14681.3086082019-10-28 10:15:08.055
\n", "

400 rows × 2 columns

\n", "
" ], "text/plain": [ " fitness time\n", "worker iteration \n", "0 0 -17464.568517 2019-10-28 10:14:21.136\n", " 500 -18531.679762 2019-10-28 10:14:22.493\n", " 1000 -20903.487109 2019-10-28 10:14:23.787\n", " 1500 -19941.571807 2019-10-28 10:14:25.084\n", " 2000 -18871.699801 2019-10-28 10:14:26.133\n", " 2500 -18847.246876 2019-10-28 10:14:27.408\n", " 3000 -19111.386196 2019-10-28 10:14:28.707\n", " 3500 -19693.452817 2019-10-28 10:14:29.835\n", " 4000 -18959.289175 2019-10-28 10:14:31.228\n", " 4500 -19040.556583 2019-10-28 10:14:32.569\n", " 5000 -18169.812374 2019-10-28 10:14:33.891\n", " 5500 -16657.860123 2019-10-28 10:14:35.200\n", " 6000 -16220.268468 2019-10-28 10:14:36.485\n", " 6500 -16472.952274 2019-10-28 10:14:37.784\n", " 7000 -17046.418912 2019-10-28 10:14:39.054\n", " 7500 -17320.865489 2019-10-28 10:14:40.343\n", " 8000 -16438.413488 2019-10-28 10:14:41.622\n", " 8500 -16116.768242 2019-10-28 10:14:42.893\n", " 9000 -16085.659977 2019-10-28 10:14:44.167\n", " 9500 -15679.574171 2019-10-28 10:14:45.405\n", " 10000 -16473.325447 2019-10-28 10:14:46.650\n", " 10500 -16421.027387 2019-10-28 10:14:48.070\n", " 11000 -16167.752107 2019-10-28 10:14:49.371\n", " 11500 -15213.074262 2019-10-28 10:14:50.686\n", " 12000 -15634.979337 2019-10-28 10:14:51.967\n", " 12500 -15296.397297 2019-10-28 10:14:52.824\n", " 13000 -15025.983510 2019-10-28 10:14:53.881\n", " 13500 -15175.912750 2019-10-28 10:14:54.871\n", " 14000 -15235.513700 2019-10-28 10:14:56.119\n", " 14500 -14923.520462 2019-10-28 10:14:57.339\n", "... ... ...\n", "9 5000 -19218.644968 2019-10-28 10:14:34.337\n", " 5500 -18770.828622 2019-10-28 10:14:35.625\n", " 6000 -18390.233128 2019-10-28 10:14:36.920\n", " 6500 -17361.547211 2019-10-28 10:14:38.208\n", " 7000 -16846.113490 2019-10-28 10:14:39.501\n", " 7500 -15002.318165 2019-10-28 10:14:40.762\n", " 8000 -16992.780932 2019-10-28 10:14:41.757\n", " 8500 -17115.242295 2019-10-28 10:14:43.037\n", " 9000 -17297.012437 2019-10-28 10:14:44.327\n", " 9500 -16511.948405 2019-10-28 10:14:45.552\n", " 10000 -16175.059178 2019-10-28 10:14:46.828\n", " 10500 -15482.711195 2019-10-28 10:14:48.096\n", " 11000 -15190.359782 2019-10-28 10:14:49.376\n", " 11500 -15776.667896 2019-10-28 10:14:50.523\n", " 12000 -15112.798387 2019-10-28 10:14:51.327\n", " 12500 -15539.267169 2019-10-28 10:14:52.194\n", " 13000 -15209.937930 2019-10-28 10:14:52.907\n", " 13500 -14917.833732 2019-10-28 10:14:53.804\n", " 14000 -14822.068093 2019-10-28 10:14:54.706\n", " 14500 -14996.772583 2019-10-28 10:14:55.742\n", " 15000 -14818.384023 2019-10-28 10:14:57.001\n", " 15500 -14698.864982 2019-10-28 10:14:58.250\n", " 16000 -14689.841559 2019-10-28 10:14:59.546\n", " 16500 -14698.864982 2019-10-28 10:15:00.651\n", " 17000 -14681.308608 2019-10-28 10:15:01.702\n", " 17500 -14681.308608 2019-10-28 10:15:02.920\n", " 18000 -14681.308608 2019-10-28 10:15:04.255\n", " 18500 -14681.308608 2019-10-28 10:15:05.523\n", " 19000 -14681.308608 2019-10-28 10:15:06.791\n", " 19500 -14681.308608 2019-10-28 10:15:08.055\n", "\n", "[400 rows x 2 columns]" ] }, "execution_count": 58, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# threshold = datetime(2018, 12, 6, 1)\n", "trace = pd.DataFrame([p for p in parsed if p['time'] > start_time])\n", "trace = trace.set_index(['worker', 'iteration']).sort_index()\n", "trace" ] }, { "cell_type": "code", "execution_count": 59, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 59, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "trace.loc[0].fitness.plot()" ] }, { "cell_type": "code", "execution_count": 60, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]" ] }, "execution_count": 60, "metadata": {}, "output_type": "execute_result" } ], "source": [ "workers = list(sorted(set(trace.index.get_level_values(0))))\n", "workers" ] }, { "cell_type": "code", "execution_count": 61, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "fig, ax = plt.subplots()\n", "for w in workers:\n", " trace.loc[w].fitness.plot(ax=ax, color='#00000020')\n", "# trace2.loc[w].fitness.plot(ax=ax, color='#00000020')" ] }, { "cell_type": "code", "execution_count": 67, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "([0, 1, 2, 3, 4, 5, 6, 7, 8, 9],\n", " cipher_alphabet fitness \\\n", " worker iteration \n", " 0 0 vwipsyeaxzhtcgnjfqrkomlbdu -17464.568517 \n", " 500 veishcowyqapntgjkzxlfrbmud -18531.679762 \n", " 1000 eipyvanfzdotkswqcxrugjhmbl -20903.487109 \n", " 1500 vogicqjwyahpsfzxenutkmldbr -19941.571807 \n", " 2000 vypiczksxwhenrdatfjgqlobmu -18871.699801 \n", " 2500 vwsiaexrybzpfuhqjgtmlnckod -18847.246876 \n", " 3000 vwpsienacxzfbjudtqyholgmrk -19111.386196 \n", " 3500 xyvsiecalghpzkutbofwnjdqrm -19693.452817 \n", " 4000 iptvweayszhfnqjcuxrgbkomdl -18959.289175 \n", " 4500 tyivpenshxcqzrfagwkjdbuolm -19040.556583 \n", " 5000 pwivsjmyafxterockhznqlbgdu -18169.812374 \n", " 5500 vwpisyxaogetcuqznrjhfdlkbm -16657.860123 \n", " 6000 vwpisyxzajhtcfgeunobqmrdlk -16220.268468 \n", " 6500 vwpisyxeamztgfcnjhbukqrold -16472.952274 \n", " 7000 vwpisyxqarhuznoejtgclfkbdm -17046.418912 \n", " 7500 vwipszxeanyqculgtrhfmkbjod -17320.865489 \n", " 8000 vwpisyxzaectjnkgfhqmrolbud -16438.413488 \n", " 8500 vwpisyxegzathorcfnjluqkmdb -16116.768242 \n", " 9000 vwpisaxeyzhtfoqgrncljkumdb -16085.659977 \n", " 9500 vwpisyxeazhtqjkgcnmrfobdlu -15679.574171 \n", " 10000 vwpisyxeazothrclfkjnmgqdub -16473.325447 \n", " 10500 vwpisyxeazdtkglhjfcnqubrom -16421.027387 \n", " 11000 vwpsiyxeaqzthfdgjnrocmukbl -16167.752107 \n", " 11500 vwpisyxeazhtmfqcjngokudlbr -15213.074262 \n", " 12000 vwpisyxeazhtljrgfncokbmqud -15634.979337 \n", " 12500 vwpisyxeazhtclqfjnmgkruodb -15296.397297 \n", " 13000 vwpisyxeazhtcfqgonrjkmbdlu -15025.983510 \n", " 13500 vwpisyxeazhtcqmgjnfokrbudl -15175.912750 \n", " 14000 vwpisyxeazhtckogjnqfrmbudl -15235.513700 \n", " 14500 vwpisyxeazhtcfqgjnbokmlrdu -14923.520462 \n", " ... ... ... \n", " 9 5000 jwsviuxegkatyrnzdhpoflcmbq -19218.644968 \n", " 5500 icspvagyxwebqfomjtzhdnrluk -18770.828622 \n", " 6000 pesviynazwhtmbdqgjkfxrcuol -18390.233128 \n", " 6500 vwpisjxzadhtygqmeknfrculbo -17361.547211 \n", " 7000 vhpisyxwazktejugnqfrclmdob -16846.113490 \n", " 7500 vwpisyxeazhtcfqgrnjobklmud -15002.318165 \n", " 8000 iwspvyxehnatgojzlkqfcbmdur -16992.780932 \n", " 8500 vwpisyxcegqtablnfzhkjdorum -17115.242295 \n", " 9000 vwspiexyhzatlrjfnkcqgdboum -17297.012437 \n", " 9500 vwpisyxzeahtcrfnjdgkqoubml -16511.948405 \n", " 10000 vwpisyxeazhtclbrjugqdnkfom -16175.059178 \n", " 10500 vwpisyxeazhturqgjfcnkodmbl -15482.711195 \n", " 11000 vwpisyxeazhtcrmgjnkofqlubd -15190.359782 \n", " 11500 vwpisyxeazrtmfhcjngqkdlbuo -15776.667896 \n", " 12000 vwpisyxeazhtfmqgjncokrdblu -15112.798387 \n", " 12500 vwpisyxeazhtqkogfnjcurdlbm -15539.267169 \n", " 13000 vwpisyxeazhtmfqcjngordlbuk -15209.937930 \n", " 13500 vwpisyxeazhtcfqgjnlokrumdb -14917.833732 \n", " 14000 vwpisyxeazhtcfqgjnrokumdbl -14822.068093 \n", " 14500 vwpisyxeazhtofqgjncrkulmbd -14996.772583 \n", " 15000 vwpisyxeazhtcfqgrnjokmludb -14818.384023 \n", " 15500 vwpisyxeazhtcfqgjnrokmldub -14698.864982 \n", " 16000 vwpisyxeazhtcfqgjnrokmlubd -14689.841559 \n", " 16500 vwpisyxeazhtcfqgjnrokmldub -14698.864982 \n", " 17000 vwpisyxeazhtcfqgjnrokmldbu -14681.308608 \n", " 17500 vwpisyxeazhtcfqgjnrokmldbu -14681.308608 \n", " 18000 vwpisyxeazhtcfqgjnrokmldbu -14681.308608 \n", " 18500 vwpisyxeazhtcfqgjnrokmldbu -14681.308608 \n", " 19000 vwpisyxeazhtcfqgjnrokmldbu -14681.308608 \n", " 19500 vwpisyxeazhtcfqgjnrokmldbu -14681.308608 \n", " \n", " mapped_cipher_alphabet plain_alphabet \\\n", " worker iteration \n", " 0 0 pkjzvfqesbmhcyirdxawtoglnu etoainhsrdlumwycfgpbvkxjqz \n", " 500 sljqvkzohmrancixuywepftbgd etoainhsrdlumwycfgpbvkxjqz \n", " 1000 yuqdecxnvmjokaprbzfitgshwl etoainhsrdlumwycfgpbvkxjqz \n", " 1500 itxavenjcdmhsqgubywopkflzr etoainhsrdlumwycfgpbvkxjqz \n", " 2000 igawvtfkcblhnzpjmxsyeqrodu etoainhsrdlumwycfgpbvkxjqz \n", " 2500 imqbvjgxaknzfestoyrwpluchd etoainhsrdlumwycfgpbvkxjqz \n", " 3000 shdxvtqnimlzbepyrcawfojguk etoainhsrdlumwycfgpbvkxjqz \n", " 3500 swtgxbociqjhzevfrlaypnkdum etoainhsrdlumwycfgpbvkxjqz \n", " 4000 vgcziuxawmkhnetrdsypfbqojl etoainhsrdlumwycfgpbvkxjqz \n", " 4500 vjaxtgwnpobczeiklhsyqdrufm etoainhsrdlumwycfgpbvkxjqz \n", " 5000 vncfpkhmsglxejizdaywtqrbou etoainhsrdlumwycfgpbvkxjqz \n", " 5500 ihzgvnrxskdecypjboawtfulqm etoainhsrdlumwycfgpbvkxjqz \n", " 6000 ibejvunxsdmhcypolazwtqfrgk etoainhsrdlumwycfgpbvkxjqz \n", " 6500 iunmvjhxsoqzgypblaewtkfrcd etoainhsrdlumwycfgpbvkxjqz \n", " 7000 icervjtxsbfhzypgdaqwulnkom etoainhsrdlumwycfgpbvkxjqz \n", " 7500 pfgnvtrxsjkyczihoaewqmubld etoainhsrdlumwycfgpbvkxjqz \n", " 8000 imgevfhxsbocjypquazwtrnlkd etoainhsrdlumwycfgpbvkxjqz \n", " 8500 ilczvfnxsmqahypjdgewtuokrb etoainhsrdlumwycfgpbvkxjqz \n", " 9000 ilgzvrnxsmkhfapcdyewtjouqb etoainhsrdlumwycfgpbvkxjqz \n", " 9500 irgzvcnxsdohqypmlaewtfjbku etoainhsrdlumwycfgpbvkxjqz \n", " 10000 inlzvfkxsdgohypjuaewtmrqcb etoainhsrdlumwycfgpbvkxjqz \n", " 10500 inhzvjfxsrudkypcoaewtqgblm etoainhsrdlumwycfgpbvkxjqz \n", " 11000 sogqvjnxikmzhyprbaewtcfudl etoainhsrdlumwycfgpbvkxjqz \n", " 11500 ioczvjnxsluhmypgbaewtkfdqr etoainhsrdlumwycfgpbvkxjqz \n", " 12000 iogzvfnxsqbhlypcuaewtkjmrd etoainhsrdlumwycfgpbvkxjqz \n", " 12500 igfzvjnxsorhcypmdaewtkluqb etoainhsrdlumwycfgpbvkxjqz \n", " 13000 ijgzvonxsdmhcyprlaewtkfbqu etoainhsrdlumwycfgpbvkxjqz \n", " 13500 iogzvjnxsurhcypfdaewtkqbml etoainhsrdlumwycfgpbvkxjqz \n", " 14000 ifgzvjnxsumhcypqdaewtrkbol etoainhsrdlumwycfgpbvkxjqz \n", " 14500 iogzvjnxsrmhcypbdaewtkflqu etoainhsrdlumwycfgpbvkxjqz \n", " ... ... ... \n", " 9 5000 vozkjdhximlayuspbgewtfrcnq etoainhsrdlumwycfgpbvkxjqz \n", " 5500 phmwijtgvlneqaszuxycbdfrok etoainhsrdlumwycfgpbvkxjqz \n", " 6000 vfqwpgjniurhmyskozaetxbcdl etoainhsrdlumwycfgpbvkxjqz \n", " 6500 ifmdvekxslchyjpnbazwtrguqo etoainhsrdlumwycfgpbvkxjqz \n", " 7000 irgzvnqxsdlkeypfoawhtcjmub etoainhsrdlumwycfgpbvkxjqz \n", " 7500 iogzvrnxsmkhcypjuaewtbflqd etoainhsrdlumwycfgpbvkxjqz \n", " 8000 pfznilkxvdbagysquhewtcomjr etoainhsrdlumwycfgpbvkxjqz \n", " 8500 ikngvfzxsrdqayphuecwtjbolm etoainhsrdlumwycfgpbvkxjqz \n", " 9000 pqfzvnkxiodalescuhywtgrbjm etoainhsrdlumwycfgpbvkxjqz \n", " 9500 iknavjdxsbohcypgmezwtqrufl etoainhsrdlumwycfgpbvkxjqz \n", " 10000 iqrzvjuxsfnhcypgoaewtdlkbm etoainhsrdlumwycfgpbvkxjqz \n", " 10500 ingzvjfxsmohuypcbaewtkrdql etoainhsrdlumwycfgpbvkxjqz \n", " 11000 iogzvjnxsuqhcypkbaewtfrlmd etoainhsrdlumwycfgpbvkxjqz \n", " 11500 iqczvjnxsbdrmypguaewtkflho etoainhsrdlumwycfgpbvkxjqz \n", " 12000 iogzvjnxsbrhfypclaewtkmdqu etoainhsrdlumwycfgpbvkxjqz \n", " 12500 icgzvfnxslrhqypjbaewtukdom etoainhsrdlumwycfgpbvkxjqz \n", " 13000 ioczvjnxsbdhmypguaewtrflqk etoainhsrdlumwycfgpbvkxjqz \n", " 13500 iogzvjnxsmrhcypldaewtkfuqb etoainhsrdlumwycfgpbvkxjqz \n", " 14000 iogzvjnxsduhcyprbaewtkfmql etoainhsrdlumwycfgpbvkxjqz \n", " 14500 irgzvjnxsmuhoypcbaewtkflqd etoainhsrdlumwycfgpbvkxjqz \n", " 15000 iogzvrnxsumhcypjdaewtkflqb etoainhsrdlumwycfgpbvkxjqz \n", " 15500 iogzvjnxsdmhcypruaewtkflqb etoainhsrdlumwycfgpbvkxjqz \n", " 16000 iogzvjnxsumhcyprbaewtkflqd etoainhsrdlumwycfgpbvkxjqz \n", " 16500 iogzvjnxsdmhcypruaewtkflqb etoainhsrdlumwycfgpbvkxjqz \n", " 17000 iogzvjnxsdmhcyprbaewtkflqu etoainhsrdlumwycfgpbvkxjqz \n", " 17500 iogzvjnxsdmhcyprbaewtkflqu etoainhsrdlumwycfgpbvkxjqz \n", " 18000 iogzvjnxsdmhcyprbaewtkflqu etoainhsrdlumwycfgpbvkxjqz \n", " 18500 iogzvjnxsdmhcyprbaewtkflqu etoainhsrdlumwycfgpbvkxjqz \n", " 19000 iogzvjnxsdmhcyprbaewtkflqu etoainhsrdlumwycfgpbvkxjqz \n", " 19500 iogzvjnxsdmhcyprbaewtkflqu etoainhsrdlumwycfgpbvkxjqz \n", " \n", " time target_cipher_alphabet \n", " worker iteration \n", " 0 0 2019-10-28 10:14:21.136 iogzvjnxsdmhcyprbaewtkflqu \n", " 500 2019-10-28 10:14:22.493 iogzvjnxsdmhcyprbaewtkflqu \n", " 1000 2019-10-28 10:14:23.787 iogzvjnxsdmhcyprbaewtkflqu \n", " 1500 2019-10-28 10:14:25.084 iogzvjnxsdmhcyprbaewtkflqu \n", " 2000 2019-10-28 10:14:26.133 iogzvjnxsdmhcyprbaewtkflqu \n", " 2500 2019-10-28 10:14:27.408 iogzvjnxsdmhcyprbaewtkflqu \n", " 3000 2019-10-28 10:14:28.707 iogzvjnxsdmhcyprbaewtkflqu \n", " 3500 2019-10-28 10:14:29.835 iogzvjnxsdmhcyprbaewtkflqu \n", " 4000 2019-10-28 10:14:31.228 iogzvjnxsdmhcyprbaewtkflqu \n", " 4500 2019-10-28 10:14:32.569 iogzvjnxsdmhcyprbaewtkflqu \n", " 5000 2019-10-28 10:14:33.891 iogzvjnxsdmhcyprbaewtkflqu \n", " 5500 2019-10-28 10:14:35.200 iogzvjnxsdmhcyprbaewtkflqu \n", " 6000 2019-10-28 10:14:36.485 iogzvjnxsdmhcyprbaewtkflqu \n", " 6500 2019-10-28 10:14:37.784 iogzvjnxsdmhcyprbaewtkflqu \n", " 7000 2019-10-28 10:14:39.054 iogzvjnxsdmhcyprbaewtkflqu \n", " 7500 2019-10-28 10:14:40.343 iogzvjnxsdmhcyprbaewtkflqu \n", " 8000 2019-10-28 10:14:41.622 iogzvjnxsdmhcyprbaewtkflqu \n", " 8500 2019-10-28 10:14:42.893 iogzvjnxsdmhcyprbaewtkflqu \n", " 9000 2019-10-28 10:14:44.167 iogzvjnxsdmhcyprbaewtkflqu \n", " 9500 2019-10-28 10:14:45.405 iogzvjnxsdmhcyprbaewtkflqu \n", " 10000 2019-10-28 10:14:46.650 iogzvjnxsdmhcyprbaewtkflqu \n", " 10500 2019-10-28 10:14:48.070 iogzvjnxsdmhcyprbaewtkflqu \n", " 11000 2019-10-28 10:14:49.371 iogzvjnxsdmhcyprbaewtkflqu \n", " 11500 2019-10-28 10:14:50.686 iogzvjnxsdmhcyprbaewtkflqu \n", " 12000 2019-10-28 10:14:51.967 iogzvjnxsdmhcyprbaewtkflqu \n", " 12500 2019-10-28 10:14:52.824 iogzvjnxsdmhcyprbaewtkflqu \n", " 13000 2019-10-28 10:14:53.881 iogzvjnxsdmhcyprbaewtkflqu \n", " 13500 2019-10-28 10:14:54.871 iogzvjnxsdmhcyprbaewtkflqu \n", " 14000 2019-10-28 10:14:56.119 iogzvjnxsdmhcyprbaewtkflqu \n", " 14500 2019-10-28 10:14:57.339 iogzvjnxsdmhcyprbaewtkflqu \n", " ... ... ... \n", " 9 5000 2019-10-28 10:14:34.337 iogzvjnxsdmhcyprbaewtkflqu \n", " 5500 2019-10-28 10:14:35.625 iogzvjnxsdmhcyprbaewtkflqu \n", " 6000 2019-10-28 10:14:36.920 iogzvjnxsdmhcyprbaewtkflqu \n", " 6500 2019-10-28 10:14:38.208 iogzvjnxsdmhcyprbaewtkflqu \n", " 7000 2019-10-28 10:14:39.501 iogzvjnxsdmhcyprbaewtkflqu \n", " 7500 2019-10-28 10:14:40.762 iogzvjnxsdmhcyprbaewtkflqu \n", " 8000 2019-10-28 10:14:41.757 iogzvjnxsdmhcyprbaewtkflqu \n", " 8500 2019-10-28 10:14:43.037 iogzvjnxsdmhcyprbaewtkflqu \n", " 9000 2019-10-28 10:14:44.327 iogzvjnxsdmhcyprbaewtkflqu \n", " 9500 2019-10-28 10:14:45.552 iogzvjnxsdmhcyprbaewtkflqu \n", " 10000 2019-10-28 10:14:46.828 iogzvjnxsdmhcyprbaewtkflqu \n", " 10500 2019-10-28 10:14:48.096 iogzvjnxsdmhcyprbaewtkflqu \n", " 11000 2019-10-28 10:14:49.376 iogzvjnxsdmhcyprbaewtkflqu \n", " 11500 2019-10-28 10:14:50.523 iogzvjnxsdmhcyprbaewtkflqu \n", " 12000 2019-10-28 10:14:51.327 iogzvjnxsdmhcyprbaewtkflqu \n", " 12500 2019-10-28 10:14:52.194 iogzvjnxsdmhcyprbaewtkflqu \n", " 13000 2019-10-28 10:14:52.907 iogzvjnxsdmhcyprbaewtkflqu \n", " 13500 2019-10-28 10:14:53.804 iogzvjnxsdmhcyprbaewtkflqu \n", " 14000 2019-10-28 10:14:54.706 iogzvjnxsdmhcyprbaewtkflqu \n", " 14500 2019-10-28 10:14:55.742 iogzvjnxsdmhcyprbaewtkflqu \n", " 15000 2019-10-28 10:14:57.001 iogzvjnxsdmhcyprbaewtkflqu \n", " 15500 2019-10-28 10:14:58.250 iogzvjnxsdmhcyprbaewtkflqu \n", " 16000 2019-10-28 10:14:59.546 iogzvjnxsdmhcyprbaewtkflqu \n", " 16500 2019-10-28 10:15:00.651 iogzvjnxsdmhcyprbaewtkflqu \n", " 17000 2019-10-28 10:15:01.702 iogzvjnxsdmhcyprbaewtkflqu \n", " 17500 2019-10-28 10:15:02.920 iogzvjnxsdmhcyprbaewtkflqu \n", " 18000 2019-10-28 10:15:04.255 iogzvjnxsdmhcyprbaewtkflqu \n", " 18500 2019-10-28 10:15:05.523 iogzvjnxsdmhcyprbaewtkflqu \n", " 19000 2019-10-28 10:15:06.791 iogzvjnxsdmhcyprbaewtkflqu \n", " 19500 2019-10-28 10:15:08.055 iogzvjnxsdmhcyprbaewtkflqu \n", " \n", " [400 rows x 6 columns])" ] }, "execution_count": 67, "metadata": {}, "output_type": "execute_result" } ], "source": [ "dump_result(start_time, 'test.csv', verbose=True, target_cipher_alphabet=ct_key)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Experiments" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[('f', 24), ('w', 12), ('h', 3), ('z', 1), ('b', 1)]" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "ct_key, ct = random_ciphertext(2000)\n", "ct_alpha = commonest_alphabet(ct)\n", "collections.Counter(sanitise(ct)).most_common()[-5:]" ] }, { "cell_type": "code", "execution_count": 71, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "-6794.348261349827\n" ] }, { "data": { "text/plain": [ "('qkicfaygbnweojuxhptlsvrdmz',\n", " 'fluqbjgtpcesormiayxkvwdnhz',\n", " 'qkicfaygbnweojuxhptlsvrdmz',\n", " 1.0)" ] }, "execution_count": 71, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "start_time = datetime.now()\n", "found_cipher_alphabet, score = simulated_annealing_break(\n", " ct, \n", " fitness=Ptrigrams,\n", " swap_index_finder=gaussian_swap_index,\n", " plain_alphabet=plain_alpha, cipher_alphabet=ct_alpha,\n", " workers=24)\n", "print(score)\n", "# workers, trace = dump_result(start_time, 'sa-given-trigram-gaussian.csv', verbose=True)\n", "workers, trace = dump_result(start_time, 'test.csv', verbose=True, target_cipher_alphabet=ct_key)\n", "\n", "fig, ax = plt.subplots()\n", "for w in workers:\n", " trace.loc[w].fitness.plot(ax=ax, color='#00000020')\n", "\n", "( ct_key, found_cipher_alphabet, \n", " unscramble_alphabet(found_cipher_alphabet, plain_alpha), \n", " kendalltau([ord(c) for c in unscramble_alphabet(found_cipher_alphabet, plain_alpha)], [ord(c) for c in ct_key])[0]\n", ")" ] }, { "cell_type": "code", "execution_count": 72, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "-2516.00992398943\n" ] }, { "data": { "text/plain": [ "('qkicfaygbnweojuxhptlsvrdmz',\n", " 'bkrefavguhwcstlxnpjqiyodmz',\n", " 0.4338461538461538)" ] }, "execution_count": 72, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "start_time = datetime.now()\n", "found_cipher_alphabet, score = monoalphabetic_break_hillclimbing_mp(\n", " ct, \n", " swap_index_finder=uniform_swap_index, \n", " workers=24)\n", "print(score)\n", "workers, trace = dump_result(start_time, 'hillclimbing-random-unigram-uniform.csv', verbose=True, target_cipher_alphabet=ct_key)\n", "\n", "fig, ax = plt.subplots()\n", "for w in workers:\n", " trace.loc[w].fitness.plot(ax=ax, color='#00000020')\n", "\n", "ct_key, found_cipher_alphabet, kendalltau([ord(c) for c in found_cipher_alphabet], [ord(c) for c in ct_key])[0]" ] }, { "cell_type": "code", "execution_count": 73, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "-6794.348261349827\n" ] }, { "data": { "text/plain": [ "('qkicfaygbnweojuxhptlsvrdmz', 'qkicfaygbnweojuxhptlsvrdmz', 1.0)" ] }, "execution_count": 73, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "start_time = datetime.now()\n", "found_cipher_alphabet, score = monoalphabetic_break_hillclimbing_mp(\n", " ct, \n", " fitness=Ptrigrams,\n", " swap_index_finder=uniform_swap_index, \n", " workers=24)\n", "print(score)\n", "workers, trace = dump_result(start_time, 'hillclimbing-random-trigram-uniform.csv', verbose=True, target_cipher_alphabet=ct_key)\n", "\n", "fig, ax = plt.subplots()\n", "for w in workers:\n", " trace.loc[w].fitness.plot(ax=ax, color='#00000020')\n", "\n", "ct_key, found_cipher_alphabet, kendalltau([ord(c) for c in found_cipher_alphabet], [ord(c) for c in ct_key])[0] " ] }, { "cell_type": "code", "execution_count": 74, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "-6794.348261349827\n" ] }, { "data": { "text/plain": [ "('qkicfaygbnweojuxhptlsvrdmz',\n", " 'fluqbjgtpcesormiayxkvwdnhz',\n", " 'qkicfaygbnweojuxhptlsvrdmz',\n", " 1.0)" ] }, "execution_count": 74, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "start_time = datetime.now()\n", "found_cipher_alphabet, score = monoalphabetic_break_hillclimbing_mp(\n", " ct, \n", " fitness=Ptrigrams,\n", " swap_index_finder=uniform_swap_index,\n", " plain_alphabet=plain_alpha, cipher_alphabet=ct_alpha,\n", " workers=24)\n", "print(score)\n", "workers, trace = dump_result(start_time, 'hillclimbing-given-trigram-uniform.csv', verbose=True, target_cipher_alphabet=ct_key)\n", "\n", "fig, ax = plt.subplots()\n", "for w in workers:\n", " trace.loc[w].fitness.plot(ax=ax, color='#00000020')\n", "\n", "\n", "( ct_key, found_cipher_alphabet, \n", " unscramble_alphabet(found_cipher_alphabet, plain_alpha), \n", " kendalltau([ord(c) for c in unscramble_alphabet(found_cipher_alphabet, plain_alpha)], [ord(c) for c in ct_key])[0]\n", ")" ] }, { "cell_type": "code", "execution_count": 75, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "-6794.348261349827\n" ] }, { "data": { "text/plain": [ "('qkicfaygbnweojuxhptlsvrdmz',\n", " 'fluqbjgtpcesormiayxkvwdnhz',\n", " 'qkicfaygbnweojuxhptlsvrdmz',\n", " 1.0)" ] }, "execution_count": 75, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "start_time = datetime.now()\n", "found_cipher_alphabet, score = monoalphabetic_break_hillclimbing_mp(\n", " ct, \n", " fitness=Ptrigrams,\n", " swap_index_finder=gaussian_swap_index,\n", " plain_alphabet=plain_alpha, cipher_alphabet=ct_alpha,\n", " workers=24)\n", "print(score)\n", "workers, trace = dump_result(start_time, 'hillclimbing-given-trigram-gaussian.csv', verbose=True, target_cipher_alphabet=ct_key)\n", "\n", "fig, ax = plt.subplots()\n", "for w in workers:\n", " trace.loc[w].fitness.plot(ax=ax, color='#00000020')\n", "\n", "( ct_key, found_cipher_alphabet, \n", " unscramble_alphabet(found_cipher_alphabet, plain_alpha), \n", " kendalltau([ord(c) for c in unscramble_alphabet(found_cipher_alphabet, plain_alpha)], [ord(c) for c in ct_key])[0]\n", ")\n" ] }, { "cell_type": "code", "execution_count": 76, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "-2516.00992398943\n" ] }, { "data": { "text/plain": [ "('qkicfaygbnweojuxhptlsvrdmz',\n", " 'bkrefavguhwcstlxnpjqiyodmz',\n", " 0.4338461538461538)" ] }, "execution_count": 76, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "start_time = datetime.now()\n", "found_cipher_alphabet, score = simulated_annealing_break(\n", " ct, \n", " swap_index_finder=uniform_swap_index,\n", " fitness=Pletters,\n", " workers=24)\n", "print(score)\n", "workers, trace = dump_result(start_time, 'sa-random-unigram-uniform.csv', verbose=True, target_cipher_alphabet=ct_key)\n", "\n", "fig, ax = plt.subplots()\n", "for w in workers:\n", " trace.loc[w].fitness.plot(ax=ax, color='#00000020')\n", "\n", "( ct_key, found_cipher_alphabet, \n", " kendalltau([ord(c) for c in found_cipher_alphabet], [ord(c) for c in ct_key])[0]\n", ")" ] }, { "cell_type": "code", "execution_count": 77, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "-6794.348261349827\n" ] }, { "data": { "text/plain": [ "('qkicfaygbnweojuxhptlsvrdmz', 'qkicfaygbnweojuxhptlsvrdmz', 1.0)" ] }, "execution_count": 77, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAZQAAAEKCAYAAAA1qaOTAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvOIA7rQAAIABJREFUeJzsvWmMZWd63/c72933/dZe1d3sbjab5JDD0SyQIxiKLEcfxkicRDYQK4lhAbGNJA4Q2EaCONsAcTZDBhwbgq3E+pCMlQCKFECRIAkS4hlxNs4MyWn2UtW119339Zxz7z0nH6reV1XN7iab7B6SPe8PKPTtc++tOnWbPM95nuf//B/N930UCoVCofi46J/0CSgUCoXi+UAFFIVCoVA8FVRAUSgUCsVTQQUUhUKhUDwVVEBRKBQKxVNBBRSFQqFQPBVUQFEoFArFU0EFFIVCoVA8FVRAUSgUCsVTwfykT+BZkcvl/I2NjU/6NBQKheIzxVtvvdXyfT//Ud773AaUjY0Nvve9733Sp6FQKBSfKTRNO/io71UlL4VCoVA8FVRAUSgUCsVTQQUUhUKhUDwVVEBRKBQKxVNBBRSFQqFQPBVUQFEoFArFU0EFFIVCoVA8FZ7bORSFQqF4FJPJBE3TCIfDD31+PB7j+z6hUAjTNPE8j9lshm3bjEYjvvGNbzCZTDAMA13Xmc/nzGYzptMpw+GQk5MTZrMZi8WCxWLBfD5nsVjgOA79fh/btvE8D0D+KR6Lr4/DL/zCL/C1r33tY32Pj4IKKAqF4ieG6XRKt9vFdV0AIpEImUxGBo3FYsHJyQnHx8c4joPjODIgOI7Dzs4O3/zmN6lWq3iex3w+x/d9+V7XdbFtG9/35ddisZB/Pi5Y+L7/1H7PbDb71L7Xk6ACikKheO5xHIdut4tt25imSTAYZDKZcHBwwO7uLqFQCMuy2N3dpdVqMRgM8H2f8XjMZDKh1+uxv7/PyckJi8WCjY0NVlZW0HUdz/MYj8cMBgNc1yWVSrG1tUUgEMB1XZmpWJZFPp/nxo0b3LhxA8uyZMZjGAaappHNZonFYoRCoU/6I/tIqICiUCieW1zXpdfryfJUKpXCcRxqtRqu67JYLOh2u/R6PVqtFnCatQQCAaLRKJlMhlqtRrPZxDRNbty4wZe+9CVu3rwJQKvVolKpMBwO0TSNcrlMNpuVJTPXdTFNk1wux8rKCoVCAcMwZHkMIJPJEI/HiUQi6Ppnu62tAopCoXjuEIFiNBqh6zrpdJpgMEij0aBerxMMBlldXcW2bXRdp9PpYFkWiUSCVCqFYRhYlsX+/j6tVgvDMHj55Zf53Oc+x8rKCp7nUavVaLfb6LpOKpXCNE1M05Q/0zAMstksmUyGVCqFZVlMJhMADMMgmUwSi8WwLOsT/rSeHs8soGia9i+Aq2d/TQE93/dfPXvu7wJ/FVgA/6Hv+793dvzngV8BDOCf+r7/350d3wS+DmSBt4B/x/d991mdu0Kh+HQzHo8Zj8ek0+n3XZB932dnZ4d2u00ymSSbzdLr9eh2uwwGA7LZLLlcjsFgQLPZpN1uk0qluHTpEovFgvv373Pr1i3q9TqNRgPP80ilUkSjUe7evcudO3eYzWYA6LqOaZrEYjEKhQLJZJJEIiF/bjKZJBAIfBIf0SfCMwsovu//2+Kxpmn/E9A/e/wi8IvADWAJ+ANN0144e+k/Av5V4Bj4rqZpv+37/nvA3wf+ge/7X9c07Z9wGoz+8bM6d4VC8elkNpvR6XRkuci2bfL5vFRrzedzarUa9XqdRCJBOBzm4OCARqPBZDIhmUwCcP/+fdn38DyPRCJBu92m2+3yR3/0RxwfH2OaJpZlUSqVWFpaIpvNEo1GCYVChMNhTNMkHo9TLBbZ2NggHo/L4KZp2me+fPVReOYlL03TNODfAv7s2aGvAl/3fd8B9jRN2wG+cPbcju/7u2fv+zrwVU3Tbp+99y+fveafA/8lKqAoFD8x+L5Pv9+n3+/L5nU4HJYlrGw2i2maNJtNRqMRvu9j2za2bdPtdjFNk7W1NUzTpF6vc//+fXq9HuFwmFQqxXA4pNlssr29zWQyYXl5mZdffpkXXniB9fV1crkcgUAA0zRZLBYMh0MAyuUyxWLxE/50Pj38OHooPw3Ufd/fPvv7MvCtc88fnx0DOHrg+E9xWubq+b4/f8jrL6Bp2i8Dvwywtrb2VE5eoVB8skynUzqdDrPZTDbKDcMAoFQq0Ww22dvbw/M8CoUCvu9TrVaJxWJEIhHW1tbIZDKEw2F2d3exbRvDMLhx4wa5XA7Xdbl//z6TyYRgMEipVOKVV17hS1/6EltbWxQKBWzbZjKZyB5IJpMhk8kQi8U+yY/mU8fHCiiapv0BUHrIU/+Z7/u/dfb4LwH/x8f5OR8W3/d/FfhVgM9//vNPT9StUCh+7CwWCzqdDuPxGMuyKBaLDx1EFHMgnufR7Xb50Y9+hG3bRKNRdF0nkUig6zrf/OY3qVQqdDodIpEIpmlSqVQ4PDyk3+9jmiaRSISlpSX+zJ/5M6yurmIYBsfHx3ieh67rRCIRIpEI4XCY0+KL4jwfK6D4vv+zj3te0zQT+NeB188dPgFWz/195ewYjzjeBlKapplnWcr51ysUiucQz/M4OTnB931SqRTJZPJ9F3DXdWk0GiwWC7a2tmi323zjG99gd3eX5eVlXNelUqlw9+5der0evu8TDAYJBAIkEgls26bZbGIYBpcuXcI0TYbDIa+++irFYlFmMtFolEgkQigUUkHkA3jWJa+fBe74vn987thvA/+7pmn/M6dN+SvAdwANuHKm6DrhtHH/l33f9zVN+yPgL3Kq9Pol4LdQKBTPLbZt02q1KJfLxOPx913IbdumXq+j6zqFQoFms8nOzg7dbpdQKMR0OiWZTNLtdjk+PiabzXL16lX6/T6LxUIONqbTaRk8HMchmUySSqUAHpkRKR7Nsw4ov8gD5S7f929pmvYbwHvAHPgbvu8vADRN+5vA73EqG/413/dvnb3tbwNf1zTtvwV+APyzZ3zeCoXiE0QMI04mE46OjgiHw7In4nmeHDRMJBLcvXuXw8NDNE2jVCoxm81wXZd4PI5hGMTjcUajEe+99x6BQIBSqSQDUTabpd1uy6xlMpkQi8UoFosEg8FP+mP4zPFMA4rv+//uI45/DXifc5nv+78D/M5Dju/yp0owhULxnCNKVLlcjslkwng8ZjgcYhgG4/EYTdOwbZu33nqLXq9HPp8nEAiwu7tLIBBgaWlJzooUi0Vmsxm7u7sUCgXi8TjxeJxQKES328UwDC5fvsx7771HIpFgaWlJBZOPiJqUVygUnwitVgvLsuRsiGA2m9FqtXBdl263C5wOEM5mM46Ojmi329i2Tb/fJ5FIcPnyZbLZLP/yX/5LPM9jY2OD+XzOeDxmaWkJXdeJxWK88sorTCYTOSk/n8/RdZ21tTXG4zGu63LlyhVV5voY/ORN3igUik8cz/MYjUZ0u13a7faF54bDIY1Gg9lsRjAYpFgsUigUSKVS5HI5XnnlFcLhMIFAgI2NDZaWlhgMBsxmM27evEkmk8G2bba2tiiXyywWC0KhEOvr66yvr8ugYhgGS0tLhMNhms0m6XSa5eWHTiQoPiQqoCgUih87ohwVCoVkABH27dVqFdd1yeVyOI7DbDbDsiwcxyESiUg7+Ndee42trS2q1Srf/va3icfj5PN5Dg4OSCaTrKysMBwO6XQ6BINBDMPA8zyuX7/OpUuX5BzJbDaTmY1ScX08VMlLoVD82JnNZjSbTba2tohEInQ6Her1OtFolEajQSAQIBQKEQwGabfbjMdjptMp6XSaTqdDPp9nfX2d8XiMaZpomkYwGOSHP/wh4XCYra0tOp0OlUoFXdexLEu+7+WXX5aLruBUfhyNRsnn85/wp/LZR2UoCoXix85kMsFxHIbDobyYO47DO++8Q7vdljtEptMpu7u73Llzh0gkQjwel2qvwWCAYRiMRiPK5TLBYJB6vU44HGYymVCpVHBdF03TGI1GZDIZrl69iud5MhsSqrFQKKSm3p8CKkNRKBQ/doTFu8hU8vk8oVCI9957j+l0yvLyMrFYjJ2dHYbDoZxHmc/n9Ho9OdXu+z6dTodUKsXu7i6bm5uEQiF+8IMfyC2LwWCQbDZLOp2WWQmcBpNoNMpkMiGXy0k7F8VHRwUUhULxY6fdbtPv94lEIlSrVQ4PD9nf35cuwq1Wi4ODAyzLYm1tTcqHDw4O8H2fzc1NUqkUb731Fr7vc+/ePcbjMcvLy7RaLRaLBZPJhHg8zsrKCpcvXyaXy8mdJWJDYqVSYbFYfGIrc583VEBRKBQ/VubzOScnJ2SzWQqFAp1Oh8FggGVZvP766/T7fXq9HtPplGw2K21Udnd36Xa7lMtl8vk83/nOd3jnnXfk+7e2tuj3+0SjUeLxOLPZjNXVVdbW1igUCg89j263SzQaVVLhp4QKKAqF4iPhui6u6z6y99BqtZjNZuRyObknxPd99vb2ZCPcdV1WVlaoVCokk0kZPHK5HJlMhmg0yng8ljtQ4vE4uq7zgx/8gKOjI1nW2tzc5KWXXpJbF5vNJqFQiKWlpUc224fDIbZtk81mf6KWYD1LVFNeoVB8JDqdDq1WC8/z3vec7/uMx2Mcx6FSqTAajQBoNpty3W44HCaTybCysoLjONI1eDabkUwm2dzcJJvN4jiO7JMUi0XG4zH37t2TDsClUomXXnqJcDjM8vIy/X4fx3EoFAoUCoWHSoF935d74FUz/umhAopCoXhiZrMZtm0Dp5nKg9i2je/7ZLNZgsEgrVaL7e1tRqORDEC5XI54PE6n05EqK+EenEgkcF2XWq1GPB6nXC6TSqVYLBYMBgOGwyGz2YzhcEgulyMYDFIul2m329TrdVZWVuRCrfOIoDUajZhOp9KOXvF0UCUvhULxxIgLunD1DYVCF54XzfVoNEosFuP4+Jjj42NisRjNZpN4PE46nWY4HDIYDCgUCiwWC+7du0c6nSYajXLr1i2i0ajcy55MJrl16xbHx8cEAgFs2yYSicgd8aPRiP39fZaWllhdXZXZk5AJn5cLw2lQFJ5eiqeDCigKheKJ8H2f0Wgk/bIODg4IBAJEo1H5mslkQr/fp16vk0wmWSwWrK2tUalUqNVqvPLKKxwdHdHv99F1nXQ6LctkmUyGer3O3t4exWKRer0uJ+RrtRqDwYBMJsNisWBpaYlSqYSmaRwcHJDJZFhdXZVlNcuy0HVd7ngXf4p978Fg8Cdy9/uzQgUUhULxRIzHYzzPw7Is4vG4XFQ1Go2k/LbdbqPrOsPhkG63SyqVIhqN0mq1SCaTtNttPM/DdV2y2ayclrcsS8qAU6kU2WyWWq0mbel93+eFF14gFosxHo8pFAoEAgFarRamaZLNZmXDP5fLPdJKZT4/3Siuyl1PFxWaFQrFEzEcDtF1HdM0SSaTZLNZkskktm1zcnLC4eEhg8EA3/c5OjpiOBySSCTo9XpomkYymSSdTpPJZKQNvWEY9Pt9GRCq1SrJZFIOJS4WC27dusVoNKJQKJDL5YhEInIZlud5BAIBgsEgyWSSfD7/WF8uUZJTcuGniwooCsVzTLVaZTAYPLXv57oujuNIma3YphgMBlleXiYYDHLnzh36/T6j0QjLskilUuzv7wNINdelS5e4dOkSuVwO3/fl61OplOzPBAIB2ZRfLBa8++67eJ5HqVRiMBgQCoXI5/MsFgt6vR6JRIJSqUQ6nX7s7zCfzxkMBpimKeXMiqeDCigKxXOKmNHo9/sXmtEfByG1FRfiRCIBnAYa0zRllpBIJDg5OUHXdWmXMpvNGAwGpFIpMpkM8/lcqrsODg4wTZP5fM58PqdUKjEajeT3v337tpwZOT4+ZjAYsLq6imVZ7O3tEY/HuXTpEvF4/LHn7zgO1WpVTcc/I1RAUSieU4RFvLAh+bh4nsd4PCYajUrZcKVSkdbyjuPQbDbJZDKUSiUCgQCDwUDKc/f39+XciGmasnQmeiq6rlOtVolGo2xubhIIBFhZWSEYDHLr1i0Mw2BjY4OTkxM5/Hjr1i1M0+TFF1/8wHmSyWRCrVaTq4JVuevpowKKQvGcIuZDTNN8KmUv0YyPx+O4riuzicVigW3bcjI+lUrhOA7ZbFYqwWKxGKPRiEgkQiAQoNfrcffuXfr9PsPhUJa9er2enDkpFApScgywtrZGtVpF13XW19fZ3d1lOp3y4osvkslkHnvu/X5f2uKXy2U1Gf+MUAFFoXhOEWWoRCIhM4iPw3A4JBAIoOu6tIUXP6fb7TKZTIhEIgSDQQaDAbquk0gk6Ha7+L5PJpNhOBzSbrc5ODig1+sxn8/Z2dlB13X29/fxfZ+lpSUA8vk8lUqFvb09UqkU5XIZOO3bGIZBs9mkWCw+do+J7/u0Wi3p2VUqlZSr8DNEBRSF4jnFdV0CgQCxWExKeD8qjuPgui7xeBzHcbBtW37v6XRKt9uVMx+O4zAYDIhEIlLuOx6PpTR4OBwyn88JBAJSChyPxzk6OpLbGQG5Q16owCzLkquAxV54sQPl5ORE+n2JfpHnedTrddns/yDll+Ljo+ZQFIrnEN/3mc/nRCIRdF0nFosxHA5Jp9Mf6Q5d9Dui0SjdbhfXdUmlUqRSKba3t2W/Bk7LS+PxGMuymM1mhMNhdnd3yeVyFItFAoEAlUqFRCIhZcVra2skk0ni8Tg/+MEPCAQCpFIp+v2+lAQLa5ZAIMDly5dZWloimUziOA7T6VRO3WuaRjgcZjabMZ/PyefzF4YuFc8OlaEoFM8h4s7/vLxXGCI+Keeb8bquY9s2nucxn8+5c+cOpmkSjUZlL+Tk5IREInFhBW+/3yeRSLCxsUGr1aJer7O2toZlWYzHY77zne/gOA7JZJJms8lkMpG73geDAcVikcFgQK/Xk2aQhUJBKsqKxaK0qY/FYriui+/7lEolFUx+jKgMRaF4DhENeRFQhLvvcDgkmUx+qNLPfD6XMyGiLCWCkmVZDIdDOYzoOA71eh3XdaXNfKfTIZfL4bouwWCQ2WyG4ziyn1Gv13Ech1AoRLfbZWNjg3w+z3Q65fLlywC8/fbbpFIpTNPk/v37XL16lZs3bz40y9I0TZk9fsKogKJQPIfMZjM0TbvgtptIJKjX60wmE6LRKJ7nSRmt8L0SX6Zp0mq1sG2bWq0mBxQNw2A6ncoMJRQKEQ6HcV2XRqOB53mYpimVXdevX+fo6Ijd3V2q1SoHBwd4nkc+n5c+X4lEgtlsxmuvvUaxWKRarbK3tyfnaJaWljg6OiKXy/H5z39eNdU/xaiAolA8h7iui2VZFzKRcDgsJcTRaFQ22gOBANPpVO4sgdOeiQgK8XiccDhMr9djMBhwfHxMOBwmGo3ywgsvMBgMGI/H9Ho9gsEgmqZJ+fBgMJCKsLfffhvXdbl58+aFIcher0coFJL+XqLf02q1iEajtNttYrEYr7/+utpd8innmfVQNE17VdO0b2ma9kNN076nadoXzo5rmqb9Q03TdjRNe0fTtNfOveeXNE3bPvv6pXPHX9c07d2z9/xDTUk1FIrHIgLFgwgJsZgjASgWi3JVbrlcJplMSqWUmPXY3NxkZWUFy7KYTqe0Wi0mk4mcS2k2m8DplkbHcQgGg6RSKeLxOPF4nCtXrgBgGAblcpnLly+zsbEh1/emUikpPw6FQqTTaelSHIlEuHLlygdaqig+eZ5lU/6/B/4r3/dfBf6Ls78D/HngytnXLwP/GEDTtAzw94CfAr4A/D1N08R/Qf8Y+Gvn3vfzz/C8FYrPNIvFgsVi8dCAEovF0DSNwWAgy2KihKTrusxWEokEkUiEer0ul16ZponneUQiEfL5POvr6wyHQ0ajEYvFAl3XqdfrGIYhTRqFZFmotKLRKKPRiFgsJudQ1tfXuXbtGvF4nFarJQORCFarq6ukUimVnXwGeJYBxQcSZ4+TQOXs8VeBX/dP+RaQ0jStDPw54Pd93+/4vt8Ffh/4+bPnEr7vf8s/vW36deAvPMPzVig+0wgJ78OMD4WEeDweY9v2+17T7/dxXRdd1zk5OZFzJ4eHh8znc/r9PrZtUyqVWF9fZzQaUa1WyeVy0qtrPp9TKBTIZrOMx2Pa7TZw2jRfXl5G0zRu375Nu90mkUgQjUbpdDoEg0HZ27Ftm/X1dUqlEqFQSA4zKj7dPMuA8h8D/4OmaUfA/wj83bPjy8DRudcdnx173PHjhxx/H5qm/fJZee17IgVXKH7SeFDh9SCJRALf9+n1ehcCiuM48thgMJBSX9d1OTo6kl+LxYJ4PM5kMmE6nTKdTjFNk1AoxGw2YzabSUlvpVLBMAyZNa2srJBMJvnud7/LwcGBLL1Fo1GWl5fxfV/6eYkymJhPUXz6+VgBRdO0P9A07UcP+foq8B8Af8v3/VXgbwH/7Gmc8OPwff9Xfd//vO/7n3+cHYNC8Tzjui6GYTzyjt6yLEKhEP1+X6rAhEWJaZosFgsqlQrz+ZxwOIzjOGxvb/Pmm29y//59gsEg8/mcbrdLPB5nPB4znU4JBoOYpinlu71ej263SzAY5O7du8Bp0Nrb22M0GsnXw6kI4Hvf+x62bUs58nA4xDRNIpGIMnL8jPCxVF6+7//so57TNO3Xgf/o7K//J/BPzx6fAKvnXrpyduwE+JkHjv/x2fGVh7xeoVA8hEc15M8TDodZLBayPNbtdpnNZsRiMY6OjqTy6sqVK0SjUXZ2dmg2m2iaxhtvvEGxWETXdbrdLu+++64ceBTGi2J4sdfrMR6PqVQqbGxsyIHDF154gbW1Neke7DgOpmlSKpXodDrSd0w09RWfDZ5lyasC/Ctnj/8ssH32+LeBv3Km9voi0Pd9vwr8HvBzmqalz5rxPwf83tlzA03Tvnim7vorwG89w/NWKD6z+L5/wQ/rUViWJWdKptMpg8GAWCxGt9ul1WoxnU6lTcqVK1fI5/McHBwQiUQIhUKYponv+9RqNYLBIN1ul+l0ys2bN0kmk7z77rs0m01isRj1ep1oNMrW1haLxYJCocDW1hZw6oRs2zb5fJ7Lly+TTqcplUoyK8lkMqoZ/xniWc6h/DXgVzRNMwGbU0UXwO8A/xqwA0yAfw/A9/2Opmn/DfDds9f9177vd84e/3XgfwPCwP979qVQKB5gPp9fsFx5FCIbmc1mHB8fE4lEZIDo9/vEYjHy+Tzj8Rhd1/E8j8lkQiwWk3Msk8lEHrt79y6ZTIYbN26ws7PD7du3CQQCpNNpRqMR165dI5/Py/eKHkyn05H730ejkbTZz2azBINBYrGYasZ/hnhmAcX3/W8Arz/kuA/8jUe859eAX3vI8e8BLz3tc1QonjcebMg3m03m8zm6rqPrOoZhoOs6vV5PTrQPh0MuX74sd8EL23k47XnEYjEODw+xLItsNku325XbFcVGxn6/z40bN0gkEgwGA5rNJqlUinA4zOrqKuvr6ziOI321AoEAyWQSgGAwKKf2fd9nc3OTUqlEq9WSr1F8NlCT8grFZxgxhS5KXCKgCKffarVKPB6XCizP8/A8Tw4iZrNZwuEw9+7d4/DwkHK5jOd5ZDIZLMvC8zwcx5EKLcdxpAmk4zjouk6j0SAWixEIBHj77bc5OTkhFosRCoWwLIutrS16vR6xWIxcLker1cL3fcrlsnQubjabdLtdtra2WFpaQtM0isXiJ/a5Kj4aKqAoFM8Y27YJhUIf6b0iAJz35BK4rku1WsUwDFZWTnUron8ihhcHgwG5XE4upwLkFHwoFCKTyWDbNt///vfRNI3RaITv+xSLRbrdLsPhkIODA6bTKV/5ylcYj8fU63X29/flsOPBwQGGYbC/v088HseyLKLRKNFolHQ6TSAQkBPv4vcQZSyx8174em1sbKidJZ9hVEBRKD4A27bRNI1gMPjE73Uch1qtRjab/UhqpW63y3g8ZmVlBV3/Uw3N+SxjPp/LbYnC2ReQMmBhsSIQASUcDmNZFt/61rcIBoNcvnyZb37zmywvL0vPL9FUH41GmKYpXYPr9TpwGpR83+fy5cuEw2EKhQLdbpdYLMb6+jrT6ZRer0c4HMYwDDRNIxQKYRiG7NlMJhNpyaKcgj/bqH0oCsUH0G63aTQa8kL8JNi2DXDBePFJEM6+k8nkwnGxv71YLGKaJsPhUDoABwIBPM+j1+sRiURk2UpwfpL+3r171Ot1rl27xmg0IpFIUC6X+ZM/+RMqlQonJycXFmtNJhM0TSOTybC8vIxlWWxsbHDp0iWKxSLT6ZRIJEIymcS2bTqdjpxF0XVdrgJeLBYcHx9f2DOfy+U+0mek+PSgAopC8Rg8z2M2m7FYLBiPx0/8fnEhdxznfZnCBzGbzbBtW/YtBIPBgMlkQjqdJhQKyTW84vwCgYD06hK28ucDmggoruty69YtcrkcoVCIO3fukEgk5N6U6XTKyckJo9GIbDbLxsYGX/jCF+Q5rKysUCgU5OxJIpGg3++TTqfRNI16vS7XAouA7Ps+uVyOwWBAu90mlUpJ3zE1b/LZRwUUheIxiIAgtg4+KbZtyynvJ81SRLnItm2m0ymu68q7fpEFwOnwn6ZpdDqnKnvLsmi32ziOI720dnd3pSRXSItv3brF0dERhmHwzjvvoOs6169fl8EhEAgQCARYXV2VQUPYy5fLZWazGZFIBMMwSKVSF3ofOzs7NBoNcrkcsViMxWJBq9XCMAzC4TDj8RjP8+Tjj7qaWPHpQvVQFIrHIAJKJpOh1WrJVbgfBtd18TyPaDSK7/uMRiNSqdSH/tnT6ZTFYkE6nZbNa2HoeL48ZBgGkUiESqVCMpnENE06nQ6z2YxgMEg6nWY6ndJutxmPxywWC7rdLnfu3CEYDDIajRiNRqyurrJYLPjud79Lv98nn89L6xXXddne3pZZUKFQkDMqi8UCx3G4c+eOlCkPh0M5x2LbNktLS7IfVK/XCYVCJBIJhsMhmqaRzWaf4F9F8WlFZSgKxWNwHAfLsojFYliW9URZighGoiwlNhB+GHzfp9vt4nmeVF4dHBywWCzI5/OyQS/MGMWeE3Ex7/V6MnMolUrouk4oFGI+n/Pee++xt7cn+yEyCxZxAAAgAElEQVSTyYRqtcrR0RF7e3tMp1PS6TTlclmaPG5sbGAYBpVKhWAwKDMf27YxDIPbt2/T7XZZWVkhl8tx5coVNjY2cByHVqtFIBAgn8/jOA7Hx8cUCgUMw6Df78uMSPHZRwUUxXOP6CN8lKb6edVUMpmUO9PP02w233cMkBdbYXAoZLkfBsdxmEwmsn/T6/Vkw/v8FHyj0aBWq0lTRnEBHw6HMhsSg4Pdbleu661WqzQaDaLRqBwy3NjYkD9vZWWFF198kUwmQyaTkcOOmUwGTdNYW1vj5ZdfJpPJSNXWSy+9xM/8zM8Qi8WkFT2cqsmazaZ0JA4EAsxmM8bjsdzs+DBZtOKzhwooiuee0WjEZDKRiqsPy3w+Z7FYyIASjUYxTZNerydfIy6MD2vYO44j5090XScSiTAejz9UYJtMJvT7fSmjHQ6HMjCcPz8RAOr1urRPuXfvHqFQiGg0KstRmqaxvb3N7u4u0WiUYDDIYrGg3+9TrVZZX1+nUCjwzjvvMJ/PuX79uixnLS8vMx6PZcmu2WwyGAxk+c2yLDKZDJubm/IcRdBzXZdyuYyu61SrVTRN49q1a+i6LtcUq02Mzw/qtkDx3COyB8dxnsgGXZSnREDRNI1EIkGn05HDiiJIPajgms/nzOfzC6UcsdhKZBpwGuza7bbcnCisUQ4PD+U8h5h+z2az2LYthxfF7xWPx2UGJkpKr776qrywl0olxuMx29vbzGYz6cGVTqfJ5/MEg0ESiQTf+ta38DyP9fV17t+/z3w+lwHDsiy63S7dbldKiK9duyZ/pihbTSYTgsEgwWBQGlWKADYajZjP5xiGQalUwvM8DMP4yEOfik8fKkNRPNect2h/0gxF3Nmfd+4VmwNFL0V8T/EzBOL4+YulGO4TZS/XdWm32wQCAVl6Eu9tNBqyYS0mzjVNk819OM1ihL+W8OcSTfFCoSADqPgdXnjhBTRN486dOxwcHDCZTPB9H8/zCAaDWJbFF7/4Rb70pS/h+z6VSoXt7W3eeustWq0WnueRz+f53Oc+J4NbNBrFdV1yuRyWZTEej4nH4zJTEbtTPM9jbW2NZDJJvV7H933y+TyJROIjDYwqPp2oDEXxXHP+wu44Dr7vf2hrD3Hnff71IksRHlTi+y8WCzzPk81y4XNlmibVapVsNisDx3A4ZDab0Ww20XVdNqgF4/GYYDDICy+8wIsvvojv+xweHuK6LpFIhNFoJAcHXdelXq8Ti8U4OTmh0WiQzWZlgz4YDNJoNAiHw5TLZarVqmzaJxIJWYJrtVpkMhnZN1lZWSESiXD37l05gW8YBi+//DJwmm2JdcHRaJRkMonneUynU3lus9mMQCDAcDhkaWmJQqEAQK1Wo16vEwwG0TTtA52RFZ8dVIaieK6ZTqeyoSzKMx8G3/dlQ170KgTxeBxd12m1Whd6LOdfY9s2wWAQx3Gk5BdOL8S+73N0dMRsNiOTybyv/9Lr9ZhMJmSzWZrNJrdv3yYYDGLbtuxrdLtdGcSm0ymVSkVOyudyOWlpIuZP8vk8jUaD27dvS+nztWvXuHbtGsvLy/T7fWmd0m63qdVqTKdTyuUyr732GtFolNXVVXRdlyaTs9lMzpaIwU/f94lEInI3fKPRwLIs8vk8pmnKJVq6rsstj8q76/lBZSiK5xrR6xClp4cZNYq+xvnZjtlshu/7WJZFtVplsVgQDoflJHk8HqdSqWBZFsPhENd1ZT9ClNnEvhE4LU+JiXARYK5evSpX6VqWJfs7jUZDZkK7u7tSOgyngc4wDJrNpnwcCoWoVqty/7rv+2xvb2NZFpubm9i2zXvvvcfh4SEnJyfSUn51dZV8Po9hGNTrdcbjMYeHhzJzEg7CwtPr6tWrhEIhBoOBVI2J4OY4Dp1OB13XsSyLYDBIr9djMBhw+fLlC1PwIqgIlZni+UEFFMVzy/nGuK7rBAKBh/ZRer2eLM+c3wMi/lwsFrI8JOxEotEotm1Tq9UIBAJ0Oh2Wl5eJRqMXmvnj8fhC7yMUCuG6rlR91et1WZIKh8OyFBaPxxkMBvR6PXzfp9PpkM1mMU2TfD7P8fExoVBI7jPxPI9+v49lWXJgsFAoyPmXvb09GRhTqRRvvPGG3LQosp5QKEStViMej8tBRKEiy2QyRCIRdF0nk8mQSqWk1YpYtjWdTgkEAuzv78syWigUkk7I5zFNk6WlpWf4r6/4JFABRfHcIlRQ4s4/FArJXR6izCJq/YZhyDkNy7JkUBDloUwmQzqdlnLeTqfDzs4Oo9GIq1ev4vs+e3t7FIvFC+7EvV5PlsT6/T7D4ZBEIiHv7G/dusX+/j7NZpPPfe5z9Pt9KpUKV65c4e2335YX5L29Per1OoPBgOl0SqPRYDAYEAqF6Ha79Pt9UqkUsViMRCKB53nydxUOwbVaDV3XKZfLrK2tyWBxcHBAsVjkjTfe4L333sN1XRk8y+Uyvu8Ti8UuuB3rus7y8jLLy8vycxLDi2Kt73A4lHb2ip8MVA9F8dwiBgvFBU1YrZ/vo4xGI3Rdp1QqoWka7XYb4MIAoxgQFIqrfD4vbU1M0+To6AjTNKnX69JDS/QGhMQ3Ho/LslIul2M6nXL37l2q1SrhcJhqtUqtVuPk5EQuxjrvhXXp0iXi8bjMYhqNBvfv36dWqzEcDmWjPZlMsre3JyW+R0dHF7IHMXQIp3YypVKJZDLJ1atX5QDmaDTiRz/6kVwDbBjGB5amREBJJBJEIhEymQzr6+tkMpmn/u+q+PSiAoriueXBfsn5Pgqc9iPEHhExnGfbNv1+n9FoxGw2kw14MVBo2zbVahXP87h+/Tqbm5ssFgsWiwWDwUD6XYleymKxwLIsGaBGoxHNZhNN01gsFhiGwRtvvEG5XKbVal1w63399dd57bXXZFAUmVOj0ZBDgRsbG3z5y1/m6tWrsrS3WCzI5XLkcjl836fdbjOdTtna2qJUKjGdThkOh+RyOdrtNqZpUigUZHAS2YjwENN1/bHzO0IYoPohClXyUnwmEP2HD2vR4bqubKQLh95cLieb4oB0vPV9n3q9TrFYZDweU6vV6Ha7slcgJrzj8TjtdltOdwsll/DWmk6n7O3tMRwOWV5elg352WzG0dHRhQvvysoKBwcHzGYz8vk88/mcb3/72xwcHBCPxymXyySTSarVKoPBAMMwCAaDHB4ecnx8LJVT6+vrhEIhOSzZ7/ep1Wqsra0Rj8flTIvIdCaTicxyOp0O7XabQqFAs9nk6OiIdDpNLpfDMAzm8znj8ZhYLPZYJdZ0OsX3fRVQFCpDUXz6Edbnwp79w3B+/kTMS9RqNfmcaJKbpikv9PP5nGw2y3A4pF6vk8/nmU6nVKtVOQwo5jnEZPxsNpNlI2GkuLOzQ71el8aNt2/fZjqdsr6+Lpv7zWZT9k7eeustAOr1OrVaTTbBC4UCqVSKSCRCo9Gg3+/T7XZlVnHz5k1s2+bw8FBOuKfTaTzPYzAYUCqVWFlZIR6PUywWmUwmmKbJiy++SDwe5+7du/T7fTzPk7vnr169Kn8n4ZL8YcpdYpuj4icbFVCeMsKu+2H4vs/JyclHWtT0k4xt23Jr4YddUmXbtjRMnE6nxGIxDMOQTW3h7XXe2mQ6nWKapswsDMOgVqtx584djo+Pmc/n5PN5Oe8heiyrq6ukUik8zyOXy5FKpXj33Xc5Ojri+PhYqraEeaPIgITdimi4e55HKpXi+vXrbGxsyGY4nC60arVaUlAQi8UoFAoMBgMODw+lzbymaWxubhKLxRgMBgQCAdLptOzhpFIpNjY20HVd2qAEg0EikQgrKyssFgvm87nsnxSLxcdao4hgrFb3KkCVvJ46nU6HQCDw0P8JXddlNpsxGo0+UnnAcRwGgwG5XO6hJYjFYoHv+8+dc+t0OpXT4IPB4AMbvb7vS1sQMb+RTCZlL+Tg4ADf96VUV5g9CnUWwNLSksw0hsOhNF4U0lxxXsFgkEwmIy/mk8mEmzdvUqlU+OEPf0ij0WBpaYlyuUwoFCKVSsm1uOL3MU2TnZ0dKTGORqMsLy/T6/VoNBpyBW+9XpdBbTab0e/3MQxDeouJf/9AIMDLL79Mp9ORSjDho7W5uUk0GuX+/ftEIhHW19fljMj5/SRCIvxB3mfCvkWVuxSgMpQnZjweX3CbPY/neSwWC3nH+yCidi9KLk9Kv9+XQ3gPo9PpyLLO80Sv18OyLDngd95x92GIxVbiQip8qgzDkLMiu7u7cnOhmOWYTCa0Wi3ZkD46OqLb7ZJMJqV/12AwkOfgOI4MbolEQsplhVqqUqnIgCF2gggL/O3tbTqdDtFoVA5AappGMplkOp2iaZoMPtPplFKpJFf9CnVZv9+XfaFKpSKzplAoRKFQ4OWXXyafz8teTDKZZHl5Gdu2mc/n6LpOKpWS0mjhxRUOhy9IhB+HKKOpcpcCVEB5YkajEb1e76EWHqIcI9Q9D3JeXfSooPAoRGlBnMPDEP5NHyVYfVyE+uhp/2xh6SGyvvO70x+F+JyFbFeUjeB0fkKUrUTDWgwP9no9Op0OrusymUzk5LxQP926dYu9vT3u379/YZsiIFfhin0k580exT6Q9957j8lkQrfbpVKpMBqNWFtb48qVKziOg+d53LhxQxo4TiYTMpkM2WyWWCwmbVtc16VYLLJYLDg5OaFQKKDrOsPhkEajIfsupmly+fJlBoOBNIwUrr/iMxHBN5FIyCznw2YbqtyleJBnFlA0TXtF07Q3NU17V9O0/0fTtMS55/6upmk7mqbd1TTtz507/vNnx3Y0Tfs7545vapr27bPj/0LTtE/MTU4EjYdlKee9nB6WpTiOI0sJTxpQhE+SuKg+eJcuat8PnsfTYj6fc3R09MjsS+wcedK96R+E2Kc+Go1kyVDsRn8UYuZC3Ok/eIEUgSCZTLK/v89wOJRT4tVqVc5d5PN5Op0Oo9GIzc1NhsMh29vb/PCHP+Sb3/wme3t71Go1Go2GtFvp9/vS6uW8qWKhUMC2bf7wD/+QWq3GYDBA13WuXbtGNpul1WoRDAZZXV2Vi67u3btHv9+n1+sxHo/JZDJyQVY+n6fX61GpVMhkMqytrTEajWg0GnLX/Hw+5+2332ZnZwfHcZhOpxweHtLpdJjP5zQaDSmtPj/V/0FlrsViwXQ6pdvtqnKX4gLPMkP5p8Df8X3/JvCbwH8KoGnai8AvAjeAnwf+F03TDE3TDOAfAX8eeBH4S2evBfj7wD/wff8y0AX+6jM878ciSgXT6fR9Wcr5hvHDnhP2FiIoPAnj8VjOSogyzXlc15VW5M8ioAgLkkeZK4qs4IMu9k/KeDyWq2pFqfBhWxMFYnBRXCAjkQi2bXNycoLnebIsGY1GpU2K53myBGUYxgU7+Ol0ysrKCjdv3uTVV18lmUyytLQky1pi2v2P//iPGQwGxONxCoWCzGSz2SyDwYDBYEA0GqXVanHv3j0GgwHpdJqNjQ06nQ6O47CyskIgEMAwDBKJBLPZjHq9zu3bt7FtWwa25eVljo+PL/QvNjY25BIuwzDo9XrcunWLer1ONBqVmx7n8znJZFJayouNiedncs6Xu8QCsW63S71e5+joiKOjI9lbCofDqtylkDzLgPIC8P+dPf594N84e/xV4Ou+7zu+7+8BO8AXzr52fN/f9X3fBb4OfFU77ZL+WeD/Onv/Pwf+wjM870ciZhYSiYS06jiPsPAQg2znOe/vFIlEmM/nj7zbf5D5fC4VSYFAgEAg8L5MwHEc+T/9h1VCPQmPy37E3blQSD1psHwc/X5fTno7joNt2ziOw3A4fOjrhUW9CB7RaJRqtUq1WpWLpXRdJ5lM0mg0iEQixGIxDg4OyGQyxONxuZe90+kQDoe5ceMGs9mMjY0NKTXO5XK89NJL/NRP/ZS0pBfN83a7Ta/Xo9Vq8eqrr1IsFtne3ubw8FAu5Wq1WoxGI46Pj7l37x6JRIKtrS1ms5l0N9Z1HU3TGA6H7O3tYVkWV69e5erVq+zu7tJut6XVfCqVot1us7a2RiQS4c0336RSqQCn0ulMJkMymWR9fZ2trS2WlpZYX18nm81Ka38RaMWQZqVS4eTkhGazSb/fl3M9YsJ+bW2NYrH41P6tFZ99nqUc6BanweP/Bv5NYPXs+DLwrXOvOz47BnD0wPGfArJAz/f9+UNe/2NFXFRFc/X85j7xvGj+PngnL1RAgUBAqrBEaeY8D9vXIbIRUVoQG/OErQcgG62+7zMcDmXZ42lxfkjvQcTds/jdhBX6eURf6Ul2XywWC4bDIaPRiHK5jGVZtNttgsGglBA/qGgTwUxIYoXZ4nw+p1KpkEgksCwL0zQ5OTmR+9otyyKXy8lAIMwZM5kMly9fZjgcks1mgVM34NXVVRzHkaUowzCkL1ilUuHdd9+VNx/CPFLTNIrFIo7j4LoujuPwm7/5m7Tbbba2tlheXpZ9sG63i23b0ryx3+/LYcdsNsvv/u7vMhwO+fKXv0wul5OlwWg0SqPRYDQaye2PcPrf0LVr16QiDZCDj3BashSButFoAEgFWygUwrIsZTOv+EA+VoaiadofaJr2o4d8fRX494G/rmnaW0Ac+HC34x/vfH5Z07TvaZr2vWaz+dS/vwgohmHIzX0P7hc3TVOWFs73Oc4vaxLa/8lkcuH7u67L4eHh+4LRg1PioqF6vuw1HA4xTRPLsh6pQvs4PC5DEdlDIBCQkt0Hs69OpyPdbh/1/R98Trj5WpbF2toa2WwW3/dlk/lh5TWhshL9qkqlgqZpmKZJu92m1WoRiURot9scHh6yv7/PbDYjnU7LWQ+hDLNtm1KpJC3rJ5OJvJGIRqMYhiFdf3VdZzKZSCmw2GGyv7/P8fEx0+mUg4MDmUleunSJn/7pnyYYDBIIBFhbW5MXbNGLabVa0iIlFArJKffBYEA4HCYQCOC6Lr1ej/v37xMKhTg6OuLg4IDNzU3y+TypVEpmtNFoVCrR4NSjzHVdWq0W29vbsk8l1GDlclkGRBVMFB+Gj5Wh+L7/sx/wkp8D0DTtBeAXzo6d8KfZCsDK2TEecbwNpDRNM8+ylPOvf/B8fhX4VYDPf/7zT13qJEoBoVCIUqkkywxCqil8m8RduOu60pDQdd0LOyHE/IPwc4I/LdcIaaj4HrPZ7MJucsMwCIfDjEYjUqkU8/lc7vI2TVM2S5/mRUBIUsPh8Pu+t8gKxJyHaJyf3y8i+h+id/AgjUYDwzAulFB6vZ4s44jfM5/Py+HQQCBAKpWSd+FCyivOTdzph8NhxuMxJycnMptstVpyhe7Gxgb1ep3Dw0Om0ylLS0uyQb20tCTNHdvtNtFoFF3X6Xa7lEolDg4O5H8X0+lU7kfJZDJ84QtfYLFY0Gg0aLVauK5LuVyWmw9fffVVaQQpsiAxxNloNKjVaty4cYNMJkO73ZbHjo+PuXbtmvT+arVa7O7usrOzQyQS4bXXXmNzc1MO2R4cHMjPfDQaYdu23B7Z7/flGuKNjQ0ymYwKHoqPzLNUeRXO/tSB/xz4J2dP/Tbwi5qmBTVN2wSuAN8BvgtcOVN0BTht3P+2f6pD/SPgL569/5eA33pW5/045vO5rOMLOappmnKfBiAzFPhTpZdomJ9vXoqS0Pl+g23bNJvNC3feo9HooUolsedCZAOixyIuvB9FbfUoybEY6Ds8PKTf71/IUoTfUyAQkPs6PM9jPB7LjEP4RgnL9QczERFwH5zPOTg4wPM8lpeXqdVqzGYzCoUCmqbJ8zifpYk7b1EKE2tmR6MRBwcH3L9/n3q9zv7+PvP5XE6Qz+dz+v0+9+7dwzRNMpkMJycnJJNJ6TQsJtHn8zmrq6s0Gg1msxm9Xo+7d+9iWRbXr1+XtvGil7GxsUE+nyebzVIoFDg6OiIajbK+vo6u63If+8rKCoVCAdd1uXv3LpVKhcViweuvv86lS5dk3+1P/uRPqFarXL16leXlZek0/M477+C6rgy+rVaLSqUiF4VdvXqVeDxOs9mk1+sRCoUIBAKUy2XS6TT5fF4FE8XH5lk25f+Spmn3gDtABfhfAXzfvwX8BvAe8LvA3/B9f3GWffxN4PeA28BvnL0W4G8D/4mmaTuc9lT+2TM870dy/oIr7mCTyaScYAdkD8UwDBlQzjfkBUKNcz6gDIdDHMeRQ2pCzfWwQTOhxhmNRozHY6nWEaW4BwUDH8RisZBKp4f93vV6ncViwfHx8YVgZdu27CNFIhEpWDj/mYjHQh33YKlKBChRLoPTQNpqtUgmk4TDYVqtFs1mk3Q6LVVUQj11/lzE8irRD9A0jVarRTqdplQqcfnyZTqdDp1Oh+FwSLValXfyJycnFItFOp0O4/GYYrEobw40TZOGkysrK7iuy9tvvy3LSXt7e0QiEQ4PD+l2u+TzebkTZXl5mUuXLsnlU2J2Q5TzisUitVqNdDotAwrA1taWzFrFTnqAdDotxR+9Xo/vf//72LbNK6+8wiuvvCJ7T77vM5vNCIVCUp0GSAsXQC4di0QiKpgoPjbPrCnv+/6vAL/yiOe+BnztIcd/B/idhxzf5VQF9oki7qJFo1QsNBJlh/N9DlHfhtMLqihrtVotWZcWdXlRQppMJtLl9ejoSA6vnR/MEwh7jMlkguM4WJYlB8wikQjD4fBCOU2cv67rD7VmEeUlcfE6z2g0khsDB4MBJycnRCIRqVhyXZdsNku73Za9CHHnnEqlsG2bwWAgRQmDwUAGHnFeAlE+rFQqsvxUr9f50Y9+RCqVIpfLyYxFSHFFKe78BLgQTADSI0t8VplMRiq7hCW8GJzsdrsXJtWDwSCtVksunBLzHGI+5Pr16/Lze/vtt9nf36fdbsuyZK1Wo1wuE4/HZeCfzWbs7e0xGo3I5/NcvnyZdrvNW2+9Ra1WI5PJYJqmVIyJz8jzPMrlsjR9DAaDfP/730fXdb7yla/w5S9/mXA4zPb2Nt1uV87aiKxZ3ACJTDEWi8m99GqWRPE0UJPyT4Aody0WC6rVqixHpVIpptOpvGDDaUAR5QZRKhHT0ULyGolEZN1fTB0nk0kymQzD4ZCjo6MLfkrnp+XhtOzleR71el3u9BDzEWLCXOC6LtVq9ZGOvc1mE9u2ZV/nPKKpHIlEiEQicj5CWJYYhsFisWA0GjGdTqUNiRhIFGUuUeJ5sKE+m82kj9b5i7U4716vh2maNBoNWZbK5/Pye3e7XQ4PD6Vkut/vc3x8jGEYtFot5vO57I+89dZb6LrOeDym3W6TzWblPMjq6iqHh4dUq1UikYgUTohmNZw2sg8PDzEMg9FoRKVSoVgsEo1GuXv3Lp7nEY/Hicfj0iV5sVhgmqYMiLFYjO3tbbkX/vyeE6EEKxQKJJNJarUae3t7cjdLPp8nFouxu7uL7/t87nOf49q1axSLRVKpFKlUinw+TzQaZXV1lWg0KlVa4rNeWloiEAhQr9fp9/vouv5YA0iF4sOiAsqHRJRjNE0jm82yWCzY3d2VJoRwUXUlFE+TyYR6vS5ltY7jSHVXKBSSF1Fx5yr6IKZp0mw28TxPliLa7Tb1el1e3EKhEJ7n0el0pExYTDprmibPRzSGRa/iQcTzwqfs/O8h3HFN05SZi1AYVSoV2acQTe9utytVUY7jSCNEkYmJftL5XoooT43HY3mhFxPq2WxW3kGLi7kwVhRB6/DwUMp99/b2ePPNN+UOkclkQqfTkY38SCRCMplkMpnIYN5utwmFQly/fl36pYlyo9gHYhgGmUyG5eVldF2XPlmGYVAulykUClIxtrKyQiwWk7MeQsjgOI7MVkTJs9vtsru7S6PRYHNzk/X1dZl9lkoldF2n2WwSDodJp9MyexLGkF/84hfl9xdBQdM0aaciVvKapnnBNLNYLEr342g0qspdiqeCCigfEjG8J8onm5ubUtYqzPXOT7CL2vS9e/eYTqcUi0W5EVCosMSdoSjFiAunCDTBYFCWWGzblt/7/N29mF4/XxYTSjMx79BsNuXQ2oNyZjgNVLZtUy6XZUZw/rlerydtPwBpVqjrOvV6XfYfRCBwHEeWWjqdDvfu3ZMXadHfEI1+QA4FWpbF0dERh4eHslwmSmiGYVAqleQGQsuyZMCuVCrs7Oywv7/Pm2++yeHhIaZpsr29zd27d+W/Ub1eJ5vNMplMCIVCvPHGG1KSm8vl5KIsceE9OjqSYoNOp4NlWdi2jWVZhEIheSHu9/uymZ/NZrEsi93dXZrNJisrKzJzs21bZi+pVEp6dI1GI5aWlsjlcliWJXeYDAYD1tbWpFS43+/Lf+vNzU0AWXYELgSFcDgsd7yI/ybOi0NM06RUKhEKhS6oDxWKj4MKKB8SoagSk+qifOF5Hs1mU8p2e72eVPq0Wi0ZTPL5vJSpOo4jG9Fie564uIbDYemSm0wmicViNBoN6vW67H+ITYPivDRNQ9d1BoMBjUbjgnT5+PgY27ZlqQXe7zMmMiFxQWu1WgDSfXexWMgSjLi4id6OZVmcnJxIVVS73ZY9kmg0ys7ODjs7O7J5LRRghmEwHA6lnb8YihTeWoZhsLKywnA4pN/vk8/nSaf///bePDjS/Lzv+/767ftu9A2gcQ5mZudY7jFLkZJosSRaIhk7S9GWLcdVZCyVGVtSElvlSuiw4vIfdpVklcuJYkcqOnaJdCmmZDkbsUqSKZKhuSRNcrkc7u4cOzMABoPB1UCj7wPo85c/+n2eedHbmME5M1w+nyrUNN6+fmhg3uf9Pcf3G4HL5cLm5iZ31i0sLGB+fh63bt1iV8bnnnuOgxPpZU1OTnK95a233kKz2cTMzAzvpGj3QqlD2q0FAgHs7OywgCSZT+XzeVb63d7eRqVSwczMDCYnJ/nvglrKG40G795o59LpdOByuXDmzBlkMhmk02musSSTSVy4cIH9W2w2G0/QBwIBeL1eJJNJaK2xtbXF80eUOqQ6mDVVR8EQeGCF7HA4kGHNXzwAACAASURBVEqlDjVsKggPQwLKAaGdAEmhezweOBwO1kmizqdqtYrFxUWetyB5ckpBUWqHOr/oqp9c+Oj16b2SySRqtRo2Njb4ipxOwkD/pE9X3dTxRbMYVOugk7s1j060220Ui0XWtvL7/SiVSryTKhaL3F7q8Xj4pFyr1VAulzEyMsIS7W63G61Wi6+kq9Uq7t+/j263C6UU5ufnsb6+jmKxyF4dS0tLyOfzUEphY2MDLpcLWmsYhgG/34+NjQ0AQLFYxNLSEr/3ysoK0uk0ut0u7xBI+iSVSiGVSmFqagqzs7MwDAMzMzN48cUXkc/nueW40Wiw8jBJm8Tjce4Oo53JvXv3WCqedo5k3auU4hP96OgootEop5FGR0d59wMAS0tLCAQCmJ6e5t8hOT2SijIFg0QigWg0it3dXRiGgQsXLuC5556Dy+Vi6X2Suvd6vbyjId0z+rms3Ye0u7I2agjCSSIB5YDQYB+lC4C+BAq1XIbDYTgcDiwuLrJPN3mU0wmIdgJ01Qr0/6M7HA4Ui0Wenbh///4eKRVK72xtbcHpdPIOiEQSyap2bW2NZTfoqttut3PQopOudYeyvb2NZrPJMxlkgUs1FbqP6giRSISnvev1Ora3t+HxeHD58mW4XC60Wi1sbW3h2rVryOfzCAaDsNls7Ady584dFAoFLvTPz8/zSd5ms+HKlSssytjtdpHNZjlNk0qluGhNV9ZkXEXptPPnz+PZZ5/lrrdMJoNEIoFEIsHS8Ha7Hd1uF/fu3UO322Xp9lqtxhcK3W4XmUwGtVoNb775JhwOB6LR6J5aF9BPbfr9frjdbvYeoU4zmoInjS66+KDfRbPZ3HMh0mg0OKjTxUc8HseP//iPIxQKsRIxdQFqrdkojHYkNEVvldM3DIPrJVJ8F04TCSgHhLqTSGYDAPtTUAvm2NgYa2ltb2+zjIfWmovMwWAQSqk9sxxutxuVSgW9Xo9rGOTzfe3aNZRKJZ7OpqvxdrvNZlqjo6M8nU7tsyREGIvFOHhtbm7yPAftkHK5HJRSCAQCLCLY7XaxvLzMhd9kMslBlIr/m5ubyOVyqNVqiMViHDja7TauXr2KxcVFhEIhBINBzt3/1E/9FBKJBNeKxsfHOV3j9/uRSqUwPT3NnXDr6+tc7zhz5gyee+45ZDIZDr6UzqO6xZkzZ/DCCy/wECXVK6LRKFwuF+7fv89+6pVKhWtc5OFOMynUzr20tIRisYhSqQSXy4VCocDNBbQOMr6y2+0IBAJ82+/3c8DIZrPY3t7GM888w3Mu1GxBuzn6/VNKsVQqIZlMIhaLodlscqCLRCJIJpNs+EW7KtrNUCu1dRjWbrfvMR0ThNPi3eUVe4pQdw0Vu+nq0+l0olgsIhAIwOFwYGxsDL1eD16vF6VSCeVymWsMTqeTXf8KhQKmpqb2qBPv7u6iXC4jHA4jnU6zXIfb7WZp8vX1dYyOjiIcDmNjY4NlQejkPjU1hbW1NRaIpHqAw+HgfDx1NXU6Hdy7d4/rCKVSidVmNzc3kUgk4Pf72awJAKvzrq6uchqICsDdbhfFYpFVcCuVyp6By0gkgtHRUdy+fRulUgmdTod3SBsbGzy97nA4WIqFvM6pW+nZZ59lBeJ8Po9cLscaVXQfteNSyolakdfW1vD8889DKYUf/OAH0FpjbGwMsVgMNpsN3/ve97hITa3eADA3N8dT7js7OwgEAgiFQpz2ol0jebBQJ5lSineMNpsNmUwG4+PjWF1d5RoYSebTrpLeNx6Pw+v1Ym1tDZ1Oh6V3KLWolEIwGOTfJaUz6/U6Bw3SFaMUKgAJKMKpIjuUA0JXeNTZRS2vPp+PdwCk/ktdPOl0mocTKX11584drK6uYmNjAwsLC5ymonbZcrmMYrHICrIejweJRAKZTAYvvfQSgsEgD/1RGonmT+gEprVGJBJBtVqFz+djvSgqZFMqZH5+HsvLy9jc3MTS0hKWlpZAoprkXEh1AwooLpcLfr8fd+7c4StnqrV897vfZSHHcrmM27dv82eRTCb55woEApxW8/v9rMBLcu69Xo/l0n0+H0usA/2ANjbWF5t2Op3odrtYWFhgCZh8Ps/1BdLAUkpx51o0GkU4HIZhGMjlcggGg5iamkKpVEIqlcJ73/teBAIBpNNpHpCkTjASt0wkEtjc3EQ8HofH48HExAT73FSrVYyOjnLLdC6XQ6vVwsjICO9Oqaju8/mwurqKUqnEMzQUdGmXQe6LVvVmr9fL6avx8XGu0VCnHP09UvMIqQpL/UQ4bSSgHBCSWqG2UurKIk0tEnGkmki73Uar1YLL5UKlUkEqlcLIyAhL3NtsNu4oKpVKXMC+ceMG1tfXkc1m0ev1YLPZsLu7i1AoxNpQWms2ODIMA71ej9dQqVR4wK1YLPIOZWtri0UKV1dXediOCtfj4+Po9Xq4c+cOn9BppmVwst7pdOL+/ftcmPf5fNjc3ITWmlNA1A67vr6OSCSCubk5OBwOJBIJvPe970Umk2ErXdIf83q9uH79OlZXV3lavFqtsvw7XWWnUilOQ1lbnb///e9ja2sLhUIBWmusra1xrQbo+77fvXsXvV4Ply9f5tmRW7duYXt7G1NTU9xdRU0UJJevlOJ2b9qlzs3NwWazcRCn4U76nRuGgUwmA7/fj2AwyEFxd3cX8XgcU1NTAIBbt26h2Wwik8lgcnJyz+ft9/uRSCT2fP5Uh9nZ2YHNZuNWbIfDgXA4vKetnKb9d3d3xQhLOHUkoBwAKqTTLoBMj6j4SgXWdrvNQ4Xkd9Fqtbh7h3y9SVBSKcXtuCT+R+mj1157DTs7O8jn87DZbHxVv729zQXYer2OcrmMpaUlrK6uwmazsaSL2+1GvV7HrVu3sLa2hoWFBZ7fcDgcWFhYQDabhWEY7PpHcyPkrUFzDZROoc+CXkspxQ6SzWYT8XgcQL+mE4lEoJRCNpuFUgrT09PskFipVDA2NoZCoYBbt27xZ1gqlfDqq69ie3sb4+PjLBFCTQg080KSM9R0cOnSJfj9fpahJwMom80Gv98Pn8/HhWqSLxkZGUEmk8HKygpeffVVtu6lDikKxNbOPKUU/H4/1tfXeefo9Xp5Gp9ann0+H9LpNHw+HyYmJhCPx3mYkdSY3W43kskkZmZmEAwGOR12EKjF2mp/QOtLJpPcwUZI/UR4XEgN5QBQy7BhGLDb7YhEIlwgDwaDfMVIFrDU2loqlTivTh4p1ELb6XSwvLyMQCCAxcVFNBoN2O12zM3NcTdUu91mgcR4PI47d+6w78Xq6iqazSbu3bu3x2v9/v37mJ+f55Pn0tLSHj8Lasctl8vo9XqIRCKYnJxEKpWCw+HA8vIyK+mSuRWlVBqNBu7cuYM7d+5wG/La2hqUUjzDQqq7r776Kg+DUo0glUohFovx5zkyMoLbt2+znhVJwM/OzmJychKVSgVTU1OIxWIIh8PIZrM8j0NzLL1eD88//zyvl9JE0WgUy8vLnCqiOZxKpcIeIPV6HalUigcry+Uyrl69yhcDq6uraLfbuH//PrxeLw8ibm9v46WXXuLCd71e5869dDqNqakpuFwulsunz8o6hEi7nmQyyTvZw+hpkV4b6cBRMwH9biuVCv9dDs6fCMJpITuUA0Atw6QBRYGjWq2yMCGlZ+ikms/nWeyx1+shFAqhWq1yZ1iz2cTdu3dx+/ZtVKtVnk8IBoMIBoMYGxtDq9Vi/4179+7hjTfe4OL72toan1Tfeust5HI5LlCXy2UUCgX2J/d4PNz9FQ6HWZgxlUqh2+1Ca42NjQ3WBCPf9TfeeIPboO/du4evf/3r+OY3v4mdnR2k02lWRZ6bm8O5c+dw+fJlbjKgDiZyQqTdFe0AnE4nfuInfgKxWAxXr15FsVhELpeD2+3GuXPn2K+cJs17vR5SqRTsdjtu3rwJADw17na78eKLL8Lj8bDO1vLyMgcMv9+PaDSKeDyOZrOJmzdvstf6yy+/jLm5OQQCAczNzXFaLRwOc1PDzs4OqtUqX/13u12Wtae2XfKSTyQSXLsA+hbG1MBBro40ywL0u+ZIDXiYaOd+kNwKmZt1u11WDKY2aGoPJ9Oxw7y+IBwFCSgHgDpvaD6BBtlIGp0G6ihFsru7y06BNFFOg3sk61EoFLjVlqxb4/E4KpUKnE4n5ubmuN2W8uKFQoGFEiORCMLhMJ577jl0u128/fbbaLfbePHFF9nnnIJOKpVCIpHgAUcSIiT/jbfeegtvvvkmF7Oj0SgmJibQaDRw69YtAP0T482bN1EsFjE6OsppoYsXLyKVSiEajXJnU6lU2qMvRTuZb3/727h9+za3t/r9fpw9e5ZlSWggkAZF6aqdmgoo9Uf6XJ1OBxMTE+zz7vf7kc/nsbKygnq9zoq8DocDwWAQpVIJCwsL2NzcxNjYGHdvPfvsszh37hwAcD1idXWVLQLIU52K6qOjo1xDI72xQCDAOxEKGNTpZzVMow5B2qXS73uYovTDsLpEUrqLdiR+v593XPSesjsRHgdyyXIAaMiQFIRJIykYDGJ5eRkulwsejwf5fJ7TEHTCpCnyq1evolqt4vz58xgdHcX6+jqnfzY3N/kquVgscp0mk8lgc3MTb7zxBnq9HkZGRpDNZlklNxaLYWpqCm+++SYajQbn610uF27cuIH79+9jZmaGU1/pdBrlcpkL9NlsFi6Xi82WSGGX5jBIvJAm27e2tpBMJtmKlgYNAbAlrsfj4W4oap+9du0aYrEYotEoG0ytrKzwyTcQCGBpaQn1eh3pdBpra2solUpcryDV3U6ng06nwy3TpCxASsRWe4Hp6Wkopdh4bHl5Gevr63A6nRgbG8Po6CgPnGYyGU5bpVIpAOCGhrGxMTQaDbRaLaysrLB4J80AkR89ScRTvYlUFEj+JBwOcy3O4XAgm83uSUUdVj6eGiao1mX1zKHakVWiXgKK8DiQgHIA6D8+pZharRb8fj/PhSilMDY2xumwYrHIWk3U9pnNZjE+Po7Lly8DALeL+v1+tFot9poPBoOo1Wpci6jX6/jWt77FRe1gMIhCoYBLly6hXq/j9ddf5+6vVCrFOxJKf1QqFaTTaZbXX1tbw8rKCsLhMKrVKivlkhWsx+NhnxdKxdy7dw/f/OY3+WdZXV1lReFisfiOwccbN26gVqshEAjwFT4NLmazWeRyOdy9exf1eh02mw3xeJxFKC9dusQ7M6UUW/RubGzg/v377DtDu4JsNotz587h5s2byGazPOuzvLwMwzAQi8X4pJ5IJDA2Nobl5WXecVIHHQ1s0s81PT3Nv8dUKoW1tTUUCgX+jCuVCnK5HJxOJ1KpFO9QKaDQMGGhUOD018rKCl9IUDs1DUIeBa/Xy4Kh9B5EMBhEpVJhXTbp8BIeBxJQDsDOzg5LexQKBb7KzGQyCIVCLN+RTCZx/fp1FItFJBIJTExMsPz6tWvXuPA9OjoKwzBQKBQ4leLz+VAqlTA1NcUT4NReDPRTToFAABMTE3jrrbf4BOxyufDCCy9gfX0dIyMjaDabWFtbw9zcHA8g3r9/n2soNpuNjZYoPUdSIolEAnfu3EGlUmHPjFKpxMKG1IV0+fJldDodbG1tYXd3l02mAHDDQj6fR6vVYtl3kgUhR8L79++zcvOZM2dQLBZhGAYCgQB7ulDAUkqx0+LGxgba7TaeffZZTE1N4dq1a6jVamg0Gkgmk2ySlcvlMDY2hmQyyRPzwWAQKysr3M1FciQE+dnQ9D0pGtAkvcvlwtmzZ1kF+dq1a4jH4xgdHYXdbucLgV6vxyoJNA9DSgl+vx9TU1MnsmOgjkLgQSsxQQZdJMRp7dQThNNCaigHgGRSlFLI5/MsDUIFdJrLoCE2SvVQKqNSqaDT6SAajfLQYSgUQqFQwPr6Ok+R7+7u8ut6PB58+9vfhmEYeOmll5DP55HP5zE2Nsb5dzphUKF4Z2cHN2/exN27d5HJZPD8888jFArtOdGR/S2lXKgLi4bp6Oq50WhgZ2cHi4uLKJVKyGQyCAaDLDty8eJFhEIhbGxssER/r9dDr9fD/Pw8FhYW2A/+/e9/PwtYkuwKKQCPj48jlUohHA5zACPXSlLgvXXrFqdtaJCUDLvi8Tinw4AH6R4asDx//jwymQzC4TC7E3o8Hk530e4TABe3tdashXXu3Dlu5yb7AQCcaqNpfqsp2cbGBhqNBmKxGNLpNKLRKMuoUNA7Cah2R40bg9CuS9JdwuNCdigHoNFowGazoVQqsYHU+vo63n77bU6d0JQ5uShScdfpdHLHks1mw8rKCus4kYsgBRNyXxwfH+er7Pe9730oFAqcQqH24larhUuXLuH69euYn59Hq9XiL5LaIKVaqgE899xz+NrXvsYdV5OTk2g0Gmg0Guh0OlwIHx8fx8bGBsvmG4aBixcvYmZmhtuNd3d3MTMzwwKOV69eZaMtmp158cUXeZdAjpXtdhvnz59HNBrFN77xDUxMTODy5ctot9tYWVnhIjO5QKZSKayuriIajbKc/Pnz52G323H9+nUOPuPj4yyFQpI0kUiEa18A+POhrity36Sg2ul00G63OZgA/cn62dlZbgigGZ16vc4T9/T5UcAkWfidnR1UKhWEQiEW9zxp7xFq6R4GeblIukt4XEhAeQTdbpfNjbTWAICpqSm+IvR6vZiZmcHi4iJcLhd+7Md+DDdu3GC1X7oKJk9zt9uNcDiMubk5vPbaa6hUKmykRS27a2tr0FpjfHyc6wmkZmsYBu86KNVDkudaa8TjcVYfppoPNQpsbm4iFAqxdwoZSt29e5fVcGlAcG1tjQUjKYiGw2H4fD5umc7n88hkMiiVSrxLoGBJOw5S9SWVgFqtxvpa5LdSLpdx9uxZRCIR9lNxuVzodDq821hfX2dlgEuXLsFms+ErX/kKOp0OZmZmMDExgbt373IwoC40qvEAfWmcZrPJgpG0S6O2Wlo/FbRpgJCCQDqdRjabRaFQQLfbRSwWQ6vVYh/6YrGImZkZJBIJGIbBFtDUTGB1VXxciHmW8DiRlNdDIMXfra0tTqVQPprSHY1GA+VyGTs7O/D7/Zxrp06wQqHANQtSuKVOJRIDpGlumjCneYzLly/zhLjdbseZM2cAgBsDSBbEMAw888wz+MAHPoDz58+zEGSn0+Er72QyicXFRSil8MEPfpBl32dnZ9lXIxAIwOPx4Nq1azwbc+bMGfh8Pt6tkGYVCSrm83k0m022LaYaRSQSQavV4hMarX9mZgYzMzOsYkxe7LVaDYlEghV7qYOJoN0ESYnU63XMzc0hGo1ic3MT8/PzrGRAQY8CF6WpKDhbJeepXZl2f06nEz6fD71ej4Ma1V+oXbtUKnHTQSQSYU+ZSCTCRXvggcIABTJA0k/CuxsJKPuws7OD9fV15HI5OBwOpNNpAP28dSgUYv0oj8eDxcVFnnvQWrPvCMmjOBwO9rCgVlZyXST/kGaziVwux9PdJNVBNrs0ab++vs7eIKTESwKOmUwGc3NzuHTpEg8B0tT4iy++iMnJSczOziKTyeDs2bMolUoolUoYGxvD7u4uSqUS7ty5w8N3vV4PV65cQTgcRq1WQ7FYRLVaZc0qa62oUqlgfHwcOzs7eOaZZ3D27Fn4fD5MT08jmUzC7/fD6XTyIGC320U6ncbly5cRj8d5B0Y2y7OzszwcSZ1twIPuKZvNhtnZWVy6dAm9Xo9/BzQ4STUOu92OYrEI4EFAoTkQaqkl35dWq8XzM0C/FZqEHSORCB9rt9vsc0OfARllWW14KaBY3T6H1ToE4d2CpLwGoMI1FbIpdePz+ViJl07gS0tLCAaD7C9CKrjkXUH1BMqte71eTE5Owu12o1wuY3R0FN1uF06nE4lEgjuMSIuL5iaoW2ppaQkejwfPP//8Ho9yalemk5nL5YLL5cLS0hJPYFMKh1pJz507h1wuh8XFRcRiMYyMjGB9fZ1rBRsbGxgZGcHo6ChCoRBrXWmt8fbbb7Mzos/nw82bN7GwsMA1CpoBaTabXASnQjoJL1arVUSjUX4/mm/Z2dlBNpvFzMwMfD4f7t69i3A4zCKItDsiNeJWq4WZmRlsb29zUwDpmTUaDYTDYe64IrUDqilQ6zc5OFKQoQlzCihWrJ441EBBn89gJ5VhGGxoRkObgvBuRi6XBqhUKlxwJe9vOulvb29zETsajfIwYy6X41TH+vo6F+U3NjawuroKoC+YODExgV6vxyZcVDDd2NjgYvfIyMieifO1tTWWStna2kIsFkMmk2GRQZ/PB5fLhVqtxp1OQD8wUsfU7u4u8vk8633dvHkTu7u78Pl8yOfzuHr1KhfuSXSQ0lbUEUXNB6RqTPpkGxsbaDabCAaDLKAZjUa584nep9vtotFowOv1Ynd3lz9Dat+l6fuJiQmMjIzA6XTi/PnzSKVSbHtst9sxMzPDas40XHjmzBlcuXIFkUgE9XqdBwmpIE/+KqTISwGFrAbIPpkm85vNJndQdbvdPR1c5DcyMjLCRmhkqTysNZc+TxFnFH4UkIAyQCgUQjqdRjgcZslyGmIrFAo8rEdFVq01m0hR624+n0e9XueOrGAwyN4Zq6ur3F7s8XgQDAaxubnJQYvSaAA4HUYnIhJzpMJ5r9fj3D41DxAUoCi1BvSvyElOPRQK4ezZs9xSW6/XecBwZ2cHoVCIi+rU8kw7jkgkApvNhmw2i1KphHQ6jZmZGa4r0AwE7YwG5yUKhQJsNhtLz5AcPHVYpVIp9Ho9xGIxPP/885iYmOBJe6phrK+vAwCmp6dZWfjs2bMcrGlYsNFoIBKJcMcVmaIR1mYBWg/Jo1hrIAQ1FVg92x8WUEiuB5D6ifDuRwLKADSdXa/XsbGxgeXlZR5cpDQPdWyRonAqlUI6nUapVOIivsvl4jQO6XGRJMv8/DyftPx+Pw8cttttlkAhiZd2u807jXg8zva3NHtCkvEOh4OnoiuVClZWVlgkkFJ21KlFDQGUzvN6vahUKlhdXYXWmlNepAfm8XgwOjrKLdEulwuXL1/GM888w9Lo1CWVSCTYG4SGNUlnilJWZAxG7btUPG82m1BKIZ1O80wOKQ1TDSabzXLrdTqdZofHycnJPTWd7e1t2O121Ot17p4rl8vv0MyitBcAluK3thYD4LQXBT16DglxUs1p2MS7dXJezK2EdzvHCihKqV9QSt1QSvWUUlcG7vuHSqkFpdRtpdTPWY5/2Dy2oJT6tOX4tFLqu+bxP1BKOc3jLvP7BfP+qeOs+VHU63Wsra0hl8vxTEEikeBunkAggFgsBrvdzg6LpA5crVYRj8eRSCRYy4qKyYFAgIvwZO1Lj6HHUZcRvW8+n+c5FrKQ3drawr1797jGQzpcDocD1WoVjUYDP/jBD7C7u8vtzXa7nXXDKA2Uz+e5kL27u4vZ2Vn4/X5EIhH0ej2srKxgaWmJnQlpMC8Wi2FsbAzpdHqPkRZ1ok1OTu7pZKNUGtDfYTWbTf7MqKZCaSfqxqKGArIBTiQSLB1/+/ZttNttDjTWIjjVmjKZDLTWqNVqPLxJsznWxwP9JotkMolQKLSnZkLqwIZh8LFarbZHhJHkTkiccvC1gQcBRXYnwo8Cx92hXAfwcQCvWg8qpS4A+EUAFwF8GMD/qZQylFIGgH8F4CMALgD4G+ZjAeA3AfwLrfUZAEUAv2we/2UARfP4vzAfd2rQlWYikUAymeQiLikO+3w+LvrSLIXD4UAul0MgEMB73vMenDt3DjabDcVika92bTYb+4BQp1ehUEAkEsHExATu37/PAYVOgHTVToXtZDLJ9q9Uk1hdXYXD4WBplbt372J7exvJZBIul4trPQD4JEvqt16vl2VEpqenceHCBVy+fJl3MtlsFouLizxbAoCfp5TieZlAIIDR0VE8++yzbHlM0+bNZpMNqgDg7t27qNVqPHVOuydyuKSW3kgkgu3tbVZrppkQ+l0ME1SkgES2whQ4qfvL4XC8o8gOAJlMBhcuXNgjxUK7FmqK0FqjXq/vmUp3OBy847Gm0axIQBF+lDhWQNFav621vj3krpcBfEFr3dRaLwFYAPBe82tBa31Xa90C8AUAL6v+2eqnAfyR+fzPAfiY5bU+Z97+IwA/o4ZdCp4QlMP3er3Y2dlhvxPaUdCJm05qVKSntlm/349YLIZ4PM4nRKfTySdU6uIiE65UKoWJiQkUCgVOBVnz/VSHIan5sbExbquNRqPY2NhArVbjmZaNjQ2ekKa2YhKJJK/0VCqFTCaDiYkJ9iAnqRAKPvF4HJOTk1wvoSYBmm25e/cucrkca1m99NJLOH/+PO/OqJvLZrNhdXWVzaTIqyUUCrEnPb1nu91m9WMKTCRY6fV6EYvFMD4+zv40gxPgVHSniwBSDr537x43DlDtyQoJc9JrWNNTFOCpFjWYMqMOtP0CitPp5HkbQXi3c1o1lDEAK5bvV81j+x2PAihprTsDx/e8lnl/2Xz8qUMKvX6/n1tOySUxn89jZGSE00N08q5UKnxCpN3Jzs4Otre3uTZDAYbUiEdHR7Gzs4NcLsdDe+SzopSC2+1mXSvDMJDL5ZBMJpFIJDiA0SwITYLT7Afl+guFArxeLzKZDO8cRkZG4PF4eOqedjCUYqMGhampKQQCARiGwSrJ5XIZiUQCc3NznBpKJBJ8JU41Fbvdjmw2y8OKWmsYhoFSqcT6XJReAvpX9KQG4HK5sLW1xVbJfr+fBw2BBxprxKDvh9frxejoKO/KrIKP+0G1LYJmZ8iHZnCnYRgGxsfHWTdrGNamBEF4N/PIgKKU+opS6vqQr5cfxwIPg1LqU0qp15VSr9PMyHEgjSYSJCTr2Vqthmw2y0XYZrPJbn40Hd7tdjnltL29jVwut2eXorVGOp3mK2fqKKOdUS6X4zoEaUaRlEiz2UQ0GoXb7UatVkM4HMaFCxcQDofhcDgwPT3NNR/ggZQ5FcrdbjdbGicS1k85wQAAIABJREFUCQDgaX+yj6XhQ4/Hg7Nnz/LJnAQWI5EIp5WAB51QdLVPxykou1wuDliZTIbtjekzpN0RncxpQLFUKnEaigZC4/E4K/jS+9LOY3DXkkqleGdiDbzDsNaYCLpNMjDDkGFFQejzyP8JWusPaa0vDfn644c8bQ1AxvL9uHlsv+N5AGGllH3g+J7XMu8PmY8fttbPaq2vaK2vUPfTcaCrdp/Ph2q1yievSCTCtrnUgktpKpvNBq/Xi0ajwTsFoJ922draYntdl8uFyclJOJ1OljWnom+lUuErYp/Px8ZYfr9/T5CjnRMAlrafmpriqX6a3fB4PFwQpzqE1ayKBvM2NjY47UYukSSFMjU1hUQigfPnz7N3eyAQeEdrbbvd5sHOdrvN8yukadZoNPgkb7PZ+DOhnYk1IFCw29raAgAWZgwGg5zO2t7eZktl4J2+H9SQMDY2Bq/Xi0AgwEKOg1B9xfoa1mL7YV0VBeFHjdO6tPoigF80O7SmAcwBeA3A9wDMmR1dTvQL91/Ufa2LrwH4q+bzPwngjy2v9Unz9l8F8P9p0sY4ZRqNBqecyBmP5DNI/sPhcCCZTKJeryObzbJcfbPZRDqd5tbgbDaL+fl5RCIRnvAeGxtDNBrl+RatNe7fv8+zL6FQiNNU1J5LdQJqX6VmAZvNxnMa1l0DqepS62y73ea0Db0W6Y9tbGy8wwskHo/zZ3Dx4kVOvZE/DE2DU0ChFKHdbmdRSgpY5XKZgxh1rdGAIgVG68nc6/XC7/ezQkGpVOLJehqgbDabvIuh38cg1ERADQUkmjkIBSXrDoWe53a7xZNdEB7BcduGf14ptQrg/QD+RCn1JQDQWt8A8IcAbgL4TwB+VWvdNWsgvwbgSwDeBvCH5mMB4H8G8OtKqQX0ayT/xjz+bwBEzeO/DoBbjU+bSqXCJyiSHvH7/XziHR8f5zQNtcN6PB6+oqZOKxq2y+VymJiYYMl0Kt63223YbDZ4PB6srKxga2uLNacA8OuTSKXH42EpD5KSB8B6UgB44BLon+SDwSCLRpL1rlVfinZSNG9TLpdhs9n2OAGSNIzX6+VZEwA8FwOAW6u11mg0Gjx4ScOhDoeDT9iRSASJRALtdptFNAeL24lEAo1GA8VikT9fatulXVq5XOaa1DBCoRCSyeQey2Ga8bFCdgODKaxEIsGfqyAI+3OsSy6t9SsAXtnnvn8K4J8OOf6nAP50yPG76HeBDR7fBfALx1nnUeh0Ouxj0mq1UK1WMT4+jmq1ioWFBe7eofQR6TrRlXggEGDpjsXFRXS7XS7cbm1tccsppYjIeCqbzWJtbQ0jIyNcY8jn8zw8SCKF5XIZkUgEhmHscR20rl9rzbMvZN9LKsIUpKid1uFwYHZ2FoFAALlcjiXkg8Egv2a320W1WsXo6CjvDKLRKM94ANhTQwL6XVDlcpm70GgCnWoVVCshRYDB4nU8HsfS0hJWV1fRaDQwPT2954RPLpXUITYMZXquE4FAAOVyGdVqFSMjI3yc1AsGkRqJIBwM+Z+yD5Rn93g87GsSjUZx7do1zM/PY2trC8ViEaFQCI1GA8vLyyy+SKKNXq8XdrudRR3PnTvH3iE06U6KuJQao1mUyclJBAIBzM7Osp3we97zHkxOTrJ9L52UhwUUuvom++KRkRGeoSgUCnC73ZxGoxRaOp3mANVoNLjTiqAUFvm5U12JAgT5f9hsNg6Q1MHVbrdRq9VY1p4Uf4F+SoqcDQcho6xhOyagf7KnQdNBG9z9MAwDPp8PtVqNW4ip4UDMqATh6EhA2QeaNQkEAlz4JekUkuUgnS6aUt/a2kI2m2XlWa/Xi83NTdTrdYyNjSEWi7FhlMfjwebmJlZXVzkwke/G9PQ0n9zj8TjPdYTDYfaxJ9dAn8/HJ3MrVGCmVBBNppM7JAlJUprHagZltSymq3NK21HBnYy6isUipwWpi63RaHBLNNBP2VH9x7ors2LVzhqE0nHkMz8IuUzuNwsyDFIuoBbi/Yr6giAcHAko+0DqvcFgENvb23C5XCgWi2yWRdpRVAe4dOkSQqEQt6aWSiVsbW2xWvDY2BhPbofDYZw9e5bbfCklBIAdCCmIUGrKeqIjIUpqM6a0lhWqy1QqFdbsovoGzcHQSd6qWdXpdFAul7nTy/p5WNN2hmEgGAyyki7woM2aAgdZ37rd7j1WAMDhJsdpmj+dTp/YPAdJ/FNx3pr+EwThaEhA2QdqGaaCsnVGQWuNyclJ+P1+bG5uot1uIxKJcFqJDJ42NzeRzWZ5yJA6n3w+HyKRCJRSCAaDSCaTiMfjPDV/5swZTiVRwdsaUCiVVCwW4fF4YBgG7w4IatOlmRGHw8GFdLILpl3YoLMgCSpa37NcLnO3E0Gy+nSVT34mNBRJxXt6fZqledhk+TAMw8Dc3NxD/dOPQiAQYBFOkn2RAURBODoSUPahXC5z7p8KyiRT4vf7EY1G+QRH+XfDMLhQTjUREm4kPahAIICRkRFW/KV6wsjICDKZDF544QU2k6JaBLC3lZUEFUnqnmZZCOrwosl6arMFHsibkJGUVdiw1WqxX7p1N0H1msFpcKppUFG8Vquh1WqxdL3b7WYJFkpXHdVX/TTcDn0+HwzD4DZvSXcJwvGQgLIPJLtONrSk2ru7u4uJiQkuhsdiMSSTSVSrVfZ6p9Zc0uCamJhAp9NBsVhEqVRCMBhk2XoyqiLbYPJUIbkOqnUMnuzC4TAX3K1aYQC4pkKtxRTUgAfF+kgkArfbzdPmVJjf3t7m1loKKPTzDCt6U02oXq9zcLKmyrxeLzqdDiKRCKsDD6uDPAmsLcTWNm1BEI6GBJQhUIeX1ppFHOnq2uVysQcJ1R/m5ubg9XqRzWZx69YtAP10UL1eRyQSQSqVwujoKBeqKSXWarVQr9e50K2U4velgLKzs8NpIis0IGl1QaTg0263ubZBsi60C6HHkOxKs9lEoVBgUcpyuQyv18tBjtJi1vZhK0qpPQEkHA7vGQD0+Xz881AgeZqUd63T74dJwwmC8E4koAyB0jdkHdtqtRCJRNBsNuH1etk3w2q2lEql0G63kc/n2SGw1+uxBL5hGJiZmUE8HmfrX2tAsUp8UBsxpbKGXTnT5DZ1epGOGK2fApFV5ZZSdiQ0QLuUzc1NniWhIUg6uVLq72GyIz6fjwUbB+sclPayyqs8TYVvkrd52tYlCD+MSEAZQqfTQalUYh95utInnS6v18utwXSipVqG3W7ngrnX6+XdDPmDeDweuN1uVhKmyXPryYzSZXT/sIDS7XbZmIoGI0mfqlarcWuu9aqbBCNLpRIAsKQ8yddT6ofSWOQdT7uchzE+Po6zZ88OTYuRttnu7u5TtTshotEo658JgnB0JKAMgeTcqR5Chk/tdptPrvV6fY84YqvVglIKMzMzsNvt2NnZ4edZpcfGxsb4ah54IOBIQcSabgL6wW1YQKGWZnoNh8PBhflyucy1CutzPR4PS5VQmzJ5x1MNiMQkaUiT6gyPwuVyIZFIDA08lPYi9eKnDaqPCYJwPCSgDGFraws7OzvcvUUtvmTZu7Ozw51QAFhPKxAIsGeK1ponuKlbi078Sin0ej2ui9D8Q6/XY092Mqcitd5BSE6dCuL0L/CgxdcqI0+MjIzAMAwe1nS73QiFQiyVEgqFuGZDQfO43VWU9qLbgiC8O5HLsiFks1nUajVuuXW5XJxO8vl8qNfrPGsB9LugaJIdeOD6F4vFuH5CcvGE1V3Q6gQJgGciAHCn2SDdbpdTbrVajRWRybiKRBkpGLTbbfZY6fV6LMYYj8f3SMdT8CLPlv2K8YeFpPZlJyAI717kf/cAvV4PS0tLaDQaSCaTKJVKPARIV9pUVzAMA91ul8UgW60WDMPA1tYWfD4fF8sJ623S0XK73Tz8R9InrVaLJ+CpoD24SyA3xHA4jHw+D5fLhXa7zQ6H5IQI9AcOqR3Y6/Xye5O/e7Va3TN0SIOSNE9yEkQiERa2FATh3YmkvAYolUpYXl6Gz+fD+Pg4n+SplkGaV1bVX601wuEwXC4XSqUSGo0GRkZG9kh5WFt2gQdSH+SMaN0Z9Ho9bvUlyZRBKKBQuorSY+S1TlLwxWKR1Y3T6TRisRhGR0fx7LPPskkV+buHw+E9opEPs7UVBEEYRALKALlcDtvb25iYmOBCPKkCU53D6XTC4/GwbD0V5+12O3dQUcAhS1yaXqcCPQUUl8vFHV/AA4FFkqt/WEChNBXpfdHuiQrf5CHi9/uRSqX27DYMw8Do6CicTid8Ph971JMh12CHmCAIwqOQgDIASYw888wzqNfrUEqxLMfOzg7PZJC/O9Af5uv1eiiVSvx8azcTFeLp9anYr5TitmMScyTnQquo4qDwI70OzatQ2zDwoNtsc3MTvV6PJWKG1WFopmZ3d5c9X0iuRXYngiAcFgkoA/j9fmQyGWQyGfbL6HQ68Hg8bMtLLoz1ep3biDc3NwH0B/us7cRAf3iOdiZUIyHIo2R3d5efQ4KQJJkyuEMh4yzaNdEUP+0qyNlxfHz8kS2/0WgUdrsdtVqNVQF8Pp90YwmCcGgkoAzgdrsxNjYGn8/Hw352u53rGtTJVavV2N98c3MTrVYLiUQC8Xj8HZ1RtEOhtBe1FVMh3O1271H9tSoMDwsoVIuhFBalzWj3Y7fbkclkDqRNRV70Sike4rS6GAqCIBwU6fIagIIEneTr9TrbzJLmFrX3hsNhbG1tod1uIx6P8xT9IHa7fU/rMO1QrB7qNPEOgHczVFwn7xLq9LLqcdHjyIWQAtRhBgjJ12V1dRU+n+/AzoeCIAhWZIcygMvlQjKZZNmTdrvNnU+kv9XpdHjwr91uI5FIPPQkbO30Is0tCg4UAABwHcQaUAZVgoHhOxSSc6Ggd9iCejqdhsPh2LfeIgiC8CgkoAxAsx2dTodrKHa7nQcbafq82Wyi0+kgkUg8cjdg7a6itmDggeQHGTtRSs06EzIsoNBUu3WHQv4p5Ol+2IDicrlw8eJF0bQSBOHISEAZgE7WpOMFgGXcSZakWCzC6XQeKJgA4JM98GD3YQ0W1D7carUQDof3TMqTSOTgDsWqTmwYBux2O/x+P8Lh8J7XPgzkKikIgnAUJKAMYBjGnhkTclo0DAPj4+PI5XJsnHWYOoW1dZh2EtZdBAUUmnuhgjoNRw4GFNqdWJ9PsioyPyIIwpNAAsoAXq8XyWQStVqN3Qx9Ph+r8pLZ1GFVc62tw9Q1Zt1FkARLtVoFsNehcXAWhXYoVlwuF7rd7p7djSAIwuNEAsoQtNbY3t5GoVBAMBhELBbjtBKZah0WCh5WKfvBHQoAVKvVPd1f9NxOp8PPpcl9K/T8wZ2PIAjC40ICyhDa7TZu3bqFbreL2dlZAA9Uf0lg8bBQ6/DIyAjvbqw7FCqkU0CwdlpZC/Pdbhda63cEFOtzJKAIgvAkOFZAUUr9glLqhlKqp5S6YjkeVUp9TSlVU0r9y4HnvKiUuqaUWlBK/bYyz4JKqRGl1JeVUvPmvxHzuDIft6CUeksp9cJx1vwotNZYX1/H2toaIpEIMpkMdnd3YRgGtw4fpeBNz3E6neh2uzAMY2gdxPovQQGCWpYBvCOg0K7GKkgpCILwODnuDuU6gI8DeHXg+C6A/xXAPxjynN8B8LcBzJlfHzaPfxrAV7XWcwC+an4PAB+xPPZT5vNPjXK5jJWVFXS7XSSTSXg8Hq5L0L9HOWFTAGi322y0NQjNowzuMKydXoNDjVYCgQACgYDMkQiC8EQ4VkDRWr+ttb495Hhda/1N9AMLo5RKAwhqrb+j+wWBzwP4mHn3ywA+Z97+3MDxz+s+3wEQNl/nVAgEAlzHIIVe2qF0Oh14vd4jORgahgGbzcaDjcPSUh6PB6FQ6B0pNZKytwaUYe29fr9fZFMEQXhiPO4ayhiAVcv3q+YxAEhqrTfM21kASctzVvZ5zonT6XRQqVTg9Xrh9/tZI8swjCMX5AkKTmSoNYjNZkMkEhkasEjGnrxPjmvLKwiCcNI8copNKfUVAKkhd31Ga/3HJ78kQGutlVL60Y/ci1LqU+inxTAxMXGk9240GuzASPMoVAQf7L46LFbf98O+Dj3XbrfL8KEgCE8ljzwzaa0/dILvtwZg3PL9uHkMADaVUmmt9YaZ0tqyPCezz3MG1/pZAJ8FgCtXrhw6IAH9XQTNhJAxFikNOxyOYxW8rYHgsK9jdXQUaXlBEJ5GHmvexExpVZRS7zO7uz4BgHY5XwTwSfP2JweOf8Ls9nofgLIlNXYaa4TWmtNdJDdP7ojH3aEA/cBy2JSVdY5FdiiCIDyNHOvMpJT6eQD/B4A4gD9RSr2htf458757AIIAnEqpjwH4Wa31TQC/AuD3AHgA/Jn5BQC/AeAPlVK/DGAZwF8zj/8pgI8CWADQAPC3jrPmR6G1ZltdGiikHcpRO7wICgTHaTu2vo4gCMLTxLHOTFrrVwC8ss99U/scfx3ApSHH8wB+ZshxDeBXj7POw1AqldDtduHxeGAYBpth2Ww2VvU9KtZZlMNi1fSSgCIIwtOItAoN4PF42BaXWnVJZv64A4OGYSASiTzSlnc/6P2HzaAIgiA8aSSgDODxeNhgy2azcf3kKKZVwwiFQkfeYVhrMIIgCE8bcmYagLzfSRHYWpB/0pImNAUvAUUQhKcR2aEMQCZVQN+St9VqwTAMuN3uJx5QyE1SEAThaUQCyhCazSaAvkx8r9fjYvyTDiiCIAhPMxJQBtBao9VqseRKp9OB0+kcqg4sCIIgPEACygDdbhedTocL8tQuLLsTQRCEhyMBZQAaZKSdykkMNAqCIPwoIAFlAEpzAeAZFNmhCIIgPBoJKANYA0qz2WT/EwkogiAID0cCygA0Kd/tdvdY9YpPuyAIwsORgDJAr9dj/3jDMFiCRTq8BEEQHo4ElAG63S7a7TZ2d3dZw0v8RwRBEB6NBJQBer0e+76T0ZYEFEEQhEcjAWWAYDCIWCyGdrsNp9MJpZQEFEEQhAMgAWUI1WoVSikuxkuHlyAIwqORgDIECigy1CgIgnBwJKAMoVKpwO12o9frweFwiFy8IAjCAZCAMoDWGtVqFR6PB91uFy6X60kvSRAE4YcCCSgD1Go19Ho9eDwedDodKcgLgiAcEAkoA5TLZQDgnYnsUARBEA6GBJQBGo0G+8mTU6MgCILwaCSgDBCJRDAzMwMAMAwDHo/nCa9IEAThhwMJKANEo1HMzs7uMdcSBEEQHo0ElAEo1UXSKzabfESCIAgHQc6WQ+h0Omg2m/B4PBJQBEEQDsixzpZKqV9QSt1QSvWUUlcsx/+iUur7Sqlr5r8/bbnvRfP4glLqt5VSyjw+opT6slJq3vw3Yh5X5uMWlFJvKaVeOM6aD0Kr1UK325X6iSAIwiE47uX3dQAfB/DqwPFtAH9Za30ZwCcB/DvLfb8D4G8DmDO/Pmwe/zSAr2qt5wB81fweAD5ieeynzOefKiRdL/UTQRCEg3OsgKK1fltrfXvI8R9ordfNb28A8CilXEqpNICg1vo7WmsN4PMAPmY+7mUAnzNvf27g+Od1n+8ACJuvc2rs7u5Cay0BRRAE4RA8jgLBXwFwVWvdBDAGYNVy36p5DACSWusN83YWQNK8PQZgZZ/n7EEp9Sml1OtKqddzudyRFyw7FEEQhMPzSNVDpdRXAKSG3PUZrfUfP+K5FwH8JoCfPcyitNZaKaUP8xzzeZ8F8FkAuHLlyqGfD/QNtprNpohCCoIgHJJHnjG11h86ygsrpcYBvALgE1rrRfPwGoBxy8PGzWMAsKmUSmutN8yU1pblOZl9nnPiUIeXy+USH3lBEIRDcCopL6VUGMCfAPi01vpbdNxMaVWUUu8zu7s+AYB2OV9Ev4AP81/r8U+Y3V7vA1C2pMZOHAoobrdbAoogCMIhOG7b8M8rpVYBvB/AnyilvmTe9WsAzgD4R0qpN8yvhHnfrwD4vwAsAFgE8Gfm8d8A8BeVUvMAPmR+DwB/CuCu+fh/bT7/1NjZ2eGCvAQUQRCEg3OsIoHW+hX001qDx/8JgH+yz3NeB3BpyPE8gJ8ZclwD+NXjrPMwdLtdGIYhAUUQBOGQyBj4AG63G9FoFA6HQwKKIAjCIZCAMkAwGMTo6CgMw4A5xC8IgiAcAAkoQ+j1erI7EQRBOCQSUIZAdRRBEATh4EhAGYIEFEEQhMMjAWUIElAEQRAOjwSUAXq9HrTWElAEQRAOiQSUAbrdLgBIQBEEQTgkElAGkIAiCIJwNCSgDCABRRAE4WhIQBlAAoogCMLRkIAygN1uh9frlYAiCIJwSMRBagCv1wuv1/uklyEIgvBDh+xQBEEQhBNBAoogCIJwIkhAEQRBEE4ECSiCIAjCiSABRRAEQTgRJKAIgiAIJ4IEFEEQBOFEkIAiCIIgnAhKa/2k13AqKKVyAJaP+PQYgO0TXM5JIms7GrK2oyFrOxo/zGub1FrHj/LC79qAchyUUq9rra886XUMQ9Z2NGRtR0PWdjR+VNcmKS9BEAThRJCAIgiCIJwIElCG89knvYCHIGs7GrK2oyFrOxo/kmuTGoogCIJwIsgORRAEQTgRJKAMoJT6sFLqtlJqQSn16cfwfhml1NeUUjeVUjeUUv+jefwfK6XWlFJvmF8ftTznH5rru62U+rnTXrtS6p5S6pq5jtfNYyNKqS8rpebNfyPmcaWU+m1zDW8ppV6wvM4nzcfPK6U+eQLrOmf5fN5QSlWUUn/vSX12Sql/q5TaUkpdtxw7sc9JKfWi+XtYMJ+rjrm231JK3TLf/xWlVNg8PqWU2rF8fr/7qDXs93MeY20n9jtUSk0rpb5rHv8DpZTzmGv7A8u67iml3nhCn9t+544n9zentZYv8wuAAWARwAwAJ4A3AVw45fdMA3jBvB0AcAfABQD/GMA/GPL4C+a6XACmzfUap7l2APcAxAaO/TMAnzZvfxrAb5q3PwrgzwAoAO8D8F3z+AiAu+a/EfN25IR/d1kAk0/qswPwFwC8AOD6aXxOAF4zH6vM537kmGv7WQB28/ZvWtY2ZX3cwOsMXcN+P+cx1nZiv0MAfwjgF83bvwvg7x5nbQP3/3MA/+gJfW77nTue2N+c7FD28l4AC1rru1rrFoAvAHj5NN9Qa72htb5q3q4CeBvA2EOe8jKAL2itm1rrJQAL5rof99pfBvA58/bnAHzMcvzzus93AISVUmkAPwfgy1rrgta6CODLAD58guv5GQCLWuuHDbOe6mentX4VQGHIex77czLvC2qtv6P7/9M/b3mtI61Na/3nWuuO+e13AIw/7DUesYb9fs4jre0hHOp3aF5R/zSAPzrptZmv/dcA/PuHvcYpfm77nTue2N+cBJS9jAFYsXy/ioef3E8UpdQUgOcBfNc89Gvm1vTfWrbC+63xNNeuAfy5Uur7SqlPmceSWusN83YWQPIJrg8AfhF7/2M/LZ/dSX1OY+bt01gjAPwS+legxLRS6gdKqa8rpT5gWfN+a9jv5zwOJ/E7jAIoWQLnSX5uHwCwqbWetxx7Ip/bwLnjif3NSUB5SlBK+QH8RwB/T2tdAfA7AGYBPAdgA/2t9ZPiJ7XWLwD4CIBfVUr9Beud5tXLE2sXNHPi/zWA/2Aeepo+O+ZJf077oZT6DIAOgN83D20AmNBaPw/g1wH830qp4EFf74R+zqfydzjA38Dei5gn8rkNOXcc+zWPigSUvawByFi+HzePnSpKKQf6fxC/r7X+fwBAa72pte5qrXsA/jX6W/qHrfHU1q61XjP/3QLwirmWTXNLTFv6rSe1PvQD3VWt9aa5zqfms8PJfU5r2JuSOpE1KqX+WwB/CcDfNE8+MNNJefP299GvTZx9xBr2+zmPxAn+DvPop3bsQ9Z8ZMzX+ziAP7Cs+bF/bsPOHQ95zdP/mztoAehH4QuAHf2C1DQeFPYunvJ7KvRzk//bwPG05fbfRz9vDAAXsbcoeRf9guSprB2AD0DAcvu/oF/7+C3sLfz9M/P2f4W9hb/XzOMjAJbQL/pFzNsjJ/QZfgHA33oaPjsMFGZP8nPCOwukHz3m2j4M4CaA+MDj4gAM8/YM+ieRh65hv5/zGGs7sd8h+jtXa1H+V46zNstn9/Un+blh/3PHE/ubO7UT5Q/rF/qdEHfQv7r4zGN4v59Ef0v6FoA3zK+PAvh3AK6Zx7848B/sM+b6bsPSdXEaazf/Y7xpft2g10U/N/1VAPMAvmL5A1QA/pW5hmsArlhe65fQL6IuwBIAjrk+H/pXoSHLsSfy2aGf/tgA0EY/3/zLJ/k5AbgC4Lr5nH8JczD5GGtbQD93Tn93v2s+9q+Yv+s3AFwF8JcftYb9fs5jrO3Efofm3/Br5s/7HwC4jrM28/jvAfg7A4993J/bfueOJ/Y3J5PygiAIwokgNRRBEAThRJCAIgiCIJwIElAEQRCEE0ECiiAIgnAiSEARBEEQTgQJKILwCJRS/8X8d0op9d+c8Gv/L8PeSxB+GJG2YUE4IEqpD6KvgPuXDvEcu36gIzXs/prW2n8S6xOEJ43sUAThESilaubN3wDwAdPr4u8rpQzV9xT5nili+N+Zj/+gUuobSqkvoj+JDqXU/2uKa94ggU2l1G8A8Jiv9/vW9zK9K35LKXXd9KP465bX/s9KqT9SfS+T33+kR4UgPCbsj36IIAgmn4Zlh2IGhrLW+iWllAvAt5RSf24+9gUAl3RfYh0AfklrXVBKeQB8Tyn1H7XWn1ZK/ZrW+rkh7/Vx9IUR3wMgZj7nVfO+59GXIFkH8C0APwHgmyf/4wrC4ZAdiiAcnZ8F8AnVd+z7LvqSF3Pmfa9ZggkA/A9KqTfR9x3JWB63Hz8J4N/rvkDiJoCvA3jJ8tqrui+c+Ab6WlOC8MSRHYogHB0F4L/XWn9pz8F+raU+8P2HALxfa91QSv1nAO5jvG/TcrsL+X8sPCWToAidAAAAz0lEQVTIDkUQDk4VfatV4ksA/q4pIQ6l1FmllG/I80IAimYwOY++eivRpucP8A0Af92s08TRt6J97UR+CkE4JeTKRhAOzlsAumbq6vcA/O/op5uumoXxHIZbpP4nAH9HKfU2+gq537Hc91kAbymlrmqt/6bl+CsA3o++yrMG8D9prbNmQBKEpxJpGxYEQRBOBEl5CYIgCCeCBBRBEAThRJCAIgiCIJwIElAEQRCEE0ECiiAIgnAiSEARBEEQTgQJKIIgCMKJIAFFEARBOBH+f7eejMRWWpbBAAAAAElFTkSuQmCC\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "start_time = datetime.now()\n", "found_cipher_alphabet, score = simulated_annealing_break(\n", " ct, \n", " fitness=Ptrigrams,\n", " swap_index_finder=uniform_swap_index, \n", " workers=24)\n", "print(score)\n", "workers, trace = dump_result(start_time, 'sa-random-trigram-uniform.csv', verbose=True, target_cipher_alphabet=ct_key)\n", "\n", "fig, ax = plt.subplots()\n", "for w in workers:\n", " trace.loc[w].fitness.plot(ax=ax, color='#00000020')\n", "\n", "( ct_key, found_cipher_alphabet, \n", " kendalltau([ord(c) for c in found_cipher_alphabet], [ord(c) for c in ct_key])[0]\n", ")" ] }, { "cell_type": "code", "execution_count": 78, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "-6794.348261349827\n" ] }, { "data": { "text/plain": [ "('qkicfaygbnweojuxhptlsvrdmz', 'qkicfaygbnweojuxhptlsvrdmz', 1.0)" ] }, "execution_count": 78, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "start_time = datetime.now()\n", "found_cipher_alphabet, score = simulated_annealing_break(\n", " ct, \n", " fitness=Ptrigrams,\n", " swap_index_finder=uniform_swap_index, \n", " initial_temperature=50,\n", " workers=24)\n", "print(score)\n", "workers, trace = dump_result(start_time, 'sa-random-trigram-uniform-50.csv', verbose=True, target_cipher_alphabet=ct_key)\n", "\n", "fig, ax = plt.subplots()\n", "for w in workers:\n", " trace.loc[w].fitness.plot(ax=ax, color='#00000020')\n", "\n", "( ct_key, found_cipher_alphabet, \n", " kendalltau([ord(c) for c in found_cipher_alphabet], [ord(c) for c in ct_key])[0]\n", ")" ] }, { "cell_type": "code", "execution_count": 79, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "-6794.348261349827\n" ] }, { "data": { "text/plain": [ "('qkicfaygbnweojuxhptlsvrdmz',\n", " 'fluqbjgtpcesormiayxkvwdnhz',\n", " 'qkicfaygbnweojuxhptlsvrdmz',\n", " 1.0)" ] }, "execution_count": 79, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "start_time = datetime.now()\n", "found_cipher_alphabet, score = simulated_annealing_break(\n", " ct, \n", " fitness=Ptrigrams,\n", " swap_index_finder=uniform_swap_index,\n", " plain_alphabet=plain_alpha, cipher_alphabet=ct_alpha,\n", " workers=24)\n", "print(score)\n", "workers, trace = dump_result(start_time, 'sa-given-trigram-uniform.csv', verbose=True, target_cipher_alphabet=ct_key)\n", "\n", "fig, ax = plt.subplots()\n", "for w in workers:\n", " trace.loc[w].fitness.plot(ax=ax, color='#00000020')\n", "\n", "( ct_key, found_cipher_alphabet, \n", " unscramble_alphabet(found_cipher_alphabet, plain_alpha), \n", " kendalltau([ord(c) for c in unscramble_alphabet(found_cipher_alphabet, plain_alpha)], [ord(c) for c in ct_key])[0]\n", ")" ] }, { "cell_type": "code", "execution_count": 80, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "-6794.348261349827\n" ] }, { "data": { "text/plain": [ "('qkicfaygbnweojuxhptlsvrdmz',\n", " 'fluqbjgtpcesormiayxkvwdnhz',\n", " 'qkicfaygbnweojuxhptlsvrdmz',\n", " 1.0)" ] }, "execution_count": 80, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "start_time = datetime.now()\n", "found_cipher_alphabet, score = simulated_annealing_break(\n", " ct, \n", " fitness=Ptrigrams,\n", " swap_index_finder=uniform_swap_index,\n", " plain_alphabet=plain_alpha, cipher_alphabet=ct_alpha,\n", " initial_temperature=50,\n", " workers=24)\n", "print(score)\n", "workers, trace = dump_result(start_time, 'sa-given-trigram-uniform-50.csv', verbose=True, target_cipher_alphabet=ct_key)\n", "\n", "fig, ax = plt.subplots()\n", "for w in workers:\n", " trace.loc[w].fitness.plot(ax=ax, color='#00000020')\n", "\n", "( ct_key, found_cipher_alphabet, \n", " unscramble_alphabet(found_cipher_alphabet, plain_alpha), \n", " kendalltau([ord(c) for c in unscramble_alphabet(found_cipher_alphabet, plain_alpha)], [ord(c) for c in ct_key])[0]\n", ")" ] }, { "cell_type": "code", "execution_count": 81, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "-6794.348261349827\n" ] }, { "data": { "text/plain": [ "('qkicfaygbnweojuxhptlsvrdmz',\n", " 'fluqbjgtpcesormiayxkvwdnhz',\n", " 'qkicfaygbnweojuxhptlsvrdmz',\n", " 1.0)" ] }, "execution_count": 81, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "start_time = datetime.now()\n", "found_cipher_alphabet, score = simulated_annealing_break(\n", " ct, \n", " fitness=Ptrigrams,\n", " swap_index_finder=gaussian_swap_index,\n", " plain_alphabet=plain_alpha, cipher_alphabet=ct_alpha,\n", " workers=24)\n", "print(score)\n", "workers, trace = dump_result(start_time, 'sa-given-trigram-gaussian.csv', verbose=True, target_cipher_alphabet=ct_key)\n", "\n", "fig, ax = plt.subplots()\n", "for w in workers:\n", " trace.loc[w].fitness.plot(ax=ax, color='#00000020')\n", "\n", "( ct_key, found_cipher_alphabet, \n", " unscramble_alphabet(found_cipher_alphabet, plain_alpha), \n", " kendalltau([ord(c) for c in unscramble_alphabet(found_cipher_alphabet, plain_alpha)], [ord(c) for c in ct_key])[0]\n", ")" ] }, { "cell_type": "code", "execution_count": 82, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "-6794.348261349827\n" ] }, { "data": { "text/plain": [ "('qkicfaygbnweojuxhptlsvrdmz',\n", " 'fluqbjgtpcesormiayxkvwdnhz',\n", " 'qkicfaygbnweojuxhptlsvrdmz',\n", " 1.0)" ] }, "execution_count": 82, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "start_time = datetime.now()\n", "found_cipher_alphabet, score = simulated_annealing_break(\n", " ct, \n", " fitness=Ptrigrams,\n", " swap_index_finder=gaussian_swap_index,\n", " plain_alphabet=plain_alpha, cipher_alphabet=ct_alpha,\n", " initial_temperature=50,\n", " workers=24)\n", "print(score)\n", "workers, trace = dump_result(start_time, 'sa-given-trigram-gaussian-50.csv', verbose=True, target_cipher_alphabet=ct_key)\n", "\n", "fig, ax = plt.subplots()\n", "for w in workers:\n", " trace.loc[w].fitness.plot(ax=ax, color='#00000020')\n", "\n", "( ct_key, found_cipher_alphabet, \n", " unscramble_alphabet(found_cipher_alphabet, plain_alpha), \n", " kendalltau([ord(c) for c in unscramble_alphabet(found_cipher_alphabet, plain_alpha)], [ord(c) for c in ct_key])[0]\n", ")" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "-6762.926106391538\n" ] }, { "data": { "text/plain": [ "('giaonvysthwmxpcqkdelrfjbuz',\n", " 'giaonvysthwmxpcqkdelrfjbuz',\n", " 'olqhgkdynbfwxvaeutsimrpjcz',\n", " 0.009230769230769232)" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "start_time = datetime.now()\n", "found_cipher_alphabet, score = simulated_annealing_break(\n", " ct, \n", " fitness=Ptrigrams,\n", " swap_index_finder=gaussian_swap_index,\n", "# plain_alphabet=plain_alpha, cipher_alphabet=ct_alpha,\n", " workers=24)\n", "print(score)\n", "workers, trace = dump_result(start_time, 'sa-random-trigram-gaussian.csv', verbose=True, target_cipher_alphabet=ct_key)\n", "\n", "fig, ax = plt.subplots()\n", "for w in workers:\n", " trace.loc[w].fitness.plot(ax=ax, color='#00000020')\n", "\n", "( ct_key, found_cipher_alphabet, \n", " unscramble_alphabet(found_cipher_alphabet, plain_alpha), \n", " kendalltau([ord(c) for c in unscramble_alphabet(found_cipher_alphabet, plain_alpha)], [ord(c) for c in ct_key])[0]\n", ")" ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "-6762.926106391538\n" ] }, { "data": { "text/plain": [ "('giaonvysthwmxpcqkdelrfjbuz',\n", " 'giaonvysthwmxpcqkdelrfjbuz',\n", " 'olqhgkdynbfwxvaeutsimrpjcz',\n", " 0.009230769230769232)" ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "start_time = datetime.now()\n", "found_cipher_alphabet, score = simulated_annealing_break(\n", " ct, \n", " fitness=Ptrigrams,\n", " swap_index_finder=gaussian_swap_index,\n", "# plain_alphabet=plain_alpha, cipher_alphabet=ct_alpha,\n", " initial_temperature=50,\n", " workers=24)\n", "print(score)\n", "workers, trace = dump_result(start_time, 'sa-random-trigram-gaussian-50.csv', verbose=True, target_cipher_alphabet=ct_key)\n", "\n", "fig, ax = plt.subplots()\n", "for w in workers:\n", " trace.loc[w].fitness.plot(ax=ax, color='#00000020')\n", "\n", "( ct_key, found_cipher_alphabet, \n", " unscramble_alphabet(found_cipher_alphabet, plain_alpha), \n", " kendalltau([ord(c) for c in unscramble_alphabet(found_cipher_alphabet, plain_alpha)], [ord(c) for c in ct_key])[0]\n", ")" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [], "source": [ "import glob" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "-2516.00992398943 -3869.307250218112 sa-random-unigram-uniform.csv\n", "-2516.00992398943 -3839.3134735383337 hillclimbing-random-unigram-uniform.csv\n" ] } ], "source": [ "for f in glob.glob(\"*unigram*.csv\"):\n", " df = pd.read_csv(f)\n", " print(df.fitness.max(), df.fitness.min(), f)" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "-6794.348261349826 -12720.143220102082 hillclimbing-random-trigram-uniform.csv\n", "-6762.926106391538 -9052.2968971747 sa-given-trigram-uniform-50.csv\n", "-6794.348261349826 -12353.066243453513 sa-random-trigram-uniform-50.csv\n", "-6794.348261349826 -8615.89272592576 hillclimbing-given-trigram-uniform.csv\n", "-6794.348261349826 -11354.213044609856 sa-given-trigram-gaussian.csv\n", "-6794.348261349826 -8615.89272592576 hillclimbing-given-trigram-gaussian.csv\n", "-6794.348261349826 -12473.766416410037 sa-random-trigram-uniform.csv\n", "-6794.348261349826 -8812.095650467198 sa-given-trigram-gaussian-50.csv\n", "-6762.926106391538 -11431.418729152087 sa-given-trigram-uniform.csv\n" ] } ], "source": [ "for f in glob.glob(\"*trigram*.csv\"):\n", " df = pd.read_csv(f)\n", " print(df.fitness.max(), df.fitness.min(), f)" ] }, { "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.6.8" } }, "nbformat": 4, "nbformat_minor": 2 }