Object Detection
khulnasoft commited on
Commit
80ba828
1 Parent(s): e701311

Upload 20 files

Browse files
Files changed (19) hide show
  1. CVE2016.ipynb +0 -0
  2. CVE2017.ipynb +0 -0
  3. CVE2018.ipynb +0 -0
  4. CVE2019.ipynb +0 -0
  5. CVE2020.ipynb +0 -0
  6. CVE2021.ipynb +0 -0
  7. CVE2022.ipynb +0 -0
  8. CVE2023.ipynb +0 -0
  9. CVE2024.ipynb +0 -0
  10. CVEAll.ipynb +0 -0
  11. CVECNA.ipynb +0 -0
  12. CVECNAMap.ipynb +0 -0
  13. CVECPE.ipynb +494 -0
  14. CVECVSS.ipynb +0 -0
  15. CVECWE.ipynb +482 -0
  16. CVEGrowth.ipynb +1 -1
  17. LICENSE +21 -0
  18. README.md +8 -0
  19. intro.md +8 -0
CVE2016.ipynb ADDED
The diff for this file is too large to render. See raw diff
 
CVE2017.ipynb ADDED
The diff for this file is too large to render. See raw diff
 
CVE2018.ipynb ADDED
The diff for this file is too large to render. See raw diff
 
CVE2019.ipynb ADDED
The diff for this file is too large to render. See raw diff
 
CVE2020.ipynb ADDED
The diff for this file is too large to render. See raw diff
 
CVE2021.ipynb ADDED
The diff for this file is too large to render. See raw diff
 
CVE2022.ipynb ADDED
The diff for this file is too large to render. See raw diff
 
CVE2023.ipynb ADDED
The diff for this file is too large to render. See raw diff
 
CVE2024.ipynb ADDED
The diff for this file is too large to render. See raw diff
 
CVEAll.ipynb ADDED
The diff for this file is too large to render. See raw diff
 
CVECNA.ipynb ADDED
The diff for this file is too large to render. See raw diff
 
CVECNAMap.ipynb ADDED
The diff for this file is too large to render. See raw diff
 
CVECPE.ipynb ADDED
@@ -0,0 +1,494 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "cells": [
3
+ {
4
+ "cell_type": "markdown",
5
+ "id": "b3e3ebf1-3bba-41b2-9b9f-70bb80a9ad50",
6
+ "metadata": {
7
+ "tags": []
8
+ },
9
+ "source": [
10
+ "# CPE Data"
11
+ ]
12
+ },
13
+ {
14
+ "cell_type": "code",
15
+ "execution_count": 1,
16
+ "id": "stuffed-appearance",
17
+ "metadata": {
18
+ "execution": {
19
+ "iopub.execute_input": "2024-06-16T12:28:38.807863Z",
20
+ "iopub.status.busy": "2024-06-16T12:28:38.807702Z",
21
+ "iopub.status.idle": "2024-06-16T12:28:39.340467Z",
22
+ "shell.execute_reply": "2024-06-16T12:28:39.339858Z"
23
+ },
24
+ "tags": [
25
+ "remove-cell"
26
+ ]
27
+ },
28
+ "outputs": [
29
+ {
30
+ "data": {
31
+ "text/html": [
32
+ "<script>\n",
33
+ " if (document.body.dataset.jpThemeLight == \"false\" || // Jupyter Lab\n",
34
+ " document.body.dataset.vscodeThemeKind == \"vscode-dark\" || // VS Code\n",
35
+ " document.documentElement.dataset.theme == \"dark\" || // Jupyter Book\n",
36
+ " window.matchMedia('(prefers-color-scheme: dark)').matches) {\n",
37
+ " document.documentElement.classList.add('dark');\n",
38
+ " }\n",
39
+ " else {\n",
40
+ " document.documentElement.classList.remove('dark');\n",
41
+ " }\n",
42
+ "</script>\n"
43
+ ],
44
+ "text/plain": [
45
+ "<IPython.core.display.HTML object>"
46
+ ]
47
+ },
48
+ "metadata": {},
49
+ "output_type": "display_data"
50
+ }
51
+ ],
52
+ "source": [
53
+ "import glob\n",
54
+ "import logging\n",
55
+ "import json\n",
56
+ "import os\n",
57
+ "import pandas as pd\n",
58
+ "import warnings\n",
59
+ "from itables import init_notebook_mode, show\n",
60
+ "import itables.options as opt\n",
61
+ "\n",
62
+ "opt.dom = \"tpir\"\n",
63
+ "opt.style = \"table-layout:auto;width:auto\"\n",
64
+ "init_notebook_mode(all_interactive=True, connected=True)\n",
65
+ "\n",
66
+ "logging.getLogger('matplotlib.font_manager').disabled = True\n",
67
+ "warnings.filterwarnings(\"ignore\")"
68
+ ]
69
+ },
70
+ {
71
+ "cell_type": "code",
72
+ "execution_count": 2,
73
+ "id": "inner-count",
74
+ "metadata": {
75
+ "execution": {
76
+ "iopub.execute_input": "2024-06-16T12:28:39.342773Z",
77
+ "iopub.status.busy": "2024-06-16T12:28:39.342453Z",
78
+ "iopub.status.idle": "2024-06-16T12:29:14.436181Z",
79
+ "shell.execute_reply": "2024-06-16T12:29:14.435531Z"
80
+ },
81
+ "tags": [
82
+ "remove-cell"
83
+ ]
84
+ },
85
+ "outputs": [],
86
+ "source": [
87
+ "row_accumulator = []\n",
88
+ "\n",
89
+ "for filename in glob.glob('nvdcve-1.1-*.json'):\n",
90
+ " with open(filename, 'r', encoding='utf-8') as f:\n",
91
+ " nvd_data = json.load(f)\n",
92
+ " for cves in nvd_data['CVE_Items']:\n",
93
+ " if cves['configurations']['nodes'] != []:\n",
94
+ " if \"children\" in cves['configurations']['nodes'][0]:\n",
95
+ " for j in range(len(cves['configurations']['nodes'][0]['children'])):\n",
96
+ " for cpe in cves['configurations']['nodes'][0]['children'][j]['cpe_match']:\n",
97
+ " if cpe['vulnerable'] == True:\n",
98
+ " cve = cves['cve']['CVE_data_meta']['ID']\n",
99
+ " cpe_string = cpe['cpe23Uri']\n",
100
+ " try:\n",
101
+ " end = cpe['versionEndExcluding']\n",
102
+ " except: \n",
103
+ " end = 'None'\n",
104
+ " try:\n",
105
+ " end2 = cpe['versionEndIncluding']\n",
106
+ " except: \n",
107
+ " end2 = 'None' \n",
108
+ " try:\n",
109
+ " start = cpe['versionStartExcluding']\n",
110
+ " except: \n",
111
+ " start = 'None'\n",
112
+ " try:\n",
113
+ " start2 = cpe['versionStartIncluding']\n",
114
+ " except: \n",
115
+ " start2 = 'None' \n",
116
+ " new_row = { \n",
117
+ " 'CVE': cve,\n",
118
+ " 'CPE' : cpe_string,\n",
119
+ " 'StartI' : start,\n",
120
+ " 'StartE' : start2,\n",
121
+ " 'EndI' : end,\n",
122
+ " 'EndE' : end2 \n",
123
+ " }\n",
124
+ " row_accumulator.append(new_row)\n",
125
+ " \n",
126
+ "\n",
127
+ "\n",
128
+ "nvd = pd.DataFrame(row_accumulator) "
129
+ ]
130
+ },
131
+ {
132
+ "cell_type": "markdown",
133
+ "id": "833383cc-8ef0-4490-acdc-98671760b1a3",
134
+ "metadata": {},
135
+ "source": [
136
+ "## CVEs With Most CPE"
137
+ ]
138
+ },
139
+ {
140
+ "cell_type": "code",
141
+ "execution_count": 3,
142
+ "id": "temporal-disposal",
143
+ "metadata": {
144
+ "execution": {
145
+ "iopub.execute_input": "2024-06-16T12:29:14.438935Z",
146
+ "iopub.status.busy": "2024-06-16T12:29:14.438749Z",
147
+ "iopub.status.idle": "2024-06-16T12:29:14.464419Z",
148
+ "shell.execute_reply": "2024-06-16T12:29:14.463953Z"
149
+ },
150
+ "tags": [
151
+ "remove-input"
152
+ ]
153
+ },
154
+ "outputs": [
155
+ {
156
+ "data": {
157
+ "text/html": [
158
+ "<table id=\"itables_6db19fe1_43cf_4b88_95b7_e97081fc9ad0\" class=\"display nowrap\" data-quarto-disable-processing=\"true\" style=\"table-layout:auto;width:auto\">\n",
159
+ "<thead>\n",
160
+ " <tr style=\"text-align: right;\">\n",
161
+ " <th></th>\n",
162
+ " <th>count</th>\n",
163
+ " </tr>\n",
164
+ " <tr>\n",
165
+ " <th>CVE</th>\n",
166
+ " <th></th>\n",
167
+ " </tr>\n",
168
+ " </thead><tbody><tr>\n",
169
+ "<td style=\"vertical-align:middle; text-align:left\">\n",
170
+ "<div style=\"float:left; margin-right: 10px;\">\n",
171
+ "<a href=https://mwouts.github.io/itables/><svg class=\"main-svg\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n",
172
+ "width=\"64\" viewBox=\"0 0 500 400\" style=\"font-family: 'Droid Sans', sans-serif;\">\n",
173
+ " <g style=\"fill:#d9d7fc\">\n",
174
+ " <path d=\"M100,400H500V357H100Z\" />\n",
175
+ " <path d=\"M100,300H400V257H100Z\" />\n",
176
+ " <path d=\"M0,200H400V157H0Z\" />\n",
177
+ " <path d=\"M100,100H500V57H100Z\" />\n",
178
+ " <path d=\"M100,350H500V307H100Z\" />\n",
179
+ " <path d=\"M100,250H400V207H100Z\" />\n",
180
+ " <path d=\"M0,150H400V107H0Z\" />\n",
181
+ " <path d=\"M100,50H500V7H100Z\" />\n",
182
+ " </g>\n",
183
+ " <g style=\"fill:#1a1366;stroke:#1a1366;\">\n",
184
+ " <rect x=\"100\" y=\"7\" width=\"400\" height=\"43\">\n",
185
+ " <animate\n",
186
+ " attributeName=\"width\"\n",
187
+ " values=\"0;400;0\"\n",
188
+ " dur=\"5s\"\n",
189
+ " repeatCount=\"indefinite\" />\n",
190
+ " <animate\n",
191
+ " attributeName=\"x\"\n",
192
+ " values=\"100;100;500\"\n",
193
+ " dur=\"5s\"\n",
194
+ " repeatCount=\"indefinite\" />\n",
195
+ " </rect>\n",
196
+ " <rect x=\"0\" y=\"107\" width=\"400\" height=\"43\">\n",
197
+ " <animate\n",
198
+ " attributeName=\"width\"\n",
199
+ " values=\"0;400;0\"\n",
200
+ " dur=\"3.5s\"\n",
201
+ " repeatCount=\"indefinite\" />\n",
202
+ " <animate\n",
203
+ " attributeName=\"x\"\n",
204
+ " values=\"0;0;400\"\n",
205
+ " dur=\"3.5s\"\n",
206
+ " repeatCount=\"indefinite\" />\n",
207
+ " </rect>\n",
208
+ " <rect x=\"100\" y=\"207\" width=\"300\" height=\"43\">\n",
209
+ " <animate\n",
210
+ " attributeName=\"width\"\n",
211
+ " values=\"0;300;0\"\n",
212
+ " dur=\"3s\"\n",
213
+ " repeatCount=\"indefinite\" />\n",
214
+ " <animate\n",
215
+ " attributeName=\"x\"\n",
216
+ " values=\"100;100;400\"\n",
217
+ " dur=\"3s\"\n",
218
+ " repeatCount=\"indefinite\" />\n",
219
+ " </rect>\n",
220
+ " <rect x=\"100\" y=\"307\" width=\"400\" height=\"43\">\n",
221
+ " <animate\n",
222
+ " attributeName=\"width\"\n",
223
+ " values=\"0;400;0\"\n",
224
+ " dur=\"4s\"\n",
225
+ " repeatCount=\"indefinite\" />\n",
226
+ " <animate\n",
227
+ " attributeName=\"x\"\n",
228
+ " values=\"100;100;500\"\n",
229
+ " dur=\"4s\"\n",
230
+ " repeatCount=\"indefinite\" />\n",
231
+ " </rect>\n",
232
+ " <g style=\"fill:transparent;stroke-width:8; stroke-linejoin:round\" rx=\"5\">\n",
233
+ " <g transform=\"translate(45 50) rotate(-45)\">\n",
234
+ " <circle r=\"33\" cx=\"0\" cy=\"0\" />\n",
235
+ " <rect x=\"-8\" y=\"32\" width=\"16\" height=\"30\" />\n",
236
+ " </g>\n",
237
+ "\n",
238
+ " <g transform=\"translate(450 152)\">\n",
239
+ " <polyline points=\"-15,-20 -35,-20 -35,40 25,40 25,20\" />\n",
240
+ " <rect x=\"-15\" y=\"-40\" width=\"60\" height=\"60\" />\n",
241
+ " </g>\n",
242
+ "\n",
243
+ " <g transform=\"translate(50 352)\">\n",
244
+ " <polygon points=\"-35,-5 0,-40 35,-5\" />\n",
245
+ " <polygon points=\"-35,10 0,45 35,10\" />\n",
246
+ " </g>\n",
247
+ "\n",
248
+ " <g transform=\"translate(75 250)\">\n",
249
+ " <polyline points=\"-30,30 -60,0 -30,-30\" />\n",
250
+ " <polyline points=\"0,30 -30,0 0,-30\" />\n",
251
+ " </g>\n",
252
+ "\n",
253
+ " <g transform=\"translate(425 250) rotate(180)\">\n",
254
+ " <polyline points=\"-30,30 -60,0 -30,-30\" />\n",
255
+ " <polyline points=\"0,30 -30,0 0,-30\" />\n",
256
+ " </g>\n",
257
+ " </g>\n",
258
+ " </g>\n",
259
+ "</svg>\n",
260
+ "</a>\n",
261
+ "</div>\n",
262
+ "<div>\n",
263
+ "Loading ITables v2.1.1 from the internet...\n",
264
+ "(need <a href=https://mwouts.github.io/itables/troubleshooting.html>help</a>?)</td>\n",
265
+ "</div>\n",
266
+ "</tr></tbody>\n",
267
+ "\n",
268
+ "</table>\n",
269
+ "<link href=\"https://www.unpkg.com/dt_for_itables@2.0.10/dt_bundle.css\" rel=\"stylesheet\">\n",
270
+ "<script type=\"module\">\n",
271
+ " import {DataTable, jQuery as $} from 'https://www.unpkg.com/dt_for_itables@2.0.10/dt_bundle.js';\n",
272
+ "\n",
273
+ " document.querySelectorAll(\"#itables_6db19fe1_43cf_4b88_95b7_e97081fc9ad0:not(.dataTable)\").forEach(table => {\n",
274
+ " // Define the table data\n",
275
+ " const data = [[\"CVE-2021-1620\", 690], [\"CVE-2022-22160\", 364], [\"CVE-2011-3664\", 325], [\"CVE-2012-1350\", 322], [\"CVE-2007-6694\", 316], [\"CVE-2008-7256\", 303], [\"CVE-2011-1011\", 270], [\"CVE-2021-31366\", 267], [\"CVE-2012-5120\", 248], [\"CVE-2016-5995\", 243], [\"CVE-2010-0741\", 241], [\"CVE-2023-44183\", 240], [\"CVE-2022-22226\", 240], [\"CVE-2021-31382\", 239], [\"CVE-2021-0272\", 235], [\"CVE-2021-0228\", 231], [\"CVE-2020-1680\", 228], [\"CVE-2009-2711\", 226], [\"CVE-2021-0273\", 226], [\"CVE-2011-2366\", 225], [\"CVE-2011-3666\", 225], [\"CVE-2009-2486\", 222], [\"CVE-2009-2596\", 222], [\"CVE-2022-22223\", 222], [\"CVE-2020-1628\", 221], [\"CVE-2014-1506\", 217], [\"CVE-2021-0237\", 216], [\"CVE-2022-20725\", 215], [\"CVE-2023-36848\", 213], [\"CVE-2021-0285\", 210], [\"CVE-2022-22191\", 208], [\"CVE-2023-36850\", 207], [\"CVE-2012-5216\", 204], [\"CVE-2020-1618\", 203], [\"CVE-2021-0288\", 202], [\"CVE-2023-20187\", 201], [\"CVE-2021-0295\", 200], [\"CVE-2022-22249\", 197], [\"CVE-2021-0203\", 192], [\"CVE-2023-20027\", 190], [\"CVE-2021-0259\", 184], [\"CVE-2021-0230\", 182], [\"CVE-2021-31361\", 182], [\"CVE-2021-31370\", 181], [\"CVE-2023-36832\", 181], [\"CVE-2021-0242\", 180], [\"CVE-2013-0790\", 179], [\"CVE-2012-3979\", 179], [\"CVE-2010-4410\", 174], [\"CVE-2010-2761\", 174]];\n",
276
+ "\n",
277
+ " // Define the dt_args\n",
278
+ " let dt_args = {\"scrollY\": \"400px\", \"scrollCollapse\": true, \"paging\": false, \"dom\": \"tpir\", \"order\": []};\n",
279
+ " dt_args[\"data\"] = data;\n",
280
+ "\n",
281
+ " \n",
282
+ " new DataTable(table, dt_args);\n",
283
+ " });\n",
284
+ "</script>\n"
285
+ ],
286
+ "text/plain": [
287
+ "<IPython.core.display.HTML object>"
288
+ ]
289
+ },
290
+ "metadata": {},
291
+ "output_type": "display_data"
292
+ }
293
+ ],
294
+ "source": [
295
+ "nvd_cve = nvd['CVE'].value_counts().head(50)\n",
296
+ "show(nvd_cve, scrollY=\"400px\", scrollCollapse=True, paging=False)"
297
+ ]
298
+ },
299
+ {
300
+ "cell_type": "markdown",
301
+ "id": "69850125-3841-48cd-a36d-1cf998c68272",
302
+ "metadata": {},
303
+ "source": [
304
+ "## Most Common CPEs"
305
+ ]
306
+ },
307
+ {
308
+ "cell_type": "code",
309
+ "execution_count": 4,
310
+ "id": "celtic-employer",
311
+ "metadata": {
312
+ "execution": {
313
+ "iopub.execute_input": "2024-06-16T12:29:14.466632Z",
314
+ "iopub.status.busy": "2024-06-16T12:29:14.466305Z",
315
+ "iopub.status.idle": "2024-06-16T12:29:14.498131Z",
316
+ "shell.execute_reply": "2024-06-16T12:29:14.497691Z"
317
+ },
318
+ "tags": [
319
+ "remove-input"
320
+ ]
321
+ },
322
+ "outputs": [
323
+ {
324
+ "data": {
325
+ "text/html": [
326
+ "<table id=\"itables_e116c6e4_f292_4a49_9380_e400a88d6d8d\" class=\"display nowrap\" data-quarto-disable-processing=\"true\" style=\"table-layout:auto;width:auto\">\n",
327
+ "<thead>\n",
328
+ " <tr style=\"text-align: right;\">\n",
329
+ " <th></th>\n",
330
+ " <th>count</th>\n",
331
+ " </tr>\n",
332
+ " <tr>\n",
333
+ " <th>CPE</th>\n",
334
+ " <th></th>\n",
335
+ " </tr>\n",
336
+ " </thead><tbody><tr>\n",
337
+ "<td style=\"vertical-align:middle; text-align:left\">\n",
338
+ "<div style=\"float:left; margin-right: 10px;\">\n",
339
+ "<a href=https://mwouts.github.io/itables/><svg class=\"main-svg\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n",
340
+ "width=\"64\" viewBox=\"0 0 500 400\" style=\"font-family: 'Droid Sans', sans-serif;\">\n",
341
+ " <g style=\"fill:#d9d7fc\">\n",
342
+ " <path d=\"M100,400H500V357H100Z\" />\n",
343
+ " <path d=\"M100,300H400V257H100Z\" />\n",
344
+ " <path d=\"M0,200H400V157H0Z\" />\n",
345
+ " <path d=\"M100,100H500V57H100Z\" />\n",
346
+ " <path d=\"M100,350H500V307H100Z\" />\n",
347
+ " <path d=\"M100,250H400V207H100Z\" />\n",
348
+ " <path d=\"M0,150H400V107H0Z\" />\n",
349
+ " <path d=\"M100,50H500V7H100Z\" />\n",
350
+ " </g>\n",
351
+ " <g style=\"fill:#1a1366;stroke:#1a1366;\">\n",
352
+ " <rect x=\"100\" y=\"7\" width=\"400\" height=\"43\">\n",
353
+ " <animate\n",
354
+ " attributeName=\"width\"\n",
355
+ " values=\"0;400;0\"\n",
356
+ " dur=\"5s\"\n",
357
+ " repeatCount=\"indefinite\" />\n",
358
+ " <animate\n",
359
+ " attributeName=\"x\"\n",
360
+ " values=\"100;100;500\"\n",
361
+ " dur=\"5s\"\n",
362
+ " repeatCount=\"indefinite\" />\n",
363
+ " </rect>\n",
364
+ " <rect x=\"0\" y=\"107\" width=\"400\" height=\"43\">\n",
365
+ " <animate\n",
366
+ " attributeName=\"width\"\n",
367
+ " values=\"0;400;0\"\n",
368
+ " dur=\"3.5s\"\n",
369
+ " repeatCount=\"indefinite\" />\n",
370
+ " <animate\n",
371
+ " attributeName=\"x\"\n",
372
+ " values=\"0;0;400\"\n",
373
+ " dur=\"3.5s\"\n",
374
+ " repeatCount=\"indefinite\" />\n",
375
+ " </rect>\n",
376
+ " <rect x=\"100\" y=\"207\" width=\"300\" height=\"43\">\n",
377
+ " <animate\n",
378
+ " attributeName=\"width\"\n",
379
+ " values=\"0;300;0\"\n",
380
+ " dur=\"3s\"\n",
381
+ " repeatCount=\"indefinite\" />\n",
382
+ " <animate\n",
383
+ " attributeName=\"x\"\n",
384
+ " values=\"100;100;400\"\n",
385
+ " dur=\"3s\"\n",
386
+ " repeatCount=\"indefinite\" />\n",
387
+ " </rect>\n",
388
+ " <rect x=\"100\" y=\"307\" width=\"400\" height=\"43\">\n",
389
+ " <animate\n",
390
+ " attributeName=\"width\"\n",
391
+ " values=\"0;400;0\"\n",
392
+ " dur=\"4s\"\n",
393
+ " repeatCount=\"indefinite\" />\n",
394
+ " <animate\n",
395
+ " attributeName=\"x\"\n",
396
+ " values=\"100;100;500\"\n",
397
+ " dur=\"4s\"\n",
398
+ " repeatCount=\"indefinite\" />\n",
399
+ " </rect>\n",
400
+ " <g style=\"fill:transparent;stroke-width:8; stroke-linejoin:round\" rx=\"5\">\n",
401
+ " <g transform=\"translate(45 50) rotate(-45)\">\n",
402
+ " <circle r=\"33\" cx=\"0\" cy=\"0\" />\n",
403
+ " <rect x=\"-8\" y=\"32\" width=\"16\" height=\"30\" />\n",
404
+ " </g>\n",
405
+ "\n",
406
+ " <g transform=\"translate(450 152)\">\n",
407
+ " <polyline points=\"-15,-20 -35,-20 -35,40 25,40 25,20\" />\n",
408
+ " <rect x=\"-15\" y=\"-40\" width=\"60\" height=\"60\" />\n",
409
+ " </g>\n",
410
+ "\n",
411
+ " <g transform=\"translate(50 352)\">\n",
412
+ " <polygon points=\"-35,-5 0,-40 35,-5\" />\n",
413
+ " <polygon points=\"-35,10 0,45 35,10\" />\n",
414
+ " </g>\n",
415
+ "\n",
416
+ " <g transform=\"translate(75 250)\">\n",
417
+ " <polyline points=\"-30,30 -60,0 -30,-30\" />\n",
418
+ " <polyline points=\"0,30 -30,0 0,-30\" />\n",
419
+ " </g>\n",
420
+ "\n",
421
+ " <g transform=\"translate(425 250) rotate(180)\">\n",
422
+ " <polyline points=\"-30,30 -60,0 -30,-30\" />\n",
423
+ " <polyline points=\"0,30 -30,0 0,-30\" />\n",
424
+ " </g>\n",
425
+ " </g>\n",
426
+ " </g>\n",
427
+ "</svg>\n",
428
+ "</a>\n",
429
+ "</div>\n",
430
+ "<div>\n",
431
+ "Loading ITables v2.1.1 from the internet...\n",
432
+ "(need <a href=https://mwouts.github.io/itables/troubleshooting.html>help</a>?)</td>\n",
433
+ "</div>\n",
434
+ "</tr></tbody>\n",
435
+ "\n",
436
+ "</table>\n",
437
+ "<link href=\"https://www.unpkg.com/dt_for_itables@2.0.10/dt_bundle.css\" rel=\"stylesheet\">\n",
438
+ "<script type=\"module\">\n",
439
+ " import {DataTable, jQuery as $} from 'https://www.unpkg.com/dt_for_itables@2.0.10/dt_bundle.js';\n",
440
+ "\n",
441
+ " document.querySelectorAll(\"#itables_e116c6e4_f292_4a49_9380_e400a88d6d8d:not(.dataTable)\").forEach(table => {\n",
442
+ " // Define the table data\n",
443
+ " const data = [[\"cpe:2.3:a:adobe:acrobat_dc:*:*:*:*:classic:*:*:*\", 2015], [\"cpe:2.3:a:adobe:acrobat_reader_dc:*:*:*:*:classic:*:*:*\", 2014], [\"cpe:2.3:a:adobe:acrobat_dc:*:*:*:*:continuous:*:*:*\", 1543], [\"cpe:2.3:a:adobe:acrobat_reader_dc:*:*:*:*:continuous:*:*:*\", 1537], [\"cpe:2.3:o:google:android:12.0:*:*:*:*:*:*:*\", 897], [\"cpe:2.3:o:google:android:11.0:*:*:*:*:*:*:*\", 864], [\"cpe:2.3:a:adobe:flash_player:*:*:*:*:*:*:*:*\", 715], [\"cpe:2.3:a:adobe:acrobat:*:*:*:*:*:*:*:*\", 651], [\"cpe:2.3:o:google:android:10.0:*:*:*:*:*:*:*\", 568], [\"cpe:2.3:a:google:chrome:*:*:*:*:*:*:*:*\", 442], [\"cpe:2.3:o:google:android:13.0:*:*:*:*:*:*:*\", 433], [\"cpe:2.3:a:foxitsoftware:phantompdf:*:*:*:*:*:*:*:*\", 374], [\"cpe:2.3:a:adobe:reader:*:*:*:*:*:*:*:*\", 356], [\"cpe:2.3:o:qualcomm:apq8009_firmware:-:*:*:*:*:*:*:*\", 329], [\"cpe:2.3:a:adobe:acrobat_reader:*:*:*:*:*:*:*:*\", 300], [\"cpe:2.3:o:qualcomm:mdm9206_firmware:-:*:*:*:*:*:*:*\", 266], [\"cpe:2.3:a:microsoft:edge:-:*:*:*:*:*:*:*\", 217], [\"cpe:2.3:a:foxitsoftware:reader:*:*:*:*:*:*:*:*\", 194], [\"cpe:2.3:a:mozilla:firefox:*:*:*:*:*:*:*:*\", 190], [\"cpe:2.3:a:sandhillsdev:easy_digital_downloads:*:*:*:*:*:wordpress:*:*\", 186], [\"cpe:2.3:o:qualcomm:aqt1000_firmware:-:*:*:*:*:*:*:*\", 184], [\"cpe:2.3:a:apple:safari:*:*:*:*:*:*:*:*\", 179], [\"cpe:2.3:a:apple:webkit:*:*:*:*:*:*:*:*\", 156], [\"cpe:2.3:a:foxitsoftware:foxit_reader:*:*:*:*:*:*:*:*\", 153], [\"cpe:2.3:o:arubanetworks:arubaos:*:*:*:*:*:*:*:*\", 148], [\"cpe:2.3:a:nvidia:virtual_gpu:*:*:*:*:*:*:*:*\", 139], [\"cpe:2.3:a:foxit:pdf_editor:*:*:*:*:*:*:*:*\", 136], [\"cpe:2.3:o:cisco:adaptive_security_appliance_software:*:*:*:*:*:*:*:*\", 134], [\"cpe:2.3:a:adobe:bridge:*:*:*:*:*:*:*:*\", 125], [\"cpe:2.3:a:microsoft:edge:*:*:*:*:*:*:*:*\", 125], [\"cpe:2.3:a:adobe:illustrator:*:*:*:*:*:*:*:*\", 123], [\"cpe:2.3:a:adobe:indesign:*:*:*:*:*:*:*:*\", 117], [\"cpe:2.3:a:adobe:acrobat_reader:*:*:*:*:classic:*:*:*\", 115], [\"cpe:2.3:o:cisco:nx-os:*:*:*:*:*:*:*:*\", 115], [\"cpe:2.3:a:adobe:acrobat:*:*:*:*:classic:*:*:*\", 115], [\"cpe:2.3:o:qualcomm:ar8035_firmware:-:*:*:*:*:*:*:*\", 113], [\"cpe:2.3:a:adobe:photoshop_cc:*:*:*:*:*:*:*:*\", 113], [\"cpe:2.3:a:adobe:after_effects:*:*:*:*:*:*:*:*\", 112], [\"cpe:2.3:a:adobe:flash_player_desktop_runtime:*:*:*:*:*:*:*:*\", 111], [\"cpe:2.3:o:netgear:d7800_firmware:*:*:*:*:*:*:*:*\", 107], [\"cpe:2.3:a:adobe:photoshop:*:*:*:*:*:*:*:*\", 105], [\"cpe:2.3:o:google:android:11.0:-:*:*:*:*:*:*\", 100], [\"cpe:2.3:a:foxit:pdf_reader:*:*:*:*:*:*:*:*\", 97], [\"cpe:2.3:a:nvidia:gpu_driver:*:*:*:*:*:*:*:*\", 96], [\"cpe:2.3:o:insteon:hub_firmware:1012:*:*:*:*:*:*:*\", 95], [\"cpe:2.3:a:apple:itunes:*:*:*:*:*:*:*:*\", 91], [\"cpe:2.3:o:juniper:junos:20.4:r1:*:*:*:*:*:*\", 90], [\"cpe:2.3:o:reolink:rlc-410w_firmware:3.0.0.136_20121102:*:*:*:*:*:*:*\", 87], [\"cpe:2.3:o:juniper:junos:20.4:r1-s1:*:*:*:*:*:*\", 86], [\"cpe:2.3:a:microsoft:internet_explorer:6:*:*:*:*:*:*:*\", 86]];\n",
444
+ "\n",
445
+ " // Define the dt_args\n",
446
+ " let dt_args = {\"scrollY\": \"400px\", \"scrollCollapse\": true, \"paging\": false, \"dom\": \"tpir\", \"order\": []};\n",
447
+ " dt_args[\"data\"] = data;\n",
448
+ "\n",
449
+ " \n",
450
+ " new DataTable(table, dt_args);\n",
451
+ " });\n",
452
+ "</script>\n"
453
+ ],
454
+ "text/plain": [
455
+ "<IPython.core.display.HTML object>"
456
+ ]
457
+ },
458
+ "metadata": {},
459
+ "output_type": "display_data"
460
+ }
461
+ ],
462
+ "source": [
463
+ "nvd_cpe = nvd['CPE'].value_counts().head(50)\n",
464
+ "show(nvd_cpe, scrollY=\"400px\", scrollCollapse=True, paging=False)"
465
+ ]
466
+ }
467
+ ],
468
+ "metadata": {
469
+ "kernelspec": {
470
+ "display_name": "Python 3.10.6 64-bit",
471
+ "language": "python",
472
+ "name": "python3"
473
+ },
474
+ "language_info": {
475
+ "codemirror_mode": {
476
+ "name": "ipython",
477
+ "version": 3
478
+ },
479
+ "file_extension": ".py",
480
+ "mimetype": "text/x-python",
481
+ "name": "python",
482
+ "nbconvert_exporter": "python",
483
+ "pygments_lexer": "ipython3",
484
+ "version": "3.11.9"
485
+ },
486
+ "vscode": {
487
+ "interpreter": {
488
+ "hash": "aee8b7b246df8f9039afb4144a1f6fd8d2ca17a180786b69acc140d282b71a49"
489
+ }
490
+ }
491
+ },
492
+ "nbformat": 4,
493
+ "nbformat_minor": 5
494
+ }
CVECVSS.ipynb ADDED
The diff for this file is too large to render. See raw diff
 
CVECWE.ipynb ADDED
@@ -0,0 +1,482 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "cells": [
3
+ {
4
+ "cell_type": "markdown",
5
+ "id": "serious-pressing",
6
+ "metadata": {},
7
+ "source": [
8
+ "# CWE Data\n",
9
+ "---"
10
+ ]
11
+ },
12
+ {
13
+ "cell_type": "code",
14
+ "execution_count": 1,
15
+ "id": "91b44dc2",
16
+ "metadata": {
17
+ "execution": {
18
+ "iopub.execute_input": "2024-06-16T12:27:51.302947Z",
19
+ "iopub.status.busy": "2024-06-16T12:27:51.302779Z",
20
+ "iopub.status.idle": "2024-06-16T12:27:51.839829Z",
21
+ "shell.execute_reply": "2024-06-16T12:27:51.839331Z"
22
+ },
23
+ "tags": [
24
+ "remove-cell"
25
+ ]
26
+ },
27
+ "outputs": [
28
+ {
29
+ "data": {
30
+ "text/html": [
31
+ "<script>\n",
32
+ " if (document.body.dataset.jpThemeLight == \"false\" || // Jupyter Lab\n",
33
+ " document.body.dataset.vscodeThemeKind == \"vscode-dark\" || // VS Code\n",
34
+ " document.documentElement.dataset.theme == \"dark\" || // Jupyter Book\n",
35
+ " window.matchMedia('(prefers-color-scheme: dark)').matches) {\n",
36
+ " document.documentElement.classList.add('dark');\n",
37
+ " }\n",
38
+ " else {\n",
39
+ " document.documentElement.classList.remove('dark');\n",
40
+ " }\n",
41
+ "</script>\n"
42
+ ],
43
+ "text/plain": [
44
+ "<IPython.core.display.HTML object>"
45
+ ]
46
+ },
47
+ "metadata": {},
48
+ "output_type": "display_data"
49
+ }
50
+ ],
51
+ "source": [
52
+ "from IPython.core.magic import register_cell_magic\n",
53
+ "from IPython.display import Markdown\n",
54
+ "import datetime\n",
55
+ "from datetime import date\n",
56
+ "import glob\n",
57
+ "import json\n",
58
+ "import logging\n",
59
+ "import matplotlib.pyplot as plt\n",
60
+ "import numpy as np\n",
61
+ "import pandas as pd\n",
62
+ "import plotly\n",
63
+ "import warnings\n",
64
+ "import calplot\n",
65
+ "from itables import init_notebook_mode, show\n",
66
+ "import itables.options as opt\n",
67
+ "\n",
68
+ "\n",
69
+ "opt.dom = \"tpir\" \n",
70
+ "opt.style = \"table-layout:auto;width:auto\"\n",
71
+ "init_notebook_mode(all_interactive=True, connected=True)\n",
72
+ "\n",
73
+ "@register_cell_magic\n",
74
+ "def markdown(line, cell):\n",
75
+ " return Markdown(cell.format(**globals()))\n",
76
+ "\n",
77
+ "\n",
78
+ "logging.getLogger('matplotlib.font_manager').disabled = True\n",
79
+ "warnings.filterwarnings(\"ignore\")\n",
80
+ "pd.set_option('display.width', 500)\n",
81
+ "pd.set_option('display.max_rows', 50)\n",
82
+ "pd.set_option('display.max_columns', 10)"
83
+ ]
84
+ },
85
+ {
86
+ "cell_type": "code",
87
+ "execution_count": 2,
88
+ "id": "98bafc2f-2e20-4032-a091-ec2dc0ecb7a5",
89
+ "metadata": {
90
+ "execution": {
91
+ "iopub.execute_input": "2024-06-16T12:27:51.842041Z",
92
+ "iopub.status.busy": "2024-06-16T12:27:51.841803Z",
93
+ "iopub.status.idle": "2024-06-16T12:28:36.145770Z",
94
+ "shell.execute_reply": "2024-06-16T12:28:36.145212Z"
95
+ },
96
+ "tags": [
97
+ "remove-cell"
98
+ ]
99
+ },
100
+ "outputs": [],
101
+ "source": [
102
+ "\n",
103
+ "row_accumulator = []\n",
104
+ "for filename in glob.glob('nvdcve-1.1-*.json'):\n",
105
+ " with open(filename, 'r', encoding='utf-8') as f:\n",
106
+ " nvd_data = json.load(f)\n",
107
+ " for entry in nvd_data['CVE_Items']:\n",
108
+ " cve = entry['cve']['CVE_data_meta']['ID']\n",
109
+ " try:\n",
110
+ " assigner = entry['cve']['CVE_data_meta']['ASSIGNER']\n",
111
+ " except KeyError:\n",
112
+ " assigner = 'Missing_Data'\n",
113
+ " try:\n",
114
+ " published_date = entry['publishedDate']\n",
115
+ " except KeyError:\n",
116
+ " published_date = 'Missing_Data'\n",
117
+ " try:\n",
118
+ " attack_vector = entry['impact']['baseMetricV3']['cvssV3']['attackVector']\n",
119
+ " except KeyError:\n",
120
+ " attack_vector = 'Missing_Data'\n",
121
+ " try:\n",
122
+ " attack_complexity = entry['impact']['baseMetricV3']['cvssV3']['attackComplexity']\n",
123
+ " except KeyError:\n",
124
+ " attack_complexity = 'Missing_Data'\n",
125
+ " try:\n",
126
+ " privileges_required = entry['impact']['baseMetricV3']['cvssV3']['privilegesRequired']\n",
127
+ " except KeyError:\n",
128
+ " privileges_required = 'Missing_Data'\n",
129
+ " try:\n",
130
+ " user_interaction = entry['impact']['baseMetricV3']['cvssV3']['userInteraction']\n",
131
+ " except KeyError:\n",
132
+ " user_interaction = 'Missing_Data'\n",
133
+ " try:\n",
134
+ " scope = entry['impact']['baseMetricV3']['cvssV3']['scope']\n",
135
+ " except KeyError:\n",
136
+ " scope = 'Missing_Data'\n",
137
+ " try:\n",
138
+ " confidentiality_impact = entry['impact']['baseMetricV3']['cvssV3']['confidentialityImpact']\n",
139
+ " except KeyError:\n",
140
+ " confidentiality_impact = 'Missing_Data'\n",
141
+ " try:\n",
142
+ " integrity_impact = entry['impact']['baseMetricV3']['cvssV3']['integrityImpact']\n",
143
+ " except KeyError:\n",
144
+ " integrity_impact = 'Missing_Data'\n",
145
+ " try:\n",
146
+ " availability_impact = entry['impact']['baseMetricV3']['cvssV3']['availabilityImpact']\n",
147
+ " except KeyError:\n",
148
+ " availability_impact = 'Missing_Data'\n",
149
+ " try:\n",
150
+ " base_score = entry['impact']['baseMetricV3']['cvssV3']['baseScore']\n",
151
+ " except KeyError:\n",
152
+ " base_score = '0.0'\n",
153
+ " try:\n",
154
+ " base_severity = entry['impact']['baseMetricV3']['cvssV3']['baseSeverity']\n",
155
+ " except KeyError:\n",
156
+ " base_severity = 'Missing_Data'\n",
157
+ " try:\n",
158
+ " exploitability_score = entry['impact']['baseMetricV3']['exploitabilityScore']\n",
159
+ " except KeyError:\n",
160
+ " exploitability_score = 'Missing_Data'\n",
161
+ " try:\n",
162
+ " impact_score = entry['impact']['baseMetricV3']['impactScore']\n",
163
+ " except KeyError:\n",
164
+ " impact_score = 'Missing_Data'\n",
165
+ " try:\n",
166
+ " cwe = entry['cve']['problemtype']['problemtype_data'][0]['description'][0]['value']\n",
167
+ " except IndexError:\n",
168
+ " cwe = 'Missing_Data'\n",
169
+ " try:\n",
170
+ " description = entry['cve']['description']['description_data'][0]['value']\n",
171
+ " except IndexError:\n",
172
+ " description = ''\n",
173
+ " new_row = { \n",
174
+ " 'CVE': cve, \n",
175
+ " 'Published': published_date,\n",
176
+ " 'AttackVector': attack_vector,\n",
177
+ " 'AttackComplexity': attack_complexity,\n",
178
+ " 'PrivilegesRequired': privileges_required,\n",
179
+ " 'UserInteraction': user_interaction,\n",
180
+ " 'Scope': scope,\n",
181
+ " 'ConfidentialityImpact': confidentiality_impact,\n",
182
+ " 'IntegrityImpact': integrity_impact,\n",
183
+ " 'AvailabilityImpact': availability_impact,\n",
184
+ " 'BaseScore': base_score,\n",
185
+ " 'BaseSeverity': base_severity,\n",
186
+ " 'ExploitabilityScore': exploitability_score,\n",
187
+ " 'ImpactScore': impact_score,\n",
188
+ " 'CWE': cwe,\n",
189
+ " 'Description': description,\n",
190
+ " 'Assigner' : assigner\n",
191
+ " }\n",
192
+ " if not description.startswith('** REJECT **'): # disputed, rejected and other non issues start with '**'\n",
193
+ " row_accumulator.append(new_row)\n",
194
+ " nvd = pd.DataFrame(row_accumulator)\n",
195
+ " \n",
196
+ "nvd['Published'] = pd.to_datetime(nvd['Published'])\n",
197
+ "thisyear = ((nvd['Published'] > '2000-01-01') & (nvd['Published'] < '2024-01-01'))\n",
198
+ "nvd = nvd.loc[thisyear]\n",
199
+ "nvd = nvd.sort_values(by=['Published'])\n",
200
+ "nvd = nvd.reset_index(drop=True)\n",
201
+ "nvd['BaseScore'] = pd.to_numeric(nvd['BaseScore']);\n",
202
+ "nvd['BaseScore'] = pd.to_numeric(nvd['BaseScore']);\n",
203
+ "nvd['BaseScore'] = nvd['BaseScore'].replace(0, np.NaN);\n",
204
+ "nvdcount = nvd['Published'].count()\n",
205
+ "nvdunique = nvd['Published'].nunique()\n",
206
+ "startdate = date(2000, 1, 1)\n",
207
+ "enddate = date.today()\n",
208
+ "numberofdays = enddate - startdate \n",
209
+ "per_day = nvdcount/numberofdays.days"
210
+ ]
211
+ },
212
+ {
213
+ "cell_type": "markdown",
214
+ "id": "aa3ea191",
215
+ "metadata": {
216
+ "tags": [
217
+ "hide-input"
218
+ ]
219
+ },
220
+ "source": [
221
+ "\n",
222
+ "\n",
223
+ "## CWE Data"
224
+ ]
225
+ },
226
+ {
227
+ "cell_type": "code",
228
+ "execution_count": 3,
229
+ "id": "6815f0a1",
230
+ "metadata": {
231
+ "execution": {
232
+ "iopub.execute_input": "2024-06-16T12:28:36.148422Z",
233
+ "iopub.status.busy": "2024-06-16T12:28:36.148049Z",
234
+ "iopub.status.idle": "2024-06-16T12:28:36.415086Z",
235
+ "shell.execute_reply": "2024-06-16T12:28:36.414571Z"
236
+ },
237
+ "tags": [
238
+ "remove-input"
239
+ ]
240
+ },
241
+ "outputs": [
242
+ {
243
+ "data": {
244
+ "image/png": "iVBORw0KGgoAAAANSUhEUgAAA6wAAANXCAYAAAAxbtKeAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy80BEi2AAAACXBIWXMAAA9hAAAPYQGoP6dpAADKgklEQVR4nOzdeVxWdd7/8fdlKBgIlxgu4CWrSG5puIXFxVW4Z5tZVtOiWc5IVoZOajlDlqKZLeMgTt1Oi2V5N5U5LZjidTUuiBrxyya1tAhT0RmRRYxNz+8PH1x3RxZBSa/q9Xw8vo+HfM/3nPM5J7zvefs953sshmEYAgAAAADAw7S40AUAAAAAAFAXAisAAAAAwCMRWAEAAAAAHonACgAAAADwSARWAAAAAIBHIrACAAAAADwSgRUAAAAA4JEIrAAAAAAAj0RgBQAAAAB4JAIrAAD41UhISFBCQsKFLgNnyWKxKCUl5UKXAcCDEFgBAI32yiuvyGKxyGKxaOPGjbW2G4Yhm80mi8Wia6+99mep4cCBA0pJSVFubm6T9tu7d68mTZqkiIgI+fj4yN/fX4MHD9YLL7ygH3/88Wep9dekMfeve/fuuuyyy2rt+95778lischut9fa9ve//10Wi0WffPKJJPPvWF1ty5YtP++F1uNM15+TkyOLxaLHH3+83mN88803slgseuSRRyRJKSkpDV5rQUFBgzWFhYWZxvv6+mrAgAF67bXXmvXaAeBC8rrQBQAAfnl8fHy0YsUKXXnllab+Tz/9VD/88IO8vb1/tnMfOHBATzzxhMLCwtSnT59G7fPhhx9q7Nix8vb21l133aWePXuqsrJSGzdu1PTp0/Xvf/9bL7744s9W8y9dY+/flVdeqWXLlqm4uFgBAQHu/Tdt2iQvLy9t27ZNVVVVatmypWnbRRddpCuuuMJ0zjlz5ig8PLxWLVFRUQ3WWhN8m1Njrz8mJkZvvvmmnnrqqTqPs2LFCknS7373O1N/enq6/Pz8ao23Wq1nrK1Pnz5KTk6WJB08eFD/8z//o7vvvlsVFRW67777mnilAOB5CKwAgCYbOXKk3n77bf3lL3+Rl9f//b+SFStWKDY2Vv/9738vYHVm3333ncaNG6fQ0FCtX79enTp1cm9LSkrSnj179OGHH17ACj1bU+7flVdeqZdeekmbN2/WiBEj3OM2bdqkW265RStWrNBnn32mQYMGubdt3LhRvXv3Vps2bUznHTFihPr169fkelu1atXkfRrSlOu/4447NHv2bG3ZssV0jTXefPNNxcTE6PLLLzf133zzzbrkkkvOqr6QkBBTAL7nnnsUERGh5557ziMDa1lZmXx9fS90GQB+QXgkGADQZLfddpuOHDmitWvXuvsqKyv1j3/8Q7fffnud+5SVlSk5OVk2m03e3t7q1q2bnnnmGRmGYRq3du1aXXnllbJarfLz81O3bt00a9YsSZLL5VL//v0lSePHj3c/CvnKK6/UW+vTTz+tY8eOadmyZaawUSMqKkoPPfSQ++fq6mo9+eSTioyMlLe3t8LCwjRr1ixVVFSY9gsLC9O1114rl8ulfv36qXXr1urVq5dcLpck6d1331WvXr3k4+Oj2NhYff7556b977nnHvn5+Sk/P1/XXnut/Pz8FBISorS0NEnSjh07dPXVV8vX11ehoaHu2bmf+vbbbzV27FgFBgbq4osv1qBBg2qFb5fLJYvFov/93//V3Llz1blzZ/n4+Oiaa67Rnj176r1vZ3P/ambcN23a5N5eXl6unJwc3XTTTYqIiDBt+89//qOvv/661kz9uTj9Hdbzef133HGHJNX53+qzzz7T7t273WN+LkFBQYqJidHevXtN/SdPntTzzz+vHj16yMfHRx06dNCkSZN09OjRWsf4+OOPZbfb1aZNG/n7+6t///61runtt99WbGysWrdurUsuuUS/+93vtH//ftOYmt/xvXv3auTIkWrTpo37+isqKjR16lQFBQWpTZs2uu666/TDDz/UqqW0tFQPP/ywwsLC5O3trfbt22vIkCHKyck511sF4BeCwAoAaLKwsDBdccUVevPNN919H3/8sYqLizVu3Lha4w3D0HXXXafnnntOw4cP17PPPqtu3bpp+vTp7vf5JOnf//63rr32WlVUVGjOnDlatGiRrrvuOnfIufTSSzVnzhxJ0v3336/ly5dr+fLlio+Pr7fWf/7zn4qIiFBcXFyjrm3ixIn605/+pMsvv1zPPfec7Ha7UlNT67yuPXv26Pbbb9fo0aOVmpqqo0ePavTo0XrjjTc0depU/e53v9MTTzyhvXv36pZbbtHJkydN+584cUIjRoyQzWbT008/rbCwMD3wwAN65ZVXNHz4cPXr108LFixQmzZtdNddd+m7775z73vo0CHFxcVpzZo1mjx5subOnavy8nJdd911eu+992rVOn/+fL333nuaNm2aZs6cqS1btjQqPDXl/kVERCg4ONj0fvO2bdtUWVmpuLg4xcXFmQLr5s2bJanOwFpcXKz//ve/pnbkyJEz1lCf83H94eHhiouL0//+7//qxIkTpm01ga+uf9ApLCysda1FRUWNu7DTVFdX64cfflDbtm1N/ZMmTdL06dPd792OHz9eb7zxhoYNG6aqqir3uFdeeUWjRo1SYWGhZs6cqfnz56tPnz7KyMgwjbnlllt00UUXKTU1Vffdd5/effddXXnllbXqrq6u1rBhw9S+fXs988wzGjNmjKRTf8+ef/55DR06VPPnz1fLli01atSoWtfz+9//Xunp6RozZoyWLFmiadOmqXXr1tq5c+dZ3R8Av0AGAACN9PLLLxuSjG3bthl//etfjTZt2hjHjx83DMMwxo4dazgcDsMwDCM0NNQYNWqUe79Vq1YZkoynnnrKdLybb77ZsFgsxp49ewzDMIznnnvOkGT85z//qbeGbdu2GZKMl19++Yz1FhcXG5KM66+/vlHXl5uba0gyJk6caOqfNm2aIclYv369uy80NNSQZGzevNndt2bNGkOS0bp1a+P777939//tb38zJBlOp9Pdd/fddxuSjHnz5rn7jh49arRu3dqwWCzGW2+95e7ftWuXIcn485//7O57+OGHDUnGhg0b3H2lpaVGeHi4ERYWZpw4ccIwDMNwOp2GJOPSSy81Kioq3GNfeOEFQ5KxY8eOeu9HU++fYZz6PWjdurVRWVlpGIZhpKamGuHh4YZhGMaSJUuM9u3bu8fW3Nf9+/e7+2p+x+pq3t7eZzy/3W437Ha7++fzff1paWmGJGPNmjXuvhMnThghISHGFVdcYRr75z//ud5r7dat2xnPFRoaagwdOtT4z3/+Y/znP/8xduzYYdx5552GJCMpKck9bsOGDYYk44033jDtn5GRYeovKioy2rRpYwwcOND48ccfTWNPnjxpGIZhVFZWGu3btzd69uxpGvPBBx8Ykow//elP7r6a3/EZM2aYjlXz92zy5Mmm/ttvv73W73lAQIDpWgD89jDDCgA4K7fccot+/PFHffDBByotLdUHH3xQ7+PAH330kS666CI9+OCDpv7k5GQZhqGPP/5Y0v8tMvP+++/Xmo08GyUlJZJU6/3I+nz00UeSZJr1ralTUq3Hbbt3725aLGjgwIGSpKuvvlpdunSp1f/tt9/WOufEiRPdf7ZarerWrZt8fX11yy23uPu7desmq9Vq2v+jjz7SgAEDTLOTfn5+uv/++5WXl6evvvrKdJ7x48eb3u+86qqr6q2pRlPvn3RqtvTHH3/UZ599JunU48E1s5ODBw/W4cOH9c0337i3hYeHKzg4uNZx0tLStHbtWlOr+T05G+fr+m+99Va1bNnS9Ajtp59+qv3799c7o/vOO+/UutaXX365Uef75JNPFBQUpKCgIPXq1UvLly/X+PHjtXDhQveYt99+WwEBARoyZIhpFjc2NlZ+fn5yOp2STj2OX1paqhkzZsjHx8d0HovFIknavn27Dh8+rMmTJ5vGjBo1SjExMXW+D/6HP/zB9HPN37PT/+/Bww8/XGtfq9Wq7OxsHThwoFH3A8CvD4suAQDOSlBQkBITE7VixQodP35cJ06c0M0331zn2O+//17BwcG1/of/pZde6t4unfof+//zP/+jiRMnasaMGbrmmmt000036eabb1aLFk3/N1Z/f39Jp96Da4zvv/9eLVq0qLUSbceOHWW1Wt111vhpKJXkXhnXZrPV2X/6+4I+Pj4KCgqqNbZz587ugPDT/p/u//3337uD8E/99J727Nmz3lprHhmt6x3GGk29f5L5PdaBAwdq8+bN7lVze/bsKX9/f23atEk2m02fffaZbr311jqPM2DAgLNadKk+5+v627Vrp2HDhum9997T0qVL3Stqe3l5mf4R4qfi4+PPetGlgQMH6qmnntKJEyf05Zdf6qmnntLRo0dN4fybb75RcXGx2rdvX+cxDh8+LEnu915/+ntzupq/A926dau1LSYmptbnrry8vNS5c+dax2jRooUiIyNN/XUd8+mnn9bdd98tm82m2NhYjRw5UnfddZciIiLqrRHArwuBFQBw1m6//Xbdd999Kigo0IgRIxr1GY6GtG7dWv/617/kdDr14YcfKiMjQytXrtTVV1+tTz75RBdddFGTjufv76/g4GB9+eWXTdrv9LBYn/rqqa/fOG2BqXPdvynO5phnc/8uu+wytWnTRhs3btTIkSNVWFjonmFt0aKFBg4cqI0bNyoyMlKVlZXNuuBSQ87X9UunPlvzwQcf6IMPPtB1112nd955R0OHDq31jxPN4ZJLLlFiYqIkadiwYYqJidG1116rF154wf2kwMmTJ9W+fXu98cYbdR7j56irhre391n9Y1ONW265RVdddZXee+89ffLJJ1q4cKEWLFigd99917QSNYBfLx4JBgCctRtvvFEtWrTQli1b6n0cWJJCQ0N14MCBWjNVu3btcm+v0aJFC11zzTV69tln9dVXX2nu3Llav369+7HFxobJGtdee6327t2rrKysM44NDQ3VyZMn3Y+s1jh06JCKiopMdV5ooaGh2r17d63+uu7puWjK/ZNOBcNBgwZp06ZN2rhxo/z9/dWrVy/39pqFl2oWXzpfgfVsNfX6Jem6665TmzZttGLFCn388cc6evToz746cI1Ro0bJbrdr3rx5KisrkyRFRkbqyJEjGjx4sBITE2u1yy67zD1OUoMBveb3qq7fvd27dzfq967m79npKxnXdUxJ6tSpkyZPnqxVq1bpu+++U7t27TR37twzngfArwOBFQBw1vz8/JSenq6UlBSNHj263nEjR47UiRMn9Ne//tXU/9xzz8lisbhnSgoLC2vt26dPH0lyf1am5huOjV1F9Y9//KN8fX01ceJEHTp0qNb2vXv36oUXXnDXKUnPP/+8acyzzz4rSXWuYnqhjBw5Ulu3bjUFqbKyMr344osKCwtT9+7dm+U8Tbl/Na688kr95z//0csvv6yBAweaZtji4uK0e/duvf/++2rXrp37EWZPdTbX37p1a91444366KOPlJ6eLl9fX11//fXnq2Q9+uijOnLkiF566SVJp2YpT5w4oSeffLLW2OrqavffpaFDh6pNmzZKTU1VeXm5aVzNTHS/fv3Uvn17LV261PSpp48//lg7d+5s1N+Rmr/vf/nLX0z9p/+9O3HihIqLi0197du3V3BwcK3PTAH49eKRYADAObn77rvPOGb06NFyOBx67LHHlJeXp8suu0yffPKJ3n//fT388MPumZ05c+boX//6l0aNGqXQ0FAdPnxYS5YsUefOnd0zcZGRkbJarVq6dKnatGkjX19fDRw4UOHh4XWeOzIyUitWrNCtt96qSy+9VHfddZd69uypyspKbd68WW+//bbuueceSaceZ7377rv14osvqqioSHa7XVu3btWrr76qG264QQ6Ho3luWjOYMWOG3nzzTY0YMUIPPvigAgMD9eqrr+q7777TO++8c06PYf5UU+5fjZr/VllZWUpJ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7XaVlJTUuboaGxsrf39/p7Zp06Y661m2bJkqKyt15513Ou3z2muvmWOeeuopTZ48WRMmTFDfvn1VWlqqpKQkp/tc33//fUVGRuqmm27SzTffrCFDhujPf/7zL/uSAAAAAKABeA8rmgTvYcXlivewAgAAXBzewwoAAAAA+M0jsAIAAAAAXBKBFQAAAADgkgisAAAAAACX1Kq5C8CVpejAjAveWA0AAAAAEiusAAAAAAAXRWAFAAAAALgkAisAAAAAwCURWAEAAAAALonACgAAAABwSTwlGE3Kq8cCqYVbc5cBoBEZebOauwQAAHCZYoUVAAAAAOCSCKwAAAAAAJdEYAUAAAAAuCQCKwAAAADAJRFYAQAAAAAuicAKAAAAAHBJBNZmUlBQoMmTJys0NFRWq1U2m00jRoxQcnKyRo8erfj4eKfxSUlJslgsmj17tlP/7Nmz1bVrV0lSbm6uLBZLrW3nzp111rJ8+XLdeOON6tChgzp06KDY2Fjt2rXLaYxhGHr++efl7++vtm3bKjY2VtnZ2Y3zZQAAAABALQiszSA3N1d9+vTRp59+qoULF+rrr79WUlKSHA6HJk2aJIfDobS0NFVXV5v7pKSkyGazKTU11WmulJQUORwOp75t27YpPz/fqfXp06fOelJTUzVmzBilpKQoPT1dNptNw4YN09GjR80xr776qhYvXqy33npLGRkZateuneLi4lReXt44XwoAAAAA/IzFMAyjuYu40tx888366quvdOjQIbVr185p26lTp3T8+HF1795d6enpGjBggCSpf//+uv/++zV16lSdPHlSbm5uKi8vl7e3t9566y2NGzdOubm5CgkJ0b59+3Tttdf+4vrOnj2rDh066M0339R9990nwzAUEBCgqVOnatq0aZKkoqIide7cWatWrdLo0aMvOGdxcbG8vLykwGekFm6/uDYArsfIm9XcJQAAgN+Q89mgqKhInp6e9Y5lhbWJFRYWKikpSZMmTaoRViXJ29tbERERCggIUEpKiiSppKREe/fu1ahRoxQcHKz09HRJ0hdffKGKiooaK6yX6vTp06qqqpKPj48k6fvvv1dBQYFiY2PNMV5eXurfv79Zy89VVFSouLjYqQEAAADAxSCwNrGcnBwZhqHIyMh6xzkcDvPy388//1wRERHy9fVVdHS02Z+amqqQkBAFBQU57Tto0CB5eHg4tYsxY8YMBQQEmAG1oKBAktS5c2encZ07dza3/dy8efPk5eVlNpvNdlE1AAAAAACBtYk19ArsmJgYpaWlqaqqSqmpqYqJiZEk2e12p8Ba2+rq2rVrlZmZ6dQkKS8vzynEzp07t8a+8+fP15o1a7Rx40a5uf3yS3dnzpypoqIisx05cuQXzwUAAADgytSquQu40oSHh8tisejgwYP1jnM4HCorK9Pu3buVkpKi6dOnSzoXWBMSElRYWKiMjAw9/PDDNfa12WwKCwur0R8QEGCGV0nmJb/nvfbaa5o/f762bdumXr16mf1+fn6SpGPHjsnf39/sP3bsWJ33ylqtVlmt1nqPEQAAAADqwwprE/Px8VFcXJwSExNVVlZWY/upU6ckSd26dZPNZtPmzZuVmZkpu90uSQoMDFRgYKAWLVqkysrKi7p/tVWrVgoLCzPbTwPrq6++qpdeeklJSUm64YYbnPYLCQmRn5+fkpOTzb7i4mJlZGRo4MCBF3P4AAAAANBgBNZmkJiYqLNnz6pfv35av369srOzlZWVpcWLFzsFQIfDoaVLlyosLMzp/lG73a4lS5aYD2f6uRMnTqigoMCp1ff6mQULFmjWrFlauXKlgoODzX1KS0slSRaLRU888YRefvllbd68WV9//bXuu+8+BQQEaOTIkY33xQAAAADATxBYm0FoaKj27t0rh8OhqVOn6pprrtHQoUOVnJysZcuWmeMcDodKSkrM+1fPs9vtKikpqXN1NTY2Vv7+/k5t06ZNddazbNkyVVZW6s4773Ta57XXXjPHPPXUU5o8ebImTJigvn37qrS0VElJSZd0nysAAAAA1If3sKJJ8B5W4PLFe1gBAMDF4D2sAAAAAIDfPAIrAAAAAMAlEVgBAAAAAC6JwAoAAAAAcEmtmrsAXFmKDsy44I3VAAAAACCxwgoAAAAAcFEEVgAAAACASyKwAgAAAABcEoEVAAAAAOCSCKwAAAAAAJfEU4LRpLx6LJBauDV3GQCamJE3q7lLAAAAv0GssAIAAAAAXBKBFQAAAADgkgisAAAAAACXRGAFAAAAALgkAisAAAAAwCURWAEAAAAALonA+isoKCjQ5MmTFRoaKqvVKpvNphEjRig5OVmjR49WfHy80/ikpCRZLBbNnj3bqX/27Nnq2rWrJCk3N1cWi6XWtnPnzjpriYmJqXWfW265xRxTWlqqRx99VF26dFHbtm3Vo0cPvfXWW+b2+j77gw8+aIRvDAAAAABq4j2sjSw3N1eDBw+Wt7e3Fi5cqKioKFVVVWnLli2aNGmSpkyZomnTpqm6ulqtWp37+lNSUmSz2ZSamuo0V0pKihwOh1Pftm3b1LNnT6e+jh071lnPhg0bVFlZaf584sQJ9e7dW6NGjTL7nnzySX366af629/+puDgYP3rX//SxIkTFRAQoFtvvVU2m035+flO8/75z3/WwoULNXz48Iv6fgAAAACgoQisjWzixImyWCzatWuX2rVrZ/b37NlTCQkJOn78uEpLS7Vnzx4NGDBAkpSamqqnn35aU6dOVXl5udzc3FReXq6MjAw98MADTvN37NhRfn5+Da7Hx8fH6ec1a9bI3d3dKbB+8cUXuv/++xUTEyNJmjBhgt5++23t2rVLt956q1q2bFnjMzdu3Ki77rpLHh4eDa4FAAAAAC4GlwQ3osLCQiUlJWnSpElOYfU8b29vRUREKCAgQCkpKZKkkpIS7d27V6NGjVJwcLDS09MlnQuRFRUVNVZYL9WKFSs0evRop/oGDRqkzZs36+jRozIMQykpKfr22281bNiwWuf48ssvlZmZqfHjx9f5ORUVFSouLnZqAAAAAHAxCKyNKCcnR4ZhKDIyst5xDofDvPz3888/V0REhHx9fRUdHW32p6amKiQkREFBQU77Dho0SB4eHk6toXbt2qX9+/frwQcfdOpfsmSJevTooS5duqhNmzaKj49XYmKioqOja51nxYoVuvrqqzVo0KA6P2vevHny8vIym81ma3CdAAAAACARWBuVYRgNGhcTE6O0tDRVVVUpNTXVvBTXbrc7BdbaVlfXrl2rzMxMpyZJeXl5TiF27ty5NfZdsWKFoqKi1K9fP6f+JUuWaOfOndq8ebO+/PJLLVq0SJMmTdK2bdtqzHHmzBn9/e9/r3d1VZJmzpypoqIisx05cqQB3wwAAAAA/D/cw9qIwsPDZbFYdPDgwXrHORwOlZWVaffu3UpJSdH06dMlnQusCQkJKiwsVEZGhh5++OEa+9psNoWFhdXoDwgIMMOrVPPe1bKyMq1Zs0Zz5sxx6j9z5oyeeeYZbdy40XxycK9evZSZmanXXntNsbGxTuM//PBDnT59Wvfdd1+9x2i1WmW1WusdAwAAAAD1YYW1Efn4+CguLk6JiYkqKyursf3UqVOSpG7duslms2nz5s3KzMyU3W6XJAUGBiowMFCLFi1SZWXlRd2/2qpVK4WFhZnt54H1gw8+UEVFhf7whz849VdVVamqqkotWjifCi1bttSPP/5Y43NWrFihW2+9Vb6+vg2uDQAAAAB+CVZYG1liYqIGDx6sfv36ac6cOerVq5eqq6u1detWLVu2TFlZWZLOrbIuXbpUYWFh6ty5s7m/3W7XkiVLzIcz/dyJEydUUFDg1Oft7S03N7d661qxYoVGjhxZ4xU4np6estvtmj59utq2baugoCB99tln+utf/6rXX3/daWxOTo62b9+uTz755KK+EwAAAAD4JVhhbWShoaHau3evHA6Hpk6dqmuuuUZDhw5VcnKyli1bZo5zOBwqKSkx7189z263q6SkpM7V1djYWPn7+zu1TZs21VvToUOHtGPHjjrvO12zZo369u2rsWPHqkePHpo/f75eeeUVPfLII07jVq5cqS5dutT59GAAAAAAaEwWo6FPCgIuQXFxsby8vKTAZ6QW9a8GA7j8GHmzmrsEAADgIs5ng6KiInl6etY7lhVWAAAAAIBLIrACAAAAAFwSgRUAAAAA4JIIrAAAAAAAl8RrbdCkig7MuOCN1QAAAAAgscIKAAAAAHBRBFYAAAAAgEsisAIAAAAAXBKBFQAAAADgkgisAAAAAACXxFOC0aS8eiyQWrg1dxkArmBG3qzmLgEAADQQK6wAAAAAAJdEYAUAAAAAuCQCKwAAAADAJRFYAQAAAAAuicAKAAAAAHBJBFYAAAAAgEsisDaDgoICTZ48WaGhobJarbLZbBoxYoSSk5M1evRoxcfHO41PSkqSxWLR7Nmznfpnz56trl27SpJyc3NlsVhqbTt37qy3njfeeEPdu3dX27ZtZbPZNGXKFJWXl5vbS0pK9MQTTygoKEht27bVoEGDtHv37sb5MgAAAACgDryHtYnl5uZq8ODB8vb21sKFCxUVFaWqqipt2bJFkyZN0pQpUzRt2jRVV1erVatzfzwpKSmy2WxKTU11mislJUUOh8Opb9u2berZs6dTX8eOHeus5+9//7uefvpprVy5UoMGDdK3336rcePGyWKx6PXXX5ckPfjgg9q/f7/ee+89BQQE6G9/+5tiY2N14MABBQYGNsK3AgAAAAA1EVib2MSJE2WxWLRr1y61a9fO7O/Zs6cSEhJ0/PhxlZaWas+ePRowYIAkKTU1VU8//bSmTp2q8vJyubm5qby8XBkZGXrggQec5u/YsaP8/PwaXM8XX3yhwYMH65577pEkBQcHa8yYMcrIyJAknTlzRuvXr9dHH32k6OhoSedWdv/v//2/WrZsmV5++eVL+j4AAAAAoC5cEtyECgsLlZSUpEmTJjmF1fO8vb0VERGhgIAApaSkSDp3Oe7evXs1atQoBQcHKz09XdK5oFlRUVFjhfViDRo0SF9++aV27dolSfruu+/0ySef6Oabb5YkVVdX6+zZs3Jzc3Par23bttqxY0ed81ZUVKi4uNipAQAAAMDFILA2oZycHBmGocjIyHrHORwO8/Lfzz//XBEREfL19VV0dLTZn5qaqpCQEAUFBTntO2jQIHl4eDi1+txzzz2aM2eOhgwZotatW6tbt26KiYnRM888I0lq3769Bg4cqJdeekn/+7//q7Nnz+pvf/ub0tPTlZ+fX+e88+bNk5eXl9lsNtsFvh0AAAAAcEZgbUKGYTRoXExMjNLS0lRVVaXU1FTFxMRIkux2u1NgrW11de3atcrMzHRqkpSXl+cUYufOnWvOM3fuXC1dulR79+7Vhg0b9I9//EMvvfSSOed7770nwzAUGBgoq9WqxYsXa8yYMWrRou7TZ+bMmSoqKjLbkSNHGnTsAAAAAHAe97A2ofDwcFksFh08eLDecQ6HQ2VlZdq9e7dSUlI0ffp0SecCa0JCggoLC5WRkaGHH364xr42m01hYWE1+gMCAszwKkk+Pj6SpFmzZunee+/Vgw8+KEmKiopSWVmZJkyYoGeffVYtWrRQt27d9Nlnn6msrEzFxcXy9/fX3XffrdDQ0DqPwWq1ymq1XvA7AQAAAIC6sMLahHx8fBQXF6fExESVlZXV2H7q1ClJUrdu3WSz2bR582ZlZmbKbrdLkgIDAxUYGKhFixapsrLyou5fbdWqlcLCwsx2PrCePn26xkppy5YtJdVcEW7Xrp38/f118uRJbdmyRbfddluDPx8AAAAALhYrrE0sMTFRgwcPVr9+/TRnzhz16tVL1dXV2rp1q5YtW6asrCxJ51ZZly5dqrCwMHXu3Nnc3263a8mSJebDmX7uxIkTKigocOrz9vau8dCk80aMGKHXX39d1113nfr376+cnBzNmjVLI0aMMIPrli1bZBiGunfvrpycHE2fPl2RkZE1nlAMAAAAAI2JwNrEQkNDtXfvXr3yyiuaOnWq8vPz5evrqz59+mjZsmXmOIfDob/+9a/m/avn2e12vfPOO+ZraH4uNja2Rt/q1as1evToWsc/99xzslgseu6553T06FH5+vpqxIgReuWVV8wxRUVFmjlzpn744Qf5+Pjo97//vV555RW1bt36F3wDAAAAANAwFqOhTwICLkFxcbG8vLykwGekFrWv9gJAUzDyZjV3CQAAXNHOZ4OioiJ5enrWO5Z7WAEAAAAALonACgAAAABwSQRWAAAAAIBLIrACAAAAAFwSgRUAAAAA4JJ4rQ2aVNGBGRd8EhgAAAAASKywAgAAAABcFIEVAAAAAOCSCKwAAAAAAJdEYAUAAAAAuCQeuoQm5dVjgdTCrbnLAIBGY+TNau4SAAC4bLHCCgAAAABwSQRWAAAAAIBLIrACAAAAAFwSgRUAAAAA4JIIrAAAAAAAl0RgBQAAAAC4JAIrAAAAAMAlEVh/BQUFBZo8ebJCQ0NltVpls9k0YsQIJScna/To0YqPj3can5SUJIvFotmzZzv1z549W127dpUk5ebmymKx1Np27txZZy3ffPONfv/73ys4OFgWi0VvvPFGjTHbt2/XiBEjFBAQIIvFok2bNtUYc+zYMY0bN04BAQFyd3dXfHy8srOzL/q7AQAAAICGIrA2stzcXPXp00effvqpFi5cqK+//lpJSUlyOByaNGmSHA6H0tLSVF1dbe6TkpIim82m1NRUp7lSUlLkcDic+rZt26b8/Hyn1qdPnzrrOX36tEJDQzV//nz5+fnVOqasrEy9e/dWYmJirdsNw9DIkSP13Xff6aOPPtK+ffsUFBSk2NhYlZWVNfCbAQAAAICL06q5C7jcTJw4URaLRbt27VK7du3M/p49eyohIUHHjx9XaWmp9uzZowEDBkiSUlNT9fTTT2vq1KkqLy+Xm5ubysvLlZGRoQceeMBp/o4dO9YZPGvTt29f9e3bV5L09NNP1zpm+PDhGj58eJ1zZGdna+fOndq/f7969uwpSVq2bJn8/Py0evVqPfjggw2uBwAAAAAaihXWRlRYWKikpCRNmjTJKaye5+3trYiICAUEBCglJUWSVFJSor1792rUqFEKDg5Wenq6JOmLL75QRUVFjRXW5lBRUSFJcnNzM/tatGghq9WqHTt21LlPcXGxUwMAAACAi0FgbUQ5OTkyDEORkZH1jnM4HOblv59//rkiIiLk6+ur6Ohosz81NVUhISEKCgpy2nfQoEHy8PBwar+2yMhIde3aVTNnztTJkydVWVmpBQsW6IcfflB+fn6t+8ybN09eXl5ms9lsv3qdAAAAAC4vBNZGZBhGg8bFxMQoLS1NVVVVSk1NVUxMjCTJbrc7BdbaVlfXrl2rzMxMpyZJeXl5TiF27ty5jXFIkqTWrVtrw4YN+vbbb+Xj4yN3d3elpKRo+PDhatGi9lNo5syZKioqMtuRI0carR4AAAAAVwbuYW1E4eHhslgsOnjwYL3jHA6HysrKtHv3bqWkpGj69OmSzgXWhIQEFRYWKiMjQw8//HCNfW02m8LCwmr0BwQEmOFVknx8fC7tYH6mT58+yszMVFFRkSorK+Xr66v+/fvrhhtuqHW81WqV1Wpt1BoAAAAAXFlYYW1EPj4+iouLU2JiYq1Pzz116pQkqVu3brLZbNq8ebMyMzNlt9slSYGBgQoMDNSiRYtUWVl5UfevtmrVSmFhYWZr7MB6npeXl3x9fZWdna09e/botttu+1U+BwAAAABYYW1kiYmJGjx4sPr166c5c+aoV69eqq6u1tatW7Vs2TJlZWVJOrfKunTpUoWFhalz587m/na7XUuWLDEfzvRzJ06cUEFBgVOft7e30wORfqqyslIHDhww//vo0aPKzMyUh4eHuVJbWlqqnJwcc5/vv/9emZmZ8vHxMd8D+8EHH8jX11ddu3bV119/rccff1wjR47UsGHDLuHbAgAAAIC6scLayEJDQ7V37145HA5NnTpV11xzjYYOHark5GQtW7bMHOdwOFRSUmLev3qe3W5XSUlJnaursbGx8vf3d2qbNm2qs57//d//1XXXXafrrrtO+fn5eu2113Tdddc5vYpmz5495hhJevLJJ3Xdddfp+eefN8fk5+fr3nvvVWRkpB577DHde++9Wr169S/4hgAAAACgYSxGQ58UBFyC4uJieXl5SYHPSC1qXw0GgN8iI29Wc5cAAMBvyvlsUFRUJE9Pz3rHssIKAAAAAHBJBFYAAAAAgEsisAIAAAAAXBKBFQAAAADgknitDZpU0YEZF7yxGgAAAAAkVlgBAAAAAC6KwAoAAAAAcEkEVgAAAACASyKwAgAAAABcEg9dQpPy6rFAauHW3GUAAC5jRt6s5i4BANBIWGEFAAAAALgkAisAAAAAwCURWAEAAAAALonACgAAAABwSQRWAAAAAIBLIrACAAAAAFwSgfX/LyYmRk888cQlzzNu3DiNHDnykucBAAAAgCvdZR1Yx40bJ4vFokceeaTGtkmTJslisWjcuHGSpA0bNuill1665M/805/+pFWrVl3yPBfDYrGYrV27dgoPD9e4ceP05ZdfXvRcjRXcAQAAAOBSXdaBVZJsNpvWrFmjM2fOmH3l5eX6+9//rq5du5p9Pj4+at++/SV/npeXl7y9vS95nov1zjvvKD8/X998840SExNVWlqq/v37669//WuT1wIAAAAAjeGyD6zXX3+9bDabNmzYYPZt2LBBXbt21XXXXWf2/XxlcenSpQoPD5ebm5s6d+6sO++809z24YcfKioqSm3btlXHjh0VGxursrIySTUvCY6JidFjjz2mp556Sj4+PvLz89Ps2bOdajx48KCGDBkiNzc39ejRQ9u2bZPFYtGmTZsafJze3t7y8/NTcHCwhg0bpg8//FBjx47Vo48+qpMnT0qSTpw4oTFjxigwMFDu7u6KiorS6tWrzTnGjRunzz77TH/605/MFdvc3FydPXtW48ePV0hIiNq2bavu3bvrT3/6U4NrAwAAAIBf4rIPrJKUkJCgd955x/x55cqVeuCBB+ocv2fPHj322GOaM2eODh06pKSkJEVHR0uS8vPzNWbMGCUkJCgrK0upqam64447ZBhGnfO9++67ateunTIyMvTqq69qzpw52rp1qyTp7NmzGjlypNzd3ZWRkaE///nPevbZZxvluKdMmaKSkhLzs8rLy9WnTx/94x//0P79+zVhwgTde++92rVrl6RzlzMPHDhQDz30kPLz85Wfny+bzaYff/xRXbp00QcffKADBw7o+eef1zPPPKN169bV+dkVFRUqLi52agAAAABwMVo1dwFN4Q9/+INmzpyp//znP5KktLQ0rVmzRqmpqbWOz8vLU7t27fR//s//Ufv27RUUFGSuxubn56u6ulp33HGHgoKCJElRUVH1fn6vXr30wgsvSJLCw8P15ptvKjk5WUOHDtXWrVt1+PBhpaamys/PT5L0yiuvaOjQoZd83JGRkZKk3NxcSVJgYKCmTZtmbp88ebK2bNmidevWqV+/fvLy8lKbNm3k7u5u1iJJLVu21Isvvmj+HBISovT0dK1bt0533XVXrZ89b948p30AAAAA4GJdEYHV19dXt9xyi1atWiXDMHTLLbfoqquuqnP80KFDFRQUpNDQUMXHxys+Pl6333673N3d1bt3b910002KiopSXFychg0bpjvvvFMdOnSoc75evXo5/ezv76/jx49Lkg4dOiSbzeYUEPv163eJR3zO+VVfi8Ui6dxq7ty5c7Vu3TodPXpUlZWVqqiokLu7+wXnSkxM1MqVK5WXl6czZ86osrJS1157bZ3jZ86cqSeffNL8ubi4WDab7dIOCAAAAMAV5Yq4JFg6d1nwqlWr9O677yohIaHese3bt9fevXu1evVq+fv76/nnn1fv3r116tQptWzZUlu3btU///lP9ejRQ0uWLFH37t31/fff1zlf69atnX62WCz68ccfG+W46pOVlSXp3IqoJC1cuFB/+tOfNGPGDKWkpCgzM1NxcXGqrKysd541a9Zo2rRpGj9+vP71r38pMzNTDzzwQL37Wa1WeXp6OjUAAAAAuBhXTGCNj49XZWWlqqqqFBcXd8HxrVq1UmxsrF599VV99dVXys3N1aeffirpXOAcPHiwXnzxRe3bt09t2rTRxo0bf1Fd3bt315EjR3Ts2DGzb/fu3b9orp9744035OnpqdjYWEnnLoW+7bbb9Ic//EG9e/dWaGiovv32W6d92rRpo7Nnzzr1paWladCgQZo4caKuu+46hYWF6fDhw41SIwAAAADU5Yq4JFg6dx/m+RXHli1b1jv2448/1nfffafo6Gh16NBBn3zyiX788Ud1795dGRkZSk5O1rBhw9SpUydlZGTov//9r66++upfVNfQoUPVrVs33X///Xr11VdVUlKi5557TtL/u5S3IU6dOqWCggJVVFTo22+/1dtvv61Nmzbpr3/9q/manfDwcH344Yf64osv1KFDB73++us6duyYevToYc4THBysjIwM5ebmysPDQz4+PgoPD9df//pXbdmyRSEhIXrvvfe0e/duc+UWAAAAAH4NV8wKq6QGX5rq7e2tDRs26He/+52uvvpqvfXWW1q9erV69uwpT09Pbd++XTfffLMiIiL03HPPadGiRRo+fPgvqqlly5batGmTSktL1bdvXz344IPmU4Ld3NwaPM8DDzwgf39/RUZG6o9//KM8PDy0a9cu3XPPPeaY5557Ttdff73i4uIUExMjPz8/p1fw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mQsODtYbb7xxUfukpaUpKipKrVu31siRI3+VugAAAADgQpo1sI4bN04Wi0Xz58936t+0aZMsFovWr1+vli1b6ujRo7XuHx4erieffFKSFBMTI4vFIovFIqvVqsDAQI0YMUIbNmxocD3r169XTEyMvLy85OHhoV69emnOnDkqLCzUwYMHZbFYtHPnTqd9BgwYIDc3N5WXl5t95eXlcnNz04oVK5yO8+ctPj6+wbX9Urt379aECRMuap8nn3xS1157rb7//nutWrXq1ykMAAAAAC6g2VdY3dzctGDBAp08ebLGtltvvVUdO3bUu+++W2Pb9u3blZOTo/Hjx5t9Dz30kPLz83X48GGtX79ePXr00OjRoxsU2J599lndfffd6tu3r/75z39q//79WrRokf7973/rvffeU2RkpPz8/JSammruU1JSor1798rX19cpyKanp6uiokK/+93vzL74+Hjl5+c7tdWrVzf0a/rFfH195e7uflH7HD58WL/73e/UpUsXeXt7/zqFAQAAAMAFNHtgjY2NlZ+fn+bNm1djW+vWrXXvvffWusq3cuVK9e/fXz179jT73N3d5efnpy5dumjAgAFasGCB3n77bS1fvlzbtm2rs4Zdu3Zp7ty5WrRokRYuXKhBgwYpODhYQ4cO1fr163X//fdLkhwOh1Ng3bFjhyIiIjRixAin/tTUVAUFBSkkJMTss1qt8vPzc2odOnSos6bc3FxZLBZt2LBBDodD7u7u6t27t9LT053GrV+/Xj179pTValVwcLAWLVrktP3nlwRbLBb95S9/0e233y53d3eFh4dr8+bNTp954sQJJSQkyGKxmN/9Z599pn79+slqtcrf319PP/20qqur66wfAAAAAC5VswfWli1bau7cuVqyZIl++OGHGtvHjx+v7Oxsbd++3ewrLS3Vhx9+6LS6Wpf7779fHTp0qPfS4Pfff18eHh6aOHFirdvPrzI6HA7t2LHDDGopKSmKiYmR3W5XSkqKOT4lJUUOh+OCtTXEs88+q2nTpikzM1MREREaM2aM+flffvml7rrrLo0ePVpff/21Zs+erVmzZl3wMt4XX3xRd911l7766ivdfPPNGjt2rAoLC2Wz2ZSfny9PT0+98cYbys/P1913362jR4/q5ptvVt++ffXvf/9by5Yt04oVK/Tyyy/X+RkVFRUqLi52agAAAABwMZo9sErS7bffrmuvvVYvvPBCjW09evTQgAEDtHLlSrNv3bp1MgxDo0ePvuDcLVq0UEREhHJzc+sck52drdDQULVu3breuRwOh8rKyrR7925J51ZS7Xa7oqOjlZGRofLycp05c0a7du2qEVg//vhjeXh4OLW5c+desP5p06bplltuUUREhF588UX95z//UU5OjiTp9ddf10033aRZs2YpIiJC48aN06OPPqqFCxfWO+e4ceM0ZswYhYWFae7cuSotLdWuXbvUsmVL+fn5yWKxyMvLS35+fmrbtq2WLl0qm82mN998U5GRkRo5cqRefPFFLVq0SD/++GOtnzFv3jx5eXmZzWazXfBYAQAAAOCnXCKwStKCBQv07rvvKisrq8a2hIQEffjhhyopKZF07nLgUaNGqX379g2a2zAMWSwWSdLw4cPNwHj+cmLDMBo0T1hYmLp06aLU1FQVFxdr3759stvt8vf3V9euXZWenm7ev/rzwOpwOJSZmenUHnnkEUnSI4884hRkf6pXr17mf/v7+0uSjh8/LknKysrS4MGDncYPHjxY2dnZOnv2bJ3H8dM527VrJ09PT3PO2mRlZWngwIHmd3j+c0pLS2tdFZekmTNnqqioyGxHjhypc34AAAAAqE2r5i7gvOjoaMXFxWnmzJkaN26c07bRo0drypQpWrdunaKjo5WWllbrPa+1OXv2rLKzs9W3b19J0l/+8hedOXNGkswV1YiICO3YsUNVVVUXXGWNiYlRSkqKevXqpfDwcHXq1EmSzMuCDcNQWFhYjRXFdu3aKSwsrNY558yZo2nTptW67af1nA+Mda1qNtTPj9FisVzynD9ntVpltVobdU4AAAAAVxaXCaySNH/+fF177bXq3r27U3/79u01atQorVy5UocPH1ZERIRuvPHGBs357rvv6uTJk/r9738vSQoMDKwx5p577tHixYu1dOlSPf744zW2nzp1yuk+1scee0w9evRQTEyMOSY6OlrLly+XYRgXff9qp06dzOB7Ma6++mqlpaU59aWlpSkiIkItW7a86Pnq+5z169c7rVSnpaWpffv26tKlS6N9DgAAAAD8lEsF1qioKI0dO1aLFy+usW38+PG68cYblZWVpRkzZtS6/+nTp1VQUKDq6mr98MMP2rhxo/7nf/5Hf/zjH+sNkf3799dTTz2lqVOn6ujRo7r99tsV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tWtXpaenyzAMVVRU1AisDodDy5Ytc+rz8fGRJD3yyCP629/+ZvaXlpY61X4p3N3d1a1bN/Nnf39/HT9+XJJUVlamw4cPa/z48XrooYfMMdXV1fLy8nKa54Ybbqj3c6xWq6xW6yXVCgAAAODK5rKBNTo6WnFxcZo5c6bGjRvntG306NGaMmWK1q1bp+joaKWlpdV6z2ttzp49q+zsbPXt21fSufs1z5w5I0nmimpERIR27NihqqqqC66yxsTEKCUlRb169VJ4eLg6deokSeZlwYZhKCwsrMYlse3atVNYWFitc86ZM6dGUA8LC5PFYlFWVpZuv/32GvtkZWWpQ4cO8vX1rbfenx+PxWIxQ/D5YLx8+XL179/faVzLli1r1A8AAAAAvyaXDaySNH/+fF177bXq3r27U3/79u01atQorVy5UocPH1ZERIRuvPHGBs357rvv6uTJk/r9738vSQoMDKwx5p577tHixYu1dOlSPf744zW2nzp1yuk+1scee0w9evRQTEyMOSY6OlrLly+XYRgXff9qp06dzOB7XseOHTV06FAtXbpUU6ZMcbqPtaCgQO+//77uu+8+c+W4TZs2Onv27EV9bufOnRUQEKDvvvtOY8eOvah9AQAAAKCxuXRgjYqK0tixY7V48eIa28aPH68bb7xRWVlZmjFjRq37nz59WgUFBaqurtYPP/ygjRs36n/+53/0xz/+sd4Q2b9/fz311FOaOnWqjh49qttvv10BAQHma2SGDBliBtnz97GuXLlSy5cvN+ew2+168MEHJanWhzdVVFSooKDAqa9Vq1a66qqr6qzrzTff1KBBgxQXF6eXX35ZISEh+uabbzR9+nQFBgbqlVdeMccGBwdr+/btGj16tKxWa73z/tSLL76oxx57TF5eXoqPj1dFRYX27NmjkydPmu+4BQAAAICm4JIPXfqpOXPm6Mcff6zRP2TIEHXv3l3FxcW67777at13+fLl8vf3V7du3XTHHXfowIEDWrt2rdNrWuqyYMEC/f3vf1dGRobi4uLUs2dPPfnkk+rVq5f5WhtJCgkJUVBQkEpKSmS3283+rl27KiAgQJWVlU4rr+clJSXJ39/fqQ0ZMqTemsLDw7Vnzx6FhobqrrvuUrdu3TRhwgQ5HA6lp6eb98BK57633NxcdevW7YKXCf/Ugw8+qL/85S965513FBUVJbvdrlWrVjm9kgcAAAAAmoLFuNSn+AANUFxcfO7BTYHPSC3cmrscAAAA4Iph5M1q7hKcnM8GRUVF8vT0rHesy6+wAgAAAACuTARWAAAAAIBLIrACAAAAAFwSgRUAAAAA4JJc+rU2uPwUHZhxwRurAQAAAEBihRUAAAAA4KIIrAAAAAAAl0RgBQAAAAC4JAIrAAAAAMAlEVgBAAAAAC6JwAoAAAAAcEkEVgAAAACASyKwAgAAAABcEoEVAAAAAOCSCKwAAAAAAJdEYAUAAAAAuCQCKwAAAADAJRFYAQAAAAAuicAKAAAAAHBJBFYAAAAAgEsisAIAAAAAXBKBFQAAAADgkgisAAAAAACXRGAFAAAAALgkAisAAAAAwCURWAEAAAAALonACgAAAABwSQRWAAAAAIBLIrACAAAAAFwSgRUAAAAA4JIIrAAAAAAAl0RgBQAAAAC4JAIrAAAAAMAlEVgBAAAAAC6JwAoAAAAAcEkEVgAAAACASyKwAgAAAABcEoEVAAAAAOCSWjV3AbgyGIYhSSouLm7mSgAAAAA0p/OZ4HxGqA+BFU3ixIkTkiSbzdbMlQAAAABwBSUlJfLy8qp3DIEVTcLHx0eSlJeXd8GTElem4uJi2Ww2HTlyRJ6ens1dDlwM5wfqw/mB+nB+oD6cH83DMAyVlJQoICDggmMJrGgSLVqcu13ay8uLvwxQL09PT84R1InzA/Xh/EB9OD9QH86PptfQRSweugQAAAAAcEkEVgAAAACASyKwoklYrVa98MILslqtzV0KXBTnCOrD+YH6cH6gPpwfqA/nh+uzGA15ljAAAAAAAE2MFVYAAAAAgEsisAIAAAAAXBKBFQAAAADgkgisAAAAAACXRGBFk0hMTFRwcLDc3NzUv39/7dq1q7lLQiObPXu2LBaLU4uMjDS3l5eXa9KkSerYsaM8PDz0+9//XseOHXOaIy8vT7fccovc3d3VqVMnTZ8+XdXV1U5jUlNTdf3118tqtSosLEyrVq1qisPDRdq+fbtGjBihgIAAWSwWbdq0yWm7YRh6/vnn5e/vr7Zt2yo2NlbZ2dlOYwoLCzV27Fh5enrK29tb48ePV2lpqdOYr776SjfeeKPc3Nxks9n06quv1qjlgw8+UGRkpNzc3BQVFaVPPvmk0Y8XF+9C58i4ceNq/J0SHx/vNIZz5PI0b9489e3bV+3bt1enTp00cuRIHTp0yGlMU/6bwu8wrqch50hMTEyNv0MeeeQRpzGcI78RBvArW7NmjdGmTRtj5cqVxjfffGM89NBDhre3t3Hs2LHmLg2N6IUXXjB69uxp5Ofnm+2///2vuf2RRx4xbDabkZycbOzZs8cYMGCAMWjQIHN7dXW1cc011xixsbHGvn37jE8++cS46qqrjJkzZ5pjvvvuO8Pd3d148sknjQMHDhhLliwxWrZsaSQlJTXpseLCPvnkE+PZZ581NmzYYEgyNm7c6LR9/vz5hpeXl7Fp0ybj3//+t3HrrbcaISEhxpkzZ8wx8fHxRu/evY2dO3can3/+uREWFmaMGTPG3F5UVGR07tzZGDt2rLF//35j9erVRtu2bY23337bHJOWlma0bNnSePXVV40DBw4Yzz33nNG6dWvj66+//tW/A9TvQufI/fffb8THxzv9nVJYWOg0hnPk8hQXF2e88847xv79+43MzEzj5ptvNrp27WqUlpaaY5rq3xR+h3FNDTlH7Ha78dBDDzn9HVJUVGRu5xz57SCw4lfXr18/Y9KkSebPZ8+eNQICAox58+Y1Y1VobC+88ILRu3fvWredOnXKaN26tfHBBx+YfVlZWYYkIz093TCMc7+8tmjRwigoKDDHLFu2zPD09DQqKioMwzCMp556yujZs6fT3HfffbcRFxfXyEeDxvTzMPLjjz8afn5+xsKFC82+U6dOGVar1Vi9erVhGIZx4MABQ5Kxe/duc8w///lPw2KxGEePHjUMwzCWLl1qdOjQwTw/DMMwZsyYYXTv3t38+a677jJuueUWp3r69+9vPPzww416jLg0dQXW2267rc59OEeuHMePHzckGZ999plhGE37bwq/w/w2/PwcMYxzgfXxxx+vcx/Okd8OLgnGr6qyslJffvmlYmNjzb4WLVooNjZW6enpzVgZfg3Z2dkKCAhQaGioxo4dq7y8PEnSl19+qaqqKqfzIDIyUl27djXPg/T0dEVFRalz587mmLi4OBUXF+ubb74xx/x0jvNjOJd+W77//nsVFBQ4/Vl6eXmpf//+TueDt7e3brjhBnNMbGysWrRooYyMDHNMdHS02rRpY46Ji4vToUOHdPLkSXMM58xvV2pqqjp16qTu3bvrj3/8o06cOGFu4xy5chQVFUmSfHx8JDXdvyn8DvPb8fNz5Lz3339fV111la65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",
245
+ "text/plain": [
246
+ "<Figure size 1000x1000 with 1 Axes>"
247
+ ]
248
+ },
249
+ "metadata": {},
250
+ "output_type": "display_data"
251
+ }
252
+ ],
253
+ "source": [
254
+ "nvd_cwe = nvd['CWE'].value_counts()\n",
255
+ "nvd_cwe = nvd_cwe.reset_index()\n",
256
+ "nvd_cwe.columns = ['CWE', 'CVEs']\n",
257
+ "nvd_cwe_graph = nvd_cwe[nvd_cwe.CVEs > 100].head(25)\n",
258
+ "plt.figure(figsize=(10,10));\n",
259
+ "plt.barh(\"CWE\", \"CVEs\", data = nvd_cwe_graph, color=\"#001d82\");\n",
260
+ "plt.xlabel(\"CVEs\"); \n",
261
+ "plt.ylabel(\"CWE\") ;\n",
262
+ "plt.title(\"Most Common CWE in CVE Records\");\n"
263
+ ]
264
+ },
265
+ {
266
+ "cell_type": "code",
267
+ "execution_count": 4,
268
+ "id": "04a26e54",
269
+ "metadata": {
270
+ "execution": {
271
+ "iopub.execute_input": "2024-06-16T12:28:36.417469Z",
272
+ "iopub.status.busy": "2024-06-16T12:28:36.417135Z",
273
+ "iopub.status.idle": "2024-06-16T12:28:36.424268Z",
274
+ "shell.execute_reply": "2024-06-16T12:28:36.423725Z"
275
+ },
276
+ "tags": [
277
+ "remove-input"
278
+ ]
279
+ },
280
+ "outputs": [
281
+ {
282
+ "data": {
283
+ "text/html": [
284
+ "<table id=\"itables_3379e0d1_29e2_40af_912b_175fafe0f62b\" class=\"display nowrap\" data-quarto-disable-processing=\"true\" style=\"table-layout:auto;width:auto\">\n",
285
+ "<thead>\n",
286
+ " <tr style=\"text-align: right;\">\n",
287
+ " \n",
288
+ " <th>CWE</th>\n",
289
+ " <th>CVEs</th>\n",
290
+ " </tr>\n",
291
+ " </thead><tbody><tr>\n",
292
+ "<td style=\"vertical-align:middle; text-align:left\">\n",
293
+ "<div style=\"float:left; margin-right: 10px;\">\n",
294
+ "<a href=https://mwouts.github.io/itables/><svg class=\"main-svg\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n",
295
+ "width=\"64\" viewBox=\"0 0 500 400\" style=\"font-family: 'Droid Sans', sans-serif;\">\n",
296
+ " <g style=\"fill:#d9d7fc\">\n",
297
+ " <path d=\"M100,400H500V357H100Z\" />\n",
298
+ " <path d=\"M100,300H400V257H100Z\" />\n",
299
+ " <path d=\"M0,200H400V157H0Z\" />\n",
300
+ " <path d=\"M100,100H500V57H100Z\" />\n",
301
+ " <path d=\"M100,350H500V307H100Z\" />\n",
302
+ " <path d=\"M100,250H400V207H100Z\" />\n",
303
+ " <path d=\"M0,150H400V107H0Z\" />\n",
304
+ " <path d=\"M100,50H500V7H100Z\" />\n",
305
+ " </g>\n",
306
+ " <g style=\"fill:#1a1366;stroke:#1a1366;\">\n",
307
+ " <rect x=\"100\" y=\"7\" width=\"400\" height=\"43\">\n",
308
+ " <animate\n",
309
+ " attributeName=\"width\"\n",
310
+ " values=\"0;400;0\"\n",
311
+ " dur=\"5s\"\n",
312
+ " repeatCount=\"indefinite\" />\n",
313
+ " <animate\n",
314
+ " attributeName=\"x\"\n",
315
+ " values=\"100;100;500\"\n",
316
+ " dur=\"5s\"\n",
317
+ " repeatCount=\"indefinite\" />\n",
318
+ " </rect>\n",
319
+ " <rect x=\"0\" y=\"107\" width=\"400\" height=\"43\">\n",
320
+ " <animate\n",
321
+ " attributeName=\"width\"\n",
322
+ " values=\"0;400;0\"\n",
323
+ " dur=\"3.5s\"\n",
324
+ " repeatCount=\"indefinite\" />\n",
325
+ " <animate\n",
326
+ " attributeName=\"x\"\n",
327
+ " values=\"0;0;400\"\n",
328
+ " dur=\"3.5s\"\n",
329
+ " repeatCount=\"indefinite\" />\n",
330
+ " </rect>\n",
331
+ " <rect x=\"100\" y=\"207\" width=\"300\" height=\"43\">\n",
332
+ " <animate\n",
333
+ " attributeName=\"width\"\n",
334
+ " values=\"0;300;0\"\n",
335
+ " dur=\"3s\"\n",
336
+ " repeatCount=\"indefinite\" />\n",
337
+ " <animate\n",
338
+ " attributeName=\"x\"\n",
339
+ " values=\"100;100;400\"\n",
340
+ " dur=\"3s\"\n",
341
+ " repeatCount=\"indefinite\" />\n",
342
+ " </rect>\n",
343
+ " <rect x=\"100\" y=\"307\" width=\"400\" height=\"43\">\n",
344
+ " <animate\n",
345
+ " attributeName=\"width\"\n",
346
+ " values=\"0;400;0\"\n",
347
+ " dur=\"4s\"\n",
348
+ " repeatCount=\"indefinite\" />\n",
349
+ " <animate\n",
350
+ " attributeName=\"x\"\n",
351
+ " values=\"100;100;500\"\n",
352
+ " dur=\"4s\"\n",
353
+ " repeatCount=\"indefinite\" />\n",
354
+ " </rect>\n",
355
+ " <g style=\"fill:transparent;stroke-width:8; stroke-linejoin:round\" rx=\"5\">\n",
356
+ " <g transform=\"translate(45 50) rotate(-45)\">\n",
357
+ " <circle r=\"33\" cx=\"0\" cy=\"0\" />\n",
358
+ " <rect x=\"-8\" y=\"32\" width=\"16\" height=\"30\" />\n",
359
+ " </g>\n",
360
+ "\n",
361
+ " <g transform=\"translate(450 152)\">\n",
362
+ " <polyline points=\"-15,-20 -35,-20 -35,40 25,40 25,20\" />\n",
363
+ " <rect x=\"-15\" y=\"-40\" width=\"60\" height=\"60\" />\n",
364
+ " </g>\n",
365
+ "\n",
366
+ " <g transform=\"translate(50 352)\">\n",
367
+ " <polygon points=\"-35,-5 0,-40 35,-5\" />\n",
368
+ " <polygon points=\"-35,10 0,45 35,10\" />\n",
369
+ " </g>\n",
370
+ "\n",
371
+ " <g transform=\"translate(75 250)\">\n",
372
+ " <polyline points=\"-30,30 -60,0 -30,-30\" />\n",
373
+ " <polyline points=\"0,30 -30,0 0,-30\" />\n",
374
+ " </g>\n",
375
+ "\n",
376
+ " <g transform=\"translate(425 250) rotate(180)\">\n",
377
+ " <polyline points=\"-30,30 -60,0 -30,-30\" />\n",
378
+ " <polyline points=\"0,30 -30,0 0,-30\" />\n",
379
+ " </g>\n",
380
+ " </g>\n",
381
+ " </g>\n",
382
+ "</svg>\n",
383
+ "</a>\n",
384
+ "</div>\n",
385
+ "<div>\n",
386
+ "Loading ITables v2.1.1 from the internet...\n",
387
+ "(need <a href=https://mwouts.github.io/itables/troubleshooting.html>help</a>?)</td>\n",
388
+ "</div>\n",
389
+ "</tr></tbody>\n",
390
+ "\n",
391
+ "</table>\n",
392
+ "<link href=\"https://www.unpkg.com/dt_for_itables@2.0.10/dt_bundle.css\" rel=\"stylesheet\">\n",
393
+ "<script type=\"module\">\n",
394
+ " import {DataTable, jQuery as $} from 'https://www.unpkg.com/dt_for_itables@2.0.10/dt_bundle.js';\n",
395
+ "\n",
396
+ " document.querySelectorAll(\"#itables_3379e0d1_29e2_40af_912b_175fafe0f62b:not(.dataTable)\").forEach(table => {\n",
397
+ " // Define the table data\n",
398
+ " const data = [[\"NVD-CWE-Other\", 27090], [\"NVD-CWE-noinfo\", 26407], [\"CWE-79\", 25106], [\"Missing_Data\", 15112], [\"CWE-119\", 11412], [\"CWE-89\", 10682], [\"CWE-787\", 9404], [\"CWE-20\", 9065], [\"CWE-200\", 6656], [\"CWE-22\", 5612], [\"CWE-125\", 5469], [\"CWE-264\", 5217], [\"CWE-352\", 5211], [\"CWE-416\", 3585], [\"CWE-78\", 3101], [\"CWE-287\", 3086], [\"CWE-94\", 3048], [\"CWE-399\", 2499], [\"CWE-310\", 2434], [\"CWE-476\", 2226], [\"CWE-120\", 1947], [\"CWE-190\", 1944], [\"CWE-862\", 1922], [\"CWE-434\", 1922], [\"CWE-362\", 1377], [\"CWE-77\", 1353], [\"CWE-269\", 1335], [\"CWE-400\", 1236], [\"CWE-863\", 1214], [\"CWE-189\", 1199], [\"CWE-798\", 1106], [\"CWE-732\", 1101], [\"CWE-502\", 1081], [\"CWE-284\", 1046], [\"CWE-306\", 996], [\"CWE-59\", 986], [\"CWE-611\", 933], [\"CWE-295\", 926], [\"CWE-918\", 923], [\"CWE-601\", 856], [\"CWE-522\", 842], [\"CWE-276\", 796], [\"CWE-74\", 784], [\"CWE-255\", 718], [\"CWE-770\", 652], [\"CWE-532\", 620], [\"CWE-427\", 609], [\"CWE-668\", 572], [\"CWE-319\", 539], [\"CWE-401\", 535], [\"CWE-835\", 509], [\"CWE-312\", 485], [\"CWE-203\", 457], [\"CWE-426\", 433], [\"CWE-415\", 423], [\"CWE-639\", 421], [\"CWE-617\", 417], [\"CWE-755\", 404], [\"CWE-327\", 387], [\"CWE-772\", 381], [\"CWE-254\", 372], [\"CWE-347\", 353], [\"CWE-843\", 332], [\"CWE-345\", 324], [\"CWE-326\", 321], [\"CWE-134\", 313], [\"CWE-209\", 291], [\"CWE-307\", 290], [\"CWE-369\", 287], [\"CWE-908\", 285], [\"CWE-1321\", 272], [\"CWE-129\", 271], [\"CWE-330\", 271], [\"CWE-754\", 268], [\"CWE-613\", 264], [\"CWE-384\", 260], [\"CWE-665\", 259], [\"CWE-1021\", 251], [\"CWE-404\", 242], [\"CWE-16\", 241], [\"CWE-311\", 237], [\"CWE-367\", 233], [\"CWE-552\", 228], [\"CWE-121\", 219], [\"CWE-674\", 219], [\"CWE-19\", 217], [\"CWE-704\", 207], [\"CWE-346\", 204], [\"CWE-1236\", 202], [\"CWE-824\", 190], [\"CWE-1333\", 188], [\"CWE-122\", 185], [\"CWE-290\", 182], [\"CWE-88\", 181], [\"CWE-444\", 178], [\"CWE-116\", 167], [\"CWE-281\", 166], [\"CWE-191\", 162], [\"CWE-428\", 161], [\"CWE-17\", 159], [\"CWE-917\", 157], [\"CWE-521\", 153], [\"CWE-425\", 145], [\"CWE-610\", 138], [\"CWE-1188\", 137], [\"CWE-640\", 137], [\"CWE-667\", 135], [\"CWE-294\", 118], [\"CWE-922\", 109], [\"CWE-1284\", 105], [\"CWE-459\", 98], [\"CWE-697\", 97], [\"CWE-285\", 95], [\"CWE-829\", 95], [\"CWE-494\", 94], [\"CWE-354\", 91], [\"CWE-252\", 88], [\"CWE-193\", 85], [\"CWE-682\", 83], [\"CWE-338\", 82], [\"CWE-91\", 77], [\"CWE-131\", 73], [\"CWE-834\", 72], [\"CWE-916\", 68], [\"CWE-909\", 67], [\"CWE-275\", 63], [\"CWE-331\", 63], [\"CWE-212\", 63], [\"CWE-670\", 62], [\"CWE-681\", 61], [\"CWE-763\", 57], [\"CWE-707\", 55], [\"CWE-776\", 49], [\"CWE-436\", 48], [\"CWE-706\", 46], [\"CWE-669\", 45], [\"CWE-913\", 40], [\"CWE-93\", 38], [\"CWE-693\", 38], [\"CWE-565\", 38], [\"CWE-662\", 37], [\"CWE-388\", 33], [\"CWE-178\", 32], [\"CWE-320\", 30], [\"CWE-672\", 27], [\"CWE-358\", 25], [\"CWE-335\", 24], [\"CWE-266\", 24], [\"CWE-113\", 23], [\"CWE-273\", 20], [\"CWE-407\", 18], [\"CWE-470\", 18], [\"CWE-321\", 17], [\"CWE-250\", 17], [\"CWE-924\", 16], [\"CWE-80\", 16], [\"CWE-377\", 15], [\"CWE-288\", 15], [\"CWE-123\", 15], [\"CWE-90\", 14], [\"CWE-417\", 14], [\"CWE-749\", 13], [\"CWE-73\", 13], [\"CWE-822\", 13], [\"CWE-118\", 13], [\"CWE-184\", 12], [\"CWE-126\", 11], [\"CWE-788\", 11], [\"CWE-538\", 11], [\"CWE-359\", 11], [\"CWE-117\", 11], [\"CWE-256\", 11], [\"CWE-185\", 11], [\"CWE-457\", 10], [\"CWE-24\", 10], [\"CWE-305\", 10], [\"CWE-23\", 10], [\"CWE-912\", 10], [\"CWE-248\", 9], [\"CWE-172\", 9], [\"CWE-259\", 9], [\"CWE-201\", 9], [\"CWE-29\", 9], [\"CWE-789\", 8], [\"CWE-332\", 8], [\"CWE-297\", 8], [\"CWE-379\", 8], [\"CWE-385\", 7], [\"CWE-472\", 7], [\"CWE-208\", 7], [\"CWE-361\", 7], [\"CWE-799\", 7], [\"CWE-199\", 6], [\"CWE-204\", 6], [\"CWE-823\", 6], [\"CWE-497\", 6], [\"CWE-36\", 6], [\"CWE-99\", 6], [\"CWE-471\", 6], [\"CWE-18\", 6], [\"CWE-267\", 5], [\"CWE-441\", 5], [\"CWE-1320\", 5], [\"CWE-130\", 5], [\"CWE-840\", 5], [\"CWE-170\", 5], [\"CWE-378\", 5], [\"CWE-489\", 5], [\"CWE-15\", 4], [\"CWE-406\", 4], [\"CWE-548\", 4], [\"CWE-289\", 4], [\"CWE-1220\", 4], [\"CWE-95\", 4], [\"CWE-703\", 4], [\"CWE-353\", 4], [\"CWE-664\", 4], [\"CWE-61\", 4], [\"CWE-838\", 4], [\"CWE-300\", 4], [\"CWE-280\", 4], [\"CWE-460\", 3], [\"CWE-620\", 3], [\"CWE-268\", 3], [\"CWE-1336\", 3], [\"CWE-112\", 3], [\"CWE-523\", 3], [\"CWE-202\", 3], [\"CWE-349\", 3], [\"CWE-405\", 3], [\"CWE-648\", 3], [\"CWE-592\", 3], [\"CWE-98\", 3], [\"CWE-1187\", 3], [\"CWE-115\", 3], [\"CWE-920\", 3], [\"CWE-1286\", 3], [\"CWE-75\", 3], [\"CWE-614\", 3], [\"CWE-21\", 3], [\"CWE-680\", 3], [\"CWE-150\", 3], [\"CWE-1263\", 3], [\"CWE-942\", 3], [\"CWE-440\", 3], [\"CWE-943\", 2], [\"CWE-194\", 2], [\"CWE-242\", 2], [\"CWE-241\", 2], [\"CWE-124\", 2], [\"CWE-1004\", 2], [\"CWE-911\", 2], [\"CWE-304\", 2], [\"CWE-769\", 2], [\"CWE-1022\", 2], [\"CWE-350\", 2], [\"CWE-1386\", 2], [\"CWE-473\", 2], [\"CWE-841\", 2], [\"CWE-366\", 2], [\"CWE-308\", 2], [\"CWE-272\", 2], [\"CWE-420\", 2], [\"CWE-328\", 2], [\"CWE-1274\", 2], [\"CWE-940\", 2], [\"CWE-1077\", 2], [\"CWE-833\", 2], [\"CWE-35\", 2], [\"CWE-842\", 2], [\"CWE-534\", 2], [\"CWE-708\", 2], [\"CWE-1\", 2], [\"CWE-642\", 2], [\"CWE-567\", 2], [\"CWE-114\", 2], [\"CWE-303\", 2], [\"CWE-323\", 2], [\"CWE-778\", 2], [\"CWE-313\", 2], [\"CWE-757\", 2], [\"CWE-603\", 2], [\"CWE-657\", 2], [\"CWE-325\", 2], [\"CWE-644\", 2], [\"CWE-260\", 2], [\"CWE-540\", 2], [\"CWE-539\", 2], [\"CWE-760\", 2], [\"CWE-805\", 2], [\"CWE-228\", 2], [\"CWE-257\", 2], [\"CWE-240\", 1], [\"CWE-691\", 1], [\"CWE-372\", 1], [\"CWE-232\", 1], [\"CWE-195\", 1], [\"CWE-526\", 1], [\"CWE-87\", 1], [\"CWE-506\", 1], [\"CWE-649\", 1], [\"CWE-1270\", 1], [\"CWE-1385\", 1], [\"CWE-830\", 1], [\"CWE-544\", 1], [\"CWE-758\", 1], [\"CWE-167\", 1], [\"CWE-299\", 1], [\"CWE-28\", 1], [\"CWE-775\", 1], [\"CWE-263\", 1], [\"CWE-1230\", 1], [\"CWE-283\", 1], [\"CWE-590\", 1], [\"CWE-598\", 1], [\"CWE-547\", 1], [\"CWE-342\", 1], [\"CWE-1103\", 1], [\"CWE-1285\", 1], [\"CWE-278\", 1], [\"CWE-279\", 1], [\"CWE-839\", 1], [\"CWE-1018\", 1], [\"CWE-825\", 1], [\"CWE-837\", 1], [\"CWE-197\", 1], [\"CWE-684\", 1], [\"CWE-402\", 1], [\"CWE-277\", 1], [\"CWE-231\", 1], [\"CWE-1049\", 1], [\"CWE-265\", 1], [\"CWE-149\", 1], [\"CWE-550\", 1], [\"CWE-316\", 1], [\"CWE-710\", 1], [\"CWE-1392\", 1], [\"CWE-1241\", 1], [\"CWE-836\", 1], [\"CWE-645\", 1], [\"CWE-612\", 1], [\"CWE-915\", 1], [\"CWE-807\", 1], [\"CWE-636\", 1], [\"CWE-1390\", 1], [\"CWE-76\", 1], [\"CWE-261\", 1], [\"CWE-525\", 1], [\"CWE-671\", 1], [\"CWE-371\", 1], [\"CWE-923\", 1], [\"CWE-214\", 1], [\"CWE-395\", 1], [\"CWE-571\", 1], [\"CWE-424\", 1], [\"CWE-364\", 1], [\"CWE-187\", 1], [\"CWE-216\", 1], [\"CWE-774\", 1], [\"CWE-573\", 1], [\"CWE-64\", 1], [\"CWE-1278\", 1], [\"CWE-643\", 1], [\"CWE-759\", 1], [\"CWE-527\", 1], [\"CWE-302\", 1], [\"CWE-782\", 1], [\"CWE-451\", 1], [\"CWE-1329\", 1], [\"CWE-895\", 1], [\"CWE-456\", 1], [\"CWE-363\", 1], [\"CWE-391\", 1], [\"CWE-602\", 1], [\"CWE-1076\", 1], [\"CWE-270\", 1], [\"CWE-524\", 1], [\"CWE-334\", 1], [\"CWE-183\", 1], [\"CWE-1282\", 1], [\"CWE-641\", 1], [\"CWE-337\", 1], [\"CWE-229\", 1], [\"CWE-941\", 1], [\"CWE-315\", 1], [\"CWE-507\", 1], [\"CWE-562\", 1], [\"CWE-455\", 1], [\"CWE-597\", 1], [\"CWE-317\", 1], [\"CWE-1287\", 1], [\"CWE-274\", 1], [\"CWE-1026\", 1], [\"CWE-628\", 1], [\"CWE-271\", 1], [\"CWE-1108\", 1], [\"CWE-690\", 1], [\"CWE-146\", 1], [\"CWE-141\", 1], [\"CWE-1258\", 1], [\"CWE-1393\", 1]];\n",
399
+ "\n",
400
+ " // Define the dt_args\n",
401
+ " let dt_args = {\"scrollY\": \"400px\", \"scrollCollapse\": true, \"paging\": false, \"dom\": \"tpir\", \"order\": []};\n",
402
+ " dt_args[\"data\"] = data;\n",
403
+ "\n",
404
+ " \n",
405
+ " new DataTable(table, dt_args);\n",
406
+ " });\n",
407
+ "</script>\n"
408
+ ],
409
+ "text/plain": [
410
+ "<IPython.core.display.HTML object>"
411
+ ]
412
+ },
413
+ "metadata": {},
414
+ "output_type": "display_data"
415
+ }
416
+ ],
417
+ "source": [
418
+ "show(nvd_cwe, scrollY=\"400px\", scrollCollapse=True, paging=False)"
419
+ ]
420
+ },
421
+ {
422
+ "cell_type": "code",
423
+ "execution_count": 5,
424
+ "id": "20ee3a71",
425
+ "metadata": {
426
+ "execution": {
427
+ "iopub.execute_input": "2024-06-16T12:28:36.426466Z",
428
+ "iopub.status.busy": "2024-06-16T12:28:36.426150Z",
429
+ "iopub.status.idle": "2024-06-16T12:28:36.430205Z",
430
+ "shell.execute_reply": "2024-06-16T12:28:36.429762Z"
431
+ },
432
+ "tags": [
433
+ "remove-input"
434
+ ]
435
+ },
436
+ "outputs": [
437
+ {
438
+ "data": {
439
+ "text/markdown": [
440
+ "This report is updated automatically every day, last generated on: **2024-06-16 12:28:36.427054**"
441
+ ],
442
+ "text/plain": [
443
+ "<IPython.core.display.Markdown object>"
444
+ ]
445
+ },
446
+ "execution_count": 5,
447
+ "metadata": {},
448
+ "output_type": "execute_result"
449
+ }
450
+ ],
451
+ "source": [
452
+ "Markdown(f\"This report is updated automatically every day, last generated on: **{datetime.datetime.now()}**\")"
453
+ ]
454
+ }
455
+ ],
456
+ "metadata": {
457
+ "kernelspec": {
458
+ "display_name": "Python 3 (ipykernel)",
459
+ "language": "python",
460
+ "name": "python3"
461
+ },
462
+ "language_info": {
463
+ "codemirror_mode": {
464
+ "name": "ipython",
465
+ "version": 3
466
+ },
467
+ "file_extension": ".py",
468
+ "mimetype": "text/x-python",
469
+ "name": "python",
470
+ "nbconvert_exporter": "python",
471
+ "pygments_lexer": "ipython3",
472
+ "version": "3.11.9"
473
+ },
474
+ "vscode": {
475
+ "interpreter": {
476
+ "hash": "aee8b7b246df8f9039afb4144a1f6fd8d2ca17a180786b69acc140d282b71a49"
477
+ }
478
+ }
479
+ },
480
+ "nbformat": 4,
481
+ "nbformat_minor": 5
482
+ }
CVEGrowth.ipynb CHANGED
@@ -489,4 +489,4 @@
489
  },
490
  "nbformat": 4,
491
  "nbformat_minor": 5
492
- }
 
489
  },
490
  "nbformat": 4,
491
  "nbformat_minor": 5
492
+ }
LICENSE ADDED
@@ -0,0 +1,21 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ MIT License
2
+
3
+ Copyright (c) 2023 KhulnaSoft Ltd.
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
README.md ADDED
@@ -0,0 +1,8 @@
 
 
 
 
 
 
 
 
 
1
+ # CVE-ICU
2
+ # About
3
+
4
+ CVE-ICU is a research project by [KhulnaSoft Lab](https://www.khulnasoft.com) that automatically pulls all CVE data from the [NVD](https://nvd.mitre.org) and performs fundamental data analysis and graphing.
5
+
6
+ The source code for this project is in this [GitHub repository](https://github.com/khulnasoft-lab/cve-icu), and these pages are automatically updated daily by GitHub Actions.
7
+
8
+ Questions? Reach out to [@khulnasoft](https://twitter.com/khulnasoft).
intro.md ADDED
@@ -0,0 +1,8 @@
 
 
 
 
 
 
 
 
 
1
+ # CVE-ICU
2
+ # About
3
+
4
+ CVE-ICU is a research project by [KhulnaSoft Lab](https://www.khulnasoft.com) that automatically pulls all CVE data from the [NVD](https://nvd.mitre.org) and performs fundamental data analysis and graphing.
5
+
6
+ The source code for this project is in this [GitHub repository](https://github.com/khulnasoft-lab/cve-icu), and these pages are automatically updated daily by GitHub Actions.
7
+
8
+ Questions? Reach out to [@khulnasoft](https://twitter.com/khulnasoft).