diff --git a/tutorial_notebooks/fdp_analysis_tutorial.py.ipynb b/tutorial_notebooks/fdp_analysis_tutorial.ipynb similarity index 99% rename from tutorial_notebooks/fdp_analysis_tutorial.py.ipynb rename to tutorial_notebooks/fdp_analysis_tutorial.ipynb index 4d74d0b..60f0277 100644 --- a/tutorial_notebooks/fdp_analysis_tutorial.py.ipynb +++ b/tutorial_notebooks/fdp_analysis_tutorial.ipynb @@ -647,5 +647,7 @@ "For real-world applications, replace the synthetic data with actual attack results from your membership inference attacks. Consider experimenting with different values of delta and p_value to understand their impact on the analysis." ] } - ] + ], + "nbformat": 4, + "nbformat_minor": 5 } diff --git a/tutorial_notebooks/lira_attack_cifar10_tutorial.ipynb b/tutorial_notebooks/lira_attack_cifar10_tutorial.ipynb index 83607ae..05e9dff 100644 --- a/tutorial_notebooks/lira_attack_cifar10_tutorial.ipynb +++ b/tutorial_notebooks/lira_attack_cifar10_tutorial.ipynb @@ -682,5 +682,7 @@ "By understanding and addressing these privacy risks, you can build more privacy-preserving machine learning models." ] } - ] + ], + "nbformat": 4, + "nbformat_minor": 5 } diff --git a/tutorial_notebooks/loss_attack_tutorial.ipynb b/tutorial_notebooks/loss_attack_tutorial.ipynb new file mode 100644 index 0000000..c0ca579 --- /dev/null +++ b/tutorial_notebooks/loss_attack_tutorial.ipynb @@ -0,0 +1,860 @@ +{ + "metadata": { + "kernelspec": { + "name": "python3", + "display_name": "python3", + "language": "python" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.10" + } + }, + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "originalKey": "4fdd2989-e840-4838-a27b-072e475d6e44", + "showInput": false, + "outputsInitialized": false, + "bentoAICellStatus": "none", + "language": "markdown", + "isCommentPanelOpen": false + }, + "source": [ + "# Loss-Based Membership Inference Attack with PrivacyGuard\n", + "\n", + "## Introduction\n", + "\n", + "We showcase a loss-based membership inference attack using PrivacyGuard. This tutorial will guide you through the process of conducting a loss-based membership inference attack on a machine learning model and analyzing the results.\n", + "\n", + "### What is a Membership Inference Attack?\n", + "\n", + "A membership inference attack (MIA) is a privacy attack that aims to determine whether a specific data point was used to train a machine learning model. These attacks exploit the fact that models often behave differently on data they were trained on compared to data they haven't seen before.\n", + "\n", + "### Why Loss-Based Attacks?\n", + "\n", + "Loss-based attacks are a common type of membership inference attack that use the loss value (or prediction error) of a model on a data point as a signal for membership. The intuition is that models typically have lower loss values on training data compared to unseen data. This difference can be exploited to infer membership.\n", + "\n", + "### What We'll Cover\n", + "\n", + "In this tutorial, we will:\n", + "1. Set up a simple classification problem using Gaussian data\n", + "2. Train a model on a subset of the data\n", + "3. Perform a loss-based membership inference attack using the `LossAttack` class\n", + "4. Analyze the attack results using the `LossAnalysisNode` class\n", + "5. Interpret the results and discuss privacy implications\n", + "\n", + "Let's get started!" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "originalKey": "057680be-3173-4e6a-8083-3a9e9e39fd79", + "outputsInitialized": false, + "bentoAICellStatus": "none", + "language": "markdown", + "isCommentPanelOpen": false + }, + "source": [ + "## Setup and Imports\n", + "\n", + "First, let's import the necessary libraries and set up our environment." + ] + }, + { + "cell_type": "code", + "metadata": { + "originalKey": "7fcb0c99-deff-4f77-9342-07271c587fac", + "outputsInitialized": true, + "bentoAICellStatus": "none", + "language": "python", + "collapsed": false, + "executionStartTime": 1758725193287, + "executionStopTime": 1758725193411, + "serverExecutionDuration": 8.0242333933711, + "requestMsgId": "92419be1-5501-4eaf-9d15-cfde99bb0fb8", + "isCommentPanelOpen": false + }, + "source": [ + "import numpy as np\n", + "import torch\n", + "import torch.nn as nn\n", + "import torch.optim as optim\n", + "from torch.utils.data import DataLoader, TensorDataset\n", + "import matplotlib.pyplot as plt\n", + "\n", + "# Import Privacy Guard components\n", + "from privacy_guard.attacks.loss_attack import LossAttack\n", + "from privacy_guard.analysis.mia.analysis_node import AnalysisNode\n", + "\n", + "# Set random seeds for reproducibility\n", + "np.random.seed(42)\n", + "torch.manual_seed(42)" + ], + "execution_count": 56, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": "" + }, + "metadata": {}, + "execution_count": 56 + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "originalKey": "36d14925-ea7a-4d6e-8026-dc1084e43c72", + "outputsInitialized": false, + "bentoAICellStatus": "none", + "language": "markdown", + "isCommentPanelOpen": false + }, + "source": [ + "## Generating Synthetic Data\n", + "\n", + "We'll create a synthetic dataset for a binary classification problem using Gaussian distributions. This will serve as our example dataset for demonstrating the membership inference attack." + ] + }, + { + "cell_type": "code", + "metadata": { + "originalKey": "009e85dd-8e8e-4ec2-960d-6b28953a32fe", + "outputsInitialized": true, + "bentoAICellStatus": "none", + "language": "python", + "collapsed": false, + "executionStartTime": 1758725513528, + "executionStopTime": 1758725513896, + "serverExecutionDuration": 2.1753357723355, + "requestMsgId": "af91b381-3d95-439b-97ac-bfae48e39d4c", + "isCommentPanelOpen": false + }, + "source": [ + "# Define parameters for the Gaussian mixture\n", + "n_class = 10 # Number of classes\n", + "n_train = 50 * n_class # Number of training samples\n", + "n_test = 50 * n_class # Number of test samples\n", + "sigma = 10 # Standard deviation of the Gaussian distributions\n", + "d = 1000 # Dimensionality of the feature space" + ], + "execution_count": 77, + "outputs": [] + }, + { + "cell_type": "code", + "metadata": { + "originalKey": "678bfe2d-b42b-4422-a60b-1a652ee85e20", + "showInput": true, + "customInput": null, + "language": "python", + "collapsed": false, + "outputsInitialized": true, + "bentoAICellStatus": "none", + "executionStartTime": 1758725514962, + "executionStopTime": 1758725515184, + "serverExecutionDuration": 13.965449295938, + "requestMsgId": "485e41db-eda5-4352-bfe3-9d8882133bba", + "isCommentPanelOpen": false + }, + "source": [ + "# Generate training data\n", + "train_y = torch.arange(0, n_class).repeat_interleave(n_train // n_class)\n", + "class_centers = torch.randn(n_class, d) # Random centers for each class\n", + "train_x = class_centers[train_y] + sigma * torch.randn(n_train, d)\n", + "\n", + "# Generate test data\n", + "test_y = torch.arange(0, n_class).repeat_interleave(n_test // n_class)\n", + "test_x = class_centers[test_y] + sigma * torch.randn(n_test, d)\n", + "\n", + "# Create datasets\n", + "trainset = TensorDataset(train_x, train_y)\n", + "testset = TensorDataset(test_x, test_y)\n", + "\n", + "print(f\"Training set shape: {train_x.shape}, {train_y.shape}\")\n", + "print(f\"Testing set shape: {test_x.shape}, {test_y.shape}\")" + ], + "execution_count": 78, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Training set shape: torch.Size([500, 1000]), torch.Size([500])\nTesting set shape: torch.Size([500, 1000]), torch.Size([500])\n" + ] + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "originalKey": "9127f8c4-17a9-4f70-b16c-d304d1b9287b", + "outputsInitialized": true, + "bentoAICellStatus": "none", + "language": "markdown", + "isCommentPanelOpen": false + }, + "source": [ + "Let's visualize the first two dimensions of our data to get a sense of the separation between classes:" + ] + }, + { + "cell_type": "code", + "metadata": { + "originalKey": "1ceb3249-2997-4403-80f9-8e133ef18c52", + "outputsInitialized": true, + "bentoAICellStatus": "none", + "language": "python", + "collapsed": false, + "executionStartTime": 1758725516476, + "executionStopTime": 1758725516860, + "serverExecutionDuration": 176.33953783661, + "requestMsgId": "35dc9a57-0ec3-47aa-a481-26810657c01f", + "isCommentPanelOpen": false + }, + "source": [ + "plt.figure(figsize=(10, 6))\n", + "plt.scatter(train_x[train_y == 0, 0], train_x[train_y == 0, 1], alpha=0.5, label='Class 0 (Train)')\n", + "plt.scatter(train_x[train_y == 1, 0], train_x[train_y == 1, 1], alpha=0.5, label='Class 1 (Train)')\n", + "plt.title('First Two Dimensions of the Gaussian Data')\n", + "plt.xlabel('Feature 1')\n", + "plt.ylabel('Feature 2')\n", + "plt.legend()\n", + "plt.grid(True)\n", + "plt.show()" + ], + "execution_count": 79, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/plain": "
", + "image/png": "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CPjegzwviYgoknCGjSiMBEGARuV7xkCWZWhULN1P8c0mSXjn5Elst9mhBqBXKqEWBJSZTJhfWwubJAX09/G8JCKiSMKAjSjMJhUoYWz1fp+xFZg8UBnqJhFFlHVGIxrsdiQrXNeTGZRKNNjtWG80Bvx38rwkIqJIwYCNKMxmF6uQniygqUV2jujLsoymFhkZyQJmFTFzmeLbdrMZeh9pj3qFAtvM5oD/Tp6XREQUKRiwEYWZRiXggVlqzChUwioCTa0yrCIwo1CJ+1k6nOKcLMuwdbFWTBAE2GQ54IVIeF4SEVGk4BAhUQTQqATMGZmAOSMTWMiAqBNBEKAWhC7Xk6kFISjnDM9LIiKKBJxhI4ow7BQSuSrR6WDyUVjEJEkYp9MFvQ08L4mIKFwYsBERUUSbajAgTaWCWXJdT2YURaSrVJhiMIS7iUREREHDlEgiIopoaoUCt2Vl4dtmE44AaBNFqAUBpXo9pgRhHzYiIqJIwoCNiIginlqhQKlGg8tzciAEac0aERFRJOKwJBERRRUGa0REFE8YsBEREREREUUoBmxEREREREQRigEbERERERFRhGLARkREREREFKEYsBEREREREUUoBmxEREREREQRigEbERERERFRhGLARkREREREFKEYsBEREREREUUoBmxEREREREQRigEbERERERFRhGLARkREREREFKEYsBEREREREUUoVbgbEGjrNmzCx4sWo7XViqd+/xtkZKR7PEYURSxbuQZlG7fg5KnTUCoVyMvNwXnnzMTY0SPD0m6iaCbLMgRBCHcziIiIiGJOzARsJrMZCz78FDt27UFCQkKXj3397fewfcdujB41AufMOht2ux1r1m3AK/99GzdedxVmTJ8SsnYTRSubJGGD1Yojx4+jTZahFgSU6HSYajBAreDkPREREVEgxEyv6ul/voBDR6rwwD13YmB+ns/HbduxC9t37MbE8eNw/0/vwNTSiZgxfQp++fD96JeZgU8//womkzmkbSeKNjZJwjsnT2K7zQ41AL1SCbUgoMxkwvzaWtgkKdxNpBgly3JEvhYREVGwxMwM25BBBbjumiug1+nw/ZLlPh+3oWwzAOC8c2a63K5Wq3H2tFIsWvw1Nm/bgdkzpgW9zUTRap3RiAa7HckKwZkKKQgCDEolGux2rDcaMTM1NdzNpBhhtctYWm7Hil2JUGlt0KoFTCpQYnaxChpVz1JxrXYZy8vt2FglwmoHNCr0+rWIiIhCIWZm2H5y+y3Q63TdPu7g4SNISEhAXu4Aj/uGDB7Y/piDh4PSRvIPR70j33azGXofaY96hQLbzJylpsCw2mW8tMKGNQdEqJVASqIAjRJYXSnipRU2WO3+Xy8cr7W6UoRGCaRoe/9aREREoRIzM2z+aG21wmy2oF9mBhReOptpae0zAqdO1/n9mlKEpX452hNp7eqO1S5jeYWITYclWO0yNCoBEwcpMHuYkqPeEUaWZVglCQkd55C3ANsmSRBFkYVIqM+WlttRZ5Zg0AIW+5kCNwYtUGeWsKy8DXNG+PdV5nitlMT249Jx7PbmtSh2Rev3KEUfHmvkr7j6Zmq1WgEAGo3G6/0adfvtra2tfr9m7bGqALUusE6dqA53E/xmE4H5W7RoaFVAp5ahFIC2NuCH7QI2lUuYN74VamW4W0mdtVmaYUZ7x9liNrrcJ8sy2iDg5PGjYWsfxY4VuxKhVrYHawBcjjeFDCzfBZQYWnr0Wma75309fS2KfdH0PRotZBngOJ4nHmvUnbgK2LrXPtrak1mB7NyCILan5yRJwqkT1eg3IM/rLGIk+m6vHValiAGZru+7HkBTi4y9lnSOekeYqY2NKDOZoGyxIFlncDlnjKKIaTodsrmGjfpIlmWotDboEwXIsgyL2eh5vLXKyMrJ7Pa63fm1fPH3tSi2ReP3aCRjBo1vPNZik+nAgYC/Zlz1ghO1WqDTTJs7x+3ajsf5I1JPMIVCEbFtc7e5qj1FyVsnKSUR2FQl4aJR0fG3xIvpqak40NqKYxYZyR2DHLIswyRJyEhIwLTU1IAcf9zfjbTqM0VtHP93/FuWZWgSBCiV/k3Bu79WZz19LYp90fQ9Gqmsdhn/WdWGeosMgxZIVCsgyzLWVkrYVyPjgVnquA/awGON/BBXAZtGo0aKQY/GxiZIkuRxctTVNQAAsrIyw9TC+CPLMqx2QOvjgi0IAqx2mR33CKNWKHBbVha+bTbhCIA2UYRaEFCq12NKH/dhYxU/6mxSgRKrK0UYvIyjGVuBGYX+B1iO10pJ7PtrEVH3lpfbUW+RnetG0fG9npII1FtkrNhvx5yRXe+dS0RxFrABQOHQwdi8dQeOVB3F4EEDXe6rOHAQAFBUOCRMrYs/giBAo/I9kyLLMjSqnqWpUmioFQqUajS4PCfHZdajLxxV/ByjsVpV+8zd6koRe2okjsYGQLQNfswuVmFPjYQ6swRFR30bWZZhbAUykgXMKvL/a8zxWo7jyzEz3JvXIqLubazyPtiCjmI/ZUdEBmxEfoi7+ddpU0sBAEuWrnS5vbm5BavXbUBychLOKhkTptbFp0kFShh91HkxtgKTB3LUO9IFKgDoPBrbOQUuJVFwjsZSz9kkCSsaG/F8dTX+WV2N56ursaKxMSo2ONeoBDwwS42zC5Wwie3rzKxi+2zY/T0M4B2vNaNQCasINPXhtYioa44MGl/fD+0ZNNzKh8gfMTGcWFffgCNVZyrSmSzte0Dt3lsOnS4ZAJCRno6BBXkYXlSIqaUTsW7DJrz86ps4a9xYWK1WrFi1FkajCXfdcQsSE73ky1DQcNSbHDgaG3g2ScL82lo02O3QKxTQKNrXkJSZTKhoacG87Ow+pbCGgkYlYM4IFUoMLcjKyezTOjONSsCckQmYMzIh6mYbiaIJM2iIAicmesL7Kyrx7oKFHrd/+PFnzn+XTpqAebdcDwC4+YZrkJeXi7XryvDBwk+hVCoxaGABbrrhagwbynTIUHOMeq/Yb0fZEbGjilT7qPesIq5bihdczxgc64xGNNjtMHQKcgRBgEGpRIPdjvVGI2ZGUUXPQH72PI6IgovrRokCIyYCtqmlEzG1dKLfj1coFJg9Yxpmz5gW1HaR/zjqTRyNDY7tZjP0PmbQ9AoFtpnNURWwEVH0YAYNUWBEdh4MxSV2yOMX1zMGlizLsHUxACIIAmyyzDUkRBQUXDdKFBgc2iCiiMHR2MASBAHqjvfQW9AmyTLUAarwSUTkDTNoiPqOvR8iihhczxh4JTodykwm5xo2uwQcrpNwvElCC0QMaNPhu6Y27nNHREHHYI2odxiwEVFE4WhsYE01GFDR0oIGux2JUGBTlYTmNgkKlQSDnIB8MZn73BEREUUwrmEjopDzd80Ug7W+UysUmJedjVK9HgfqRRjtItQqYIBdhxGtGVAJSu5zR0REFME4w0ZEIWG1y1hebsfGKhFWO6BRtRcZYSpe8KkVCsxMTcXKdVrkKGUoBM+xOu5zF984m01EFLkYsBGRX/rSobPaZby0wuYsJqJVtRfCYCpe6JzZ5857YgX3uYs/HEQhIooODNiIyKeuOnQJPUioXl5uR71FRkrimU6gIAhISYQzFY8zO8HFfe6oMw6iEBFFD65hIyKvHB261ZUiNEogRStAowRWV4p4aYUNVrv/e3dtrBJh0Hq/z5GKR8HHfe7IofMgiiNIbx9E4XpGIqJIw4CNKA70ZmPkbjt0Ff4FWY5UvK42b7bae9dG6pnZxSqkJwtoajmzWbYsy2hqkbnPXZzhIAoRUfTgtzNRjOrr+pTuOnQbD0soGdt9O5iKFzm4zx3BZT1jV4MoXM9IRBQpGLARxaC+rk/xp0NnEyX4Oyk2qUCJ1ZUiUhI97zO2tgcMFBrc5444iEJEFF2YEhmnmH4W2/q6PqVzh84bWZahVgrwtz/HVLzIxA55/OJ6RiKi6MFeUhyxSRLWGY3YbjbDJstQCwJKdDpMNRigVjB2jyX+rE/pripjd7Ni04f6f8wwFY8osswuVmFPjeSchReE9ll4Yys4iEJEFGF4RY4TNknC/NpaNNjt0CsU0CgUkGUZZSYTKlpaMC87m0FbjAjU+pRuO3TDlGis9b9dTMUjihwcRCEiih4M2OLEOqMRDXY7DMozaS6CIMCgVKLBbsd6oxEzU1PD2kYKjECtT+muQ5eg6H1aLYM1ovDjIAoRUXToUcBW39CAJUtX4tjxE0hKTMTE8eMwYXyJ18du3b4Tr7/1Hl585q+Baiv1wXazGXofM2h6hQLbzGYGbDEkUEU+uurQSRLXQRLFCl/BGgM5IqLw8ztgq6urx9+eeREWS7Pztp2792LDpi246/ZboNGog9VG6iNZlmGTZWh8BGyCIMAmSfxijiHBWJ/CY4MoPnC9MxFRZPG71/b1d0vQ0tKKyy+5CKNHDUdzSwuWr1yDbdt34T//fQsP3XcXlEpWlYpEgiBA3dFh95UipxYEdshjCNenEFFvcL0zEVHk8TtgK99/AFNLJ2HO+bOdtxUOGYxvf1iKL7/+Hu8u+Bi333pDsNpJfVSi06HMZHJZw+ZgkiSU6vVhaRcFD9enEFFPcb0zEVHk8XuYzGQyY8jggR63X3TBuZg+tRQbN2/FkmUrA90+CpCpBgPSVCoYRdFlHyyjKCJdpcIUgyHcTaQgYrBGRP7wZ70zERGFlt8Bm06vg8Vi8XrfDddegWGFQ/D5F99g1+69gWwfBYhaocC87GyU6vWwyTJMogibLKNUr8dtTHEhIop7jvXOvgZ4BEGATZadg35ERBQafvfScwb0x+q1G2C12jxfRKHAT++8FZkZ6Xj97fewe8++QLeTAkCtUGBmaioezsvDr/Ly8HBeHmampjJYIyIil/XO3nC9MxFRePjdU7/g3Fk4eeo0/t/fn8W6DRs97k9KSsIjD92L9LQ0/Oe/b+OHH5cHuq0UQPzCJSIidyU6HUyS5PU+kyRhnE4X8jYREcU7vwO2omFDcencOairb0DFgUNeH5OSYsAvHr4Pw4uHoerosUC2k4iIIgRT4mIX1zsTEUWeHm3GdNGcczFxwjg0Nzf7fIwuORkP3vsT7Nq9F0eOVgeijeQndqKIKFi4N1d8cKx3Xm80YpvZDJskQS0IKNXrMYWfNRFRWPR499zMjHQgI73bx40eNQKjR43obbvIT1a7jOXldmysEmG1A2oFMEyXgCuyZSRyL3MiCgDuzRVfHOudZ6amcksQIqIIwG/YKGa1y3hphQ2rK0VolECKVoBGJaPsWAJeXtkGq50zbkTUd5335nJ03t335qLYxGCNiCj8GLBFseXldtRbZKQkCi6dKL1GRr1Fxor99nA3kYhiAPfmIiIiCh8GbFFsY5UIg9b7fQYtUHZEDHWTiCjGcG8uIiLveN2jUOnxGjaKDLIsw2oHtCrfnSirHVx/QER90nlvLm/XEu7NRUTxxL12gEYFTCpQYnaxChoffTKivuIMW5QSBAEale/RHVmWoVFx/QER9R335iIi8lE7QAmsrhTx0gobawdQ0DBgi2KTCpQwtnq/z9gKTB6oDHWTiCgGcW8uigVMX6O+8lU7ICVRYO0ACqpep0SKoog168qwa88+1Nc34Labr8PAgnwAwPYduzFqZDFUKmZcBtPsYhX21Eiot8gwaNsvGrIsw2gVUJAqYFYR338i6jvuzUXRiulrFEj+1A6YMzIh1M2iONCrHr3NZsOzL76Kqk4bY9va2gAAzc0teP3t95CbMwC/+Nm9UKu5GViwaFQCHpilxor9dpQdEWG1y1ArBJTmteGKKQn8MiKigOHeXBRtHOlrjkFNrap9UHN1pYg9NRIemKXm9yT5zb/aATKvjxQUvRoW/X7JchytPoa5c87D479+2OU+rVaDqy6/GNXHjuOHpSsC1U7yQaMSMGdkAv5nrhZPXarBE3PVmDW4jV9C5DemCVFPsTNC0YDpaxRIrB1A4dSrGbZtO3ZhwvgSXDL3ArS0tLjcp1AocM6ss1F97Di2btuJSy66IFBtpW44UiKJusM0ISKKdUxfo0CbVKDE6koRKYmut8uQYWwFZhSydgAFR69m2E7X1aOocEiXjxlWOBT1DQ29bRcRBQmrXBFRrHOkr3W1f6Bj6xsif80uViE9WUBTiwy7LKI6wYitiSewTl2Dwxm1UGS3r/ElCrReBWwKhYDurnFtbW0QwJF6okjDNCEiinVMX6NgcNQOmDpUwC5NHaoEC2RJQGGqCqUFKmxtNmN+bS2DNgq4XgVs2VlZ2LOv3Of9drsda9eXoX//rL60jYiCwJ80ISKiYArFzBa3vqFg0KgEJOe2oGQIMGeYGrMKEzC0nwIJSgEGpRINdjvWG43hbibFmF6tYZtaOhEfffI5PvviG5SMGQkAaG1pxfETNTh0+AiWrViDmtqTuOHaKwPdXiLqA1a5Ch2+h0SubJKEdUYjtpvNsMky1IKAEp0OU4O0NYTPrW9agYxkbn1DvbfdbIZeofCaR6ZXKLDNbMbM1NQwtIxiVa+uVjOmT8HBw0ewZOkKLOmoBPnK6/NdHjNpwlmYMX1KYFpJRAHROU3IWzDBNKG+CXWHlCha2CQJ82tr0WC3Q69QQKNQQJZllJlMqGhpwbzs7ICeI+3XMs+tbzSq9sIQs4pYYIl6R5Zl2GQZGh/HqyAIsEkSB+0ooHoVsAmCgDtuvRETx4/Dps3bcKKmFlarFVqtFjkD+mPC+BKMGlEc+NYSUZ/5qnKFjjQhVrnqnVB3SCm+RHvnb53RiAa7HQblmeuLILimkPV1RqKr6rdzRiZE/XtIkUEQBKg7Zmt9DXyqBYHHGgVUn/IBRo8cjtEjhweuNUQUdEwTCo5QdEgpvsTSjK0jhcybQKSQcZNsCqUSnQ5lJpPL9d7BJEko1evD0i6KXT2+4ttsbXjsd/+HjZu3BqdFRBRUjjShGYVKWEWgqVWGVWyfWbufnZpe86dDSuQvx4xtmckEtSBAr1RCLQgoM5mirgqdI4WsqxL7NlnuUyESVr+lUJpqMCBNpYJRFJ3HrSzLMIoi0lUqTDEYwt1EijE9HkpXqxOQkKCCycTOB1G00qgEzBmZwDShAOGaBgq0WJqxDUUKGTfJplBSKxSYl52N9UYjtpnb915TCwJK9XpMicIZcIp8vcp9umTuHHz17Q8YPKgAgwcNDHyriChkGED0Hdc0UKAFO4Uw1IKZQsbqtxQOaoUCM1NTMTM1lccWBV2vArbak6cwsCAP/3r+P8hIT0NmRjq0iZ5DWwIE3HXHLYFoJxFRROOaBgqUWJyxnWowoKKlxVmUx7F21iRJfU4hY/VbCjceWxRsvQrYfly20vnv03X1OF1XH8g2ERFFnWB2SCm+xOKMbbBTyFj9lohiWa8Ctp8/eE/gW0JEFMUC1SGNplmTaBUN73EsztgGM4WM1W+JKJb16go2rHBI4FtCRBTletsh7Wr/KFbtDIxoK5Ef6zO2gQ6YuUk2EcUyDjkREQVBT4I17h8VXNG4qTmr0PUcq98Sxad4ON97FbA9+cenu3+QLEMURfz5/57oza8gIooLnfePcmjfPwrO/aNYjrxvorVEPqvQ9R7fK6LYFm+ZKb0K2OrrG7p9TIpBD6WX3HsiIjqjJ/tHsdPeO7FQIp+fezueA0QUj5kpvQrYXnzmr15vF0URp+vqsWZdGQ4dPoIH7v1JX9tHRBSz/Nk/qtkm4dvdbdgUJ6OIgRaLJfLjTbStPySi4IrHzJSAXumUSiWys/rh6isuweBBBfhs8TeBfHkiopjSef8ob9pECbtPSFhTKUKjBFK0AjRKYHWliJdW2GC1e38endG5RL430VgiP5441h+WmUxQCwL0SiXUgoAykwnza2thk6RwN5GIQsyfzJRYE7ShqTGjR2Lnrt3BenkiopgwqUAJY6v3+/bWSEjRCkhJPBNQtI8iCs5RROpeiU4Hk4+OvUmSME6nC3mbyD+d1x92Pgc6rz8kovjhyEzxNcgmCAKsdt8DodEqaAGbaBfR0uqjF0JEcSPWLpqBNrtYhfRkAU0tsvO9kmUZTS0ymlqAEf1dv5RktD/GfRQx2O9zNH+OUw0GpKlUMIqiy3tsFMWYKJEfy/xZf0hE8aO7zBRZbt/SI9ayJgJe1l8URdSePIWvvl2C9LS0QL88EUWBeKve1Be+9o86e6gCogwkKAWIkHAiwYzTqmaIggylLCDTngStKRHLGxqww2IJytqeWPkcWSI/OnH9IRF5M6lAidWVIlISPe8ztrbvvxhrehWwPfSLx/163JWXX9yblyeiKBaP1Zv6ytf+URurWmGXRexLrINVISJBVkApKyBDxgmVGY2ZdUg1JSFVqQz43mKx9jmyRH706bz+0NvnxfWHRPFpdrEKe2ok5/eT0HGdMLYCGckCZhXF3jbTvfqL0lJT4ev6qFQqkZJiwLiSMZg5fUofm0dE0SYeqzcFUufO56QCJT6pNsGqEKGWO+0hBgEWWYRKI8JotyNNpXI+N1B7i8Xy58gOfvQo0elQZjK57KHnYJIklOr1YWkXEYWPr8yUGYVKzCqKrgwQf/UqYPvj//o3w0ZE8acn+4pR12YXq/BuYzPENgGySoYAATLaF1y3JbYhN1GJGpsNA7Wub3gg9hbj50iRYKrBgIqWFjTY7dArFM6RdJMkcf0hURzzlZkSq3qVL7OhbDMaGhq7fMzuveVYunxVb9tFRFEoXqs3BYtaCYzKEzAoTQlRAlrtMkQJKEgTkGUAlAoBopeCIIIgwCbLvX6f+TlSpHCsPyzV62GTZZhEETZZRqlej9v6mPZLRLEh1oM19HaG7Z0FC3H3HbciLc336G1NTS1+XL4K586e0Zf2EVEU6Vy9ydeak0BWb4r1UTVBEJCkVCA1U8DQfirIABx/bZ2xfaZB6eXLqq9re0L9ORJ1hesPiSje+R2wHTt+AtXVx50/7z9QCavV6vWxtrY2rN2wEdZW7/cTUewKdvUmmyRhndGI7WZzUCojRprOa3g6d1Oz1Wocam3FEK1n3mIg1vbEYxUuinwM1jwxiCWKfX4HbHv2luPzL791/rxy9bpun3NWyZjet4yIolIwqzfZJAnza2ud61kCXRkxEvlaw5OiUiFNpYJBpXJ22AK5ticeq3ARRYt4G7giind+f+NecN5slE6egEOHqvDam+/grJIx6N8/y+tjlQolMjPScdY4BmxE8SaY1ZvWGY1osNtdKsYFsjJiJPK1h9g0gwEP5eRgi9kclL3F4rEKF1E0iMeBK6J416MhUoNej5Kxo1A4dDBmzZiGwqGDg9cyIopawaretN1sht5HRyQQlREjVVdreGakpARtbU+0VOGK5LYR9Zav4zoeB66I4l2vcloeeejebh+zfcduLF+1Bj9/8J7e/AoiihGBLDBik2VofARsgiDAJkkx33l3/J2hToeKtPfUapexvNyOjVUirHZAo2pfdze7mLN/gRbr51Qk8efcjteBK6J41qdFCI1NRtTX10OUJJfb22xtWLO+DIcOV/W1fUREQEfAoO5YR+WrcmFfKiNGC6ZDtQdrL62wOdfXaVXtx8XqShF7aiQ8MEvNoK2PuEYq9Pw5txM6tuyI94EronjTq4CtzW7HO+99iC3bdnb5uEEF+b1tFxGRh84VE90FojJiNGA6FLC83I56i4yUxDMdUkEQkJII1FtkrNhv56befRBpgwLxEnz4e25z4Ioo/vQqYPv+h2XYsm0n+mVmICurH3bv2YfCIYORoE7AkSNHAQDnnzsTpZMnBrq9ASGKIpatXIOyjVtw8tRpKJUK5OXm4LxzZmLs6JHhbh4R+eCrYmKgKiNGA6ZDARurRBg8dzMAABi0QNkRkQFbH0TCoEA8prz6e25z4Ioo/vRqiGzz1u0YNXI4nvzdr3H7LTcAAC65+AI8eO9P8Of/+x0mjC/Bvv0HkJzkZQOfCPD62+9h0edfIS0tFTdceyWuvOxiWK1WvPLft7FqzfpwN4+o12RZDncTgspRMbFUr4dNlmESRdhkGaV6PW6Lg1RAxzo+X6PnQke6VCwfB7Isw2r3vaZOEARY7bF/LgSTP4FDMDlSXldXitAogRStAI0SWF0p4qUVNljtsffZ9uTcnmowIE2lglEUnce5LMswimLcDFwRxZtezbDVNzTggvNmQRAEuF9bEhIScMO1V+K5f7+Kr75dgisuvShATQ2MbTt2YfuO3Zg4fhzunHeT8/bSSePxl789i08//wrjxo6GXq8LazuJ/BVva026qpgY67iOr/090Kh8p8nJcvv2A7H8HgRTJBT3iceU156c22pB8LrVR6C29CCiyNOrs1qpVEKhUHb8uz3ms7ZaXR4zftxYbNm6PRBtDKgNZZsBAOedM9PldrVajbOnlcJms2Hzth1hah1RzzjWmpSZTFALAvRKJdSCgDKTCfNra2FzKwgUa+KxU16i08Hk43M1SRLG6WJ/sGlSgRLGVu/3GVuByQM9U8XIP50DB29CMSjgT8prLOrJue0YuHo4Lw+/ysvDw3l57evbGKwRxaRendmpKSk4dPgIAECtToBanYCqo8dcX1ihgNFkCkwrA+jg4SNISEhAXu4Aj/uGDB7Y/piDh8PQMqKe67zWxNGBcl9rQrElkOlQ0Zo2OLtYhfRkAU0tsst70NQiIyNZwKyiPhVAjhjh+nzCOSgQzymvvT2343Hgiije9OpbbcyoEViybCUSExNxxaUXYdDAAixdvgo5Of0xbOgQ1NU3YOmKVUiLsIXvra1WmM0W9MvMgMLLKFRaWnt7T52u8/s1pQibwXC0J9LaRcGxzWyGzsdouE4QsNVsxtlBWs/AYy08VABu7dcP641GbG9uRpsoIkGhwKTkZEwxGKDq5jOx2mUsrxCx6bAEq12GRiVg4iAFZg9TRnQxh87HW4JCgftmqLCiQsTGwxJsogS1UsD0oQrMGqZEgkKGJEVnhz4SPp9SnQ77m5u9FvdJU6kwWacL6nmvVrR/zj5TAxXt7QlW0Baua1tfz22KPvweJX/1KmC74LzZ2LlnL2pqagEAc86bjX+/8gb+++a7Lo+7+opLAtPKAGm1tqdtajQar/dr1O23t7b6yLXxovZYZO41d+pEdbibQEEmyzIaLc1I7mJ01SLLOHG0DQpF8Dp6PNbCo7jjPxkyBFkCLEY0WLqeUbWJwPwtWjS0KqBTy1AKQFsb8MN2AZvKJcwb3wp1hGcTdj7eSgxAyVhAluFcT91YG7629VUkfT4XyjK22GzY0yaiDTISIGBkghLjoUZDkM/5YboElB1LgF7jGZAZrQJK89pQe6wtqG1AGK9tvTm3Kbrxe5S606uALTk5Cb979BHnTNTw4mF44N478eOyVaivb0BKigGTJpyFaVMmBbq9Qdb+5dCT9ILs3IIgtqfnJEnCqRPV6Dcgz+ssIsWW1OPHofZyzNol4FCdiGNNEl5uzA7KKD2Ptejz3V47rEoRAzJdjwE9gKYWGXst6ZgzIjLTCePheIu0zycPwOVh2AftimwZx1e2OTdGd8zwGVuBglQBV0xJCOpsYzwcaxQZeKzFJtOBAwF/zV5f+ZVKJfpnZzl/HlFchBHFRYFqV1AkattXMTtm2tw5btdqfax29iJSTzCFQhGxbaPAGefYj6fTZ22XgE1VIox2EQWSDqlJ7Zverq2UsK9GxgOz1AHt7PBYix6bqySkJHovGJGSCGyqknDRqMj+LGP5eIuFzycQEtXAg7MVWLHfjrIjjn3YBMwcpsSsotDtwxbLxxpFFh5r1J0+DdVJkoSj1cdQV9+AYYVDoI/w6mQajRopBj0aG5sgSZLHyVFX1wAAyMrKDFMLiXrG20bSh06LMNrtMCgSMMDWfk7Gekls6p6jmIPWR2e3vZiDHHdbJUQKfj6uNCoBc0YmYM7IhLj5m4mIfOl1OL9l2w78/v/+H/7+zL/xxtvvo6b2pPO+v/3rBWyOwJL+AFA4dDDsdjuOVB31uK/iwEEAQFHhkDC0jKjnvG0kXW1qn1kb0ZoBpdspHsslseNBX4osdN6/zNdrc/+y8OHn41s8/s1ERJ31KmA7UHkIb85fALsoYsJZJS73mS0WmC3NeOudD1BReTBQ7QyYaVNLAQBLlq50ub25uQWr121AcnISzioZE6bWEfVc5/14fpmbi2GN/ZFnN3gEa4jxktixyiZJWNHYiOerq/HP6mo8X12NFY2Nvdpjj/uX9U2wzxt+PkRE5E2vUiJ/WLoC6WmpePQXD0GhULjMpumSk/H4rx7G3/71An5ctgrDhkbWbNXwokJMLZ2IdRs24eVX38RZ48bCarVixaq1MBpNuOuOW5CYmBjuZhL1ikKhcI7S+yqJHa+j9NHIsTG6I+VVo2hfj1hmMqGipQXzsrN7tFHu7GIV9tRIXos5xNL+ZYFktctYXm7HxirHWqr2wGp2cftaqkCm6/HzISIib3p19T98pArnzZ4JnS4ZLS0tHvcnJSVi+rRSLFu+KhBtDLibb7gGeXm5WLuuDB8s/BRKpRKDBhbgphuujrgAk6inJhUosbpSRIqXcQdjKzCjkKP00aLzxugO7hujz+zBfpcalYAHZqk7FXNoD+BnFIa2mEO0sNplvLTC5gygtB0B2orKNnxX14j8QVaIggy1IKBEp8NUg6FHAbQ7fj5ERORNrwK21pZWpKWldPmYtJQUWJo9g7lIoFAoMHvGNMyeMS3cTSEKOI7Sx47tZjP0PgIAvUKBbWZzjwI2sJhDjywvt6PeIiMl8cx7JAkyjqfVwSiJUNYrUZil7NOspzt+PkRE5K5X3yrJumScrqvv8jFHjlZDp0vubbuIqJcco/QzCpWwikBTqwyr2D5Kf3+AS/pT8MiyDFsXHXZBEGCT5T4XIumuDfFsY5UIg9suLycSzLAqROiUChw3ntm7s/OsZ6AwWCMiIvR2hq1o2FCsWr0O00onQa12LQ8uyzI2bt6KVWvWYfy4Ep+vQUTBw1H66CcIAtSC7zVSstyeihfoz9YmSVhnNGK72QybHLh0v2jjq8z+aVUzEmQFBAiwSzJkAI5H9HbWk4iIqCu9CtguvvB87Nq1F39++hkMHTIIALBsxWqsWLkWh6uOorGxCVqtFhfNOTfQ7SWiHmKwFr1KHBujKz3XHZokCaV6fUB/X6CLnESzzmX2HeeQDBmiIEMpKyBDhkpxJlhzPMcmSRwkISKigOrVN29Wv0w8/OA9yMxMx87dewEAO3buwbYdu9DY2ISBBXn4+YM/RVY/bkBNFCzxnq4WD6YaDEhTqWAURefnLcsyjKKIdJUKUwyGgP6+zkVOHAFHsNL9ooF7mX0BApSyABnts2+5Ka5focGa9SQiovjW6+oDBfm5eOyXP8Op03U4fqIGVqsNiVoNcgb0R0ZGemBbSUQA09XijmNj9PVGI7aZzbBJEtSCgFK9HlOC8JkHo8hJNPNWwCezLQlVCgtSEpQYmOH6XgVj1pOIiKjP5eL6ZWagX2ZGYFpDRD4xXS0+OTZGn5maGtRUO0eRE42PYyge0/28ldlPUyVDm2NFaqoEpdC+gk2WZZgkKSiznkRERH4HbI/+7g+Yd8sNGDNqhMvtNpsNb737AS67+EIM6J8djDYSURD25KLoE8xAKVxFTiKdtwI+NkkbsllPIiIivwO2lpZWiHbR43ZRFLFj5x6cM+vsQLeNiDphuhoFW6iLnEQbR7AaqllPIiIi9LboCBGFVij25CIKdZGTWBBJwRrPfyKi2NTnNWxEFHxMV6NQCHWRE+o7q13G8nI7NlaJsNoBjaq9uuXsYhU0Kl4PiIhiAQM2oijBdDUKBab7RQ+rXcZLK2zOKpZaVfugzupKEXtqJDwwSx1XQRuPVyKKVQzYiKLEVIMBFS0tziqRgsDqdBRc7PxGtuXldtRbZKQknvmcBEFASiJQb5GxYr8dc0YmhLWNwcYZRiKKB8xvIYoSjnS1Ur0eNlmGSRRhk2WU6vW4jSX9ieLOxioRBq33+wxaoOyIZ6GwWOKYYVxdKUKjBFK0AjRKYHWliJdW2GC1c00fEcWGgM2wCeBIFlGw+UpXY7EBovgiyzKs9vY0SG8EQYDVLsd0miBnGIkoXvQoYPtx+Ups2rrN5TZJlAAAX37zPXS6ZJf7BAi4645bAtFOInLTJstY19SE7WYzbB1FR0p0OkxlcQiimCcIAjQq3+u2ZFmGRhXbaa3+zDAyYCOiWNCjgO3Q4Sqf9x2oPBSI9hCRH2yShPm1tc71bBqFArIso8xkQkVLC+YxRZIo5k0qUGJ1pYiURM/7jK3AjELPAkWxgjOMRBRP/A7Yfv7gPcFtCRH5bZ3RiAa73aVipCAIMCiVaLDbsd5o5CbaEYSdRgqG2cUq7KmRnFUiHYWIjK1ARrKAWUWqmD32OMNIRPHE74BtWOGQ4LaEiPy23WyG3scMml6hwDazmQFbmLF6HQWbRiXggVlqrNhvR9kREVZ7e5AydagAdf9mvFJzKqbTpeN5hpGI4gvL+hNFGVmWYZNlaHx0vARBgE2SYnZkPRpwf6zIFIvnhEYlYM7IBMwZmQBZltEmy+3p0s2xny7tzwxjrInFY5iIuhd7VzOiGCcIAtQdHRNfqUBqQeCXehixel3kiKeZTkEQsK6pKW7SpX3NMM4oVGJWUex8vjZJwjqjkQWmiOIYAzaiKFSi06HMZHLplDmYJAmlen1Y2kXtWL0uMsTjTGc8pEt3Hqxyn2GMtYEqFpgiIjBgI4pOUw0GVLS0OL/EHalAJklCukqFKQZDuJsYt1i9LnLE20xnLKdL+zPLFG1/kz9YYIqIAIDDMkRRSK1QYF52Nkr1ethkGSZRhE2WUarX4zaOuIZV5+p13rB6Xej4M9MZSzqnS3sTrenSjlmmMpMJakGAXqmEWhBQZjJhfm0tbJIU7iYGjT8zpkQU+zjDRhSl1AoFZqamYmZqalSOmMcyVq8Lv3id6YzFdOl4nWWK5RlTIuoZDsMTxQB+WUeW2cUqpCcLaGqRnbMdsiyjqUWO2ep1PeFrBiiQ4nWmc6rBgDSVCkZRdDn2jKIYtenS8TrLFKszpkTUc/HdayAiCoJ4qV7XE+GodBePM52OdOn1RiO2mc2wSRLUgoBSvR5TorCqYLzPMsXijCkR9RwDNiKiIIj16nU9Ea5Kd/G4TxdiLF063rcxYYEpIgJTIomIgi9WO5P+6rwGyfFeuK9BCgbHTOeMQiWsItDUKsMqts+s3R+DJf29iYVjr0Sng8lHYRGTJGGcThfyNoUirRcsMEVEHWJzeJGIAi7aR+opfMK5N1gwZjp5LoRWpMwyhWsD61iaMSWi3mHARkQ+ddVB4cWD/BFJa5D68vrh6qxTZKzLi5QNrBmsEcUn9rmIyKvuOii39usX7iZSFIiFNUiR0lmPZ+GeZYrXrQWIKDLwG4aIvArXuqNoE6q1LNEsEtcg9QTPhcgSjuA+XrcWIKLIwBk2IvKquw7K9uZmFIe8VZGB6XE9EylrkHornGvwKPwiKa2XiOITexZE5MHRQfHV+RAEAW0dHZR440iPKzOZoBYE6JVKqAUBZSYT5tfWwuZjJimeRXOlO3/OBZssx+W5EC+4gTURhRtn2IjIgz/rjhIUCghy/AUnXMvSO+Feg9RbsbAGj/qOG1gTUThF7rAmEYVVd+uOSpKSQt6mSMC1LH0XbcFNtK/Bo76bajAgTaWCURSdM22yLMMoilGR1ktE0Y0BGxF5xQ6KJ6bHxSeeCxTNab1EFP2YEklEXnW391E8XjyYHhefImEfMAq/aE3rJaLoF499LiLyU1cdFClOi2twLUt8YmedOuPnT0ShxGFBIvJLLHRQApGqyPQ4ioVzgYiIogdn2IgopgV6zzSmxxFRPOLMMlH4MGAjopjl2DPNsWGzRqGALMsoM5lQ0dKCeb0sFsD0OCKKB4Ee8CKi3uHZRkQxq/OeaY6gyn3PtL5isEZEscgx4FVmMkEtCNArlVALAspMJsyvrYUtTtcxE4UDAzYiilncM42IqHdCMeBFRP5hwEZEMaNzURHumUZE1Hsc8CKKHFzDRkRRrcs1FtwzjYioxxwDXhofAZsgCLBJEtfwEoUIAzYiilrdFRUZmZSErRYL90wjIuoBQRA44EUUQZgSSURRq7s1FgpB4J5pRES9UKLTweSjsIhJkjBOpwt5m4jiFQM2Iopa3a2x2GWxYF52Nkr1ethkGSZRhE2WUarX47ZelvQPN665I6JQmGowcMCLKEIwJZKIopK/aywSBCHq90yz2mUsL7djY5UIqx3QqIBJBUrMLlZBo4q+v4eIIp9aocC87GysNxqxzWyGTZKgFgSU6vWYwn3YiEKKARsRRaXerLGI1mDtpRU21FtkGLSAVtX+N6+uFLGnRsIDs9QM2ogoKNQKRdQPeBHFAg6PEFHUioc1FsvL7ai3yEhJFFzW6aUkCqi3yFix3x7uJoYN00OJQofBGlH4cIaNiKLWVIMBFS0tziqRQseMm0mSYmaNxcYqEQat9/sMWqDsiIg5IxNC3aywsUkSNvjaxiEMKVqcdSAiomBjwEZEUSvW11jIsgyrvT0N0htBEGC1y3ETNLTJMt45eRKNouh1G4d5ISokwzWFREQUSgzYiCiqxfIaC0EQoFH5nsWRZRkaVfykKm2x2dAAJVJUZ766Om/jsN5oxMzU1KC2gWsKiYgo1KJ7+JmIqJNYDFwmFShhbPV+n7EVmDzQc1PwWLWnTexyG4dtZnPQ28A1hX3HtYdERD3DGTYiogg2u1iFPTWSc0bHsU7P2ApkJAuYVRQfl3FZltEG3zOojm0cgj3LyjWFvcM0UiKi3uMMGxFRBNOoBDwwS40ZhUpYRaCpVYZVBGYUKnF/HKXfCYKABAg+Z2e8beMQaI41hV0FjVY7Z5DcOdJIV1eK0CiBFK0AjRJYXSnipRU2WO18v4iIuhIfQ7NERFFMoxIwZ2QC5oxMiLl1ej0xMkGJ/ZKEFC9pkSZJQqleH9TfzzWFvdM5jdShPY0UzjRSzkoSEfnGGTYioigSz8HAeLUaaSoVjKLonMWSZRlGUQzZNg5cU9hz/qSREhGRbwzYiIgoKiQIAm7LykKpXg+bLMMkirDJMkr1etwWopL+s4tVSE8W0NQiuwSNTS1yXK0p9BfTSP9/e/ceHWV973v888xMZhLIDCEgAcFwCyAXISAhBE0I4qXVvdtTPd7qlmpvWrq62rO7Tj2r63SdvbvPamuP3VtXt2112d0ty1bdWKzUS0tFAQMhATREwAYIQrxAuCRkMrnMMPM854+QlJCEDJnJzJOZ92st15Ln+WXyG/hl8nye5/f7/gAgdvxmAQCMGMnexqF7TeHWg2FVH4soGO6aBlla4NTK2RTQuBjTSAEgdgQ2AMCIlKyLfNYUXp6ifKcq6iMak9X3nL+zK+ymA8YKgKEisAEAMESpegEez3CRzltTsJ0BgHhI3U9JAAAQteEKF+k6jbR7O4PuoJrp6gqqFfURHThham0abcsBIDYENgAA0txwh4t0nEbKdgYA4oUqkQAApLkLw0V3mOoKF0ZPuIiXdAhrYjsDAHFEYAMAIM0RLuKL7QwAxBOBDQCANEa4iL8LtzPoD9sZALgcBDYAANIY4WJ4FOU75e/s/5y/U1o2NT22MwAQOwIbAABpjnARf+VzXModbailw+oJw5ZlqaXDSvntDADEV8p9WlRW7dZLL29UZ2dQP/zBIxo3LrdPm0gkore3bVf1rnd18tRpOZ0OTZl8pVavKtPCBfOS0m8AgD2lQ1XDdN4rbbik63YGAOIvZT6BWwMBPf/iBtXuO6CMjEuXyf31s7/V3tr9WjB/rlatvF7hcFjbK6v01DPP6p47v6DS65YnrN8AAPtJtw2PCRfDIx23MwAQfykT2B792c8ViUS09usPatObW3So/ki/7Wpq92lv7X4tXVKoB9fc23O8uGiJfvTTx7XhlddUuHCBvN7sBPYeAGAX6brhMeFiePH3CWCoUmYN24xp+fr+976jeXPnXLJdVfUeSdLqVWW9jrvdbl2/olihUEh7amqHta8AAPtK5J5kdkW4AAD7SJnA9uUv3Sdv9uBPxY4cPaaMjAxNmTypz7kZ06d2tTlydFj6CACwP/YkAwDYScpMiYxGZ2dQgUCbrhg/Tg5H36w6dmyOJOnU6TNRv6ZpmnHtY6y6+2O3fiH1MNaQSIkab5ZlqTNkyZNlDFjmPnjOUiQS4SlUiuKzDYnCWEO0bBnY3ti0Oap25aUrlJWVFfXrdgaDkiSPx9PveY+763hn5wC1jfvR+ElD1G0T6dTxj5PdBaQJxhoSKRHjLdyZpdZzUn95zLKkcxHp5Kcdw94PJBefbUgUxhoGY8vA9urrm6Jqt+zaxZcV2AbXdTf1cu6a5k3Oj+P3j51pmjp1/GNdMWlKv08RgXhhrCGREjneVi4Ia/vhiMZk9f1d0NJhqXyuU3mTrxjWPiB5+GxDojDWUlPr4cNxf01bBrYnH390WF43K7NrUUL3k7aLdR/PzBxg8UI/7PoD5nA4bNs3pJbhGmtUqUN/EvHZdsOcDP31hNXvnmTjsx1aNSdDDgdjM9XxexSJwljDYGwZ2IaLx+PWGJ9XZ8+2yDTNPj8cZ840S5ImTBifpB4C6S1kmqr0+7U3EFDIsuQ2DC3KzlaJzyc3v8yQIOxJBgCwk7QKbJJUMHO69rxXq2MNH2n6tKm9zh063LV32+yCGUnqHZC+QqapdY2Nag6H5XU45HE4ZFmWqltbdaijQ2vy8ghtSBj2JAMA2EXaXf2sKCmWJL351rZex9vbO1RRWaXRo0dp8aJrktQ7IH1V+v1qDoflczp77X3lczrVHA5rp9+f7C4iTRHWAADJlBJP2M40NetYw0c9f25tC0iS9n9Qp+zs0ZKkcbm5mpo/RVfPLlBJ8VJVVu3WL5/+jRYXLlQwGNTWd3bI72/VVx64L86FTABEY28gIO8AT9C8DodqAgGV5eQkvF8AAADJlBKB7eChej33/Po+x1986Q89/19cdK3W3HeXJOmLd9+hKVMma0dltV5Yv0FOp1PTpubr3rtv16yZTIcEEs2yLIUsS54BApthGAqZJlPTAABA2kmJwFZSvFQlxUujbu9wOFReukLlpSuGtV8AomMYhtznK/H1F8is8wVICGsAACDdpN0aNgD2tCg7W62m2e+5VtNUYXZ2wvsEAACQbAQ2ALZQ4vNprMslfyQiy+raxN6yLPkjEeW6XFru8yW7iwAAAAlHYANgC26HQ2vy8lTs9SpkWWqNRBSyLBV7vbp/hJf07w6gAAAAlysl1rABSA1uh0NlOTkqy8kZ8QVG2AQcAADEA4ENgC2N9LDGJuAAACAeuGIAgDhjE3AAABAvBDYAiLNoNgEHAACIBoENAOKoexPwgaZ0GoahkGVRiAQAAESFwAYAcXThJuD9YRNwAABwOQhsABBnbAIOAADihcAGAHHGJuDxwbRRAAAo6w8Acde9CfhOv181gYBCpim3YajY69Vy9mG7pGDY0pa6sHY1RBQMSx6XVJTvVNks/s4AAOmJwAYAwyCVNgFPlGDY0i+2htTUZsmXKWW6utYCVtRHtP94RHcUJLuHAAAkHrcsAWCYEdais6UurKY2S2OyjF77143JMtTUZqmyIWNIr8vUSgDASMYTNgCALexqiMiX2f85X6ZUc9ylu6J8rZBpqtLv195AQKHzlTkXZWerhCmpAIARht9aAICksyxLwfDATyMNw9C5yMDbJVwoZJpa19io6tZWuQ1DXqdTbsNQdWur1jU2KjRABU8AAOyIwAYASDrDMORxDTx90bIsZTijWwtY6ferORyWz+nsNbXS53SqORzWTr8/7v0HUhHTiQF7YEokAMAWivKdqqiPaExW33P+TqlwUjiq19kbCMg7wLRHr8OhmkBAZTk5sXYXSEkDVWotn+OSx8V6XCAZeMIGALCF8jku5Y421NJh9dq/rqXD0rhsQyX55wZ9DcuyFLpEVU7DMBSyLJ4cAP3ortRaUR+RxymNyTTkcUoV9RH9YmtIwTA/N0AyENgAALbgcRlau9Kt0gKnghGppdNSMCKVFjj1cGmG3M7BX8MwDLmNgde6WecLkFC5E+hrsEqtWw9G95QbQHwxJRIAYBsel6Gb52Xo5nkZvfavMy+jUMii7GxVt7bK5+yb8FpNU8Veb1z7DKSKwSq1Vh+L6OZ5Q9teA8DQ8YQNAGBLQ30KVuLzaazLJX8k0mtqpT8SUa7LpeU+X5x7isvBdFR7iqZSazDMvx+QDDxhAwCkFLfDoTV5edrp96smEFDINOU2DBV7vVrOPmxJQSEL+7uwUmt/oc2yLHlcQ7+RAmDoCGwAgJTjdjhUlpOjspycAS9AkRjdhSya2iz5MqVMV9caw4r6iA6cMLV2pZvQZhODVWotLYhiISmAuOM2IwAgpRHWkotCFiPHJSu1jja0cjb3+YFkILABGJFYRwGMDNEUsoA9XKpS6zd4EgokDbdKAIwYrIMBRpbuQhaZA/x8dhWysJi2aiMDVWoFkDwENgAjAutggJGHQhYjG/8ugD0wJRLAiMA6GGBkKsp3yt/Z/zl/p7RsKoUsAOBSCGwARgTWwQAjE4UsACA2BDYAtseGrsDIRSELAIgNt7UA9LDrAnPWwaQnu45HXD4KWQDA0BHYgDQ3UiovsqFrehhoPJbNYkJIqiCsAcDlIbABaWwkVV4sn+PSgRNmT18No6uv/k6xDiZFXGo87j8e0R0Fye4hAACJxy1LII2NpMqLrIOJ3khdyzfYeKxsyEh2FwEASDhuSQNpLJrKizfPs89FMutgBhYyTVX6/dobCChkWXIbhhZlZ6vE55PbMTLuzQ02HmuOu3RXojsFAECSjYzf4gDibqRXXiSs/U3INLWusVHVra1yG4a8TqfchqHq1lata2xUyDST3cVBRTMez0UM245HAACGC4ENSFMXVl7sD5UXR45Kv1/N4bB8TmevqYQ+p1PN4bB2+v3J7uKgohmPGc70fqpKWAWA9MSUSCCNUXlxZBloGujeQEDeAaY9eh0O1QQCKsvJSUAPYzPYeCycZJ81lYmSClNdAQCxIbABaYzKi/Y32AW7ZVkKWZY8A1y8G4ahkGmOiDV/lxyP2YZK8s8lu4sJ1T3VtTkcltfhkOf8v3d1a6sOdXRoTV4eoQ0A0gCf9EAao/KivUWzNs0wDLmNgdd2WedDnt3DmgYZjw+XZsidZg98U2GqKwAgdtw+B9IclRft68IL9m4XX7CX5eRoUXa2qltbe7Xr1mqaKvZ6E9zzoRtoPJojoHBKvKXKVFcAQGx4wgagB2HNXqK5YJekEp9PY10u+SORnidtlmXJH4ko1+XScp8vof2Ol3Qej91TXS9VNTNkWRQiAYA0QGADABu6nAt2t8OhNXl5KvZ6FbIstUYiClmWir1e3c86pxEplaa6AgBiw5RIALChCy/Y+7sov/iC3e1wqCwnR2U5OUxtTRGpNNUVADB03HYFAJtalJ2t1gHWbrWapgqzs/s9R1hLDak61RUAcHkIbABgU1ywpzemugIAxJRIALCv7gv2nX6/agIBhUxTbsNQsder5WycnBaY6goAILABgI1xwY5u/NsDQHri9iwAjBBcsAMAkH4IbAAAAABgUwQ2AAAAALApAhsAAAAA2BSBDQAAAABsisAGAAAAADZFYAMAAAAAmyKwAQAAAIBNEdgAAADizLKsZHcBQIpwJbsDAAAAqSAYtrSlLqxdDREFw5LHJRXlO1U+xyWPi43vAQwNgQ0AACBGwbClX2wNqanNki9TynQZsixLFfURHThhau1KN6ENwJAwJRIAACBGW+rCamqzNCbLkGF0BTPDMDQmy1BTm6WtB8PJ7iKAEYrABgAAEKNdDRH5Mvs/58uUqo9FEt0lACmCwAYAABADy7IUDKvnydrFDMNQMEwhEgBDQ2ADAACIgWEY8rgGDmSWZcnjGjjQAcClENgAAABiVJTvlL+z/3P+TmnZVGeiuwQgRRDYAAAAYlQ+x6Xc0YZaOqyeJ22WZamlw9K40YZWzqYwN4ChIbABAADEyOMytHalW6UFTgUjUkunpWBEKi1w6huU9AcQA273AAAAxIHHZejmeRm6eV6GLMtizRqAuOAJGwAAQJwR1gDEC4ENAAAAAGyKwAYAAAAANpUya9ja2zv01pZ3tPf9/Tp9pkmGIU2amKcVy5dpxfKiXlMTIpGI3t62XdW73tXJU6fldDo0ZfKVWr2qTAsXzEvq+wAAAACAbikR2M62+PXY40+qpcWv4qIluqG8VB0dHarYUaXfvfh7NZ48qds//3c97X/97G+1t3a/Fsyfq1Urr1c4HNb2yio99cyzuufOL6j0uuVJfT8AAAAAoFQJbBtf/ZOam8/qzts/p/Ky63qOL1+2VD/88WN6a0uFbrxhpXxer2pq92lv7X4tXVKoB9fc29O2uGiJfvTTx7XhlddUuHCBvN7sJL0bAAAAAOiSEmvYxo4do8JFC7RieVGv46NGZWnm9GmyLEufHm+UJFVV75EkrV5V1qut2+3W9SuKFQqFtKemNoG9BwAAAID+pcQTtr+/9ZYBz7V3dEiSRmVlSZKOHD2mjIwMTZk8qU/bGdOndrU5clTlpSuGrb8AAAAAEI2UCGwD+eTT4zpc/6EmXDFeV025Up2dQQUCbbpi/Dg5HH0fLo4dmyNJOnX6TNTfwzTNuPY5Vt39sVu/kHoYa0gkxhsShbGGRGGsIVq2DGxvbNocVbvy0hXKOv/k7GLNzWf19K/XyTAMffHuO2QYhjqDQUmSx+Pp92s87q7jnZ2dUfe18ZOGqNsm0qnjHye7C0gTjDUkEuMNicJYQ6Iw1jAYWwa2V1/fFFW7Zdcu7jewHWv4WE89859qa2vXA/ffo1kFM6L8zpYk9doCYDB5k/OjbpsIpmnq1PGPdcWkKf0+RQTihbGGRGK8IVEYa0gUxlpqaj18OO6vacvA9uTjjw75a3fvqdFzL7wktztD33z4K5o9a2bPuazMTEnqedJ2se7jmefbRcOuP2AOh8O2fUNqYawhkRhvSBTGGhKFsYbB2DKwDdWbb23Vyxtf15WTJuqhr35J48fl9jrv8bg1xufV2bMtMk2zzw/HmTPNkqQJE8YntN8AAAAA0J+UifPbKir18sbXNXfOLH3322v7hLVuBTOnKxwO61jDR33OHTp8RJI0O+oplAAAAAAwfFIisB358KjWb9iomTOm6aGvPaDMzP6LikjSipJiSdKbb23rdby9vUMVlVUaPXqUFi+6Ztj7DAAAAACDSYkpkes3/FGmaeqa+XP1/r4D/baZNDFPkybm6erZBSopXqrKqt365dO/0eLChQoGg9r6zg75/a36ygP3DVh5EgAAAAASKSUCW8NHXeVQ//DHNwZsc+stN+q2z94kSfri3XdoypTJ2lFZrRfWb5DT6dS0qfm69+7bNWsm0yEBQJIsy7qsqrkAACD+UiKwXW5VSYfDofLSFSovXTFsfQKAkSgYtrSlLqxdDREFw5LHJRXlO1U+xyWPi/AGAECipURgAwDELhi29IutITW1WfJlSpkuQ5ZlqaI+ogMnTK1d6Sa0AQCQYClRdAQAELstdWE1tVkak2X0TIU0DENjsgw1tVnaejCc7C4CAJB2CGwAAEnSroaIfJn9n/NlStXHIonuEgAAaY/ABgCQZVkKhjVgkRHDMBQMd7UDAACJQ2ADAMgwDHlcAwcyy7LkcQ0c6IB0xA0MAIlA0REAgKSuapAV9RGN6WcrSn+nVFrgTEa3AFsJmaYq/X7tDQQUsiy5DUOLsrNV4vPJ7eA+OID445MFACBJKp/jUu5oQy0dVs+TA8uy1NJhadxoQytnc48P6S1kmlrX2Kjq1la5DUNep1Nuw1B1a6vWNTYqZJrJ7iKAFERgAwBIkjwuQ2tXulVa4FQwIrV0WgpGup6sfYOS/oAq/X41h8PyOZ29Kqn6nE41h8Pa6fcnu4sAUhC3SwEAPTwuQzfPy9DN8zJkWRZr1oAL7A0E5B1g2qPX4VBNIKCynJyE9wtAauMJGwCgX4Q14G8sy1LoEjcxDMNQyLIoRAIg7ghsAAAAgzAMQ27DuGQlVbdhcKMDQNwR2AAAAKKwKDtbrQMUFmk1TRVmZye8TwBSH4ENAAAgCiU+n8a6XPJHIr0qqfojEeW6XFru8yW7iwBSEIENAAAgCm6HQ2vy8lTs9SpkWWqNRBSyLBV7vbo/L4992AAMC6pEAgAARMntcKgsJ0dlOTlUUgWQENwKAgAAGALCGoBEILABAAAAgE0R2AAAAADApghsAAAAAGBTBDYAAAAAsCkCGwAAAADYFIENAAAAAGyKwAYAAAAANkVgAwAAAACbIrABAAAAgE0R2AAAAADApghsAAAAAGBTBDYAAAAAsCkCGwAAAADYFIENAAAAAGzKqKurs5LdCQAAAABAXzxhAwAAAACbIrABAAAAgE0R2AAAAADApghsAAAAAGBTBDYAAAAAsCkCGwAAAADYFIENAAAAAGyKwAYAAAAANkVgAwAAAACbciW7A4iP9vYOvbXlHe19f79On2mSYUiTJuZpxfJlWrG8SIZh9LSNRCJ6e9t2Ve96VydPnZbT6dCUyVdq9aoyLVwwL6nvAyNHZdVuvfTyRnV2BvXDHzyiceNy+7RhrCEWjB8MJz7DMNy4NkO8GHV1dVayO4HYnG3x67HHn1RLi1/FRUs0c8Z0dXR0qGJHlRpPntLqVaW6/fN/19P+6f9Yp721+7Vg/lwVLlygcDis7ZVV+ujjT3XPnV9Q6XXLk/p+YG+tgYCef3GDavcdUEZGhkKh0IAXO4w1xILxg+HAZxgSgWszxBNP2FLAxlf/pObms7rz9s+pvOy6nuPLly3VD3/8mN7aUqEbb1gpn9ermtp92lu7X0uXFOrBNff2tC0uWqIf/fRxbXjlNRUuXCCvNztJ7wZ29+jPfq5IJKK1X39Qm97cokP1R/ptx1hDLBg/GC58hiERuDZDPLGGLQWMHTtGhYsWaMXyol7HR43K0szp02RZlj493ihJqqreI0lavaqsV1u3263rVxQrFAppT01tAnuPkWbGtHx9/3vf0by5cy7ZjrGGWDB+MFz4DEMicG2GeCKwpYC/v/UWfe3B++V2u/uca+/okCSNysqSJB05ekwZGRmaMnlSn7Yzpk/tanPk6LD3GSPXl790n7zZg9/lY6whFowfDBc+w5AIXJshnghsKeyTT4/rcP2HmnDFeF015Up1dgYVCLQpZ4xPDkfff/qxY3MkSadOn0lCb5FKGGuIBeMHycYYxHDh2gxDwRo2G3pj0+ao2pWXrlDW+bszF2tuPqunf71OhmHoi3ffIcMw1BkMSpI8Hk+/X+Nxdx3v7Owcct8xssRjrPWHsYZYMH6QbIxBDAeuzTBUBDYbevX1TVG1W3bt4n4voo81fKynnvlPtbW164H779GsghlRfueugqEXlplFaot1rA0dYw2xYPwg2RiDuDxcmyEWBDYbevLxR4f8tbv31Oi5F16S252hbz78Fc2eNbPnXFZmpnTBncOLdR/PPN8OqS+WsXYpjDXEgvGDZGMMIp64NkOsCGwp5M23turlja/rykkT9dBXv6TxF+0p4/G4Ncbn1dmzLTJNs89c6TNnmiVJEyaMT2i/kXoYa4gF4wfJxhhEvHBthnig6EiK2FZRqZc3vq65c2bpu99e2+cDoVvBzOkKh8M61vBRn3OHDnftRTM76sf0wMAYa4gF4wfJxhhErLg2Q7wQ2FLAkQ+Pav2GjZo5Y5oe+toDyszsf+GqJK0oKZYkvfnWtl7H29s7VFFZpdGjR2nxomuGvc9IfYw1xILxg2RjDCIWXJshnpgSmQLWb/ijTNPUNfPn6v19B/ptM2liniZNzNPVswtUUrxUlVW79cunf6PFhQsVDAa19Z0d8vtb9ZUH7otzcQmkkjNNzb3uALa2BSRJ+z+oU3b2aEnSuNxcTc2fwlhDTBg/GA58hiFRuDZDPBl1dXVWsjuB2HzzO48M2ubWW27UbZ+9SZJkmqa2bd+pHZXVOnnqlJxOp6ZNzddnbr5Bs2byyB0Dq6zareeeX3/JNsVF12rNfXdJjDXEiPGDeOMzDInCtRniicAGAAAAADbFGjYAAAAAsCkCGwAAAADYFIENAAAAAGyKwAYAAAAANkVgAwAAAACbIrABAAAAgE0R2AAAAADApghsAAAAAGBTBDYAAAAAsCkCGwAAAADYlCvZHQAA4GIHD9XriSefHrRdVmamHvvJPyekT5ve3KK5V8/WVVOuTMj3i8XZFr9++/x6HfjrQRUXXas1992V7C4BAIaIwAYAsK3pU/N1w6rSAc+7XIn5Ndbib9Urr74hrzfb9oFt97s1+q+XXlE4Ek52VwAAcUBgAwDY1pgcn5YULkx2N3T0aMOwvG4oFJLb7Y7b61VW7dJzz7+kZUuXaEnhNfrVM8/G7bUBAMlBYAMApIzGk6f0xqbNOnjwsAJt7crKzNS0qVfpxtUrNWvmjF5tA21tenPzVtXuO6CWFr/CkYhyx+bo2iWLdMuNq5SRkSFJevznT+lQ/RFJ0nPPr9dzz6/XP9x7p0qKl+oH//wTNTU368nHH+3Tl29+5xHljh2rf/k//0u6YJrn6lWlmpg3Qa++8ReFQuf02I//SZJkmqYqdlSpsmqXTjSekmWZGjcuV4ULF+jm1avk8Qwe7EzT0oP336ul1xbq4KH6ePyVAgCSjMAGAEgJDR99oieefEoZGRkqu65E48fnqrm5Rdsrq/TEvz+tB9fcq2sXL5IkRSIR/dvPf6UTJ07qupJlmjF9mkwzopra/Xrjz5t1ovGkvvrAP0iSbvvsTdpasUPv1byvsutLNKtghqbmXzXkfp4+3aTd7+7VDeWl8nmze46v+91/adfu97Ro4XxdV1Isw5AOHj6iP//lbR344KD+8dvfUMYgU0CvK1k25H4BAOyJwAYASAkvrN8gw3Doke9+S2NzcnqOr1hepP/7k3/V71/+owoXLpDT6dSpU6d1xbhxumbeXP23z93a03b5sqX6lx//TO/VvK/ms2c1NidHswpm6OCher2n95V/1ZSYp2jW7jug//GthzVzxrSeY/sO/FW7dr+n1avKdPvnb+s5fl1Jsa4YN05vbNqsHZXVWlm6IqbvDQAYeSjrDwCwrUjEVHt7x4D/BYMhSdLJU6d1rOFjFcyYJo/b06uN0+nUnNkFavG3quGjTyRJEyfm6eGvPdAT1kKhkNrbO9TZGdSEK8ZLks40NQ/LexqXO7ZXWJOk3XtqJEmFC+f3eY+FixZIkvbt/2BY+gMAsDeesAEAbOv9fQf0P7//TwOeX7hgnh766pd0/HhjV/v9H1yyfVNzs6ZPy5ck/bXukDZt3qIPjzYoFAr1aWtGzLi8h4uNH5fb59inx09Ikn72xC8H/Lqm5rPD0h8AgL0R2AAAtlUwc7pu+8xNA57Pzh4tSQqGgtL5ALdq5fUDtp84cYIk6YO6g3ryV/8hj9ut1atKNfWqKfJ4PJKk1/70Fx2u/zDO7+RvMrMy+xwLng+MX//yGmX1c15STxEUAEB6IbABAGwrO3u0Zs+aOWi7zMyukONwOKJqv/ntd2RZlu6797/3WZP2l81bYuhxl3D48vZAy8rsCovjx+dq8pWTYv7+AIDUwRo2AMCId+WkiZKkow0fyTT7TmUMBNpkWVbPn8+caZIkzS7oHe5CoXM62vBR1N/X6ez6NXpxQDtz5vLWv3X3/8iHx/qci0Qiam9vv6zXAwCkDgIbAGDEGz8uV1Pzr9LZsy3atfu9Xufa2zv003/7d/30X3/eE9pycsZI/RQWeXnjaz3/f+7cuZ7/d5wPZhcek6ScMV2v03jyVK/j23dWX1b/u7cb2LJte5/vsa2iUo/8739Rzd59l/WaAIDUwJRIAEBKuOfOL+iJJ5/S7178vT7+5FPl50/R2Ra/KnZUqampWZ+79RYZhiFJKjq/sfS6376oG8qvl2la2vPeXhmGodWryvTH1/6sLe/s0LlwWIULF/QUCtn6zg6Fzp3TpLwJmj/vahUuWqBD9Uf0wvqXdetnbpTL6VLtvgP68MNjGjPGJ0vWIL3uMn/e1Spauli7dr+nnz3xS11Xskwul0uH64+oate7mjJ5kubPmzPo6+w/8Nee9XDHT3QVYmlqbta7NbU9bRbMu1pu9+CbcAMA7IHABgBICflXTdb3/vFb+tOmt7SnplZbKyo1alSWpl41RffdfUevtW0lxUVq7+jU9h1VWr9ho3xer5YULtRtn71J7e0dqn3/gA4eqte5c+dUuHCBFi+6Rntr92v/B3Xa/PY2rV5VpvnzrlbZ9SU6Fw6rcucuPfXMs8rMzNTCBfO09qEv68f/7wmFI9GvZVvzxbs0Y9pU7azerQ2vvCbJUu7YsfrMTTfoxtUroyo68sL6P6ipufdTw0OHj+jQ4SM9f/7hDx7RuH4qVQIA7Mmoq6uL7vYfAAAAACChWMMGAAAAADZFYAMAAAAAmyKwAQAAAIBNEdgAAAAAwKYIbAAAAABgUwQ2AAAAALApAhsAAAAA2BSBDQAAAABsisAGAAAAADZFYAMAAAAAmyKwAQAAAIBNEdgAAAAAwKb+P2RHzJWc96CrAAAAAElFTkSuQmCC" + }, + "metadata": {} + } + ] + }, + { + "cell_type": "code", + "metadata": { + "originalKey": "0c41cc65-76b4-4ffa-92b6-a3607f1d6c71", + "showInput": true, + "customInput": null, + "language": "python", + "collapsed": false, + "outputsInitialized": true, + "bentoAICellStatus": "none", + "executionStartTime": 1758725518351, + "executionStopTime": 1758725518564, + "serverExecutionDuration": 1.9487915560603, + "requestMsgId": "09e61618-9f0a-4851-8de3-76a20245220d", + "isCommentPanelOpen": false + }, + "source": [ + "# Create data loaders\n", + "train_loader = DataLoader(trainset, batch_size=64)\n", + "test_loader = DataLoader(testset, batch_size=n_test)" + ], + "execution_count": 80, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "originalKey": "78c4613d-c579-478b-a883-d10b4c2d923d", + "outputsInitialized": false, + "bentoAICellStatus": "none", + "language": "markdown", + "isCommentPanelOpen": false + }, + "source": [ + "## Training the Model\n", + "\n", + "Now, let's train our model on the training data. We'll use cross-entropy loss and the Adam optimizer." + ] + }, + { + "cell_type": "code", + "metadata": { + "originalKey": "e150cd7e-203b-426f-80b9-7dde2ca56ab5", + "outputsInitialized": true, + "bentoAICellStatus": "none", + "language": "python", + "collapsed": false, + "executionStartTime": 1758725519645, + "executionStopTime": 1758725519868, + "serverExecutionDuration": 20.54350450635, + "requestMsgId": "025590c4-cb04-4fee-bbfd-6afa3916638d", + "isCommentPanelOpen": false + }, + "source": [ + "# Create a linear model\n", + "model = nn.Linear(d, n_class)\n", + "print(model)\n", + "\n", + "# Define loss function and optimizer\n", + "criterion = nn.CrossEntropyLoss()\n", + "\n", + "# Training loop\n", + "losses = []\n", + "optimizer = optim.SGD(model.parameters(), lr=0.1, momentum=0.9)\n", + "\n", + "for epoch in range(2):\n", + " for inp, out in train_loader:\n", + " loss = criterion(model(inp), out)\n", + " optimizer.zero_grad()\n", + " loss.backward()\n", + " losses.append(loss.item())\n", + " optimizer.step()" + ], + "execution_count": 81, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Linear(in_features=1000, out_features=10, bias=True)\n" + ] + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "originalKey": "a8a5cfc9-6ce4-4eff-a5c3-36af9ebd91ec", + "showInput": false, + "outputsInitialized": false, + "bentoAICellStatus": "none", + "language": "markdown", + "isCommentPanelOpen": false + }, + "source": [ + "Let's visualize the training loss over timesteps:" + ] + }, + { + "cell_type": "code", + "metadata": { + "originalKey": "9e278421-0819-4d64-9cc5-9e1f752ef570", + "outputsInitialized": true, + "bentoAICellStatus": "none", + "language": "python", + "collapsed": false, + "executionStartTime": 1758725521483, + "executionStopTime": 1758725521983, + "serverExecutionDuration": 207.32539240271, + "requestMsgId": "92fe24e1-5938-4602-967d-8923e5d1423c", + "isCommentPanelOpen": false + }, + "source": [ + "plt.plot(losses)\n", + "plt.ylabel(\"Loss\")\n", + "plt.xlabel(\"Step\")\n", + "plt.title(\"Training Loss\")\n", + "plt.show()" + ], + "execution_count": 82, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/plain": "
", + "image/png": "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" + }, + "metadata": {} + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "originalKey": "14d13665-ce68-43da-87f0-5f32d314301d", + "outputsInitialized": false, + "bentoAICellStatus": "none", + "language": "markdown", + "showInput": false, + "isCommentPanelOpen": false + }, + "source": [ + "## Performing a Loss-Based Membership Inference Attack\n", + "\n", + "Now that we have trained our model, we can perform a loss-based membership inference attack using the `LossAttack` class from the Privacy Guard framework.\n", + "\n", + "### Understanding the Attack\n", + "\n", + "The loss-based attack works by computing the loss of the model on both the training data (members) and the testing data (non-members). The intuition is that the model will have lower loss values on the training data it has seen before compared to the testing data it hasn't seen.\n", + "\n", + "By analyzing the distribution of these loss values, an attacker can potentially distinguish between members and non-members of the training set, thus inferring membership.\n", + "\n", + "We run the attack via the `LossAttack` class. The class takes as input a function that computes loss given a model and a dataloader. In our case we define the `cross_entropy_loss` function. " + ] + }, + { + "cell_type": "code", + "metadata": { + "originalKey": "3374066b-6487-4375-9f2d-5f56c08cb1f1", + "showInput": true, + "customInput": null, + "language": "python", + "executionStartTime": 1758725524133, + "executionStopTime": 1758725524345, + "serverExecutionDuration": 2.3245392367244, + "collapsed": false, + "requestMsgId": "c909ed9f-e9d2-4ccb-8cfb-54f1797c876d", + "outputsInitialized": true, + "bentoAICellStatus": "none", + "isCommentPanelOpen": false + }, + "source": [ + "# define the loss computation function\n", + "@torch.no_grad()\n", + "def compute_loss_cross_entropy(\n", + " model: nn.Module, dataloader: DataLoader\n", + ") -> torch.Tensor:\n", + " \"\"\"\n", + " Computes the losses given by the model over the dataloader.\n", + " Example implementation for testing purposes only.\n", + " \"\"\"\n", + " losses = []\n", + " criterion = nn.CrossEntropyLoss(reduction=\"none\")\n", + "\n", + " for img, target in dataloader:\n", + " outputs = model(img)\n", + " batch_losses = criterion(outputs, target)\n", + " losses += batch_losses.tolist()\n", + "\n", + " return torch.Tensor(losses)" + ], + "execution_count": 83, + "outputs": [] + }, + { + "cell_type": "code", + "metadata": { + "originalKey": "ec8d985c-9185-497d-97b4-74eda744d745", + "outputsInitialized": true, + "bentoAICellStatus": "none", + "language": "python", + "collapsed": false, + "executionStartTime": 1758725525109, + "executionStopTime": 1758725525335, + "serverExecutionDuration": 15.467686578631, + "requestMsgId": "5eecc7e9-627f-4f3b-949b-364cb2686da2", + "isCommentPanelOpen": false + }, + "source": [ + "# Perform the loss-based membership inference attack\n", + "loss_attack = LossAttack(\n", + " private_model=model,\n", + " private_train=train_loader,\n", + " private_holdout=test_loader,\n", + " compute_loss=compute_loss_cross_entropy\n", + ")\n", + "\n", + "# Run the attack\n", + "attack_results = loss_attack.run_attack()\n", + "\n", + "print(f\"Attack results shape - Train: {attack_results.df_train_user.shape}, Test: {attack_results.df_test_user.shape}\")" + ], + "execution_count": 84, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Attack results shape - Train: (500, 2), Test: (500, 2)\n" + ] + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "originalKey": "9f3dbfbb-7355-4062-bcb0-1d31fdb7254b", + "outputsInitialized": false, + "bentoAICellStatus": "none", + "language": "markdown", + "isCommentPanelOpen": false + }, + "source": [ + "Let's visualize the distribution of scores (negative loss values) for the training and testing data:" + ] + }, + { + "cell_type": "code", + "metadata": { + "originalKey": "0dc1831e-792f-4ecc-bb78-3d169bea9379", + "outputsInitialized": true, + "bentoAICellStatus": "none", + "language": "python", + "collapsed": false, + "executionStartTime": 1758725526254, + "executionStopTime": 1758725526795, + "serverExecutionDuration": 315.22748433053, + "requestMsgId": "d995ad47-d57a-4e8a-aaf9-bb566cdbaaa3", + "isCommentPanelOpen": false + }, + "source": [ + "plt.figure(figsize=(10, 6))\n", + "\n", + "# Get the scores\n", + "train_scores = attack_results.df_train_user['score']\n", + "test_scores = attack_results.df_test_user['score']\n", + "\n", + "# Plot histograms\n", + "plt.hist(train_scores, bins=30, alpha=0.5, label='Training Data (Members)', color=\"tab:orange\")\n", + "plt.hist(test_scores, bins=30, alpha=0.5, label='Testing Data (Non-members)', color=\"tab:blue\")\n", + "\n", + "plt.xlabel('Score (Negative Loss)')\n", + "plt.ylabel('Frequency')\n", + "plt.title('Distribution of Scores for Members vs. Non-members')\n", + "plt.legend()\n", + "plt.grid(True)\n", + "plt.show()" + ], + "execution_count": 85, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/plain": "
", + "image/png": "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567z4rkzXFalxY2+z3NHrYVBehMSk1Jw5NhJ3DN+DDzc3bSmqaquBgCYmppqfd/U5NbyqqqqZqVviqunj07p7mRyuRy5WRlwdvfSWjBChovnrvPiueu8eO46L567zovnzvCJkmy1LlcoFCgDDObclSYnd3QWqIUYpDdCKpVi9dr18HB3w7gxo1qwpVtNYEQiUZukN4SLQWchFot5vDopnrvOi+eu8+K567x47jovnjsD1sSzOc8dtRZ+ixqxacsOFBQWYfZDMyGRSBpMZ25mBqjUkKurX25Wl07f9ERERERERHRnYE16A5KvpuLw0RMYPnQwrKwsUVhUpHyvtrYWAJTL7O3sYGtjjaKiYsjlco0StPz8QgCAi4sTAMDU1ESv9ERERERERHRnYJDegISEZCgUChw6chyHjhzXmua9Dz4HAPw0/0v4+/ki+nws0q6nw7d7N0G6pOSrAIBA/x7KZfqmJyIiIiIioq6PQXoDBvQPg4+Pl9b3Nm/diRtZ2Xj6yTnKZVGDIxB9PhZ79x/Gk4/PVi6vqKjE0ROnYGlpgX59+zQ7PREREREREXV9DNIb4OriDFcXZ63v7dt/GADQp3ewcllQoD8GRwzAiVNnsWjJcvQLC0V1dTUOHTmOkpJSPDHnYZibmzc7PREREREREXV9DNJb0UOzpsPLyxPHT5zG2nUbIJFI0L2bDx6cNQ0BfppN1/VNT0RERERERF0bg/RmePmFeVqXi8VijBwWhZHDonTajr7piYiIiIiIqGvjFGxEREREREREBoJBOhEREREREZGBYJBOREREREREZCAYpBMREREREREZCAbpRERERERERAaCQToRERERERGRgWCQTkRERERERGQgGKQTERERERERGQgG6UREREREREQGgkE6ERERERERkYFgkE5ERERERERkIBikExERERERERkIBulEREREREREBoJBOhEREREREZGBYJBOREREREREZCAYpBMREREREREZCAbpRERERERERAaCQToRERERERGRgWCQTkRERERERGQgGKQTERERERERGQgG6UREREREREQGgkE6ERERERERkYFgkE5ERERERERkIBikExERERERERkIBulEREREREREBoJBOhEREREREZGBYJBOREREREREZCAYpBMREREREREZCAbpRERERERERAaCQToRERERERGRgWCQTkRERERERGQgGKQTERERERERGQgG6UREREREREQGgkE6ERERERERkYFgkE5ERERERERkIBikExERERERERkIBulEREREREREBoJBOhEREREREZGBYJBOREREREREZCAYpBMREREREREZCAbpRERERERERAaCQToRERERERGRgWCQTkRERERERGQgGKQTERERERERGQgG6UREREREREQGgkE6ERERERERkYFgkE5ERERERERkIBikExERERERERkIBulEREREREREBoJBOhEREREREZGBYJBOREREREREZCAYpBMREREREREZCAbpRERERERERAaCQToRERERERGRgWCQTkRERERERGQgGKQTERERERERGQgG6UREREREREQGgkE6ERERERERkYFgkE5ERERERERkIBikExERERERERkIBulEREREREREBoJBOhEREREREZGBYJBOREREREREZCAYpBMREREREREZCAbpRERERERERAaCQToRERERERGRgWCQTkRERERERGQgGKQTERERERERGQgG6UREREREREQGgkE6ERERERERkYFgkE5ERERERERkIBikExERERERERkIBulEREREREREBoJBOhEREREREZGBYJBOREREREREZCAYpBMREREREREZCKOOzoChKygsxN79h3ElIQkFhUUwNzeDs5MjhkZFYEB4GMTi2+UcMpkMBw4fw+kz55CTmweJRAwvTw+MHjUcoSG9NLatb3oiIiIiIiLq2hikN+J6eiYW/LQYUABDoiLg6eGO8vJyHDt5GitX/YUrCUl49OFZyvTLVq7Ghdg4hPQOxqgRQ1FbW4tjJ05h8dKVeGDmVAwbEinYvr7piYiIiIiIqGvrEkH6/338JaIiByFyUH/Y2tq02nY3bNqKqqpqvPLC0/D381UuHxw5EB9//i1OnTmH8eNGw8XZCTGxl3AhNg4DwsPw2KMPKtNGDAzHZ1/Nx4Z/tyEsNATW1lYAoHd6IiIiIiIi6vq6RJ/0ouISbNm+C+9/9AUWL12JS3HxUCgULd5uWFgfTLlvoiBABwBzMzP4dvMBABQWFgEATp2OBgCMHjVckNbExARDoyIglUoRHROrXK5veiIiIiIiIur6ukRN+hcfv4fzFy7i7LkLuHT5Ci7GxcPW1gaDBw3A4IgBcHR0aNZ2Rw6L0rpcJpPhRlY2JBIJ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BO+bmprA1sYaRUXFkMvlGiVo+fmFAAAXF6dmpSciIiIiIqI7A9tjNOHw0RPYuHk7gnsG4LWXntUI0Ov5+/mitrYWadfTNd5LSr4KAAhUaR6vb3oiIiIiIiLq+hikN+Jq6jWs27AZfj26Y96Tc2Bmpn2wCACIGhwBANi7/7BgeUVFJY6eOAVLSwv069un2emJiIiIiIio62Nz90as27AFcrkcfXoH4+Kly1rTuLu5wt3NFUGB/hgcMQAnTp3FoiXL0S8sFNXV1Th05DhKSkrxxJyHYV43pzoAvdMTERERERFR18cgvRHX02/Ndbhpy44G00y8ewzumTAWAPDQrOnw8vLE8ROnsXbdBkgkEnTv5oMHZ01DgJ9m03V90xMREREREVHXxiC9ET/N/1Kv9GKxGCOHRWHksKg2SU9ERERERERdG/ukExERERERERkIBulEREREREREBoJBOhEREREREZGBYJBOREREREREZCAYpBMREREREREZCAbpRERERERERAaCQToRERERERGRgWCQTkRERERERGQgGKQTERERERERGQgG6UREREREREQGgkE6ERERERERkYFgkE5ERERERERkIBikExERERERERkIBulEREREREREBoJBOhEREREREZGBYJBOREREREREZCAYpBMREREREREZCAbpRERERERERAaCQToRERERERGRgWCQTkRERERERGQgGKQTERERERERGQgG6UREREREREQGgkE6ERERERERkYFgkE5ERERERERkIBikExERERERERkIBulEREREREREBoJBOhEREREREZGBYJBOREREREREZCAYpBMREREREREZCAbpRERERERERAaCQToRERERERGRgWCQTkRERERERGQgGKQTERERERERGQgG6UREREREREQGgkE6ERERERERkYFgkE5ERERERERkIBikExERERERERkIBulEREREREREBoJBOhEREREREZGBYJBOREREREREZCAYpBMREREREREZCAbpRERERERERAaCQToRERERERGRgWCQTkRERERERGQgGKQTERERERERGQgG6UREREREREQGgkE6ERERERERkYFgkE5ERERERERkIBikExERERERERkIBulEREREREREBoJBOhEREREREZGBYJBOREREREREZCAYpBMREREREREZCAbpRERERERERAaCQToRERERERGRgWCQTkRERERERGQgGKQTERERERERGQgG6UREREREREQGgkE6ERERERERkYFgkE5ERERERERkIBikExERERERERkIBulEREREREREBoJBOhEREREREZGBYJBOREREREREZCAYpBMREREREREZCAbpRERERERERAaCQToRERERERGRgWCQTkRERERERGQgGKQTERERERERGQgG6UREREREREQGgkE6ERERERHR/7d333FV3nf/x9/sISjIUBAXiltEQFEcccfYLJOY2aRJ2+TXrGY1Se+OR++77d2RNqtpmmaPmsTcMRpjTIxxIkNUHCgqgrgXQzacwzq/P4ATTw4iB8VzHX09Hw8fLdf1ORff8/2c6Plc33EBBkGRDgAAAACAQVCkAwAAAABgEBTpAAAAAAAYBEU6AAAAAAAGQZEOAAAAAIBBeDq7Aa4iI3OrFi/9QiaTWb//7bMKCelpF9PY2Kh1KWnavGWbCouK5eHhrqg+kZo5fapiR4244HgAAAAAwOWNkfTzqKyq0htvf6APFy1WU5Ol3di33/9QS5etUHBwkG675UbdeN08mc1mvf7W+9qYtumC4wEAAAAAlzdG0s/jr8+/osbGRj30wH1atXq98g4UtBm3I3u3dmbnKDE+Tvfdc4f1eNK4eP3puZe0ZNkKxcWOUmBgQKfiAQAAAACXP0bSzyN6QD/96pnHNWL40HbjMjdnSZJmTp9qc9zb21uTk5NUV1enrB3ZnY4HAAAAAFz+GEk/jx//6K4OxRUcOiwvLy9F9YmwOxc9sH9zTMEhTZuS3Kn49jQ1NXWojVey1j6ir1wPuXNd5M51kTvXRe5cF7nrehZL+0tXz8ftHK9vPUrucLFQpF8EJpNZVVXVCgsNkbu7/eSE4OAgSVJRcUmn4s/n9PEjF/gOrhxFJ485uwnoJHLnusid6yJ3rovcuS5y13WqK8sv6PXedeZ2z5M7XCwU6ReBydz8H6yPj0+b5328m4+bTKZOxZ9Prz79OtHqK0tTU5OKTh5TWERUmzdGYFzkznWRO9dF7lwXuXNd5K7rdQtsv8g+H7eStr+7t46kGyV3lfn5zm4CLhBF+iXR/J+um5tbl8Qb4S8DV+Hu7k5/uShy57rInesid66L3Lkuctd1Ov5d/JwXaPtwyzR4coeLhU/RReDn6yudNUL+fa3HfVvi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6hvVXAAeOXpcL7/6ury8vDR10kSFhvZUaWm50jIy9fI/39B999yhhLFj2n2/J06eUknJGY0YNkTe3t5txni4e+jO227W8y//S4sWf64H77/3vP1YazLp+X/8S8XFZzRp4nj16xslk8mkrO3Z+nDRYh07fkK33nyDNX7hR59q67Yd6tc3ynoDYn1Kmo6faL5p4uHpYY2tqqrW8y//S1VV1Zo2dZL6REaorq5OmVuy9NnnX6q8olLzr58nSbp9wY36du0G5eUXaN7cWYro3UsREb3s2js+caxWrPxWWduz2yzSs7btlJeXp7U/c/bs0+tvf6Dg4CDNmj5V3bt3V1FRsTamb9KunD169MH7NSh6wHn7yRFr12/UZ59/qV7hYZp39Uz5+/vr+PETSknN0K5de/TkYw+qT2SEJGn12g1a+sVXGjpksH5wzWz5+PiosKhIKakZytmzT//19GPqGRyskpIz+tuLr8rP10dXTZmknj2DVFNTqy1Z2/X+wkWqqanRtKmTrG0YFD1Avj4+ytmbK4vFclntywAA6HoU6QAAhw0ZHK1B0QN1oOCgfv+nv2t8wlgNGxqj6IH95e9/7s2yli5boarqaj358wetxVmSEuTv56cVK79VxqYtmjFtinZm5yh79x6NGjlcP/vpj6xFzuTkJAUv66E16zZqXUqq5s6eYXN9s8msRx78qc2xRZ8ukZubu5596lEFB303up08YZz++JcX9NnS5YqLHSUPDw+dy77cPEnS8GFD2u2XgQP6aerkidqwMV1Z23YqIb794n/lqrU6dapQD95/r0adtSRg6uSJ+serb2rDxnRNTk5SZERvnTh5Slu37VCv8DA98ej/s94sSEyI05//9rIkyU3fFYMnT51WVJ9IDRsy2FrQS9K4xLH69e/+Vxs2puu6eXPk6empkSOGKWt7tiQpZlD0OTe2Cw0NUfTAASo4eEjFJWcUetYGcwcPHVFxyRkljI2Vv7+fGhsb9eEnnykoqIf+6xeP2SwRSIwfoz//7WUtXrpczz71aLt95IjyikotW/61gnp019NPPCw/v9bZFgkaMmSw/v3me1qybIUebfmMbN66Xb4+PnrkZz+xziqQpBHDhmjFytU6dapQPYODtXNXjurq6vTDO26xuaEzOTlJ77z/kcrKym3a4eHhoZiYQdq1e4+OHT9pvWEEAEBHsHEcAMBh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" + }, + "metadata": {} + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "originalKey": "2d36bd91-65a4-40f2-9728-5386b28009a6", + "showInput": false, + "customInput": null, + "language": "markdown", + "outputsInitialized": false, + "bentoAICellStatus": "none", + "isCommentPanelOpen": false + }, + "source": [ + "We see that it is easy to separate the members from non-members using a threshold." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "originalKey": "d6e0b2ae-36e5-419d-951e-817947a66f68", + "outputsInitialized": false, + "bentoAICellStatus": "none", + "language": "markdown", + "showInput": false, + "isCommentPanelOpen": false + }, + "source": [ + "## Analyzing the Attack Results with AnalysisNode\n", + "\n", + "Now, let's use the `AnalysisNode` class to analyze the results of our attack. This class provides various metrics to evaluate the effectiveness of the attack, such as accuracy, AUC, and privacy leakage measured by epsilon." + ] + }, + { + "cell_type": "code", + "metadata": { + "originalKey": "212cfdcc-22da-4299-a2c0-c4e33cc45d87", + "outputsInitialized": true, + "bentoAICellStatus": "none", + "language": "python", + "collapsed": false, + "executionStartTime": 1758725661493, + "executionStopTime": 1758725674847, + "serverExecutionDuration": 13203.19633279, + "requestMsgId": "c3c417f3-4eec-426a-b0ed-7ab66e764791", + "isCommentPanelOpen": false + }, + "source": [ + "# Create a AnalysisNode\n", + "analysis_node = AnalysisNode(\n", + " analysis_input=attack_results,\n", + " delta=1e-5, # Small delta value for privacy calculations\n", + " n_users_for_eval=min(len(attack_results.df_train_user), len(attack_results.df_test_user)),\n", + " num_bootstrap_resampling_times=10000,\n", + " show_progress=True,\n", + " use_fnr_tnr=True,\n", + ")\n", + "\n", + "# Run the analysis\n", + "analysis_results = analysis_node.run_analysis()\n", + "\n", + "# Print the results\n", + "print(f\"Attack Accuracy: {analysis_results.accuracy:.4f} (95% CI: [{analysis_results.accuracy_ci[0]:.4f}, {analysis_results.accuracy_ci[1]:.4f}])\")\n", + "print(f\"Attack AUC: {analysis_results.auc:.4f} (95% CI: [{analysis_results.auc_ci[0]:.4f}, {analysis_results.auc_ci[1]:.4f}])\")\n", + "print(f\"Privacy Leakage (Epsilon): {analysis_results.eps:.4f}\")\n", + "print(f\"Epsilon at 1% TPR (Upper Bound): {analysis_results.eps_tpr_ub[0]:.6f}\")\n", + "print(f\"Epsilon at 1% TPR (Lower Bound): {analysis_results.eps_tpr_lb[0]:.6f}\")" + ], + "execution_count": 96, + "outputs": [ + { + "output_type": "stream", + "name": "stderr", + "text": [ + "I0924 075421.657 analysis_node.py:217] Train/Test unique users: 500/500\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "I0924 075421.673 mia_results.py:187] TNR: 0.284, FNR: 0.0, emp eps: 2.74927, tnr@fnr0.001: 0.284, eps@fnr0.001: 0.24525, auc 0.78407 accuracy 0.776, \n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "I0924 075421.673 analysis_node.py:224] Epsilon CP: 2.7492718213052085\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\r 0%| | 0/10000 [00:00= sample_length: - with open(file_path, "r") as file: - file_content = file.read() - print(len(file_content[0:prompt_length_characters])) - extraction_targets.append( - { - "prompt": file_content[0:prompt_length_characters], - "target": file_content[ - prompt_length_characters : prompt_length_characters - + target_length_characters - ], - "filename": filename, - } - ) - num_targets += 1 - if num_targets >= max_num_samples: - break - - -print(f"Prepared extraction target with length: {len(extraction_targets)}") - -extraction_targets_df = pd.DataFrame(extraction_targets) - -""":py '1168152261823607'""" -# Save the dataframe to a .jsonl file -from privacy_guard.attacks.extraction.utils.data_utils import save_results - -extraction_targets_path = working_directory_path + "/extraction_targets.jsonl" - -if not os.path.isfile(extraction_targets_path): - save_results( - extraction_targets_df, - extraction_targets_path, - format="jsonl", - ) - - print(f"Saved extraction targets to jsonl file {extraction_targets_path}") -else: - print(f"Extraction target file already exists as {extraction_targets_path}") - -""":md -# Define the Predictor - -Extraction targets df is now prepared to run extraction attacks for memorization assessments, where we calculate the probability the model places on particular targts given the prompts. To start with, we define a Predictor object which loads the model and its corresponding tokenizer - -This next step will use PrivacyGuard to load the Pythia model. -(Note: this step will take some time) - - - -""" - -""":py '2500688590297636'""" -from bento import fwdproxy -from privacy_guard.attacks.extraction.predictors.huggingface_predictor import ( - HuggingFacePredictor, -) - -# 1) Create a HuggingFace predictor instance using the defined class -model_name = "EleutherAI/pythia-12b" - -print(f"Loading model '{model_name}' using HuggingFacePredictor...") -with fwdproxy(): - huggingface_predictor = HuggingFacePredictor( - model_name=model_name, - device="cuda", - model_kwargs={"torch_dtype": "auto"}, # Use appropriate dtype - tokenizer_kwargs={}, - ) - -print(f"Loaded model '{huggingface_predictor.model_name}' from HuggingFace") - -""":md -# Prepare and Execute LogprobsAttack - -1. Prepare the LogprobsAttack -2. Execute the LogprobsAttack using "run_attack" - -After executing this tutorial, feel free to clone and experiment with other models and datasets. -""" - -""":py '2260845434338032'""" -from privacy_guard.attacks.extraction.logprobs_attack import LogprobsAttack - -logprobs_attack = LogprobsAttack( - input_file=extraction_targets_path, # The dataset to perform logprobs attack on - output_file=None, # When specified, saves logprobs to file. - predictor=huggingface_predictor, # Pass the predictor instead of model/tokenizer - prompt_column="prompt", # Column used as prompt for each logprob extraction - target_column="target", # Column containing target text for logprob calculation - output_column="prediction_logprobs", - batch_size=4, - temperature=1.1, -) - -""":md -# Running LogprobsAttack - -Now that LogprobsAttack has been configured and initialized, the we can perform the logproibs attack which calculates the log probabilities using "run_attack" -""" - -""":py '1539854943700067'""" -attack_result = logprobs_attack.run_attack() - -""":md -# Analysis - -Now that the log probability calculation through logprobs_attack is complete, we can perform Privacy Analysis to compute do a memorization assessment of the dataset. -""" - -""":py '1526275335236244'""" -from typing import Any, Dict, List - -import pandas as pd - -from IPython.display import display, Markdown - -from privacy_guard.analysis.extraction.probabilistic_memorization_analysis_node import ( - ProbabilisticMemorizationAnalysisNode, -) - -# Remove this line as it's not needed for LogprobsAttack result -# attack_result.lcs_bound_config = None - -analysis_node = ProbabilisticMemorizationAnalysisNode(analysis_input=attack_result) - -results = analysis_node.run_analysis() - -# Update to use the new outputs from ProbabilisticMemorizationAnalysisNode -displays = [] - -def display_result(displays: List[Dict[str, Any]], augmented_row): - displays.append( - { - "model_probability": augmented_row["model_probability"], - "above_threshold": augmented_row["above_probability_threshold"], - "n_probabilities": augmented_row.get("n_probabilities", "N/A"), - "target": augmented_row["target"], - "logprobs": augmented_row["prediction_logprobs"], - } - ) - -for augmented_row in results.augmented_output_dataset.T.to_dict().values(): - display_result(displays=displays, augmented_row=augmented_row) - -display(pd.DataFrame(displays)) - -""":md -# Preparing and Executing LogitsAttack - -1. Prepare the LogitsAttack -2. Execute the LogitsAttack using "run_attack" -""" - -""":py '25016343094628450'""" -from privacy_guard.attacks.extraction.logits_attack import LogitsAttack - -# 2) Prepare the LogprobsAttack -logits_attack = LogitsAttack( - input_file=extraction_targets_path, # The dataset to perform logprobs attack on - output_file=None, # When specified, saves logprobs to file. - predictor=huggingface_predictor, # Pass the predictor instead of model/tokenizer - prompt_column="prompt", # Column used as prompt for each logprob extraction - target_column="target", # Column containing target text for logprob calculation - output_column="prediction_logits", - batch_size=4, - temperature=1.1, -) - -""":md -# Running LogitsAttack - -Now that LogitsAttack has been configured and initialized, the we can perform the generation attack using "run_attack" -""" - -""":py '1128349329448800'""" -attack_result = logits_attack.run_attack() - -""":md -# Analysis - -Now that the generation attack is complete, we can perform Privacy Analysis to compute the extraction rate of the dataset. - -We'll look at the longest common substring score for each sample in the dataset, alonside the % of the target extracted. -""" - -""":py '2797153583813228'""" -from typing import Any, Dict, List - -import pandas as pd -from IPython.display import display, Markdown - -from privacy_guard.analysis.extraction.probabilistic_memorization_analysis_from_logits_node import ( - ProbabilisticMemorizationAnalysisFromLogitsNode, -) - -# Remove this line as it's not needed for LogprobsAttack result -# attack_result.lcs_bound_config = None - -analysis_node = ProbabilisticMemorizationAnalysisFromLogitsNode(analysis_input=attack_result) - -results = analysis_node.run_analysis() - -print("Analysis run completed.") -# Update to use the new outputs from ProbabilisticMemorizationAnalysisNode -displays = [] - -def display_result(displays: List[Dict[str, Any]], augmented_row): - displays.append( - { - "model_probability": augmented_row["model_probability"], - "above_threshold": augmented_row["above_probability_threshold"], - "n_probabilities": augmented_row.get("n_probabilities", "N/A"), - "target": augmented_row["target"], - } - ) - -for augmented_row in results.augmented_output_dataset.T.to_dict().values(): - display_result(displays=displays, augmented_row=augmented_row) - -display(pd.DataFrame(displays)) - -""":md - -""" - -""":md - -"""