diff --git a/.env.example b/.env.example
deleted file mode 100644
index c3f1b04..0000000
--- a/.env.example
+++ /dev/null
@@ -1,15 +0,0 @@
-INPUT_WAKATIME_API_KEY=a-f5a6a1f04d31
-INPUT_GH_TOKEN=4204a
-INPUT_SHOW_TIMEZONE=y
-INPUT_SHOW_PROJECTS=y
-INPUT_SHOW_EDITORS=y
-INPUT_SHOW_OS=y
-INPUT_SHOW_COMMIT=y
-INPUT_SHOW_LANGUAGE=y
-INPUT_SHOW_LANGUAGE_PER_REPO=y
-INPUT_SHOW_LOC_CHART=n
-INPUT_SHOW_LINES_OF_CODE=y
-INPUT_SHOW_DAYS_OF_WEEK=y
-INPUT_SHOW_PROFILE_VIEWS=y
-INPUT_SHOW_SHORT_INFO=y
-INPUT_LOCALE=fr
\ No newline at end of file
diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml
index fdfcf64..affeca1 100644
--- a/.github/FUNDING.yml
+++ b/.github/FUNDING.yml
@@ -1,12 +1,12 @@
-# These are supported funding model platforms
-
-github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2]
-patreon: # Replace with a single Patreon username
-open_collective: # Replace with a single Open Collective username
-ko_fi: anmolsingh
-tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
-community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
-liberapay: # Replace with a single Liberapay username
-issuehunt: # Replace with a single IssueHunt username
-otechie: # Replace with a single Otechie username
-custom: ['https://www.paypal.me/AAPRENEUR']
+# These are supported funding model platforms
+
+github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2]
+patreon: # Replace with a single Patreon username
+open_collective: # Replace with a single Open Collective username
+ko_fi: anmolsingh
+tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
+community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
+liberapay: # Replace with a single Liberapay username
+issuehunt: # Replace with a single IssueHunt username
+otechie: # Replace with a single Otechie username
+custom: ['https://www.paypal.me/AAPRENEUR']
diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md
index 3f27a96..56e1d25 100644
--- a/.github/ISSUE_TEMPLATE/bug_report.md
+++ b/.github/ISSUE_TEMPLATE/bug_report.md
@@ -1,27 +1,27 @@
----
-name: Bug report
-about: Create a report to help us improve
-title: BUG
-labels: bug
-assignees: anmol098
-
----
-
-**Describe the bug**
-A clear and concise description of what the bug is.
-
-**To Reproduce**
-Steps to reproduce the behavior:
-1. Go to '...'
-2. Click on '....'
-3. Scroll down to '....'
-4. See error
-
-**Expected behavior**
-A clear and concise description of what you expected to happen.
-
-**Github repository link**
-If applicable, please share the Github repository link.
-
-**Additional context**
-Add any other context about the problem here.
+---
+name: Bug report
+about: Create a report to help us improve
+title: BUG
+labels: bug
+assignees: anmol098
+
+---
+
+**Describe the bug**
+A clear and concise description of what the bug is.
+
+**To Reproduce**
+Steps to reproduce the behavior:
+1. Go to '...'
+2. Click on '....'
+3. Scroll down to '....'
+4. See error
+
+**Expected behavior**
+A clear and concise description of what you expected to happen.
+
+**Github repository link**
+If applicable, please share the Github repository link.
+
+**Additional context**
+Add any other context about the problem here.
diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md
index 6f1750e..74d8133 100644
--- a/.github/ISSUE_TEMPLATE/feature_request.md
+++ b/.github/ISSUE_TEMPLATE/feature_request.md
@@ -1,20 +1,20 @@
----
-name: Feature request
-about: Suggest an idea for this project
-title: FEAT
-labels: Brainstorming
-assignees: anmol098
-
----
-
-**Is your feature request related to a problem? Please describe.**
-A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
-
-**Describe the solution you'd like**
-A clear and concise description of what you want to happen.
-
-**Describe alternatives you've considered**
-A clear and concise description of any alternative solutions or features you've considered.
-
-**Additional context**
-Add any other context or screenshots about the feature request here.
+---
+name: Feature request
+about: Suggest an idea for this project
+title: FEAT
+labels: Brainstorming
+assignees: anmol098
+
+---
+
+**Is your feature request related to a problem? Please describe.**
+A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
+
+**Describe the solution you'd like**
+A clear and concise description of what you want to happen.
+
+**Describe alternatives you've considered**
+A clear and concise description of any alternative solutions or features you've considered.
+
+**Additional context**
+Add any other context or screenshots about the feature request here.
diff --git a/.github/ISSUE_TEMPLATE/special-mention.md b/.github/ISSUE_TEMPLATE/special-mention.md
index 5afc52a..6eea088 100644
--- a/.github/ISSUE_TEMPLATE/special-mention.md
+++ b/.github/ISSUE_TEMPLATE/special-mention.md
@@ -1,15 +1,15 @@
----
-name: Special mention
-about: Add your name to the list if you are making your profile readme more awesome
- with our GitHub Action
-title: Add||
-labels: Name
-assignees: anmol098
-
----
-
-**Github Profile Link**
-A direct link to your profile
-
-**Your Name**
-your name which should be displayed on the link
+---
+name: Special mention
+about: Add your name to the list if you are making your profile readme more awesome
+ with our GitHub Action
+title: Add||
+labels: Name
+assignees: anmol098
+
+---
+
+**Github Profile Link**
+A direct link to your profile
+
+**Your Name**
+your name which should be displayed on the link
diff --git a/.gitignore b/.gitignore
index ea49e9c..fd76478 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,6 +1,6 @@
-*.env
-*.png
-node_modules/
-__pycache__/
-
-.vscode
+*.env
+*.png
+node_modules/
+__pycache__/
+
+.vscode
diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md
index 7914a09..c333974 100644
--- a/CODE_OF_CONDUCT.md
+++ b/CODE_OF_CONDUCT.md
@@ -1,76 +1,76 @@
-# Contributor Covenant Code of Conduct
-
-## Our Pledge
-
-In the interest of fostering an open and welcoming environment, we as
-contributors and maintainers pledge to making participation in our project and
-our community a harassment-free experience for everyone, regardless of age, body
-size, disability, ethnicity, sex characteristics, gender identity and expression,
-level of experience, education, socio-economic status, nationality, personal
-appearance, race, religion, or sexual identity and orientation.
-
-## Our Standards
-
-Examples of behavior that contributes to creating a positive environment
-include:
-
-* Using welcoming and inclusive language
-* Being respectful of differing viewpoints and experiences
-* Gracefully accepting constructive criticism
-* Focusing on what is best for the community
-* Showing empathy towards other community members
-
-Examples of unacceptable behavior by participants include:
-
-* The use of sexualized language or imagery and unwelcome sexual attention or
- advances
-* Trolling, insulting/derogatory comments, and personal or political attacks
-* Public or private harassment
-* Publishing others' private information, such as a physical or electronic
- address, without explicit permission
-* Other conduct which could reasonably be considered inappropriate in a
- professional setting
-
-## Our Responsibilities
-
-Project maintainers are responsible for clarifying the standards of acceptable
-behavior and are expected to take appropriate and fair corrective action in
-response to any instances of unacceptable behavior.
-
-Project maintainers have the right and responsibility to remove, edit, or
-reject comments, commits, code, wiki edits, issues, and other contributions
-that are not aligned to this Code of Conduct, or to ban temporarily or
-permanently any contributor for other behaviors that they deem inappropriate,
-threatening, offensive, or harmful.
-
-## Scope
-
-This Code of Conduct applies both within project spaces and in public spaces
-when an individual is representing the project or its community. Examples of
-representing a project or community include using an official project e-mail
-address, posting via an official social media account, or acting as an appointed
-representative at an online or offline event. Representation of a project may be
-further defined and clarified by project maintainers.
-
-## Enforcement
-
-Instances of abusive, harassing, or otherwise unacceptable behavior may be
-reported by contacting the project team at anmolpratapsingh1997@gmail.com. All
-complaints will be reviewed and investigated and will result in a response that
-is deemed necessary and appropriate to the circumstances. The project team is
-obligated to maintain confidentiality with regard to the reporter of an incident.
-Further details of specific enforcement policies may be posted separately.
-
-Project maintainers who do not follow or enforce the Code of Conduct in good
-faith may face temporary or permanent repercussions as determined by other
-members of the project's leadership.
-
-## Attribution
-
-This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4,
-available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html
-
-[homepage]: https://www.contributor-covenant.org
-
-For answers to common questions about this code of conduct, see
-https://www.contributor-covenant.org/faq
+# Contributor Covenant Code of Conduct
+
+## Our Pledge
+
+In the interest of fostering an open and welcoming environment, we as
+contributors and maintainers pledge to making participation in our project and
+our community a harassment-free experience for everyone, regardless of age, body
+size, disability, ethnicity, sex characteristics, gender identity and expression,
+level of experience, education, socio-economic status, nationality, personal
+appearance, race, religion, or sexual identity and orientation.
+
+## Our Standards
+
+Examples of behavior that contributes to creating a positive environment
+include:
+
+* Using welcoming and inclusive language
+* Being respectful of differing viewpoints and experiences
+* Gracefully accepting constructive criticism
+* Focusing on what is best for the community
+* Showing empathy towards other community members
+
+Examples of unacceptable behavior by participants include:
+
+* The use of sexualized language or imagery and unwelcome sexual attention or
+ advances
+* Trolling, insulting/derogatory comments, and personal or political attacks
+* Public or private harassment
+* Publishing others' private information, such as a physical or electronic
+ address, without explicit permission
+* Other conduct which could reasonably be considered inappropriate in a
+ professional setting
+
+## Our Responsibilities
+
+Project maintainers are responsible for clarifying the standards of acceptable
+behavior and are expected to take appropriate and fair corrective action in
+response to any instances of unacceptable behavior.
+
+Project maintainers have the right and responsibility to remove, edit, or
+reject comments, commits, code, wiki edits, issues, and other contributions
+that are not aligned to this Code of Conduct, or to ban temporarily or
+permanently any contributor for other behaviors that they deem inappropriate,
+threatening, offensive, or harmful.
+
+## Scope
+
+This Code of Conduct applies both within project spaces and in public spaces
+when an individual is representing the project or its community. Examples of
+representing a project or community include using an official project e-mail
+address, posting via an official social media account, or acting as an appointed
+representative at an online or offline event. Representation of a project may be
+further defined and clarified by project maintainers.
+
+## Enforcement
+
+Instances of abusive, harassing, or otherwise unacceptable behavior may be
+reported by contacting the project team at anmolpratapsingh1997@gmail.com. All
+complaints will be reviewed and investigated and will result in a response that
+is deemed necessary and appropriate to the circumstances. The project team is
+obligated to maintain confidentiality with regard to the reporter of an incident.
+Further details of specific enforcement policies may be posted separately.
+
+Project maintainers who do not follow or enforce the Code of Conduct in good
+faith may face temporary or permanent repercussions as determined by other
+members of the project's leadership.
+
+## Attribution
+
+This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4,
+available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html
+
+[homepage]: https://www.contributor-covenant.org
+
+For answers to common questions about this code of conduct, see
+https://www.contributor-covenant.org/faq
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 31b3d11..0624e69 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -1,56 +1,56 @@
-# Contributing
-
-
-**Working on your first Pull Request?** You can learn how from this *free* series [How to Contribute to an Open Source Project on GitHub](https://egghead.io/series/how-to-contribute-to-an-open-source-project-on-github)
-
----
-
-Thanks for taking the time to look at `CONTRIBUTING.md`.
-
-All contributions to this project should follow the `CODE_OF_CONDUCT.md`.
-
-### Reporting issues and providing feedback
-
-If you found any issues or bugs, be sure to open up an issue so I can check it out!
-
-
-### Opening a pull request
-
-Once you've worked on your feature/bugfix etc, you can open a pull request using the `Alpha` branch as the base branch. Write a clear and concise PR title, and a detailed description of why you made the change, whether it is related to any issues etc. And I will review it as soon as I can.
-**If the code is not linted properly or not reformatted the PR will be rejected**
-
-### Setting up development environment
-
-This project is written in Python, requires **Python 3.6 or higher**, and uses `pip` .
-
-To set it up, just fork + clone it, install all the dependencies:
-
-```bash
-$ pip install -r requirements.txt
-```
-
-The command will install all the requirements needed to run project.
-
-create a `.env` file in the project directory for information you can refer to the `.env.example` file for all the environment variable
-
-If you want to contribute the chart module then you have enable that flag in `.env` file and install nodeJs and NPM for charting library to work
-```bash
-npm install -g vega-lite vega-cli canvas
-```
-
-If everything is installed, you are good to go ๐.
-```bash
-python main.py
-```
-to run the program
-
-**Linting checks**
-
-It is recommended to use proper linting. if you using Jetbrains IntelliJ IDE please reformat code before making pull request
-for more info [How to reformat code in Intellij](https://www.jetbrains.com/help/idea/reformat-and-rearrange-code.html)
-
-
-**Commit Messages**
-
-It is recommended to use proper sementic commit messages. [Sementic commit message](https://gist.github.com/joshbuchea/6f47e86d2510bce28f8e7f42ae84c716)
-
+# Contributing
+
+
+**Working on your first Pull Request?** You can learn how from this *free* series [How to Contribute to an Open Source Project on GitHub](https://egghead.io/series/how-to-contribute-to-an-open-source-project-on-github)
+
+---
+
+Thanks for taking the time to look at `CONTRIBUTING.md`.
+
+All contributions to this project should follow the `CODE_OF_CONDUCT.md`.
+
+### Reporting issues and providing feedback
+
+If you found any issues or bugs, be sure to open up an issue so I can check it out!
+
+
+### Opening a pull request
+
+Once you've worked on your feature/bugfix etc, you can open a pull request using the `Alpha` branch as the base branch. Write a clear and concise PR title, and a detailed description of why you made the change, whether it is related to any issues etc. And I will review it as soon as I can.
+**If the code is not linted properly or not reformatted the PR will be rejected**
+
+### Setting up development environment
+
+This project is written in Python, requires **Python 3.6 or higher**, and uses `pip` .
+
+To set it up, just fork + clone it, install all the dependencies:
+
+```bash
+$ pip install -r requirements.txt
+```
+
+The command will install all the requirements needed to run project.
+
+create a `.env` file in the project directory for information you can refer to the `.env.example` file for all the environment variable
+
+If you want to contribute the chart module then you have enable that flag in `.env` file and install nodeJs and NPM for charting library to work
+```bash
+npm install -g vega-lite vega-cli canvas
+```
+
+If everything is installed, you are good to go ๐.
+```bash
+python main.py
+```
+to run the program
+
+**Linting checks**
+
+It is recommended to use proper linting. if you using Jetbrains IntelliJ IDE please reformat code before making pull request
+for more info [How to reformat code in Intellij](https://www.jetbrains.com/help/idea/reformat-and-rearrange-code.html)
+
+
+**Commit Messages**
+
+It is recommended to use proper sementic commit messages. [Sementic commit message](https://gist.github.com/joshbuchea/6f47e86d2510bce28f8e7f42ae84c716)
+
diff --git a/Dockerfile b/Dockerfile
index e7fea4f..4263ece 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -1,19 +1,19 @@
-FROM nikolaik/python-nodejs:latest
-
-# Install dependencies.
-ADD requirements.txt /requirements.txt
-ADD main.py /main.py
-ADD loc.py /loc.py
-ADD make_bar_graph.py /make_bar_graph.py
-ADD colors.json /colors.json
-ADD translation.json /translation.json
-RUN pip install -r requirements.txt
-
-ENV NPM_CONFIG_PREFIX=/home/node/.npm-global
-
-RUN npm -g config set user root
-
-RUN npm install -g vega-lite vega-cli canvas
-
-ENTRYPOINT ["python", "/main.py"]
-
+FROM nikolaik/python-nodejs:latest
+
+# Install dependencies.
+ADD requirements.txt /requirements.txt
+ADD main.py /main.py
+ADD loc.py /loc.py
+ADD make_bar_graph.py /make_bar_graph.py
+ADD colors.json /colors.json
+ADD translation.json /translation.json
+RUN pip install -r requirements.txt
+
+ENV NPM_CONFIG_PREFIX=/home/node/.npm-global
+
+RUN npm -g config set user root
+
+RUN npm install -g vega-lite vega-cli canvas
+
+ENTRYPOINT ["python", "/main.py"]
+
diff --git a/LICENSE b/LICENSE
index 2dc97fe..1c3d626 100644
--- a/LICENSE
+++ b/LICENSE
@@ -1,20 +1,20 @@
-The MIT License (MIT)
-
-Copyright (c) 2020 ANMOL PRATAP SINGH
-
-Permission is hereby granted, free of charge, to any person obtaining a copy of
-this software and associated documentation files (the "Software"), to deal in
-the Software without restriction, including without limitation the rights to
-use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
-the Software, and to permit persons to whom the Software is furnished to do so,
-subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
-FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
-COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
-IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+The MIT License (MIT)
+
+Copyright (c) 2020 ANMOL PRATAP SINGH
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of
+this software and associated documentation files (the "Software"), to deal in
+the Software without restriction, including without limitation the rights to
+use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
+the Software, and to permit persons to whom the Software is furnished to do so,
+subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
+FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
+COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
+IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/Pipfile b/Pipfile
index 486f73e..5ee8e1f 100644
--- a/Pipfile
+++ b/Pipfile
@@ -1,13 +1,13 @@
-[[source]]
-name = "pypi"
-url = "https://pypi.org/simple"
-verify_ssl = true
-
-[dev-packages]
-
-[packages]
-requests = "*"
-pygithub = "*"
-
-[requires]
-python_version = "3.7"
+[[source]]
+name = "pypi"
+url = "https://pypi.org/simple"
+verify_ssl = true
+
+[dev-packages]
+
+[packages]
+requests = "*"
+pygithub = "*"
+
+[requires]
+python_version = "3.7"
diff --git a/Pipfile.lock b/Pipfile.lock
index 7938004..e35c643 100644
--- a/Pipfile.lock
+++ b/Pipfile.lock
@@ -1,85 +1,85 @@
-{
- "_meta": {
- "hash": {
- "sha256": "ee0dbc310e64a4cc599d6b5e02bb22e3f33eb97ead8e5f1e315cf355fbef9367"
- },
- "pipfile-spec": 6,
- "requires": {
- "python_version": "3.7"
- },
- "sources": [
- {
- "name": "pypi",
- "url": "https://pypi.org/simple",
- "verify_ssl": true
- }
- ]
- },
- "default": {
- "certifi": {
- "hashes": [
- "sha256:5930595817496dd21bb8dc35dad090f1c2cd0adfaf21204bf6732ca5d8ee34d3",
- "sha256:8fc0819f1f30ba15bdb34cceffb9ef04d99f420f68eb75d901e9560b8749fc41"
- ],
- "version": "==2020.6.20"
- },
- "chardet": {
- "hashes": [
- "sha256:84ab92ed1c4d4f16916e05906b6b75a6c0fb5db821cc65e70cbd64a3e2a5eaae",
- "sha256:fc323ffcaeaed0e0a02bf4d117757b98aed530d9ed4531e3e15460124c106691"
- ],
- "version": "==3.0.4"
- },
- "deprecated": {
- "hashes": [
- "sha256:525ba66fb5f90b07169fdd48b6373c18f1ee12728ca277ca44567a367d9d7f74",
- "sha256:a766c1dccb30c5f6eb2b203f87edd1d8588847709c78589e1521d769addc8218"
- ],
- "version": "==1.2.10"
- },
- "idna": {
- "hashes": [
- "sha256:b307872f855b18632ce0c21c5e45be78c0ea7ae4c15c828c20788b26921eb3f6",
- "sha256:b97d804b1e9b523befed77c48dacec60e6dcb0b5391d57af6a65a312a90648c0"
- ],
- "version": "==2.10"
- },
- "pygithub": {
- "hashes": [
- "sha256:8375a058ec651cc0774244a3bc7395cf93617298735934cdd59e5bcd9a1df96e",
- "sha256:d2d17d1e3f4474e070353f201164685a95b5a92f5ee0897442504e399c7bc249"
- ],
- "index": "pypi",
- "version": "==1.51"
- },
- "pyjwt": {
- "hashes": [
- "sha256:5c6eca3c2940464d106b99ba83b00c6add741c9becaec087fb7ccdefea71350e",
- "sha256:8d59a976fb773f3e6a39c85636357c4f0e242707394cadadd9814f5cbaa20e96"
- ],
- "version": "==1.7.1"
- },
- "requests": {
- "hashes": [
- "sha256:b3559a131db72c33ee969480840fff4bb6dd111de7dd27c8ee1f820f4f00231b",
- "sha256:fe75cc94a9443b9246fc7049224f75604b113c36acb93f87b80ed42c44cbb898"
- ],
- "index": "pypi",
- "version": "==2.24.0"
- },
- "urllib3": {
- "hashes": [
- "sha256:3018294ebefce6572a474f0604c2021e33b3fd8006ecd11d62107a5d2a963527",
- "sha256:88206b0eb87e6d677d424843ac5209e3fb9d0190d0ee169599165ec25e9d9115"
- ],
- "version": "==1.25.9"
- },
- "wrapt": {
- "hashes": [
- "sha256:b62ffa81fb85f4332a4f609cab4ac40709470da05643a082ec1eb88e6d9b97d7"
- ],
- "version": "==1.12.1"
- }
- },
- "develop": {}
-}
+{
+ "_meta": {
+ "hash": {
+ "sha256": "ee0dbc310e64a4cc599d6b5e02bb22e3f33eb97ead8e5f1e315cf355fbef9367"
+ },
+ "pipfile-spec": 6,
+ "requires": {
+ "python_version": "3.7"
+ },
+ "sources": [
+ {
+ "name": "pypi",
+ "url": "https://pypi.org/simple",
+ "verify_ssl": true
+ }
+ ]
+ },
+ "default": {
+ "certifi": {
+ "hashes": [
+ "sha256:5930595817496dd21bb8dc35dad090f1c2cd0adfaf21204bf6732ca5d8ee34d3",
+ "sha256:8fc0819f1f30ba15bdb34cceffb9ef04d99f420f68eb75d901e9560b8749fc41"
+ ],
+ "version": "==2020.6.20"
+ },
+ "chardet": {
+ "hashes": [
+ "sha256:84ab92ed1c4d4f16916e05906b6b75a6c0fb5db821cc65e70cbd64a3e2a5eaae",
+ "sha256:fc323ffcaeaed0e0a02bf4d117757b98aed530d9ed4531e3e15460124c106691"
+ ],
+ "version": "==3.0.4"
+ },
+ "deprecated": {
+ "hashes": [
+ "sha256:525ba66fb5f90b07169fdd48b6373c18f1ee12728ca277ca44567a367d9d7f74",
+ "sha256:a766c1dccb30c5f6eb2b203f87edd1d8588847709c78589e1521d769addc8218"
+ ],
+ "version": "==1.2.10"
+ },
+ "idna": {
+ "hashes": [
+ "sha256:b307872f855b18632ce0c21c5e45be78c0ea7ae4c15c828c20788b26921eb3f6",
+ "sha256:b97d804b1e9b523befed77c48dacec60e6dcb0b5391d57af6a65a312a90648c0"
+ ],
+ "version": "==2.10"
+ },
+ "pygithub": {
+ "hashes": [
+ "sha256:8375a058ec651cc0774244a3bc7395cf93617298735934cdd59e5bcd9a1df96e",
+ "sha256:d2d17d1e3f4474e070353f201164685a95b5a92f5ee0897442504e399c7bc249"
+ ],
+ "index": "pypi",
+ "version": "==1.51"
+ },
+ "pyjwt": {
+ "hashes": [
+ "sha256:5c6eca3c2940464d106b99ba83b00c6add741c9becaec087fb7ccdefea71350e",
+ "sha256:8d59a976fb773f3e6a39c85636357c4f0e242707394cadadd9814f5cbaa20e96"
+ ],
+ "version": "==1.7.1"
+ },
+ "requests": {
+ "hashes": [
+ "sha256:b3559a131db72c33ee969480840fff4bb6dd111de7dd27c8ee1f820f4f00231b",
+ "sha256:fe75cc94a9443b9246fc7049224f75604b113c36acb93f87b80ed42c44cbb898"
+ ],
+ "index": "pypi",
+ "version": "==2.24.0"
+ },
+ "urllib3": {
+ "hashes": [
+ "sha256:3018294ebefce6572a474f0604c2021e33b3fd8006ecd11d62107a5d2a963527",
+ "sha256:88206b0eb87e6d677d424843ac5209e3fb9d0190d0ee169599165ec25e9d9115"
+ ],
+ "version": "==1.25.9"
+ },
+ "wrapt": {
+ "hashes": [
+ "sha256:b62ffa81fb85f4332a4f609cab4ac40709470da05643a082ec1eb88e6d9b97d7"
+ ],
+ "version": "==1.12.1"
+ }
+ },
+ "develop": {}
+}
diff --git a/README.md b/README.md
index 2967cb9..16b709c 100644
--- a/README.md
+++ b/README.md
@@ -1,354 +1,354 @@
-> Looking For Translation to different languages & Locale [#23](https://github.com/anmol098/waka-readme-stats/issues/23)
-
-# Dev Metrics in Readme with added feature flags ๐
-
-
-
-
-
- 
-
-
๐โจAwesome Readme Stats
-
-
-----
-
-
-
-
-
-
-
-
-
- Are you an early ๐ค or a night ๐ฆ?
-
- When are you most productive during the day?
-
- What are languages you code in?
-
- Let's check out in your profile readme!
-
-
-
- Report Bug
- ยท
- Request Feature
-
-
-## Prep Work
-
-1. You need to update the markdown file(.md) with 2 comments. You can refer [here](#update-your-readme) for updating it.
-2. You'll need a WakaTime API Key. You can get that from your WakaTime Account Settings
- - You can refer [here](#new-to-wakatime), if you're new to WakaTime
-3. You'll need a GitHub API Token with `repo` and `user` scope from [here](https://github.com/settings/tokens) if you're running the action to get commit metrics
- > enabling the `repo` scope seems **DANGEROUS**
- > but this GitHub Action only accesses your commit timestamp and lines of code added or deleted in repository you contributed.
- - You can use [this](#profile-repository) example to work it out
-4. You need to save the WakaTime API Key and the GitHub API Token in the repository secrets. You can find that in the Settings of your repository. Be sure to save those as the following.
- - WakaTime API Key as `WAKATIME_API_KEY=`
- - GitHub Personal Access Token as `GH_TOKEN=`
-5. You can enable and disable feature flags based on requirements.
-
-
-This Action will run everyday at 00.00 IST
-
-## Update your Readme
-
-Add a comment to your `README.md` like this:
-
-```md
-
-
-```
-
-These lines will be our entry-points for the dev metrics.
-
-## New to WakaTime
-
-WakaTime gives you an idea of the time you really spent on coding. This helps you boost your productivity and competitive edge.
-
-- Head over to and create an account.
-- Get your WakaTime API Key from your [Account Settings in WakaTime](https://wakatime.com/settings/account).
-- Install the [WakaTime plugin](https://wakatime.com/plugins) in your favourite editor / IDE.
-- Paste in your API key to start the analysis.
-
-### Profile Repository
-
-You'll need to get a [GitHub Access Token](https://docs.github.com/en/actions/configuring-and-managing-workflows/authenticating-with-the-github_token) with a `repo` and `user` scope and save it in the Repo Secrets `GH_TOKEN = `
-
-Here is Sample Workflow File for running it:
-
-```yml
-name: Waka Readme
-
-on:
- schedule:
- # Runs at 12am IST
- - cron: '30 18 * * *'
-
-jobs:
- update-readme:
- name: Update Readme with Metrics
- runs-on: ubuntu-latest
- steps:
- - uses: anmol098/waka-readme-stats@master
- with:
- WAKATIME_API_KEY: ${{ secrets.WAKATIME_API_KEY }}
- GH_TOKEN: ${{ secrets.GH_TOKEN }}
-```
-## Extras
-
-1. If you want to add the other info to your stats, you can add multiple `FLAGS` in your workflow file by default all flags are enabled
->except the lines of code flag due to heavy operation performed
-
-```yml
-- uses: anmol098/waka-readme-stats@master
- with:
- WAKATIME_API_KEY: ${{ secrets.WAKATIME_API_KEY }}
- GH_TOKEN: ${{ secrets.GH_TOKEN }}
- SHOW_OS: "False"
- SHOW_PROJECTS: "False"
-```
-
-### Flags Available
-
----
-
-`LOCALE` This Flag can be used to show stats in your language default is english uses Locale [Short Hand](https://saimana.com/list-of-country-locale-code/) to be passed in the flag variable example of the final result can be found [here](https://github.com/anmol098/anmol098/blob/master/Readme-fr.md)
-
-
-`SHOW_LINES_OF_CODE` flag can be set to `True` to show the Lines of code writen till date
-
-
-
-`SHOW_PROFILE_VIEWS` flag can be set to `False` to hide the Profile views
-
-
-
-
-`SHOW_COMMIT` flag can be set to `False` to hide the commit stats
-
-**I'm an early ๐ค**
-```text
-๐ Morning 95 commits โโโโโโโโโโโโโโโโโโโโโโโโโ 30.55%
-๐ Daytime 78 commits โโโโโโโโโโโโโโโโโโโโโโโโโ 25.08%
-๐ Evening 112 commits โโโโโโโโโโโโโโโโโโโโโโโโโ 36.01%
-๐ Night 26 commits โโโโโโโโโโโโโโโโโโโโโโโโโ 8.36%
-
-```
-
-`SHOW_DAYS_OF_WEEK` flag can be set to `False` to hide the commits made on different days of week
-
-๐
**I'm Most Productive on Sundays**
-
-```text
-Monday 50 commits โโโโโโโโโโโโโโโโโโโโโโโโโ 13.19%
-Tuesday 85 commits โโโโโโโโโโโโโโโโโโโโโโโโโ 22.43%
-Wednesday 56 commits โโโโโโโโโโโโโโโโโโโโโโโโโ 14.78%
-Thursday 44 commits โโโโโโโโโโโโโโโโโโโโโโโโโ 11.61%
-Friday 28 commits โโโโโโโโโโโโโโโโโโโโโโโโโ 7.39%
-Saturday 30 commits โโโโโโโโโโโโโโโโโโโโโโโโโ 7.92%
-Sunday 86 commits โโโโโโโโโโโโโโโโโโโโโโโโโ 22.69%
-
-```
-
-`SHOW_LANGUAGE` flag can be set to `False` to hide the Coding Language You use
-
-```text
-๐ฌ Languages:
-JavaScript 5 hrs 26 mins โโโโโโโโโโโโโโโโโโโโโโโโโ 61.97%
-PHP 1 hr 35 mins โโโโโโโโโโโโโโโโโโโโโโโโโ 18.07%
-Markdown 1 hr 9 mins โโโโโโโโโโโโโโโโโโโโโโโโโ 13.3%
-Python 22 mins โโโโโโโโโโโโโโโโโโโโโโโโโ 4.32%
-XML 8 mins โโโโโโโโโโโโโโโโโโโโโโโโโ 1.62%
-```
-
-
-`SHOW_OS` flag can be set to `False` to hide the OS details
-
-```text
-๐ป Operating Systems:
-Windows 8 hrs 46 mins โโโโโโโโโโโโโโโโโโโโโโโโโ 100.0%
-```
-
-`SHOW_PROJECTS` flag can be set to `False` to hide the Projects worked on
-
-```text
-๐ฑโ๐ป Projects:
-ctx_connector 4 hrs 3 mins โโโโโโโโโโโโโโโโโโโโโโโโโ 46.33%
-NetSuite-Connector 1 hr 31 mins โโโโโโโโโโโโโโโโโโโโโโโโโ 17.29%
-mango-web-master 1 hr 12 mins โโโโโโโโโโโโโโโโโโโโโโโโโ 13.77%
-cable 54 mins โโโโโโโโโโโโโโโโโโโโโโโโโ 10.41%
-denAPI 40 mins โโโโโโโโโโโโโโโโโโโโโโโโโ 7.66%
-```
-
-`SHOW_TIMEZONE` flag can be set to `False` to hide the time zone you are in
-
-```text
-โ๏ธ Timezone: Asia/Calcutta
-```
-
-`SHOW_EDITORS` flag can be set to `False` to hide the list of code-editors used
-
-```text
-๐ฅ Editors:
-WebStorm 6 hrs 47 mins โโโโโโโโโโโโโโโโโโโโโโโโโ 77.43%
-PhpStorm 1 hr 35 mins โโโโโโโโโโโโโโโโโโโโโโโโโ 18.07%
-PyCharm 23 mins โโโโโโโโโโโโโโโโโโโโโโโโโ 4.49%
-```
-
-`SHOW_LANGUAGE_PER_REPO` flag can be set to `False` to hide the Number of repository in different language and frameworks
-
-**I mostly code in Vue**
-
-```text
-Vue 8 repos โโโโโโโโโโโโโโโโโโโโโโโโโ 25.0%
-Java 6 repos โโโโโโโโโโโโโโโโโโโโโโโโโ 18.75%
-JavaScript 6 repos โโโโโโโโโโโโโโโโโโโโโโโโโ 18.75%
-PHP 3 repos โโโโโโโโโโโโโโโโโโโโโโโโโ 9.38%
-Python 2 repos โโโโโโโโโโโโโโโโโโโโโโโโโ 6.25%
-Dart 2 repos โโโโโโโโโโโโโโโโโโโโโโโโโ 6.25%
-CSS 2 repos โโโโโโโโโโโโโโโโโโโโโโโโโ 6.25%
-
-```
-
-`SHOW_SHORT_INFO` flag can be set to `False` to hide the short fun fact info of user
->This section requires personal access token with user permission otherwise data shown will be incorrect here
-
-**๐ฑ My GitHub Data**
-
-> ๐ 433 Contributions in year 2020
- >
-> ๐ฆ Used 292.3 kB in GitHub's Storage
- >
-> ๐ผ Opted to Hire
- >
-> ๐ 25 Public Repository
- >
-> ๐ 15 Owned Private Repository
-
-`SHOW_LOC_CHART` flag can be set to `False` to hide the Lines of code written in different quarters of different year
-
-**Timeline**
-
-
-
-## :sparkling_heart: Support the project
-
-I open-source almost everything I can, and I try to reply to everyone needing help using these projects. Obviously,
-this takes time. You can use this service for free.
-
-However, if you are using this project and happy with it or just want to encourage me to continue creating stuff, there are few ways you can do it :-
-
-- Giving proper credit when you use this action on your readme, linking back to it :D
-- Starring and sharing the project :rocket:
-- [](https://www.paypal.me/aapreneur) - You can make one-time donations via PayPal. I'll probably buy a ~~beer~~ wine ๐ท
-
-Thanks! :heart:
-
----
-
-# Contributing
-
-Contributions are welcome! โฅ! Please share any features, and add unit tests! Use the pull request and issue systems to contribute.
-
-# Selected Contributors
-
-1. [Anmol Pratap Singh](https://github.com/anmol098): Maintainer
-2. [Prabhat Singh](https://github.com/prabhatdev): For code timeline graph [#18](https://github.com/anmol098/waka-readme-stats/pull/18)
-3. [Hedy Li](https://github.com/hedythedev): For Pull Request [#34](https://github.com/anmol098/waka-readme-stats/pull/34) and [#23](https://github.com/anmol098/waka-readme-stats/pull/23)
-4. [Pedro Torres](https://github.com/Corfucinas): For Pull Request [#29](https://github.com/anmol098/waka-readme-stats/pull/29)
-5. [Aaron Meese](https://github.com/ajmeese7): For Pull Request [#45](https://github.com/anmol098/waka-readme-stats/pull/45)
-6. [Arnav Jindal](https://github.com/Daggy1234): For Pull Request [#48](https://github.com/anmol098/waka-readme-stats/pull/48)
-7. [Daniel Rowe](https://github.com/DanRowe1): For Pull Request [#57](https://github.com/anmol098/waka-readme-stats/pull/57)
-
-
-Special mention for those who are currently making their profile readme more awesome :smile: :tada:
-
- - [Stanislas](https://github.com/angristan)
-
- - [Pratik Kumar](https://github.com/pr2tik1)
-
- - [Vladimir](https://github.com/sergeev-vn)
-
- - [Pedro Torres](https://github.com/Corfucinas)
-
- - [leverglowh](https://github.com/leverglowh)
-
- - [patdc](https://github.com/patdc)
-
- - [ๆๅฎขๆๆๆบ](https://github.com/meteor1993)
-
- - [Fan()](https://github.com/Fanduzi)
-
- - [Miller Camilo Vega](https://github.com/minoveaz)
-
- - [XLor](https://github.com/yjl9903)
-
- - [Jesse Okeya](https://github.com/jesseokeya)
-
- - [anaiel](https://github.com/anaiel)
-
- - [Dipto Mondal](https://github.com/diptomondal007)
-
- - [Jerry F. Zhang](https://github.com/JerryFZhang)
-
- - [Karan Singh](https://github.com/karan06126)
-
- - [Erwin Lejeune](https://github.com/guilyx)
-
- - [Manuel Cepeda](https://github.com/mecm1993)
-
- - [Jonathan S](https://github.com/TGTGamer)
-
- - [Tsotne Gvadzabia](https://github.com/RockiRider)
-
- - [Miray](https://github.com/MirayXS)
-
- - [Varad Patil](https://github.com/varadp2000)
-
- - [Prabhat Singh](https://github.com/prabhatdev)
-
- - [Nikhil](https://github.com/nikhilgorantla)
-
- - [ๅคง็ฝ](https://github.com/2720851545)
-
- - [Du Yizhuo](https://github.com/dyzdyz010)
-
- - [Manas Talukdar](https://github.com/manastalukdar)
-
- - [Simranjeet Singh](https://github.com/smrnjeet222)
-
- - [Aaron Meese](https://github.com/ajmeese7)
-
- - [Prasad Narkhede](https://github.com/p014ri5)
-
- - [Manish Kushwaha](https://github.com/tzmanish)
-
- - [Hedy Li](https://github.com/hedythedev)
-
- - [SHIMIZU Taku](https://github.com/takuan-osho)
-
- - [Jude Wilson](https://github.com/mr-winson)
-
- - [Daniel Rowe](https://github.com/DanRowe1)
-
- - [Muhammad Hassan Ahmed](https://github.com/hassan11196)
-
- - [Alessandro Maggio](https://github.com/Tkd-Alex)
-
-
-
-
-- And you! If ever you are using it right now and you are not on the list please tell us by sending a [Special Mention](https://github.com/anmol098/waka-readme-stats/issues/new/choose) issue :blush: we are glad to add you in the list.
-
-
-Made with :heart: and Python ๐.
-
-# Inspired From
-
-> [Awesome Pinned Gists](https://github.com/matchai/awesome-pinned-gists)
-> [athul/waka-readme](https://github.com/athul/waka-readme)
-
-### This project need a **star** โญ from you โฅ.
+> Looking For Translation to different languages & Locale [#23](https://github.com/anmol098/waka-readme-stats/issues/23)
+
+# Dev Metrics in Readme with added feature flags ๐
+
+
+
+
+
+ 
+
+
๐โจAwesome Readme Stats
+
+
+----
+
+
+
+
+
+
+
+
+
+ Are you an early ๐ค or a night ๐ฆ?
+
+ When are you most productive during the day?
+
+ What are languages you code in?
+
+ Let's check out in your profile readme!
+
+
+
+ Report Bug
+ ยท
+ Request Feature
+
+
+## Prep Work
+
+1. You need to update the markdown file(.md) with 2 comments. You can refer [here](#update-your-readme) for updating it.
+2. You'll need a WakaTime API Key. You can get that from your WakaTime Account Settings
+ - You can refer [here](#new-to-wakatime), if you're new to WakaTime
+3. You'll need a GitHub API Token with `repo` and `user` scope from [here](https://github.com/settings/tokens) if you're running the action to get commit metrics
+ > enabling the `repo` scope seems **DANGEROUS**
+ > but this GitHub Action only accesses your commit timestamp and lines of code added or deleted in repository you contributed.
+ - You can use [this](#profile-repository) example to work it out
+4. You need to save the WakaTime API Key and the GitHub API Token in the repository secrets. You can find that in the Settings of your repository. Be sure to save those as the following.
+ - WakaTime API Key as `WAKATIME_API_KEY=`
+ - GitHub Personal Access Token as `GH_TOKEN=`
+5. You can enable and disable feature flags based on requirements.
+
+
+This Action will run everyday at 00.00 IST
+
+## Update your Readme
+
+Add a comment to your `README.md` like this:
+
+```md
+
+
+```
+
+These lines will be our entry-points for the dev metrics.
+
+## New to WakaTime
+
+WakaTime gives you an idea of the time you really spent on coding. This helps you boost your productivity and competitive edge.
+
+- Head over to and create an account.
+- Get your WakaTime API Key from your [Account Settings in WakaTime](https://wakatime.com/settings/account).
+- Install the [WakaTime plugin](https://wakatime.com/plugins) in your favourite editor / IDE.
+- Paste in your API key to start the analysis.
+
+### Profile Repository
+
+You'll need to get a [GitHub Access Token](https://docs.github.com/en/actions/configuring-and-managing-workflows/authenticating-with-the-github_token) with a `repo` and `user` scope and save it in the Repo Secrets `GH_TOKEN = `
+
+Here is Sample Workflow File for running it:
+
+```yml
+name: Waka Readme
+
+on:
+ schedule:
+ # Runs at 12am IST
+ - cron: '30 18 * * *'
+
+jobs:
+ update-readme:
+ name: Update Readme with Metrics
+ runs-on: ubuntu-latest
+ steps:
+ - uses: anmol098/waka-readme-stats@master
+ with:
+ WAKATIME_API_KEY: ${{ secrets.WAKATIME_API_KEY }}
+ GH_TOKEN: ${{ secrets.GH_TOKEN }}
+```
+## Extras
+
+1. If you want to add the other info to your stats, you can add multiple `FLAGS` in your workflow file by default all flags are enabled
+>except the lines of code flag due to heavy operation performed
+
+```yml
+- uses: anmol098/waka-readme-stats@master
+ with:
+ WAKATIME_API_KEY: ${{ secrets.WAKATIME_API_KEY }}
+ GH_TOKEN: ${{ secrets.GH_TOKEN }}
+ SHOW_OS: "False"
+ SHOW_PROJECTS: "False"
+```
+
+### Flags Available
+
+---
+
+`LOCALE` This Flag can be used to show stats in your language default is english uses Locale [Short Hand](https://saimana.com/list-of-country-locale-code/) to be passed in the flag variable example of the final result can be found [here](https://github.com/anmol098/anmol098/blob/master/Readme-fr.md)
+
+
+`SHOW_LINES_OF_CODE` flag can be set to `True` to show the Lines of code writen till date
+
+
+
+`SHOW_PROFILE_VIEWS` flag can be set to `False` to hide the Profile views
+
+
+
+
+`SHOW_COMMIT` flag can be set to `False` to hide the commit stats
+
+**I'm an early ๐ค**
+```text
+๐ Morning 95 commits โโโโโโโโโโโโโโโโโโโโโโโโโ 30.55%
+๐ Daytime 78 commits โโโโโโโโโโโโโโโโโโโโโโโโโ 25.08%
+๐ Evening 112 commits โโโโโโโโโโโโโโโโโโโโโโโโโ 36.01%
+๐ Night 26 commits โโโโโโโโโโโโโโโโโโโโโโโโโ 8.36%
+
+```
+
+`SHOW_DAYS_OF_WEEK` flag can be set to `False` to hide the commits made on different days of week
+
+๐
**I'm Most Productive on Sundays**
+
+```text
+Monday 50 commits โโโโโโโโโโโโโโโโโโโโโโโโโ 13.19%
+Tuesday 85 commits โโโโโโโโโโโโโโโโโโโโโโโโโ 22.43%
+Wednesday 56 commits โโโโโโโโโโโโโโโโโโโโโโโโโ 14.78%
+Thursday 44 commits โโโโโโโโโโโโโโโโโโโโโโโโโ 11.61%
+Friday 28 commits โโโโโโโโโโโโโโโโโโโโโโโโโ 7.39%
+Saturday 30 commits โโโโโโโโโโโโโโโโโโโโโโโโโ 7.92%
+Sunday 86 commits โโโโโโโโโโโโโโโโโโโโโโโโโ 22.69%
+
+```
+
+`SHOW_LANGUAGE` flag can be set to `False` to hide the Coding Language You use
+
+```text
+๐ฌ Languages:
+JavaScript 5 hrs 26 mins โโโโโโโโโโโโโโโโโโโโโโโโโ 61.97%
+PHP 1 hr 35 mins โโโโโโโโโโโโโโโโโโโโโโโโโ 18.07%
+Markdown 1 hr 9 mins โโโโโโโโโโโโโโโโโโโโโโโโโ 13.3%
+Python 22 mins โโโโโโโโโโโโโโโโโโโโโโโโโ 4.32%
+XML 8 mins โโโโโโโโโโโโโโโโโโโโโโโโโ 1.62%
+```
+
+
+`SHOW_OS` flag can be set to `False` to hide the OS details
+
+```text
+๐ป Operating Systems:
+Windows 8 hrs 46 mins โโโโโโโโโโโโโโโโโโโโโโโโโ 100.0%
+```
+
+`SHOW_PROJECTS` flag can be set to `False` to hide the Projects worked on
+
+```text
+๐ฑโ๐ป Projects:
+ctx_connector 4 hrs 3 mins โโโโโโโโโโโโโโโโโโโโโโโโโ 46.33%
+NetSuite-Connector 1 hr 31 mins โโโโโโโโโโโโโโโโโโโโโโโโโ 17.29%
+mango-web-master 1 hr 12 mins โโโโโโโโโโโโโโโโโโโโโโโโโ 13.77%
+cable 54 mins โโโโโโโโโโโโโโโโโโโโโโโโโ 10.41%
+denAPI 40 mins โโโโโโโโโโโโโโโโโโโโโโโโโ 7.66%
+```
+
+`SHOW_TIMEZONE` flag can be set to `False` to hide the time zone you are in
+
+```text
+โ๏ธ Timezone: Asia/Calcutta
+```
+
+`SHOW_EDITORS` flag can be set to `False` to hide the list of code-editors used
+
+```text
+๐ฅ Editors:
+WebStorm 6 hrs 47 mins โโโโโโโโโโโโโโโโโโโโโโโโโ 77.43%
+PhpStorm 1 hr 35 mins โโโโโโโโโโโโโโโโโโโโโโโโโ 18.07%
+PyCharm 23 mins โโโโโโโโโโโโโโโโโโโโโโโโโ 4.49%
+```
+
+`SHOW_LANGUAGE_PER_REPO` flag can be set to `False` to hide the Number of repository in different language and frameworks
+
+**I mostly code in Vue**
+
+```text
+Vue 8 repos โโโโโโโโโโโโโโโโโโโโโโโโโ 25.0%
+Java 6 repos โโโโโโโโโโโโโโโโโโโโโโโโโ 18.75%
+JavaScript 6 repos โโโโโโโโโโโโโโโโโโโโโโโโโ 18.75%
+PHP 3 repos โโโโโโโโโโโโโโโโโโโโโโโโโ 9.38%
+Python 2 repos โโโโโโโโโโโโโโโโโโโโโโโโโ 6.25%
+Dart 2 repos โโโโโโโโโโโโโโโโโโโโโโโโโ 6.25%
+CSS 2 repos โโโโโโโโโโโโโโโโโโโโโโโโโ 6.25%
+
+```
+
+`SHOW_SHORT_INFO` flag can be set to `False` to hide the short fun fact info of user
+>This section requires personal access token with user permission otherwise data shown will be incorrect here
+
+**๐ฑ My GitHub Data**
+
+> ๐ 433 Contributions in year 2020
+ >
+> ๐ฆ Used 292.3 kB in GitHub's Storage
+ >
+> ๐ผ Opted to Hire
+ >
+> ๐ 25 Public Repository
+ >
+> ๐ 15 Owned Private Repository
+
+`SHOW_LOC_CHART` flag can be set to `False` to hide the Lines of code written in different quarters of different year
+
+**Timeline**
+
+
+
+## :sparkling_heart: Support the project
+
+I open-source almost everything I can, and I try to reply to everyone needing help using these projects. Obviously,
+this takes time. You can use this service for free.
+
+However, if you are using this project and happy with it or just want to encourage me to continue creating stuff, there are few ways you can do it :-
+
+- Giving proper credit when you use this action on your readme, linking back to it :D
+- Starring and sharing the project :rocket:
+- [](https://www.paypal.me/aapreneur) - You can make one-time donations via PayPal. I'll probably buy a ~~beer~~ wine ๐ท
+
+Thanks! :heart:
+
+---
+
+# Contributing
+
+Contributions are welcome! โฅ! Please share any features, and add unit tests! Use the pull request and issue systems to contribute.
+
+# Selected Contributors
+
+1. [Anmol Pratap Singh](https://github.com/anmol098): Maintainer
+2. [Prabhat Singh](https://github.com/prabhatdev): For code timeline graph [#18](https://github.com/anmol098/waka-readme-stats/pull/18)
+3. [Hedy Li](https://github.com/hedythedev): For Pull Request [#34](https://github.com/anmol098/waka-readme-stats/pull/34) and [#23](https://github.com/anmol098/waka-readme-stats/pull/23)
+4. [Pedro Torres](https://github.com/Corfucinas): For Pull Request [#29](https://github.com/anmol098/waka-readme-stats/pull/29)
+5. [Aaron Meese](https://github.com/ajmeese7): For Pull Request [#45](https://github.com/anmol098/waka-readme-stats/pull/45)
+6. [Arnav Jindal](https://github.com/Daggy1234): For Pull Request [#48](https://github.com/anmol098/waka-readme-stats/pull/48)
+7. [Daniel Rowe](https://github.com/DanRowe1): For Pull Request [#57](https://github.com/anmol098/waka-readme-stats/pull/57)
+
+
+Special mention for those who are currently making their profile readme more awesome :smile: :tada:
+
+ - [Stanislas](https://github.com/angristan)
+
+ - [Pratik Kumar](https://github.com/pr2tik1)
+
+ - [Vladimir](https://github.com/sergeev-vn)
+
+ - [Pedro Torres](https://github.com/Corfucinas)
+
+ - [leverglowh](https://github.com/leverglowh)
+
+ - [patdc](https://github.com/patdc)
+
+ - [ๆๅฎขๆๆๆบ](https://github.com/meteor1993)
+
+ - [Fan()](https://github.com/Fanduzi)
+
+ - [Miller Camilo Vega](https://github.com/minoveaz)
+
+ - [XLor](https://github.com/yjl9903)
+
+ - [Jesse Okeya](https://github.com/jesseokeya)
+
+ - [anaiel](https://github.com/anaiel)
+
+ - [Dipto Mondal](https://github.com/diptomondal007)
+
+ - [Jerry F. Zhang](https://github.com/JerryFZhang)
+
+ - [Karan Singh](https://github.com/karan06126)
+
+ - [Erwin Lejeune](https://github.com/guilyx)
+
+ - [Manuel Cepeda](https://github.com/mecm1993)
+
+ - [Jonathan S](https://github.com/TGTGamer)
+
+ - [Tsotne Gvadzabia](https://github.com/RockiRider)
+
+ - [Miray](https://github.com/MirayXS)
+
+ - [Varad Patil](https://github.com/varadp2000)
+
+ - [Prabhat Singh](https://github.com/prabhatdev)
+
+ - [Nikhil](https://github.com/nikhilgorantla)
+
+ - [ๅคง็ฝ](https://github.com/2720851545)
+
+ - [Du Yizhuo](https://github.com/dyzdyz010)
+
+ - [Manas Talukdar](https://github.com/manastalukdar)
+
+ - [Simranjeet Singh](https://github.com/smrnjeet222)
+
+ - [Aaron Meese](https://github.com/ajmeese7)
+
+ - [Prasad Narkhede](https://github.com/p014ri5)
+
+ - [Manish Kushwaha](https://github.com/tzmanish)
+
+ - [Hedy Li](https://github.com/hedythedev)
+
+ - [SHIMIZU Taku](https://github.com/takuan-osho)
+
+ - [Jude Wilson](https://github.com/mr-winson)
+
+ - [Daniel Rowe](https://github.com/DanRowe1)
+
+ - [Muhammad Hassan Ahmed](https://github.com/hassan11196)
+
+ - [Alessandro Maggio](https://github.com/Tkd-Alex)
+
+
+
+
+- And you! If ever you are using it right now and you are not on the list please tell us by sending a [Special Mention](https://github.com/anmol098/waka-readme-stats/issues/new/choose) issue :blush: we are glad to add you in the list.
+
+
+Made with :heart: and Python ๐.
+
+# Inspired From
+
+> [Awesome Pinned Gists](https://github.com/matchai/awesome-pinned-gists)
+> [athul/waka-readme](https://github.com/athul/waka-readme)
+
+### This project need a **star** โญ from you โฅ.
diff --git a/action.yml b/action.yml
index 4292c10..01ee2df 100644
--- a/action.yml
+++ b/action.yml
@@ -1,87 +1,87 @@
-name: 'Profile Readme Development Stats'
-author: Anmol Pratap Singh
-description: 'Are you an early ๐ค or a night ๐ฆ? When are you most productive during the day? Let''s check out in your readme!'
-
-inputs:
- GH_TOKEN:
- description: 'GitHub access token with Repo scope'
- required: true
- default: ${{ github.token }}
-
- WAKATIME_API_KEY:
- description: 'Your Wakatime API Key'
- required: true
-
- SHOW_OS:
- required: false
- description: 'Show the list of OS Worked on In dev metrics'
- default: "True"
-
- SHOW_PROJECTS:
- required: false
- description: 'Show the list of projects worked on in dev metrics'
- default: "True"
-
- SHOW_EDITORS:
- required: false
- description: 'Show the Editors used in dev metrics'
- default: "True"
-
- SHOW_TIMEZONE:
- required: false
- description: 'Show the time zone in the dev metrics'
- default: "True"
-
- SHOW_COMMIT:
- required: false
- description: "Shows the number of commit graph in the dev metrics"
- default: "True"
-
- SHOW_LANGUAGE:
- required: false
- description: "Show the Coding language used in dev metrics"
- default: "True"
-
- SHOW_LINES_OF_CODE:
- required: false
- description: "Show the Total Lines of code written Badge till date"
- default: "False"
-
- SHOW_LANGUAGE_PER_REPO:
- required: false
- description: "Show language or framework used across different repository"
- default: "True"
-
- SHOW_LOC_CHART:
- required: false
- description: ""
- default: "True"
-
- SHOW_DAYS_OF_WEEK:
- required: false
- description: "show day of week you are most productive"
- default: "True"
-
- SHOW_PROFILE_VIEWS:
- required: false
- description: "Shows the current profile views"
- default: "True"
-
- SHOW_SHORT_INFO:
- required: false
- description: "Shows the short facts"
- default: "True"
-
- LOCALE:
- required: false
- description: "Show stats in your own language"
- default: "en"
-
-
-runs:
- using: 'docker'
- image: 'Dockerfile'
-
-branding:
- icon: 'activity'
+name: 'Profile Readme Development Stats'
+author: Anmol Pratap Singh
+description: 'Are you an early ๐ค or a night ๐ฆ? When are you most productive during the day? Let''s check out in your readme!'
+
+inputs:
+ GH_TOKEN:
+ description: 'GitHub access token with Repo scope'
+ required: true
+ default: ${{ github.token }}
+
+ WAKATIME_API_KEY:
+ description: 'Your Wakatime API Key'
+ required: true
+
+ SHOW_OS:
+ required: false
+ description: 'Show the list of OS Worked on In dev metrics'
+ default: "True"
+
+ SHOW_PROJECTS:
+ required: false
+ description: 'Show the list of projects worked on in dev metrics'
+ default: "True"
+
+ SHOW_EDITORS:
+ required: false
+ description: 'Show the Editors used in dev metrics'
+ default: "True"
+
+ SHOW_TIMEZONE:
+ required: false
+ description: 'Show the time zone in the dev metrics'
+ default: "True"
+
+ SHOW_COMMIT:
+ required: false
+ description: "Shows the number of commit graph in the dev metrics"
+ default: "True"
+
+ SHOW_LANGUAGE:
+ required: false
+ description: "Show the Coding language used in dev metrics"
+ default: "True"
+
+ SHOW_LINES_OF_CODE:
+ required: false
+ description: "Show the Total Lines of code written Badge till date"
+ default: "False"
+
+ SHOW_LANGUAGE_PER_REPO:
+ required: false
+ description: "Show language or framework used across different repository"
+ default: "True"
+
+ SHOW_LOC_CHART:
+ required: false
+ description: ""
+ default: "True"
+
+ SHOW_DAYS_OF_WEEK:
+ required: false
+ description: "show day of week you are most productive"
+ default: "True"
+
+ SHOW_PROFILE_VIEWS:
+ required: false
+ description: "Shows the current profile views"
+ default: "True"
+
+ SHOW_SHORT_INFO:
+ required: false
+ description: "Shows the short facts"
+ default: "True"
+
+ LOCALE:
+ required: false
+ description: "Show stats in your own language"
+ default: "en"
+
+
+runs:
+ using: 'docker'
+ image: 'Dockerfile'
+
+branding:
+ icon: 'activity'
color: 'orange'
\ No newline at end of file
diff --git a/colors.json b/colors.json
index bb8dd00..9414f15 100644
--- a/colors.json
+++ b/colors.json
@@ -1,1618 +1,1618 @@
-{
- "1C Enterprise": {
- "color": "#814CCC",
- "url": "https://github.com/trending?l=1C-Enterprise"
- },
- "4D": {
- "color": null,
- "url": "https://github.com/trending?l=4D"
- },
- "ABAP": {
- "color": "#E8274B",
- "url": "https://github.com/trending?l=ABAP"
- },
- "ActionScript": {
- "color": "#882B0F",
- "url": "https://github.com/trending?l=ActionScript"
- },
- "Ada": {
- "color": "#02f88c",
- "url": "https://github.com/trending?l=Ada"
- },
- "Agda": {
- "color": "#315665",
- "url": "https://github.com/trending?l=Agda"
- },
- "AGS Script": {
- "color": "#B9D9FF",
- "url": "https://github.com/trending?l=AGS-Script"
- },
- "Alloy": {
- "color": "#64C800",
- "url": "https://github.com/trending?l=Alloy"
- },
- "Alpine Abuild": {
- "color": null,
- "url": "https://github.com/trending?l=Alpine-Abuild"
- },
- "AMPL": {
- "color": "#E6EFBB",
- "url": "https://github.com/trending?l=AMPL"
- },
- "AngelScript": {
- "color": "#C7D7DC",
- "url": "https://github.com/trending?l=AngelScript"
- },
- "ANTLR": {
- "color": "#9DC3FF",
- "url": "https://github.com/trending?l=ANTLR"
- },
- "Apex": {
- "color": null,
- "url": "https://github.com/trending?l=Apex"
- },
- "API Blueprint": {
- "color": "#2ACCA8",
- "url": "https://github.com/trending?l=API-Blueprint"
- },
- "APL": {
- "color": "#5A8164",
- "url": "https://github.com/trending?l=APL"
- },
- "Apollo Guidance Computer": {
- "color": null,
- "url": "https://github.com/trending?l=Apollo-Guidance-Computer"
- },
- "AppleScript": {
- "color": "#101F1F",
- "url": "https://github.com/trending?l=AppleScript"
- },
- "Arc": {
- "color": "#aa2afe",
- "url": "https://github.com/trending?l=Arc"
- },
- "ASP": {
- "color": "#6a40fd",
- "url": "https://github.com/trending?l=ASP"
- },
- "AspectJ": {
- "color": "#a957b0",
- "url": "https://github.com/trending?l=AspectJ"
- },
- "Assembly": {
- "color": "#6E4C13",
- "url": "https://github.com/trending?l=Assembly"
- },
- "Asymptote": {
- "color": "#4a0c0c",
- "url": "https://github.com/trending?l=Asymptote"
- },
- "ATS": {
- "color": "#1ac620",
- "url": "https://github.com/trending?l=ATS"
- },
- "Augeas": {
- "color": null,
- "url": "https://github.com/trending?l=Augeas"
- },
- "AutoHotkey": {
- "color": "#6594b9",
- "url": "https://github.com/trending?l=AutoHotkey"
- },
- "AutoIt": {
- "color": "#1C3552",
- "url": "https://github.com/trending?l=AutoIt"
- },
- "Awk": {
- "color": null,
- "url": "https://github.com/trending?l=Awk"
- },
- "Ballerina": {
- "color": "#FF5000",
- "url": "https://github.com/trending?l=Ballerina"
- },
- "Batchfile": {
- "color": "#C1F12E",
- "url": "https://github.com/trending?l=Batchfile"
- },
- "Befunge": {
- "color": null,
- "url": "https://github.com/trending?l=Befunge"
- },
- "Bison": {
- "color": null,
- "url": "https://github.com/trending?l=Bison"
- },
- "BitBake": {
- "color": null,
- "url": "https://github.com/trending?l=BitBake"
- },
- "BlitzBasic": {
- "color": null,
- "url": "https://github.com/trending?l=BlitzBasic"
- },
- "BlitzMax": {
- "color": "#cd6400",
- "url": "https://github.com/trending?l=BlitzMax"
- },
- "Bluespec": {
- "color": null,
- "url": "https://github.com/trending?l=Bluespec"
- },
- "Boo": {
- "color": "#d4bec1",
- "url": "https://github.com/trending?l=Boo"
- },
- "Brainfuck": {
- "color": "#2F2530",
- "url": "https://github.com/trending?l=Brainfuck"
- },
- "Brightscript": {
- "color": null,
- "url": "https://github.com/trending?l=Brightscript"
- },
- "C": {
- "color": "#555555",
- "url": "https://github.com/trending?l=C"
- },
- "C#": {
- "color": "#178600",
- "url": "https://github.com/trending?l=Csharp"
- },
- "C++": {
- "color": "#f34b7d",
- "url": "https://github.com/trending?l=C++"
- },
- "C2hs Haskell": {
- "color": null,
- "url": "https://github.com/trending?l=C2hs-Haskell"
- },
- "Cap'n Proto": {
- "color": null,
- "url": "https://github.com/trending?l=Cap'n-Proto"
- },
- "CartoCSS": {
- "color": null,
- "url": "https://github.com/trending?l=CartoCSS"
- },
- "Ceylon": {
- "color": "#dfa535",
- "url": "https://github.com/trending?l=Ceylon"
- },
- "Chapel": {
- "color": "#8dc63f",
- "url": "https://github.com/trending?l=Chapel"
- },
- "Charity": {
- "color": null,
- "url": "https://github.com/trending?l=Charity"
- },
- "ChucK": {
- "color": null,
- "url": "https://github.com/trending?l=ChucK"
- },
- "Cirru": {
- "color": "#ccccff",
- "url": "https://github.com/trending?l=Cirru"
- },
- "Clarion": {
- "color": "#db901e",
- "url": "https://github.com/trending?l=Clarion"
- },
- "Clean": {
- "color": "#3F85AF",
- "url": "https://github.com/trending?l=Clean"
- },
- "Click": {
- "color": "#E4E6F3",
- "url": "https://github.com/trending?l=Click"
- },
- "CLIPS": {
- "color": null,
- "url": "https://github.com/trending?l=CLIPS"
- },
- "Clojure": {
- "color": "#db5855",
- "url": "https://github.com/trending?l=Clojure"
- },
- "CMake": {
- "color": null,
- "url": "https://github.com/trending?l=CMake"
- },
- "COBOL": {
- "color": null,
- "url": "https://github.com/trending?l=COBOL"
- },
- "CodeQL": {
- "color": null,
- "url": "https://github.com/trending?l=CodeQL"
- },
- "CoffeeScript": {
- "color": "#244776",
- "url": "https://github.com/trending?l=CoffeeScript"
- },
- "ColdFusion": {
- "color": "#ed2cd6",
- "url": "https://github.com/trending?l=ColdFusion"
- },
- "ColdFusion CFC": {
- "color": null,
- "url": "https://github.com/trending?l=ColdFusion-CFC"
- },
- "Common Lisp": {
- "color": "#3fb68b",
- "url": "https://github.com/trending?l=Common-Lisp"
- },
- "Common Workflow Language": {
- "color": "#B5314C",
- "url": "https://github.com/trending?l=Common-Workflow-Language"
- },
- "Component Pascal": {
- "color": "#B0CE4E",
- "url": "https://github.com/trending?l=Component-Pascal"
- },
- "Cool": {
- "color": null,
- "url": "https://github.com/trending?l=Cool"
- },
- "Coq": {
- "color": null,
- "url": "https://github.com/trending?l=Coq"
- },
- "Crystal": {
- "color": "#000100",
- "url": "https://github.com/trending?l=Crystal"
- },
- "Csound": {
- "color": null,
- "url": "https://github.com/trending?l=Csound"
- },
- "Csound Document": {
- "color": null,
- "url": "https://github.com/trending?l=Csound-Document"
- },
- "Csound Score": {
- "color": null,
- "url": "https://github.com/trending?l=Csound-Score"
- },
- "CSS": {
- "color": "#563d7c",
- "url": "https://github.com/trending?l=CSS"
- },
- "Cuda": {
- "color": "#3A4E3A",
- "url": "https://github.com/trending?l=Cuda"
- },
- "CWeb": {
- "color": null,
- "url": "https://github.com/trending?l=CWeb"
- },
- "Cycript": {
- "color": null,
- "url": "https://github.com/trending?l=Cycript"
- },
- "Cython": {
- "color": null,
- "url": "https://github.com/trending?l=Cython"
- },
- "D": {
- "color": "#ba595e",
- "url": "https://github.com/trending?l=D"
- },
- "Dafny": {
- "color": "#FFEC25",
- "url": "https://github.com/trending?l=Dafny"
- },
- "Dart": {
- "color": "#00B4AB",
- "url": "https://github.com/trending?l=Dart"
- },
- "DataWeave": {
- "color": "#003a52",
- "url": "https://github.com/trending?l=DataWeave"
- },
- "Dhall": {
- "color": "#dfafff",
- "url": "https://github.com/trending?l=Dhall"
- },
- "DIGITAL Command Language": {
- "color": null,
- "url": "https://github.com/trending?l=DIGITAL-Command-Language"
- },
- "DM": {
- "color": "#447265",
- "url": "https://github.com/trending?l=DM"
- },
- "Dockerfile": {
- "color": "#384d54",
- "url": "https://github.com/trending?l=Dockerfile"
- },
- "Dogescript": {
- "color": "#cca760",
- "url": "https://github.com/trending?l=Dogescript"
- },
- "DTrace": {
- "color": null,
- "url": "https://github.com/trending?l=DTrace"
- },
- "Dylan": {
- "color": "#6c616e",
- "url": "https://github.com/trending?l=Dylan"
- },
- "E": {
- "color": "#ccce35",
- "url": "https://github.com/trending?l=E"
- },
- "eC": {
- "color": "#913960",
- "url": "https://github.com/trending?l=eC"
- },
- "ECL": {
- "color": "#8a1267",
- "url": "https://github.com/trending?l=ECL"
- },
- "ECLiPSe": {
- "color": null,
- "url": "https://github.com/trending?l=ECLiPSe"
- },
- "Eiffel": {
- "color": "#946d57",
- "url": "https://github.com/trending?l=Eiffel"
- },
- "Elixir": {
- "color": "#6e4a7e",
- "url": "https://github.com/trending?l=Elixir"
- },
- "Elm": {
- "color": "#60B5CC",
- "url": "https://github.com/trending?l=Elm"
- },
- "Emacs Lisp": {
- "color": "#c065db",
- "url": "https://github.com/trending?l=Emacs-Lisp"
- },
- "EmberScript": {
- "color": "#FFF4F3",
- "url": "https://github.com/trending?l=EmberScript"
- },
- "EQ": {
- "color": "#a78649",
- "url": "https://github.com/trending?l=EQ"
- },
- "Erlang": {
- "color": "#B83998",
- "url": "https://github.com/trending?l=Erlang"
- },
- "F#": {
- "color": "#b845fc",
- "url": "https://github.com/trending?l=Fsharp"
- },
- "F*": {
- "color": "#572e30",
- "url": "https://github.com/trending?l=F*"
- },
- "Factor": {
- "color": "#636746",
- "url": "https://github.com/trending?l=Factor"
- },
- "Fancy": {
- "color": "#7b9db4",
- "url": "https://github.com/trending?l=Fancy"
- },
- "Fantom": {
- "color": "#14253c",
- "url": "https://github.com/trending?l=Fantom"
- },
- "Faust": {
- "color": "#c37240",
- "url": "https://github.com/trending?l=Faust"
- },
- "Filebench WML": {
- "color": null,
- "url": "https://github.com/trending?l=Filebench-WML"
- },
- "Filterscript": {
- "color": null,
- "url": "https://github.com/trending?l=Filterscript"
- },
- "fish": {
- "color": null,
- "url": "https://github.com/trending?l=fish"
- },
- "FLUX": {
- "color": "#88ccff",
- "url": "https://github.com/trending?l=FLUX"
- },
- "Forth": {
- "color": "#341708",
- "url": "https://github.com/trending?l=Forth"
- },
- "Fortran": {
- "color": "#4d41b1",
- "url": "https://github.com/trending?l=Fortran"
- },
- "Fortran Free Form": {
- "color": null,
- "url": "https://github.com/trending?l=Fortran-Free-Form"
- },
- "FreeMarker": {
- "color": "#0050b2",
- "url": "https://github.com/trending?l=FreeMarker"
- },
- "Frege": {
- "color": "#00cafe",
- "url": "https://github.com/trending?l=Frege"
- },
- "Futhark": {
- "color": "#5f021f",
- "url": "https://github.com/trending?l=Futhark"
- },
- "G-code": {
- "color": "#D08CF2",
- "url": "https://github.com/trending?l=G-code"
- },
- "Game Maker Language": {
- "color": "#71b417",
- "url": "https://github.com/trending?l=Game-Maker-Language"
- },
- "GAML": {
- "color": "#FFC766",
- "url": "https://github.com/trending?l=GAML"
- },
- "GAMS": {
- "color": null,
- "url": "https://github.com/trending?l=GAMS"
- },
- "GAP": {
- "color": null,
- "url": "https://github.com/trending?l=GAP"
- },
- "GCC Machine Description": {
- "color": null,
- "url": "https://github.com/trending?l=GCC-Machine-Description"
- },
- "GDB": {
- "color": null,
- "url": "https://github.com/trending?l=GDB"
- },
- "GDScript": {
- "color": "#355570",
- "url": "https://github.com/trending?l=GDScript"
- },
- "Genie": {
- "color": "#fb855d",
- "url": "https://github.com/trending?l=Genie"
- },
- "Genshi": {
- "color": null,
- "url": "https://github.com/trending?l=Genshi"
- },
- "Gentoo Ebuild": {
- "color": null,
- "url": "https://github.com/trending?l=Gentoo-Ebuild"
- },
- "Gentoo Eclass": {
- "color": null,
- "url": "https://github.com/trending?l=Gentoo-Eclass"
- },
- "Gherkin": {
- "color": "#5B2063",
- "url": "https://github.com/trending?l=Gherkin"
- },
- "GLSL": {
- "color": null,
- "url": "https://github.com/trending?l=GLSL"
- },
- "Glyph": {
- "color": "#c1ac7f",
- "url": "https://github.com/trending?l=Glyph"
- },
- "Gnuplot": {
- "color": "#f0a9f0",
- "url": "https://github.com/trending?l=Gnuplot"
- },
- "Go": {
- "color": "#00ADD8",
- "url": "https://github.com/trending?l=Go"
- },
- "Golo": {
- "color": "#88562A",
- "url": "https://github.com/trending?l=Golo"
- },
- "Gosu": {
- "color": "#82937f",
- "url": "https://github.com/trending?l=Gosu"
- },
- "Grace": {
- "color": null,
- "url": "https://github.com/trending?l=Grace"
- },
- "Grammatical Framework": {
- "color": "#79aa7a",
- "url": "https://github.com/trending?l=Grammatical-Framework"
- },
- "Groovy": {
- "color": "#e69f56",
- "url": "https://github.com/trending?l=Groovy"
- },
- "Groovy Server Pages": {
- "color": null,
- "url": "https://github.com/trending?l=Groovy-Server-Pages"
- },
- "Hack": {
- "color": "#878787",
- "url": "https://github.com/trending?l=Hack"
- },
- "Harbour": {
- "color": "#0e60e3",
- "url": "https://github.com/trending?l=Harbour"
- },
- "Haskell": {
- "color": "#5e5086",
- "url": "https://github.com/trending?l=Haskell"
- },
- "Haxe": {
- "color": "#df7900",
- "url": "https://github.com/trending?l=Haxe"
- },
- "HCL": {
- "color": null,
- "url": "https://github.com/trending?l=HCL"
- },
- "HiveQL": {
- "color": "#dce200",
- "url": "https://github.com/trending?l=HiveQL"
- },
- "HLSL": {
- "color": null,
- "url": "https://github.com/trending?l=HLSL"
- },
- "HolyC": {
- "color": "#ffefaf",
- "url": "https://github.com/trending?l=HolyC"
- },
- "HTML": {
- "color": "#e34c26",
- "url": "https://github.com/trending?l=HTML"
- },
- "Hy": {
- "color": "#7790B2",
- "url": "https://github.com/trending?l=Hy"
- },
- "HyPhy": {
- "color": null,
- "url": "https://github.com/trending?l=HyPhy"
- },
- "IDL": {
- "color": "#a3522f",
- "url": "https://github.com/trending?l=IDL"
- },
- "Idris": {
- "color": "#b30000",
- "url": "https://github.com/trending?l=Idris"
- },
- "IGOR Pro": {
- "color": "#0000cc",
- "url": "https://github.com/trending?l=IGOR-Pro"
- },
- "Inform 7": {
- "color": null,
- "url": "https://github.com/trending?l=Inform-7"
- },
- "Inno Setup": {
- "color": null,
- "url": "https://github.com/trending?l=Inno-Setup"
- },
- "Io": {
- "color": "#a9188d",
- "url": "https://github.com/trending?l=Io"
- },
- "Ioke": {
- "color": "#078193",
- "url": "https://github.com/trending?l=Ioke"
- },
- "Isabelle": {
- "color": "#FEFE00",
- "url": "https://github.com/trending?l=Isabelle"
- },
- "Isabelle ROOT": {
- "color": null,
- "url": "https://github.com/trending?l=Isabelle-ROOT"
- },
- "J": {
- "color": "#9EEDFF",
- "url": "https://github.com/trending?l=J"
- },
- "Jasmin": {
- "color": null,
- "url": "https://github.com/trending?l=Jasmin"
- },
- "Java": {
- "color": "#b07219",
- "url": "https://github.com/trending?l=Java"
- },
- "Java Server Pages": {
- "color": null,
- "url": "https://github.com/trending?l=Java-Server-Pages"
- },
- "JavaScript": {
- "color": "#f1e05a",
- "url": "https://github.com/trending?l=JavaScript"
- },
- "JavaScript+ERB": {
- "color": null,
- "url": "https://github.com/trending?l=JavaScript+ERB"
- },
- "JFlex": {
- "color": null,
- "url": "https://github.com/trending?l=JFlex"
- },
- "Jison": {
- "color": null,
- "url": "https://github.com/trending?l=Jison"
- },
- "Jison Lex": {
- "color": null,
- "url": "https://github.com/trending?l=Jison-Lex"
- },
- "Jolie": {
- "color": "#843179",
- "url": "https://github.com/trending?l=Jolie"
- },
- "JSONiq": {
- "color": "#40d47e",
- "url": "https://github.com/trending?l=JSONiq"
- },
- "Jsonnet": {
- "color": "#0064bd",
- "url": "https://github.com/trending?l=Jsonnet"
- },
- "JSX": {
- "color": null,
- "url": "https://github.com/trending?l=JSX"
- },
- "Julia": {
- "color": "#a270ba",
- "url": "https://github.com/trending?l=Julia"
- },
- "Jupyter Notebook": {
- "color": "#DA5B0B",
- "url": "https://github.com/trending?l=Jupyter-Notebook"
- },
- "Kotlin": {
- "color": "#F18E33",
- "url": "https://github.com/trending?l=Kotlin"
- },
- "KRL": {
- "color": "#28430A",
- "url": "https://github.com/trending?l=KRL"
- },
- "LabVIEW": {
- "color": null,
- "url": "https://github.com/trending?l=LabVIEW"
- },
- "Lasso": {
- "color": "#999999",
- "url": "https://github.com/trending?l=Lasso"
- },
- "Lean": {
- "color": null,
- "url": "https://github.com/trending?l=Lean"
- },
- "Lex": {
- "color": "#DBCA00",
- "url": "https://github.com/trending?l=Lex"
- },
- "LFE": {
- "color": "#4C3023",
- "url": "https://github.com/trending?l=LFE"
- },
- "LilyPond": {
- "color": null,
- "url": "https://github.com/trending?l=LilyPond"
- },
- "Limbo": {
- "color": null,
- "url": "https://github.com/trending?l=Limbo"
- },
- "Literate Agda": {
- "color": null,
- "url": "https://github.com/trending?l=Literate-Agda"
- },
- "Literate CoffeeScript": {
- "color": null,
- "url": "https://github.com/trending?l=Literate-CoffeeScript"
- },
- "Literate Haskell": {
- "color": null,
- "url": "https://github.com/trending?l=Literate-Haskell"
- },
- "LiveScript": {
- "color": "#499886",
- "url": "https://github.com/trending?l=LiveScript"
- },
- "LLVM": {
- "color": "#185619",
- "url": "https://github.com/trending?l=LLVM"
- },
- "Logos": {
- "color": null,
- "url": "https://github.com/trending?l=Logos"
- },
- "Logtalk": {
- "color": null,
- "url": "https://github.com/trending?l=Logtalk"
- },
- "LOLCODE": {
- "color": "#cc9900",
- "url": "https://github.com/trending?l=LOLCODE"
- },
- "LookML": {
- "color": "#652B81",
- "url": "https://github.com/trending?l=LookML"
- },
- "LoomScript": {
- "color": null,
- "url": "https://github.com/trending?l=LoomScript"
- },
- "LSL": {
- "color": "#3d9970",
- "url": "https://github.com/trending?l=LSL"
- },
- "Lua": {
- "color": "#000080",
- "url": "https://github.com/trending?l=Lua"
- },
- "M": {
- "color": null,
- "url": "https://github.com/trending?l=M"
- },
- "M4": {
- "color": null,
- "url": "https://github.com/trending?l=M4"
- },
- "M4Sugar": {
- "color": null,
- "url": "https://github.com/trending?l=M4Sugar"
- },
- "Macaulay2": {
- "color": "#d8ffff",
- "url": "https://github.com/trending?l=Macaulay2"
- },
- "Makefile": {
- "color": "#427819",
- "url": "https://github.com/trending?l=Makefile"
- },
- "Mako": {
- "color": null,
- "url": "https://github.com/trending?l=Mako"
- },
- "Mask": {
- "color": "#f97732",
- "url": "https://github.com/trending?l=Mask"
- },
- "Mathematica": {
- "color": null,
- "url": "https://github.com/trending?l=Mathematica"
- },
- "MATLAB": {
- "color": "#e16737",
- "url": "https://github.com/trending?l=MATLAB"
- },
- "Max": {
- "color": "#c4a79c",
- "url": "https://github.com/trending?l=Max"
- },
- "MAXScript": {
- "color": "#00a6a6",
- "url": "https://github.com/trending?l=MAXScript"
- },
- "mcfunction": {
- "color": "#E22837",
- "url": "https://github.com/trending?l=mcfunction"
- },
- "Mercury": {
- "color": "#ff2b2b",
- "url": "https://github.com/trending?l=Mercury"
- },
- "Meson": {
- "color": "#007800",
- "url": "https://github.com/trending?l=Meson"
- },
- "Metal": {
- "color": "#8f14e9",
- "url": "https://github.com/trending?l=Metal"
- },
- "MiniD": {
- "color": null,
- "url": "https://github.com/trending?l=MiniD"
- },
- "Mirah": {
- "color": "#c7a938",
- "url": "https://github.com/trending?l=Mirah"
- },
- "mIRC Script": {
- "color": "#926059",
- "url": "https://github.com/trending?l=mIRC-Script"
- },
- "MLIR": {
- "color": "#5EC8DB",
- "url": "https://github.com/trending?l=MLIR"
- },
- "Modelica": {
- "color": null,
- "url": "https://github.com/trending?l=Modelica"
- },
- "Modula-2": {
- "color": null,
- "url": "https://github.com/trending?l=Modula-2"
- },
- "Modula-3": {
- "color": "#223388",
- "url": "https://github.com/trending?l=Modula-3"
- },
- "Module Management System": {
- "color": null,
- "url": "https://github.com/trending?l=Module-Management-System"
- },
- "Monkey": {
- "color": null,
- "url": "https://github.com/trending?l=Monkey"
- },
- "Moocode": {
- "color": null,
- "url": "https://github.com/trending?l=Moocode"
- },
- "MoonScript": {
- "color": null,
- "url": "https://github.com/trending?l=MoonScript"
- },
- "Motorola 68K Assembly": {
- "color": null,
- "url": "https://github.com/trending?l=Motorola-68K-Assembly"
- },
- "MQL4": {
- "color": "#62A8D6",
- "url": "https://github.com/trending?l=MQL4"
- },
- "MQL5": {
- "color": "#4A76B8",
- "url": "https://github.com/trending?l=MQL5"
- },
- "MTML": {
- "color": "#b7e1f4",
- "url": "https://github.com/trending?l=MTML"
- },
- "MUF": {
- "color": null,
- "url": "https://github.com/trending?l=MUF"
- },
- "mupad": {
- "color": null,
- "url": "https://github.com/trending?l=mupad"
- },
- "Myghty": {
- "color": null,
- "url": "https://github.com/trending?l=Myghty"
- },
- "NASL": {
- "color": null,
- "url": "https://github.com/trending?l=NASL"
- },
- "NCL": {
- "color": "#28431f",
- "url": "https://github.com/trending?l=NCL"
- },
- "Nearley": {
- "color": "#990000",
- "url": "https://github.com/trending?l=Nearley"
- },
- "Nemerle": {
- "color": "#3d3c6e",
- "url": "https://github.com/trending?l=Nemerle"
- },
- "nesC": {
- "color": "#94B0C7",
- "url": "https://github.com/trending?l=nesC"
- },
- "NetLinx": {
- "color": "#0aa0ff",
- "url": "https://github.com/trending?l=NetLinx"
- },
- "NetLinx+ERB": {
- "color": "#747faa",
- "url": "https://github.com/trending?l=NetLinx+ERB"
- },
- "NetLogo": {
- "color": "#ff6375",
- "url": "https://github.com/trending?l=NetLogo"
- },
- "NewLisp": {
- "color": "#87AED7",
- "url": "https://github.com/trending?l=NewLisp"
- },
- "Nextflow": {
- "color": "#3ac486",
- "url": "https://github.com/trending?l=Nextflow"
- },
- "Nim": {
- "color": "#ffc200",
- "url": "https://github.com/trending?l=Nim"
- },
- "Nit": {
- "color": "#009917",
- "url": "https://github.com/trending?l=Nit"
- },
- "Nix": {
- "color": "#7e7eff",
- "url": "https://github.com/trending?l=Nix"
- },
- "NSIS": {
- "color": null,
- "url": "https://github.com/trending?l=NSIS"
- },
- "Nu": {
- "color": "#c9df40",
- "url": "https://github.com/trending?l=Nu"
- },
- "NumPy": {
- "color": null,
- "url": "https://github.com/trending?l=NumPy"
- },
- "Objective-C": {
- "color": "#438eff",
- "url": "https://github.com/trending?l=Objective-C"
- },
- "Objective-C++": {
- "color": "#6866fb",
- "url": "https://github.com/trending?l=Objective-C++"
- },
- "Objective-J": {
- "color": "#ff0c5a",
- "url": "https://github.com/trending?l=Objective-J"
- },
- "ObjectScript": {
- "color": "#424893",
- "url": "https://github.com/trending?l=ObjectScript"
- },
- "OCaml": {
- "color": "#3be133",
- "url": "https://github.com/trending?l=OCaml"
- },
- "Odin": {
- "color": "#60AFFE",
- "url": "https://github.com/trending?l=Odin"
- },
- "Omgrofl": {
- "color": "#cabbff",
- "url": "https://github.com/trending?l=Omgrofl"
- },
- "ooc": {
- "color": "#b0b77e",
- "url": "https://github.com/trending?l=ooc"
- },
- "Opa": {
- "color": null,
- "url": "https://github.com/trending?l=Opa"
- },
- "Opal": {
- "color": "#f7ede0",
- "url": "https://github.com/trending?l=Opal"
- },
- "Open Policy Agent": {
- "color": null,
- "url": "https://github.com/trending?l=Open-Policy-Agent"
- },
- "OpenCL": {
- "color": null,
- "url": "https://github.com/trending?l=OpenCL"
- },
- "OpenEdge ABL": {
- "color": null,
- "url": "https://github.com/trending?l=OpenEdge-ABL"
- },
- "OpenQASM": {
- "color": "#AA70FF",
- "url": "https://github.com/trending?l=OpenQASM"
- },
- "OpenRC runscript": {
- "color": null,
- "url": "https://github.com/trending?l=OpenRC-runscript"
- },
- "OpenSCAD": {
- "color": null,
- "url": "https://github.com/trending?l=OpenSCAD"
- },
- "Ox": {
- "color": null,
- "url": "https://github.com/trending?l=Ox"
- },
- "Oxygene": {
- "color": "#cdd0e3",
- "url": "https://github.com/trending?l=Oxygene"
- },
- "Oz": {
- "color": "#fab738",
- "url": "https://github.com/trending?l=Oz"
- },
- "P4": {
- "color": "#7055b5",
- "url": "https://github.com/trending?l=P4"
- },
- "Pan": {
- "color": "#cc0000",
- "url": "https://github.com/trending?l=Pan"
- },
- "Papyrus": {
- "color": "#6600cc",
- "url": "https://github.com/trending?l=Papyrus"
- },
- "Parrot": {
- "color": "#f3ca0a",
- "url": "https://github.com/trending?l=Parrot"
- },
- "Parrot Assembly": {
- "color": null,
- "url": "https://github.com/trending?l=Parrot-Assembly"
- },
- "Parrot Internal Representation": {
- "color": null,
- "url": "https://github.com/trending?l=Parrot-Internal-Representation"
- },
- "Pascal": {
- "color": "#E3F171",
- "url": "https://github.com/trending?l=Pascal"
- },
- "Pawn": {
- "color": "#dbb284",
- "url": "https://github.com/trending?l=Pawn"
- },
- "Pep8": {
- "color": "#C76F5B",
- "url": "https://github.com/trending?l=Pep8"
- },
- "Perl": {
- "color": "#0298c3",
- "url": "https://github.com/trending?l=Perl"
- },
- "PHP": {
- "color": "#4F5D95",
- "url": "https://github.com/trending?l=PHP"
- },
- "PicoLisp": {
- "color": null,
- "url": "https://github.com/trending?l=PicoLisp"
- },
- "PigLatin": {
- "color": "#fcd7de",
- "url": "https://github.com/trending?l=PigLatin"
- },
- "Pike": {
- "color": "#005390",
- "url": "https://github.com/trending?l=Pike"
- },
- "PLpgSQL": {
- "color": null,
- "url": "https://github.com/trending?l=PLpgSQL"
- },
- "PLSQL": {
- "color": "#dad8d8",
- "url": "https://github.com/trending?l=PLSQL"
- },
- "PogoScript": {
- "color": "#d80074",
- "url": "https://github.com/trending?l=PogoScript"
- },
- "Pony": {
- "color": null,
- "url": "https://github.com/trending?l=Pony"
- },
- "PostScript": {
- "color": "#da291c",
- "url": "https://github.com/trending?l=PostScript"
- },
- "POV-Ray SDL": {
- "color": null,
- "url": "https://github.com/trending?l=POV-Ray-SDL"
- },
- "PowerBuilder": {
- "color": "#8f0f8d",
- "url": "https://github.com/trending?l=PowerBuilder"
- },
- "PowerShell": {
- "color": "#012456",
- "url": "https://github.com/trending?l=PowerShell"
- },
- "Processing": {
- "color": "#0096D8",
- "url": "https://github.com/trending?l=Processing"
- },
- "Prolog": {
- "color": "#74283c",
- "url": "https://github.com/trending?l=Prolog"
- },
- "Propeller Spin": {
- "color": "#7fa2a7",
- "url": "https://github.com/trending?l=Propeller-Spin"
- },
- "Puppet": {
- "color": "#302B6D",
- "url": "https://github.com/trending?l=Puppet"
- },
- "PureBasic": {
- "color": "#5a6986",
- "url": "https://github.com/trending?l=PureBasic"
- },
- "PureScript": {
- "color": "#1D222D",
- "url": "https://github.com/trending?l=PureScript"
- },
- "Python": {
- "color": "#3572A5",
- "url": "https://github.com/trending?l=Python"
- },
- "Python console": {
- "color": null,
- "url": "https://github.com/trending?l=Python-console"
- },
- "q": {
- "color": "#0040cd",
- "url": "https://github.com/trending?l=q"
- },
- "Q#": {
- "color": "#fed659",
- "url": "https://github.com/trending?l=Qsharp"
- },
- "QMake": {
- "color": null,
- "url": "https://github.com/trending?l=QMake"
- },
- "QML": {
- "color": "#44a51c",
- "url": "https://github.com/trending?l=QML"
- },
- "Qt Script": {
- "color": "#00b841",
- "url": "https://github.com/trending?l=Qt-Script"
- },
- "Quake": {
- "color": "#882233",
- "url": "https://github.com/trending?l=Quake"
- },
- "R": {
- "color": "#198CE7",
- "url": "https://github.com/trending?l=R"
- },
- "Racket": {
- "color": "#3c5caa",
- "url": "https://github.com/trending?l=Racket"
- },
- "Ragel": {
- "color": "#9d5200",
- "url": "https://github.com/trending?l=Ragel"
- },
- "Raku": {
- "color": "#0000fb",
- "url": "https://github.com/trending?l=Raku"
- },
- "RAML": {
- "color": "#77d9fb",
- "url": "https://github.com/trending?l=RAML"
- },
- "Rascal": {
- "color": "#fffaa0",
- "url": "https://github.com/trending?l=Rascal"
- },
- "REALbasic": {
- "color": null,
- "url": "https://github.com/trending?l=REALbasic"
- },
- "Reason": {
- "color": "#ff5847",
- "url": "https://github.com/trending?l=Reason"
- },
- "Rebol": {
- "color": "#358a5b",
- "url": "https://github.com/trending?l=Rebol"
- },
- "Red": {
- "color": "#f50000",
- "url": "https://github.com/trending?l=Red"
- },
- "Redcode": {
- "color": null,
- "url": "https://github.com/trending?l=Redcode"
- },
- "Ren'Py": {
- "color": "#ff7f7f",
- "url": "https://github.com/trending?l=Ren'Py"
- },
- "RenderScript": {
- "color": null,
- "url": "https://github.com/trending?l=RenderScript"
- },
- "REXX": {
- "color": null,
- "url": "https://github.com/trending?l=REXX"
- },
- "Ring": {
- "color": "#2D54CB",
- "url": "https://github.com/trending?l=Ring"
- },
- "Riot": {
- "color": "#A71E49",
- "url": "https://github.com/trending?l=Riot"
- },
- "RobotFramework": {
- "color": null,
- "url": "https://github.com/trending?l=RobotFramework"
- },
- "Roff": {
- "color": "#ecdebe",
- "url": "https://github.com/trending?l=Roff"
- },
- "Rouge": {
- "color": "#cc0088",
- "url": "https://github.com/trending?l=Rouge"
- },
- "RPC": {
- "color": null,
- "url": "https://github.com/trending?l=RPC"
- },
- "Ruby": {
- "color": "#701516",
- "url": "https://github.com/trending?l=Ruby"
- },
- "RUNOFF": {
- "color": "#665a4e",
- "url": "https://github.com/trending?l=RUNOFF"
- },
- "Rust": {
- "color": "#dea584",
- "url": "https://github.com/trending?l=Rust"
- },
- "Sage": {
- "color": null,
- "url": "https://github.com/trending?l=Sage"
- },
- "SaltStack": {
- "color": "#646464",
- "url": "https://github.com/trending?l=SaltStack"
- },
- "SAS": {
- "color": "#B34936",
- "url": "https://github.com/trending?l=SAS"
- },
- "Scala": {
- "color": "#c22d40",
- "url": "https://github.com/trending?l=Scala"
- },
- "Scheme": {
- "color": "#1e4aec",
- "url": "https://github.com/trending?l=Scheme"
- },
- "Scilab": {
- "color": null,
- "url": "https://github.com/trending?l=Scilab"
- },
- "sed": {
- "color": "#64b970",
- "url": "https://github.com/trending?l=sed"
- },
- "Self": {
- "color": "#0579aa",
- "url": "https://github.com/trending?l=Self"
- },
- "ShaderLab": {
- "color": null,
- "url": "https://github.com/trending?l=ShaderLab"
- },
- "Shell": {
- "color": "#89e051",
- "url": "https://github.com/trending?l=Shell"
- },
- "ShellSession": {
- "color": null,
- "url": "https://github.com/trending?l=ShellSession"
- },
- "Shen": {
- "color": "#120F14",
- "url": "https://github.com/trending?l=Shen"
- },
- "Sieve": {
- "color": null,
- "url": "https://github.com/trending?l=Sieve"
- },
- "Slash": {
- "color": "#007eff",
- "url": "https://github.com/trending?l=Slash"
- },
- "Slice": {
- "color": "#003fa2",
- "url": "https://github.com/trending?l=Slice"
- },
- "Smali": {
- "color": null,
- "url": "https://github.com/trending?l=Smali"
- },
- "Smalltalk": {
- "color": "#596706",
- "url": "https://github.com/trending?l=Smalltalk"
- },
- "Smarty": {
- "color": null,
- "url": "https://github.com/trending?l=Smarty"
- },
- "SmPL": {
- "color": "#c94949",
- "url": "https://github.com/trending?l=SmPL"
- },
- "SMT": {
- "color": null,
- "url": "https://github.com/trending?l=SMT"
- },
- "Solidity": {
- "color": "#AA6746",
- "url": "https://github.com/trending?l=Solidity"
- },
- "SourcePawn": {
- "color": "#5c7611",
- "url": "https://github.com/trending?l=SourcePawn"
- },
- "SQF": {
- "color": "#3F3F3F",
- "url": "https://github.com/trending?l=SQF"
- },
- "SQLPL": {
- "color": null,
- "url": "https://github.com/trending?l=SQLPL"
- },
- "Squirrel": {
- "color": "#800000",
- "url": "https://github.com/trending?l=Squirrel"
- },
- "SRecode Template": {
- "color": "#348a34",
- "url": "https://github.com/trending?l=SRecode-Template"
- },
- "Stan": {
- "color": "#b2011d",
- "url": "https://github.com/trending?l=Stan"
- },
- "Standard ML": {
- "color": "#dc566d",
- "url": "https://github.com/trending?l=Standard-ML"
- },
- "Starlark": {
- "color": "#76d275",
- "url": "https://github.com/trending?l=Starlark"
- },
- "Stata": {
- "color": null,
- "url": "https://github.com/trending?l=Stata"
- },
- "SuperCollider": {
- "color": "#46390b",
- "url": "https://github.com/trending?l=SuperCollider"
- },
- "Swift": {
- "color": "#ffac45",
- "url": "https://github.com/trending?l=Swift"
- },
- "SWIG": {
- "color": null,
- "url": "https://github.com/trending?l=SWIG"
- },
- "SystemVerilog": {
- "color": "#DAE1C2",
- "url": "https://github.com/trending?l=SystemVerilog"
- },
- "Tcl": {
- "color": "#e4cc98",
- "url": "https://github.com/trending?l=Tcl"
- },
- "Tcsh": {
- "color": null,
- "url": "https://github.com/trending?l=Tcsh"
- },
- "Terra": {
- "color": "#00004c",
- "url": "https://github.com/trending?l=Terra"
- },
- "TeX": {
- "color": "#3D6117",
- "url": "https://github.com/trending?l=TeX"
- },
- "Thrift": {
- "color": null,
- "url": "https://github.com/trending?l=Thrift"
- },
- "TI Program": {
- "color": "#A0AA87",
- "url": "https://github.com/trending?l=TI-Program"
- },
- "TLA": {
- "color": null,
- "url": "https://github.com/trending?l=TLA"
- },
- "TSQL": {
- "color": null,
- "url": "https://github.com/trending?l=TSQL"
- },
- "TSX": {
- "color": null,
- "url": "https://github.com/trending?l=TSX"
- },
- "Turing": {
- "color": "#cf142b",
- "url": "https://github.com/trending?l=Turing"
- },
- "TXL": {
- "color": null,
- "url": "https://github.com/trending?l=TXL"
- },
- "TypeScript": {
- "color": "#2b7489",
- "url": "https://github.com/trending?l=TypeScript"
- },
- "Unified Parallel C": {
- "color": null,
- "url": "https://github.com/trending?l=Unified-Parallel-C"
- },
- "Unix Assembly": {
- "color": null,
- "url": "https://github.com/trending?l=Unix-Assembly"
- },
- "Uno": {
- "color": null,
- "url": "https://github.com/trending?l=Uno"
- },
- "UnrealScript": {
- "color": "#a54c4d",
- "url": "https://github.com/trending?l=UnrealScript"
- },
- "UrWeb": {
- "color": null,
- "url": "https://github.com/trending?l=UrWeb"
- },
- "V": {
- "color": "#5d87bd",
- "url": "https://github.com/trending?l=V"
- },
- "Vala": {
- "color": "#fbe5cd",
- "url": "https://github.com/trending?l=Vala"
- },
- "VBA": {
- "color": "#867db1",
- "url": "https://github.com/trending?l=VBA"
- },
- "VBScript": {
- "color": "#15dcdc",
- "url": "https://github.com/trending?l=VBScript"
- },
- "VCL": {
- "color": "#148AA8",
- "url": "https://github.com/trending?l=VCL"
- },
- "Verilog": {
- "color": "#b2b7f8",
- "url": "https://github.com/trending?l=Verilog"
- },
- "VHDL": {
- "color": "#adb2cb",
- "url": "https://github.com/trending?l=VHDL"
- },
- "Vim script": {
- "color": "#199f4b",
- "url": "https://github.com/trending?l=Vim-script"
- },
- "Visual Basic .NET": {
- "color": "#945db7",
- "url": "https://github.com/trending?l=Visual-Basic-.NET"
- },
- "Volt": {
- "color": "#1F1F1F",
- "url": "https://github.com/trending?l=Volt"
- },
- "Vue": {
- "color": "#2c3e50",
- "url": "https://github.com/trending?l=Vue"
- },
- "wdl": {
- "color": "#42f1f4",
- "url": "https://github.com/trending?l=wdl"
- },
- "WebAssembly": {
- "color": "#04133b",
- "url": "https://github.com/trending?l=WebAssembly"
- },
- "WebIDL": {
- "color": null,
- "url": "https://github.com/trending?l=WebIDL"
- },
- "wisp": {
- "color": "#7582D1",
- "url": "https://github.com/trending?l=wisp"
- },
- "Wollok": {
- "color": "#a23738",
- "url": "https://github.com/trending?l=Wollok"
- },
- "X10": {
- "color": "#4B6BEF",
- "url": "https://github.com/trending?l=X10"
- },
- "xBase": {
- "color": "#403a40",
- "url": "https://github.com/trending?l=xBase"
- },
- "XC": {
- "color": "#99DA07",
- "url": "https://github.com/trending?l=XC"
- },
- "Xojo": {
- "color": null,
- "url": "https://github.com/trending?l=Xojo"
- },
- "XProc": {
- "color": null,
- "url": "https://github.com/trending?l=XProc"
- },
- "XQuery": {
- "color": "#5232e7",
- "url": "https://github.com/trending?l=XQuery"
- },
- "XS": {
- "color": null,
- "url": "https://github.com/trending?l=XS"
- },
- "XSLT": {
- "color": "#EB8CEB",
- "url": "https://github.com/trending?l=XSLT"
- },
- "Xtend": {
- "color": null,
- "url": "https://github.com/trending?l=Xtend"
- },
- "Yacc": {
- "color": "#4B6C4B",
- "url": "https://github.com/trending?l=Yacc"
- },
- "YARA": {
- "color": "#220000",
- "url": "https://github.com/trending?l=YARA"
- },
- "YASnippet": {
- "color": "#32AB90",
- "url": "https://github.com/trending?l=YASnippet"
- },
- "ZAP": {
- "color": "#0d665e",
- "url": "https://github.com/trending?l=ZAP"
- },
- "Zeek": {
- "color": null,
- "url": "https://github.com/trending?l=Zeek"
- },
- "ZenScript": {
- "color": "#00BCD1",
- "url": "https://github.com/trending?l=ZenScript"
- },
- "Zephir": {
- "color": "#118f9e",
- "url": "https://github.com/trending?l=Zephir"
- },
- "Zig": {
- "color": "#ec915c",
- "url": "https://github.com/trending?l=Zig"
- },
- "ZIL": {
- "color": "#dc75e5",
- "url": "https://github.com/trending?l=ZIL"
- },
- "Zimpl": {
- "color": null,
- "url": "https://github.com/trending?l=Zimpl"
- }
+{
+ "1C Enterprise": {
+ "color": "#814CCC",
+ "url": "https://github.com/trending?l=1C-Enterprise"
+ },
+ "4D": {
+ "color": null,
+ "url": "https://github.com/trending?l=4D"
+ },
+ "ABAP": {
+ "color": "#E8274B",
+ "url": "https://github.com/trending?l=ABAP"
+ },
+ "ActionScript": {
+ "color": "#882B0F",
+ "url": "https://github.com/trending?l=ActionScript"
+ },
+ "Ada": {
+ "color": "#02f88c",
+ "url": "https://github.com/trending?l=Ada"
+ },
+ "Agda": {
+ "color": "#315665",
+ "url": "https://github.com/trending?l=Agda"
+ },
+ "AGS Script": {
+ "color": "#B9D9FF",
+ "url": "https://github.com/trending?l=AGS-Script"
+ },
+ "Alloy": {
+ "color": "#64C800",
+ "url": "https://github.com/trending?l=Alloy"
+ },
+ "Alpine Abuild": {
+ "color": null,
+ "url": "https://github.com/trending?l=Alpine-Abuild"
+ },
+ "AMPL": {
+ "color": "#E6EFBB",
+ "url": "https://github.com/trending?l=AMPL"
+ },
+ "AngelScript": {
+ "color": "#C7D7DC",
+ "url": "https://github.com/trending?l=AngelScript"
+ },
+ "ANTLR": {
+ "color": "#9DC3FF",
+ "url": "https://github.com/trending?l=ANTLR"
+ },
+ "Apex": {
+ "color": null,
+ "url": "https://github.com/trending?l=Apex"
+ },
+ "API Blueprint": {
+ "color": "#2ACCA8",
+ "url": "https://github.com/trending?l=API-Blueprint"
+ },
+ "APL": {
+ "color": "#5A8164",
+ "url": "https://github.com/trending?l=APL"
+ },
+ "Apollo Guidance Computer": {
+ "color": null,
+ "url": "https://github.com/trending?l=Apollo-Guidance-Computer"
+ },
+ "AppleScript": {
+ "color": "#101F1F",
+ "url": "https://github.com/trending?l=AppleScript"
+ },
+ "Arc": {
+ "color": "#aa2afe",
+ "url": "https://github.com/trending?l=Arc"
+ },
+ "ASP": {
+ "color": "#6a40fd",
+ "url": "https://github.com/trending?l=ASP"
+ },
+ "AspectJ": {
+ "color": "#a957b0",
+ "url": "https://github.com/trending?l=AspectJ"
+ },
+ "Assembly": {
+ "color": "#6E4C13",
+ "url": "https://github.com/trending?l=Assembly"
+ },
+ "Asymptote": {
+ "color": "#4a0c0c",
+ "url": "https://github.com/trending?l=Asymptote"
+ },
+ "ATS": {
+ "color": "#1ac620",
+ "url": "https://github.com/trending?l=ATS"
+ },
+ "Augeas": {
+ "color": null,
+ "url": "https://github.com/trending?l=Augeas"
+ },
+ "AutoHotkey": {
+ "color": "#6594b9",
+ "url": "https://github.com/trending?l=AutoHotkey"
+ },
+ "AutoIt": {
+ "color": "#1C3552",
+ "url": "https://github.com/trending?l=AutoIt"
+ },
+ "Awk": {
+ "color": null,
+ "url": "https://github.com/trending?l=Awk"
+ },
+ "Ballerina": {
+ "color": "#FF5000",
+ "url": "https://github.com/trending?l=Ballerina"
+ },
+ "Batchfile": {
+ "color": "#C1F12E",
+ "url": "https://github.com/trending?l=Batchfile"
+ },
+ "Befunge": {
+ "color": null,
+ "url": "https://github.com/trending?l=Befunge"
+ },
+ "Bison": {
+ "color": null,
+ "url": "https://github.com/trending?l=Bison"
+ },
+ "BitBake": {
+ "color": null,
+ "url": "https://github.com/trending?l=BitBake"
+ },
+ "BlitzBasic": {
+ "color": null,
+ "url": "https://github.com/trending?l=BlitzBasic"
+ },
+ "BlitzMax": {
+ "color": "#cd6400",
+ "url": "https://github.com/trending?l=BlitzMax"
+ },
+ "Bluespec": {
+ "color": null,
+ "url": "https://github.com/trending?l=Bluespec"
+ },
+ "Boo": {
+ "color": "#d4bec1",
+ "url": "https://github.com/trending?l=Boo"
+ },
+ "Brainfuck": {
+ "color": "#2F2530",
+ "url": "https://github.com/trending?l=Brainfuck"
+ },
+ "Brightscript": {
+ "color": null,
+ "url": "https://github.com/trending?l=Brightscript"
+ },
+ "C": {
+ "color": "#555555",
+ "url": "https://github.com/trending?l=C"
+ },
+ "C#": {
+ "color": "#178600",
+ "url": "https://github.com/trending?l=Csharp"
+ },
+ "C++": {
+ "color": "#f34b7d",
+ "url": "https://github.com/trending?l=C++"
+ },
+ "C2hs Haskell": {
+ "color": null,
+ "url": "https://github.com/trending?l=C2hs-Haskell"
+ },
+ "Cap'n Proto": {
+ "color": null,
+ "url": "https://github.com/trending?l=Cap'n-Proto"
+ },
+ "CartoCSS": {
+ "color": null,
+ "url": "https://github.com/trending?l=CartoCSS"
+ },
+ "Ceylon": {
+ "color": "#dfa535",
+ "url": "https://github.com/trending?l=Ceylon"
+ },
+ "Chapel": {
+ "color": "#8dc63f",
+ "url": "https://github.com/trending?l=Chapel"
+ },
+ "Charity": {
+ "color": null,
+ "url": "https://github.com/trending?l=Charity"
+ },
+ "ChucK": {
+ "color": null,
+ "url": "https://github.com/trending?l=ChucK"
+ },
+ "Cirru": {
+ "color": "#ccccff",
+ "url": "https://github.com/trending?l=Cirru"
+ },
+ "Clarion": {
+ "color": "#db901e",
+ "url": "https://github.com/trending?l=Clarion"
+ },
+ "Clean": {
+ "color": "#3F85AF",
+ "url": "https://github.com/trending?l=Clean"
+ },
+ "Click": {
+ "color": "#E4E6F3",
+ "url": "https://github.com/trending?l=Click"
+ },
+ "CLIPS": {
+ "color": null,
+ "url": "https://github.com/trending?l=CLIPS"
+ },
+ "Clojure": {
+ "color": "#db5855",
+ "url": "https://github.com/trending?l=Clojure"
+ },
+ "CMake": {
+ "color": null,
+ "url": "https://github.com/trending?l=CMake"
+ },
+ "COBOL": {
+ "color": null,
+ "url": "https://github.com/trending?l=COBOL"
+ },
+ "CodeQL": {
+ "color": null,
+ "url": "https://github.com/trending?l=CodeQL"
+ },
+ "CoffeeScript": {
+ "color": "#244776",
+ "url": "https://github.com/trending?l=CoffeeScript"
+ },
+ "ColdFusion": {
+ "color": "#ed2cd6",
+ "url": "https://github.com/trending?l=ColdFusion"
+ },
+ "ColdFusion CFC": {
+ "color": null,
+ "url": "https://github.com/trending?l=ColdFusion-CFC"
+ },
+ "Common Lisp": {
+ "color": "#3fb68b",
+ "url": "https://github.com/trending?l=Common-Lisp"
+ },
+ "Common Workflow Language": {
+ "color": "#B5314C",
+ "url": "https://github.com/trending?l=Common-Workflow-Language"
+ },
+ "Component Pascal": {
+ "color": "#B0CE4E",
+ "url": "https://github.com/trending?l=Component-Pascal"
+ },
+ "Cool": {
+ "color": null,
+ "url": "https://github.com/trending?l=Cool"
+ },
+ "Coq": {
+ "color": null,
+ "url": "https://github.com/trending?l=Coq"
+ },
+ "Crystal": {
+ "color": "#000100",
+ "url": "https://github.com/trending?l=Crystal"
+ },
+ "Csound": {
+ "color": null,
+ "url": "https://github.com/trending?l=Csound"
+ },
+ "Csound Document": {
+ "color": null,
+ "url": "https://github.com/trending?l=Csound-Document"
+ },
+ "Csound Score": {
+ "color": null,
+ "url": "https://github.com/trending?l=Csound-Score"
+ },
+ "CSS": {
+ "color": "#563d7c",
+ "url": "https://github.com/trending?l=CSS"
+ },
+ "Cuda": {
+ "color": "#3A4E3A",
+ "url": "https://github.com/trending?l=Cuda"
+ },
+ "CWeb": {
+ "color": null,
+ "url": "https://github.com/trending?l=CWeb"
+ },
+ "Cycript": {
+ "color": null,
+ "url": "https://github.com/trending?l=Cycript"
+ },
+ "Cython": {
+ "color": null,
+ "url": "https://github.com/trending?l=Cython"
+ },
+ "D": {
+ "color": "#ba595e",
+ "url": "https://github.com/trending?l=D"
+ },
+ "Dafny": {
+ "color": "#FFEC25",
+ "url": "https://github.com/trending?l=Dafny"
+ },
+ "Dart": {
+ "color": "#00B4AB",
+ "url": "https://github.com/trending?l=Dart"
+ },
+ "DataWeave": {
+ "color": "#003a52",
+ "url": "https://github.com/trending?l=DataWeave"
+ },
+ "Dhall": {
+ "color": "#dfafff",
+ "url": "https://github.com/trending?l=Dhall"
+ },
+ "DIGITAL Command Language": {
+ "color": null,
+ "url": "https://github.com/trending?l=DIGITAL-Command-Language"
+ },
+ "DM": {
+ "color": "#447265",
+ "url": "https://github.com/trending?l=DM"
+ },
+ "Dockerfile": {
+ "color": "#384d54",
+ "url": "https://github.com/trending?l=Dockerfile"
+ },
+ "Dogescript": {
+ "color": "#cca760",
+ "url": "https://github.com/trending?l=Dogescript"
+ },
+ "DTrace": {
+ "color": null,
+ "url": "https://github.com/trending?l=DTrace"
+ },
+ "Dylan": {
+ "color": "#6c616e",
+ "url": "https://github.com/trending?l=Dylan"
+ },
+ "E": {
+ "color": "#ccce35",
+ "url": "https://github.com/trending?l=E"
+ },
+ "eC": {
+ "color": "#913960",
+ "url": "https://github.com/trending?l=eC"
+ },
+ "ECL": {
+ "color": "#8a1267",
+ "url": "https://github.com/trending?l=ECL"
+ },
+ "ECLiPSe": {
+ "color": null,
+ "url": "https://github.com/trending?l=ECLiPSe"
+ },
+ "Eiffel": {
+ "color": "#946d57",
+ "url": "https://github.com/trending?l=Eiffel"
+ },
+ "Elixir": {
+ "color": "#6e4a7e",
+ "url": "https://github.com/trending?l=Elixir"
+ },
+ "Elm": {
+ "color": "#60B5CC",
+ "url": "https://github.com/trending?l=Elm"
+ },
+ "Emacs Lisp": {
+ "color": "#c065db",
+ "url": "https://github.com/trending?l=Emacs-Lisp"
+ },
+ "EmberScript": {
+ "color": "#FFF4F3",
+ "url": "https://github.com/trending?l=EmberScript"
+ },
+ "EQ": {
+ "color": "#a78649",
+ "url": "https://github.com/trending?l=EQ"
+ },
+ "Erlang": {
+ "color": "#B83998",
+ "url": "https://github.com/trending?l=Erlang"
+ },
+ "F#": {
+ "color": "#b845fc",
+ "url": "https://github.com/trending?l=Fsharp"
+ },
+ "F*": {
+ "color": "#572e30",
+ "url": "https://github.com/trending?l=F*"
+ },
+ "Factor": {
+ "color": "#636746",
+ "url": "https://github.com/trending?l=Factor"
+ },
+ "Fancy": {
+ "color": "#7b9db4",
+ "url": "https://github.com/trending?l=Fancy"
+ },
+ "Fantom": {
+ "color": "#14253c",
+ "url": "https://github.com/trending?l=Fantom"
+ },
+ "Faust": {
+ "color": "#c37240",
+ "url": "https://github.com/trending?l=Faust"
+ },
+ "Filebench WML": {
+ "color": null,
+ "url": "https://github.com/trending?l=Filebench-WML"
+ },
+ "Filterscript": {
+ "color": null,
+ "url": "https://github.com/trending?l=Filterscript"
+ },
+ "fish": {
+ "color": null,
+ "url": "https://github.com/trending?l=fish"
+ },
+ "FLUX": {
+ "color": "#88ccff",
+ "url": "https://github.com/trending?l=FLUX"
+ },
+ "Forth": {
+ "color": "#341708",
+ "url": "https://github.com/trending?l=Forth"
+ },
+ "Fortran": {
+ "color": "#4d41b1",
+ "url": "https://github.com/trending?l=Fortran"
+ },
+ "Fortran Free Form": {
+ "color": null,
+ "url": "https://github.com/trending?l=Fortran-Free-Form"
+ },
+ "FreeMarker": {
+ "color": "#0050b2",
+ "url": "https://github.com/trending?l=FreeMarker"
+ },
+ "Frege": {
+ "color": "#00cafe",
+ "url": "https://github.com/trending?l=Frege"
+ },
+ "Futhark": {
+ "color": "#5f021f",
+ "url": "https://github.com/trending?l=Futhark"
+ },
+ "G-code": {
+ "color": "#D08CF2",
+ "url": "https://github.com/trending?l=G-code"
+ },
+ "Game Maker Language": {
+ "color": "#71b417",
+ "url": "https://github.com/trending?l=Game-Maker-Language"
+ },
+ "GAML": {
+ "color": "#FFC766",
+ "url": "https://github.com/trending?l=GAML"
+ },
+ "GAMS": {
+ "color": null,
+ "url": "https://github.com/trending?l=GAMS"
+ },
+ "GAP": {
+ "color": null,
+ "url": "https://github.com/trending?l=GAP"
+ },
+ "GCC Machine Description": {
+ "color": null,
+ "url": "https://github.com/trending?l=GCC-Machine-Description"
+ },
+ "GDB": {
+ "color": null,
+ "url": "https://github.com/trending?l=GDB"
+ },
+ "GDScript": {
+ "color": "#355570",
+ "url": "https://github.com/trending?l=GDScript"
+ },
+ "Genie": {
+ "color": "#fb855d",
+ "url": "https://github.com/trending?l=Genie"
+ },
+ "Genshi": {
+ "color": null,
+ "url": "https://github.com/trending?l=Genshi"
+ },
+ "Gentoo Ebuild": {
+ "color": null,
+ "url": "https://github.com/trending?l=Gentoo-Ebuild"
+ },
+ "Gentoo Eclass": {
+ "color": null,
+ "url": "https://github.com/trending?l=Gentoo-Eclass"
+ },
+ "Gherkin": {
+ "color": "#5B2063",
+ "url": "https://github.com/trending?l=Gherkin"
+ },
+ "GLSL": {
+ "color": null,
+ "url": "https://github.com/trending?l=GLSL"
+ },
+ "Glyph": {
+ "color": "#c1ac7f",
+ "url": "https://github.com/trending?l=Glyph"
+ },
+ "Gnuplot": {
+ "color": "#f0a9f0",
+ "url": "https://github.com/trending?l=Gnuplot"
+ },
+ "Go": {
+ "color": "#00ADD8",
+ "url": "https://github.com/trending?l=Go"
+ },
+ "Golo": {
+ "color": "#88562A",
+ "url": "https://github.com/trending?l=Golo"
+ },
+ "Gosu": {
+ "color": "#82937f",
+ "url": "https://github.com/trending?l=Gosu"
+ },
+ "Grace": {
+ "color": null,
+ "url": "https://github.com/trending?l=Grace"
+ },
+ "Grammatical Framework": {
+ "color": "#79aa7a",
+ "url": "https://github.com/trending?l=Grammatical-Framework"
+ },
+ "Groovy": {
+ "color": "#e69f56",
+ "url": "https://github.com/trending?l=Groovy"
+ },
+ "Groovy Server Pages": {
+ "color": null,
+ "url": "https://github.com/trending?l=Groovy-Server-Pages"
+ },
+ "Hack": {
+ "color": "#878787",
+ "url": "https://github.com/trending?l=Hack"
+ },
+ "Harbour": {
+ "color": "#0e60e3",
+ "url": "https://github.com/trending?l=Harbour"
+ },
+ "Haskell": {
+ "color": "#5e5086",
+ "url": "https://github.com/trending?l=Haskell"
+ },
+ "Haxe": {
+ "color": "#df7900",
+ "url": "https://github.com/trending?l=Haxe"
+ },
+ "HCL": {
+ "color": null,
+ "url": "https://github.com/trending?l=HCL"
+ },
+ "HiveQL": {
+ "color": "#dce200",
+ "url": "https://github.com/trending?l=HiveQL"
+ },
+ "HLSL": {
+ "color": null,
+ "url": "https://github.com/trending?l=HLSL"
+ },
+ "HolyC": {
+ "color": "#ffefaf",
+ "url": "https://github.com/trending?l=HolyC"
+ },
+ "HTML": {
+ "color": "#e34c26",
+ "url": "https://github.com/trending?l=HTML"
+ },
+ "Hy": {
+ "color": "#7790B2",
+ "url": "https://github.com/trending?l=Hy"
+ },
+ "HyPhy": {
+ "color": null,
+ "url": "https://github.com/trending?l=HyPhy"
+ },
+ "IDL": {
+ "color": "#a3522f",
+ "url": "https://github.com/trending?l=IDL"
+ },
+ "Idris": {
+ "color": "#b30000",
+ "url": "https://github.com/trending?l=Idris"
+ },
+ "IGOR Pro": {
+ "color": "#0000cc",
+ "url": "https://github.com/trending?l=IGOR-Pro"
+ },
+ "Inform 7": {
+ "color": null,
+ "url": "https://github.com/trending?l=Inform-7"
+ },
+ "Inno Setup": {
+ "color": null,
+ "url": "https://github.com/trending?l=Inno-Setup"
+ },
+ "Io": {
+ "color": "#a9188d",
+ "url": "https://github.com/trending?l=Io"
+ },
+ "Ioke": {
+ "color": "#078193",
+ "url": "https://github.com/trending?l=Ioke"
+ },
+ "Isabelle": {
+ "color": "#FEFE00",
+ "url": "https://github.com/trending?l=Isabelle"
+ },
+ "Isabelle ROOT": {
+ "color": null,
+ "url": "https://github.com/trending?l=Isabelle-ROOT"
+ },
+ "J": {
+ "color": "#9EEDFF",
+ "url": "https://github.com/trending?l=J"
+ },
+ "Jasmin": {
+ "color": null,
+ "url": "https://github.com/trending?l=Jasmin"
+ },
+ "Java": {
+ "color": "#b07219",
+ "url": "https://github.com/trending?l=Java"
+ },
+ "Java Server Pages": {
+ "color": null,
+ "url": "https://github.com/trending?l=Java-Server-Pages"
+ },
+ "JavaScript": {
+ "color": "#f1e05a",
+ "url": "https://github.com/trending?l=JavaScript"
+ },
+ "JavaScript+ERB": {
+ "color": null,
+ "url": "https://github.com/trending?l=JavaScript+ERB"
+ },
+ "JFlex": {
+ "color": null,
+ "url": "https://github.com/trending?l=JFlex"
+ },
+ "Jison": {
+ "color": null,
+ "url": "https://github.com/trending?l=Jison"
+ },
+ "Jison Lex": {
+ "color": null,
+ "url": "https://github.com/trending?l=Jison-Lex"
+ },
+ "Jolie": {
+ "color": "#843179",
+ "url": "https://github.com/trending?l=Jolie"
+ },
+ "JSONiq": {
+ "color": "#40d47e",
+ "url": "https://github.com/trending?l=JSONiq"
+ },
+ "Jsonnet": {
+ "color": "#0064bd",
+ "url": "https://github.com/trending?l=Jsonnet"
+ },
+ "JSX": {
+ "color": null,
+ "url": "https://github.com/trending?l=JSX"
+ },
+ "Julia": {
+ "color": "#a270ba",
+ "url": "https://github.com/trending?l=Julia"
+ },
+ "Jupyter Notebook": {
+ "color": "#DA5B0B",
+ "url": "https://github.com/trending?l=Jupyter-Notebook"
+ },
+ "Kotlin": {
+ "color": "#F18E33",
+ "url": "https://github.com/trending?l=Kotlin"
+ },
+ "KRL": {
+ "color": "#28430A",
+ "url": "https://github.com/trending?l=KRL"
+ },
+ "LabVIEW": {
+ "color": null,
+ "url": "https://github.com/trending?l=LabVIEW"
+ },
+ "Lasso": {
+ "color": "#999999",
+ "url": "https://github.com/trending?l=Lasso"
+ },
+ "Lean": {
+ "color": null,
+ "url": "https://github.com/trending?l=Lean"
+ },
+ "Lex": {
+ "color": "#DBCA00",
+ "url": "https://github.com/trending?l=Lex"
+ },
+ "LFE": {
+ "color": "#4C3023",
+ "url": "https://github.com/trending?l=LFE"
+ },
+ "LilyPond": {
+ "color": null,
+ "url": "https://github.com/trending?l=LilyPond"
+ },
+ "Limbo": {
+ "color": null,
+ "url": "https://github.com/trending?l=Limbo"
+ },
+ "Literate Agda": {
+ "color": null,
+ "url": "https://github.com/trending?l=Literate-Agda"
+ },
+ "Literate CoffeeScript": {
+ "color": null,
+ "url": "https://github.com/trending?l=Literate-CoffeeScript"
+ },
+ "Literate Haskell": {
+ "color": null,
+ "url": "https://github.com/trending?l=Literate-Haskell"
+ },
+ "LiveScript": {
+ "color": "#499886",
+ "url": "https://github.com/trending?l=LiveScript"
+ },
+ "LLVM": {
+ "color": "#185619",
+ "url": "https://github.com/trending?l=LLVM"
+ },
+ "Logos": {
+ "color": null,
+ "url": "https://github.com/trending?l=Logos"
+ },
+ "Logtalk": {
+ "color": null,
+ "url": "https://github.com/trending?l=Logtalk"
+ },
+ "LOLCODE": {
+ "color": "#cc9900",
+ "url": "https://github.com/trending?l=LOLCODE"
+ },
+ "LookML": {
+ "color": "#652B81",
+ "url": "https://github.com/trending?l=LookML"
+ },
+ "LoomScript": {
+ "color": null,
+ "url": "https://github.com/trending?l=LoomScript"
+ },
+ "LSL": {
+ "color": "#3d9970",
+ "url": "https://github.com/trending?l=LSL"
+ },
+ "Lua": {
+ "color": "#000080",
+ "url": "https://github.com/trending?l=Lua"
+ },
+ "M": {
+ "color": null,
+ "url": "https://github.com/trending?l=M"
+ },
+ "M4": {
+ "color": null,
+ "url": "https://github.com/trending?l=M4"
+ },
+ "M4Sugar": {
+ "color": null,
+ "url": "https://github.com/trending?l=M4Sugar"
+ },
+ "Macaulay2": {
+ "color": "#d8ffff",
+ "url": "https://github.com/trending?l=Macaulay2"
+ },
+ "Makefile": {
+ "color": "#427819",
+ "url": "https://github.com/trending?l=Makefile"
+ },
+ "Mako": {
+ "color": null,
+ "url": "https://github.com/trending?l=Mako"
+ },
+ "Mask": {
+ "color": "#f97732",
+ "url": "https://github.com/trending?l=Mask"
+ },
+ "Mathematica": {
+ "color": null,
+ "url": "https://github.com/trending?l=Mathematica"
+ },
+ "MATLAB": {
+ "color": "#e16737",
+ "url": "https://github.com/trending?l=MATLAB"
+ },
+ "Max": {
+ "color": "#c4a79c",
+ "url": "https://github.com/trending?l=Max"
+ },
+ "MAXScript": {
+ "color": "#00a6a6",
+ "url": "https://github.com/trending?l=MAXScript"
+ },
+ "mcfunction": {
+ "color": "#E22837",
+ "url": "https://github.com/trending?l=mcfunction"
+ },
+ "Mercury": {
+ "color": "#ff2b2b",
+ "url": "https://github.com/trending?l=Mercury"
+ },
+ "Meson": {
+ "color": "#007800",
+ "url": "https://github.com/trending?l=Meson"
+ },
+ "Metal": {
+ "color": "#8f14e9",
+ "url": "https://github.com/trending?l=Metal"
+ },
+ "MiniD": {
+ "color": null,
+ "url": "https://github.com/trending?l=MiniD"
+ },
+ "Mirah": {
+ "color": "#c7a938",
+ "url": "https://github.com/trending?l=Mirah"
+ },
+ "mIRC Script": {
+ "color": "#926059",
+ "url": "https://github.com/trending?l=mIRC-Script"
+ },
+ "MLIR": {
+ "color": "#5EC8DB",
+ "url": "https://github.com/trending?l=MLIR"
+ },
+ "Modelica": {
+ "color": null,
+ "url": "https://github.com/trending?l=Modelica"
+ },
+ "Modula-2": {
+ "color": null,
+ "url": "https://github.com/trending?l=Modula-2"
+ },
+ "Modula-3": {
+ "color": "#223388",
+ "url": "https://github.com/trending?l=Modula-3"
+ },
+ "Module Management System": {
+ "color": null,
+ "url": "https://github.com/trending?l=Module-Management-System"
+ },
+ "Monkey": {
+ "color": null,
+ "url": "https://github.com/trending?l=Monkey"
+ },
+ "Moocode": {
+ "color": null,
+ "url": "https://github.com/trending?l=Moocode"
+ },
+ "MoonScript": {
+ "color": null,
+ "url": "https://github.com/trending?l=MoonScript"
+ },
+ "Motorola 68K Assembly": {
+ "color": null,
+ "url": "https://github.com/trending?l=Motorola-68K-Assembly"
+ },
+ "MQL4": {
+ "color": "#62A8D6",
+ "url": "https://github.com/trending?l=MQL4"
+ },
+ "MQL5": {
+ "color": "#4A76B8",
+ "url": "https://github.com/trending?l=MQL5"
+ },
+ "MTML": {
+ "color": "#b7e1f4",
+ "url": "https://github.com/trending?l=MTML"
+ },
+ "MUF": {
+ "color": null,
+ "url": "https://github.com/trending?l=MUF"
+ },
+ "mupad": {
+ "color": null,
+ "url": "https://github.com/trending?l=mupad"
+ },
+ "Myghty": {
+ "color": null,
+ "url": "https://github.com/trending?l=Myghty"
+ },
+ "NASL": {
+ "color": null,
+ "url": "https://github.com/trending?l=NASL"
+ },
+ "NCL": {
+ "color": "#28431f",
+ "url": "https://github.com/trending?l=NCL"
+ },
+ "Nearley": {
+ "color": "#990000",
+ "url": "https://github.com/trending?l=Nearley"
+ },
+ "Nemerle": {
+ "color": "#3d3c6e",
+ "url": "https://github.com/trending?l=Nemerle"
+ },
+ "nesC": {
+ "color": "#94B0C7",
+ "url": "https://github.com/trending?l=nesC"
+ },
+ "NetLinx": {
+ "color": "#0aa0ff",
+ "url": "https://github.com/trending?l=NetLinx"
+ },
+ "NetLinx+ERB": {
+ "color": "#747faa",
+ "url": "https://github.com/trending?l=NetLinx+ERB"
+ },
+ "NetLogo": {
+ "color": "#ff6375",
+ "url": "https://github.com/trending?l=NetLogo"
+ },
+ "NewLisp": {
+ "color": "#87AED7",
+ "url": "https://github.com/trending?l=NewLisp"
+ },
+ "Nextflow": {
+ "color": "#3ac486",
+ "url": "https://github.com/trending?l=Nextflow"
+ },
+ "Nim": {
+ "color": "#ffc200",
+ "url": "https://github.com/trending?l=Nim"
+ },
+ "Nit": {
+ "color": "#009917",
+ "url": "https://github.com/trending?l=Nit"
+ },
+ "Nix": {
+ "color": "#7e7eff",
+ "url": "https://github.com/trending?l=Nix"
+ },
+ "NSIS": {
+ "color": null,
+ "url": "https://github.com/trending?l=NSIS"
+ },
+ "Nu": {
+ "color": "#c9df40",
+ "url": "https://github.com/trending?l=Nu"
+ },
+ "NumPy": {
+ "color": null,
+ "url": "https://github.com/trending?l=NumPy"
+ },
+ "Objective-C": {
+ "color": "#438eff",
+ "url": "https://github.com/trending?l=Objective-C"
+ },
+ "Objective-C++": {
+ "color": "#6866fb",
+ "url": "https://github.com/trending?l=Objective-C++"
+ },
+ "Objective-J": {
+ "color": "#ff0c5a",
+ "url": "https://github.com/trending?l=Objective-J"
+ },
+ "ObjectScript": {
+ "color": "#424893",
+ "url": "https://github.com/trending?l=ObjectScript"
+ },
+ "OCaml": {
+ "color": "#3be133",
+ "url": "https://github.com/trending?l=OCaml"
+ },
+ "Odin": {
+ "color": "#60AFFE",
+ "url": "https://github.com/trending?l=Odin"
+ },
+ "Omgrofl": {
+ "color": "#cabbff",
+ "url": "https://github.com/trending?l=Omgrofl"
+ },
+ "ooc": {
+ "color": "#b0b77e",
+ "url": "https://github.com/trending?l=ooc"
+ },
+ "Opa": {
+ "color": null,
+ "url": "https://github.com/trending?l=Opa"
+ },
+ "Opal": {
+ "color": "#f7ede0",
+ "url": "https://github.com/trending?l=Opal"
+ },
+ "Open Policy Agent": {
+ "color": null,
+ "url": "https://github.com/trending?l=Open-Policy-Agent"
+ },
+ "OpenCL": {
+ "color": null,
+ "url": "https://github.com/trending?l=OpenCL"
+ },
+ "OpenEdge ABL": {
+ "color": null,
+ "url": "https://github.com/trending?l=OpenEdge-ABL"
+ },
+ "OpenQASM": {
+ "color": "#AA70FF",
+ "url": "https://github.com/trending?l=OpenQASM"
+ },
+ "OpenRC runscript": {
+ "color": null,
+ "url": "https://github.com/trending?l=OpenRC-runscript"
+ },
+ "OpenSCAD": {
+ "color": null,
+ "url": "https://github.com/trending?l=OpenSCAD"
+ },
+ "Ox": {
+ "color": null,
+ "url": "https://github.com/trending?l=Ox"
+ },
+ "Oxygene": {
+ "color": "#cdd0e3",
+ "url": "https://github.com/trending?l=Oxygene"
+ },
+ "Oz": {
+ "color": "#fab738",
+ "url": "https://github.com/trending?l=Oz"
+ },
+ "P4": {
+ "color": "#7055b5",
+ "url": "https://github.com/trending?l=P4"
+ },
+ "Pan": {
+ "color": "#cc0000",
+ "url": "https://github.com/trending?l=Pan"
+ },
+ "Papyrus": {
+ "color": "#6600cc",
+ "url": "https://github.com/trending?l=Papyrus"
+ },
+ "Parrot": {
+ "color": "#f3ca0a",
+ "url": "https://github.com/trending?l=Parrot"
+ },
+ "Parrot Assembly": {
+ "color": null,
+ "url": "https://github.com/trending?l=Parrot-Assembly"
+ },
+ "Parrot Internal Representation": {
+ "color": null,
+ "url": "https://github.com/trending?l=Parrot-Internal-Representation"
+ },
+ "Pascal": {
+ "color": "#E3F171",
+ "url": "https://github.com/trending?l=Pascal"
+ },
+ "Pawn": {
+ "color": "#dbb284",
+ "url": "https://github.com/trending?l=Pawn"
+ },
+ "Pep8": {
+ "color": "#C76F5B",
+ "url": "https://github.com/trending?l=Pep8"
+ },
+ "Perl": {
+ "color": "#0298c3",
+ "url": "https://github.com/trending?l=Perl"
+ },
+ "PHP": {
+ "color": "#4F5D95",
+ "url": "https://github.com/trending?l=PHP"
+ },
+ "PicoLisp": {
+ "color": null,
+ "url": "https://github.com/trending?l=PicoLisp"
+ },
+ "PigLatin": {
+ "color": "#fcd7de",
+ "url": "https://github.com/trending?l=PigLatin"
+ },
+ "Pike": {
+ "color": "#005390",
+ "url": "https://github.com/trending?l=Pike"
+ },
+ "PLpgSQL": {
+ "color": null,
+ "url": "https://github.com/trending?l=PLpgSQL"
+ },
+ "PLSQL": {
+ "color": "#dad8d8",
+ "url": "https://github.com/trending?l=PLSQL"
+ },
+ "PogoScript": {
+ "color": "#d80074",
+ "url": "https://github.com/trending?l=PogoScript"
+ },
+ "Pony": {
+ "color": null,
+ "url": "https://github.com/trending?l=Pony"
+ },
+ "PostScript": {
+ "color": "#da291c",
+ "url": "https://github.com/trending?l=PostScript"
+ },
+ "POV-Ray SDL": {
+ "color": null,
+ "url": "https://github.com/trending?l=POV-Ray-SDL"
+ },
+ "PowerBuilder": {
+ "color": "#8f0f8d",
+ "url": "https://github.com/trending?l=PowerBuilder"
+ },
+ "PowerShell": {
+ "color": "#012456",
+ "url": "https://github.com/trending?l=PowerShell"
+ },
+ "Processing": {
+ "color": "#0096D8",
+ "url": "https://github.com/trending?l=Processing"
+ },
+ "Prolog": {
+ "color": "#74283c",
+ "url": "https://github.com/trending?l=Prolog"
+ },
+ "Propeller Spin": {
+ "color": "#7fa2a7",
+ "url": "https://github.com/trending?l=Propeller-Spin"
+ },
+ "Puppet": {
+ "color": "#302B6D",
+ "url": "https://github.com/trending?l=Puppet"
+ },
+ "PureBasic": {
+ "color": "#5a6986",
+ "url": "https://github.com/trending?l=PureBasic"
+ },
+ "PureScript": {
+ "color": "#1D222D",
+ "url": "https://github.com/trending?l=PureScript"
+ },
+ "Python": {
+ "color": "#3572A5",
+ "url": "https://github.com/trending?l=Python"
+ },
+ "Python console": {
+ "color": null,
+ "url": "https://github.com/trending?l=Python-console"
+ },
+ "q": {
+ "color": "#0040cd",
+ "url": "https://github.com/trending?l=q"
+ },
+ "Q#": {
+ "color": "#fed659",
+ "url": "https://github.com/trending?l=Qsharp"
+ },
+ "QMake": {
+ "color": null,
+ "url": "https://github.com/trending?l=QMake"
+ },
+ "QML": {
+ "color": "#44a51c",
+ "url": "https://github.com/trending?l=QML"
+ },
+ "Qt Script": {
+ "color": "#00b841",
+ "url": "https://github.com/trending?l=Qt-Script"
+ },
+ "Quake": {
+ "color": "#882233",
+ "url": "https://github.com/trending?l=Quake"
+ },
+ "R": {
+ "color": "#198CE7",
+ "url": "https://github.com/trending?l=R"
+ },
+ "Racket": {
+ "color": "#3c5caa",
+ "url": "https://github.com/trending?l=Racket"
+ },
+ "Ragel": {
+ "color": "#9d5200",
+ "url": "https://github.com/trending?l=Ragel"
+ },
+ "Raku": {
+ "color": "#0000fb",
+ "url": "https://github.com/trending?l=Raku"
+ },
+ "RAML": {
+ "color": "#77d9fb",
+ "url": "https://github.com/trending?l=RAML"
+ },
+ "Rascal": {
+ "color": "#fffaa0",
+ "url": "https://github.com/trending?l=Rascal"
+ },
+ "REALbasic": {
+ "color": null,
+ "url": "https://github.com/trending?l=REALbasic"
+ },
+ "Reason": {
+ "color": "#ff5847",
+ "url": "https://github.com/trending?l=Reason"
+ },
+ "Rebol": {
+ "color": "#358a5b",
+ "url": "https://github.com/trending?l=Rebol"
+ },
+ "Red": {
+ "color": "#f50000",
+ "url": "https://github.com/trending?l=Red"
+ },
+ "Redcode": {
+ "color": null,
+ "url": "https://github.com/trending?l=Redcode"
+ },
+ "Ren'Py": {
+ "color": "#ff7f7f",
+ "url": "https://github.com/trending?l=Ren'Py"
+ },
+ "RenderScript": {
+ "color": null,
+ "url": "https://github.com/trending?l=RenderScript"
+ },
+ "REXX": {
+ "color": null,
+ "url": "https://github.com/trending?l=REXX"
+ },
+ "Ring": {
+ "color": "#2D54CB",
+ "url": "https://github.com/trending?l=Ring"
+ },
+ "Riot": {
+ "color": "#A71E49",
+ "url": "https://github.com/trending?l=Riot"
+ },
+ "RobotFramework": {
+ "color": null,
+ "url": "https://github.com/trending?l=RobotFramework"
+ },
+ "Roff": {
+ "color": "#ecdebe",
+ "url": "https://github.com/trending?l=Roff"
+ },
+ "Rouge": {
+ "color": "#cc0088",
+ "url": "https://github.com/trending?l=Rouge"
+ },
+ "RPC": {
+ "color": null,
+ "url": "https://github.com/trending?l=RPC"
+ },
+ "Ruby": {
+ "color": "#701516",
+ "url": "https://github.com/trending?l=Ruby"
+ },
+ "RUNOFF": {
+ "color": "#665a4e",
+ "url": "https://github.com/trending?l=RUNOFF"
+ },
+ "Rust": {
+ "color": "#dea584",
+ "url": "https://github.com/trending?l=Rust"
+ },
+ "Sage": {
+ "color": null,
+ "url": "https://github.com/trending?l=Sage"
+ },
+ "SaltStack": {
+ "color": "#646464",
+ "url": "https://github.com/trending?l=SaltStack"
+ },
+ "SAS": {
+ "color": "#B34936",
+ "url": "https://github.com/trending?l=SAS"
+ },
+ "Scala": {
+ "color": "#c22d40",
+ "url": "https://github.com/trending?l=Scala"
+ },
+ "Scheme": {
+ "color": "#1e4aec",
+ "url": "https://github.com/trending?l=Scheme"
+ },
+ "Scilab": {
+ "color": null,
+ "url": "https://github.com/trending?l=Scilab"
+ },
+ "sed": {
+ "color": "#64b970",
+ "url": "https://github.com/trending?l=sed"
+ },
+ "Self": {
+ "color": "#0579aa",
+ "url": "https://github.com/trending?l=Self"
+ },
+ "ShaderLab": {
+ "color": null,
+ "url": "https://github.com/trending?l=ShaderLab"
+ },
+ "Shell": {
+ "color": "#89e051",
+ "url": "https://github.com/trending?l=Shell"
+ },
+ "ShellSession": {
+ "color": null,
+ "url": "https://github.com/trending?l=ShellSession"
+ },
+ "Shen": {
+ "color": "#120F14",
+ "url": "https://github.com/trending?l=Shen"
+ },
+ "Sieve": {
+ "color": null,
+ "url": "https://github.com/trending?l=Sieve"
+ },
+ "Slash": {
+ "color": "#007eff",
+ "url": "https://github.com/trending?l=Slash"
+ },
+ "Slice": {
+ "color": "#003fa2",
+ "url": "https://github.com/trending?l=Slice"
+ },
+ "Smali": {
+ "color": null,
+ "url": "https://github.com/trending?l=Smali"
+ },
+ "Smalltalk": {
+ "color": "#596706",
+ "url": "https://github.com/trending?l=Smalltalk"
+ },
+ "Smarty": {
+ "color": null,
+ "url": "https://github.com/trending?l=Smarty"
+ },
+ "SmPL": {
+ "color": "#c94949",
+ "url": "https://github.com/trending?l=SmPL"
+ },
+ "SMT": {
+ "color": null,
+ "url": "https://github.com/trending?l=SMT"
+ },
+ "Solidity": {
+ "color": "#AA6746",
+ "url": "https://github.com/trending?l=Solidity"
+ },
+ "SourcePawn": {
+ "color": "#5c7611",
+ "url": "https://github.com/trending?l=SourcePawn"
+ },
+ "SQF": {
+ "color": "#3F3F3F",
+ "url": "https://github.com/trending?l=SQF"
+ },
+ "SQLPL": {
+ "color": null,
+ "url": "https://github.com/trending?l=SQLPL"
+ },
+ "Squirrel": {
+ "color": "#800000",
+ "url": "https://github.com/trending?l=Squirrel"
+ },
+ "SRecode Template": {
+ "color": "#348a34",
+ "url": "https://github.com/trending?l=SRecode-Template"
+ },
+ "Stan": {
+ "color": "#b2011d",
+ "url": "https://github.com/trending?l=Stan"
+ },
+ "Standard ML": {
+ "color": "#dc566d",
+ "url": "https://github.com/trending?l=Standard-ML"
+ },
+ "Starlark": {
+ "color": "#76d275",
+ "url": "https://github.com/trending?l=Starlark"
+ },
+ "Stata": {
+ "color": null,
+ "url": "https://github.com/trending?l=Stata"
+ },
+ "SuperCollider": {
+ "color": "#46390b",
+ "url": "https://github.com/trending?l=SuperCollider"
+ },
+ "Swift": {
+ "color": "#ffac45",
+ "url": "https://github.com/trending?l=Swift"
+ },
+ "SWIG": {
+ "color": null,
+ "url": "https://github.com/trending?l=SWIG"
+ },
+ "SystemVerilog": {
+ "color": "#DAE1C2",
+ "url": "https://github.com/trending?l=SystemVerilog"
+ },
+ "Tcl": {
+ "color": "#e4cc98",
+ "url": "https://github.com/trending?l=Tcl"
+ },
+ "Tcsh": {
+ "color": null,
+ "url": "https://github.com/trending?l=Tcsh"
+ },
+ "Terra": {
+ "color": "#00004c",
+ "url": "https://github.com/trending?l=Terra"
+ },
+ "TeX": {
+ "color": "#3D6117",
+ "url": "https://github.com/trending?l=TeX"
+ },
+ "Thrift": {
+ "color": null,
+ "url": "https://github.com/trending?l=Thrift"
+ },
+ "TI Program": {
+ "color": "#A0AA87",
+ "url": "https://github.com/trending?l=TI-Program"
+ },
+ "TLA": {
+ "color": null,
+ "url": "https://github.com/trending?l=TLA"
+ },
+ "TSQL": {
+ "color": null,
+ "url": "https://github.com/trending?l=TSQL"
+ },
+ "TSX": {
+ "color": null,
+ "url": "https://github.com/trending?l=TSX"
+ },
+ "Turing": {
+ "color": "#cf142b",
+ "url": "https://github.com/trending?l=Turing"
+ },
+ "TXL": {
+ "color": null,
+ "url": "https://github.com/trending?l=TXL"
+ },
+ "TypeScript": {
+ "color": "#2b7489",
+ "url": "https://github.com/trending?l=TypeScript"
+ },
+ "Unified Parallel C": {
+ "color": null,
+ "url": "https://github.com/trending?l=Unified-Parallel-C"
+ },
+ "Unix Assembly": {
+ "color": null,
+ "url": "https://github.com/trending?l=Unix-Assembly"
+ },
+ "Uno": {
+ "color": null,
+ "url": "https://github.com/trending?l=Uno"
+ },
+ "UnrealScript": {
+ "color": "#a54c4d",
+ "url": "https://github.com/trending?l=UnrealScript"
+ },
+ "UrWeb": {
+ "color": null,
+ "url": "https://github.com/trending?l=UrWeb"
+ },
+ "V": {
+ "color": "#5d87bd",
+ "url": "https://github.com/trending?l=V"
+ },
+ "Vala": {
+ "color": "#fbe5cd",
+ "url": "https://github.com/trending?l=Vala"
+ },
+ "VBA": {
+ "color": "#867db1",
+ "url": "https://github.com/trending?l=VBA"
+ },
+ "VBScript": {
+ "color": "#15dcdc",
+ "url": "https://github.com/trending?l=VBScript"
+ },
+ "VCL": {
+ "color": "#148AA8",
+ "url": "https://github.com/trending?l=VCL"
+ },
+ "Verilog": {
+ "color": "#b2b7f8",
+ "url": "https://github.com/trending?l=Verilog"
+ },
+ "VHDL": {
+ "color": "#adb2cb",
+ "url": "https://github.com/trending?l=VHDL"
+ },
+ "Vim script": {
+ "color": "#199f4b",
+ "url": "https://github.com/trending?l=Vim-script"
+ },
+ "Visual Basic .NET": {
+ "color": "#945db7",
+ "url": "https://github.com/trending?l=Visual-Basic-.NET"
+ },
+ "Volt": {
+ "color": "#1F1F1F",
+ "url": "https://github.com/trending?l=Volt"
+ },
+ "Vue": {
+ "color": "#2c3e50",
+ "url": "https://github.com/trending?l=Vue"
+ },
+ "wdl": {
+ "color": "#42f1f4",
+ "url": "https://github.com/trending?l=wdl"
+ },
+ "WebAssembly": {
+ "color": "#04133b",
+ "url": "https://github.com/trending?l=WebAssembly"
+ },
+ "WebIDL": {
+ "color": null,
+ "url": "https://github.com/trending?l=WebIDL"
+ },
+ "wisp": {
+ "color": "#7582D1",
+ "url": "https://github.com/trending?l=wisp"
+ },
+ "Wollok": {
+ "color": "#a23738",
+ "url": "https://github.com/trending?l=Wollok"
+ },
+ "X10": {
+ "color": "#4B6BEF",
+ "url": "https://github.com/trending?l=X10"
+ },
+ "xBase": {
+ "color": "#403a40",
+ "url": "https://github.com/trending?l=xBase"
+ },
+ "XC": {
+ "color": "#99DA07",
+ "url": "https://github.com/trending?l=XC"
+ },
+ "Xojo": {
+ "color": null,
+ "url": "https://github.com/trending?l=Xojo"
+ },
+ "XProc": {
+ "color": null,
+ "url": "https://github.com/trending?l=XProc"
+ },
+ "XQuery": {
+ "color": "#5232e7",
+ "url": "https://github.com/trending?l=XQuery"
+ },
+ "XS": {
+ "color": null,
+ "url": "https://github.com/trending?l=XS"
+ },
+ "XSLT": {
+ "color": "#EB8CEB",
+ "url": "https://github.com/trending?l=XSLT"
+ },
+ "Xtend": {
+ "color": null,
+ "url": "https://github.com/trending?l=Xtend"
+ },
+ "Yacc": {
+ "color": "#4B6C4B",
+ "url": "https://github.com/trending?l=Yacc"
+ },
+ "YARA": {
+ "color": "#220000",
+ "url": "https://github.com/trending?l=YARA"
+ },
+ "YASnippet": {
+ "color": "#32AB90",
+ "url": "https://github.com/trending?l=YASnippet"
+ },
+ "ZAP": {
+ "color": "#0d665e",
+ "url": "https://github.com/trending?l=ZAP"
+ },
+ "Zeek": {
+ "color": null,
+ "url": "https://github.com/trending?l=Zeek"
+ },
+ "ZenScript": {
+ "color": "#00BCD1",
+ "url": "https://github.com/trending?l=ZenScript"
+ },
+ "Zephir": {
+ "color": "#118f9e",
+ "url": "https://github.com/trending?l=Zephir"
+ },
+ "Zig": {
+ "color": "#ec915c",
+ "url": "https://github.com/trending?l=Zig"
+ },
+ "ZIL": {
+ "color": "#dc75e5",
+ "url": "https://github.com/trending?l=ZIL"
+ },
+ "Zimpl": {
+ "color": null,
+ "url": "https://github.com/trending?l=Zimpl"
+ }
}
\ No newline at end of file
diff --git a/geckodriver.log b/geckodriver.log
new file mode 100644
index 0000000..e69de29
diff --git a/loc.py b/loc.py
index 8d37f16..16c9e6b 100644
--- a/loc.py
+++ b/loc.py
@@ -1,91 +1,93 @@
-import re
-import os
-import base64
-import requests
-from github import Github, InputGitAuthor
-import datetime
-from string import Template
-import matplotlib.pyplot as plt
-from io import StringIO, BytesIO
-from dotenv import load_dotenv
-import time
-
-from make_bar_graph import BarGraph
-
-
-class LinesOfCode:
-
- def __init__(self, id, username, ghtoken, repositoryData):
- self.id = id
- self.username = username
-
- self.g = Github(ghtoken)
- self.headers = {"Authorization": "Bearer " + ghtoken}
- self.repositoryData = repositoryData
-
- def calculateLoc(self):
- result = self.repositoryData
- yearly_data = {}
- for repo in result['data']['user']['repositories']['edges']:
- self.getCommitStat(repo['node'], yearly_data)
- time.sleep(0.7)
- graph = BarGraph(yearly_data)
- graph_file = graph.build_graph()
- self.pushChart()
-
- def run_query_v3(self, nameWithOwner):
- endPoint = 'https://api.github.com/repos/' + nameWithOwner + '/stats/code_frequency'
- # print(endPoint)
- request = requests.get(endPoint, headers=self.headers)
- if request.status_code == 401:
- raise Exception("Invalid token {}. {}".format(request.status_code, nameWithOwner))
- elif request.status_code == 204:
- return []
- else:
- return request.json()
-
- def getQuarter(self, timeStamp):
- month = datetime.datetime.fromtimestamp(timeStamp).month
- if month >= 1 and month <= 4:
- return 1
- elif month >= 5 and month <= 8:
- return 2
- elif month >= 9 and month <= 12:
- return 3
-
- def getCommitStat(self, repoDetails, yearly_data):
- result = self.run_query_v3(repoDetails['nameWithOwner'])
- this_year = datetime.datetime.utcnow().year
-
- for i in range(len(result)):
- curr_year = datetime.datetime.fromtimestamp(result[i][0]).year
- # if curr_year != this_year:
- quarter = self.getQuarter(result[i][0])
- if repoDetails['primaryLanguage'] is not None:
-
- if curr_year not in yearly_data:
- yearly_data[curr_year] = {}
- if quarter not in yearly_data[curr_year]:
- yearly_data[curr_year][quarter] = {}
- if repoDetails['primaryLanguage']['name'] not in yearly_data[curr_year][quarter]:
- yearly_data[curr_year][quarter][repoDetails['primaryLanguage']['name']] = 0
- yearly_data[curr_year][quarter][repoDetails['primaryLanguage']['name']] += (result[i][1] + result[i][2])
-
- # to find total
-
- # if 'total' not in yearly_data[curr_year]:
- # yearly_data[curr_year]['total']={}
- # if repoDetails['primaryLanguage']['name'] not in yearly_data[curr_year]['total']:
- # yearly_data[curr_year]['total'][repoDetails['primaryLanguage']['name']]=0
- # yearly_data[curr_year]['total'][repoDetails['primaryLanguage']['name']]+=(result[i][1]+result[i][2])
-
- def pushChart(self):
- repo = self.g.get_repo(f"{self.username}/{self.username}")
- committer = InputGitAuthor('readme-bot', 'readme-bot@example.com')
- with open('bar_graph.png', 'rb') as input_file:
- data = input_file.read()
- try:
- contents = repo.get_contents("charts/bar_graph.png")
- repo.update_file(contents.path, "Charts Updated", data, contents.sha, committer=committer)
- except Exception as e:
- repo.create_file("charts/bar_graph.png", "Charts Added", data, committer=committer)
+import re
+import os
+import base64
+import requests
+from github import Github, InputGitAuthor
+import datetime
+from string import Template
+import matplotlib.pyplot as plt
+from io import StringIO, BytesIO
+from dotenv import load_dotenv
+import time
+
+from make_bar_graph import BarGraph
+
+
+class LinesOfCode:
+
+ def __init__(self, id, username, ghtoken, repositoryData):
+ self.id = id
+ self.username = username
+
+ self.g = Github(ghtoken)
+ self.headers = {"Authorization": "Bearer " + ghtoken}
+ self.repositoryData = repositoryData
+
+ def calculateLoc(self):
+ result = self.repositoryData
+ yearly_data = {}
+ for repo in result['data']['user']['repositories']['edges']:
+ self.getCommitStat(repo['node'], yearly_data)
+ time.sleep(0.7)
+ graph = BarGraph(yearly_data)
+ graph_file = graph.build_graph()
+ self.pushChart()
+
+ def run_query_v3(self, nameWithOwner):
+ endPoint = 'https://api.github.com/repos/' + nameWithOwner + '/stats/code_frequency'
+ # print(endPoint)
+ request = requests.get(endPoint, headers=self.headers)
+ if request.status_code == 401:
+ raise Exception("Invalid token {}. {}".format(request.status_code, nameWithOwner))
+ elif request.status_code == 204:
+ return []
+ else:
+ return request.json()
+
+ def getQuarter(self, timeStamp):
+ month = datetime.datetime.fromtimestamp(timeStamp).month
+ if month >= 1 and month <= 3:
+ return 1
+ elif month >= 4 and month <= 6:
+ return 2
+ elif month >= 7 and month <= 9:
+ return 3
+ elif month >= 10 and month <= 12:
+ return 4
+
+ def getCommitStat(self, repoDetails, yearly_data):
+ result = self.run_query_v3(repoDetails['nameWithOwner'])
+ this_year = datetime.datetime.utcnow().year
+
+ for i in range(len(result)):
+ curr_year = datetime.datetime.fromtimestamp(result[i][0]).year
+ # if curr_year != this_year:
+ quarter = self.getQuarter(result[i][0])
+ if repoDetails['primaryLanguage'] is not None:
+
+ if curr_year not in yearly_data:
+ yearly_data[curr_year] = {}
+ if quarter not in yearly_data[curr_year]:
+ yearly_data[curr_year][quarter] = {}
+ if repoDetails['primaryLanguage']['name'] not in yearly_data[curr_year][quarter]:
+ yearly_data[curr_year][quarter][repoDetails['primaryLanguage']['name']] = 0
+ yearly_data[curr_year][quarter][repoDetails['primaryLanguage']['name']] += (result[i][1])
+
+ # to find total
+
+ # if 'total' not in yearly_data[curr_year]:
+ # yearly_data[curr_year]['total']={}
+ # if repoDetails['primaryLanguage']['name'] not in yearly_data[curr_year]['total']:
+ # yearly_data[curr_year]['total'][repoDetails['primaryLanguage']['name']]=0
+ # yearly_data[curr_year]['total'][repoDetails['primaryLanguage']['name']]+=(result[i][1]+result[i][2])
+
+ def pushChart(self):
+ repo = self.g.get_repo(f"{self.username}/{self.username}")
+ committer = InputGitAuthor('readme-bot', 'readme-bot@example.com')
+ with open('bar_graph.png', 'rb') as input_file:
+ data = input_file.read()
+ try:
+ contents = repo.get_contents("charts/bar_graph.png")
+ repo.update_file(contents.path, "Charts Updated", data, contents.sha, committer=committer)
+ except Exception as e:
+ repo.create_file("charts/bar_graph.png", "Charts Added", data, committer=committer)
diff --git a/main.py b/main.py
index c3d488c..45ed92e 100644
--- a/main.py
+++ b/main.py
@@ -1,511 +1,516 @@
-'''
-Readme Development Metrics With waka time progress
-'''
-import re
-import os
-import base64
-from pytz import timezone
-import pytz
-import requests
-from github import Github, GithubException, InputGitAuthor
-import datetime
-from string import Template
-from loc import LinesOfCode
-import time
-import traceback
-import humanize
-from urllib.parse import quote
-import json
-import sys
-
-from dotenv import load_dotenv
-
-load_dotenv()
-
-START_COMMENT = ''
-END_COMMENT = ''
-listReg = f"{START_COMMENT}[\\s\\S]+{END_COMMENT}"
-
-waka_key = os.getenv('INPUT_WAKATIME_API_KEY')
-ghtoken = os.getenv('INPUT_GH_TOKEN')
-showTimeZone = os.getenv('INPUT_SHOW_TIMEZONE')
-showProjects = os.getenv('INPUT_SHOW_PROJECTS')
-showEditors = os.getenv('INPUT_SHOW_EDITORS')
-showOs = os.getenv('INPUT_SHOW_OS')
-showCommit = os.getenv('INPUT_SHOW_COMMIT')
-showLanguage = os.getenv('INPUT_SHOW_LANGUAGE')
-show_loc = os.getenv('INPUT_SHOW_LINES_OF_CODE')
-show_days_of_week = os.getenv('INPUT_SHOW_DAYS_OF_WEEK')
-showLanguagePerRepo = os.getenv('INPUT_SHOW_LANGUAGE_PER_REPO')
-showLocChart = os.getenv('INPUT_SHOW_LOC_CHART')
-show_profile_view = os.getenv('INPUT_SHOW_PROFILE_VIEWS')
-show_short_info = os.getenv('INPUT_SHOW_SHORT_INFO')
-locale = os.getenv('INPUT_LOCALE')
-show_waka_stats = 'y'
-# The GraphQL query to get commit data.
-userInfoQuery = """
-{
- viewer {
- login
- id
- }
- }
-"""
-createContributedRepoQuery = Template("""query {
- user(login: "$username") {
- repositoriesContributedTo(last: 100, includeUserRepositories: true) {
- nodes {
- isFork
- name
- owner {
- login
- }
- }
- }
- }
- }
-""")
-createCommittedDateQuery = Template("""
-query {
- repository(owner: "$owner", name: "$name") {
- ref(qualifiedName: "master") {
- target {
- ... on Commit {
- history(first: 100, author: { id: "$id" }) {
- edges {
- node {
- committedDate
- }
- }
- }
- }
- }
- }
- }
- }
-""")
-
-get_loc_url = Template("""/repos/$owner/$repo/stats/code_frequency""")
-get_profile_view = Template("""/repos/$owner/$repo/traffic/views?per=week""")
-get_profile_traffic = Template("""/repos/$owner/$repo/traffic/popular/referrers""")
-truthy = ['true', '1', 't', 'y', 'yes']
-
-
-def run_v3_api(query):
- request = requests.get('https://api.github.com' + query, headers=headers)
- if request.status_code == 200:
- return request.json()
- else:
- raise Exception(
- "Query failed to run by returning code of {}. {},... {}".format(request.status_code, query,
- str(request.json())))
-
-
-repositoryListQuery = Template("""
-{
- user(login: "$username") {
- repositories(orderBy: {field: CREATED_AT, direction: ASC}, last: 100, affiliations: [OWNER, COLLABORATOR, ORGANIZATION_MEMBER], isFork: false) {
- totalCount
- edges {
- node {
- object(expression:"master") {
- ... on Commit {
- history (author: { id: "$id" }){
- totalCount
- }
- }
- }
- primaryLanguage {
- color
- name
- id
- }
- stargazers {
- totalCount
- }
- collaborators {
- totalCount
- }
- createdAt
- name
- owner {
- id
- login
- }
- nameWithOwner
- }
- }
- }
- location
- createdAt
- name
- }
-}
-""")
-
-
-def run_query(query):
- request = requests.post('https://api.github.com/graphql', json={'query': query}, headers=headers)
- if request.status_code == 200:
- return request.json()
- else:
- raise Exception("Query failed to run by returning code of {}. {}".format(request.status_code, query))
-
-
-def make_graph(percent: float):
- '''Make progress graph from API graph'''
- done_block = 'โ'
- empty_block = 'โ'
- pc_rnd = round(percent)
- return f"{done_block * int(pc_rnd / 4)}{empty_block * int(25 - int(pc_rnd / 4))}"
-
-
-def make_list(data: list):
- '''Make List'''
- data_list = []
- for l in data[:5]:
- ln = len(l['name'])
- ln_text = len(l['text'])
- op = f"{l['name'][:25]}{' ' * (25 - ln)}{l['text']}{' ' * (20 - ln_text)}{make_graph(l['percent'])} {l['percent']}%"
- data_list.append(op)
- return ' \n'.join(data_list)
-
-
-def make_commit_list(data: list):
- '''Make List'''
- data_list = []
- for l in data[:7]:
- ln = len(l['name'])
- ln_text = len(l['text'])
- op = f"{l['name']}{' ' * (13 - ln)}{l['text']}{' ' * (15 - ln_text)}{make_graph(l['percent'])} {l['percent']}%"
- data_list.append(op)
- return ' \n'.join(data_list)
-
-
-def generate_commit_list(tz):
- string = ''
- result = run_query(userInfoQuery) # Execute the query
- username = result["data"]["viewer"]["login"]
- id = result["data"]["viewer"]["id"]
- # print("user {}".format(username))
-
- result = run_query(createContributedRepoQuery.substitute(username=username))
- nodes = result["data"]["user"]["repositoriesContributedTo"]["nodes"]
- repos = [d for d in nodes if d['isFork'] is False]
-
- morning = 0 # 6 - 12
- daytime = 0 # 12 - 18
- evening = 0 # 18 - 24
- night = 0 # 0 - 6
-
- Monday = 0
- Tuesday = 0
- Wednesday = 0
- Thursday = 0
- Friday = 0
- Saturday = 0
- Sunday = 0
-
- for repository in repos:
- result = run_query(
- createCommittedDateQuery.substitute(owner=repository["owner"]["login"], name=repository["name"], id=id))
- try:
- committed_dates = result["data"]["repository"]["ref"]["target"]["history"]["edges"]
- for committedDate in committed_dates:
- date = datetime.datetime.strptime(committedDate["node"]["committedDate"],
- "%Y-%m-%dT%H:%M:%SZ").replace(tzinfo=pytz.utc).astimezone(
- timezone(tz))
- hour = date.hour
- weekday = date.strftime('%A')
- if 6 <= hour < 12:
- morning += 1
- if 12 <= hour < 18:
- daytime += 1
- if 18 <= hour < 24:
- evening += 1
- if 0 <= hour < 6:
- night += 1
-
- if weekday == "Monday":
- Monday += 1
- if weekday == "Tuesday":
- Tuesday += 1
- if weekday == "Wednesday":
- Wednesday += 1
- if weekday == "Thursday":
- Thursday += 1
- if weekday == "Friday":
- Friday += 1
- if weekday == "Saturday":
- Saturday += 1
- if weekday == "Sunday":
- Sunday += 1
- except Exception as ex:
- print("Please Ignore this exception " + str(ex))
-
- sumAll = morning + daytime + evening + night
- sum_week = Sunday + Monday + Tuesday + Friday + Saturday + Wednesday + Thursday
- title = translate['I am an Early'] if morning + daytime >= evening + night else translate['I am a Night']
- one_day = [
- {"name": "๐ " + translate['Morning'], "text": str(morning) + " commits",
- "percent": round((morning / sumAll) * 100, 2)},
- {"name": "๐ " + translate['Daytime'], "text": str(daytime) + " commits",
- "percent": round((daytime / sumAll) * 100, 2)},
- {"name": "๐ " + translate['Evening'], "text": str(evening) + " commits",
- "percent": round((evening / sumAll) * 100, 2)},
- {"name": "๐ " + translate['Night'], "text": str(night) + " commits",
- "percent": round((night / sumAll) * 100, 2)},
- ]
- dayOfWeek = [
- {"name": translate['Monday'], "text": str(Monday) + " commits", "percent": round((Monday / sum_week) * 100, 2)},
- {"name": translate['Tuesday'], "text": str(Tuesday) + " commits",
- "percent": round((Tuesday / sum_week) * 100, 2)},
- {"name": translate['Wednesday'], "text": str(Wednesday) + " commits",
- "percent": round((Wednesday / sum_week) * 100, 2)},
- {"name": translate['Thursday'], "text": str(Thursday) + " commits",
- "percent": round((Thursday / sum_week) * 100, 2)},
- {"name": translate['Friday'], "text": str(Friday) + " commits", "percent": round((Friday / sum_week) * 100, 2)},
- {"name": translate['Saturday'], "text": str(Saturday) + " commits",
- "percent": round((Saturday / sum_week) * 100, 2)},
- {"name": translate['Sunday'], "text": str(Sunday) + " commits", "percent": round((Sunday / sum_week) * 100, 2)},
- ]
-
- string = string + '**' + title + '** \n\n' + '```text\n' + make_commit_list(one_day) + '\n\n```\n'
-
- if show_days_of_week.lower() in truthy:
- max_element = {
- 'percent': 0
- }
-
- for day in dayOfWeek:
- if day['percent'] > max_element['percent']:
- max_element = day
- days_title = translate['I am Most Productive on'] + ' ' + max_element['name']
- string = string + '๐
**' + days_title + '** \n\n' + '```text\n' + make_commit_list(dayOfWeek) + '\n\n```\n'
-
- return string
-
-
-def get_waka_time_stats():
- stats = ''
- request = requests.get(
- f"https://wakatime.com/api/v1/users/current/stats/last_7_days?api_key={waka_key}")
- no_activity = translate["No Activity Tracked This Week"]
-
- if request.status_code == 401:
- print("Error With WAKA time API returned " + str(request.status_code) + " Response " + str(request.json()))
- else:
- empty = True
- data = request.json()
- if showCommit.lower() in truthy:
- empty = False
- stats = stats + generate_commit_list(tz=data['data']['timezone']) + '\n\n'
-
- stats += '๐ **' + translate['This Week I Spend My Time On'] + '** \n\n'
- stats += '```text\n'
- if showTimeZone.lower() in truthy:
- empty = False
- tzone = data['data']['timezone']
- stats = stats + 'โ๏ธ ' + translate['Timezone'] + ': ' + tzone + '\n\n'
-
- if showLanguage.lower() in truthy:
- empty = False
- if len(data['data']['languages']) == 0:
- lang_list = no_activity
- else:
- lang_list = make_list(data['data']['languages'])
- stats = stats + '๐ฌ ' + translate['Languages'] + ': \n' + lang_list + '\n\n'
-
- if showEditors.lower() in truthy:
- empty = False
- if len(data['data']['editors']) == 0:
- edit_list = no_activity
- else:
- edit_list = make_list(data['data']['editors'])
- stats = stats + '๐ฅ ' + translate['Editors'] + ': \n' + edit_list + '\n\n'
-
- if showProjects.lower() in truthy:
- empty = False
- if len(data['data']['projects']) == 0:
- project_list = no_activity
- else:
- # Re-order the project list by percentage
- data['data']['projects'] = sorted(data['data']['projects'], key=lambda x: x["percent"], reverse=True)
- project_list = make_list(data['data']['projects'])
- stats = stats + '๐ฑโ๐ป ' + translate['Projects'] + ': \n' + project_list + '\n\n'
-
- if showOs.lower() in truthy:
- empty = False
- if len(data['data']['operating_systems']) == 0:
- os_list = no_activity
- else:
- os_list = make_list(data['data']['operating_systems'])
- stats = stats + '๐ป ' + translate['operating system'] + ': \n' + os_list + '\n\n'
-
- stats += '```\n\n'
- if empty:
- return ""
- return stats
-
-
-def generate_language_per_repo(result):
- language_count = {}
- total = 0
- for repo in result['data']['user']['repositories']['edges']:
- if repo['node']['primaryLanguage'] is None:
- continue
- language = repo['node']['primaryLanguage']['name']
- color_code = repo['node']['primaryLanguage']['color']
- total += 1
- if language not in language_count.keys():
- language_count[language] = {}
- language_count[language]['count'] = 1
- else:
- language_count[language]['count'] = language_count[language]['count'] + 1
- language_count[language]['color'] = color_code
- data = []
- sorted_labels = list(language_count.keys())
- sorted_labels.sort(key=lambda x: language_count[x]['count'], reverse=True)
- most_language_repo = sorted_labels[0]
- for label in sorted_labels:
- percent = round(language_count[label]['count'] / total * 100, 2)
- data.append({
- "name": label,
- "text": str(language_count[label]['count']) + " repos",
- "percent": percent
- })
-
- title = translate['I Mostly Code in'] + ' ' + most_language_repo
- return '**' + title + '** \n\n' + '```text\n' + make_list(data) + '\n\n```\n'
-
-
-def get_line_of_code():
- result = run_query(createContributedRepoQuery.substitute(username=username))
- nodes = result["data"]["user"]["repositoriesContributedTo"]["nodes"]
- repos = [d for d in nodes if d['isFork'] is False]
- total_loc = 0
- for repository in repos:
- try:
- time.sleep(0.7)
- datas = run_v3_api(get_loc_url.substitute(owner=repository["owner"]["login"], repo=repository["name"]))
- for data in datas:
- total_loc = total_loc + data[1] - data[2]
- except Exception as execp:
- print(execp)
- return humanize.intword(int(total_loc))
-
-
-def get_short_info(github):
- string = '**๐ฑ ' + translate['My GitHub Data'] + '** \n\n'
- user_info = github.get_user()
- if user_info.disk_usage is None:
- disk_usage = humanize.naturalsize(0)
- print("Please add new github personal access token with user permission")
- else:
- disk_usage = humanize.naturalsize(user_info.disk_usage)
- request = requests.get('https://github-contributions.now.sh/api/v1/' + user_info.login)
- if request.status_code == 200:
- data = request.json()
- total = data['years'][0]['total']
- year = data['years'][0]['year']
- string += '> ๐ ' + humanize.intcomma(total) + " " + translate[
- 'Contributions in the year'] + " " + year + '\n > \n'
-
- string += '> ๐ฆ ' + disk_usage + " " + translate["Used in GitHub's Storage"] + ' \n > \n'
- is_hireable = user_info.hireable
- public_repo = user_info.public_repos
- private_repo = user_info.owned_private_repos
- if private_repo is None:
- private_repo = 0
- if is_hireable:
- string += "> ๐ผ " + translate["Opted to Hire"] + "\n > \n"
- else:
- string += "> ๐ซ " + translate["Not Opted to Hire"] + "\n > \n"
-
- string += '> ๐ ' + str(public_repo) + " "
- string += translate['public repositories'] + '\n > \n' if public_repo > 1 else translate[
- 'public repository'] + ' \n > \n'
- string += '> ๐ ' + str(private_repo) + " "
- string += translate['private repositories'] + ' \n\n' if private_repo > 1 else translate[
- 'private repository'] + ' \n > \n'
-
- return string
-
-
-def get_stats(github):
- '''Gets API data and returns markdown progress'''
-
- stats = ''
- repositoryList = run_query(repositoryListQuery.substitute(username=username, id=id))
-
- if show_profile_view.lower() in truthy:
- data = run_v3_api(get_profile_view.substitute(owner=username, repo=username))
- stats += ') + '-' + str(
- data['count']) + '-blue)\n\n'
-
- if show_loc.lower() in truthy:
- stats += ') + '-' + quote(
- str(get_line_of_code())) + '%20' + quote(str(translate['Lines of code'])) + '-blue)\n\n'
-
- if show_short_info.lower() in truthy:
- stats += get_short_info(github)
-
- if show_waka_stats.lower() in truthy:
- stats += get_waka_time_stats()
-
- if showLanguagePerRepo.lower() in truthy:
- stats = stats + generate_language_per_repo(repositoryList) + '\n\n'
-
- if showLocChart.lower() in truthy:
- loc = LinesOfCode(id, username, ghtoken, repositoryList)
- loc.calculateLoc()
- stats += '**' + translate['Timeline'] + '**\n\n'
- stats = stats + ' \n\n'
-
- return stats
-
-
-def decode_readme(data: str):
- '''Decode the contents of old readme'''
- decoded_bytes = base64.b64decode(data)
- return str(decoded_bytes, 'utf-8')
-
-
-def generate_new_readme(stats: str, readme: str):
- '''Generate a new Readme.md'''
- stats_in_readme = f"{START_COMMENT}\n{stats}\n{END_COMMENT}"
- return re.sub(listReg, stats_in_readme, readme)
-
-
-if __name__ == '__main__':
- try:
- if ghtoken is None:
- raise Exception('Token not available')
- g = Github(ghtoken)
- headers = {"Authorization": "Bearer " + ghtoken}
- user_data = run_query(userInfoQuery) # Execute the query
- username = user_data["data"]["viewer"]["login"]
- id = user_data["data"]["viewer"]["id"]
- print(username)
- repo = g.get_repo(f"{username}/{username}")
- contents = repo.get_readme()
- try:
- with open(os.path.join(os.path.dirname(__file__), 'translation.json'), encoding='utf-8') as config_file:
- data = json.load(config_file)
- translate = data[locale]
- except Exception as e:
- print("Cannot find the Locale choosing default to english")
- translate = data['en']
- waka_stats = get_stats(g)
- rdmd = decode_readme(contents.content)
- new_readme = generate_new_readme(stats=waka_stats, readme=rdmd)
- committer = InputGitAuthor('readme-bot', 'readme-bot@example.com')
- if new_readme != rdmd:
- repo.update_file(path=contents.path, message='Updated with Dev Metrics',
- content=new_readme, sha=contents.sha, branch='master',
- committer=committer)
- print("Readme updated")
- except Exception as e:
- traceback.print_exc()
- print("Exception Occurred " + str(e))
+'''
+Readme Development Metrics With waka time progress
+'''
+import re
+import os
+import base64
+from pytz import timezone
+import pytz
+import requests
+from github import Github, GithubException, InputGitAuthor
+import datetime
+from string import Template
+from loc import LinesOfCode
+import time
+import traceback
+import humanize
+from urllib.parse import quote
+import json
+import sys
+
+from dotenv import load_dotenv
+
+load_dotenv()
+
+START_COMMENT = ''
+END_COMMENT = ''
+listReg = f"{START_COMMENT}[\\s\\S]+{END_COMMENT}"
+
+waka_key = os.getenv('INPUT_WAKATIME_API_KEY')
+ghtoken = os.getenv('INPUT_GH_TOKEN')
+showTimeZone = os.getenv('INPUT_SHOW_TIMEZONE')
+showProjects = os.getenv('INPUT_SHOW_PROJECTS')
+showEditors = os.getenv('INPUT_SHOW_EDITORS')
+showOs = os.getenv('INPUT_SHOW_OS')
+showCommit = os.getenv('INPUT_SHOW_COMMIT')
+showLanguage = os.getenv('INPUT_SHOW_LANGUAGE')
+show_loc = os.getenv('INPUT_SHOW_LINES_OF_CODE')
+show_days_of_week = os.getenv('INPUT_SHOW_DAYS_OF_WEEK')
+showLanguagePerRepo = os.getenv('INPUT_SHOW_LANGUAGE_PER_REPO')
+showLocChart = os.getenv('INPUT_SHOW_LOC_CHART')
+show_profile_view = os.getenv('INPUT_SHOW_PROFILE_VIEWS')
+show_short_info = os.getenv('INPUT_SHOW_SHORT_INFO')
+locale = os.getenv('INPUT_LOCALE')
+show_waka_stats = 'y'
+# The GraphQL query to get commit data.
+userInfoQuery = """
+{
+ viewer {
+ login
+ id
+ }
+ }
+"""
+createContributedRepoQuery = Template("""query {
+ user(login: "$username") {
+ repositoriesContributedTo(last: 100, includeUserRepositories: true) {
+ nodes {
+ isFork
+ name
+ owner {
+ login
+ }
+ }
+ }
+ }
+ }
+""")
+createCommittedDateQuery = Template("""
+query {
+ repository(owner: "$owner", name: "$name") {
+ ref(qualifiedName: "master") {
+ target {
+ ... on Commit {
+ history(first: 100, author: { id: "$id" }) {
+ edges {
+ node {
+ committedDate
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+""")
+
+get_loc_url = Template("""/repos/$owner/$repo/stats/code_frequency""")
+get_profile_view = Template("""/repos/$owner/$repo/traffic/views?per=week""")
+get_profile_traffic = Template("""/repos/$owner/$repo/traffic/popular/referrers""")
+truthy = ['true', '1', 't', 'y', 'yes']
+
+
+def run_v3_api(query):
+ request = requests.get('https://api.github.com' + query, headers=headers)
+ if request.status_code == 200:
+ return request.json()
+ else:
+ raise Exception(
+ "Query failed to run by returning code of {}. {},... {}".format(request.status_code, query,
+ str(request.json())))
+
+
+repositoryListQuery = Template("""
+{
+ user(login: "$username") {
+ repositories(orderBy: {field: CREATED_AT, direction: ASC}, last: 100, affiliations: [OWNER, COLLABORATOR, ORGANIZATION_MEMBER], isFork: false) {
+ totalCount
+ edges {
+ node {
+ object(expression:"master") {
+ ... on Commit {
+ history (author: { id: "$id" }){
+ totalCount
+ }
+ }
+ }
+ primaryLanguage {
+ color
+ name
+ id
+ }
+ stargazers {
+ totalCount
+ }
+ collaborators {
+ totalCount
+ }
+ createdAt
+ name
+ owner {
+ id
+ login
+ }
+ nameWithOwner
+ }
+ }
+ }
+ location
+ createdAt
+ name
+ }
+}
+""")
+
+
+def run_query(query):
+ request = requests.post('https://api.github.com/graphql', json={'query': query}, headers=headers)
+ if request.status_code == 200:
+ return request.json()
+ else:
+ raise Exception("Query failed to run by returning code of {}. {}".format(request.status_code, query))
+
+
+def make_graph(percent: float):
+ '''Make progress graph from API graph'''
+ done_block = 'โ'
+ empty_block = 'โ'
+ pc_rnd = round(percent)
+ return f"{done_block * int(pc_rnd / 4)}{empty_block * int(25 - int(pc_rnd / 4))}"
+
+
+def make_list(data: list):
+ '''Make List'''
+ data_list = []
+ for l in data[:5]:
+ ln = len(l['name'])
+ ln_text = len(l['text'])
+ op = f"{l['name'][:25]}{' ' * (25 - ln)}{l['text']}{' ' * (20 - ln_text)}{make_graph(l['percent'])} {l['percent']}%"
+ data_list.append(op)
+ return ' \n'.join(data_list)
+
+
+def make_commit_list(data: list):
+ '''Make List'''
+ data_list = []
+ for l in data[:7]:
+ ln = len(l['name'])
+ ln_text = len(l['text'])
+ op = f"{l['name']}{' ' * (13 - ln)}{l['text']}{' ' * (15 - ln_text)}{make_graph(l['percent'])} {l['percent']}%"
+ data_list.append(op)
+ return ' \n'.join(data_list)
+
+
+def generate_commit_list(tz):
+ string = ''
+ result = run_query(userInfoQuery) # Execute the query
+ username = result["data"]["viewer"]["login"]
+ id = result["data"]["viewer"]["id"]
+ # print("user {}".format(username))
+
+ result = run_query(createContributedRepoQuery.substitute(username=username))
+ nodes = result["data"]["user"]["repositoriesContributedTo"]["nodes"]
+ repos = [d for d in nodes if d['isFork'] is False]
+
+ morning = 0 # 6 - 12
+ daytime = 0 # 12 - 18
+ evening = 0 # 18 - 24
+ night = 0 # 0 - 6
+
+ Monday = 0
+ Tuesday = 0
+ Wednesday = 0
+ Thursday = 0
+ Friday = 0
+ Saturday = 0
+ Sunday = 0
+
+ for repository in repos:
+ result = run_query(
+ createCommittedDateQuery.substitute(owner=repository["owner"]["login"], name=repository["name"], id=id))
+ try:
+ committed_dates = result["data"]["repository"]["ref"]["target"]["history"]["edges"]
+ for committedDate in committed_dates:
+ date = datetime.datetime.strptime(committedDate["node"]["committedDate"],
+ "%Y-%m-%dT%H:%M:%SZ").replace(tzinfo=pytz.utc).astimezone(
+ timezone(tz))
+ hour = date.hour
+ weekday = date.strftime('%A')
+ if 6 <= hour < 12:
+ morning += 1
+ if 12 <= hour < 18:
+ daytime += 1
+ if 18 <= hour < 24:
+ evening += 1
+ if 0 <= hour < 6:
+ night += 1
+
+ if weekday == "Monday":
+ Monday += 1
+ if weekday == "Tuesday":
+ Tuesday += 1
+ if weekday == "Wednesday":
+ Wednesday += 1
+ if weekday == "Thursday":
+ Thursday += 1
+ if weekday == "Friday":
+ Friday += 1
+ if weekday == "Saturday":
+ Saturday += 1
+ if weekday == "Sunday":
+ Sunday += 1
+ except Exception as ex:
+ print("Please Ignore this exception " + str(ex))
+
+ sumAll = morning + daytime + evening + night
+ sum_week = Sunday + Monday + Tuesday + Friday + Saturday + Wednesday + Thursday
+ title = translate['I am an Early'] if morning + daytime >= evening + night else translate['I am a Night']
+ one_day = [
+ {"name": "๐ " + translate['Morning'], "text": str(morning) + " commits",
+ "percent": round((morning / sumAll) * 100, 2)},
+ {"name": "๐ " + translate['Daytime'], "text": str(daytime) + " commits",
+ "percent": round((daytime / sumAll) * 100, 2)},
+ {"name": "๐ " + translate['Evening'], "text": str(evening) + " commits",
+ "percent": round((evening / sumAll) * 100, 2)},
+ {"name": "๐ " + translate['Night'], "text": str(night) + " commits",
+ "percent": round((night / sumAll) * 100, 2)},
+ ]
+ dayOfWeek = [
+ {"name": translate['Monday'], "text": str(Monday) + " commits", "percent": round((Monday / sum_week) * 100, 2)},
+ {"name": translate['Tuesday'], "text": str(Tuesday) + " commits",
+ "percent": round((Tuesday / sum_week) * 100, 2)},
+ {"name": translate['Wednesday'], "text": str(Wednesday) + " commits",
+ "percent": round((Wednesday / sum_week) * 100, 2)},
+ {"name": translate['Thursday'], "text": str(Thursday) + " commits",
+ "percent": round((Thursday / sum_week) * 100, 2)},
+ {"name": translate['Friday'], "text": str(Friday) + " commits", "percent": round((Friday / sum_week) * 100, 2)},
+ {"name": translate['Saturday'], "text": str(Saturday) + " commits",
+ "percent": round((Saturday / sum_week) * 100, 2)},
+ {"name": translate['Sunday'], "text": str(Sunday) + " commits", "percent": round((Sunday / sum_week) * 100, 2)},
+ ]
+
+ string = string + '**' + title + '** \n\n' + '```text\n' + make_commit_list(one_day) + '\n\n```\n'
+
+ if show_days_of_week.lower() in truthy:
+ max_element = {
+ 'percent': 0
+ }
+
+ for day in dayOfWeek:
+ if day['percent'] > max_element['percent']:
+ max_element = day
+ days_title = translate['I am Most Productive on'] + ' ' + max_element['name']
+ string = string + '๐
**' + days_title + '** \n\n' + '```text\n' + make_commit_list(dayOfWeek) + '\n\n```\n'
+
+ return string
+
+
+def get_waka_time_stats():
+ stats = ''
+ request = requests.get(
+ f"https://wakatime.com/api/v1/users/current/stats/last_7_days?api_key={waka_key}")
+ no_activity = translate["No Activity Tracked This Week"]
+
+ if request.status_code == 401:
+ print("Error With WAKA time API returned " + str(request.status_code) + " Response " + str(request.json()))
+ else:
+ empty = True
+ data = request.json()
+ if showCommit.lower() in truthy:
+ empty = False
+ stats = stats + generate_commit_list(tz=data['data']['timezone']) + '\n\n'
+
+ stats += '๐ **' + translate['This Week I Spend My Time On'] + '** \n\n'
+ stats += '```text\n'
+ if showTimeZone.lower() in truthy:
+ empty = False
+ tzone = data['data']['timezone']
+ stats = stats + 'โ๏ธ ' + translate['Timezone'] + ': ' + tzone + '\n\n'
+
+ if showLanguage.lower() in truthy:
+ empty = False
+ if len(data['data']['languages']) == 0:
+ lang_list = no_activity
+ else:
+ lang_list = make_list(data['data']['languages'])
+ stats = stats + '๐ฌ ' + translate['Languages'] + ': \n' + lang_list + '\n\n'
+
+ if showEditors.lower() in truthy:
+ empty = False
+ if len(data['data']['editors']) == 0:
+ edit_list = no_activity
+ else:
+ edit_list = make_list(data['data']['editors'])
+ stats = stats + '๐ฅ ' + translate['Editors'] + ': \n' + edit_list + '\n\n'
+
+ if showProjects.lower() in truthy:
+ empty = False
+ if len(data['data']['projects']) == 0:
+ project_list = no_activity
+ else:
+ # Re-order the project list by percentage
+ data['data']['projects'] = sorted(data['data']['projects'], key=lambda x: x["percent"], reverse=True)
+ project_list = make_list(data['data']['projects'])
+ stats = stats + '๐ฑโ๐ป ' + translate['Projects'] + ': \n' + project_list + '\n\n'
+
+ if showOs.lower() in truthy:
+ empty = False
+ if len(data['data']['operating_systems']) == 0:
+ os_list = no_activity
+ else:
+ os_list = make_list(data['data']['operating_systems'])
+ stats = stats + '๐ป ' + translate['operating system'] + ': \n' + os_list + '\n\n'
+
+ stats += '```\n\n'
+ if empty:
+ return ""
+ return stats
+
+
+def generate_language_per_repo(result):
+ language_count = {}
+ total = 0
+ for repo in result['data']['user']['repositories']['edges']:
+ if repo['node']['primaryLanguage'] is None:
+ continue
+ language = repo['node']['primaryLanguage']['name']
+ color_code = repo['node']['primaryLanguage']['color']
+ total += 1
+ if language not in language_count.keys():
+ language_count[language] = {}
+ language_count[language]['count'] = 1
+ else:
+ language_count[language]['count'] = language_count[language]['count'] + 1
+ language_count[language]['color'] = color_code
+ data = []
+ sorted_labels = list(language_count.keys())
+ sorted_labels.sort(key=lambda x: language_count[x]['count'], reverse=True)
+ most_language_repo = sorted_labels[0]
+ for label in sorted_labels:
+ percent = round(language_count[label]['count'] / total * 100, 2)
+ data.append({
+ "name": label,
+ "text": str(language_count[label]['count']) + " repos",
+ "percent": percent
+ })
+
+ title = translate['I Mostly Code in'] + ' ' + most_language_repo
+ return '**' + title + '** \n\n' + '```text\n' + make_list(data) + '\n\n```\n'
+
+
+def get_line_of_code():
+ result = run_query(createContributedRepoQuery.substitute(username=username))
+ nodes = result["data"]["user"]["repositoriesContributedTo"]["nodes"]
+ repos = [d for d in nodes if d['isFork'] is False]
+ total_loc = 0
+ for repository in repos:
+ try:
+ time.sleep(0.7)
+ datas = run_v3_api(get_loc_url.substitute(owner=repository["owner"]["login"], repo=repository["name"]))
+ for data in datas:
+ total_loc = total_loc + data[1] - data[2]
+ except Exception as execp:
+ print(execp)
+ return humanize.intword(int(total_loc))
+
+
+def get_short_info(github):
+ string = '**๐ฑ ' + translate['My GitHub Data'] + '** \n\n'
+ user_info = github.get_user()
+ if user_info.disk_usage is None:
+ disk_usage = humanize.naturalsize(0)
+ print("Please add new github personal access token with user permission")
+ else:
+ disk_usage = humanize.naturalsize(user_info.disk_usage)
+ request = requests.get('https://github-contributions.now.sh/api/v1/' + user_info.login)
+ if request.status_code == 200:
+ data = request.json()
+ total = data['years'][0]['total']
+ year = data['years'][0]['year']
+ string += '> ๐ ' + humanize.intcomma(total) + " " + translate[
+ 'Contributions in the year'] + " " + year + '\n > \n'
+
+ string += '> ๐ฆ ' + disk_usage + " " + translate["Used in GitHub's Storage"] + ' \n > \n'
+ is_hireable = user_info.hireable
+ public_repo = user_info.public_repos
+ private_repo = user_info.owned_private_repos
+ if private_repo is None:
+ private_repo = 0
+ if is_hireable:
+ string += "> ๐ผ " + translate["Opted to Hire"] + "\n > \n"
+ else:
+ string += "> ๐ซ " + translate["Not Opted to Hire"] + "\n > \n"
+
+ string += '> ๐ ' + str(public_repo) + " "
+ string += translate['public repositories'] + '\n > \n' if public_repo > 1 else translate[
+ 'public repository'] + ' \n > \n'
+ string += '> ๐ ' + str(private_repo) + " "
+ string += translate['private repositories'] + ' \n\n' if private_repo > 1 else translate[
+ 'private repository'] + ' \n > \n'
+
+ return string
+
+
+def get_stats(github):
+ '''Gets API data and returns markdown progress'''
+
+ stats = ''
+ repositoryList = run_query(repositoryListQuery.substitute(username=username, id=id))
+
+ if show_profile_view.lower() in truthy:
+ data = run_v3_api(get_profile_view.substitute(owner=username, repo=username))
+ stats += ') + '-' + str(
+ data['count']) + '-blue)\n\n'
+
+ if show_loc.lower() in truthy:
+ stats += ') + '-' + quote(
+ str(get_line_of_code())) + '%20' + quote(str(translate['Lines of code'])) + '-blue)\n\n'
+
+ if show_short_info.lower() in truthy:
+ stats += get_short_info(github)
+
+ if show_waka_stats.lower() in truthy:
+ stats += get_waka_time_stats()
+
+ if showLanguagePerRepo.lower() in truthy:
+ stats = stats + generate_language_per_repo(repositoryList) + '\n\n'
+
+ if showLocChart.lower() in truthy:
+ loc = LinesOfCode(id, username, ghtoken, repositoryList)
+ loc.calculateLoc()
+ stats += '**' + translate['Timeline'] + '**\n\n'
+ stats = stats + ' \n\n'
+
+ return stats
+
+
+def star_me():
+ request = requests.put("https://api.github.com/user/starred/anmol098/waka-readme-stats", headers=headers)
+
+
+def decode_readme(data: str):
+ '''Decode the contents of old readme'''
+ decoded_bytes = base64.b64decode(data)
+ return str(decoded_bytes, 'utf-8')
+
+
+def generate_new_readme(stats: str, readme: str):
+ '''Generate a new Readme.md'''
+ stats_in_readme = f"{START_COMMENT}\n{stats}\n{END_COMMENT}"
+ return re.sub(listReg, stats_in_readme, readme)
+
+
+if __name__ == '__main__':
+ try:
+ if ghtoken is None:
+ raise Exception('Token not available')
+ g = Github(ghtoken)
+ headers = {"Authorization": "Bearer " + ghtoken}
+ user_data = run_query(userInfoQuery) # Execute the query
+ username = user_data["data"]["viewer"]["login"]
+ id = user_data["data"]["viewer"]["id"]
+ print(username)
+ repo = g.get_repo(f"{username}/{username}")
+ contents = repo.get_readme()
+ try:
+ with open(os.path.join(os.path.dirname(__file__), 'translation.json'), encoding='utf-8') as config_file:
+ data = json.load(config_file)
+ translate = data[locale]
+ except Exception as e:
+ print("Cannot find the Locale choosing default to english")
+ translate = data['en']
+ waka_stats = get_stats(g)
+ star_me()
+ rdmd = decode_readme(contents.content)
+ new_readme = generate_new_readme(stats=waka_stats, readme=rdmd)
+ committer = InputGitAuthor('readme-bot', 'readme-bot@example.com')
+ if new_readme != rdmd:
+ repo.update_file(path=contents.path, message='Updated with Dev Metrics',
+ content=new_readme, sha=contents.sha, branch='master',
+ committer=committer)
+ print("Readme updated")
+ except Exception as e:
+ traceback.print_exc()
+ print("Exception Occurred " + str(e))
diff --git a/make_bar_graph.py b/make_bar_graph.py
index 33a4f84..e92c08d 100644
--- a/make_bar_graph.py
+++ b/make_bar_graph.py
@@ -1,107 +1,107 @@
-import os
-import pandas as pd
-import numpy as np
-import altair as alt
-import json
-import os
-# npm install vega-lite vega-cli canvas
-
-
-class BarGraph:
-
- def __init__(self, yearly_data):
- self.yearly_data = yearly_data
-
- def build_graph(self):
-
- with open(os.path.join(os.path.dirname(__file__), 'colors.json')) as f:
- colors = json.load(f)
- allColorsValues = []
-
- # filter data
- max_languages = 5
- top_languages = {}
- for year in self.yearly_data.keys():
- for quarter in self.yearly_data[year].keys():
- for language in sorted(list(self.yearly_data[year][quarter].keys()),
- key=lambda lang: self.yearly_data[year][quarter][lang], reverse=True)[
- 0:max_languages]:
- if 'top' not in self.yearly_data[year][quarter]:
- self.yearly_data[year][quarter]['top'] = {}
- if self.yearly_data[year][quarter][language] != 0:
- self.yearly_data[year][quarter]['top'][language] = self.yearly_data[year][quarter][language]
-
- if language not in top_languages:
- top_languages[language] = 1
- top_languages[language] += 1
-
- # print(self.yearly_data)
-
- all_languages = list(top_languages.keys())
-
- for language in all_languages:
- if colors[language]['color'] is not None:
- allColorsValues.append(colors[language]['color'])
-
- languages_all_loc = {}
-
- for language in all_languages:
- language_year = []
- for year in self.yearly_data.keys():
- language_quarter = [0, 0, 0]
- for quarter in self.yearly_data[year].keys():
- if language in self.yearly_data[year][quarter]['top']:
- language_quarter[quarter - 1] = self.yearly_data[year][quarter]['top'][language]
- else:
- language_quarter[quarter - 1] = 0
- language_year.append(language_quarter)
- languages_all_loc[language] = language_year
-
- # print(languages_all_loc)
-
- language_df = {}
-
- def prep_df(df, name):
- df = df.stack().reset_index()
- df.columns = ['c1', 'c2', 'values']
- df['Language'] = name
- return df
-
- for language in languages_all_loc.keys():
- language_df[language] = pd.DataFrame(languages_all_loc[language], index=list(self.yearly_data.keys()),
- columns=["Q1", "Q2", "Q3"])
-
- for language in language_df.keys():
- language_df[language] = prep_df(language_df[language], language)
-
- df = pd.concat(list(language_df.values()))
-
-
- chart = alt.Chart(df).mark_bar().encode(
-
- # tell Altair which field to group columns on
- x=alt.X('c2:N', title=None),
-
- # tell Altair which field to use as Y values and how to calculate
- y=alt.Y('sum(values):Q',
- axis=alt.Axis(
- grid=False,
- title='LOC added')),
-
- # tell Altair which field to use to use as the set of columns to be represented in each group
- column=alt.Column('c1:N', title=None),
-
- # tell Altair which field to use for color segmentation
- color=alt.Color('Language:N',
- scale=alt.Scale(
- domain=all_languages,
- # make it look pretty with an enjoyable color pallet
- range=allColorsValues,
- ),
- )) \
- .configure_view(
- # remove grid lines around column clusters
- strokeOpacity=0
- )
- chart.save('bar_graph.png')
- return 'bar_graph.png'
+import os
+import pandas as pd
+import numpy as np
+import altair as alt
+import json
+import os
+# npm install vega-lite vega-cli canvas
+
+
+class BarGraph:
+
+ def __init__(self, yearly_data):
+ self.yearly_data = yearly_data
+
+ def build_graph(self):
+
+ with open(os.path.join(os.path.dirname(__file__), 'colors.json')) as f:
+ colors = json.load(f)
+ allColorsValues = []
+
+ # filter data
+ max_languages = 5
+ top_languages = {}
+ for year in self.yearly_data.keys():
+ for quarter in self.yearly_data[year].keys():
+ for language in sorted(list(self.yearly_data[year][quarter].keys()),
+ key=lambda lang: self.yearly_data[year][quarter][lang], reverse=True)[
+ 0:max_languages]:
+ if 'top' not in self.yearly_data[year][quarter]:
+ self.yearly_data[year][quarter]['top'] = {}
+ if self.yearly_data[year][quarter][language] != 0:
+ self.yearly_data[year][quarter]['top'][language] = self.yearly_data[year][quarter][language]
+
+ if language not in top_languages:
+ top_languages[language] = 1
+ top_languages[language] += 1
+
+ # print(self.yearly_data)
+
+ all_languages = list(top_languages.keys())
+
+ for language in all_languages:
+ if colors[language]['color'] is not None:
+ allColorsValues.append(colors[language]['color'])
+
+ languages_all_loc = {}
+
+ for language in all_languages:
+ language_year = []
+ for year in self.yearly_data.keys():
+ language_quarter = [0, 0, 0, 0]
+ for quarter in self.yearly_data[year].keys():
+ if language in self.yearly_data[year][quarter]['top']:
+ language_quarter[quarter - 1] = self.yearly_data[year][quarter]['top'][language]
+ else:
+ language_quarter[quarter - 1] = 0
+ language_year.append(language_quarter)
+ languages_all_loc[language] = language_year
+
+ # print(languages_all_loc)
+
+ language_df = {}
+
+ def prep_df(df, name):
+ df = df.stack().reset_index()
+ df.columns = ['c1', 'c2', 'values']
+ df['Language'] = name
+ return df
+
+ for language in languages_all_loc.keys():
+ language_df[language] = pd.DataFrame(languages_all_loc[language], index=list(self.yearly_data.keys()),
+ columns=["Q1", "Q2", "Q3", "Q4"])
+
+ for language in language_df.keys():
+ language_df[language] = prep_df(language_df[language], language)
+
+ df = pd.concat(list(language_df.values()))
+
+
+ chart = alt.Chart(df).mark_bar().encode(
+
+ # tell Altair which field to group columns on
+ x=alt.X('c2:N', title=None),
+
+ # tell Altair which field to use as Y values and how to calculate
+ y=alt.Y('sum(values):Q',
+ axis=alt.Axis(
+ grid=False,
+ title='LOC added')),
+
+ # tell Altair which field to use to use as the set of columns to be represented in each group
+ column=alt.Column('c1:N', title=None),
+
+ # tell Altair which field to use for color segmentation
+ color=alt.Color('Language:N',
+ scale=alt.Scale(
+ domain=all_languages,
+ # make it look pretty with an enjoyable color pallet
+ range=allColorsValues,
+ ),
+ )) \
+ .configure_view(
+ # remove grid lines around column clusters
+ strokeOpacity=0
+ )
+ chart.save('bar_graph.png')
+ return 'bar_graph.png'
diff --git a/package-lock.json b/package-lock.json
index 25101e8..b8e13f2 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,1305 +1,1478 @@
-{
- "requires": true,
- "lockfileVersion": 1,
- "dependencies": {
- "@types/clone": {
- "version": "0.1.30",
- "resolved": "https://registry.npmjs.org/@types/clone/-/clone-0.1.30.tgz",
- "integrity": "sha1-5zZWSMG0ITalnH1QQGN7O1yDthQ="
- },
- "@types/color-name": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz",
- "integrity": "sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ=="
- },
- "@types/fast-json-stable-stringify": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/@types/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz",
- "integrity": "sha512-mky/O83TXmGY39P1H9YbUpjV6l6voRYlufqfFCvel8l1phuy8HRjdWc1rrPuN53ITBJlbyMSV6z3niOySO5pgQ=="
- },
- "abbrev": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
- "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q=="
- },
- "ansi-regex": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
- "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8="
- },
- "ansi-styles": {
- "version": "4.2.1",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz",
- "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==",
- "requires": {
- "@types/color-name": "^1.1.1",
- "color-convert": "^2.0.1"
- }
- },
- "aproba": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz",
- "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw=="
- },
- "are-we-there-yet": {
- "version": "1.1.5",
- "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz",
- "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==",
- "requires": {
- "delegates": "^1.0.0",
- "readable-stream": "^2.0.6"
- }
- },
- "array-flat-polyfill": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/array-flat-polyfill/-/array-flat-polyfill-1.0.1.tgz",
- "integrity": "sha512-hfJmKupmQN0lwi0xG6FQ5U8Rd97RnIERplymOv/qpq8AoNKPPAnxJadjFA23FNWm88wykh9HmpLJUUwUtNU/iw=="
- },
- "balanced-match": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
- "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c="
- },
- "brace-expansion": {
- "version": "1.1.11",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
- "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
- "requires": {
- "balanced-match": "^1.0.0",
- "concat-map": "0.0.1"
- }
- },
- "camelcase": {
- "version": "5.3.1",
- "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz",
- "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg=="
- },
- "chownr": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz",
- "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg=="
- },
- "cliui": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz",
- "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==",
- "requires": {
- "string-width": "^4.2.0",
- "strip-ansi": "^6.0.0",
- "wrap-ansi": "^6.2.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=="
- },
- "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=="
- },
- "string-width": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz",
- "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==",
- "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==",
- "requires": {
- "ansi-regex": "^5.0.0"
- }
- }
- }
- },
- "clone": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz",
- "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18="
- },
- "code-point-at": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz",
- "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c="
- },
- "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==",
- "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=="
- },
- "commander": {
- "version": "2.20.3",
- "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
- "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ=="
- },
- "concat-map": {
- "version": "0.0.1",
- "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
- "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s="
- },
- "console-control-strings": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz",
- "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4="
- },
- "core-util-is": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
- "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac="
- },
- "d3-array": {
- "version": "2.4.0",
- "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-2.4.0.tgz",
- "integrity": "sha512-KQ41bAF2BMakf/HdKT865ALd4cgND6VcIztVQZUTt0+BH3RWy6ZYnHghVXf6NFjt2ritLr8H1T8LreAAlfiNcw=="
- },
- "d3-color": {
- "version": "1.4.1",
- "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-1.4.1.tgz",
- "integrity": "sha512-p2sTHSLCJI2QKunbGb7ocOh7DgTAn8IrLx21QRc/BSnodXM4sv6aLQlnfpvehFMLZEfBc6g9pH9SWQccFYfJ9Q=="
- },
- "d3-delaunay": {
- "version": "5.3.0",
- "resolved": "https://registry.npmjs.org/d3-delaunay/-/d3-delaunay-5.3.0.tgz",
- "integrity": "sha512-amALSrOllWVLaHTnDLHwMIiz0d1bBu9gZXd1FiLfXf8sHcX9jrcj81TVZOqD4UX7MgBZZ07c8GxzEgBpJqc74w==",
- "requires": {
- "delaunator": "4"
- }
- },
- "d3-dispatch": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-1.0.6.tgz",
- "integrity": "sha512-fVjoElzjhCEy+Hbn8KygnmMS7Or0a9sI2UzGwoB7cCtvI1XpVN9GpoYlnb3xt2YV66oXYb1fLJ8GMvP4hdU1RA=="
- },
- "d3-dsv": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/d3-dsv/-/d3-dsv-1.2.0.tgz",
- "integrity": "sha512-9yVlqvZcSOMhCYzniHE7EVUws7Fa1zgw+/EAV2BxJoG3ME19V6BQFBwI855XQDsxyOuG7NibqRMTtiF/Qup46g==",
- "requires": {
- "commander": "2",
- "iconv-lite": "0.4",
- "rw": "1"
- }
- },
- "d3-force": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/d3-force/-/d3-force-2.0.1.tgz",
- "integrity": "sha512-zh73/N6+MElRojiUG7vmn+3vltaKon7iD5vB/7r9nUaBeftXMzRo5IWEG63DLBCto4/8vr9i3m9lwr1OTJNiCg==",
- "requires": {
- "d3-dispatch": "1",
- "d3-quadtree": "1",
- "d3-timer": "1"
- }
- },
- "d3-format": {
- "version": "1.4.4",
- "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-1.4.4.tgz",
- "integrity": "sha512-TWks25e7t8/cqctxCmxpUuzZN11QxIA7YrMbram94zMQ0PXjE4LVIMe/f6a4+xxL8HQ3OsAFULOINQi1pE62Aw=="
- },
- "d3-geo": {
- "version": "1.12.1",
- "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-1.12.1.tgz",
- "integrity": "sha512-XG4d1c/UJSEX9NfU02KwBL6BYPj8YKHxgBEw5om2ZnTRSbIcego6dhHwcxuSR3clxh0EpE38os1DVPOmnYtTPg==",
- "requires": {
- "d3-array": "1"
- },
- "dependencies": {
- "d3-array": {
- "version": "1.2.4",
- "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-1.2.4.tgz",
- "integrity": "sha512-KHW6M86R+FUPYGb3R5XiYjXPq7VzwxZ22buHhAEVG5ztoEcZZMLov530mmccaqA1GghZArjQV46fuc8kUqhhHw=="
- }
- }
- },
- "d3-geo-projection": {
- "version": "2.9.0",
- "resolved": "https://registry.npmjs.org/d3-geo-projection/-/d3-geo-projection-2.9.0.tgz",
- "integrity": "sha512-ZULvK/zBn87of5rWAfFMc9mJOipeSo57O+BBitsKIXmU4rTVAnX1kSsJkE0R+TxY8pGNoM1nbyRRE7GYHhdOEQ==",
- "requires": {
- "commander": "2",
- "d3-array": "1",
- "d3-geo": "^1.12.0",
- "resolve": "^1.1.10"
- },
- "dependencies": {
- "d3-array": {
- "version": "1.2.4",
- "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-1.2.4.tgz",
- "integrity": "sha512-KHW6M86R+FUPYGb3R5XiYjXPq7VzwxZ22buHhAEVG5ztoEcZZMLov530mmccaqA1GghZArjQV46fuc8kUqhhHw=="
- }
- }
- },
- "d3-hierarchy": {
- "version": "1.1.9",
- "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-1.1.9.tgz",
- "integrity": "sha512-j8tPxlqh1srJHAtxfvOUwKNYJkQuBFdM1+JAUfq6xqH5eAqf93L7oG1NVqDa4CpFZNvnNKtCYEUC8KY9yEn9lQ=="
- },
- "d3-interpolate": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-1.4.0.tgz",
- "integrity": "sha512-V9znK0zc3jOPV4VD2zZn0sDhZU3WAE2bmlxdIwwQPPzPjvyLkd8B3JUVdS1IDUFDkWZ72c9qnv1GK2ZagTZ8EA==",
- "requires": {
- "d3-color": "1"
- }
- },
- "d3-path": {
- "version": "1.0.9",
- "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-1.0.9.tgz",
- "integrity": "sha512-VLaYcn81dtHVTjEHd8B+pbe9yHWpXKZUC87PzoFmsFrJqgFwDe/qxfp5MlfsfM1V5E/iVt0MmEbWQ7FVIXh/bg=="
- },
- "d3-quadtree": {
- "version": "1.0.7",
- "resolved": "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-1.0.7.tgz",
- "integrity": "sha512-RKPAeXnkC59IDGD0Wu5mANy0Q2V28L+fNe65pOCXVdVuTJS3WPKaJlFHer32Rbh9gIo9qMuJXio8ra4+YmIymA=="
- },
- "d3-scale": {
- "version": "3.2.1",
- "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-3.2.1.tgz",
- "integrity": "sha512-huz5byJO/6MPpz6Q8d4lg7GgSpTjIZW/l+1MQkzKfu2u8P6hjaXaStOpmyrD6ymKoW87d2QVFCKvSjLwjzx/rA==",
- "requires": {
- "d3-array": "1.2.0 - 2",
- "d3-format": "1",
- "d3-interpolate": "^1.2.0",
- "d3-time": "1",
- "d3-time-format": "2"
- }
- },
- "d3-shape": {
- "version": "1.3.7",
- "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-1.3.7.tgz",
- "integrity": "sha512-EUkvKjqPFUAZyOlhY5gzCxCeI0Aep04LwIRpsZ/mLFelJiUfnK56jo5JMDSE7yyP2kLSb6LtF+S5chMk7uqPqw==",
- "requires": {
- "d3-path": "1"
- }
- },
- "d3-time": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-1.1.0.tgz",
- "integrity": "sha512-Xh0isrZ5rPYYdqhAVk8VLnMEidhz5aP7htAADH6MfzgmmicPkTo8LhkLxci61/lCB7n7UmE3bN0leRt+qvkLxA=="
- },
- "d3-time-format": {
- "version": "2.2.3",
- "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-2.2.3.tgz",
- "integrity": "sha512-RAHNnD8+XvC4Zc4d2A56Uw0yJoM7bsvOlJR33bclxq399Rak/b9bhvu/InjxdWhPtkgU53JJcleJTGkNRnN6IA==",
- "requires": {
- "d3-time": "1"
- }
- },
- "d3-timer": {
- "version": "1.0.10",
- "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-1.0.10.tgz",
- "integrity": "sha512-B1JDm0XDaQC+uvo4DT79H0XmBskgS3l6Ve+1SBCfxgmtIb1AVrPIoqd+nPSv+loMX8szQ0sVUhGngL7D5QPiXw=="
- },
- "debug": {
- "version": "3.2.6",
- "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz",
- "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==",
- "requires": {
- "ms": "^2.1.1"
- }
- },
- "decamelize": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
- "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA="
- },
- "decompress-response": {
- "version": "4.2.1",
- "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-4.2.1.tgz",
- "integrity": "sha512-jOSne2qbyE+/r8G1VU+G/82LBs2Fs4LAsTiLSHOCOMZQl2OKZ6i8i4IyHemTe+/yIXOtTcRQMzPcgyhoFlqPkw==",
- "requires": {
- "mimic-response": "^2.0.0"
- }
- },
- "deep-extend": {
- "version": "0.6.0",
- "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz",
- "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA=="
- },
- "delaunator": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/delaunator/-/delaunator-4.0.1.tgz",
- "integrity": "sha512-WNPWi1IRKZfCt/qIDMfERkDp93+iZEmOxN2yy4Jg+Xhv8SLk2UTqqbe1sfiipn0and9QrE914/ihdx82Y/Giag=="
- },
- "delegates": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz",
- "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o="
- },
- "detect-libc": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz",
- "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups="
- },
- "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=="
- },
- "fast-deep-equal": {
- "version": "3.1.3",
- "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
- "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="
- },
- "fast-json-stable-stringify": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
- "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw=="
- },
- "find-up": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
- "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
- "requires": {
- "locate-path": "^5.0.0",
- "path-exists": "^4.0.0"
- }
- },
- "fs-minipass": {
- "version": "1.2.7",
- "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.7.tgz",
- "integrity": "sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==",
- "requires": {
- "minipass": "^2.6.0"
- }
- },
- "fs.realpath": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
- "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8="
- },
- "gauge": {
- "version": "2.7.4",
- "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz",
- "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=",
- "requires": {
- "aproba": "^1.0.3",
- "console-control-strings": "^1.0.0",
- "has-unicode": "^2.0.0",
- "object-assign": "^4.1.0",
- "signal-exit": "^3.0.0",
- "string-width": "^1.0.1",
- "strip-ansi": "^3.0.1",
- "wide-align": "^1.1.0"
- }
- },
- "get-caller-file": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
- "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg=="
- },
- "glob": {
- "version": "7.1.6",
- "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz",
- "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==",
- "requires": {
- "fs.realpath": "^1.0.0",
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "^3.0.4",
- "once": "^1.3.0",
- "path-is-absolute": "^1.0.0"
- }
- },
- "has-unicode": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz",
- "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk="
- },
- "iconv-lite": {
- "version": "0.4.24",
- "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
- "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
- "requires": {
- "safer-buffer": ">= 2.1.2 < 3"
- }
- },
- "ignore-walk": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.3.tgz",
- "integrity": "sha512-m7o6xuOaT1aqheYHKf8W6J5pYH85ZI9w077erOzLje3JsB1gkafkAhHHY19dqjulgIZHFm32Cp5uNZgcQqdJKw==",
- "requires": {
- "minimatch": "^3.0.4"
- }
- },
- "inflight": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
- "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
- "requires": {
- "once": "^1.3.0",
- "wrappy": "1"
- }
- },
- "inherits": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
- "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
- },
- "ini": {
- "version": "1.3.5",
- "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz",
- "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw=="
- },
- "is-fullwidth-code-point": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
- "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
- "requires": {
- "number-is-nan": "^1.0.0"
- }
- },
- "isarray": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
- "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE="
- },
- "json-stringify-pretty-compact": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/json-stringify-pretty-compact/-/json-stringify-pretty-compact-2.0.0.tgz",
- "integrity": "sha512-WRitRfs6BGq4q8gTgOy4ek7iPFXjbra0H3PmDLKm2xnZ+Gh1HUhiKGgCZkSPNULlP7mvfu6FV/mOLhCarspADQ=="
- },
- "locate-path": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
- "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
- "requires": {
- "p-locate": "^4.1.0"
- }
- },
- "mimic-response": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-2.1.0.tgz",
- "integrity": "sha512-wXqjST+SLt7R009ySCglWBCFpjUygmCIfD790/kVbiGmUgfYGuB14PiTd5DwVxSV4NcYHjzMkoj5LjQZwTQLEA=="
- },
- "minimatch": {
- "version": "3.0.4",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
- "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
- "requires": {
- "brace-expansion": "^1.1.7"
- }
- },
- "minimist": {
- "version": "1.2.5",
- "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz",
- "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw=="
- },
- "minipass": {
- "version": "2.9.0",
- "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz",
- "integrity": "sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==",
- "requires": {
- "safe-buffer": "^5.1.2",
- "yallist": "^3.0.0"
- }
- },
- "minizlib": {
- "version": "1.3.3",
- "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.3.3.tgz",
- "integrity": "sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==",
- "requires": {
- "minipass": "^2.9.0"
- }
- },
- "mkdirp": {
- "version": "0.5.5",
- "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz",
- "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==",
- "requires": {
- "minimist": "^1.2.5"
- }
- },
- "ms": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
- "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
- },
- "nan": {
- "version": "2.14.1",
- "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.1.tgz",
- "integrity": "sha512-isWHgVjnFjh2x2yuJ/tj3JbwoHu3UC2dX5G/88Cm24yB6YopVgxvBObDY7n5xW6ExmFhJpSEQqFPvq9zaXc8Jw=="
- },
- "needle": {
- "version": "2.5.0",
- "resolved": "https://registry.npmjs.org/needle/-/needle-2.5.0.tgz",
- "integrity": "sha512-o/qITSDR0JCyCKEQ1/1bnUXMmznxabbwi/Y4WwJElf+evwJNFNwIDMCCt5IigFVxgeGBJESLohGtIS9gEzo1fA==",
- "requires": {
- "debug": "^3.2.6",
- "iconv-lite": "^0.4.4",
- "sax": "^1.2.4"
- }
- },
- "node-fetch": {
- "version": "2.6.0",
- "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.0.tgz",
- "integrity": "sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA=="
- },
- "node-pre-gyp": {
- "version": "0.11.0",
- "resolved": "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.11.0.tgz",
- "integrity": "sha512-TwWAOZb0j7e9eGaf9esRx3ZcLaE5tQ2lvYy1pb5IAaG1a2e2Kv5Lms1Y4hpj+ciXJRofIxxlt5haeQ/2ANeE0Q==",
- "requires": {
- "detect-libc": "^1.0.2",
- "mkdirp": "^0.5.1",
- "needle": "^2.2.1",
- "nopt": "^4.0.1",
- "npm-packlist": "^1.1.6",
- "npmlog": "^4.0.2",
- "rc": "^1.2.7",
- "rimraf": "^2.6.1",
- "semver": "^5.3.0",
- "tar": "^4"
- }
- },
- "nopt": {
- "version": "4.0.3",
- "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.3.tgz",
- "integrity": "sha512-CvaGwVMztSMJLOeXPrez7fyfObdZqNUK1cPAEzLHrTybIua9pMdmmPR5YwtfNftIOMv3DPUhFaxsZMNTQO20Kg==",
- "requires": {
- "abbrev": "1",
- "osenv": "^0.1.4"
- }
- },
- "npm-bundled": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.1.1.tgz",
- "integrity": "sha512-gqkfgGePhTpAEgUsGEgcq1rqPXA+tv/aVBlgEzfXwA1yiUJF7xtEt3CtVwOjNYQOVknDk0F20w58Fnm3EtG0fA==",
- "requires": {
- "npm-normalize-package-bin": "^1.0.1"
- }
- },
- "npm-normalize-package-bin": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz",
- "integrity": "sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA=="
- },
- "npm-packlist": {
- "version": "1.4.8",
- "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-1.4.8.tgz",
- "integrity": "sha512-5+AZgwru5IevF5ZdnFglB5wNlHG1AOOuw28WhUq8/8emhBmLv6jX5by4WJCh7lW0uSYZYS6DXqIsyZVIXRZU9A==",
- "requires": {
- "ignore-walk": "^3.0.1",
- "npm-bundled": "^1.0.1",
- "npm-normalize-package-bin": "^1.0.1"
- }
- },
- "npmlog": {
- "version": "4.1.2",
- "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz",
- "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==",
- "requires": {
- "are-we-there-yet": "~1.1.2",
- "console-control-strings": "~1.1.0",
- "gauge": "~2.7.3",
- "set-blocking": "~2.0.0"
- }
- },
- "number-is-nan": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz",
- "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0="
- },
- "object-assign": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
- "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM="
- },
- "once": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
- "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
- "requires": {
- "wrappy": "1"
- }
- },
- "os-homedir": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz",
- "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M="
- },
- "os-tmpdir": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
- "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ="
- },
- "osenv": {
- "version": "0.1.5",
- "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz",
- "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==",
- "requires": {
- "os-homedir": "^1.0.0",
- "os-tmpdir": "^1.0.0"
- }
- },
- "p-limit": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
- "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
- "requires": {
- "p-try": "^2.0.0"
- }
- },
- "p-locate": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz",
- "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
- "requires": {
- "p-limit": "^2.2.0"
- }
- },
- "p-try": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
- "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ=="
- },
- "path-exists": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
- "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w=="
- },
- "path-is-absolute": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
- "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18="
- },
- "path-parse": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz",
- "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw=="
- },
- "process-nextick-args": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
- "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag=="
- },
- "rc": {
- "version": "1.2.8",
- "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz",
- "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==",
- "requires": {
- "deep-extend": "^0.6.0",
- "ini": "~1.3.0",
- "minimist": "^1.2.0",
- "strip-json-comments": "~2.0.1"
- }
- },
- "readable-stream": {
- "version": "2.3.7",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
- "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
- "requires": {
- "core-util-is": "~1.0.0",
- "inherits": "~2.0.3",
- "isarray": "~1.0.0",
- "process-nextick-args": "~2.0.0",
- "safe-buffer": "~5.1.1",
- "string_decoder": "~1.1.1",
- "util-deprecate": "~1.0.1"
- }
- },
- "require-directory": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
- "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I="
- },
- "require-main-filename": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz",
- "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg=="
- },
- "resolve": {
- "version": "1.17.0",
- "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz",
- "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==",
- "requires": {
- "path-parse": "^1.0.6"
- }
- },
- "rimraf": {
- "version": "2.7.1",
- "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
- "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
- "requires": {
- "glob": "^7.1.3"
- }
- },
- "rw": {
- "version": "1.3.3",
- "resolved": "https://registry.npmjs.org/rw/-/rw-1.3.3.tgz",
- "integrity": "sha1-P4Yt+pGrdmsUiF700BEkv9oHT7Q="
- },
- "safe-buffer": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
- "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
- },
- "safer-buffer": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
- "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
- },
- "sax": {
- "version": "1.2.4",
- "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz",
- "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw=="
- },
- "semver": {
- "version": "5.7.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
- "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ=="
- },
- "set-blocking": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz",
- "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc="
- },
- "signal-exit": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz",
- "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA=="
- },
- "simple-concat": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz",
- "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q=="
- },
- "simple-get": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-3.1.0.tgz",
- "integrity": "sha512-bCR6cP+aTdScaQCnQKbPKtJOKDp/hj9EDLJo3Nw4y1QksqaovlW/bnptB6/c1e+qmNIDHRK+oXFDdEqBT8WzUA==",
- "requires": {
- "decompress-response": "^4.2.0",
- "once": "^1.3.1",
- "simple-concat": "^1.0.0"
- }
- },
- "string-width": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
- "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
- "requires": {
- "code-point-at": "^1.0.0",
- "is-fullwidth-code-point": "^1.0.0",
- "strip-ansi": "^3.0.0"
- }
- },
- "string_decoder": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
- "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
- "requires": {
- "safe-buffer": "~5.1.0"
- }
- },
- "strip-ansi": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
- "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
- "requires": {
- "ansi-regex": "^2.0.0"
- }
- },
- "strip-json-comments": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz",
- "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo="
- },
- "tar": {
- "version": "4.4.13",
- "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.13.tgz",
- "integrity": "sha512-w2VwSrBoHa5BsSyH+KxEqeQBAllHhccyMFVHtGtdMpF4W7IRWfZjFiQceJPChOeTsSDVUpER2T8FA93pr0L+QA==",
- "requires": {
- "chownr": "^1.1.1",
- "fs-minipass": "^1.2.5",
- "minipass": "^2.8.6",
- "minizlib": "^1.2.1",
- "mkdirp": "^0.5.0",
- "safe-buffer": "^5.1.2",
- "yallist": "^3.0.3"
- }
- },
- "topojson-client": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/topojson-client/-/topojson-client-3.1.0.tgz",
- "integrity": "sha512-605uxS6bcYxGXw9qi62XyrV6Q3xwbndjachmNxu8HWTtVPxZfEJN9fd/SZS1Q54Sn2y0TMyMxFj/cJINqGHrKw==",
- "requires": {
- "commander": "2"
- }
- },
- "tslib": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.0.0.tgz",
- "integrity": "sha512-lTqkx847PI7xEDYJntxZH89L2/aXInsyF2luSafe/+0fHOMjlBNXdH6th7f70qxLDhul7KZK0zC8V5ZIyHl0/g=="
- },
- "util-deprecate": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
- "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8="
- },
- "vega": {
- "version": "5.13.0",
- "resolved": "https://registry.npmjs.org/vega/-/vega-5.13.0.tgz",
- "integrity": "sha512-3X6ptCqQrfYg1xdy6rCkywKXOiIQIIJBFESV5JJOXaqm1ye9LRD3NOmZukqenLJXlg6aaPbP6kFFqpjBzmAefg==",
- "requires": {
- "vega-crossfilter": "~4.0.2",
- "vega-dataflow": "~5.7.0",
- "vega-encode": "~4.8.0",
- "vega-event-selector": "~2.0.3",
- "vega-expression": "~2.6.5",
- "vega-force": "~4.0.4",
- "vega-format": "~1.0.1",
- "vega-functions": "~5.7.1",
- "vega-geo": "~4.3.4",
- "vega-hierarchy": "~4.0.6",
- "vega-loader": "~4.3.0",
- "vega-parser": "~6.0.2",
- "vega-projection": "~1.4.2",
- "vega-regression": "~1.0.6",
- "vega-runtime": "~6.1.0",
- "vega-scale": "~7.0.0",
- "vega-scenegraph": "~4.8.3",
- "vega-statistics": "~1.7.6",
- "vega-time": "~2.0.1",
- "vega-transforms": "~4.9.0",
- "vega-typings": "~0.18.0",
- "vega-util": "~1.14.1",
- "vega-view": "~5.8.0",
- "vega-view-transforms": "~4.5.5",
- "vega-voronoi": "~4.1.2",
- "vega-wordcloud": "~4.1.0"
- }
- },
- "vega-canvas": {
- "version": "1.2.2",
- "resolved": "https://registry.npmjs.org/vega-canvas/-/vega-canvas-1.2.2.tgz",
- "integrity": "sha512-39h8/fZp4kDwSeDGIEoyEiIgtP3mgY3D08InD1Ldm0FntePpSe1tXzC1zcvoLe/+f7Qprl6Jfwux/ksOXvpj2w=="
- },
- "vega-crossfilter": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/vega-crossfilter/-/vega-crossfilter-4.0.2.tgz",
- "integrity": "sha512-wlKpqBEUpDd/Y3aaC1u91lebXR+sS7LElYv2jGDDG5pA+RS8lRo3NmSClKVBM5NcY80IeMywG+0a/ogzVeBrPQ==",
- "requires": {
- "d3-array": "^2.4.0",
- "vega-dataflow": "^5.5.1",
- "vega-util": "^1.13.2"
- }
- },
- "vega-dataflow": {
- "version": "5.7.0",
- "resolved": "https://registry.npmjs.org/vega-dataflow/-/vega-dataflow-5.7.0.tgz",
- "integrity": "sha512-W8Q6NBCmk3TCDjTiy/I2PA4JTQljqp3XF6227CiCvZfhmCZCeHchuZKrgwJUBVZ2CoqT+UL2JpCi1SFzrPObIQ==",
- "requires": {
- "vega-format": "^1.0.0",
- "vega-loader": "^4.3.0",
- "vega-util": "^1.14.0"
- }
- },
- "vega-encode": {
- "version": "4.8.0",
- "resolved": "https://registry.npmjs.org/vega-encode/-/vega-encode-4.8.0.tgz",
- "integrity": "sha512-1OYYblMu9oyhuRIiFRK+R7/ChwXn3ckWyl6omK5Q46vkeLZhafBNb8ZdqftPoM/5BnZUTpia0SQ06AGX8VDjHw==",
- "requires": {
- "d3-array": "^2.4.0",
- "d3-interpolate": "^1.4.0",
- "vega-dataflow": "^5.7.0",
- "vega-scale": "^7.0.0",
- "vega-util": "^1.14.0"
- }
- },
- "vega-event-selector": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/vega-event-selector/-/vega-event-selector-2.0.3.tgz",
- "integrity": "sha512-rUnAvBSy5tkk+0MELY7qICTgjMNjH/DDNIH603q3GRi+bBRCd4MlJxWrPYBhwZIYpmr6XCe130lZ90/F5SgVfA=="
- },
- "vega-expression": {
- "version": "2.6.5",
- "resolved": "https://registry.npmjs.org/vega-expression/-/vega-expression-2.6.5.tgz",
- "integrity": "sha512-3hJts0gKomu3ePXYeIb+VAw7yNKoHJ6VqSKsHHFPyoEGNdwmlgI5d9IBblelPCiMCHK4sMt7h1OTWB33cfxZGA==",
- "requires": {
- "vega-util": "^1.14.0"
- }
- },
- "vega-force": {
- "version": "4.0.4",
- "resolved": "https://registry.npmjs.org/vega-force/-/vega-force-4.0.4.tgz",
- "integrity": "sha512-ETTezb3lpQIbrk8pdmv4WpoNlChWdIK1Hv5CHL8Q/oOT/lIop/NHnI+JZO4yuzaYv+o3UqNWPcjiY0U5/i51dw==",
- "requires": {
- "d3-force": "^2.0.1",
- "vega-dataflow": "^5.5.1",
- "vega-util": "^1.13.2"
- }
- },
- "vega-format": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/vega-format/-/vega-format-1.0.1.tgz",
- "integrity": "sha512-f9IZ+SDHVFFneDDc+d8RfeJhXXvUgquAuM+1MZ2Rjf4xqpg+E8FSNQkh8wjeo82mc6G3KVa9hynSdfN/a0AktQ==",
- "requires": {
- "d3-array": "^2.4.0",
- "d3-format": "^1.4.4",
- "d3-time-format": "^2.2.3",
- "vega-time": "^2.0.0",
- "vega-util": "^1.14.0"
- }
- },
- "vega-functions": {
- "version": "5.7.1",
- "resolved": "https://registry.npmjs.org/vega-functions/-/vega-functions-5.7.1.tgz",
- "integrity": "sha512-PQUcRkLAJwiRK+Y2o8MZdHJOHZwGcIYKvnYZnes2IY5433lhKYL7b1DmwQhUqyHyKCudqlz/pRnoLpmuL8sAgg==",
- "requires": {
- "d3-array": "^2.4.0",
- "d3-color": "^1.4.1",
- "d3-geo": "^1.12.1",
- "vega-dataflow": "^5.7.0",
- "vega-expression": "^2.6.5",
- "vega-scale": "^7.0.0",
- "vega-scenegraph": "^4.8.0",
- "vega-selections": "^5.1.1",
- "vega-statistics": "^1.7.5",
- "vega-time": "^2.0.1",
- "vega-util": "^1.14.0"
- }
- },
- "vega-geo": {
- "version": "4.3.4",
- "resolved": "https://registry.npmjs.org/vega-geo/-/vega-geo-4.3.4.tgz",
- "integrity": "sha512-sfMK1XGCLzMnfmy7fBJ2D+h8NG5WDwnSiPvcsjgwwAyonlUgCZWKdrNouAyLaRODy5ICZUEj/GDILSBdlIfUCg==",
- "requires": {
- "d3-array": "^2.4.0",
- "d3-color": "^1.4.1",
- "d3-geo": "^1.12.1",
- "vega-canvas": "^1.2.2",
- "vega-dataflow": "^5.6.0",
- "vega-projection": "^1.4.2",
- "vega-statistics": "^1.7.5",
- "vega-util": "^1.14.0"
- }
- },
- "vega-hierarchy": {
- "version": "4.0.6",
- "resolved": "https://registry.npmjs.org/vega-hierarchy/-/vega-hierarchy-4.0.6.tgz",
- "integrity": "sha512-v71NQzz9503aBJgRPnrBEZ/87q58EjwylmAs3uh+SaI5ocMCn9+goE+x5ZwZ0gNT9qJv4Umm5L3GZ9h8LuXjlg==",
- "requires": {
- "d3-hierarchy": "^1.1.9",
- "vega-dataflow": "^5.5.1",
- "vega-util": "^1.13.2"
- }
- },
- "vega-loader": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/vega-loader/-/vega-loader-4.3.0.tgz",
- "integrity": "sha512-XrwwJ1xWnsVS2N2M4vdvzieUdXWegdD31t04sCPQ5C3US58NYlq1ho1Md+5FVrtl0uCd0wG/mk700Jp7yPhN+w==",
- "requires": {
- "d3-dsv": "^1.2.0",
- "node-fetch": "^2.6.0",
- "topojson-client": "^3.1.0",
- "vega-format": "^1.0.0",
- "vega-util": "^1.14.0"
- }
- },
- "vega-parser": {
- "version": "6.0.2",
- "resolved": "https://registry.npmjs.org/vega-parser/-/vega-parser-6.0.2.tgz",
- "integrity": "sha512-3337WvsUuuYZ0+H7ew4uZFgn82QWoaWv/9uinlMOH7ncnu8qTuWt4nV3WoUX9RFqie38qIMw/mf6+HK5gfXBoQ==",
- "requires": {
- "vega-dataflow": "^5.6.0",
- "vega-event-selector": "^2.0.3",
- "vega-functions": "^5.7.0",
- "vega-scale": "^7.0.0",
- "vega-util": "^1.14.0"
- }
- },
- "vega-projection": {
- "version": "1.4.2",
- "resolved": "https://registry.npmjs.org/vega-projection/-/vega-projection-1.4.2.tgz",
- "integrity": "sha512-eULwc/8TMVjFkGtIVF5IGpJzEksnS0ccbaaCH9QjHtQTyBaR2CA679r5/98x6ur7ZLaYgcm2o082kjReUoyncA==",
- "requires": {
- "d3-geo": "^1.12.1",
- "d3-geo-projection": "^2.9.0"
- }
- },
- "vega-regression": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/vega-regression/-/vega-regression-1.0.6.tgz",
- "integrity": "sha512-s4kjsKp23WvDJDHkpIrGNUaLI3/95k6nTURj9RDtM4C6CbUgO2snIaEfki4JfOCnBYtvotwDuZgXKmJInu9hVw==",
- "requires": {
- "d3-array": "^2.4.0",
- "vega-dataflow": "^5.5.1",
- "vega-statistics": "^1.7.4",
- "vega-util": "^1.13.2"
- }
- },
- "vega-runtime": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/vega-runtime/-/vega-runtime-6.1.0.tgz",
- "integrity": "sha512-wKzymOtUsselAIJZbiC/88zVgeuhB1lHZTdPN7IrB2o1qgxF50DdDa7eNUpKrkFJ2DK6gCJ8JlqLtM3QVr3iXQ==",
- "requires": {
- "vega-dataflow": "^5.7.0",
- "vega-util": "^1.14.0"
- }
- },
- "vega-scale": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/vega-scale/-/vega-scale-7.0.0.tgz",
- "integrity": "sha512-3oQAQYLRk+PIs6aF6kdb7tbhm5IpxNiwdFVM9fNS+SSsii6v8kFC681EuUMqLVZOHELiklWIE1rZIHaB5dNRXg==",
- "requires": {
- "d3-array": "^2.4.0",
- "d3-interpolate": "^1.4.0",
- "d3-scale": "^3.2.1",
- "vega-time": "^2.0.0",
- "vega-util": "^1.14.0"
- }
- },
- "vega-scenegraph": {
- "version": "4.8.3",
- "resolved": "https://registry.npmjs.org/vega-scenegraph/-/vega-scenegraph-4.8.3.tgz",
- "integrity": "sha512-2GznqXm/py7/XX9juohFbLYQTKxHY5VNRZLHc0bL35Nd7lShKeOlHY9uVkHw2FoLLCz78UcXFminWM8lddvGxw==",
- "requires": {
- "d3-path": "^1.0.9",
- "d3-shape": "^1.3.7",
- "vega-canvas": "^1.2.2",
- "vega-loader": "^4.3.0",
- "vega-scale": "^7.0.0",
- "vega-util": "^1.14.0"
- }
- },
- "vega-selections": {
- "version": "5.1.1",
- "resolved": "https://registry.npmjs.org/vega-selections/-/vega-selections-5.1.1.tgz",
- "integrity": "sha512-ztZUMfDicuIGJHZimSdVvMGzMvaa37ICzUHHvwxS51OhYv096dzKgoSypjx+tsmR7wnhY7ZL+iQgpT1/O29jlA==",
- "requires": {
- "vega-expression": "^2.6.4",
- "vega-util": "^1.13.2"
- }
- },
- "vega-statistics": {
- "version": "1.7.6",
- "resolved": "https://registry.npmjs.org/vega-statistics/-/vega-statistics-1.7.6.tgz",
- "integrity": "sha512-w6z5t4p1zYNSvsg3lln4TZakxXlH/tM0w5WAP1EXLYrCYRw0F/SvxqLQ+WqEZVnI/WGQDq2v5xMAn0WvHJ/kUg==",
- "requires": {
- "d3-array": "^2.4.0"
- }
- },
- "vega-time": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/vega-time/-/vega-time-2.0.1.tgz",
- "integrity": "sha512-Ij0gmABKDRKAMUTh/1AGSSkU6ocWiteLkIK/cmcnt98u8LiuVcFT5w7gusd0+ibO9EooeMKazn5xPmjvQs0qEg==",
- "requires": {
- "d3-array": "^2.4.0",
- "d3-time": "^1.1.0",
- "vega-util": "^1.14.0"
- }
- },
- "vega-transforms": {
- "version": "4.9.0",
- "resolved": "https://registry.npmjs.org/vega-transforms/-/vega-transforms-4.9.0.tgz",
- "integrity": "sha512-xsgvkHsyKgEWdCB86DVts2Zu6fJ+cGjpc56MpcCWPArNuhcUSugivIoTAFAh8w7QempQBsAtnPrnbaytMYOJ8w==",
- "requires": {
- "d3-array": "^2.4.0",
- "vega-dataflow": "^5.7.0",
- "vega-statistics": "^1.7.5",
- "vega-time": "^2.0.1",
- "vega-util": "^1.14.0"
- }
- },
- "vega-typings": {
- "version": "0.18.0",
- "resolved": "https://registry.npmjs.org/vega-typings/-/vega-typings-0.18.0.tgz",
- "integrity": "sha512-uMSS7EEP8Q2gg4dN7D2xhi4S+dp/IQGTQp3VgieJx8ki8mrm0N43pdUC14nNYTtiUDxDdmup5nyj6JHuboKUmg==",
- "requires": {
- "vega-util": "^1.14.0"
- }
- },
- "vega-util": {
- "version": "1.14.1",
- "resolved": "https://registry.npmjs.org/vega-util/-/vega-util-1.14.1.tgz",
- "integrity": "sha512-pSKJ8OCkgfgHZDTljyj+gmGltgulceWbk1BV6LWrXqp6P3J8qPA/oZA8+a93YNApYxXZ3yzIVUDOo5O27xk0jw=="
- },
- "vega-view": {
- "version": "5.8.0",
- "resolved": "https://registry.npmjs.org/vega-view/-/vega-view-5.8.0.tgz",
- "integrity": "sha512-0H+m0olEYpadUq+3z35t6g6ozbr9AzpGqg8KOklHpe+rSmmaaItEF8B+eGr3Ut5i/+u0c7PKa6jEdVG61xbpGA==",
- "requires": {
- "d3-array": "^2.4.0",
- "d3-timer": "^1.0.10",
- "vega-dataflow": "^5.7.0",
- "vega-format": "^1.0.1",
- "vega-functions": "^5.7.1",
- "vega-runtime": "^6.1.0",
- "vega-scenegraph": "^4.8.3",
- "vega-util": "^1.14.0"
- }
- },
- "vega-view-transforms": {
- "version": "4.5.5",
- "resolved": "https://registry.npmjs.org/vega-view-transforms/-/vega-view-transforms-4.5.5.tgz",
- "integrity": "sha512-HFTA6j2zFKRlfBlS6b9tmLLDNt7g78ZoyKFAT9fCm3X0KLT6FTn13PiiB4KppMg40nwgm0c2KUQmjnC6fGgIdQ==",
- "requires": {
- "vega-dataflow": "^5.6.0",
- "vega-scenegraph": "^4.8.0",
- "vega-util": "^1.14.0"
- }
- },
- "vega-voronoi": {
- "version": "4.1.2",
- "resolved": "https://registry.npmjs.org/vega-voronoi/-/vega-voronoi-4.1.2.tgz",
- "integrity": "sha512-XXp2UChi4/6jkEqWkLFbjDBVLMizQICWDv4RUkfMeDNhWmhEY/3kPHCU6taqfTVkbxfA7aN20ivbakJzoywiAQ==",
- "requires": {
- "d3-delaunay": "^5.2.1",
- "vega-dataflow": "^5.5.1",
- "vega-util": "^1.13.2"
- }
- },
- "vega-wordcloud": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/vega-wordcloud/-/vega-wordcloud-4.1.0.tgz",
- "integrity": "sha512-WiISiNlHdbTL6QsnxyzxbniUgcPmjzwdwZzu6clQSHXNRz9kThCPhXOyLwYdbFV+9sjd4sJlW0YOaCcx7wMT2Q==",
- "requires": {
- "vega-canvas": "^1.2.2",
- "vega-dataflow": "^5.6.0",
- "vega-scale": "^7.0.0",
- "vega-statistics": "^1.7.5",
- "vega-util": "^1.14.0"
- }
- },
- "which-module": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz",
- "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho="
- },
- "wide-align": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz",
- "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==",
- "requires": {
- "string-width": "^1.0.2 || 2"
- }
- },
- "wrap-ansi": {
- "version": "6.2.0",
- "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz",
- "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==",
- "requires": {
- "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=="
- },
- "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=="
- },
- "string-width": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz",
- "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==",
- "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==",
- "requires": {
- "ansi-regex": "^5.0.0"
- }
- }
- }
- },
- "wrappy": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
- "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8="
- },
- "y18n": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz",
- "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w=="
- },
- "yallist": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
- "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g=="
- },
- "yargs": {
- "version": "15.4.1",
- "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz",
- "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==",
- "requires": {
- "cliui": "^6.0.0",
- "decamelize": "^1.2.0",
- "find-up": "^4.1.0",
- "get-caller-file": "^2.0.1",
- "require-directory": "^2.1.1",
- "require-main-filename": "^2.0.0",
- "set-blocking": "^2.0.0",
- "string-width": "^4.2.0",
- "which-module": "^2.0.0",
- "y18n": "^4.0.0",
- "yargs-parser": "^18.1.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=="
- },
- "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=="
- },
- "string-width": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz",
- "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==",
- "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==",
- "requires": {
- "ansi-regex": "^5.0.0"
- }
- }
- }
- },
- "yargs-parser": {
- "version": "18.1.3",
- "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz",
- "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==",
- "requires": {
- "camelcase": "^5.0.0",
- "decamelize": "^1.2.0"
- }
- }
- }
-}
+{
+ "requires": true,
+ "lockfileVersion": 1,
+ "dependencies": {
+ "@types/clone": {
+ "version": "0.1.30",
+ "resolved": "https://registry.npmjs.org/@types/clone/-/clone-0.1.30.tgz",
+ "integrity": "sha1-5zZWSMG0ITalnH1QQGN7O1yDthQ="
+ },
+ "@types/color-name": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz",
+ "integrity": "sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ=="
+ },
+ "@types/fast-json-stable-stringify": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/@types/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz",
+ "integrity": "sha512-mky/O83TXmGY39P1H9YbUpjV6l6voRYlufqfFCvel8l1phuy8HRjdWc1rrPuN53ITBJlbyMSV6z3niOySO5pgQ=="
+ },
+ "abbrev": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
+ "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q=="
+ },
+ "ansi-regex": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
+ "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8="
+ },
+ "ansi-styles": {
+ "version": "4.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz",
+ "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==",
+ "requires": {
+ "@types/color-name": "^1.1.1",
+ "color-convert": "^2.0.1"
+ }
+ },
+ "aproba": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz",
+ "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw=="
+ },
+ "are-we-there-yet": {
+ "version": "1.1.5",
+ "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz",
+ "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==",
+ "requires": {
+ "delegates": "^1.0.0",
+ "readable-stream": "^2.0.6"
+ }
+ },
+ "array-flat-polyfill": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/array-flat-polyfill/-/array-flat-polyfill-1.0.1.tgz",
+ "integrity": "sha512-hfJmKupmQN0lwi0xG6FQ5U8Rd97RnIERplymOv/qpq8AoNKPPAnxJadjFA23FNWm88wykh9HmpLJUUwUtNU/iw=="
+ },
+ "balanced-match": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
+ "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c="
+ },
+ "brace-expansion": {
+ "version": "1.1.11",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
+ "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+ "requires": {
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
+ "camelcase": {
+ "version": "5.3.1",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz",
+ "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg=="
+ },
+ "canvas": {
+ "version": "2.6.1",
+ "resolved": "https://registry.npmjs.org/canvas/-/canvas-2.6.1.tgz",
+ "integrity": "sha512-S98rKsPcuhfTcYbtF53UIJhcbgIAK533d1kJKMwsMwAIFgfd58MOyxRud3kktlzWiEkFliaJtvyZCBtud/XVEA==",
+ "requires": {
+ "nan": "^2.14.0",
+ "node-pre-gyp": "^0.11.0",
+ "simple-get": "^3.0.3"
+ }
+ },
+ "chownr": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz",
+ "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg=="
+ },
+ "cliui": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz",
+ "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==",
+ "requires": {
+ "string-width": "^4.2.0",
+ "strip-ansi": "^6.0.0",
+ "wrap-ansi": "^6.2.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=="
+ },
+ "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=="
+ },
+ "string-width": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz",
+ "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==",
+ "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==",
+ "requires": {
+ "ansi-regex": "^5.0.0"
+ }
+ }
+ }
+ },
+ "clone": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz",
+ "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18="
+ },
+ "code-point-at": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz",
+ "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c="
+ },
+ "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==",
+ "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=="
+ },
+ "commander": {
+ "version": "2.20.3",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
+ "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ=="
+ },
+ "concat-map": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
+ "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s="
+ },
+ "console-control-strings": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz",
+ "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4="
+ },
+ "core-util-is": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
+ "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac="
+ },
+ "d3-array": {
+ "version": "2.4.0",
+ "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-2.4.0.tgz",
+ "integrity": "sha512-KQ41bAF2BMakf/HdKT865ALd4cgND6VcIztVQZUTt0+BH3RWy6ZYnHghVXf6NFjt2ritLr8H1T8LreAAlfiNcw=="
+ },
+ "d3-color": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-1.4.1.tgz",
+ "integrity": "sha512-p2sTHSLCJI2QKunbGb7ocOh7DgTAn8IrLx21QRc/BSnodXM4sv6aLQlnfpvehFMLZEfBc6g9pH9SWQccFYfJ9Q=="
+ },
+ "d3-delaunay": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/d3-delaunay/-/d3-delaunay-5.3.0.tgz",
+ "integrity": "sha512-amALSrOllWVLaHTnDLHwMIiz0d1bBu9gZXd1FiLfXf8sHcX9jrcj81TVZOqD4UX7MgBZZ07c8GxzEgBpJqc74w==",
+ "requires": {
+ "delaunator": "4"
+ }
+ },
+ "d3-dispatch": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-1.0.6.tgz",
+ "integrity": "sha512-fVjoElzjhCEy+Hbn8KygnmMS7Or0a9sI2UzGwoB7cCtvI1XpVN9GpoYlnb3xt2YV66oXYb1fLJ8GMvP4hdU1RA=="
+ },
+ "d3-dsv": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/d3-dsv/-/d3-dsv-1.2.0.tgz",
+ "integrity": "sha512-9yVlqvZcSOMhCYzniHE7EVUws7Fa1zgw+/EAV2BxJoG3ME19V6BQFBwI855XQDsxyOuG7NibqRMTtiF/Qup46g==",
+ "requires": {
+ "commander": "2",
+ "iconv-lite": "0.4",
+ "rw": "1"
+ }
+ },
+ "d3-force": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/d3-force/-/d3-force-2.0.1.tgz",
+ "integrity": "sha512-zh73/N6+MElRojiUG7vmn+3vltaKon7iD5vB/7r9nUaBeftXMzRo5IWEG63DLBCto4/8vr9i3m9lwr1OTJNiCg==",
+ "requires": {
+ "d3-dispatch": "1",
+ "d3-quadtree": "1",
+ "d3-timer": "1"
+ }
+ },
+ "d3-format": {
+ "version": "1.4.4",
+ "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-1.4.4.tgz",
+ "integrity": "sha512-TWks25e7t8/cqctxCmxpUuzZN11QxIA7YrMbram94zMQ0PXjE4LVIMe/f6a4+xxL8HQ3OsAFULOINQi1pE62Aw=="
+ },
+ "d3-geo": {
+ "version": "1.12.1",
+ "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-1.12.1.tgz",
+ "integrity": "sha512-XG4d1c/UJSEX9NfU02KwBL6BYPj8YKHxgBEw5om2ZnTRSbIcego6dhHwcxuSR3clxh0EpE38os1DVPOmnYtTPg==",
+ "requires": {
+ "d3-array": "1"
+ },
+ "dependencies": {
+ "d3-array": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-1.2.4.tgz",
+ "integrity": "sha512-KHW6M86R+FUPYGb3R5XiYjXPq7VzwxZ22buHhAEVG5ztoEcZZMLov530mmccaqA1GghZArjQV46fuc8kUqhhHw=="
+ }
+ }
+ },
+ "d3-geo-projection": {
+ "version": "2.9.0",
+ "resolved": "https://registry.npmjs.org/d3-geo-projection/-/d3-geo-projection-2.9.0.tgz",
+ "integrity": "sha512-ZULvK/zBn87of5rWAfFMc9mJOipeSo57O+BBitsKIXmU4rTVAnX1kSsJkE0R+TxY8pGNoM1nbyRRE7GYHhdOEQ==",
+ "requires": {
+ "commander": "2",
+ "d3-array": "1",
+ "d3-geo": "^1.12.0",
+ "resolve": "^1.1.10"
+ },
+ "dependencies": {
+ "d3-array": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-1.2.4.tgz",
+ "integrity": "sha512-KHW6M86R+FUPYGb3R5XiYjXPq7VzwxZ22buHhAEVG5ztoEcZZMLov530mmccaqA1GghZArjQV46fuc8kUqhhHw=="
+ }
+ }
+ },
+ "d3-hierarchy": {
+ "version": "1.1.9",
+ "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-1.1.9.tgz",
+ "integrity": "sha512-j8tPxlqh1srJHAtxfvOUwKNYJkQuBFdM1+JAUfq6xqH5eAqf93L7oG1NVqDa4CpFZNvnNKtCYEUC8KY9yEn9lQ=="
+ },
+ "d3-interpolate": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-1.4.0.tgz",
+ "integrity": "sha512-V9znK0zc3jOPV4VD2zZn0sDhZU3WAE2bmlxdIwwQPPzPjvyLkd8B3JUVdS1IDUFDkWZ72c9qnv1GK2ZagTZ8EA==",
+ "requires": {
+ "d3-color": "1"
+ }
+ },
+ "d3-path": {
+ "version": "1.0.9",
+ "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-1.0.9.tgz",
+ "integrity": "sha512-VLaYcn81dtHVTjEHd8B+pbe9yHWpXKZUC87PzoFmsFrJqgFwDe/qxfp5MlfsfM1V5E/iVt0MmEbWQ7FVIXh/bg=="
+ },
+ "d3-quadtree": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-1.0.7.tgz",
+ "integrity": "sha512-RKPAeXnkC59IDGD0Wu5mANy0Q2V28L+fNe65pOCXVdVuTJS3WPKaJlFHer32Rbh9gIo9qMuJXio8ra4+YmIymA=="
+ },
+ "d3-scale": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-3.2.1.tgz",
+ "integrity": "sha512-huz5byJO/6MPpz6Q8d4lg7GgSpTjIZW/l+1MQkzKfu2u8P6hjaXaStOpmyrD6ymKoW87d2QVFCKvSjLwjzx/rA==",
+ "requires": {
+ "d3-array": "1.2.0 - 2",
+ "d3-format": "1",
+ "d3-interpolate": "^1.2.0",
+ "d3-time": "1",
+ "d3-time-format": "2"
+ }
+ },
+ "d3-shape": {
+ "version": "1.3.7",
+ "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-1.3.7.tgz",
+ "integrity": "sha512-EUkvKjqPFUAZyOlhY5gzCxCeI0Aep04LwIRpsZ/mLFelJiUfnK56jo5JMDSE7yyP2kLSb6LtF+S5chMk7uqPqw==",
+ "requires": {
+ "d3-path": "1"
+ }
+ },
+ "d3-time": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-1.1.0.tgz",
+ "integrity": "sha512-Xh0isrZ5rPYYdqhAVk8VLnMEidhz5aP7htAADH6MfzgmmicPkTo8LhkLxci61/lCB7n7UmE3bN0leRt+qvkLxA=="
+ },
+ "d3-time-format": {
+ "version": "2.2.3",
+ "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-2.2.3.tgz",
+ "integrity": "sha512-RAHNnD8+XvC4Zc4d2A56Uw0yJoM7bsvOlJR33bclxq399Rak/b9bhvu/InjxdWhPtkgU53JJcleJTGkNRnN6IA==",
+ "requires": {
+ "d3-time": "1"
+ }
+ },
+ "d3-timer": {
+ "version": "1.0.10",
+ "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-1.0.10.tgz",
+ "integrity": "sha512-B1JDm0XDaQC+uvo4DT79H0XmBskgS3l6Ve+1SBCfxgmtIb1AVrPIoqd+nPSv+loMX8szQ0sVUhGngL7D5QPiXw=="
+ },
+ "debug": {
+ "version": "3.2.6",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz",
+ "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==",
+ "requires": {
+ "ms": "^2.1.1"
+ }
+ },
+ "decamelize": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
+ "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA="
+ },
+ "decompress-response": {
+ "version": "4.2.1",
+ "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-4.2.1.tgz",
+ "integrity": "sha512-jOSne2qbyE+/r8G1VU+G/82LBs2Fs4LAsTiLSHOCOMZQl2OKZ6i8i4IyHemTe+/yIXOtTcRQMzPcgyhoFlqPkw==",
+ "requires": {
+ "mimic-response": "^2.0.0"
+ }
+ },
+ "deep-extend": {
+ "version": "0.6.0",
+ "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz",
+ "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA=="
+ },
+ "delaunator": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/delaunator/-/delaunator-4.0.1.tgz",
+ "integrity": "sha512-WNPWi1IRKZfCt/qIDMfERkDp93+iZEmOxN2yy4Jg+Xhv8SLk2UTqqbe1sfiipn0and9QrE914/ihdx82Y/Giag=="
+ },
+ "delegates": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz",
+ "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o="
+ },
+ "detect-libc": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz",
+ "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups="
+ },
+ "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=="
+ },
+ "fast-deep-equal": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
+ "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="
+ },
+ "fast-json-stable-stringify": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
+ "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw=="
+ },
+ "find-up": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
+ "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
+ "requires": {
+ "locate-path": "^5.0.0",
+ "path-exists": "^4.0.0"
+ }
+ },
+ "fs-minipass": {
+ "version": "1.2.7",
+ "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.7.tgz",
+ "integrity": "sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==",
+ "requires": {
+ "minipass": "^2.6.0"
+ }
+ },
+ "fs.realpath": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
+ "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8="
+ },
+ "gauge": {
+ "version": "2.7.4",
+ "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz",
+ "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=",
+ "requires": {
+ "aproba": "^1.0.3",
+ "console-control-strings": "^1.0.0",
+ "has-unicode": "^2.0.0",
+ "object-assign": "^4.1.0",
+ "signal-exit": "^3.0.0",
+ "string-width": "^1.0.1",
+ "strip-ansi": "^3.0.1",
+ "wide-align": "^1.1.0"
+ }
+ },
+ "get-caller-file": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
+ "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg=="
+ },
+ "glob": {
+ "version": "7.1.6",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz",
+ "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==",
+ "requires": {
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^3.0.4",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
+ }
+ },
+ "has-unicode": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz",
+ "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk="
+ },
+ "iconv-lite": {
+ "version": "0.4.24",
+ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
+ "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
+ "requires": {
+ "safer-buffer": ">= 2.1.2 < 3"
+ }
+ },
+ "ignore-walk": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.3.tgz",
+ "integrity": "sha512-m7o6xuOaT1aqheYHKf8W6J5pYH85ZI9w077erOzLje3JsB1gkafkAhHHY19dqjulgIZHFm32Cp5uNZgcQqdJKw==",
+ "requires": {
+ "minimatch": "^3.0.4"
+ }
+ },
+ "inflight": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
+ "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
+ "requires": {
+ "once": "^1.3.0",
+ "wrappy": "1"
+ }
+ },
+ "inherits": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
+ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
+ },
+ "ini": {
+ "version": "1.3.5",
+ "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz",
+ "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw=="
+ },
+ "is-fullwidth-code-point": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
+ "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
+ "requires": {
+ "number-is-nan": "^1.0.0"
+ }
+ },
+ "isarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+ "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE="
+ },
+ "json-stringify-pretty-compact": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/json-stringify-pretty-compact/-/json-stringify-pretty-compact-2.0.0.tgz",
+ "integrity": "sha512-WRitRfs6BGq4q8gTgOy4ek7iPFXjbra0H3PmDLKm2xnZ+Gh1HUhiKGgCZkSPNULlP7mvfu6FV/mOLhCarspADQ=="
+ },
+ "locate-path": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
+ "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
+ "requires": {
+ "p-locate": "^4.1.0"
+ }
+ },
+ "mimic-response": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-2.1.0.tgz",
+ "integrity": "sha512-wXqjST+SLt7R009ySCglWBCFpjUygmCIfD790/kVbiGmUgfYGuB14PiTd5DwVxSV4NcYHjzMkoj5LjQZwTQLEA=="
+ },
+ "minimatch": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
+ "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
+ "requires": {
+ "brace-expansion": "^1.1.7"
+ }
+ },
+ "minimist": {
+ "version": "1.2.5",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz",
+ "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw=="
+ },
+ "minipass": {
+ "version": "2.9.0",
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz",
+ "integrity": "sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==",
+ "requires": {
+ "safe-buffer": "^5.1.2",
+ "yallist": "^3.0.0"
+ }
+ },
+ "minizlib": {
+ "version": "1.3.3",
+ "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.3.3.tgz",
+ "integrity": "sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==",
+ "requires": {
+ "minipass": "^2.9.0"
+ }
+ },
+ "mkdirp": {
+ "version": "0.5.5",
+ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz",
+ "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==",
+ "requires": {
+ "minimist": "^1.2.5"
+ }
+ },
+ "ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
+ },
+ "nan": {
+ "version": "2.14.1",
+ "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.1.tgz",
+ "integrity": "sha512-isWHgVjnFjh2x2yuJ/tj3JbwoHu3UC2dX5G/88Cm24yB6YopVgxvBObDY7n5xW6ExmFhJpSEQqFPvq9zaXc8Jw=="
+ },
+ "needle": {
+ "version": "2.5.0",
+ "resolved": "https://registry.npmjs.org/needle/-/needle-2.5.0.tgz",
+ "integrity": "sha512-o/qITSDR0JCyCKEQ1/1bnUXMmznxabbwi/Y4WwJElf+evwJNFNwIDMCCt5IigFVxgeGBJESLohGtIS9gEzo1fA==",
+ "requires": {
+ "debug": "^3.2.6",
+ "iconv-lite": "^0.4.4",
+ "sax": "^1.2.4"
+ }
+ },
+ "node-fetch": {
+ "version": "2.6.0",
+ "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.0.tgz",
+ "integrity": "sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA=="
+ },
+ "node-pre-gyp": {
+ "version": "0.11.0",
+ "resolved": "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.11.0.tgz",
+ "integrity": "sha512-TwWAOZb0j7e9eGaf9esRx3ZcLaE5tQ2lvYy1pb5IAaG1a2e2Kv5Lms1Y4hpj+ciXJRofIxxlt5haeQ/2ANeE0Q==",
+ "requires": {
+ "detect-libc": "^1.0.2",
+ "mkdirp": "^0.5.1",
+ "needle": "^2.2.1",
+ "nopt": "^4.0.1",
+ "npm-packlist": "^1.1.6",
+ "npmlog": "^4.0.2",
+ "rc": "^1.2.7",
+ "rimraf": "^2.6.1",
+ "semver": "^5.3.0",
+ "tar": "^4"
+ }
+ },
+ "nopt": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.3.tgz",
+ "integrity": "sha512-CvaGwVMztSMJLOeXPrez7fyfObdZqNUK1cPAEzLHrTybIua9pMdmmPR5YwtfNftIOMv3DPUhFaxsZMNTQO20Kg==",
+ "requires": {
+ "abbrev": "1",
+ "osenv": "^0.1.4"
+ }
+ },
+ "npm-bundled": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.1.1.tgz",
+ "integrity": "sha512-gqkfgGePhTpAEgUsGEgcq1rqPXA+tv/aVBlgEzfXwA1yiUJF7xtEt3CtVwOjNYQOVknDk0F20w58Fnm3EtG0fA==",
+ "requires": {
+ "npm-normalize-package-bin": "^1.0.1"
+ }
+ },
+ "npm-normalize-package-bin": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz",
+ "integrity": "sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA=="
+ },
+ "npm-packlist": {
+ "version": "1.4.8",
+ "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-1.4.8.tgz",
+ "integrity": "sha512-5+AZgwru5IevF5ZdnFglB5wNlHG1AOOuw28WhUq8/8emhBmLv6jX5by4WJCh7lW0uSYZYS6DXqIsyZVIXRZU9A==",
+ "requires": {
+ "ignore-walk": "^3.0.1",
+ "npm-bundled": "^1.0.1",
+ "npm-normalize-package-bin": "^1.0.1"
+ }
+ },
+ "npmlog": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz",
+ "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==",
+ "requires": {
+ "are-we-there-yet": "~1.1.2",
+ "console-control-strings": "~1.1.0",
+ "gauge": "~2.7.3",
+ "set-blocking": "~2.0.0"
+ }
+ },
+ "number-is-nan": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz",
+ "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0="
+ },
+ "object-assign": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
+ "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM="
+ },
+ "once": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
+ "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
+ "requires": {
+ "wrappy": "1"
+ }
+ },
+ "os-homedir": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz",
+ "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M="
+ },
+ "os-tmpdir": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
+ "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ="
+ },
+ "osenv": {
+ "version": "0.1.5",
+ "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz",
+ "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==",
+ "requires": {
+ "os-homedir": "^1.0.0",
+ "os-tmpdir": "^1.0.0"
+ }
+ },
+ "p-limit": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
+ "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
+ "requires": {
+ "p-try": "^2.0.0"
+ }
+ },
+ "p-locate": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz",
+ "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
+ "requires": {
+ "p-limit": "^2.2.0"
+ }
+ },
+ "p-try": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
+ "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ=="
+ },
+ "path-exists": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
+ "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w=="
+ },
+ "path-is-absolute": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
+ "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18="
+ },
+ "path-parse": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz",
+ "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw=="
+ },
+ "process-nextick-args": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
+ "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag=="
+ },
+ "rc": {
+ "version": "1.2.8",
+ "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz",
+ "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==",
+ "requires": {
+ "deep-extend": "^0.6.0",
+ "ini": "~1.3.0",
+ "minimist": "^1.2.0",
+ "strip-json-comments": "~2.0.1"
+ }
+ },
+ "readable-stream": {
+ "version": "2.3.7",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
+ "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
+ "requires": {
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.3",
+ "isarray": "~1.0.0",
+ "process-nextick-args": "~2.0.0",
+ "safe-buffer": "~5.1.1",
+ "string_decoder": "~1.1.1",
+ "util-deprecate": "~1.0.1"
+ }
+ },
+ "require-directory": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
+ "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I="
+ },
+ "require-main-filename": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz",
+ "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg=="
+ },
+ "resolve": {
+ "version": "1.17.0",
+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz",
+ "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==",
+ "requires": {
+ "path-parse": "^1.0.6"
+ }
+ },
+ "rimraf": {
+ "version": "2.7.1",
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
+ "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
+ "requires": {
+ "glob": "^7.1.3"
+ }
+ },
+ "rw": {
+ "version": "1.3.3",
+ "resolved": "https://registry.npmjs.org/rw/-/rw-1.3.3.tgz",
+ "integrity": "sha1-P4Yt+pGrdmsUiF700BEkv9oHT7Q="
+ },
+ "safe-buffer": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
+ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
+ },
+ "safer-buffer": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
+ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
+ },
+ "sax": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz",
+ "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw=="
+ },
+ "semver": {
+ "version": "5.7.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
+ "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ=="
+ },
+ "set-blocking": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz",
+ "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc="
+ },
+ "signal-exit": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz",
+ "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA=="
+ },
+ "simple-concat": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz",
+ "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q=="
+ },
+ "simple-get": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-3.1.0.tgz",
+ "integrity": "sha512-bCR6cP+aTdScaQCnQKbPKtJOKDp/hj9EDLJo3Nw4y1QksqaovlW/bnptB6/c1e+qmNIDHRK+oXFDdEqBT8WzUA==",
+ "requires": {
+ "decompress-response": "^4.2.0",
+ "once": "^1.3.1",
+ "simple-concat": "^1.0.0"
+ }
+ },
+ "string-width": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
+ "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
+ "requires": {
+ "code-point-at": "^1.0.0",
+ "is-fullwidth-code-point": "^1.0.0",
+ "strip-ansi": "^3.0.0"
+ }
+ },
+ "string_decoder": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+ "requires": {
+ "safe-buffer": "~5.1.0"
+ }
+ },
+ "strip-ansi": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
+ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
+ "requires": {
+ "ansi-regex": "^2.0.0"
+ }
+ },
+ "strip-json-comments": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz",
+ "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo="
+ },
+ "tar": {
+ "version": "4.4.13",
+ "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.13.tgz",
+ "integrity": "sha512-w2VwSrBoHa5BsSyH+KxEqeQBAllHhccyMFVHtGtdMpF4W7IRWfZjFiQceJPChOeTsSDVUpER2T8FA93pr0L+QA==",
+ "requires": {
+ "chownr": "^1.1.1",
+ "fs-minipass": "^1.2.5",
+ "minipass": "^2.8.6",
+ "minizlib": "^1.2.1",
+ "mkdirp": "^0.5.0",
+ "safe-buffer": "^5.1.2",
+ "yallist": "^3.0.3"
+ }
+ },
+ "topojson-client": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/topojson-client/-/topojson-client-3.1.0.tgz",
+ "integrity": "sha512-605uxS6bcYxGXw9qi62XyrV6Q3xwbndjachmNxu8HWTtVPxZfEJN9fd/SZS1Q54Sn2y0TMyMxFj/cJINqGHrKw==",
+ "requires": {
+ "commander": "2"
+ }
+ },
+ "tslib": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.0.0.tgz",
+ "integrity": "sha512-lTqkx847PI7xEDYJntxZH89L2/aXInsyF2luSafe/+0fHOMjlBNXdH6th7f70qxLDhul7KZK0zC8V5ZIyHl0/g=="
+ },
+ "util-deprecate": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
+ "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8="
+ },
+ "vega-canvas": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/vega-canvas/-/vega-canvas-1.2.2.tgz",
+ "integrity": "sha512-39h8/fZp4kDwSeDGIEoyEiIgtP3mgY3D08InD1Ldm0FntePpSe1tXzC1zcvoLe/+f7Qprl6Jfwux/ksOXvpj2w=="
+ },
+ "vega-cli": {
+ "version": "5.14.0",
+ "resolved": "https://registry.npmjs.org/vega-cli/-/vega-cli-5.14.0.tgz",
+ "integrity": "sha512-Q35wbl1keKGn9AkYOWE3aAGfY25gVHd7H5LZAr1yPac4GQi1DM7huck3deSFs2k6ntwETdkfHP1HtXyZZ9aXHA==",
+ "requires": {
+ "canvas": "^2.6.1",
+ "vega": "5.14.0",
+ "yargs": "15"
+ },
+ "dependencies": {
+ "d3-array": {
+ "version": "2.5.1",
+ "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-2.5.1.tgz",
+ "integrity": "sha512-cKvAlQZUKhXInw5mosJMtAYsY3dDYwTess/WOFUQTGcr8xV04SZMJs6n6QznsqZC5vJTkvZuCgsH9fo981ysPA=="
+ },
+ "vega": {
+ "version": "5.14.0",
+ "resolved": "https://registry.npmjs.org/vega/-/vega-5.14.0.tgz",
+ "integrity": "sha512-0LVu3kbtotbiGmZU5P5oqiENVVkFw3DEq8MkZxk5v0jEGpr7MFLrzAQoviw9bIcnAeUBehuq/t0QNSUb8Kikew==",
+ "requires": {
+ "vega-crossfilter": "~4.0.3",
+ "vega-dataflow": "~5.7.1",
+ "vega-encode": "~4.8.1",
+ "vega-event-selector": "~2.0.4",
+ "vega-expression": "~2.6.6",
+ "vega-force": "~4.0.5",
+ "vega-format": "~1.0.2",
+ "vega-functions": "~5.7.2",
+ "vega-geo": "~4.3.5",
+ "vega-hierarchy": "~4.0.7",
+ "vega-loader": "~4.3.1",
+ "vega-parser": "~6.0.2",
+ "vega-projection": "~1.4.3",
+ "vega-regression": "~1.0.7",
+ "vega-runtime": "~6.1.1",
+ "vega-scale": "~7.0.1",
+ "vega-scenegraph": "~4.9.0",
+ "vega-statistics": "~1.7.7",
+ "vega-time": "~2.0.2",
+ "vega-transforms": "~4.9.1",
+ "vega-typings": "~0.18.1",
+ "vega-util": "~1.15.0",
+ "vega-view": "~5.8.1",
+ "vega-view-transforms": "~4.5.6",
+ "vega-voronoi": "~4.1.3",
+ "vega-wordcloud": "~4.1.1"
+ }
+ },
+ "vega-canvas": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/vega-canvas/-/vega-canvas-1.2.3.tgz",
+ "integrity": "sha512-vTqt9XWH433mC65YAVd+AE8tyn3uTo1ZTe9ahPDSj60TjlZoDqwCzfelJOCX/gmfz1tuQdfwnrV4apy3k02PAw=="
+ },
+ "vega-crossfilter": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/vega-crossfilter/-/vega-crossfilter-4.0.3.tgz",
+ "integrity": "sha512-+JGMdh1NXUm2xJv83wlNRiB4n9k1qvkH9qCTUxm68GfYX2zh2qYhL/5S2yVk1xP5kw1fTFKstkzTEzN0BnvgiA==",
+ "requires": {
+ "d3-array": "^2.5.1",
+ "vega-dataflow": "^5.7.1",
+ "vega-util": "^1.15.0"
+ }
+ },
+ "vega-dataflow": {
+ "version": "5.7.1",
+ "resolved": "https://registry.npmjs.org/vega-dataflow/-/vega-dataflow-5.7.1.tgz",
+ "integrity": "sha512-J7LpTs0yCd8pUhvppdcrkuUlRtg/MIFh5zBPlG7etG/l7ZzEKrR4pQ6O8GWLfBt+6dEjm33G8/FtzoPI+d4dOQ==",
+ "requires": {
+ "vega-format": "^1.0.2",
+ "vega-loader": "^4.3.1",
+ "vega-util": "^1.15.0"
+ }
+ },
+ "vega-encode": {
+ "version": "4.8.1",
+ "resolved": "https://registry.npmjs.org/vega-encode/-/vega-encode-4.8.1.tgz",
+ "integrity": "sha512-Td3OL/WiXvCTuCEvWK2YzOqmmUqQdGk/VPO46zl2f+GbXs1MU1nuz7jd0wVETvLW5XOD/4g0TTNo/d6CBp24Yg==",
+ "requires": {
+ "d3-array": "^2.5.1",
+ "d3-interpolate": "^1.4.0",
+ "vega-dataflow": "^5.7.1",
+ "vega-scale": "^7.0.1",
+ "vega-util": "^1.15.0"
+ }
+ },
+ "vega-event-selector": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/vega-event-selector/-/vega-event-selector-2.0.4.tgz",
+ "integrity": "sha512-AfaELQSC0Rg3CBc0YXve6xi0Gk5pGk5rdhKuncTjNIrsal75j7RN7EoU/D0EIkyRwNFJlR41OjYH3gSjA6fA0A=="
+ },
+ "vega-expression": {
+ "version": "2.6.6",
+ "resolved": "https://registry.npmjs.org/vega-expression/-/vega-expression-2.6.6.tgz",
+ "integrity": "sha512-zxPzXO33FawU3WQHRmHJaRreyJlyMaNMn1uuCFSouJttPkBBWB5gCrha2f5+pF3t4NMFWTnSrgCkR6mcaubnng==",
+ "requires": {
+ "vega-util": "^1.15.0"
+ }
+ },
+ "vega-force": {
+ "version": "4.0.5",
+ "resolved": "https://registry.npmjs.org/vega-force/-/vega-force-4.0.5.tgz",
+ "integrity": "sha512-nipQUcdWuxWjQmAKXRh9b9V8oFfOCm0rg+C68M9VZw6xySiQTjr/dGx/bWBXdDwUcQ49whAOZl8dPOrLJZ9xGg==",
+ "requires": {
+ "d3-force": "^2.0.1",
+ "vega-dataflow": "^5.7.1",
+ "vega-util": "^1.15.0"
+ }
+ },
+ "vega-format": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/vega-format/-/vega-format-1.0.2.tgz",
+ "integrity": "sha512-e4nCCD+D97bBmiEV5VhGIRQMXj2U/a8jrCiV7qegZxBCpj+AkCb7DqDIrZkruJGKcgfiRoS6GJO+QgjaW1rtHw==",
+ "requires": {
+ "d3-array": "^2.5.1",
+ "d3-format": "^1.4.4",
+ "d3-time-format": "^2.2.3",
+ "vega-time": "^2.0.2",
+ "vega-util": "^1.15.0"
+ }
+ },
+ "vega-functions": {
+ "version": "5.7.2",
+ "resolved": "https://registry.npmjs.org/vega-functions/-/vega-functions-5.7.2.tgz",
+ "integrity": "sha512-rAIBTLCZqHpoTyJlLkjxG0Rea+TWodcTJUc3jJZbo9v24epmvpfshNDIp17HkRCW+DpUukpQtt2ckYx/mwkHdg==",
+ "requires": {
+ "d3-array": "^2.5.1",
+ "d3-color": "^1.4.1",
+ "d3-geo": "^1.12.1",
+ "vega-dataflow": "^5.7.1",
+ "vega-expression": "^2.6.6",
+ "vega-scale": "^7.0.1",
+ "vega-scenegraph": "^4.9.0",
+ "vega-selections": "^5.1.2",
+ "vega-statistics": "^1.7.7",
+ "vega-time": "^2.0.2",
+ "vega-util": "^1.15.0"
+ }
+ },
+ "vega-geo": {
+ "version": "4.3.5",
+ "resolved": "https://registry.npmjs.org/vega-geo/-/vega-geo-4.3.5.tgz",
+ "integrity": "sha512-ZxkFzOm3/g1+fSodRQhvd3Xr/masiXL1A92SSsGJuSuvc3U7y0ASDXVLe+bpwfRDi9wMenJW70hmu/UbyUyn+g==",
+ "requires": {
+ "d3-array": "^2.5.1",
+ "d3-color": "^1.4.1",
+ "d3-geo": "^1.12.1",
+ "vega-canvas": "^1.2.3",
+ "vega-dataflow": "^5.7.1",
+ "vega-projection": "^1.4.3",
+ "vega-statistics": "^1.7.7",
+ "vega-util": "^1.15.0"
+ }
+ },
+ "vega-hierarchy": {
+ "version": "4.0.7",
+ "resolved": "https://registry.npmjs.org/vega-hierarchy/-/vega-hierarchy-4.0.7.tgz",
+ "integrity": "sha512-U1eKRx+SGN4FsU5yHOpyGq8xJ4jdupTiZSEECz/EJfa50b7XXZ1D5JEa9d7MOrrG5B4BvejscMyJFHEz7DGZQw==",
+ "requires": {
+ "d3-hierarchy": "^1.1.9",
+ "vega-dataflow": "^5.7.1",
+ "vega-util": "^1.15.0"
+ }
+ },
+ "vega-loader": {
+ "version": "4.3.1",
+ "resolved": "https://registry.npmjs.org/vega-loader/-/vega-loader-4.3.1.tgz",
+ "integrity": "sha512-eUB+u7EbMgXY4gUWDqat02XQ52HkBklXdSat84jfml2xEjdOqdcOXreLewneU5WLK5Y7FJKIHcj9U3VKx8L3cg==",
+ "requires": {
+ "d3-dsv": "^1.2.0",
+ "node-fetch": "^2.6.0",
+ "topojson-client": "^3.1.0",
+ "vega-format": "^1.0.2",
+ "vega-util": "^1.15.0"
+ }
+ },
+ "vega-projection": {
+ "version": "1.4.3",
+ "resolved": "https://registry.npmjs.org/vega-projection/-/vega-projection-1.4.3.tgz",
+ "integrity": "sha512-CrkG10yPxWz7EagNERo3jWDjUcKxv09NDzK0luYVlw8I1+hoeOQ5VFXUln8thgbjXzj7UH3MAZRp8gVZvefE/w==",
+ "requires": {
+ "d3-geo": "^1.12.1",
+ "d3-geo-projection": "^2.9.0"
+ }
+ },
+ "vega-regression": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/vega-regression/-/vega-regression-1.0.7.tgz",
+ "integrity": "sha512-I+E5Sw1VjXuVBVU/h09KZJl93F4xrOjrONhYoDCs8mXkAK1qPxaqX8N0A/W/KsVmYlITTR8MzDzajujYzYp6Cw==",
+ "requires": {
+ "d3-array": "^2.5.1",
+ "vega-dataflow": "^5.7.1",
+ "vega-statistics": "^1.7.7",
+ "vega-util": "^1.15.0"
+ }
+ },
+ "vega-runtime": {
+ "version": "6.1.1",
+ "resolved": "https://registry.npmjs.org/vega-runtime/-/vega-runtime-6.1.1.tgz",
+ "integrity": "sha512-SkDYCPHwOVTsaFbg4Ys1W8b/yNmdUXMESGBXD7IP1O0gMi9rH6U5ntDS5JQZM3kD8uoCV/C7QWToCmjdLoITtQ==",
+ "requires": {
+ "vega-dataflow": "^5.7.1",
+ "vega-util": "^1.15.0"
+ }
+ },
+ "vega-scale": {
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/vega-scale/-/vega-scale-7.0.1.tgz",
+ "integrity": "sha512-VdDUNZzoMQKnvwntLAcKhdb7KWKB2UjZmRyHyLhH4ORxEK4BjSf7Nzg3GjCudYLtS5MppegZ1USJuIS+LAhZFw==",
+ "requires": {
+ "d3-array": "^2.5.1",
+ "d3-interpolate": "^1.4.0",
+ "d3-scale": "^3.2.1",
+ "vega-time": "^2.0.2",
+ "vega-util": "^1.15.0"
+ }
+ },
+ "vega-scenegraph": {
+ "version": "4.9.0",
+ "resolved": "https://registry.npmjs.org/vega-scenegraph/-/vega-scenegraph-4.9.0.tgz",
+ "integrity": "sha512-3D9bCeBmMI76qNwMG/RGqsESM8B2lutWzwOgvIbUBEKwIx7IMdgDYKPI5Nc2nNMmT+TrQd0Zp4ZE68/ZNrjQiw==",
+ "requires": {
+ "d3-path": "^1.0.9",
+ "d3-shape": "^1.3.7",
+ "vega-canvas": "^1.2.3",
+ "vega-loader": "^4.3.1",
+ "vega-scale": "^7.0.1",
+ "vega-util": "^1.15.0"
+ }
+ },
+ "vega-selections": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/vega-selections/-/vega-selections-5.1.2.tgz",
+ "integrity": "sha512-PklkyekvwfhTqRChprdgZxUmLap3XSdoEdo1zy7UzkqA9WEJBca9bolXLJ0LGz8ELUZBX+seG0L1SeMiqIKADw==",
+ "requires": {
+ "vega-expression": "^2.6.6",
+ "vega-util": "^1.15.0"
+ }
+ },
+ "vega-statistics": {
+ "version": "1.7.7",
+ "resolved": "https://registry.npmjs.org/vega-statistics/-/vega-statistics-1.7.7.tgz",
+ "integrity": "sha512-BlYpdeo09ULSm3y1ZehITTt9gsBIngM1wD3BTz41rDrx7yO9zYXZuKhflJeYPWW46AXqa1ImPOvrRea3gV2wlQ==",
+ "requires": {
+ "d3-array": "^2.5.1"
+ }
+ },
+ "vega-time": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/vega-time/-/vega-time-2.0.2.tgz",
+ "integrity": "sha512-+61UZXjjJuY9DLiyZNNnraeAKTrmQ9CEnyAonS5bTaJdGfJ1BNjUDYe3h7fU8GEFSiz/E3PnxfvApmoemjBWYA==",
+ "requires": {
+ "d3-array": "^2.5.1",
+ "d3-time": "^1.1.0",
+ "vega-util": "^1.15.0"
+ }
+ },
+ "vega-transforms": {
+ "version": "4.9.1",
+ "resolved": "https://registry.npmjs.org/vega-transforms/-/vega-transforms-4.9.1.tgz",
+ "integrity": "sha512-G9LejKnGC5eeUby24SJKOjR6ka4OUHJZeaksZX7q2lkeZ7NdcoyPRRcf5LBaRhpJpT4XX8e/M8u3QGMgDHTUzQ==",
+ "requires": {
+ "d3-array": "^2.5.1",
+ "vega-dataflow": "^5.7.1",
+ "vega-statistics": "^1.7.7",
+ "vega-time": "^2.0.2",
+ "vega-util": "^1.15.0"
+ }
+ },
+ "vega-typings": {
+ "version": "0.18.1",
+ "resolved": "https://registry.npmjs.org/vega-typings/-/vega-typings-0.18.1.tgz",
+ "integrity": "sha512-ECX5Sep10wPRWCzxuuLBTh4rcLLEQxHTgt4kObdwyQ7q9tMeIYyrbQBAW8IwYduPk7kMKaORjgimhrBjhqASIA==",
+ "requires": {
+ "vega-util": "^1.15.0"
+ }
+ },
+ "vega-util": {
+ "version": "1.15.0",
+ "resolved": "https://registry.npmjs.org/vega-util/-/vega-util-1.15.0.tgz",
+ "integrity": "sha512-D5jlSI226ieWjCZH9K/0zIxygl0w4W6Fqky+zwwQzymoGwraBPDEhrGh0Uq2sl0Jw6hbD8FlMqiPmlsSkpQ1pw=="
+ },
+ "vega-view": {
+ "version": "5.8.1",
+ "resolved": "https://registry.npmjs.org/vega-view/-/vega-view-5.8.1.tgz",
+ "integrity": "sha512-8Ey24NO0Btp2qjca92u9Eov8vyFkkQ1JmzxkNeJXGMFcWYlDdywQxajTRSP2dbM5dEiSN7+yzrsHyGevlnpcRA==",
+ "requires": {
+ "d3-array": "^2.5.1",
+ "d3-timer": "^1.0.10",
+ "vega-dataflow": "^5.7.1",
+ "vega-format": "^1.0.2",
+ "vega-functions": "^5.7.2",
+ "vega-runtime": "^6.1.1",
+ "vega-scenegraph": "^4.9.0",
+ "vega-util": "^1.15.0"
+ }
+ },
+ "vega-view-transforms": {
+ "version": "4.5.6",
+ "resolved": "https://registry.npmjs.org/vega-view-transforms/-/vega-view-transforms-4.5.6.tgz",
+ "integrity": "sha512-yv6UDfgSoQrLJ9fCA69pGJ4o0T0FePAsLF5IZb/FE7limPuIErCpf7UDfdunQtAcf3ehww73tusXcF1IuiB4ZQ==",
+ "requires": {
+ "vega-dataflow": "^5.7.1",
+ "vega-scenegraph": "^4.9.0",
+ "vega-util": "^1.15.0"
+ }
+ },
+ "vega-voronoi": {
+ "version": "4.1.3",
+ "resolved": "https://registry.npmjs.org/vega-voronoi/-/vega-voronoi-4.1.3.tgz",
+ "integrity": "sha512-7gaZUhLiQY8/kUpZhQq/qZhoAcpbtHTtPDhYL8uvn1mHOspY9HhEJW4hmtaKK7UrqtQ/yYbSIt1P/7rjLu36ig==",
+ "requires": {
+ "d3-delaunay": "^5.3.0",
+ "vega-dataflow": "^5.7.1",
+ "vega-util": "^1.15.0"
+ }
+ },
+ "vega-wordcloud": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/vega-wordcloud/-/vega-wordcloud-4.1.1.tgz",
+ "integrity": "sha512-O3j1iRnHv6qPPzPXROtc7W46UCnPVJeJsn64QFKUnKKHaddn0B/Tc/R2a05ZfkpWGrhwFZcvEE2kS6lVdyBuUQ==",
+ "requires": {
+ "vega-canvas": "^1.2.3",
+ "vega-dataflow": "^5.7.1",
+ "vega-scale": "^7.0.1",
+ "vega-statistics": "^1.7.7",
+ "vega-util": "^1.15.0"
+ }
+ }
+ }
+ },
+ "vega-dataflow": {
+ "version": "5.7.0",
+ "resolved": "https://registry.npmjs.org/vega-dataflow/-/vega-dataflow-5.7.0.tgz",
+ "integrity": "sha512-W8Q6NBCmk3TCDjTiy/I2PA4JTQljqp3XF6227CiCvZfhmCZCeHchuZKrgwJUBVZ2CoqT+UL2JpCi1SFzrPObIQ==",
+ "requires": {
+ "vega-format": "^1.0.0",
+ "vega-loader": "^4.3.0",
+ "vega-util": "^1.14.0"
+ }
+ },
+ "vega-event-selector": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/vega-event-selector/-/vega-event-selector-2.0.3.tgz",
+ "integrity": "sha512-rUnAvBSy5tkk+0MELY7qICTgjMNjH/DDNIH603q3GRi+bBRCd4MlJxWrPYBhwZIYpmr6XCe130lZ90/F5SgVfA=="
+ },
+ "vega-expression": {
+ "version": "2.6.5",
+ "resolved": "https://registry.npmjs.org/vega-expression/-/vega-expression-2.6.5.tgz",
+ "integrity": "sha512-3hJts0gKomu3ePXYeIb+VAw7yNKoHJ6VqSKsHHFPyoEGNdwmlgI5d9IBblelPCiMCHK4sMt7h1OTWB33cfxZGA==",
+ "requires": {
+ "vega-util": "^1.14.0"
+ }
+ },
+ "vega-format": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/vega-format/-/vega-format-1.0.1.tgz",
+ "integrity": "sha512-f9IZ+SDHVFFneDDc+d8RfeJhXXvUgquAuM+1MZ2Rjf4xqpg+E8FSNQkh8wjeo82mc6G3KVa9hynSdfN/a0AktQ==",
+ "requires": {
+ "d3-array": "^2.4.0",
+ "d3-format": "^1.4.4",
+ "d3-time-format": "^2.2.3",
+ "vega-time": "^2.0.0",
+ "vega-util": "^1.14.0"
+ }
+ },
+ "vega-functions": {
+ "version": "5.7.1",
+ "resolved": "https://registry.npmjs.org/vega-functions/-/vega-functions-5.7.1.tgz",
+ "integrity": "sha512-PQUcRkLAJwiRK+Y2o8MZdHJOHZwGcIYKvnYZnes2IY5433lhKYL7b1DmwQhUqyHyKCudqlz/pRnoLpmuL8sAgg==",
+ "requires": {
+ "d3-array": "^2.4.0",
+ "d3-color": "^1.4.1",
+ "d3-geo": "^1.12.1",
+ "vega-dataflow": "^5.7.0",
+ "vega-expression": "^2.6.5",
+ "vega-scale": "^7.0.0",
+ "vega-scenegraph": "^4.8.0",
+ "vega-selections": "^5.1.1",
+ "vega-statistics": "^1.7.5",
+ "vega-time": "^2.0.1",
+ "vega-util": "^1.14.0"
+ }
+ },
+ "vega-lite": {
+ "version": "4.14.1",
+ "resolved": "https://registry.npmjs.org/vega-lite/-/vega-lite-4.14.1.tgz",
+ "integrity": "sha512-aA4hoaGd7n50uQi9eogCACeaACULp5ohzqBA0eJ+1PTUv8ILy+QHRDe3hX9FCEaXcq0Dj3DDj/sxF4PL6JaD+w==",
+ "requires": {
+ "@types/clone": "~0.1.30",
+ "@types/fast-json-stable-stringify": "^2.0.0",
+ "array-flat-polyfill": "^1.0.1",
+ "clone": "~2.1.2",
+ "fast-deep-equal": "~3.1.3",
+ "fast-json-stable-stringify": "~2.1.0",
+ "json-stringify-pretty-compact": "~2.0.0",
+ "tslib": "~2.0.0",
+ "vega-event-selector": "~2.0.3",
+ "vega-expression": "~2.6.5",
+ "vega-util": "~1.14.1",
+ "yargs": "~15.4.1"
+ }
+ },
+ "vega-loader": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/vega-loader/-/vega-loader-4.3.0.tgz",
+ "integrity": "sha512-XrwwJ1xWnsVS2N2M4vdvzieUdXWegdD31t04sCPQ5C3US58NYlq1ho1Md+5FVrtl0uCd0wG/mk700Jp7yPhN+w==",
+ "requires": {
+ "d3-dsv": "^1.2.0",
+ "node-fetch": "^2.6.0",
+ "topojson-client": "^3.1.0",
+ "vega-format": "^1.0.0",
+ "vega-util": "^1.14.0"
+ }
+ },
+ "vega-parser": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/vega-parser/-/vega-parser-6.0.2.tgz",
+ "integrity": "sha512-3337WvsUuuYZ0+H7ew4uZFgn82QWoaWv/9uinlMOH7ncnu8qTuWt4nV3WoUX9RFqie38qIMw/mf6+HK5gfXBoQ==",
+ "requires": {
+ "vega-dataflow": "^5.6.0",
+ "vega-event-selector": "^2.0.3",
+ "vega-functions": "^5.7.0",
+ "vega-scale": "^7.0.0",
+ "vega-util": "^1.14.0"
+ }
+ },
+ "vega-scale": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/vega-scale/-/vega-scale-7.0.0.tgz",
+ "integrity": "sha512-3oQAQYLRk+PIs6aF6kdb7tbhm5IpxNiwdFVM9fNS+SSsii6v8kFC681EuUMqLVZOHELiklWIE1rZIHaB5dNRXg==",
+ "requires": {
+ "d3-array": "^2.4.0",
+ "d3-interpolate": "^1.4.0",
+ "d3-scale": "^3.2.1",
+ "vega-time": "^2.0.0",
+ "vega-util": "^1.14.0"
+ }
+ },
+ "vega-scenegraph": {
+ "version": "4.8.3",
+ "resolved": "https://registry.npmjs.org/vega-scenegraph/-/vega-scenegraph-4.8.3.tgz",
+ "integrity": "sha512-2GznqXm/py7/XX9juohFbLYQTKxHY5VNRZLHc0bL35Nd7lShKeOlHY9uVkHw2FoLLCz78UcXFminWM8lddvGxw==",
+ "requires": {
+ "d3-path": "^1.0.9",
+ "d3-shape": "^1.3.7",
+ "vega-canvas": "^1.2.2",
+ "vega-loader": "^4.3.0",
+ "vega-scale": "^7.0.0",
+ "vega-util": "^1.14.0"
+ }
+ },
+ "vega-selections": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/vega-selections/-/vega-selections-5.1.1.tgz",
+ "integrity": "sha512-ztZUMfDicuIGJHZimSdVvMGzMvaa37ICzUHHvwxS51OhYv096dzKgoSypjx+tsmR7wnhY7ZL+iQgpT1/O29jlA==",
+ "requires": {
+ "vega-expression": "^2.6.4",
+ "vega-util": "^1.13.2"
+ }
+ },
+ "vega-statistics": {
+ "version": "1.7.6",
+ "resolved": "https://registry.npmjs.org/vega-statistics/-/vega-statistics-1.7.6.tgz",
+ "integrity": "sha512-w6z5t4p1zYNSvsg3lln4TZakxXlH/tM0w5WAP1EXLYrCYRw0F/SvxqLQ+WqEZVnI/WGQDq2v5xMAn0WvHJ/kUg==",
+ "requires": {
+ "d3-array": "^2.4.0"
+ }
+ },
+ "vega-time": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/vega-time/-/vega-time-2.0.1.tgz",
+ "integrity": "sha512-Ij0gmABKDRKAMUTh/1AGSSkU6ocWiteLkIK/cmcnt98u8LiuVcFT5w7gusd0+ibO9EooeMKazn5xPmjvQs0qEg==",
+ "requires": {
+ "d3-array": "^2.4.0",
+ "d3-time": "^1.1.0",
+ "vega-util": "^1.14.0"
+ }
+ },
+ "vega-util": {
+ "version": "1.14.1",
+ "resolved": "https://registry.npmjs.org/vega-util/-/vega-util-1.14.1.tgz",
+ "integrity": "sha512-pSKJ8OCkgfgHZDTljyj+gmGltgulceWbk1BV6LWrXqp6P3J8qPA/oZA8+a93YNApYxXZ3yzIVUDOo5O27xk0jw=="
+ },
+ "which-module": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz",
+ "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho="
+ },
+ "wide-align": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz",
+ "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==",
+ "requires": {
+ "string-width": "^1.0.2 || 2"
+ }
+ },
+ "wrap-ansi": {
+ "version": "6.2.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz",
+ "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==",
+ "requires": {
+ "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=="
+ },
+ "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=="
+ },
+ "string-width": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz",
+ "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==",
+ "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==",
+ "requires": {
+ "ansi-regex": "^5.0.0"
+ }
+ }
+ }
+ },
+ "wrappy": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
+ "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8="
+ },
+ "y18n": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz",
+ "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w=="
+ },
+ "yallist": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
+ "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g=="
+ },
+ "yargs": {
+ "version": "15.4.1",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz",
+ "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==",
+ "requires": {
+ "cliui": "^6.0.0",
+ "decamelize": "^1.2.0",
+ "find-up": "^4.1.0",
+ "get-caller-file": "^2.0.1",
+ "require-directory": "^2.1.1",
+ "require-main-filename": "^2.0.0",
+ "set-blocking": "^2.0.0",
+ "string-width": "^4.2.0",
+ "which-module": "^2.0.0",
+ "y18n": "^4.0.0",
+ "yargs-parser": "^18.1.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=="
+ },
+ "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=="
+ },
+ "string-width": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz",
+ "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==",
+ "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==",
+ "requires": {
+ "ansi-regex": "^5.0.0"
+ }
+ }
+ }
+ },
+ "yargs-parser": {
+ "version": "18.1.3",
+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz",
+ "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==",
+ "requires": {
+ "camelcase": "^5.0.0",
+ "decamelize": "^1.2.0"
+ }
+ }
+ }
+}
diff --git a/requirements.txt b/requirements.txt
index 063da24..aa89969 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -1,63 +1,63 @@
-altair==4.1.0
-altair-data-server==0.4.1
-altair-saver==0.5.0
-altair-viewer==0.3.0
-appdirs==1.4.3
-attrs==19.3.0
-bcrypt==3.1.7
-certifi==2020.6.20
-cffi==1.14.0
-chardet==3.0.4
-cryptography==2.9.2
-cycler==0.10.0
-Deprecated==1.2.10
-distlib==0.3.0
-entrypoints==0.3
-filelock==3.0.12
-gitdb==4.0.5
-GitPython==3.1.7
-idna==2.10
-Jinja2==2.11.2
-jsonschema==3.2.0
-kiwisolver==1.2.0
-lizard==1.17.4
-MarkupSafe==1.1.1
-matplotlib==3.3.0
-MouseInfo==0.1.2
-numpy==1.19.1
-opencv-python==4.2.0.34
-pandas==1.0.5
-paramiko==2.7.1
-Pillow==7.2.0
-pipenv==2018.11.26
-portpicker==1.3.1
-PyAutoGUI==0.9.48
-pycparser==2.20
-PyDriller==1.15.2
-PyGetWindow==0.0.8
-PyGithub==1.51
-PyJWT==1.7.1
-PyMsgBox==1.0.7
-PyNaCl==1.3.0
-pyparsing==2.4.7
-pyperclip==1.7.0
-PyRect==0.1.4
-pyrsistent==0.16.0
-PyScreeze==0.1.25
-python-dateutil==2.8.1
-python-dotenv==0.14.0
-PyTweening==1.0.3
-pytz==2020.1
-requests==2.24.0
-selenium==3.141.0
-six==1.15.0
-smmap==3.0.4
-toolz==0.10.0
-tornado==6.0.4
-urllib3==1.25.9
-virtualenv==20.0.18
-virtualenv-clone==0.5.4
-wrapt==1.12.1
-xlrd==1.2.0
-XlsxWriter==1.2.8
-humanize==2.5.0
+altair==4.1.0
+altair-data-server==0.4.1
+altair-saver==0.5.0
+altair-viewer==0.3.0
+appdirs==1.4.3
+attrs==19.3.0
+bcrypt==3.1.7
+certifi==2020.6.20
+cffi==1.14.0
+chardet==3.0.4
+cryptography==2.9.2
+cycler==0.10.0
+Deprecated==1.2.10
+distlib==0.3.0
+entrypoints==0.3
+filelock==3.0.12
+gitdb==4.0.5
+GitPython==3.1.7
+idna==2.10
+Jinja2==2.11.2
+jsonschema==3.2.0
+kiwisolver==1.2.0
+lizard==1.17.4
+MarkupSafe==1.1.1
+matplotlib==3.3.0
+MouseInfo==0.1.2
+numpy==1.19.1
+opencv-python==4.2.0.34
+pandas==1.0.5
+paramiko==2.7.1
+Pillow==7.2.0
+pipenv==2018.11.26
+portpicker==1.3.1
+PyAutoGUI==0.9.48
+pycparser==2.20
+PyDriller==1.15.2
+PyGetWindow==0.0.8
+PyGithub==1.51
+PyJWT==1.7.1
+PyMsgBox==1.0.7
+PyNaCl==1.3.0
+pyparsing==2.4.7
+pyperclip==1.7.0
+PyRect==0.1.4
+pyrsistent==0.16.0
+PyScreeze==0.1.25
+python-dateutil==2.8.1
+python-dotenv==0.14.0
+PyTweening==1.0.3
+pytz==2020.1
+requests==2.24.0
+selenium==3.141.0
+six==1.15.0
+smmap==3.0.4
+toolz==0.10.0
+tornado==6.0.4
+urllib3==1.25.9
+virtualenv==20.0.18
+virtualenv-clone==0.5.4
+wrapt==1.12.1
+xlrd==1.2.0
+XlsxWriter==1.2.8
+humanize==2.5.0
diff --git a/translation.json b/translation.json
index 1211a48..fae0bd1 100644
--- a/translation.json
+++ b/translation.json
@@ -96,7 +96,7 @@
"Not Opted to Hire": "Non disponibile per assunzioni/colloqui",
"Profile Views": "Visite al profilo",
"From Hello World I have written": "Dal mio primo Hello World ho scritto ",
- "I am Most Productive on": "Sono piu' produttivo il",
+ "I am Most Productive on": "Sono piu' produttivo di",
"This Week I Spend My Time On": "Questa settimana ho speso il mio tempo su",
"I Mostly Code in": "Solitamente programmo in",
"Timeline": "Linea temporale",