diff options
| author | Ahmed Abdelhalim <[email protected]> | 2023-08-10 15:39:23 +0300 |
|---|---|---|
| committer | Ahmed Abdelhalim <[email protected]> | 2023-08-10 15:56:39 +0300 |
| commit | f722d20725586ee4744d077770ef7a89ab05e360 (patch) | |
| tree | eb141eb2831164a2b1078f56cb52a356ad2171a5 | |
| parent | aac6c22687ca78f5131545e46b637fd63a8dff89 (diff) | |
Migrate from brunch to hugo
65 files changed, 687 insertions, 2359 deletions
@@ -1,8 +1,4 @@ -.DS_Store +.hugo_build.lock -npm-debug.log* -yarn-debug.log* -yarn-error.log* - -node_modules/ +resources/ public/ diff --git a/.prettierrc b/.prettierrc deleted file mode 100644 index 95f2dae..0000000 --- a/.prettierrc +++ /dev/null @@ -1,11 +0,0 @@ -{ - "printWidth": 120, - "tabWidth": 2, - "useTabs": false, - "semi": true, - "singleQuote": false, - "quoteProps": "as-needed", - "trailingComma": "all", - "bracketSpacing": true, - "endOfLine": "lf" -} diff --git a/app/assets/de.html b/app/assets/de.html deleted file mode 100644 index 37f4b9a..0000000 --- a/app/assets/de.html +++ /dev/null @@ -1,310 +0,0 @@ -<!DOCTYPE html> -<html lang="de"> - <head> - <meta charset="utf-8" /> - <title>A14M</title> - <link href="/web.css" rel="stylesheet" media="all" /> - <link href="/print.css" rel="stylesheet" media="print" /> - <link rel="shortcut icon" href="/favicon.ico" /> - <link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png" /> - <link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png" /> - <link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png" /> - <link rel="manifest" href="/site.webmanifest" /> - <link rel="mask-icon" href="/safari-pinned-tab.svg" color="#000" /> - <meta name="msapplication-TileColor" content="#da532c" /> - <meta name="theme-color" content="#ffffff" /> - - <meta name="author" content="Ahmed AbdelHalim" /> - <meta name="description" content="A14M · Platform Engineer/DevOps" /> - <meta name="keywords" content="DevOps, go, docker, ansible, python, bash, CI, CD, TDD, BDD, AWS, terraform, GCP, k8s, kubernetes, grafana, prometheus, loki, ELK" /> - <meta name="viewport" content="width=device-width, initial-scale=1.0" /> - <meta name="color-scheme" content="dark light" /> - </head> - - <body> - <main> - <header class="header"> - <a class="header__language" lang="en" href="/">[EN]</a> - <h1 class="header__name">Ahmed AbdelHalim</h1> - <em class="header__job-title">Plattform-Ingenieur · DevOps</em> - <address class="header__contact-info"> - <div class="header__location">Berlin, Deutschland</div> - <div class="header__tel"><a href="tel:+491770126386">+49 177 912 6386</a></div> - <div class="header__email"><a href="mailto:[email protected]">[email protected]</a></div> - <div class="header__website"><a href="https://a14m.me">website</a></div> - <div class="header__srht"><a href="https://git.sr.ht/~a14m">sr.ht</a></div> - <div class="header__github"><a href="https://github.com/a14m">Github</a></div> - <div class="header__stackoverflow"> - <a href="https://stackoverflow.com/users/1769515/a14m">StackOverflow</a> - </div> - <div class="header__linkedin"><a href="https://www.linkedin.com/in/a14m">LinkedIn</a></div> - <div class="header__pgp"><a href="/key.asc">PGP</a></div> - </address> - </header> - - <article class="summary"> - <h2 class="summary__header section-header">Summary</h2> - <p class="summary__content"> - Plattform-Ingenieur mit - 10+ Jahre Erfahrung in der Software-Entwicklung (Backend/API-fokussiert), - 5+ Jahre Erfahrung in Infrastruktur-Automatisierung und DevOps, - Hobby-Sicherheitsanalytiker und -tester. - Ein begeisterter Fan von Automatisierung, Nachhaltigkeit, Design Patterns und sauberem Code. - Immer daran interessiert, eine bessere Problemlösungsmethode für anspruchsvolle Aufgaben zu finden, - und sinnvolle neue Technologien und Tools zu erlernen (wenn die Notwendigkeit besteht). - </p> - </article> - <article class="skills"> - <h2 class="skills__header section-header">Kenntnisse</h2> - <dl class="skills__content"> - <dt class="skills__title">DevOps</dt> - <dd class="skills__items">Kubernetes, Terraform, Docker, Ansible, CloudFoundry, Helm, Fastly, Vault, - Concourse, Artifactory, ... - </dd> - - <dt class="skills__title">Telemetrie</dt> - <dd class="skills__items">Grafana, Prometheus, Loki, <abbr title="Elasticsearch Logstash Kibana">ELK</abbr>, - Sentry, Tempo. - </dd> - - <dt class="skills__title">Kodierung</dt> - <dd class="skills__items">Go, Ruby, Python, Bash, Rust.</dd> - - <dt class="skills__title">Paradigmen</dt> - <dd class="skills__items"> - Design Patterns, Test Driven Development (<abbr>TDD</abbr>), Behavior Driven Development (<abbr>BDD</abbr>), - Continuous Integration and Delivery (<abbr>CI/CD</abbr>), Infrastructure as Code (<abbr>IaC</abbr>), - Configuration as Code, RESTful APIs, Micro-Services. - </dd> - - <dt class="skills__title">Tools</dt> - <dd class="skills__items"> - vim, git, tmux, ssh, bash, kubectl, kubevela, ansible, helmfile, vagrant, docker, certbot, dig, bosh, vault, - nc, nmap, curl, ffuf, gobuster, sqlmap, xxd, searchsploit, meta-sploit, commix, gdb, ltrace, ... - </dd> - - <dt class="skills__title">Plattformen</dt> - <dd class="skills__items"> - Amazon Web Services (<abbr>AWS</abbr>), DigitalOcean, Heroku, Google Cloud Platform (<abbr>GCP</abbr>), - Linux. - </dd> - - <dt class="skills__title">Sprachen</dt> - <dd class="skills__items">Englisch (C2), Deutsch (B1), Arabisch (Muttersprache).</dd> - </dl> - </article> - - <article class="work"> - <h2 class="work__header section-header">Berufserfahrungen</h2> - <article class="work__experience"> - <div class="job-position"> - <h2 class="job-position__company"> - <a href="https://group.springernature.com/gp/group">Springer Nature AG & Co. KGaA</a> - </h2> - <em class="job-position__title">Platform Engineer</em> - <em class="job-position__duration">Feb. 2022 - Aug. 2022</em> - <em class="job-position__location">Berlin, Germany</em> - </div> - <p class="note">Arbeiten als Teil des <b>Engineering Enablement</b>-Teams, das Infrastruktur bereitstellt, - interne Tools, Dokumente, CloudFoundry-Plattform und Kubernetes-Cluster, - um die Entwicklungsteams bei ihren täglichen Aufgaben zu unterstützen.</p> - <ul class="tasks"> - <li>Arbeitete an interner <a href="https://github.com/springernature/halfpipe">(Halfpipe)</a> - Tools zum Erstellen von CI/CD-Pipelines auf Github-Aktionen und Concourse.</li> - <li>Implementierte wiederverwendbare GitHub Actions-Workflows für die Bereitstellung in CloudFoundry, Kubernetes und - Docker-Registrierungen.</li> - <li>Implementierte Tools zum Anzeigen und Melden des Kubernetes-Bereitstellungsstatus (von CI/CD) an die jeweiligen Teams, - und benachrichtigen Sie sie bei Fehlern. - </li> - <li> Implementierter Alert-Routing-Service zur Integration mit Prometheus - <a href="https://prometheus.io/docs/alerting/latest/alertmanager/">Alert-Manager</a>. - Und sendet Benachrichtigungen an verschiedene Teams/Projekte und vorkonfigurierte Slack-Kanäle oder E-Mails.</li> - <li>Gepflegte Teamdokumente, die von anderen Entwicklungsteams verwendet werden, um sie in interne Plattformen zu integrieren und zu verwenden.</li> - <li>Wartung der von Terraform bereitgestellten Infrastruktur verschiedener Teile der Plattformen.</li> - </ul> - </article> - <article class="work__experience"> - <div class="job-position"> - <h2 class="job-position__company"><a href="https://sapera.com/">Sapera GmbH.</a></h2> - <em class="job-position__title">Senior Developer/DevOps</em> - <em class="job-position__duration">Apr. 2018 - Nov. 2021</em> - <em class="job-position__location">Berlin, Germany</em> - </div> - <ul class="tasks"> - <li> - Implementierte Infrastruktur als Code (<abbr>IaC</abbr>) für verschiedene Projekte mit Terraform und Ansible. - </li> - <li>Standardisierung des Bereitstellungsprozesses (und Pflege der Prozessdokumentation).</li> - <li>Erstellte Vorlagen zur Bereitstellung von Infrastruktur auf verschiedenen Cloud-Anbietern und in Entwicklungsstadien.</li> - <li> - Aufbau standardisierter Workflows mit CircleCI zur Automatisierung von Bereitstellungen (für interne und externe Projekte). - </li> - <li> - Implementierung und Wartung der (Rails 5) JSON-API für unsere - <a href="#note1"> Infografik-Portal[1]</a>. - </li> - <li> - Gepflegt 99+% Dokumentationsabdeckung des <a href="#note1"> Infografik-Portals[1]</a>. API - und 90+% Testabdeckung. - </li> - <li>Arbeitete mit Docker zusammen, um Ergebnisse für einige unserer externen Projekte bereitzustellen.</li> - <li> - Unterstützung und Anleitung zur Arbeit mit unseren standardmäßigen Bereitstellungsworkflows (intern und extern). - </li> - <li>Arbeitete eng mit unserem Systemingenieur zusammen, um ihn bei verschiedenen DevOps-Aufgaben zu unterstützen.</li> - <li> - Einige der Datenpipelines wurden neu geschrieben, gewartet und bereitgestellt, um bessere Sicherheitsstandards einzuhalten. - </li> - </ul> - <p class="note"> - <a id="note1" href="#note1">[1]</a> Eine funktionierende Version des Infografik-Portals wurde erworben von - <a href="https://scrollytelling.net/">Scrolly Telling GmbH</a> und noch von ihnen bearbeitet wie gesehen bei - <a href="https://five-times.com/">Five-Times</a>. - </p> - </article> - <article class="work__experience"> - <div class="job-position"> - <h2 class="job-position__company"><a href="https://liqid.de/">LIQID GmbH.</a></h2> - <em class="job-position__title">Senior Backend Developer</em> - <em class="job-position__duration">Mar. 2016 - Dec. 2017</em> - <em class="job-position__location">Berlin, Germany</em> - </div> - <ul class="tasks"> - <li>Wartung der RESTful-API (von Administratoren und Front-End verwendet).</li> - <li>Umsetzung und Pflege der Integration mit der Deutschen Bank.</li> - <li> - Implementierung und Wartung der Integration mit Intercom - <abbr title="Kundenbeziehungsmanagement">CRM.</abbr> - </li> - <li>Implementierung und Wartung des Rechnungssystems.</li> - <li> - Implementiert die neue Authentifizierungsschicht mit - <a href="https://tools.ietf.org/html/rfc7519">(RFC7519: JWT)</a>. - </li> - <li>Die Zwei-Faktor-Authentifizierung (<abbr>2FA</abbr>) für die Benutzer-/Client-Anmeldung implementiert.</li> - <li>Integrierte andere Dienste wie DocuSign, PostIdent,...</li> - <li>Umgesetzte tägliche Geschäfts-/Marketing-/technische Anforderungen.</li> - </ul> - </article> - <article class="work__experience"> - <div class="job-position"> - <h2 class="job-position__company">PrioriData GmbH.</h2> - <em class="job-position__title">Full Stack Developer</em> - <em class="job-position__duration">Jul. 2015 - Feb. 2016</em> - <em class="job-position__location">Berlin, Germany</em> - </div> - <p class="note">Wurde von <a href="https://airnow.com/">Airnow Data Ltd.</a> übernommen.</p> - <ul class="tasks"> - <li>Wartung der Rails-Web-App (Dashboard).</li> - <li>Der Scraping-Prozess zum Abrufen der Daten aus Apple- und GooglePlay-Stores wurde optimiert.</li> - <li>Warteschlangen und Überwachung rund um die Scraper neu implementiert.</li> - <li>Migrierte erfasste Daten aus verschiedenen Ressourcen zu Google BigQuery.</li> - <li> - Wartung und Bereitstellung von <abbr title="Virtual Machines">VM</abbr>-Instanzen für verschiedene Zwecke bei Google - Cloud-Plattform (mit chef). - </li> - <li> - “Extract” Schritt in die - <abbr title="Extract, Transform, Load">ETL</abbr>-Prozess (unter Verwendung eines API-basierten Crawlers anstelle von phantomJS - Browser). - </li> - </ul> - </article> - <article class="work__experience"> - <div class="job-position"> - <h2 class="job-position__company">AskNative</h2> - <em class="job-position__title">Backend Developer/DevOps</em> - <em class="job-position__duration">May. 2013 - Jul. 2015</em> - <em class="job-position__location">Remote, Egypt</em> - </div> - <ul class="tasks"> - <li>Implementierte die Testsuite für die API.</li> - <li>Veranstaltungsbuchungsfunktion über Stripe implementiert.</li> - <li>Neu implementiertes Caching für bessere Antwortzeiten.</li> - <li>Wartung der Heroku-Stacks für Staging/Produktion.</li> - <li> - Große Teile der API neu implementiert, um besseren Designmustern zu folgen - (Sechseckige Architektur und <abbr title="Publish-Subscribe">Pub/Sub</abbr>-Muster). - </li> - </ul> - </article> - </article> - - <article class="projects"> - <h2 class="projects_header section-header">Schreiben</h2> - <article class="project"> - <h2 class="project__title">The Publish/Subscribe Pattern on Rails</h2> - <p class="project__content"> - Ein - <a href="https://www.toptal.com/ruby-on-rails/the-publish-subscribe-pattern-on-rails"> - Toptal veröffentlichter Blogbeitrag - </a> - zur Implementierung des <abbr title="Publish-Subscribe">Pub/Sub</abbr>-Musters in der Praxis von Rails-Anwendungen. - </p> - </article> - <article class="project"> - <h2 class="project__title">Clean Code and the Art of Exception Handling</h2> - <p class="project__content"> - Ein - <a href="https://www.toptal.com/abap/clean-code-and-the-art-of-exception-handling"> - Toptal veröffentlichter Blogbeitrag - </a> - über verschiedene Taktiken und Strategien für die Ausnahmebehandlung und wie man sie einsetzt, um saubereren Code zu schreiben. - </p> - </article> - <article class="project"> - <h2 class="project__title"> - <a href="https://git.sr.ht/~a14m/OTW"> Over The Wire Lösungen</a> - </h2> - <p class="project__content"> - Lösungen für einige der <a href="https://overthewire.org/wargames/">OTW-Kriegsspiele</a> - in einem README-Dateiformat dokumentiert. - </p> - </article> - <article class="project"> - <h2 class="project__title"> - <a href="https://git.sr.ht/~a14m/HTB"> Hack The Box Lösungen</a> - </h2> - <p class="project__content"> - Lernsicherheitsanalyse durch Dokumentieren der Lösungen für einige der - <a href="https://hackthebox.eu">HTB-Maschinen</a> - in einem README-Dateiformat. - </p> - </article> - </article> - - <article class="projects"> - <h2 class="projects__header section-header">Projekte</h2> - <article class="project"> - <h2 class="project__title"> - <a href="https://git.sr.ht/~a14m/game-of-life"> Conway's Game of Life </a> - </h2> - <p class="project__content"> - Ein Mono-Repo mit verschiedenen Implementierungen der Befehlszeilenschnittstelle (<abbr>CLI</abbr>) für die - <a href="https://en.wikipedia.org/wiki/Conway%27s_Game_of_Life">Spiel des Lebens</a> in mehreren Sprachen - (derzeit Ruby/Rust), mit der Automatisierung zum Veröffentlichen von Updates für verschiedene Paketmanager mit a - Gitarrischer Workflow. - </p> - </article> - <article class="project"> - <h2 class="project__title"> - <a href="https://git.sr.ht/~a14m/a14m.srht.site"> a14m.srht.site </a> - </h2> - <p class="project__content">Der Quellcode und die Bereitstellungsskripte für diese Website/diesen Lebenslauf.</p> - </article> - </article> - - <article class="education"> - <h2 class="education__header section-header">Ausbildung</h2> - <article class="education__details"> - <h2 class="education__degree">B.E. in Computer Science and Engineering</h2> - <p class="education__university">Arab Academy for Science and Technology</p> - <p class="education__gpa">GPA 3.1/4.0 (B - Sehr Gut)</p> - <em class="education__location">Alexandria, Egypt</em> - <em class="education__duration">Sep. 2005 - Jan. 2011</em> - </article> - </article> - </main> - <footer></footer> - </body> -</html> diff --git a/app/assets/index.html b/app/assets/index.html deleted file mode 100644 index f40a7bc..0000000 --- a/app/assets/index.html +++ /dev/null @@ -1,310 +0,0 @@ -<!DOCTYPE html> -<html lang="en"> - <head> - <meta charset="utf-8" /> - <title>A14M</title> - <link href="/web.css" rel="stylesheet" media="all" /> - <link href="/print.css" rel="stylesheet" media="print" /> - <link rel="shortcut icon" href="/favicon.ico" /> - <link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png" /> - <link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png" /> - <link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png" /> - <link rel="manifest" href="/site.webmanifest" /> - <link rel="mask-icon" href="/safari-pinned-tab.svg" color="#000" /> - <meta name="msapplication-TileColor" content="#da532c" /> - <meta name="theme-color" content="#ffffff" /> - - <meta name="author" content="Ahmed AbdelHalim" /> - <meta name="description" content="A14M · Platform Engineer/DevOps" /> - <meta name="keywords" content="DevOps, go, docker, ansible, python, bash, CI, CD, TDD, BDD, AWS, terraform, GCP, k8s, kubernetes, grafana, prometheus, loki, ELK" /> - <meta name="viewport" content="width=device-width, initial-scale=1.0" /> - <meta name="color-scheme" content="dark light" /> - </head> - - <body> - <main> - <header class="header"> - <a class="header__language" lang="de" href="/de.html">[DE]</a> - <h1 class="header__name">Ahmed AbdelHalim</h1> - <em class="header__job-title">Platform Engineer · DevOps</em> - <address class="header__contact-info"> - <div class="header__location">Berlin, Germany</div> - <div class="header__tel"><a href="tel:+491770126386">+49 177 912 6386</a></div> - <div class="header__email"><a href="mailto:[email protected]">[email protected]</a></div> - <div class="header__website"><a href="https://a14m.me">website</a></div> - <div class="header__srht"><a href="https://git.sr.ht/~a14m">sr.ht</a></div> - <div class="header__github"><a href="https://github.com/a14m">Github</a></div> - <div class="header__stackoverflow"> - <a href="https://stackoverflow.com/users/1769515/a14m">StackOverflow</a> - </div> - <div class="header__linkedin"><a href="https://www.linkedin.com/in/a14m">LinkedIn</a></div> - <div class="header__pgp"><a href="/key.asc">PGP</a></div> - </address> - </header> - - <article class="summary"> - <h2 class="summary__header section-header">Summary</h2> - <p class="summary__content"> - Platform engineer with - 10+ years of experience in software development (backend/API focused), - 5+ years in infrastructure automation and DevOps, - hobbyist security analyst and tester. - An avid fan of automation, sustainability, design patterns, and clean code. - Always interested in deriving a better problem-solving method for challenging tasks, - and learning sensible new technologies and tools (when the need arises). - </p> - </article> - <article class="skills"> - <h2 class="skills__header section-header">Skills</h2> - <dl class="skills__content"> - <dt class="skills__title">DevOps</dt> - <dd class="skills__items">Kubernetes, Terraform, Docker, Ansible, CloudFoundry, Helm, Fastly, Vault, - Concourse, Artifactory, ... - </dd> - - <dt class="skills__title">Telemetry</dt> - <dd class="skills__items">Grafana, Prometheus, Loki, <abbr title="Elasticsearch Logstash Kibana">ELK</abbr>, - Sentry, Tempo. - </dd> - - <dt class="skills__title">Coding</dt> - <dd class="skills__items">Go, Ruby, Python, Bash, Rust.</dd> - - <dt class="skills__title">Paradigms</dt> - <dd class="skills__items"> - Design Patterns, Test Driven Development (<abbr>TDD</abbr>), Behavior Driven Development (<abbr>BDD</abbr>), - Continuous Integration and Delivery (<abbr>CI/CD</abbr>), Infrastructure as Code (<abbr>IaC</abbr>), - Configuration as Code, RESTful APIs, Micro-Services. - </dd> - - <dt class="skills__title">Tools</dt> - <dd class="skills__items"> - vim, git, tmux, ssh, bash, kubectl, kubevela, ansible, helmfile, vagrant, docker, certbot, dig, bosh, vault, - nc, nmap, curl, ffuf, gobuster, sqlmap, xxd, searchsploit, meta-sploit, commix, gdb, ltrace, ... - </dd> - - <dt class="skills__title">Platforms</dt> - <dd class="skills__items"> - Amazon Web Services (<abbr>AWS</abbr>), DigitalOcean, Heroku, Google Cloud Platform (<abbr>GCP</abbr>), - Linux. - </dd> - - <dt class="skills__title">Languages</dt> - <dd class="skills__items">English (Professional), German (Basic), Arabic (Native).</dd> - </dl> - </article> - - <article class="work"> - <h2 class="work__header section-header">Work Experience</h2> - <article class="work__experience"> - <div class="job-position"> - <h2 class="job-position__company"> - <a href="https://group.springernature.com/gp/group">Springer Nature AG & Co. KGaA</a> - </h2> - <em class="job-position__title">Platform Engineer</em> - <em class="job-position__duration">Feb. 2022 - Aug. 2022</em> - <em class="job-position__location">Berlin, Germany</em> - </div> - <p class="note">Working as part of the <b>Engineering Enablement</b> team, that provides infrastructure, - internal tooling, docs, CloudFoundry platform, and Kubernetes clusters, - to help the development teams with their daily tasks.</p> - <ul class="tasks"> - <li>Worked on internal <a href="https://github.com/springernature/halfpipe">(halfpipe)</a> - tooling for building CI/CD pipelines on Github actions and Concourse.</li> - <li>Implemented reusable GitHub Actions workflows for deploying to CloudFoundry, Kubernetes, and - Docker Registries.</li> - <li>Implemented tooling to show and report Kubernetes deployment status (from CI/CD) to respective teams, - and notify them on failure. - </li> - <li> Implemented alert-routing service, to integrate with Prometheus - <a href="https://prometheus.io/docs/alerting/latest/alertmanager/">alert-manager</a>. - And sends alerts to different teams/projects, and preconfigured Slack channels or emails.</li> - <li>Maintained team docs used by other development teams, to integrate with and use internal platforms.</li> - <li>Maintained terraform-provisioned infrastructure of different parts of the platforms.</li> - </ul> - </article> - <article class="work__experience"> - <div class="job-position"> - <h2 class="job-position__company"><a href="https://sapera.com/">Sapera GmbH.</a></h2> - <em class="job-position__title">Senior Developer/DevOps</em> - <em class="job-position__duration">Apr. 2018 - Nov. 2021</em> - <em class="job-position__location">Berlin, Germany</em> - </div> - <ul class="tasks"> - <li> - Implemented infrastructure as code (<abbr>IaC</abbr>) for different projects using Terraform and Ansible. - </li> - <li>Standardized the deployment process (and maintained the process documentation).</li> - <li>Built templates to provision infrastructure on different cloud providers and development stages.</li> - <li> - Built standardized workflows using CircleCI to automate deployments (for internal and external projects). - </li> - <li> - Implemented and maintained the (Rails 5) JSON API serving our - <a href="#note1"> infographics portal[1]</a>. - </li> - <li> - Maintained 99+% documentation coverage of the <a href="#note1"> infographics portal[1]</a>. API - and 90+% test coverage. - </li> - <li>Worked with Docker to provide deliverables for some of our external projects.</li> - <li> - Provided support and tutoring to work with our standard deployment workflows (internally and externally). - </li> - <li>Worked closely with our Systems Engineer to support with various DevOps tasks.</li> - <li> - Rewrote, maintained and provisioned some of the data pipelines to adhere to a better security standards. - </li> - </ul> - <p class="note"> - <a id="note1" href="#note1">[1]</a> A working version of the infographics portal was acquired by - <a href="https://scrollytelling.net/"> Scrolly Telling GmbH</a> and still worked on by them as seen at - <a href="https://five-times.com/"> Five-Times</a>. - </p> - </article> - <article class="work__experience"> - <div class="job-position"> - <h2 class="job-position__company"><a href="https://liqid.de/">LIQID GmbH.</a></h2> - <em class="job-position__title">Senior Backend Developer</em> - <em class="job-position__duration">Mar. 2016 - Dec. 2017</em> - <em class="job-position__location">Berlin, Germany</em> - </div> - <ul class="tasks"> - <li>Maintained the RESTful API (used by admins and front-end).</li> - <li>Implemented and maintained the integration with Deutsche Bank.</li> - <li> - Implemented and maintained the integration with Intercom - <abbr title="Customer Relationship Management">CRM.</abbr> - </li> - <li>Implemented and maintained the Invoicing system.</li> - <li> - Implemented the new authentication layer using - <a href="https://tools.ietf.org/html/rfc7519">(RFC7519: JWT)</a>. - </li> - <li>Implemented the Two-Factor Authentication (<abbr>2FA</abbr>) for user/client login.</li> - <li>Integrated other services like DocuSign, PostIdent,...</li> - <li>Implemented day to day business/marketing/technical requirements.</li> - </ul> - </article> - <article class="work__experience"> - <div class="job-position"> - <h2 class="job-position__company">PrioriData GmbH.</h2> - <em class="job-position__title">Full Stack Developer</em> - <em class="job-position__duration">Jul. 2015 - Feb. 2016</em> - <em class="job-position__location">Berlin, Germany</em> - </div> - <p class="note">Was acquired by <a href="https://airnow.com/">Airnow Data Ltd.</a></p> - <ul class="tasks"> - <li>Maintained the Rails web (dashboard) app.</li> - <li>Optimized the scraping process of getting the data from Apple and GooglePlay stores.</li> - <li>Reimplemented the queueing and monitoring around the scrapers.</li> - <li>Migrated acquired data from different resources to Google BigQuery.</li> - <li> - Maintained and provisioned different purpose <abbr title="Virtual Machines">VM</abbr> instances on Google - Cloud Platform (using chef). - </li> - <li> - Reimplemented the “Extract” step in the - <abbr title="Extract, Transform, Load">ETL</abbr> process (using an API based crawler instead of phantomJS - browser). - </li> - </ul> - </article> - <article class="work__experience"> - <div class="job-position"> - <h2 class="job-position__company">AskNative</h2> - <em class="job-position__title">Backend Developer/DevOps</em> - <em class="job-position__duration">May. 2013 - Jul. 2015</em> - <em class="job-position__location">Remote, Egypt</em> - </div> - <ul class="tasks"> - <li>Implemented the test suite for the API.</li> - <li>Implemented events booking feature via Stripe.</li> - <li>Reimplemented caching for better response times.</li> - <li>Maintained the Heroku stacks for staging/production.</li> - <li> - Reimplemented large portions of the API to follow better design patterns - (Hexagonal Architecture, and <abbr title="Publish-Subscribe">Pub/Sub</abbr> pattern). - </li> - </ul> - </article> - </article> - - <article class="projects"> - <h2 class="projects_header section-header">Writing</h2> - <article class="project"> - <h2 class="project__title">The Publish/Subscribe Pattern on Rails</h2> - <p class="project__content"> - A - <a href="https://www.toptal.com/ruby-on-rails/the-publish-subscribe-pattern-on-rails"> - Toptal published blog post - </a> - on implementing the <abbr title="Publish-Subscribe">Pub/Sub</abbr> pattern in practice in Rails apps. - </p> - </article> - <article class="project"> - <h2 class="project__title">Clean Code and the Art of Exception Handling</h2> - <p class="project__content"> - A - <a href="https://www.toptal.com/abap/clean-code-and-the-art-of-exception-handling"> - Toptal published blog post - </a> - on different tactics and strategies for exception handling and how to employ them to write cleaner code. - </p> - </article> - <article class="project"> - <h2 class="project__title"> - <a href="https://git.sr.ht/~a14m/OTW"> Over The Wire Solutions </a> - </h2> - <p class="project__content"> - Solutions for some of the <a href="https://overthewire.org/wargames/">OTW wargames</a> - documented in a README files format. - </p> - </article> - <article class="project"> - <h2 class="project__title"> - <a href="https://git.sr.ht/~a14m/HTB"> Hack The Box Solutions </a> - </h2> - <p class="project__content"> - Learning security analysis via documenting the solutions for some of the - <a href="https://hackthebox.eu">HTB machines</a> - in a README files format. - </p> - </article> - </article> - - <article class="projects"> - <h2 class="projects__header section-header">Projects</h2> - <article class="project"> - <h2 class="project__title"> - <a href="https://git.sr.ht/~a14m/game-of-life"> Conway's Game of Life </a> - </h2> - <p class="project__content"> - A mono-repo with different command line interface (<abbr>CLI</abbr>) implementations for the - <a href="https://en.wikipedia.org/wiki/Conway%27s_Game_of_Life">Game of Life</a> in multiple languages - (currently Ruby/Rust), with the automation for publishing updates to different package managers using a - git-ish workflow. - </p> - </article> - <article class="project"> - <h2 class="project__title"> - <a href="https://git.sr.ht/~a14m/a14m.srht.site"> a14m.srht.site </a> - </h2> - <p class="project__content">The source code, and deployment scripts for this website/CV.</p> - </article> - </article> - - <article class="education"> - <h2 class="education__header section-header">Education</h2> - <article class="education__details"> - <h2 class="education__degree">B.E. in Computer Science and Engineering</h2> - <p class="education__university">Arab Academy for Science and Technology</p> - <p class="education__gpa">GPA 3.1/4.0 (B - Very Good)</p> - <em class="education__location">Alexandria, Egypt</em> - <em class="education__duration">Sep. 2005 - Jan. 2011</em> - </article> - </article> - </main> - <footer></footer> - </body> -</html> diff --git a/app/assets/key.ssh b/app/assets/key.ssh deleted file mode 100644 index 1a338cf..0000000 --- a/app/assets/key.ssh +++ /dev/null @@ -1 +0,0 @@ -ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAII/JOmFlvmNRH0U8KoEzwW/CG2En3T7PRRLIjwpDBfjb cardno:19_707_974 diff --git a/app/print.styl b/app/print.styl deleted file mode 100644 index 41ca616..0000000 --- a/app/print.styl +++ /dev/null @@ -1,25 +0,0 @@ -@page { - margin-left: 1cm - margin-right: 1cm -} - -body { - font-size: 9pt - line-height: 1.3 -} - -a:link, a:visited, a:hover, a:active { - text-decoration-thickness: 1px -} - -.section-header { - font-size: 18pt - margin-bottom: -0.6em -} - -@require "stylesheets/print/header.styl" -@require "stylesheets/print/summary.styl" -@require "stylesheets/print/skills.styl" -@require "stylesheets/print/work.styl" -@require "stylesheets/print/projects.styl" -@require "stylesheets/print/education.styl" diff --git a/app/stylesheets/print/header.styl b/app/stylesheets/print/header.styl deleted file mode 100644 index 7b982c2..0000000 --- a/app/stylesheets/print/header.styl +++ /dev/null @@ -1,21 +0,0 @@ -.header__name { - margin-bottom: 0.1em -} - -.header__language { - display: none -} - -.header__tel -.header__website -.header__email -.header__srht -.header__github -.header__stackoverflow -.header__linkedin { - display: inline -} - -.header__pgp { - display: none -} diff --git a/app/stylesheets/print/projects.styl b/app/stylesheets/print/projects.styl deleted file mode 100644 index be9dd75..0000000 --- a/app/stylesheets/print/projects.styl +++ /dev/null @@ -1,7 +0,0 @@ -.projects { - margin-top: 75px - page-break-inside: avoid -} - -.project { -} diff --git a/app/stylesheets/print/skills.styl b/app/stylesheets/print/skills.styl deleted file mode 100644 index e5bba67..0000000 --- a/app/stylesheets/print/skills.styl +++ /dev/null @@ -1,17 +0,0 @@ -.skills { - margin-top: 75px -} - -.skills__content { - margin-top: 1.5em -} - -.skills__title { - min-width: 12% - margin-left: 15px -} - -.skills__items { - margin-bottom: 0.1em - margin-left: 15px -} diff --git a/app/stylesheets/web/education.styl b/app/stylesheets/web/education.styl deleted file mode 100644 index cf54f19..0000000 --- a/app/stylesheets/web/education.styl +++ /dev/null @@ -1,58 +0,0 @@ -.education { - // add empty space to the end of page (as big as the header) - margin-bottom: 150px -} - -.education__details { - display: flex - flex-flow: row wrap - justify-content: space-between - @media screen and (max-width: 780px) { - flex-flow: column wrap - } -} - -.education__degree { - min-width: 100% - align-self: center - font-size: 1.1em - margin-bottom: 0 -} - -.education__university -.education__gpa -.education__duration -.education__location { - min-width: 50% - margin: 0 -} - -.education__university { -} - -.education__gpa { - order: 3 - @media screen and (max-width: 780px) { - order: 2 - } -} - -.education__duration { - order: 2 - text-align: right - align-self: flex-end - @media screen and (max-width: 780px) { - text-align: left - align-self: flex-start - } -} - -.education__location { - order: 4 - text-align: right - align-self: flex-end - @media screen and (max-width: 780px) { - text-align: left - align-self: flex-start - } -} diff --git a/app/stylesheets/web/header.styl b/app/stylesheets/web/header.styl deleted file mode 100644 index 056db86..0000000 --- a/app/stylesheets/web/header.styl +++ /dev/null @@ -1,45 +0,0 @@ -.header { - text-align: center - font-style: normal -} - -.header__language { - float: right - margin-top: 1em - margin-bottom: -0.3em -} - -.header__name { - font-size: 3.3em - margin-bottom: -0.2em - clear: right -} - -.header__job-title { - font-style: italic -} - -.header__contact-info { - font-style: normal -} - -.header__location { - display: block - font-style: italic - margin-bottom: 1em -} - -.header__tel -.header__website { - display: none -} - -.header__email -.header__srht -.header__github -.header__stackoverflow -.header__pgp -.header__linkedin { - display: inline-block - margin: 8px; -} diff --git a/app/stylesheets/web/projects.styl b/app/stylesheets/web/projects.styl deleted file mode 100644 index f3889af..0000000 --- a/app/stylesheets/web/projects.styl +++ /dev/null @@ -1,21 +0,0 @@ -.projects { -} - -.projects__header { -} - -.project { -} - -.project__title { - margin-bottom: 0 - font-size: 1.1em - -} - -.project__content { - margin-left: 1.2em - margin-right: 1.2em - margin-top: 0.3em - margin-bottom: 1.5em -} diff --git a/app/stylesheets/web/skills.styl b/app/stylesheets/web/skills.styl deleted file mode 100644 index 29e9fd3..0000000 --- a/app/stylesheets/web/skills.styl +++ /dev/null @@ -1,31 +0,0 @@ -.skills { -} - -.skills__header { -} - -.skills__content { - display: flex - flex-flow: row wrap - -} - -.skills__title { - min-width: 14% - text-align: right - font-weight: 900 - @media screen and (max-width: 780px) { - text-align: left - } -} - -.skills__items { - width: 80% - margin-bottom: 0.1em - margin-left: 25px - - @media screen and (max-width: 780px) { - margin-bottom: 1em - width: 100% - } -} diff --git a/app/stylesheets/web/summary.styl b/app/stylesheets/web/summary.styl deleted file mode 100644 index dfcb412..0000000 --- a/app/stylesheets/web/summary.styl +++ /dev/null @@ -1,8 +0,0 @@ -.section-header.summary__header { - display: none -} - -.summary__content { - text-align: justify - margin-top: 1.5em -} diff --git a/app/stylesheets/web/work.styl b/app/stylesheets/web/work.styl deleted file mode 100644 index a989349..0000000 --- a/app/stylesheets/web/work.styl +++ /dev/null @@ -1,81 +0,0 @@ -.work { -} - -.work__header { -} - -.work__experience { -} - -.work__experience { - &:after { - display: flex - content: "" - border-bottom: 1px solid - margin: auto - max-width: 30% - } - &:last-of-type:after { - // remove the extra horizontal line after the last work__experience - display: none - } -} - -.job-position { - display: flex - flex-flow: row wrap - justify-content: space-between - @media screen and (max-width: 780px) { - flex-flow: column wrap - } -} - -.job-position__company -.job-position__title -.job-position__duration -.job-position__location { - min-width: 50% -} - -.job-position__company { - order: 0 - margin-bottom: 0 - font-size: 1.4em -} - -.job-position__title { - order: 2 - @media screen and (max-width: 780px) { - order: 1 - } -} - -.job-position__duration { - order: 1 - text-align: right - align-self: flex-end - @media screen and (max-width: 780px) { - order: 2 - text-align: left - align-self: flex-start - } -} - -.job-position__location { - order: 3 - text-align: right - align-self: flex-end - @media screen and (max-width: 780px) { - text-align: left - align-self: flex-start - } -} - -.note { - margin-top: 0.4em - margin-bottom: 0.4em -} - -.tasks { - margin-top: 0.4em -} diff --git a/app/web.styl b/app/web.styl deleted file mode 100644 index 7320840..0000000 --- a/app/web.styl +++ /dev/null @@ -1,65 +0,0 @@ -secondaryColor = #DB0A16 - -@media (prefers-color-scheme: dark) { - html { - color: #FFFFFF - background-color: #181818 - } -} - -@media (prefers-color-scheme: light) { - html { - color: #000000 - background-color: #FFFFFF - } -} - -body { - font-family: "PT Sans", "Kohinoor Bangla", sans-serif - max-width: 1024px - min-width: 375px - margin: 0 auto - float: none - line-height: 1.5 -} - -main { - margin-left: 1cm - margin-right: 1cm -} - -a:link, a:visited, a:hover, a:active { - text-decoration-color: secondaryColor - text-decoration-thickness: 2px - text-underline-offset: 2px - color: inherit -} - -.section-header { - display: flex - flex-direction: row - margin-bottom: -0.3em - - &:before { - content: ""; - border-bottom: 1px solid - margin: auto; - margin-right: 0.5em - flex: 5 5; - } - - &:after { - content: ""; - border-bottom: 1px solid - margin: auto; - margin-left: 0.5em - flex: 100 0; - } -} - -@require "stylesheets/web/header.styl" -@require "stylesheets/web/summary.styl" -@require "stylesheets/web/skills.styl" -@require "stylesheets/web/work.styl" -@require "stylesheets/web/projects.styl" -@require "stylesheets/web/education.styl" diff --git a/archetypes/default.md b/archetypes/default.md new file mode 100644 index 0000000..00e77bd --- /dev/null +++ b/archetypes/default.md @@ -0,0 +1,6 @@ +--- +title: "{{ replace .Name "-" " " | title }}" +date: {{ .Date }} +draft: true +--- + diff --git a/app/stylesheets/print/summary.styl b/assets/.keep index e69de29..e69de29 100644 --- a/app/stylesheets/print/summary.styl +++ b/assets/.keep diff --git a/assets/scss/print.scss b/assets/scss/print.scss new file mode 100644 index 0000000..0729cec --- /dev/null +++ b/assets/scss/print.scss @@ -0,0 +1,3 @@ +$secondaryColor: #DB0A16; +@import "print/base", "print/header", "print/summary", "print/skills", + "print/work", "print/projects", "print/education" diff --git a/assets/scss/print/_base.scss b/assets/scss/print/_base.scss new file mode 100644 index 0000000..ab0ca17 --- /dev/null +++ b/assets/scss/print/_base.scss @@ -0,0 +1,18 @@ +@page { + margin-left: 1cm; + margin-right: 1cm; +} + +body { + font-size: 9pt; + line-height: 1.3; +} + +a:link, a:visited, a:hover, a:active { + text-decoration-thickness: 1px; +} + +.section-header { + font-size: 18pt; + margin-bottom: -0.6em; +} diff --git a/app/stylesheets/print/education.styl b/assets/scss/print/_education.scss index ebefd27..fd0ba28 100644 --- a/app/stylesheets/print/education.styl +++ b/assets/scss/print/_education.scss @@ -1,11 +1,11 @@ .education { // avoid page breaks inside the education section - page-break-inside: avoid - margin-top: 75px + page-break-inside: avoid; + margin-top: 75px; // remove the extra space added for the website - margin-bottom: 0 + margin-bottom: 0; } .education__details { - margin-top: 0.3em + margin-top: 0.3em; } diff --git a/assets/scss/print/_header.scss b/assets/scss/print/_header.scss new file mode 100644 index 0000000..652031a --- /dev/null +++ b/assets/scss/print/_header.scss @@ -0,0 +1,21 @@ +.header__name { + margin-bottom: 0.1em; +} + +.header__language { + display: none; +} + +.header__tel, +.header__website, +.header__email, +.header__srht, +.header__github, +.header__stackoverflow, +.header__linkedin { + display: inline; +} + +.header__pgp { + display: none; +} diff --git a/assets/scss/print/_projects.scss b/assets/scss/print/_projects.scss new file mode 100644 index 0000000..c7fa414 --- /dev/null +++ b/assets/scss/print/_projects.scss @@ -0,0 +1,7 @@ +.projects { + margin-top: 75px; + page-break-inside: avoid; +} + +.project { +} diff --git a/assets/scss/print/_skills.scss b/assets/scss/print/_skills.scss new file mode 100644 index 0000000..9d37b90 --- /dev/null +++ b/assets/scss/print/_skills.scss @@ -0,0 +1,17 @@ +.skills { + margin-top: 75px; +} + +.skills__content { + margin-top: 1.5em; +} + +.skills__title { + min-width: 12%; + margin-left: 15px; +} + +.skills__items { + margin-bottom: 0.1em; + margin-left: 15px; +} diff --git a/assets/scss/print/_summary.scss b/assets/scss/print/_summary.scss new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/assets/scss/print/_summary.scss diff --git a/app/stylesheets/print/work.styl b/assets/scss/print/_work.scss index 63368ae..9495eb0 100644 --- a/app/stylesheets/print/work.styl +++ b/assets/scss/print/_work.scss @@ -1,14 +1,14 @@ .work { - margin-top: 75px + margin-top: 75px; } .work__experience { - page-break-inside: avoid + page-break-inside: avoid; } // Style the Company name links in the PDF with thicker underline .job-position__company { a:link, a:visited, a:hover, a:active { - text-decoration-thickness: 2px + text-decoration-thickness: 2px; } } diff --git a/assets/scss/web.scss b/assets/scss/web.scss new file mode 100644 index 0000000..72f80a1 --- /dev/null +++ b/assets/scss/web.scss @@ -0,0 +1,3 @@ +$secondaryColor: #DB0A16; +@import "web/base", "web/header", "web/summary", "web/skills", + "web/work", "web/projects", "web/education" diff --git a/assets/scss/web/_base.scss b/assets/scss/web/_base.scss new file mode 100644 index 0000000..309b144 --- /dev/null +++ b/assets/scss/web/_base.scss @@ -0,0 +1,56 @@ +@media (prefers-color-scheme: dark) { + html { + color: #FFFFFF; + background-color: #181818; + } +} + +@media (prefers-color-scheme: light) { + html { + color: #000000; + background-color: #FFFFFF; + } +} + +body { + font-family: "PT Sans", "Kohinoor Bangla", sans-serif; + max-width: 1024px; + min-width: 375px; + margin: 0 auto; + float: none; + line-height: 1.5; +} + +main { + margin-left: 1cm; + margin-right: 1cm; +} + +a:link, a:visited, a:hover, a:active { + text-decoration-color: $secondaryColor; + text-decoration-thickness: 2px; + text-underline-offset: 2px; + color: inherit; +} + +.section-header { + display: flex; + flex-direction: row; + margin-bottom: -0.3em; + + &:before { + content: ""; + border-bottom: 1px solid; + margin: auto; + margin-right: 0.5em; + flex: 5 5; + } + + &:after { + content: ""; + border-bottom: 1px solid; + margin: auto;; + margin-left: 0.5em; + flex: 100 0; + } +} diff --git a/assets/scss/web/_education.scss b/assets/scss/web/_education.scss new file mode 100644 index 0000000..51179e3 --- /dev/null +++ b/assets/scss/web/_education.scss @@ -0,0 +1,58 @@ +.education { + // add empty space to the end of page (as big as the header) + margin-bottom: 150px; +} + +.education__details { + display: flex; + flex-flow: row wrap; + justify-content: space-between; + @media screen and (max-width: 780px) { + flex-flow: column wrap; + } +} + +.education__degree { + min-width: 100%; + align-self: center; + font-size: 1.1em; + margin-bottom: 0; +} + +.education__university, +.education__gpa, +.education__duration, +.education__location { + min-width: 50%; + margin: 0; +} + +.education__university { +} + +.education__gpa { + order: 3; + @media screen and (max-width: 780px) { + order: 2; + } +} + +.education__duration { + order: 2; + text-align: right; + align-self: flex-end; + @media screen and (max-width: 780px) { + text-align: left; + align-self: flex-start; + } +} + +.education__location { + order: 4; + text-align: right; + align-self: flex-end; + @media screen and (max-width: 780px) { + text-align: left; + align-self: flex-start; + } +} diff --git a/assets/scss/web/_header.scss b/assets/scss/web/_header.scss new file mode 100644 index 0000000..1037114 --- /dev/null +++ b/assets/scss/web/_header.scss @@ -0,0 +1,45 @@ +.header { + text-align: center; + font-style: normal; +} + +.header__language { + float: right; + margin-top: 1em; + margin-bottom: -0.3em; +} + +.header__name { + font-size: 3.3em; + margin-bottom: -0.2em; + clear: right; +} + +.header__job-title { + font-style: italic; +} + +.header__contact-info { + font-style: normal; +} + +.header__location { + display: block; + font-style: italic; + margin-bottom: 1em; +} + +.header__tel, +.header__website { + display: none; +} + +.header__email, +.header__srht, +.header__github, +.header__stackoverflow, +.header__pgp, +.header__linkedin { + display: inline-block; + margin: 8px; +} diff --git a/assets/scss/web/_projects.scss b/assets/scss/web/_projects.scss new file mode 100644 index 0000000..d0af4ed --- /dev/null +++ b/assets/scss/web/_projects.scss @@ -0,0 +1,21 @@ +.projects { +} + +.projects__header { +} + +.project { +} + +.project__title { + margin-bottom: 0; + font-size: 1.1em; + +} + +.project__content { + margin-left: 1.2em; + margin-right: 1.2em; + margin-top: 0.3em; + margin-bottom: 1.5em; +} diff --git a/assets/scss/web/_skills.scss b/assets/scss/web/_skills.scss new file mode 100644 index 0000000..5ce9831 --- /dev/null +++ b/assets/scss/web/_skills.scss @@ -0,0 +1,31 @@ +.skills { +} + +.skills__header { +} + +.skills__content { + display: flex; + flex-flow: row wrap; + +} + +.skills__title { + min-width: 14%; + text-align: right; + font-weight: 900; + @media screen and (max-width: 780px) { + text-align: left; + } +} + +.skills__items { + width: 80%; + margin-bottom: 0.1em; + margin-left: 25px; + + @media screen and (max-width: 780px) { + margin-bottom: 1em; + width: 100%; + } +} diff --git a/assets/scss/web/_summary.scss b/assets/scss/web/_summary.scss new file mode 100644 index 0000000..688945e --- /dev/null +++ b/assets/scss/web/_summary.scss @@ -0,0 +1,8 @@ +.section-header.summary__header { + display: none; +} + +.summary__content { + text-align: justify; + margin-top: 1.5em; +} diff --git a/assets/scss/web/_work.scss b/assets/scss/web/_work.scss new file mode 100644 index 0000000..958859e --- /dev/null +++ b/assets/scss/web/_work.scss @@ -0,0 +1,81 @@ +.work { +} + +.work__header { +} + +.work__experience { +} + +.work__experience { + &:after { + display: flex; + content: ""; + border-bottom: 1px solid; + margin: auto; + max-width: 30%; + } + &:last-of-type:after { + // remove the extra horizontal line after the last work__experience + display: none; + } +} + +.job-position { + display: flex; + flex-flow: row wrap; + justify-content: space-between; + @media screen and (max-width: 780px) { + flex-flow: column wrap; + } +} + +.job-position__company, +.job-position__title, +.job-position__duration, +.job-position__location { + min-width: 50%; +} + +.job-position__company { + order: 0; + margin-bottom: 0; + font-size: 1.4em; +} + +.job-position__title { + order: 2; + @media screen and (max-width: 780px) { + order: 1; + } +} + +.job-position__duration { + order: 1; + text-align: right; + align-self: flex-end; + @media screen and (max-width: 780px) { + order: 2; + text-align: left; + align-self: flex-start; + } +} + +.job-position__location { + order: 3; + text-align: right; + align-self: flex-end; + @media screen and (max-width: 780px) { + text-align: left; + align-self: flex-start; + } +} + +.note { + margin-top: 0.4em; + margin-bottom: 0.4em; +} + +.tasks { + margin-top: 0.4em; +} diff --git a/brunch-config.js b/brunch-config.js deleted file mode 100644 index 445e944..0000000 --- a/brunch-config.js +++ /dev/null @@ -1,17 +0,0 @@ -module.exports = { - files: { - javascripts: { joinTo: "app.js" }, - stylesheets: { - joinTo: { - "web.css": ["app/web.styl"], - "print.css": ["app/print.styl"], - }, - }, - }, - plugins: { - stylus: {}, - cleancss: { - level: 2 - }, - }, -}; diff --git a/content/.keep b/content/.keep new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/content/.keep diff --git a/data/.keep b/data/.keep new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/data/.keep diff --git a/data/home/index.yaml b/data/home/index.yaml new file mode 100644 index 0000000..5848a6d --- /dev/null +++ b/data/home/index.yaml @@ -0,0 +1,48 @@ +Meta: + Name: Ahmed AbdelHalim + Title: Platform Engineer · DevOps + Location: Berlin, Germany + Phone: +49 177 912 6386 + Email: [email protected] + Srht: https://git.sr.ht/~a14m + Github: https://github.com/a14m + StackOverflow: https://stackoverflow.com/users/1769515/a14m + LinkedIn: https://www.linkedin.com/in/a14m + +Summary: + Platform engineer with 10+ years of experience in software development + (backend/API focused), 5+ years in infrastructure automation and DevOps, + hobbyist security analyst and tester. An avid fan of automation, + sustainability, design patterns, and clean code. Always interested in deriving + a better problem-solving method for challenging tasks, and learning sensible + new technologies and tools (when the need arises). + +Skills: + - DevOps: + Kubernetes, Terraform, Docker, Ansible, CloudFoundry, Helm, Fastly, + Vault, Concourse, Artifactory, ... + - Telemetry: + Grafana, Prometheus, Loki, ELK, Sentry, Tempo. + - Coding: + Go, Ruby, Python, Bash, Rust. + - Paradigms: + Design Patterns, Test Driven Development (TDD), + Behavior Driven Development (BDD), + Continuous Integration and Delivery (CI/CD), Infrastructure as Code (IaC), + Configuration as Code, RESTful APIs, Micro-Services. + - Tools: + vim, git, tmux, ssh, bash, kubectl, kubevela, ansible, helmfile, vagrant, + docker, certbot, dig, bosh, vault, nc, nmap, curl, ffuf, gobuster, sqlmap, + xxd, searchsploit, meta-sploit, commix, gdb, ltrace, ... + - Platforms: + Amazon Web Services (AWS), DigitalOcean, + Heroku, Google Cloud Platform (GCP), Linux. + - Languages: + English (Professional), German (Basic), Arabic (Native). + +Education: + Degree: B.E. in Computer Science and Engineering + University: Arab Academy for Science and Technology + GPA: GPA 3.1/4.0 (B - Very Good) + Duration: Sep. 2005 - Jan. 2011 + Location: Alexandria, Egypt diff --git a/data/home/projects.yaml b/data/home/projects.yaml new file mode 100644 index 0000000..7aeed8b --- /dev/null +++ b/data/home/projects.yaml @@ -0,0 +1,11 @@ +Projects: + - title: <a href="https://git.sr.ht/~a14m/game-of-life"> Conway's Game of Life </a> + content: + A mono-repo with different command line interface (<abbr>CLI</abbr>) implementations for the + <a href="https://en.wikipedia.org/wiki/Conway%27s_Game_of_Life">Game of Life</a> in multiple languages + (currently Ruby/Rust), with the automation for publishing updates to + different package managers using a git-ish workflow. + + - title: <a href="https://git.sr.ht/~a14m/a14m.srht.site"> a14m.srht.site </a> + content: + The source code, and deployment scripts for this website/CV/blog. diff --git a/data/home/work.yaml b/data/home/work.yaml new file mode 100644 index 0000000..0b59d35 --- /dev/null +++ b/data/home/work.yaml @@ -0,0 +1,81 @@ +Work: + - Company: <a href="https://group.springernature.com/gp/group">Springer Nature AG & Co. KGaA</a> + Title: Platform Engineer + Duration: Feb. 2022 - Aug. 2022 + Location: Berlin, Germany + Note: + Working as part of the <b>Engineering Enablement</b> team, who provides infrastructure, internal tooling, docs, + CloudFoundry platform, and Kubernetes clusters, to help the development teams with their daily tasks. + Tasks: + - Worked on internal <a href="https://github.com/springernature/halfpipe">(halfpipe)</a> + tooling for building CI/CD pipelines on Github actions and Concourse. + - Implemented reusable GitHub Actions workflows for deploying to CloudFoundry, Kubernetes, and Docker Registries. + - Implemented tooling to show and report Kubernetes deployment status (from CI/CD) to respective teams, + and notify them on failure. + - Implemented alert-routing service, to integrate with Prometheus + <a href="https://prometheus.io/docs/alerting/latest/alertmanager/">alert-manager</a>. + And sends alerts to different teams/projects, and preconfigured Slack channels or emails. + - Maintained team docs used by other development teams, to integrate with and use internal platforms. + - Maintained terraform-provisioned infrastructure of different parts of the platforms. + + - Company: <a href="https://sapera.com/">Sapera GmbH.</a> + Title: Senior Developer/DevOps + Duration: Apr. 2018 - Nov. 2021 + Location: Berlin, Germany + Tasks: + - Implemented infrastructure as code (IaC) for different projects using Terraform and Ansible. + - Standardized the deployment process (and maintained the process documentation). + - Built templates to provision infrastructure on different cloud providers and development stages. + - Built standardized workflows using CircleCI to automate deployments (for internal and external projects). + - Implemented and maintained the (Rails 5) JSON API serving our <a href="#note1"> infographics portal[1]</a>. + - Maintained 99+% documentation coverage of the <a href="#note1"> infographics portal[1]</a>. API + and 90+% test coverage. + - Worked with Docker to provide deliverables for some of our external projects. + - Provided support and tutoring to work with our standard deployment workflows (internally and externally). + - Worked closely with our Systems Engineer to support with various DevOps tasks. + - Rewrote, maintained and provisioned some of the data pipelines to adhere to a better security standards. + FootNote: + <a id="note1" href="#note1">[1]</a> A working version of the infographics portal was acquired by + <a href="https://scrollytelling.net/"> Scrolly Telling GmbH</a> and still worked on by them as seen at + <a href="https://five-times.com/"> Five-Times</a>. + + - Company: <a href="https://liqid.de/">LIQID GmbH.</a> + Title: Senior Backend Developer + Duration: Mar. 2016 - Dec. 2017 + Location: Berlin, Germany + Tasks: + - Maintained the RESTful API (used by admins and front-end). + - Implemented and maintained the integration with Deutsche Bank. + - Implemented and maintained the integration with Intercom + <abbr title="Customer Relationship Management">CRM.</abbr> + - Implemented and maintained the Invoicing system. + - Implemented the new authentication layer using + <a href="https://tools.ietf.org/html/rfc7519">(RFC7519: JWT)</a>. + - Implemented the Two-Factor Authentication (2FA) for user/client login. + - Integrated other services like DocuSign, PostIdent,... + - Implemented day to day business/marketing/technical requirements. + + - Company: PrioriData GmbH. + Title: Full Stack Developer + Duration: Jul. 2015 - Feb. 2016 + Location: Berlin, Germany + Note: Was acquired by <a href="https://airnow.com/">Airnow Data Ltd.</a> + Tasks: + - Maintained the Rails web (dashboard) app. + - Optimized the scraping process of getting the data from Apple and GooglePlay stores. + - Reimplemented the queueing and monitoring around the scrapers. + - Migrated acquired data from different resources to Google BigQuery. + - Maintained and provisioned different purpose VM instances on Google Cloud Platform (using chef). + - Reimplemented the “Extract” step in the ETL process (using an API based crawler instead of phantomJS browser). + + - Company: AskNative + Title: Backend Developer/DevOps + Duration: May. 2013 - Jul. 2015 + Location: Remote, Egypt + Tasks: + - Implemented the test suite for the API. + - Implemented events booking feature via Stripe. + - Reimplemented caching for better response times. + - Maintained the Heroku stacks for staging/production. + - Reimplemented large portions of the API to follow better design patterns + (Hexagonal Architecture, and <abbr title="Publish-Subscribe">Pub/Sub</abbr> pattern). diff --git a/data/home/writing.yaml b/data/home/writing.yaml new file mode 100644 index 0000000..de93987 --- /dev/null +++ b/data/home/writing.yaml @@ -0,0 +1,29 @@ +Writing: + - title: The Publish/Subscribe Pattern on Rails + content: + A + <a href="https://www.toptal.com/ruby-on-rails/the-publish-subscribe-pattern-on-rails"> + Toptal published blog post + </a> + on implementing the <abbr title="Publish-Subscribe">Pub/Sub</abbr> + pattern in practice in Rails apps. + + - title: Clean Code and the Art of Exception Handling + content: + A + <a href="https://www.toptal.com/abap/clean-code-and-the-art-of-exception-handling"> + Toptal published blog post + </a> + on different tactics and strategies for exception handling + and how to employ them to write cleaner code. + + - title: <a href="https://git.sr.ht/~a14m/OTW"> Over The Wire Solutions </a> + content: + Solutions for some of the <a href="https://overthewire.org/wargames/">OTW wargames</a> + documented in a README files format. + + - title: <a href="https://git.sr.ht/~a14m/HTB"> Hack The Box Solutions </a> + content: + Learning security analysis via documenting the solutions for some of the + <a href="https://hackthebox.eu">HTB machines</a> + in a README files format. diff --git a/hugo.yaml b/hugo.yaml new file mode 100644 index 0000000..2f585c6 --- /dev/null +++ b/hugo.yaml @@ -0,0 +1,4 @@ +baseURL: "https://a14m.me/" +languageCode: "en" +title: "A14M" +enableRobotsTXT: true diff --git a/layouts/.keep b/layouts/.keep new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/layouts/.keep diff --git a/layouts/home.html b/layouts/home.html new file mode 100644 index 0000000..d937da3 --- /dev/null +++ b/layouts/home.html @@ -0,0 +1,24 @@ +<html lang="{{ .Site.LanguageCode }}"> + <head> + <title>{{ .Site.Title }}</title> + {{ $web := resources.Get "scss/web.scss" }} + {{ $style := $web | toCSS | minify | fingerprint }} + <link rel="stylesheet" href="{{ $style.Permalink }}" media="all" integrity="{{ $style.Data.Integrity }}"> + {{ $print := resources.Get "scss/print.scss" }} + {{ $style := $print | toCSS | minify | fingerprint }} + <link rel="stylesheet" href="{{ $style.Permalink }}" media="print" integrity="{{ $style.Data.Integrity }}"> + {{ partial "head/metadata" .Site.Data.home.index.Meta }} + </head> + <body> + <main> + {{ partial "home/header.html" .Site.Data.home.index.Meta }} + {{ partial "home/summary.html" .Site.Data.home.index.Summary }} + {{ partial "home/skills.html" .Site.Data.home.index.Skills }} + {{ partial "home/work.html" .Site.Data.home.work.Work }} + {{ partial "home/projects.html" .Site.Data.home.writing }} + {{ partial "home/projects.html" .Site.Data.home.projects }} + {{ partial "home/education.html" .Site.Data.home.index.Education }} + </main> + </body> + <footer></footer> +</html> diff --git a/layouts/partials/head/metadata.html b/layouts/partials/head/metadata.html new file mode 100644 index 0000000..f49b401 --- /dev/null +++ b/layouts/partials/head/metadata.html @@ -0,0 +1,15 @@ +<meta charset="utf-8" /> +<meta name="author" content="{{ .Name }}" /> +<meta name="description" content="A14M · {{ .Title }}" /> +<meta name="keywords" content="DevOps, go, docker, ansible, python, bash, CI, CD, TDD, BDD, AWS, terraform, GCP, k8s, kubernetes, grafana, prometheus, loki, ELK" /> +<meta name="viewport" content="width=device-width, initial-scale=1.0" /> +<meta name="color-scheme" content="dark light" /> + +<link rel="shortcut icon" href="/ico/favicon.ico" /> +<link rel="apple-touch-icon" sizes="180x180" href="/ico/apple-touch-icon.png" /> +<link rel="icon" type="image/png" sizes="32x32" href="/ico/favicon-32x32.png" /> +<link rel="icon" type="image/png" sizes="16x16" href="/ico/favicon-16x16.png" /> +<link rel="manifest" href="/ico/site.webmanifest" /> +<link rel="mask-icon" href="/ico/safari-pinned-tab.svg" color="#000" /> +<meta name="msapplication-TileColor" content="#da532c" /> +<meta name="theme-color" content="#ffffff" /> diff --git a/layouts/partials/home/education.html b/layouts/partials/home/education.html new file mode 100644 index 0000000..e6f82ba --- /dev/null +++ b/layouts/partials/home/education.html @@ -0,0 +1,10 @@ +<article class="education"> + <h2 class="education__header section-header">Education</h2> + <article class="education__details"> + <h2 class="education__degree">{{ .Degree }}</h2> + <p class="education__university">{{ .University }}</p> + <p class="education__gpa">{{ .GPA }}</p> + <em class="education__location">{{ .Location }}</em> + <em class="education__duration">{{ .Duration }}</em> + </article> +</article> diff --git a/layouts/partials/home/header.html b/layouts/partials/home/header.html new file mode 100644 index 0000000..7b4d50c --- /dev/null +++ b/layouts/partials/home/header.html @@ -0,0 +1,15 @@ +<header class="header"> + <h1 class="header__name">{{ .Name }}</h1> + <em class="header__job-title">{{ .Title }}</em> + <address class="header__contact-info"> + <div class="header__location">{{ .Location }}</div> + <div class="header__tel"><a href="tel:{{ .Phone }}">{{ .Phone }}</a></div> + <div class="header__email"><a href="mailto:{{ .Email }}">{{ .Email }}</a></div> + <div class="header__website"><a href="{{ .Site.BaseURL }}">website</a></div> + <div class="header__srht"><a href="{{ .Srht }}">sr.ht</a></div> + <div class="header__github"><a href="{{ .Github }}">Github</a></div> + <div class="header__stackoverflow"><a href="{{ .StackOverflow }}">StackOverflow</a></div> + <div class="header__linkedin"><a href="{{ .LinkedIn }}">LinkedIn</a></div> + <div class="header__pgp"><a href="{{ absURL "/gpg.key" }}">PGP</a></div> + </address> +</header> diff --git a/layouts/partials/home/projects.html b/layouts/partials/home/projects.html new file mode 100644 index 0000000..d9ac5e2 --- /dev/null +++ b/layouts/partials/home/projects.html @@ -0,0 +1,11 @@ +{{ range $header, $projects := . }} +<article class="projects"> + <h2 class="projects_header section-header">{{ $header }}</h2> + {{ range $projects }} + <article class="project"> + <h2 class="project__title">{{ .title | safeHTML }}</h2> + <p class="project__content">{{ .content | safeHTML }}</p> + </article> + {{ end }} +</article> +{{ end }} diff --git a/layouts/partials/home/skills.html b/layouts/partials/home/skills.html new file mode 100644 index 0000000..35bda7c --- /dev/null +++ b/layouts/partials/home/skills.html @@ -0,0 +1,11 @@ +<article class="skills"> + <h2 class="skills__header section-header">Skills</h2> + <dl class="skills__content"> + {{ range $skill := . }} + {{ range $title, $content := $skill }} + <dt class="skills__title">{{ $title }}</dt> + <dd class="skills__items">{{ $content }}</dd> + {{ end }} + {{ end }} + </dl> +</article> diff --git a/layouts/partials/home/summary.html b/layouts/partials/home/summary.html new file mode 100644 index 0000000..4f256fd --- /dev/null +++ b/layouts/partials/home/summary.html @@ -0,0 +1,6 @@ +<article class="summary"> + <h2 class="summary__header section-header">Summary</h2> + <p class="summary__content"> + {{ . }} + </p> +</article> diff --git a/layouts/partials/home/work.html b/layouts/partials/home/work.html new file mode 100644 index 0000000..4af88dc --- /dev/null +++ b/layouts/partials/home/work.html @@ -0,0 +1,20 @@ +<article class="work"> + <h2 class="work__header section-header">Work Experience</h2> + {{ range . }} + <article class="work__experience"> + <div class="job-position"> + <h2 class="job-position__company">{{ .Company | safeHTML }}</h2> + <em class="job-position__title">{{ .Title }}</em> + <em class="job-position__duration">{{ .Duration }}</em> + <em class="job-position__location">{{ .Location }}</em> + </div> + <p class="note">{{ .Note | safeHTML }}</p> + <ul class="tasks"> + {{ range .Tasks }} + <li>{{ . | safeHTML }}</li> + {{ end }} + </ul> + <p class="note">{{ .FootNote | safeHTML }}</p> + </article> + {{ end }} +</article> diff --git a/package.json b/package.json deleted file mode 100644 index a774502..0000000 --- a/package.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "name": "A14M", - "description": "Website/CV", - "version": "1.0.0", - "private": false, - "engines": { - "node": ">= 12", - "yarn": "^1.16.0" - }, - "scripts": { - "start": "brunch watch --server", - "build": "brunch build --production" - }, - "dependencies": {}, - "devDependencies": { - "auto-reload-brunch": "^2", - "brunch": "^4", - "clean-css-brunch": "^3.0.0", - "stylus-brunch": "^3", - "terser-brunch": "^4" - } -} diff --git a/static/.keep b/static/.keep new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/static/.keep diff --git a/app/assets/key.asc b/static/gpg.key index 9ff0781..855c21b 100644 --- a/app/assets/key.asc +++ b/static/gpg.key @@ -1,3 +1,18 @@ +<html lang="en"> +<head> + <meta charset="utf-8" /> + <title>A14M</title> + <link rel="shortcut icon" href="/ico/favicon.ico" /> + <link rel="apple-touch-icon" sizes="180x180" href="/ico/apple-touch-icon.png" /> + <link rel="icon" type="image/png" sizes="32x32" href="/ico/favicon-32x32.png" /> + <link rel="icon" type="image/png" sizes="16x16" href="/ico/favicon-16x16.png" /> + <link rel="manifest" href="/ico/site.webmanifest" /> + <link rel="mask-icon" href="/ico/safari-pinned-tab.svg" color="#000" /> + <meta name="msapplication-TileColor" content="#da532c" /> + <meta name="theme-color" content="#ffffff" /> +</head> +<body> +<pre> -----BEGIN PGP PUBLIC KEY BLOCK----- mDMEZBDEPxYJKwYBBAHaRw8BAQdAMQDR6x4wOUF/16fEy0A+f4K0YkFYwLrKH7f6 @@ -18,3 +33,6 @@ ZAUFAmQQxI8CGyAACgkQ2f3SneHqZAWinAEAnmvc20NnEnzo+ex6d3LFknv4W0nt RFPfX3ptbzOHJ8YA/jUYRLKGHekJRrJM7kE+ihUFXS3sNpU7KOQthW0DpgwH =pdo1 -----END PGP PUBLIC KEY BLOCK----- +</pre> +</body> +</html> diff --git a/app/assets/android-chrome-192x192.png b/static/ico/android-chrome-192x192.png Binary files differindex 0abde99..0abde99 100644 --- a/app/assets/android-chrome-192x192.png +++ b/static/ico/android-chrome-192x192.png diff --git a/app/assets/apple-touch-icon.png b/static/ico/apple-touch-icon.png Binary files differindex 56687f2..56687f2 100644 --- a/app/assets/apple-touch-icon.png +++ b/static/ico/apple-touch-icon.png diff --git a/app/assets/browserconfig.xml b/static/ico/browserconfig.xml index b3930d0..b3930d0 100644 --- a/app/assets/browserconfig.xml +++ b/static/ico/browserconfig.xml diff --git a/app/assets/favicon-16x16.png b/static/ico/favicon-16x16.png Binary files differindex fdf8171..fdf8171 100644 --- a/app/assets/favicon-16x16.png +++ b/static/ico/favicon-16x16.png diff --git a/app/assets/favicon-32x32.png b/static/ico/favicon-32x32.png Binary files differindex a321a58..a321a58 100644 --- a/app/assets/favicon-32x32.png +++ b/static/ico/favicon-32x32.png diff --git a/app/assets/favicon.ico b/static/ico/favicon.ico Binary files differindex a81b32b..a81b32b 100644 --- a/app/assets/favicon.ico +++ b/static/ico/favicon.ico diff --git a/app/assets/mstile-150x150.png b/static/ico/mstile-150x150.png Binary files differindex 350bca4..350bca4 100644 --- a/app/assets/mstile-150x150.png +++ b/static/ico/mstile-150x150.png diff --git a/app/assets/safari-pinned-tab.svg b/static/ico/safari-pinned-tab.svg index be8fc4f..be8fc4f 100644 --- a/app/assets/safari-pinned-tab.svg +++ b/static/ico/safari-pinned-tab.svg diff --git a/app/assets/site.webmanifest b/static/ico/site.webmanifest index e532fa7..e532fa7 100644 --- a/app/assets/site.webmanifest +++ b/static/ico/site.webmanifest diff --git a/themes/.keep b/themes/.keep new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/themes/.keep diff --git a/yarn.lock b/yarn.lock deleted file mode 100644 index 27dd3fd..0000000 --- a/yarn.lock +++ /dev/null @@ -1,1296 +0,0 @@ -# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. -# yarn lockfile v1 - - -acorn-node@^1.6.1: - version "1.8.2" - resolved "https://registry.yarnpkg.com/acorn-node/-/acorn-node-1.8.2.tgz#114c95d64539e53dede23de8b9d96df7c7ae2af8" - integrity sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A== - dependencies: - acorn "^7.0.0" - acorn-walk "^7.0.0" - xtend "^4.0.2" - -acorn-walk@^7.0.0: - version "7.2.0" - resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-7.2.0.tgz#0de889a601203909b0fbe07b8938dc21d2e967bc" - integrity sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA== - -acorn@^7.0.0: - version "7.4.1" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" - integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== - -amdefine@>=0.0.4: - version "1.0.1" - resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5" - integrity sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU= - -ansi-regex@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" - integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8= - -ansi-styles@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" - integrity sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4= - -ansi-styles@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" - integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== - dependencies: - color-convert "^1.9.0" - - version "1.3.0" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-1.3.0.tgz#a3e52fa39168c825ff57b0248126ce5a8ff95507" - integrity sha1-o+Uvo5FoyCX/V7AkgSbOWo/5VQc= - dependencies: - arrify "^1.0.0" - micromatch "^2.1.5" - -anymatch@^3, anymatch@^3.0.0, anymatch@^3.1.1, anymatch@~3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716" - integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg== - dependencies: - normalize-path "^3.0.0" - picomatch "^2.0.4" - -anysort@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/anysort/-/anysort-2.0.0.tgz#b91e7a820eab1996481cb370824d132f168ff835" - integrity sha512-Vo6WEVULAOb5LraoA+6STmR5kr4CsCL4w3Jt8WMdSDH3N9LLpzjIcLnFE2cXZ4v50reshxM4DO/Y16ZHphHxWw== - dependencies: - anymatch "^3" - -arr-diff@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-2.0.0.tgz#8f3b827f955a8bd669697e4a4256ac3ceae356cf" - integrity sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8= - dependencies: - arr-flatten "^1.0.1" - -arr-flatten@^1.0.1: - version "1.1.0" - resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" - integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg== - -array-unique@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53" - integrity sha1-odl8yvy8JiXMcPrc6zalDFiwGlM= - -arrify@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" - integrity sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0= - -async-each@^1.0.0, async-each@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.3.tgz#b727dbf87d7651602f06f4d4ac387f47d91b0cbf" - integrity sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ== - -atob@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" - integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== - -auto-reload-brunch@^2: - version "2.7.1" - resolved "https://registry.yarnpkg.com/auto-reload-brunch/-/auto-reload-brunch-2.7.1.tgz#6924cec0ac61128d1cd1ff8f2f9ba0f6e7f01bfe" - integrity sha1-aSTOwKxhEo0c0f+PL5ug9ufwG/4= - dependencies: - anymatch "1.3.0" - ws "~1.1.0" - -balanced-match@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" - integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== - -big.js@^3.1.3: - version "3.2.0" - resolved "https://registry.yarnpkg.com/big.js/-/big.js-3.2.0.tgz#a5fc298b81b9e0dca2e458824784b65c52ba588e" - integrity sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q== - -binary-extensions@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" - integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== - -brace-expansion@^1.1.7: - version "1.1.11" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" - integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== - dependencies: - balanced-match "^1.0.0" - concat-map "0.0.1" - -braces@^1.8.2: - version "1.8.5" - resolved "https://registry.yarnpkg.com/braces/-/braces-1.8.5.tgz#ba77962e12dff969d6b76711e914b737857bf6a7" - integrity sha1-uneWLhLf+WnWt2cR6RS3N4V79qc= - dependencies: - expand-range "^1.8.1" - preserve "^0.2.0" - repeat-element "^1.1.2" - -braces@~3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" - integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== - dependencies: - fill-range "^7.0.1" - -browser-resolve@^1.11.1: - version "1.11.3" - resolved "https://registry.yarnpkg.com/browser-resolve/-/browser-resolve-1.11.3.tgz#9b7cbb3d0f510e4cb86bdbd796124d28b5890af6" - integrity sha512-exDi1BYWB/6raKHmDTCicQfTkqwN5fioMFV4j8BsfMU4R2DK/QfZfK7kOVkmWCNANf0snkBzqGqAJBao9gZMdQ== - dependencies: - resolve "1.1.7" - -brunch-skeletons@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/brunch-skeletons/-/brunch-skeletons-0.2.0.tgz#0005de9ba32235bbc7da38ba8ec6412ece4197a1" - integrity sha512-+ywd1mCqyTBjx0ENEC918IhLnV2gaUMkAU49ioIrKcLdt9cT77OvpWDtSwuKcSo3BDhbGYo2Bx1c10qoEtd7Iw== - -brunch@^4: - version "4.0.1" - resolved "https://registry.yarnpkg.com/brunch/-/brunch-4.0.1.tgz#01dc916eca72f6785d05c004d5f9d0bb57cda59a" - integrity sha512-ldbvYscNwZpIvdUOM/ByUcEmDdkkvUpbpsPTmWkf159xdBbBkII45Q0utlK54kvBdniH8hwcUMISYWI/9fSNRQ== - dependencies: - anymatch "^3.1.1" - anysort "^2.0.0" - brunch-skeletons "^0.2.0" - chokidar "^3.5.1" - commander "~5.0.0" - commonjs-require-definition "^0.6.3" - debug "^4.1.1" - deppack "^0.10.0" - deps-install "~0.2.1" - fcache "~0.3" - hosted-git-info "5.0.0" - loggy "~1.0.8" - ncp "^2.0.0" - normalize-git-url "^3.0.2" - serve-handler "^6.1.3" - since-app-start "~0.3.3" - skemata "~0.1.2" - source-map "~0.5" - universal-path "^0.1.0" - -buffer-from@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" - integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== - - version "3.0.0" - resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" - integrity sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg= - -cbify@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/cbify/-/cbify-1.0.0.tgz#1a7ad4044b2f92317e7a1badda3a727607835d84" - integrity sha1-GnrUBEsvkjF+ehut2jpydgeDXYQ= - dependencies: - fn-args "^1.0.0" - wrappy "^1.0.1" - -chalk@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" - integrity sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg= - dependencies: - ansi-styles "^2.2.1" - escape-string-regexp "^1.0.2" - has-ansi "^2.0.0" - strip-ansi "^3.0.0" - supports-color "^2.0.0" - -chalk@^2.4.1, chalk@^2.4.2: - version "2.4.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" - integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== - dependencies: - ansi-styles "^3.2.1" - escape-string-regexp "^1.0.5" - supports-color "^5.3.0" - -chokidar@^3.5.1: - version "3.5.3" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" - integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== - dependencies: - anymatch "~3.1.2" - braces "~3.0.2" - glob-parent "~5.1.2" - is-binary-path "~2.1.0" - is-glob "~4.0.1" - normalize-path "~3.0.0" - readdirp "~3.6.0" - optionalDependencies: - fsevents "~2.3.2" - -clean-css-brunch@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/clean-css-brunch/-/clean-css-brunch-3.0.0.tgz#0b6c40543cad6fcef61bf32e9292ce9394dd5d0b" - integrity sha512-gbkVut0IXCyMjOMETb2pbe+klsMB4WAebWmeA39G9479D4CJN7+4ggF+MpdSordHm/DWKywzgC7IvJVkPW0kRA== - dependencies: - clean-css "~4.2" - -clean-css@~4.2: - version "4.2.3" - resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-4.2.3.tgz#507b5de7d97b48ee53d84adb0160ff6216380f78" - integrity sha512-VcMWDN54ZN/DS+g58HYL5/n4Zrqe8vHJpGA8KdgUXFU4fuP/aHNw8eld9SyEIyabIMJX/0RaY/fplOo5hYLSFA== - dependencies: - source-map "~0.6.0" - -color-convert@^1.9.0: - version "1.9.3" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" - integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== - dependencies: - color-name "1.1.3" - - version "1.1.3" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" - integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= - -colorette@~1.1: - version "1.1.0" - resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.1.0.tgz#1f943e5a357fac10b4e0f5aaef3b14cdc1af6ec7" - integrity sha512-6S062WDQUXi6hOfkO/sBPVwE5ASXY4G2+b4atvhJfSsuUUhIaUKlkjLe9692Ipyt5/a+IPF5aVTu3V5gvXq5cg== - -commander@^2.20.0: - version "2.20.3" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" - integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== - -commander@~5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-5.0.0.tgz#dbf1909b49e5044f8fdaf0adc809f0c0722bdfd0" - integrity sha512-JrDGPAKjMGSP1G0DUoaceEJ3DZgAfr/q6X7FVk4+U5KxUSKviYGM2k6zWkfyyBHy5rAtzgYJFa1ro2O9PtoxwQ== - -commonjs-require-definition@^0.6.3: - version "0.6.3" - resolved "https://registry.yarnpkg.com/commonjs-require-definition/-/commonjs-require-definition-0.6.3.tgz#3145cff979bf5809480358f0133021ee8b119cc3" - integrity sha512-zBIo1YrBat66dXiTeXPNAsh8YfbTxwpOVP71bmjDhQciJoq8hv9eA9fG0fLDD/f9EZbsJkNq6V42Y+fdhaal4Q== - - version "0.0.1" - resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" - integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= - - version "0.5.2" - resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.2.tgz#0cf68bb9ddf5f2be7961c3a85178cb85dba78cb4" - integrity sha1-DPaLud318r55YcOoUXjLhdunjLQ= - -css-modules-loader-core@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/css-modules-loader-core/-/css-modules-loader-core-1.1.0.tgz#5908668294a1becd261ae0a4ce21b0b551f21d16" - integrity sha1-WQhmgpShvs0mGuCkziGwtVHyHRY= - dependencies: - icss-replace-symbols "1.1.0" - postcss "6.0.1" - postcss-modules-extract-imports "1.1.0" - postcss-modules-local-by-default "1.2.0" - postcss-modules-scope "1.1.0" - postcss-modules-values "1.3.0" - - version "1.7.0" - resolved "https://registry.yarnpkg.com/css-parse/-/css-parse-1.7.0.tgz#321f6cf73782a6ff751111390fc05e2c657d8c9b" - integrity sha1-Mh9s9zeCpv91ERE5D8BeLGV9jJs= - -css-parse@~2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/css-parse/-/css-parse-2.0.0.tgz#a468ee667c16d81ccf05c58c38d2a97c780dbfd4" - integrity sha1-pGjuZnwW2BzPBcWMONKpfHgNv9Q= - dependencies: - css "^2.0.0" - -css-selector-tokenizer@^0.7.0: - version "0.7.3" - resolved "https://registry.yarnpkg.com/css-selector-tokenizer/-/css-selector-tokenizer-0.7.3.tgz#735f26186e67c749aaf275783405cf0661fae8f1" - integrity sha512-jWQv3oCEL5kMErj4wRnK/OPoBi0D+P1FR2cDCKYPaMeD2eW3/mttav8HT4hT1CKopiJI/psEULjkClhvJo4Lvg== - dependencies: - cssesc "^3.0.0" - fastparse "^1.1.2" - -css@^2.0.0: - version "2.2.4" - resolved "https://registry.yarnpkg.com/css/-/css-2.2.4.tgz#c646755c73971f2bba6a601e2cf2fd71b1298929" - integrity sha512-oUnjmWpy0niI3x/mPL8dVEI1l7MnG3+HHyRPHf+YFSbK+svOhXpmSOcDURUh2aOCgl2grzrOPt1nHLuCVFULLw== - dependencies: - inherits "^2.0.3" - source-map "^0.6.1" - source-map-resolve "^0.5.2" - urix "^0.1.0" - -cssesc@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" - integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== - -debug@*, debug@^4.1.1: - version "4.3.1" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.1.tgz#f0d229c505e0c6d8c49ac553d1b13dc183f6b2ee" - integrity sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ== - dependencies: - ms "2.1.2" - -debug@~3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" - integrity sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g== - dependencies: - ms "2.0.0" - -decode-uri-component@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" - integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU= - -deep-assign@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/deep-assign/-/deep-assign-2.0.0.tgz#ebe06b1f07f08dae597620e3dd1622f371a1c572" - integrity sha1-6+BrHwfwja5ZdiDj3RYi83GhxXI= - dependencies: - is-obj "^1.0.0" - -defined@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/defined/-/defined-1.0.0.tgz#c98d9bcef75674188e110969151199e39b1fa693" - integrity sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM= - -deppack@^0.10.0: - version "0.10.0" - resolved "https://registry.yarnpkg.com/deppack/-/deppack-0.10.0.tgz#87437850ff9c9e97cc8e70846377e77499a0f517" - integrity sha512-R0F7zPCx4t8Ft5XlLSH5zbtMyB+XQf0Mp/7SamviKOhYBBnFJQhINzPIhtWSS+BFQxHrZI9sN/Z7awl+4gsPvA== - dependencies: - anymatch "^3.0.0" - async-each "^1.0.3" - browser-resolve "^1.11.1" - deep-assign "^2.0.0" - detective "^5.2.0" - glob "^7.1.5" - loggy "^1.0.8" - "true-case-path" "^1.0.2" - -deps-install@~0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/deps-install/-/deps-install-0.2.1.tgz#fb2a2784fc4fd995a2be136d2d8a855be04ef429" - integrity sha512-jTTRh/r+pszOjEOioL/qTGCQkRBlqjxuhS7H2MjpSqZvpM10ZlJ005D04NZyq8UxsA82LxZX83k5wz6hzS6zYw== - dependencies: - readdirp "^3.2.0" - semver "^6.3.0" - -detective@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/detective/-/detective-5.2.0.tgz#feb2a77e85b904ecdea459ad897cc90a99bd2a7b" - integrity sha512-6SsIx+nUUbuK0EthKjv0zrdnajCCXVYGmbYYiYjFVpzcjwEs/JMDZ8tPRG29J/HhN56t3GJp2cGSWDRjjot8Pg== - dependencies: - acorn-node "^1.6.1" - defined "^1.0.0" - minimist "^1.1.1" - -emojis-list@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389" - integrity sha1-TapNnbAPmBmIDHn6RXrlsJof04k= - -escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" - integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= - -expand-brackets@^0.1.4: - version "0.1.5" - resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-0.1.5.tgz#df07284e342a807cd733ac5af72411e581d1177b" - integrity sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s= - dependencies: - is-posix-bracket "^0.1.0" - -expand-range@^1.8.1: - version "1.8.2" - resolved "https://registry.yarnpkg.com/expand-range/-/expand-range-1.8.2.tgz#a299effd335fe2721ebae8e257ec79644fc85337" - integrity sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc= - dependencies: - fill-range "^2.1.0" - -extglob@^0.3.1: - version "0.3.2" - resolved "https://registry.yarnpkg.com/extglob/-/extglob-0.3.2.tgz#2e18ff3d2f49ab2765cec9023f011daa8d8349a1" - integrity sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE= - dependencies: - is-extglob "^1.0.0" - -fast-levenshtein@^1.1.3: - version "1.1.4" - resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-1.1.4.tgz#e6a754cc8f15e58987aa9cbd27af66fd6f4e5af9" - integrity sha1-5qdUzI8V5YmHqpy9J69m/W9OWvk= - - version "1.1.3" - resolved "https://registry.yarnpkg.com/fast-url-parser/-/fast-url-parser-1.1.3.tgz#f4af3ea9f34d8a271cf58ad2b3759f431f0b318d" - integrity sha1-9K8+qfNNiicc9YrSs3WfQx8LMY0= - dependencies: - punycode "^1.3.2" - -fastparse@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/fastparse/-/fastparse-1.1.2.tgz#91728c5a5942eced8531283c79441ee4122c35a9" - integrity sha512-483XLLxTVIwWK3QTrMGRqUfUpoOs/0hbQrl2oz4J0pAcm3A3bu84wxTFqGqkJzewCLdME38xJLJAxBABfQT8sQ== - -fcache@~0.3: - version "0.3.0" - resolved "https://registry.yarnpkg.com/fcache/-/fcache-0.3.0.tgz#d45f2f908642b91b798e88195ec47881a51c3d44" - integrity sha1-1F8vkIZCuRt5jogZXsR4gaUcPUQ= - -filename-regex@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.1.tgz#c1c4b9bee3e09725ddb106b75c1e301fe2f18b26" - integrity sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY= - -fill-range@^2.1.0: - version "2.2.4" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-2.2.4.tgz#eb1e773abb056dcd8df2bfdf6af59b8b3a936565" - integrity sha512-cnrcCbj01+j2gTG921VZPnHbjmdAf8oQV/iGeV2kZxGSyfYjjTyY79ErsK1WJWMpw6DaApEX72binqJE+/d+5Q== - dependencies: - is-number "^2.1.0" - isobject "^2.0.0" - randomatic "^3.0.0" - repeat-element "^1.1.2" - repeat-string "^1.5.2" - -fill-range@^7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" - integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== - dependencies: - to-regex-range "^5.0.1" - -fn-args@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fn-args/-/fn-args-1.0.0.tgz#974dafa1aeac4ac7c21fa09cc3b80f650106ed32" - integrity sha1-l02voa6sSsfCH6Ccw7gPZQEG7TI= - -for-in@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" - integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA= - -for-own@^0.1.4: - version "0.1.5" - resolved "https://registry.yarnpkg.com/for-own/-/for-own-0.1.5.tgz#5265c681a4f294dabbf17c9509b6763aa84510ce" - integrity sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4= - dependencies: - for-in "^1.0.1" - -fs-mode@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/fs-mode/-/fs-mode-1.0.1.tgz#73102f40aa1a25221dda0eaa906616d6da08255a" - integrity sha1-cxAvQKoaJSId2g6qkGYW1toIJVo= - dependencies: - cbify "^1.0.0" - -fs.realpath@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" - integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= - -fsevents@~2.3.2: - version "2.3.2" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" - integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== - -generic-names@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/generic-names/-/generic-names-1.0.3.tgz#2d786a121aee508876796939e8e3bff836c20917" - integrity sha1-LXhqEhruUIh2eWk56OO/+DbCCRc= - dependencies: - loader-utils "^0.2.16" - -glob-base@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/glob-base/-/glob-base-0.3.0.tgz#dbb164f6221b1c0b1ccf82aea328b497df0ea3c4" - integrity sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q= - dependencies: - glob-parent "^2.0.0" - is-glob "^2.0.0" - -glob-parent@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-2.0.0.tgz#81383d72db054fcccf5336daa902f182f6edbb28" - integrity sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg= - dependencies: - is-glob "^2.0.0" - -glob-parent@~5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" - integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== - dependencies: - is-glob "^4.0.1" - - version "7.0.6" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.0.6.tgz#211bafaf49e525b8cd93260d14ab136152b3f57a" - integrity sha1-IRuvr0nlJbjNkyYNFKsTYVKz9Xo= - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.0.2" - once "^1.3.0" - path-is-absolute "^1.0.0" - -glob@^7.0.3, glob@^7.1.2, glob@^7.1.5, glob@^7.1.6: - version "7.1.6" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" - integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== - dependencies: - 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-ansi@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" - integrity sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE= - dependencies: - ansi-regex "^2.0.0" - -has-flag@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-1.0.0.tgz#9d9e793165ce017a00f00418c43f942a7b1d11fa" - integrity sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo= - -has-flag@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" - integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= - - version "5.0.0" - resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-5.0.0.tgz#df7a06678b4ebd722139786303db80fdf302ea56" - integrity sha512-rRnjWu0Bxj+nIfUOkz0695C0H6tRrN5iYIzYejb0tDEefe2AekHu/U5Kn9pEie5vsJqpNQU02az7TGSH3qpz4Q== - dependencies: - lru-cache "^7.5.1" - [email protected], icss-replace-symbols@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz#06ea6f83679a7749e386cfe1fe812ae5db223ded" - integrity sha1-Bupvg2ead0njhs/h/oEq5dsiPe0= - -inflight@^1.0.4: - version "1.0.6" - resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" - integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= - dependencies: - once "^1.3.0" - wrappy "1" - -inherits@2, inherits@^2.0.3: - version "2.0.4" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" - integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== - -is-binary-path@~2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" - integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== - dependencies: - binary-extensions "^2.0.0" - -is-buffer@^1.1.5: - version "1.1.6" - resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" - integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== - -is-dotfile@^1.0.0: - version "1.0.3" - resolved "https://registry.yarnpkg.com/is-dotfile/-/is-dotfile-1.0.3.tgz#a6a2f32ffd2dfb04f5ca25ecd0f6b83cf798a1e1" - integrity sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE= - -is-equal-shallow@^0.1.3: - version "0.1.3" - resolved "https://registry.yarnpkg.com/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz#2238098fc221de0bcfa5d9eac4c45d638aa1c534" - integrity sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ= - dependencies: - is-primitive "^2.0.0" - -is-extendable@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" - integrity sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik= - -is-extglob@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-1.0.0.tgz#ac468177c4943405a092fc8f29760c6ffc6206c0" - integrity sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA= - -is-extglob@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" - integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= - -is-glob@^2.0.0, is-glob@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-2.0.1.tgz#d096f926a3ded5600f3fdfd91198cb0888c2d863" - integrity sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM= - dependencies: - is-extglob "^1.0.0" - -is-glob@^4.0.1, is-glob@~4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" - integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg== - dependencies: - is-extglob "^2.1.1" - -is-number@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f" - integrity sha1-Afy7s5NGOlSPL0ZszhbezknbkI8= - dependencies: - kind-of "^3.0.2" - -is-number@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-4.0.0.tgz#0026e37f5454d73e356dfe6564699867c6a7f0ff" - integrity sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ== - -is-number@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" - integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== - -is-obj@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" - integrity sha1-PkcprB9f3gJc19g6iW2rn09n2w8= - -is-posix-bracket@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz#3334dc79774368e92f016e6fbc0a88f5cd6e6bc4" - integrity sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q= - -is-primitive@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-primitive/-/is-primitive-2.0.0.tgz#207bab91638499c07b2adf240a41a87210034575" - integrity sha1-IHurkWOEmcB7Kt8kCkGochADRXU= - - version "1.0.0" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" - integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= - -isobject@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" - integrity sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk= - dependencies: - isarray "1.0.0" - -json5@^0.5.0: - version "0.5.1" - resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821" - integrity sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE= - -kind-of@^3.0.2: - version "3.2.2" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" - integrity sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ= - dependencies: - is-buffer "^1.1.5" - -kind-of@^6.0.0: - version "6.0.3" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" - integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== - -loader-utils@^0.2.16: - version "0.2.17" - resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-0.2.17.tgz#f86e6374d43205a6e6c60e9196f17c0299bfb348" - integrity sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g= - dependencies: - big.js "^3.1.3" - emojis-list "^2.0.0" - json5 "^0.5.0" - object-assign "^4.0.1" - -lodash.camelcase@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6" - integrity sha1-soqmKIorn8ZRA1x3EfZathkDMaY= - -loggy@^1.0.8, loggy@~1.0.8: - version "1.0.8" - resolved "https://registry.yarnpkg.com/loggy/-/loggy-1.0.8.tgz#82b3717b85d9d23090dd0367acfc2abc5fa6e4fb" - integrity sha512-3gXR0rOS4fnxVXGeiQID95/IML//jSbKx5T1GatifpzpOwDoOsTtlt25gosiBq27Mn4YnbzWB/DsKncnaLWKSg== - dependencies: - colorette "~1.1" - native-notifier "~0.1.6" - -lru-cache@^7.5.1: - version "7.14.1" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-7.14.1.tgz#8da8d2f5f59827edb388e63e459ac23d6d408fea" - integrity sha512-ysxwsnTKdAx96aTRdhDOCQfDgbHnt8SK0KY8SEjO0wHinhWOFTESbjVCMPbU1uGXg/ch4lifqx0wfjOawU2+WA== - -math-random@^1.0.1: - version "1.0.4" - resolved "https://registry.yarnpkg.com/math-random/-/math-random-1.0.4.tgz#5dd6943c938548267016d4e34f057583080c514c" - integrity sha512-rUxjysqif/BZQH2yhd5Aaq7vXMSx9NdEsQcyA07uEzIvxgI7zIr33gGsh+RU0/XjmQpCW7RsVof1vlkvQVCK5A== - -micromatch@^2.1.5: - version "2.3.11" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565" - integrity sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU= - dependencies: - arr-diff "^2.0.0" - array-unique "^0.2.1" - braces "^1.8.2" - expand-brackets "^0.1.4" - extglob "^0.3.1" - filename-regex "^2.0.0" - is-extglob "^1.0.0" - is-glob "^2.0.1" - kind-of "^3.0.2" - normalize-path "^2.0.1" - object.omit "^2.0.0" - parse-glob "^3.0.4" - regex-cache "^0.4.2" - -mime-db@~1.33.0: - version "1.33.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.33.0.tgz#a3492050a5cb9b63450541e39d9788d2272783db" - integrity sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ== - - version "2.1.18" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.18.tgz#6f323f60a83d11146f831ff11fd66e2fe5503bb8" - integrity sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ== - dependencies: - mime-db "~1.33.0" - - version "3.1.2" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" - integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== - dependencies: - brace-expansion "^1.1.7" - -minimatch@^3.0.2, minimatch@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" - integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== - dependencies: - brace-expansion "^1.1.7" - -minimist@^1.1.1, minimist@^1.2.5: - version "1.2.5" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" - integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== - - version "0.5.5" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" - integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== - dependencies: - minimist "^1.2.5" - -mkdirp@~1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" - integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== - - version "2.0.0" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" - integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= - - version "2.1.2" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" - integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== - -native-notifier@~0.1.6: - version "0.1.6" - resolved "https://registry.yarnpkg.com/native-notifier/-/native-notifier-0.1.6.tgz#d98c306b28b327591a74f9819dac143c8e4bcd1d" - integrity sha512-BwRtjqhNsS2HpeVrNmERzQqZTFxR+MoJr/RdfCwZ0ODKyc/0EcHQhwnPwZr99gT1uHgRqbDk3C5fOo70TVYlcQ== - dependencies: - tag-shell "~0.1.0" - -ncp@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ncp/-/ncp-2.0.0.tgz#195a21d6c46e361d2fb1281ba38b91e9df7bdbb3" - integrity sha1-GVoh1sRuNh0vsSgbo4uR6d9727M= - -nib@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/nib/-/nib-1.1.2.tgz#6a69ede4081b95c0def8be024a4c8ae0c2cbb6c7" - integrity sha1-amnt5AgblcDe+L4CSkyK4MLLtsc= - dependencies: - stylus "0.54.5" - -normalize-git-url@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/normalize-git-url/-/normalize-git-url-3.0.2.tgz#8e5f14be0bdaedb73e07200310aa416c27350fc4" - integrity sha1-jl8Uvgva7bc+ByADEKpBbCc1D8Q= - -normalize-path@^2.0.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" - integrity sha1-GrKLVW4Zg2Oowab35vogE3/mrtk= - dependencies: - remove-trailing-separator "^1.0.1" - -normalize-path@^3.0.0, normalize-path@~3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" - integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== - -object-assign@^4.0.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" - integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= - -object.omit@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/object.omit/-/object.omit-2.0.1.tgz#1a9c744829f39dbb858c76ca3579ae2a54ebd1fa" - integrity sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo= - dependencies: - for-own "^0.1.4" - is-extendable "^0.1.1" - -once@^1.3.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" - integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= - dependencies: - wrappy "1" - -options@>=0.0.5: - version "0.0.6" - resolved "https://registry.yarnpkg.com/options/-/options-0.0.6.tgz#ec22d312806bb53e731773e7cdaefcf1c643128f" - integrity sha1-7CLTEoBrtT5zF3Pnza788cZDEo8= - -parse-glob@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/parse-glob/-/parse-glob-3.0.4.tgz#b2c376cfb11f35513badd173ef0bb6e3a388391c" - integrity sha1-ssN2z7EfNVE7rdFz7wu246OIORw= - dependencies: - glob-base "^0.3.0" - is-dotfile "^1.0.0" - is-extglob "^1.0.0" - is-glob "^2.0.0" - -path-is-absolute@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" - integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= - - version "1.0.2" - resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" - integrity sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM= - - version "2.2.1" - resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-2.2.1.tgz#90b617025a16381a879bc82a38d4e8bdeb2bcf45" - integrity sha512-gu9bD6Ta5bwGrrU8muHzVOBFFREpp2iRkVfhBJahwJ6p6Xw20SjT0MxLnwkjOibQmGSYhiUnf2FLe7k+jcFmGQ== - -picomatch@^2.0.4, picomatch@^2.2.1: - version "2.2.3" - resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.3.tgz#465547f359ccc206d3c48e46a1bcb89bf7ee619d" - integrity sha512-KpELjfwcCDUb9PeigTs2mBJzXUPzAuP2oPcA989He8Rte0+YUAjw1JVedDhuTKPkHjSYzMN3npC9luThGYEKdg== - - version "1.1.0" - resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-1.1.0.tgz#b614c9720be6816eaee35fb3a5faa1dba6a05ddb" - integrity sha1-thTJcgvmgW6u41+zpfqh26agXds= - dependencies: - postcss "^6.0.1" - - version "1.2.0" - resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-1.2.0.tgz#f7d80c398c5a393fa7964466bd19500a7d61c069" - integrity sha1-99gMOYxaOT+nlkRmvRlQCn1hwGk= - dependencies: - css-selector-tokenizer "^0.7.0" - postcss "^6.0.1" - - version "1.1.0" - resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-1.1.0.tgz#d6ea64994c79f97b62a72b426fbe6056a194bb90" - integrity sha1-1upkmUx5+XtipytCb75gVqGUu5A= - dependencies: - css-selector-tokenizer "^0.7.0" - postcss "^6.0.1" - - version "1.3.0" - resolved "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-1.3.0.tgz#ecffa9d7e192518389f42ad0e83f72aec456ea20" - integrity sha1-7P+p1+GSUYOJ9CrQ6D9yrsRW6iA= - dependencies: - icss-replace-symbols "^1.1.0" - postcss "^6.0.1" - -postcss-modules@~1.4.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/postcss-modules/-/postcss-modules-1.4.1.tgz#8aa35bd3461db67e27377a7ce770d77b654a84ef" - integrity sha512-btTrbK+Xc3NBuYF8TPBjCMRSp5h6NoQ1iVZ6WiDQENIze6KIYCSf0+UFQuV3yJ7gRHA+4AAtF8i2jRvUpbBMMg== - dependencies: - css-modules-loader-core "^1.1.0" - generic-names "^1.0.3" - lodash.camelcase "^4.3.0" - postcss "^7.0.1" - string-hash "^1.1.1" - - version "6.0.1" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-6.0.1.tgz#000dbd1f8eef217aa368b9a212c5fc40b2a8f3f2" - integrity sha1-AA29H47vIXqjaLmiEsX8QLKo8/I= - dependencies: - chalk "^1.1.3" - source-map "^0.5.6" - supports-color "^3.2.3" - -postcss@^6.0.1: - version "6.0.23" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-6.0.23.tgz#61c82cc328ac60e677645f979054eb98bc0e3324" - integrity sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag== - dependencies: - chalk "^2.4.1" - source-map "^0.6.1" - supports-color "^5.4.0" - -postcss@^7.0.1, postcss@~7.0.24: - version "7.0.35" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.35.tgz#d2be00b998f7f211d8a276974079f2e92b970e24" - integrity sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg== - dependencies: - chalk "^2.4.2" - source-map "^0.6.1" - supports-color "^6.1.0" - -preserve@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b" - integrity sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks= - -progeny@~0.12.0: - version "0.12.0" - resolved "https://registry.yarnpkg.com/progeny/-/progeny-0.12.0.tgz#4a4c85031a00f723b580b5929932b57d587d66d2" - integrity sha512-n5rRHPP2Pxeh1fL385XNTlgyYrTm8MzG+kXO3G87+vmLU5MHouzrF4D5TRKPNfCwpE4/GOwmCS4XSzCPC7hEoA== - dependencies: - async-each "^1.0.0" - chalk "^1.1.3" - fs-mode "^1.0.1" - glob "^7.0.3" - -punycode@^1.3.2: - version "1.4.1" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" - integrity sha1-wNWmOycYgArY4esPpSachN1BhF4= - -randomatic@^3.0.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-3.1.1.tgz#b776efc59375984e36c537b2f51a1f0aff0da1ed" - integrity sha512-TuDE5KxZ0J461RVjrJZCJc+J+zCkTb1MbH9AQUq68sMhOMcy9jLcb3BrZKgp9q9Ncltdg4QVqWrH02W2EFFVYw== - dependencies: - is-number "^4.0.0" - kind-of "^6.0.0" - math-random "^1.0.1" - - version "1.2.0" - resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.0.tgz#f49be6b487894ddc40dcc94a322f611092e00d5e" - integrity sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4= - -readdirp@^3.2.0, readdirp@~3.6.0: - version "3.6.0" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" - integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== - dependencies: - picomatch "^2.2.1" - -regex-cache@^0.4.2: - version "0.4.4" - resolved "https://registry.yarnpkg.com/regex-cache/-/regex-cache-0.4.4.tgz#75bdc58a2a1496cec48a12835bc54c8d562336dd" - integrity sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ== - dependencies: - is-equal-shallow "^0.1.3" - -remove-trailing-separator@^1.0.1: - version "1.1.0" - resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" - integrity sha1-wkvOKig62tW8P1jg1IJJuSN52O8= - -repeat-element@^1.1.2: - version "1.1.4" - resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.4.tgz#be681520847ab58c7568ac75fbfad28ed42d39e9" - integrity sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ== - -repeat-string@^1.5.2: - version "1.6.1" - resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" - integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= - -resolve-url@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" - integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= - - version "1.1.7" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" - integrity sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs= - -safer-buffer@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" - integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== - - version "0.5.8" - resolved "https://registry.yarnpkg.com/sax/-/sax-0.5.8.tgz#d472db228eb331c2506b0e8c15524adb939d12c1" - integrity sha1-1HLbIo6zMcJQaw6MFVJK25OdEsE= - -sax@~1.2.4: - version "1.2.4" - resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" - integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== - -semver@^6.3.0: - version "6.3.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" - integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== - -serve-handler@^6.1.3: - version "6.1.5" - resolved "https://registry.yarnpkg.com/serve-handler/-/serve-handler-6.1.5.tgz#a4a0964f5c55c7e37a02a633232b6f0d6f068375" - integrity sha512-ijPFle6Hwe8zfmBxJdE+5fta53fdIY0lHISJvuikXB3VYFafRjMRpOffSPvCYsbKyBA7pvy9oYr/BT1O3EArlg== - dependencies: - bytes "3.0.0" - content-disposition "0.5.2" - fast-url-parser "1.1.3" - mime-types "2.1.18" - minimatch "3.1.2" - path-is-inside "1.0.2" - path-to-regexp "2.2.1" - range-parser "1.2.0" - -since-app-start@~0.3.3: - version "0.3.3" - resolved "https://registry.yarnpkg.com/since-app-start/-/since-app-start-0.3.3.tgz#ff96d7ab0a60118283785640396ea861bfe8554c" - integrity sha512-CvVjdZvSgaUP4mMOLn8NZtYKFF2RYboEaTBKdj5F+Jm6SpCQ/kZgnMVMNHhOUgBzHusBe8aio0Gri8ci2utOXw== - dependencies: - debug "~3.1.0" - -skemata@~0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/skemata/-/skemata-0.1.2.tgz#f3c521029b67be6e0825f0df867ee97916de4530" - integrity sha1-88UhAptnvm4IJfDfhn7peRbeRTA= - dependencies: - fast-levenshtein "^1.1.3" - -source-map-resolve@^0.5.2: - version "0.5.3" - resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.3.tgz#190866bece7553e1f8f267a2ee82c606b5509a1a" - integrity sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw== - dependencies: - atob "^2.1.2" - decode-uri-component "^0.2.0" - resolve-url "^0.2.1" - source-map-url "^0.4.0" - urix "^0.1.0" - -source-map-support@~0.5.12: - version "0.5.19" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.19.tgz#a98b62f86dcaf4f67399648c085291ab9e8fed61" - integrity sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw== - dependencies: - buffer-from "^1.0.0" - source-map "^0.6.0" - -source-map-url@^0.4.0: - version "0.4.1" - resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.1.tgz#0af66605a745a5a2f91cf1bbf8a7afbc283dec56" - integrity sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw== - - version "0.1.43" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.1.43.tgz#c24bc146ca517c1471f5dacbe2571b2b7f9e3346" - integrity sha1-wkvBRspRfBRx9drL4lcbK3+eM0Y= - dependencies: - amdefine ">=0.0.4" - -source-map@^0.5.6, source-map@~0.5: - version "0.5.7" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" - integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= - -source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0, source-map@~0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" - integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== - -source-map@^0.7.3: - version "0.7.3" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383" - integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== - -string-hash@^1.1.1: - version "1.1.3" - resolved "https://registry.yarnpkg.com/string-hash/-/string-hash-1.1.3.tgz#e8aafc0ac1855b4666929ed7dd1275df5d6c811b" - integrity sha1-6Kr8CsGFW0Zmkp7X3RJ1311sgRs= - -strip-ansi@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" - integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8= - dependencies: - ansi-regex "^2.0.0" - -stylus-brunch@^3: - version "3.0.0" - resolved "https://registry.yarnpkg.com/stylus-brunch/-/stylus-brunch-3.0.0.tgz#4c31f5d1a56cdbf43899d8ce052ab78ada9aa17a" - integrity sha512-TG78EtdU8GDQuJBDDam+EUjwXkSNdB8r+CC5slWJNkq5mBnMjRgFu7pESyNpqDtqNfa6prcUcEAGQkLhUi9gVQ== - dependencies: - nib "~1.1.2" - postcss "~7.0.24" - postcss-modules "~1.4.1" - progeny "~0.12.0" - stylus "~0.54.7" - - version "0.54.5" - resolved "https://registry.yarnpkg.com/stylus/-/stylus-0.54.5.tgz#42b9560931ca7090ce8515a798ba9e6aa3d6dc79" - integrity sha1-QrlWCTHKcJDOhRWnmLqeaqPW3Hk= - dependencies: - css-parse "1.7.x" - debug "*" - glob "7.0.x" - mkdirp "0.5.x" - sax "0.5.x" - source-map "0.1.x" - -stylus@~0.54.7: - version "0.54.8" - resolved "https://registry.yarnpkg.com/stylus/-/stylus-0.54.8.tgz#3da3e65966bc567a7b044bfe0eece653e099d147" - integrity sha512-vr54Or4BZ7pJafo2mpf0ZcwA74rpuYCZbxrHBsH8kbcXOwSfvBFwsRfpGO5OD5fhG5HDCFW737PKaawI7OqEAg== - dependencies: - css-parse "~2.0.0" - debug "~3.1.0" - glob "^7.1.6" - mkdirp "~1.0.4" - safer-buffer "^2.1.2" - sax "~1.2.4" - semver "^6.3.0" - source-map "^0.7.3" - -supports-color@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" - integrity sha1-U10EXOa2Nj+kARcIRimZXp3zJMc= - -supports-color@^3.2.3: - version "3.2.3" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-3.2.3.tgz#65ac0504b3954171d8a64946b2ae3cbb8a5f54f6" - integrity sha1-ZawFBLOVQXHYpklGsq48u4pfVPY= - dependencies: - has-flag "^1.0.0" - -supports-color@^5.3.0, supports-color@^5.4.0: - version "5.5.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" - integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== - dependencies: - has-flag "^3.0.0" - -supports-color@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-6.1.0.tgz#0764abc69c63d5ac842dd4867e8d025e880df8f3" - integrity sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ== - dependencies: - has-flag "^3.0.0" - -tag-shell@~0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/tag-shell/-/tag-shell-0.1.0.tgz#e743816e6a6e805ac3735f4162e016b97a7ddfbd" - integrity sha1-50OBbmpugFrDc19BYuAWuXp9370= - -terser-brunch@^4: - version "4.0.0" - resolved "https://registry.yarnpkg.com/terser-brunch/-/terser-brunch-4.0.0.tgz#40633faff5958c00579a7e9478737f0e68034c61" - integrity sha512-bmT9+/7HHwmgCbfZ0IaX26em9d2SpyoxSiiO+xSHJU4EG0FLsk52M7bRcTF/xMaSPl9LXTVkqjgSEllFmcoUFg== - dependencies: - anymatch "^3" - terser "^4.4" - -terser@^4.4: - version "4.8.0" - resolved "https://registry.yarnpkg.com/terser/-/terser-4.8.0.tgz#63056343d7c70bb29f3af665865a46fe03a0df17" - integrity sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw== - dependencies: - commander "^2.20.0" - source-map "~0.6.1" - source-map-support "~0.5.12" - -to-regex-range@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" - integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== - dependencies: - is-number "^7.0.0" - -"true-case-path@^1.0.2": - version "1.0.3" - resolved "https://registry.yarnpkg.com/true-case-path/-/true-case-path-1.0.3.tgz#f813b5a8c86b40da59606722b144e3225799f47d" - integrity sha512-m6s2OdQe5wgpFMC+pAJ+q9djG82O2jcHPOI6RNg1yy9rCYR+WD6Nbpl32fDpfC56nirdRy+opFa/Vk7HYhqaew== - dependencies: - glob "^7.1.2" - - version "1.0.2" - resolved "https://registry.yarnpkg.com/ultron/-/ultron-1.0.2.tgz#ace116ab557cd197386a4e88f4685378c8b2e4fa" - integrity sha1-rOEWq1V80Zc4ak6I9GhTeMiy5Po= - -universal-path@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/universal-path/-/universal-path-0.1.0.tgz#0fca24c936ea3d2282013d143710c06687ed0677" - integrity sha1-D8okyTbqPSKCAT0UNxDAZoftBnc= - -urix@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" - integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI= - -wrappy@1, wrappy@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" - integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= - -ws@~1.1.0: - version "1.1.5" - resolved "https://registry.yarnpkg.com/ws/-/ws-1.1.5.tgz#cbd9e6e75e09fc5d2c90015f21f0c40875e0dd51" - integrity sha512-o3KqipXNUdS7wpQzBHSe180lBGO60SoK0yVo3CYJgb2MkobuWuBX6dhkYP5ORCLd55y+SaflMOV5fqAB53ux4w== - dependencies: - options ">=0.0.5" - ultron "1.0.x" - -xtend@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" - integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== |
