From ab2510607a4e492581fb5ff03f89f038108dd7fb Mon Sep 17 00:00:00 2001
From: Herman Singh
Date: Mon, 8 Jun 2020 16:38:34 -0400
Subject: [PATCH 01/79] Add arduino icon
---
icons/arduino/arduino-original-wordmark.svg | 1 +
1 file changed, 1 insertion(+)
create mode 100644 icons/arduino/arduino-original-wordmark.svg
diff --git a/icons/arduino/arduino-original-wordmark.svg b/icons/arduino/arduino-original-wordmark.svg
new file mode 100644
index 000000000..49cb0c1ab
--- /dev/null
+++ b/icons/arduino/arduino-original-wordmark.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
From fceb45ea2fb4b1fb4d493352a0abc0d09ed9482e Mon Sep 17 00:00:00 2001
From: Herman Singh
Date: Fri, 8 Jan 2021 13:51:50 -0500
Subject: [PATCH 02/79] Update all icon types
---
icons/arduino/arduino-original-wordmark.svg | 112 +++++++++++++++++++-
icons/arduino/arduino-original.svg | 94 ++++++++++++++++
icons/arduino/arduino-plain-wordmark.svg | 111 +++++++++++++++++++
icons/arduino/arduino-plain.svg | 94 ++++++++++++++++
4 files changed, 410 insertions(+), 1 deletion(-)
create mode 100644 icons/arduino/arduino-original.svg
create mode 100644 icons/arduino/arduino-plain-wordmark.svg
create mode 100644 icons/arduino/arduino-plain.svg
diff --git a/icons/arduino/arduino-original-wordmark.svg b/icons/arduino/arduino-original-wordmark.svg
index 49cb0c1ab..9d0332116 100644
--- a/icons/arduino/arduino-original-wordmark.svg
+++ b/icons/arduino/arduino-original-wordmark.svg
@@ -1 +1,111 @@
-
\ No newline at end of file
+
+
+
+
+
+
+
+
+
+
+
+ image/svg+xml
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/icons/arduino/arduino-original.svg b/icons/arduino/arduino-original.svg
new file mode 100644
index 000000000..dfbbf2d21
--- /dev/null
+++ b/icons/arduino/arduino-original.svg
@@ -0,0 +1,94 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ image/svg+xml
+
+
+
+
+
+
+
+
+
+
+
diff --git a/icons/arduino/arduino-plain-wordmark.svg b/icons/arduino/arduino-plain-wordmark.svg
new file mode 100644
index 000000000..9d0332116
--- /dev/null
+++ b/icons/arduino/arduino-plain-wordmark.svg
@@ -0,0 +1,111 @@
+
+
+
+
+
+
+
+
+
+
+
+ image/svg+xml
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/icons/arduino/arduino-plain.svg b/icons/arduino/arduino-plain.svg
new file mode 100644
index 000000000..dfbbf2d21
--- /dev/null
+++ b/icons/arduino/arduino-plain.svg
@@ -0,0 +1,94 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ image/svg+xml
+
+
+
+
+
+
+
+
+
+
+
From 2c5003186866e3c6dcc4eb555e7461c66b52ee1a Mon Sep 17 00:00:00 2001
From: Herman Singh
Date: Fri, 8 Jan 2021 13:52:00 -0500
Subject: [PATCH 03/79] Add to icon registry
---
devicon.json | 22 ++++++++++++++++++++++
1 file changed, 22 insertions(+)
diff --git a/devicon.json b/devicon.json
index c4157bd3e..570c89d74 100644
--- a/devicon.json
+++ b/devicon.json
@@ -156,6 +156,28 @@
}
]
},
+ {
+ "name": "arduino",
+ "tags": [
+ "microcontroller"
+ ],
+ "versions": {
+ "svg": [
+ "original",
+ "original-wordmark",
+ "plain",
+ "plain-wordmark"
+ ],
+ "font": [
+ "original",
+ "original-wordmark",
+ "plain",
+ "plain-wordmark"
+ ]
+ },
+ "color": "#00979d",
+ "aliases": []
+ },
{
"name": "atom",
"tags": [
From fb6d1fd364e8e19c6a659290a43aac574fbfa4d3 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Enis=20Muli=C4=87?=
Date: Thu, 18 Mar 2021 09:21:26 +0100
Subject: [PATCH 04/79] Update arduino icons
---
devicon.json | 2 --
icons/arduino/arduino-original-wordmark.svg | 21 ++++-----------------
icons/arduino/arduino-original.svg | 13 ++++---------
icons/arduino/arduino-plain-wordmark.svg | 21 ++++-----------------
icons/arduino/arduino-plain.svg | 13 ++++---------
5 files changed, 16 insertions(+), 54 deletions(-)
diff --git a/devicon.json b/devicon.json
index e935377cc..defb3e940 100644
--- a/devicon.json
+++ b/devicon.json
@@ -220,8 +220,6 @@
"plain-wordmark"
],
"font": [
- "original",
- "original-wordmark",
"plain",
"plain-wordmark"
]
diff --git a/icons/arduino/arduino-original-wordmark.svg b/icons/arduino/arduino-original-wordmark.svg
index c6b8158dc..4efbde1f8 100644
--- a/icons/arduino/arduino-original-wordmark.svg
+++ b/icons/arduino/arduino-original-wordmark.svg
@@ -1,22 +1,9 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
diff --git a/icons/arduino/arduino-original.svg b/icons/arduino/arduino-original.svg
index 041d5aef8..b79e41b8d 100644
--- a/icons/arduino/arduino-original.svg
+++ b/icons/arduino/arduino-original.svg
@@ -1,13 +1,8 @@
-
-
-
-
-
-
-
-
-
+
+
+
+
diff --git a/icons/arduino/arduino-plain-wordmark.svg b/icons/arduino/arduino-plain-wordmark.svg
index c6b8158dc..7e6b3b58e 100644
--- a/icons/arduino/arduino-plain-wordmark.svg
+++ b/icons/arduino/arduino-plain-wordmark.svg
@@ -1,22 +1,9 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
diff --git a/icons/arduino/arduino-plain.svg b/icons/arduino/arduino-plain.svg
index 041d5aef8..f5339a0b4 100644
--- a/icons/arduino/arduino-plain.svg
+++ b/icons/arduino/arduino-plain.svg
@@ -1,13 +1,8 @@
-
-
-
-
-
-
-
-
-
+
+
+
+
From 8e8a8d3e0e82de7c38135dbea648372e3cd82685 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Enis=20Muli=C4=87?=
Date: Sat, 10 Apr 2021 00:11:20 +0200
Subject: [PATCH 05/79] Update arduino icons
---
.vscode/settings.json | 3 +++
icons/arduino/arduino-original-wordmark.svg | 18 +++++++++++++-----
icons/arduino/arduino-original.svg | 10 +++++-----
icons/arduino/arduino-plain-wordmark.svg | 18 +++++++++++++-----
icons/arduino/arduino-plain.svg | 10 +++++-----
5 files changed, 39 insertions(+), 20 deletions(-)
create mode 100644 .vscode/settings.json
diff --git a/.vscode/settings.json b/.vscode/settings.json
new file mode 100644
index 000000000..d09a50ca3
--- /dev/null
+++ b/.vscode/settings.json
@@ -0,0 +1,3 @@
+{
+ "svg.preview.background": "transparent"
+}
\ No newline at end of file
diff --git a/icons/arduino/arduino-original-wordmark.svg b/icons/arduino/arduino-original-wordmark.svg
index 4efbde1f8..21300955c 100644
--- a/icons/arduino/arduino-original-wordmark.svg
+++ b/icons/arduino/arduino-original-wordmark.svg
@@ -1,9 +1,17 @@
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/icons/arduino/arduino-original.svg b/icons/arduino/arduino-original.svg
index b79e41b8d..c55caa352 100644
--- a/icons/arduino/arduino-original.svg
+++ b/icons/arduino/arduino-original.svg
@@ -1,8 +1,8 @@
-
-
-
-
+
+
+
+
-
+
\ No newline at end of file
diff --git a/icons/arduino/arduino-plain-wordmark.svg b/icons/arduino/arduino-plain-wordmark.svg
index 7e6b3b58e..e37c211de 100644
--- a/icons/arduino/arduino-plain-wordmark.svg
+++ b/icons/arduino/arduino-plain-wordmark.svg
@@ -1,9 +1,17 @@
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
-
+
\ No newline at end of file
diff --git a/icons/arduino/arduino-plain.svg b/icons/arduino/arduino-plain.svg
index f5339a0b4..6853bd2d6 100644
--- a/icons/arduino/arduino-plain.svg
+++ b/icons/arduino/arduino-plain.svg
@@ -1,8 +1,8 @@
-
-
-
-
+
+
+
+
-
+
\ No newline at end of file
From 55813989456bc8e5d830cc627476b75dc82d8e67 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Enis=20Muli=C4=87?=
Date: Sat, 10 Apr 2021 00:13:53 +0200
Subject: [PATCH 06/79] Remove vscode folder
---
.vscode/settings.json | 3 ---
1 file changed, 3 deletions(-)
delete mode 100644 .vscode/settings.json
diff --git a/.vscode/settings.json b/.vscode/settings.json
deleted file mode 100644
index d09a50ca3..000000000
--- a/.vscode/settings.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "svg.preview.background": "transparent"
-}
\ No newline at end of file
From b8d6724692146cbd1ef6d41efdb81886559b4e9e Mon Sep 17 00:00:00 2001
From: David Leal
Date: Fri, 9 Apr 2021 19:50:40 -0500
Subject: [PATCH 07/79] Update icons/arduino/arduino-original-wordmark.svg
---
icons/arduino/arduino-original-wordmark.svg | 18 +-----------------
1 file changed, 1 insertion(+), 17 deletions(-)
diff --git a/icons/arduino/arduino-original-wordmark.svg b/icons/arduino/arduino-original-wordmark.svg
index 21300955c..70f6465d6 100644
--- a/icons/arduino/arduino-original-wordmark.svg
+++ b/icons/arduino/arduino-original-wordmark.svg
@@ -1,17 +1 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
From 992f7417b91efee9a43aa0af58b12c14feaf2201 Mon Sep 17 00:00:00 2001
From: David Leal
Date: Fri, 9 Apr 2021 19:50:54 -0500
Subject: [PATCH 08/79] Update icons/arduino/arduino-original.svg
---
icons/arduino/arduino-original.svg | 9 +--------
1 file changed, 1 insertion(+), 8 deletions(-)
diff --git a/icons/arduino/arduino-original.svg b/icons/arduino/arduino-original.svg
index c55caa352..b49f89ac4 100644
--- a/icons/arduino/arduino-original.svg
+++ b/icons/arduino/arduino-original.svg
@@ -1,8 +1 @@
-
-
-
-
-
-
-
-
\ No newline at end of file
+
From e193cecf402d3c21284c882a655aab91c14f41db Mon Sep 17 00:00:00 2001
From: David Leal
Date: Fri, 9 Apr 2021 19:51:46 -0500
Subject: [PATCH 09/79] Update icons/arduino/arduino-plain-wordmark.svg
---
icons/arduino/arduino-plain-wordmark.svg | 18 +-----------------
1 file changed, 1 insertion(+), 17 deletions(-)
diff --git a/icons/arduino/arduino-plain-wordmark.svg b/icons/arduino/arduino-plain-wordmark.svg
index e37c211de..5d56b0b53 100644
--- a/icons/arduino/arduino-plain-wordmark.svg
+++ b/icons/arduino/arduino-plain-wordmark.svg
@@ -1,17 +1 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
+
From 8494d0ef96a9fc5af54cca6b0f9f6e385c5952a9 Mon Sep 17 00:00:00 2001
From: David Leal
Date: Fri, 9 Apr 2021 19:52:01 -0500
Subject: [PATCH 10/79] Update icons/arduino/arduino-plain.svg
---
icons/arduino/arduino-plain.svg | 9 +--------
1 file changed, 1 insertion(+), 8 deletions(-)
diff --git a/icons/arduino/arduino-plain.svg b/icons/arduino/arduino-plain.svg
index 6853bd2d6..3e5b437c2 100644
--- a/icons/arduino/arduino-plain.svg
+++ b/icons/arduino/arduino-plain.svg
@@ -1,8 +1 @@
-
-
-
-
-
-
-
-
\ No newline at end of file
+
From 6868f5412bfb04de5227c787ae540c574a5d4940 Mon Sep 17 00:00:00 2001
From: Clemens Bastian <8781699+amacado@users.noreply.github.com>
Date: Sat, 10 Apr 2021 10:41:30 +0200
Subject: [PATCH 11/79] enhance guidelines for drafting a new release
---
CONTRIBUTING.md | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index b86006dd9..bab00640e 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -335,10 +335,10 @@ We are running a Discord server. You can go here to talk, discuss, and more with
Push the branch draft-release
Manually trigger the workflow build_icons.yml (which has a workflow_dispatch event trigger) and select the branch draft-release as target branch. This will build a font version of all icons using icomoon and automatically creates a pull request to merge the build result back into draft-release
Review and approve the auto-create pull request created by the action of the step above
- Create a pull request towards development. Mention the release number in the pull request title and add information about all new icons, fixes, features and enhancements in the description of the pull request. Take the commits as a guideline. It's also a good idea to mention and thank all contributions who participated in the release (take description of #504 as an example).
- Wait for review and approval of the pull request (DON'T perform a squash-merge)
+ Create a pull request towards development. Mention the release number in the pull request title (like "Build preparation for release vMAJOR .MINOR .PATCH ) and add information about all new icons, fixes, features and enhancements in the description of the pull request. Take the commits as a guideline. It's also a good idea to mention and thank all contributions who participated in the release (take description of #504 as an example).
+ Wait for review and approval of the pull request (you can perform a squash-merge)
Once merged create a pull request with BASE master and HEAD development. Copy the description of the earlier pull request.
Since it was already approved in the 'development' stage a maintainer is allowed to merge it (DON'T perform a squash-merge).
Create a new release using vMAJOR .MINOR .PATCH as tag and release title. Use the earlier created description as description of the release.
Publishing the release will trigger the npm_publish.yml workflow which will execute a npm publish leading to a updated npm package (vMAJOR .MINOR .PATCH ).
-
\ No newline at end of file
+
From 4aec7b4750cc9595f71861739028201e107f61dd Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Sat, 10 Apr 2021 20:53:14 +0200
Subject: [PATCH 12/79] Bump ini from 1.3.5 to 1.3.8 (#562)
Bumps [ini](https://github.com/isaacs/ini) from 1.3.5 to 1.3.8.
- [Release notes](https://github.com/isaacs/ini/releases)
- [Commits](https://github.com/isaacs/ini/compare/v1.3.5...v1.3.8)
Signed-off-by: dependabot[bot]
Co-authored-by: Thomas Bui <43018778+Thomas-Boi@users.noreply.github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Clemens Bastian <8781699+amacado@users.noreply.github.com>
---
package-lock.json | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/package-lock.json b/package-lock.json
index 5cbd4bcf6..22d8f021c 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1963,9 +1963,9 @@
"dev": true
},
"ini": {
- "version": "1.3.5",
- "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz",
- "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==",
+ "version": "1.3.8",
+ "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz",
+ "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==",
"dev": true
},
"interpret": {
From ec6a00abf71a2478c3dad5e13eea0a13ff52ce5c Mon Sep 17 00:00:00 2001
From: Thomas Bui <43018778+Thomas-Boi@users.noreply.github.com>
Date: Sat, 10 Apr 2021 14:26:47 -0700
Subject: [PATCH 13/79] Added a section for common bugs in the CONTRIBUTING
(#563)
---
CONTRIBUTING.md | 68 ++++++++++++++++++++++++++++++++++++++++---------
1 file changed, 56 insertions(+), 12 deletions(-)
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index bab00640e..2f825964a 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -14,7 +14,7 @@ First of all, thanks for taking the time to contribute! This project can only gr
Example
Requesting An Icon
Maintainer/Reviewer/Teams
- Regarding the Build Script
+ The Build Script: how it works and its quirks
Discord server
Release strategy, conventions, preparation and execution
@@ -115,14 +115,29 @@ First of all, thanks for taking the time to contribute! This project can only gr
{
- "name": string, // the official name of the technology. Must be lower case, no space and don't have the dash '-' character.
- "tags": string[], // list of tags relating to the technology for search purpose
+ // the official name of the technology. Must be lower case, no space and don't have the dash '-' character.
+ "name": string,
+
+ // list of tags relating to the technology for search purpose
+ "tags": string[],
+
+ // keep tracks of the different versions that you have.
"versions": {
- "svg": VersionString[], // list the svgs that you have
- "font": VersionString[] // list the fonts acceptable versions that you have
+ // list the svgs that you have
+ "svg": VersionString[],
+
+ // list the fonts acceptable versions that you have
+ "font": VersionString[]
},
- "color": string, // the main color of the logo. Only track 1 color
- "aliases": AliasObj[] // keeps track of the aliases for the font versions ONLY
+
+ // the main color of the logo. Only track 1 color
+ "color": string,
+
+ // keeps track of the aliases for the font versions ONLY
+ // see the Example section for more details
+ // NOTE: this attribute is not required from now on (see this )
+ // it is only being kept for backward compatibility
+ "aliases": AliasObj[]
}
@@ -294,21 +309,50 @@ As an example, let's assume you have created the svgs for Redhat and Amazon Web
-Regarding The Build Script
+The Build Script: how it works and its quirks
To make adding icons easier for repo maintainers, we rely on GitHub Actions, Python, Selenium, and Gulp to automate our tasks.
So far, the tasks in the build script are:
-There are also other tasks that we are automating, such as:
-
+There are some quirks and bugs that the build scripts might run into. Listed below are the common ones and their solution
+
+ No connection could be made because the target machine actively refused it. (os error 10061)
+
+ See this action for an example.
+ Caused by Selenium being unable to connect to the Icomoon website. It is unknown why this happens but the hypothesis is Icomoon blocks Selenium's multiple connection request and treats them as bots. See this .
+ Solution: wait for a few minutes and rerun the script. Repeat until it works.
+
+
+ SHA Integrity
+
+ See this action for an example.
+ Caused by the package-lock.json. Most likely the result of a dependabot update but not 100% sure.
+ Solution: Remove the package-lock.json and run `npm install` to generate a new file. Commit and push.
+
+
+ Wrong PR Title
+
+ The bot-peek script relies on the PR title to find the icon that was added in the PR. If the format doesn't match what is specified in Overview on Submitting Icon , the bot will fail.
+ Solution: Ensure the name of the PR follows the convention.
+
+
+ Peek bot fails when an icon is updated
+
+ See this PR for an example.
+ The bot-peek script compares the devicon.json and icomoon.json to limit the icon uploading process. An update in the repo won't change anything in the devicon.json and icomoon.json so the script would report that nothing is found.
+ Solution: Follow the steps laid out here
+
+
+
+
Discord server
We are running a Discord server. You can go here to talk, discuss, and more with the maintainers and other people, too. Here's the invitation: https://discord.gg/hScy8KWACQ. If you don't have a GitHub account but want to suggest ideas or new icons, you can do that here in our Discord channel.
From 46c6df232a97eef95b85764f588740f97bdb5169 Mon Sep 17 00:00:00 2001
From: jeovazero
Date: Mon, 12 Apr 2021 20:32:02 -0300
Subject: [PATCH 14/79] new icon: nixos (original, original-wordmark, plain,
plain-wordmark) (#564)
* new icon: nixos (original, original-wordmark, plain, plain-wordmark)
* icon nixos: optimize the svgs
* icon nixos: add newline at end of svgs
* icon nixos: remove extra line
---
devicon.json | 20 ++++++++++++++++++++
icons/nixos/nixos-original-wordmark.svg | 1 +
icons/nixos/nixos-original.svg | 1 +
icons/nixos/nixos-plain-wordmark.svg | 1 +
icons/nixos/nixos-plain.svg | 1 +
5 files changed, 24 insertions(+)
create mode 100644 icons/nixos/nixos-original-wordmark.svg
create mode 100644 icons/nixos/nixos-original.svg
create mode 100644 icons/nixos/nixos-plain-wordmark.svg
create mode 100644 icons/nixos/nixos-plain.svg
diff --git a/devicon.json b/devicon.json
index ace8ef8cd..832303c00 100644
--- a/devicon.json
+++ b/devicon.json
@@ -2345,6 +2345,26 @@
}
]
},
+ {
+ "name": "nixos",
+ "tags": [
+ "os"
+ ],
+ "versions": {
+ "svg": [
+ "original",
+ "original-wordmark",
+ "plain",
+ "plain-wordmark"
+ ],
+ "font": [
+ "plain",
+ "plain-wordmark"
+ ]
+ },
+ "color": "#5277C3",
+ "aliases": []
+ },
{
"name": "nodejs",
"tags": [
diff --git a/icons/nixos/nixos-original-wordmark.svg b/icons/nixos/nixos-original-wordmark.svg
new file mode 100644
index 000000000..4c981c370
--- /dev/null
+++ b/icons/nixos/nixos-original-wordmark.svg
@@ -0,0 +1 @@
+
diff --git a/icons/nixos/nixos-original.svg b/icons/nixos/nixos-original.svg
new file mode 100644
index 000000000..4ac858fc0
--- /dev/null
+++ b/icons/nixos/nixos-original.svg
@@ -0,0 +1 @@
+
diff --git a/icons/nixos/nixos-plain-wordmark.svg b/icons/nixos/nixos-plain-wordmark.svg
new file mode 100644
index 000000000..71b914505
--- /dev/null
+++ b/icons/nixos/nixos-plain-wordmark.svg
@@ -0,0 +1 @@
+
diff --git a/icons/nixos/nixos-plain.svg b/icons/nixos/nixos-plain.svg
new file mode 100644
index 000000000..b07e01cdb
--- /dev/null
+++ b/icons/nixos/nixos-plain.svg
@@ -0,0 +1 @@
+
From e03bbbfdad9cee7074a663468492271306928cc7 Mon Sep 17 00:00:00 2001
From: Matt Koskela
Date: Wed, 21 Apr 2021 22:20:06 -0700
Subject: [PATCH 15/79] feat: Added perl icons
---
devicon.json | 20 +++++++++++++
icons/perl/original.svg | 64 +++++++++++++++++++++++++++++++++++++++++
icons/perl/plain.svg | 57 ++++++++++++++++++++++++++++++++++++
3 files changed, 141 insertions(+)
create mode 100644 icons/perl/original.svg
create mode 100644 icons/perl/plain.svg
diff --git a/devicon.json b/devicon.json
index ace8ef8cd..5ef3146f7 100644
--- a/devicon.json
+++ b/devicon.json
@@ -2464,6 +2464,26 @@
"color": "#F18803",
"aliases": []
},
+ {
+ "name": "perl",
+ "tags": [
+ "programming",
+ "language"
+ ],
+ "versions": {
+ "svg": [
+ "original",
+ "plain"
+ ]
+ },
+ "color": "#212177",
+ "aliases": [
+ {
+ "base": "original",
+ "alias": "plain"
+ }
+ ]
+ },
{
"name": "photoshop",
"tags": [
diff --git a/icons/perl/original.svg b/icons/perl/original.svg
new file mode 100644
index 000000000..66de26992
--- /dev/null
+++ b/icons/perl/original.svg
@@ -0,0 +1,64 @@
+
+
+
+
+
+
+
+ image/svg+xml
+
+
+
+
+
+
+
+
+
+
diff --git a/icons/perl/plain.svg b/icons/perl/plain.svg
new file mode 100644
index 000000000..7c49c4623
--- /dev/null
+++ b/icons/perl/plain.svg
@@ -0,0 +1,57 @@
+
+
+
+
+
+
+
+ image/svg+xml
+
+
+
+
+
+
+
+
+
From c378a7c984734d983c2d882bf706858aa339baf4 Mon Sep 17 00:00:00 2001
From: Matt Koskela
Date: Wed, 21 Apr 2021 22:36:40 -0700
Subject: [PATCH 16/79] chore: Simplify svg files
---
icons/perl/original.svg | 69 ++++-------------------------------------
icons/perl/plain.svg | 61 +++---------------------------------
2 files changed, 11 insertions(+), 119 deletions(-)
diff --git a/icons/perl/original.svg b/icons/perl/original.svg
index 66de26992..48bc15c70 100644
--- a/icons/perl/original.svg
+++ b/icons/perl/original.svg
@@ -1,64 +1,7 @@
-
-
-
-
-
-
-
- image/svg+xml
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
diff --git a/icons/perl/plain.svg b/icons/perl/plain.svg
index 7c49c4623..d77bf56b5 100644
--- a/icons/perl/plain.svg
+++ b/icons/perl/plain.svg
@@ -1,57 +1,6 @@
-
-
-
-
-
-
-
- image/svg+xml
-
-
-
-
-
-
-
-
+
+
+
+
+
From a8851b7154bb8391674d5e60a489d34d55cf23c4 Mon Sep 17 00:00:00 2001
From: Matt Koskela
Date: Wed, 21 Apr 2021 22:39:40 -0700
Subject: [PATCH 17/79] fix: size fixes
---
icons/perl/original.svg | 2 +-
icons/perl/plain.svg | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/icons/perl/original.svg b/icons/perl/original.svg
index 48bc15c70..408f9b7f2 100644
--- a/icons/perl/original.svg
+++ b/icons/perl/original.svg
@@ -1,5 +1,5 @@
-
+
diff --git a/icons/perl/plain.svg b/icons/perl/plain.svg
index d77bf56b5..901820ae2 100644
--- a/icons/perl/plain.svg
+++ b/icons/perl/plain.svg
@@ -1,5 +1,5 @@
-
+
From 77a587cf914962f7e24534f84e0639b42395a44a Mon Sep 17 00:00:00 2001
From: Matt Koskela
Date: Thu, 22 Apr 2021 10:48:49 -0700
Subject: [PATCH 18/79] fix: Removed aliases from json
---
devicon.json | 8 +-------
1 file changed, 1 insertion(+), 7 deletions(-)
diff --git a/devicon.json b/devicon.json
index 5ef3146f7..2b43ea86d 100644
--- a/devicon.json
+++ b/devicon.json
@@ -2476,13 +2476,7 @@
"plain"
]
},
- "color": "#212177",
- "aliases": [
- {
- "base": "original",
- "alias": "plain"
- }
- ]
+ "color": "#212177"
},
{
"name": "photoshop",
From b30dc6038b2e2c5eb058044ad984a843207cee90 Mon Sep 17 00:00:00 2001
From: David Leal
Date: Thu, 22 Apr 2021 19:03:53 -0500
Subject: [PATCH 19/79] Add aliases (fixes the script)
---
devicon.json | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/devicon.json b/devicon.json
index aed1868d6..96efd3c28 100644
--- a/devicon.json
+++ b/devicon.json
@@ -2496,7 +2496,8 @@
"plain"
]
},
- "color": "#212177"
+ "color": "#212177",
+ "aliases": []
},
{
"name": "photoshop",
From 12252b3a253615738af270c8e74493d6b68f5b7d Mon Sep 17 00:00:00 2001
From: David Leal
Date: Fri, 23 Apr 2021 12:04:06 -0500
Subject: [PATCH 20/79] Update devicon.json
---
devicon.json | 3 +++
1 file changed, 3 insertions(+)
diff --git a/devicon.json b/devicon.json
index 96efd3c28..aa2d4d929 100644
--- a/devicon.json
+++ b/devicon.json
@@ -2494,6 +2494,9 @@
"svg": [
"original",
"plain"
+ ],
+ "font": [
+ "plain",
]
},
"color": "#212177",
From daa3338e5911988648a2f024ffa92ccf73aebd89 Mon Sep 17 00:00:00 2001
From: David Leal
Date: Fri, 23 Apr 2021 12:33:26 -0500
Subject: [PATCH 21/79] Update devicon.json
---
devicon.json | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/devicon.json b/devicon.json
index aa2d4d929..adc3907c2 100644
--- a/devicon.json
+++ b/devicon.json
@@ -2496,7 +2496,7 @@
"plain"
],
"font": [
- "plain",
+ "plain"
]
},
"color": "#212177",
From 58abb24d5d7cb62c76e4f159b677189e55c0e49d Mon Sep 17 00:00:00 2001
From: Matt Koskela
Date: Fri, 23 Apr 2021 11:19:27 -0700
Subject: [PATCH 22/79] fix: Renamed icons
---
icons/perl/{original.svg => perl-original.svg} | 0
icons/perl/{plain.svg => perl-plain.svg} | 0
2 files changed, 0 insertions(+), 0 deletions(-)
rename icons/perl/{original.svg => perl-original.svg} (100%)
rename icons/perl/{plain.svg => perl-plain.svg} (100%)
diff --git a/icons/perl/original.svg b/icons/perl/perl-original.svg
similarity index 100%
rename from icons/perl/original.svg
rename to icons/perl/perl-original.svg
diff --git a/icons/perl/plain.svg b/icons/perl/perl-plain.svg
similarity index 100%
rename from icons/perl/plain.svg
rename to icons/perl/perl-plain.svg
From f3cb6408f13b9844f380c6e36d26cf99f412fcc1 Mon Sep 17 00:00:00 2001
From: Matt Koskela
Date: Fri, 23 Apr 2021 18:23:44 -0700
Subject: [PATCH 23/79] fix: Cleaned up svg files and ran svg opimizer
---
icons/perl/perl-original.svg | 8 +-------
icons/perl/perl-plain.svg | 7 +------
2 files changed, 2 insertions(+), 13 deletions(-)
diff --git a/icons/perl/perl-original.svg b/icons/perl/perl-original.svg
index 408f9b7f2..bcb423985 100644
--- a/icons/perl/perl-original.svg
+++ b/icons/perl/perl-original.svg
@@ -1,7 +1 @@
-
-
-
-
-
-
-
+
diff --git a/icons/perl/perl-plain.svg b/icons/perl/perl-plain.svg
index 901820ae2..f250234a7 100644
--- a/icons/perl/perl-plain.svg
+++ b/icons/perl/perl-plain.svg
@@ -1,6 +1 @@
-
-
-
-
-
-
+
From c42ff8cefdd4721e6a70f08b932098af2294a8ca Mon Sep 17 00:00:00 2001
From: Thomas Bui <43018778+Thomas-Boi@users.noreply.github.com>
Date: Mon, 26 Apr 2021 17:17:06 -0700
Subject: [PATCH 24/79] Delete arduino-plain-wordmark.svg
Deleted the faulty svg
---
icons/arduino/arduino-plain-wordmark.svg | 1 -
1 file changed, 1 deletion(-)
delete mode 100644 icons/arduino/arduino-plain-wordmark.svg
diff --git a/icons/arduino/arduino-plain-wordmark.svg b/icons/arduino/arduino-plain-wordmark.svg
deleted file mode 100644
index 5d56b0b53..000000000
--- a/icons/arduino/arduino-plain-wordmark.svg
+++ /dev/null
@@ -1 +0,0 @@
-
From 2a16f53df8ce1026ae1fa905e6dcc88e4f652413 Mon Sep 17 00:00:00 2001
From: Thomas Bui <43018778+Thomas-Boi@users.noreply.github.com>
Date: Mon, 26 Apr 2021 17:20:37 -0700
Subject: [PATCH 25/79] Add Icomoon arduino-plain-wordmark.svg
---
icons/arduino/arduino-plain-workmark.svg | 1 +
1 file changed, 1 insertion(+)
create mode 100644 icons/arduino/arduino-plain-workmark.svg
diff --git a/icons/arduino/arduino-plain-workmark.svg b/icons/arduino/arduino-plain-workmark.svg
new file mode 100644
index 000000000..b7f6aa0fc
--- /dev/null
+++ b/icons/arduino/arduino-plain-workmark.svg
@@ -0,0 +1 @@
+
From 56a8ab72de3bf10c44794af7a6d05fb8b3bfeb1e Mon Sep 17 00:00:00 2001
From: Thomas Bui <43018778+Thomas-Boi@users.noreply.github.com>
Date: Mon, 26 Apr 2021 17:31:49 -0700
Subject: [PATCH 26/79] Rename arduino-plain-workmark.svg to
arduino-plain-wordmark.svg
---
.../{arduino-plain-workmark.svg => arduino-plain-wordmark.svg} | 0
1 file changed, 0 insertions(+), 0 deletions(-)
rename icons/arduino/{arduino-plain-workmark.svg => arduino-plain-wordmark.svg} (100%)
diff --git a/icons/arduino/arduino-plain-workmark.svg b/icons/arduino/arduino-plain-wordmark.svg
similarity index 100%
rename from icons/arduino/arduino-plain-workmark.svg
rename to icons/arduino/arduino-plain-wordmark.svg
From a9bc39b721f23d92b2ee3b26848f866dbecaaf8a Mon Sep 17 00:00:00 2001
From: Thomas Bui <43018778+Thomas-Boi@users.noreply.github.com>
Date: Mon, 26 Apr 2021 17:41:37 -0700
Subject: [PATCH 27/79] Update devicon.json
Co-authored-by: David Leal
---
devicon.json | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/devicon.json b/devicon.json
index a664a1b1a..327740734 100644
--- a/devicon.json
+++ b/devicon.json
@@ -210,7 +210,8 @@
{
"name": "arduino",
"tags": [
- "microcontroller"
+ "microcontroller",
+ "hardware"
],
"versions": {
"svg": [
From 41790e615b0b1258b0d3b0e17542e5f03e0f7ce5 Mon Sep 17 00:00:00 2001
From: Thomas Bui <43018778+Thomas-Boi@users.noreply.github.com>
Date: Thu, 29 Apr 2021 01:04:32 -0700
Subject: [PATCH 28/79] Script upgrades and updated CONTRIBUTING.md and
README.md (#576)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
* Updated README and CONTRIBUTING
* Added check for devicon object when peeking
* Added PR template
* Added a script to create release messages
* Updated CONTRIBUTING about new script
* Update .github/PULL_REQUEST_TEMPLATE/new_icon.md
Co-authored-by: David Leal
* Update .github/scripts/build_assets/arg_getters.py
Co-authored-by: David Leal
* Update .github/workflows/get_release_message.yml
Co-authored-by: David Leal
* Update gulpfile.js
Co-authored-by: David Leal
* Update .github/PULL_REQUEST_TEMPLATE/new_feature.md
Co-authored-by: David Leal
* Update .github/PULL_REQUEST_TEMPLATE/new_feature.md
Co-authored-by: David Leal
* Added a way for peek bot to comment error
* Update CONTRIBUTING.md
Co-authored-by: Clemens Bastian <8781699+amacado@users.noreply.github.com>
* Update .github/scripts/get_release_message.py
Co-authored-by: Malte Jürgens
* Update .github/scripts/get_release_message.py
Co-authored-by: Malte Jürgens
* Update .github/PULL_REQUEST_TEMPLATE/new_feature.md
Co-authored-by: David Leal
* Clean up and updated CONTRIBUTING
* Updated CONTRIBUTING
* Add set up steps for release message workflow
* Refactored peek workflow
* Added requests library
* Reformat devicon object error messages
Co-authored-by: David Leal
Co-authored-by: Clemens Bastian <8781699+amacado@users.noreply.github.com>
Co-authored-by: Malte Jürgens
---
.github/PULL_REQUEST_TEMPLATE/new_feature.md | 9 ++
.github/PULL_REQUEST_TEMPLATE/new_icon.md | 9 ++
.github/drafts/check_devicon_object.py | 37 -------
.github/scripts/build_assets/arg_getters.py | 13 ++-
.github/scripts/get_release_message.py | 75 ++++++++++++++
.github/scripts/icomoon_peek.py | 103 ++++++++++++++-----
.github/scripts/requirements.txt | 3 +-
.github/workflows/get_release_message.yml | 23 +++++
.github/workflows/peek_icons.yml | 7 ++
.github/workflows/post_peek_screenshot.yml | 20 +++-
CONTRIBUTING.md | 38 +++++--
README.md | 5 +-
gulpfile.js | 1 +
package.json | 5 +-
14 files changed, 266 insertions(+), 82 deletions(-)
create mode 100644 .github/PULL_REQUEST_TEMPLATE/new_feature.md
create mode 100644 .github/PULL_REQUEST_TEMPLATE/new_icon.md
delete mode 100644 .github/drafts/check_devicon_object.py
create mode 100644 .github/scripts/get_release_message.py
create mode 100644 .github/workflows/get_release_message.yml
diff --git a/.github/PULL_REQUEST_TEMPLATE/new_feature.md b/.github/PULL_REQUEST_TEMPLATE/new_feature.md
new file mode 100644
index 000000000..2c605d599
--- /dev/null
+++ b/.github/PULL_REQUEST_TEMPLATE/new_feature.md
@@ -0,0 +1,9 @@
+## This PR adds...
+
+*List your features here and their reasons for creation.*
+
+## Notes
+
+*List anything note-worthy here (potential issues, this needs merge to `master` before working, etc....).*
+
+*Don't forget to link any issues that this PR will solved.*
diff --git a/.github/PULL_REQUEST_TEMPLATE/new_icon.md b/.github/PULL_REQUEST_TEMPLATE/new_icon.md
new file mode 100644
index 000000000..cffee5f2a
--- /dev/null
+++ b/.github/PULL_REQUEST_TEMPLATE/new_icon.md
@@ -0,0 +1,9 @@
+**Double check these details before you open a PR**
+
+- [] PR does not match another non-stale PR currently opened
+- [] PR name matches the format *new icon: Icon name (versions separated by comma )* as seen [here](https://github.com/devicons/devicon/blob/develop/CONTRIBUTING.md#overview)
+- [] Your icons are put in a folder as seen [here](https://github.com/devicons/devicon/blob/develop/CONTRIBUTING.md#organizational-guidelines)
+- [] SVG matches the standards laid out [here](https://github.com/devicons/devicon/blob/develop/CONTRIBUTING.md#svgStandards)
+- [] A new object is added in the `devicon.json` file as seen [here](https://github.com/devicons/devicon/blob/develop/CONTRIBUTING.md#-updating-the-deviconjson-)
+
+Refer to the [`CONTRIBUTING.md`](https://github.com/devicons/devicon/blob/develop/CONTRIBUTING.md#contributing-to-devicon) for more details.
diff --git a/.github/drafts/check_devicon_object.py b/.github/drafts/check_devicon_object.py
deleted file mode 100644
index b610d88ed..000000000
--- a/.github/drafts/check_devicon_object.py
+++ /dev/null
@@ -1,37 +0,0 @@
-from typing import List
-
-# abandoned since it's not too hard to check devicon objects using our eyes
-# however, still keep in case we need it in the future
-
-def check_devicon_objects(icons: List[dict]):
- """
- Check that the devicon objects added is up to standard.
- """
- err_msgs = []
- for icon in icons:
- if type(icon["name"]) != str:
- err_msgs.append("'name' must be a string, not: " + str(icon["name"]))
-
- try:
- for tag in icon["tags"]:
- if type(tag) != str:
- raise TypeError()
- except TypeError:
- err_msgs.append("'tags' must be an array of strings, not: " + str(icon["tags"]))
- break
-
-
- if type(icon["versions"]["svg"]) != list or len(icon["versions"]["svg"]) == 0:
- err_msgs.append("Icon name must be a string")
-
- if type(icon["versions"]["font"]) != list or len(icon["versions"]["svg"]) == 0:
- err_msgs.append("Icon name must be a string")
-
- if type(icon["color"]) != str or "#" not in icon["color"]:
- err_msgs.append("'color' must be a string in the format '#abcdef'")
-
- if type(icon["aliases"]) != list:
- err_msgs.append("'aliases' must be an array of dicts")
-
- if len(err_msgs) > 0:
- raise Exception("Error found in devicon.json: \n" + "\n".join(err_msgs))
diff --git a/.github/scripts/build_assets/arg_getters.py b/.github/scripts/build_assets/arg_getters.py
index 51c5d557f..ebe37ea7d 100644
--- a/.github/scripts/build_assets/arg_getters.py
+++ b/.github/scripts/build_assets/arg_getters.py
@@ -67,4 +67,15 @@ def get_check_svgs_monthly_args():
parser.add_argument("icons_folder_path",
help="The path to the icons folder",
action=PathResolverAction)
- return parser.parse_args()
\ No newline at end of file
+ return parser.parse_args()
+
+
+def get_release_message_args():
+ """
+ Get the commandline arguments for get_release_message.py.
+ """
+ parser = ArgumentParser(description="Create a text containing the icons and features added since last release.")
+ parser.add_argument("token",
+ help="The GitHub token to access the GitHub REST API.",
+ type=str)
+ return parser.parse_args()
diff --git a/.github/scripts/get_release_message.py b/.github/scripts/get_release_message.py
new file mode 100644
index 000000000..af8b6b78c
--- /dev/null
+++ b/.github/scripts/get_release_message.py
@@ -0,0 +1,75 @@
+import requests
+from build_assets import arg_getters
+import re
+
+def main():
+ print("Please wait a few seconds...")
+ args = arg_getters.get_release_message_args()
+ queryPath = "https://api.github.com/repos/devicons/devicon/pulls?accept=application/vnd.github.v3+json&state=closed&per_page=100"
+ stopPattern = r"^(r|R)elease v"
+ headers = {
+ "Authorization": f"token {args.token}"
+ }
+
+ response = requests.get(queryPath, headers=headers)
+ if not response:
+ print(f"Can't query the GitHub API. Status code is {response.status_code}. Message is {response.text}")
+ return
+
+ data = response.json()
+ newIcons = []
+ features = []
+
+ for pullData in data:
+ if re.search(stopPattern, pullData["title"]):
+ break
+
+ authors = findAllAuthors(pullData, headers)
+ markdown = f"- [{pullData['title']}]({pullData['html_url']}) by {authors}."
+
+ if isFeatureIcon(pullData):
+ newIcons.append(markdown)
+ else:
+ features.append(markdown)
+
+ thankYou = "A huge thanks to all our maintainers and contributors for making this release possible!"
+ iconTitle = "**{} New Icons**\n".format(len(newIcons))
+ featureTitle = "**{} New Features**\n".format(len(features))
+ finalString = "{0}\n\n {1}{2}\n\n {3}{4}".format(thankYou,
+ iconTitle, "\n".join(newIcons), featureTitle, "\n".join(features))
+
+ print("--------------Here is the build message--------------\n", finalString)
+
+
+"""
+ Check whether the pullData is a feature:icon PR.
+ :param pullData
+ :return true if the pullData has a label named "feature:icon"
+"""
+def isFeatureIcon(pullData):
+ for label in pullData["labels"]:
+ if label["name"] == "feature:icon":
+ return True
+ return False
+
+
+"""
+Find all the authors of a PR based on its commits.
+:param pullData - the data of a pull request.
+"""
+def findAllAuthors(pullData, authHeader):
+ response = requests.get(pullData["commits_url"], headers=authHeader)
+ if not response:
+ print(f"Can't query the GitHub API. Status code is {response.status_code}")
+ print("Response is: ", response.text)
+ return
+
+ commits = response.json()
+ authors = set() # want unique authors only
+ for commit in commits:
+ authors.add("@" + commit["author"]["login"])
+ return ", ".join(list(authors))
+
+
+if __name__ == "__main__":
+ main()
diff --git a/.github/scripts/icomoon_peek.py b/.github/scripts/icomoon_peek.py
index b4c993cb0..9e242f10a 100644
--- a/.github/scripts/icomoon_peek.py
+++ b/.github/scripts/icomoon_peek.py
@@ -2,7 +2,6 @@
import re
import sys
from selenium.common.exceptions import TimeoutException
-import xml.etree.ElementTree as et
# pycharm complains that build_assets is an unresolved ref
# don't worry about it, the script still runs
@@ -12,36 +11,28 @@
def main():
- args = arg_getters.get_selenium_runner_args(True)
- new_icons = filehandler.find_new_icons(args.devicon_json_path, args.icomoon_json_path)
-
- # get only the icon object that has the name matching the pr title
- filtered_icons = find_object_added_in_this_pr(new_icons, args.pr_title)
-
- if len(new_icons) == 0:
- sys.exit("No files need to be uploaded. Ending script...")
+ runner = None
+ try:
+ args = arg_getters.get_selenium_runner_args(True)
+ new_icons = filehandler.find_new_icons(args.devicon_json_path, args.icomoon_json_path)
- if len(filtered_icons) == 0:
- message = "No icons found matching the icon name in the PR's title.\n" \
- "Ensure that a new icon entry is added in the devicon.json and the PR title matches the convention here: \n" \
- "https://github.com/devicons/devicon/blob/master/CONTRIBUTING.md#overview\n" \
- "Ending script...\n"
- sys.exit(message)
+ if len(new_icons) == 0:
+ raise Exception("No files need to be uploaded. Ending script...")
- # print list of new icons
- print("List of new icons:", *new_icons, sep = "\n")
- print("Icons being uploaded:", *filtered_icons, sep = "\n", end='\n\n')
+ # get only the icon object that has the name matching the pr title
+ filtered_icon = find_object_added_in_this_pr(new_icons, args.pr_title)
+ print("Icon being checked:", filtered_icon, sep = "\n", end='\n\n')
- runner = None
- try:
runner = SeleniumRunner(args.download_path, args.geckodriver_path, args.headless)
- svgs = filehandler.get_svgs_paths(filtered_icons, args.icons_folder_path, True)
+ svgs = filehandler.get_svgs_paths([filtered_icon], args.icons_folder_path, True)
screenshot_folder = filehandler.create_screenshot_folder("./")
runner.upload_svgs(svgs, screenshot_folder)
print("Task completed.")
- except TimeoutException as e:
- util.exit_with_err("Selenium Time Out Error: \n" + str(e))
+
+ # no errors, do this so upload-artifact won't fail
+ filehandler.write_to_file("./err_messages.txt", "0")
except Exception as e:
+ filehandler.write_to_file("./err_messages.txt", str(e))
util.exit_with_err(e)
finally:
runner.close()
@@ -52,19 +43,77 @@ def find_object_added_in_this_pr(icons: List[dict], pr_title: str):
Find the icon name from the PR title.
:param icons, a list of the font objects found in the devicon.json.
:pr_title, the title of the PR that this workflow was called on.
- :return a list containing the dictionary with the "name"
+ :return a dictionary with the "name"
entry's value matching the name in the pr_title.
- If none can be found, return an empty list.
+ :raise If no object can be found, raise an Exception.
"""
try:
pattern = re.compile(r"(?<=^new icon: )\w+ (?=\(.+\))", re.I)
icon_name = pattern.findall(pr_title)[0].lower().strip() # should only have one match
- return [icon for icon in icons if icon["name"] == icon_name]
+ icon = [icon for icon in icons if icon["name"] == icon_name][0]
+ check_devicon_object(icon, icon_name)
+ return icon
except IndexError: # there are no match in the findall()
- return []
+ raise Exception("Couldn't find an icon matching the name in the PR title.")
+ except ValueError as e:
+ raise Exception(str(e))
+
+
+def check_devicon_object(icon: dict, icon_name: str):
+ """
+ Check that the devicon object added is up to standard.
+ :return a string containing the error messages if any.
+ """
+ err_msgs = []
+ try:
+ if icon["name"] != icon_name:
+ err_msgs.append("- 'name' value is not: " + icon_name)
+ except KeyError:
+ err_msgs.append("- missing key: 'name'.")
+
+ try:
+ for tag in icon["tags"]:
+ if type(tag) != str:
+ raise TypeError()
+ except TypeError:
+ err_msgs.append("- 'tags' must be an array of strings, not: " + str(icon["tags"]))
+ except KeyError:
+ err_msgs.append("- missing key: 'tags'.")
+
+ try:
+ if type(icon["versions"]) != dict:
+ err_msgs.append("- 'versions' must be an object.")
+ except KeyError:
+ err_msgs.append("- missing key: 'versions'.")
+ try:
+ if type(icon["versions"]["svg"]) != list or len(icon["versions"]["svg"]) == 0:
+ err_msgs.append("- must contain at least 1 svg version in a list.")
+ except KeyError:
+ err_msgs.append("- missing key: 'svg' in 'versions'.")
+
+ try:
+ if type(icon["versions"]["font"]) != list or len(icon["versions"]["svg"]) == 0:
+ err_msgs.append("- must contain at least 1 font version in a list.")
+ except KeyError:
+ err_msgs.append("- missing key: 'font' in 'versions'.")
+ try:
+ if type(icon["color"]) != str or "#" not in icon["color"]:
+ err_msgs.append("- 'color' must be a string in the format '#abcdef'")
+ except KeyError:
+ err_msgs.append("- missing key: 'color'.")
+ try:
+ if type(icon["aliases"]) != list:
+ err_msgs.append("- 'aliases' must be an array.")
+ except KeyError:
+ err_msgs.append("- missing key: 'aliases'.")
+
+ if len(err_msgs) > 0:
+ message = "Error found in 'devicon.json' for '{}' entry: \n{}".format(icon_name, "\n".join(err_msgs))
+ raise ValueError(message)
+ return ""
if __name__ == "__main__":
main()
diff --git a/.github/scripts/requirements.txt b/.github/scripts/requirements.txt
index 27bc3be5d..00691033d 100644
--- a/.github/scripts/requirements.txt
+++ b/.github/scripts/requirements.txt
@@ -1 +1,2 @@
-selenium==3.141.0
\ No newline at end of file
+selenium==3.141.0
+requests==2.25.1
\ No newline at end of file
diff --git a/.github/workflows/get_release_message.yml b/.github/workflows/get_release_message.yml
new file mode 100644
index 000000000..292525e93
--- /dev/null
+++ b/.github/workflows/get_release_message.yml
@@ -0,0 +1,23 @@
+name: Get Release Message
+on: workflow_dispatch
+jobs:
+ build:
+ name: Get Fonts From Icomoon
+ runs-on: ubuntu-18.04
+ steps:
+ - uses: actions/checkout@v2
+
+ - name: Setup Python v3.8
+ uses: actions/setup-python@v2
+ with:
+ python-version: 3.8
+
+ - name: Install dependencies
+ run: |
+ python -m pip install --upgrade pip
+ pip install -r ./.github/scripts/requirements.txt
+
+ - name: Run the get_release_message.py
+ env:
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+ run: python ./.github/scripts/get_release_message.py $GITHUB_TOKEN
diff --git a/.github/workflows/peek_icons.yml b/.github/workflows/peek_icons.yml
index 20f3455f1..c85d7393b 100644
--- a/.github/workflows/peek_icons.yml
+++ b/.github/workflows/peek_icons.yml
@@ -44,6 +44,13 @@ jobs:
./.github/scripts/build_assets/geckodriver-v0.27.0-win64/geckodriver.exe ./icomoon.json
./devicon.json ./icons ./ --headless --pr_title "%PR_TITLE%"
+ - name: Upload the err messages (created by icomoon_peek.py)
+ uses: actions/upload-artifact@v2
+ if: always()
+ with:
+ name: err_messages
+ path: ./err_messages.txt
+
- name: Upload screenshots for comments
uses: actions/upload-artifact@v2
if: success()
diff --git a/.github/workflows/post_peek_screenshot.yml b/.github/workflows/post_peek_screenshot.yml
index 15ae7ea71..59b55e4a4 100644
--- a/.github/workflows/post_peek_screenshot.yml
+++ b/.github/workflows/post_peek_screenshot.yml
@@ -32,6 +32,14 @@ jobs:
with:
path: ./pr_num/pr_num.txt
+ - name: Read the err message file
+ if: success()
+ id: err_message_reader
+ uses: juliangruber/read-file-action@v1.0.0
+ with:
+ path: ./err_messages/err_messages.txt
+
+
- name: Upload screenshot of the newly made icons gotten from the artifacts
id: icons_overview_img_step
if: env.PEEK_STATUS == 'success' && success()
@@ -87,15 +95,19 @@ jobs:
MESSAGE: |
Hi there,
- I'm Devicons' Peek Bot and it seems we've ran into a problem (sorry!).
+ I'm Devicons' Peek Bot and it seems we've ran into a problem.
+
+ ```
+ {0}
+ ```
- Please double check and fix the possible issues below:
+ Make sure that:
- Your svgs are named and added correctly to the /icons folder as seen [here](https://github.com/devicons/devicon/blob/master/CONTRIBUTING.md#orgGuidelines).
- Your icon information has been added to the `devicon.json` as seen [here](https://github.com/devicons/devicon/blob/master/CONTRIBUTING.md#updateDevicon)
- Your PR title follows the format seen [here](https://github.com/devicons/devicon/blob/master/CONTRIBUTING.md#overview)
- I will retry once everything is fixed. If I still fail (sorry!) or there are other erros, the maintainers will investigate.
+ I will retry once everything is fixed. If I still fail or there are other error, the maintainers will investigate.
Best of luck,
Peek Bot :relaxed:
@@ -103,4 +115,4 @@ jobs:
type: create
issue_number: ${{ steps.pr_num_reader.outputs.content }}
token: ${{ secrets.GITHUB_TOKEN }}
- body: ${{ env.MESSAGE }}
+ body: ${{ format(env.MESSAGE, steps.err_message_reader.outputs.content) }}
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 2f825964a..7820950c2 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -40,6 +40,7 @@ First of all, thanks for taking the time to contribute! This project can only gr
Include the name of the Icon in the pull request title in this format: new icon: Icon name (versions )
Optional : Add images of the new svg(s) to the description of the pull request. This would help speed up the review process
Optional : Reference the issues regarding the new icon.
+ A bot will check your SVGs. If there are any errors, please fix them as instructed.
Wait for a maintainer to review your changes. They will run a script to check your icons.
If there are no issues, they will accept your pull request and merge it using squash merging . If there are any problems, they will let you know and give you a chance to fix it.
@@ -91,7 +92,6 @@ First of all, thanks for taking the time to contribute! This project can only gr
Each .svg file contains one version of an icon in a 0 0 128 128 viewbox. You can use a service like resize-image for scaling the svg.
The svg element does not need the height and width attributes. However, if you do use it, ensure their values are either "128" or "128px". Ex: height="128"
Each .svg must use the fill attribute instead of using classes for colors. See here for more details.
- The naming convention for the svg file is the following: (Technology name)-(original|plain|line)(-wordmark?).
@@ -310,19 +310,20 @@ As an example, let's assume you have created the svgs for Redhat and Amazon Web
The Build Script: how it works and its quirks
-To make adding icons easier for repo maintainers, we rely on GitHub Actions, Python, Selenium, and Gulp to automate our tasks.
+We rely on GitHub Actions, Python, Selenium, Imgur, and Gulp to automate our tasks. Please feel free to take a look at the workflow files. The codes should be clear enough to follow along.
So far, the tasks in the build script are:
- Upload svgs to icomoon.io and get the icons back. For details, see the original disscussion , this PR that introduce the feature and the final changes to it.
- Preview what an svg would look like as an icon using the upload svgs script (see this
- Build, combine, and minify CSS files. For details, see this
- Send screenshots to Imgur and upload it to a PR. See the PR for the Imgur action and the PR for uploading the pictures to a PR
+ Upload svgs to icomoon.io and get the icons back. For details, see the original disscussion , this PR that introduce the feature and the final changes to it. Used by peek-bot and build-bot .
+ Preview what an svg would look like as an icon using the upload svgs script (see this ). Used by peek-bot .
+ Build, combine, and minify CSS files. For details, see this . Used by build-bot .
+ Send screenshots to Imgur and upload it to a PR. See the PR for the Imgur action and the PR for uploading the pictures to a PR. Used by peek-bot and build-bot .
Ensure code quality is up to standard
- Comment on the PR so maintainers don't have to manually upload icon result.
+ Comment on the PR so maintainers don't have to manually upload icon result. Used by peek-bot and build-bot .
Publishing a new release to npm ; See #288
+ Creating a list of features that was added since last release. See this discussion for inception and limitations.
-There are some quirks and bugs that the build scripts might run into. Listed below are the common ones and their solution
+There are some bugs that the build scripts might run into. Listed below are the common ones and their solutions
No connection could be made because the target machine actively refused it. (os error 10061)
@@ -351,6 +352,13 @@ As an example, let's assume you have created the svgs for Redhat and Amazon Web
Solution: Follow the steps laid out here
+ Icon created by Icomoon contains strange lines that aren't in the SVG
+
+ See this PR 's peek result.
+ This is caused by a bug in Icomoon's parser (see this ).
+ Solution: Luckily this is an extremely rare case. Try remake the svg in a different way (using different paths/shapes) and test using Icomoon.
+
+
Discord server
@@ -379,7 +387,19 @@ We are running a Discord server. You can go here to talk, discuss, and more with
Push the branch draft-release
Manually trigger the workflow build_icons.yml (which has a workflow_dispatch event trigger) and select the branch draft-release as target branch. This will build a font version of all icons using icomoon and automatically creates a pull request to merge the build result back into draft-release
Review and approve the auto-create pull request created by the action of the step above
- Create a pull request towards development. Mention the release number in the pull request title (like "Build preparation for release vMAJOR .MINOR .PATCH ) and add information about all new icons, fixes, features and enhancements in the description of the pull request. Take the commits as a guideline. It's also a good idea to mention and thank all contributions who participated in the release (take description of #504 as an example).
+ Create a pull request towards development. Mention the release number in the pull request title (like "Build preparation for release vMAJOR .MINOR .PATCH ).
+
+
+ Add information about all new icons, fixes, features and enhancements in the description of the pull request.
+
+
+ Take the PRs/commits as a guideline. It's also a good idea to mention and thank all contributions who participated in the release (take description of #504 as an example).
+
+
+ Rather than doing it manually, you can instead run python ./.github/scripts/get_release_message.py $GITHUB_TOKEN locally. Pass in your GitHub Personal Access Token for $GITHUB_TOKEN and you should see the messages. You can also use the `workflow_dispatch` trigger in the GitHub Actions tab.
+
+
+
Wait for review and approval of the pull request (you can perform a squash-merge)
Once merged create a pull request with BASE master and HEAD development. Copy the description of the earlier pull request.
Since it was already approved in the 'development' stage a maintainer is allowed to merge it (DON'T perform a squash-merge).
diff --git a/README.md b/README.md
index c0e6bae1a..5b08278d5 100644
--- a/README.md
+++ b/README.md
@@ -68,8 +68,11 @@
All product names, logos, and brands are property of their respective owners. All company, product and service
names used in this website are for identification purposes only. Use of these names, logos, and brands does not
- imply endorsement.
+ imply endorsement. Usage of these logos should be done according to the company/brand/service's brand policy.
+
+ Thank you to our contributors and the IcoMoon app . Devicon would not be possible without you.
+
Getting started
diff --git a/gulpfile.js b/gulpfile.js
index 1541ffc10..24e29721e 100644
--- a/gulpfile.js
+++ b/gulpfile.js
@@ -10,6 +10,7 @@ const aliasSCSSName = "devicon-alias.scss";
const colorsCSSName = "devicon-colors.css";
const finalMinSCSSName = "devicon.min.scss";
+//////// CSS Tasks ////////
/**
* Create the devicon.min.css by creating needed
diff --git a/package.json b/package.json
index dc43b4882..c8e473637 100644
--- a/package.json
+++ b/package.json
@@ -6,7 +6,7 @@
"scripts": {
"build-css": "gulp updateCss && gulp clean",
"peek-test": "python ./.github/scripts/icomoon_peek.py ./.github/scripts/build_assets/geckodriver-v0.27.0-win64/geckodriver.exe ./icomoon.json ./devicon.json ./icons ./ --pr_title \"%PR_TITLE%\"",
- "build-test": "python ./.github/scripts/icomoon_build.py ./.github/scripts/build_assets/geckodriver-v0.27.0-win64/geckodriver.exe ./icomoon.json ./devicon.json ./icons ./"
+ "build-test": "python ./.github/scripts/icomoon_build.py ./.github/scripts/build_assets/geckodriver-v0.27.0-win64/geckodriver.exe ./icomoon.json ./devicon.json ./icons ./",
},
"repository": {
"type": "git",
@@ -28,5 +28,6 @@
"gulp": "^4.0.0",
"gulp-sass": "^4.1.0",
"sass": "^1.26.10"
- }
+ },
+ "dependencies": {}
}
From 066e58d689e6845676afe4c273ff4cf890ef017e Mon Sep 17 00:00:00 2001
From: reevesba
Date: Fri, 30 Apr 2021 16:06:19 -0700
Subject: [PATCH 29/79] new icon: tensorflow (original, original-wordmark,
plain, plain-wordmark, line, line-wordmark)
---
devicon.json | 28 +++++++++++++++++++
icons/tensorflow/tensorflow-line-wordmark.svg | 15 ++++++++++
icons/tensorflow/tensorflow-line.svg | 5 ++++
.../tensorflow-original-wordmark.svg | 17 +++++++++++
icons/tensorflow/tensorflow-original.svg | 5 ++++
.../tensorflow/tensorflow-plain-wordmark.svg | 15 ++++++++++
icons/tensorflow/tensorflow-plain.svg | 5 ++++
7 files changed, 90 insertions(+)
create mode 100644 icons/tensorflow/tensorflow-line-wordmark.svg
create mode 100644 icons/tensorflow/tensorflow-line.svg
create mode 100644 icons/tensorflow/tensorflow-original-wordmark.svg
create mode 100644 icons/tensorflow/tensorflow-original.svg
create mode 100644 icons/tensorflow/tensorflow-plain-wordmark.svg
create mode 100644 icons/tensorflow/tensorflow-plain.svg
diff --git a/devicon.json b/devicon.json
index ace8ef8cd..3447a618f 100644
--- a/devicon.json
+++ b/devicon.json
@@ -3158,6 +3158,34 @@
}
]
},
+ {
+ "name": "tensorflow",
+ "tags": [
+ "library",
+ "machine-learning",
+ "deep-learning"
+ ],
+ "versions": {
+ "svg": [
+ "original",
+ "original-wordmark",
+ "plain",
+ "plain-wordmark",
+ "line",
+ "line-wordmark"
+ ],
+ "font": [
+ "original",
+ "original-wordmark",
+ "plain",
+ "plain-wordmark",
+ "line",
+ "line-wordmark"
+ ]
+ },
+ "color": "#ff6f00"
+ "aliases": []
+ },
{
"name": "tomcat",
"tags": [
diff --git a/icons/tensorflow/tensorflow-line-wordmark.svg b/icons/tensorflow/tensorflow-line-wordmark.svg
new file mode 100644
index 000000000..53c44fefa
--- /dev/null
+++ b/icons/tensorflow/tensorflow-line-wordmark.svg
@@ -0,0 +1,15 @@
+
+
+
+
+
+ TensorFlow icon
+
+ TensorFlow
+
\ No newline at end of file
diff --git a/icons/tensorflow/tensorflow-line.svg b/icons/tensorflow/tensorflow-line.svg
new file mode 100644
index 000000000..27fa5e537
--- /dev/null
+++ b/icons/tensorflow/tensorflow-line.svg
@@ -0,0 +1,5 @@
+
+
+ TensorFlow icon
+
+
\ No newline at end of file
diff --git a/icons/tensorflow/tensorflow-original-wordmark.svg b/icons/tensorflow/tensorflow-original-wordmark.svg
new file mode 100644
index 000000000..07176c1d0
--- /dev/null
+++ b/icons/tensorflow/tensorflow-original-wordmark.svg
@@ -0,0 +1,17 @@
+
+
+
+
+
+
+ TensorFlow icon
+
+ TensorFlow
+ Enter your text here.
+
\ No newline at end of file
diff --git a/icons/tensorflow/tensorflow-original.svg b/icons/tensorflow/tensorflow-original.svg
new file mode 100644
index 000000000..a059da0b5
--- /dev/null
+++ b/icons/tensorflow/tensorflow-original.svg
@@ -0,0 +1,5 @@
+
+
+ TensorFlow icon
+
+
\ No newline at end of file
diff --git a/icons/tensorflow/tensorflow-plain-wordmark.svg b/icons/tensorflow/tensorflow-plain-wordmark.svg
new file mode 100644
index 000000000..4ee4356e6
--- /dev/null
+++ b/icons/tensorflow/tensorflow-plain-wordmark.svg
@@ -0,0 +1,15 @@
+
+
+
+
+
+ TensorFlow icon
+
+ TensorFlow
+
\ No newline at end of file
diff --git a/icons/tensorflow/tensorflow-plain.svg b/icons/tensorflow/tensorflow-plain.svg
new file mode 100644
index 000000000..90aa852fb
--- /dev/null
+++ b/icons/tensorflow/tensorflow-plain.svg
@@ -0,0 +1,5 @@
+
+
+ TensorFlow icon
+
+
\ No newline at end of file
From b09d68588b85704bfe5cdb5292c3aff2dabbea99 Mon Sep 17 00:00:00 2001
From: reevesba
Date: Fri, 30 Apr 2021 16:12:08 -0700
Subject: [PATCH 30/79] new icon: tensorflow (original, original-wordmark,
plain, plain-wordmark, line, line-wordmark)
---
devicon.json | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/devicon.json b/devicon.json
index 3447a618f..b8c6865b4 100644
--- a/devicon.json
+++ b/devicon.json
@@ -3183,7 +3183,7 @@
"line-wordmark"
]
},
- "color": "#ff6f00"
+ "color": "#ff6f00",
"aliases": []
},
{
From 65e21dfedf9c47cfed9cf26bcea78f713db1b147 Mon Sep 17 00:00:00 2001
From: reevesba
Date: Fri, 30 Apr 2021 16:32:19 -0700
Subject: [PATCH 31/79] resized svgs
---
icons/tensorflow/tensorflow-line-wordmark.svg | 67 ++++++++++++++----
icons/tensorflow/tensorflow-line.svg | 11 +--
.../tensorflow-original-wordmark.svg | 69 ++++++++++++++-----
icons/tensorflow/tensorflow-original.svg | 11 +--
.../tensorflow/tensorflow-plain-wordmark.svg | 67 ++++++++++++++----
icons/tensorflow/tensorflow-plain.svg | 11 +--
6 files changed, 174 insertions(+), 62 deletions(-)
diff --git a/icons/tensorflow/tensorflow-line-wordmark.svg b/icons/tensorflow/tensorflow-line-wordmark.svg
index 53c44fefa..5a76f73b8 100644
--- a/icons/tensorflow/tensorflow-line-wordmark.svg
+++ b/icons/tensorflow/tensorflow-line-wordmark.svg
@@ -1,15 +1,52 @@
-
-
-
-
-
- TensorFlow icon
-
- TensorFlow
-
\ No newline at end of file
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/icons/tensorflow/tensorflow-line.svg b/icons/tensorflow/tensorflow-line.svg
index 27fa5e537..0a61c3d2f 100644
--- a/icons/tensorflow/tensorflow-line.svg
+++ b/icons/tensorflow/tensorflow-line.svg
@@ -1,5 +1,6 @@
-
-
- TensorFlow icon
-
-
\ No newline at end of file
+
+
+
+
+
+
diff --git a/icons/tensorflow/tensorflow-original-wordmark.svg b/icons/tensorflow/tensorflow-original-wordmark.svg
index 07176c1d0..76c213fae 100644
--- a/icons/tensorflow/tensorflow-original-wordmark.svg
+++ b/icons/tensorflow/tensorflow-original-wordmark.svg
@@ -1,17 +1,52 @@
-
-
-
-
-
-
- TensorFlow icon
-
- TensorFlow
- Enter your text here.
-
\ No newline at end of file
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/icons/tensorflow/tensorflow-original.svg b/icons/tensorflow/tensorflow-original.svg
index a059da0b5..be1ec7edd 100644
--- a/icons/tensorflow/tensorflow-original.svg
+++ b/icons/tensorflow/tensorflow-original.svg
@@ -1,5 +1,6 @@
-
-
- TensorFlow icon
-
-
\ No newline at end of file
+
+
+
+
+
+
diff --git a/icons/tensorflow/tensorflow-plain-wordmark.svg b/icons/tensorflow/tensorflow-plain-wordmark.svg
index 4ee4356e6..12b295872 100644
--- a/icons/tensorflow/tensorflow-plain-wordmark.svg
+++ b/icons/tensorflow/tensorflow-plain-wordmark.svg
@@ -1,15 +1,52 @@
-
-
-
-
-
- TensorFlow icon
-
- TensorFlow
-
\ No newline at end of file
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/icons/tensorflow/tensorflow-plain.svg b/icons/tensorflow/tensorflow-plain.svg
index 90aa852fb..fbb23870c 100644
--- a/icons/tensorflow/tensorflow-plain.svg
+++ b/icons/tensorflow/tensorflow-plain.svg
@@ -1,5 +1,6 @@
-
-
- TensorFlow icon
-
-
\ No newline at end of file
+
+
+
+
+
+
From bd37828bc38b04e92829b3b6a59a48080850349d Mon Sep 17 00:00:00 2001
From: reevesba
Date: Fri, 30 Apr 2021 20:18:05 -0700
Subject: [PATCH 32/79] cleaned up svgs
---
icons/tensorflow/tensorflow-line-wordmark.svg | 61 +++----------------
icons/tensorflow/tensorflow-line.svg | 9 +--
.../tensorflow-original-wordmark.svg | 61 +++----------------
icons/tensorflow/tensorflow-original.svg | 9 +--
.../tensorflow/tensorflow-plain-wordmark.svg | 61 +++----------------
icons/tensorflow/tensorflow-plain.svg | 9 +--
6 files changed, 36 insertions(+), 174 deletions(-)
diff --git a/icons/tensorflow/tensorflow-line-wordmark.svg b/icons/tensorflow/tensorflow-line-wordmark.svg
index 5a76f73b8..8d53e2be0 100644
--- a/icons/tensorflow/tensorflow-line-wordmark.svg
+++ b/icons/tensorflow/tensorflow-line-wordmark.svg
@@ -1,52 +1,9 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+TensorFlow
\ No newline at end of file
diff --git a/icons/tensorflow/tensorflow-line.svg b/icons/tensorflow/tensorflow-line.svg
index 0a61c3d2f..a4cbde11f 100644
--- a/icons/tensorflow/tensorflow-line.svg
+++ b/icons/tensorflow/tensorflow-line.svg
@@ -1,6 +1,3 @@
-
-
-
-
-
-
+
+
+
\ No newline at end of file
diff --git a/icons/tensorflow/tensorflow-original-wordmark.svg b/icons/tensorflow/tensorflow-original-wordmark.svg
index 76c213fae..f1b1ea157 100644
--- a/icons/tensorflow/tensorflow-original-wordmark.svg
+++ b/icons/tensorflow/tensorflow-original-wordmark.svg
@@ -1,52 +1,9 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+TensorFlow
\ No newline at end of file
diff --git a/icons/tensorflow/tensorflow-original.svg b/icons/tensorflow/tensorflow-original.svg
index be1ec7edd..bc98ce302 100644
--- a/icons/tensorflow/tensorflow-original.svg
+++ b/icons/tensorflow/tensorflow-original.svg
@@ -1,6 +1,3 @@
-
-
-
-
-
-
+
+
+
\ No newline at end of file
diff --git a/icons/tensorflow/tensorflow-plain-wordmark.svg b/icons/tensorflow/tensorflow-plain-wordmark.svg
index 12b295872..ee7b5a26c 100644
--- a/icons/tensorflow/tensorflow-plain-wordmark.svg
+++ b/icons/tensorflow/tensorflow-plain-wordmark.svg
@@ -1,52 +1,9 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+TensorFlow
\ No newline at end of file
diff --git a/icons/tensorflow/tensorflow-plain.svg b/icons/tensorflow/tensorflow-plain.svg
index fbb23870c..b0e90d4a6 100644
--- a/icons/tensorflow/tensorflow-plain.svg
+++ b/icons/tensorflow/tensorflow-plain.svg
@@ -1,6 +1,3 @@
-
-
-
-
-
-
+
+
+
\ No newline at end of file
From 6ca3c12c8d45a110fd71acbdb7f0ab7ce592da16 Mon Sep 17 00:00:00 2001
From: reevesba
Date: Fri, 30 Apr 2021 20:40:41 -0700
Subject: [PATCH 33/79] compressed svgs and updated viewboxes
---
icons/tensorflow/tensorflow-line-wordmark.svg | 10 +---------
icons/tensorflow/tensorflow-line.svg | 4 +---
icons/tensorflow/tensorflow-original-wordmark.svg | 10 +---------
icons/tensorflow/tensorflow-original.svg | 4 +---
icons/tensorflow/tensorflow-plain-wordmark.svg | 10 +---------
icons/tensorflow/tensorflow-plain.svg | 4 +---
6 files changed, 6 insertions(+), 36 deletions(-)
diff --git a/icons/tensorflow/tensorflow-line-wordmark.svg b/icons/tensorflow/tensorflow-line-wordmark.svg
index 8d53e2be0..db6875cbb 100644
--- a/icons/tensorflow/tensorflow-line-wordmark.svg
+++ b/icons/tensorflow/tensorflow-line-wordmark.svg
@@ -1,9 +1 @@
-
-
-TensorFlow
\ No newline at end of file
+TensorFlow
\ No newline at end of file
diff --git a/icons/tensorflow/tensorflow-line.svg b/icons/tensorflow/tensorflow-line.svg
index a4cbde11f..1969d6604 100644
--- a/icons/tensorflow/tensorflow-line.svg
+++ b/icons/tensorflow/tensorflow-line.svg
@@ -1,3 +1 @@
-
-
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/tensorflow/tensorflow-original-wordmark.svg b/icons/tensorflow/tensorflow-original-wordmark.svg
index f1b1ea157..a9367ffad 100644
--- a/icons/tensorflow/tensorflow-original-wordmark.svg
+++ b/icons/tensorflow/tensorflow-original-wordmark.svg
@@ -1,9 +1 @@
-
-
-TensorFlow
\ No newline at end of file
+TensorFlow
\ No newline at end of file
diff --git a/icons/tensorflow/tensorflow-original.svg b/icons/tensorflow/tensorflow-original.svg
index bc98ce302..7e64c8150 100644
--- a/icons/tensorflow/tensorflow-original.svg
+++ b/icons/tensorflow/tensorflow-original.svg
@@ -1,3 +1 @@
-
-
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/tensorflow/tensorflow-plain-wordmark.svg b/icons/tensorflow/tensorflow-plain-wordmark.svg
index ee7b5a26c..0e31602fd 100644
--- a/icons/tensorflow/tensorflow-plain-wordmark.svg
+++ b/icons/tensorflow/tensorflow-plain-wordmark.svg
@@ -1,9 +1 @@
-
-
-TensorFlow
\ No newline at end of file
+TensorFlow
\ No newline at end of file
diff --git a/icons/tensorflow/tensorflow-plain.svg b/icons/tensorflow/tensorflow-plain.svg
index b0e90d4a6..59fc9d4aa 100644
--- a/icons/tensorflow/tensorflow-plain.svg
+++ b/icons/tensorflow/tensorflow-plain.svg
@@ -1,3 +1 @@
-
-
-
\ No newline at end of file
+
\ No newline at end of file
From c3e18d5c87a023fdfdaacf04ba9701d57f2afa72 Mon Sep 17 00:00:00 2001
From: AtomToast
Date: Sat, 1 May 2021 19:35:07 +0200
Subject: [PATCH 34/79] new icon: zig (original, original-wordmark,
plain-wordmark)
---
devicon.json | 24 +++++
icons/zig/zig-original-wordmark.svg | 125 ++++++++++++++++++++++++++
icons/zig/zig-original.svg | 96 ++++++++++++++++++++
icons/zig/zig-plain-wordmark.svg | 133 ++++++++++++++++++++++++++++
4 files changed, 378 insertions(+)
create mode 100644 icons/zig/zig-original-wordmark.svg
create mode 100644 icons/zig/zig-original.svg
create mode 100644 icons/zig/zig-plain-wordmark.svg
diff --git a/devicon.json b/devicon.json
index ace8ef8cd..a1b219e57 100644
--- a/devicon.json
+++ b/devicon.json
@@ -3628,5 +3628,29 @@
},
"color": "#68b604",
"aliases": []
+ },
+ {
+ "name": "zig",
+ "tags": [
+ "language"
+ ],
+ "versions": {
+ "svg": [
+ "original",
+ "original-wordmark",
+ "plain-wordmark"
+ ],
+ "font": [
+ "original",
+ "plain-wordmark"
+ ]
+ },
+ "color": "#f7a41d",
+ "aliases": [
+ {
+ "base":"original",
+ "alias":"plain"
+ }
+ ]
}
]
diff --git a/icons/zig/zig-original-wordmark.svg b/icons/zig/zig-original-wordmark.svg
new file mode 100644
index 000000000..feff02470
--- /dev/null
+++ b/icons/zig/zig-original-wordmark.svg
@@ -0,0 +1,125 @@
+
+
+
+
+
+ image/svg+xml
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/icons/zig/zig-original.svg b/icons/zig/zig-original.svg
new file mode 100644
index 000000000..b00fb1ae9
--- /dev/null
+++ b/icons/zig/zig-original.svg
@@ -0,0 +1,96 @@
+
+
+
+
+
+ image/svg+xml
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/icons/zig/zig-plain-wordmark.svg b/icons/zig/zig-plain-wordmark.svg
new file mode 100644
index 000000000..cb5a0cb3e
--- /dev/null
+++ b/icons/zig/zig-plain-wordmark.svg
@@ -0,0 +1,133 @@
+
+
+
+
+
+ image/svg+xml
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
From 4b12bc19b696ca87f3c73cd1c184db2b2480e15b Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Malte=20J=C3=BCrgens?=
Date: Sat, 1 May 2021 19:57:47 +0000
Subject: [PATCH 35/79] Replace raw.githubusercontent.com with jsdelivr (#586)
Co-authored-by: Clemens Bastian <8781699+amacado@users.noreply.github.com>
---
docs/assets/js/script.js | 2 +-
docs/index.html | 4 ++--
2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/docs/assets/js/script.js b/docs/assets/js/script.js
index e85d13e99..66c7d7249 100644
--- a/docs/assets/js/script.js
+++ b/docs/assets/js/script.js
@@ -24,7 +24,7 @@ devicon.controller('IconListCtrl', function($scope, $http, $compile) {
});
- var baseUrl = 'https://raw.githubusercontent.com/' + gitHubPath + '/master/'
+ var baseUrl = `https://cdn.jsdelivr.net/gh/${gitHubPath}/`
// Get devicon.json
$http.get(baseUrl + '/devicon.json').success(function(data) {
diff --git a/docs/index.html b/docs/index.html
index 8c9dec6b0..dd4240295 100644
--- a/docs/index.html
+++ b/docs/index.html
@@ -33,7 +33,7 @@
-
+
@@ -77,7 +77,7 @@ Font versions
SVG versions
-
+
From b4928906fba44b8b707e865e4d18c79e53d9a92d Mon Sep 17 00:00:00 2001
From: reevesba
Date: Sat, 1 May 2021 15:23:45 -0700
Subject: [PATCH 36/79] recommended svg fixes
---
devicon.json | 4 -
icons/tensorflow/tensorflow-line-wordmark.svg | 161 +++++++++++++++++-
icons/tensorflow/tensorflow-line.svg | 80 ++++++++-
.../tensorflow-original-wordmark.svg | 151 +++++++++++++++-
icons/tensorflow/tensorflow-original.svg | 71 +++++++-
.../tensorflow/tensorflow-plain-wordmark.svg | 1 -
icons/tensorflow/tensorflow-plain.svg | 1 -
7 files changed, 459 insertions(+), 10 deletions(-)
delete mode 100644 icons/tensorflow/tensorflow-plain-wordmark.svg
delete mode 100644 icons/tensorflow/tensorflow-plain.svg
diff --git a/devicon.json b/devicon.json
index b8c6865b4..f24ed490c 100644
--- a/devicon.json
+++ b/devicon.json
@@ -3169,16 +3169,12 @@
"svg": [
"original",
"original-wordmark",
- "plain",
- "plain-wordmark",
"line",
"line-wordmark"
],
"font": [
"original",
"original-wordmark",
- "plain",
- "plain-wordmark",
"line",
"line-wordmark"
]
diff --git a/icons/tensorflow/tensorflow-line-wordmark.svg b/icons/tensorflow/tensorflow-line-wordmark.svg
index db6875cbb..312e13e2f 100644
--- a/icons/tensorflow/tensorflow-line-wordmark.svg
+++ b/icons/tensorflow/tensorflow-line-wordmark.svg
@@ -1 +1,160 @@
-TensorFlow
\ No newline at end of file
+
+
+
+
+
+ image/svg+xml
+
+
+
+
+
+
+
+
+ TensorFlow
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/icons/tensorflow/tensorflow-line.svg b/icons/tensorflow/tensorflow-line.svg
index 1969d6604..d58a400a5 100644
--- a/icons/tensorflow/tensorflow-line.svg
+++ b/icons/tensorflow/tensorflow-line.svg
@@ -1 +1,79 @@
-
\ No newline at end of file
+
+
+
+
+
+ image/svg+xml
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/icons/tensorflow/tensorflow-original-wordmark.svg b/icons/tensorflow/tensorflow-original-wordmark.svg
index a9367ffad..c15ad4312 100644
--- a/icons/tensorflow/tensorflow-original-wordmark.svg
+++ b/icons/tensorflow/tensorflow-original-wordmark.svg
@@ -1 +1,150 @@
-TensorFlow
\ No newline at end of file
+
+
+
+
+
+ image/svg+xml
+
+
+
+
+
+
+
+
+ TensorFlow
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/icons/tensorflow/tensorflow-original.svg b/icons/tensorflow/tensorflow-original.svg
index 7e64c8150..d6ddd7a00 100644
--- a/icons/tensorflow/tensorflow-original.svg
+++ b/icons/tensorflow/tensorflow-original.svg
@@ -1 +1,70 @@
-
\ No newline at end of file
+
+
+
+
+
+ image/svg+xml
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/icons/tensorflow/tensorflow-plain-wordmark.svg b/icons/tensorflow/tensorflow-plain-wordmark.svg
deleted file mode 100644
index 0e31602fd..000000000
--- a/icons/tensorflow/tensorflow-plain-wordmark.svg
+++ /dev/null
@@ -1 +0,0 @@
-TensorFlow
\ No newline at end of file
diff --git a/icons/tensorflow/tensorflow-plain.svg b/icons/tensorflow/tensorflow-plain.svg
deleted file mode 100644
index 59fc9d4aa..000000000
--- a/icons/tensorflow/tensorflow-plain.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
From 2c6a21d9f475741208d25c41da89dd308bb4fabb Mon Sep 17 00:00:00 2001
From: Thomas Bui <43018778+Thomas-Boi@users.noreply.github.com>
Date: Wed, 12 May 2021 00:57:31 -0700
Subject: [PATCH 37/79] Clean up and CONTRIBUTING upgrade (#595)
* Updated CONTRIBUTING
* Clean up various scripts (no functional changes)
* Update CONTRIBUTING.md
Co-authored-by: Clemens Bastian <8781699+amacado@users.noreply.github.com>
* Change icons to use devicon in README and CONTRIBUTING
* Add optimize-bot into CONTRIBUTING.md
* Update CONTRIBUTING.md
Co-authored-by: David Leal
* Update README.md
Co-authored-by: David Leal
* Update README.md
Co-authored-by: David Leal
* Change release message step name
* Update CONTRIBUTING.md
Co-authored-by: David Leal
* Update CONTRIBUTING.md
Co-authored-by: David Leal
* Update CONTRIBUTING.md
Co-authored-by: David Leal
* Update CONTRIBUTING.md
Co-authored-by: David Leal
* Update CONTRIBUTING.md
Co-authored-by: David Leal
* Update CONTRIBUTING.md
Co-authored-by: David Leal
* Changed all 'svg' to "SVG"
Co-authored-by: Clemens Bastian <8781699+amacado@users.noreply.github.com>
Co-authored-by: David Leal
---
.github/drafts/check_svgs_monthly.py | 26 ----
.github/drafts/check_svgs_monthly.yml | 42 ------
.github/drafts/peek_icons imgur.yml | 109 --------------
.github/scripts/build_assets/arg_getters.py | 15 --
.github/scripts/build_assets/filehandler.py | 2 +-
.github/scripts/check_svgs_on_pr.py | 51 +++----
.github/workflows/get_release_message.yml | 2 +-
CONTRIBUTING.md | 149 +++++++++++++-------
README.md | 40 +++---
9 files changed, 147 insertions(+), 289 deletions(-)
delete mode 100644 .github/drafts/check_svgs_monthly.py
delete mode 100644 .github/drafts/check_svgs_monthly.yml
delete mode 100644 .github/drafts/peek_icons imgur.yml
diff --git a/.github/drafts/check_svgs_monthly.py b/.github/drafts/check_svgs_monthly.py
deleted file mode 100644
index 440e2fcb5..000000000
--- a/.github/drafts/check_svgs_monthly.py
+++ /dev/null
@@ -1,26 +0,0 @@
-import traceback
-import sys
-
-# pycharm complains that build_assets is an unresolved ref
-# don't worry about it, the script still runs
-from build_assets import filehandler, arg_getters
-from build_assets import util
-
-
-def main():
- """
- Check the quality of the svgs of the whole icons folder.
- """
- args = arg_getters.get_check_svgs_monthly_args()
-
- try:
- devicon_json = filehandler.get_json_file_content(args.devicon_json_path)
- svgs = filehandler.get_svgs_paths(devicon_json, args.icons_folder_path)
- util.check_svgs(svgs)
- print("All SVGs found were good. Task completed.")
- except Exception as e:
- util.exit_with_err(e)
-
-
-if __name__ == "__main__":
- main()
\ No newline at end of file
diff --git a/.github/drafts/check_svgs_monthly.yml b/.github/drafts/check_svgs_monthly.yml
deleted file mode 100644
index 5e0655aaf..000000000
--- a/.github/drafts/check_svgs_monthly.yml
+++ /dev/null
@@ -1,42 +0,0 @@
-name: Check SVGs Monthly
-on: workflow_dispatch
- # schedule:
- # - cron: '0 0 1 * *'
-jobs:
- check_develop:
- name: Check the SVGs' quality in the `develop` branch
- runs-on: ubuntu-18.04
- steps:
-
- - uses: actions/checkout@v2
- with:
- ref: develop
-
- - uses: actions/setup-python@v2
- with:
- python-version: 3.8
-
- - name: Install dependencies
- run: python -m pip install --upgrade pip
-
- - name: Run the check_svg script
- run: >
- python ./.github/scripts/check_svgs_monthly.py ./devicon.json ./icons
-
- check_master:
- name: Check the SVGs' quality in the `master` branch
- runs-on: ubuntu-18.04
- steps:
-
- - uses: actions/checkout@v2 # check out default branch, which is master
-
- - uses: actions/setup-python@v2
- with:
- python-version: 3.8
-
- - name: Install dependencies
- run: python -m pip install --upgrade pip
-
- - name: Run the check_svg script
- run: >
- python ./.github/scripts/check_svgs_monthly.py ./icomoon.json ./devicon.json ./icons
diff --git a/.github/drafts/peek_icons imgur.yml b/.github/drafts/peek_icons imgur.yml
deleted file mode 100644
index 90ed6fbac..000000000
--- a/.github/drafts/peek_icons imgur.yml
+++ /dev/null
@@ -1,109 +0,0 @@
-name: Peek Icons
-on:
- pull_request:
- types: [labeled]
-jobs:
- build:
- name: Get Fonts From Icomoon
- if: contains(github.event.pull_request.labels.*.name, 'bot:peek')
- runs-on: windows-2019
- steps:
- - uses: actions/checkout@v2
- - name: Setup Python v3.8
- uses: actions/setup-python@v2
- with:
- python-version: 3.8
- - name: Install dependencies
- run: |
- python -m pip install --upgrade pip
- pip install -r ./.github/scripts/requirements.txt
- - name: Run icomoon_peek.py
- env:
- PR_TITLE: ${{ github.event.pull_request.title }}
- shell: cmd
- run: >
- python ./.github/scripts/icomoon_peek.py
- ./.github/scripts/build_assets/geckodriver-v0.27.0-win64/geckodriver.exe ./icomoon.json
- ./devicon.json ./icons ./ --headless --pr_title "%PR_TITLE%"
- - name: Upload geckodriver.log for debugging purposes
- uses: actions/upload-artifact@v2
- if: failure()
- with:
- name: geckodriver-log
- path: ./geckodriver.log
- - name: Upload screenshot of the newly made icons
- id: icons_overview_img_step
- uses: devicons/public-upload-to-imgur@v2.1
- if: success()
- with:
- path: ./screenshots/new_icons.png
- client_id: ${{secrets.IMGUR_CLIENT_ID}}
- - name: Upload zoomed in screenshot of the newly made icons
- id: icons_detailed_img_step
- uses: devicons/public-upload-to-imgur@v2.1
- if: success()
- with:
- path: ./screenshots/screenshot_*.png
- client_id: ${{secrets.IMGUR_CLIENT_ID}}
- - name: Generate the markdowns for the screenshot and put it in the DETAILED_IMGS_MARKDOWN env var
- if: success()
- env:
- IMG_URLS: ${{ steps.icons_detailed_img_step.outputs.imgur_urls }}
- run: |
- echo 'DETAILED_IMGS_MARKDOWN<> $GITHUB_ENV
- python ./.github/scripts/generate_screenshot_markdown.py >> $GITHUB_ENV
- echo 'EOF' >> $GITHUB_ENV
- shell: bash
- - name: Comment on the PR about the result
- if: success()
- uses: github-actions-up-and-running/pr-comment@v1.0.1
- env:
- OVERVIEW_IMG_URL: ${{ fromJSON(steps.icons_overview_img_step.outputs.imgur_urls)[0] }}
- MESSAGE: |
- Hi!
-
- I'm Devicons' Peek Bot and I just peeked at the icons that you wanted to add using [icomoon.io](https://icomoon.io/app/#/select).
- Here is the result below:
-
- 
-
- Here are the zoomed-in screenshots of the added icons:
- {1}
-
- Note: If the images don't show up, it's probably because it has been autodeleted by Imgur after 6 months due to our API choice.
-
- The maintainers will now take a look at it and decide whether to merge your PR.
-
- Thank you for contributing to Devicon! I hope everything works out and your icons are accepted into the repo.
-
- Cheers :),
-
- Peek Bot
- with:
- repo-token: ${{ secrets.GITHUB_TOKEN }}
- message: ${{format(env.MESSAGE, env.OVERVIEW_IMG_URL, env.DETAILED_IMGS_MARKDOWN)}}
- - name: Comment on the PR about the result
- if: failure()
- uses: github-actions-up-and-running/pr-comment@v1.0.1
- env:
- MESSAGE: |
- Hi!
-
- I'm Devicons' Peek Bot and it seems we've ran into a problem. I'm supposed to check your svgs but I couldn't do my task due to an issue.
-
- Can you please double check and fix the possible issues below:
-
- - Your svgs are named and added correctly to the /icons folder as seen [here](https://github.com/devicons/devicon/blob/master/CONTRIBUTING.md#orgGuidelines).
- - Your icon information has been added to the `devicon.json` as seen [here](https://github.com/devicons/devicon/blob/master/CONTRIBUTING.md#updateDevicon)
- - Your PR title follows the format seen [here](https://github.com/devicons/devicon/blob/master/CONTRIBUTING.md#overview)
-
- Once everything is fixed, the maintainers will try again. If I still fail, the maintainers will investigate what cause this problem.
-
- Thank you for your help :smile:
-
- Cheers :),
-
- Peek Bot
- with:
- repo-token: ${{ secrets.GITHUB_TOKEN }}
- message: ${{env.MESSAGE}}
diff --git a/.github/scripts/build_assets/arg_getters.py b/.github/scripts/build_assets/arg_getters.py
index ebe37ea7d..705a0ab14 100644
--- a/.github/scripts/build_assets/arg_getters.py
+++ b/.github/scripts/build_assets/arg_getters.py
@@ -55,21 +55,6 @@ def get_check_svgs_on_pr_args():
return parser.parse_args()
-def get_check_svgs_monthly_args():
- """
- Get the commandline arguments for the check_svgs_monthly.py.
- """
- parser = ArgumentParser(description="Check the SVGs to ensure their attributes are correct. Run monthly.")
- parser.add_argument("devicon_json_path",
- help="The path to the devicon.json",
- action=PathResolverAction)
-
- parser.add_argument("icons_folder_path",
- help="The path to the icons folder",
- action=PathResolverAction)
- return parser.parse_args()
-
-
def get_release_message_args():
"""
Get the commandline arguments for get_release_message.py.
diff --git a/.github/scripts/build_assets/filehandler.py b/.github/scripts/build_assets/filehandler.py
index c30c7b65f..a73433500 100644
--- a/.github/scripts/build_assets/filehandler.py
+++ b/.github/scripts/build_assets/filehandler.py
@@ -234,7 +234,7 @@ def get_added_modified_svgs(files_added_json_path: str,
def write_to_file(path: str, value: any):
"""
- Write the value to a JSON file.
+ Write the value to a file.
"""
with open(path, "w") as file:
file.write(value)
diff --git a/.github/scripts/check_svgs_on_pr.py b/.github/scripts/check_svgs_on_pr.py
index 64b8fba35..52c4322b6 100644
--- a/.github/scripts/check_svgs_on_pr.py
+++ b/.github/scripts/check_svgs_on_pr.py
@@ -57,39 +57,42 @@ def check_svgs(svg_file_paths: List[Path]):
# batch err messages together so user can fix everything at once
err_msgs = []
for svg_path in svg_file_paths:
- tree = et.parse(svg_path)
- root = tree.getroot()
- namespace = "{http://www.w3.org/2000/svg}"
- err_msg = [f"{svg_path}:"]
+ try:
+ tree = et.parse(svg_path)
+ root = tree.getroot()
+ namespace = "{http://www.w3.org/2000/svg}"
+ err_msg = [f"{svg_path}:"]
- if root.tag != f"{namespace}svg":
- err_msg.append(f"-root is '{root.tag}'. Root must be an 'svg' element")
+ if root.tag != f"{namespace}svg":
+ err_msg.append(f"-root is '{root.tag}'. Root must be an 'svg' element")
- if root.get("viewBox") != "0 0 128 128":
- err_msg.append("-'viewBox' is not '0 0 128 128' -> Set it or scale the file using https://www.iloveimg.com/resize-image/resize-svg")
+ if root.get("viewBox") != "0 0 128 128":
+ err_msg.append("-'viewBox' is not '0 0 128 128' -> Set it or scale the file using https://www.iloveimg.com/resize-image/resize-svg")
- acceptable_size = [None, "128px", "128"]
- if root.get("height") not in acceptable_size:
- err_msg.append("-'height' is present in svg element but is not '128' or '128px' -> Remove it or set it to '128' or '128px'")
+ acceptable_size = [None, "128px", "128"]
+ if root.get("height") not in acceptable_size:
+ err_msg.append("-'height' is present in svg element but is not '128' or '128px' -> Remove it or set it to '128' or '128px'")
- if root.get("width") not in acceptable_size:
- err_msg.append("-'width' is present in svg element but is not '128' or '128px' -> Remove it or set it to '128' or '128px'")
+ if root.get("width") not in acceptable_size:
+ err_msg.append("-'width' is present in svg element but is not '128' or '128px' -> Remove it or set it to '128' or '128px'")
- if root.get("style") is not None and "enable-background" in root.get("style"):
- err_msg.append("-deprecated 'enable-background' in style attribute -> Remove it")
+ if root.get("style") is not None and "enable-background" in root.get("style"):
+ err_msg.append("-deprecated 'enable-background' in style attribute -> Remove it")
- if root.get("x") is not None:
- err_msg.append("-unneccessary 'x' attribute in svg element -> Remove it")
+ if root.get("x") is not None:
+ err_msg.append("-unneccessary 'x' attribute in svg element -> Remove it")
- if root.get("y") is not None:
- err_msg.append("-unneccessary 'y' attribute in svg element -> Remove it")
+ if root.get("y") is not None:
+ err_msg.append("-unneccessary 'y' attribute in svg element -> Remove it")
- style = root.findtext(f".//{namespace}style")
- if style != None and "fill" in style:
- err_msg.append("-contains style declaration using 'fill' -> Replace classes with the 'fill' attribute instead")
+ style = root.findtext(f".//{namespace}style")
+ if style != None and "fill" in style:
+ err_msg.append("-contains style declaration using 'fill' -> Replace classes with the 'fill' attribute instead")
- if len(err_msg) > 1:
- err_msgs.append("\n".join(err_msg))
+ if len(err_msg) > 1:
+ err_msgs.append("\n".join(err_msg))
+ except et.ParseError as e:
+ raise Exception(f"SVG Error in file: {svg_path}. Full Error: \n" + str(e))
if len(err_msgs) > 0:
return "\n\n".join(err_msgs)
diff --git a/.github/workflows/get_release_message.yml b/.github/workflows/get_release_message.yml
index 292525e93..1340610c8 100644
--- a/.github/workflows/get_release_message.yml
+++ b/.github/workflows/get_release_message.yml
@@ -2,7 +2,7 @@ name: Get Release Message
on: workflow_dispatch
jobs:
build:
- name: Get Fonts From Icomoon
+ name: Get features since last release
runs-on: ubuntu-18.04
steps:
- uses: actions/checkout@v2
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 7820950c2..3565290f8 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -6,12 +6,12 @@ First of all, thanks for taking the time to contribute! This project can only gr
Table of Content
Terms
- Overview on Submitting Icon
+ Overview on Submitting Icon (start here if new)
Naming Conventions
- SVG Standards
+ SVG Standards
Organizational Guidelines
Updating the devicon.json
- Example
+ Example of Submitting An Icon
Requesting An Icon
Maintainer/Reviewer/Teams
The Build Script: how it works and its quirks
@@ -24,8 +24,8 @@ First of all, thanks for taking the time to contribute! This project can only gr
Here are some terms that we will use in this repo:
"Technology" is used to describe a software, libraries, tool, etc...
- "Icon" refers to the svgs and icons version of a technology as a whole.
- "SVG/svg" refers to the svg versions of the Icons.
+ "Icon" refers to the SVGs and icons version of a technology as a whole.
+ "SVG/SVG" refers to the svg versions of the Icons.
"icon" (lowercase) refers specficially to the font icon versions of the Icons.
@@ -33,16 +33,15 @@ First of all, thanks for taking the time to contribute! This project can only gr
Overview on Submitting Icons
Here is what you have to do to submit your icons to the repo.
- Create the svgs for each svg versions that you have
- Put the svgs of each Icon into its own folders in /icons
+ Create the SVGs for each SVG versions that you have. Follow the convention listed.
+ Put the SVGs of each Icon into its own folders in /icons
Update the devicon.json to include the new Icon
Create a separated pull request (PR) towards the develop branch for each Icon.
Include the name of the Icon in the pull request title in this format: new icon: Icon name (versions )
- Optional : Add images of the new svg(s) to the description of the pull request. This would help speed up the review process
Optional : Reference the issues regarding the new icon.
- A bot will check your SVGs. If there are any errors, please fix them as instructed.
- Wait for a maintainer to review your changes. They will run a script to check your icons.
- If there are no issues, they will accept your pull request and merge it using squash merging . If there are any problems, they will let you know and give you a chance to fix it.
+ Some bots will check your SVGs. If there are any errors, please fix them as instructed.
+ Wait for a maintainer to review your changes. They will run the peek-bot to check your icons.
+ If there are no issues, they will run the optimize-bot on your SVGs then merge it using squash merging . If there are any problems, they will let you know and give you a chance to fix it.
@@ -53,17 +52,48 @@ First of all, thanks for taking the time to contribute! This project can only gr
Amazon Web Services becomes amazonwebservices
Microsoft SQL Server becomes microsoftsqlserver
+
-Each icon/svg can come in different versions. So far, we have:
-
- original : the original logo. Can contain multiple colors. Example
- original-wordmark : similar to the above but must contain the name of the technology. Example
- plain : a one-color version of the original logo. Example
- plain-wordmark : a one-color version of the original logo but with wordmark. Example
- line : a one-color, line version of the original logo. Example
- line-wordmark : a one-color, line version of the original logo but with wordmark. Example
-
- Notes
+
Each icon/SVG can come in different versions:
+
+
+
+ original : the original logo. Can contain multiple colors.
+
+ devicon-original.svg
+
+
+ plain : a one-color version of the original logo. Note that the icon version will be stripped of all colors so you don't have to strip beforehand.
+
+ devicon-plain-wordmark.svg
+
+
+ line : a one-color, line version of the original logo. Note that the icon version will be stripped of all colors so you don't have to strip beforehand.
+
+ apache-line.svg
+
+
+
+
+ original-wordmark : similar to the above but must contain the name of the technology.
+
+ devicon-original-wordmark.svg
+
+
+ plain-wordmark : similar to the above but must contain the name of the technology. Note that the icon version will be stripped of all colors so you don't have to strip beforehand.
+
+ devicon-plain-wordmark.svg
+
+
+ line-wordmark : similar to the above but must contain the name of the technology. Note that the icon version will be stripped of all colors so you don't have to strip beforehand.
+
+ apache-line-wordmark.svg
+
+
+
+
+
+Notes:
You don't need to have 6 versions for each icon. An icon can only have one or two versions available. Just keep in mind that the minimum is 1 and the maximum 6 (for now). You must also have at least one version that can be make into an icon.
@@ -72,35 +102,38 @@ First of all, thanks for taking the time to contribute! This project can only gr
The plain and line versions (with or without wordmark) are designed to be available in the final icon font.
- The original version are only available in svg format, so they do not need to be as simple and can contain numerous colors.
+ The original SVG version do not need to be simple and can contain numerous colors/gradients. However, if it's intended to be made into an icon, keep it simple.
- Some icons are really simple (ex. Apple), so the original version can be used as the plain version and as the icon font. In this case, you'll only need to make one of the version (either "original" or "plain"). You can then add an alias in the devicon.json so they can be found with either the "original" or "plain" naming convention. Note: this only applies to font icon versions only, not the SVG versions.
+ Some icons are really simple (ex. Apple), so the original version can be used as the plain version and as the icon font. In this case, you'll only need to make one of the version (either original or plain ). You can then add an alias in the devicon.json so they can be found with either the original or plain naming convention.
+
+ This only applies to font icon versions only, not the SVG versions.
+ Aliases are no longer mandatory. If you are wondering which name to use, just pick original
+
-SVG Standards
-Before you submit your logos/svgs, please ensure that they meet the following standard:
+SVG Standards
+Before you submit your logos/SVGs, please ensure that they meet the following standard:
The background must be transparent.
- The svg name follows this convention: (Technology name)-(original|plain|line)(-wordmark?).
- The plain and line versions (with or without wordmark) need to stay as simple as possible. They must have only one color and the paths are united. We will strip the color when turning it into icons so they can have any color.
+ The icon is centered horizontally and vertically within the viewBox.
+ The SVG name follows this convention: (Technology name)-(original|plain|line)(-wordmark?).
+ The plain and line versions (with or without wordmark) need to stay as simple as possible. They must have only one color and the paths are united. The color will be removed when being turned into icons so the .svg can have any color.
- Optimize/compress your SVGs. You can use a service like compressor or SVG Editor .
+ Each .svg file contains one version of an icon in a 0 0 128 128 viewbox. You can use a service like resize-image for scaling the SVG.
The icon's strokes and texts must be fills. This is to satisfy our conversion website's requirements.
- Each .svg file contains one version of an icon in a 0 0 128 128 viewbox. You can use a service like resize-image for scaling the svg.
- The svg element does not need the height and width attributes. However, if you do use it, ensure their values are either "128" or "128px". Ex: height="128"
- Each .svg must use the fill attribute instead of using classes for colors. See here for more details.
+ The SVG element does not need the height and width attributes. However, if you do use it, ensure their values are either "128" or "128px". Ex: height="128"
+ Optimize/compress your SVGs. You can use a service like compressor or SVG Editor .
+ Each .svg must use the fill attribute instead of using classes for colors. This is to prevent class name clashing when using inline SVG. See here for more details.
Organizational Guidelines
- Each icon has its own folder located in the icons folder
- Each folder may contain one .eps file (optional)
- The .eps file should contains all available versions of an icon. Each version is contained in a 128px by 128px artboard
- Each folder must contain all the .svg files for the Icon
+ Each icon has its own folder located in the icons folder. All the .svg files for the Icon must go in the same folder
+ Optional : Each folder may contain one .eps file. The .eps file should contains all available versions of an icon. Each version is contained in a 128px by 128px artboard
@@ -123,8 +156,8 @@ First of all, thanks for taking the time to contribute! This project can only gr
// keep tracks of the different versions that you have.
"versions": {
- // list the svgs that you have
- "svg": VersionString[],
+ // list the SVGs that you have
+ "SVG": VersionString[],
// list the fonts acceptable versions that you have
"font": VersionString[]
@@ -146,7 +179,7 @@ First of all, thanks for taking the time to contribute! This project can only gr
Here is what VersionString means:
- It's the version part of an svg file's name
+ It's the version part of an SVG file's name
If you have "html5-original", the version string would be "original"
If you have "react-line-wordmark", the version string would be "line-wordmark"
See naming conventions section for more details
@@ -165,15 +198,15 @@ First of all, thanks for taking the time to contribute! This project can only gr
-Example
+Example of Submitting An Icon
-As an example, let's assume you have created the svgs for Redhat and Amazon Web Services logos.
+As an example, let's assume you have created the SVGs for Redhat and Amazon Web Services logos.
-For the Redhat svg, you have the "original", "original-wordmark", "plain", and "plain-wordmark" versions.
-For the Amazon Web Services svgs, you have the "original", "original-wordmark", "plain-wordmark" versions. The "original" version is simple enough to be a "plain" version as well. Note that we are not using the acronym AWS.
+For the Redhat SVG, you have the "original", "original-wordmark", "plain", and "plain-wordmark" versions.
+For the Amazon Web Services SVGs, you have the "original", "original-wordmark", "plain-wordmark" versions. The "original" version is simple enough to be a "plain" version as well. Note that we are not using the acronym AWS.
- Put the svgs for each logo that you have into its own folders in /icons
+ Put the SVGs for each logo that you have into its own folders in /icons
This means you would create two folders: one for amazonwebservices and one for redhat
Note : don't do this in the same commits; we want to have each Icon in its own PR.
@@ -192,7 +225,7 @@ As an example, let's assume you have created the svgs for Redhat and Amazon Web
"linux"
],
"versions": {
- "svg": [ // here are the versions that are available in svgs
+ "SVG": [ // here are the versions that are available in svgs
"original",
"original-wordmark",
"plain",
@@ -220,7 +253,7 @@ As an example, let's assume you have created the svgs for Redhat and Amazon Web
"server"
],
"versions": {
- "svg": [ // here are the versions that are available in svgs
+ "SVG": [ // here are the versions that are available in svgs
"original",
"original-wordmark",
"plain-wordmark"
@@ -236,7 +269,8 @@ As an example, let's assume you have created the svgs for Redhat and Amazon Web
{
"base": "original", // here is the base version that we will upload to Icomoon
"alias": "plain" // this is its alias. Our script will create a reference so users can search using "original" or "plain" for this icon
- // note that you don't provide aliases for the svg version. If "original" can't be made into a font, there's no need to provide it with a plain alias
+ // note that you don't provide aliases for the SVG version. If "original" can't be made into a font, there's no need to provide it with a plain alias
+ // note that this is now optional. You do not need to create aliases from now on. The attribute needs to stay though.
}
]
}
@@ -247,9 +281,7 @@ As an example, let's assume you have created the svgs for Redhat and Amazon Web
Create a separate pull request (PR) for each Icon.
- This means you would have to create two PRs
- For Amazon Web Services, the branch name would be icons/amazonwebservices.
- For Redhat, the branch name would be icons/redhat.
+ This means you would have to create one PR for Amazon Web Services and one PR for Redhat.
@@ -311,10 +343,21 @@ As an example, let's assume you have created the svgs for Redhat and Amazon Web
The Build Script: how it works and its quirks
We rely on GitHub Actions, Python, Selenium, Imgur, and Gulp to automate our tasks. Please feel free to take a look at the workflow files. The codes should be clear enough to follow along.
-So far, the tasks in the build script are:
+
+Here are the main bots/script that we use:
+
+ peek-bot: Upload the icons to Icomoon and see what it looks like. Doesn't download any icons at this time.
+ build-bot: Build the icons by uploading them to Icomoon and download the resulting icon files. Also update the css file
+ optimize-bot: Optimize the SVGs by minifying them and prefixing their IDs with the file names. This is done so using inline SVGs from this repository will not cause ID clash.
+ check-SVG-bot: Check the SVGs uploaded and ensure they have the correct view box, fills, etc..
+ npm-release-bot: Update the NPM package.
+ release-message-bot: Create the release message for the PR.
+
+
+Here are the modular tasks in the build script:
- Upload svgs to icomoon.io and get the icons back. For details, see the original disscussion , this PR that introduce the feature and the final changes to it. Used by peek-bot and build-bot .
- Preview what an svg would look like as an icon using the upload svgs script (see this ). Used by peek-bot .
+ Upload SVGs to icomoon.io and get the icons back. For details, see the original disscussion , this PR that introduce the feature and the final changes to it. Used by peek-bot and build-bot .
+ Preview what an SVG would look like as an icon using the upload svgs script (see this ). Used by peek-bot .
Build, combine, and minify CSS files. For details, see this . Used by build-bot .
Send screenshots to Imgur and upload it to a PR. See the PR for the Imgur action and the PR for uploading the pictures to a PR. Used by peek-bot and build-bot .
Ensure code quality is up to standard
@@ -356,7 +399,7 @@ As an example, let's assume you have created the svgs for Redhat and Amazon Web
See this PR 's peek result.
This is caused by a bug in Icomoon's parser (see this ).
- Solution: Luckily this is an extremely rare case. Try remake the svg in a different way (using different paths/shapes) and test using Icomoon.
+ Solution: Luckily this is an extremely rare case. Try remake the SVG in a different way (using different paths/shapes) and test using Icomoon.
diff --git a/README.md b/README.md
index 5b08278d5..bd5aca733 100644
--- a/README.md
+++ b/README.md
@@ -58,7 +58,7 @@
About the project
Devicon aims to gather all logos representing development languages and tools.
- Each icon comes in several versions: font/svg, original/plain/line, colored/not colored, wordmark/no wordmark.
+ Each icon comes in several versions: font/SVG, original/plain/line, colored/not colored, wordmark/no wordmark.
Devicon has 150+ icons. And it's growing!
@@ -78,7 +78,7 @@
Getting started
For a super fast setup go check devicon.dev .
- You can either use the raw svg icons or our devicon font (which is
+ You can either use the raw SVG icons or our devicon font (which is
also available via CDN).
@@ -110,44 +110,48 @@ yarn add devicon
Start using icons with <i>-tag
```html
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
```
- An alternate way to use devicon is by copy/paste the raw svg code
+ An alternate way to use devicon is by copy/paste the raw SVG code
to your project.
-
+
```html
-
-
-
-
+
+
```
Add css rules in your stylesheet
```css
-.devicon-git-plain {
+.devicon-devicon-plain {
max-width: 2em;
}
/* if you want to change the original color */
-.devicon-git-plain path {
+.devicon-devicon-plain path {
fill: #4691f6;
}
```
+You can also use the img tag and referencing an svg directly from the repo.
+
+```html
+
+```
+
Requesting icon
When you want to request a icon please feel feel to create a issue. See our contribution guidelines for more information.
From d98a72cb9a6d8e543ddbddc32bac231572349e96 Mon Sep 17 00:00:00 2001
From: Thomas Bui <43018778+Thomas-Boi@users.noreply.github.com>
Date: Sat, 15 May 2021 12:14:13 -0700
Subject: [PATCH 38/79] Optimized SVG using SVGO (#597)
* Added script to optimize svgs
* Updated the svgs using svgo
* Made the optimize svg script into a workflow
* Added npm install step
* Change the env variable bug
* Clean up and updated check svg
* Change label name
---
.github/scripts/check_svgs_on_pr.py | 14 +-
.github/workflows/optimize_svg.yml | 33 +
gulpfile.js | 67 +
icons/aarch64/aarch64-original.svg | 24 +-
icons/aarch64/aarch64-plain.svg | 24 +-
icons/aftereffects/aftereffects-original.svg | 2 +-
icons/aftereffects/aftereffects-plain.svg | 2 +-
.../amazonwebservices-original-wordmark.svg | 2 +-
.../amazonwebservices-original.svg | 2 +-
.../amazonwebservices-plain-wordmark.svg | 2 +-
icons/android/android-original-wordmark.svg | 2 +-
icons/android/android-original.svg | 2 +-
icons/android/android-plain-wordmark.svg | 2 +-
icons/android/android-plain.svg | 2 +-
.../angularjs/angularjs-original-wordmark.svg | 2 +-
icons/angularjs/angularjs-original.svg | 2 +-
icons/angularjs/angularjs-plain-wordmark.svg | 2 +-
icons/angularjs/angularjs-plain.svg | 2 +-
icons/apache/apache-line-wordmark.svg | 2 +-
icons/apache/apache-line.svg | 2 +-
icons/apache/apache-original-wordmark.svg | 3540 +----------------
icons/apache/apache-original.svg | 3494 +---------------
icons/apache/apache-plain-wordmark.svg | 2 +-
icons/apache/apache-plain.svg | 2 +-
.../appcelerator-original-wordmark.svg | 2 +-
icons/appcelerator/appcelerator-original.svg | 2 +-
.../appcelerator-plain-wordmark.svg | 2 +-
icons/apple/apple-original.svg | 2 +-
icons/appwrite/appwrite-original-wordmark.svg | 2 +-
icons/appwrite/appwrite-original.svg | 2 +-
icons/appwrite/appwrite-plain-wordmark.svg | 2 +-
icons/appwrite/appwrite-plain.svg | 2 +-
icons/arduino/arduino-original-wordmark.svg | 2 +-
icons/arduino/arduino-original.svg | 2 +-
icons/arduino/arduino-plain-wordmark.svg | 2 +-
icons/arduino/arduino-plain.svg | 2 +-
icons/atom/atom-original-wordmark.svg | 2 +-
icons/atom/atom-original.svg | 2 +-
icons/babel/babel-original.svg | 2 +-
icons/babel/babel-plain.svg | 2 +-
.../backbonejs-original-wordmark.svg | 2 +-
icons/backbonejs/backbonejs-original.svg | 2 +-
.../backbonejs/backbonejs-plain-wordmark.svg | 2 +-
icons/backbonejs/backbonejs-plain.svg | 2 +-
icons/bash/bash-original.svg | 29 +-
icons/bash/bash-plain.svg | 25 +-
icons/behance/behance-original-wordmark.svg | 2 +-
icons/behance/behance-original.svg | 2 +-
icons/behance/behance-plain-wordmark.svg | 2 +-
icons/behance/behance-plain.svg | 2 +-
.../bitbucket/bitbucket-original-wordmark.svg | 2 +-
icons/bootstrap/bootstrap-plain-wordmark.svg | 2 +-
icons/bootstrap/bootstrap-plain.svg | 2 +-
icons/bower/bower-line-wordmark.svg | 2 +-
icons/bower/bower-line.svg | 2 +-
icons/bower/bower-original-wordmark.svg | 2 +-
icons/bower/bower-original.svg | 2 +-
icons/bower/bower-plain-wordmark.svg | 2 +-
icons/bower/bower-plain.svg | 2 +-
icons/c/c-line.svg | 2 +-
icons/c/c-original.svg | 2 +-
icons/c/c-plain.svg | 2 +-
icons/cakephp/cakephp-original-wordmark.svg | 2 +-
icons/cakephp/cakephp-original.svg | 2 +-
icons/cakephp/cakephp-plain-wordmark.svg | 2 +-
icons/cakephp/cakephp-plain.svg | 2 +-
icons/ceylon/ceylon-original-wordmark.svg | 2 +-
icons/ceylon/ceylon-original.svg | 2 +-
icons/ceylon/ceylon-plain-wordmark.svg | 2 +-
icons/ceylon/ceylon-plain.svg | 2 +-
icons/chrome/chrome-original-wordmark.svg | 2 +-
icons/chrome/chrome-original.svg | 2 +-
icons/chrome/chrome-plain-wordmark.svg | 2 +-
icons/chrome/chrome-plain.svg | 2 +-
icons/clojure/clojure-line.svg | 2 +-
icons/clojure/clojure-original.svg | 2 +-
.../clojurescript/clojurescript-original.svg | 2 +-
icons/clojurescript/clojurescript-plain.svg | 2 +-
.../codeigniter-plain-wordmark.svg | 2 +-
icons/codeigniter/codeigniter-plain.svg | 2 +-
icons/codepen/codepen-original-wordmark.svg | 2 +-
icons/codepen/codepen-plain.svg | 4 +-
.../coffeescript-original-wordmark.svg | 2 +-
icons/coffeescript/coffeescript-original.svg | 2 +-
icons/composer/composer-line-wordmark.svg | 24 +-
icons/composer/composer-line.svg | 18 +-
icons/composer/composer-original.svg | 115 +-
.../confluence-original-wordmark.svg | 2 +-
icons/confluence/confluence-original.svg | 2 +-
icons/couchdb/couchdb-original-wordmark.svg | 2 +-
icons/couchdb/couchdb-original.svg | 2 +-
icons/couchdb/couchdb-plain-wordmark.svg | 2 +-
icons/couchdb/couchdb-plain.svg | 2 +-
icons/cplusplus/cplusplus-line.svg | 2 +-
icons/cplusplus/cplusplus-original.svg | 2 +-
icons/cplusplus/cplusplus-plain.svg | 2 +-
icons/csharp/csharp-line.svg | 2 +-
icons/csharp/csharp-original.svg | 2 +-
icons/csharp/csharp-plain.svg | 2 +-
icons/css3/css3-original-wordmark.svg | 2 +-
icons/css3/css3-original.svg | 2 +-
icons/css3/css3-plain-wordmark.svg | 2 +-
icons/css3/css3-plain.svg | 2 +-
icons/cucumber/cucumber-plain-wordmark.svg | 7 +-
icons/cucumber/cucumber-plain.svg | 18 +-
icons/d3js/d3js-original.svg | 2 +-
icons/d3js/d3js-plain.svg | 2 +-
icons/dart/dart-original-wordmark.svg | 2 +-
icons/dart/dart-original.svg | 2 +-
icons/dart/dart-plain-wordmark.svg | 2 +-
icons/dart/dart-plain.svg | 2 +-
icons/debian/debian-original-wordmark.svg | 2 +-
icons/debian/debian-original.svg | 2 +-
icons/debian/debian-plain-wordmark.svg | 2 +-
icons/debian/debian-plain.svg | 2 +-
icons/devicon/devicon-original-wordmark.svg | 2 +-
icons/devicon/devicon-original.svg | 2 +-
icons/devicon/devicon-plain-wordmark.svg | 2 +-
icons/devicon/devicon-plain.svg | 2 +-
.../digitalocean-original-wordmark.svg | 16 +-
icons/digitalocean/digitalocean-original.svg | 13 +-
.../digitalocean-plain-wordmark.svg | 16 +-
icons/digitalocean/digitalocean-plain.svg | 13 +-
icons/django/django-line.svg | 2 +-
icons/django/django-original.svg | 2 +-
icons/django/django-plain.svg | 2 +-
icons/docker/docker-original-wordmark.svg | 2 +-
icons/docker/docker-original.svg | 2 +-
icons/docker/docker-plain-wordmark.svg | 2 +-
icons/docker/docker-plain.svg | 2 +-
icons/doctrine/doctrine-line-wordmark.svg | 2 +-
icons/doctrine/doctrine-line.svg | 2 +-
icons/doctrine/doctrine-original-wordmark.svg | 2 +-
icons/doctrine/doctrine-original.svg | 2 +-
icons/doctrine/doctrine-plain-wordmark.svg | 2 +-
icons/doctrine/doctrine-plain.svg | 2 +-
icons/dot-net/dot-net-original-wordmark.svg | 2 +-
icons/dot-net/dot-net-original.svg | 2 +-
icons/dot-net/dot-net-plain-wordmark.svg | 2 +-
icons/dot-net/dot-net-plain.svg | 2 +-
icons/dotnetcore/dotnetcore-original.svg | 9 +-
icons/dotnetcore/dotnetcore-plain.svg | 9 +-
icons/drupal/drupal-original-wordmark.svg | 2 +-
icons/drupal/drupal-original.svg | 2 +-
icons/drupal/drupal-plain-wordmark.svg | 2 +-
icons/drupal/drupal-plain.svg | 2 +-
icons/electron/electron-original-wordmark.svg | 2 +-
icons/electron/electron-original.svg | 2 +-
icons/eleventy/eleventy-original.svg | 2 +-
icons/eleventy/eleventy-plain.svg | 2 +-
icons/elixir/elixir-original-wordmark.svg | 2 +-
icons/elixir/elixir-original.svg | 2 +-
icons/elixir/elixir-plain-wordmark.svg | 2 +-
icons/elixir/elixir-plain.svg | 2 +-
icons/elm/elm-original-wordmark.svg | 2 +-
icons/elm/elm-original.svg | 2 +-
icons/elm/elm-plain-wordmark.svg | 2 +-
icons/elm/elm-plain.svg | 2 +-
icons/ember/ember-original-wordmark.svg | 2 +-
icons/erlang/erlang-original-wordmark.svg | 2 +-
icons/erlang/erlang-original.svg | 2 +-
icons/erlang/erlang-plain-wordmark.svg | 2 +-
icons/erlang/erlang-plain.svg | 2 +-
icons/express/express-original-wordmark.svg | 2 +-
icons/express/express-original.svg | 2 +-
icons/facebook/facebook-original.svg | 2 +-
icons/facebook/facebook-plain.svg | 2 +-
icons/figma/figma-original.svg | 11 +-
icons/figma/figma-plain.svg | 11 +-
icons/firebase/firebase-plain-wordmark.svg | 45 +-
icons/firebase/firebase-plain.svg | 8 +-
icons/firefox/firefox-original-wordmark.svg | 2 +-
icons/firefox/firefox-original.svg | 2 +-
icons/firefox/firefox-plain-wordmark.svg | 2 +-
icons/firefox/firefox-plain.svg | 2 +-
icons/flask/flask-original-wordmark.svg | 202 +-
icons/flask/flask-original.svg | 119 +-
icons/flutter/flutter-original.svg | 2 +-
icons/flutter/flutter-plain.svg | 2 +-
.../foundation-original-wordmark.svg | 2 +-
icons/foundation/foundation-original.svg | 2 +-
.../foundation/foundation-plain-wordmark.svg | 2 +-
icons/foundation/foundation-plain.svg | 2 +-
icons/gatling/gatling-plain-wordmark.svg | 23 +-
icons/gatling/gatling-plain.svg | 11 +-
icons/gatsby/gatsby-original-wordmark.svg | 2 +-
icons/gatsby/gatsby-original.svg | 2 +-
icons/gatsby/gatsby-plain-wordmark.svg | 2 +-
icons/gatsby/gatsby-plain.svg | 2 +-
icons/gimp/gimp-original-wordmark.svg | 2 +-
icons/gimp/gimp-original.svg | 2 +-
icons/gimp/gimp-plain-wordmark.svg | 2 +-
icons/gimp/gimp-plain.svg | 2 +-
icons/git/git-original-wordmark.svg | 2 +-
icons/git/git-original.svg | 2 +-
icons/git/git-plain-wordmark.svg | 2 +-
icons/git/git-plain.svg | 2 +-
icons/github/github-original-wordmark.svg | 2 +-
icons/github/github-original.svg | 2 +-
icons/gitlab/gitlab-original-wordmark.svg | 2 +-
icons/gitlab/gitlab-original.svg | 2 +-
icons/gitlab/gitlab-plain-wordmark.svg | 2 +-
icons/gitlab/gitlab-plain.svg | 2 +-
icons/gitter/gitter-plain-wordmark.svg | 2 +-
icons/gitter/gitter-plain.svg | 2 +-
icons/go/go-line.svg | 2 +-
icons/go/go-original.svg | 2 +-
icons/go/go-plain.svg | 2 +-
icons/google/google-original-wordmark.svg | 2 +-
icons/google/google-original.svg | 2 +-
icons/google/google-plain-wordmark.svg | 2 +-
icons/google/google-plain.svg | 2 +-
.../googlecloud-original-wordmark.svg | 15 +-
icons/googlecloud/googlecloud-original.svg | 12 +-
.../googlecloud-plain-wordmark.svg | 14 +-
icons/googlecloud/googlecloud-plain.svg | 12 +-
icons/gradle/gradle-plain-wordmark.svg | 40 +-
icons/gradle/gradle-plain.svg | 23 +-
icons/grails/grails-original.svg | 2 +-
icons/grails/grails-plain.svg | 2 +-
icons/graphql/graphql-plain-wordmark.svg | 28 +-
icons/graphql/graphql-plain.svg | 21 +-
icons/groovy/groovy-original.svg | 2 +-
icons/groovy/groovy-plain.svg | 2 +-
icons/grunt/grunt-line-wordmark.svg | 2 +-
icons/grunt/grunt-line.svg | 2 +-
icons/grunt/grunt-original-wordmark.svg | 2 +-
icons/grunt/grunt-original.svg | 2 +-
icons/grunt/grunt-plain-wordmark.svg | 2 +-
icons/grunt/grunt-plain.svg | 2 +-
icons/gulp/gulp-plain.svg | 2 +-
.../handlebars-original-wordmark.svg | 2 +-
icons/handlebars/handlebars-original.svg | 2 +-
icons/haskell/haskell-original-wordmark.svg | 9 +-
icons/haskell/haskell-original.svg | 7 +-
icons/haskell/haskell-plain-wordmark.svg | 9 +-
icons/haskell/haskell-plain.svg | 7 +-
icons/haxe/haxe-original.svg | 2 +-
icons/haxe/haxe-plain.svg | 2 +-
icons/heroku/heroku-original-wordmark.svg | 2 +-
icons/heroku/heroku-original.svg | 2 +-
icons/heroku/heroku-plain-wordmark.svg | 2 +-
icons/heroku/heroku-plain.svg | 2 +-
icons/html5/html5-original-wordmark.svg | 2 +-
icons/html5/html5-original.svg | 2 +-
icons/html5/html5-plain-wordmark.svg | 2 +-
icons/html5/html5-plain.svg | 2 +-
icons/ie10/ie10-original.svg | 2 +-
icons/illustrator/illustrator-line.svg | 2 +-
icons/illustrator/illustrator-plain.svg | 2 +-
icons/inkscape/inkscape-original-wordmark.svg | 2 +-
icons/inkscape/inkscape-original.svg | 2 +-
icons/inkscape/inkscape-plain-wordmark.svg | 2 +-
icons/inkscape/inkscape-plain.svg | 2 +-
icons/intellij/intellij-original-wordmark.svg | 2 +-
icons/intellij/intellij-original.svg | 2 +-
icons/intellij/intellij-plain-wordmark.svg | 2 +-
icons/intellij/intellij-plain.svg | 2 +-
icons/ionic/ionic-original-wordmark.svg | 2 +-
icons/ionic/ionic-original.svg | 2 +-
icons/jasmine/jasmine-plain-wordmark.svg | 2 +-
icons/jasmine/jasmine-plain.svg | 2 +-
icons/java/java-original-wordmark.svg | 2 +-
icons/java/java-original.svg | 2 +-
icons/java/java-plain-wordmark.svg | 2 +-
icons/java/java-plain.svg | 2 +-
icons/javascript/javascript-original.svg | 2 +-
icons/javascript/javascript-plain.svg | 2 +-
icons/jeet/jeet-original-wordmark.svg | 2 +-
icons/jeet/jeet-original.svg | 2 +-
icons/jeet/jeet-plain-wordmark.svg | 2 +-
icons/jeet/jeet-plain.svg | 2 +-
icons/jenkins/jenkins-line.svg | 21 +-
icons/jenkins/jenkins-original.svg | 86 +-
icons/jenkins/jenkins-plain.svg | 22 +-
icons/jetbrains/jetbrains-original.svg | 2 +-
icons/jetbrains/jetbrains-plain.svg | 2 +-
icons/jquery/jquery-original-wordmark.svg | 2 +-
icons/jquery/jquery-original.svg | 2 +-
icons/jquery/jquery-plain-wordmark.svg | 2 +-
icons/jquery/jquery-plain.svg | 2 +-
icons/jupyter/jupyter-original-wordmark.svg | 18 +-
icons/jupyter/jupyter-original.svg | 11 +-
icons/jupyter/jupyter-plain-wordmark.svg | 18 +-
icons/jupyter/jupyter-plain.svg | 11 +-
icons/kotlin/kotlin-original-wordmark.svg | 2 +-
icons/kotlin/kotlin-original.svg | 2 +-
icons/kotlin/kotlin-plain-wordmark.svg | 2 +-
icons/kotlin/kotlin-plain.svg | 2 +-
icons/krakenjs/krakenjs-original-wordmark.svg | 2 +-
icons/krakenjs/krakenjs-original.svg | 2 +-
icons/krakenjs/krakenjs-plain-wordmark.svg | 2 +-
icons/krakenjs/krakenjs-plain.svg | 2 +-
.../kubernetes/kubernetes-plain-wordmark.svg | 121 +-
icons/kubernetes/kubernetes-plain.svg | 54 +-
icons/laravel/laravel-plain-wordmark.svg | 2 +-
icons/laravel/laravel-plain.svg | 2 +-
icons/less/less-plain-wordmark.svg | 2 +-
icons/linkedin/linkedin-original-wordmark.svg | 2 +-
icons/linkedin/linkedin-original.svg | 2 +-
icons/linkedin/linkedin-plain-wordmark.svg | 2 +-
icons/linkedin/linkedin-plain.svg | 2 +-
icons/linux/linux-original.svg | 2 +-
icons/linux/linux-plain.svg | 2 +-
icons/lua/lua-original-wordmark.svg | 42 +-
icons/lua/lua-original.svg | 37 +-
icons/lua/lua-plain-wordmark.svg | 42 +-
icons/lua/lua-plain.svg | 37 +-
icons/materialui/materialui-original.svg | 2 +-
icons/materialui/materialui-plain.svg | 2 +-
icons/matlab/matlab-original.svg | 30 +-
icons/matlab/matlab-plain.svg | 7 +-
icons/meteor/meteor-original-wordmark.svg | 2 +-
icons/meteor/meteor-original.svg | 2 +-
icons/meteor/meteor-plain-wordmark.svg | 2 +-
icons/meteor/meteor-plain.svg | 2 +-
.../microsoftsqlserver-plain-wordmark.svg | 161 +-
.../microsoftsqlserver-plain.svg | 82 +-
icons/mocha/mocha-plain.svg | 2 +-
icons/mongodb/mongodb-original-wordmark.svg | 2 +-
icons/mongodb/mongodb-original.svg | 2 +-
icons/mongodb/mongodb-plain-wordmark.svg | 2 +-
icons/mongodb/mongodb-plain.svg | 2 +-
icons/moodle/moodle-original-wordmark.svg | 2 +-
icons/moodle/moodle-original.svg | 2 +-
icons/moodle/moodle-plain-wordmark.svg | 2 +-
icons/moodle/moodle-plain.svg | 2 +-
icons/mysql/mysql-original-wordmark.svg | 2 +-
icons/mysql/mysql-original.svg | 2 +-
icons/mysql/mysql-plain-wordmark.svg | 2 +-
icons/mysql/mysql-plain.svg | 2 +-
icons/nestjs/nestjs-plain-wordmark.svg | 2 +-
icons/nestjs/nestjs-plain.svg | 2 +-
icons/nextjs/nextjs-line.svg | 2 +-
icons/nextjs/nextjs-original-wordmark.svg | 2 +-
icons/nextjs/nextjs-original.svg | 2 +-
icons/nginx/nginx-original.svg | 2 +-
icons/nixos/nixos-original-wordmark.svg | 2 +-
icons/nixos/nixos-original.svg | 2 +-
icons/nixos/nixos-plain-wordmark.svg | 2 +-
icons/nixos/nixos-plain.svg | 2 +-
icons/nodejs/nodejs-original-wordmark.svg | 2 +-
icons/nodejs/nodejs-original.svg | 2 +-
icons/nodejs/nodejs-plain-wordmark.svg | 2 +-
icons/nodejs/nodejs-plain.svg | 2 +-
icons/nodewebkit/nodewebkit-line-wordmark.svg | 2 +-
icons/nodewebkit/nodewebkit-line.svg | 2 +-
.../nodewebkit-original-wordmark.svg | 2 +-
icons/nodewebkit/nodewebkit-original.svg | 2 +-
.../nodewebkit/nodewebkit-plain-wordmark.svg | 2 +-
icons/nodewebkit/nodewebkit-plain.svg | 2 +-
icons/npm/npm-original-wordmark.svg | 2 +-
icons/objectivec/objectivec-plain.svg | 31 +-
icons/ocaml/ocaml-original-wordmark.svg | 2 +-
icons/ocaml/ocaml-original.svg | 2 +-
icons/ocaml/ocaml-plain-wordmark.svg | 2 +-
icons/ocaml/ocaml-plain.svg | 2 +-
icons/oracle/oracle-original.svg | 2 +-
icons/perl/perl-original.svg | 2 +-
icons/perl/perl-plain.svg | 2 +-
icons/phoenix/phoenix-original-wordmark.svg | 2 +-
icons/phoenix/phoenix-original.svg | 2 +-
icons/phoenix/phoenix-plain-wordmark.svg | 2 +-
icons/phoenix/phoenix-plain.svg | 2 +-
icons/photoshop/photoshop-line.svg | 2 +-
icons/photoshop/photoshop-plain.svg | 2 +-
icons/php/php-original.svg | 2 +-
icons/php/php-plain.svg | 2 +-
icons/phpstorm/phpstorm-original-wordmark.svg | 2 +-
icons/phpstorm/phpstorm-original.svg | 2 +-
icons/phpstorm/phpstorm-plain-wordmark.svg | 2 +-
icons/phpstorm/phpstorm-plain.svg | 2 +-
.../postgresql-original-wordmark.svg | 2 +-
icons/postgresql/postgresql-original.svg | 2 +-
.../postgresql/postgresql-plain-wordmark.svg | 2 +-
icons/postgresql/postgresql-plain.svg | 2 +-
icons/premierepro/premierepro-original.svg | 2 +-
icons/premierepro/premierepro-plain.svg | 2 +-
.../protractor/protractor-plain-wordmark.svg | 40 +-
icons/protractor/protractor-plain.svg | 11 +-
icons/pycharm/pycharm-original-wordmark.svg | 2 +-
icons/pycharm/pycharm-original.svg | 2 +-
icons/pycharm/pycharm-plain-wordmark.svg | 2 +-
icons/pycharm/pycharm-plain.svg | 2 +-
icons/python/python-original-wordmark.svg | 2 +-
icons/python/python-original.svg | 2 +-
icons/python/python-plain-wordmark.svg | 2 +-
icons/python/python-plain.svg | 2 +-
icons/r/r-original.svg | 16 +-
icons/r/r-plain.svg | 8 +-
icons/rails/rails-original-wordmark.svg | 2 +-
icons/rails/rails-plain-wordmark.svg | 2 +-
icons/rails/rails-plain.svg | 2 +-
icons/react/react-original-wordmark.svg | 2 +-
icons/react/react-original.svg | 2 +-
icons/redhat/redhat-original-wordmark.svg | 2 +-
icons/redhat/redhat-original.svg | 2 +-
icons/redhat/redhat-plain-wordmark.svg | 2 +-
icons/redhat/redhat-plain.svg | 2 +-
icons/redis/redis-original-wordmark.svg | 2 +-
icons/redis/redis-original.svg | 2 +-
icons/redis/redis-plain-wordmark.svg | 2 +-
icons/redis/redis-plain.svg | 2 +-
icons/redux/redux-original.svg | 2 +-
icons/rocksdb/rocksdb-plain.svg | 62 +-
icons/ruby/ruby-original-wordmark.svg | 2 +-
icons/ruby/ruby-original.svg | 2 +-
icons/ruby/ruby-plain-wordmark.svg | 2 +-
icons/ruby/ruby-plain.svg | 2 +-
icons/rubymine/rubymine-original-wordmark.svg | 2 +-
icons/rubymine/rubymine-original.svg | 2 +-
icons/rubymine/rubymine-plain-wordmark.svg | 2 +-
icons/rubymine/rubymine-plain.svg | 2 +-
icons/rust/rust-plain.svg | 2 +-
icons/safari/safari-line-wordmark.svg | 2 +-
icons/safari/safari-line.svg | 2 +-
icons/safari/safari-original-wordmark.svg | 2 +-
icons/safari/safari-original.svg | 2 +-
icons/safari/safari-plain-wordmark.svg | 2 +-
icons/safari/safari-plain.svg | 2 +-
icons/sass/sass-original.svg | 2 +-
icons/scala/scala-original-wordmark.svg | 2 +-
icons/scala/scala-original.svg | 2 +-
icons/scala/scala-plain-wordmark.svg | 2 +-
icons/scala/scala-plain.svg | 2 +-
.../sequelize/sequelize-original-wordmark.svg | 2 +-
icons/sequelize/sequelize-original.svg | 2 +-
icons/sequelize/sequelize-plain-wordmark.svg | 2 +-
icons/sequelize/sequelize-plain.svg | 2 +-
icons/sketch/sketch-line-wordmark.svg | 2 +-
icons/sketch/sketch-line.svg | 2 +-
icons/sketch/sketch-original-wordmark.svg | 2 +-
icons/sketch/sketch-original.svg | 2 +-
icons/slack/slack-original-wordmark.svg | 2 +-
icons/slack/slack-original.svg | 2 +-
icons/slack/slack-plain-wordmark.svg | 2 +-
icons/slack/slack-plain.svg | 2 +-
.../sourcetree-original-wordmark.svg | 2 +-
icons/sourcetree/sourcetree-original.svg | 2 +-
icons/spring/spring-original-wordmark.svg | 41 +-
icons/spring/spring-original.svg | 4 +-
icons/spring/spring-plain-wordmark.svg | 41 +-
icons/spring/spring-plain.svg | 4 +-
.../sqlalchemy-original-wordmark.svg | 128 +-
icons/sqlalchemy/sqlalchemy-original.svg | 34 +-
icons/sqlalchemy/sqlalchemy-plain.svg | 10 +-
icons/ssh/ssh-original-wordmark.svg | 2 +-
icons/ssh/ssh-original.svg | 2 +-
icons/stylus/stylus-original.svg | 2 +-
icons/swift/swift-original-wordmark.svg | 2 +-
icons/swift/swift-original.svg | 2 +-
icons/swift/swift-plain-wordmark.svg | 2 +-
icons/swift/swift-plain.svg | 2 +-
icons/symfony/symfony-original-wordmark.svg | 2 +-
icons/symfony/symfony-original.svg | 2 +-
icons/tensorflow/tensorflow-line-wordmark.svg | 161 +-
icons/tensorflow/tensorflow-line.svg | 80 +-
.../tensorflow-original-wordmark.svg | 151 +-
icons/tensorflow/tensorflow-original.svg | 71 +-
.../thealgorithms-original-wordmark.svg | 52 +-
.../thealgorithms/thealgorithms-original.svg | 13 +-
.../thealgorithms-plain-wordmark.svg | 52 +-
icons/thealgorithms/thealgorithms-plain.svg | 13 +-
icons/tomcat/tomcat-line-wordmark.svg | 2 +-
icons/tomcat/tomcat-line.svg | 2 +-
icons/tomcat/tomcat-original-wordmark.svg | 2 +-
icons/tomcat/tomcat-original.svg | 2 +-
icons/travis/travis-plain-wordmark.svg | 2 +-
icons/travis/travis-plain.svg | 2 +-
icons/trello/trello-plain-wordmark.svg | 2 +-
icons/trello/trello-plain.svg | 2 +-
icons/twitter/twitter-original.svg | 7 +-
icons/typescript/typescript-original.svg | 2 +-
icons/typescript/typescript-plain.svg | 2 +-
icons/typo3/typo3-original-wordmark.svg | 2 +-
icons/typo3/typo3-original.svg | 2 +-
icons/typo3/typo3-plain-wordmark.svg | 2 +-
icons/typo3/typo3-plain.svg | 2 +-
icons/ubuntu/ubuntu-plain-wordmark.svg | 2 +-
icons/ubuntu/ubuntu-plain.svg | 2 +-
icons/uwsgi/uwsgi-original.svg | 36 +-
icons/uwsgi/uwsgi-plain.svg | 34 +-
icons/vagrant/vagrant-original-wordmark.svg | 2 +-
icons/vagrant/vagrant-original.svg | 2 +-
icons/vagrant/vagrant-plain-wordmark.svg | 2 +-
icons/vagrant/vagrant-plain.svg | 2 +-
icons/vim/vim-original.svg | 2 +-
icons/vim/vim-plain.svg | 2 +-
.../visualstudio-plain-wordmark.svg | 23 +-
icons/visualstudio/visualstudio-plain.svg | 2 +-
icons/vuejs/vuejs-line-wordmark.svg | 2 +-
icons/vuejs/vuejs-line.svg | 2 +-
icons/vuejs/vuejs-original-wordmark.svg | 2 +-
icons/vuejs/vuejs-original.svg | 2 +-
icons/vuejs/vuejs-plain-wordmark.svg | 2 +-
icons/vuejs/vuejs-plain.svg | 2 +-
icons/weblate/weblate-original-wordmark.svg | 2 +-
icons/weblate/weblate-original.svg | 2 +-
icons/weblate/weblate-plain-wordmark.svg | 2 +-
icons/weblate/weblate-plain.svg | 2 +-
icons/webpack/webpack-original-wordmark.svg | 2 +-
icons/webpack/webpack-original.svg | 2 +-
icons/webpack/webpack-plain-wordmark.svg | 2 +-
icons/webpack/webpack-plain.svg | 2 +-
icons/webstorm/webstorm-original-wordmark.svg | 2 +-
icons/webstorm/webstorm-original.svg | 2 +-
icons/webstorm/webstorm-plain-wordmark.svg | 2 +-
icons/webstorm/webstorm-plain.svg | 2 +-
icons/windows8/windows8-original-wordmark.svg | 2 +-
icons/windows8/windows8-original.svg | 2 +-
.../woocommerce-original-wordmark.svg | 2 +-
icons/woocommerce/woocommerce-original.svg | 2 +-
.../woocommerce-plain-wordmark.svg | 2 +-
icons/woocommerce/woocommerce-plain.svg | 2 +-
icons/wordpress/wordpress-original.svg | 2 +-
icons/wordpress/wordpress-plain-wordmark.svg | 2 +-
icons/wordpress/wordpress-plain.svg | 2 +-
icons/xd/xd-line.svg | 12 +-
icons/xd/xd-plain.svg | 9 +-
icons/yarn/yarn-original-wordmark.svg | 2 +-
icons/yarn/yarn-original.svg | 2 +-
icons/yii/yii-original-wordmark.svg | 2 +-
icons/yii/yii-original.svg | 2 +-
icons/yii/yii-plain-wordmark.svg | 2 +-
icons/yii/yii-plain.svg | 2 +-
icons/yunohost/yunohost-original.svg | 80 +-
icons/yunohost/yunohost-plain.svg | 17 +-
icons/zend/zend-plain-wordmark.svg | 2 +-
icons/zend/zend-plain.svg | 2 +-
icons/zig/zig-original-wordmark.svg | 126 +-
icons/zig/zig-original.svg | 97 +-
icons/zig/zig-plain-wordmark.svg | 134 +-
package-lock.json | 837 +++-
package.json | 5 +-
534 files changed, 1432 insertions(+), 10831 deletions(-)
create mode 100644 .github/workflows/optimize_svg.yml
diff --git a/.github/scripts/check_svgs_on_pr.py b/.github/scripts/check_svgs_on_pr.py
index 52c4322b6..0eccdd802 100644
--- a/.github/scripts/check_svgs_on_pr.py
+++ b/.github/scripts/check_svgs_on_pr.py
@@ -69,21 +69,11 @@ def check_svgs(svg_file_paths: List[Path]):
if root.get("viewBox") != "0 0 128 128":
err_msg.append("-'viewBox' is not '0 0 128 128' -> Set it or scale the file using https://www.iloveimg.com/resize-image/resize-svg")
- acceptable_size = [None, "128px", "128"]
- if root.get("height") not in acceptable_size:
- err_msg.append("-'height' is present in svg element but is not '128' or '128px' -> Remove it or set it to '128' or '128px'")
-
- if root.get("width") not in acceptable_size:
- err_msg.append("-'width' is present in svg element but is not '128' or '128px' -> Remove it or set it to '128' or '128px'")
-
- if root.get("style") is not None and "enable-background" in root.get("style"):
- err_msg.append("-deprecated 'enable-background' in style attribute -> Remove it")
-
if root.get("x") is not None:
- err_msg.append("-unneccessary 'x' attribute in svg element -> Remove it")
+ err_msg.append("-unneccessary 'x' attribute in svg root element -> Remove it")
if root.get("y") is not None:
- err_msg.append("-unneccessary 'y' attribute in svg element -> Remove it")
+ err_msg.append("-unneccessary 'y' attribute in svg root element -> Remove it")
style = root.findtext(f".//{namespace}style")
if style != None and "fill" in style:
diff --git a/.github/workflows/optimize_svg.yml b/.github/workflows/optimize_svg.yml
new file mode 100644
index 000000000..ec35ed2d0
--- /dev/null
+++ b/.github/workflows/optimize_svg.yml
@@ -0,0 +1,33 @@
+name: Optimize the added/changed svgs
+on:
+ pull_request:
+ types: [labeled]
+jobs:
+ peek:
+ name: Optimize the added/changed svgs
+ if: github.event.label.name == 'bot:optimize'
+ runs-on: ubuntu-18.04
+ steps:
+ - uses: actions/checkout@v2
+ with:
+ ref: ${{ github.head_ref }}
+
+ - name: Set up gulp
+ run: npm install
+
+ - name: Get Changed Files and generate files_added.json & files_modified.json
+ uses: lots0logs/gh-action-get-changed-files@2.1.4
+ id: get_added_and_modified_files
+ with:
+ token: ${{ secrets.GITHUB_TOKEN }}
+
+ - name: Run the update_id.py
+ env:
+ ADDED_FILES: ${{ steps.get_added_and_modified_files.outputs.added }}
+ MODIFIED_FILES: ${{ steps.get_added_and_modified_files.outputs.modified }}
+ run: npm run optimize-svg -- --filesAddedJson=$ADDED_FILES --filesModifiedJson=$MODIFIED_FILES
+
+ - name: Commit the changes
+ uses: stefanzweifel/git-auto-commit-action@v4
+ with:
+ commit_message: Optimized the SVGs
diff --git a/gulpfile.js b/gulpfile.js
index 24e29721e..bdb93ef2e 100644
--- a/gulpfile.js
+++ b/gulpfile.js
@@ -1,6 +1,8 @@
var gulp = require('gulp');
+const svgmin = require("gulp-svgmin")
const sass = require('gulp-sass');
sass.compiler = require('sass')
+const yargs = require("yargs")
const fsPromise = require('fs').promises;
const path = require("path");
@@ -149,5 +151,70 @@ function cleanUp() {
}
+//////// Update SVG Task ////////
+/**
+ * Update the svg by optimizing it
+ * and prefixing its ids so it's unique across the repo.
+ *
+ * This requires a json list of svg file names to update.
+ * This must be passed through the commandline arguments.
+ */
+function optimizeSvg() {
+ let svgPaths = getAddedModifiedSvg(yargs.argv.filesAddedJson,
+ yargs.argv.filesModifiedJson)
+
+ return gulp.src(svgPaths)
+ .pipe(svgmin(configOptionCallback))
+ .pipe(gulp.dest(file => {
+ return file.base
+ }))
+}
+
+/**
+ * Get the svgs added and modified from the '/icons' folder only.
+ * @param {*} filesAddedJson - the files that were added in this commit.
+ * @param {*} filesModifiedJson - the files that were modified in this commit.
+ * @returns a list of the svg file paths that were added/modified in this pr as Path.
+ * It will only return icons in '/icons' path (see https://github.com/devicons/devicon/issues/505)
+ */
+function getAddedModifiedSvg(filesAddedJson, filesModifiedJson) {
+ const filesAdded = JSON.parse(filesAddedJson),
+ filesModified = JSON.parse(filesModifiedJson)
+
+ files = filesAdded.concat(filesModified)
+ return files.filter(filename => {
+ if (path.extname(filename) == ".svg"
+ && path.dirname(filename).includes('icons/'))
+ return filename
+ })
+}
+
+/**
+ * Create a config option for each file.
+ * @param {Object} file - Gulp Vinyl instance of the file
+ * being processed.
+ * @returns a SVGO config object.
+ */
+function configOptionCallback(file) {
+ return {
+ plugins: [
+ {
+ prefixIds: {
+ prefix: file.stem, // add file name to ids
+ delim: "-"
+ }
+ },
+ {
+ removeViewBox: false // keep viewbox
+ },
+ {
+ removeDimensions: true // remove height and width
+ }
+ ]
+ }
+}
+
+
exports.updateCss = createDeviconMinCSS;
exports.clean = cleanUp;
+exports.optimizeSvg = optimizeSvg;
diff --git a/icons/aarch64/aarch64-original.svg b/icons/aarch64/aarch64-original.svg
index aaba55d69..66009d4d3 100644
--- a/icons/aarch64/aarch64-original.svg
+++ b/icons/aarch64/aarch64-original.svg
@@ -1,23 +1 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
\ No newline at end of file
diff --git a/icons/aarch64/aarch64-plain.svg b/icons/aarch64/aarch64-plain.svg
index 0c377f381..10774d41a 100644
--- a/icons/aarch64/aarch64-plain.svg
+++ b/icons/aarch64/aarch64-plain.svg
@@ -1,23 +1 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
\ No newline at end of file
diff --git a/icons/aftereffects/aftereffects-original.svg b/icons/aftereffects/aftereffects-original.svg
index 952ac8a97..7380ebac6 100644
--- a/icons/aftereffects/aftereffects-original.svg
+++ b/icons/aftereffects/aftereffects-original.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/aftereffects/aftereffects-plain.svg b/icons/aftereffects/aftereffects-plain.svg
index c6343a310..665e842d8 100644
--- a/icons/aftereffects/aftereffects-plain.svg
+++ b/icons/aftereffects/aftereffects-plain.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/amazonwebservices/amazonwebservices-original-wordmark.svg b/icons/amazonwebservices/amazonwebservices-original-wordmark.svg
index 311a5cbd2..b39341d93 100644
--- a/icons/amazonwebservices/amazonwebservices-original-wordmark.svg
+++ b/icons/amazonwebservices/amazonwebservices-original-wordmark.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/amazonwebservices/amazonwebservices-original.svg b/icons/amazonwebservices/amazonwebservices-original.svg
index f39fdfa23..454162808 100644
--- a/icons/amazonwebservices/amazonwebservices-original.svg
+++ b/icons/amazonwebservices/amazonwebservices-original.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/amazonwebservices/amazonwebservices-plain-wordmark.svg b/icons/amazonwebservices/amazonwebservices-plain-wordmark.svg
index 3b279e383..cbf2acad6 100644
--- a/icons/amazonwebservices/amazonwebservices-plain-wordmark.svg
+++ b/icons/amazonwebservices/amazonwebservices-plain-wordmark.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/android/android-original-wordmark.svg b/icons/android/android-original-wordmark.svg
index d23dc58b4..f17f129e5 100644
--- a/icons/android/android-original-wordmark.svg
+++ b/icons/android/android-original-wordmark.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/android/android-original.svg b/icons/android/android-original.svg
index 2b5520c4f..ece12ab7a 100644
--- a/icons/android/android-original.svg
+++ b/icons/android/android-original.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/android/android-plain-wordmark.svg b/icons/android/android-plain-wordmark.svg
index a97f49695..60a191679 100644
--- a/icons/android/android-plain-wordmark.svg
+++ b/icons/android/android-plain-wordmark.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/android/android-plain.svg b/icons/android/android-plain.svg
index 356d77a3a..c621fb816 100644
--- a/icons/android/android-plain.svg
+++ b/icons/android/android-plain.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/angularjs/angularjs-original-wordmark.svg b/icons/angularjs/angularjs-original-wordmark.svg
index ce99a5616..00571fad4 100644
--- a/icons/angularjs/angularjs-original-wordmark.svg
+++ b/icons/angularjs/angularjs-original-wordmark.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/angularjs/angularjs-original.svg b/icons/angularjs/angularjs-original.svg
index d5e73fc09..29624198a 100644
--- a/icons/angularjs/angularjs-original.svg
+++ b/icons/angularjs/angularjs-original.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/angularjs/angularjs-plain-wordmark.svg b/icons/angularjs/angularjs-plain-wordmark.svg
index 8930a263f..7dcd3bff8 100644
--- a/icons/angularjs/angularjs-plain-wordmark.svg
+++ b/icons/angularjs/angularjs-plain-wordmark.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/angularjs/angularjs-plain.svg b/icons/angularjs/angularjs-plain.svg
index 9f9f55311..873d4d9a2 100644
--- a/icons/angularjs/angularjs-plain.svg
+++ b/icons/angularjs/angularjs-plain.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/apache/apache-line-wordmark.svg b/icons/apache/apache-line-wordmark.svg
index fb5fd9ec4..aa71c1fa5 100644
--- a/icons/apache/apache-line-wordmark.svg
+++ b/icons/apache/apache-line-wordmark.svg
@@ -1 +1 @@
-
+
\ No newline at end of file
diff --git a/icons/apache/apache-line.svg b/icons/apache/apache-line.svg
index 885e19087..58f9818d9 100644
--- a/icons/apache/apache-line.svg
+++ b/icons/apache/apache-line.svg
@@ -1 +1 @@
-
+
\ No newline at end of file
diff --git a/icons/apache/apache-original-wordmark.svg b/icons/apache/apache-original-wordmark.svg
index 6f259f8f2..0b477591f 100644
--- a/icons/apache/apache-original-wordmark.svg
+++ b/icons/apache/apache-original-wordmark.svg
@@ -1,3539 +1 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
\ No newline at end of file
diff --git a/icons/apache/apache-original.svg b/icons/apache/apache-original.svg
index cf8fa4ac8..80dc65a4b 100644
--- a/icons/apache/apache-original.svg
+++ b/icons/apache/apache-original.svg
@@ -1,3493 +1 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
\ No newline at end of file
diff --git a/icons/apache/apache-plain-wordmark.svg b/icons/apache/apache-plain-wordmark.svg
index 624c5e450..6eec74c32 100644
--- a/icons/apache/apache-plain-wordmark.svg
+++ b/icons/apache/apache-plain-wordmark.svg
@@ -1 +1 @@
-
+
\ No newline at end of file
diff --git a/icons/apache/apache-plain.svg b/icons/apache/apache-plain.svg
index 1fa09bcde..d6c460cdd 100644
--- a/icons/apache/apache-plain.svg
+++ b/icons/apache/apache-plain.svg
@@ -1 +1 @@
-
+
\ No newline at end of file
diff --git a/icons/appcelerator/appcelerator-original-wordmark.svg b/icons/appcelerator/appcelerator-original-wordmark.svg
index 04ff60c09..2423a83b9 100644
--- a/icons/appcelerator/appcelerator-original-wordmark.svg
+++ b/icons/appcelerator/appcelerator-original-wordmark.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/appcelerator/appcelerator-original.svg b/icons/appcelerator/appcelerator-original.svg
index d380952fc..a8968e2ce 100644
--- a/icons/appcelerator/appcelerator-original.svg
+++ b/icons/appcelerator/appcelerator-original.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/appcelerator/appcelerator-plain-wordmark.svg b/icons/appcelerator/appcelerator-plain-wordmark.svg
index 3eaaa2ca9..b78c61916 100644
--- a/icons/appcelerator/appcelerator-plain-wordmark.svg
+++ b/icons/appcelerator/appcelerator-plain-wordmark.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/apple/apple-original.svg b/icons/apple/apple-original.svg
index 8932b20ea..e5f9c80b2 100644
--- a/icons/apple/apple-original.svg
+++ b/icons/apple/apple-original.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/appwrite/appwrite-original-wordmark.svg b/icons/appwrite/appwrite-original-wordmark.svg
index 9e172c8a6..ec74627ef 100644
--- a/icons/appwrite/appwrite-original-wordmark.svg
+++ b/icons/appwrite/appwrite-original-wordmark.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/appwrite/appwrite-original.svg b/icons/appwrite/appwrite-original.svg
index 7a6fb6099..1e37b46de 100644
--- a/icons/appwrite/appwrite-original.svg
+++ b/icons/appwrite/appwrite-original.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/appwrite/appwrite-plain-wordmark.svg b/icons/appwrite/appwrite-plain-wordmark.svg
index 810f1892d..b1eda4c57 100644
--- a/icons/appwrite/appwrite-plain-wordmark.svg
+++ b/icons/appwrite/appwrite-plain-wordmark.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/appwrite/appwrite-plain.svg b/icons/appwrite/appwrite-plain.svg
index 862748cea..0099a522e 100644
--- a/icons/appwrite/appwrite-plain.svg
+++ b/icons/appwrite/appwrite-plain.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/arduino/arduino-original-wordmark.svg b/icons/arduino/arduino-original-wordmark.svg
index 70f6465d6..51549ba15 100644
--- a/icons/arduino/arduino-original-wordmark.svg
+++ b/icons/arduino/arduino-original-wordmark.svg
@@ -1 +1 @@
-
+
\ No newline at end of file
diff --git a/icons/arduino/arduino-original.svg b/icons/arduino/arduino-original.svg
index b49f89ac4..2535b5f76 100644
--- a/icons/arduino/arduino-original.svg
+++ b/icons/arduino/arduino-original.svg
@@ -1 +1 @@
-
+
\ No newline at end of file
diff --git a/icons/arduino/arduino-plain-wordmark.svg b/icons/arduino/arduino-plain-wordmark.svg
index b7f6aa0fc..eb461ca4f 100644
--- a/icons/arduino/arduino-plain-wordmark.svg
+++ b/icons/arduino/arduino-plain-wordmark.svg
@@ -1 +1 @@
-
+
\ No newline at end of file
diff --git a/icons/arduino/arduino-plain.svg b/icons/arduino/arduino-plain.svg
index 3e5b437c2..af40986df 100644
--- a/icons/arduino/arduino-plain.svg
+++ b/icons/arduino/arduino-plain.svg
@@ -1 +1 @@
-
+
\ No newline at end of file
diff --git a/icons/atom/atom-original-wordmark.svg b/icons/atom/atom-original-wordmark.svg
index e3f9a31b0..bcc5ac7b9 100644
--- a/icons/atom/atom-original-wordmark.svg
+++ b/icons/atom/atom-original-wordmark.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/atom/atom-original.svg b/icons/atom/atom-original.svg
index bcf79d30b..5b352bac5 100644
--- a/icons/atom/atom-original.svg
+++ b/icons/atom/atom-original.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/babel/babel-original.svg b/icons/babel/babel-original.svg
index b1301c4e8..6dc101a2a 100644
--- a/icons/babel/babel-original.svg
+++ b/icons/babel/babel-original.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/babel/babel-plain.svg b/icons/babel/babel-plain.svg
index 4f28c1f49..479de6b6e 100644
--- a/icons/babel/babel-plain.svg
+++ b/icons/babel/babel-plain.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/backbonejs/backbonejs-original-wordmark.svg b/icons/backbonejs/backbonejs-original-wordmark.svg
index c83bc0c3c..640677ba0 100644
--- a/icons/backbonejs/backbonejs-original-wordmark.svg
+++ b/icons/backbonejs/backbonejs-original-wordmark.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/backbonejs/backbonejs-original.svg b/icons/backbonejs/backbonejs-original.svg
index a0a4190e4..ef347ba76 100644
--- a/icons/backbonejs/backbonejs-original.svg
+++ b/icons/backbonejs/backbonejs-original.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/backbonejs/backbonejs-plain-wordmark.svg b/icons/backbonejs/backbonejs-plain-wordmark.svg
index e69363ab6..9f0b5b317 100644
--- a/icons/backbonejs/backbonejs-plain-wordmark.svg
+++ b/icons/backbonejs/backbonejs-plain-wordmark.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/backbonejs/backbonejs-plain.svg b/icons/backbonejs/backbonejs-plain.svg
index 26161ceed..eb38e8588 100644
--- a/icons/backbonejs/backbonejs-plain.svg
+++ b/icons/backbonejs/backbonejs-plain.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/bash/bash-original.svg b/icons/bash/bash-original.svg
index 64b7cbfac..4cbbc9e6c 100644
--- a/icons/bash/bash-original.svg
+++ b/icons/bash/bash-original.svg
@@ -1,28 +1 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/bash/bash-plain.svg b/icons/bash/bash-plain.svg
index e7924566f..caa6cec08 100644
--- a/icons/bash/bash-plain.svg
+++ b/icons/bash/bash-plain.svg
@@ -1,24 +1 @@
-
-
-
-
-
-
-
-
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/behance/behance-original-wordmark.svg b/icons/behance/behance-original-wordmark.svg
index 05f3fd6c4..5163d9d47 100644
--- a/icons/behance/behance-original-wordmark.svg
+++ b/icons/behance/behance-original-wordmark.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/behance/behance-original.svg b/icons/behance/behance-original.svg
index acd1af5da..ce89aaeba 100644
--- a/icons/behance/behance-original.svg
+++ b/icons/behance/behance-original.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/behance/behance-plain-wordmark.svg b/icons/behance/behance-plain-wordmark.svg
index e7f6e3ab8..574ea5ba3 100644
--- a/icons/behance/behance-plain-wordmark.svg
+++ b/icons/behance/behance-plain-wordmark.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/behance/behance-plain.svg b/icons/behance/behance-plain.svg
index f2136ead2..ef0557cbc 100644
--- a/icons/behance/behance-plain.svg
+++ b/icons/behance/behance-plain.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/bitbucket/bitbucket-original-wordmark.svg b/icons/bitbucket/bitbucket-original-wordmark.svg
index 7aa96e08f..fd4b9c372 100644
--- a/icons/bitbucket/bitbucket-original-wordmark.svg
+++ b/icons/bitbucket/bitbucket-original-wordmark.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/bootstrap/bootstrap-plain-wordmark.svg b/icons/bootstrap/bootstrap-plain-wordmark.svg
index ddd63585c..50433670f 100644
--- a/icons/bootstrap/bootstrap-plain-wordmark.svg
+++ b/icons/bootstrap/bootstrap-plain-wordmark.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/bootstrap/bootstrap-plain.svg b/icons/bootstrap/bootstrap-plain.svg
index 5902e6ece..1ec055b09 100644
--- a/icons/bootstrap/bootstrap-plain.svg
+++ b/icons/bootstrap/bootstrap-plain.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/bower/bower-line-wordmark.svg b/icons/bower/bower-line-wordmark.svg
index 59493b34c..02e2940c7 100644
--- a/icons/bower/bower-line-wordmark.svg
+++ b/icons/bower/bower-line-wordmark.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/bower/bower-line.svg b/icons/bower/bower-line.svg
index ed08665bc..dc7dcf888 100644
--- a/icons/bower/bower-line.svg
+++ b/icons/bower/bower-line.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/bower/bower-original-wordmark.svg b/icons/bower/bower-original-wordmark.svg
index 775231739..ca34d977c 100644
--- a/icons/bower/bower-original-wordmark.svg
+++ b/icons/bower/bower-original-wordmark.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/bower/bower-original.svg b/icons/bower/bower-original.svg
index f76149c0c..014a85297 100644
--- a/icons/bower/bower-original.svg
+++ b/icons/bower/bower-original.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/bower/bower-plain-wordmark.svg b/icons/bower/bower-plain-wordmark.svg
index 2aed5caa0..3e2ef30d9 100644
--- a/icons/bower/bower-plain-wordmark.svg
+++ b/icons/bower/bower-plain-wordmark.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/bower/bower-plain.svg b/icons/bower/bower-plain.svg
index 684585ed8..d8d36d3fb 100644
--- a/icons/bower/bower-plain.svg
+++ b/icons/bower/bower-plain.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/c/c-line.svg b/icons/c/c-line.svg
index dfe00cbcc..6e86a7855 100644
--- a/icons/c/c-line.svg
+++ b/icons/c/c-line.svg
@@ -1 +1 @@
-
+
\ No newline at end of file
diff --git a/icons/c/c-original.svg b/icons/c/c-original.svg
index 011433718..d0841f2e6 100644
--- a/icons/c/c-original.svg
+++ b/icons/c/c-original.svg
@@ -1 +1 @@
-
+
\ No newline at end of file
diff --git a/icons/c/c-plain.svg b/icons/c/c-plain.svg
index f41f49348..8271cd4c7 100644
--- a/icons/c/c-plain.svg
+++ b/icons/c/c-plain.svg
@@ -1 +1 @@
-
+
\ No newline at end of file
diff --git a/icons/cakephp/cakephp-original-wordmark.svg b/icons/cakephp/cakephp-original-wordmark.svg
index 0a52b8bc6..10e08e0ed 100644
--- a/icons/cakephp/cakephp-original-wordmark.svg
+++ b/icons/cakephp/cakephp-original-wordmark.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/cakephp/cakephp-original.svg b/icons/cakephp/cakephp-original.svg
index 37558eb46..133972103 100644
--- a/icons/cakephp/cakephp-original.svg
+++ b/icons/cakephp/cakephp-original.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/cakephp/cakephp-plain-wordmark.svg b/icons/cakephp/cakephp-plain-wordmark.svg
index 55166dd15..bffe7e7fb 100644
--- a/icons/cakephp/cakephp-plain-wordmark.svg
+++ b/icons/cakephp/cakephp-plain-wordmark.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/cakephp/cakephp-plain.svg b/icons/cakephp/cakephp-plain.svg
index e37176997..133972103 100644
--- a/icons/cakephp/cakephp-plain.svg
+++ b/icons/cakephp/cakephp-plain.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/ceylon/ceylon-original-wordmark.svg b/icons/ceylon/ceylon-original-wordmark.svg
index cda2521cc..96367db02 100644
--- a/icons/ceylon/ceylon-original-wordmark.svg
+++ b/icons/ceylon/ceylon-original-wordmark.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/ceylon/ceylon-original.svg b/icons/ceylon/ceylon-original.svg
index e6ea3cde1..ff8045e92 100644
--- a/icons/ceylon/ceylon-original.svg
+++ b/icons/ceylon/ceylon-original.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/ceylon/ceylon-plain-wordmark.svg b/icons/ceylon/ceylon-plain-wordmark.svg
index 1666b4ee0..60506e256 100644
--- a/icons/ceylon/ceylon-plain-wordmark.svg
+++ b/icons/ceylon/ceylon-plain-wordmark.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/ceylon/ceylon-plain.svg b/icons/ceylon/ceylon-plain.svg
index 4c12db253..95b094d5b 100644
--- a/icons/ceylon/ceylon-plain.svg
+++ b/icons/ceylon/ceylon-plain.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/chrome/chrome-original-wordmark.svg b/icons/chrome/chrome-original-wordmark.svg
index ed97dc7b4..2cc59a50a 100644
--- a/icons/chrome/chrome-original-wordmark.svg
+++ b/icons/chrome/chrome-original-wordmark.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/chrome/chrome-original.svg b/icons/chrome/chrome-original.svg
index 51c497945..076d2cf16 100644
--- a/icons/chrome/chrome-original.svg
+++ b/icons/chrome/chrome-original.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/chrome/chrome-plain-wordmark.svg b/icons/chrome/chrome-plain-wordmark.svg
index 113f962db..590451bbb 100644
--- a/icons/chrome/chrome-plain-wordmark.svg
+++ b/icons/chrome/chrome-plain-wordmark.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/chrome/chrome-plain.svg b/icons/chrome/chrome-plain.svg
index 028f8e144..151dd2b2a 100644
--- a/icons/chrome/chrome-plain.svg
+++ b/icons/chrome/chrome-plain.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/clojure/clojure-line.svg b/icons/clojure/clojure-line.svg
index c76fe25c1..260928214 100644
--- a/icons/clojure/clojure-line.svg
+++ b/icons/clojure/clojure-line.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/clojure/clojure-original.svg b/icons/clojure/clojure-original.svg
index b4684cf64..63abd2e6c 100644
--- a/icons/clojure/clojure-original.svg
+++ b/icons/clojure/clojure-original.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/clojurescript/clojurescript-original.svg b/icons/clojurescript/clojurescript-original.svg
index a179c4d16..505ff6892 100644
--- a/icons/clojurescript/clojurescript-original.svg
+++ b/icons/clojurescript/clojurescript-original.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/clojurescript/clojurescript-plain.svg b/icons/clojurescript/clojurescript-plain.svg
index 58deed2cd..7df5ee85f 100644
--- a/icons/clojurescript/clojurescript-plain.svg
+++ b/icons/clojurescript/clojurescript-plain.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/codeigniter/codeigniter-plain-wordmark.svg b/icons/codeigniter/codeigniter-plain-wordmark.svg
index 6bbf160c9..7b7191ed2 100644
--- a/icons/codeigniter/codeigniter-plain-wordmark.svg
+++ b/icons/codeigniter/codeigniter-plain-wordmark.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/codeigniter/codeigniter-plain.svg b/icons/codeigniter/codeigniter-plain.svg
index 3ea9b5dec..4a4b7c1bc 100644
--- a/icons/codeigniter/codeigniter-plain.svg
+++ b/icons/codeigniter/codeigniter-plain.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/codepen/codepen-original-wordmark.svg b/icons/codepen/codepen-original-wordmark.svg
index 0d4a0d896..29b4e1500 100644
--- a/icons/codepen/codepen-original-wordmark.svg
+++ b/icons/codepen/codepen-original-wordmark.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/codepen/codepen-plain.svg b/icons/codepen/codepen-plain.svg
index 5bbdb682a..16d1988b2 100644
--- a/icons/codepen/codepen-plain.svg
+++ b/icons/codepen/codepen-plain.svg
@@ -1,3 +1 @@
-
-
-
+
\ No newline at end of file
diff --git a/icons/coffeescript/coffeescript-original-wordmark.svg b/icons/coffeescript/coffeescript-original-wordmark.svg
index ab8142b4c..b1bd0befb 100644
--- a/icons/coffeescript/coffeescript-original-wordmark.svg
+++ b/icons/coffeescript/coffeescript-original-wordmark.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/coffeescript/coffeescript-original.svg b/icons/coffeescript/coffeescript-original.svg
index 650fabe0f..9e2fe7e58 100644
--- a/icons/coffeescript/coffeescript-original.svg
+++ b/icons/coffeescript/coffeescript-original.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/composer/composer-line-wordmark.svg b/icons/composer/composer-line-wordmark.svg
index b58e597b6..22f0b6dbd 100644
--- a/icons/composer/composer-line-wordmark.svg
+++ b/icons/composer/composer-line-wordmark.svg
@@ -1,23 +1 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/composer/composer-line.svg b/icons/composer/composer-line.svg
index fdf1a70c3..e3d964302 100644
--- a/icons/composer/composer-line.svg
+++ b/icons/composer/composer-line.svg
@@ -1,17 +1 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/composer/composer-original.svg b/icons/composer/composer-original.svg
index 08d937a97..4531d0408 100644
--- a/icons/composer/composer-original.svg
+++ b/icons/composer/composer-original.svg
@@ -1,114 +1 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/confluence/confluence-original-wordmark.svg b/icons/confluence/confluence-original-wordmark.svg
index e207dbd65..56f5c1033 100644
--- a/icons/confluence/confluence-original-wordmark.svg
+++ b/icons/confluence/confluence-original-wordmark.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/confluence/confluence-original.svg b/icons/confluence/confluence-original.svg
index 5db49a263..c54e27038 100644
--- a/icons/confluence/confluence-original.svg
+++ b/icons/confluence/confluence-original.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/couchdb/couchdb-original-wordmark.svg b/icons/couchdb/couchdb-original-wordmark.svg
index 8ee76892b..68515d791 100644
--- a/icons/couchdb/couchdb-original-wordmark.svg
+++ b/icons/couchdb/couchdb-original-wordmark.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/couchdb/couchdb-original.svg b/icons/couchdb/couchdb-original.svg
index ff88946f7..8555b5cbd 100644
--- a/icons/couchdb/couchdb-original.svg
+++ b/icons/couchdb/couchdb-original.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/couchdb/couchdb-plain-wordmark.svg b/icons/couchdb/couchdb-plain-wordmark.svg
index 05a8190d1..7641f1b83 100644
--- a/icons/couchdb/couchdb-plain-wordmark.svg
+++ b/icons/couchdb/couchdb-plain-wordmark.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/couchdb/couchdb-plain.svg b/icons/couchdb/couchdb-plain.svg
index add01e759..540c7355b 100644
--- a/icons/couchdb/couchdb-plain.svg
+++ b/icons/couchdb/couchdb-plain.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/cplusplus/cplusplus-line.svg b/icons/cplusplus/cplusplus-line.svg
index b95c860d2..ac88257af 100644
--- a/icons/cplusplus/cplusplus-line.svg
+++ b/icons/cplusplus/cplusplus-line.svg
@@ -1 +1 @@
-
+
\ No newline at end of file
diff --git a/icons/cplusplus/cplusplus-original.svg b/icons/cplusplus/cplusplus-original.svg
index 387fe9609..3f9929eab 100644
--- a/icons/cplusplus/cplusplus-original.svg
+++ b/icons/cplusplus/cplusplus-original.svg
@@ -1 +1 @@
-
+
\ No newline at end of file
diff --git a/icons/cplusplus/cplusplus-plain.svg b/icons/cplusplus/cplusplus-plain.svg
index 37faabe7f..75756c44b 100644
--- a/icons/cplusplus/cplusplus-plain.svg
+++ b/icons/cplusplus/cplusplus-plain.svg
@@ -1 +1 @@
-
+
\ No newline at end of file
diff --git a/icons/csharp/csharp-line.svg b/icons/csharp/csharp-line.svg
index 2a39f30a5..0e09a4ba1 100644
--- a/icons/csharp/csharp-line.svg
+++ b/icons/csharp/csharp-line.svg
@@ -1 +1 @@
-
+
\ No newline at end of file
diff --git a/icons/csharp/csharp-original.svg b/icons/csharp/csharp-original.svg
index 99235e300..acc487eb5 100644
--- a/icons/csharp/csharp-original.svg
+++ b/icons/csharp/csharp-original.svg
@@ -1 +1 @@
-
+
\ No newline at end of file
diff --git a/icons/csharp/csharp-plain.svg b/icons/csharp/csharp-plain.svg
index 5b2dc754c..c639b3ba7 100644
--- a/icons/csharp/csharp-plain.svg
+++ b/icons/csharp/csharp-plain.svg
@@ -1 +1 @@
-
+
\ No newline at end of file
diff --git a/icons/css3/css3-original-wordmark.svg b/icons/css3/css3-original-wordmark.svg
index 2c895eb9f..18cfb098c 100644
--- a/icons/css3/css3-original-wordmark.svg
+++ b/icons/css3/css3-original-wordmark.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/css3/css3-original.svg b/icons/css3/css3-original.svg
index 1a4e63db7..ff5b6ce62 100644
--- a/icons/css3/css3-original.svg
+++ b/icons/css3/css3-original.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/css3/css3-plain-wordmark.svg b/icons/css3/css3-plain-wordmark.svg
index 88305314b..28f189518 100644
--- a/icons/css3/css3-plain-wordmark.svg
+++ b/icons/css3/css3-plain-wordmark.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/css3/css3-plain.svg b/icons/css3/css3-plain.svg
index 6d373a19f..550e2e098 100644
--- a/icons/css3/css3-plain.svg
+++ b/icons/css3/css3-plain.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/cucumber/cucumber-plain-wordmark.svg b/icons/cucumber/cucumber-plain-wordmark.svg
index 4e162a380..eef8d51a5 100644
--- a/icons/cucumber/cucumber-plain-wordmark.svg
+++ b/icons/cucumber/cucumber-plain-wordmark.svg
@@ -1,6 +1 @@
-
-
-
-
-
-
+
\ No newline at end of file
diff --git a/icons/cucumber/cucumber-plain.svg b/icons/cucumber/cucumber-plain.svg
index ff9501f62..41288e1ad 100644
--- a/icons/cucumber/cucumber-plain.svg
+++ b/icons/cucumber/cucumber-plain.svg
@@ -1,17 +1 @@
-
-
-
-
-
+
\ No newline at end of file
diff --git a/icons/d3js/d3js-original.svg b/icons/d3js/d3js-original.svg
index dafec005e..1bd094997 100644
--- a/icons/d3js/d3js-original.svg
+++ b/icons/d3js/d3js-original.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/d3js/d3js-plain.svg b/icons/d3js/d3js-plain.svg
index 1b326cdea..54555ac52 100644
--- a/icons/d3js/d3js-plain.svg
+++ b/icons/d3js/d3js-plain.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/dart/dart-original-wordmark.svg b/icons/dart/dart-original-wordmark.svg
index f592c09f7..9b091b943 100644
--- a/icons/dart/dart-original-wordmark.svg
+++ b/icons/dart/dart-original-wordmark.svg
@@ -1 +1 @@
-
+
\ No newline at end of file
diff --git a/icons/dart/dart-original.svg b/icons/dart/dart-original.svg
index 3be7c5ee1..8c78fdb26 100644
--- a/icons/dart/dart-original.svg
+++ b/icons/dart/dart-original.svg
@@ -1 +1 @@
-
+
\ No newline at end of file
diff --git a/icons/dart/dart-plain-wordmark.svg b/icons/dart/dart-plain-wordmark.svg
index f9914f9ad..b7efd562d 100644
--- a/icons/dart/dart-plain-wordmark.svg
+++ b/icons/dart/dart-plain-wordmark.svg
@@ -1 +1 @@
-
+
\ No newline at end of file
diff --git a/icons/dart/dart-plain.svg b/icons/dart/dart-plain.svg
index 5ba9721ba..c77b8bc86 100644
--- a/icons/dart/dart-plain.svg
+++ b/icons/dart/dart-plain.svg
@@ -1 +1 @@
-
+
\ No newline at end of file
diff --git a/icons/debian/debian-original-wordmark.svg b/icons/debian/debian-original-wordmark.svg
index 0758e4ca1..e0c80ffac 100644
--- a/icons/debian/debian-original-wordmark.svg
+++ b/icons/debian/debian-original-wordmark.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/debian/debian-original.svg b/icons/debian/debian-original.svg
index d003ee7a3..9f9e3fe5d 100644
--- a/icons/debian/debian-original.svg
+++ b/icons/debian/debian-original.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/debian/debian-plain-wordmark.svg b/icons/debian/debian-plain-wordmark.svg
index 8776303d8..f00d7038a 100644
--- a/icons/debian/debian-plain-wordmark.svg
+++ b/icons/debian/debian-plain-wordmark.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/debian/debian-plain.svg b/icons/debian/debian-plain.svg
index 15c310851..23a11fd26 100644
--- a/icons/debian/debian-plain.svg
+++ b/icons/debian/debian-plain.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/devicon/devicon-original-wordmark.svg b/icons/devicon/devicon-original-wordmark.svg
index 832e0fde3..e9639e519 100644
--- a/icons/devicon/devicon-original-wordmark.svg
+++ b/icons/devicon/devicon-original-wordmark.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/devicon/devicon-original.svg b/icons/devicon/devicon-original.svg
index 1ca664776..555ff2bb2 100644
--- a/icons/devicon/devicon-original.svg
+++ b/icons/devicon/devicon-original.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/devicon/devicon-plain-wordmark.svg b/icons/devicon/devicon-plain-wordmark.svg
index e6fdda323..5e01e5d75 100644
--- a/icons/devicon/devicon-plain-wordmark.svg
+++ b/icons/devicon/devicon-plain-wordmark.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/devicon/devicon-plain.svg b/icons/devicon/devicon-plain.svg
index 798628c28..d50efb41f 100644
--- a/icons/devicon/devicon-plain.svg
+++ b/icons/devicon/devicon-plain.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/digitalocean/digitalocean-original-wordmark.svg b/icons/digitalocean/digitalocean-original-wordmark.svg
index f984da1b6..884ea9912 100644
--- a/icons/digitalocean/digitalocean-original-wordmark.svg
+++ b/icons/digitalocean/digitalocean-original-wordmark.svg
@@ -1,15 +1 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
\ No newline at end of file
diff --git a/icons/digitalocean/digitalocean-original.svg b/icons/digitalocean/digitalocean-original.svg
index 7787c8f01..4cb3425d9 100644
--- a/icons/digitalocean/digitalocean-original.svg
+++ b/icons/digitalocean/digitalocean-original.svg
@@ -1,12 +1 @@
-
-
-
-
-
-
-
-
-
-
-
-
+
\ No newline at end of file
diff --git a/icons/digitalocean/digitalocean-plain-wordmark.svg b/icons/digitalocean/digitalocean-plain-wordmark.svg
index edeaf2061..22821fdac 100644
--- a/icons/digitalocean/digitalocean-plain-wordmark.svg
+++ b/icons/digitalocean/digitalocean-plain-wordmark.svg
@@ -1,15 +1 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
\ No newline at end of file
diff --git a/icons/digitalocean/digitalocean-plain.svg b/icons/digitalocean/digitalocean-plain.svg
index 26fb96609..29e2b7150 100644
--- a/icons/digitalocean/digitalocean-plain.svg
+++ b/icons/digitalocean/digitalocean-plain.svg
@@ -1,12 +1 @@
-
-
-
-
-
-
-
-
-
-
-
-
+
\ No newline at end of file
diff --git a/icons/django/django-line.svg b/icons/django/django-line.svg
index 5df1987dc..7018ff24e 100644
--- a/icons/django/django-line.svg
+++ b/icons/django/django-line.svg
@@ -1 +1 @@
-
+
\ No newline at end of file
diff --git a/icons/django/django-original.svg b/icons/django/django-original.svg
index 381a0b7d7..7acaa97fc 100644
--- a/icons/django/django-original.svg
+++ b/icons/django/django-original.svg
@@ -1 +1 @@
-
+
\ No newline at end of file
diff --git a/icons/django/django-plain.svg b/icons/django/django-plain.svg
index 1d1411dc1..12f730842 100644
--- a/icons/django/django-plain.svg
+++ b/icons/django/django-plain.svg
@@ -1 +1 @@
-
+
\ No newline at end of file
diff --git a/icons/docker/docker-original-wordmark.svg b/icons/docker/docker-original-wordmark.svg
index e644bf7b5..2d16448f1 100644
--- a/icons/docker/docker-original-wordmark.svg
+++ b/icons/docker/docker-original-wordmark.svg
@@ -1 +1 @@
-
+
\ No newline at end of file
diff --git a/icons/docker/docker-original.svg b/icons/docker/docker-original.svg
index 06e81cf70..bbeaed2ef 100644
--- a/icons/docker/docker-original.svg
+++ b/icons/docker/docker-original.svg
@@ -1 +1 @@
-
+
\ No newline at end of file
diff --git a/icons/docker/docker-plain-wordmark.svg b/icons/docker/docker-plain-wordmark.svg
index 6e566cf76..13813c771 100644
--- a/icons/docker/docker-plain-wordmark.svg
+++ b/icons/docker/docker-plain-wordmark.svg
@@ -1 +1 @@
-
+
\ No newline at end of file
diff --git a/icons/docker/docker-plain.svg b/icons/docker/docker-plain.svg
index aef17d660..9d51fcd2b 100644
--- a/icons/docker/docker-plain.svg
+++ b/icons/docker/docker-plain.svg
@@ -1 +1 @@
-
+
\ No newline at end of file
diff --git a/icons/doctrine/doctrine-line-wordmark.svg b/icons/doctrine/doctrine-line-wordmark.svg
index 322f1ce14..9bada9902 100644
--- a/icons/doctrine/doctrine-line-wordmark.svg
+++ b/icons/doctrine/doctrine-line-wordmark.svg
@@ -1 +1 @@
-
+
\ No newline at end of file
diff --git a/icons/doctrine/doctrine-line.svg b/icons/doctrine/doctrine-line.svg
index b98aa6d13..f839fbf1c 100644
--- a/icons/doctrine/doctrine-line.svg
+++ b/icons/doctrine/doctrine-line.svg
@@ -1 +1 @@
-
+
\ No newline at end of file
diff --git a/icons/doctrine/doctrine-original-wordmark.svg b/icons/doctrine/doctrine-original-wordmark.svg
index 9302f35cc..356079066 100644
--- a/icons/doctrine/doctrine-original-wordmark.svg
+++ b/icons/doctrine/doctrine-original-wordmark.svg
@@ -1 +1 @@
-
+
\ No newline at end of file
diff --git a/icons/doctrine/doctrine-original.svg b/icons/doctrine/doctrine-original.svg
index fdf2c2bb0..3802a91ed 100644
--- a/icons/doctrine/doctrine-original.svg
+++ b/icons/doctrine/doctrine-original.svg
@@ -1 +1 @@
-
+
\ No newline at end of file
diff --git a/icons/doctrine/doctrine-plain-wordmark.svg b/icons/doctrine/doctrine-plain-wordmark.svg
index a1bdaf338..2ffa6cc4a 100644
--- a/icons/doctrine/doctrine-plain-wordmark.svg
+++ b/icons/doctrine/doctrine-plain-wordmark.svg
@@ -1 +1 @@
-
+
\ No newline at end of file
diff --git a/icons/doctrine/doctrine-plain.svg b/icons/doctrine/doctrine-plain.svg
index 792607a2c..d9616b478 100644
--- a/icons/doctrine/doctrine-plain.svg
+++ b/icons/doctrine/doctrine-plain.svg
@@ -1 +1 @@
-
+
\ No newline at end of file
diff --git a/icons/dot-net/dot-net-original-wordmark.svg b/icons/dot-net/dot-net-original-wordmark.svg
index 793266ea5..992afec32 100644
--- a/icons/dot-net/dot-net-original-wordmark.svg
+++ b/icons/dot-net/dot-net-original-wordmark.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/dot-net/dot-net-original.svg b/icons/dot-net/dot-net-original.svg
index d8e1f5860..e08aecf91 100644
--- a/icons/dot-net/dot-net-original.svg
+++ b/icons/dot-net/dot-net-original.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/dot-net/dot-net-plain-wordmark.svg b/icons/dot-net/dot-net-plain-wordmark.svg
index fa37e4eef..493ec26b8 100644
--- a/icons/dot-net/dot-net-plain-wordmark.svg
+++ b/icons/dot-net/dot-net-plain-wordmark.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/dot-net/dot-net-plain.svg b/icons/dot-net/dot-net-plain.svg
index 12ac3abcb..71d3520ad 100644
--- a/icons/dot-net/dot-net-plain.svg
+++ b/icons/dot-net/dot-net-plain.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/dotnetcore/dotnetcore-original.svg b/icons/dotnetcore/dotnetcore-original.svg
index 72a932990..3f1d62981 100644
--- a/icons/dotnetcore/dotnetcore-original.svg
+++ b/icons/dotnetcore/dotnetcore-original.svg
@@ -1,8 +1 @@
-
-
-
-
-
-
-
-
+
\ No newline at end of file
diff --git a/icons/dotnetcore/dotnetcore-plain.svg b/icons/dotnetcore/dotnetcore-plain.svg
index 45427c4ec..6433ba285 100644
--- a/icons/dotnetcore/dotnetcore-plain.svg
+++ b/icons/dotnetcore/dotnetcore-plain.svg
@@ -1,8 +1 @@
-
-
-
-
-
-
-
-
+
\ No newline at end of file
diff --git a/icons/drupal/drupal-original-wordmark.svg b/icons/drupal/drupal-original-wordmark.svg
index 75b3c2bc0..3c1f8ca06 100644
--- a/icons/drupal/drupal-original-wordmark.svg
+++ b/icons/drupal/drupal-original-wordmark.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/drupal/drupal-original.svg b/icons/drupal/drupal-original.svg
index ee3ebddd3..25f214ff6 100644
--- a/icons/drupal/drupal-original.svg
+++ b/icons/drupal/drupal-original.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/drupal/drupal-plain-wordmark.svg b/icons/drupal/drupal-plain-wordmark.svg
index 6fbba3225..db4b7464f 100644
--- a/icons/drupal/drupal-plain-wordmark.svg
+++ b/icons/drupal/drupal-plain-wordmark.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/drupal/drupal-plain.svg b/icons/drupal/drupal-plain.svg
index 9a20f28b7..ad320dfbe 100644
--- a/icons/drupal/drupal-plain.svg
+++ b/icons/drupal/drupal-plain.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/electron/electron-original-wordmark.svg b/icons/electron/electron-original-wordmark.svg
index 9d5c90df6..8a4b01267 100644
--- a/icons/electron/electron-original-wordmark.svg
+++ b/icons/electron/electron-original-wordmark.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/electron/electron-original.svg b/icons/electron/electron-original.svg
index 9fdf44ff4..af9a34d73 100644
--- a/icons/electron/electron-original.svg
+++ b/icons/electron/electron-original.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/eleventy/eleventy-original.svg b/icons/eleventy/eleventy-original.svg
index 762259ebe..e735f6a79 100644
--- a/icons/eleventy/eleventy-original.svg
+++ b/icons/eleventy/eleventy-original.svg
@@ -1 +1 @@
-
+
\ No newline at end of file
diff --git a/icons/eleventy/eleventy-plain.svg b/icons/eleventy/eleventy-plain.svg
index f40a03045..bd2e2e971 100644
--- a/icons/eleventy/eleventy-plain.svg
+++ b/icons/eleventy/eleventy-plain.svg
@@ -1 +1 @@
-
+
\ No newline at end of file
diff --git a/icons/elixir/elixir-original-wordmark.svg b/icons/elixir/elixir-original-wordmark.svg
index a5a7ae83f..b225dfa90 100644
--- a/icons/elixir/elixir-original-wordmark.svg
+++ b/icons/elixir/elixir-original-wordmark.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/elixir/elixir-original.svg b/icons/elixir/elixir-original.svg
index a13f61063..a38b8525f 100644
--- a/icons/elixir/elixir-original.svg
+++ b/icons/elixir/elixir-original.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/elixir/elixir-plain-wordmark.svg b/icons/elixir/elixir-plain-wordmark.svg
index 75918c042..7bcc05202 100644
--- a/icons/elixir/elixir-plain-wordmark.svg
+++ b/icons/elixir/elixir-plain-wordmark.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/elixir/elixir-plain.svg b/icons/elixir/elixir-plain.svg
index f1332a0ad..0a72481e6 100644
--- a/icons/elixir/elixir-plain.svg
+++ b/icons/elixir/elixir-plain.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/elm/elm-original-wordmark.svg b/icons/elm/elm-original-wordmark.svg
index 7345d227c..998b8bd77 100644
--- a/icons/elm/elm-original-wordmark.svg
+++ b/icons/elm/elm-original-wordmark.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/elm/elm-original.svg b/icons/elm/elm-original.svg
index ceccdeba1..b875576d9 100644
--- a/icons/elm/elm-original.svg
+++ b/icons/elm/elm-original.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/elm/elm-plain-wordmark.svg b/icons/elm/elm-plain-wordmark.svg
index d94da3224..56fbc1712 100644
--- a/icons/elm/elm-plain-wordmark.svg
+++ b/icons/elm/elm-plain-wordmark.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/elm/elm-plain.svg b/icons/elm/elm-plain.svg
index 2a0615517..69f752a76 100644
--- a/icons/elm/elm-plain.svg
+++ b/icons/elm/elm-plain.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/ember/ember-original-wordmark.svg b/icons/ember/ember-original-wordmark.svg
index 7178ca369..4bbfb93c6 100644
--- a/icons/ember/ember-original-wordmark.svg
+++ b/icons/ember/ember-original-wordmark.svg
@@ -1 +1 @@
-®
\ No newline at end of file
+®
\ No newline at end of file
diff --git a/icons/erlang/erlang-original-wordmark.svg b/icons/erlang/erlang-original-wordmark.svg
index fc5e08daf..c8359cfb0 100644
--- a/icons/erlang/erlang-original-wordmark.svg
+++ b/icons/erlang/erlang-original-wordmark.svg
@@ -1 +1 @@
-
+
\ No newline at end of file
diff --git a/icons/erlang/erlang-original.svg b/icons/erlang/erlang-original.svg
index 109aebb2b..08909d02e 100644
--- a/icons/erlang/erlang-original.svg
+++ b/icons/erlang/erlang-original.svg
@@ -1 +1 @@
-
+
\ No newline at end of file
diff --git a/icons/erlang/erlang-plain-wordmark.svg b/icons/erlang/erlang-plain-wordmark.svg
index deb636eec..a2eef52b0 100644
--- a/icons/erlang/erlang-plain-wordmark.svg
+++ b/icons/erlang/erlang-plain-wordmark.svg
@@ -1 +1 @@
-
+
\ No newline at end of file
diff --git a/icons/erlang/erlang-plain.svg b/icons/erlang/erlang-plain.svg
index fee1ef125..2246563dc 100644
--- a/icons/erlang/erlang-plain.svg
+++ b/icons/erlang/erlang-plain.svg
@@ -1 +1 @@
-
+
\ No newline at end of file
diff --git a/icons/express/express-original-wordmark.svg b/icons/express/express-original-wordmark.svg
index ca664ef4c..ed8e401cf 100644
--- a/icons/express/express-original-wordmark.svg
+++ b/icons/express/express-original-wordmark.svg
@@ -1 +1 @@
-Artboard 12
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/express/express-original.svg b/icons/express/express-original.svg
index 7a7091567..18642e2bc 100644
--- a/icons/express/express-original.svg
+++ b/icons/express/express-original.svg
@@ -1 +1 @@
-Artboard 16
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/facebook/facebook-original.svg b/icons/facebook/facebook-original.svg
index 10e5117c8..3ee62eb09 100644
--- a/icons/facebook/facebook-original.svg
+++ b/icons/facebook/facebook-original.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/facebook/facebook-plain.svg b/icons/facebook/facebook-plain.svg
index d51fa53cf..300012e71 100644
--- a/icons/facebook/facebook-plain.svg
+++ b/icons/facebook/facebook-plain.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/figma/figma-original.svg b/icons/figma/figma-original.svg
index 38d2486f6..b3edc6d45 100644
--- a/icons/figma/figma-original.svg
+++ b/icons/figma/figma-original.svg
@@ -1,10 +1 @@
-
-
-
-
-
-
-
-
-
-
+
\ No newline at end of file
diff --git a/icons/figma/figma-plain.svg b/icons/figma/figma-plain.svg
index 3a2803e9a..7d95542dc 100644
--- a/icons/figma/figma-plain.svg
+++ b/icons/figma/figma-plain.svg
@@ -1,10 +1 @@
-
-
-
-
-
-
-
-
-
-
+
\ No newline at end of file
diff --git a/icons/firebase/firebase-plain-wordmark.svg b/icons/firebase/firebase-plain-wordmark.svg
index 148905c49..ef80ca344 100644
--- a/icons/firebase/firebase-plain-wordmark.svg
+++ b/icons/firebase/firebase-plain-wordmark.svg
@@ -1,44 +1 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
\ No newline at end of file
diff --git a/icons/firebase/firebase-plain.svg b/icons/firebase/firebase-plain.svg
index e8c41d0a0..df8eeaa5f 100644
--- a/icons/firebase/firebase-plain.svg
+++ b/icons/firebase/firebase-plain.svg
@@ -1,7 +1 @@
-
-
-
-
+
\ No newline at end of file
diff --git a/icons/firefox/firefox-original-wordmark.svg b/icons/firefox/firefox-original-wordmark.svg
index 3f4e573cd..d27fa2f27 100644
--- a/icons/firefox/firefox-original-wordmark.svg
+++ b/icons/firefox/firefox-original-wordmark.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/firefox/firefox-original.svg b/icons/firefox/firefox-original.svg
index c2164cd41..92afad118 100644
--- a/icons/firefox/firefox-original.svg
+++ b/icons/firefox/firefox-original.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/firefox/firefox-plain-wordmark.svg b/icons/firefox/firefox-plain-wordmark.svg
index 72ba68bc8..70d5290e3 100644
--- a/icons/firefox/firefox-plain-wordmark.svg
+++ b/icons/firefox/firefox-plain-wordmark.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/firefox/firefox-plain.svg b/icons/firefox/firefox-plain.svg
index 15e0069d5..635175d9e 100644
--- a/icons/firefox/firefox-plain.svg
+++ b/icons/firefox/firefox-plain.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/flask/flask-original-wordmark.svg b/icons/flask/flask-original-wordmark.svg
index 4e28eb403..fbdc2d7d5 100644
--- a/icons/flask/flask-original-wordmark.svg
+++ b/icons/flask/flask-original-wordmark.svg
@@ -1,201 +1 @@
-
-
-
-
-
-
-
-
-
-
-
+
\ No newline at end of file
diff --git a/icons/flask/flask-original.svg b/icons/flask/flask-original.svg
index c73cf0a32..9e5983c67 100644
--- a/icons/flask/flask-original.svg
+++ b/icons/flask/flask-original.svg
@@ -1,118 +1 @@
-
-
-
-
-
-
+
\ No newline at end of file
diff --git a/icons/flutter/flutter-original.svg b/icons/flutter/flutter-original.svg
index c9c483547..bd8d0b4ac 100644
--- a/icons/flutter/flutter-original.svg
+++ b/icons/flutter/flutter-original.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/flutter/flutter-plain.svg b/icons/flutter/flutter-plain.svg
index b453881cc..a272fc9c0 100644
--- a/icons/flutter/flutter-plain.svg
+++ b/icons/flutter/flutter-plain.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/foundation/foundation-original-wordmark.svg b/icons/foundation/foundation-original-wordmark.svg
index fdc065ca0..f4f839e0d 100644
--- a/icons/foundation/foundation-original-wordmark.svg
+++ b/icons/foundation/foundation-original-wordmark.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/foundation/foundation-original.svg b/icons/foundation/foundation-original.svg
index 6a0ec1fa6..9442d8ac4 100644
--- a/icons/foundation/foundation-original.svg
+++ b/icons/foundation/foundation-original.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/foundation/foundation-plain-wordmark.svg b/icons/foundation/foundation-plain-wordmark.svg
index db6a72517..72d0bd74b 100644
--- a/icons/foundation/foundation-plain-wordmark.svg
+++ b/icons/foundation/foundation-plain-wordmark.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/foundation/foundation-plain.svg b/icons/foundation/foundation-plain.svg
index 523d645cc..0a3395177 100644
--- a/icons/foundation/foundation-plain.svg
+++ b/icons/foundation/foundation-plain.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/gatling/gatling-plain-wordmark.svg b/icons/gatling/gatling-plain-wordmark.svg
index 970a8d396..76b7f6a6f 100644
--- a/icons/gatling/gatling-plain-wordmark.svg
+++ b/icons/gatling/gatling-plain-wordmark.svg
@@ -1,22 +1 @@
-
-
-
-
-
+
\ No newline at end of file
diff --git a/icons/gatling/gatling-plain.svg b/icons/gatling/gatling-plain.svg
index ed78a8809..e9d706522 100644
--- a/icons/gatling/gatling-plain.svg
+++ b/icons/gatling/gatling-plain.svg
@@ -1,10 +1 @@
-
-
-
-
-
+
\ No newline at end of file
diff --git a/icons/gatsby/gatsby-original-wordmark.svg b/icons/gatsby/gatsby-original-wordmark.svg
index a735b0579..bf7c6e963 100644
--- a/icons/gatsby/gatsby-original-wordmark.svg
+++ b/icons/gatsby/gatsby-original-wordmark.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/gatsby/gatsby-original.svg b/icons/gatsby/gatsby-original.svg
index b4e7df095..4ab138b00 100644
--- a/icons/gatsby/gatsby-original.svg
+++ b/icons/gatsby/gatsby-original.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/gatsby/gatsby-plain-wordmark.svg b/icons/gatsby/gatsby-plain-wordmark.svg
index bb75ec1f9..2066ddfff 100644
--- a/icons/gatsby/gatsby-plain-wordmark.svg
+++ b/icons/gatsby/gatsby-plain-wordmark.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/gatsby/gatsby-plain.svg b/icons/gatsby/gatsby-plain.svg
index b4e7df095..4ab138b00 100644
--- a/icons/gatsby/gatsby-plain.svg
+++ b/icons/gatsby/gatsby-plain.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/gimp/gimp-original-wordmark.svg b/icons/gimp/gimp-original-wordmark.svg
index ef7ada242..86c4ee2d1 100644
--- a/icons/gimp/gimp-original-wordmark.svg
+++ b/icons/gimp/gimp-original-wordmark.svg
@@ -1 +1 @@
-
+
\ No newline at end of file
diff --git a/icons/gimp/gimp-original.svg b/icons/gimp/gimp-original.svg
index 6b52ccbc0..bf87b59d1 100644
--- a/icons/gimp/gimp-original.svg
+++ b/icons/gimp/gimp-original.svg
@@ -1 +1 @@
-
+
\ No newline at end of file
diff --git a/icons/gimp/gimp-plain-wordmark.svg b/icons/gimp/gimp-plain-wordmark.svg
index b42778055..2b6f025b1 100644
--- a/icons/gimp/gimp-plain-wordmark.svg
+++ b/icons/gimp/gimp-plain-wordmark.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/gimp/gimp-plain.svg b/icons/gimp/gimp-plain.svg
index 8c037232a..4264a820a 100644
--- a/icons/gimp/gimp-plain.svg
+++ b/icons/gimp/gimp-plain.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/git/git-original-wordmark.svg b/icons/git/git-original-wordmark.svg
index 79d29a178..d04ffd730 100644
--- a/icons/git/git-original-wordmark.svg
+++ b/icons/git/git-original-wordmark.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/git/git-original.svg b/icons/git/git-original.svg
index 5cb34beca..93f25f923 100644
--- a/icons/git/git-original.svg
+++ b/icons/git/git-original.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/git/git-plain-wordmark.svg b/icons/git/git-plain-wordmark.svg
index 23200240b..6269f5045 100644
--- a/icons/git/git-plain-wordmark.svg
+++ b/icons/git/git-plain-wordmark.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/git/git-plain.svg b/icons/git/git-plain.svg
index 55fd4de77..fec490ef9 100644
--- a/icons/git/git-plain.svg
+++ b/icons/git/git-plain.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/github/github-original-wordmark.svg b/icons/github/github-original-wordmark.svg
index d05d8b071..33ebf4fdb 100644
--- a/icons/github/github-original-wordmark.svg
+++ b/icons/github/github-original-wordmark.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/github/github-original.svg b/icons/github/github-original.svg
index faee40774..4eca0628c 100644
--- a/icons/github/github-original.svg
+++ b/icons/github/github-original.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/gitlab/gitlab-original-wordmark.svg b/icons/gitlab/gitlab-original-wordmark.svg
index bdc330619..8eb0f8570 100644
--- a/icons/gitlab/gitlab-original-wordmark.svg
+++ b/icons/gitlab/gitlab-original-wordmark.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/gitlab/gitlab-original.svg b/icons/gitlab/gitlab-original.svg
index 69c393ae7..4534f0ab7 100644
--- a/icons/gitlab/gitlab-original.svg
+++ b/icons/gitlab/gitlab-original.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/gitlab/gitlab-plain-wordmark.svg b/icons/gitlab/gitlab-plain-wordmark.svg
index 25697a258..2130ca66f 100644
--- a/icons/gitlab/gitlab-plain-wordmark.svg
+++ b/icons/gitlab/gitlab-plain-wordmark.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/gitlab/gitlab-plain.svg b/icons/gitlab/gitlab-plain.svg
index a1e892cc3..18cdd34cc 100644
--- a/icons/gitlab/gitlab-plain.svg
+++ b/icons/gitlab/gitlab-plain.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/gitter/gitter-plain-wordmark.svg b/icons/gitter/gitter-plain-wordmark.svg
index 5873f8f5c..45d7cd6e6 100644
--- a/icons/gitter/gitter-plain-wordmark.svg
+++ b/icons/gitter/gitter-plain-wordmark.svg
@@ -1 +1 @@
-
+
\ No newline at end of file
diff --git a/icons/gitter/gitter-plain.svg b/icons/gitter/gitter-plain.svg
index 1523bcde2..a339df367 100644
--- a/icons/gitter/gitter-plain.svg
+++ b/icons/gitter/gitter-plain.svg
@@ -1 +1 @@
-
+
\ No newline at end of file
diff --git a/icons/go/go-line.svg b/icons/go/go-line.svg
index 8aefbe26a..3e3857045 100644
--- a/icons/go/go-line.svg
+++ b/icons/go/go-line.svg
@@ -1 +1 @@
-
+
\ No newline at end of file
diff --git a/icons/go/go-original.svg b/icons/go/go-original.svg
index b9a1f8420..82a152d25 100644
--- a/icons/go/go-original.svg
+++ b/icons/go/go-original.svg
@@ -1 +1 @@
-
+
\ No newline at end of file
diff --git a/icons/go/go-plain.svg b/icons/go/go-plain.svg
index 612b6f563..f744b6681 100644
--- a/icons/go/go-plain.svg
+++ b/icons/go/go-plain.svg
@@ -1 +1 @@
-
+
\ No newline at end of file
diff --git a/icons/google/google-original-wordmark.svg b/icons/google/google-original-wordmark.svg
index ffcfb8ff3..24af39547 100644
--- a/icons/google/google-original-wordmark.svg
+++ b/icons/google/google-original-wordmark.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/google/google-original.svg b/icons/google/google-original.svg
index 6b4844be0..57b9431aa 100644
--- a/icons/google/google-original.svg
+++ b/icons/google/google-original.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/google/google-plain-wordmark.svg b/icons/google/google-plain-wordmark.svg
index a2f2f2f4b..fc574f1e7 100644
--- a/icons/google/google-plain-wordmark.svg
+++ b/icons/google/google-plain-wordmark.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/google/google-plain.svg b/icons/google/google-plain.svg
index e87a0e89b..c9167c60f 100644
--- a/icons/google/google-plain.svg
+++ b/icons/google/google-plain.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/googlecloud/googlecloud-original-wordmark.svg b/icons/googlecloud/googlecloud-original-wordmark.svg
index 2ec35dbba..566f24948 100644
--- a/icons/googlecloud/googlecloud-original-wordmark.svg
+++ b/icons/googlecloud/googlecloud-original-wordmark.svg
@@ -1,14 +1 @@
-
-
-
-
-
-
-
-
-
-
-
+
\ No newline at end of file
diff --git a/icons/googlecloud/googlecloud-original.svg b/icons/googlecloud/googlecloud-original.svg
index 5046890bc..e9d755e8f 100644
--- a/icons/googlecloud/googlecloud-original.svg
+++ b/icons/googlecloud/googlecloud-original.svg
@@ -1,11 +1 @@
-
-
-
-
-
-
-
-
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/googlecloud/googlecloud-plain-wordmark.svg b/icons/googlecloud/googlecloud-plain-wordmark.svg
index 48f8b9c0b..b0151f357 100644
--- a/icons/googlecloud/googlecloud-plain-wordmark.svg
+++ b/icons/googlecloud/googlecloud-plain-wordmark.svg
@@ -1,13 +1 @@
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/googlecloud/googlecloud-plain.svg b/icons/googlecloud/googlecloud-plain.svg
index 719acc79f..f5908daab 100644
--- a/icons/googlecloud/googlecloud-plain.svg
+++ b/icons/googlecloud/googlecloud-plain.svg
@@ -1,11 +1 @@
-
-
-
-
-
-
-
-
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/gradle/gradle-plain-wordmark.svg b/icons/gradle/gradle-plain-wordmark.svg
index 19b0af741..3cd6c44f9 100644
--- a/icons/gradle/gradle-plain-wordmark.svg
+++ b/icons/gradle/gradle-plain-wordmark.svg
@@ -1,39 +1 @@
-
-
-
-
-
+
\ No newline at end of file
diff --git a/icons/gradle/gradle-plain.svg b/icons/gradle/gradle-plain.svg
index eb90b3bd8..fc99c1a63 100644
--- a/icons/gradle/gradle-plain.svg
+++ b/icons/gradle/gradle-plain.svg
@@ -1,22 +1 @@
-
-
-
-
-
+
\ No newline at end of file
diff --git a/icons/grails/grails-original.svg b/icons/grails/grails-original.svg
index 956b3820c..15cf4d6e8 100644
--- a/icons/grails/grails-original.svg
+++ b/icons/grails/grails-original.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/grails/grails-plain.svg b/icons/grails/grails-plain.svg
index fb3870b23..09c92f12e 100644
--- a/icons/grails/grails-plain.svg
+++ b/icons/grails/grails-plain.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/graphql/graphql-plain-wordmark.svg b/icons/graphql/graphql-plain-wordmark.svg
index fb175fbeb..cb2ec70c9 100644
--- a/icons/graphql/graphql-plain-wordmark.svg
+++ b/icons/graphql/graphql-plain-wordmark.svg
@@ -1,27 +1 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
\ No newline at end of file
diff --git a/icons/graphql/graphql-plain.svg b/icons/graphql/graphql-plain.svg
index c3b6d7b2d..3265b7185 100644
--- a/icons/graphql/graphql-plain.svg
+++ b/icons/graphql/graphql-plain.svg
@@ -1,20 +1 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
\ No newline at end of file
diff --git a/icons/groovy/groovy-original.svg b/icons/groovy/groovy-original.svg
index 201c1134e..4bb39ed84 100644
--- a/icons/groovy/groovy-original.svg
+++ b/icons/groovy/groovy-original.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/groovy/groovy-plain.svg b/icons/groovy/groovy-plain.svg
index f414a8428..eec500e5a 100644
--- a/icons/groovy/groovy-plain.svg
+++ b/icons/groovy/groovy-plain.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/grunt/grunt-line-wordmark.svg b/icons/grunt/grunt-line-wordmark.svg
index 51944fa8c..58df103da 100644
--- a/icons/grunt/grunt-line-wordmark.svg
+++ b/icons/grunt/grunt-line-wordmark.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/grunt/grunt-line.svg b/icons/grunt/grunt-line.svg
index b9f94198d..80b8d62c4 100644
--- a/icons/grunt/grunt-line.svg
+++ b/icons/grunt/grunt-line.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/grunt/grunt-original-wordmark.svg b/icons/grunt/grunt-original-wordmark.svg
index ce197074b..226b65e69 100644
--- a/icons/grunt/grunt-original-wordmark.svg
+++ b/icons/grunt/grunt-original-wordmark.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/grunt/grunt-original.svg b/icons/grunt/grunt-original.svg
index a92b66ea5..2e7e8e935 100644
--- a/icons/grunt/grunt-original.svg
+++ b/icons/grunt/grunt-original.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/grunt/grunt-plain-wordmark.svg b/icons/grunt/grunt-plain-wordmark.svg
index 1a65cb164..321bbdc68 100644
--- a/icons/grunt/grunt-plain-wordmark.svg
+++ b/icons/grunt/grunt-plain-wordmark.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/grunt/grunt-plain.svg b/icons/grunt/grunt-plain.svg
index 7bfc861b0..5053977e6 100644
--- a/icons/grunt/grunt-plain.svg
+++ b/icons/grunt/grunt-plain.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/gulp/gulp-plain.svg b/icons/gulp/gulp-plain.svg
index d10acd0a5..e7498f498 100644
--- a/icons/gulp/gulp-plain.svg
+++ b/icons/gulp/gulp-plain.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/handlebars/handlebars-original-wordmark.svg b/icons/handlebars/handlebars-original-wordmark.svg
index c9aa96331..2abb2db69 100644
--- a/icons/handlebars/handlebars-original-wordmark.svg
+++ b/icons/handlebars/handlebars-original-wordmark.svg
@@ -1 +1 @@
-Artboard 5
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/handlebars/handlebars-original.svg b/icons/handlebars/handlebars-original.svg
index 305b2cd7e..7e1b7efa6 100644
--- a/icons/handlebars/handlebars-original.svg
+++ b/icons/handlebars/handlebars-original.svg
@@ -1 +1 @@
-Artboard 7
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/haskell/haskell-original-wordmark.svg b/icons/haskell/haskell-original-wordmark.svg
index c6dc4f5e4..7ffa7b4e6 100644
--- a/icons/haskell/haskell-original-wordmark.svg
+++ b/icons/haskell/haskell-original-wordmark.svg
@@ -1,8 +1 @@
-
-
-
-
-
-
-
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/haskell/haskell-original.svg b/icons/haskell/haskell-original.svg
index 131008f3e..d3cc31129 100644
--- a/icons/haskell/haskell-original.svg
+++ b/icons/haskell/haskell-original.svg
@@ -1,6 +1 @@
-
-
-
-
-
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/haskell/haskell-plain-wordmark.svg b/icons/haskell/haskell-plain-wordmark.svg
index e08fba3ab..ccd76ad56 100644
--- a/icons/haskell/haskell-plain-wordmark.svg
+++ b/icons/haskell/haskell-plain-wordmark.svg
@@ -1,8 +1 @@
-
-
-
-
-
-
-
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/haskell/haskell-plain.svg b/icons/haskell/haskell-plain.svg
index 3d90f0823..fc96ba0c7 100644
--- a/icons/haskell/haskell-plain.svg
+++ b/icons/haskell/haskell-plain.svg
@@ -1,6 +1 @@
-
-
-
-
-
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/haxe/haxe-original.svg b/icons/haxe/haxe-original.svg
index 465f0e843..2bd2e6300 100644
--- a/icons/haxe/haxe-original.svg
+++ b/icons/haxe/haxe-original.svg
@@ -1 +1 @@
-
+
\ No newline at end of file
diff --git a/icons/haxe/haxe-plain.svg b/icons/haxe/haxe-plain.svg
index 165b0dbd2..b7bd21ad1 100644
--- a/icons/haxe/haxe-plain.svg
+++ b/icons/haxe/haxe-plain.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/heroku/heroku-original-wordmark.svg b/icons/heroku/heroku-original-wordmark.svg
index 97a0444a6..12a3be7f9 100644
--- a/icons/heroku/heroku-original-wordmark.svg
+++ b/icons/heroku/heroku-original-wordmark.svg
@@ -1 +1 @@
-
+
\ No newline at end of file
diff --git a/icons/heroku/heroku-original.svg b/icons/heroku/heroku-original.svg
index a27f978cb..a730f0435 100644
--- a/icons/heroku/heroku-original.svg
+++ b/icons/heroku/heroku-original.svg
@@ -1 +1 @@
-
+
\ No newline at end of file
diff --git a/icons/heroku/heroku-plain-wordmark.svg b/icons/heroku/heroku-plain-wordmark.svg
index dd16e4eed..a8bd27cf8 100644
--- a/icons/heroku/heroku-plain-wordmark.svg
+++ b/icons/heroku/heroku-plain-wordmark.svg
@@ -1 +1 @@
-
+
\ No newline at end of file
diff --git a/icons/heroku/heroku-plain.svg b/icons/heroku/heroku-plain.svg
index 6f5ab1c32..48ffe5646 100644
--- a/icons/heroku/heroku-plain.svg
+++ b/icons/heroku/heroku-plain.svg
@@ -1 +1 @@
-
+
\ No newline at end of file
diff --git a/icons/html5/html5-original-wordmark.svg b/icons/html5/html5-original-wordmark.svg
index d355398d8..fcf9ff5c0 100644
--- a/icons/html5/html5-original-wordmark.svg
+++ b/icons/html5/html5-original-wordmark.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/html5/html5-original.svg b/icons/html5/html5-original.svg
index 698cb039a..c2dda3a42 100644
--- a/icons/html5/html5-original.svg
+++ b/icons/html5/html5-original.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/html5/html5-plain-wordmark.svg b/icons/html5/html5-plain-wordmark.svg
index 60af96d5d..5bdb1d38e 100644
--- a/icons/html5/html5-plain-wordmark.svg
+++ b/icons/html5/html5-plain-wordmark.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/html5/html5-plain.svg b/icons/html5/html5-plain.svg
index 6da10f03d..dd81b76a9 100644
--- a/icons/html5/html5-plain.svg
+++ b/icons/html5/html5-plain.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/ie10/ie10-original.svg b/icons/ie10/ie10-original.svg
index 6e0503326..b1c9a8401 100644
--- a/icons/ie10/ie10-original.svg
+++ b/icons/ie10/ie10-original.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/illustrator/illustrator-line.svg b/icons/illustrator/illustrator-line.svg
index 4e9b61ce0..fca459b60 100644
--- a/icons/illustrator/illustrator-line.svg
+++ b/icons/illustrator/illustrator-line.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/illustrator/illustrator-plain.svg b/icons/illustrator/illustrator-plain.svg
index 14cdfa8ff..f96255760 100644
--- a/icons/illustrator/illustrator-plain.svg
+++ b/icons/illustrator/illustrator-plain.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/inkscape/inkscape-original-wordmark.svg b/icons/inkscape/inkscape-original-wordmark.svg
index 626eb6dcc..fd2072655 100644
--- a/icons/inkscape/inkscape-original-wordmark.svg
+++ b/icons/inkscape/inkscape-original-wordmark.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/inkscape/inkscape-original.svg b/icons/inkscape/inkscape-original.svg
index 775c470bc..c344e15c5 100644
--- a/icons/inkscape/inkscape-original.svg
+++ b/icons/inkscape/inkscape-original.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/inkscape/inkscape-plain-wordmark.svg b/icons/inkscape/inkscape-plain-wordmark.svg
index 25ac90a4e..c1b61fcbc 100644
--- a/icons/inkscape/inkscape-plain-wordmark.svg
+++ b/icons/inkscape/inkscape-plain-wordmark.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/inkscape/inkscape-plain.svg b/icons/inkscape/inkscape-plain.svg
index 94e6b8a08..3fa1addad 100644
--- a/icons/inkscape/inkscape-plain.svg
+++ b/icons/inkscape/inkscape-plain.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/intellij/intellij-original-wordmark.svg b/icons/intellij/intellij-original-wordmark.svg
index c1875c75e..d72ad1f34 100644
--- a/icons/intellij/intellij-original-wordmark.svg
+++ b/icons/intellij/intellij-original-wordmark.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/intellij/intellij-original.svg b/icons/intellij/intellij-original.svg
index 28711d34a..1d0ba90fc 100644
--- a/icons/intellij/intellij-original.svg
+++ b/icons/intellij/intellij-original.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/intellij/intellij-plain-wordmark.svg b/icons/intellij/intellij-plain-wordmark.svg
index 9d3917325..a005bdf05 100644
--- a/icons/intellij/intellij-plain-wordmark.svg
+++ b/icons/intellij/intellij-plain-wordmark.svg
@@ -1 +1 @@
-Artboard 13
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/intellij/intellij-plain.svg b/icons/intellij/intellij-plain.svg
index ae60297cc..d4674fa30 100644
--- a/icons/intellij/intellij-plain.svg
+++ b/icons/intellij/intellij-plain.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/ionic/ionic-original-wordmark.svg b/icons/ionic/ionic-original-wordmark.svg
index 8365af2d4..c1dd72c20 100644
--- a/icons/ionic/ionic-original-wordmark.svg
+++ b/icons/ionic/ionic-original-wordmark.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/ionic/ionic-original.svg b/icons/ionic/ionic-original.svg
index 5bc1d4c25..5d39c2745 100644
--- a/icons/ionic/ionic-original.svg
+++ b/icons/ionic/ionic-original.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/jasmine/jasmine-plain-wordmark.svg b/icons/jasmine/jasmine-plain-wordmark.svg
index 87f838661..c18a8f81d 100644
--- a/icons/jasmine/jasmine-plain-wordmark.svg
+++ b/icons/jasmine/jasmine-plain-wordmark.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/jasmine/jasmine-plain.svg b/icons/jasmine/jasmine-plain.svg
index c76f38ca5..3304048e7 100644
--- a/icons/jasmine/jasmine-plain.svg
+++ b/icons/jasmine/jasmine-plain.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/java/java-original-wordmark.svg b/icons/java/java-original-wordmark.svg
index 228eab724..d4bbd1c7f 100644
--- a/icons/java/java-original-wordmark.svg
+++ b/icons/java/java-original-wordmark.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/java/java-original.svg b/icons/java/java-original.svg
index b03b90a5c..051bf254a 100644
--- a/icons/java/java-original.svg
+++ b/icons/java/java-original.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/java/java-plain-wordmark.svg b/icons/java/java-plain-wordmark.svg
index b21febf8e..731103d26 100644
--- a/icons/java/java-plain-wordmark.svg
+++ b/icons/java/java-plain-wordmark.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/java/java-plain.svg b/icons/java/java-plain.svg
index a877b86bc..8d3c663a4 100644
--- a/icons/java/java-plain.svg
+++ b/icons/java/java-plain.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/javascript/javascript-original.svg b/icons/javascript/javascript-original.svg
index 40a89196b..7975261bd 100644
--- a/icons/javascript/javascript-original.svg
+++ b/icons/javascript/javascript-original.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/javascript/javascript-plain.svg b/icons/javascript/javascript-plain.svg
index 9eb5f7115..79aa7d741 100644
--- a/icons/javascript/javascript-plain.svg
+++ b/icons/javascript/javascript-plain.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/jeet/jeet-original-wordmark.svg b/icons/jeet/jeet-original-wordmark.svg
index 5e1228707..716a76389 100644
--- a/icons/jeet/jeet-original-wordmark.svg
+++ b/icons/jeet/jeet-original-wordmark.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/jeet/jeet-original.svg b/icons/jeet/jeet-original.svg
index 111fbd849..c35dc031f 100644
--- a/icons/jeet/jeet-original.svg
+++ b/icons/jeet/jeet-original.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/jeet/jeet-plain-wordmark.svg b/icons/jeet/jeet-plain-wordmark.svg
index f06e3e8dd..36a96058a 100644
--- a/icons/jeet/jeet-plain-wordmark.svg
+++ b/icons/jeet/jeet-plain-wordmark.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/jeet/jeet-plain.svg b/icons/jeet/jeet-plain.svg
index a3152f5e4..04d6c92a6 100644
--- a/icons/jeet/jeet-plain.svg
+++ b/icons/jeet/jeet-plain.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/jenkins/jenkins-line.svg b/icons/jenkins/jenkins-line.svg
index fca4a901a..b1e8cfafa 100755
--- a/icons/jenkins/jenkins-line.svg
+++ b/icons/jenkins/jenkins-line.svg
@@ -1,20 +1 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/jenkins/jenkins-original.svg b/icons/jenkins/jenkins-original.svg
index 3942ea10d..aa80e9b20 100755
--- a/icons/jenkins/jenkins-original.svg
+++ b/icons/jenkins/jenkins-original.svg
@@ -1,85 +1 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/jenkins/jenkins-plain.svg b/icons/jenkins/jenkins-plain.svg
index dc36bbece..24dcaa6fa 100644
--- a/icons/jenkins/jenkins-plain.svg
+++ b/icons/jenkins/jenkins-plain.svg
@@ -1,21 +1 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
\ No newline at end of file
diff --git a/icons/jetbrains/jetbrains-original.svg b/icons/jetbrains/jetbrains-original.svg
index 96ca0d78e..943919f65 100644
--- a/icons/jetbrains/jetbrains-original.svg
+++ b/icons/jetbrains/jetbrains-original.svg
@@ -1 +1 @@
-
+
\ No newline at end of file
diff --git a/icons/jetbrains/jetbrains-plain.svg b/icons/jetbrains/jetbrains-plain.svg
index 6c310815d..59edd35a7 100644
--- a/icons/jetbrains/jetbrains-plain.svg
+++ b/icons/jetbrains/jetbrains-plain.svg
@@ -1 +1 @@
-
+
\ No newline at end of file
diff --git a/icons/jquery/jquery-original-wordmark.svg b/icons/jquery/jquery-original-wordmark.svg
index 99809d74d..d06cad74a 100644
--- a/icons/jquery/jquery-original-wordmark.svg
+++ b/icons/jquery/jquery-original-wordmark.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/jquery/jquery-original.svg b/icons/jquery/jquery-original.svg
index 621989a34..eeabdfb9b 100644
--- a/icons/jquery/jquery-original.svg
+++ b/icons/jquery/jquery-original.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/jquery/jquery-plain-wordmark.svg b/icons/jquery/jquery-plain-wordmark.svg
index 0d9fda5ae..4b9bdee74 100644
--- a/icons/jquery/jquery-plain-wordmark.svg
+++ b/icons/jquery/jquery-plain-wordmark.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/jquery/jquery-plain.svg b/icons/jquery/jquery-plain.svg
index b7856d395..6b3c8b1c3 100644
--- a/icons/jquery/jquery-plain.svg
+++ b/icons/jquery/jquery-plain.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/jupyter/jupyter-original-wordmark.svg b/icons/jupyter/jupyter-original-wordmark.svg
index 12c379feb..47abe2409 100644
--- a/icons/jupyter/jupyter-original-wordmark.svg
+++ b/icons/jupyter/jupyter-original-wordmark.svg
@@ -1,17 +1 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
\ No newline at end of file
diff --git a/icons/jupyter/jupyter-original.svg b/icons/jupyter/jupyter-original.svg
index c33a2a85e..fa14d7068 100644
--- a/icons/jupyter/jupyter-original.svg
+++ b/icons/jupyter/jupyter-original.svg
@@ -1,10 +1 @@
-
-
-
-
-
-
-
-
-
-
+
\ No newline at end of file
diff --git a/icons/jupyter/jupyter-plain-wordmark.svg b/icons/jupyter/jupyter-plain-wordmark.svg
index 088d4da95..3aaea20af 100644
--- a/icons/jupyter/jupyter-plain-wordmark.svg
+++ b/icons/jupyter/jupyter-plain-wordmark.svg
@@ -1,17 +1 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
\ No newline at end of file
diff --git a/icons/jupyter/jupyter-plain.svg b/icons/jupyter/jupyter-plain.svg
index b618168f2..5752e8604 100644
--- a/icons/jupyter/jupyter-plain.svg
+++ b/icons/jupyter/jupyter-plain.svg
@@ -1,10 +1 @@
-
-
-
-
-
-
-
-
-
-
+
\ No newline at end of file
diff --git a/icons/kotlin/kotlin-original-wordmark.svg b/icons/kotlin/kotlin-original-wordmark.svg
index 721c74694..1259503c4 100644
--- a/icons/kotlin/kotlin-original-wordmark.svg
+++ b/icons/kotlin/kotlin-original-wordmark.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/kotlin/kotlin-original.svg b/icons/kotlin/kotlin-original.svg
index 95dd60b9d..8646a957d 100644
--- a/icons/kotlin/kotlin-original.svg
+++ b/icons/kotlin/kotlin-original.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/kotlin/kotlin-plain-wordmark.svg b/icons/kotlin/kotlin-plain-wordmark.svg
index 73dc217b0..0ca41148a 100644
--- a/icons/kotlin/kotlin-plain-wordmark.svg
+++ b/icons/kotlin/kotlin-plain-wordmark.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/kotlin/kotlin-plain.svg b/icons/kotlin/kotlin-plain.svg
index 5bd82e677..55c7f85c6 100644
--- a/icons/kotlin/kotlin-plain.svg
+++ b/icons/kotlin/kotlin-plain.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/krakenjs/krakenjs-original-wordmark.svg b/icons/krakenjs/krakenjs-original-wordmark.svg
index 840125d87..0872d2ee2 100644
--- a/icons/krakenjs/krakenjs-original-wordmark.svg
+++ b/icons/krakenjs/krakenjs-original-wordmark.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/krakenjs/krakenjs-original.svg b/icons/krakenjs/krakenjs-original.svg
index 0f4b5ad68..6c3e9ef97 100644
--- a/icons/krakenjs/krakenjs-original.svg
+++ b/icons/krakenjs/krakenjs-original.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/krakenjs/krakenjs-plain-wordmark.svg b/icons/krakenjs/krakenjs-plain-wordmark.svg
index ad1bab2f4..c3fe72625 100644
--- a/icons/krakenjs/krakenjs-plain-wordmark.svg
+++ b/icons/krakenjs/krakenjs-plain-wordmark.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/krakenjs/krakenjs-plain.svg b/icons/krakenjs/krakenjs-plain.svg
index 5116f0811..f800fcbdc 100644
--- a/icons/krakenjs/krakenjs-plain.svg
+++ b/icons/krakenjs/krakenjs-plain.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/kubernetes/kubernetes-plain-wordmark.svg b/icons/kubernetes/kubernetes-plain-wordmark.svg
index ef936be2f..1f421d1b4 100644
--- a/icons/kubernetes/kubernetes-plain-wordmark.svg
+++ b/icons/kubernetes/kubernetes-plain-wordmark.svg
@@ -1,120 +1 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
\ No newline at end of file
diff --git a/icons/kubernetes/kubernetes-plain.svg b/icons/kubernetes/kubernetes-plain.svg
index 1482b88b5..53a7c3424 100644
--- a/icons/kubernetes/kubernetes-plain.svg
+++ b/icons/kubernetes/kubernetes-plain.svg
@@ -1,53 +1 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
\ No newline at end of file
diff --git a/icons/laravel/laravel-plain-wordmark.svg b/icons/laravel/laravel-plain-wordmark.svg
index d6f3b0d11..de2ad275c 100644
--- a/icons/laravel/laravel-plain-wordmark.svg
+++ b/icons/laravel/laravel-plain-wordmark.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/laravel/laravel-plain.svg b/icons/laravel/laravel-plain.svg
index 40e9f20e8..757882066 100644
--- a/icons/laravel/laravel-plain.svg
+++ b/icons/laravel/laravel-plain.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/less/less-plain-wordmark.svg b/icons/less/less-plain-wordmark.svg
index 0c9b6e24e..ea6bf9007 100644
--- a/icons/less/less-plain-wordmark.svg
+++ b/icons/less/less-plain-wordmark.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/linkedin/linkedin-original-wordmark.svg b/icons/linkedin/linkedin-original-wordmark.svg
index 1f4c0a1b8..cf72dcc93 100644
--- a/icons/linkedin/linkedin-original-wordmark.svg
+++ b/icons/linkedin/linkedin-original-wordmark.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/linkedin/linkedin-original.svg b/icons/linkedin/linkedin-original.svg
index 2d99a0ee8..7f0410cca 100644
--- a/icons/linkedin/linkedin-original.svg
+++ b/icons/linkedin/linkedin-original.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/linkedin/linkedin-plain-wordmark.svg b/icons/linkedin/linkedin-plain-wordmark.svg
index c63b077b6..2dd4f4125 100644
--- a/icons/linkedin/linkedin-plain-wordmark.svg
+++ b/icons/linkedin/linkedin-plain-wordmark.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/linkedin/linkedin-plain.svg b/icons/linkedin/linkedin-plain.svg
index b74b4ffce..be3dfc84b 100644
--- a/icons/linkedin/linkedin-plain.svg
+++ b/icons/linkedin/linkedin-plain.svg
@@ -1 +1 @@
-Artboard 14
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/linux/linux-original.svg b/icons/linux/linux-original.svg
index c557d43cb..414a56ae3 100644
--- a/icons/linux/linux-original.svg
+++ b/icons/linux/linux-original.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/linux/linux-plain.svg b/icons/linux/linux-plain.svg
index cbb9771b1..26ced8fd1 100644
--- a/icons/linux/linux-plain.svg
+++ b/icons/linux/linux-plain.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/lua/lua-original-wordmark.svg b/icons/lua/lua-original-wordmark.svg
index da5b16327..5e10b4b13 100644
--- a/icons/lua/lua-original-wordmark.svg
+++ b/icons/lua/lua-original-wordmark.svg
@@ -1,41 +1 @@
-
-
-
-
-
-
-
-
-
-
-
+
\ No newline at end of file
diff --git a/icons/lua/lua-original.svg b/icons/lua/lua-original.svg
index 1908ce744..5757ccead 100644
--- a/icons/lua/lua-original.svg
+++ b/icons/lua/lua-original.svg
@@ -1,36 +1 @@
-
-
-
-
-
-
-
-
-
-
-
-
+
\ No newline at end of file
diff --git a/icons/lua/lua-plain-wordmark.svg b/icons/lua/lua-plain-wordmark.svg
index cafc9ac9a..4b45055d9 100644
--- a/icons/lua/lua-plain-wordmark.svg
+++ b/icons/lua/lua-plain-wordmark.svg
@@ -1,41 +1 @@
-
-
-
-
-
-
-
-
-
-
-
+
\ No newline at end of file
diff --git a/icons/lua/lua-plain.svg b/icons/lua/lua-plain.svg
index d1b50291b..0437a8dab 100644
--- a/icons/lua/lua-plain.svg
+++ b/icons/lua/lua-plain.svg
@@ -1,36 +1 @@
-
-
-
-
-
-
-
-
-
-
-
-
+
\ No newline at end of file
diff --git a/icons/materialui/materialui-original.svg b/icons/materialui/materialui-original.svg
index c27eedb1d..43ac31dbf 100644
--- a/icons/materialui/materialui-original.svg
+++ b/icons/materialui/materialui-original.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/materialui/materialui-plain.svg b/icons/materialui/materialui-plain.svg
index ab19859d8..a5bbca7e1 100644
--- a/icons/materialui/materialui-plain.svg
+++ b/icons/materialui/materialui-plain.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/matlab/matlab-original.svg b/icons/matlab/matlab-original.svg
index 1069a72e3..c03426997 100644
--- a/icons/matlab/matlab-original.svg
+++ b/icons/matlab/matlab-original.svg
@@ -1,29 +1 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
\ No newline at end of file
diff --git a/icons/matlab/matlab-plain.svg b/icons/matlab/matlab-plain.svg
index 8257262dc..b866eb997 100644
--- a/icons/matlab/matlab-plain.svg
+++ b/icons/matlab/matlab-plain.svg
@@ -1,6 +1 @@
-
-
-
-
-
-
+
\ No newline at end of file
diff --git a/icons/meteor/meteor-original-wordmark.svg b/icons/meteor/meteor-original-wordmark.svg
index fe6549668..0a0a2318f 100644
--- a/icons/meteor/meteor-original-wordmark.svg
+++ b/icons/meteor/meteor-original-wordmark.svg
@@ -1 +1 @@
-
+
\ No newline at end of file
diff --git a/icons/meteor/meteor-original.svg b/icons/meteor/meteor-original.svg
index 7d120ceeb..be91785cc 100644
--- a/icons/meteor/meteor-original.svg
+++ b/icons/meteor/meteor-original.svg
@@ -1 +1 @@
-
+
\ No newline at end of file
diff --git a/icons/meteor/meteor-plain-wordmark.svg b/icons/meteor/meteor-plain-wordmark.svg
index 0fdafdb97..ef013fc1f 100644
--- a/icons/meteor/meteor-plain-wordmark.svg
+++ b/icons/meteor/meteor-plain-wordmark.svg
@@ -1 +1 @@
-
+
\ No newline at end of file
diff --git a/icons/meteor/meteor-plain.svg b/icons/meteor/meteor-plain.svg
index 7d120ceeb..be91785cc 100644
--- a/icons/meteor/meteor-plain.svg
+++ b/icons/meteor/meteor-plain.svg
@@ -1 +1 @@
-
+
\ No newline at end of file
diff --git a/icons/microsoftsqlserver/microsoftsqlserver-plain-wordmark.svg b/icons/microsoftsqlserver/microsoftsqlserver-plain-wordmark.svg
index 937cbb195..d74bad891 100644
--- a/icons/microsoftsqlserver/microsoftsqlserver-plain-wordmark.svg
+++ b/icons/microsoftsqlserver/microsoftsqlserver-plain-wordmark.svg
@@ -1,160 +1 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
\ No newline at end of file
diff --git a/icons/microsoftsqlserver/microsoftsqlserver-plain.svg b/icons/microsoftsqlserver/microsoftsqlserver-plain.svg
index 36cb5fce3..0f5f8a644 100644
--- a/icons/microsoftsqlserver/microsoftsqlserver-plain.svg
+++ b/icons/microsoftsqlserver/microsoftsqlserver-plain.svg
@@ -1,81 +1 @@
-
-
-
-
-
-
+
\ No newline at end of file
diff --git a/icons/mocha/mocha-plain.svg b/icons/mocha/mocha-plain.svg
index 057c46c85..4d6c9b050 100644
--- a/icons/mocha/mocha-plain.svg
+++ b/icons/mocha/mocha-plain.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/mongodb/mongodb-original-wordmark.svg b/icons/mongodb/mongodb-original-wordmark.svg
index 06aeeac02..423069be8 100644
--- a/icons/mongodb/mongodb-original-wordmark.svg
+++ b/icons/mongodb/mongodb-original-wordmark.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/mongodb/mongodb-original.svg b/icons/mongodb/mongodb-original.svg
index ea04dbda1..a5d37072b 100644
--- a/icons/mongodb/mongodb-original.svg
+++ b/icons/mongodb/mongodb-original.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/mongodb/mongodb-plain-wordmark.svg b/icons/mongodb/mongodb-plain-wordmark.svg
index f9492b2d0..2dd058395 100644
--- a/icons/mongodb/mongodb-plain-wordmark.svg
+++ b/icons/mongodb/mongodb-plain-wordmark.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/mongodb/mongodb-plain.svg b/icons/mongodb/mongodb-plain.svg
index 4501b5b81..62d0ea1f3 100644
--- a/icons/mongodb/mongodb-plain.svg
+++ b/icons/mongodb/mongodb-plain.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/moodle/moodle-original-wordmark.svg b/icons/moodle/moodle-original-wordmark.svg
index df4a01ef8..1bddb115f 100644
--- a/icons/moodle/moodle-original-wordmark.svg
+++ b/icons/moodle/moodle-original-wordmark.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/moodle/moodle-original.svg b/icons/moodle/moodle-original.svg
index b1792ba64..91fc686e9 100644
--- a/icons/moodle/moodle-original.svg
+++ b/icons/moodle/moodle-original.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/moodle/moodle-plain-wordmark.svg b/icons/moodle/moodle-plain-wordmark.svg
index a0b733d13..ff210f4c2 100644
--- a/icons/moodle/moodle-plain-wordmark.svg
+++ b/icons/moodle/moodle-plain-wordmark.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/moodle/moodle-plain.svg b/icons/moodle/moodle-plain.svg
index 9f76cfea0..a5d39f01e 100644
--- a/icons/moodle/moodle-plain.svg
+++ b/icons/moodle/moodle-plain.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/mysql/mysql-original-wordmark.svg b/icons/mysql/mysql-original-wordmark.svg
index cb2d50874..3546d9942 100644
--- a/icons/mysql/mysql-original-wordmark.svg
+++ b/icons/mysql/mysql-original-wordmark.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/mysql/mysql-original.svg b/icons/mysql/mysql-original.svg
index 724dc0922..3c794157a 100644
--- a/icons/mysql/mysql-original.svg
+++ b/icons/mysql/mysql-original.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/mysql/mysql-plain-wordmark.svg b/icons/mysql/mysql-plain-wordmark.svg
index 557409089..efe40338f 100644
--- a/icons/mysql/mysql-plain-wordmark.svg
+++ b/icons/mysql/mysql-plain-wordmark.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/mysql/mysql-plain.svg b/icons/mysql/mysql-plain.svg
index 49048754a..1b6782960 100644
--- a/icons/mysql/mysql-plain.svg
+++ b/icons/mysql/mysql-plain.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/nestjs/nestjs-plain-wordmark.svg b/icons/nestjs/nestjs-plain-wordmark.svg
index f8d19de68..729651db4 100644
--- a/icons/nestjs/nestjs-plain-wordmark.svg
+++ b/icons/nestjs/nestjs-plain-wordmark.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/nestjs/nestjs-plain.svg b/icons/nestjs/nestjs-plain.svg
index c76e50217..da81168f9 100644
--- a/icons/nestjs/nestjs-plain.svg
+++ b/icons/nestjs/nestjs-plain.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/nextjs/nextjs-line.svg b/icons/nextjs/nextjs-line.svg
index 72f11af45..ab8fe59c1 100644
--- a/icons/nextjs/nextjs-line.svg
+++ b/icons/nextjs/nextjs-line.svg
@@ -1 +1 @@
-
+
\ No newline at end of file
diff --git a/icons/nextjs/nextjs-original-wordmark.svg b/icons/nextjs/nextjs-original-wordmark.svg
index d6bf6f06b..ebb3f5d33 100644
--- a/icons/nextjs/nextjs-original-wordmark.svg
+++ b/icons/nextjs/nextjs-original-wordmark.svg
@@ -1 +1 @@
-
+
\ No newline at end of file
diff --git a/icons/nextjs/nextjs-original.svg b/icons/nextjs/nextjs-original.svg
index 1ec302222..e73e3cd19 100644
--- a/icons/nextjs/nextjs-original.svg
+++ b/icons/nextjs/nextjs-original.svg
@@ -1 +1 @@
-
+
\ No newline at end of file
diff --git a/icons/nginx/nginx-original.svg b/icons/nginx/nginx-original.svg
index 3b8392093..e8e8cdb10 100644
--- a/icons/nginx/nginx-original.svg
+++ b/icons/nginx/nginx-original.svg
@@ -1 +1 @@
-
+
\ No newline at end of file
diff --git a/icons/nixos/nixos-original-wordmark.svg b/icons/nixos/nixos-original-wordmark.svg
index 4c981c370..5ade53aaa 100644
--- a/icons/nixos/nixos-original-wordmark.svg
+++ b/icons/nixos/nixos-original-wordmark.svg
@@ -1 +1 @@
-
+
\ No newline at end of file
diff --git a/icons/nixos/nixos-original.svg b/icons/nixos/nixos-original.svg
index 4ac858fc0..fb26b8093 100644
--- a/icons/nixos/nixos-original.svg
+++ b/icons/nixos/nixos-original.svg
@@ -1 +1 @@
-
+
\ No newline at end of file
diff --git a/icons/nixos/nixos-plain-wordmark.svg b/icons/nixos/nixos-plain-wordmark.svg
index 71b914505..ff0f186a3 100644
--- a/icons/nixos/nixos-plain-wordmark.svg
+++ b/icons/nixos/nixos-plain-wordmark.svg
@@ -1 +1 @@
-
+
\ No newline at end of file
diff --git a/icons/nixos/nixos-plain.svg b/icons/nixos/nixos-plain.svg
index b07e01cdb..3c2b90a5a 100644
--- a/icons/nixos/nixos-plain.svg
+++ b/icons/nixos/nixos-plain.svg
@@ -1 +1 @@
-
+
\ No newline at end of file
diff --git a/icons/nodejs/nodejs-original-wordmark.svg b/icons/nodejs/nodejs-original-wordmark.svg
index 16fd62ed3..298e2a5cc 100644
--- a/icons/nodejs/nodejs-original-wordmark.svg
+++ b/icons/nodejs/nodejs-original-wordmark.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/nodejs/nodejs-original.svg b/icons/nodejs/nodejs-original.svg
index f991b5022..d1db89d85 100644
--- a/icons/nodejs/nodejs-original.svg
+++ b/icons/nodejs/nodejs-original.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/nodejs/nodejs-plain-wordmark.svg b/icons/nodejs/nodejs-plain-wordmark.svg
index 69fbe2750..4bab5a01d 100644
--- a/icons/nodejs/nodejs-plain-wordmark.svg
+++ b/icons/nodejs/nodejs-plain-wordmark.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/nodejs/nodejs-plain.svg b/icons/nodejs/nodejs-plain.svg
index a94846ce8..8ef35aca4 100644
--- a/icons/nodejs/nodejs-plain.svg
+++ b/icons/nodejs/nodejs-plain.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/nodewebkit/nodewebkit-line-wordmark.svg b/icons/nodewebkit/nodewebkit-line-wordmark.svg
index 4d292d694..4e3abdda0 100644
--- a/icons/nodewebkit/nodewebkit-line-wordmark.svg
+++ b/icons/nodewebkit/nodewebkit-line-wordmark.svg
@@ -1 +1 @@
-
+
\ No newline at end of file
diff --git a/icons/nodewebkit/nodewebkit-line.svg b/icons/nodewebkit/nodewebkit-line.svg
index 330a785b4..612aa26ba 100644
--- a/icons/nodewebkit/nodewebkit-line.svg
+++ b/icons/nodewebkit/nodewebkit-line.svg
@@ -1 +1 @@
-
+
\ No newline at end of file
diff --git a/icons/nodewebkit/nodewebkit-original-wordmark.svg b/icons/nodewebkit/nodewebkit-original-wordmark.svg
index e8e0fa7d6..30e13ee57 100644
--- a/icons/nodewebkit/nodewebkit-original-wordmark.svg
+++ b/icons/nodewebkit/nodewebkit-original-wordmark.svg
@@ -1 +1 @@
-
+
\ No newline at end of file
diff --git a/icons/nodewebkit/nodewebkit-original.svg b/icons/nodewebkit/nodewebkit-original.svg
index 731148891..293b051e6 100644
--- a/icons/nodewebkit/nodewebkit-original.svg
+++ b/icons/nodewebkit/nodewebkit-original.svg
@@ -1 +1 @@
-
+
\ No newline at end of file
diff --git a/icons/nodewebkit/nodewebkit-plain-wordmark.svg b/icons/nodewebkit/nodewebkit-plain-wordmark.svg
index 869ef56cc..75b9f07b1 100644
--- a/icons/nodewebkit/nodewebkit-plain-wordmark.svg
+++ b/icons/nodewebkit/nodewebkit-plain-wordmark.svg
@@ -1 +1 @@
-
+
\ No newline at end of file
diff --git a/icons/nodewebkit/nodewebkit-plain.svg b/icons/nodewebkit/nodewebkit-plain.svg
index bd62fefc3..af77fe637 100644
--- a/icons/nodewebkit/nodewebkit-plain.svg
+++ b/icons/nodewebkit/nodewebkit-plain.svg
@@ -1 +1 @@
-
+
\ No newline at end of file
diff --git a/icons/npm/npm-original-wordmark.svg b/icons/npm/npm-original-wordmark.svg
index 7d6cd234b..2ee0f35b5 100644
--- a/icons/npm/npm-original-wordmark.svg
+++ b/icons/npm/npm-original-wordmark.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/objectivec/objectivec-plain.svg b/icons/objectivec/objectivec-plain.svg
index 7aefd80d0..7e3ed4f18 100644
--- a/icons/objectivec/objectivec-plain.svg
+++ b/icons/objectivec/objectivec-plain.svg
@@ -1,30 +1 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
\ No newline at end of file
diff --git a/icons/ocaml/ocaml-original-wordmark.svg b/icons/ocaml/ocaml-original-wordmark.svg
index 657a95335..5621caf01 100644
--- a/icons/ocaml/ocaml-original-wordmark.svg
+++ b/icons/ocaml/ocaml-original-wordmark.svg
@@ -1 +1 @@
-
+
\ No newline at end of file
diff --git a/icons/ocaml/ocaml-original.svg b/icons/ocaml/ocaml-original.svg
index 927fd3167..7a020aa92 100644
--- a/icons/ocaml/ocaml-original.svg
+++ b/icons/ocaml/ocaml-original.svg
@@ -1 +1 @@
-
+
\ No newline at end of file
diff --git a/icons/ocaml/ocaml-plain-wordmark.svg b/icons/ocaml/ocaml-plain-wordmark.svg
index e91fe96cc..e658122f2 100644
--- a/icons/ocaml/ocaml-plain-wordmark.svg
+++ b/icons/ocaml/ocaml-plain-wordmark.svg
@@ -1 +1 @@
-
+
\ No newline at end of file
diff --git a/icons/ocaml/ocaml-plain.svg b/icons/ocaml/ocaml-plain.svg
index a575628d5..adb977008 100644
--- a/icons/ocaml/ocaml-plain.svg
+++ b/icons/ocaml/ocaml-plain.svg
@@ -1 +1 @@
-
+
\ No newline at end of file
diff --git a/icons/oracle/oracle-original.svg b/icons/oracle/oracle-original.svg
index bd03c5787..f42012387 100644
--- a/icons/oracle/oracle-original.svg
+++ b/icons/oracle/oracle-original.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/perl/perl-original.svg b/icons/perl/perl-original.svg
index bcb423985..49f367388 100644
--- a/icons/perl/perl-original.svg
+++ b/icons/perl/perl-original.svg
@@ -1 +1 @@
-
+
\ No newline at end of file
diff --git a/icons/perl/perl-plain.svg b/icons/perl/perl-plain.svg
index f250234a7..7a751b19a 100644
--- a/icons/perl/perl-plain.svg
+++ b/icons/perl/perl-plain.svg
@@ -1 +1 @@
-
+
\ No newline at end of file
diff --git a/icons/phoenix/phoenix-original-wordmark.svg b/icons/phoenix/phoenix-original-wordmark.svg
index ea9e714a1..606711138 100644
--- a/icons/phoenix/phoenix-original-wordmark.svg
+++ b/icons/phoenix/phoenix-original-wordmark.svg
@@ -1 +1 @@
-
+
\ No newline at end of file
diff --git a/icons/phoenix/phoenix-original.svg b/icons/phoenix/phoenix-original.svg
index 454257853..ccafa07bb 100644
--- a/icons/phoenix/phoenix-original.svg
+++ b/icons/phoenix/phoenix-original.svg
@@ -1 +1 @@
-
+
\ No newline at end of file
diff --git a/icons/phoenix/phoenix-plain-wordmark.svg b/icons/phoenix/phoenix-plain-wordmark.svg
index ebe1d8420..6f7306392 100644
--- a/icons/phoenix/phoenix-plain-wordmark.svg
+++ b/icons/phoenix/phoenix-plain-wordmark.svg
@@ -1 +1 @@
-
+
\ No newline at end of file
diff --git a/icons/phoenix/phoenix-plain.svg b/icons/phoenix/phoenix-plain.svg
index e430b43a6..989045190 100644
--- a/icons/phoenix/phoenix-plain.svg
+++ b/icons/phoenix/phoenix-plain.svg
@@ -1 +1 @@
-
+
\ No newline at end of file
diff --git a/icons/photoshop/photoshop-line.svg b/icons/photoshop/photoshop-line.svg
index d7f5b262c..34dcef56b 100644
--- a/icons/photoshop/photoshop-line.svg
+++ b/icons/photoshop/photoshop-line.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/photoshop/photoshop-plain.svg b/icons/photoshop/photoshop-plain.svg
index 804d6ac86..8c55211cc 100644
--- a/icons/photoshop/photoshop-plain.svg
+++ b/icons/photoshop/photoshop-plain.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/php/php-original.svg b/icons/php/php-original.svg
index cd97f4abd..0212714ff 100644
--- a/icons/php/php-original.svg
+++ b/icons/php/php-original.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/php/php-plain.svg b/icons/php/php-plain.svg
index 57af3e565..bd9a22a9c 100644
--- a/icons/php/php-plain.svg
+++ b/icons/php/php-plain.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/phpstorm/phpstorm-original-wordmark.svg b/icons/phpstorm/phpstorm-original-wordmark.svg
index 091a97627..f52232b6f 100644
--- a/icons/phpstorm/phpstorm-original-wordmark.svg
+++ b/icons/phpstorm/phpstorm-original-wordmark.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/phpstorm/phpstorm-original.svg b/icons/phpstorm/phpstorm-original.svg
index 102171fc1..5dd82f5a6 100644
--- a/icons/phpstorm/phpstorm-original.svg
+++ b/icons/phpstorm/phpstorm-original.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/phpstorm/phpstorm-plain-wordmark.svg b/icons/phpstorm/phpstorm-plain-wordmark.svg
index 3b1c115c6..0011c00c8 100644
--- a/icons/phpstorm/phpstorm-plain-wordmark.svg
+++ b/icons/phpstorm/phpstorm-plain-wordmark.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/phpstorm/phpstorm-plain.svg b/icons/phpstorm/phpstorm-plain.svg
index bb55426a1..c5576fed0 100644
--- a/icons/phpstorm/phpstorm-plain.svg
+++ b/icons/phpstorm/phpstorm-plain.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/postgresql/postgresql-original-wordmark.svg b/icons/postgresql/postgresql-original-wordmark.svg
index bd2103e60..af195d491 100644
--- a/icons/postgresql/postgresql-original-wordmark.svg
+++ b/icons/postgresql/postgresql-original-wordmark.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/postgresql/postgresql-original.svg b/icons/postgresql/postgresql-original.svg
index e401be890..4656cb79a 100644
--- a/icons/postgresql/postgresql-original.svg
+++ b/icons/postgresql/postgresql-original.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/postgresql/postgresql-plain-wordmark.svg b/icons/postgresql/postgresql-plain-wordmark.svg
index 6d57cf924..80a5ef070 100644
--- a/icons/postgresql/postgresql-plain-wordmark.svg
+++ b/icons/postgresql/postgresql-plain-wordmark.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/postgresql/postgresql-plain.svg b/icons/postgresql/postgresql-plain.svg
index 762622024..6e05342b7 100644
--- a/icons/postgresql/postgresql-plain.svg
+++ b/icons/postgresql/postgresql-plain.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/premierepro/premierepro-original.svg b/icons/premierepro/premierepro-original.svg
index fbc7c3fd2..65e8af834 100644
--- a/icons/premierepro/premierepro-original.svg
+++ b/icons/premierepro/premierepro-original.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/premierepro/premierepro-plain.svg b/icons/premierepro/premierepro-plain.svg
index bbd771a9d..ef022f38d 100644
--- a/icons/premierepro/premierepro-plain.svg
+++ b/icons/premierepro/premierepro-plain.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/protractor/protractor-plain-wordmark.svg b/icons/protractor/protractor-plain-wordmark.svg
index 3ccb485cf..1e2c636d8 100644
--- a/icons/protractor/protractor-plain-wordmark.svg
+++ b/icons/protractor/protractor-plain-wordmark.svg
@@ -1,39 +1 @@
-
-
-
-
-
+
\ No newline at end of file
diff --git a/icons/protractor/protractor-plain.svg b/icons/protractor/protractor-plain.svg
index bc0ccac6a..6d613ad4f 100644
--- a/icons/protractor/protractor-plain.svg
+++ b/icons/protractor/protractor-plain.svg
@@ -1,10 +1 @@
-
-
-
-
-
+
\ No newline at end of file
diff --git a/icons/pycharm/pycharm-original-wordmark.svg b/icons/pycharm/pycharm-original-wordmark.svg
index 18814f920..65a75e0f7 100644
--- a/icons/pycharm/pycharm-original-wordmark.svg
+++ b/icons/pycharm/pycharm-original-wordmark.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/pycharm/pycharm-original.svg b/icons/pycharm/pycharm-original.svg
index 84b86eff2..a31edddfc 100644
--- a/icons/pycharm/pycharm-original.svg
+++ b/icons/pycharm/pycharm-original.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/pycharm/pycharm-plain-wordmark.svg b/icons/pycharm/pycharm-plain-wordmark.svg
index d48472a0f..c932b817e 100644
--- a/icons/pycharm/pycharm-plain-wordmark.svg
+++ b/icons/pycharm/pycharm-plain-wordmark.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/pycharm/pycharm-plain.svg b/icons/pycharm/pycharm-plain.svg
index cfa07b119..f48287073 100644
--- a/icons/pycharm/pycharm-plain.svg
+++ b/icons/pycharm/pycharm-plain.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/python/python-original-wordmark.svg b/icons/python/python-original-wordmark.svg
index 87b5f28d6..ab626efae 100644
--- a/icons/python/python-original-wordmark.svg
+++ b/icons/python/python-original-wordmark.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/python/python-original.svg b/icons/python/python-original.svg
index a6f9780b5..f3aba9796 100644
--- a/icons/python/python-original.svg
+++ b/icons/python/python-original.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/python/python-plain-wordmark.svg b/icons/python/python-plain-wordmark.svg
index dbe7fc2ff..c631a952a 100644
--- a/icons/python/python-plain-wordmark.svg
+++ b/icons/python/python-plain-wordmark.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/python/python-plain.svg b/icons/python/python-plain.svg
index f18c067ea..bde3773ec 100644
--- a/icons/python/python-plain.svg
+++ b/icons/python/python-plain.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/r/r-original.svg b/icons/r/r-original.svg
index 092e55164..7c68a98d8 100644
--- a/icons/r/r-original.svg
+++ b/icons/r/r-original.svg
@@ -1,15 +1 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
\ No newline at end of file
diff --git a/icons/r/r-plain.svg b/icons/r/r-plain.svg
index 1762047ca..10b092ae2 100644
--- a/icons/r/r-plain.svg
+++ b/icons/r/r-plain.svg
@@ -1,7 +1 @@
-
-
-
-
-
-
-
+
\ No newline at end of file
diff --git a/icons/rails/rails-original-wordmark.svg b/icons/rails/rails-original-wordmark.svg
index 7fd12ad0a..7e337a103 100644
--- a/icons/rails/rails-original-wordmark.svg
+++ b/icons/rails/rails-original-wordmark.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/rails/rails-plain-wordmark.svg b/icons/rails/rails-plain-wordmark.svg
index 84429c24f..388f77613 100644
--- a/icons/rails/rails-plain-wordmark.svg
+++ b/icons/rails/rails-plain-wordmark.svg
@@ -1 +1 @@
-
+
\ No newline at end of file
diff --git a/icons/rails/rails-plain.svg b/icons/rails/rails-plain.svg
index d43f6ecb9..a1ca50967 100644
--- a/icons/rails/rails-plain.svg
+++ b/icons/rails/rails-plain.svg
@@ -1 +1 @@
-
+
\ No newline at end of file
diff --git a/icons/react/react-original-wordmark.svg b/icons/react/react-original-wordmark.svg
index 36785b924..5bdae0af3 100644
--- a/icons/react/react-original-wordmark.svg
+++ b/icons/react/react-original-wordmark.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/react/react-original.svg b/icons/react/react-original.svg
index 6a115f527..9af92b9dd 100644
--- a/icons/react/react-original.svg
+++ b/icons/react/react-original.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/redhat/redhat-original-wordmark.svg b/icons/redhat/redhat-original-wordmark.svg
index 58c9b3dd1..15b9b7ded 100644
--- a/icons/redhat/redhat-original-wordmark.svg
+++ b/icons/redhat/redhat-original-wordmark.svg
@@ -1 +1 @@
-
+
\ No newline at end of file
diff --git a/icons/redhat/redhat-original.svg b/icons/redhat/redhat-original.svg
index b1e45878f..7139ce85b 100644
--- a/icons/redhat/redhat-original.svg
+++ b/icons/redhat/redhat-original.svg
@@ -1 +1 @@
-
+
\ No newline at end of file
diff --git a/icons/redhat/redhat-plain-wordmark.svg b/icons/redhat/redhat-plain-wordmark.svg
index c9ee346e6..34cc5b029 100644
--- a/icons/redhat/redhat-plain-wordmark.svg
+++ b/icons/redhat/redhat-plain-wordmark.svg
@@ -1 +1 @@
-
+
\ No newline at end of file
diff --git a/icons/redhat/redhat-plain.svg b/icons/redhat/redhat-plain.svg
index 05d656d77..449b23b59 100644
--- a/icons/redhat/redhat-plain.svg
+++ b/icons/redhat/redhat-plain.svg
@@ -1 +1 @@
-
+
\ No newline at end of file
diff --git a/icons/redis/redis-original-wordmark.svg b/icons/redis/redis-original-wordmark.svg
index 1c9774615..7b84ba84d 100644
--- a/icons/redis/redis-original-wordmark.svg
+++ b/icons/redis/redis-original-wordmark.svg
@@ -1 +1 @@
-
+
\ No newline at end of file
diff --git a/icons/redis/redis-original.svg b/icons/redis/redis-original.svg
index fec95a9bd..7aabb0dd0 100644
--- a/icons/redis/redis-original.svg
+++ b/icons/redis/redis-original.svg
@@ -1 +1 @@
-
+
\ No newline at end of file
diff --git a/icons/redis/redis-plain-wordmark.svg b/icons/redis/redis-plain-wordmark.svg
index c3cff7e7a..805ed04e4 100644
--- a/icons/redis/redis-plain-wordmark.svg
+++ b/icons/redis/redis-plain-wordmark.svg
@@ -1 +1 @@
-
+
\ No newline at end of file
diff --git a/icons/redis/redis-plain.svg b/icons/redis/redis-plain.svg
index f6ec1670f..b73f1f118 100644
--- a/icons/redis/redis-plain.svg
+++ b/icons/redis/redis-plain.svg
@@ -1 +1 @@
-
+
\ No newline at end of file
diff --git a/icons/redux/redux-original.svg b/icons/redux/redux-original.svg
index ffecd692f..f0690ecdc 100644
--- a/icons/redux/redux-original.svg
+++ b/icons/redux/redux-original.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/rocksdb/rocksdb-plain.svg b/icons/rocksdb/rocksdb-plain.svg
index 8394b0aec..e7c0cb10c 100644
--- a/icons/rocksdb/rocksdb-plain.svg
+++ b/icons/rocksdb/rocksdb-plain.svg
@@ -1,61 +1 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
+
\ No newline at end of file
diff --git a/icons/ruby/ruby-original-wordmark.svg b/icons/ruby/ruby-original-wordmark.svg
index cd27d12a5..ef01c3f0f 100644
--- a/icons/ruby/ruby-original-wordmark.svg
+++ b/icons/ruby/ruby-original-wordmark.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/ruby/ruby-original.svg b/icons/ruby/ruby-original.svg
index da47c63dc..9c651106b 100644
--- a/icons/ruby/ruby-original.svg
+++ b/icons/ruby/ruby-original.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/ruby/ruby-plain-wordmark.svg b/icons/ruby/ruby-plain-wordmark.svg
index e5983a64f..97b874efd 100644
--- a/icons/ruby/ruby-plain-wordmark.svg
+++ b/icons/ruby/ruby-plain-wordmark.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/ruby/ruby-plain.svg b/icons/ruby/ruby-plain.svg
index 2b5b5e7c1..508edc3e8 100644
--- a/icons/ruby/ruby-plain.svg
+++ b/icons/ruby/ruby-plain.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/rubymine/rubymine-original-wordmark.svg b/icons/rubymine/rubymine-original-wordmark.svg
index 77f5a8009..44a75fdf8 100644
--- a/icons/rubymine/rubymine-original-wordmark.svg
+++ b/icons/rubymine/rubymine-original-wordmark.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/rubymine/rubymine-original.svg b/icons/rubymine/rubymine-original.svg
index fd57fd529..ee95e4207 100644
--- a/icons/rubymine/rubymine-original.svg
+++ b/icons/rubymine/rubymine-original.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/rubymine/rubymine-plain-wordmark.svg b/icons/rubymine/rubymine-plain-wordmark.svg
index 9aecf4899..46814ae5f 100644
--- a/icons/rubymine/rubymine-plain-wordmark.svg
+++ b/icons/rubymine/rubymine-plain-wordmark.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/rubymine/rubymine-plain.svg b/icons/rubymine/rubymine-plain.svg
index ac3a8c748..b6a97324a 100644
--- a/icons/rubymine/rubymine-plain.svg
+++ b/icons/rubymine/rubymine-plain.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/rust/rust-plain.svg b/icons/rust/rust-plain.svg
index 15fbbe43a..a1fe0d869 100644
--- a/icons/rust/rust-plain.svg
+++ b/icons/rust/rust-plain.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/safari/safari-line-wordmark.svg b/icons/safari/safari-line-wordmark.svg
index d00dfc0c0..e0f6b5f8d 100644
--- a/icons/safari/safari-line-wordmark.svg
+++ b/icons/safari/safari-line-wordmark.svg
@@ -1 +1 @@
-
+
\ No newline at end of file
diff --git a/icons/safari/safari-line.svg b/icons/safari/safari-line.svg
index 9924478fb..2fb093247 100644
--- a/icons/safari/safari-line.svg
+++ b/icons/safari/safari-line.svg
@@ -1 +1 @@
-
+
\ No newline at end of file
diff --git a/icons/safari/safari-original-wordmark.svg b/icons/safari/safari-original-wordmark.svg
index 3ad5f82b1..3d51bfc6b 100644
--- a/icons/safari/safari-original-wordmark.svg
+++ b/icons/safari/safari-original-wordmark.svg
@@ -1 +1 @@
-Safari
+Safari
\ No newline at end of file
diff --git a/icons/safari/safari-original.svg b/icons/safari/safari-original.svg
index cc6f8f20d..0652071e7 100644
--- a/icons/safari/safari-original.svg
+++ b/icons/safari/safari-original.svg
@@ -1 +1 @@
-
+
\ No newline at end of file
diff --git a/icons/safari/safari-plain-wordmark.svg b/icons/safari/safari-plain-wordmark.svg
index 998e8eab6..af6118f9d 100644
--- a/icons/safari/safari-plain-wordmark.svg
+++ b/icons/safari/safari-plain-wordmark.svg
@@ -1 +1 @@
-
+
\ No newline at end of file
diff --git a/icons/safari/safari-plain.svg b/icons/safari/safari-plain.svg
index 02a1ec9a8..8652e04fa 100644
--- a/icons/safari/safari-plain.svg
+++ b/icons/safari/safari-plain.svg
@@ -1 +1 @@
-
+
\ No newline at end of file
diff --git a/icons/sass/sass-original.svg b/icons/sass/sass-original.svg
index 33ec3804f..4ca44ff6d 100644
--- a/icons/sass/sass-original.svg
+++ b/icons/sass/sass-original.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/scala/scala-original-wordmark.svg b/icons/scala/scala-original-wordmark.svg
index ba79fb9d6..72b2638fe 100644
--- a/icons/scala/scala-original-wordmark.svg
+++ b/icons/scala/scala-original-wordmark.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/scala/scala-original.svg b/icons/scala/scala-original.svg
index 3fb7a9d42..6d3fd54a0 100644
--- a/icons/scala/scala-original.svg
+++ b/icons/scala/scala-original.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/scala/scala-plain-wordmark.svg b/icons/scala/scala-plain-wordmark.svg
index f2411e5c7..7af542f44 100644
--- a/icons/scala/scala-plain-wordmark.svg
+++ b/icons/scala/scala-plain-wordmark.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/scala/scala-plain.svg b/icons/scala/scala-plain.svg
index 67b3f45b5..8f3e3bf32 100644
--- a/icons/scala/scala-plain.svg
+++ b/icons/scala/scala-plain.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/sequelize/sequelize-original-wordmark.svg b/icons/sequelize/sequelize-original-wordmark.svg
index 2bd34447c..1fe29cfdf 100644
--- a/icons/sequelize/sequelize-original-wordmark.svg
+++ b/icons/sequelize/sequelize-original-wordmark.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/sequelize/sequelize-original.svg b/icons/sequelize/sequelize-original.svg
index 5200fa8bc..c8376bb8f 100644
--- a/icons/sequelize/sequelize-original.svg
+++ b/icons/sequelize/sequelize-original.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/sequelize/sequelize-plain-wordmark.svg b/icons/sequelize/sequelize-plain-wordmark.svg
index 36a6296ab..c627048ca 100644
--- a/icons/sequelize/sequelize-plain-wordmark.svg
+++ b/icons/sequelize/sequelize-plain-wordmark.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/sequelize/sequelize-plain.svg b/icons/sequelize/sequelize-plain.svg
index 38872350c..955088f3d 100644
--- a/icons/sequelize/sequelize-plain.svg
+++ b/icons/sequelize/sequelize-plain.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/sketch/sketch-line-wordmark.svg b/icons/sketch/sketch-line-wordmark.svg
index 53f5690ee..d032c934f 100644
--- a/icons/sketch/sketch-line-wordmark.svg
+++ b/icons/sketch/sketch-line-wordmark.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/sketch/sketch-line.svg b/icons/sketch/sketch-line.svg
index f4e94fda1..70fbb6bba 100644
--- a/icons/sketch/sketch-line.svg
+++ b/icons/sketch/sketch-line.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/sketch/sketch-original-wordmark.svg b/icons/sketch/sketch-original-wordmark.svg
index 2d3cceec7..e109bdd95 100644
--- a/icons/sketch/sketch-original-wordmark.svg
+++ b/icons/sketch/sketch-original-wordmark.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/sketch/sketch-original.svg b/icons/sketch/sketch-original.svg
index 4be21ee21..6cdc9099a 100644
--- a/icons/sketch/sketch-original.svg
+++ b/icons/sketch/sketch-original.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/slack/slack-original-wordmark.svg b/icons/slack/slack-original-wordmark.svg
index 114ca01df..05c5ad5ae 100644
--- a/icons/slack/slack-original-wordmark.svg
+++ b/icons/slack/slack-original-wordmark.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/slack/slack-original.svg b/icons/slack/slack-original.svg
index 31f76a3f0..3738a85dd 100644
--- a/icons/slack/slack-original.svg
+++ b/icons/slack/slack-original.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/slack/slack-plain-wordmark.svg b/icons/slack/slack-plain-wordmark.svg
index 1f9abb52c..0c3c980bf 100644
--- a/icons/slack/slack-plain-wordmark.svg
+++ b/icons/slack/slack-plain-wordmark.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/slack/slack-plain.svg b/icons/slack/slack-plain.svg
index f3d7042e0..a6e39e146 100644
--- a/icons/slack/slack-plain.svg
+++ b/icons/slack/slack-plain.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/sourcetree/sourcetree-original-wordmark.svg b/icons/sourcetree/sourcetree-original-wordmark.svg
index 2345c022d..f0c7b43b5 100644
--- a/icons/sourcetree/sourcetree-original-wordmark.svg
+++ b/icons/sourcetree/sourcetree-original-wordmark.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/sourcetree/sourcetree-original.svg b/icons/sourcetree/sourcetree-original.svg
index 2d5207f07..73c713e12 100644
--- a/icons/sourcetree/sourcetree-original.svg
+++ b/icons/sourcetree/sourcetree-original.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/spring/spring-original-wordmark.svg b/icons/spring/spring-original-wordmark.svg
index edb66d332..9bcff2e92 100644
--- a/icons/spring/spring-original-wordmark.svg
+++ b/icons/spring/spring-original-wordmark.svg
@@ -1,40 +1 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
\ No newline at end of file
diff --git a/icons/spring/spring-original.svg b/icons/spring/spring-original.svg
index cd48f02aa..02def25bc 100644
--- a/icons/spring/spring-original.svg
+++ b/icons/spring/spring-original.svg
@@ -1,3 +1 @@
-
-
-
+
\ No newline at end of file
diff --git a/icons/spring/spring-plain-wordmark.svg b/icons/spring/spring-plain-wordmark.svg
index 0c002f425..f50329d71 100644
--- a/icons/spring/spring-plain-wordmark.svg
+++ b/icons/spring/spring-plain-wordmark.svg
@@ -1,40 +1 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
\ No newline at end of file
diff --git a/icons/spring/spring-plain.svg b/icons/spring/spring-plain.svg
index 1ee809368..f275fe2df 100644
--- a/icons/spring/spring-plain.svg
+++ b/icons/spring/spring-plain.svg
@@ -1,3 +1 @@
-
-
-
+
\ No newline at end of file
diff --git a/icons/sqlalchemy/sqlalchemy-original-wordmark.svg b/icons/sqlalchemy/sqlalchemy-original-wordmark.svg
index 6396baa47..61c5d6fca 100644
--- a/icons/sqlalchemy/sqlalchemy-original-wordmark.svg
+++ b/icons/sqlalchemy/sqlalchemy-original-wordmark.svg
@@ -1,127 +1 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
\ No newline at end of file
diff --git a/icons/sqlalchemy/sqlalchemy-original.svg b/icons/sqlalchemy/sqlalchemy-original.svg
index b16dc43ea..ff633fffc 100644
--- a/icons/sqlalchemy/sqlalchemy-original.svg
+++ b/icons/sqlalchemy/sqlalchemy-original.svg
@@ -1,33 +1 @@
-
-
-
-
-
-
-
-
-
+
\ No newline at end of file
diff --git a/icons/sqlalchemy/sqlalchemy-plain.svg b/icons/sqlalchemy/sqlalchemy-plain.svg
index 43dd252d6..0cc142160 100644
--- a/icons/sqlalchemy/sqlalchemy-plain.svg
+++ b/icons/sqlalchemy/sqlalchemy-plain.svg
@@ -1,9 +1 @@
-
-
-
-
-
-
-
-
-
+
\ No newline at end of file
diff --git a/icons/ssh/ssh-original-wordmark.svg b/icons/ssh/ssh-original-wordmark.svg
index 7583c6f1b..446062f78 100644
--- a/icons/ssh/ssh-original-wordmark.svg
+++ b/icons/ssh/ssh-original-wordmark.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/ssh/ssh-original.svg b/icons/ssh/ssh-original.svg
index ae52eb3e1..1a8f51f77 100644
--- a/icons/ssh/ssh-original.svg
+++ b/icons/ssh/ssh-original.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/stylus/stylus-original.svg b/icons/stylus/stylus-original.svg
index 0c4b010c4..0e0b2329f 100644
--- a/icons/stylus/stylus-original.svg
+++ b/icons/stylus/stylus-original.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/swift/swift-original-wordmark.svg b/icons/swift/swift-original-wordmark.svg
index 59012e320..bd0dbfdff 100644
--- a/icons/swift/swift-original-wordmark.svg
+++ b/icons/swift/swift-original-wordmark.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/swift/swift-original.svg b/icons/swift/swift-original.svg
index e6cd8c20c..68630abe0 100644
--- a/icons/swift/swift-original.svg
+++ b/icons/swift/swift-original.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/swift/swift-plain-wordmark.svg b/icons/swift/swift-plain-wordmark.svg
index ada93e832..1b2fc6ad3 100644
--- a/icons/swift/swift-plain-wordmark.svg
+++ b/icons/swift/swift-plain-wordmark.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/swift/swift-plain.svg b/icons/swift/swift-plain.svg
index f9b82dcd7..3ee4c1e0f 100644
--- a/icons/swift/swift-plain.svg
+++ b/icons/swift/swift-plain.svg
@@ -1 +1 @@
-Artboard 5
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/symfony/symfony-original-wordmark.svg b/icons/symfony/symfony-original-wordmark.svg
index 3af86fa55..0529ad7e7 100644
--- a/icons/symfony/symfony-original-wordmark.svg
+++ b/icons/symfony/symfony-original-wordmark.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/symfony/symfony-original.svg b/icons/symfony/symfony-original.svg
index e4d9415c3..fb7b8fd10 100644
--- a/icons/symfony/symfony-original.svg
+++ b/icons/symfony/symfony-original.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/tensorflow/tensorflow-line-wordmark.svg b/icons/tensorflow/tensorflow-line-wordmark.svg
index 312e13e2f..0946fc24c 100644
--- a/icons/tensorflow/tensorflow-line-wordmark.svg
+++ b/icons/tensorflow/tensorflow-line-wordmark.svg
@@ -1,160 +1 @@
-
-
-
-
-
- image/svg+xml
-
-
-
-
-
-
-
-
- TensorFlow
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+TensorFlow
\ No newline at end of file
diff --git a/icons/tensorflow/tensorflow-line.svg b/icons/tensorflow/tensorflow-line.svg
index d58a400a5..724a360df 100644
--- a/icons/tensorflow/tensorflow-line.svg
+++ b/icons/tensorflow/tensorflow-line.svg
@@ -1,79 +1 @@
-
-
-
-
-
- image/svg+xml
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
\ No newline at end of file
diff --git a/icons/tensorflow/tensorflow-original-wordmark.svg b/icons/tensorflow/tensorflow-original-wordmark.svg
index c15ad4312..c2fb50cdc 100644
--- a/icons/tensorflow/tensorflow-original-wordmark.svg
+++ b/icons/tensorflow/tensorflow-original-wordmark.svg
@@ -1,150 +1 @@
-
-
-
-
-
- image/svg+xml
-
-
-
-
-
-
-
-
- TensorFlow
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+TensorFlow
\ No newline at end of file
diff --git a/icons/tensorflow/tensorflow-original.svg b/icons/tensorflow/tensorflow-original.svg
index d6ddd7a00..bc2495409 100644
--- a/icons/tensorflow/tensorflow-original.svg
+++ b/icons/tensorflow/tensorflow-original.svg
@@ -1,70 +1 @@
-
-
-
-
-
- image/svg+xml
-
-
-
-
-
-
-
-
-
-
-
-
-
+
\ No newline at end of file
diff --git a/icons/thealgorithms/thealgorithms-original-wordmark.svg b/icons/thealgorithms/thealgorithms-original-wordmark.svg
index 46bfdd5a8..81213c0a3 100644
--- a/icons/thealgorithms/thealgorithms-original-wordmark.svg
+++ b/icons/thealgorithms/thealgorithms-original-wordmark.svg
@@ -1,51 +1 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
\ No newline at end of file
diff --git a/icons/thealgorithms/thealgorithms-original.svg b/icons/thealgorithms/thealgorithms-original.svg
index 40106fec4..7f7508dc5 100644
--- a/icons/thealgorithms/thealgorithms-original.svg
+++ b/icons/thealgorithms/thealgorithms-original.svg
@@ -1,12 +1 @@
-
-
-
-
-
-
+
\ No newline at end of file
diff --git a/icons/thealgorithms/thealgorithms-plain-wordmark.svg b/icons/thealgorithms/thealgorithms-plain-wordmark.svg
index 7b35bb50e..2013133e0 100644
--- a/icons/thealgorithms/thealgorithms-plain-wordmark.svg
+++ b/icons/thealgorithms/thealgorithms-plain-wordmark.svg
@@ -1,51 +1 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
\ No newline at end of file
diff --git a/icons/thealgorithms/thealgorithms-plain.svg b/icons/thealgorithms/thealgorithms-plain.svg
index f6def98b0..4426a3e36 100644
--- a/icons/thealgorithms/thealgorithms-plain.svg
+++ b/icons/thealgorithms/thealgorithms-plain.svg
@@ -1,12 +1 @@
-
-
-
-
-
-
+
\ No newline at end of file
diff --git a/icons/tomcat/tomcat-line-wordmark.svg b/icons/tomcat/tomcat-line-wordmark.svg
index 09a6e0f41..d33b68548 100644
--- a/icons/tomcat/tomcat-line-wordmark.svg
+++ b/icons/tomcat/tomcat-line-wordmark.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/tomcat/tomcat-line.svg b/icons/tomcat/tomcat-line.svg
index 80bc362a1..641702054 100644
--- a/icons/tomcat/tomcat-line.svg
+++ b/icons/tomcat/tomcat-line.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/tomcat/tomcat-original-wordmark.svg b/icons/tomcat/tomcat-original-wordmark.svg
index c5e23d258..c9dde2201 100644
--- a/icons/tomcat/tomcat-original-wordmark.svg
+++ b/icons/tomcat/tomcat-original-wordmark.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/tomcat/tomcat-original.svg b/icons/tomcat/tomcat-original.svg
index b4a6c5b63..4466bbdb6 100644
--- a/icons/tomcat/tomcat-original.svg
+++ b/icons/tomcat/tomcat-original.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/travis/travis-plain-wordmark.svg b/icons/travis/travis-plain-wordmark.svg
index 4ba417f64..41473bfe1 100644
--- a/icons/travis/travis-plain-wordmark.svg
+++ b/icons/travis/travis-plain-wordmark.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/travis/travis-plain.svg b/icons/travis/travis-plain.svg
index b754a1c76..411c4f1bc 100644
--- a/icons/travis/travis-plain.svg
+++ b/icons/travis/travis-plain.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/trello/trello-plain-wordmark.svg b/icons/trello/trello-plain-wordmark.svg
index bfacba52a..073d8b472 100644
--- a/icons/trello/trello-plain-wordmark.svg
+++ b/icons/trello/trello-plain-wordmark.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/trello/trello-plain.svg b/icons/trello/trello-plain.svg
index b9153636d..c550664f0 100644
--- a/icons/trello/trello-plain.svg
+++ b/icons/trello/trello-plain.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/twitter/twitter-original.svg b/icons/twitter/twitter-original.svg
index 84a8578e3..2ac8e1354 100644
--- a/icons/twitter/twitter-original.svg
+++ b/icons/twitter/twitter-original.svg
@@ -1,6 +1 @@
-
-
-
-
-
-
+
\ No newline at end of file
diff --git a/icons/typescript/typescript-original.svg b/icons/typescript/typescript-original.svg
index 0d7b01130..e1db5f196 100644
--- a/icons/typescript/typescript-original.svg
+++ b/icons/typescript/typescript-original.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/typescript/typescript-plain.svg b/icons/typescript/typescript-plain.svg
index ec67184a7..2d227c30b 100644
--- a/icons/typescript/typescript-plain.svg
+++ b/icons/typescript/typescript-plain.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/typo3/typo3-original-wordmark.svg b/icons/typo3/typo3-original-wordmark.svg
index 51e25f575..35a23ace0 100644
--- a/icons/typo3/typo3-original-wordmark.svg
+++ b/icons/typo3/typo3-original-wordmark.svg
@@ -1 +1 @@
-
+
\ No newline at end of file
diff --git a/icons/typo3/typo3-original.svg b/icons/typo3/typo3-original.svg
index 4316b9af7..4d4439f4b 100644
--- a/icons/typo3/typo3-original.svg
+++ b/icons/typo3/typo3-original.svg
@@ -1 +1 @@
-
+
\ No newline at end of file
diff --git a/icons/typo3/typo3-plain-wordmark.svg b/icons/typo3/typo3-plain-wordmark.svg
index c67eaf6f2..237cf2882 100644
--- a/icons/typo3/typo3-plain-wordmark.svg
+++ b/icons/typo3/typo3-plain-wordmark.svg
@@ -1 +1 @@
-
+
\ No newline at end of file
diff --git a/icons/typo3/typo3-plain.svg b/icons/typo3/typo3-plain.svg
index 8a18a5b7e..5bff56d06 100644
--- a/icons/typo3/typo3-plain.svg
+++ b/icons/typo3/typo3-plain.svg
@@ -1 +1 @@
-
+
\ No newline at end of file
diff --git a/icons/ubuntu/ubuntu-plain-wordmark.svg b/icons/ubuntu/ubuntu-plain-wordmark.svg
index 1f72ed95a..796d1382c 100644
--- a/icons/ubuntu/ubuntu-plain-wordmark.svg
+++ b/icons/ubuntu/ubuntu-plain-wordmark.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/ubuntu/ubuntu-plain.svg b/icons/ubuntu/ubuntu-plain.svg
index 7010512cc..4798fa84a 100644
--- a/icons/ubuntu/ubuntu-plain.svg
+++ b/icons/ubuntu/ubuntu-plain.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/uwsgi/uwsgi-original.svg b/icons/uwsgi/uwsgi-original.svg
index c726994bd..a87898f82 100644
--- a/icons/uwsgi/uwsgi-original.svg
+++ b/icons/uwsgi/uwsgi-original.svg
@@ -1,35 +1 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
\ No newline at end of file
diff --git a/icons/uwsgi/uwsgi-plain.svg b/icons/uwsgi/uwsgi-plain.svg
index b00d7cd27..9fb641986 100644
--- a/icons/uwsgi/uwsgi-plain.svg
+++ b/icons/uwsgi/uwsgi-plain.svg
@@ -1,33 +1 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
\ No newline at end of file
diff --git a/icons/vagrant/vagrant-original-wordmark.svg b/icons/vagrant/vagrant-original-wordmark.svg
index 284f52fd3..c0a096ebd 100644
--- a/icons/vagrant/vagrant-original-wordmark.svg
+++ b/icons/vagrant/vagrant-original-wordmark.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/vagrant/vagrant-original.svg b/icons/vagrant/vagrant-original.svg
index 2169e6e63..577c0477c 100644
--- a/icons/vagrant/vagrant-original.svg
+++ b/icons/vagrant/vagrant-original.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/vagrant/vagrant-plain-wordmark.svg b/icons/vagrant/vagrant-plain-wordmark.svg
index 86451aa73..6b7d0427e 100644
--- a/icons/vagrant/vagrant-plain-wordmark.svg
+++ b/icons/vagrant/vagrant-plain-wordmark.svg
@@ -1 +1 @@
-Artboard 15
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/vagrant/vagrant-plain.svg b/icons/vagrant/vagrant-plain.svg
index 314f2eed8..0f8c7b424 100644
--- a/icons/vagrant/vagrant-plain.svg
+++ b/icons/vagrant/vagrant-plain.svg
@@ -1 +1 @@
-Artboard 14
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/vim/vim-original.svg b/icons/vim/vim-original.svg
index db88f25b3..8cda94ea1 100644
--- a/icons/vim/vim-original.svg
+++ b/icons/vim/vim-original.svg
@@ -1 +1 @@
-
+
\ No newline at end of file
diff --git a/icons/vim/vim-plain.svg b/icons/vim/vim-plain.svg
index 309b6d209..ef0f5c49d 100644
--- a/icons/vim/vim-plain.svg
+++ b/icons/vim/vim-plain.svg
@@ -1 +1 @@
-
+
\ No newline at end of file
diff --git a/icons/visualstudio/visualstudio-plain-wordmark.svg b/icons/visualstudio/visualstudio-plain-wordmark.svg
index 53c5ea833..bae3817a4 100644
--- a/icons/visualstudio/visualstudio-plain-wordmark.svg
+++ b/icons/visualstudio/visualstudio-plain-wordmark.svg
@@ -1,22 +1 @@
-
-
- visualstudio
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
\ No newline at end of file
diff --git a/icons/visualstudio/visualstudio-plain.svg b/icons/visualstudio/visualstudio-plain.svg
index c443c5796..19de675c2 100644
--- a/icons/visualstudio/visualstudio-plain.svg
+++ b/icons/visualstudio/visualstudio-plain.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/vuejs/vuejs-line-wordmark.svg b/icons/vuejs/vuejs-line-wordmark.svg
index 19455d2ce..204cfa679 100644
--- a/icons/vuejs/vuejs-line-wordmark.svg
+++ b/icons/vuejs/vuejs-line-wordmark.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/vuejs/vuejs-line.svg b/icons/vuejs/vuejs-line.svg
index a449796bb..41327dd94 100644
--- a/icons/vuejs/vuejs-line.svg
+++ b/icons/vuejs/vuejs-line.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/vuejs/vuejs-original-wordmark.svg b/icons/vuejs/vuejs-original-wordmark.svg
index 8754ea491..fe87141d5 100644
--- a/icons/vuejs/vuejs-original-wordmark.svg
+++ b/icons/vuejs/vuejs-original-wordmark.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/vuejs/vuejs-original.svg b/icons/vuejs/vuejs-original.svg
index 2b8398211..27afad0c4 100644
--- a/icons/vuejs/vuejs-original.svg
+++ b/icons/vuejs/vuejs-original.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/vuejs/vuejs-plain-wordmark.svg b/icons/vuejs/vuejs-plain-wordmark.svg
index cb618d87a..5686759bf 100644
--- a/icons/vuejs/vuejs-plain-wordmark.svg
+++ b/icons/vuejs/vuejs-plain-wordmark.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/vuejs/vuejs-plain.svg b/icons/vuejs/vuejs-plain.svg
index 0c68b59ec..87a09eaac 100644
--- a/icons/vuejs/vuejs-plain.svg
+++ b/icons/vuejs/vuejs-plain.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/weblate/weblate-original-wordmark.svg b/icons/weblate/weblate-original-wordmark.svg
index 372ef8524..27ac0f7c1 100644
--- a/icons/weblate/weblate-original-wordmark.svg
+++ b/icons/weblate/weblate-original-wordmark.svg
@@ -1 +1 @@
-
+
\ No newline at end of file
diff --git a/icons/weblate/weblate-original.svg b/icons/weblate/weblate-original.svg
index e0d894a50..84956e7a2 100644
--- a/icons/weblate/weblate-original.svg
+++ b/icons/weblate/weblate-original.svg
@@ -1 +1 @@
-
+
\ No newline at end of file
diff --git a/icons/weblate/weblate-plain-wordmark.svg b/icons/weblate/weblate-plain-wordmark.svg
index ed5b11c71..bc473e0d0 100644
--- a/icons/weblate/weblate-plain-wordmark.svg
+++ b/icons/weblate/weblate-plain-wordmark.svg
@@ -1 +1 @@
-
+
\ No newline at end of file
diff --git a/icons/weblate/weblate-plain.svg b/icons/weblate/weblate-plain.svg
index 81fb4333e..24441f81f 100644
--- a/icons/weblate/weblate-plain.svg
+++ b/icons/weblate/weblate-plain.svg
@@ -1 +1 @@
-
+
\ No newline at end of file
diff --git a/icons/webpack/webpack-original-wordmark.svg b/icons/webpack/webpack-original-wordmark.svg
index af1b0eb01..cb83d0d3d 100644
--- a/icons/webpack/webpack-original-wordmark.svg
+++ b/icons/webpack/webpack-original-wordmark.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/webpack/webpack-original.svg b/icons/webpack/webpack-original.svg
index 0aed9d57a..4332b2b64 100644
--- a/icons/webpack/webpack-original.svg
+++ b/icons/webpack/webpack-original.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/webpack/webpack-plain-wordmark.svg b/icons/webpack/webpack-plain-wordmark.svg
index 3f69ceeee..8b1ba9f1b 100644
--- a/icons/webpack/webpack-plain-wordmark.svg
+++ b/icons/webpack/webpack-plain-wordmark.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/webpack/webpack-plain.svg b/icons/webpack/webpack-plain.svg
index 79ce50cae..da528c6e2 100644
--- a/icons/webpack/webpack-plain.svg
+++ b/icons/webpack/webpack-plain.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/webstorm/webstorm-original-wordmark.svg b/icons/webstorm/webstorm-original-wordmark.svg
index d7e4fe94b..095c5f881 100644
--- a/icons/webstorm/webstorm-original-wordmark.svg
+++ b/icons/webstorm/webstorm-original-wordmark.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/webstorm/webstorm-original.svg b/icons/webstorm/webstorm-original.svg
index 44ba69832..a11ba0e8f 100644
--- a/icons/webstorm/webstorm-original.svg
+++ b/icons/webstorm/webstorm-original.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/webstorm/webstorm-plain-wordmark.svg b/icons/webstorm/webstorm-plain-wordmark.svg
index 4999ae7da..f3c3aa19d 100644
--- a/icons/webstorm/webstorm-plain-wordmark.svg
+++ b/icons/webstorm/webstorm-plain-wordmark.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/webstorm/webstorm-plain.svg b/icons/webstorm/webstorm-plain.svg
index 0994a1381..ec668ad46 100644
--- a/icons/webstorm/webstorm-plain.svg
+++ b/icons/webstorm/webstorm-plain.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/windows8/windows8-original-wordmark.svg b/icons/windows8/windows8-original-wordmark.svg
index 715ad9f8d..c48c9a5c6 100644
--- a/icons/windows8/windows8-original-wordmark.svg
+++ b/icons/windows8/windows8-original-wordmark.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/windows8/windows8-original.svg b/icons/windows8/windows8-original.svg
index ab1447ad0..787d8e8f5 100644
--- a/icons/windows8/windows8-original.svg
+++ b/icons/windows8/windows8-original.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/woocommerce/woocommerce-original-wordmark.svg b/icons/woocommerce/woocommerce-original-wordmark.svg
index ffd51273c..7374b3a1f 100644
--- a/icons/woocommerce/woocommerce-original-wordmark.svg
+++ b/icons/woocommerce/woocommerce-original-wordmark.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/woocommerce/woocommerce-original.svg b/icons/woocommerce/woocommerce-original.svg
index f730c1941..0bf7de98c 100644
--- a/icons/woocommerce/woocommerce-original.svg
+++ b/icons/woocommerce/woocommerce-original.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/woocommerce/woocommerce-plain-wordmark.svg b/icons/woocommerce/woocommerce-plain-wordmark.svg
index 5b4d71054..3215a288d 100644
--- a/icons/woocommerce/woocommerce-plain-wordmark.svg
+++ b/icons/woocommerce/woocommerce-plain-wordmark.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/woocommerce/woocommerce-plain.svg b/icons/woocommerce/woocommerce-plain.svg
index 4ed039134..f9c97021c 100644
--- a/icons/woocommerce/woocommerce-plain.svg
+++ b/icons/woocommerce/woocommerce-plain.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/wordpress/wordpress-original.svg b/icons/wordpress/wordpress-original.svg
index d4226a09b..6a8dc6a98 100644
--- a/icons/wordpress/wordpress-original.svg
+++ b/icons/wordpress/wordpress-original.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/wordpress/wordpress-plain-wordmark.svg b/icons/wordpress/wordpress-plain-wordmark.svg
index df5662aa4..0342c5869 100644
--- a/icons/wordpress/wordpress-plain-wordmark.svg
+++ b/icons/wordpress/wordpress-plain-wordmark.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/wordpress/wordpress-plain.svg b/icons/wordpress/wordpress-plain.svg
index 48b778f09..a0612433d 100644
--- a/icons/wordpress/wordpress-plain.svg
+++ b/icons/wordpress/wordpress-plain.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/xd/xd-line.svg b/icons/xd/xd-line.svg
index af8f53ff3..6c34ac7e0 100644
--- a/icons/xd/xd-line.svg
+++ b/icons/xd/xd-line.svg
@@ -1,11 +1 @@
-
-
-
-
+
\ No newline at end of file
diff --git a/icons/xd/xd-plain.svg b/icons/xd/xd-plain.svg
index 9fab1c0ad..060ef59cb 100644
--- a/icons/xd/xd-plain.svg
+++ b/icons/xd/xd-plain.svg
@@ -1,8 +1 @@
-
-
-
+
\ No newline at end of file
diff --git a/icons/yarn/yarn-original-wordmark.svg b/icons/yarn/yarn-original-wordmark.svg
index b20216cf0..d790913da 100644
--- a/icons/yarn/yarn-original-wordmark.svg
+++ b/icons/yarn/yarn-original-wordmark.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/yarn/yarn-original.svg b/icons/yarn/yarn-original.svg
index 4d70a31e4..69849052a 100644
--- a/icons/yarn/yarn-original.svg
+++ b/icons/yarn/yarn-original.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/yii/yii-original-wordmark.svg b/icons/yii/yii-original-wordmark.svg
index 0861096ed..62e289ace 100644
--- a/icons/yii/yii-original-wordmark.svg
+++ b/icons/yii/yii-original-wordmark.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/yii/yii-original.svg b/icons/yii/yii-original.svg
index 8f689da30..cd2e62058 100644
--- a/icons/yii/yii-original.svg
+++ b/icons/yii/yii-original.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/yii/yii-plain-wordmark.svg b/icons/yii/yii-plain-wordmark.svg
index f4203089d..38cc726b0 100644
--- a/icons/yii/yii-plain-wordmark.svg
+++ b/icons/yii/yii-plain-wordmark.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/yii/yii-plain.svg b/icons/yii/yii-plain.svg
index 42b9f5871..df197551f 100644
--- a/icons/yii/yii-plain.svg
+++ b/icons/yii/yii-plain.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/yunohost/yunohost-original.svg b/icons/yunohost/yunohost-original.svg
index 8c9e5081c..2cf78384e 100644
--- a/icons/yunohost/yunohost-original.svg
+++ b/icons/yunohost/yunohost-original.svg
@@ -1,79 +1 @@
-
-
-
-
-
-
-
-
-
- image/svg+xml
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
\ No newline at end of file
diff --git a/icons/yunohost/yunohost-plain.svg b/icons/yunohost/yunohost-plain.svg
index e2d56ffa0..263b830cb 100644
--- a/icons/yunohost/yunohost-plain.svg
+++ b/icons/yunohost/yunohost-plain.svg
@@ -1,16 +1 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
\ No newline at end of file
diff --git a/icons/zend/zend-plain-wordmark.svg b/icons/zend/zend-plain-wordmark.svg
index cd0058e7d..f09926638 100644
--- a/icons/zend/zend-plain-wordmark.svg
+++ b/icons/zend/zend-plain-wordmark.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/zend/zend-plain.svg b/icons/zend/zend-plain.svg
index 578c0ba09..21ec19d07 100644
--- a/icons/zend/zend-plain.svg
+++ b/icons/zend/zend-plain.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/icons/zig/zig-original-wordmark.svg b/icons/zig/zig-original-wordmark.svg
index feff02470..e83f189be 100644
--- a/icons/zig/zig-original-wordmark.svg
+++ b/icons/zig/zig-original-wordmark.svg
@@ -1,125 +1 @@
-
-
-
-
-
- image/svg+xml
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
\ No newline at end of file
diff --git a/icons/zig/zig-original.svg b/icons/zig/zig-original.svg
index b00fb1ae9..460ec551c 100644
--- a/icons/zig/zig-original.svg
+++ b/icons/zig/zig-original.svg
@@ -1,96 +1 @@
-
-
-
-
-
- image/svg+xml
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
\ No newline at end of file
diff --git a/icons/zig/zig-plain-wordmark.svg b/icons/zig/zig-plain-wordmark.svg
index cb5a0cb3e..eae7bcd13 100644
--- a/icons/zig/zig-plain-wordmark.svg
+++ b/icons/zig/zig-plain-wordmark.svg
@@ -1,133 +1 @@
-
-
-
-
-
- image/svg+xml
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
\ No newline at end of file
diff --git a/package-lock.json b/package-lock.json
index 22d8f021c..1431b5841 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -4,6 +4,12 @@
"lockfileVersion": 1,
"requires": true,
"dependencies": {
+ "@types/q": {
+ "version": "1.5.4",
+ "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.4.tgz",
+ "integrity": "sha512-1HcDas8SEj4z1Wc696tH56G8OlRaH/sqZOynNNB+HF0WOeXPaxTtbYzJY2oEfiUxjSKjhCKr+MvR7dCHcEelug==",
+ "dev": true
+ },
"abbrev": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
@@ -148,6 +154,15 @@
}
}
},
+ "argparse": {
+ "version": "1.0.10",
+ "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
+ "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
+ "dev": true,
+ "requires": {
+ "sprintf-js": "~1.0.2"
+ }
+ },
"arr-diff": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz",
@@ -452,6 +467,12 @@
"inherits": "~2.0.0"
}
},
+ "boolbase": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz",
+ "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=",
+ "dev": true
+ },
"brace-expansion": {
"version": "1.1.11",
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
@@ -520,6 +541,16 @@
"unset-value": "^1.0.0"
}
},
+ "call-bind": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz",
+ "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==",
+ "dev": true,
+ "requires": {
+ "function-bind": "^1.1.1",
+ "get-intrinsic": "^1.0.2"
+ }
+ },
"camelcase": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz",
@@ -607,14 +638,54 @@
}
},
"cliui": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz",
- "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=",
+ "version": "7.0.4",
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz",
+ "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==",
"dev": true,
"requires": {
- "string-width": "^1.0.1",
- "strip-ansi": "^3.0.1",
- "wrap-ansi": "^2.0.0"
+ "string-width": "^4.2.0",
+ "strip-ansi": "^6.0.0",
+ "wrap-ansi": "^7.0.0"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz",
+ "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==",
+ "dev": true
+ },
+ "emoji-regex": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
+ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
+ "dev": true
+ },
+ "is-fullwidth-code-point": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
+ "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
+ "dev": true
+ },
+ "string-width": {
+ "version": "4.2.2",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz",
+ "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==",
+ "dev": true,
+ "requires": {
+ "emoji-regex": "^8.0.0",
+ "is-fullwidth-code-point": "^3.0.0",
+ "strip-ansi": "^6.0.0"
+ }
+ },
+ "strip-ansi": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz",
+ "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^5.0.0"
+ }
+ }
}
},
"clone-buffer": {
@@ -666,6 +737,48 @@
}
}
},
+ "coa": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/coa/-/coa-2.0.2.tgz",
+ "integrity": "sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA==",
+ "dev": true,
+ "requires": {
+ "@types/q": "^1.5.1",
+ "chalk": "^2.4.1",
+ "q": "^1.1.2"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+ "dev": true,
+ "requires": {
+ "color-convert": "^1.9.0"
+ }
+ },
+ "chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ }
+ },
+ "supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "dev": true,
+ "requires": {
+ "has-flag": "^3.0.0"
+ }
+ }
+ }
+ },
"code-point-at": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz",
@@ -817,6 +930,81 @@
"which": "^1.2.9"
}
},
+ "css-select": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/css-select/-/css-select-2.1.0.tgz",
+ "integrity": "sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ==",
+ "dev": true,
+ "requires": {
+ "boolbase": "^1.0.0",
+ "css-what": "^3.2.1",
+ "domutils": "^1.7.0",
+ "nth-check": "^1.0.2"
+ }
+ },
+ "css-select-base-adapter": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz",
+ "integrity": "sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w==",
+ "dev": true
+ },
+ "css-tree": {
+ "version": "1.0.0-alpha.37",
+ "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.37.tgz",
+ "integrity": "sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg==",
+ "dev": true,
+ "requires": {
+ "mdn-data": "2.0.4",
+ "source-map": "^0.6.1"
+ },
+ "dependencies": {
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "dev": true
+ }
+ }
+ },
+ "css-what": {
+ "version": "3.4.2",
+ "resolved": "https://registry.npmjs.org/css-what/-/css-what-3.4.2.tgz",
+ "integrity": "sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ==",
+ "dev": true
+ },
+ "csso": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz",
+ "integrity": "sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==",
+ "dev": true,
+ "requires": {
+ "css-tree": "^1.1.2"
+ },
+ "dependencies": {
+ "css-tree": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz",
+ "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==",
+ "dev": true,
+ "requires": {
+ "mdn-data": "2.0.14",
+ "source-map": "^0.6.1"
+ }
+ },
+ "mdn-data": {
+ "version": "2.0.14",
+ "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz",
+ "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==",
+ "dev": true
+ },
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "dev": true
+ }
+ }
+ },
"currently-unhandled": {
"version": "0.4.1",
"resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz",
@@ -957,6 +1145,40 @@
"integrity": "sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc=",
"dev": true
},
+ "dom-serializer": {
+ "version": "0.2.2",
+ "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz",
+ "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==",
+ "dev": true,
+ "requires": {
+ "domelementtype": "^2.0.1",
+ "entities": "^2.0.0"
+ },
+ "dependencies": {
+ "domelementtype": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz",
+ "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==",
+ "dev": true
+ }
+ }
+ },
+ "domelementtype": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz",
+ "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==",
+ "dev": true
+ },
+ "domutils": {
+ "version": "1.7.0",
+ "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz",
+ "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==",
+ "dev": true,
+ "requires": {
+ "dom-serializer": "0",
+ "domelementtype": "1"
+ }
+ },
"duplexify": {
"version": "3.7.1",
"resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz",
@@ -1047,6 +1269,12 @@
}
}
},
+ "entities": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz",
+ "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==",
+ "dev": true
+ },
"error-ex": {
"version": "1.3.2",
"resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz",
@@ -1056,6 +1284,61 @@
"is-arrayish": "^0.2.1"
}
},
+ "es-abstract": {
+ "version": "1.18.0",
+ "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0.tgz",
+ "integrity": "sha512-LJzK7MrQa8TS0ja2w3YNLzUgJCGPdPOV1yVvezjNnS89D+VR08+Szt2mz3YB2Dck/+w5tfIq/RoUAFqJJGM2yw==",
+ "dev": true,
+ "requires": {
+ "call-bind": "^1.0.2",
+ "es-to-primitive": "^1.2.1",
+ "function-bind": "^1.1.1",
+ "get-intrinsic": "^1.1.1",
+ "has": "^1.0.3",
+ "has-symbols": "^1.0.2",
+ "is-callable": "^1.2.3",
+ "is-negative-zero": "^2.0.1",
+ "is-regex": "^1.1.2",
+ "is-string": "^1.0.5",
+ "object-inspect": "^1.9.0",
+ "object-keys": "^1.1.1",
+ "object.assign": "^4.1.2",
+ "string.prototype.trimend": "^1.0.4",
+ "string.prototype.trimstart": "^1.0.4",
+ "unbox-primitive": "^1.0.0"
+ },
+ "dependencies": {
+ "has-symbols": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz",
+ "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==",
+ "dev": true
+ },
+ "object.assign": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz",
+ "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==",
+ "dev": true,
+ "requires": {
+ "call-bind": "^1.0.0",
+ "define-properties": "^1.1.3",
+ "has-symbols": "^1.0.1",
+ "object-keys": "^1.1.1"
+ }
+ }
+ }
+ },
+ "es-to-primitive": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz",
+ "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==",
+ "dev": true,
+ "requires": {
+ "is-callable": "^1.1.4",
+ "is-date-object": "^1.0.1",
+ "is-symbol": "^1.0.2"
+ }
+ },
"es5-ext": {
"version": "0.10.53",
"resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.53.tgz",
@@ -1100,12 +1383,24 @@
"es6-symbol": "^3.1.1"
}
},
+ "escalade": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz",
+ "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==",
+ "dev": true
+ },
"escape-string-regexp": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
"integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
"dev": true
},
+ "esprima": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
+ "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
+ "dev": true
+ },
"expand-brackets": {
"version": "2.1.4",
"resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz",
@@ -1528,11 +1823,22 @@
}
},
"get-caller-file": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz",
- "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==",
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
+ "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
"dev": true
},
+ "get-intrinsic": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz",
+ "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==",
+ "dev": true,
+ "requires": {
+ "function-bind": "^1.1.1",
+ "has": "^1.0.3",
+ "has-symbols": "^1.0.1"
+ }
+ },
"get-stdin": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz",
@@ -1716,6 +2022,23 @@
"vinyl-fs": "^3.0.0"
},
"dependencies": {
+ "cliui": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz",
+ "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=",
+ "dev": true,
+ "requires": {
+ "string-width": "^1.0.1",
+ "strip-ansi": "^3.0.1",
+ "wrap-ansi": "^2.0.0"
+ }
+ },
+ "get-caller-file": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz",
+ "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==",
+ "dev": true
+ },
"gulp-cli": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/gulp-cli/-/gulp-cli-2.3.0.tgz",
@@ -1740,6 +2063,55 @@
"semver-greatest-satisfied-range": "^1.1.0",
"v8flags": "^3.2.0",
"yargs": "^7.1.0"
+ },
+ "dependencies": {
+ "yargs": {
+ "version": "7.1.2",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-7.1.2.tgz",
+ "integrity": "sha512-ZEjj/dQYQy0Zx0lgLMLR8QuaqTihnxirir7EwUHp1Axq4e3+k8jXU5K0VLbNvedv1f4EWtBonDIZm0NUr+jCcA==",
+ "dev": true,
+ "requires": {
+ "camelcase": "^3.0.0",
+ "cliui": "^3.2.0",
+ "decamelize": "^1.1.1",
+ "get-caller-file": "^1.0.1",
+ "os-locale": "^1.4.0",
+ "read-pkg-up": "^1.0.1",
+ "require-directory": "^2.1.1",
+ "require-main-filename": "^1.0.1",
+ "set-blocking": "^2.0.0",
+ "string-width": "^1.0.2",
+ "which-module": "^1.0.0",
+ "y18n": "^3.2.1",
+ "yargs-parser": "^5.0.1"
+ }
+ }
+ }
+ },
+ "wrap-ansi": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz",
+ "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=",
+ "dev": true,
+ "requires": {
+ "string-width": "^1.0.1",
+ "strip-ansi": "^3.0.1"
+ }
+ },
+ "y18n": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.2.tgz",
+ "integrity": "sha512-uGZHXkHnhF0XeeAPgnKfPv1bgKAYyVvmNL1xlKsPYZPaIHxGti2hHqvOCQv71XMsLxu1QjergkqogUnms5D3YQ==",
+ "dev": true
+ },
+ "yargs-parser": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-5.0.1.tgz",
+ "integrity": "sha512-wpav5XYiddjXxirPoCTUPbqM0PXvJ9hiBMvuJgInvo4/lAOTZzUprArw17q2O1P2+GHhbBr18/iQwjL5Z9BqfA==",
+ "dev": true,
+ "requires": {
+ "camelcase": "^3.0.0",
+ "object.assign": "^4.1.0"
}
}
}
@@ -1821,6 +2193,16 @@
}
}
},
+ "gulp-svgmin": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/gulp-svgmin/-/gulp-svgmin-3.0.0.tgz",
+ "integrity": "sha512-z1eaUlkJVAX1bh7uNAWG+7IbEYEHBgj+MXgJDOrt05vJNplFPxq/+QonT29nzRmvdpzd04+JHsephGpfnwa95g==",
+ "dev": true,
+ "requires": {
+ "plugin-error": "^1.0.1",
+ "svgo": "^1.3.2"
+ }
+ },
"gulplog": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/gulplog/-/gulplog-1.0.0.tgz",
@@ -1846,6 +2228,15 @@
"har-schema": "^2.0.0"
}
},
+ "has": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
+ "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
+ "dev": true,
+ "requires": {
+ "function-bind": "^1.1.1"
+ }
+ },
"has-ansi": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz",
@@ -1855,6 +2246,12 @@
"ansi-regex": "^2.0.0"
}
},
+ "has-bigints": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.1.tgz",
+ "integrity": "sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==",
+ "dev": true
+ },
"has-flag": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
@@ -2016,6 +2413,12 @@
"integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=",
"dev": true
},
+ "is-bigint": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.1.tgz",
+ "integrity": "sha512-J0ELF4yHFxHy0cmSxZuheDOz2luOdVvqjwmEcj8H/L1JHeuEDSDbeRP+Dk9kFVk5RTFzbucJ2Kb9F7ixY2QaCg==",
+ "dev": true
+ },
"is-binary-path": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz",
@@ -2025,12 +2428,27 @@
"binary-extensions": "^1.0.0"
}
},
+ "is-boolean-object": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.0.tgz",
+ "integrity": "sha512-a7Uprx8UtD+HWdyYwnD1+ExtTgqQtD2k/1yJgtXP6wnMm8byhkoTZRl+95LLThpzNZJ5aEvi46cdH+ayMFRwmA==",
+ "dev": true,
+ "requires": {
+ "call-bind": "^1.0.0"
+ }
+ },
"is-buffer": {
"version": "1.1.6",
"resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
"integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==",
"dev": true
},
+ "is-callable": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.3.tgz",
+ "integrity": "sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ==",
+ "dev": true
+ },
"is-data-descriptor": {
"version": "0.1.4",
"resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz",
@@ -2051,6 +2469,12 @@
}
}
},
+ "is-date-object": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz",
+ "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==",
+ "dev": true
+ },
"is-descriptor": {
"version": "0.1.6",
"resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz",
@@ -2112,6 +2536,12 @@
"integrity": "sha1-aRC8pdqMleeEtXUbl2z1oQ/uNtI=",
"dev": true
},
+ "is-negative-zero": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.1.tgz",
+ "integrity": "sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w==",
+ "dev": true
+ },
"is-number": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
@@ -2132,6 +2562,12 @@
}
}
},
+ "is-number-object": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.4.tgz",
+ "integrity": "sha512-zohwelOAur+5uXtk8O3GPQ1eAcu4ZX3UwxQhUlfFFMNpUd83gXgjbhJh6HmB6LUNV/ieOLQuDwJO3dWJosUeMw==",
+ "dev": true
+ },
"is-plain-object": {
"version": "2.0.4",
"resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz",
@@ -2141,6 +2577,16 @@
"isobject": "^3.0.1"
}
},
+ "is-regex": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.2.tgz",
+ "integrity": "sha512-axvdhb5pdhEVThqJzYXwMlVuZwC+FF2DpcOhTS+y/8jVq4trxyPgfcwIxIKiyeuLlSQYKkmUaPQJ8ZE4yNKXDg==",
+ "dev": true,
+ "requires": {
+ "call-bind": "^1.0.2",
+ "has-symbols": "^1.0.1"
+ }
+ },
"is-relative": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/is-relative/-/is-relative-1.0.0.tgz",
@@ -2150,6 +2596,21 @@
"is-unc-path": "^1.0.0"
}
},
+ "is-string": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.5.tgz",
+ "integrity": "sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ==",
+ "dev": true
+ },
+ "is-symbol": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz",
+ "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==",
+ "dev": true,
+ "requires": {
+ "has-symbols": "^1.0.1"
+ }
+ },
"is-typedarray": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
@@ -2207,6 +2668,16 @@
"integrity": "sha512-pZe//GGmwJndub7ZghVHz7vjb2LgC1m8B07Au3eYqeqv9emhESByMXxaEgkUkEqJe87oBbSniGYoQNIBklc7IQ==",
"dev": true
},
+ "js-yaml": {
+ "version": "3.14.1",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz",
+ "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==",
+ "dev": true,
+ "requires": {
+ "argparse": "^1.0.7",
+ "esprima": "^4.0.0"
+ }
+ },
"jsbn": {
"version": "0.1.1",
"resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz",
@@ -2468,6 +2939,12 @@
}
}
},
+ "mdn-data": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.4.tgz",
+ "integrity": "sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA==",
+ "dev": true
+ },
"meow": {
"version": "3.7.0",
"resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz",
@@ -2719,6 +3196,15 @@
"set-blocking": "~2.0.0"
}
},
+ "nth-check": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz",
+ "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==",
+ "dev": true,
+ "requires": {
+ "boolbase": "~1.0.0"
+ }
+ },
"number-is-nan": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz",
@@ -2762,6 +3248,12 @@
}
}
},
+ "object-inspect": {
+ "version": "1.10.2",
+ "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.10.2.tgz",
+ "integrity": "sha512-gz58rdPpadwztRrPjZE9DZLOABUpTGdcANUgOwBFO1C+HZZhePoP83M65WGDmbpwFYJSWqavbl4SgDn4k8RYTA==",
+ "dev": true
+ },
"object-keys": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz",
@@ -2801,6 +3293,17 @@
"isobject": "^3.0.0"
}
},
+ "object.getownpropertydescriptors": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.2.tgz",
+ "integrity": "sha512-WtxeKSzfBjlzL+F9b7M7hewDzMwy+C8NRssHd1YrNlzHzIDrXcXiNOMrezdAEM4UXixgV+vvnyBeN7Rygl2ttQ==",
+ "dev": true,
+ "requires": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.1.3",
+ "es-abstract": "^1.18.0-next.2"
+ }
+ },
"object.map": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/object.map/-/object.map-1.0.1.tgz",
@@ -2830,6 +3333,18 @@
"make-iterator": "^1.0.0"
}
},
+ "object.values": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.3.tgz",
+ "integrity": "sha512-nkF6PfDB9alkOUxpf1HNm/QlkeW3SReqL5WXeBLpEJJnlPSvRaDQpW3gQTksTN3fgJX4hL42RzKyOin6ff3tyw==",
+ "dev": true,
+ "requires": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.1.3",
+ "es-abstract": "^1.18.0-next.2",
+ "has": "^1.0.3"
+ }
+ },
"once": {
"version": "1.3.3",
"resolved": "https://registry.npmjs.org/once/-/once-1.3.3.tgz",
@@ -3122,6 +3637,12 @@
"integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==",
"dev": true
},
+ "q": {
+ "version": "1.5.1",
+ "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz",
+ "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=",
+ "dev": true
+ },
"qs": {
"version": "6.5.2",
"resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz",
@@ -3543,6 +4064,12 @@
}
}
},
+ "sax": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz",
+ "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==",
+ "dev": true
+ },
"scss-tokenizer": {
"version": "0.2.3",
"resolved": "https://registry.npmjs.org/scss-tokenizer/-/scss-tokenizer-0.2.3.tgz",
@@ -3793,6 +4320,12 @@
"extend-shallow": "^3.0.0"
}
},
+ "sprintf-js": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
+ "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=",
+ "dev": true
+ },
"sshpk": {
"version": "1.16.1",
"resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz",
@@ -3810,6 +4343,12 @@
"tweetnacl": "~0.14.0"
}
},
+ "stable": {
+ "version": "0.1.8",
+ "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz",
+ "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==",
+ "dev": true
+ },
"stack-trace": {
"version": "0.0.10",
"resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz",
@@ -3901,6 +4440,26 @@
"strip-ansi": "^3.0.0"
}
},
+ "string.prototype.trimend": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz",
+ "integrity": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==",
+ "dev": true,
+ "requires": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.1.3"
+ }
+ },
+ "string.prototype.trimstart": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz",
+ "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==",
+ "dev": true,
+ "requires": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.1.3"
+ }
+ },
"strip-ansi": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
@@ -3944,6 +4503,58 @@
"es6-symbol": "^3.1.1"
}
},
+ "svgo": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/svgo/-/svgo-1.3.2.tgz",
+ "integrity": "sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw==",
+ "dev": true,
+ "requires": {
+ "chalk": "^2.4.1",
+ "coa": "^2.0.2",
+ "css-select": "^2.0.0",
+ "css-select-base-adapter": "^0.1.1",
+ "css-tree": "1.0.0-alpha.37",
+ "csso": "^4.0.2",
+ "js-yaml": "^3.13.1",
+ "mkdirp": "~0.5.1",
+ "object.values": "^1.1.0",
+ "sax": "~1.2.4",
+ "stable": "^0.1.8",
+ "unquote": "~1.1.1",
+ "util.promisify": "~1.0.0"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+ "dev": true,
+ "requires": {
+ "color-convert": "^1.9.0"
+ }
+ },
+ "chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ }
+ },
+ "supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "dev": true,
+ "requires": {
+ "has-flag": "^3.0.0"
+ }
+ }
+ }
+ },
"tar": {
"version": "2.2.2",
"resolved": "https://registry.npmjs.org/tar/-/tar-2.2.2.tgz",
@@ -4126,6 +4737,26 @@
"integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=",
"dev": true
},
+ "unbox-primitive": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz",
+ "integrity": "sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==",
+ "dev": true,
+ "requires": {
+ "function-bind": "^1.1.1",
+ "has-bigints": "^1.0.1",
+ "has-symbols": "^1.0.2",
+ "which-boxed-primitive": "^1.0.2"
+ },
+ "dependencies": {
+ "has-symbols": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz",
+ "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==",
+ "dev": true
+ }
+ }
+ },
"unc-path-regex": {
"version": "0.1.2",
"resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz",
@@ -4178,6 +4809,12 @@
"through2-filter": "^3.0.0"
}
},
+ "unquote": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/unquote/-/unquote-1.1.1.tgz",
+ "integrity": "sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ=",
+ "dev": true
+ },
"unset-value": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz",
@@ -4257,6 +4894,18 @@
"integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=",
"dev": true
},
+ "util.promisify": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.1.tgz",
+ "integrity": "sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA==",
+ "dev": true,
+ "requires": {
+ "define-properties": "^1.1.3",
+ "es-abstract": "^1.17.2",
+ "has-symbols": "^1.0.1",
+ "object.getownpropertydescriptors": "^2.1.0"
+ }
+ },
"uuid": {
"version": "3.4.0",
"resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz",
@@ -4464,6 +5113,19 @@
"isexe": "^2.0.0"
}
},
+ "which-boxed-primitive": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz",
+ "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==",
+ "dev": true,
+ "requires": {
+ "is-bigint": "^1.0.1",
+ "is-boolean-object": "^1.1.0",
+ "is-number-object": "^1.0.4",
+ "is-string": "^1.0.5",
+ "is-symbol": "^1.0.3"
+ }
+ },
"which-module": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz",
@@ -4480,13 +5142,78 @@
}
},
"wrap-ansi": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz",
- "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=",
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
+ "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
"dev": true,
"requires": {
- "string-width": "^1.0.1",
- "strip-ansi": "^3.0.1"
+ "ansi-styles": "^4.0.0",
+ "string-width": "^4.1.0",
+ "strip-ansi": "^6.0.0"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz",
+ "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==",
+ "dev": true
+ },
+ "ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "requires": {
+ "color-convert": "^2.0.1"
+ }
+ },
+ "color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "requires": {
+ "color-name": "~1.1.4"
+ }
+ },
+ "color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true
+ },
+ "emoji-regex": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
+ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
+ "dev": true
+ },
+ "is-fullwidth-code-point": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
+ "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
+ "dev": true
+ },
+ "string-width": {
+ "version": "4.2.2",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz",
+ "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==",
+ "dev": true,
+ "requires": {
+ "emoji-regex": "^8.0.0",
+ "is-fullwidth-code-point": "^3.0.0",
+ "strip-ansi": "^6.0.0"
+ }
+ },
+ "strip-ansi": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz",
+ "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^5.0.0"
+ }
+ }
}
},
"wrappy": {
@@ -4502,9 +5229,9 @@
"dev": true
},
"y18n": {
- "version": "3.2.1",
- "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz",
- "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=",
+ "version": "5.0.8",
+ "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz",
+ "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==",
"dev": true
},
"yallist": {
@@ -4514,35 +5241,65 @@
"dev": true
},
"yargs": {
- "version": "7.1.1",
- "resolved": "https://registry.npmjs.org/yargs/-/yargs-7.1.1.tgz",
- "integrity": "sha512-huO4Fr1f9PmiJJdll5kwoS2e4GqzGSsMT3PPMpOwoVkOK8ckqAewMTZyA6LXVQWflleb/Z8oPBEvNsMft0XE+g==",
+ "version": "17.0.0",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.0.0.tgz",
+ "integrity": "sha512-gbtedDPfBgG40iLbaRXhqYJycUYqFVZQLIxl1cG5Ez/xZL/47TetSYzPSIixkWa36GKHr9D/o/oSG1vHXF4zTw==",
"dev": true,
"requires": {
- "camelcase": "^3.0.0",
- "cliui": "^3.2.0",
- "decamelize": "^1.1.1",
- "get-caller-file": "^1.0.1",
- "os-locale": "^1.4.0",
- "read-pkg-up": "^1.0.1",
+ "cliui": "^7.0.2",
+ "escalade": "^3.1.1",
+ "get-caller-file": "^2.0.5",
"require-directory": "^2.1.1",
- "require-main-filename": "^1.0.1",
- "set-blocking": "^2.0.0",
- "string-width": "^1.0.2",
- "which-module": "^1.0.0",
- "y18n": "^3.2.1",
- "yargs-parser": "5.0.0-security.0"
+ "string-width": "^4.2.0",
+ "y18n": "^5.0.5",
+ "yargs-parser": "^20.2.2"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz",
+ "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==",
+ "dev": true
+ },
+ "emoji-regex": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
+ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
+ "dev": true
+ },
+ "is-fullwidth-code-point": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
+ "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
+ "dev": true
+ },
+ "string-width": {
+ "version": "4.2.2",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz",
+ "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==",
+ "dev": true,
+ "requires": {
+ "emoji-regex": "^8.0.0",
+ "is-fullwidth-code-point": "^3.0.0",
+ "strip-ansi": "^6.0.0"
+ }
+ },
+ "strip-ansi": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz",
+ "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^5.0.0"
+ }
+ }
}
},
"yargs-parser": {
- "version": "5.0.0-security.0",
- "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-5.0.0-security.0.tgz",
- "integrity": "sha512-T69y4Ps64LNesYxeYGYPvfoMTt/7y1XtfpIslUeK4um+9Hu7hlGoRtaDLvdXb7+/tfq4opVa2HRY5xGip022rQ==",
- "dev": true,
- "requires": {
- "camelcase": "^3.0.0",
- "object.assign": "^4.1.0"
- }
+ "version": "20.2.7",
+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.7.tgz",
+ "integrity": "sha512-FiNkvbeHzB/syOjIUxFDCnhSfzAL8R5vs40MgLFBorXACCOAEaWu0gRZl14vG8MR9AOJIZbmkjhusqBYZ3HTHw==",
+ "dev": true
}
}
}
diff --git a/package.json b/package.json
index c8e473637..263ddb6fc 100644
--- a/package.json
+++ b/package.json
@@ -7,6 +7,7 @@
"build-css": "gulp updateCss && gulp clean",
"peek-test": "python ./.github/scripts/icomoon_peek.py ./.github/scripts/build_assets/geckodriver-v0.27.0-win64/geckodriver.exe ./icomoon.json ./devicon.json ./icons ./ --pr_title \"%PR_TITLE%\"",
"build-test": "python ./.github/scripts/icomoon_build.py ./.github/scripts/build_assets/geckodriver-v0.27.0-win64/geckodriver.exe ./icomoon.json ./devicon.json ./icons ./",
+ "optimize-svg": "gulp optimizeSvg"
},
"repository": {
"type": "git",
@@ -27,7 +28,9 @@
"devDependencies": {
"gulp": "^4.0.0",
"gulp-sass": "^4.1.0",
- "sass": "^1.26.10"
+ "gulp-svgmin": "^3.0.0",
+ "sass": "^1.26.10",
+ "yargs": "^17.0.0"
},
"dependencies": {}
}
From a5d5b005ea42fe8a4a3e1dfd7ac4f04236539b7c Mon Sep 17 00:00:00 2001
From: Herman Singh
Date: Sat, 15 May 2021 19:44:19 -0400
Subject: [PATCH 39/79] Fix python wordmark icon (#103)
* Fix python wordmark icon
* Update icons/python/python-original-wordmark.svg
Co-authored-by: Clemens Bastian <8781699+amacado@users.noreply.github.com>
Co-authored-by: Clemens Bastian <8781699+amacado@users.noreply.github.com>
Co-authored-by: Thomas Bui <43018778+Thomas-Boi@users.noreply.github.com>
---
icons/python/python-original-wordmark.svg | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/icons/python/python-original-wordmark.svg b/icons/python/python-original-wordmark.svg
index ab626efae..a875bad56 100644
--- a/icons/python/python-original-wordmark.svg
+++ b/icons/python/python-original-wordmark.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
From 0801235a2ff32854da79ac1cd1827b62191677c5 Mon Sep 17 00:00:00 2001
From: Thomas Bui <43018778+Thomas-Boi@users.noreply.github.com>
Date: Mon, 17 May 2021 06:41:43 -0700
Subject: [PATCH 40/79] New icon: raspberrypi (original, original-wordmark,
line, line-wordmark) (#609)
* Add rpi icon
* Add original. Remove `enable-background`. Fix font colors
* Add icons to list
* Fix formatting
* Add official RPi logo + eps. Update svg and font
* Updated raspberry icons
* Optimized the SVGs
Co-authored-by: Herman Singh
Co-authored-by: Thomas-Boi
---
devicon.json | 10 ++++++++++
.../raspberrypi/raspberrypi-line-wordmark.svg | 1 +
icons/raspberrypi/raspberrypi-line.svg | 1 +
.../raspberrypi-original-wordmark.svg | 1 +
icons/raspberrypi/raspberrypi-original.svg | 1 +
icons/raspberrypi/raspberrypi.eps | Bin 0 -> 4766026 bytes
6 files changed, 14 insertions(+)
create mode 100644 icons/raspberrypi/raspberrypi-line-wordmark.svg
create mode 100644 icons/raspberrypi/raspberrypi-line.svg
create mode 100644 icons/raspberrypi/raspberrypi-original-wordmark.svg
create mode 100644 icons/raspberrypi/raspberrypi-original.svg
create mode 100644 icons/raspberrypi/raspberrypi.eps
diff --git a/devicon.json b/devicon.json
index 69c44c00c..eabb4e89f 100644
--- a/devicon.json
+++ b/devicon.json
@@ -2682,6 +2682,16 @@
"color": "#ffd845",
"aliases": []
},
+ {
+ "name": "raspberrypi",
+ "tags": ["arm", "computer"],
+ "versions": {
+ "svg": ["original", "original-wordmark", "line", "line-wordmark"],
+ "font": ["line", "line-wordmark"]
+ },
+ "color": "#c51850",
+ "aliases": []
+ },
{
"name": "phoenix",
"tags": [
diff --git a/icons/raspberrypi/raspberrypi-line-wordmark.svg b/icons/raspberrypi/raspberrypi-line-wordmark.svg
new file mode 100644
index 000000000..9f6e5dcc3
--- /dev/null
+++ b/icons/raspberrypi/raspberrypi-line-wordmark.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/icons/raspberrypi/raspberrypi-line.svg b/icons/raspberrypi/raspberrypi-line.svg
new file mode 100644
index 000000000..e4a333445
--- /dev/null
+++ b/icons/raspberrypi/raspberrypi-line.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/icons/raspberrypi/raspberrypi-original-wordmark.svg b/icons/raspberrypi/raspberrypi-original-wordmark.svg
new file mode 100644
index 000000000..2f766e329
--- /dev/null
+++ b/icons/raspberrypi/raspberrypi-original-wordmark.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/icons/raspberrypi/raspberrypi-original.svg b/icons/raspberrypi/raspberrypi-original.svg
new file mode 100644
index 000000000..8d4f01e74
--- /dev/null
+++ b/icons/raspberrypi/raspberrypi-original.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/icons/raspberrypi/raspberrypi.eps b/icons/raspberrypi/raspberrypi.eps
new file mode 100644
index 0000000000000000000000000000000000000000..032c4670724cc0e1ff9d56a26b535e3026081541
GIT binary patch
literal 4766026
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