Newer
Older
"metadata": {},
"outputs": [],
"source": [
"import networkx as nx\n",
"import numpy as np\n",
"import random\n",
"import matplotlib.pyplot as plt\n",
"\n",
"from graph import *\n",
"from robustness import *\n",
"from attack import *\n",
"from recover import *\n",
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Recovery types codes"
]
},
{
"cell_type": "code",
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
"metadata": {},
"outputs": [],
"source": [
"RANDOM = 0 # Add a random edge\n",
"PREFERENTIAL_MIN_MIN = 1 # Connect 2 nodes with the smallest degrees\n",
"PREFERENTIAL_MIN_MAX = 2 # Connect nodes with the smallest and largest degrees\n",
"PREFERENTIAL_MAX_MAX = 3 # Connect 2 nodes with the largest degrees"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Experiments"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"For different attack levels (fraction of edges to be removed), perform an attack on agraph with inital diameter d0. \n",
"\n",
"After each attack measure the diameter - d1\n",
"\n",
"Perform a recovery based on 1 out of 4 possible options. Report how many edges were needed to get to the initial diameter d0. \n",
"\n",
"Attack a recovered graph and report it's new robustnes. "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Scale-free graph"
]
},
{
"cell_type": "code",
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/Users/victorialapshyna/anaconda3/lib/python3.7/site-packages/numpy/lib/function_base.py:393: RuntimeWarning: Mean of empty slice.\n",
" avg = a.mean(axis)\n",
"/Users/victorialapshyna/anaconda3/lib/python3.7/site-packages/numpy/core/_methods.py:161: RuntimeWarning: invalid value encountered in double_scalars\n",
" ret = ret.dtype.type(ret / rcount)\n"
]
}
],
"source": [
"SF = graph(size=100)\n",
"initial_diameter, initial_lcc, av = get_robustness(SF)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Targeted attack "
]
},
{
"cell_type": "code",
"metadata": {},
"outputs": [],
"source": [
"attack_level = [0.01, 0.02, 0.05, 0.1, 0.15, 0.2]\n",
"recovery_option = [0, 1, 2, 3]\n",
"num_edges= {0:[], 1:[], 2:[], 3:[]}\n",
"diameter_first_attack = []\n",
"diameter_second_attack = {0:[], 1:[], 2:[], 3:[]}\n",
"path = \"Experiments/SF/target/\"\n",
"edges_removed_during_attack = np.array(attack_level)*SF.size()"
]
},
{
"cell_type": "code",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Finished attack level 0.01\n",
"Finished attack level 0.02\n",
"Finished attack level 0.05\n"
]
},
{
"ename": "Exception",
"evalue": "Incorrect recovery option specified",
"output_type": "error",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[0;31mException\u001b[0m Traceback (most recent call last)",
"\u001b[0;32m<ipython-input-7-0d60553beac3>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[1;32m 6\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mro\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mrecovery_option\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 7\u001b[0m \u001b[0;31m# Recovery\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 8\u001b[0;31m \u001b[0mSF_recovered\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mne\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mrecover_to_initial_diameter\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0minitial_diameter\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0minitial_lcc\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mSF_attack_1\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mrecovery_option\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mro\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 9\u001b[0m \u001b[0mnum_edges\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mro\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mappend\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mne\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 10\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m~/Desktop/Complex Networks/Project/complex-networks-project/recover.py\u001b[0m in \u001b[0;36mrecover_to_initial_diameter\u001b[0;34m(initial_diameter, initial_lcc, attacked_graph, recovery_option)\u001b[0m\n\u001b[1;32m 23\u001b[0m \u001b[0;31m# Then recover the diameter\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 24\u001b[0m \u001b[0;32mwhile\u001b[0m \u001b[0mnew_diameter\u001b[0m \u001b[0;34m>\u001b[0m \u001b[0minitial_diameter\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 25\u001b[0;31m \u001b[0mrecovered_graph\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mrecover_edge\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mrecovery_option\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mrecovered_graph\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 26\u001b[0m \u001b[0mnum_edges\u001b[0m \u001b[0;34m+=\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 27\u001b[0m \u001b[0mnew_diameter\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mget_diameter\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mrecovered_graph\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m~/Desktop/Complex Networks/Project/complex-networks-project/recover.py\u001b[0m in \u001b[0;36mrecover_edge\u001b[0;34m(recovery_option, recovered_graph)\u001b[0m\n\u001b[1;32m 80\u001b[0m \u001b[0mrecovered_graph\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mpref_random_rewire\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mrecovered_graph\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 81\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 82\u001b[0;31m \u001b[0;32mraise\u001b[0m \u001b[0mException\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"Incorrect recovery option specified\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 83\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 84\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mrecovered_graph\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;31mException\u001b[0m: Incorrect recovery option specified"
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
]
}
],
"source": [
"for al in attack_level:\n",
" # First attack\n",
" SF_attack_1 = targeted_edge_attack(SF, al) \n",
" diameter_first_attack.append(get_diameter(SF_attack_1)) \n",
" \n",
" for ro in recovery_option:\n",
" # Recovery\n",
" SF_recovered, ne = recover_to_initial_diameter(initial_diameter, initial_lcc, SF_attack_1, recovery_option=ro)\n",
" num_edges[ro].append(ne)\n",
" \n",
" # Second attack \n",
" SF_attack_2 = targeted_edge_attack(SF_recovered, al) \n",
" diameter_second_attack[ro].append(get_diameter(SF_attack_2))\n",
" \n",
" print(\"Finished attack level\", al)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Save data"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"# Diameter after the first attack and after second for each recovery option\n",
"plot_diameter(attack_level, diameter_first_attack, recovery_option, diameter_second_attack, path)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"There is no visible improvement in the robustness. Option 0, which is random addition, seems to work the best, while connecting min and min degrees nodes (option 1) and max and max (option 3) gives the worst result."
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAYUAAAEGCAYAAACKB4k+AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjMsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+AADFEAAAgAElEQVR4nO3deZxcZZno8d9TXVvva5p00llJCFkIIQsEQbbAABEBBVlEB5Q73FFmRi9zBxAXRNQBrwtyGWUYQRZZRJQLziAOJAQBCYGQBEJYEsKSTjpL72vt7/3jnKqu7q5OVZKuOtXVz/fzKepsderpSvE+73nPqeeIMQallFIKwOV0AEoppfKHJgWllFIJmhSUUkolaFJQSimVoElBKaVUgtvpAA5FXV2dmT59utNhKKXUmLJ+/foWY8yEVOvGdFKYPn06r732mtNhKKXUmCIiH420ToePlFJKJWhSUEoplaBJQSmlVMKYPqeQSjgcpqmpiUAg4HQojvL7/TQ2NuLxeJwORSk1hhRcUmhqaqK8vJzp06cjIk6H4whjDK2trTQ1NTFjxgynw1FKjSEFN3wUCASora0dtwkBQESora0d90dLSqkDV3BJARjXCSFOPwOl1MEoyKSglFIFKxaDP38T9r6Tld1rUsihH/7wh4npjo4OfvGLXxz0vq644goee+yx0QhLKTWWvP0EvHwH7NqQld1rUsih0UwKSqlxKBqGVTdD/TxYeFFW3qLgrj7KF+effz47duwgEAjwta99je3bt9Pf38+iRYuYP38+0WiU999/n0WLFnHGGWdw4403ct5559He3k44HOb73/8+5513HgD3338/P/7xjxERFi5cyAMPPDDovb797W+zY8cO7rnnHlwuzfNKFawNv4G29+HSR8BVlJW3KOyk8PWvw8aNo7vPRYvgttvSbnbPPfdQU1NDf38/y5Yt4/nnn+eOO+5gox3Phx9+yObNmxPzkUiExx9/nIqKClpaWli+fDnnnnsuW7Zs4Qc/+AEvvfQSdXV1tLW1DXqfa6+9ls7OTn7961/ryWWlClmoD9bcAlOWwxFnZe1tCjspOOj222/n8ccfB2DHjh1s3bp1v9sbY7jhhhv4y1/+gsvlYufOnezZs4fVq1dz4YUXUldXB0BNTU3iNTfffDPHHXccd911V/b+EKVUfnjlTujZDZ+7F7LYASzspJBBjz4b1qxZw7PPPsvLL79MSUkJp5xyStrfDDz44IPs27eP9evX4/F4mD59OoFAAGPMiEcAy5YtY/369bS1tQ1KFkqpAtPfDi/dZh0hTDs+q2+lA9BZ0NnZSXV1NSUlJbzzzjusXbsWAI/HQzgcBqC8vJzu7u5Br6mvr8fj8fDcc8/x0UdWZdsVK1bw6KOP0traCjBo+Oiss87i+uuv51Of+tSgfSmlCsyLP4NAF6z4TtbfqrCPFBxy1llnceedd7Jw4ULmzJnD8uXLAbjqqqtYuHAhixcv5sEHH+SEE05gwYIFnH322Vx33XV8+tOfZunSpSxatIgjjzwSgPnz5/PNb36Tk08+maKiIo455hjuvffexHt97nOfo7u7m3PPPZennnqK4uJiJ/5kpVS2dO2CV/4dFl4Mh83P+tuJMSa7byBSBLwG7DTGnCMiM4BHgBrgdeCLxpiQiPiA+4ElQCtwsTHmw/3te+nSpWboTXbefvtt5s6dO/p/yBikn4VSBeDJf4KND8E/vgbV00dllyKy3hizNNW6XAwffQ14O2n+VuBnxpjZQDtwpb38SqDdGDML+Jm9nVJKjV8tW63LUJddOWoJIZ2sJgURaQQ+BfzKnhfgNCD+U9z7gPPt6fPseez1K0SvsVRKjWerbwZPMXzyf+fsLbN9pHAbcC0Qs+drgQ5jTMSebwIm29OTgR0A9vpOe/tBROQqEXlNRF7bt29fNmNXSinn7FwPW56A4/8Byibk7G2zlhRE5BxgrzFmffLiFJuaDNYNLDDmLmPMUmPM0gkTcvdBKaVUTj17E5TUwif+Iadvm82rj04AzhWRlYAfqMA6cqgSEbd9NNAI7LK3bwKmAE0i4gYqgbbhu1VKqQL3/mr44Hk46xbwlef0rbN2pGCM+YYxptEYMx24BFhtjLkMeA640N7scuAJe/pJex57/WqT7UujlFIq38Ri1lFC5VRY+uWcv70TP167DrhGRLZhnTO4215+N1BrL78GuN6B2EbN008/zZw5c5g1axa33HKL0+EopcaKLf8PmjfCqTeA25fzt8/Jj9eMMWuANfb0duDYFNsEgM/lIp5si0ajXH311TzzzDM0NjaybNkyzj33XObNm+d0aEqpfBYNW1ccZbE0djpa5iIL1q1bx6xZs5g5cyZer5dLLrmEJ554Iv0LlVLj24YHoG07rLgxa6Wx0ynoMhc3/fEttuzqGtV9zptUwY2f3v9PzXfu3MmUKVMS842NjbzyyiujGodSqsCE+mDNrXZp7DMdC6Ogk4JTUp0f19/hKaX2K0elsdMp6KSQrkefLY2NjezYsSMx39TUxKRJkxyJRSk1BvS1wYu5KY2djp5TyIJly5axdetWPvjgA0KhEI888gjnnnuu02EppfLViz+DYG5KY6dT0EcKTnG73dxxxx2ceeaZRKNRvvzlLzN/vjNHLUqpPNe5E9bdBUdfkpPS2OloUsiSlStXsnLlSqfDUErlu+dvARODU77hdCSADh8ppZRz9r1nlcZeeiVUT3M6GkCTglJKOWf1zeApgU/+s9ORJGhSUEopJzSth7efhE/8Y05LY6ejSUEppXLNGHj2Riipg+OvdjqaQTQpKKVUrr2/Gj58AU76l5yXxk5Hk4JSSuVSLAarboKqqbD0S05HM4wmhSz48pe/TH19PQsWLHA6FKVUvtnyODRvglO/6Uhp7HQ0KWTBFVdcwdNPP+10GEqpfBMNw+rvQ/18OCo/7xSgSSELTjrpJGpqapwOQymVb16/3y6N/R3HSmOnU9i/aP7T9bD7zdHd58Sj4Gy9k5pS6gCFeuH5W2Hq8Y6Wxk6nsJOCUkrli1fuhJ49cNH9jpbGTqewk4L26JVS+aCvDV78ORxxNkxd7nQ0+6XnFJRSKtvyqDR2OpoUsuDSSy/l+OOP591336WxsZG7777b6ZCUUk4ZVBp7ntPRpFXYw0cOefjhh50OQSmVL9b8q1Ua+9QbnI4kI3qkoJRS2bLvPdj4ICz7H9YvmMcATQpKKZUtq78HntK8Ko2djiYFpZTKhqb18PYfrdLYpXVOR5MxTQpKKTXaBpXG/qrT0RwQTQpKKTXa3l9llcY++dq8K42djiYFpZQaTbEYPGuXxl5yhdPRHDBNClmwY8cOTj31VObOncv8+fP5+c9/7nRISqlceesPsPsNOPVbeVkaOx39nUIWuN1ufvKTn7B48WK6u7tZsmQJZ5xxBvPm5f8PV5RShyBeGvuwBXlbGjsdPVLIgoaGBhYvXgxAeXk5c+fOZefOnQ5HpZTKutfvg/YP7NLYY7N5LegjhVvX3co7be+M6j6PrDmS6469LuPtP/zwQzZs2MBxxx03qnEopfJMqBee/xFM/QTM/hunozloBZ0UnNbT08MFF1zAbbfdRkVFhdPhKKWyae0v7dLYD+R1aex0CjopHEiPfrSFw2EuuOACLrvsMj772c86FodSKgf62uCln8OclTB1bI8KjM1BrzxnjOHKK69k7ty5XHPNNU6Ho5TKthd/CsHuMVEaOx1NClnw0ksv8cADD7B69WoWLVrEokWLeOqpp5wOSymVDZ1N8MpdcPSlUD/X6WgOWUEPHznlxBNPxBjjdBhKqVxYcwtg4NRvOB3JqNAjBaWUOlj73h1zpbHTyVpSEBG/iKwTkU0i8paI3GQvnyEir4jIVhH5rYh47eU+e36bvX56tmJTSqlRsSpeGvt/Ox3JqMnmkUIQOM0YczSwCDhLRJYDtwI/M8bMBtqBK+3trwTajTGzgJ/Z2ymlVH5qeg3e+U844Z+gtNbpaEZN1pKCsfTYsx77YYDTgMfs5fcB59vT59nz2OtXiIzhi32VUoXLGHj2u1A6AZaPrdLY6WT1nIKIFInIRmAv8AzwPtBhjInYmzQBk+3pycAOAHt9JzAs/YrIVSLymoi8tm/fvmyGr5RSqcVLY590LfjKnI5mVGU1KRhjosaYRUAjcCyQ6nqt+GU6qY4Khl3CY4y5yxiz1BizdMKECaMXrFJKZSIWs44SqqaNydLY6eTk6iNjTAewBlgOVIlI/FLYRmCXPd0ETAGw11cCbbmIb7QFAgGOPfZYjj76aObPn8+NN97odEhKqdHy1h9g95tw2rfA7XU6mlGXzauPJohIlT1dDJwOvA08B1xob3Y58IQ9/aQ9j71+tRmjF/v7fD5Wr17Npk2b2LhxI08//TRr1651Oiyl1KGKhGD1zVZp7AUXpt9+DMrmj9cagPtEpAgr+TxqjPlPEdkCPCIi3wc2AHfb298NPCAi27COEC7JYmxZJSKUlVnjjOFwmHA4jJ4zV6oAvH4ftH8In//dmC2NnU7WkoIx5g3gmBTLt2OdXxi6PACM6l0pdv/whwTfHt3S2b65RzLxhhvSbheNRlmyZAnbtm3j6quv1tLZSo118dLY006A2Wc4HU3WFGaqywNFRUVs3LiRpqYm1q1bx+bNm50OSSl1KNb+Anr3wunfHdOlsdMp6NpHmfTos62qqopTTjmFp59+mgULFjgdjlLqYPS1wUu3w5xPwZRhAx0FRY8UsmDfvn10dHQA0N/fz7PPPsuRRx7pcFRKqYP2wk8g1AMrvu10JFlX0EcKTmlububyyy8nGo0Si8W46KKLOOecc5wOSyl1MDp2wLr/KJjS2OloUsiChQsXsmHDBqfDUEqNhuft0tinFEZp7HR0+EgppUay9x3Y+BAs+zuomuJ0NDmhSUEppUay+ma7NPY/Ox1JzhRkUhijP4QeVfoZKHWIdrxakKWx0ym4pOD3+2ltbR3XjaIxhtbWVvx+v9OhKDU2JUpj1xdcaex0Cu5Ec2NjI01NTYz3stp+v5/Gxkanw1BqbNq2Cj56EVb+uOBKY6dTcEnB4/EwY8YMp8NQSo1V8dLY1dNh8eXpti44BZcUlFLqkLz1B9jzJnz2VwVZGjudgjunoJRSBy1RGvsoWHCB09E4Qo8UlFIqLl4a+7LHCrY0djrj869WSqmhgj0DpbFnne50NI7RIwWllAJY+0urNPYlDxV0aex09EhBKaV6W+Gvt8OR58CUZU5H4yhNCkop9eJPrdLYpxV+aex0NCkopca3jh2w7i44+vNQr/c9OaCkICIuEanIVjBKKZVza24BBE653ulI8kLapCAiD4lIhYiUAluAd0XkX7IfmlJKZdned2DTQ3Ds+CmNnU4mRwrzjDFdwPnAU8BU4ItZjUoppXJh9c3gLRtXpbHTySQpeETEg5UUnjDGhIHxW4JUKVUYdqyzSmN/4p+gpMbpaPJGJknh34EPgVLgLyIyDejKZlBKKZVVg0pjf8XpaPJK2qRgjLndGDPZGLPSWD4CTs1BbEoplR3bnoWPXoKTrx13pbHTyeRE82EicreI/MmenweMv3qySqnCEIvBszeN29LY6WQyfHQv8Gdgkj3/HvD1bAWklFJZtfn3Vmns0749Lktjp5NJUqgzxjwKxACMMREgmtWolFIqGyIheO77MPEomP9Zp6PJS5kUxOsVkVrsK45EZDnQmdWolFIqGxKlsX8/bktjp5NJUrgGeBI4XEReAiYAF2Y1KqWUGm3BHnj+Vph2Isxa4XQ0eSttUjDGvC4iJwNzAAHetX+roJRSY8faX0DvPrjk4XFdGjudtElBRIYOvB0hIp3Am8aYvdkJSymlRlFvK7ykpbEzkcnw0ZXA8cBz9vwpwFqs5PA9Y8wDWYpNKaVGxws/gXAvrPiO05HkvUySQgyYa4zZA9bvFoBfAscBfwE0KSil8lfHDnj1P2DR52HCHKejyXuZnH6fHk8Itr3AEcaYNkDPLSil8tuaf8Uqjf0NpyMZEzI5UnhBRP4T+J09fwFWDaRSoCNrkSml1KHa+zZsehiWfxUqG52OZkzIJClcjZUITsC6+uh+4PfGGIPWQFJK5bNVWhr7QGVySaoBHrMfSik1Nnz8Crz7X3Dat7Q09gEY8ZyCiHSLSNdIj3Q7FpEpIvKciLwtIm+JyNfs5TUi8oyIbLWfq+3lIiK3i8g2EXlDRBaP3p+plBpXBpXG/qrT0YwpIx4pGGPKAUTke8BurKuMBLgMKM9g3xHgn+0fv5UD60XkGeAKYJUx5hYRuR64HrgOOBuYbT+OY+AKJ6WUOjBbn4GP/worfwzeUqejGVMyufroTGPML4wx3caYLmPML7HOMeyXMabZGPO6Pd0NvA1MBs4D7rM3uw/rjm7Yy++379mwFqgSkYYD/HuUUuNdLAarboLqGbDkCqejGXMySQpREblMRIpExCUil3GAVVJFZDpwDPAKcJgxphmsxAHU25tNBnYkvazJXjZ0X1eJyGsi8tq+ffsOJAyl1Hiw+THYs9k6l1DkcTqaMSeTpPB54CJgj/34nL0sIyJSBvwe+LoxZn/nIlIVIxl2L2hjzF3GmKXGmKUTJkzINAyl1HgQCcHq78PEhVoa+yBlcvXRh1hDOwdMRDxYCeFBY8wf7MV7RKTBGNNsDw/F6yc1AVOSXt4I7DqY91VKjVPr74WOj+ALWhr7YGVyO84jRGSViGy25xeKyLcyeJ0AdwNvG2N+mrTqSQZu53k58ETS8r+1r0JaDnTGh5mUUiqtYA/85Ucw/ZNwuJbGPliZpNL/AL6BXdLCGPMGcEkGrzsB+CJwmohstB8rgVuAM0RkK3CGPQ/wFLAd2Ga/p15HppTKXLw09unf1dLYhyCTXzSXGGPWyeAPOZLuRcaYF0l9ngBgWBq3fyR3dQbxKKXUYL0tA6WxG5c6Hc2YlsmRQouIHM7A7TgvBHRYRymVP7Q09qjJtPbRXcCRIrIT+ADrB2xKKeW8jo/h1V9paexRksnVR9uB0+2qqC77h2hKKZUfntPS2KMpk6uPvgVgjOkFQlmPSCmlMrVni1Ua+7irtDT2KNlfQbxrReR44MKkxS9nPySllMrQ6pvBVw4nXuN0JAVjf8NH72L9enmmiLyAVbuoVkTmGGPezUl0Sik1ko/XwrtPwWnf1tLYo2h/w0ftwA1Yvxs4BbjdXn69iPw1y3EppdTI4qWxyw6D5V9xOpqCsr8jhbOAG4HDgZ8Cm4BeY8yXchGYUkqNaOt/w8cvw6d+oqWxR9mIRwrGmBuMMSuAD4HfYCWQCSLyooj8MUfxKaXUYLEYPGuXxl58efrt1QHJ5HcKfzbGvAq8KiJfMcacKCJ12Q5MKaVSevN3sPctuOBuLY2dBWkvSTXGXJs0e4W9rCVbASml1IgiIXhOS2Nn0wHVljXGbMpWIEopldb6X1u/YD79Ri2NnSX6qSqlxoZgNzyvpbGzTZOCUmpsePkX0NcCp9+kpbGzSJOCUir/9bbAX2+HuZ+GxiVOR1PQNCkopfLfCz+BcB+cpqWxs02TglIqvyVKY18GE45wOpqCp0lBKZXfnvshWho7dzQpKKXy154tsOkRuzT2ZKejGRc0KSil8teq74GvQktj55AmBaVUfvp4Lbz3Jzjxa1oaO4c0KSil8k9yaezj/t7paMYVTQpKqfzz3p+t0tgnX6elsXNMk4JSKr/EorDqJqiZCYv/1uloxp1MSmcrpVTuvPk72LsFLrxHS2M7QI8UlFL5IxKE534ADUfDvM84Hc24pEcKSqn88ZpdGvuc27Q0tkP0U1dK5YdgN/zl/8CMk+Dw05yOZtzSpKCUyg8v/5tVGnvFd7U0toM0KSilnNezD/76f2HuuVoa22GaFJRSznvhJxDuhxVaGttpmhSUUs5q/wheuxuOuQzqZjsdzbinSUEp5aw1/wrigpOvdzoShSYFpZST9rxllcY+Vktj5wtNCkop56z6Hvgr4MT/5XQkyqZJQSnljI9ehveehhO+rqWx84gmBaVU7iVKY0/U0th5JmtJQUTuEZG9IrI5aVmNiDwjIlvt52p7uYjI7SKyTUTeEJHF2YpLKZUH3vsz7FgLp1wH3hKno1FJsnmkcC9w1pBl1wOrjDGzgVX2PMDZwGz7cRXwyyzGpZTKtUgIOnfCztfh3aeto4Saw+GYLzodmRoiawXxjDF/EZHpQxafB5xiT98HrAGus5ffb4wxwFoRqRKRBmNMc7biU0odolgM+lqhdy/07IGeoc97rF8q9+yB/rbBrxUXXPSAlsbOQ7muknpYvKE3xjSLSL29fDKwI2m7JnvZsKQgIldhHU0wderU7Ear1HhjDAS7hjTsewc38PFlvfvARIfvw10M5YdZt9KsPRymfcKaLqu3nw+zLj8tn5j7v0+llS+ls1NVvzKpNjTG3AXcBbB06dKU2yilhgj12T36FL34oT38aHD4611uKK23GvbyBut+B/EGvmxC0nQ9eMu0oN0YluuksCc+LCQiDcBee3kTMCVpu0ZgV45jU2psiYat3nqqXnyiN28ngmBXih0IlNQONOa1s+zefP3wnr2/Su9vME7kOik8CVwO3GI/P5G0/B9E5BHgOKBTzyeocSkWs8bfU47P7x3c2+9rTb0PX+VAgz7xqOENfFm91esvrdMxfTVM1pKCiDyMdVK5TkSagBuxksGjInIl8DHwOXvzp4CVwDagD/hStuJSKueMsW4gk7KBHzp8s3eEcXr/QMNeMxOmLh/c2MeHdsrqwVOc+79RFYxsXn106QirVqTY1gBXZysWpbIi3D/QkKe7AifSP/z1UjR4uCbeqy+tH96z95XrOL3KiXw50axU/jPGus7+9Xvh7T9Cf3vq7ZLH6aceD6VDTsTGp4urdZxe5R1NCkql098Bb/4O1t8LezaDp8S6Q1jd7OFX4JRO0HF6NaZpUlAqFWNgxytWInjr/1nDPw1Hw6d+Ckd9zqrsqVQB0qSgVLK+Ntj0MKy/D1reBW85LLoUFl8OkxY5HZ1SWadJQSlj4MMXrETw9pMQDcHkpXDuHTD/M+ArczpCpXJGk4Iav3r2wcYH4fX7oG07+CthyZdgyeVw2Hyno1PKEZoU1PgSi8H256xE8M5/QSwCUz8BJ18H887Ta/zVuKdJQY0PXc2w4Tew4X7o+BiKa6ybuyz+W5gwx+nolMobmhRU4YpFYesz1lHBe3+2fik84yQ4/btw5Dng9jkdoVJ5R5OCKjwdO2DDA9aRQddO6xfCn/hH66ig9nCno1Mqr2lSUIUhGrZuAr/+Ptj2rLVs1go46xaYc7b+oEypDGlSUGNb2wfw+v3WVUQ9e6B8Epz0L3DMF6B6mtPRKTXmaFJQY08kaF05tP5e+OB569aOs8+0LiWddQYU6ddaqYOl//eosaNlq5UINj1s3Uugciqc+k1YdJl1e0el1CHTpKDyW7gftjxpXUH00UvWbSHnnA1LroCZp4KryOkIlSoomhRUftqzxUoEmx6BQAdUz7AuJT3689ZN4ZUqcJFojM7+MO19Idr7wrT3hgam+0KcOX8ii6dWj/r7alJQ+SPUC289bl1B1LQOirww99NWMbrpn9R7D6gxKxSJ0dEXoq0vRHtvvKEP0dEXpq138HRHX4i23hBdgciI+/MWuZhRW6pJQRWo5k1WInjzd9YN5uuOgL/5ARx9KZTWOh2dUoP0h6J242435H1WQ57c2LfZ69rt7XpDKW6xaivxFlFd4qW61EN1iZcpNSXUlHioKvFSXeKhutRrrU/apsRbhGTpTnyaFJQzAl2w+TErGTRvtO5BPO986wqiqcfrrSdV1hlj6AlGEo15qsZ9YNgmnOjBByOxEfdZ7nfbjbeX2jIvs+rL7AY9uXEfmK4q8eD35Nd5MU0KKneMgZ3rrSuINv8Bwr1QPx/O/hEsvMi6PaVSByEWMynH35N78m2DGnfrORIzKfcnAlXFnkQDP7nKz4JJFVSXWg15TYk30ZOvKbWmq0o8eIrG/hCnJgWVff0d8Maj1onj+O0sF3zWKlM9eYkeFahBwtEYHUk980RDbjfyQ0+4tveG6OwPM0L7jtslVJV4qSm1hmRm1JWyZNpAoz4wNDMwX1Hsocg1Pr+XmhRUdhgDH6+1EoHeznLcMsbQF4rS2hNiX0+Q1p4grb0hWnuCtKUcpgnRvZ8TrD63a1ADPrehYkjDbjX8NUnzZT531sbfsyYSga4u6OwceAydP+ssWLx41N9ak4IaXXo7y4IXjRna+0K09oRo6QnS0hNMTCeW2Q1/S0+QQDj1GHypt2jQ2Pr02pKUjXuVPQZfU+Kl2Jtf4+8phUL7b8xTPYZu09ub/n2qqjQpqDyVuJ3lvfD2H63bWTYu09tZjiH9oajVqPeGaOkO0tobpGVIQ9/aE6K1N0hbbyjlUE2RS6gt9VJX5qO2zMvMulLqyrzUlvms5eU+6kqtdbVlXnzuPGvgjYFA4OAb8vgjEEj/XsXFUFk5+NHYOGjeVFbQV1lCa5nQUgItvggtnhAtrn5aTQ/nzF7Gsix8DJoU1MHr2QsbH9LbWeahWMzQ0R+mtSdoD9vEe+6hYQ1+a09wxEsmy3xuasushn5abQmLp1UzId7Q28vryrzUlvqoLPbgcmoc3hjo6zv4hjz+CIfTv1dZ2eDGvLYWZs6EiorhDX2KR6jUT2uki5b+FusRsJ5b+1tp7W+lpX8vLf1baA200h/ph16sh61Iiqjx17B00nFZ+Sg1KagDE7+d5fp74d2n9HaWORQIRxPj8S3xBj7RuFu9/H3d1nNbb4hoiu68S6Cm1GrI68p8TJ1aQm2pj7pyL3X2c23pQIOfk8slYzHo6Tm0xryrC6Ij/xYAsC5oiDfc8eeJE2HOnP035MmNfUUFFA3/TKKxKO3B9kRDbzXuLbT0v2NN722h5SNrXXeoO2V4Vb4q6orrqC2u5ej6o6n111JXXJdYFp+u8lXhkuxd5aRJQWWmaxdseFBvZzmKjLEuo2wZsRc/eOimO5j6BGyJtyjRiDdWl7BoSlViCKe2bCAB1Nrj96Pam49GUzfYmQy/xB/d3VZPf39cruGN9dSp+2/Ahz7Kyg7oV/HGGLpCXQO99/YttOyyevbxRj/+3H3Gp2YAABTJSURBVB5sJ2aGnzsp9ZRajbq/lllVs1jesDzRuMcb+1q/9fDkyT0/NCmokUUj1g1rXr/PuoGNientLNMIRWK09iadcLUb/PhYfUvSmH1rT+rr5EWgpsSbaOiPaqyittTLhHKrYR/U0Jd5KfEe5P/G4fCBN+BDt+3pSf8+Hs/wBvrwwzMaakk09KWlo3bpcl+4z2rM7WGb5N59oodvN/zh2PDhJK/Lm+i5N5Q1cNSEo6xG3j/Qo4839iWeklGJOZc0KajhOj62bmX5+gPQvcu6neUJX4Njvjhub2fZFQizuzNAc2eA3Z39NHcGhl9x0xMcsV6Nz+1KjL83VPpZMLnCbtQHN/C1pT5qSr3pr5EPBq1G+aODHG7p7IT+/vR/uN8/vIFuaMh8uKWy0tpHli8JDUfDtAZaUwzftAxb3hfpG/Z6l7io8dckGvTDqw4fNmwTny73lI+9S1wPgCYFZUnczvJe2LbKWjZrBZx9a0HfztIYQ1cgYjf4VmOf3PBb0wF6UgzdVJd4Eo363EkV1CWuvBlyErbMR2m8Vo0xVmOcaLz3wb5O2HaAvfRgMP0fV1o6uJGuqoJp0zJryOMPrzcLn3pm4uP0iR78SD37QAudwc6U+6j0VVLntxr1BXULBg3dxHv2tcW1VPuqKdIy7IAmBdW23b6d5UMFdztLYwxd/RGau/pp7hje2Dd39rO7MzDsyhsRqC/3MbGymFkTyvjk7DoaKv1MrPAzyQcTCVEf6cPbE2+kd1vPOzPspUdG/nFWQnn54Ma5vh5mz858/LyiAtzO/O9tjCFiIkRjUSKxCFETJRwLW/P28lA0lPrEbNJ4fVugLeU4fYm7JNFrn1k1k2X+ZSlPyNb4a/AWOZfURpuJRIj19xPr6yPW24e7ppqiqqpRfx9NCgcjEoTmN6wx9rGqc4eVDMbo7SzjJ2mbk3r4uzsD7OoIsLtrYL5vSIPvEqj3FzHRB3PcUU6uCNIQ7aMh1E1DXwcTu1uo79iLp7MjdU89lubf3OUa3lhPngzz5kFlJbGKcqKV5YQry4lWlBGpKCNaXkqkvJRIWQnRshIixT4ixEZuWO35SCxCxESs+VgLUbOHcCBMtC9KZNfAawe2iSamk/eRvDx5WTgWHpiPv9/Q1ybFlbzsQLld7kTvfWLJRObXzh/WyMd79vk+Tm+MwQSDVuNtN+Cxvt7EvElq2BPbDHpY25rkbfr7MUOODid+97tUX3LxqMef///355NoBN74Lay5BTo/djqaQ5ent7M0xtDRF2aX3ZNvbu+jeW8nzW097O4I0NwTojkQIxAbPK7rMobDon00BLuY29fBqd0tNLTvpqFlFxP37aChq4X6njbcIyVzt5tIdSWdh1XSWV9Be0MpHfPr6axopL3CTWeJi45iaPdG6XJHiLiFiEuIuiDiMkQFwkQHN7axCBGzh0hsJ1ETHdzzjQBt9iOLXOKiSIpwu9y4xY3b5abIZc0XSREelyexPr48vp1PfInlg7aL789+pFo+aBsZ8p5FHmp8A2P4Fd4KR8bpB3rf/YMb4+THSI13fx9mhHVpOw9JpKQE15BHUXkFrsMmDiwrLUGKi5O2KaV44VFZ+Uw0KWQiFoO3n4TnfgAt78GkY+CM74J/9A/dcsZbBo1Ls387yyE/+TednbS3drGrrcdq8HvCNAcMu8NCc8xDsxTT7CklOOQcRlEsysTuViZ2tzCvu4UV3a00dO+jwV42KdBFnTuGu2Jg2CVUXU7HzFLal0yhs3IWm8vddJQIHX5DhzdKR1GYDleATtNPe6SHjnBn0jXkEaDTftgfmctLla+KKn8VFd5ayoq8+234Ui1Puc2Qhjoxn9RQD2u4ZXiDPNJ7ZfOa9lwxxmBCoUE972GNd3xdvCee3DsfoXEf2vveL7cbV2npsAbcXV+faLhdJSVDGvnSQQ17Ytpu4KW4GMmzm0dpUtgfY6yTrqu/Z90IZsKRcPFvrMsxC/jqA+CgfvJvOjtp7QuzO+yi2XhodpXQ7K9kd3ktuyomsLu8lubyOkJuL1CdeCu3iXBYuIOGYDcLIq38DUEmFkVo8EJDsYuJ5R7KKr10z/XSXlZMR8k0Ov1TafdE+KgozEbppyPSTWewk/ZAO53BTjqCHfRF9qb+28JQbIqp9lVT6a6k2l/DZN8MqnxV1jJfZaLxr/INPIrdxQV91cmBMsZAJEIsGMKEQ5hgEBOynmOhkD09eF0sGBrYJtF4D2nAkxvvpG3S/jgtiSQ1vIlHWVkGDXjxsEY//hAHT7rnkiaFkXz0Mqz6Hnz8V6iaBp/5d6u651i4QiELP/mPIbSWJDfwdTSX17K7eiK7qo5id0Mtu2dWEnIN/kp5iHFYUZQGLxxdUsSZFV5qKoSyakNJleCpFGKeKF0hFx1BQ0cgRGuwk/eDHXTEH4EOQrGQtcM++5Gk3FueaLjriuuYVTVrWINe5aui0ldJtb+aKl/VmD4BaWIxTDicuhEOhQYvizfCoXijHMSEwoltTChELBQcaMDjy8Ohwa9PbDv4PdL+6CydoqLMet/FxYN73UN73smNdx72vscSTQpDNW+C1d+Hrf8NZYfByh9bFT7dOWpEkn/yfyA/Khra0Gfyk3/7CpdYZRUtdQ3snnEUuyrr2V1WS3NxJc2eMna7immOedgTcREyg3vJniJDfVWMusooM8vCHFXSRbEvgMcbQIp6iUoPgWgPHUGr974p2M4LwS4ioQjswXokcYmLSm9lovGeVDaJebXzEr33av9ALz6+rNJXiduVm69x/ASiCQTsHm9weIM5rGdsN8J2Qztsmd1gD27AkxrmIY2yCYUwmdTnyYB4PIjXaz18PsTrxeXzIp6k+Wqrh+zyehGvL2lbDy57m4Hl8e3sbTxJy3y+wcu9HlylpVYMevSVVzQpxLVstc4ZvPW4da7g9Jvg2KvAewBXOkSj1k/20/TKTWcn0c4uIl3dhLt7iHT3Eu7pJdLTS6Svn7CriIjLbT0XuYm4igi73ESK7OVuD5GycsJl5URLa4hMmEp4WimR4hLCxSVEikuI+IoJ+/xEfH4iXh9hj4+Ix2u91u2m3xSxp9u6NHNPV4BwNIIU9VkPdy8eTxeVZa2UFQep8Aeo8fQjRb1E6CVkuumNdNEd6qILQxdAmOThd9wu96Be+ozKGRzjP2ZY7z25R1/uLT+g8W8TDhPrCxAJBIgFgphggFggMNBwJ5YlrQsEiQUDVgMcCFjT8WWBeIOf+vmAxp9HIjKoERavB9egxtaLq9iPVFQkNaTeg2+YvUmvHdQwe7Q3rVLKq6QgImcBPweKgF8ZY27J+pt27IDnb7Gu03f7YeHfQeN50BeFp5+lo72FNzv28l6gjfejXTRJL/s8fXS7gxhjiBkwGIyBGGDEhRHBIMREEtNGhFiJYEoFMzneM/ICNfbjYA0poTiEiCACrihITJCQtczliuH29UNDL+UNPYTN8F+3xkdq/PipKrKHZ3yVVPumDvTY4713TwXVlFKOn0r8+MMuqyed3Dh3Ba1ecSCACXRjgvsS6/oDQfoybKRNMEgsGDygMeZhn4vfbzWofj/i9+Hy+RPLiqqqcPl9iM9e57W2iy9LrBupYY73uAc1zD5cXg9oz1jlubxJCiJSBPwbcAbQBLwqIk8aY7aM+ps9+CDc+VOijc20zulnl9vNm+11rAtMZGfnJnrKNhD0RzCePrzSjzsKHsBjwBMx1HYXMynkxWUFTvxJ7Il4QwyCuCTxLPZGgtjb2tvYr423FcLAvgbt236d2P+JNy2DXmvvnzTtTpFxUYmfCg6jLDaVspiXkpibkmgR/qgLX1TwhsEdjuEKRaxGPRjCBDqIBXcPa7jjQxr7T1GpicczpHFOaqRLSymqqUm9Lrnhjj/7/YMabus5adrvtxppbZiVSilvkgJwLLDNGLMdQEQeAc4DRj0p/PalX3NYtA/X+5W436vEE4WjIrA42oIro/NmB9P0jRFFRYkedMzvIxLvJdvLXHW1eEZonAc10n6rJ+0a2iD77HXxffp8SIpSxEopZ+RTUpgM7EiabwKG3UVCRK4CrgKYOnXqQb2RZ/ocOpr2Eiquw11cTWlpFZUV1ZRX1lFRUWEPBwwZox00ROBB3J6xfVmqMLhXHW+kPYVZ40gplZl8SgqpWthh/XZjzF3AXQBLly49qOvhPnvtv8G1B/NKpZQqbPl0+UETMCVpvhHY5VAsSik1LuVTUngVmC0iM0TEC1wCPOlwTEopNa7kzfCRMSYiIv8A/BnrktR7jDFvORyWUkqNK3mTFACMMU8BTzkdh1JKjVf5NHyklFLKYZoUlFJKJWhSUEoplaBJQSmlVIKYQ62H7iAR2Qd85HQcI6gDWpwOYj80vkOT7/FB/seo8R2aQ4lvmjFmQqoVYzop5DMRec0Ys9TpOEai8R2afI8P8j9Gje/QZCs+HT5SSimVoElBKaVUgiaF7LnL6QDS0PgOTb7HB/kfo8Z3aLISn55TUEoplaBHCkoppRI0KSillErQpJAhETlLRN4VkW0icn2K9T4R+a29/hURmW4vP0NE1ovIm/bzaUmvWWPvc6P9qHcgvuki0p8Uw51Jr1lix71NRG6XQ7ix8SHEd1lSbBtFJCYii+x1ufz8ThKR10UkIiIXDll3uYhstR+XJy3P5eeXMj4RWSQiL4vIWyLyhohcnLTuXhH5IOnzW5Tr+Ox10aQYnkxaPsP+Lmy1vxveXMcnIqcO+f4FROR8e10uP79rRGSL/W+4SkSmJa0b3e+fMUYfaR5YpbzfB2YCXmATMG/INl8F7rSnLwF+a08fA0yypxcAO5NeswZY6nB804HNI+x3HXA81l3x/gScnev4hmxzFLDdoc9vOrAQuB+4MGl5DbDdfq62p6sd+PxGiu8IYLY9PQloBqrs+XuTt3Xi87PX9Yyw30eBS+zpO4GvOBHfkH/rNqDEgc/v1KT3/QoD//+O+vdPjxQycyywzRiz3RgTAh4BzhuyzXnAffb0Y8AKERFjzAZjTPwOcm8BfhHx5Ut8I+1QRBqACmPMy8b6ht0PnO9wfJcCDx9kDIcUnzHmQ2PMG0BsyGvPBJ4xxrQZY9qBZ4Czcv35jRSfMeY9Y8xWe3oXsBdI+UvWQ3Aon19K9r/9aVjfBbC+Gzn//Ia4EPiTMabvIOM4lPieS3rftVh3poQsfP80KWRmMrAjab7JXpZyG2NMBOgEaodscwGwwRgTTFr2a/vQ89uHMLxwqPHNEJENIvK8iHwyafumNPvMVXxxFzM8KeTq8zvQ1+b680tLRI7F6om+n7T4B/aQxM8OobNyqPH5ReQ1EVkbH5rB+rfvsL8LB7PP0Ywv7hKGf/+c+PyuxOr57++1B/3906SQmVSNzdBrefe7jYjMB24F/mfS+suMMUcBn7QfX3QgvmZgqjHmGOAa4CERqchwn7mIz1opchzQZ4zZnLQ+l5/fgb4215/f/ndg9RwfAL5kjIn3hr8BHAkswxp+uM6h+KYaq1zD54HbROTwUdhnstH6/I7CujNkXM4/PxH5ArAU+D9pXnvQf7Mmhcw0AVOS5huBXSNtIyJuoBJr/BERaQQeB/7WGJPopRljdtrP3cBDWIeROY3PGBM0xrTacazH6kUeYW/fmPT6VPvMenxJ64f10nL8+R3oa3P9+Y3ITvL/BXzLGLM2vtwY02wsQeDXOPP5xYe1MMZsxzpPdAxWobcq+7twwPsczfhsFwGPG2PC8QW5/vxE5HTgm8C5SaMNo//9O9STJOPhgXXb0u3ADAZOBM0fss3VDD5R+qg9XWVvf0GKfdbZ0x6ssdO/dyC+CUCRPT0T2AnU2POvAssZOFG1Mtfx2fMu+0s+06nPL2nbexl+ovkDrJN81fZ0zj+//cTnBVYBX0+xbYP9LMBtwC0OxFcN+OzpOmAr9klW4HcMPtH81VzHl7R8LXCqU58fVqJ8H/uigWx+/w74DxivD2Al8J79D/NNe9n3sLI2gN/+Em/DOus/017+LaAX2Jj0qAdKgfXAG1gnoH+O3TjnOL4L7PffBLwOfDppn0uBzfY+78D+BXwu47PXnQKsHbK/XH9+y7ASUy/QCryV9Nov23FvwxqeceLzSxkf8AUgPOT7t8hetxp4047xN0CZA/F9wo5hk/18ZdI+Z9rfhW32d8Pn0L/vdKzOkmvIPnP5+T0L7En6N3wyW98/LXOhlFIqQc8pKKWUStCkoJRSKkGTglJKqQRNCkoppRI0KSillErQpKDGDRH5jIgYETkyadl0Efl80vwiEVl5CO/xoYjUHeo22XhfpTKhSUGNJ5cCL2L9OC5uOlZ5hbhFWNeMKzUuaVJQ44KIlAEnYBUTS04KtwCftIvqXYf1g6GL7fmLReRYEfmrXTDwryIyx95fkYj82K5X/4aI/OOQ9ysWkadF5O/SxPUFEVlnv9+/2/v9ioj8KGmbK0Tk/460/ah8QErZNCmo8eJ84GljzHtAm4gstpdfD7xgjFlkjLkV+A5WrfpFxpjfAu8AJxmrYOB3gB/ar7sKqyzBMcaYhcCDSe9VBvwReMgY8x8jBSQic7Eqv55gjFkERIHLsEp2fDZp04uB3+5ne6VGjTv9JkoVhEux6tOAVa/+UqyyHulUAveJyGysKpMee/npWLWaIgDGmOTifU8APzLGPMj+rQCWAK/aVb+Lgb3GmH0isl1ElmPVApoDvIRVH2rY9hn8DUplTJOCKngiUot1w5YFImKw7nRlROTaDF5+M/CcMeYzYt0idE18t4xcivgl4GwRecjsv46MAPcZY76RYt1vsSpzvoNVndPY94sYaXulRoUOH6nx4ELgfmPMNGPMdGPMFKxqkicC3UB50rZD5yuxiqEBXJG0/L+Bv4+XdhaRmqR138EqqvaLNHGtAi4U+97SIlKTdO/dP2ANeV2KlSDSba/UqNCkoMaDS7HuZ5Hs91hXHb0BRERkk4j8L+A5YF78RDPwI+BfReQlrCOMuF8BHwNviMgmBl/BBPB1rDuK/YgRGGO2YFXR/W8ReQPrVooN9rp2YAswzRizLt32So0WrZKqlFIqQY8UlFJKJWhSUEoplaBJQSmlVIImBaWUUgmaFJRSSiVoUlBKKZWgSUEppVTC/wc0/JvSuzcfkAAAAABJRU5ErkJggg==\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"plot_num_edges(attack_level, edges_removed_during_attack, recovery_option, num_edges, path)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"All recovery options need a small number of nodes to reach the initial robustness. The expection is min min edge, which needs much more edges than were removed. "
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [],
"source": [
"save_data(num_edges, diameter_first_attack, diameter_second_attack, attack_level, path)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Random attack "
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [],
"source": [
"attack_level = [0.01, 0.02, 0.05, 0.1, 0.15]\n",
"recovery_option = [0, 1, 2, 3]\n",
"num_edges= {0:[], 1:[], 2:[], 3:[]}\n",
"diameter_first_attack = []\n",
"diameter_second_attack = {0:[], 1:[], 2:[], 3:[]}\n",
"edges_removed_during_attack = np.array(attack_level)*SF.size()\n",
"path = \"Experiments/SF/random/\""
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"for al in attack_level:\n",
" # First attack\n",
" SF_attack_1 = random_edge_attack(SF, al) \n",
" diameter_first_attack.append(get_diameter(SF_attack_1)) \n",
" \n",
" for ro in recovery_option:\n",
" # Recovery\n",
" SF_recovered, ne = recover_to_initial_diameter(initial_diameter, initial_lcc, SF_attack_1, recovery_option=ro)\n",
" num_edges[ro].append(ne)\n",
" \n",
" # Second attack \n",
" SF_attack_2 = random_edge_attack(SF_recovered, al) \n",
" diameter_second_attack[ro].append(get_diameter(SF_attack_2))\n",
" \n",
" print(\"Finished attack level\", al)"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"plot_diameter(attack_level, diameter_first_attack, recovery_option, diameter_second_attack, path)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Most options make the network more robust against the next random attack. The expeptuin is min min edge."
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"plot_num_edges(attack_level, edges_removed_during_attack, recovery_option, num_edges, path)"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {},
"outputs": [],
"source": [
"save_data(num_edges, diameter_first_attack, diameter_second_attack, attack_level, path)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Erdos_Renyi Random graph"
]
},
{
"cell_type": "code",
"execution_count": 48,
"metadata": {},
"outputs": [],
"source": [
"ER = graph('ER', 50, 0.01)\n",
"initial_diameter, initial_lcc, av = get_robustness(ER)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Targeted attack"
]
},
{
"cell_type": "code",
"execution_count": 49,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Finished attack level 0.01\n",
"Finished attack level 0.02\n",
"Finished attack level 0.05\n",
"Finished attack level 0.1\n",
"Finished attack level 0.15\n"
]
}
],
"source": [
"attack_level = [0.01, 0.02, 0.05, 0.1, 0.15]\n",
"recovery_option = [0, 1, 2, 3]\n",
"num_edges= {0:[], 1:[], 2:[], 3:[]}\n",
"diameter_first_attack = []\n",
"diameter_second_attack = {0:[], 1:[], 2:[], 3:[]}\n",
"edges_removed_during_attack = np.array(attack_level)*SF.size()\n",
"path = \"Experiments/ER/target/\"\n",
"for al in attack_level:\n",
" # First attack\n",
" ER_attack_1 = targeted_edge_attack(ER, al) \n",
" diameter_first_attack.append(get_diameter(ER_attack_1)) \n",
" \n",
" for ro in recovery_option:\n",
" # Recovery\n",
" ER_recovered, ne = recover_to_initial_diameter(initial_diameter, initial_lcc, ER_attack_1, recovery_option=ro)\n",
" num_edges[ro].append(ne)\n",
" \n",
" # Second attack \n",
" ER_attack_2 = targeted_edge_attack(ER_recovered, al) \n",
" diameter_second_attack[ro].append(get_diameter(ER_attack_2))\n",
" \n",
" print(\"Finished attack level\", al)"
]
},
{
"cell_type": "code",
"execution_count": 50,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"plot_diameter(attack_level, diameter_first_attack, recovery_option, diameter_second_attack, path)"
]
},
{
"cell_type": "code",
"execution_count": 51,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAX4AAAEGCAYAAABiq/5QAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjMsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+AADFEAAAgAElEQVR4nO3dd3hUZfbA8e9JI5BCB4HQbFQxNAErWFawIAqC2MCy+Nu1sVYWe2PVtYsFVBSVuiiCiIAINqQI0kOTmlBDKEmAtJn398c7gSQEMiEzuTOZ83meeWbuzJ25h5CcvHnve88RYwxKKaVCR5jTASillCpfmviVUirEaOJXSqkQo4lfKaVCjCZ+pZQKMRFOB+CNWrVqmSZNmjgdhlJKBZUlS5bsNcbULvp8UCT+Jk2asHjxYqfDUEqpoCIiW4t7Xqd6lFIqxGjiV0qpEKOJXymlQkxQzPEXJzc3l5SUFLKyspwOxVHR0dEkJCQQGRnpdChKqSARtIk/JSWFuLg4mjRpgog4HY4jjDGkpaWRkpJC06ZNnQ5HKRUk/DbVIyLRIrJIRJaLyGoRec7zfFMRWSgiG0RkgohEncrnZ2VlUbNmzZBN+gAiQs2aNUP+rx6lVOn4c44/G7jUGHMukAh0F5HOwCvAm8aYs4D9wF2neoBQTvr59GuglCotvyV+Y2V6NiM9NwNcCkzyPD8a6OWvGJRSKmilpsLgwXDwoM8/2q+rekQkXESWAXuAH4CNwAFjTJ5nlxSgwQneO0hEFovI4tTUVH+G6XPDhg07+vjAgQO8//77p/xZAwcOZNKkSSXvqJSqGFwuGDECmjWD996DX37x+SH8mviNMS5jTCKQAJwHtChutxO8d6QxpoMxpkPt2sddcRzQfJn4lVIhZPFi6NIF/u//4NxzYflyuPZanx+mXFb1GGMOiMhPQGegmohEeEb9CcCO8ojBX3r16kVycjJZWVk8+OCDbNq0iSNHjpCYmEirVq1wuVxs3LiRxMRErrjiCp555hmuu+469u/fT25uLi+++CLXXXcdAJ9//jmvvfYaIkKbNm344osvCh3rqaeeIjk5mVGjRhEWppdgKFVh7N8PTzwBH34IdevCmDHQvz/46Rye3xK/iNQGcj1JvzJwOfbE7lygDzAeGABMKfPBBg+GZcvK/DGFJCbCW2+VuNuoUaOoUaMGR44coWPHjvz8888MHz6cZZ54tmzZwqpVq45u5+XlMXnyZOLj49m7dy+dO3emZ8+eJCUl8dJLLzFv3jxq1arFvn37Ch3nscce4+DBg3z66ad6QlepisIY+PxzePRRSEuDBx6A556DqlX9elh/jvjrAaNFJBw7pTTRGDNNRJKA8SLyIrAU+MSPMfjdO++8w+TJkwFITk5mw4YNJ93fGMPQoUP55ZdfCAsLY/v27ezevZs5c+bQp08fatWqBUCNGjWOvueFF16gU6dOjBw50n//EKVU+VqxAu69F377zU7vzJplB5zlwG+J3xizAmhbzPObsPP9vuPFyNwffvrpJ2bPns38+fOpUqUKXbt2LXFN/ZgxY0hNTWXJkiVERkbSpEkTsrKyMMaccCTfsWNHlixZwr59+wr9QlBKBaH0dHj2WXjnHaheHT75BAYOhHKcvtWJ4jI4ePAg1atXp0qVKqxdu5YFCxYAEBkZSW5uLgBxcXFkZGQUek+dOnWIjIxk7ty5bN1qq6ZedtllTJw4kbS0NIBCUz3du3dnyJAhXH311YU+SykVRIyB8eOheXM7WL37bli3Du68s1yTPgRxyYZA0L17dz788EPatGlDs2bN6Ny5MwCDBg2iTZs2tGvXjjFjxnDBBRfQunVrevToweOPP861115Lhw4dSExMpHnz5gC0atWKJ554gksuuYTw8HDatm3LZ599dvRYN954IxkZGfTs2ZPp06dTuXJlJ/7JSqlTsXatndaZMwfat4dvvoHzfDvxURpiTLGrKQNKhw4dTNFGLGvWrKFFi+JWh4Ye/VooFaAOHYKXXoLXXoOYGBg2DAYNgvDwcjm8iCwxxnQo+ryO+JVSyteMgSlT4MEHYds2GDAAXn0V6tRxOjJAE79SSvnWpk1w//0wfTqcc4698vaii5yOqhA9uauUUr6QlQXPPw8tW9pk/8YbsGRJwCV90BG/UkqV3YwZcN99sHEj9OsHr78ODYotQxYQdMSvlFKnKjkZeveGHj0gIgJ++MEu2QzgpA+a+JVSqvRycuCVV+ya/O+/tyt3li+Hyy93OjKvaOIvoxkzZtCsWTPOPPNMXn75ZafDUUr529y5trTCkCFwxRWQlARDh0KlSk5H5jVN/GXgcrm49957+f7770lKSmLcuHEkJSU5HZZSyh927oRbboFLL7UncqdNsxdiNWnidGSlpom/DBYtWsSZZ57J6aefTlRUFDfddBNTppS92KhSKoDk5cHbb9tpnUmT4OmnYfVquPpqpyM7ZRViVc9z364maUe6Tz+zZf14nrm21Un32b59Ow0bNjy6nZCQwMKFC30ah1LKQb//Dv/8p52/v/JKePddOOssp6MqMx3xl0Fx5S60Vr5SFUBqKtx1F1xwga2TP2mSPYlbAZI+VJARf0kjc39JSEggOTn56HZKSgr169d3JBallA+43fDRR/Dvf0NGBjz2GDz1FMTGOh2ZT+mIvww6duzIhg0b2Lx5Mzk5OYwfP56ePXs6HZZS6lQsWQKdO9t+t23a2OmdV16pcEkfNPGXSUREBMOHD+fKK6+kRYsW9O3bl1atnPnrQyl1ivbvtyWTO3a0BdW+/NIu2WzZ0unI/KZCTPU46aqrruKqq65yOgylVGkV7Xd7//221o6f+90GAk38SqnQs3KlXa3jQL/bQKBTPUqp0JGRAQ89BG3bwpo18PHHNvmHUNIHHfErpUKBMTBxok36O3fC3/9uu2HVrOl0ZI7QEb9SqmJbtw7+9je46SY47TRYsABGjAjZpA+a+JVSFdXhw7Z42jnnwB9/wPDhsGiRo03OA4VO9SilKpai/W5vv932u61b1+nIAobfRvwi0lBE5orIGhFZLSIPep5/VkS2i8gyzy1o10Leeeed1KlTh9atWzsdilIKbL/ba6+F66+H+HjbAnH0aE36RfhzqicPeNgY0wLoDNwrIvlXRLxpjEn03Kb7MQa/GjhwIDNmzHA6DKVUfr/bVq3g55/htdfgzz8Dst9tIPDbVI8xZiew0/M4Q0TWAIHdj6yULr74YrZs2eJ0GEqFthkz7MVXf/0FffvaJucB3vrQaeUyxy8iTYC2wELgAuA+EbkdWIz9q2B/Me8ZBAwCaNSo0ckP8P0Q2LXSpzFz2jnQQztqKRWwkpNh8GD4+ms4+2zb7zZIWh86ze+rekQkFvgKGGyMSQc+AM4AErF/Ebxe3PuMMSONMR2MMR1q167t7zCVUsEiJ8eerG3R4li/2xUrNOmXgl9H/CISiU36Y4wxXwMYY3YXeP0jYFqZD6Qjc6VCw08/2VILa9ZAz562M1YQtj50mj9X9QjwCbDGGPNGgefrFdjtemCVv2JQSlUQ+f1uu3WDI0fg22/tkk1N+qfEn1M9FwC3AZcWWbr5qoisFJEVQDfgX36Mwa/69+9Ply5dWLduHQkJCXzyySdOh6RUxZKXB++8c6zf7VNPQVISXHON05EFNX+u6vkNKK4PYdAu3yxq3LhxToegVMU1f76d1lm2zJZcGD68wrQ+dJqWbFBKBZa9e22/2/PPt71v//c/u2RTk77PaOJXSgUGtxtGjoRmzY41SFm7Fvr0ASlu8kCdKq3Vo5Ry3pIldlpn0SK4+GJ4/317Fa7yCx3xK6WcU7Df7dat8MUXdsmmJn2/0sSvlCp/+f1umzWDDz+E++6z0zq33qrTOuVAp3qUUuVr5Uo7yv/1V+jUCWbOtK0QVbnREX8ZJCcn061bN1q0aEGrVq14++23nQ5JqcCVkQEPP2yTfFISfPQR/P67Jn0H6Ii/DCIiInj99ddp164dGRkZtG/fniuuuIKWLVuW/GalQoUxdknmv/4FO3bYfrf/+U9Itz50mo74y6BevXq0a9cOgLi4OFq0aMH27dsdjkqpAJLf77ZfP9sMZf58u2RTk76jKsSI/5VFr7B231qffmbzGs15/LzHvd5/y5YtLF26lE6dOvk0DqWC0uHDtmrmf/8LVarAu+/CP/4B4eFOR6aoIInfaZmZmfTu3Zu33nqL+Ph4p8NRyllTp8IDD9jlmbfdZpO/tj4MKBUi8ZdmZO5rubm59O7dm1tuuYUbbrjBsTiUctymTbbB+bRpx1ogXnyx01GpYugcfxkYY7jrrrto0aIFDz30kNPhKOWMrCx44QWb7OfOtSP8pUs16QcwTfxlMG/ePL744gvmzJlDYmIiiYmJTJ9eYYqPKlWymTPhnHPg6afh2mvtRViPPAKRkU5Hpk6iQkz1OOXCCy/EGON0GEqVv+Rkuzzzq69s1cyZM+3qHRUUdMSvlPJebq6dymnRAr77Dl580V6Jq0k/qOiIXynlnZ9+sqUWkpLstM7bb0PTpk5HpU6BjviVUie3a5ctntatm12fP3WqvWnSD1qa+JVSxcvLsxdeNWtmSy48+SSsXm1H+yqo6VSPUup4RfvdvvsunH2201EpH9ERv1LqmL174e67j/W7nTjR9rvVpF+haOIvg6ysLM477zzOPfdcWrVqxTPPPON0SEqdmoL9bkePtmvx16yBG2/UxigVkE71lEGlSpWYM2cOsbGx5ObmcuGFF9KjRw86d+7sdGhKeU/73YYcHfGXgYgQGxsL2Jo9ubm5iI6OVLA4cMC2POzYEbZssa0Qtd9tSPDbiF9EGgKfA6cBbmCkMeZtEakBTACaAFuAvsaY/WU51q5hw8he49uyzJVaNOe0oUNL3M/lctG+fXv++usv7r33Xi3LrAKfMbap+aOP2jn9e++1tXaqVXM6MlVO/DnizwMeNsa0ADoD94pIS2AI8KMx5izgR8920AoPD2fZsmWkpKSwaNEiVq1a5XRISp3YqlVwySUwYIBdh//HH3bFjib9kOK3Eb8xZiew0/M4Q0TWAA2A64Cunt1GAz8BZaqr7M3I3N+qVatG165dmTFjBq1bt3Y6HKUKy8iA556Dt96CqlXtidy77oIwne0NReXyvy4iTYC2wEKgrueXQv4vhzoneM8gEVksIotTU1PLI8xSS01N5cCBAwAcOXKE2bNn07x5c4ejUqoAY+ySzObN4fXX4Y47bDvEv/9dk34I8/uqHhGJBb4CBhtj0r09+WmMGQmMBOjQoUNAlsDcuXMnAwYMwOVy4Xa76du3L9dcc43TYSllrVsH998PP/wAbdvaSpq64kzh58QvIpHYpD/GGPO15+ndIlLPGLNTROoBe/wZgz+1adOGpUuXOh2GUoUdPgzDhsGrr0LlytrvVh3Hb3/riR3afwKsMca8UeClqcAAz+MBwBR/xaBUyJk6FVq2tI3O+/Wzo/777tOkrwrx54j/AuA2YKWILPM8NxR4GZgoIncB24Ab/RiDUqFh82bb4HzaNJv4f/rJrt5Rqhj+XNXzG3CiCf3LfHSMkL9gSjuAhbjsbDulM2yYHdX/97+24bm2PlQnEbQlG6Kjo0lLS6NmzZohm/yNMaSlpREdHe10KMoJs2bZaZwNG6BPH3jzTUhIcDoqFQSCNvEnJCSQkpJCoC71LC/R0dEk6A97aElJsf1uJ02y/W5nzIArr3Q6KhVEgjbxR0ZG0lQ7AKlQkptrL8B67jlwuWyZhUcfhUqVnI5MBZmgTfxKhZSff7Y1dVavhmuugXfe0daH6pTppXtKBbJdu+C226BrV8jMhClT4NtvNemrMtHEr1QgKtjvdsIEeOIJSEqCnj2djkxVADrVo1SgWbDAXmm7bBlcfjkMH25/ASjlIzriVypQpKXZ4mldusCePXakP2uWJn3lc5r4lXKa2w0ffWQbmn/6KTz8MKxdC337ar9b5Rc61aOUk/780/a7XbgQLroI3nsPzjnH6ahUBacjfqWccOCALZncsaOtszN6tF2yqUlflYNSJX4RCROReH8Fo1SFl9/vtnlzeP99exJ33Tq4/Xad1lHlpsTELyJjRSReRGKAJGCdiDzq/9CUqmBWrbLr8W+/HRo3tv1uhw/Xfreq3Hkz4m9pjEkHegHTgUbYcstKKW9kZtrSCm3b2uQ/YgTMnw/t2jkdmQpR3iT+SE8nrV7AFGNMLqC1gJUqiTHwv//ZaZ3XXoMBA+y0zqBB2u9WOcqb774RwBYgBvhFRBoD6f4MSqmgt369rZjZty/Urg2//w4ffwy1ajkdmVIlJ35jzDvGmAbGmKuMtRXoVg6xKRV8Dh+Gp56yq3MWLoS337Zz+V26OB2ZUkd5c3K3roh8IiLfe7ZbcqxnrlIq37ffQqtW8OKLcOONdlrngQcgQi+XUYHFm6mez4CZQH3P9npgsL8CUirobN5si6f17AlVqsDcufDll3DaaU5HplSxvEn8tYwxEwE3gDEmD3D5NSqlgkF2Nrz0km1uPmeO7X27dKldsqlUAPPmb9BDIlITz0oeEekMHPRrVEoFuh9+sP1u16+H3r1tv9uGDZ2OSimveJP4HwKmAmeIyDygNtDHr1EpFahSUuChh+wyzTPP1H63KiiVmPiNMX+KyCVAM0CAdZ61/EqFjtxcu0Ln2Wdtv9vnn7cXZUVHOx2ZUqVWYuIXkRuKPHW2iBwEVhpj9vgnLKUCyC+/2Aqaq1fD1Vfbfrenn+50VEqdMm9O7t4FfAzc4rl9hJ3+mSciJyzdICKjRGSPiKwq8NyzIrJdRJZ5bleVMX6l/Gf3bltX55JLbNmFb76xSzY16asg503idwMtjDG9jTG9gZZANtAJePwk7/sM6F7M828aYxI9t+mlDVgpv3O5jrU7HD8ehg61/W6vu04raKoKwZuTu02MMbsLbO8BzjbG7BORE871G2N+EZEmZYxPqfK1YIGd1lm6FC67zP4CaN7c6ahUReJ2QXY6ZB2ELM99sdsH7PYlj8Fpvu3T4E3i/1VEpgH/82z3xtbsiQEOnMIx7xOR24HFwMPGmP3F7SQig4BBAI0aNTqFwyhVCmlp8O9/2xaI9evbkb62PlRFGQN5WUWS9EEvkniBfXIySj5OZBWIrgqV4iHbi/1LSYw5eaFNERFssr8Au6rnN+ArU9Ib7XubANOMMa0923WBvdhrAl4A6hlj7izpczp06GAWL15c0m5KlZ7bDaNGwZAhtivWgw/alTtxcU5Hpvzh6Gj7BEm66Gi7uH3cJSxqlHCIjj+WuKOrHrsd3S76ev6253F4pE/+uSKyxBjToejz3iznNMAkz61MCk4ZichHwLSyfqZSp2zpUjuts2ABXHih7YilrQ8DV5lG2557r0bbMYUTc5VaUOP0YhJ1teITeVRMwP+leMLELyIZnKTuvjGm1C0YRaSeMWanZ/N6YNXJ9lfKLw4etBU033sPata0/W5vuy3gf1iDXkmj7UJTIid43ZVz8mMUN9ouNmkXsx1dDSrF+Wy0HchOmPiNMXEAIvI8sAv4AjvVcwtQ4t/BIjIO6ArUEpEU4Bmgq4gkYn+hbAHuKVv4SpWCMTBmDDzyCOzZY/vdvvgiVK/udGSB7+hou5iTj97Ma+toO6B4c3L3SmNMpwLbH4jIQuDVk73JGNO/mKc/KU1wSvnM6tVw773w889w3nnw3XfQvr3TUZWvvGzI2FXySNuvo+0TjbhDZ7QdCLxJ/C4RuQUYjx2p90erc6pgkZlpyyu8+aY9YTtiBNx9d+i1PkxeBONvgUMnudheR9shw5vEfzPwtudmgHme55QKXMbAV1/Bv/5lC6vdeSe8/LJtgxhqVk6Cb/4J8fXhsnehcnUdbYc4b1b1bAGu838oSvnIhg22ZPKsWXDuuTBhApx/vtNRlT9j4OdX4adh0Oh86PclxNR0OioVALxpvXi2iPyYX3NHRNqIyJP+D02pUjpyBJ5+Glq3hvnzbTXNxYtDM+nnZsHXg2zSP7c/3P6NJn11lDcTnR8B/wZyAYwxK4Cb/BmUUqU2bZrtd/vCC9CnT2j3uz20Fz7vCSsnwqVPQa8PIKKS01GpAOLNT0UVY8wiKXzSJs9P8ShVOlu22Kttp06FFi1sC8Ru3ZyOyjl71sLYvpC5G278DFpd73REKgB5k/j3isgZHGu92AfYefK3KOVn2dnw2mu2560IvPIKDB4MUVFOR+acjXNg4kA7uh/4HSQcd6W+UoB3if9eYCTQXES2A5uxF3Ep5YzZs+2a/PXr4YYb7FLNUC/kt3gUfPcI1G4ON4+HaiH+9VAn5c2qnk3A5Z5qnGHGGN+XilPKG9u32363EyfCGWfA999D9+JaPoQQtwtmPQUL3oMzr4A+o+wSTaVOwptVPU8CGGMOASVcuqeUH+Tmwuuv27r4U6bAc8/BqlWa9LMz7UVZC96D8+6B/uM16SuvnDDxi8hjItIF6FPg6fn+D0mpAn79Fdq1s/V1Lr7Yll54+mltcn5wO3zaHTbMhKteg6tehfAQXMGkTsnJvlPWATcCp4vIr8AaoKaINDPGrCuX6FTo2r0bHnsMPv/czt9PnqytD/PtWApjb4KcQ3Dz/+Csy52OSAWZk0317AeGAn9hq2y+43l+iIj87ue4VKhyuWy55GbNYNw42xUrKQl69dKkD7DmWxjVA8Kj4K5ZmvTVKTnZiL87tpTyGcAbwHLgkDHmjvIITIWghQttY5Q//4RLL7W/ALTfrWUMzHsbZj8LDdpD/3EQW8fpqFSQOuGI3xgz1BhzGbZu/pfYXxK1ReQ3Efm2nOJToSAtDe65B7p0gZ077Uh/9mxN+vnycmDqfTD7GXtB1sBpmvRVmXhzNmimMeYP4A8R+Ycx5kIRqeXvwFQIcLvh00/h8cdtv9vBg22/23hdmXLUkf0w4TbY8itc/Ch0HRp6JaWVz3mzjv+xApsDPc/t9VdAKkQsW2andebPhwsusP1u27RxOqrAkrbRll84sA2uHwHnaoks5RulGjoYY5b7KxAVIg4etLV12reHv/6yI/5fftGkX9SWefDxZXB4H9w+VZO+8ild+KvKhzEwdqxdj797N/zf/9k6O9rv9njLxsLUB6BGU7h5gu2CpZQPaeJX/peUZGvr/PQTdOwI334LHbSA2HHcbpj7Ivz6OjS9BPqOtt2ylPIxPUuk/Ccz0564PfdcWL4cPvjAzulr0j9ezmGYNNAm/XYD4NavNOkrv9ERv/I9Y+Drr+0qnZQUuOMOWzY5FPvdeiNjN4y7yV6R+7cXoct9erGa8itN/Mq3NmyA+++HmTPtCdvx4+2qHVW8Xats0j+cBjeNgeZXOx2RCgE61aN848gReOYZ2+/299/hrbdgyRJN+iezfhaMuhLceXDH95r0VbnxW+IXkVEisie/SbvnuRoi8oOIbPDc6yRmRfDdd7bf7fPPQ+/esHatXbIZiv1uvbVwBIzrZ1fs/H0O1E90OiIVQvw54v8MW++noCHAj8aYs4AfPdsqWG3daounXXMNVKoEP/5ol2zWr+90ZIHLlWc7ZX3/GDS7Cu6cAfH69VLly2+J3xjzC7CvyNPXAaM9j0cDvfx1fOVHOTnwn//Y5uY//AAvv2xX7Vx6qdORBbasg3aU/8dHcP4D0PcLiIpxOioVgsr7b/G6xpidAMaYnSJywkpTIjIIGATQKNT7qQaSH3+0a/LXrYPrr7dz+fr/U7L9W2FsP0jbANe+A+0HOB2RCmEBe3LXGDPSGNPBGNOhti4DdN727XDTTXD55ZCXB9On2yWbmvRLlvyHLb+QscOuz9ekrxxW3ol/t4jUA/Dc7ynn46vSys2FN96wJZK/+cZWz1y1Cnr0cDqy4LByEnx2NUTFwl2z4fSuTkekVLkn/qlA/nBnADClnI+vSuO332wxtYcfhosusv1un3lG+916wxj4+VX46i5o0A7u/hFqn+10VEoB/l3OOQ7bnL2ZiKSIyF3Ay8AVIrIBuMKzrQLNnj0wcKBN9gcO2Cmd776DM85wOrLgkJcNk++BuS9Bm5vg9ikQU9PpqJQ6ym8nd40x/U/w0mX+OqYqI5cLRoyAJ56AQ4dgyBB48kmI0ZUnXjuUBhNugW3z4dIn4aJHtPyCCjh6hY2y/vgD/vEPe7XtpZfC8OF2uabyXup6GHsjZOyCPp9C6xucjkipYgXsqh5VTvbts7XxO3WCHTuO9bvVpF86G+fCx5dDziEY+J0mfRXQNPGHKrcbRo2CZs3g449tiYW1a+2STZ2aKJ0ln8GXvaFqA1t+IUHLTqvAplM9oWj5ctvv9vffbRG1996zNfNV6bhd8MPTMH84nHm5nd6J1kbxKvDpiD+UHDxoa+S3awfr1x/rd6tJv/SyM2HCrTbpnzcI+k/QpK+Cho74Q4Exdu7+4Ydtv9t77rH9bmvUcDqy4HRwu625s3s19PgvdBrkdERKlYom/opuzRpbW2fuXNvycOpU2/dWnZody2zjlOxMO8o/+29OR6RUqelUT0WV3++2TRtYutT2u12wQJN+WayZBp/2gLAIuGumJn0VtHTEX9EYA5Mn27n85GR7Be4rr0CdExZCVSUxBn5/157IbdAObhoHcXWdjkqpU6aJvyL56y/b73bGDDvSHzsWLrzQ6aiCmysXvnsI/vwcWl0PvT6AyMpOR6VUmWjirwiOHLHNUF55BaKi4M034b77tPVhWR3ZDxNvh82/wMWPQtehEKazoyr4aWYIdtOn21H+pk324qvXX9fWh76QttE2Ttm/BXp9CIknKj2lVPDRxB+stm618/jffGNr5c+eDZdp/Tuf2Po7jL/FPh4wFRqf72w8SvmY/t0abAr2u501yz5evlyTvq8sGweje0KVmnD3bE36qkLSEX8wKdjvtlcv2++2cWOno6oY3G5bP//X16DpxdD3c6hc3emolPILHfEHgx07oH9/2+82N9c2RZk8WZO+r+Qega/utEm/3e1w69ea9FWFpiP+QJaXB+++a9sd5uTY+8cfh8q6nNBnMnbD+P6w/U+44gU4/36tTqoqPE38geq332wFzZUroXt3+wvgzDOdjqpi2b3artw5nAb9voQW1zgdkVLlQqd6As2ePXDHHcf63X71lV2yqUnftzNMkVwAABLvSURBVDb8AJ9cCe48uON7TfoqpGjiDxQul62n06wZfPmlndJZswZuuEGnHnxt4UgY2xdqNLWNU+onOh2RUuVKp3oCwR9/2GmdxYuhWzfbGEVbH/qeKw9m/hsWjYRmV8ENH0GlWKejUqrc6YjfSfv22QbnnTpBSgqMGWOXbGrS972sdFtOedFI6HKfndPXpK9ClI74neB2w+jR8NhjNvk/8AA89xxUrep0ZBXTgW32JO7e9XDt29B+oNMRKeUoTfzlrWC/2/PPh/ff19aH/pSyGMb1h7xsuPUrOL2r0xEp5ThHpnpEZIuIrBSRZSKy2IkYyl16OvzrX9C+ve13O2oU/PqrJn1/WvU1fHY1RFWBu3/QpK+Uh5Mj/m7GmL0OHr98GAPjx9t+t7t2waBBMGyY9rv1J2PsVbhzXoRGXaDfGIip6XRUSgUMnerxp4L9btu3hylTtPWhv+Vlw7cPwvJx0KYf9HwXIio5HZVSAcWpVT0GmCUiS0RkUHE7iMggEVksIotTU1PLObwyOnQIhgyx0zhLl9p5/IULNen726E0+LyXTfrdnoDrR2jSV6oYTo34LzDG7BCROsAPIrLWGPNLwR2MMSOBkQAdOnQwTgRZasbY+viDB8O2bdrvtjylrrcXZaXvgD6joHVvpyNSKmA5MuI3xuzw3O8BJgPnORGHT23cCFdfba+0rVrVnrj99FNN+uVh08/wyeWQkwkDv9Okr1QJyj3xi0iMiMTlPwb+Bqwq7zh8JisLnn0WWrWyyf6NN2DJEm1yXl6WjIYvb4C4+nD3j9BQp9OUKokTUz11gcli689EAGONMTMciKPstN+tc9xumP0M/P4OnHk59PkUouOdjkqpoFDuid8YswkI7sXr27bZefzJk21RNe13W75yDsHXg2DtNOj4d+j+MoTrAjWlvKU/LaWRk2Oncl54wZ7IHTYMHnoIKunKkXKTvsPW3Nm1Enq8Cp3ucToipYKOJn5vzZlj1+SvXav9bp2yc7mtuZOdAf0nwNl/czoipYKSVucsyc6dcPPNdionOxumTdN+t05YOx1GdQcJhztnatJXqgw08Z9IXp4d1TdrBl9/DU8/DatX2yWbqvwYA7+/C+NvhjotbOOU01o7HZVSQU2neoozb56toLlihfa7dZIrF757GP4cDS17wfUfQqQ2mleqrHTEX1Bqqu13e+GFsH+/9rt10pH98GVvm/QvesQu19Skr5RP6IgfbL/bjz6CoUMhI8P2u33qKYiJcTqy0LRvkz2Ju28z9PoAEm92OiKlfMrtNmTm5JGRlUf6kdxj99m5pB/JIyMrl/Qse3/nBU05q26cT4+viX/xYtv+cPFi6NrV9rtt2dLpqELX1vl2Ph8Dt0+BJhc4HZFSx8nOcxVO2lm5x20XelzktczsPEwJFciiI8OIi47k2jb1NfH7zP79doQ/YgTUrWv73fbvD/aKYuWE5RNg6n1QrRHcPBFqnuF0RKoCKs1oO/3IscSdv52RlUt2nvukxwgTiIuOJC46gnjPfcMaVY5ux0dHEF+54OuRxFeOsPfR9j4qwn8z8aGX+LXfbeAxBuYOg19ehSYXQd/PoYo2qlHF82a0nb+dftx26Ubb+Um4auVIEqpXtkm78rHkXThhexJ55UhiosKRAB5EhlbiX7HCrtaZNw+6dLF18hMTnY4qtOUegW/+Cau/hra3wdVvQESU01EpP3G7DYdy8o4bQRdN1r4ebSdUr0xcvbiAGG0HgtBI/Onp8Mwzdllm9erwySe2Vn5Yxf7PDXiZe+x8fspiuOJ5OP8BnWoLcGUZbWdk5ZJR1tG2J2kH82g7EFTsxK/9bgPX7iS7cudQKvT7Alpc63REFZ7L5SYjO4f0bDtyzihmtJ2R5To6x330ec9oO9PL0XZskdF2g2qVaH5ajGc7vNjRdmx+oq9U9tG227htj78KIkzCfP6LrGIn/n/8w568bdfOdsY6L/j7vVQIG2bD/wZCVAzc+T3Ub+t0RBXC4ZxsVu7aRlLqFv7al0xyxg72HN7Jgdw9HHHvxRW+HxGX9x8YAcR6bkCU51YSA6R7bkdleW6q1D64/AMubODb/h4VO/H37w9t2sA990B4uNPRKIBFH8H3j0HdVrbQWtUGTkcUNNIOZ7Bi52aSUrey+UAKKRk7SM3aRXpuKtnsxR2Wjkjhoa644qlETWpGnUGt6LpUrRRLpYgwzy2cSpFhREWEEx0RRlREGOFhOkUSaBrFNfL5Z1bsxH/JJfamnOd2wcyhsPBDOLsH9P4YKsU6HVXAcLvdJB/cy4pdW1iXto0tB1LYcWgnaVm7yXTtIYd9EH6o0HuMCSPcVZ3osJrUi2xDncqn0TCuAWfUSKBF7cacc1pj4irp1c7qeBU78avAkJ0Bk+6EDbOgy332RG5YaP0FludysW7vDlbt3sKGfclsPbidXYd3sD97N4dce8kN24eEZRd6j3FHEuGuSUx4LepFnU3dKvVoXLUBZ9VoSKu6jWleK4GoCP0RVqWn3zXKvw4k25O4qWvhmregwx1OR+QXh3OyWbV7G6v3bOWvfduOn18P24+EFZlfd1UmklrERdSjZqVE6sXUo2m1BM6u2YhzTmtCk2q1CdOVZ8oPNPEr/0lZYrtl5WXDrZPgjEudjuiU7TucyfJdm0nas+Xo/PrerF0cPMn8Ovnz65FnULvyaTSIrc/p1RJoXrsR55zWlLqxetGgcoYmfuUfq7+ByfdAbF0YOA1qN3M6ohNyu92kpKexfOcW1qdtY/OBFHYe2kla1i4yXKnkkBY08+vGGMyRI7gyMnFnpOPKyMCdkXH03uSVYlWPCghx3boS2cC3iyA08SvfMgZ+fR3mvAANO8NNYyCmlqMhlX1+/axym183eXk2SWdm4kpPx52RiSvD3ttEXsx9ejquzGP35OX5PC7lnKjGjTTxqwCWlw3fDoblY+GcvtDzXYiM9vthD+dms3p3Mqt2b2Hj/mSS07ez+8hODubs4fBJ59drEhdxms/m10sabbsyMnCnZ+DKLHzvzszAlW5fN4cPl3icsJgYwuLiCI+LIywujojatYk6/XTC4+MIi40rfF9gv7DYOCQqslT/JuW8cD+Uh9fEr3zj8D6YcCtsnQfdnoCLH/VZ+YX9hzNZtmsza1K3sml/CtuPrl/fQxZpuMMOnnR+vVbluiTE1qdptQSa12pMm3rFz6+bvDw70s7IIGfXWk8y9vFoOyLCJuL4OMJj7X1UrVqFtm2ijic8LvbYfXw84bGxhMXGIrqSR5WRfgepstu7Acb2hYPbofcncE4fr99a9vn1c+z8emx9zoqpQ/MqtWgWXZXo7JzCo+2UDNxJG3FlLiMvPYNtRUbb7owM3N6MtqtUsUk4PynXruXdaNvzWKKjtY6McpwjiV9EugNvA+HAx8aYl52IQ/nA5l/sSD8s0p7EbVi4LEaey8WGtJ2s3G0T+7b07ew8dPz8epjbUDkbYrKgclYE9Y/EUT03ltp5DantrkJdU4naRFHLHUZcrsFkZnoS+0bc6UsLjbZ3nyhWHW0rBTiQ+EUkHHgPuAJIAf4QkanGmKTyjkWV0Z9fkDNtMNurNWF+qwfZvHABad9N4vDBnbgz9hKWdYDKOZnE5Lipkm2IzYKO2VAlK4zYrAhicsKIzTZUzhGisgtOkbiAbGBvocPlj7bz8pNyrZpENW1KWFws4XHxhe/j4wmLzb+3I3AdbStlOTF8OQ/4yxizCUBExgPXAT5P/OP/fjF1k1J9/bHKI9wFlbLrUCX7MG3d/+Fkpdbc4WGYmBgi46sSVbUqYXXijht962hbqfLhxE9SAyC5wHYK0KnoTiIyCBgE0KjRqRUpkmrVOVhj/ym9V5XMFR7Fkfh6RFWtRXyN2tSqm0DD+o2JqVlTR9tKBTAnEn9xP/3HVc82xowERgJ06NDhlKpr9/vvlFN5m1JKVWhOFAJJARoW2E4AdjgQh1JKhSQnEv8fwFki0lREooCbgKkOxKGUUiGp3Kd6jDF5InIfMBO7nHOUMWZ1ecehlFKhypFlEsaY6cB0J46tlFKhTot9K6VUiNHEr5RSIUYTv1JKhRhN/EopFWLEmFO6NqpciUgqsNXpOIqoRdFiMoErmGKF4Io3mGKF4Io3mGKFwIy3sTGmdtEngyLxByIRWWyM6eB0HN4IplghuOINplghuOINplghuOLVqR6llAoxmviVUirEaOI/dSOdDqAUgilWCK54gylWCK54gylWCKJ4dY5fKaVCjI74lVIqxGjiV0qpEKOJvwgR6S4i60TkLxEZUszrlURkguf1hSLSxPP8FSKyRERWeu4vDeR4C7zeSEQyReSRQI5VRNqIyHwRWe35GkcHarwiEikioz1xrhGRfwdArBeLyJ8ikicifYq8NkBENnhuA/wda1niFZHEAt8HK0SkX6DGWuD1eBHZLiLD/R2r14wxevPcsGWiNwKnA1HAcqBlkX3+CXzoeXwTMMHzuC1Q3/O4NbA9kOMt8PpXwP+ARwI1VmwV2RXAuZ7tmkB4AMd7MzDe87gKsAVo4nCsTYA2wOdAnwLP1wA2ee6rex5XD4Cv7YniPRs4y/O4PrATqBaIsRZ4/W1gLDDcn1/X0tx0xF/Y0UbwxpgcIL8RfEHXAaM9jycBl4mIGGOWGmPyO4mtBqJFpFKgxgsgIr2wP+jl0Q+hLLH+DVhhjFkOYIxJM8a4AjheA8SISARQGcgB0p2M1RizxRizAnAXee+VwA/GmH3GmP3AD0B3P8ZapniNMeuNMRs8j3cAe4DjrkwNhFgBRKQ9UBeY5ccYS00Tf2HFNYJvcKJ9jDF5wEHsCLSg3sBSY0y2n+I8LhYPr+MVkRjgceA5P8d4XBwepfnang0YEZnp+ZP6sQCPdxJwCDsa3Qa8ZozZ53Cs/njvqfLJMUXkPOwofKOP4irOKccqImHA68CjfoirTBxpxBLAvGkEf9J9RKQV8Ap2lOpvZYn3OeBNY0ym5w8AfytLrBHAhUBH4DDwo4gsMcb86NsQvYrFm33OA1zYqYjqwK8iMtsYs8m3IZYYh7/fe6rKfEwRqQd8AQwwxhw30vahssT6T2C6MSa5nH7GvKaJvzBvGsHn75Pi+VO+KrAPQEQSgMnA7cYYf45CisaSrzTxdgL6iMirQDXALSJZxhh/nYAqS6wpwM/GmL0AIjIdaAf4M/GXJd6bgRnGmFxgj4jMAzpgp9WcivVk7+1a5L0/+SSqkx/zVONFROKB74AnjTELfBxbUWWJtQtwkYj8E4gFokQk0xhz3Anicuf0SYZAumF/EW4CmnLsRE6rIvvcS+ETehM9j6t59u8dDPEW2edZ/H9ytyxf2+rAn9gTpRHAbODqAI73ceBT7GgxBkgC2jgZa4F9P+P4k7ubPV/j6p7HNZz+2p4k3ijsL/zB/ozRF7EWeW0gAXRy1/EAAu0GXAWsx84bPuF57nmgp+dxNHYVzF/AIuB0z/NPYud1lxW41QnUeIt8ht8Tf1ljBW7FnoReBbwa4N8LsZ7nV3uS/qMBEGtH7Oj1EJAGrC7w3js9/4a/gDsC5GtbbLye74PcIj9niYEYa5HPGEgAJX4t2aCUUiFGV/UopVSI0cSvlFIhRhO/UkqFGE38SikVYjTxK6VUiNHEryocEbleRIyINC/wXBMRubnAdqKIXFWGY2wRkVpl3ccfx1WqJJr4VUXUH/gNe1FVvibYK2rzJWLXZysVcjTxqwpFRGKBC4C7KJz4X8ZePr9MRB7HXoDTz7PdT0TOE5HfRWSp576Z5/PCReQ1T239FSJyf5HjVRaRGSLy9xLiulVEFnmON8Lzuf/wlMzI32egiLx7ov198gVSCk38quLpha2Tsx7YJyLtPM8PAX41xiQaY14BnsbWz080xkwA1gIXG2Pael4b5nnfIOzl+m2NMW2AMQWOFQt8C4w1xnx0ooBEpAXQD7jAGJOILeB2C7aK5w0Fdu0HTDjJ/kr5hBZpUxVNf+Atz+Pxnu0/vXhfVWC0iJyFrb4Y6Xn+cmw9njwAU7i88hRs+YgxnNxlQHvgD0+VxsrAHmNMqohsEpHOwAagGTAPWwPouP29+Dco5RVN/KrCEJGawKVAaxEx2O5Jxsv6/S8Ac40x14ttofhT/sdy4jK884AeIjLWnLz2iQCjjTHFtWCcAPTF/sUx2RhjPM1cTrS/UmWmUz2qIukDfG6MaWyMaWKMaYitNnkhkAHEFdi36HZVYLvn8cACz88C/s9TdhkRqVHgtaexRbneLyGuH7ElsOvkf4aINPa89jV2eqo/9pdASfsrVWaa+FVF0h/bD6Ggr7CreVYAeSKyXET+BcwFWuaf3AVeBf7jqZ1f8ETqx9guWitEZDmFVwYBDMa22XyVEzDGJGGrt84SkRXY9ob1PK/tx1bwbGyMWVTS/kr5glbnVEqpEKMjfqWUCjGa+JVSKsRo4ldKqRCjiV8ppUKMJn6llAoxmviVUirEaOJXSqkQ8//DQLVy6zlQIQAAAABJRU5ErkJggg==\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"plot_num_edges(attack_level, edges_removed_during_attack, recovery_option, num_edges, path)"
]
},
{
"cell_type": "code",
"execution_count": 53,
"metadata": {},
"outputs": [
{
"ename": "FileExistsError",
"evalue": "[Errno 17] File exists: 'Experiments/ER/target/num_edges.txt'",
"output_type": "error",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[0;31mFileExistsError\u001b[0m Traceback (most recent call last)",
"\u001b[0;32m<ipython-input-53-48a96781cb1e>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0msave_data\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnum_edges\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdiameter_first_attack\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdiameter_second_attack\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mattack_level\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mpath\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
"\u001b[0;32m~/Desktop/Complex Networks/Project/complex-networks-project/experiments.py\u001b[0m in \u001b[0;36msave_data\u001b[0;34m(num_edges, diameter_first_attack, diameter_second_attack, attack_level, path)\u001b[0m\n\u001b[1;32m 30\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 31\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0msave_data\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnum_edges\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdiameter_first_attack\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdiameter_second_attack\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mattack_level\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mpath\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 32\u001b[0;31m \u001b[0mf\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mopen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mpath\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0;34m\"num_edges.txt\"\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m\"x\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 33\u001b[0m \u001b[0mjson\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdump\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnum_edges\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mf\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 34\u001b[0m \u001b[0mf\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mclose\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;31mFileExistsError\u001b[0m: [Errno 17] File exists: 'Experiments/ER/target/num_edges.txt'"
]
}
],
"source": [
"save_data(num_edges, diameter_first_attack, diameter_second_attack, attack_level, path)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Random attack"
]
},
{
"cell_type": "code",
"execution_count": 55,
"metadata": {},
"outputs": [
{
"ename": "IndexError",
"evalue": "Cannot choose from an empty sequence",
"output_type": "error",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[0;31mIndexError\u001b[0m Traceback (most recent call last)",
"\u001b[0;32m<ipython-input-55-607354e84d7b>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[1;32m 14\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mro\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mrecovery_option\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 15\u001b[0m \u001b[0;31m# Recovery\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 16\u001b[0;31m \u001b[0mSF_recovered\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mne\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mrecover_to_initial_diameter\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0minitial_diameter\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0minitial_lcc\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mSF_attack_1\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mrecovery_option\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mro\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 17\u001b[0m \u001b[0mnum_edges\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mro\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mappend\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mne\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 18\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m~/Desktop/Complex Networks/Project/complex-networks-project/recover.py\u001b[0m in \u001b[0;36mrecover_to_initial_diameter\u001b[0;34m(initial_diameter, initial_lcc, attacked_graph, recovery_option)\u001b[0m\n\u001b[1;32m 122\u001b[0m \u001b[0;31m# Then recover the diameter\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 123\u001b[0m \u001b[0;32mwhile\u001b[0m \u001b[0mnew_diameter\u001b[0m \u001b[0;34m>\u001b[0m \u001b[0minitial_diameter\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 124\u001b[0;31m \u001b[0mrecovered_graph\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0madd_edge\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mrecovery_option\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mrecovered_graph\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 125\u001b[0m \u001b[0mnum_edges\u001b[0m \u001b[0;34m+=\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 126\u001b[0m \u001b[0mnew_diameter\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mget_diameter\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mrecovered_graph\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m~/Desktop/Complex Networks/Project/complex-networks-project/recover.py\u001b[0m in \u001b[0;36madd_edge\u001b[0;34m(recovery_option, recovered_graph)\u001b[0m\n\u001b[1;32m 135\u001b[0m \u001b[0;31m# Select respective recovery option\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 136\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mrecovery_option\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0mRANDOM\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 137\u001b[0;31m \u001b[0mrecovered_graph\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0madd_random_edge\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mrecovered_graph\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 138\u001b[0m \u001b[0;32melif\u001b[0m \u001b[0mrecovery_option\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0mPREFERENTIAL_MIN_MIN\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 139\u001b[0m \u001b[0mrecovered_graph\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0madd_preferential_edge_min_min\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mrecovered_graph\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m~/Desktop/Complex Networks/Project/complex-networks-project/recover.py\u001b[0m in \u001b[0;36madd_random_edge\u001b[0;34m(graph)\u001b[0m\n\u001b[1;32m 48\u001b[0m \u001b[0;31m# random edge choice\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 49\u001b[0m \u001b[0mchosen_edge\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mrandom\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mchoice\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0medges\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 50\u001b[0;31m \u001b[0mchosen_nonedge\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mrandom\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mchoice\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mx\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mx\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mnonedges\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mchosen_edge\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0mx\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 51\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 52\u001b[0m \u001b[0;31m# add new edge\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m~/anaconda3/lib/python3.7/random.py\u001b[0m in \u001b[0;36mchoice\u001b[0;34m(self, seq)\u001b[0m\n\u001b[1;32m 259\u001b[0m \u001b[0mi\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_randbelow\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mseq\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 260\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mValueError\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 261\u001b[0;31m \u001b[0;32mraise\u001b[0m \u001b[0mIndexError\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'Cannot choose from an empty sequence'\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;32mfrom\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 262\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mseq\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mi\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 263\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;31mIndexError\u001b[0m: Cannot choose from an empty sequence"
]
}
],
"source": [
"attack_level = [0.01, 0.02, 0.05, 0.1, 0.15]\n",
"recovery_option = [0, 1, 2, 3]\n",
"num_edges= {0:[], 1:[], 2:[], 3:[]}\n",
"diameter_first_attack = []\n",
"diameter_second_attack = {0:[], 1:[], 2:[], 3:[]}\n",
"edges_removed_during_attack = np.array(attack_level)*SF.size()\n",
"path = \"Experiments/ER/random/\"\n",
"\n",
"for al in attack_level:\n",
" # First attack\n",
" SF_attack_1 = random_edge_attack(SF, al) \n",
" diameter_first_attack.append(get_diameter(SF_attack_1)) \n",
" \n",
" for ro in recovery_option:\n",
" # Recovery\n",
" SF_recovered, ne = recover_to_initial_diameter(initial_diameter, initial_lcc, SF_attack_1, recovery_option=ro)\n",
" num_edges[ro].append(ne)\n",
" \n",
" # Second attack \n",
" SF_attack_2 = random_edge_attack(SF_recovered, al) \n",
" diameter_second_attack[ro].append(get_diameter(SF_attack_2))\n",
" \n",
" print(\"Finished attack level\", al)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"plot_diameter(attack_level, diameter_first_attack, recovery_option, diameter_second_attack, path)\n",
"plot_num_edges(attack_level, edges_removed_during_attack, recovery_option, num_edges, path)\n",
"save_data(num_edges, diameter_first_attack, diameter_second_attack, attack_level, path)"
]
},
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Diameter LCC ratio"
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {},
"outputs": [],
"source": [
"import networkx as nx\n",
"import numpy as np\n",
"import random\n",
"import matplotlib.pyplot as plt\n",
"\n",
"from graph import *\n",
"from robustness import *\n",
"from attack import *\n",
"from recover import *\n",
"from experiments import *"
]
},
{
"cell_type": "code",
"execution_count": 25,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/Users/victorialapshyna/anaconda3/lib/python3.7/site-packages/numpy/lib/function_base.py:393: RuntimeWarning: Mean of empty slice.\n",
" avg = a.mean(axis)\n",
"/Users/victorialapshyna/anaconda3/lib/python3.7/site-packages/numpy/core/_methods.py:161: RuntimeWarning: invalid value encountered in double_scalars\n",
" ret = ret.dtype.type(ret / rcount)\n"
]
}
],
"source": [
"SF = graph(size=100)\n",
"initial_diameter, initial_lcc, av = get_robustness(SF)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
{
"cell_type": "code",
"execution_count": 26,
"metadata": {},
"outputs": [],
"source": [
"attack_level = [0.01, 0.02, 0.05, 0.1]\n",
"recovery_option = [0, 1, 2, 3]\n",
"num_edges= {0:[], 1:[], 2:[], 3:[]}\n",
"d_lcc_first_attack = []\n",
"d_lcc_second_attack = {0:[], 1:[], 2:[], 3:[]}\n",
"path = \"Experiments/SF/target/\"\n",
"edges_removed_during_attack = np.array(attack_level)*SF.size()"
]
},
{
"cell_type": "code",
"execution_count": 29,
"metadata": {},
"outputs": [],
"source": [
"attack_level = [0.15, 0.3, 0.5]"
]
},
{
"cell_type": "code",
"execution_count": 30,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/Users/victorialapshyna/anaconda3/lib/python3.7/site-packages/numpy/lib/function_base.py:393: RuntimeWarning: Mean of empty slice.\n",
" avg = a.mean(axis)\n",
"/Users/victorialapshyna/anaconda3/lib/python3.7/site-packages/numpy/core/_methods.py:161: RuntimeWarning: invalid value encountered in double_scalars\n",
" ret = ret.dtype.type(ret / rcount)\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Diameter: 2.4349494949494948\n",
"Size of Largest Connected Component: 100\n",
"Average isolated connected component size: 0\n",
"Diameter: 2.4345454545454546\n",
"Size of Largest Connected Component: 100\n",
"Average isolated connected component size: 0\n",
"Diameter: 2.433333333333333\n",
"Size of Largest Connected Component: 100\n",
"Average isolated connected component size: 0\n",
"Diameter: 2.435151515151515\n",
"Size of Largest Connected Component: 100\n",
"Average isolated connected component size: 0\n",
"Finished attack level 0.15\n",
"Diameter: 2.4274747474747476\n",
"Size of Largest Connected Component: 100\n",
"Average isolated connected component size: 0\n",
"Diameter: 2.5345454545454547\n",
"Size of Largest Connected Component: 100\n",
"Average isolated connected component size: 0\n",
"Diameter: 2.4317171717171715\n",
"Size of Largest Connected Component: 100\n",
"Average isolated connected component size: 0\n",
"Diameter: 2.4349494949494948\n",
"Size of Largest Connected Component: 100\n",
"Average isolated connected component size: 0\n",
"Finished attack level 0.3\n",
"Diameter: 2.605050505050505\n",
"Size of Largest Connected Component: 100\n",
"Average isolated connected component size: 0\n",
"Diameter: 3.422222222222222\n",
"Size of Largest Connected Component: 100\n",
"Average isolated connected component size: 0\n",
"Diameter: 2.419191919191919\n",
"Size of Largest Connected Component: 100\n",
"Average isolated connected component size: 0\n",
"Diameter: 1.9957844022884674\n",
"Size of Largest Connected Component: 82\n",
"Average isolated connected component size: 1.0\n",
"Finished attack level 0.5\n"
]
}
],
"source": [
"for al in attack_level:\n",
" # First attack\n",
" SF_attack_1 = targeted_edge_attack(SF, al) \n",
" d, lcc, av = get_robustness(SF_attack_1)\n",
" d_lcc_first_attack.append(d/lcc) \n",
" \n",
" for ro in recovery_option:\n",
" # Recovery\n",
" SF_recovered, ne = recover_to_initial_diameter_lcc_ratio(initial_diameter, initial_lcc, SF_attack_1, recovery_option=ro)\n",
" num_edges[ro].append(ne)\n",
" \n",
" # Second attack \n",
" SF_attack_2 = targeted_edge_attack(SF_recovered, al) \n",
" d2, lcc2, av = get_robustness(SF_attack_2)\n",
" d_lcc_second_attack[ro].append(d2/lcc2)\n",
" \n",
" print(\"Finished attack level\", al)"
]
},
{
"cell_type": "code",
"execution_count": 32,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.legend.Legend at 0x7f93c29c7810>"
]
},
"execution_count": 32,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"plt.plot(attack_level, d_lcc_first_attack, label=\"first attack\", color='r')\n",
"for ro in recovery_option:\n",
" plt.plot(attack_level, d_lcc_second_attack[ro], label=ro)\n",
"\n",
"plt.xlabel(\"Attack level\")\n",
"plt.ylabel(\"Diameter/LCC ratio\")\n",
"\n",
"plt.legend()"
]
},
{
"cell_type": "code",
"execution_count": 31,
"metadata": {},
"outputs": [],
"source": [
"attack_level = [0.01, 0.02, 0.05, 0.1, 0.15, 0.3, 0.5]"
]
},
{
"cell_type": "code",
"execution_count": 34,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"plt.plot(attack_level, d_lcc_first_attack, label=\"first attack\", color='r')\n",
"for ro in recovery_option:\n",
" plt.plot(attack_level, d_lcc_second_attack[ro], label=ro)\n",
"\n",
"plt.xlabel(\"Attack level\")\n",
"plt.ylabel(\"Diameter/LCC ratio\")\n",
"\n",
"plt.legend()\n",
"\n",
"path = path = \"Experiments/SF/target/\"\n",
"plt.savefig(path+\"diameter_lcc.pdf\")"
]
},
{
"cell_type": "code",
"execution_count": 36,
"metadata": {},
"outputs": [],
"source": [
"f = open(path + \"d_lcc_first_attack.txt\", \"x\")\n",
"json.dump(d_lcc_first_attack, f)\n",
"f.close()"
]
},
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
{
"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.7.5"
}
},
"nbformat": 4,
"nbformat_minor": 4
}