.gitignore templates?
**A:** Please submit all new templates to [@toptal/gitignore](https://github.com/toptal/gitignore).
**Q:** How do I suggest modifications to existing `.gitignore` templates?
**A:** Modifictions should come in the form of pull requests at [@toptal/gitignore](https://github.com/toptal/gitignore).
**Q:** Why don't Gitignore.io's templates don't look exactly like the templates on [@github/gitignore](https://github.com/github/gitignore)?
**A:** Gitignore.io tried to maintain parity with [@github/gitignore](https://github.com/github/gitignore), but GitHub's template list doesn't include many languages, operating systems, and IDE's that developers use. Gitignore.io's template list has over 100 more templates than GitHub's.
**Q:** Why is my local site empty?
**A:** When the repository is cloned, the `--recursive` flag is necessary. gitignore.io uses [@toptal/gitignore](https://github.com/toptal/gitignore) as its data source. If the repo isn't cloned recursively, templates will be missing.
## Issue
### Development Environment:
- [ ] Machine (Local, Container, Virtual):
- [ ] Operating System (Name/Version):
- [ ] Web Browser (Name/Version):
- [ ] Vapor Version:
- [ ] Swift Version:
### Expected Behavior:
### Actual Behavior:
### Reproduction Steps:
================================================
FILE: .github/dependabot.yml
================================================
version: 2
registries:
docker-registry-gcr-io:
type: docker-registry
url: https://gcr.io
username: _json_key
password: "${{secrets.DOCKER_REGISTRY_GCR_IO_PASSWORD}}"
updates:
- package-ecosystem: docker
directory: "/"
schedule:
interval: daily
time: "07:00"
pull-request-branch-name:
separator: "-"
open-pull-requests-limit: 10
registries:
- docker-registry-gcr-io
================================================
FILE: .github/workflows/close-inactive.yaml
================================================
name: Close inactive issues and PRs
on:
workflow_dispatch:
schedule:
- cron: "30 1 * * *"
jobs:
close-stale:
runs-on: ubuntu-latest
permissions:
issues: write
pull-requests: write
steps:
- uses: actions/stale@v6
with:
days-before-stale: 30
days-before-close: 14
stale-issue-label: "stale"
stale-pr-label: "stale"
exempt-issue-labels: backlog,triage,nostale
exempt-pr-labels: backlog,triage,nostale
stale-pr-message: "This PR is stale because it has been open for 30 days with no activity."
close-pr-message: "This PR was closed because it has been inactive for 14 days since being marked as stale."
stale-issue-message: "This issue is stale because it has been open for 30 days with no activity."
close-issue-message: "This issue was closed because it has been inactive for 14 days since being marked as stale."
repo-token: ${{ secrets.GITHUB_TOKEN }}
================================================
FILE: .github/workflows/update-templates.yml
================================================
name: Update Templates
on:
workflow_dispatch:
jobs:
build:
runs-on: ubuntu-latest
timeout-minutes: 15
steps:
- uses: actions/checkout@v3
- name: Sync Templates
run: |
git submodule update --init
cd gitignore
git pull origin master
- name: Create Pull Request
uses: peter-evans/create-pull-request@v4
with:
token: ${{ secrets.GITHUB_TOKEN }}
commit-message: Sync Templates Submodule
title: Sync Templates Submodule
branch: sync_templates
base: master
================================================
FILE: .gitignore
================================================
# Created by https://www.gitignore.io/api/macos,linux,windows,vapor
### Linux ###
*~
# temporary files which can be created if a process still has a handle open of a deleted file
.fuse_hidden*
# KDE directory preferences
.directory
# Linux trash folder which might appear on any partition or disk
.Trash-*
# .nfs files are created when an open file is removed but is still being accessed
.nfs*
### macOS ###
*.DS_Store
.AppleDouble
.LSOverride
# Icon must end with two \r
Icon
# Thumbnails
._*
# Files that might appear in the root of a volume
.DocumentRevisions-V100
.fseventsd
.Spotlight-V100
.TemporaryItems
.Trashes
.VolumeIcon.icns
.com.apple.timemachine.donotpresent
# Directories potentially created on remote AFP share
.AppleDB
.AppleDesktop
Network Trash Folder
Temporary Items
.apdisk
### Vapor ###
Config/secrets
### Vapor Patch ###
Packages
.build
xcuserdata
*.xcodeproj
### Windows ###
# Windows thumbnail cache files
Thumbs.db
ehthumbs.db
ehthumbs_vista.db
# Folder config file
Desktop.ini
# Recycle Bin used on file shares
$RECYCLE.BIN/
# Windows Installer files
*.cab
*.msi
*.msm
*.msp
# Windows shortcuts
*.lnk
.git/credentials
cobertura.xml
# End of https://www.gitignore.io/api/macos,linux,windows,vapor
node_modules/
*.swp
yarn-error.log
.yarn/cache
.yarn/unplugged
.yarn/build-state.yml
.pnp.*
.idea
================================================
FILE: .gitmodules
================================================
[submodule "gitignore"]
path = gitignore
url = https://github.com/toptal/gitignore.git
================================================
FILE: .swift-version
================================================
4.1
================================================
FILE: .swiftlint.yml
================================================
disabled_rules: # rule identifiers to exclude from running
- colon
- comma
- control_statement
- line_length
opt_in_rules: # some rules are only opt-in
- empty_count
# Find all the available rules by running:
# swiftlint rules
included: # paths to include during linting. `--path` is ignored if present.
- Sources/App
- Sources/GitignoreIOServer
excluded: # paths to ignore during linting. Takes precedence over `included`.
# configurable rules can be customized from this configuration file
# binary rules can set their severity level
force_cast: warning # implicitly
force_try:
severity: warning # explicitly
# rules that have both warning and error levels, can set just the warning level
# implicitly
# line_length: 110
# they can set both implicitly with an array
type_body_length:
- 300 # warning
- 400 # error
# or they can set both explicitly
file_length:
warning: 500
error: 1200
# naming rules can set warnings/errors for min_length and max_length
# additionally they can set excluded names
type_name:
min_length: 4 # only warning
max_length: # warning and error
warning: 40
error: 50
excluded: iPhone # excluded via string
identifier_name:
min_length: # only min_length
error: 3 # only error
excluded: # excluded via string array
- id
- URL
- GlobalAPIKey
reporter: "xcode" # reporter type (xcode, json, csv, checkstyle, junit)
cyclomatic_complexity:
warning: 30
error: 50
function_parameter_count:
warning: 7
error: 11
================================================
FILE: .travis/ci.sh
================================================
#!/usr/bin/env bash
VERSION="4.1"
echo "Swift $VERSION Continuous Integration";
# Determine OS
UNAME=`uname`;
if [[ $UNAME == "Darwin" ]];
then
OS="macos";
else
if [[ $UNAME == "Linux" ]];
then
UBUNTU_RELEASE=`lsb_release -a 2>/dev/null`;
if [[ $UBUNTU_RELEASE == *"16.04"* ]];
then
OS="ubuntu1604";
else
OS="ubuntu1404";
fi
else
echo "Unsupported Operating System: $UNAME";
fi
fi
echo "🖥 Operating System: $OS";
if [[ $OS != "macos" ]];
then
echo "📚 Installing Dependencies"
sudo apt-get install -y clang libicu-dev uuid-dev
echo "🐦 Installing Swift";
if [[ $OS == "ubuntu1604" ]];
then
SWIFTFILE="swift-$VERSION-RELEASE-ubuntu16.04";
else
SWIFTFILE="swift-$VERSION-RELEASE-ubuntu14.04";
fi
wget https://swift.org/builds/swift-$VERSION-release/$OS/swift-$VERSION-RELEASE/$SWIFTFILE.tar.gz
tar -zxf $SWIFTFILE.tar.gz
export PATH=$PWD/$SWIFTFILE/usr/bin:"${PATH}"
fi
echo "📅 Version: `swift --version`";
echo "🚀 Building";
swift build
if [[ $? != 0 ]];
then
echo "❌ Build failed";
exit 1;
fi
echo "💼 Building Release";
swift build -c release
if [[ $? != 0 ]];
then
echo "❌ Build for release failed";
exit 1;
fi
echo "🔎 Testing";
swift test
if [[ $? != 0 ]];
then
echo "❌ Tests failed";
exit 1;
fi
echo "✅ Done"
================================================
FILE: .travis/update-submodule.sh
================================================
#!/bin/bash
cd gitignore
git pull origin master
cd ..
pwd
if [[ `git status --porcelain` ]]; then
echo "status: Updating templates"
git add .
git commit -m "Upading templates from https://github.com/toptal/gitignore"
else
echo "status: No updates"
fi
================================================
FILE: Dockerfile
================================================
##############################################################################################################################
## ##
## We recommend building with buildx: ##
## ##
## // Note: you can use the standard `docker build` command, but there is no multi-CPU architecture support ##
## ##
## // Create buildx instance ##
## docker buildx create --driver docker-container --name builder --bootstrap --use ##
## ##
## // Login to Rregistry ##
## docker login [REGSITRY_ADDRESS] ##
## ##
## // Build the docker image (both x86 and amd64 are supported) ##
## docker buildx build --platform=linux/amd64,linux/arm64 --push -t [REGSITRY_ADDRESS]/REGSITRY_USERNAME/gitignore.io . ##
## ##
##############################################################################################################################
# Build swift backend
FROM swift:5.6-focal AS swift-builder
COPY . /gitignore.io
WORKDIR /gitignore.io
RUN set -ex \
&& apt update \
&& apt install libssl-dev -y \
&& swift package clean \
&& swift package update \
&& swift build -Xswiftc -static-stdlib -j $(nproc) -c release \
&& mv $(swift build -Xswiftc -static-stdlib -c release --show-bin-path)/Run /tmp/Run
# Build node frontend
FROM node:lts AS node-builder
COPY . /gitignore.io
WORKDIR /gitignore.io
RUN set -ex \
&& yarn install \
&& yarn build \
&& rm -rf node_modules
# Build final image
FROM debian:stable-slim AS dest
WORKDIR /app
# The environment variable is set to empty(use the default value)
ARG HOST_ORIGIN
ARG BASE_PREFIX
ARG GOOGLE_ANALYTICS_UID
# Copy the project and remove the node frontend
COPY . ./
COPY .git ./
# Install some necessary dependencies
RUN set -ex \
&& apt update \
&& apt install git ca-certificates libcurl4 dumb-init --no-install-recommends -y \
&& git submodule update --init --recursive \
&& rm -rf /app/Public /app/Resources \
&& apt autoremove -y \
&& apt autoclean -y
# Copy all newly compiled files to the final image
COPY --from=swift-builder /tmp/Run /app/Run
COPY --from=node-builder /gitignore.io/Public /app/Public
COPY --from=node-builder /gitignore.io/Resources /app/Resources
EXPOSE 8080/tcp
# Add dump-init to ensure container can respond to exit signals
ENTRYPOINT ["/usr/bin/dumb-init", "--"]
# System signals are taken over by dump-init, we can use `exec` to execute
# commands without worrying about signal forwarding and zombie processes
# See Also: https://docs.docker.com/engine/reference/builder/#cmd
CMD ["/app/Run", "serve", "-e", "prod", "-b", "0.0.0.0"]
================================================
FILE: LICENSE.md
================================================
MIT License
Copyright (c) 2013-2019
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.
================================================
FILE: Localizations/README.md
================================================
# Localizations
1. Copy the `en.json` file and rename it
_use the base version of the language (en) instead of a country specific version (en_US)_
2. Replace the strings with the language you're translating
3. Add the language to `Sources/App/Extensions/Router+Extensions.swift` under `supportedLanguages`
4. Create a pull request to get your translation approved and merged
Thank you for help with localizing gitignore
================================================
FILE: Localizations/ar.json
================================================
{
"title": "إنشاء ملفات .gitignore مفيدة لمشروعك - gitignore.io",
"description": "Create useful .gitignore files for your project by selecting from %{templateCount} Operating System, IDE, and Programming Language .gitignore templates",
"subtitle": "إنشاء ملفات .gitignore مفيدة لمشروعك",
"searchPlaceholder": "ابحث عن أنظمة تشغيل، IDEs، أو لغات برمجة",
"searchGo": "إنشاء",
"searchDownload": "تحميل ملف",
"footer": "قوالب نظام تشغيل، IDE، ولغة برمجة لملف .gitignore %{templateCount}",
"commandLineTitle": "توثيق سطر اﻷوامر",
"commandLineDescription": "تعلم كيفية تشغيل .gitignore.io من سطر اﻷوامر",
"videoTitle": "مشاهدة مقطع فيديو تعليمي",
"videoDescription": "مشاهدة فيديو تعليمي حول كيفية عمل .gitignore.io",
"sourceCodeTitle": "شفرة مصدرية",
"sourceCodeDescription": "الشفرة المصدرية لـ.gitignore.io مستضافة على GitHub"
}
================================================
FILE: Localizations/cs.json
================================================
{
"title": "gitignore.io - Vytvořte užitečný soubory .gitignore pro váš projekt",
"description": "Vytvořte užitečné soubory .gitignore pro svůj projekt výběrem z %{templateCount}. Šablony .gitignore pro operační systém, IDE a programovací jazyk.",
"subtitle": "Vytvořte užitečné soubory .gitignore pro svůj projekt",
"searchPlaceholder": "Hledání operačních systémů, IDE nebo programovacích jazyků",
"searchGo": "Vytvořit",
"searchDownload": "Soubor ke stažení",
"footer": "%{templateCount} šablon .gitignore pro operační systémy, IDE a programovací jazyky",
"commandLineTitle": "Dokumentace příkazového řádku",
"commandLineDescription": "Naučte se spouštět soubor .gitignore.io z příkazového řádku",
"videoTitle": "Podívejte se na video tutoriál",
"videoDescription": "Podívejte se na video, ve kterém se dozvíte, jak .gitignore.io funguje.",
"sourceCodeTitle": "Zdrojový kód",
"sourceCodeDescription": "Zdrojový kód pro .gitignore.io hostovaný na GitHub"
}
================================================
FILE: Localizations/de.json
================================================
{
"title": "gitignore.io - Erstelle nützliche .gitignore Dateien Für Dein Projekt",
"description": "Erstelle nützliche .gitignore Dateien für dein Projekt in dem du eines von {templateCount} Betriebssystem, Entwicklungsumgebung und Programmiersprache .gitignore Templates wählst",
"subtitle": "Erstelle nützliche .gitignore Dateien für dein Projekt",
"searchPlaceholder": "Suche nach Betriebssystemen, Entwicklungsumgebungen oder Programmiersprachen",
"searchGo": "Create",
"searchDownload": "Datei herunterladen",
"footer": "%{templateCount} Betriebssystem, Entwicklungsumgebung und Programmiersprache .gitignore Templates",
"commandLineTitle": "Kommandozeilen Dokumentation",
"commandLineDescription": "Lerne wie man .gitignore.io von der Kommandozeile ausführt",
"videoTitle": "Schau das Video Tutorial",
"videoDescription": "Schau ein Video um zu lernen wie .gitignore.io funktioniert",
"sourceCodeTitle": "Quellcode",
"sourceCodeDescription": "Der Quellcode für .gitignore.io ist bei Github gehosted"
}
================================================
FILE: Localizations/el.json
================================================
{
"title": "gitignore.io - Δημιουργήστε χρήσιμα αρχεία .gitignore για το έργο σας",
"description": "Δημιουργήστε χρήσιμα αρχεία .gitignore για το έργο σας επιλέγοντας από το %{templateCount} πρότυπα .gitignore για λειτουργικό σύστημα, IDE και γλώσσα προγραμματισμού",
"subtitle": "Δημιουργήστε χρήσιμα αρχεία .gitignore για το έργο σας",
"searchPlaceholder": "Αναζήτηση λειτουργικών συστημάτων, IDEs ή γλωσσών προγραμματισμού",
"searchGo": "Δημιουργήστε",
"searchDownload": "Κατεβάστε το αρχείο",
"footer": "%{templateCount} λειτουργικό σύστημα, IDE και γλώσσα προγραμματισμού .gitignore templates",
"commandLineTitle": "Command line τεκμηρίωση",
"commandLineDescription": "Μάθετε πώς να εκτελείτε το .gitignore.io από τη command line",
"videoTitle": "Παρακολουθήστε εκπαιδευτικό βίντεο",
"videoDescription": "Παρακολουθήστε ένα βίντεο για να μάθετε πώς λειτουργεί το .gitignore.io",
"sourceCodeTitle": "Πηγαίος κώδικας",
"sourceCodeDescription": "Πηγαίος κώδικας στο GitHub για το .gitignore.io"
}
================================================
FILE: Localizations/en.json
================================================
{
"title": "gitignore.io - Create Useful .gitignore Files For Your Project",
"description": "Create useful .gitignore files for your project by selecting from %{templateCount} Operating System, IDE, and Programming Language .gitignore templates",
"subtitle": "Create useful .gitignore files for your project",
"searchPlaceholder": "Search Operating Systems, IDEs, or Programming Languages",
"searchGo": "Create",
"searchDownload": "Download File",
"footer": "%{templateCount} Operating System, IDE, and Programming Language .gitignore templates",
"commandLineTitle": "Command Line Docs",
"commandLineDescription": "Learn how to run .gitignore.io from the command line",
"videoTitle": "Watch Video Tutorial",
"videoDescription": "Watch a video to learn how .gitignore.io works",
"sourceCodeTitle": "Source Code",
"sourceCodeDescription": "GitHub hosted source code for .gitignore.io"
}
================================================
FILE: Localizations/fa.json
================================================
{
"title": "gitignore.io - فایل های .gitignore پروژه تان را بسازید",
"description": "فایل های .gitignore پروژه تان را با استفاده از %{templateCount} قالب بنا به سیستم عامل، IDE و زیان برنامه نویسی بسازید.",
"subtitle": "فایل های .gitignore پروژه تان را بسازید",
"searchPlaceholder": "سیستم عامل، IDE و یا زبان برنامه نویسی تان را جستجو کنید.",
"searchGo": "ایجاد",
"searchDownload": "دانلود فایل",
"footer": "%{templateCount} قالب سیستم عامل، IDE و زبان برنامه نویسی",
"commandLineTitle": "مستندات خط فرمان",
"commandLineDescription": "آموزش چگونگی استفاده از .gitignore.io در خط فرمان",
"videoTitle": "تماشای ویدئو آموزشی",
"videoDescription": "تماشای ویدئو آموزشی برای اینکه بدانیم .gitignore.io چگونه کار می کند.",
"sourceCodeTitle": "منبع کد",
"sourceCodeDescription": "میزبانی شده توسط Github"
}
================================================
FILE: Localizations/fr.json
================================================
{
"title": "gitignore.io - Créez des fichiers .gitignore utiles à votre Projet",
"description": "Créez des fichiers .gitignore utiles à votre projet en choisissant l'un des %{templateCount} templates .gitignore.io de Système d'exploitation, IDE et Langage de Programmation",
"subtitle": "Créez des fichiers .gitignore utiles à votre projet",
"searchPlaceholder": "Recherchez des Systèmes d'Exploitation, IDEs ou Langages de Programmation",
"searchGo": "Créer",
"searchDownload": "Téléchargement du fichier",
"footer": "%{templateCount} templates .gitignore.io de Système d'exploitation, IDE et Langage de Programmation",
"commandLineTitle": "Documentation",
"commandLineDescription": "Apprenez comment utiliser .gitignore.io en ligne de commande",
"videoTitle": "Regardez une Vidéo Didacticielle",
"videoDescription": "Regardez une vidéo pour apprendre comment fonctionne .gitignore.io",
"sourceCodeTitle": "Code Source",
"sourceCodeDescription": "Le code source de .gitignore.io est hébergé par GitHub"
}
================================================
FILE: Localizations/id.json
================================================
{
"title": "gitignore.io - Buat File .gitignore yang Berguna untuk Proyek Anda",
"description": "Buat file .gitignore yang berguna untuk proyek anda dengan memilih template .gitginore dari %{templateCount} Sistem Operasi, IDE, dan Bahasa Pemrograman",
"subtitle": "Buat file .gitignore yang berguna untuk proyek anda",
"searchPlaceholder": "Cari Sistem Operasi, IDE, atau Bahasa Pemrograman",
"searchGo": "Buat",
"searchDownload": "Mengunduh File",
"footer": "template .gitignore %{templateCount} Sistem Operasi, IDE, dan Bahasa Pemrograman",
"commandLineTitle": "Dokumentasi Command Line",
"commandLineDescription": "Pelajari cara menjalankan .gitignore.io dari Command Line",
"videoTitle": "Menonton Video Tutorial",
"videoDescription": "Menonton video untuk mempelajari bagaimana .gitignore.io bekerja",
"sourceCodeTitle": "Kode Sumber",
"sourceCodeDescription": "GitHub menghosting kode sumber untuk .gitignore.io"
}
================================================
FILE: Localizations/ja.json
================================================
{
"title": "gitignore.io - プロジェクトに役立つ.gitignoreファイルを作成しよう",
"description": "%{templateCount} オペレーティングシステム、IDE、およびプログラミング言語の.gitignoreテンプレートから選択して、プロジェクトに役立つ.gitignoreファイルを作成しよう。",
"subtitle": "プロジェクトに役立つ.gitignoreファイルを作成しよう",
"searchPlaceholder": "オペレーティングシステム、IDE、プログラミング言語を検索する",
"searchGo": "作成する",
"searchDownload": "ファイルをダウンロードする",
"footer": "%{templateCount} オペレーティングシステム、IDE、プログラミング言語の.gitignoreテンプレート",
"commandLineTitle": "コマンドライン ドキュメンテーション",
"commandLineDescription": "コマンドラインから.gitignore.ioを実行する方法を学ぶ",
"videoTitle": "チュートリアルビデオを見る",
"videoDescription": ".gitignore.ioの使い方を学ぶためにビデオを見る",
"sourceCodeTitle": "ソースコード",
"sourceCodeDescription": "GitHubでホスティングされた.gitignore.ioのソースコード"
}
================================================
FILE: Localizations/ko.json
================================================
{
"title": "gitignore.io - 자신의 프로젝트에 꼭 맞는 .gitignore 파일을 만드세요",
"description": "자신의 프로젝트에 꼭 맞는 .gitignore 파일을 만드세요. %{templateCount} 개의 운영체제, 개발 환경(IDE), 프로그래밍 언어 .gitignore 템플릿이 준비되어 있습니다",
"subtitle": "자신의 프로젝트에 꼭 맞는 .gitignore 파일을 만드세요",
"searchPlaceholder": "운영체제, 개발 환경(IDE), 프로그래밍 언어 검색",
"searchGo": "생성",
"searchDownload": "파일 다운로드",
"footer": "%{templateCount} 개의 운영체제, 개발 환경(IDE), 프로그래밍 언어 .gitignore 템플릿",
"commandLineTitle": "커맨드라인 문서",
"commandLineDescription": ".gitignore.io 를 커맨드 라인에서 실행하는 법 배우기",
"videoTitle": "동영상 튜토리얼 보기",
"videoDescription": ".gitignore.io 가 어떻게 동작하는지 동영상으로 배우기",
"sourceCodeTitle": "소스 코드",
"sourceCodeDescription": "깃헙(GitHub)에서 호스팅하는 .gitignore.io 소스 코드"
}
================================================
FILE: Localizations/nl.json
================================================
{
"title": "gitignore.io - Creëer nuttige .gitignore bestanden voor je project",
"description": "Creëer nuttige .gitignore bestanden voor je project door te kiezen uit %{templateCount} besturingssysteem, IDE en programmeertaal .gitignore sjablonen",
"subtitle": "Creëer nuttige .gitignore-bestanden voor je project",
"searchPlaceholder": "Zoek besturingssystemen, IDEs of programmeertalen",
"searchGo": "Creëer",
"searchDownload": "Download bestand",
"footer": "%{templateCount} besturingssysteem, IDE en programmeertaal .gitignore-sjablonen",
"commandLineTitle": "Command Line documentatie",
"commandLineDescription": "Leer hoe je .gitignore.io uitvoert vanaf de command line",
"videoTitle": "Video handleiding bekijken",
"videoDescription": "Bekijk een video om te leren hoe .gitignore.io werkt",
"sourceCodeTitle": "Broncode",
"sourceCodeDescription": "GitHub gehoste broncode voor .gitignore.io"
}
================================================
FILE: Localizations/pt.json
================================================
{
"title": "gitignore.io - Crie Arquivos .gitignore Úteis Para Seu Projeto.",
"description": "Crie arquivos .gitignore úteis para o seu projeto selecionando os %{templateCount} templates de Sistemas Operacionais, IDEs e linguagens de Programação.",
"subtitle": "Crie arquivos .gitignore úteis para o seu projeto.",
"searchPlaceholder": "Pesquise Sistemas Operacionais, IDEs ou Linguagens de Programação.",
"searchGo": "Criar",
"searchDownload": "Baixar Arquivo",
"footer": "%{templateCount} Templates de .gitignore de Sistemas Operacionais, IDEs e Linguagens de Programação.",
"commandLineTitle": "Documentação",
"commandLineDescription": "Saiba como executar o .gitignore.io a partir da Linha de Comando",
"videoTitle": "Assista ao Vídeo Tutorial",
"videoDescription": "Assista a um vídeo para aprender como funciona o .gitignore.io",
"sourceCodeTitle": "Código-fonte",
"sourceCodeDescription": "Código-fonte hospedado no GitHub"
}
================================================
FILE: Localizations/ro.json
================================================
{
"title": "gitignore.io - Creează fișiere .gitignore utile pentru proiectul tău",
"description": "Creează fișiere .gitignore utile pentru proiectul tău selectând dintre %{templateCount} de șabloane .gitignore pentru sisteme de operare, IDE-uri și limbaje de programare.",
"subtitle": "Creează fișiere .gitignore utile pentru proiectul tău",
"searchPlaceholder": "Caută sisteme de operare, IDE-uri sau limbaje de programare",
"searchGo": "Creează",
"searchDownload": "Descarcă fișier",
"footer": "%{templateCount} de șabloane .gitignore pentru sisteme de operare, IDE-uri și limbaje de programare",
"commandLineTitle": "Documentație linie de comandă",
"commandLineDescription": "Află cum să rulezi .gitignore.io din linie de comandă",
"videoTitle": "Vizionează tutorialul video",
"videoDescription": "Vizionează videoul să vezi cum funcționează .gitignore.io",
"sourceCodeTitle": "Cod sursă",
"sourceCodeDescription": "GitHub a găzduit codul sursă pentru .gitignore.io"
}
================================================
FILE: Localizations/ru.json
================================================
{
"title": "gitignore.io - Генерируйте удобные .gitignore файлы для вашего проекта",
"description": "Генерируйте удобные .gitignore файлы для вашего проекта при помощи выбора из %{templateCount} шаблонов файла .gitignore для различных операционных систем, IDE и языков программирования",
"subtitle": "Генерируйте удобные .gitignore файлы для вашего проекта",
"searchPlaceholder": "Искать по операционным системам, IDE или языкам программирования",
"searchGo": "Сгенерировать",
"searchDownload": "Скачать файл",
"footer": "%{templateCount} шаблонов файла .gitignore для различных операционных систем, IDE и языков программирования",
"commandLineTitle": "Документация по работе из командной строки",
"commandLineDescription": "Изучите, как запускать .gitignore.io из командной строки",
"videoTitle": "Смотреть видео-туториал",
"videoDescription": "Смотреть видео, рассказывающее, как работает .gitignore.io",
"sourceCodeTitle": "Исходный код",
"sourceCodeDescription": "Исходный код .gitignore.io на GitHub"
}
================================================
FILE: Localizations/th.json
================================================
{
"title": "gitignore.io - สร้างไฟล์ .gitignore ที่เป็นประโยชน์สำหรับโปรเจ็คต์ของคุณ",
"description": "สร้างไฟล์ .gitignore ที่มีประโยชน์สำหรับโปรเจ็คต์ของคุณโดยเลือกจาก %{templateCount} เทมเพลตระบบปฏิบัติการ, IDE และภาษาการเขียนโปรแกรม .gitignore",
"subtitle": "สร้างไฟล์ .gitignore ที่มีประโยชน์สำหรับโปรเจ็คต์ของคุณ",
"searchPlaceholder": "ค้นหาระบบปฏิบัติการ IDE หรือภาษาการเขียนโปรแกรม",
"searchGo": "สร้าง",
"searchDownload": "ดาวน์โหลดไฟล์",
"footer": "%{templateCount} เทมเพลตระบบปฏิบัติการ, IDE และภาษาการเขียนโปรแกรม .gitignore",
"commandLineTitle": "ลองอ่านเอกสาร คำสั่งของ คอมมานด์ไลน์ ดูสิ!",
"commandLineDescription": "เรียนรู้วิธีเรียกใช้ .gitignore.io จากคำสั่ง คอมมานด์ไลน์ ดูสิ!",
"videoTitle": "ชมวิดีโอการสอนการใช้งาน",
"videoDescription": "ดูวิดีโอเพื่อเรียนรู้วิธีการทำงานของ .gitignore.io",
"sourceCodeTitle": "ซอร์สโค้ด",
"sourceCodeDescription": "ไปที่ กิทฮับ ที่เก็บซอร์สโค้ด ของ .gitignore.io"
}
================================================
FILE: Localizations/tr.json
================================================
{
"title": "gitignore.io - Projen İçin İşe Yarar .gitignore Dosyaları Yarat",
"description": "%{templateCount} İşletim Sistemi, IDE, ve Programlama Dili için .gitignore şablonlarından seçerek projen için işe yarar .gitignore dosyaları yarat",
"subtitle": "Projen için işe yarar .gitignore dosyaları yarat",
"searchPlaceholder": "İşletim Sistemleri, IDE'ler, ya da Programlama Dilleri ara",
"searchGo": "Yarat",
"searchDownload": "Dosyayı İndir",
"footer": "%{templateCount} İşletim Sistemi, IDE, ve Programlama Dili için .gitignore şablonları",
"commandLineTitle": "Komut Satırı Kılavuzu",
"commandLineDescription": ".gitignore.io'u komut satırından çalıştırmayı öğren",
"videoTitle": "Öğretici Videoyu İzle",
"videoDescription": ".gitignore.io'nun nasıl çalıştığını öğrenmek için bir video izle",
"sourceCodeTitle": "Kaynak Kod",
"sourceCodeDescription": "GitHub'da tutulan .gitignore.io'un kaynak kodu"
}
================================================
FILE: Localizations/zh.json
================================================
{
"title": "gitignore.io - 为你的项目创建必要的 .gitignore 文件",
"description": "从 %{templateCount} 操作系统, IDE, 和编程语言的 .gitignore 模板中为你的项目创建必要的 .gitignore 文件",
"subtitle": "为你的项目创建必要的 .gitignore 文件",
"searchPlaceholder": "搜索操作系统, IDEs, 或编程语言",
"searchGo": "创建",
"searchDownload": "文件下载",
"footer": "%{templateCount} 操作系统, IDE, 和编程语言的 .gitignore 模板",
"commandLineTitle": "命令行使用文档",
"commandLineDescription": "学习如何从命令行运行 .gitignore.io",
"videoTitle": "观看视频教程",
"videoDescription": "通过视频学习 .gitignore.io 是如何工作的",
"sourceCodeTitle": "源码",
"sourceCodeDescription": ".gitignore.io 的源码托管在 github 上"
}
================================================
FILE: Package.pins
================================================
{
"autoPin": true,
"pins": [
{
"package": "CLibreSSL",
"reason": null,
"repositoryURL": "https://github.com/vapor/clibressl.git",
"version": "1.0.0"
},
{
"package": "Console",
"reason": null,
"repositoryURL": "https://github.com/vapor/console.git",
"version": "1.0.2"
},
{
"package": "Core",
"reason": null,
"repositoryURL": "https://github.com/vapor/core.git",
"version": "1.1.1"
},
{
"package": "Crypto",
"reason": null,
"repositoryURL": "https://github.com/vapor/crypto.git",
"version": "1.1.0"
},
{
"package": "Engine",
"reason": null,
"repositoryURL": "https://github.com/vapor/engine.git",
"version": "1.3.12"
},
{
"package": "Fluent",
"reason": null,
"repositoryURL": "https://github.com/vapor/fluent.git",
"version": "1.4.1"
},
{
"package": "JSON",
"reason": null,
"repositoryURL": "https://github.com/vapor/json.git",
"version": "1.0.6"
},
{
"package": "Jay",
"reason": null,
"repositoryURL": "https://github.com/DanToml/Jay.git",
"version": "1.0.1"
},
{
"package": "Leaf",
"reason": null,
"repositoryURL": "https://github.com/vapor/leaf.git",
"version": "1.0.6"
},
{
"package": "Multipart",
"reason": null,
"repositoryURL": "https://github.com/vapor/multipart.git",
"version": "1.0.2"
},
{
"package": "Node",
"reason": null,
"repositoryURL": "https://github.com/vapor/node.git",
"version": "1.0.1"
},
{
"package": "PathIndexable",
"reason": null,
"repositoryURL": "https://github.com/vapor/path-indexable.git",
"version": "1.0.0"
},
{
"package": "Polymorphic",
"reason": null,
"repositoryURL": "https://github.com/vapor/polymorphic.git",
"version": "1.0.1"
},
{
"package": "Routing",
"reason": null,
"repositoryURL": "https://github.com/vapor/routing.git",
"version": "1.1.0"
},
{
"package": "Socks",
"reason": null,
"repositoryURL": "https://github.com/vapor/socks.git",
"version": "1.2.7"
},
{
"package": "TLS",
"reason": null,
"repositoryURL": "https://github.com/vapor/tls.git",
"version": "1.1.2"
},
{
"package": "Turnstile",
"reason": null,
"repositoryURL": "https://github.com/stormpath/Turnstile.git",
"version": "1.0.6"
},
{
"package": "Vapor",
"reason": null,
"repositoryURL": "https://github.com/vapor/vapor.git",
"version": "1.5.13"
}
],
"version": 1
}
================================================
FILE: Package.resolved
================================================
{
"object": {
"pins": [
{
"package": "Console",
"repositoryURL": "https://github.com/vapor/console.git",
"state": {
"branch": null,
"revision": "96617dcdcbb7572cbff0645a2e3362c042bfffad",
"version": "3.0.3"
}
},
{
"package": "Core",
"repositoryURL": "https://github.com/vapor/core.git",
"state": {
"branch": null,
"revision": "96ce86ebf9198328795c4b9cb711489460be083c",
"version": "3.4.4"
}
},
{
"package": "Crypto",
"repositoryURL": "https://github.com/vapor/crypto.git",
"state": {
"branch": null,
"revision": "5605334590affd4785a5839806b4504407e054ac",
"version": "3.3.0"
}
},
{
"package": "DatabaseKit",
"repositoryURL": "https://github.com/vapor/database-kit.git",
"state": {
"branch": null,
"revision": "3a17dbbe9be5f8c37703e4b7982c1332ad6b00c4",
"version": "1.3.1"
}
},
{
"package": "HTTP",
"repositoryURL": "https://github.com/vapor/http.git",
"state": {
"branch": null,
"revision": "272b22be8cb3364e42a4701c2e0676e37480ec5a",
"version": "3.1.5"
}
},
{
"package": "Leaf",
"repositoryURL": "https://github.com/vapor/leaf.git",
"state": {
"branch": null,
"revision": "d35f54cbac723e673f9bd5078361eea74049c8d7",
"version": "3.0.2"
}
},
{
"package": "Lingo",
"repositoryURL": "https://github.com/miroslavkovac/Lingo.git",
"state": {
"branch": null,
"revision": "f21f388b04239641b3e88d14f21762125faa9857",
"version": "3.0.5"
}
},
{
"package": "LingoVapor",
"repositoryURL": "https://github.com/vapor-community/lingo-vapor.git",
"state": {
"branch": null,
"revision": "56fdc7e7d531907ff97024a4aff8db90bcf0f965",
"version": "3.0.0"
}
},
{
"package": "Multipart",
"repositoryURL": "https://github.com/vapor/multipart.git",
"state": {
"branch": null,
"revision": "e57007c23a52b68e44ebdfc70cbe882a7c4f1ec3",
"version": "3.0.2"
}
},
{
"package": "Routing",
"repositoryURL": "https://github.com/vapor/routing.git",
"state": {
"branch": null,
"revision": "3219e328491b0853b8554c5a694add344d2c6cfb",
"version": "3.0.1"
}
},
{
"package": "Service",
"repositoryURL": "https://github.com/vapor/service.git",
"state": {
"branch": null,
"revision": "281a70b69783891900be31a9e70051b6fe19e146",
"version": "1.0.0"
}
},
{
"package": "swift-nio",
"repositoryURL": "https://github.com/apple/swift-nio.git",
"state": {
"branch": null,
"revision": "176dd6e8564d60e936b76f3a896d667ae3acba31",
"version": "1.10.0"
}
},
{
"package": "swift-nio-ssl",
"repositoryURL": "https://github.com/apple/swift-nio-ssl.git",
"state": {
"branch": null,
"revision": "db16c3a90b101bb53b26a58867a344ad428072e0",
"version": "1.3.2"
}
},
{
"package": "swift-nio-ssl-support",
"repositoryURL": "https://github.com/apple/swift-nio-ssl-support.git",
"state": {
"branch": null,
"revision": "c02eec4e0e6d351cd092938cf44195a8e669f555",
"version": "1.0.0"
}
},
{
"package": "swift-nio-zlib-support",
"repositoryURL": "https://github.com/apple/swift-nio-zlib-support.git",
"state": {
"branch": null,
"revision": "37760e9a52030bb9011972c5213c3350fa9d41fd",
"version": "1.0.0"
}
},
{
"package": "TemplateKit",
"repositoryURL": "https://github.com/vapor/template-kit.git",
"state": {
"branch": null,
"revision": "db35b1c35aabd0f5db3abca0cfda7becfe9c43e2",
"version": "1.1.0"
}
},
{
"package": "URLEncodedForm",
"repositoryURL": "https://github.com/vapor/url-encoded-form.git",
"state": {
"branch": null,
"revision": "932024f363ee5ff59059cf7d67194a1c271d3d0c",
"version": "1.0.5"
}
},
{
"package": "Validation",
"repositoryURL": "https://github.com/vapor/validation.git",
"state": {
"branch": null,
"revision": "4de213cf319b694e4ce19e5339592601d4dd3ff6",
"version": "2.1.1"
}
},
{
"package": "Vapor",
"repositoryURL": "https://github.com/vapor/vapor.git",
"state": {
"branch": null,
"revision": "157d3b15336caa882662cc75024dd04b2e225246",
"version": "3.1.0"
}
},
{
"package": "WebSocket",
"repositoryURL": "https://github.com/vapor/websocket.git",
"state": {
"branch": null,
"revision": "eb4277f75f1d96a3d15c852cdd89af1799093dcd",
"version": "1.1.0"
}
}
]
},
"version": 1
}
================================================
FILE: Package.swift
================================================
// swift-tools-version:4.0
import PackageDescription
let package = Package(
name: "GitignoreIO",
dependencies: [
.package(
url: "https://github.com/vapor/vapor.git",
from: "3.1.0"
),
.package(
url: "https://github.com/vapor/leaf.git",
from: "3.0.0"
),
.package(
url: "https://github.com/vapor-community/lingo-vapor.git",
from: "3.0.0"
)
],
targets: [
.target(
name: "App",
dependencies: ["Vapor", "Leaf", "LingoVapor"],
exclude: ["Config", "Localization", "Public", "Resources", "data", "wiki"]
),
.target(
name: "Run",
dependencies: ["App"],
exclude: ["Config", "Localization", "Public", "Resources", "data", "wiki"]
),
.testTarget(
name: "AppTests",
dependencies: ["App"]
)
]
)
================================================
FILE: Procfile
================================================
web: Run serve --env production --port $PORT --hostname 0.0.0.0
================================================
FILE: Public/assets/main.css
================================================
*,:after,:before{box-sizing:border-box}h1,h2,h3,h4,h5,h6{font-weight:500;line-height:1.2;margin-bottom:.5rem;margin-top:0}button,input,select{font-family:inherit;font-size:inherit;line-height:inherit;margin:0}.input-group>.form-control{background-color:#fff;-ms-flex:1 1 0%;flex:1 1 0%;margin-bottom:0;min-width:0}.input-group{-ms-flex-align:stretch;align-items:stretch;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;position:relative;width:100%}.input-group-append{display:-ms-flexbox;display:flex;margin-left:-1px}.input-group-append .btn{cursor:pointer;position:relative;z-index:2}.btn{border:1px solid transparent}.btn:focus{outline:0}.select2-container{box-sizing:border-box;display:inline-block;margin:0;position:relative;vertical-align:middle}.select2-container .select2-selection--single{box-sizing:border-box;cursor:pointer;display:block;height:28px;user-select:none;-webkit-user-select:none}.select2-container .select2-selection--single .select2-selection__rendered{display:block;overflow:hidden;padding-left:8px;padding-right:20px;text-overflow:ellipsis;white-space:nowrap}.select2-container .select2-selection--single .select2-selection__clear{position:relative}.select2-container[dir=rtl] .select2-selection--single .select2-selection__rendered{padding-left:20px;padding-right:8px}.select2-container .select2-selection--multiple{box-sizing:border-box;cursor:pointer;display:block;min-height:32px;user-select:none;-webkit-user-select:none}.select2-container .select2-selection--multiple .select2-selection__rendered{display:inline-block;overflow:hidden;padding-left:8px;text-overflow:ellipsis;white-space:nowrap}.select2-container .select2-search--inline{float:left}.select2-container .select2-search--inline .select2-search__field{border:none;box-sizing:border-box;font-size:100%;margin-top:5px;padding:0}.select2-container .select2-search--inline .select2-search__field::-webkit-search-cancel-button{-webkit-appearance:none}.select2-dropdown{background-color:#fff;border:1px solid #aaa;border-radius:4px;box-sizing:border-box;display:block;left:-100000px;position:absolute;width:100%;z-index:1051}.select2-results{display:block}.select2-results__options{list-style:none;margin:0;padding:0}.select2-results__option{padding:6px;user-select:none;-webkit-user-select:none}.select2-results__option[aria-selected]{cursor:pointer}.select2-container--open .select2-dropdown{left:0}.select2-container--open .select2-dropdown--above{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0}.select2-container--open .select2-dropdown--below{border-top:none;border-top-left-radius:0;border-top-right-radius:0}.select2-search--dropdown{display:block;padding:4px}.select2-search--dropdown .select2-search__field{box-sizing:border-box;padding:4px;width:100%}.select2-search--dropdown .select2-search__field::-webkit-search-cancel-button{-webkit-appearance:none}.select2-search--dropdown.select2-search--hide{display:none}.select2-close-mask{background-color:#fff;border:0;display:block;filter:alpha(opacity=0);height:auto;left:0;margin:0;min-height:100%;min-width:100%;opacity:0;padding:0;position:fixed;top:0;width:auto;z-index:99}.select2-hidden-accessible{clip:rect(0 0 0 0)!important;border:0!important;-webkit-clip-path:inset(50%)!important;clip-path:inset(50%)!important;height:1px!important;overflow:hidden!important;padding:0!important;position:absolute!important;white-space:nowrap!important;width:1px!important}.select2-container--default .select2-selection--single{background-color:#fff;border:1px solid #aaa;border-radius:4px}.select2-container--default .select2-selection--single .select2-selection__rendered{color:#444;line-height:28px}.select2-container--default .select2-selection--single .select2-selection__clear{cursor:pointer;float:right;font-weight:700}.select2-container--default .select2-selection--single .select2-selection__placeholder{color:#999}.select2-container--default .select2-selection--single .select2-selection__arrow{height:26px;position:absolute;right:1px;top:1px;width:20px}.select2-container--default .select2-selection--single .select2-selection__arrow b{border-color:#888 transparent transparent;border-style:solid;border-width:5px 4px 0;height:0;left:50%;margin-left:-4px;margin-top:-2px;position:absolute;top:50%;width:0}.select2-container--default[dir=rtl] .select2-selection--single .select2-selection__clear{float:left}.select2-container--default[dir=rtl] .select2-selection--single .select2-selection__arrow{left:1px;right:auto}.select2-container--default.select2-container--disabled .select2-selection--single{background-color:#eee;cursor:default}.select2-container--default.select2-container--disabled .select2-selection--single .select2-selection__clear{display:none}.select2-container--default.select2-container--open .select2-selection--single .select2-selection__arrow b{border-color:transparent transparent #888;border-width:0 4px 5px}.select2-container--default .select2-selection--multiple{background-color:#fff;border:1px solid #aaa;border-radius:4px;cursor:text}.select2-container--default .select2-selection--multiple .select2-selection__rendered{box-sizing:border-box;list-style:none;margin:0;padding:0 5px;width:100%}.select2-container--default .select2-selection--multiple .select2-selection__rendered li{list-style:none}.select2-container--default .select2-selection--multiple .select2-selection__clear{cursor:pointer;float:right;font-weight:700;margin-right:10px;margin-top:5px;padding:1px}.select2-container--default .select2-selection--multiple .select2-selection__choice{background-color:#e4e4e4;border:1px solid #aaa;border-radius:4px;cursor:default;float:left;margin-right:5px;margin-top:5px;padding:0 5px}.select2-container--default .select2-selection--multiple .select2-selection__choice__remove{color:#999;cursor:pointer;display:inline-block;font-weight:700;margin-right:2px}.select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover{color:#333}.select2-container--default[dir=rtl] .select2-selection--multiple .select2-search--inline,.select2-container--default[dir=rtl] .select2-selection--multiple .select2-selection__choice{float:right}.select2-container--default[dir=rtl] .select2-selection--multiple .select2-selection__choice{margin-left:5px;margin-right:auto}.select2-container--default[dir=rtl] .select2-selection--multiple .select2-selection__choice__remove{margin-left:2px;margin-right:auto}.select2-container--default.select2-container--focus .select2-selection--multiple{border:1px solid #000;outline:0}.select2-container--default.select2-container--disabled .select2-selection--multiple{background-color:#eee;cursor:default}.select2-container--default.select2-container--disabled .select2-selection__choice__remove{display:none}.select2-container--default.select2-container--open.select2-container--above .select2-selection--multiple,.select2-container--default.select2-container--open.select2-container--above .select2-selection--single{border-top-left-radius:0;border-top-right-radius:0}.select2-container--default.select2-container--open.select2-container--below .select2-selection--multiple,.select2-container--default.select2-container--open.select2-container--below .select2-selection--single{border-bottom-left-radius:0;border-bottom-right-radius:0}.select2-container--default .select2-search--dropdown .select2-search__field{border:1px solid #aaa}.select2-container--default .select2-search--inline .select2-search__field{-webkit-appearance:textfield;background:transparent;border:none;box-shadow:none;outline:0}.select2-container--default .select2-results>.select2-results__options{max-height:200px;overflow-y:auto}.select2-container--default .select2-results__option[role=group]{padding:0}.select2-container--default .select2-results__option[aria-disabled=true]{color:#999}.select2-container--default .select2-results__option[aria-selected=true]{background-color:#ddd}.select2-container--default .select2-results__option .select2-results__option{padding-left:1em}.select2-container--default .select2-results__option .select2-results__option .select2-results__group{padding-left:0}.select2-container--default .select2-results__option .select2-results__option .select2-results__option{margin-left:-1em;padding-left:2em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-2em;padding-left:3em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-3em;padding-left:4em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-4em;padding-left:5em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-5em;padding-left:6em}.select2-container--default .select2-results__option--highlighted[aria-selected]{background-color:#5897fb;color:#fff}.select2-container--default .select2-results__group{cursor:default;display:block;padding:6px}.select2-container--classic .select2-selection--single{background-color:#f7f7f7;background-image:-webkit-linear-gradient(top,#fff 50%,#eee);background-image:-o-linear-gradient(top,#fff 50%,#eee 100%);background-image:linear-gradient(180deg,#fff 50%,#eee);background-repeat:repeat-x;border:1px solid #aaa;border-radius:4px;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr="#FFFFFFFF",endColorstr="#FFEEEEEE",GradientType=0);outline:0}.select2-container--classic .select2-selection--single:focus{border:1px solid #5897fb}.select2-container--classic .select2-selection--single .select2-selection__rendered{color:#444;line-height:28px}.select2-container--classic .select2-selection--single .select2-selection__clear{cursor:pointer;float:right;font-weight:700;margin-right:10px}.select2-container--classic .select2-selection--single .select2-selection__placeholder{color:#999}.select2-container--classic .select2-selection--single .select2-selection__arrow{background-color:#ddd;background-image:-webkit-linear-gradient(top,#eee 50%,#ccc);background-image:-o-linear-gradient(top,#eee 50%,#ccc 100%);background-image:linear-gradient(180deg,#eee 50%,#ccc);background-repeat:repeat-x;border:none;border-bottom-right-radius:4px;border-left:1px solid #aaa;border-top-right-radius:4px;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr="#FFEEEEEE",endColorstr="#FFCCCCCC",GradientType=0);height:26px;position:absolute;right:1px;top:1px;width:20px}.select2-container--classic .select2-selection--single .select2-selection__arrow b{border-color:#888 transparent transparent;border-style:solid;border-width:5px 4px 0;height:0;left:50%;margin-left:-4px;margin-top:-2px;position:absolute;top:50%;width:0}.select2-container--classic[dir=rtl] .select2-selection--single .select2-selection__clear{float:left}.select2-container--classic[dir=rtl] .select2-selection--single .select2-selection__arrow{border:none;border-radius:0;border-bottom-left-radius:4px;border-right:1px solid #aaa;border-top-left-radius:4px;left:1px;right:auto}.select2-container--classic.select2-container--open .select2-selection--single{border:1px solid #5897fb}.select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow{background:transparent;border:none}.select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow b{border-color:transparent transparent #888;border-width:0 4px 5px}.select2-container--classic.select2-container--open.select2-container--above .select2-selection--single{background-image:-webkit-linear-gradient(top,#fff,#eee 50%);background-image:-o-linear-gradient(top,#fff 0,#eee 50%);background-image:linear-gradient(180deg,#fff 0,#eee 50%);background-repeat:repeat-x;border-top:none;border-top-left-radius:0;border-top-right-radius:0;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr="#FFFFFFFF",endColorstr="#FFEEEEEE",GradientType=0)}.select2-container--classic.select2-container--open.select2-container--below .select2-selection--single{background-image:-webkit-linear-gradient(top,#eee 50%,#fff);background-image:-o-linear-gradient(top,#eee 50%,#fff 100%);background-image:linear-gradient(180deg,#eee 50%,#fff);background-repeat:repeat-x;border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr="#FFEEEEEE",endColorstr="#FFFFFFFF",GradientType=0)}.select2-container--classic .select2-selection--multiple{background-color:#fff;border:1px solid #aaa;border-radius:4px;cursor:text;outline:0}.select2-container--classic .select2-selection--multiple:focus{border:1px solid #5897fb}.select2-container--classic .select2-selection--multiple .select2-selection__rendered{list-style:none;margin:0;padding:0 5px}.select2-container--classic .select2-selection--multiple .select2-selection__clear{display:none}.select2-container--classic .select2-selection--multiple .select2-selection__choice{background-color:#e4e4e4;border:1px solid #aaa;border-radius:4px;cursor:default;float:left;margin-right:5px;margin-top:5px;padding:0 5px}.select2-container--classic .select2-selection--multiple .select2-selection__choice__remove{color:#888;cursor:pointer;display:inline-block;font-weight:700;margin-right:2px}.select2-container--classic .select2-selection--multiple .select2-selection__choice__remove:hover{color:#555}.select2-container--classic[dir=rtl] .select2-selection--multiple .select2-selection__choice{float:right;margin-left:5px;margin-right:auto}.select2-container--classic[dir=rtl] .select2-selection--multiple .select2-selection__choice__remove{margin-left:2px;margin-right:auto}.select2-container--classic.select2-container--open .select2-selection--multiple{border:1px solid #5897fb}.select2-container--classic.select2-container--open.select2-container--above .select2-selection--multiple{border-top:none;border-top-left-radius:0;border-top-right-radius:0}.select2-container--classic.select2-container--open.select2-container--below .select2-selection--multiple{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0}.select2-container--classic .select2-search--dropdown .select2-search__field{border:1px solid #aaa;outline:0}.select2-container--classic .select2-search--inline .select2-search__field{box-shadow:none;outline:0}.select2-container--classic .select2-dropdown{background-color:#fff;border:1px solid transparent}.select2-container--classic .select2-dropdown--above{border-bottom:none}.select2-container--classic .select2-dropdown--below{border-top:none}.select2-container--classic .select2-results>.select2-results__options{max-height:200px;overflow-y:auto}.select2-container--classic .select2-results__option[role=group]{padding:0}.select2-container--classic .select2-results__option[aria-disabled=true]{color:grey}.select2-container--classic .select2-results__option--highlighted[aria-selected]{background-color:#3875d7;color:#fff}.select2-container--classic .select2-results__group{cursor:default;display:block;padding:6px}.select2-container--classic.select2-container--open .select2-dropdown{border-color:#5897fb}.select2-container{display:block}.select2-container :focus{outline:0}.input-group .select2-container--toptal{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;max-width:calc(100% - 121px)}.input-group .input-group-append{height:46px;width:120px}@media (max-width:767px){.input-group{flex-direction:column}.input-group .select2-container--toptal{max-width:100%;width:100%!important}.input-group .input-group-append{margin-left:0;margin-top:12px;width:100%}}.select2-container--toptal .select2-selection{background-color:#fff;border:1px solid #d8d9dc;border-radius:0;box-shadow:none;-webkit-transition:border-color .15s ease-in-out,-webkit-box-shadow .15s ease-in-out;transition:border-color .15s ease-in-out,-webkit-box-shadow .15s ease-in-out;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out,-webkit-box-shadow .15s ease-in-out;width:100%}.select2-container--toptal .select2-selection .select2-search__field{-webkit-appearance:none;border-radius:0;caret-color:#204ecf;color:#000;font-size:16px;height:24px;line-height:24px;margin:10px 0}@media (min-width:768px){.select2-container--toptal .select2-selection .select2-search__field{font-size:13px;height:20px;line-height:20px;margin:12px 0}}.select2-container--toptal .select2-selection .select2-search__field::-webkit-search-decoration{-webkit-appearance:none}.select2-container--toptal .select2-selection .select2-search__field::placeholder{color:#d8d9dc}.select2-container--toptal .select2-selection .select2-search__field::-webkit-input-placeholder{color:#d8d9dc}.select2-container--toptal .select2-selection .select2-search__field:-ms-input-placeholder{color:#d8d9dc}.select2-container--toptal .select2-selection .select2-search__field::-moz-placeholder{color:#d8d9dc}.select2-container--toptal.select2-container--focus .select2-selection{border-color:#204ecf;box-shadow:none}.select2-container--toptal .select2-dropdown{background-color:#fff;border:none;box-shadow:0 4px 8px 0 rgba(0,0,0,.08);color:#000;font-size:13px;line-height:16px;margin-top:0}.select2-container--toptal .select2-dropdown .select2-results__option[aria-selected=true]{background-color:#d8d9dc}.select2-container--toptal .select2-results__option{padding:10px}.select2-container--toptal .select2-results__message,.select2-container--toptal .select2-results__option--highlighted,.select2-container--toptal .select2-results__option--highlighted.select2-results__option[aria-selected=true]{background-color:rgba(32,78,207,.08)}.select2-container--toptal .select2-results>.select2-results__options{max-height:15em;overflow-y:auto}.select2-container--toptal .select2-selection--multiple{min-height:46px}.select2-container--toptal .select2-selection--multiple .select2-selection__rendered{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;display:block;list-style:none;margin:0;padding:0 10px;width:100%}.select2-container--toptal .select2-selection--multiple .select2-selection__choice{border:1px solid #d8d9dc;border-radius:100px;color:#204ecf;cursor:pointer;float:left;font-size:12px;font-weight:600;line-height:22px;margin:10px 6px 0 0;padding:0 12px}.select2-container--toptal .select2-selection--multiple .select2-selection__choice__remove{color:#455065;float:right;font-size:18px;font-weight:400;margin-left:8px}.select2-container--toptal .select2-selection--multiple .select2-selection__choice__remove:hover{color:#a6abb5}.input-group-append>.btn-gitignore{background:#00cc83;border-radius:0;color:#fff;font-size:14px;line-height:16px;text-align:center;-webkit-transition:background .35s cubic-bezier(0,0,.2,1);transition:background .35s cubic-bezier(0,0,.2,1);width:100%}.input-group-append>.btn-gitignore:focus{border-color:#204ecf;box-shadow:none}.input-group-append>.btn-gitignore:hover{background:#00a369}.internal-linking{border:0;flex-basis:56px;flex-shrink:0;height:56px;overflow:hidden;width:100vw}@media (max-width:768px){.internal-linking{flex-basis:32px;height:32px}}@keyframes ticker{0%{transform:translateX(0)}to{transform:translateX(-50%)}}.internal-linking__container{align-items:center;background-color:#0f256e;color:#fff;display:flex;flex-direction:row;font-family:Proxima Nova,Arial,sans-serif;font-weight:400;height:56px;overflow:hidden;width:100%}.internal-linking__container .internal-linking__title{align-items:center;background-color:#fff;color:#204ecf;display:flex;flex-direction:row;flex-shrink:0;font-size:10px;font-weight:600;height:100%;line-height:12px;text-transform:uppercase;z-index:1}.internal-linking__container .internal-linking__title img{margin:22px 8px 18px 24px}.internal-linking__container .internal-linking__title span{margin:16px 24px 16px 0;white-space:nowrap}.internal-linking__container .internal-linking__ticker-list{animation-duration:180s;animation-iteration-count:infinite;animation-name:ticker;animation-timing-function:linear;display:flex;flex-direction:row;font-size:12px;line-height:16px}.internal-linking__container .internal-linking__ticker-list:hover{animation-play-state:paused}.internal-linking__container .internal-linking__ticker-list .internal-linking__link{color:#fff;margin:20px 28px;padding:5px 12px 3px;text-decoration:underline;white-space:nowrap}@media screen and (max-width:768px){.internal-linking__container{border:none;box-shadow:none;height:32px}.internal-linking__container .internal-linking__title img{margin:8px}.internal-linking__container .internal-linking__title span{font-size:8px;line-height:10px;margin:6px 16px 6px 0}}@media (max-width:768px){.internal-linking__container .internal-linking__ticker-list .internal-linking__link{border:1px solid #fff;border-radius:16px;margin:4px 16px;text-decoration:none}}@font-face{font-display:swap;font-family:Proxima Nova;font-style:normal;font-weight:400;src:url(../fonts/ProximaNova-Regular.woff2) format("woff2"),url(../fonts/ProximaNova-Regular.woff) format("woff"),url(../fonts/ProximaNova-Regular.otf) format("opentype")}@font-face{font-display:swap;font-family:Proxima Nova;font-style:normal;font-weight:600;src:url(../fonts/ProximaNova-Semibold.woff2) format("woff2"),url(../fonts/ProximaNova-Semibold.woff) format("woff"),url(../fonts/ProximaNova-Semibold.otf) format("opentype")}body,html{background-color:transparent;height:100%}body{color:#000;display:flex;flex-direction:column;font-family:Proxima Nova,Arial,sans-serif;font-size:16px;font-weight:400;line-height:1.5;margin:0;min-width:320px}a{color:#204ecf;text-decoration:none}a:focus,a:hover{text-decoration:underline}.content-wrapper{display:flex;flex-direction:column;min-height:100%;padding-top:72px;position:relative}header{background:#204ecf;color:#fff;height:72px;overflow-x:hidden;position:fixed;top:0;width:100%;z-index:1100}header .container{align-items:center;display:flex;height:100%;justify-content:space-between}header a{display:block;line-height:0}header .header-left-column{align-items:center;display:flex;padding:0 10px}header .header-left-column a{padding-right:16px}header .header-left-column a img{height:30px;min-width:100px}header .header-left-column h1{border-left:1px solid #ebeced;font-size:17px;line-height:28px;margin:0;padding-left:16px}header .header-right-column img{height:24px}main{flex:1 0 400px;width:100%}@media (min-width:768px){main{display:flex}}main .masthead{margin:0 auto;max-width:580px;overflow-y:auto;text-align:center}main .masthead-top{align-items:center;display:flex;flex-direction:column;margin-bottom:25px;margin-top:120px}@media (min-width:768px){main .masthead-top{margin-top:180px}}@media (max-width:320px){main .masthead-top{margin-top:42px}}main .masthead-top img{height:auto;max-width:370px;width:100%}main .masthead-top h2{color:#455065;font-size:16px;line-height:16px;margin:20px 0}main .input-group{overflow:auto}main .masthead-bottom{margin-bottom:60px;margin-top:40px}main .masthead-bottom ul{display:flex;flex-direction:column;justify-content:center;list-style:none;margin:0;padding:0}main .masthead-bottom ul li{margin-bottom:16px}main .masthead-bottom ul li a{font-size:16px;line-height:16px;padding-bottom:8px}main .masthead-bottom ul li a:focus,main .masthead-bottom ul li a:hover{border-bottom:1px solid #204ecf;text-decoration:none}footer{color:#000;height:142px;padding-bottom:64px}footer>div{margin:0 auto;max-width:624px;padding:0 16px;width:100%}footer .carbon-wrap{align-items:center;display:flex;justify-content:center}footer a.carbon-img{height:78px}footer a.carbon-img img{height:100%}footer a.carbon-text{font-size:12px;line-height:20px;padding-left:8px}footer .carbon-poweredby{display:none}.container{margin-left:auto;margin-right:auto;max-width:100%;padding-left:16px;padding-right:16px;position:relative}@media (min-width:1200px){.container{max-width:1344px}}@media (min-width:576px){.container{width:540px}main .masthead-bottom ul{flex-direction:row}main .masthead-bottom ul li:not(:first-child):before{background-color:#a6abb5;content:"";display:inline-block;height:12px;margin:0 21px;width:1px}}@media (min-width:768px){.container{width:720px}}@media (min-width:992px){.container{width:960px}}@media (min-width:1200px){.container{width:1376px}header .header-right-column{padding-right:98px}}#input-gitignore{-webkit-appearance:none;border:1px solid #d8d9dc;border-radius:0;height:46px;line-height:46px}#input-gitignore::-ms-expand{display:none}#internal-linking{border:0;box-shadow:0 -1px 3px 0 rgba(0,0,0,.1);height:56px}@media (max-width:768px){#internal-linking{height:32px}}
================================================
FILE: Public/assets/main.js
================================================
/*! For license information please see main.js.LICENSE.txt */
(()=>{var e={755:function(e,t){var n;!function(t,n){"use strict";"object"==typeof e.exports?e.exports=t.document?n(t,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return n(e)}:n(t)}("undefined"!=typeof window?window:this,(function(r,i){"use strict";var o=[],s=Object.getPrototypeOf,a=o.slice,l=o.flat?function(e){return o.flat.call(e)}:function(e){return o.concat.apply([],e)},c=o.push,u=o.indexOf,p={},d=p.toString,f=p.hasOwnProperty,h=f.toString,g=h.call(Object),m={},v=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType&&"function"!=typeof e.item},y=function(e){return null!=e&&e===e.window},b=r.document,x={type:!0,src:!0,nonce:!0,noModule:!0};function w(e,t,n){var r,i,o=(n=n||b).createElement("script");if(o.text=e,t)for(r in x)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function _(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?p[d.call(e)]||"object":typeof e}var T="3.6.0",C=function(e,t){return new C.fn.init(e,t)};function A(e){var t=!!e&&"length"in e&&e.length,n=_(e);return!v(e)&&!y(e)&&("array"===n||0===t||"number"==typeof t&&t>0&&t-1 in e)}C.fn=C.prototype={jquery:T,constructor:C,length:0,toArray:function(){return a.call(this)},get:function(e){return null==e?a.call(this):e<0?this[e+this.length]:this[e]},pushStack:function(e){var t=C.merge(this.constructor(),e);return t.prevObject=this,t},each:function(e){return C.each(this,e)},map:function(e){return this.pushStack(C.map(this,(function(t,n){return e.call(t,n,t)})))},slice:function(){return this.pushStack(a.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},even:function(){return this.pushStack(C.grep(this,(function(e,t){return(t+1)%2})))},odd:function(){return this.pushStack(C.grep(this,(function(e,t){return t%2})))},eq:function(e){var t=this.length,n=+e+(e<0?t:0);return this.pushStack(n>=0&&n