Skip to content

Commit 3d747ce

Browse files
authored
Update batch and fix #341 (#343)
fix #341
2 parents a182461 + ac99ea0 commit 3d747ce

File tree

1,460 files changed

+16569
-10977
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

1,460 files changed

+16569
-10977
lines changed

.powershell/_includes/ClassificationHelpers.ps1

+7-2
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
$batchesInProgress = $null;
55
$batchesInProgressMax = 40;
66
$watermarkAgeLimit = (New-TimeSpan -Start (Get-Date "2025-02-18T09:00:00") -End (Get-Date)).Days
7-
$watermarkScoreLimit = 20
7+
$watermarkScoreLimit = 30
88
$watermarkCount = 1
99

1010
function Get-CatalogHashtable {
@@ -299,8 +299,13 @@ function Get-ClassificationsForType {
299299
$result = Get-ConfidenceFromAIResponse -AIResponseJson $aiResponseJson -hugoMarkdown $hugoMarkdown
300300
if ($result.reasoning -ne $null -and $result.category -ne "unknown") {
301301
$oldConfidence = $cachedData[$result.category]?.ai_confidence ?? 0
302-
$DaysAgo = [math]::Round(([DateTimeOffset]::Now - [DateTimeOffset]$cachedData[$result.category].calculated_at).TotalDays)
303302
$confidenceDiff = "{0}{1}" -f ($(if (($result.ai_confidence - $oldConfidence) -ge 0) { '+' } else { '-' }), [math]::Abs($result.ai_confidence - $oldConfidence))
303+
if ($cachedData[$result.category] -and $cachedData[$result.category].calculated_at) {
304+
$DaysAgo = [math]::Round(([DateTimeOffset]::Now - [DateTimeOffset]$cachedData[$result.category].calculated_at).TotalDays)
305+
}
306+
else {
307+
$DaysAgo = -1 # Or a default value like 0, depending on your needs
308+
}
304309
Write-InformationLog "Updating {category} confidence {diff}! The old confidence of {old} was calculated {daysago} days ago. The new confidence is {confidence}!" -PropertyValues $result.category, $confidenceDiff, $oldConfidence, $DaysAgo, $result.ai_confidence
305310
$CatalogFromCache[$result.category] = $result
306311
$cachedData[$result.category] = $result

.powershell/_includes/HugoHelpers.ps1

+3
Original file line numberDiff line numberDiff line change
@@ -175,6 +175,9 @@ function Update-StringList {
175175
}
176176
}
177177
}
178+
179+
# Remove any null values
180+
$frontMatter[$fieldName] = @($frontMatter[$fieldName] | Where-Object { $_ -ne $null })
178181

179182
# Ensure uniqueness while preserving the first occurrence’s casing
180183
$seen = @{}

.powershell/single-use/resources/Update-ClassisificationFrontMatter.ps1

+49
Original file line numberDiff line numberDiff line change
@@ -155,6 +155,55 @@ When generating the description, consider the following contexts and include rel
155155
Update-Field -frontMatter $hugoMarkdown.FrontMatter -fieldName 'headline' -fieldValue $headline -addAfter 'Instructions' -Overwrite
156156
}
157157

158+
# =================CONTENT====================
159+
160+
$classificationContentPrompt = @"
161+
You are an expert in Agile, Scrum, DevOps, and Evidence-Based Management.
162+
163+
Your task is to generate a **concise, engaging blog post** that explains a key topic within these fields. The post should be **direct, insightful, and no longer than 500 words**, keeping a sharp focus on the most essential aspects.
164+
165+
### **Content Requirements:**
166+
- **Explain the topic clearly and efficiently**, avoiding unnecessary context.
167+
- **Stay focused on its relevance and impact** in Agile, Scrum, DevOps, or business agility.
168+
- **Provide a brief historical or theoretical foundation** only if essential.
169+
- **Avoid common misconceptions**, but do not over-explain—only clarify where needed.
170+
- **Write in a free-flowing style**, **without headings or structured sections**.
171+
- **Maintain a professional but direct tone**, making every sentence count.
172+
- **Do not include phrases like "in conclusion" or summary-style wrap-ups**—let the post end naturally.
173+
- Keep it to two paragraphs at most.
174+
175+
Keep the writing **clear, to the point, and free of fluff**. Do not introduce the topic as a “classification” or “category.” Instead, simply **discuss the concept as if explaining it to an informed reader**.
176+
177+
**Topic Title:** $($hugoMarkdown.FrontMatter.title)
178+
**Current Description:** $($hugoMarkdown.FrontMatter.description)
179+
180+
### **Guidance for Generating the Content:**
181+
- Assume the reader **already understands Agile, Scrum, and DevOps**—get straight to the point.
182+
- **Do not exceed 500 words**.
183+
- **Do not use headings** or structured formatting—keep the flow natural.
184+
- **Use authoritative sources and theories**, favouring these contexts:
185+
186+
- **Kanban Context:** Kanban Guide, Daniel Vacanti, Donald Reinertsen, John Little
187+
- **Agile & Scrum Context:** Scrum Guide, Ken Schwaber, Martin Fowler, Mike Beedle, Ron Jeffries
188+
- **DevOps Context:** Gene Kim, Jez Humble, Patrick Debois, John Willis
189+
- **Lean Context:** Taiichi Ohno, Eliyahu M. Goldratt, W. Edwards Deming, Mary & Tom Poppendieck
190+
- **DevOps & Continuous Delivery Context:** Jez Humble, Dave Farley, Martin Fowler, Gene Kim
191+
- **Evidence-Based Management Context:** Ken Schwaber, Jeff Sutherland, Patricia Kong, Kurt Bittner
192+
- **Complexity Theory Context:** Dave Snowden, Cynefin Framework, Ralph Stacey, Mary Uhl-Bien
193+
194+
Your response should be **a fully structured blog post, ready for publication, without headings or formatting—just natural, concise, and engaging writing**.
195+
Do not enclose text in quotes.
196+
Do not generate a title; assume the topic title is the post title.
197+
"@
198+
199+
if (-not $hugoMarkdown.BodyContent) {
200+
# $ClassificationContent = Get-OpenAIResponse -Prompt $classificationContentPrompt
201+
202+
# $hugoMarkdown.BodyContent = $ClassificationContent
203+
# $updateDate = Get-Date -Format "yyyy-MM-ddTHH:mm:ss"
204+
# Update-Field -frontMatter $hugoMarkdown.FrontMatter -fieldName 'BodyContentGenDate' -fieldValue $updateDate -Overwrite
205+
}
206+
158207

159208
# =================COMPLETE===================
160209
Save-HugoMarkdown -hugoMarkdown $hugoMarkdown -Path $markdownFile

.powershell/single-use/resources/Update-ReourcesFrontMatter.ps1

+6-3
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
$levelSwitch.MinimumLevel = 'Debug'
1111

1212
# Iterate through each blog folder and update markdown files
13-
$outputDir = ".\site\content\resources"
13+
$outputDir = ".\site\content\resources\"
1414
$resources = $null
1515
# Get list of directories and select the first 10
1616
$resources = Get-ChildItem -Path $outputDir -Recurse -Filter "index.md" | Sort-Object { $_ } -Descending
@@ -194,6 +194,9 @@ while ($hugoMarkdownQueue.Count -gt 0 -or $hugoMarkdownBatchQueue.Count -gt 0) {
194194

195195
Remove-Field -frontMatter $hugoMarkdown.FrontMatter -fieldName 'aliasesFor404'
196196

197+
# Interim save, before posible longer actions
198+
Save-HugoMarkdown -hugoMarkdown $hugoMarkdown -Path $hugoMarkdown.FilePath
199+
197200
#================Themes, Categories, & TAGS==========================
198201
$BodyContent = $hugoMarkdown.BodyContent
199202
If ($hugoMarkdown.FrontMatter.ResourceType -eq "videos") {
@@ -208,13 +211,13 @@ while ($hugoMarkdownQueue.Count -gt 0 -or $hugoMarkdownBatchQueue.Count -gt 0) {
208211
# Update-StringList -frontMatter $hugoMarkdown.FrontMatter -fieldName 'marketing' -values @($categories) -Overwrite
209212
#-----------------Categories-------------------
210213
$categoryClassification = Get-ClassificationsForType -updateMissing -ClassificationType "categories" -hugoMarkdown $hugoMarkdown
211-
$categoryClassificationOrdered = Get-ClassificationOrderedList -byLevel -classifications $categoryClassification | Select-Object -First 3
214+
$categoryClassificationOrdered = Get-ClassificationOrderedList -minScore 50 -byLevel -classifications $categoryClassification | Select-Object -First 3
212215
$categories = $categoryClassificationOrdered | ForEach-Object { $_.category }
213216

214217
Update-StringList -frontMatter $hugoMarkdown.FrontMatter -fieldName 'categories' -values @($categories) -Overwrite
215218
#-----------------Tags-------------------
216219
$tagClassification = Get-ClassificationsForType -updateMissing -ClassificationType "tags" -hugoMarkdown $hugoMarkdown
217-
$tagClassificationOrdered = Get-ClassificationOrderedList -byLevel -classifications $tagClassification | Select-Object -First 10
220+
$tagClassificationOrdered = Get-ClassificationOrderedList -minScore 70 -classifications $tagClassification | Select-Object -First 10
218221
$tags = $tagClassificationOrdered | ForEach-Object { $_.category }
219222
Update-StringList -frontMatter $hugoMarkdown.FrontMatter -fieldName 'tags' -values @($tags) -Overwrite
220223
# =================COMPLETE===================

site/content/resources/blog/2014/2014-10-14-move-azure-storage-blob-another-store/data.index.classifications.json

+7-4
Original file line numberDiff line numberDiff line change
@@ -1180,11 +1180,14 @@
11801180
},
11811181
"Troubleshooting": {
11821182
"category": "Troubleshooting",
1183-
"calculated_at": "2025-02-17T09:08:47",
1184-
"ai_confidence": 50,
1183+
"calculated_at": "2025-03-13T17:03:39",
1184+
"ai_confidence": 62.0,
1185+
"ai_mentions": 15.0,
1186+
"ai_alignment": 35.0,
1187+
"ai_depth": 12.0,
11851188
"non_ai_confidence": 0,
1186-
"final_score": 45.0,
1187-
"reasoning": "The content discusses the complications and challenges encountered while moving an Azure storage blob, including the need for additional PowerShell commands for authentication. It provides insights into diagnosing and resolving issues related to the process of moving VHDs, but the primary focus is more on the action of moving rather than a deeper troubleshooting analysis.",
1189+
"final_score": 56.0,
1190+
"reasoning": "The content discusses the process of moving an Azure storage blob, highlighting complications and the need for additional PowerShell commands due to authentication issues. While it touches on a technical problem and provides a solution, it lacks a structured approach to troubleshooting and does not delve deeply into diagnosing or resolving broader issues. The primary focus is on executing a specific task rather than a comprehensive troubleshooting methodology.",
11881191
"level": "Tertiary"
11891192
},
11901193
"Experimentation": {

site/content/resources/blog/2014/2014-10-14-move-azure-storage-blob-another-store/index.md

-3
Original file line numberDiff line numberDiff line change
@@ -29,9 +29,6 @@ aliasesArchive:
2929
tags:
3030
- Practical Techniques and Tooling
3131
- Install and Configuration
32-
- Software Development
33-
- System Configuration
34-
- Pragmatic Thinking
3532
categories: []
3633
preview: nakedalm-windows-logo-4-4.png
3734

site/content/resources/blog/2014/2014-10-15-ndc-london-second-look-team-foundation-server-vso/data.index.classifications.json

+7-4
Original file line numberDiff line numberDiff line change
@@ -253,11 +253,14 @@
253253
},
254254
"Product Delivery": {
255255
"category": "Product Delivery",
256-
"calculated_at": "2025-02-15T08:57:40",
257-
"ai_confidence": 80,
256+
"calculated_at": "2025-03-13T17:03:36",
257+
"ai_confidence": 82.0,
258+
"ai_mentions": 15,
259+
"ai_alignment": 32,
260+
"ai_depth": 36,
258261
"non_ai_confidence": 10,
259-
"final_score": 73.0,
260-
"reasoning": "The content discusses various aspects of delivering software products, including the application lifecycle management, planning, testing, and deployment using Team Foundation Server (TFS) and Visual Studio Online (VSO). It focuses heavily on methodologies and practices related to product delivery.",
262+
"final_score": 75.0,
263+
"reasoning": "The content extensively discusses the end-to-end process of product delivery using Team Foundation Server (TFS) and Visual Studio Online (VSO). It covers methodologies such as Agile Project Management, iterative development, and the importance of testing and deployment strategies. The detailed scenarios provided illustrate practical applications of product delivery concepts, including feature implementation and bug fixing, which align closely with the core themes of the category. The depth of discussion is significant, with specific examples and a clear focus on delivering software products effectively.",
261264
"level": "Secondary"
262265
},
263266
"Beta Codex": {

site/content/resources/blog/2014/2014-10-15-ndc-london-second-look-team-foundation-server-vso/index.md

+9
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,15 @@ aliasesArchive:
3232
- /resources/blog/ndc-london-second-look-team-foundation-server-vso
3333
tags:
3434
- Application Lifecycle Management
35+
- Events and Presentations
36+
- Practical Techniques and Tooling
37+
- Product Delivery
38+
- Agile Project Management
39+
- Automated Testing
40+
- Release Management
41+
- Test First Development
42+
- Agile Planning
43+
- Continuous Delivery
3544
categories:
3645
- DevOps
3746
- Engineering Excellence

site/content/resources/blog/2014/2014-10-16-uncommitted-changes-messing-sync-git-visual-studio/index.md

-2
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,6 @@ aliasesArchive:
2929
tags:
3030
- Software Development
3131
- Modern Source Control
32-
- Troubleshooting
33-
- Practical Techniques and Tooling
3432
categories: []
3533
preview: naked-alm-git-2-2.png
3634

site/content/resources/blog/2014/2014-10-21-reuse-msdn-benefits-org-id/index.md

+1-3
Original file line numberDiff line numberDiff line change
@@ -26,9 +26,7 @@ aliasesArchive:
2626
- /reuse-your-msdn-benefits-with-your-org-id
2727
- /blog/reuse-your-msdn-benefits-with-your-org-id
2828
- /resources/blog/reuse-msdn-benefits-org-id
29-
tags:
30-
- Install and Configuration
31-
- Troubleshooting
29+
tags: []
3230
categories: []
3331
preview: nakedalm-experts-visual-studio-alm-7-7.png
3432

site/content/resources/blog/2014/2014-10-22-announcing-scrum-at-scale-workshop-scrum-org/data.index.classifications.json

+7-4
Original file line numberDiff line numberDiff line change
@@ -298,11 +298,14 @@
298298
},
299299
"Value Delivery": {
300300
"category": "Value Delivery",
301-
"calculated_at": "2025-02-15T00:12:56",
302-
"ai_confidence": 70,
301+
"calculated_at": "2025-03-13T17:03:32",
302+
"ai_confidence": 72.0,
303+
"ai_mentions": 15,
304+
"ai_alignment": 32,
305+
"ai_depth": 25,
303306
"non_ai_confidence": 10,
304-
"final_score": 64.0,
305-
"reasoning": "The content discusses the Scrum at Scale Workshop and its role in facilitating organisational change and improving agility, which aligns with value delivery principles. However, the primary focus is on the workshop itself rather than directly on value delivery strategies.",
307+
"final_score": 66.0,
308+
"reasoning": "The content discusses the Scrum at Scale Workshop and its relevance to organisational change, which aligns with the principles of iterative development and continuous delivery of value. It mentions Evidence-Based Management and the Agility Index, which are tools for measuring and maximising customer value. However, while it touches on these concepts, the primary focus is on the workshop itself rather than a deep exploration of value delivery strategies, leading to a moderately high confidence score.",
306309
"level": "Secondary"
307310
},
308311
"Azure DevOps": {

site/content/resources/blog/2014/2014-10-23-tfs-build-reports-licencies-licx-unable-load-type/data.index.classifications.json

+7-4
Original file line numberDiff line numberDiff line change
@@ -1186,11 +1186,14 @@
11861186
},
11871187
"Troubleshooting": {
11881188
"category": "Troubleshooting",
1189-
"calculated_at": "2025-02-15T00:11:24",
1190-
"ai_confidence": 80,
1189+
"calculated_at": "2025-03-13T17:03:28",
1190+
"ai_confidence": 87.0,
1191+
"ai_mentions": 80.0,
1192+
"ai_alignment": 90.0,
1193+
"ai_depth": 85.0,
11911194
"non_ai_confidence": 0,
1192-
"final_score": 72.0,
1193-
"reasoning": "The content primarily discusses a specific build error related to a licencies.licx file and the steps taken to diagnose and resolve the issue, making troubleshooting the central theme.",
1195+
"final_score": 78.0,
1196+
"reasoning": "The content explicitly discusses a specific issue related to build errors in a software development context, focusing on the resolution of a type loading error caused by version mismatches in a licenses.licx file. It provides detailed insights into the troubleshooting process, including the identification of missing components and the challenges faced during the transition to a new build server. The depth of discussion is significant, as it outlines the steps taken to diagnose and resolve the issue, making it highly relevant to the troubleshooting category.",
11941197
"level": "Secondary"
11951198
},
11961199
"Experimentation": {

site/content/resources/blog/2014/2014-10-23-tfs-build-reports-licencies-licx-unable-load-type/index.md

+1-6
Original file line numberDiff line numberDiff line change
@@ -28,15 +28,10 @@ aliasesArchive:
2828
- /resources/blog/tfs-build-reports-licencies-licx-unable-load-type
2929
tags:
3030
- Software Development
31+
- Troubleshooting
3132
- Pragmatic Thinking
3233
- Install and Configuration
33-
- Troubleshooting
3434
- Practical Techniques and Tooling
35-
- System Configuration
36-
- Continuous Integration
37-
- Operational Practices
38-
- Release Management
39-
- Technical Excellence
4035
categories:
4136
- DevOps
4237
- Engineering Excellence

site/content/resources/blog/2014/2014-10-28-use-corporate-identities-existing-vso-accounts/data.index.classifications.json

+7-4
Original file line numberDiff line numberDiff line change
@@ -592,11 +592,14 @@
592592
},
593593
"Software Development": {
594594
"category": "Software Development",
595-
"calculated_at": "2025-02-17T09:08:46",
596-
"ai_confidence": 50,
595+
"calculated_at": "2025-03-13T17:03:26",
596+
"ai_confidence": 62.0,
597+
"ai_mentions": 12,
598+
"ai_alignment": 28,
599+
"ai_depth": 30,
597600
"non_ai_confidence": 0,
598-
"final_score": 45.0,
599-
"reasoning": "The content discusses linking Visual Studio Online (VSO) accounts with Azure and Active Directory, which relates to software development practices, particularly in the context of user management and integration within development environments. However, the primary focus is on account management rather than broader software development methodologies or practices.",
601+
"final_score": 56.0,
602+
"reasoning": "The content discusses the integration of Visual Studio Online (VSO) with Azure Active Directory, which is relevant to software development practices, particularly in the context of managing user identities and access in software projects. It provides practical steps for linking accounts and ensuring continuity, which aligns with best practices in collaborative development and version control. However, the focus is more on account management and less on broader software development methodologies or coding practices, leading to a moderate confidence score.",
600603
"level": "Tertiary"
601604
},
602605
"Agile Project Management": {

site/content/resources/blog/2014/2014-10-28-use-corporate-identities-existing-vso-accounts/index.md

-2
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,6 @@ tags:
3131
- System Configuration
3232
- Windows
3333
- Azure DevOps
34-
- Practical Techniques and Tooling
35-
- Troubleshooting
3634
categories: []
3735
preview: nakedalm-experts-visual-studio-alm-11-11.png
3836

site/content/resources/blog/2014/2014-11-11-find-mappings-states-defined-test-suit-work-item-type/data.index.classifications.json

+8-5
Original file line numberDiff line numberDiff line change
@@ -1183,11 +1183,14 @@
11831183
},
11841184
"Troubleshooting": {
11851185
"category": "Troubleshooting",
1186-
"calculated_at": "2025-02-15T08:56:55",
1187-
"ai_confidence": 80,
1188-
"non_ai_confidence": 0,
1189-
"final_score": 72.0,
1190-
"reasoning": "The content focuses primarily on diagnosing and resolving a specific issue related to TFS upgrades, detailing the nature of the error, case sensitivity problems, and offering clear solutions. Troubleshooting is the central theme.",
1186+
"calculated_at": "2025-03-13T17:03:21",
1187+
"ai_confidence": 87.0,
1188+
"ai_mentions": 90.0,
1189+
"ai_alignment": 85.0,
1190+
"ai_depth": 80.0,
1191+
"non_ai_confidence": 0,
1192+
"final_score": 78.0,
1193+
"reasoning": "The content explicitly discusses a specific error encountered after an upgrade, detailing the issue and providing two clear solutions for resolution. It aligns well with the core themes of troubleshooting by identifying a technical problem, explaining its cause, and offering actionable solutions. The depth of discussion is substantial, as it includes specific examples and code snippets to illustrate the solutions, making it a strong fit for the troubleshooting category.",
11911194
"level": "Secondary"
11921195
},
11931196
"Experimentation": {

site/content/resources/blog/2014/2014-11-11-find-mappings-states-defined-test-suit-work-item-type/index.md

+1-4
Original file line numberDiff line numberDiff line change
@@ -27,14 +27,11 @@ aliasesArchive:
2727
- /blog/could-not-find-mappings-for-all-states-defined-in-'test-suit'-work-item-type
2828
- /resources/blog/find-mappings-states-defined-test-suit-work-item-type
2929
tags:
30+
- Troubleshooting
3031
- Install and Configuration
3132
- System Configuration
3233
- Software Development
33-
- Troubleshooting
3434
- Practical Techniques and Tooling
35-
- Azure DevOps
36-
- Pragmatic Thinking
37-
- Technical Excellence
3835
categories: []
3936
preview: nakedalm-experts-visual-studio-alm-3-3.png
4037

site/content/resources/blog/2014/2014-11-12-installing-visual-studio-2015-side-side-2013-windows-10/index.md

+1
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ aliasesArchive:
2828
- /resources/blog/installing-visual-studio-2015-side-side-2013-windows-10
2929
tags:
3030
- Windows
31+
- Install and Configuration
3132
categories: []
3233
preview: nakedalm-experts-visual-studio-alm-8-8.png
3334

site/content/resources/blog/2014/2014-11-14-configuring-dc-azure-aad-integrated-release-management/data.index.classifications.json

+8-5
Original file line numberDiff line numberDiff line change
@@ -1141,12 +1141,15 @@
11411141
},
11421142
"Deployment Strategies": {
11431143
"category": "Deployment Strategies",
1144-
"calculated_at": "2025-02-17T09:08:46",
1145-
"ai_confidence": 50,
1144+
"calculated_at": "2025-03-13T17:03:18",
1145+
"ai_confidence": 32.0,
1146+
"ai_mentions": 15.0,
1147+
"ai_alignment": 35.0,
1148+
"ai_depth": 25.0,
11461149
"non_ai_confidence": 0,
1147-
"final_score": 45.0,
1148-
"reasoning": "The content discusses configuring a domain controller in Azure, which relates to deployment practices in a cloud environment. However, it primarily focuses on the setup process rather than specific deployment strategies.",
1149-
"level": "Tertiary"
1150+
"final_score": 29.0,
1151+
"reasoning": "The content primarily focuses on configuring a domain controller in Azure, which is more about setting up infrastructure rather than discussing deployment strategies. While it touches on aspects of deployment, such as creating virtual machines and managing resources, it lacks a direct focus on methodologies like Blue-Green Deployments or Canary Releases. The discussion is more technical and procedural, which does not align closely with the core themes of deployment strategies.",
1152+
"level": "Quaternary"
11501153
},
11511154
"Large Scale Agility": {
11521155
"category": "Large Scale Agility",

site/content/resources/blog/2014/2014-11-14-configuring-dc-azure-aad-integrated-release-management/index.md

+4
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,10 @@ aliasesArchive:
2929
tags:
3030
- Windows
3131
- Install and Configuration
32+
- Practical Techniques and Tooling
33+
- System Configuration
34+
- Technical Mastery
35+
- Software Development
3236
categories:
3337
- DevOps
3438
preview: nakedalm-windows-logo-22-22.png

0 commit comments

Comments
 (0)