aa-intel-tool 0.0.1a4__py3-none-any.whl → 0.0.1a6__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
aa_intel_tool/admin.py CHANGED
@@ -4,6 +4,11 @@ Django admin integration
4
4
 
5
5
  # Django
6
6
  from django.contrib import admin
7
+ from django.utils import html, safestring
8
+ from django.utils.translation import gettext_lazy as _
9
+
10
+ # Alliance Auth (External Libs)
11
+ from app_utils.urls import reverse_absolute
7
12
 
8
13
  # AA Intel Tool
9
14
  from aa_intel_tool.models import Scan
@@ -16,7 +21,8 @@ class BaseReadOnlyAdminMixin:
16
21
 
17
22
  actions = None # Removes the default delete action.
18
23
 
19
- def has_add_permission(self, request): # pylint: disable=unused-argument
24
+ @staticmethod
25
+ def has_add_permission(request): # pylint: disable=unused-argument
20
26
  """
21
27
  Has "add" permissions
22
28
 
@@ -28,9 +34,8 @@ class BaseReadOnlyAdminMixin:
28
34
 
29
35
  return False
30
36
 
31
- def has_change_permission(
32
- self, request, obj=None # pylint: disable=unused-argument
33
- ):
37
+ @staticmethod
38
+ def has_change_permission(request, obj=None): # pylint: disable=unused-argument
34
39
  """
35
40
  Has "change" permissions
36
41
 
@@ -44,9 +49,8 @@ class BaseReadOnlyAdminMixin:
44
49
 
45
50
  return False
46
51
 
47
- def has_delete_permission(
48
- self, request, obj=None # pylint: disable=unused-argument
49
- ):
52
+ @staticmethod
53
+ def has_delete_permission(request, obj=None): # pylint: disable=unused-argument
50
54
  """
51
55
  Has "delete" permissions
52
56
 
@@ -67,4 +71,38 @@ class ScanAdmin(BaseReadOnlyAdminMixin, admin.ModelAdmin):
67
71
  Scan Admin
68
72
  """
69
73
 
70
- list_display = ("hash", "created")
74
+ list_display = ("hash", "scan_type", "created")
75
+ fields = ("_scan_type", "_raw_data")
76
+
77
+ @admin.display(description=_("Scan type"))
78
+ def _scan_type(self, obj) -> str:
79
+ """
80
+ Add link to open the scan in a new browser tab
81
+
82
+ :param obj:
83
+ :type obj:
84
+ :return:
85
+ :rtype:
86
+ """
87
+ intel_type = obj.get_scan_type_display()
88
+ scan_link = reverse_absolute(
89
+ viewname="aa_intel_tool:intel_tool_scan", args=[obj.hash]
90
+ )
91
+ link_text = _("Open in a new browser tab")
92
+
93
+ return safestring.mark_safe(
94
+ f'{intel_type} (<a href="{scan_link}" target="_blank" rel="noreferer noopener">{link_text}</a>)'
95
+ )
96
+
97
+ @admin.display(description=_("RAW data"))
98
+ def _raw_data(self, obj) -> str:
99
+ """
100
+ Format the output properly
101
+
102
+ :param obj:
103
+ :type obj:
104
+ :return:
105
+ :rtype:
106
+ """
107
+
108
+ return html.format_html("<pre>{}</pre>", obj.raw_data)
@@ -7,7 +7,7 @@ msgstr ""
7
7
  "Project-Id-Version: PACKAGE VERSION\n"
8
8
  "Report-Msgid-Bugs-To: \n"
9
9
  "POT-Creation-Date: 2023-08-10 20:47+0200\n"
10
- "PO-Revision-Date: 2023-08-10 19:17+0000\n"
10
+ "PO-Revision-Date: 2023-08-12 12:28+0000\n"
11
11
  "Last-Translator: Peter Pfeufer <info@ppfeufer.de>\n"
12
12
  "Language-Team: German <https://weblate.ppfeufer.de/projects/"
13
13
  "alliance-auth-apps/aa-intel-tool/de/>\n"
@@ -39,7 +39,7 @@ msgstr "D-Scan"
39
39
 
40
40
  #: models.py:23 templates/aa_intel_tool/partials/index/form.html:31
41
41
  msgid "Fleet Composition"
42
- msgstr "Flottenzusammansetzung"
42
+ msgstr "Flottenzusammensetzung"
43
43
 
44
44
  #: models.py:24
45
45
  msgid "Chat List"
@@ -155,7 +155,7 @@ msgstr ""
155
155
 
156
156
  #: parser/module/chatlist.py:264
157
157
  msgid "Character unknown to ESI."
158
- msgstr "Charakter ist nicht in ESI."
158
+ msgstr "Charakter ist in ESI nicht bekannt."
159
159
 
160
160
  #: parser/module/dscan.py:136
161
161
  msgid "The D-Scan module is currently disabled."
@@ -313,11 +313,11 @@ msgstr "Absenden"
313
313
 
314
314
  #: templates/aa_intel_tool/partials/index/form.html:52
315
315
  msgid "Working on it, please be patient …"
316
- msgstr "Arbeite, bitte hab etwas Geduld …"
316
+ msgstr "Bei der Arbeit, bitte hab etwas Geduld …"
317
317
 
318
318
  #: templates/aa_intel_tool/partials/index/form.html:54
319
319
  msgid "Detecting the intel type"
320
- msgstr "Erkennen des Intel-Typs"
320
+ msgstr "Erkennung des Intel-Typs"
321
321
 
322
322
  #: templates/aa_intel_tool/partials/index/form.html:55
323
323
  msgid ""
@@ -60,6 +60,8 @@ class Command(BaseCommand):
60
60
  __title__,
61
61
  "--category_id",
62
62
  str(EveCategoryId.SHIP.value),
63
+ "--category_id",
64
+ str(EveCategoryId.STRUCTURE.value),
63
65
  ]
64
66
 
65
67
  if options["noinput"]:
@@ -0,0 +1,94 @@
1
+ # Generated by Django 4.0.10 on 2023-08-12 19:27
2
+
3
+ # Django
4
+ from django.db import migrations, models
5
+
6
+
7
+ class Migration(migrations.Migration):
8
+ dependencies = [
9
+ ("aa_intel_tool", "0004_alter_scandata_section"),
10
+ ]
11
+
12
+ operations = [
13
+ migrations.AlterModelOptions(
14
+ name="scan",
15
+ options={
16
+ "default_permissions": (),
17
+ "verbose_name": "Scan",
18
+ "verbose_name_plural": "Scans",
19
+ },
20
+ ),
21
+ migrations.AlterModelOptions(
22
+ name="scandata",
23
+ options={
24
+ "default_permissions": (),
25
+ "verbose_name": "Scan data",
26
+ "verbose_name_plural": "Scan data",
27
+ },
28
+ ),
29
+ migrations.AlterField(
30
+ model_name="scan",
31
+ name="created",
32
+ field=models.DateTimeField(
33
+ auto_now_add=True, db_index=True, verbose_name="Creation date/time"
34
+ ),
35
+ ),
36
+ migrations.AlterField(
37
+ model_name="scan",
38
+ name="hash",
39
+ field=models.CharField(
40
+ editable=False,
41
+ max_length=30,
42
+ primary_key=True,
43
+ serialize=False,
44
+ unique=True,
45
+ verbose_name="Scan hash",
46
+ ),
47
+ ),
48
+ migrations.AlterField(
49
+ model_name="scan",
50
+ name="raw_data",
51
+ field=models.TextField(verbose_name="Scan RAW data"),
52
+ ),
53
+ migrations.AlterField(
54
+ model_name="scan",
55
+ name="scan_type",
56
+ field=models.CharField(
57
+ choices=[
58
+ ("invalid", "Invalid scan data"),
59
+ ("dscan", "D-Scan"),
60
+ ("fleetcomp", "Fleet Composition"),
61
+ ("chatlist", "Chat List"),
62
+ ],
63
+ default="invalid",
64
+ max_length=9,
65
+ verbose_name="Scan type",
66
+ ),
67
+ ),
68
+ migrations.AlterField(
69
+ model_name="scandata",
70
+ name="processed_data",
71
+ field=models.JSONField(default=dict, verbose_name="Processed scan data"),
72
+ ),
73
+ migrations.AlterField(
74
+ model_name="scandata",
75
+ name="section",
76
+ field=models.CharField(
77
+ choices=[
78
+ ("invalid", "Invalid scan data"),
79
+ ("pilotlist", "Pilot list"),
80
+ ("corporationlist", "Corporation list"),
81
+ ("alliancelist", "Alliance list"),
82
+ ("shiptypes", "Ship types"),
83
+ ("shiplist", "Ship list"),
84
+ ("shiplist_on_grid", "Ship list (on grid)"),
85
+ ("shiplist_off_grid", "Ship list (off grid)"),
86
+ ("structures_on_grid", "Structures (on grid)"),
87
+ ("deployables_on_grid", "Deployables (on grid)"),
88
+ ],
89
+ default="invalid",
90
+ max_length=19,
91
+ verbose_name="Scan section",
92
+ ),
93
+ ),
94
+ ]
aa_intel_tool/models.py CHANGED
@@ -28,22 +28,22 @@ class Scan(models.Model):
28
28
  editable=False,
29
29
  unique=True,
30
30
  max_length=30,
31
- verbose_name=_("The hash of the scan."),
31
+ verbose_name=_("Scan hash"),
32
32
  )
33
33
 
34
34
  created = models.DateTimeField(
35
35
  auto_now_add=True,
36
36
  db_index=True,
37
- verbose_name=_("Date and time the scan was created."),
37
+ verbose_name=_("Creation date/time"),
38
38
  )
39
39
 
40
- raw_data = models.TextField(verbose_name=_("The original scan data."))
40
+ raw_data = models.TextField(verbose_name=_("Scan RAW data"))
41
41
 
42
42
  scan_type = models.CharField(
43
43
  max_length=9,
44
44
  choices=Type.choices,
45
45
  default=Type.INVALID,
46
- verbose_name=_("The scan type."),
46
+ verbose_name=_("Scan type"),
47
47
  )
48
48
 
49
49
  class Meta: # pylint: disable=too-few-public-methods
@@ -52,8 +52,8 @@ class Scan(models.Model):
52
52
  """
53
53
 
54
54
  default_permissions = ()
55
- verbose_name = _("scan")
56
- verbose_name_plural = _("scans")
55
+ verbose_name = _("Scan")
56
+ verbose_name_plural = _("Scans")
57
57
 
58
58
  def __str__(self) -> str:
59
59
  return str(self.pk)
@@ -132,11 +132,11 @@ class ScanData(models.Model):
132
132
  max_length=19,
133
133
  choices=Section.choices,
134
134
  default=Section.INVALID,
135
- verbose_name=_("The scan section"),
135
+ verbose_name=_("Scan section"),
136
136
  )
137
137
 
138
138
  processed_data = models.JSONField(
139
- default=dict, verbose_name=_("The processed scan section data")
139
+ default=dict, verbose_name=_("Processed scan data")
140
140
  )
141
141
 
142
142
  class Meta: # pylint: disable=too-few-public-methods
@@ -145,5 +145,5 @@ class ScanData(models.Model):
145
145
  """
146
146
 
147
147
  default_permissions = ()
148
- verbose_name = _("scan data")
149
- verbose_name_plural = _("scan data")
148
+ verbose_name = _("Scan data")
149
+ verbose_name_plural = _("Scan data")
@@ -52,9 +52,7 @@ def _parse_alliance_info(eve_character: EveCharacter) -> dict:
52
52
  "id": eve_character.alliance_id,
53
53
  "name": eve_character.alliance_name,
54
54
  "ticker": eve_character.alliance_ticker,
55
- "logo": eveimageserver.alliance_logo_url(
56
- alliance_id=eve_character.alliance_id, size=32
57
- ),
55
+ "logo": eve_character.alliance_logo_url_32,
58
56
  "dotlan": dotlan.alliance_url(eve_character.alliance_name),
59
57
  "zkillboard": zkillboard.alliance_url(eve_character.alliance_id),
60
58
  }
@@ -76,9 +74,7 @@ def _parse_corporation_info(eve_character: EveCharacter) -> dict:
76
74
  "id": eve_character.corporation_id,
77
75
  "name": eve_character.corporation_name,
78
76
  "ticker": eve_character.corporation_ticker,
79
- "logo": eveimageserver.corporation_logo_url(
80
- corporation_id=eve_character.corporation_id, size=32
81
- ),
77
+ "logo": eve_character.corporation_logo_url_32,
82
78
  "dotlan": dotlan.corporation_url(eve_character.corporation_name),
83
79
  "zkillboard": zkillboard.corporation_url(eve_character.corporation_id),
84
80
  }
@@ -97,9 +93,7 @@ def _parse_character_info(eve_character: EveCharacter) -> dict:
97
93
  return {
98
94
  "id": eve_character.character_id,
99
95
  "name": eve_character.character_name,
100
- "portrait": eveimageserver.character_portrait_url(
101
- character_id=eve_character.character_id, size=32
102
- ),
96
+ "portrait": eve_character.portrait_url_32,
103
97
  "evewho": evewho.character_url(eve_character.character_id),
104
98
  "zkillboard": zkillboard.character_url(eve_character.character_id),
105
99
  }
@@ -237,9 +231,12 @@ def parse(scan_data: list, safe_to_db: bool = True) -> Union[Scan, dict]:
237
231
  )
238
232
 
239
233
  # Check if we have to bother Eve Universe or if we have all characters already
234
+ # Excluding corporation_id=1000001 (Doomheim) to force an update here …
240
235
  fetch_from_eveuniverse = False
241
236
  try:
242
- eve_characters = EveCharacter.objects.filter(character_name__in=scan_data)
237
+ eve_characters = EveCharacter.objects.filter(
238
+ character_name__in=scan_data
239
+ ).exclude(corporation_id=1000001)
243
240
  except EveCharacter.DoesNotExist: # pylint: disable=no-member
244
241
  fetch_from_eveuniverse = True
245
242
  else:
@@ -249,7 +246,7 @@ def parse(scan_data: list, safe_to_db: bool = True) -> Union[Scan, dict]:
249
246
  if fetch_from_eveuniverse:
250
247
  try:
251
248
  eve_character_ids = (
252
- EveEntity.objects.fetch_by_names_esi(names=scan_data)
249
+ EveEntity.objects.fetch_by_names_esi(names=scan_data, update=True)
253
250
  .filter(category=EveEntity.CATEGORY_CHARACTER)
254
251
  .values_list("id", flat=True)
255
252
  )
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: aa-intel-tool
3
- Version: 0.0.1a4
3
+ Version: 0.0.1a6
4
4
  Summary: A simple parser for D-Scans and more for Alliance Auth
5
5
  Project-URL: Homepage, https://github.com/ppfeufer/aa-intel-tool
6
6
  Project-URL: Documentation, https://github.com/ppfeufer/aa-intel-tool/blob/master/README.md
@@ -1,19 +1,19 @@
1
1
  aa_intel_tool/__init__.py,sha256=u6zbS8cbdtUvtSfC1nRmGMXJHAnt4vTQmD6EAjhN_-U,174
2
- aa_intel_tool/admin.py,sha256=AgIfPdtRjZxii3BIMJ5GMXUFx2vhDIG9pxRCLGCGY30,1281
2
+ aa_intel_tool/admin.py,sha256=ytQfm5h58e8BQajvBbs4W2LrJFqx8elVq2pUbFyu4g4,2410
3
3
  aa_intel_tool/app_settings.py,sha256=qoTpu9DY4KQs-MXiwy_rUgJ8VD6n2hFkTRUx3M7zaoc,1412
4
4
  aa_intel_tool/apps.py,sha256=0LcoWtasZy27ywjmV-rC6yJSKUTic_yscf1yyXtMQKg,450
5
5
  aa_intel_tool/auth_hooks.py,sha256=hqLLe3I0nvvth1K1MNfItzp4OUiftwL7RyACDOgaTDI,1538
6
6
  aa_intel_tool/constants.py,sha256=j4KNu486WPq1DaR1HaUE9LZusw1EDeTgOz5bC64Yy7Y,1471
7
7
  aa_intel_tool/exceptions.py,sha256=1uEreioXqnWR8trgU5RSvj7CZ6GdkaWG-wI5G1pfvqs,693
8
8
  aa_intel_tool/form.py,sha256=zpIigT8Q0XxpS4_izUX7XXxMlcBIuKWWlZcpkNJn4LE,503
9
- aa_intel_tool/models.py,sha256=-hyQFhZSpG9VSezNv2cISCI5N2wEhf6yNWkSC4Rww3o,3753
9
+ aa_intel_tool/models.py,sha256=y5YaRwOFXnBP0lDWk-VYJlaitiTdKhG77qeNQVzVoGA,3693
10
10
  aa_intel_tool/providers.py,sha256=jIo3ErUfshRhwqALHV5I7toZ9p0PWn3ZRQFof_DXnh4,198
11
11
  aa_intel_tool/tasks.py,sha256=lkW1kDJzU8iOINp_tKEL5rG9DM5icvEkyYQUhGrW_hU,1088
12
12
  aa_intel_tool/urls.py,sha256=cncBfnPbJErN9w0qM83ZmtlnMJEolDHLQllU8bvxUa0,720
13
13
  aa_intel_tool/helper/eve_character.py,sha256=EekvX6yw_uzDkLp-3w3hnjmkralxZ0YCiajW-K2-Fcg,5134
14
14
  aa_intel_tool/locale/django.pot,sha256=WvlJPKzEOR_2JAKWfqmTwLm1mSILTTzE3k1dr2RsoGo,10403
15
- aa_intel_tool/locale/de/LC_MESSAGES/django.mo,sha256=R6e7aTcv1gy1Hyd1C76eMKTwUjnuAMsN6c80jHBaYjQ,8063
16
- aa_intel_tool/locale/de/LC_MESSAGES/django.po,sha256=vjt1WROyEeksp7wNO1cGgRvHtd1iOuWYvAiP8qReiv8,13311
15
+ aa_intel_tool/locale/de/LC_MESSAGES/django.mo,sha256=We-_ZP6pivBEV7un_2q49lQDHar-h9J8rOa6M09immk,8079
16
+ aa_intel_tool/locale/de/LC_MESSAGES/django.po,sha256=4-0Yc3mEpEDHdiT3iRJO4S-2epedBSm_-AloC4Cuj0c,13327
17
17
  aa_intel_tool/locale/es/LC_MESSAGES/django.po,sha256=rKigO_89-Ms2afeEMtDtkBf7XVZwlSAYLReLJ5CvNzk,10395
18
18
  aa_intel_tool/locale/fr_FR/LC_MESSAGES/django.po,sha256=WvlJPKzEOR_2JAKWfqmTwLm1mSILTTzE3k1dr2RsoGo,10403
19
19
  aa_intel_tool/locale/it_IT/LC_MESSAGES/django.po,sha256=WvlJPKzEOR_2JAKWfqmTwLm1mSILTTzE3k1dr2RsoGo,10403
@@ -22,16 +22,17 @@ aa_intel_tool/locale/ko_KR/LC_MESSAGES/django.po,sha256=WvlJPKzEOR_2JAKWfqmTwLm1
22
22
  aa_intel_tool/locale/ru/LC_MESSAGES/django.po,sha256=nQiNeVO_2JcqeAiDrZ42c0tbDJ8CLIZAx_7Qr82h1BU,10539
23
23
  aa_intel_tool/locale/uk/LC_MESSAGES/django.po,sha256=9slcSUYAMdibbW1LLZkni9gIc_p65xieRS3XsMW4-vA,10626
24
24
  aa_intel_tool/locale/zh_Hans/LC_MESSAGES/django.po,sha256=qy7QpNcOUpmkWz2qkNImRQ5ut964c89gwosTmKlnuLc,10388
25
- aa_intel_tool/management/commands/aa_intel_tool_load_eve_types.py,sha256=DpQlv4ybAOQ1ByK7iHJyOC712F8T5cEvKj6NfgyIQ_k,1482
25
+ aa_intel_tool/management/commands/aa_intel_tool_load_eve_types.py,sha256=REMnWZF241S6YHrZj4-Lv9q78vivAtcfaTciN6tgEC4,1559
26
26
  aa_intel_tool/migrations/0001_initial.py,sha256=XPiUlXjkRHqgb-_g91_XAzbKIdGW2FhyeaavXkHMZcg,2019
27
27
  aa_intel_tool/migrations/0002_remove_scan_processed_data_scandata.py,sha256=3L5eXOlGcRkXvQuPnEVTW9tOIx2ySjJ8SRNG6oVH_kA,2208
28
28
  aa_intel_tool/migrations/0003_alter_scandata_scan.py,sha256=AX_9prazV-ewLB9l6Eekjjc4N2o5hfcM7yQ8QV2yGwQ,718
29
29
  aa_intel_tool/migrations/0004_alter_scandata_section.py,sha256=tmOTfA3_gX0mn4C78yGg-Y9nyVYTuQFuoNudBBrdK9w,1150
30
+ aa_intel_tool/migrations/0005_alter_scan_options_alter_scandata_options_and_more.py,sha256=sCHsJPxPjHGkkGK_5oE6_DKkrqzup_PtH52poBKTa0o,3106
30
31
  aa_intel_tool/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
31
32
  aa_intel_tool/parser/__init__.py,sha256=BAFdCEaeC0cmv74ZuZGZJCgJOiliMVBpgdQI63ABJ2U,30
32
33
  aa_intel_tool/parser/general.py,sha256=1hZyS0cOgOK_U3yz8rOaOuoqZLzcXeF1fqeRfjMyKjI,1949
33
34
  aa_intel_tool/parser/helper/db.py,sha256=Q4VmgxApCSIpqsEmluRHOFtjevQvE9GG83IJ38e_5Us,721
34
- aa_intel_tool/parser/module/chatlist.py,sha256=tmEqX7CoDlvlSlR-tX1KCpeuKUEnPSeRs79evvpbyvA,10046
35
+ aa_intel_tool/parser/module/chatlist.py,sha256=uYFNUfVh56khN83LMRC4l3WgtZdw505q8DcPpXhXnP0,9973
35
36
  aa_intel_tool/parser/module/dscan.py,sha256=2CCzsufD2yz8JfSp_jdTaYl2J_V8pR6YSHZyKG7SQec,6458
36
37
  aa_intel_tool/parser/module/fleetcomp.py,sha256=26wcMKFr4Ut4NgrVC1CoXrdaH9QarnTcf_1hr9XMCKI,2524
37
38
  aa_intel_tool/static/aa_intel_tool/css/aa-bootstrap-fix.css,sha256=FyYes1hz7RK8wiR9sZcxfKvD3ftYFr9rUTGE3zXcuRs,307
@@ -84,7 +85,7 @@ aa_intel_tool/tests/test-data/fleetcomp.txt,sha256=-ofpfNyKeeWjQIG02ED-FE3sQQhtZ
84
85
  aa_intel_tool/views/__init__.py,sha256=zf5e30BdJ772oDJkQnBfFIi5a7-HEJByUIkv0iz3Kr8,29
85
86
  aa_intel_tool/views/ajax.py,sha256=0X2TIU51jrO6sw7DBlZyjhcX-_HCdP9YErpwiFI4EaM,1030
86
87
  aa_intel_tool/views/general.py,sha256=lftJbTxVlW-cZFg8dQAvtFPP-LDBgORHj9ElXGSGBus,3649
87
- aa_intel_tool-0.0.1a4.dist-info/METADATA,sha256=FC8rmiDaruVBzgl1_KAuQ_Ytt2Ujmv8NeJXU_pP-vjA,12098
88
- aa_intel_tool-0.0.1a4.dist-info/WHEEL,sha256=9QBuHhg6FNW7lppboF2vKVbCGTVzsFykgRQjjlajrhA,87
89
- aa_intel_tool-0.0.1a4.dist-info/licenses/LICENSE,sha256=UTib95uJWe2NQIG3TzU8-Hm-eaEZFqv9fqsjNT_xKWU,35151
90
- aa_intel_tool-0.0.1a4.dist-info/RECORD,,
88
+ aa_intel_tool-0.0.1a6.dist-info/METADATA,sha256=RbTU9FOtzLNXx1tSAUybDBzgyhFUymIeQk_idWpX-rw,12098
89
+ aa_intel_tool-0.0.1a6.dist-info/WHEEL,sha256=9QBuHhg6FNW7lppboF2vKVbCGTVzsFykgRQjjlajrhA,87
90
+ aa_intel_tool-0.0.1a6.dist-info/licenses/LICENSE,sha256=UTib95uJWe2NQIG3TzU8-Hm-eaEZFqv9fqsjNT_xKWU,35151
91
+ aa_intel_tool-0.0.1a6.dist-info/RECORD,,