From bc73bedbc743867c0b3c091bb8ef1de738fb09e9 Mon Sep 17 00:00:00 2001 From: Jonir Rings Date: Tue, 25 Jul 2017 21:31:07 +0800 Subject: [PATCH 01/75] Code-index.html.js translation done Signed-off-by: Jonir Rings --- site/code/index.html.js | 112 ++++++++++++++++++++-------------------- 1 file changed, 56 insertions(+), 56 deletions(-) diff --git a/site/code/index.html.js b/site/code/index.html.js index 6d06ae7ded..7ae9b41dba 100644 --- a/site/code/index.html.js +++ b/site/code/index.html.js @@ -19,11 +19,11 @@ export default ({ page, site }) =>

Code

{` -Many different programming languages support GraphQL. This list contains some of the more popular server-side frameworks, client libraries, and other useful stuff. +GraphQL 已有多种编程语言支持。下表包含一些流行的服务端框架、客户端库和其他有用的内容。 -## Server Libraries +## 服务端库 -In addition to the GraphQL [reference implementations in JavaScript](#javascript), server libraries include: +除了 GraphQL [JavaScript 参考实现](#javascript),还有其他服务端库: - [C# / .NET](#c-net) - [Clojure](#clojure) @@ -39,14 +39,14 @@ In addition to the GraphQL [reference implementations in JavaScript](#javascript ### C# / .NET - - [graphql-dotnet](https://github.com/graphql-dotnet/graphql-dotnet): GraphQL for .NET - - [graphql-net](https://github.com/ckimes89/graphql-net): Convert GraphQL to IQueryable + - [graphql-dotnet](https://github.com/graphql-dotnet/graphql-dotnet):.NET 的 GraphQL 实现 + - [graphql-net](https://github.com/ckimes89/graphql-net):转换 GraphQL 到 IQueryable ### Clojure #### [alumbra](https://github.com/alumbra/alumbra) -A set of reusable GraphQL components for Clojure conforming to the data structures given in [alumbra.spec](https://github.com/alumbra/alumbra.spec). +一套 Clojure 的 GraphQL 可复用组件,满足 [alumbra.spec](https://github.com/alumbra/alumbra.spec) 规范要求的数据结构。 \`\`\`clojure (require '[alumbra.core :as alumbra] @@ -85,9 +85,9 @@ $ curl -XPOST "http://0.0.0.0:3000/" -H'Content-Type: application/json' -d'{ #### [graphql-clj](https://github.com/tendant/graphql-clj) -A Clojure library that provides a GraphQL implementation. +一个提供 GraphQL 实现的 Clojure 库。 -Code that executes a hello world GraphQL query with \`graphql-clj\`: +可以执行一个 \`hello world\` GraphQL 查询的 \`graphql-clj\` 代码如下: \`\`\`clojure @@ -105,30 +105,30 @@ Code that executes a hello world GraphQL query with \`graphql-clj\`: (executor/execute nil schema resolver-fn "{ hello }") \`\`\` - - [lacinia](https://github.com/walmartlabs/lacinia): A full implementation of the GraphQL specification that aims to maintain external compliance with the specification. + - [lacinia](https://github.com/walmartlabs/lacinia):一套 GraphQL 规范的完整实现,致力于维护对规范的外部兼容。 ### Elixir - - [absinthe](https://github.com/absinthe-graphql/absinthe): GraphQL implementation for Elixir. - - [graphql-elixir](https://github.com/graphql-elixir/graphql): An Elixir implementation of Facebook's GraphQL. + - [absinthe](https://github.com/absinthe-graphql/absinthe):Elixir 的 GraphQL 实现。 + - [graphql-elixir](https://github.com/graphql-elixir/graphql): 一个 Facebook GraphQL 的 Elixir 实现。 ### Erlang - - [graphql-erlang](https://github.com/shopgun/graphql-erlang): GraphQL implementation in Erlang. + - [graphql-erlang](https://github.com/shopgun/graphql-erlang):Erlang 的 GraphQL 实现。 ### Go - - [graphql-go](https://github.com/graphql-go/graphql): An implementation of GraphQL for Go / Golang. - - [graphql-relay-go](https://github.com/graphql-go/relay): A Go/Golang library to help construct a graphql-go server supporting react-relay. - - [neelance/graphql-go](https://github.com/neelance/graphql-go): An active implementation of GraphQL in Golang. + - [graphql-go](https://github.com/graphql-go/graphql): 一个 Go/Golang 的 GraphQL 实现。 + - [graphql-relay-go](https://github.com/graphql-go/relay): 一个用于帮助构建 graphql-go 服务器的 Go/Golang 库,支持 react-relay 。 + - [neelance/graphql-go](https://github.com/neelance/graphql-go):一个活跃的 Golang GraphQL 实现。 ### Java #### [graphql-java](https://github.com/graphql-java/graphql-java) -A Java library for building GraphQL APIs. +一个用于构建 GraphQL API 的 Java 库。 -Code that executes a hello world GraphQL query with \`graphql-java\`: +可以执行一个 \`hello world\` GraphQL 查询的 \`graphql-java\` 代码如下: \`\`\`java import graphql.ExecutionResult; @@ -166,21 +166,21 @@ public class HelloWorld { } \`\`\` -See [the graphql-java docs](https://github.com/graphql-java/graphql-java) for more information on setup. +查看 [graphql-java 文档](https://github.com/graphql-java/graphql-java) 以了解更多信息。 ### JavaScript #### [GraphQL.js](/graphql-js/) ([github](https://github.com/graphql/graphql-js/)) ([npm](https://www.npmjs.com/package/graphql)) -The reference implementation of the GraphQL specification, designed for running GraphQL in a Node.js environment. +GraphQL 规范的参考实现,设计用于在 Node.js 环境中运行。 -To run a \`GraphQL.js\` hello world script from the command line: +如果要在命令行中运行一个 \`GraphQL.js\` 的 \`hello world\` 脚本: \`\`\`bash npm install graphql \`\`\` -Then run \`node hello.js\` with this code in \`hello.js\`: +然后使用 \`node hello.js\` 以运行 \`hello.js\` 中的代码: \`\`\`js var { graphql, buildSchema } = require('graphql'); @@ -200,15 +200,15 @@ graphql(schema, '{ hello }', root).then((response) => { #### [express-graphql](/graphql-js/running-an-express-graphql-server/) ([github](https://github.com/graphql/express-graphql)) ([npm](https://www.npmjs.com/package/express-graphql)) -The reference implementation of a GraphQL API server over an Express webserver. You can use this to run GraphQL in conjunction with a regular Express webserver, or as a standalone GraphQL server. +基于 Express webserver 服务器的一个 GraphQL API 服务端参考实现,你可以用它结合常规 Express webserver 来运行 GraphQL,也可以作为独立 GraphQL 服务器。 -To run an \`express-graphql\` hello world server: +如果要运行 \`express-graphql\` 的 hello world 服务器: \`\`\`bash npm install express express-graphql graphql \`\`\` -Then run \`node server.js\` with this code in \`server.js\`: +然后使用 \`node server.js\` 以运行 \`server.js\` 中的代码: \`\`\`js var express = require('express'); @@ -234,15 +234,15 @@ app.listen(4000, () => console.log('Now browse to localhost:4000/graphql')); #### [graphql-server](http://dev.apollodata.com/tools/graphql-server/index.html) ([github](https://github.com/apollostack/graphql-server)) ([npm](https://www.npmjs.com/package/graphql-server-express)) -A set of GraphQL server packages from Apollo that work with various Node.js HTTP frameworks (Express, Connect, Hapi, Koa etc). +来自于 Apollo 的一套 GraphQL server 包,可用于多种 Node.js HTTP 框架(Express,Connect,Hapi,Koa 等)。 -To run a hello world server with graphql-server-express: +如果要运行 \`graphql-server-express\` 的 hello world 服务器: \`\`\`bash npm install graphql-server-express body-parser express graphql graphql-tools \`\`\` -Then run \`node server.js\` with this code in \`server.js\`: +然后使用 \`node server.js\` 以运行 \`server.js\` 中的代码: \`\`\`js var express = require('express'); @@ -274,26 +274,26 @@ app.use('/graphiql', graphiqlExpress({endpointURL: '/graphql'})); app.listen(4000, () => console.log('Now browse to localhost:4000/graphiql')); \`\`\` -GraphQL Server also supports all Node.js HTTP server frameworks: Express, Connect, HAPI and Koa. +GraphQL Server 也支持所有的 Node.js HTTP 服务器框架:Express,Connect,HAPI 和 Koa。 ### PHP - - [graphql-php](https://github.com/webonyx/graphql-php): A PHP port of GraphQL reference implementation - - [graphql-relay-php](https://github.com/ivome/graphql-relay-php): A library to help construct a graphql-php server supporting react-relay. + - [graphql-php](https://github.com/webonyx/graphql-php):GraphQL 参考实现的 PHP 移植版本。 + - [graphql-relay-php](https://github.com/ivome/graphql-relay-php):一个用于辅助构建 graphql-php 服务器的库,支持 react-relay。 ### Python #### [Graphene](http://graphene-python.org/) ([github](https://github.com/graphql-python/graphene)) -A Python library for building GraphQL APIs. +一个用于构建 GraphQL API 的 Python 库。 -To run a Graphene hello world script: +如果要运行一个 Graphene hello world 脚本: \`\`\`bash pip install graphene \`\`\` -Then run \`python hello.py\` with this code in \`hello.py\`: +然后使用 \`python hello.py\` 以运行 \`hello.py\` 中的代码: \`\`\`python import graphene @@ -309,21 +309,21 @@ result = schema.execute('{ hello }') print(result.data['hello']) \`\`\` -There are also nice bindings for [Relay](https://facebook.github.io/relay/), Django, SQLAlchemy, and Google App Engine. +其也有对 [Relay](https://facebook.github.io/relay/)、Django、SQLAlchemy 和 Google App Engine 的良好绑定。 ### Ruby #### [graphql-ruby](https://github.com/rmosolgo/graphql-ruby) -A Ruby library for building GraphQL APIs. +一个用于构建 GraphQL API 的 Ruby 库。 -To run a hello world script with \`graphql-ruby\`: +如果要使用 \`graphql-ruby\` 运行一个 hello world 脚本: \`\`\`bash gem install graphql \`\`\` -Then run \`ruby hello.rb\` with this code in \`hello.rb\`: +然后使用 \`ruby hello.rb\` 运行 \`hello.rb\` 中的代码: \`\`\`ruby require 'graphql' @@ -343,13 +343,13 @@ end puts Schema.execute('{ hello }') \`\`\` -There are also nice bindings for Relay and Rails. +其也有对于 Relay 和 Rails 的良好绑定。 ### Scala -#### [Sangria](http://sangria-graphql.org/) ([github](https://github.com/sangria-graphql/sangria)): A Scala GraphQL library that supports [Relay](https://facebook.github.io/relay/). +#### [Sangria](http://sangria-graphql.org/) ([github](https://github.com/sangria-graphql/sangria)):支持 [Relay](https://facebook.github.io/relay/) 的一个 Scala GraphQL 库。 -An example of a hello world GraphQL schema and query with \`sangria\`: +使用的 \`sangria\` 的一个 GraphQL schema 以及 hello world 查询: \`\`\`scala import sangria.schema._ @@ -367,7 +367,7 @@ val query = graphql"{ hello }" Executor.execute(schema, query) map println \`\`\` -## GraphQL Clients +## GraphQL 客户端 - [C# / .NET](#c-net-1) - [Go](#go-1) @@ -377,37 +377,37 @@ Executor.execute(schema, query) map println ### C# / .NET - - [graphql-net-client](https://github.com/bkniffler/graphql-net-client): Basic example GraphQL client for .NET. + - [graphql-net-client](https://github.com/bkniffler/graphql-net-client):基于 .Net 的 GraphQL 客户端基本样例。 ### Go - - [graphql](https://github.com/shurcooL/graphql#readme): A GraphQL client implementation in Go. + - [graphql](https://github.com/shurcooL/graphql#readme): 一个使用 Go 编写的 GraphQL 客户端实现。 ### Java / Android - - [Apollo Android](https://github.com/apollographql/apollo-android): A strongly-typed, caching GraphQL client for Android, written in Java. + - [Apollo Android](https://github.com/apollographql/apollo-android):一个用于 Android 的 GraphQL 客户端,强类型、带缓存功能,使用 Java 编写。 ### JavaScript - - [Relay](https://facebook.github.io/relay/) ([github](https://github.com/facebook/relay)) ([npm](https://www.npmjs.com/package/react-relay)): Facebook's framework for building React applications that talk to a GraphQL backend. - - [Apollo Client](http://dev.apollodata.com/react/) ([github](https://github.com/apollostack/apollo-client)): A powerful JavaScript GraphQL client, designed to work well with React, React Native, Angular 2, or just plain JavaScript. - - [graphql-request](https://github.com/graphcool/graphql-request): A simple and flexible JavaScript GraphQL client that works in all JavaScript environments (the browser, Node.js, and React Native) - basically a lightweight wrapper around \`fetch\`. - - [Lokka](https://github.com/kadirahq/lokka): A simple JavaScript GraphQL client that works in all JavaScript environments (the browser, Node.js, and React Native). + - [Relay](https://facebook.github.io/relay/) ([github](https://github.com/facebook/relay)) ([npm](https://www.npmjs.com/package/react-relay)):Facebook 的框架,用于构建与 GraphQL 后端交流的 React 应用。 + - [Apollo Client](http://dev.apollodata.com/react/) ([github](https://github.com/apollostack/apollo-client)):一个强大的 JavaScript GraphQL 客户端,设计用于与 React,React Native,Angular 2 或者原生 JavaScript 一同工作。 + - [graphql-request](https://github.com/graphcool/graphql-request):个简单的弹性的 JavaScript GraphQL 客户端,可以运行于所有的 JavaScript 环境(浏览器,Node.js 和 React Native)—— 基本上是 \`fetch\` 的轻度封装。 + - [Lokka](https://github.com/kadirahq/lokka):一个简单的 JavaScript GraphQL 客户端,可以运行于所有的 JavaScript 环境 —— 浏览器,Node.js 和 React Native。 ### Swift / Objective-C iOS - - [Apollo iOS](http://dev.apollodata.com/ios/) ([github](https://github.com/apollostack/apollo-ios)): A GraphQL client for iOS that returns results as query-specific Swift types, and integrates with Xcode to show your Swift source and GraphQL side by side, with inline validation errors. - - [GraphQL iOS](https://github.com/funcompany/graphql-ios): An Objective-C GraphQL client for iOS. + - [Apollo iOS](http://dev.apollodata.com/ios/) ([github](https://github.com/apollostack/apollo-ios)):一个用于 iOS 的 GraphQL 客户端,返回查询特定的 Swift 类型,与 Xcode 集成后可以分屏显示你的 Swift 源代码和 GraphQL,并能在行内展示验证错误。 + - [GraphQL iOS](https://github.com/funcompany/graphql-ios): 一个用于 iOS 的 Objective-C GraphQL 客户端。 -## Tools +## 工具 - - [graphiql](https://github.com/graphql/graphiql) ([npm](https://www.npmjs.com/package/graphiql)): An interactive in-browser GraphQL IDE. - - [libgraphqlparser](https://github.com/graphql/libgraphqlparser): A GraphQL query language parser in C++ with C and C++ APIs. - - [Graphql Language Service](https://github.com/graphql/graphql-language-service): An interface for building GraphQL language services for IDEs (diagnostics, autocomplete etc). + - [graphiql](https://github.com/graphql/graphiql) ([npm](https://www.npmjs.com/package/graphiql)):一个交互式的运行于浏览器中的 GraphQL IDE. + - [libgraphqlparser](https://github.com/graphql/libgraphqlparser):一个 C++ 版 GraphQL 查询语言分析器,提供 C 和 C++ API。 + - [Graphql Language Service](https://github.com/graphql/graphql-language-service):一个用于构建 IDE 的 GraphQL 语言服务(诊断,自动完成等)的接口。 -## More Stuff +## 更多内容 - - [awesome-graphql](https://github.com/chentsulin/awesome-graphql): A fantastic community maintained collection of libraries, resources, and more. + - [awesome-graphql](https://github.com/chentsulin/awesome-graphql):一个神奇的社区,维护一系列库、资源等。 `} From 9c3f650ebaaace47435d0ae606b6d65135bdb01a Mon Sep 17 00:00:00 2001 From: Jonir Rings Date: Tue, 25 Jul 2017 21:32:36 +0800 Subject: [PATCH 02/75] Users-index.html.js translation done Signed-off-by: Jonir Rings --- site/users/index.html.js | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/site/users/index.html.js b/site/users/index.html.js index 01c123bf32..c20219f27a 100644 --- a/site/users/index.html.js +++ b/site/users/index.html.js @@ -546,13 +546,13 @@ module.exports = ({ page }) =>
-

Who’s using GraphQL?

+

谁在使用 GraphQL?

- GraphQL is used by teams of all sizes in many different environments and languages to power mobile apps, websites, and APIs. + GraphQL 已经被各种体量的团队所使用,在不同的环境、不同的语言下,用于增强移动应用、网站和 API。

- Is your company using GraphQL?
- Edit this page with a Pull Request to add your logo. + 你的公司也在使用 GraphQL 吗?
+ 编辑这个页面然后发出一个 Pull Request 来加上你的 logo 吧。

@@ -567,4 +567,4 @@ module.exports = ({ page }) =>
- + ; From e9d1c3d77b73ebe6747bf4733f1d7428ce9ae7cd Mon Sep 17 00:00:00 2001 From: Jonir Rings Date: Tue, 25 Jul 2017 21:48:39 +0800 Subject: [PATCH 03/75] index.html.js translation done Signed-off-by: Jonir Rings --- site/index.html.js | 98 ++++++++++++++-------------------------------- 1 file changed, 30 insertions(+), 68 deletions(-) diff --git a/site/index.html.js b/site/index.html.js index 5b08ed5a3e..089e932444 100644 --- a/site/index.html.js +++ b/site/index.html.js @@ -25,7 +25,7 @@ module.exports = ({ page, section }) =>
-

Describe your data

+

描述你的数据

{`type Project { name: String @@ -36,7 +36,7 @@ module.exports = ({ page, section }) =>
-

Ask for what you want

+

请求你所要的数据

{`{ project(name: "GraphQL") { @@ -47,7 +47,7 @@ module.exports = ({ page, section }) =>
-

Get predictable results

+

得到可预测的结果

{`{ "project": { @@ -60,10 +60,10 @@ module.exports = ({ page, section }) => @@ -71,25 +71,15 @@ module.exports = ({ page, section }) =>
-

A query language for your API

-

- GraphQL is a query language for APIs and a runtime for fulfilling - those queries with your existing data. GraphQL provides a complete - and understandable description of the data in your API, gives - clients the power to ask for exactly what they need and nothing - more, makes it easier to evolve APIs over time, and enables powerful - developer tools.

+

一种用于 API 的查询语言

+

GraphQL 既是一种用于 API 的查询语言也是一个满足你数据查询的运行时。 GraphQL 对你的 API 中的数据提供了一套易于理解的完整描述,使得客户端能够准确地获得它需要的数据,而且没有任何冗余,也让 API 更容易地随着时间推移而演进,还能用于构建强大的开发者工具。

-

Ask for what you need,
get exactly that

+

请求你所要的数据
不多不少

{/*[Illustration: just a simple query and response?]*/} -

- Send a GraphQL query to your API and get exactly what you need, - nothing more and nothing less. GraphQL queries always return - predictable results. Apps using GraphQL are fast and stable because - they control the data they get, not the server.

+

向你的 API 发出一个 GraphQL 请求就能准确获得你想要的数据,不多不少。 GraphQL 查询总是返回可预测的结果。使用 GraphQL 的应用可以工作得又快又稳,因为控制数据的是应用,而不是服务器。

@@ -179,15 +169,9 @@ module.exports = ({ page, section }) =>
-

Get many resources
in a single request

+

获取多个资源
只用一个请求

{/*Illustration: a query 2 or 3 levels deep]*/} -

- GraphQL queries access not just the properties of one resource - but also smoothly follow references between them. While typical - REST APIs require loading from multiple URLs, GraphQL APIs get - all the data your app needs in a single request. Apps using - GraphQL can be quick even on slow mobile - network connections.

+

GraphQL 查询不仅能够获得资源的属性,还能沿着资源间引用进一步查询。典型的 REST API 请求多个资源时得载入多个 URL,而 GraphQL 可以通过一次请求就获取你应用所需的所有数据。这样一来,即使是比较慢的移动网络连接下,使用 GraphQL 的应用也能表现得足够迅速。

@@ -225,15 +209,10 @@ module.exports = ({ page, section }) =>
-

Describe what’s possible
with a type system

+

描述所有的可能
类型系统

{/*Illustration of a type IDL following a query by line]*/} {/*Under: a server <-> client (Capabilities, Requirements)]?*/} -

- GraphQL APIs are organized in terms of types and fields, - not endpoints. Access the full capabilities of your data from a - single endpoint. GraphQL uses types to ensure Apps only ask for - what’s possible and provide clear and helpful errors. Apps can - use types to avoid writing manual parsing code.

+

GraphQL API 基于类型和字段的方式进行组织,而非入口端点。你可以通过一个单一入口端点得到你所有的数据能力。GraphQL 使用类型来保证应用只请求可能的数据,还提供了清晰的辅助性错误信息。应用可以使用类型,而避免编写手动解析代码。

@@ -306,14 +285,11 @@ type Species {
-

Move faster with
powerful developer tools

+

快步前进
强大的开发者工具

{/*Illustration of GraphiQL validation error and typeahead, animated?]*/} -

- Know exactly what data you can request from your API without - leaving your editor, highlight potential issues before sending a - query, and take advantage of improved code intelligence. GraphQL - makes it easy to build powerful tools like GraphiQL by - leveraging your API’s type system.

+

不用离开编辑器就能准确知道你可以从 API 中请求的数据,发送查询之前就能高亮潜在问题,高级代码智能提示。利用 API 的类型系统,GraphQL 让你可以更简单地构建如同 + GraphiQL + 的强大工具。

@@ -326,14 +302,9 @@ type Species {
-

Evolve your API
without versions

+

API 演进
无需划分版本

{/*Illustration showing more legs added to a graph? Or a type evolving over time?]*/} -

- Add new fields and types to your GraphQL API without impacting - existing queries. Aging fields can be deprecated - and hidden from tools. By using a single evolving version, - GraphQL APIs give apps continuous access to new features and - encourage cleaner, more maintainable server code.

+

给你的 GraphQL API 添加字段和类型而无需影响现有查询。老旧的字段可以废弃,从工具中隐藏。通过使用单一演进版本,GraphQL API 使得应用始终能够使用新的特性,并鼓励使用更加简洁、更好维护的服务端代码。

@@ -435,15 +406,9 @@ type Person {
-

Bring your own
data and code

+

使用你现有的
数据和代码

{/*Illustration of each field becoming a function?]*/} -

- GraphQL creates a uniform API across your entire application - without being limited by a specific storage engine. Write GraphQL - APIs that leverage your existing data and code with GraphQL - engines available in many languages. You provide functions for - each field in the type system, and GraphQL calls them with - optimal concurrency.

+

GraphQL 让你的整个应用共享一套 API,而不用被限制于特定存储引擎。GraphQL 引擎已经有多种语言实现,通过 GraphQL API 能够更好利用你的现有数据和代码。你只需要为类型系统的字段编写函数,GraphQL 就能通过优化并发的方式来调用它们。

@@ -455,7 +420,7 @@ type Person { }`} - {`// type Character { + {`// type Character class Character { // name: String getName() { @@ -474,7 +439,7 @@ class Character { }`} - {`# type Character { + {`# type Character class Character: # name: String def name(self): @@ -490,7 +455,7 @@ class Character: `} - {`// type Character { + {`// type Character public class Character { // name: String public String Name { get; } @@ -523,18 +488,15 @@ public class Character {
-

Who’s using GraphQL?

-

- Facebook's mobile apps have been powered by GraphQL since 2012. - A GraphQL spec was open sourced in 2015 and is now available in - many environments and used by teams of all sizes.

+

谁在使用 GraphQL?

+

Facebook 的移动应用从 2012 年就开始使用 GraphQL。GraphQL 规范于 2015 年开源,现已经在多种环境下可用,并被各种体量的团队所使用。

{/* Waiting for permission from some of the below */} - {/** /} + {/**/} @@ -545,7 +507,7 @@ public class Character { - {/** /} + {/**/} @@ -562,9 +524,9 @@ public class Character {
- More GraphQL Users + 更多 GraphQL 使用者
- + ; From 3bbcb4a5a4c0e0bbe96f1b8a5b990cc552164760 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=A0=B9=E5=8F=B7=E4=B8=89?= Date: Wed, 26 Jul 2017 14:48:34 +0800 Subject: [PATCH 04/75] =?UTF-8?q?=E8=B0=83=E6=95=B4=E9=83=A8=E5=88=86?= =?UTF-8?q?=E6=A0=87=E7=82=B9=E7=AC=A6=E5=8F=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- site/code/index.html.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/site/code/index.html.js b/site/code/index.html.js index 7ae9b41dba..adeba2303a 100644 --- a/site/code/index.html.js +++ b/site/code/index.html.js @@ -274,7 +274,7 @@ app.use('/graphiql', graphiqlExpress({endpointURL: '/graphql'})); app.listen(4000, () => console.log('Now browse to localhost:4000/graphiql')); \`\`\` -GraphQL Server 也支持所有的 Node.js HTTP 服务器框架:Express,Connect,HAPI 和 Koa。 +GraphQL Server 也支持所有的 Node.js HTTP 服务器框架:Express、Connect、HAPI 和 Koa。 ### PHP @@ -390,7 +390,7 @@ Executor.execute(schema, query) map println ### JavaScript - [Relay](https://facebook.github.io/relay/) ([github](https://github.com/facebook/relay)) ([npm](https://www.npmjs.com/package/react-relay)):Facebook 的框架,用于构建与 GraphQL 后端交流的 React 应用。 - - [Apollo Client](http://dev.apollodata.com/react/) ([github](https://github.com/apollostack/apollo-client)):一个强大的 JavaScript GraphQL 客户端,设计用于与 React,React Native,Angular 2 或者原生 JavaScript 一同工作。 + - [Apollo Client](http://dev.apollodata.com/react/) ([github](https://github.com/apollostack/apollo-client)):一个强大的 JavaScript GraphQL 客户端,设计用于与 React、React Native、Angular 2 或者原生 JavaScript 一同工作。 - [graphql-request](https://github.com/graphcool/graphql-request):个简单的弹性的 JavaScript GraphQL 客户端,可以运行于所有的 JavaScript 环境(浏览器,Node.js 和 React Native)—— 基本上是 \`fetch\` 的轻度封装。 - [Lokka](https://github.com/kadirahq/lokka):一个简单的 JavaScript GraphQL 客户端,可以运行于所有的 JavaScript 环境 —— 浏览器,Node.js 和 React Native。 @@ -403,7 +403,7 @@ Executor.execute(schema, query) map println - [graphiql](https://github.com/graphql/graphiql) ([npm](https://www.npmjs.com/package/graphiql)):一个交互式的运行于浏览器中的 GraphQL IDE. - [libgraphqlparser](https://github.com/graphql/libgraphqlparser):一个 C++ 版 GraphQL 查询语言分析器,提供 C 和 C++ API。 - - [Graphql Language Service](https://github.com/graphql/graphql-language-service):一个用于构建 IDE 的 GraphQL 语言服务(诊断,自动完成等)的接口。 + - [Graphql Language Service](https://github.com/graphql/graphql-language-service):一个用于构建 IDE 的 GraphQL 语言服务(诊断、自动完成等)的接口。 ## 更多内容 From f9af49e1f59fd077f315a86a982167ed5bfb302e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=A0=B9=E5=8F=B7=E4=B8=89?= Date: Wed, 26 Jul 2017 17:18:20 +0800 Subject: [PATCH 05/75] Modify automatic deployment script (#47) --- .travis.yml | 6 +----- resources/publish.sh | 2 +- site/CNAME | 2 +- 3 files changed, 3 insertions(+), 7 deletions(-) diff --git a/.travis.yml b/.travis.yml index de27033073..0529840303 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,13 +1,9 @@ language: node_js node_js: 6 -env: - global: - - secure: "HisahnzlpVlTi239Z80UtqRWYEWUBXyVDYsxX9vxwg332jSxO7Hr6TFmNjghpJPtT/HRjQ/FQ4Cfain2ae2OBi0a1mBNNvOTrfy8/Rvs+FwxlmPolzXKZg1PLx1A9HMlhVkAxYuk5AKv5wLNN3xWzPS9xcHASiCgHE1imq9tuf53tuflNpoAlRT6WVYqxuLluDTbfiTrmjjydfh/iTkYyU7mdfowEyS7+b7ltx8tzGD5Fif1dKBVZEkImxC5KV3oczk5zxIBC/j0SEmd4KLl5NH/kbUcD/mFSgtoKRSW0QwJdwR0I3AurP/D8FlTzVyCwwxMrZfnWjoync1bMJvRbz02KkiICt2lfI0BFo1dDD1yO8lYOhSHcXZRhhEypLu9mho2Cy0zy5zF5PF5t2X8zfGgkQ5eTy6xYCHOAl4eqO9NU2mtpKLdYpXfkBLRTa2e5U+DBqYt8fVXyBR2qVCbpIkg96Hx/FCCKtNlzjyhyTJmyoZr7BxPpHQZkmroieEMfpM7VfF729npf0n6jrfBLwyWFjCFAG9xLey537sUdczEltdWgOuW1rs0KaP4uM1si3S+fNndXLDX70n8BsadnJgq0y1RWAH1y8Y+Pa5cRl0QXQOJUgK4ZcS29+BzZ6RIsFUrAJXHCRdaTDrQNw8CepW443Ke9quwG8IJLCAPV0c=" - deploy: skip_cleanup: true provider: script script: ./resources/publish.sh on: - branch: source + branch: zh-Hans diff --git a/resources/publish.sh b/resources/publish.sh index 6abc355582..e6f6b1103a 100755 --- a/resources/publish.sh +++ b/resources/publish.sh @@ -23,4 +23,4 @@ git config user.name "Travis CI" git config user.email "travis@travis-ci.org" git add . git commit -a -m "Auto-deploy by Travis CI" -git push --force --quiet "https://$%7BGH_TOKEN%7D@github.com/graphql/graphql.github.io.git" master:master +git push --force --quiet "https://$%7BGH_TOKEN%7D@github.com/xitu/graphql.github.io.git" master:master diff --git a/site/CNAME b/site/CNAME index 21cf1b8cd9..1ac261f54c 100644 --- a/site/CNAME +++ b/site/CNAME @@ -1 +1 @@ -graphql.org +graphql.cn From c35e3968b7d4a46b35e9d7022ed65b41ad83dd99 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=AB=98=E8=8B=B1=E5=81=A5?= Date: Thu, 27 Jul 2017 00:01:11 -0500 Subject: [PATCH 06/75] Common Files (#46) --- site/_core/DocsLayout.js | 2 +- site/_core/GraphQLJSLayout.js | 2 +- site/_core/HeaderLinks.js | 10 ++++---- site/_core/Redirect.js | 4 ++-- site/_core/Search.js | 2 +- site/_core/Site.js | 44 +++++++++++++++++------------------ site/_core/SiteData.js | 2 +- 7 files changed, 33 insertions(+), 33 deletions(-) diff --git a/site/_core/DocsLayout.js b/site/_core/DocsLayout.js index 5f48eeb30a..0e9e86d0de 100644 --- a/site/_core/DocsLayout.js +++ b/site/_core/DocsLayout.js @@ -21,7 +21,7 @@ export default ({ page, site }) => {page.content} {page.next && - Continue Reading → + 继续阅读 → {page.nextPage.title} }
diff --git a/site/_core/GraphQLJSLayout.js b/site/_core/GraphQLJSLayout.js index 59c787b681..ed4cfcc914 100644 --- a/site/_core/GraphQLJSLayout.js +++ b/site/_core/GraphQLJSLayout.js @@ -21,7 +21,7 @@ export default ({ page, site }) => {page.content} {page.next && - Continue Reading → + 继续阅读 → {page.nextPage.title} }
diff --git a/site/_core/HeaderLinks.js b/site/_core/HeaderLinks.js index f4fd2412d4..d94a853337 100644 --- a/site/_core/HeaderLinks.js +++ b/site/_core/HeaderLinks.js @@ -9,11 +9,11 @@ var React = require('react'); const links = [ - { section: 'learn', text: 'Learn', href: '/learn/' }, - { section: 'code', text: 'Code', href: '/code/' }, - { section: 'community', text: 'Community', href: '/community/' }, - { section: 'blog', text: 'Blog', href: '/blog/' }, - { section: 'spec', text: 'Spec', href: 'http://facebook.github.io/graphql/' }, + { section: 'learn', text: '学习', href: '/learn/' }, + { section: 'code', text: '代码', href: '/code/' }, + { section: 'community', text: '社区', href: '/community/' }, + { section: 'blog', text: '博客', href: '/blog/' }, + { section: 'spec', text: '规范', href: 'http://facebook.github.io/graphql/' }, ]; export default ({ section }) => diff --git a/site/_core/Redirect.js b/site/_core/Redirect.js index dfd4a3344f..b6c0304886 100644 --- a/site/_core/Redirect.js +++ b/site/_core/Redirect.js @@ -16,9 +16,9 @@ export default ({ to }) => + + Facebook Inc. The contents of this page are licensed BSD-3-Clause.
diff --git a/site/code/index.html.js b/site/code/index.html.js index adeba2303a..b240ead58a 100644 --- a/site/code/index.html.js +++ b/site/code/index.html.js @@ -19,7 +19,7 @@ export default ({ page, site }) =>

Code

{` -GraphQL 已有多种编程语言支持。下表包含一些流行的服务端框架、客户端库和其他有用的内容。 +GraphQL 已有多种编程语言支持。下表包含一些流行的服务端框架、客户端库、服务和其他有用的内容。 ## 服务端库 @@ -30,6 +30,7 @@ GraphQL 已有多种编程语言支持。下表包含一些流行的服务端框 - [Elixir](#elixir) - [Erlang](#erlang) - [Go](#go) +- [Groovy](#groovy) - [Java](#java) - [JavaScript](#javascript) - [PHP](#php) @@ -122,6 +123,26 @@ $ curl -XPOST "http://0.0.0.0:3000/" -H'Content-Type: application/json' -d'{ - [graphql-relay-go](https://github.com/graphql-go/relay): 一个用于帮助构建 graphql-go 服务器的 Go/Golang 库,支持 react-relay 。 - [neelance/graphql-go](https://github.com/neelance/graphql-go):一个活跃的 Golang GraphQL 实现。 +### Groovy + +#### [gorm-graphql](https://github.com/grails/gorm-graphql/) + +**核心库** —— GORM GraphQL 库提供了基于你的 GORM 实体来生成 GraphQL schema 的功能。除了能够将域类映射到 GraphQL schema 之外,核心库还提供了通过 schema 的执行来查询、更新和删除数据的“数据访问者”的默认实现。 + +**Grails 插件** —— 作为对核心库的补充,GORM GraphQL Grails 插件能够: + +- 提供一个通过 HTTP 来接收和响应 GraphQL 请求的控制器。 +- 在启动时使用 spring bean 配置生成 schema,以便于扩展。 +- 包含一个在开发环境下默认启用的 [GraphiQL](https://github.com/graphql/graphiql) 浏览器。这一浏览器可以在 /graphql/browser 下访问。 +- 使用 Grails 提供的数据绑定覆盖默认的数据绑定 +- 提供一个 [特质](https://grails.github.io/gorm-graphql/latest/api/org/grails/gorm/graphql/plugin/testing/GraphQLSpec.html) 以使您更容易对 GraphQL 入口端点进行集成测试 + +更多信息请查看 [文档](https://grails.github.io/gorm-graphql/latest/guide/index.html)。 + +#### [GQL](https://grooviter.github.io/gql/) + +GQL 是一个在 Groovy 中使用 GraphQL 的库。 + ### Java #### [graphql-java](https://github.com/graphql-java/graphql-java) @@ -391,8 +412,9 @@ Executor.execute(schema, query) map println - [Relay](https://facebook.github.io/relay/) ([github](https://github.com/facebook/relay)) ([npm](https://www.npmjs.com/package/react-relay)):Facebook 的框架,用于构建与 GraphQL 后端交流的 React 应用。 - [Apollo Client](http://dev.apollodata.com/react/) ([github](https://github.com/apollostack/apollo-client)):一个强大的 JavaScript GraphQL 客户端,设计用于与 React、React Native、Angular 2 或者原生 JavaScript 一同工作。 - - [graphql-request](https://github.com/graphcool/graphql-request):个简单的弹性的 JavaScript GraphQL 客户端,可以运行于所有的 JavaScript 环境(浏览器,Node.js 和 React Native)—— 基本上是 \`fetch\` 的轻度封装。 + - [graphql-request](https://github.com/graphcool/graphql-request):一个简单的弹性的 JavaScript GraphQL 客户端,可以运行于所有的 JavaScript 环境(浏览器,Node.js 和 React Native)—— 基本上是 \`fetch\` 的轻度封装。 - [Lokka](https://github.com/kadirahq/lokka):一个简单的 JavaScript GraphQL 客户端,可以运行于所有的 JavaScript 环境 —— 浏览器,Node.js 和 React Native。 + - [nanogql](https://github.com/yoshuawuyts/nanogql):一个使用模板字符串的小型 GraphQL 客户端库。 ### Swift / Objective-C iOS @@ -405,6 +427,14 @@ Executor.execute(schema, query) map println - [libgraphqlparser](https://github.com/graphql/libgraphqlparser):一个 C++ 版 GraphQL 查询语言分析器,提供 C 和 C++ API。 - [Graphql Language Service](https://github.com/graphql/graphql-language-service):一个用于构建 IDE 的 GraphQL 语言服务(诊断、自动完成等)的接口。 +## 服务 + + - [Apollo Optics](http://www.apollodata.com/optics/):一个用于监视 GraphQL 后端的性能和使用的服务。 + - [GraphCMS](https://graphcms.com/):一个 BaaS(后端即服务),它为您配置了一个作为内容编辑工具来处理存储数据的 GraphQL 后端。 + - [Graphcool](https://www.graph.cool) ([github](https://github.com/graphcool)):一个BaaS(后端即服务),它为您的应用程序提供了一个 GraphQL 后端,且具有用于管理数据库和存储数据的强大的 web ui。 + - [Reindex](https://www.reindex.io/baas/) ([github](https://github.com/reindexio/reindex-js)):一个BaaS(后端即服务),它针对使用 React 和 Relay 的应用程序配置了 GraphQL 后端。 + - [Scaphold](https://scaphold.io) ([github](https://github.com/scaphold-io)):一个BaaS(后端即服务),为您的应用程序配置了一个拥有多种不同集成的 GraphQL 后端。 + ## 更多内容 - [awesome-graphql](https://github.com/chentsulin/awesome-graphql):一个神奇的社区,维护一系列库、资源等。 diff --git a/site/community/Community-Events.md b/site/community/Community-Events.md index 3b7acd2fb3..7091c480aa 100644 --- a/site/community/Community-Events.md +++ b/site/community/Community-Events.md @@ -8,6 +8,33 @@ sublinks: 即将举行的活动,聚会 ## 即将举行的活动 +### GraphQL 在生产环境中:KLM & Bynder 的案例 + +- **日期:** 2017 年 10 月 10 日 +- **地点:** 荷兰 阿姆斯特丹 +- **链接:** https://www.meetup.com/Bynder-JS-Guild/events/242414878/ + +我们很高兴分享在 KLM 和 Bynder 的数千人每天使用的基于 GraphQL 的应用程序的经验。除了基础之外我们将讨论:持久性查询(查询白名单并减少带宽使用);Optimistic UI(使界面响应更快);将 React 组件连接到带有包装器的 GraphQL(对默认 Apollo 前端实现的改进)... 最后锦上添花的是:GraphQL订阅。 + +### GraphQL Summit 2017 + +- **日期:** 2017 年 10 月 25-26 日 +- **地点:** 美国 加利福尼亚州 旧金山 +- **链接:** http://summit.graphql.com + +GraphQL Summit 是一个完全专注于 GraphQL 开发者社区的会议。来自世界各地的演讲嘉宾将讨论关于 GraphQL 的最佳实践、设计模式、采用故事、生产环境中的 GraphQL 以及开源生态系统。今年的演讲将持续两天,并举办一个 afterparty 和工作坊。 + +## 过去的活动 + +### Relay Modern 还是 Apollo? + +- **会议:** ReactNext 2017 +- **日期:** 2017 年 9 月 10 日 +- **地点:** 以色列 特拉维夫 +- **链接:** http://react-next.com + +新项目启动发。每个人都很兴奋。在技术栈中加入了 GraphQL。啊!生活多美好!突然有人提出这个问题。那么我们应该使用哪个 GraphQL 客户端?你什么意思?哦,漏~~!别担心我会帮助你。在这个演讲中,我将把这两个客户端放在显微镜下来找出它们哪些方面最优秀、它们共同拥有什么特性、最重要的是它们的主要区别是什么?而你则可以休息了。 + ### 释放 GraphQL 和 React 的力量 - **会议:** OdessaJS 2017 @@ -17,9 +44,6 @@ sublinks: 即将举行的活动,聚会 GraphQL 很棒!仅仅一年的时间它已经受到很多来自社区的关注。许多实现已经出现并且变得越来越好。GraphQL是否适合您?它是一种查询语言还是运行时?在这个演讲中,我将带着您从零基础成为专家。 - -## 过去的活动 - ### GraphQL —— 人民的查询语言 - **日期:** 2017 年 6 月 21 日 @@ -56,6 +80,11 @@ GraphQL-Europe 是欧洲非营利性的 GraphQL 大会,邀请了来自世界 - [GraphQL & Relay (San Francisco)](http://www.meetup.com/graphql/) - [GraphQL Seattle](https://www.meetup.com/Seattle-GraphQL-Meetup/) - [GraphQL Toronto](https://www.meetup.com/GraphQL-Toronto/) +- [GraphQL NYC](https://www.meetup.com/GraphQL-NYC/) +- [GraphQL Atlanta](https://www.meetup.com/GraphQL-Atlanta/) +- [GraphQL Austin](https://www.meetup.com/ATX-GraphQL/) +- [GraphQL Miami](https://www.meetup.com/Miami-GraphQL/) +- [GraphQL Los Angeles](https://www.meetup.com/Los-Angeles-GraphQL-Meetup/) ### 欧洲 @@ -64,10 +93,15 @@ GraphQL-Europe 是欧洲非营利性的 GraphQL 大会,邀请了来自世界 - [GraphQL Istanbul](https://www.meetup.com/GraphQL-Istanbul/) - [GraphQL London](https://www.meetup.com/GraphQL-London) - [GraphQL Paris](https://www.meetup.com/GraphQL-Paris/) +- [GraphQL Munich](https://www.meetup.com/GraphQL-Munich/) +- [GraphQL Barcelona](https://www.meetup.com/GraphQL-Barcelona/) +- [GraphQL Stockholm](https://www.meetup.com/GraphQL-Stockholm/) +- [GraphQL Budapest](https://www.meetup.com/Budapest-GraphQL/) ### 澳洲 - [GraphQL Melbourne](http://graphql.melbourne/) +- [GraphQL Sydney](https://www.meetup.com/GraphQL-Sydney/) ### 亚洲 diff --git a/site/community/Community-Resources.md b/site/community/Community-Resources.md index b865eaf2c4..51035e8975 100644 --- a/site/community/Community-Resources.md +++ b/site/community/Community-Resources.md @@ -56,7 +56,8 @@ sublinks: 博客,视频 - [GraphQL 讲解](https://medium.com/apollo-stack/graphql-explained-5844742f195e#.zdykxos6i) - Jonas Helfer - [GraphQL 概念可视化](https://medium.com/apollo-stack/the-concepts-of-graphql-bc68bd819be3#.hfczgtdsj) - Dhaivat Pandya - [构建 f8 App:使用 GraphQL & Relay](http://makeitopen.com/tutorials/building-the-f8-app/relay/) -- [您的第一个 GraphQL 服务器](https://medium.com/the-graphqlhub/your-first-graphql-server-3c766ab4f0a2#.ovn0y19k4) - Clay Allsopp +- [你的第一个 GraphQL 服务器](https://medium.com/the-graphqlhub/your-first-graphql-server-3c766ab4f0a2#.ovn0y19k4) - Clay Allsopp +- [教程:用 Apollo-server、Dataloader 和 Knex 启动一个 JS API](https://bamtech.gitbooks.io/dev-standards/content/backend/graphql-js/getting-started-with-apollo-server-dataloader-knex.mo.html) - Thomas Pucci - [教程:如何构建一个 GraphQL 服务器](https://medium.com/apollo-stack/tutorial-building-a-graphql-server-cddaa023c035#.bu6sdnst4) - Jonas Helfer - [使用 GraphQL 查询参数设计强大的 API](https://www.graph.cool/docs/tutorials/designing-powerful-apis-with-graphql-query-parameters-aing7uech3/) - Johannes Schickling - [GraphQL 和不可思议的 Apollo Client](https://medium.com/google-developer-experts/graphql-and-the-amazing-apollo-client-fe57e162a70c) - Gerard Sans @@ -108,3 +109,4 @@ Facebook 内外的开发者在世界各地的会议和聚会上都谈到了 Grap - [Scaphold Community](https://scaphold.io/community/): 一些帮助您将使用 GraphQL 的 app 发布到生产环境的资源 - [GraphQL World](https://graphql-world.com): GraphQL 开发者和活动的全球社区 - [GraphQL Talks](https://www.graph.cool/talks/): 找到并观看最好的 GraphQL 演讲 +- [Basically, Full-stack GraphQL](https://github.com/TejasQ/basically-fullstack-graphql):使用简单英文的一个基于代码的介绍在客户端_和_服务端使用 GraphQL diff --git a/site/graphql-js/APIReference-TypeSystem.md b/site/graphql-js/APIReference-TypeSystem.md index d0ee84b4ae..d2f3a0cdb7 100644 --- a/site/graphql-js/APIReference-TypeSystem.md +++ b/site/graphql-js/APIReference-TypeSystem.md @@ -1,5 +1,5 @@ --- -title: graphql/types +title: graphql/type layout: ../_core/GraphQLJSLayout category: API 参考 permalink: /graphql-js/type/ @@ -251,6 +251,7 @@ type GraphQLInterfacesThunk = () => Array; type GraphQLFieldConfigMapThunk = () => GraphQLFieldConfigMap; +// 关于解析器函数,请参见下文 type GraphQLFieldResolveFn = ( source?: any, args?: {[argName: string]: any}, @@ -297,6 +298,8 @@ type GraphQLFieldConfigMap = { 当两个类型需要相互指代,或是某类型的某一字段类型为其自身,你可以使用函数表达式(也可称为闭包或是 thunk)来实现字段类型的延后求值。 +注意,解析器函数提供 `source` 对象作为第一个参数。但是,如果未提供解析器函数,则将在 `source` 中查找与该字段名称相同的方法来作为默认的解析器。如果找到,则使用 `(args, context, info)` 调用该方法。由于它是一个在 `source` 上的方法,因此始终可以使用 `this` 来引用值。 + #### 示例 ```js diff --git a/site/graphql-js/Tutorial-Mutations.md b/site/graphql-js/Tutorial-Mutations.md index 3311aebfc5..c19449d1eb 100644 --- a/site/graphql-js/Tutorial-Mutations.md +++ b/site/graphql-js/Tutorial-Mutations.md @@ -133,7 +133,7 @@ var root = { fakeDatabase[id] = input; return new Message(id, input); }, -} +}; var app = express(); app.use('/graphql', graphqlHTTP({ diff --git a/site/learn/Introduction.md b/site/learn/Introduction.md index 478dbcf83a..67224f827f 100644 --- a/site/learn/Introduction.md +++ b/site/learn/Introduction.md @@ -7,7 +7,7 @@ permalink: /learn/ next: /learn/queries/ --- -> 在接下来的一系列文章中,我们会了解 GraphQL 是什么,它是如何运作以及如何使用它。在找如何搭建 GraphQL 服务的文档?这有一些类库可以帮你用[多种不同语言](/code/)实现 GraphQL。 +> 在接下来的一系列文章中,我们会了解 GraphQL 是什么,它是如何运作以及如何使用它。在找如何搭建 GraphQL 服务的文档?这有一些类库可以帮你用[多种不同语言](/code/)实现 GraphQL。通过实用教程深入学习体验,请访问 [How to GraphQL](https://www.howtographql.com) 全栈教程网站。 GraphQL 是一个用于 API 的查询语言,是一个使用基于类型系统来执行查询的服务端运行时(类型系统由你的数据定义)。GraphQL 并没有和任何特定数据库或者存储引擎绑定,而是依靠你现有的代码和数据支撑。 diff --git a/site/users/index.html.js b/site/users/index.html.js index c20219f27a..a893744592 100644 --- a/site/users/index.html.js +++ b/site/users/index.html.js @@ -531,6 +531,71 @@ var logos = [ img: 'myntra.png', link: 'https://www.myntra.com/' }, + { + name: 'Conduit', + img: 'conduit.png', + link: 'https://conduithq.com/' + }, + { + name: 'Medallia', + img: 'medallia.png', + link: 'https://www.medallia.com/' + }, + { + name: 'Colectica', + img: 'colectica.png', + link: 'http://www.colectica.com/' + }, + { + name: 'Neo4j', + img: 'neo4j_logo.png', + link: 'https://www.neo4j.com/developer/graphql/' + }, + { + name: 'ComparaOnline', + img: 'comparaonline.png', + link: 'https://www.comparaonline.com/' + }, + { + name: 'Goalify.plus', + img: 'goalify.png', + link: 'https://goalify.plus/' + }, + { + name: 'Teachers Pay Teachers', + img: 'teacherspayteachers.png', + link: 'https://teacherspayteachers.com/' + }, + { + name: '1stdibs', + img: '1stdibs.png', + link: 'https://www.1stdibs.com/' + }, + { + name: 'Hackages', + img: 'hackages.png', + link: 'https://hackages.io/' + }, + { + name: 'Fairfax Media', + img: 'fairfaxmedia.png', + link: 'https://www.fairfaxmedia.com.au/' + }, + { + name: 'Amplitude', + img: 'amplitude.png', + link: 'https://amplitude.com/engineering' + }, + { + name: 'Gentux', + img: 'gentux.png', + link: 'https://www.generationtux.com/' + }, + { + name: 'Bynder', + img: 'bynder.png', + link: 'https://www.bynder.com/' + }, // Adding your logo? // Add it to the /users/logos/ directory and then append an entry above this comment. // @@ -560,7 +625,7 @@ module.exports = ({ page }) => {logos.sort((a, b) => a.name.toLowerCase() < b.name.toLowerCase() ? -1 : 1 ).map(logo => - + )} diff --git a/site/users/logos/1stdibs.png b/site/users/logos/1stdibs.png new file mode 100644 index 0000000000000000000000000000000000000000..ff4dc4b071ea6ff52e222cf6709aebc6f61643b4 GIT binary patch literal 12298 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 Tny6o-|6J&37^+vO-a!2yZR!wf literal 0 HcmV?d00001 diff --git a/site/users/logos/bynder.png b/site/users/logos/bynder.png new file mode 100644 index 0000000000000000000000000000000000000000..bc6b355b1ac6050e1539925f503eefc0bcfb5d9f GIT binary patch literal 41401 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

wL}^6bURJ4fj2`8e^#Odq~5 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 literal 0 HcmV?d00001 diff --git a/site/users/logos/comparaonline.png b/site/users/logos/comparaonline.png new file mode 100644 index 0000000000000000000000000000000000000000..c4d73bd61d7754aff1b59cf1e044e363c5b49952 GIT binary patch literal 16981 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 Dw_JIg literal 0 HcmV?d00001 diff --git a/site/users/logos/conduit.png b/site/users/logos/conduit.png new file mode 100644 index 0000000000000000000000000000000000000000..b14e4b49be3e652727c13ebd302a8f7a5700e448 GIT binary patch literal 9556 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 literal 0 HcmV?d00001 diff --git a/site/users/logos/fairfaxmedia.png b/site/users/logos/fairfaxmedia.png new file mode 100644 index 0000000000000000000000000000000000000000..0d92080fa0cb48b0d672dcb21da2e6caddeb372f GIT binary patch literal 35062 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 literal 0 HcmV?d00001 diff --git a/site/users/logos/gentux.png b/site/users/logos/gentux.png new file mode 100644 index 0000000000000000000000000000000000000000..c5a908d983969237d07fd4325bdccb811e7ba762 GIT binary patch literal 2898 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

YOx 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π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 z ze2Y$8zre~4>=Ba|~o;)M=dkD-2#hz<#NnexrQb*^-t}cL2nvY5XZ;2 zW}lqqoKxgeM5Jhus_ca?kcxht9ys=^R1Q{ba1hzH5iSd{jIk`h2qM?2Yove>R^?D1 z;zLmDF7w`-KFlKTdQ*v3^UD;%G4YNtJP9M#_;#5k%eV_xjugz#NW|t z!!jbQRkyysN5`NVCBcS&oGZYiX@Rajbth>7;jy+&N-s}Lmf9_mVY z!c*k}Pu5{`4J2LJKux+rJp>Eunph+(LsRtW#lk{a8Hb>}cV0v!?TtHOr%f(Q7hq7{(-t{uD+@x1? zZbh4HQ`#;^1wI(hIG@Jn2S-^E@2eWkL-LrVMw$16(b-WJqT_73TW{%tiMl$ip0sWA zBNqXr!Ni&bGN*u4dlG~L!8nsZ(h!yG16gH|tA1$Lt!u&3ldzowKXRR($_XVbjOudx z@0XW@@#t*gWLE?pYH<+LuWC0sZuPKIKdlcA``u2X=GY0iBbM#dI&Ps_sn;uqt>#%f zb9?S5APhplGJwLG>Pk+%khS;zUK{=!2w~Z!+F7SL>bA!H{&?K&j?PaSlXfX>efA$& zSQ_zp{&YkL_&@SU^)i(85@pm?H48Cd7|Wer2Y0A#K)u3kLmU|9p@;ou=Bitt`YPNF zhM^4?X4<(A@=DlczB92llXE5u}#LB6(E?m-+FCXe9?vvyphi2jqu zuOJQ#^TgYs9&%&$vjj0<7~vYT3HvlmRka`n43qS*SCnR{)T`(L#DHN|3c7ryTzRCf zDjB#t3?sJ7)Ix5KCUhVM43nb~Jt-_TqIY@(;b53ARul7GvgPtyA1y2DA#bH191QdA z`q!HeZ2_8;liN~FGPAn!C-ia<4u-LcFQ(qC#mAdZlgZkn`>zTcn6#6u3@4yU7Q(?W z_wv&H(Vu4WJnxMhNS&Wl$EnFCgoI(f`vxbxsI#3~uh8(z=buTc(-MS)VV)@yWO6Q} z7G%?Kc*=1L!on~~ZPVwgYUgJf?A_fn7fK(aLERCAg<*2!(&x)6I9#cL;_3>7gkeNc z9fLb>sIz_lra!veZ*DDNjzM(!_*m*kT&u4WC13 z7-r2gY-BKPH+-xO|ASwf5FUo9X&dXeva@~HD7NEuQ0l7Jw;?Pz9blN$+SBbqMei3f&Cv(l2Kk;xhGB$Qv7gm)oq}}HtXC@4Zu6{G$|m67 Z=Wk+RsJL0YcHjU2002ovPDHLkV1fzJ+pGWp literal 0 HcmV?d00001 diff --git a/site/users/logos/graphcms.png b/site/users/logos/graphcms.png index 460716dfbd16ce5600c5e34e27aa07f962284c68..373a96d0f3c8d0bad00066d7a920c1b4909836e7 100644 GIT binary patch literal 43475 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 CX;$q3 literal 9349 zcmV;0BzoJ4P)G00004XF*Lt006O% z3;baP001OBNklId%4_Kgf z5TpG>Y#WjGbE+NNNQ~(gc$rl-w2nvrt)7W6b_(s^AkKDy->0c8@&wHq`<`cdem87r z{Ra5^rZckaWtv}csWV)ku^M;(fVgp|C#sCPiPM|7KMtb(YSQQzR8xU_CxFtp>pApw zm6S4Ltu(Jzv=jh-xv$3pw%O=nkg| zg|X9&_yJV6Xc~WvU4F*uZ4W-!oq*xX;mnzf&pz25drLyBYuKQ&p-oN8PD|h!S1(<< zRD1e2ZAT!3Gn0rhcGu44l|M|X%iv`0+@;ZDr`xaOoZk$cSk)tU8frnZ6Ec5=G5!Zl zV~?IQZ1``UefECTr57!&s&V&ZYG{3tbbT!u#vM=yAI6`R(iKeyf{Dw)%&o-r=csY_ z4iXAG-wNmD;BzF#@p16_Fm>t&!0YF6oP5LPj&HnJ9G4Na_T>SNvGWCyQwdnP2r|C{ zf8QmY_EE#GN9cw9a)lNg?=G)97@Hu!yPyOrp>WPZ>-4d3 zK7ezo08X8*(=&R@iPp)}>OShMC*QD2kDctA<{LE&Lcjd&fyrq~*8(q-s!3IK^Nx1x zYcX`=x7^@M;<Rr7OBAgO0fjI5+A#f8y|wclOHUo~(G+w$|aIZbai*-k61wHjFj2 zruA-b?X%R1^AEyu`!O}PuA-OT7?`DA<=rr9iXS7pxwnn?h~sQd_Pt0eTsKY>q63bJ(MoAb_PXU zSc88D57W0YppvbopQK~&K8+hXlC2KY`VoC|8l6_JuJCjts7dAuDn6C@v(&if`s{JQ z+$x`(Dc;Fdi>`rd;g`5a24^ZC&W$fms;>L5OzAjo&%GLO&U%2g8<^s)tXlXzgSbCB z%%H!ktgicU;;4EQ@7moHaA6-x1Y~^7_&u95^4%KgiZ z_XCSJQ6l2yqyL=N?3%`9cBaqHqt^tCu#p7@Mm;F<;P~WEHq-?FN}y_(hfN z@zI!r!n^sscrJ(e-8JLvd)3u-L;R+jN>BJ-fAw6uhx>6nfe(x7xmW;H@C z2Is+i6>#<+)24k!Oormk-?Xm^1GpwLb|tMjA3<-?5(zYasyRi;ps(eGA@0d~?PnJ6 z`;v!+1Q*qx2Y(%0`Z;spdXY_8LNgmZ8Z%;`agA40|25!wjDzyqqH;;$bb1 zW}gkiy+y#;#nj%OnJ+&319jFT{x9VIM2wQZ z&!YI0nWt{RI!R++r;AE{M59Od#iViE6l?a}j_82zqrE&bfYTLmg;v92>V7hWYLRPb z$j}#isl4|t9VVTQ;=88+w8aV>V4d80ML-~Ux0ncmPxOs0 z(QZe8e0d@LHl6u_OOhI%>MoW<8#S7Mx!f#}Q)>sDKpEPNRhkEk#x<%ZeABj(Wv)Blad-4gQv?GZ#J{8PN*lRW(z zh-)HVh%aKY^|!cjL==g|%cOUdgJ|P{58~|Y-WvZ8RQ;#-1`U>88Eg%@RK_=JjNP%L zdBsmsxnMmntmTM5eS;WZjYnJh71zaMqK`loFUIkqsyVk_v~}IXuch+p_576aCt*eV zK6hjoPQE_b-t*5IUYEKsV#}5l$Fb1jmZKeQt2RfpZ+-_=mE7?%|b9y$qh^pN+b=*h2r9 z_duz(;u+j4_uIDY)X%fU$pk^X@Z6QGD_$5pif4vBX{B@%hqPnsibkx|{O`oN)MLci z%AfsIHI2TLs&vgZO-)Nf!uQ26<&alJY4Ntx86|Rym(wK$8QIX)mHp55)N5WK3n)_AF4S|l^e4m> zrVj%!PIO#>*P!%kz=tlfLZWySZ&t+VwiCrd2*%rJ>d0f5#Qc*rRYW$t-Zjn|7S<{y z;M&y?V1$K|(f$JDnsMUfOg~1$^v7h&a)PZQSL_#bzi>Lab>BR&%5@I=N*_{qIEgq2kTKMTmE4 zsN!(p-!+Q{B`hnU;+09puHN0li@;Gkf+1Wj0ZfRMA9%HWvKmVb)mT7bWa@4+h2r~) z{b2OPV`gt#|Fc(3V%d#bHG2(zg#_gOS;qR5t)Wo7j9(hh{#H@Z6^hh_1l+nB7}Q3n zdR++E8Ws6%g}Y(1HPpT~sD%?|&#*${%W=(fFTY7XUgXh;@W_(w&GoByHYZaHE#72# zWb;g}c!~Nf-a#e%rA&$Cpob%4rSK3SlYl#m*K$p_jC5Epl|Tl08;}d(LM+5^yJ3Ko z6)ON|$V+2WPEqs>8g8w)4cq{5K^uq;dhv99J}IGMFzT-I{>h|3ne=$)MA^_~QDz?mTl-R$d7H*{rM zfx&}k$5opR>ci*r+9OaB*%}- zgDhC8adv4@P42?-g8^$At`%=(^+Ms>Ri??b?#f+lPkvpN{`@77!9457kp3~_poCx* zFJrGD8Tm|_J?3Bn@8Kb-LdlREC$%t@;^iahrGT?}rSeng=Wdq_+gL&QDh}+9U~RpL zT`QuInwK{HEc=P{Jxs8{+O5r&jB#tMQS}9Ze(?Co{qt2gPGCVQ-X_wbRWyHW9%Q3( zB8sfy$gNZ>C996*jnc`z9{pxn9dkZ)rm_Un`NWf-URjtmSUa+90Mn+nY^vXwixEJO zBde;Gh>Z~(7hJ5YDPF`1KV!$3!HflVICk)$6z`8IQgJ2KTqbs>2uq>_L_`BuL^M#s z;)%X?YNx-USOwQdBRujhfqtQQp>$W4N6wjz-4c41qkES}MlEBS^Tg)S5@KZB$^C5Doj zNHrBFu=?dq^EB;^BNQ`ZJeryJ(VMsLT+XGPX3YtlPBdho^GQo126= zQ)e!kAU^N2#q+9FOS=$lxLnyEr@{L1_ij_-*Z}=hyl+G4)>3W7gEoB@H#nxt-3&r9 zLrP`Vtzv@BP}3}KiCc}{ovWcheY|4e80azVGjV-O^NRbd1d)?E7dsE@M)2{wsWOO` zL>@}5OFhTS;4ZQ0W@^3DbAJ@CSk_uHU@FyAtasXR(c&4pJp4;6ln^<1t%@qLp-^|D zuo`DR))nZ2VHSzK5iN~Ww`^I7O-A#n@XEP!|9Y?!j$j?vI>GZ3=cSFycOl?Vy}c5r zb5H4Se!*+M{wUsgD%nshT^n6L;V8~TJ{d*nVlnJvkD zMA)|J(Y-His8@zZ<$`aqgT%4ZN2lBMebY^kN8sR{V}}<6JfcOvZATX=KklxayW~te zJS(_Air0#ASZ6H(rdaTxv}zT3c{!EPdwb+dkgYk%-&)SP^NhKEF}apcGQ}obw(-1e zuRlEnf*+a-zPD{&z6E|7%RCFc{BS;upXzq9dwFjY^B`2brX;fQ+cT*nSCC@6A8Ao+ zd@0)SeiYfjoNeYP6_wurk)13ozDfWBwN<=YEcp-XgFarj?_wxOg>OrfE8gKlWs`0_Tq|7|K@ZFY{WsZp_SgfC+T&yuL;3J!m6Lwc z8Lzfm0S2Mh=5n|_3ryJKDjwkeAJ|RZUsvH+!HP%miq&1>lRTG2w~0PbEtHse?n%s1 zzoB4XK53_Dlywj{KC0}Ku@f}+V(SS;WkVN0x4YDa*~wf8*C8rGvW}l>n<&HX*{y$W};)$YMWTTI=Kf39lQ!b{aS$ryqNwkOL7{V99OS-%0TPmDXSn(*{E(go}3=Q`}fJM3854}n?mz-Aj zuGn#ykR*C7&p3I9y8jGbOpSZ4BE9nkxLVFq_d#22;QoMP-Ah~$3SA8@gyk5O%Xc0& zhy|X1*D0UTGVNQ);n1PN$1K2tDKqLmtinlz1^l2Uc9p~9HG8IzVcc!YLBt5yx2SYA z$o;#0jLR)z;YQJSj{)lLK6Jm2MA8+-yNR=5)UYdcCb$e1>;&Svox<&5mPMZSn`=vY zhH)Qwod@3j065$@$}&O;4S}8{fSXBb@sikIEl*x|+g_|cJh8g&M`ZA?$Op=`Sd9J| z@Q=xH`XKHUub7qJurGabD2i}9RjD3z5;wT6Ldh7$c@?eMQ`Sp|8ydnv&V!!#2p;;+ zpx%D0hW2uA`ydV&8w-oinle{ev+p-yk#>y5y1l6FSx6C};+1#Z1HmUe(bZ{KvN5M2 z(jKZEyCJw?TJ;s9yjhDLEKR6*QAJOFd2zpg`mRV1X}+4dCjp{{%Zeb zSshjutOPJIrQ^LDkqtnP#e~(Hq!+1^sL(WQP}ch*x_<#*|Ei>? z8{Y-|3MCGJ?tHvVY{JR@!;WZS!rAj!@_ZsN-tCt4Dr0!x=W5W<12z*+g{ycOTSxQ8 z{WLK7hlFz@0Zv=g9jE(wu^Vx%qD}U52*1xvdF1T-@oBG$EP_GI=S;3zbd7@lILMvi z6-_jH7|J);a34Fa{f3LIYRuiNq-z%J7C5Lv$;{5Co(~5<|D$+A2IR1PL(qI~AL-hOPX(QpJl1gLNu;LBish-8A-1yFPT%zY|YqsX%nEc;hJw z>35W*}D(@t~goPNNz?87Y$4;5Mpm*X`@hGt0;P6sbPs&tMM| zlcvmAbhC;d_lj3gE2H}%OvNmZs>?isF*Xo>Q)S{~pEy=nqwJvb{KcxJ!~T&aI)ddVq#m3EH2%DbxPB^Op~R^!_(!>=UP4G$HP7bp4lJWe7S z%s$nND2Q~Me7`20oc*$waqs*)F%8>7jbB3ZFMTU#tb`qBNdlTu@xt)wbvNJ>T@k;_ zw|=lZ26tO-OH1?eRbmSz6&D!C=%c6FJ}blVrg#N4jr~wYv;gbRrdZeC2FCaL)(_z= zK15Dmkq$Dok;r|lDu$u3tW^#DfWi0Av>Vd@B3F}EQb{!MT$*2TDb1U3C)JKq-nf2n z6Vk{J2@ESQSqJ~Uba4=ZRC^UKCa-E0T<6ryVDbf}3ssO&r&O~_GIQ(7T2h72dNFvTzXK&98pDSD>WZ}|KmR?+OVDQEG|Fxt# zzfQVs!@Qh-YHNu1&DW4J#!u6{il_V%TYz*ruqWV9d-`o>k`cQHQ`LWCk6Tz6BG>J~ zKRq>UThpWO1kHI<)3Vc*(-y8nROeMzeL;;)5xY4U#(P6f8z-fPgT`21C|)s!mM!(a zn>cO38t6Ugivkme7aTp+^#!1RKXu&R6|bOFTOnfBh}Q1@6zN886|WZgG}Vl2it}Us zYi}>3*JD>=)!KjJ;Td68OMWk+7m&~4im@+C;NGk4_C&LDA0+n71|p=a1L1_Q6Re6| z*qT+F;;X~kftu?UZd(9qPChJg$c=`Nm= zDP9q?dz#*yhIu0xO4dch@0OPg*hpd?I$uhJ-AysBoRo*l;cm$LL2NL3Jdthhu7*S^ z`FcEhbSISYuc?I1z^9IVjILewFz@4(M>GhUTB&o3SLAcx{B%ywDP4y`Z>VO z=9Tf!N_wTgNMzE?g(FTI#s*kwwy~yujyV#ID*e1zkSP{TNUcYFy>8#I;ivEU$y27Z zc5YhPjF-ieN;;fA&_(>qsW|;x@tUKZGyX6H^e^VA^p_jwOJSJ+)K+K*%^jtR%}wuF z8P3AXXzjjH>5amg1PQ?Sa#gIqE?kkwJ@S<4i>r+u3vEKSxry&%rdoW!5!qnKKik1? z-nbbOWfzU|uL)~Bu`c!4;QViA%=n8BB-R&);uRx~M%8boxKy-3iNf*iSQXL0Xus=) z1GcUSF7=c7Hl|`CgsGH5AMV7eMK{L`y$P1?IXN4PhSi~x0>@bm-i9fu2>Ouo$-mpj z6_ME24!6g$#JaR&^l|Fv1r;3PRtYUc*r6Y8R#%u~1R|4_G^S8_c11y~Lo zIxq_l{AcoobrHIT7})Ku`QiEL-%T7xv{d^6&ei&b8=o`V6r18T$DPGr#dhw33j;ZJ z-Ifuh$ZH@n#YqZhmxYlH64~@rs~?c`rUj{Z(}$54HF9@@ggw0XUXXzDruwA~_51Km zu~x+pzC0$HyHtdVS0yPwV1~`&3C%$s-c&wBm>i?mQmgyU5!tYQuXLiK53fj%+-_cp z@5myRl<&i45p~`Miw=2opz)$becn~!CVAA3DP1={CU8Qrsd607UPia!~~ z;8ONPJduwKLDX})PW*(5S4bhK(zx#e2>MJpc@Gf{CNaB^GIi{*Nu@Y{-R>GJTP0YW z(#vSn+a7$d8;c>7pX7-hK#}Ezn_=?wg*SBQZ?zph{Pd7S{t}PZuV48t_KK5+%n4lh zxTaov?H9|Ui4DVJpC!O;Cf3M9M1#p9L(T@Jr!us7O;K6=DkW!uA6mQ?Lh)L~H1-@f zxT6#UoV0ab`|+cl2my;7JMj};=b!GOr@j>cU4xtJ&lG)^9zOPemxqd1A)$;x!s=8# z;$9*eOs04QkqxQ^GvOi%Q&efcnCeffQ&nIp9+Q-n0OE?uf2{`sGDZZu)7jbo)7A5Tfit9Ikk z4CBJ^!L*Z7MsS;j3|RY+RN8(}z5wL5#7?&T3T% zqM|}9Q9Pu;fF~mK^IFQs?ULcp;8q9uqxOCVQ zg{$At$LmU5K_G8yc<>ku6Gaknb`Z(KUk{@1e4rUB-k`36-L4bF-6zLM<(1jGD(sYh zD#ao>cNwBkpt&0I{bDjro~nUe3#D&HhVlIW0DXaB?j# zuK36geS9l&KE7+oj8>BMhz3hO0;&ubPy{4ckhM{~KDZjnu`y@oZcI=p_E=+GVuI~J zaKkJ_$}Ypn!l;HoF7m2XH|v#E3%>~EJ0htAMqMqNm%Wly*UwHu#T�UE6vtLb;Om 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 qlA-~yY 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 N002ovPDHLkV1nj@3kv`M literal 0 HcmV?d00001 diff --git a/site/users/logos/neo4j_logo.png b/site/users/logos/neo4j_logo.png new file mode 100644 index 0000000000000000000000000000000000000000..6e8565c4bee3a39c3dd4436aa1917e052e96a4d1 GIT binary patch literal 37897 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 F;a?X*F^K>G literal 0 HcmV?d00001 diff --git a/site/users/logos/teacherspayteachers.png b/site/users/logos/teacherspayteachers.png new file mode 100644 index 0000000000000000000000000000000000000000..7a713f46eedb02de3d53ca4c1cb032f9e2fe317a GIT binary patch literal 10104 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 mKA~TFxxNX#+Va^ Date: Wed, 29 Nov 2017 18:01:35 +0800 Subject: [PATCH 47/75] up to date 20171127 (#84) --- site/code/index.html.js | 30 +++++++++++++++---------- site/community/Community-Events.md | 3 ++- site/learn/Learn-Queries.md | 35 ++++++++++++++++++++++++------ site/users/index.html.js | 2 +- 4 files changed, 49 insertions(+), 21 deletions(-) diff --git a/site/code/index.html.js b/site/code/index.html.js index b240ead58a..8ce8f3bcbc 100644 --- a/site/code/index.html.js +++ b/site/code/index.html.js @@ -253,14 +253,14 @@ app.use('/graphql', graphqlHTTP({ app.listen(4000, () => console.log('Now browse to localhost:4000/graphql')); \`\`\` -#### [graphql-server](http://dev.apollodata.com/tools/graphql-server/index.html) ([github](https://github.com/apollostack/graphql-server)) ([npm](https://www.npmjs.com/package/graphql-server-express)) +#### [apollo-server](https://www.apollographql.com/docs/apollo-server/) ([github](https://github.com/apollographql/apollo-server)) ([npm](https://www.npmjs.com/package/apollo-server-express)) 来自于 Apollo 的一套 GraphQL server 包,可用于多种 Node.js HTTP 框架(Express,Connect,Hapi,Koa 等)。 -如果要运行 \`graphql-server-express\` 的 hello world 服务器: +如果要运行 \`apollo-server-express\` 的 hello world 服务器: \`\`\`bash -npm install graphql-server-express body-parser express graphql graphql-tools +npm install apollo-server-express body-parser express graphql graphql-tools \`\`\` 然后使用 \`node server.js\` 以运行 \`server.js\` 中的代码: @@ -268,7 +268,7 @@ npm install graphql-server-express body-parser express graphql graphql-tools \`\`\`js var express = require('express'); var bodyParser = require('body-parser'); -var { graphqlExpress, graphiqlExpress } = require('graphql-server-express'); +var { graphqlExpress, graphiqlExpress } = require('apollo-server-express'); var { makeExecutableSchema } = require('graphql-tools'); var typeDefs = [\` @@ -295,7 +295,7 @@ app.use('/graphiql', graphiqlExpress({endpointURL: '/graphql'})); app.listen(4000, () => console.log('Now browse to localhost:4000/graphiql')); \`\`\` -GraphQL Server 也支持所有的 Node.js HTTP 服务器框架:Express、Connect、HAPI 和 Koa。 +Apollo Server 也支持所有的 Node.js HTTP 服务器框架:Express、Connect、HAPI 和 Koa。 ### PHP @@ -395,6 +395,7 @@ Executor.execute(schema, query) map println - [Java / Android](#java-android) - [JavaScript](#javascript-1) - [Swift / Objective-C iOS](#swift-objective-c-ios) +- [Python](#python-1) ### C# / .NET @@ -411,15 +412,19 @@ Executor.execute(schema, query) map println ### JavaScript - [Relay](https://facebook.github.io/relay/) ([github](https://github.com/facebook/relay)) ([npm](https://www.npmjs.com/package/react-relay)):Facebook 的框架,用于构建与 GraphQL 后端交流的 React 应用。 - - [Apollo Client](http://dev.apollodata.com/react/) ([github](https://github.com/apollostack/apollo-client)):一个强大的 JavaScript GraphQL 客户端,设计用于与 React、React Native、Angular 2 或者原生 JavaScript 一同工作。 + - [Apollo Client](http://apollographql.com/client/) ([github](https://github.com/apollographql/apollo-client)):一个强大的 JavaScript GraphQL 客户端,设计用于与 React、React Native、Angular 2 或者原生 JavaScript 一同工作。 - [graphql-request](https://github.com/graphcool/graphql-request):一个简单的弹性的 JavaScript GraphQL 客户端,可以运行于所有的 JavaScript 环境(浏览器,Node.js 和 React Native)—— 基本上是 \`fetch\` 的轻度封装。 - [Lokka](https://github.com/kadirahq/lokka):一个简单的 JavaScript GraphQL 客户端,可以运行于所有的 JavaScript 环境 —— 浏览器,Node.js 和 React Native。 - [nanogql](https://github.com/yoshuawuyts/nanogql):一个使用模板字符串的小型 GraphQL 客户端库。 ### Swift / Objective-C iOS - - [Apollo iOS](http://dev.apollodata.com/ios/) ([github](https://github.com/apollostack/apollo-ios)):一个用于 iOS 的 GraphQL 客户端,返回查询特定的 Swift 类型,与 Xcode 集成后可以分屏显示你的 Swift 源代码和 GraphQL,并能在行内展示验证错误。 - - [GraphQL iOS](https://github.com/funcompany/graphql-ios): 一个用于 iOS 的 Objective-C GraphQL 客户端。 + - [Apollo iOS](https://www.apollographql.com/docs/ios/) ([github](https://github.com/apollographql/apollo-ios)):一个用于 iOS 的 GraphQL 客户端,返回查询特定的 Swift 类型,与 Xcode 集成后可以分屏显示你的 Swift 源代码和 GraphQL,并能在行内展示验证错误。 + - [GraphQL iOS](https://github.com/funcompany/graphql-ios):一个用于 iOS 的 Objective-C GraphQL 客户端。 + +### Python + + - [GQL](https://github.com/graphql-python/gql):一个 Python 中的 GraphQL 客户端。 ## 工具 @@ -429,11 +434,12 @@ Executor.execute(schema, query) map println ## 服务 - - [Apollo Optics](http://www.apollodata.com/optics/):一个用于监视 GraphQL 后端的性能和使用的服务。 + - [Apollo Engine](http://www.apollographql.com/engine/):一个用于监视 GraphQL 后端的性能和使用的服务。 - [GraphCMS](https://graphcms.com/):一个 BaaS(后端即服务),它为您配置了一个作为内容编辑工具来处理存储数据的 GraphQL 后端。 - - [Graphcool](https://www.graph.cool) ([github](https://github.com/graphcool)):一个BaaS(后端即服务),它为您的应用程序提供了一个 GraphQL 后端,且具有用于管理数据库和存储数据的强大的 web ui。 - - [Reindex](https://www.reindex.io/baas/) ([github](https://github.com/reindexio/reindex-js)):一个BaaS(后端即服务),它针对使用 React 和 Relay 的应用程序配置了 GraphQL 后端。 - - [Scaphold](https://scaphold.io) ([github](https://github.com/scaphold-io)):一个BaaS(后端即服务),为您的应用程序配置了一个拥有多种不同集成的 GraphQL 后端。 + - [Graphcool](https://www.graph.cool) ([github](https://github.com/graphcool)):一个 BaaS(后端即服务),它为您的应用程序提供了一个 GraphQL 后端,且具有用于管理数据库和存储数据的强大的 web ui。 + - [Reindex](https://www.reindex.io/baas/) ([github](https://github.com/reindexio/reindex-js)):一个 BaaS(后端即服务),它针对使用 React 和 Relay 的应用程序配置了 GraphQL 后端。 + - [Scaphold](https://scaphold.io) ([github](https://github.com/scaphold-io)):一个 BaaS(后端即服务),为您的应用程序配置了一个拥有多种不同集成的 GraphQL 后端。 + - [Tipe](https://tipe.io) ([github](https://github.com/tipeio)): 一个 SaaS(软件即服务)内容管理系统,允许您使用强大的编辑工具创建您的内容,并通过 GraphQL 或 REST API 从任何地方访问它。 ## 更多内容 diff --git a/site/community/Community-Events.md b/site/community/Community-Events.md index 7091c480aa..1ab32e1243 100644 --- a/site/community/Community-Events.md +++ b/site/community/Community-Events.md @@ -85,6 +85,7 @@ GraphQL-Europe 是欧洲非营利性的 GraphQL 大会,邀请了来自世界 - [GraphQL Austin](https://www.meetup.com/ATX-GraphQL/) - [GraphQL Miami](https://www.meetup.com/Miami-GraphQL/) - [GraphQL Los Angeles](https://www.meetup.com/Los-Angeles-GraphQL-Meetup/) +- [GraphQL Dallas-Fort Worth](https://www.meetup.com/DFW-GraphQL-Meetup/) ### 欧洲 @@ -101,7 +102,7 @@ GraphQL-Europe 是欧洲非营利性的 GraphQL 大会,邀请了来自世界 ### 澳洲 - [GraphQL Melbourne](http://graphql.melbourne/) -- [GraphQL Sydney](https://www.meetup.com/GraphQL-Sydney/) +- [GraphQL Sydney](http://graphql.sydney/) ### 亚洲 diff --git a/site/learn/Learn-Queries.md b/site/learn/Learn-Queries.md index 0de91c50ac..5e3a969744 100644 --- a/site/learn/Learn-Queries.md +++ b/site/learn/Learn-Queries.md @@ -4,7 +4,7 @@ layout: ../_core/DocsLayout category: 学习 permalink: /learn/queries/ next: /learn/schema/ -sublinks: 字段(Fields),参数(Arguments),别名(Aliases),片段(Fragments),变量(Variables),操作名称(Operation Name),指令(Directives),变更(Mutations),内联片段(Inline Fragments) +sublinks: 字段(Fields),参数(Arguments),别名(Aliases),片段(Fragments),操作名称(Operation Name),变量(Variables),指令(Directives),变更(Mutations),内联片段(Inline Fragments) --- 你可以在本页学到有关如何查询 GraphQL 服务器的详细信息。 @@ -80,6 +80,7 @@ sublinks: 字段(Fields),参数(Arguments),别名(Aliases),片段( ## 别名(Aliases) 如果你眼睛够锐利,你可能已经发现,即便结果中的字段与查询中的字段能够匹配,但是因为他们并不包含参数,你就没法通过不同参数来查询相同字段。这便是为何你需要**别名** —— 这可以让你重命名结果中的字段为任意你想到的名字。 + ```graphql # { "graphiql": true } { @@ -124,6 +125,32 @@ fragment comparisonFields on Character { 你可以看到上面的查询如何漂亮地重复了字段。片段的概念经常用于将复杂的应用数据需求分割成小块,特别是你要将大量不同片段的 UI 组件组合成一个初始数据获取的时候。 +## 操作名称(Operation name) + +这之前,我们都使用了简写句法,省略了 `query` 关键字和查询名称,但是生产中使用这些可以使我们代码减少歧义。 +如果你想要执行查询以外的操作或传递动态变量,则需要将这些可选部分用于 GraphQL 操作。 + +下面的示例包含了作为**操作类型**的关键字 `query` 以及**操作名称** `HeroNameAndFriends`: + +```graphql +# { "graphiql": true } +query HeroNameAndFriends { + hero { + name + friends { + name + } + } +} +``` + +**操作类型**可以是 _query_、_mutation_ 或 _subscription_,描述你打算做什么类型的操作。 + +**操作名称**是你的操作的有意义和明确的名称。这对于调试和服务器端日志记录的原因可能非常有用。 +当在你的网络日志或是 GraphQL 服务器中出现问题时,通过名称来从你的代码库中找到一个查询比尝试去破译内容更加容易。 +就把它想成你喜欢的程序语言中的函数名。例如,在 JavaScript 中,我们只用匿名函数就可以工作,但是当我们给了函数名之后,就更加容易追踪、调试我们的代码,并在其被调用的时候做日志。同理,GraphQL 的查询和变更名称,以及片段名称,都可以成为服务端侧用来识别不同 GraphQL 请求的有效调试工具。 + + ## 变量(Variables) 目前为止,我们将参数写在了查询字符串内。但是在很多应用中,字段的参数可能是动态的:例如,可能是一个"下拉菜单"让你选择感兴趣的《星球大战》续集,或者是一个搜索区,或者是一组过滤器。 @@ -181,12 +208,6 @@ query HeroNameAndFriends($episode: Episode = "JEDI") { 当所有变量都有默认值的时候,你可以不传变量直接调用查询。如果任何变量作为变量字典的部分传递了,它将覆盖其默认值。 -## 操作名称(Operation name) - -上面案例中我们看到的另一个东西就是我们的查询还有个**操作名**。这之前,我们都使用了简写句法,省略了 `query` 关键字和查询名称,但是生产中使用这些可以使我们代码减少歧义。 - -就把它想成你喜欢的程序语言中的函数名。例如,在 JavaScript 中,我们只用匿名函数就可以工作,但是当我们给了函数名之后,就更加容易追踪、调试我们的代码,并在其被调用的时候做日志。同理,GraphQL 的查询和变更名称,以及片段名称,都可以成为服务端侧用来识别不同 GraphQL 请求的有效调试工具。 - ## 指令(Directives) diff --git a/site/users/index.html.js b/site/users/index.html.js index a893744592..e175ff6cec 100644 --- a/site/users/index.html.js +++ b/site/users/index.html.js @@ -503,7 +503,7 @@ var logos = [ { name: 'Alembic', img: 'alembic.png', - link: 'http://alembic.com.au/', + link: 'https://alembic.com.au/', }, { name: 'Twitter', From 2631b1bc9abbed4745d09a7ce6dbd46e274228d9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=AB=98=E8=8B=B1=E5=81=A5?= Date: Fri, 23 Feb 2018 12:57:16 +0800 Subject: [PATCH 48/75] up to date 20180222 (#86) --- site/community/Community-Resources.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/site/community/Community-Resources.md b/site/community/Community-Resources.md index 51035e8975..c8be0635d4 100644 --- a/site/community/Community-Resources.md +++ b/site/community/Community-Resources.md @@ -61,6 +61,9 @@ sublinks: 博客,视频 - [教程:如何构建一个 GraphQL 服务器](https://medium.com/apollo-stack/tutorial-building-a-graphql-server-cddaa023c035#.bu6sdnst4) - Jonas Helfer - [使用 GraphQL 查询参数设计强大的 API](https://www.graph.cool/docs/tutorials/designing-powerful-apis-with-graphql-query-parameters-aing7uech3/) - Johannes Schickling - [GraphQL 和不可思议的 Apollo Client](https://medium.com/google-developer-experts/graphql-and-the-amazing-apollo-client-fe57e162a70c) - Gerard Sans +- [GraphQL 服务器基础(第一部分):Schema](https://blog.graph.cool/graphql-server-basics-the-schema-ac5e2950214e) - Nikolas Burk +- [GraphQL 服务器基础(第二部分):网络层](https://blog.graph.cool/graphql-server-basics-the-network-layer-51d97d21861) - Nikolas Burk +- [GraphQL 服务器基础(第三部分):揭秘 GraphQL 解析器中的 `info` 参数](https://blog.graph.cool/graphql-server-basics-demystifying-the-info-argument-in-graphql-resolvers-6f26249f613a) - Nikolas Burk ## 视频 From 9b9cdbebe926e3652cd2e5f13006bc08efbade39 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=AB=98=E8=8B=B1=E5=81=A5?= Date: Mon, 26 Feb 2018 11:23:42 +0800 Subject: [PATCH 49/75] up to date 20180224 (#87) --- site/code/index.html.js | 3 +- site/community/Community-Events.md | 72 +++++++----------------------- site/learn/Learn-Queries.md | 2 +- 3 files changed, 18 insertions(+), 59 deletions(-) diff --git a/site/code/index.html.js b/site/code/index.html.js index 8ce8f3bcbc..7b47cffa02 100644 --- a/site/code/index.html.js +++ b/site/code/index.html.js @@ -439,7 +439,8 @@ Executor.execute(schema, query) map println - [Graphcool](https://www.graph.cool) ([github](https://github.com/graphcool)):一个 BaaS(后端即服务),它为您的应用程序提供了一个 GraphQL 后端,且具有用于管理数据库和存储数据的强大的 web ui。 - [Reindex](https://www.reindex.io/baas/) ([github](https://github.com/reindexio/reindex-js)):一个 BaaS(后端即服务),它针对使用 React 和 Relay 的应用程序配置了 GraphQL 后端。 - [Scaphold](https://scaphold.io) ([github](https://github.com/scaphold-io)):一个 BaaS(后端即服务),为您的应用程序配置了一个拥有多种不同集成的 GraphQL 后端。 - - [Tipe](https://tipe.io) ([github](https://github.com/tipeio)): 一个 SaaS(软件即服务)内容管理系统,允许您使用强大的编辑工具创建您的内容,并通过 GraphQL 或 REST API 从任何地方访问它。 + - [Tipe](https://tipe.io) ([github](https://github.com/tipeio)):一个 SaaS(软件即服务)内容管理系统,允许您使用强大的编辑工具创建您的内容,并通过 GraphQL 或 REST API 从任何地方访问它。 + - [AWS AppSync](https://aws.amazon.com/appsync/):完全托管的 GraphQL 服务,包含实时订阅、离线编程和同步、企业级安全特性以及细粒度的授权控制。 ## 更多内容 diff --git a/site/community/Community-Events.md b/site/community/Community-Events.md index 1ab32e1243..3442b2c312 100644 --- a/site/community/Community-Events.md +++ b/site/community/Community-Events.md @@ -8,70 +8,14 @@ sublinks: 即将举行的活动,聚会 ## 即将举行的活动 -### GraphQL 在生产环境中:KLM & Bynder 的案例 - -- **日期:** 2017 年 10 月 10 日 -- **地点:** 荷兰 阿姆斯特丹 -- **链接:** https://www.meetup.com/Bynder-JS-Guild/events/242414878/ - -我们很高兴分享在 KLM 和 Bynder 的数千人每天使用的基于 GraphQL 的应用程序的经验。除了基础之外我们将讨论:持久性查询(查询白名单并减少带宽使用);Optimistic UI(使界面响应更快);将 React 组件连接到带有包装器的 GraphQL(对默认 Apollo 前端实现的改进)... 最后锦上添花的是:GraphQL订阅。 - -### GraphQL Summit 2017 - -- **日期:** 2017 年 10 月 25-26 日 -- **地点:** 美国 加利福尼亚州 旧金山 -- **链接:** http://summit.graphql.com - -GraphQL Summit 是一个完全专注于 GraphQL 开发者社区的会议。来自世界各地的演讲嘉宾将讨论关于 GraphQL 的最佳实践、设计模式、采用故事、生产环境中的 GraphQL 以及开源生态系统。今年的演讲将持续两天,并举办一个 afterparty 和工作坊。 - -## 过去的活动 - -### Relay Modern 还是 Apollo? - -- **会议:** ReactNext 2017 -- **日期:** 2017 年 9 月 10 日 -- **地点:** 以色列 特拉维夫 -- **链接:** http://react-next.com - -新项目启动发。每个人都很兴奋。在技术栈中加入了 GraphQL。啊!生活多美好!突然有人提出这个问题。那么我们应该使用哪个 GraphQL 客户端?你什么意思?哦,漏~~!别担心我会帮助你。在这个演讲中,我将把这两个客户端放在显微镜下来找出它们哪些方面最优秀、它们共同拥有什么特性、最重要的是它们的主要区别是什么?而你则可以休息了。 - -### 释放 GraphQL 和 React 的力量 - -- **会议:** OdessaJS 2017 -- **日期:** 2017 年 7 月 1 日 -- **地点:** 乌克兰 敖德萨 -- **链接:** http://odessajs.org/index_en.html - -GraphQL 很棒!仅仅一年的时间它已经受到很多来自社区的关注。许多实现已经出现并且变得越来越好。GraphQL是否适合您?它是一种查询语言还是运行时?在这个演讲中,我将带着您从零基础成为专家。 - -### GraphQL —— 人民的查询语言 - -- **日期:** 2017 年 6 月 21 日 -- **地点:** 美国 科罗拉多州 丹佛 -- **链接:** https://www.meetup.com/Node-js-Denver-Boulder/events/240482998/ - -在这个演讲中,我们将讨论 GraphQL 的历史和目标、对 GraphQL 的常见误解、以及在 Node / Express 后端设置 GraphQL。我们还将看看 GraphQL 的开发工具 GraphiQL 以及它如何自主为您的资源生成文档。如果您好奇于 GraphQL 如何使处理关系数据变得轻而易举,加入我们吧! - - ### GraphQL-Europe 会议 -- **日期:** 2017 年 5 月 21 日 +- **日期:** 2018 年 6 月 15 日 - **地点:** 德国 柏林 - **链接:** https://graphql-europe.org GraphQL-Europe 是欧洲非营利性的 GraphQL 大会,邀请了来自世界各地的演讲嘉宾。了解来自行业专家的 GraphQL 最佳实践,并成为蓬勃发展的 GraphQL 社区的一部分。 -### 工作坊 —— 使用 GraphQL 和 React 构建实时 app - -- **活动:** GraphQL Berlin -- **日期:** 2017 年 5 月 22 日 -- **地点:** 德国 柏林 -- **时长:** 2.5 小时 -- **讲师:** Gerard Sans -- **链接:** https://www.meetup.com/graphql-berlin/events/239830863 - -每个人都对订阅这一新的实时 GraphQL 功能感到兴奋。你对如何在基本的 app 中使用它感到好奇吗?这是你的工作坊!我们将介绍如何构建一个实时投票 app 的整体架构并分享我们的学习收获。 - ## 聚会 ### 北美洲 @@ -86,6 +30,17 @@ GraphQL-Europe 是欧洲非营利性的 GraphQL 大会,邀请了来自世界 - [GraphQL Miami](https://www.meetup.com/Miami-GraphQL/) - [GraphQL Los Angeles](https://www.meetup.com/Los-Angeles-GraphQL-Meetup/) - [GraphQL Dallas-Fort Worth](https://www.meetup.com/DFW-GraphQL-Meetup/) +- [GraphQL Ottawa](https://www.meetup.com/GraphQL-Ottawa/) +- [GraphQL Columbus](https://www.meetup.com/GraphQL-Columbus/) +- [GraphQL Vancouver](https://www.meetup.com/GraphQL-Vancouver/) +- [GraphQL Minneapolis](https://www.meetup.com/GraphQL-MN/) +- [GraphQL Denver/Boulder](https://www.meetup.com/GraphQL-Denver-Boulder-Meetup/) +- [GraphQL By the Bay (San Francisco)](https://www.meetup.com/graphql-by-the-bay/) + +### 南美洲 + +- [GraphQL São Paulo](https://www.meetup.com/Apollo-GraphQL/) +- [GraphQL Buenos Aires](https://www.meetup.com/GraphQL-BA/) ### 欧洲 @@ -98,6 +53,8 @@ GraphQL-Europe 是欧洲非营利性的 GraphQL 大会,邀请了来自世界 - [GraphQL Barcelona](https://www.meetup.com/GraphQL-Barcelona/) - [GraphQL Stockholm](https://www.meetup.com/GraphQL-Stockholm/) - [GraphQL Budapest](https://www.meetup.com/Budapest-GraphQL/) +- [GraphQL Lisbon](https://www.meetup.com/GraphQL-Lisbon/) +- [GraphQL Vienna](https://www.meetup.com/GraphQL-Vienna/) ### 澳洲 @@ -108,3 +65,4 @@ GraphQL-Europe 是欧洲非营利性的 GraphQL 大会,邀请了来自世界 - [GraphQL Tel Aviv](https://www.meetup.com/GraphQL-TLV/) - [GraphQL Tokyo](https://www.meetup.com/GraphQL-Tokyo/) +- [GraphQL Meetup (Bangalore)](https://www.meetup.com/GraphQL-Meetup/) diff --git a/site/learn/Learn-Queries.md b/site/learn/Learn-Queries.md index 5e3a969744..4a1a5386d2 100644 --- a/site/learn/Learn-Queries.md +++ b/site/learn/Learn-Queries.md @@ -98,7 +98,7 @@ sublinks: 字段(Fields),参数(Arguments),别名(Aliases),片段( ## 片段(Fragments) -假设我们的 app 有比较复杂的页面,将正反派主角及其友军分为两拨。你立马就能想到对应的查询会变得复杂,因为我们需要将一些字段重复至少两次 —— 两方各一次以作比较。 +假设我们的 app 有比较复杂的页面,将正反派主角及其友军分为两拨。你立马就能想到对应的查询会变得复杂,因为我们需要将一些字段重复至少一次 —— 两方各一次以作比较。 这就是为何 GraphQL 包含了称作**片段**的可复用单元。片段使你能够组织一组字段,然后在需要它们的的地方引入。下面例子展示了如何使用片段解决上述场景: From ac9ed1383791b03b0edd6b21b9583a23c729d893 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=AB=98=E8=8B=B1=E5=81=A5?= Date: Fri, 23 Mar 2018 11:17:47 +0800 Subject: [PATCH 50/75] up to date 20180319 (#88) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 没问题~~~ --- site/community/Community-Events.md | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/site/community/Community-Events.md b/site/community/Community-Events.md index 3442b2c312..f84e3a27d6 100644 --- a/site/community/Community-Events.md +++ b/site/community/Community-Events.md @@ -8,13 +8,21 @@ sublinks: 即将举行的活动,聚会 ## 即将举行的活动 -### GraphQL-Europe 会议 +### GraphQL Day + +- **日期:** 2018 年 4 月 14 日 +- **地点:** 荷兰 阿姆斯特丹 +- **链接:** https://www.graphqlday.org/ + +GraphQL Day 是针对亲身实践过 GraphQL 开发的爱好者们的会议(包括广泛的实践研讨会)。GraphQL Day 是 [GraphQL Europe](https://graphql-europe.org) 大家庭的一部分。 + +### GraphQL Europe 会议 - **日期:** 2018 年 6 月 15 日 - **地点:** 德国 柏林 - **链接:** https://graphql-europe.org -GraphQL-Europe 是欧洲非营利性的 GraphQL 大会,邀请了来自世界各地的演讲嘉宾。了解来自行业专家的 GraphQL 最佳实践,并成为蓬勃发展的 GraphQL 社区的一部分。 +GraphQL Europe 是欧洲非营利性的 GraphQL 大会,邀请了来自世界各地的演讲嘉宾。了解来自行业专家的 GraphQL 最佳实践,并成为蓬勃发展的 GraphQL 社区的一部分。**[会议征文](https://www.papercall.io/graphql-eu) 截止至 3 月 31 日**. ## 聚会 From ecbb160e73c87fc72c7dd42da70853ea4b2a129c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=AB=98=E8=8B=B1=E5=81=A5?= Date: Mon, 14 May 2018 14:26:59 +0800 Subject: [PATCH 51/75] up to date 20180514 (#89) --- site/community/Community-Events.md | 10 +--------- site/users/index.html.js | 5 +++++ site/users/logos/universe.png | Bin 0 -> 23331 bytes 3 files changed, 6 insertions(+), 9 deletions(-) create mode 100644 site/users/logos/universe.png diff --git a/site/community/Community-Events.md b/site/community/Community-Events.md index f84e3a27d6..75e0b03b9d 100644 --- a/site/community/Community-Events.md +++ b/site/community/Community-Events.md @@ -8,21 +8,13 @@ sublinks: 即将举行的活动,聚会 ## 即将举行的活动 -### GraphQL Day - -- **日期:** 2018 年 4 月 14 日 -- **地点:** 荷兰 阿姆斯特丹 -- **链接:** https://www.graphqlday.org/ - -GraphQL Day 是针对亲身实践过 GraphQL 开发的爱好者们的会议(包括广泛的实践研讨会)。GraphQL Day 是 [GraphQL Europe](https://graphql-europe.org) 大家庭的一部分。 - ### GraphQL Europe 会议 - **日期:** 2018 年 6 月 15 日 - **地点:** 德国 柏林 - **链接:** https://graphql-europe.org -GraphQL Europe 是欧洲非营利性的 GraphQL 大会,邀请了来自世界各地的演讲嘉宾。了解来自行业专家的 GraphQL 最佳实践,并成为蓬勃发展的 GraphQL 社区的一部分。**[会议征文](https://www.papercall.io/graphql-eu) 截止至 3 月 31 日**. +GraphQL Europe 是欧洲非营利性的 GraphQL 大会,邀请了来自世界各地的演讲嘉宾。了解来自行业专家的 GraphQL 最佳实践,并成为蓬勃发展的 GraphQL 社区的一部分。 ## 聚会 diff --git a/site/users/index.html.js b/site/users/index.html.js index e175ff6cec..2a2435eaf4 100644 --- a/site/users/index.html.js +++ b/site/users/index.html.js @@ -596,6 +596,11 @@ var logos = [ img: 'bynder.png', link: 'https://www.bynder.com/' }, + { + name: 'Universe', + img: 'universe.png', + link: 'https://www.universe.com/' + }, // Adding your logo? // Add it to the /users/logos/ directory and then append an entry above this comment. // diff --git a/site/users/logos/universe.png b/site/users/logos/universe.png new file mode 100644 index 0000000000000000000000000000000000000000..1d1166820d5200503ebafd9a7dbdba36c15dc940 GIT binary patch literal 23331 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 literal 0 HcmV?d00001 From e6fe9608aef7a6339f8a79f343efa5e282bedaaa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=AB=98=E8=8B=B1=E5=81=A5?= Date: Mon, 4 Jun 2018 20:03:04 +0800 Subject: [PATCH 52/75] =?UTF-8?q?=E8=A1=A5=E5=9B=9E=E4=B8=80=E9=83=A8?= =?UTF-8?q?=E5=88=86=E4=B8=8D=E5=BA=94=E5=8E=BB=E6=8E=89=E7=9A=84=E8=8B=B1?= =?UTF-8?q?=E6=96=87=E5=86=85=E5=AE=B9=20(#90)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Repair video on ‘Wrapping a REST API…’ blog post The http URL was not loadable. Changed it to https. * 补回一部分不应去掉的英文内容 --- site/blog/20160502-rest-api-graphql-wrapper.md | 2 +- site/graphql-js/APIReference-Errors.md | 2 +- site/graphql-js/APIReference-Execution.md | 4 ++-- site/graphql-js/APIReference-GraphQL.md | 2 +- site/graphql-js/APIReference-Language.md | 10 +++++----- site/graphql-js/APIReference-TypeSystem.md | 4 ++-- site/graphql-js/APIReference-Utilities.md | 4 ++-- 7 files changed, 14 insertions(+), 14 deletions(-) diff --git a/site/blog/20160502-rest-api-graphql-wrapper.md b/site/blog/20160502-rest-api-graphql-wrapper.md index c28219404c..384d4d3556 100644 --- a/site/blog/20160502-rest-api-graphql-wrapper.md +++ b/site/blog/20160502-rest-api-graphql-wrapper.md @@ -198,7 +198,7 @@ However, as we mentioned before, this architecture features some inherent perfor Take the next 10 minutes to watch me build a server side version of the GraphQL wrapper above using Node and Express. ## Bonus round: A truly Relay compliant schema diff --git a/site/graphql-js/APIReference-Errors.md b/site/graphql-js/APIReference-Errors.md index b85e69342d..46d08f8be3 100644 --- a/site/graphql-js/APIReference-Errors.md +++ b/site/graphql-js/APIReference-Errors.md @@ -14,7 +14,7 @@ import { GraphQLError } from 'graphql'; // ES6 var { GraphQLError } = require('graphql'); // CommonJS ``` -## 概述 +## 概览

  • diff --git a/site/graphql-js/APIReference-Execution.md b/site/graphql-js/APIReference-Execution.md index 362d1b20b9..2654905f58 100644 --- a/site/graphql-js/APIReference-Execution.md +++ b/site/graphql-js/APIReference-Execution.md @@ -14,7 +14,7 @@ import { execute } from 'graphql'; // ES6 var { execute } = require('graphql'); // CommonJS ``` -## 概述 +## 概览
    • @@ -27,7 +27,7 @@ var { execute } = require('graphql'); // CommonJS ## 执行 -### 执行 +### execute ```js export function execute( diff --git a/site/graphql-js/APIReference-GraphQL.md b/site/graphql-js/APIReference-GraphQL.md index a24d0e742c..bf80e4ac82 100644 --- a/site/graphql-js/APIReference-GraphQL.md +++ b/site/graphql-js/APIReference-GraphQL.md @@ -13,7 +13,7 @@ import { graphql } from 'graphql'; // ES6 var { graphql } = require('graphql'); // CommonJS ``` -## 概述 +## 概览 **入口点** diff --git a/site/graphql-js/APIReference-Language.md b/site/graphql-js/APIReference-Language.md index ecb1f90633..9fb77b5534 100644 --- a/site/graphql-js/APIReference-Language.md +++ b/site/graphql-js/APIReference-Language.md @@ -14,7 +14,7 @@ import { Source } from 'graphql'; // ES6 var { Source } = require('graphql'); // CommonJS ``` -## 概述 +## 概览 **Source** @@ -33,7 +33,7 @@ var { Source } = require('graphql'); // CommonJS
    -**词法分析器** +**词法分析器(Lexer)**
    • @@ -44,7 +44,7 @@ var { Source } = require('graphql'); // CommonJS
    -**解析器** +**解析器(Parser)**
    • @@ -120,7 +120,7 @@ type SourceLocation = { 接收一个 Source 对象和一个 UTF-8 编码的字符偏移量作为参数,返回一个 SourceLocation 对象,包含相关的行列位置信息。 -## 词法分析器 +## 词法分析器(Lexer) ### lex @@ -141,7 +141,7 @@ export type Token = { 词法分析器函数的参数是可选的,而且可被用于在 Source 里将词法分析器回退或者前进到某个新位置。 -## 解析器 +## 解析器(Parser) ### parse diff --git a/site/graphql-js/APIReference-TypeSystem.md b/site/graphql-js/APIReference-TypeSystem.md index d2f3a0cdb7..0291d80eb2 100644 --- a/site/graphql-js/APIReference-TypeSystem.md +++ b/site/graphql-js/APIReference-TypeSystem.md @@ -131,7 +131,7 @@ var { GraphQLSchema } = require('graphql'); // CommonJS
    -**标量(Scalar)类型** +**标量类型(Scalars)**
    • @@ -595,7 +595,7 @@ function getNamedType(type: ?GraphQLType): ?GraphQLNamedType 若该类型是非空类型或列表类型的包装结果,该函数会去掉包装,返回原先的类型。 -## Scalars +## 标量类型(Scalars) ### GraphQLInt diff --git a/site/graphql-js/APIReference-Utilities.md b/site/graphql-js/APIReference-Utilities.md index b817bf8d9f..73b0521aba 100644 --- a/site/graphql-js/APIReference-Utilities.md +++ b/site/graphql-js/APIReference-Utilities.md @@ -16,7 +16,7 @@ var { introspectionQuery } = require('graphql'); // CommonJS ## 概览 -**内省** +**内省(Introspection)**
      • @@ -102,7 +102,7 @@ var { introspectionQuery } = require('graphql'); // CommonJS
      -## 内省 +## 内省(Introspection) ### introspectionQuery From 3da3d33339a4a1fd705af7103495beb08930a9e7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=AB=98=E8=8B=B1=E5=81=A5?= Date: Mon, 2 Jul 2018 20:45:47 +0800 Subject: [PATCH 53/75] up to date 20180702 (#91) --- site/CNAME | 1 - site/code/index.html.js | 88 +++++++++++++++--- site/community/Community-Events.md | 12 ++- site/community/Community-Resources.md | 10 +- site/graphql-js/APIReference-Errors.md | 4 +- site/graphql-js/APIReference-Execution.md | 4 +- site/graphql-js/APIReference-TypeSystem.md | 2 +- site/graphql-js/Tutorial-GraphQLClients.md | 47 +++++----- site/graphql-js/Tutorial-Mutations.md | 34 +++---- site/graphql-js/Tutorial-PassingArguments.md | 26 +++--- site/learn/Learn-Execution.md | 11 ++- site/learn/Learn-Queries.md | 7 +- site/learn/Learn-Schema.md | 2 +- site/users/index.html.js | 57 +++++++++++- site/users/logos/atlassian.png | Bin 0 -> 37513 bytes site/users/logos/cheddar.png | Bin 0 -> 18017 bytes .../logos/{coletica.png => colectica.png} | Bin site/users/logos/hasura.png | Bin 0 -> 9173 bytes site/users/logos/jusbrasil.png | Bin 0 -> 20466 bytes site/users/logos/klm.png | Bin 0 -> 27901 bytes site/users/logos/letsevents.png | Bin 0 -> 5062 bytes site/users/logos/metric-ai.png | Bin 0 -> 3231 bytes site/users/logos/nbc-news-digital.png | Bin 0 -> 35363 bytes site/users/logos/paypal.png | Bin 0 -> 47674 bytes site/users/logos/stackshare.png | Bin 0 -> 11175 bytes site/users/logos/uctrends.png | Bin 0 -> 208202 bytes 26 files changed, 221 insertions(+), 84 deletions(-) delete mode 100644 site/CNAME create mode 100644 site/users/logos/atlassian.png create mode 100644 site/users/logos/cheddar.png rename site/users/logos/{coletica.png => colectica.png} (100%) create mode 100644 site/users/logos/hasura.png create mode 100644 site/users/logos/jusbrasil.png create mode 100644 site/users/logos/klm.png create mode 100644 site/users/logos/letsevents.png create mode 100644 site/users/logos/metric-ai.png create mode 100644 site/users/logos/nbc-news-digital.png create mode 100644 site/users/logos/paypal.png create mode 100644 site/users/logos/stackshare.png create mode 100644 site/users/logos/uctrends.png diff --git a/site/CNAME b/site/CNAME deleted file mode 100644 index 1ac261f54c..0000000000 --- a/site/CNAME +++ /dev/null @@ -1 +0,0 @@ -graphql.cn diff --git a/site/code/index.html.js b/site/code/index.html.js index 7b47cffa02..19daa7892f 100644 --- a/site/code/index.html.js +++ b/site/code/index.html.js @@ -42,6 +42,7 @@ GraphQL 已有多种编程语言支持。下表包含一些流行的服务端框 - [graphql-dotnet](https://github.com/graphql-dotnet/graphql-dotnet):.NET 的 GraphQL 实现 - [graphql-net](https://github.com/ckimes89/graphql-net):转换 GraphQL 到 IQueryable + - [Hot Chocolate](https://github.com/ChilliCream/hotchocolate):针对 .net core 和 .net classic 的 GraphQL 服务 ### Clojure @@ -111,7 +112,7 @@ $ curl -XPOST "http://0.0.0.0:3000/" -H'Content-Type: application/json' -d'{ ### Elixir - [absinthe](https://github.com/absinthe-graphql/absinthe):Elixir 的 GraphQL 实现。 - - [graphql-elixir](https://github.com/graphql-elixir/graphql): 一个 Facebook GraphQL 的 Elixir 实现。 + - [graphql-elixir](https://github.com/graphql-elixir/graphql):一个 Facebook GraphQL 的 Elixir 实现。 ### Erlang @@ -119,9 +120,11 @@ $ curl -XPOST "http://0.0.0.0:3000/" -H'Content-Type: application/json' -d'{ ### Go - - [graphql-go](https://github.com/graphql-go/graphql): 一个 Go/Golang 的 GraphQL 实现。 - - [graphql-relay-go](https://github.com/graphql-go/relay): 一个用于帮助构建 graphql-go 服务器的 Go/Golang 库,支持 react-relay 。 + - [graphql-go](https://github.com/graphql-go/graphql):一个 Go/Golang 的 GraphQL 实现。 + - [graphql-relay-go](https://github.com/graphql-go/relay):一个用于帮助构建 graphql-go 服务器的 Go/Golang 库,支持 react-relay 。 - [neelance/graphql-go](https://github.com/neelance/graphql-go):一个活跃的 Golang GraphQL 实现。 + - [machinebox/graphql](https://github.com/machinebox/graphql):用于 GraphQL 的一个优雅的底层 HTTP 客户端。 + - [samsarahq/thunder](https://github.com/samsarahq/thunder):可轻松进行 schema 构建、实时查询和批处理的 GraphQL 实现。 ### Groovy @@ -135,7 +138,7 @@ $ curl -XPOST "http://0.0.0.0:3000/" -H'Content-Type: application/json' -d'{ - 在启动时使用 spring bean 配置生成 schema,以便于扩展。 - 包含一个在开发环境下默认启用的 [GraphiQL](https://github.com/graphql/graphiql) 浏览器。这一浏览器可以在 /graphql/browser 下访问。 - 使用 Grails 提供的数据绑定覆盖默认的数据绑定 -- 提供一个 [特质](https://grails.github.io/gorm-graphql/latest/api/org/grails/gorm/graphql/plugin/testing/GraphQLSpec.html) 以使您更容易对 GraphQL 入口端点进行集成测试 +- 提供一个 [特质](https://grails.github.io/gorm-graphql/latest/api/org/grails/gorm/graphql/plugin/testing/GraphQLSpec.html) 以使你更容易对 GraphQL 入口端点进行集成测试 更多信息请查看 [文档](https://grails.github.io/gorm-graphql/latest/guide/index.html)。 @@ -302,6 +305,47 @@ Apollo Server 也支持所有的 Node.js HTTP 服务器框架:Express、Connec - [graphql-php](https://github.com/webonyx/graphql-php):GraphQL 参考实现的 PHP 移植版本。 - [graphql-relay-php](https://github.com/ivome/graphql-relay-php):一个用于辅助构建 graphql-php 服务器的库,支持 react-relay。 +#### [Siler](https://siler.leocavalcante.com/graphql/) ([github](https://github.com/leocavalcante/siler)) + +Siler 是一个具有高级抽象功能,可与 GraphQL 搭配使用的 PHP 库。 + +如果要运行 Siler 的 hello world 脚本: + +\`\`\`graphql +type Query { + hello: String +} +\`\`\` + +\`\`\`php + [ + 'hello' => 'world', + ], +]; +$schema = Graphql\schema($typeDefs, $resolvers); + +echo "Server running at http://127.0.0.1:8080\\n"; +Http\server(Graphql\psr7($schema), function (\Throwable $err) { + var_dump($err); + return Diactoros\json([ + 'error' => true, + 'message' => $err->getMessage(), + ]); +})()->run(); +\`\`\` + +它还根据 Apollo 的工作原理提供了构建 WebSocket 订阅服务器的功能。 + ### Python #### [Graphene](http://graphene-python.org/) ([github](https://github.com/graphql-python/graphene)) @@ -320,14 +364,14 @@ pip install graphene import graphene class Query(graphene.ObjectType): - hello = graphene.String() + hello = graphene.String(name=graphene.String(default_value="World")) - def resolve_hello(self, args, context, info): - return 'Hello world!' + def resolve_hello(self, info, name): + return 'Hello ' + name schema = graphene.Schema(query=Query) result = schema.execute('{ hello }') -print(result.data['hello']) +print(result.data['hello']) # "Hello World" \`\`\` 其也有对 [Relay](https://facebook.github.io/relay/)、Django、SQLAlchemy 和 Google App Engine 的良好绑定。 @@ -361,7 +405,7 @@ Schema = GraphQL::Schema.define do query QueryType end -puts Schema.execute('{ hello }') +puts Schema.execute('{ hello }').to_json \`\`\` 其也有对于 Relay 和 Rails 的良好绑定。 @@ -391,6 +435,7 @@ Executor.execute(schema, query) map println ## GraphQL 客户端 - [C# / .NET](#c-net-1) +- [Clojurescript](#clojurescript-1) - [Go](#go-1) - [Java / Android](#java-android) - [JavaScript](#javascript-1) @@ -399,15 +444,22 @@ Executor.execute(schema, query) map println ### C# / .NET + - [GraphQL.Client](https://github.com/graphql-dotnet/graphql-client):一个用于 .NET 的 GraphQL 客户端。 - [graphql-net-client](https://github.com/bkniffler/graphql-net-client):基于 .Net 的 GraphQL 客户端基本样例。 + - [SAHB.GraphQLClient](https://github.com/sahb1239/SAHB.GraphQLClient):GraphQL 客户端,支持从 C# 的类生成查询。 + +### Clojurescript + + - [re-graph](https://github.com/oliyh/re-graph/):一个在 Clojurescript 中实现的 GraphQL 客户端,支持 websockets。 ### Go - - [graphql](https://github.com/shurcooL/graphql#readme): 一个使用 Go 编写的 GraphQL 客户端实现。 + - [graphql](https://github.com/shurcooL/graphql#readme):一个使用 Go 编写的 GraphQL 客户端实现。 ### Java / Android - [Apollo Android](https://github.com/apollographql/apollo-android):一个用于 Android 的 GraphQL 客户端,强类型、带缓存功能,使用 Java 编写。 + - [Nodes](https://github.com/americanexpress/nodes):一个 GraphQL JVM 客户端,用于从标准模型定义构建查询。 ### JavaScript @@ -416,6 +468,8 @@ Executor.execute(schema, query) map println - [graphql-request](https://github.com/graphcool/graphql-request):一个简单的弹性的 JavaScript GraphQL 客户端,可以运行于所有的 JavaScript 环境(浏览器,Node.js 和 React Native)—— 基本上是 \`fetch\` 的轻度封装。 - [Lokka](https://github.com/kadirahq/lokka):一个简单的 JavaScript GraphQL 客户端,可以运行于所有的 JavaScript 环境 —— 浏览器,Node.js 和 React Native。 - [nanogql](https://github.com/yoshuawuyts/nanogql):一个使用模板字符串的小型 GraphQL 客户端库。 + - [gq-loader](https://github.com/Houfeng/gq-loader):一个简单的 JavaScript GraphQL 客户端,通过 webpack 加载器让 *.gql 文件作为模块使用。 + - [AWS Amplify](https://aws.github.io/aws-amplify):使用云服务进行应用开发的 JavaScript 库,支持 GraphQL 后端和用于处理 GraphQL 数据的 React 组件。 ### Swift / Objective-C iOS @@ -425,22 +479,26 @@ Executor.execute(schema, query) map println ### Python - [GQL](https://github.com/graphql-python/gql):一个 Python 中的 GraphQL 客户端。 - + - [python-graphql-client](https://github.com/graphcool/python-graphql-client):适用于 Python 2.7+ 的简单 GraphQL 客户端。 + - [sgqlc](https://github.com/profusion/sgqlc):一个简单的 Python GraphQL 客户端。支持为 GraphQL schema 中定义的类型生成代码。 + ## 工具 - [graphiql](https://github.com/graphql/graphiql) ([npm](https://www.npmjs.com/package/graphiql)):一个交互式的运行于浏览器中的 GraphQL IDE. - [libgraphqlparser](https://github.com/graphql/libgraphqlparser):一个 C++ 版 GraphQL 查询语言分析器,提供 C 和 C++ API。 - [Graphql Language Service](https://github.com/graphql/graphql-language-service):一个用于构建 IDE 的 GraphQL 语言服务(诊断、自动完成等)的接口。 + - [quicktype](https://quicktype.io) ([github](https://github.com/quicktype/quicktype)):在 TypeScript、Swift、golang、C#、C++ 等语言中为 GraphQL 查询生成类型。 ## 服务 - [Apollo Engine](http://www.apollographql.com/engine/):一个用于监视 GraphQL 后端的性能和使用的服务。 - - [GraphCMS](https://graphcms.com/):一个 BaaS(后端即服务),它为您配置了一个作为内容编辑工具来处理存储数据的 GraphQL 后端。 - - [Graphcool](https://www.graph.cool) ([github](https://github.com/graphcool)):一个 BaaS(后端即服务),它为您的应用程序提供了一个 GraphQL 后端,且具有用于管理数据库和存储数据的强大的 web ui。 + - [GraphCMS](https://graphcms.com/):一个 BaaS(后端即服务),它为你配置了一个作为内容编辑工具来处理存储数据的 GraphQL 后端。 + - [Graphcool](https://www.graph.cool) ([github](https://github.com/graphcool)):一个 BaaS(后端即服务),它为你的应用程序提供了一个 GraphQL 后端,且具有用于管理数据库和存储数据的强大的 web ui。 - [Reindex](https://www.reindex.io/baas/) ([github](https://github.com/reindexio/reindex-js)):一个 BaaS(后端即服务),它针对使用 React 和 Relay 的应用程序配置了 GraphQL 后端。 - - [Scaphold](https://scaphold.io) ([github](https://github.com/scaphold-io)):一个 BaaS(后端即服务),为您的应用程序配置了一个拥有多种不同集成的 GraphQL 后端。 - - [Tipe](https://tipe.io) ([github](https://github.com/tipeio)):一个 SaaS(软件即服务)内容管理系统,允许您使用强大的编辑工具创建您的内容,并通过 GraphQL 或 REST API 从任何地方访问它。 + - [Scaphold](https://scaphold.io) ([github](https://github.com/scaphold-io)):一个 BaaS(后端即服务),为你的应用程序配置了一个拥有多种不同集成的 GraphQL 后端。 + - [Tipe](https://tipe.io) ([github](https://github.com/tipeio)):一个 SaaS(软件即服务)内容管理系统,允许你使用强大的编辑工具创建你的内容,并通过 GraphQL 或 REST API 从任何地方访问它。 - [AWS AppSync](https://aws.amazon.com/appsync/):完全托管的 GraphQL 服务,包含实时订阅、离线编程和同步、企业级安全特性以及细粒度的授权控制。 + - [Hasura](https://hasura.io):一个 BaaS(后端即服务),允许你在 Postgres 上创建数据表、定义权限并使用 GraphQL 接口查询和操作。 ## 更多内容 diff --git a/site/community/Community-Events.md b/site/community/Community-Events.md index 75e0b03b9d..e62dee337d 100644 --- a/site/community/Community-Events.md +++ b/site/community/Community-Events.md @@ -16,6 +16,14 @@ sublinks: 即将举行的活动,聚会 GraphQL Europe 是欧洲非营利性的 GraphQL 大会,邀请了来自世界各地的演讲嘉宾。了解来自行业专家的 GraphQL 最佳实践,并成为蓬勃发展的 GraphQL 社区的一部分。 +### GraphQL Finland 会议 + +- **日期:** 2018 年 10 月 18 - 19 日 +- **地点:** 芬兰 赫尔辛基 +- **链接:** https://graphql-finland.fi/ + +GraphQL Finland 是一个社区组织的 GraphQL 会议。这是首次在芬兰举办这样的活动,该活动由一天的研讨会和一天的专题演讲组成。GraphQL Finland 由 React Finland 的团队组织。 + ## 聚会 ### 北美洲 @@ -27,7 +35,6 @@ GraphQL Europe 是欧洲非营利性的 GraphQL 大会,邀请了来自世界 - [GraphQL NYC](https://www.meetup.com/GraphQL-NYC/) - [GraphQL Atlanta](https://www.meetup.com/GraphQL-Atlanta/) - [GraphQL Austin](https://www.meetup.com/ATX-GraphQL/) -- [GraphQL Miami](https://www.meetup.com/Miami-GraphQL/) - [GraphQL Los Angeles](https://www.meetup.com/Los-Angeles-GraphQL-Meetup/) - [GraphQL Dallas-Fort Worth](https://www.meetup.com/DFW-GraphQL-Meetup/) - [GraphQL Ottawa](https://www.meetup.com/GraphQL-Ottawa/) @@ -46,7 +53,6 @@ GraphQL Europe 是欧洲非营利性的 GraphQL 大会,邀请了来自世界 - [GraphQL Amsterdam](https://www.meetup.com/Amsterdam-GraphQL-Meetup/) - [GraphQL Berlin](https://www.meetup.com/graphql-berlin/) -- [GraphQL Istanbul](https://www.meetup.com/GraphQL-Istanbul/) - [GraphQL London](https://www.meetup.com/GraphQL-London) - [GraphQL Paris](https://www.meetup.com/GraphQL-Paris/) - [GraphQL Munich](https://www.meetup.com/GraphQL-Munich/) @@ -59,7 +65,7 @@ GraphQL Europe 是欧洲非营利性的 GraphQL 大会,邀请了来自世界 ### 澳洲 - [GraphQL Melbourne](http://graphql.melbourne/) -- [GraphQL Sydney](http://graphql.sydney/) +- [GraphQL Sydney](https://graphql.sydney/) ### 亚洲 diff --git a/site/community/Community-Resources.md b/site/community/Community-Resources.md index c8be0635d4..54ec733057 100644 --- a/site/community/Community-Resources.md +++ b/site/community/Community-Resources.md @@ -13,7 +13,7 @@ sublinks: 博客,视频 ## Facebook Group -加入 [GraphQL Facebook Group](https://www.facebook.com/groups/graphql.community/) 来提出问题、讨论和分享。GraphQL Facebook group 是首选的发布公告和进行广泛讨论的场所。 +加入 [GraphQL Facebook Group](https://www.facebook.com/groups/graphql.community/) 分享和发现新内容。GraphQL Facebook group 是首选的发布公告和进行广泛讨论的场所。 ## Twitter @@ -55,7 +55,7 @@ sublinks: 博客,视频 - [从 REST 到 GraphQL](https://0x2a.sh/from-rest-to-graphql-b4e95e94c26b#.tag7nzkrb) - Jacob Gillespie - [GraphQL 讲解](https://medium.com/apollo-stack/graphql-explained-5844742f195e#.zdykxos6i) - Jonas Helfer - [GraphQL 概念可视化](https://medium.com/apollo-stack/the-concepts-of-graphql-bc68bd819be3#.hfczgtdsj) - Dhaivat Pandya -- [构建 f8 App:使用 GraphQL & Relay](http://makeitopen.com/tutorials/building-the-f8-app/relay/) +- [构建 f8 App:使用 GraphQL & Relay](http://makeitopen.com/docs/en/1-A2-relay.html) - [你的第一个 GraphQL 服务器](https://medium.com/the-graphqlhub/your-first-graphql-server-3c766ab4f0a2#.ovn0y19k4) - Clay Allsopp - [教程:用 Apollo-server、Dataloader 和 Knex 启动一个 JS API](https://bamtech.gitbooks.io/dev-standards/content/backend/graphql-js/getting-started-with-apollo-server-dataloader-knex.mo.html) - Thomas Pucci - [教程:如何构建一个 GraphQL 服务器](https://medium.com/apollo-stack/tutorial-building-a-graphql-server-cddaa023c035#.bu6sdnst4) - Jonas Helfer @@ -92,9 +92,15 @@ Facebook 内外的开发者在世界各地的会议和聚会上都谈到了 Grap - [使用 Angular 2 释放 GraphQL 的力量](https://www.youtube.com/watch?v=VYpJ9pfugM8) - Gerard Sans, NG-BE 2016 - [网络研讨会系列:GraphQL 在世界各地](https://graphql-world.com/webinar) - Vince Ning & Michael Paris - [GraphQL Europe 中的所有演讲](https://www.youtube.com/playlist?list=PLn2e1F9Rfr6n_WFm9fPE-_wYPrYvSTySt) - Lee Byron, Sashko Stubailo, Dan Schafer, Johannes Schickling 等 +- [学习基于 React 和 Relay 的 GraphQL](https://www.packtpub.com/application-development/learning-graphql-react-and-relay-video) - Divyendu Singh +- [实践比 RESTful Web 服务更好的 GraphQL(视频)](https://www.packtpub.com/application-development/hands-graphql-better-restful-web-services-video) - Ashwin Hegde ## 图书 +- [GraphQL 指南](https://graphql.guide) - John Resig 和 Loren Sands-Ramshaw +- [学习 GraphQL](https://www.amazon.com/Learning-GraphQL-Declarative-Fetching-Modern/dp/1492030716/) - Eve Porcello 和 Alex Banks +- [全栈 GraphQL](https://www.graphql.college/fullstack-graphql) - Julian Mayorga +- [在 Elixir 和 Absinthe 中使用 Craft GraphQL API](https://pragprog.com/book/wwgraphql/craft-graphql-apis-in-elixir-with-absinthe) - Bruce Williams and Ben Wilson - [学习 GraphQL 和 Relay](https://www.packtpub.com/web-development/learning-graphql-and-relay) - Samer Buna ## 更多资源 diff --git a/site/graphql-js/APIReference-Errors.md b/site/graphql-js/APIReference-Errors.md index 46d08f8be3..422814ee1d 100644 --- a/site/graphql-js/APIReference-Errors.md +++ b/site/graphql-js/APIReference-Errors.md @@ -54,7 +54,9 @@ class GraphQLError extends Error { nodes?: Array, stack?: ?string, source?: Source, - positions?: Array + positions?: Array, + originalError?: ?Error, + extensions?: ?{ [key: string]: mixed } ) } ``` diff --git a/site/graphql-js/APIReference-Execution.md b/site/graphql-js/APIReference-Execution.md index 2654905f58..71f7baf1c5 100644 --- a/site/graphql-js/APIReference-Execution.md +++ b/site/graphql-js/APIReference-Execution.md @@ -37,7 +37,9 @@ export function execute( contextValue?: mixed, variableValues?: ?{[key: string]: mixed}, operationName?: ?string -): Promise +): MaybePromise + +type MaybePromise = Promise | T; type ExecutionResult = { data: ?Object; diff --git a/site/graphql-js/APIReference-TypeSystem.md b/site/graphql-js/APIReference-TypeSystem.md index 0291d80eb2..05bfd11a68 100644 --- a/site/graphql-js/APIReference-TypeSystem.md +++ b/site/graphql-js/APIReference-TypeSystem.md @@ -442,7 +442,7 @@ var RGBType = new GraphQLEnumType({ ```js class GraphQLInputObjectType { - constructor(config: GraphQLInputObjectTypeConfig) + constructor(config: GraphQLInputObjectConfig) } type GraphQLInputObjectConfig = { diff --git a/site/graphql-js/Tutorial-GraphQLClients.md b/site/graphql-js/Tutorial-GraphQLClients.md index d9f1b3e40e..07aa3d3836 100644 --- a/site/graphql-js/Tutorial-GraphQLClients.md +++ b/site/graphql-js/Tutorial-GraphQLClients.md @@ -23,18 +23,21 @@ http://localhost:4000/graphql {"data":{"hello":"Hello world!"}} ``` +如果你更倾向于使用图形用户界面发送测试查询,你可以使用客户端,例如 [GraphiQL](https://github.com/graphql/graphiql) 和 [Insomnia](https://github.com/getinsomnia/insomnia)。 + 通过浏览器发送 GraphQL 也很简单。打开 http://localhost:4000 ,开启开发者控制台,粘贴: ```javascript -var xhr = new XMLHttpRequest(); -xhr.responseType = 'json'; -xhr.open("POST", "/graphql"); -xhr.setRequestHeader("Content-Type", "application/json"); -xhr.setRequestHeader("Accept", "application/json"); -xhr.onload = function () { - console.log('data returned:', xhr.response); -} -xhr.send(JSON.stringify({query: "{ hello }"})); +fetch('http://github.com/graphql', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + 'Accept': 'application/json', + }, + body: JSON.stringify({query: "{ hello }"}) +}) + .then(r => r.json()) + .then(data => console.log('data returned:', data)); ``` 你会在控制台中见到返回的数据: @@ -58,21 +61,23 @@ type Query { ```javascript var dice = 3; var sides = 6; -var xhr = new XMLHttpRequest(); -xhr.responseType = 'json'; -xhr.open("POST", "/graphql"); -xhr.setRequestHeader("Content-Type", "application/json"); -xhr.setRequestHeader("Accept", "application/json"); -xhr.onload = function () { - console.log('data returned:', xhr.response); -} var query = `query RollDice($dice: Int!, $sides: Int) { rollDice(numDice: $dice, numSides: $sides) }`; -xhr.send(JSON.stringify({ - query: query, - variables: { dice: dice, sides: sides }, -})); + +fetch('http://github.com/graphql', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + 'Accept': 'application/json', + }, + body: JSON.stringify({ + query, + variables: { dice, sides }, + }) +}) + .then(r => r.json()) + .then(data => console.log('data returned:', data)); ``` 这种语法的变量有助于自动避免转义 bug,也更容易监控服务器。 diff --git a/site/graphql-js/Tutorial-Mutations.md b/site/graphql-js/Tutorial-Mutations.md index c19449d1eb..71f636430c 100644 --- a/site/graphql-js/Tutorial-Mutations.md +++ b/site/graphql-js/Tutorial-Mutations.md @@ -165,28 +165,30 @@ mutation { ```javascript var author = 'andy'; var content = 'hope is a good thing'; -var xhr = new XMLHttpRequest(); -xhr.responseType = 'json'; -xhr.open("POST", "/graphql"); -xhr.setRequestHeader("Content-Type", "application/json"); -xhr.setRequestHeader("Accept", "application/json"); -xhr.onload = function () { - console.log('data returned:', xhr.response); -} var query = `mutation CreateMessage($input: MessageInput) { createMessage(input: $input) { id } }`; -xhr.send(JSON.stringify({ - query: query, - variables: { - input: { - author: author, - content: content, + +fetch('http://github.com/graphql', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + 'Accept': 'application/json', + }, + body: JSON.stringify({ + query, + variables: { + input: { + author, + content, + } } - } -})); + }) +}) + .then(r => r.json()) + .then(data => console.log('data returned:', data)); ``` 一个十分特殊的变更类型是“改变用户”,譬如注册新用户。除了使用 GraphQL 变更来实现这个功能之外,在学完 [GraphQL 认证和 Express 中间件](/graphql-js/authentication-and-express-middleware/) 之后你还能使用现有库来实现。 diff --git a/site/graphql-js/Tutorial-PassingArguments.md b/site/graphql-js/Tutorial-PassingArguments.md index 54a463ce74..e2298528cd 100644 --- a/site/graphql-js/Tutorial-PassingArguments.md +++ b/site/graphql-js/Tutorial-PassingArguments.md @@ -106,21 +106,23 @@ console.log('Running a GraphQL API server at localhost:4000/graphql'); ```javascript var dice = 3; var sides = 6; -var xhr = new XMLHttpRequest(); -xhr.responseType = 'json'; -xhr.open("POST", "/graphql"); -xhr.setRequestHeader("Content-Type", "application/json"); -xhr.setRequestHeader("Accept", "application/json"); -xhr.onload = function () { - console.log('data returned:', xhr.response); -} var query = `query RollDice($dice: Int!, $sides: Int) { rollDice(numDice: $dice, numSides: $sides) }`; -xhr.send(JSON.stringify({ - query: query, - variables: { dice: dice, sides: sides }, -})); + +fetch('http://github.com/graphql', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + 'Accept': 'application/json', + }, + body: JSON.stringify({ + query, + variables: { dice, sides }, + }) +}) + .then(r => r.json()) + .then(data => console.log('data returned:', data)); ``` 使用 `$dice` 和 `$sides` 作为 GraphQL 中的变量,我们无需在客户端对它们进行转义。 diff --git a/site/learn/Learn-Execution.md b/site/learn/Learn-Execution.md index 02b6472e8e..3f02fd3fb7 100644 --- a/site/learn/Learn-Execution.md +++ b/site/learn/Learn-Execution.md @@ -59,7 +59,7 @@ type Starship { ```js Query: { - human(obj, args, context) { + human(obj, args, context, info) { return context.db.loadHumanByID(args.id).then( userData => new Human(userData) ) @@ -67,18 +67,19 @@ Query: { } ``` -这个例子使用了 JavaScript 语言,但 GraphQL 服务端应用可以被 [多种语言实现](/code/)。解析器函数接收 3 个参数: +这个例子使用了 JavaScript 语言,但 GraphQL 服务端应用可以被 [多种语言实现](/code/)。解析器函数接收 4 个参数: - `obj` 上一级对象,如果字段属于根节点查询类型通常不会被使用。 - `args` 可以提供在 GraphQL 查询中传入的参数。 - `context` 会被提供给所有解析器,并且持有重要的上下文信息比如当前登入的用户或者数据库访问对象。 +- `info` 一个保存与当前查询相关的字段特定信息以及 schema 详细信息的值,[更多详情请参考类型 GraphQLResolveInfo](/graphql-js/type/#graphqlobjecttype). ## 异步解析器 让我们来分析一下在这个解析器函数中发生了什么。 ```js -human(obj, args, context) { +human(obj, args, context, info) { return context.db.loadHumanByID(args.id).then( userData => new Human(userData) ) @@ -95,7 +96,7 @@ human(obj, args, context) { ```js Human: { - name(obj, args, context) { + name(obj, args, context, info) { return obj.name } } @@ -129,7 +130,7 @@ Human: { ```js Human: { - starships(obj, args, context) { + starships(obj, args, context, info) { return obj.starshipIDs.map( id => context.db.loadStarshipByID(id).then( shipData => new Starship(shipData) diff --git a/site/learn/Learn-Queries.md b/site/learn/Learn-Queries.md index 4a1a5386d2..71388e6f68 100644 --- a/site/learn/Learn-Queries.md +++ b/site/learn/Learn-Queries.md @@ -128,7 +128,6 @@ fragment comparisonFields on Character { ## 操作名称(Operation name) 这之前,我们都使用了简写句法,省略了 `query` 关键字和查询名称,但是生产中使用这些可以使我们代码减少歧义。 -如果你想要执行查询以外的操作或传递动态变量,则需要将这些可选部分用于 GraphQL 操作。 下面的示例包含了作为**操作类型**的关键字 `query` 以及**操作名称** `HeroNameAndFriends`: @@ -144,9 +143,9 @@ query HeroNameAndFriends { } ``` -**操作类型**可以是 _query_、_mutation_ 或 _subscription_,描述你打算做什么类型的操作。 +**操作类型**可以是 _query_、_mutation_ 或 _subscription_,描述你打算做什么类型的操作。操作类型是必需的,除非你使用查询简写语法,在这种情况下,你无法为操作提供名称或变量定义。 -**操作名称**是你的操作的有意义和明确的名称。这对于调试和服务器端日志记录的原因可能非常有用。 +**操作名称**是你的操作的有意义和明确的名称。它仅在有多个操作的文档中是必需的,但我们鼓励使用它,因为它对于调试和服务器端日志记录非常有用。 当在你的网络日志或是 GraphQL 服务器中出现问题时,通过名称来从你的代码库中找到一个查询比尝试去破译内容更加容易。 就把它想成你喜欢的程序语言中的函数名。例如,在 JavaScript 中,我们只用匿名函数就可以工作,但是当我们给了函数名之后,就更加容易追踪、调试我们的代码,并在其被调用的时候做日志。同理,GraphQL 的查询和变更名称,以及片段名称,都可以成为服务端侧用来识别不同 GraphQL 请求的有效调试工具。 @@ -166,7 +165,7 @@ query HeroNameAndFriends { 全部做完之后就像这个样子: ```graphql -# { "graphiql": true, "variables": { "episode": "JEDI" } } +# { "graphiql": true, "variables": { "episode": JEDI } } query HeroNameAndFriends($episode: Episode) { hero(episode: $episode) { name diff --git a/site/learn/Learn-Schema.md b/site/learn/Learn-Schema.md index cbc125b662..108a8704da 100644 --- a/site/learn/Learn-Schema.md +++ b/site/learn/Learn-Schema.md @@ -114,7 +114,7 @@ type Query { 一个对象类型有自己的名字和字段,而某些时候,这些字段必然会解析到具体数据。这就是标量类型的来源:它们表示对应 GraphQL 查询的叶子节点。 -下列查询中,`name` 和 `appearsIn` 将解析到标量类型: +下列查询中,`name` 和 `appearsIn` 字段将解析到标量类型: ```graphql # { "graphiql": true } diff --git a/site/users/index.html.js b/site/users/index.html.js index 2a2435eaf4..2e9ae50f45 100644 --- a/site/users/index.html.js +++ b/site/users/index.html.js @@ -137,7 +137,7 @@ var logos = [ { name: '20 Minutes', img: '20minutes.png', - link: 'http://www.20minutes.fr/' + link: 'https://www.20minutes.fr/' }, { name: 'AlloCiné', @@ -596,11 +596,66 @@ var logos = [ img: 'bynder.png', link: 'https://www.bynder.com/' }, + { + name: 'Hasura', + img: 'hasura.png', + link: 'https://hasura.io/' + }, + { + name: 'Atlassian', + img: 'atlassian.png', + link: 'https://www.atlassian.com/' + }, + { + name: 'Lets.events', + img: 'letsevents.png', + link: 'https://lets.events/' + }, + { + name: 'KLM Royal Dutch Airlines', + img: 'klm.png', + link: 'https://www.klm.com/' + }, { name: 'Universe', img: 'universe.png', link: 'https://www.universe.com/' }, + { + name: 'StackShare', + img: 'stackshare.png', + link: 'https://stackshare.io/' + }, + { + name: 'Metric.ai', + img: 'metric-ai.png', + link: 'https://www.metric.ai/' + }, + { + name: 'Jusbrasil', + img: 'jusbrasil.png', + link: 'https://www.jusbrasil.com.br/' + }, + { + name: 'NBC News Digital', + img: 'nbc-news-digital.png', + link: 'https://www.nbcnews.com/' + }, + { + name: 'PayPal', + img: 'paypal.png', + link: 'https://www.paypal.com/' + }, + { + name: 'Cheddar', + img: 'cheddar.png', + link: 'https://cheddar.com/' + }, + { + name: 'UC Trends', + img: 'uctrends.png', + link: 'https://trends.ucweb.com/' + } // Adding your logo? // Add it to the /users/logos/ directory and then append an entry above this comment. // diff --git a/site/users/logos/atlassian.png b/site/users/logos/atlassian.png new file mode 100644 index 0000000000000000000000000000000000000000..3da3cc1f1092e2aaf5d8a1ce9637e66a01591cec GIT binary patch literal 37513 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 BbtV7+ literal 0 HcmV?d00001 diff --git a/site/users/logos/cheddar.png b/site/users/logos/cheddar.png new file mode 100644 index 0000000000000000000000000000000000000000..bad41c15b10bd21a95729d816e8984fe0721c8c7 GIT binary patch literal 18017 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 literal 0 HcmV?d00001 diff --git a/site/users/logos/jusbrasil.png b/site/users/logos/jusbrasil.png new file mode 100644 index 0000000000000000000000000000000000000000..4a87607c7664a18fd6ebc39903074115f58d0a0f GIT binary patch literal 20466 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 bqjCN}z;btRfyfSu00000NkvXXu0mjfAQkr$ literal 0 HcmV?d00001 diff --git a/site/users/logos/klm.png b/site/users/logos/klm.png new file mode 100644 index 0000000000000000000000000000000000000000..ee28606cf51cc93e700e4cadb43c52dbe2f4e13b GIT binary patch literal 27901 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 H!>#`VpDIwU literal 0 HcmV?d00001 diff --git a/site/users/logos/letsevents.png b/site/users/logos/letsevents.png new file mode 100644 index 0000000000000000000000000000000000000000..1072597e8dab597333ceee38ad3d25bf6889753b GIT binary patch literal 5062 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 literal 0 HcmV?d00001 diff --git a/site/users/logos/metric-ai.png b/site/users/logos/metric-ai.png new file mode 100644 index 0000000000000000000000000000000000000000..9c1daa900995e582f239888bf3cb954ccd38c03e GIT binary patch literal 3231 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 r=f=)@XC6A&($J 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 literal 0 HcmV?d00001 diff --git a/site/users/logos/stackshare.png b/site/users/logos/stackshare.png new file mode 100644 index 0000000000000000000000000000000000000000..ab53088d05b9edb918821c19d62dcd39a56009e2 GIT binary patch literal 11175 zcmXwfcOYBu_kXO!h=|#Ugv2hXRjXAyc9kfawnnT{TB|6kR*cxAit0dAi%5+uWPQ$rn-j?i0)e>AOz}1#5DO0Y z9>ER^0nX0w6plCK_CD_K?DaY z`=n>*^h&=wsr~;u!HXhH_jp$dM)5}fhTxkW>PI-bN0KLc|KE*(4@WI5zov?wedkdk z{L={Ht#3gdt^=Us_q)?-2X-^5v!DKyAe2iJBbO9L0&j*7@tZv!2c%-c&M@M+(E*MgSm{o zH7#${e>yl8{vjg$Q=NDz*eqN`#@g2n z&HOWfdB70=k3Y-D2q8{=P|w@|TFdFz^Zz|Apc_Ml#9e75vPk2fu?y;YP6ua}Cj1P3 z2<9|x@0t|5li9v*et(wDBjidOzYgaA-;8*FC}^2A4I4Im3|IIver&fnVk1=M^z|D) z)SFGPmC9dLJ5op-?W>yH9tjKX)4rm_OOB@?a3hDm@!G#edGu2phklMADwl&gp+qEEdJR$N z2GHDnZe^khU;vmaPr~U>;ERP9o0sNM1+MC6@%!>G@*%Z+auP7I#A zDLJ-Q^*ET^Whl0?7b(9#p11vD1960Z`XY*RrAk87%p4HD<{N#82Mg1LZs(_>c; zvK#x(Rf$!O9yLpeNKO2j?3E8+&`zSW>azp!u5Pk7%+ct zq9mbLiwMLlROni0$%Tfoz4Vwuzpe9ppB?!hj+c|!>^mYp{&Q>p>I7TzioeC!f^kH7!uuR_Yk!Vi^` zo*xf3WIn!a9{%+<8~w4O-S5$j!u_L*td|2}LR!RY>RLqH$2?SXeje+a_Ch@kysPuCf$w*#vwgLZL<5E7jhMtgy>IF#tQUiCdXwI(B&Z2u3AwY~@zU zR<-^uOY003ygtY+R-}EYNLjS&T^-CLI|vYbw=D6(Ab4Yju*C z*}uA~o-S5UFy=gK&w2yHIccC~JVGM6dN$Y4#~D6Ja0c1%BE2akG0nyPuEc5 zyexS5_IVd;P}?WXHczt0@$q$L+ml7AujEs@HgBf3p2lPMXy{K2-baRN0_SLS8z>J| z`3+wr~~hvV5@b7tLtqQoj7}e zBY1#C7t5OTN#U%X)_4MQ2n`XmUX+RA(sEUq{3`Xdi}AaX-dB?CIQ19#n#>lYFxhHD zu?QituN2`_pQWe43oDrT@3y<`qHbXo#>k>|svs-t6_PAW-+{&_Htj3$JCuea-=84E z@uQlL^-EMj!FPCL>!xL;smCi=Lus~j6HRu)8^r4@PF*|juT5^4p2I8t34f-uwNhe+ z&sb;6l`grlNS;#^j_CaTFO_Iba8T0D5S>|%VC1%Jzl zSvEaTzOyZ6_w$u;7DX-YLJ4NZy$-K9aRpfJf`17YxAwy2gdxr&OK1!Wqxg$gOrQ=L z$E}S#6!Cuzv0{I!A93x3@9$C4avV{M`v%tBmu&oWRvwQP{g$3!`kE|tF1}?Uh0h}G zNvFE1s951oP%<8URar(nK5!R#493y3HIY6qAlCdo!?KEQa90V%2iF=DT*Nf^cFD14 z4v?kLzp4>@n8Fg&_;dIehGq6fGd0?R>>+jbrt};Aoa+W2?U#{bGwhNe6^5Yi?;etw zi8CcJy;$e0Jv(p^@8eoify*l%; zF^yapf|shzT@6e>I#}d^nVGHIoO&H)x-QDAbNHs(x;<-rw#V9rTj(^82$pI4#Nqhy zT~21n1Jc!`>zUDG@%z)pi!R3{F-;*1jy}2k=geRAa@Gt4+b{E`#;{ro_1-!|OeP7n z%S;-|saoiZtj4i^Rv(`w(*vRLndeVT>*YL*4b@`1fz=5S=pUtLLl*Yq=4&O=+lM~1 zZK=b2k35OgbcrX(hQsz~^K81ou#1Ld(aP-3&;S&IHB%)vMYB3cugCVR%qU6ftp^3r zp2w7%Pdmds68!~dD^X2k*3WsOx-Mp2cuGGsA!H82loum%290Y;>#kCV8**YERk&zL zV*X&iz;Y20uVlrmw?97XxUWz$zBC>O~gt7wkE~yzWWNtl!N>BC=kr;C5GuImyII|=i@?+&A+;|+`2}ots!!A&_vFN;tVl5Ul0Y3TxOvCfVW-b19l#%+ z=<&7qX->7#RXC!mgisW$Pu8%gF*~1iNtQRnLS6cL>UGnD+xmw(>UI7ZncEJ0ylLv9 z{_{2cRuOCS!Z`=L$aB{{luHKQPaE{BJ(T!xt0UZPqs&^ zb0!`|ky%F~1?&*Go+544`y6I)#c&nkW@2q=soSY`S~cbMjcT53%%hj&1)k(cRJPqM zbW&+Of3R-+kDN&Ca>pkj-^M)R+@1FM$*lSp5_;qXh-u4&3#9KTh)q%-g%4~0*3li! z`uUD1H21^6iXesQUFOu79`ia&doCK+Kw!Nz!D$9>ux>4(4}D(Ht%YE7%}H#MF(`dO zE#f(^Q!+sKti36#9&U-x93t5e6J8|snsFuRH@%jqIxKYI(;CgiRU<(hdlf2x*wnm_Xg*+YKo8wzce1 zBZkm$iL&1)A$4qmjK$>XAcu71Qfyd2q^A^1DPVSWc|bb30};I#pk^-Kz*&qOo4p{0 z#_5RM%LFyhOXxM0GkRMDN=>0P3i-}+NfG;Zll`Ls@{q`6+iFzDU8yW|3lk7J0L!f# z=lT$t`tyF+k%6;n=Ynkds$A^-!Jf^x&n}rM5g!?xD|HiWj}EKjTJEmoD@#-Z>kf4O zrMK#3@dz2aw=tR2_}og6_& zTE$xnqN{a&b7j@6d8_sq$*@du`%#y!&DV-xl}BO@>%`)D{g%Dbag>^wZi_+#=#5S7 zvAK)3U0>>ic8Zyt=z7niS&|05GiAsgTC;0>tBJCg)3$VUl(dl^yjI8SK#Fdn4-oyr zrC=}GszKD}E_5AYfxw$L?G)5?`hsuEaOG)9@Z~{~o5h&fN~K9Wg1UM~5`p8vJbe@| zyU)#oeZ)C!gd)p&FRzf^hMJmoUZA?qpGHSugg4xtdN1vIts;ktzbt#j8)aT=WZL>m63)2)Q?tt3RlYrQqiA9l zr6b-bQI!xdIu1iAG#1Rf(3kun0Lv5;;K!dboG$8>kK>CkPV za(%dAlg*!VQF6ZRCL>IHWOlh*n#2(73%l0Sl$zUh>|^LS*)ZgjdUi24-TAn)wwrsT z(X?<%?QA}WGKMR@cvK>jzZDVRki~rGOQLK8CYszq7k%EAksnLQPi7;gv9kiD9H}p` zrsv@m%mg#c8TSMb^K!uKbBc}Iut{mqiv#qPsi1)@VtDAa5wSTsEVm15t}<=>v>5${ znvTYWc}t$2Ia@cX#Irsj8zW)NBe!w^q^87)Jqrp`Cq^1N$;C@0z?d$?hjd_)eG`_G zXN3=<74@3Xxck-@m#024Q+ViFqoIv^vU1=y*`NEMM<&}N4%JiX|2fM-_vc_J zja({(C%DyJB7sw`-|5p3=uedW!FBXRm-t&ecSs3LeNX34D72?g3G6n~kiLflRph~j zhq2DdTh~_$_xx#bgF+oH6+3sGH|{a*U76NiAuqfj8)OTINanslhq#MEet7yN^>(tH zd+&LvVu67<%#$zSv(V1lUHxZut)9SIOF596CBGe05Y4S*hfuwE%%w(2ql*lg>etcB zDmf5)ZY`oF$?u6xcbx1WzNF8glYz2_y%-}M9{%5;bcxc=Ly%_Nt= zzr#mbr$g(pg_RWZ976Va=!1M`p1JS4-944sCg}2!;dH@5?p!WRul+O%X#Ap9EGgM) z-R0qMj~CI|-ZYe+Z*agbA@9HH1_J0#vY8ICDxtj7K)@0&{!0PhW2J+{-LM8fX#i1| zMDy3fD6t#1kiK}sz@|A#RPcQK@>^Z>%)qTGznPV7L;Q**bkTd_u&mwY&b{Bu$vhB? zQxv9s2A_=!B*k*S@w3kSXE=p=LN-5+ynqR;5NeOMnz7f_%Q>}_Qe&n`l%~6LW0Hk1 zS>b4^dkFwE&2th&)DmS+C5S6c#KYN4GM}gu$L0fR@Ag(lOz0(UR%e6*iVJUQ+0-SX z<#bTE^+!Ro28^RU?S76 ze(=X?7h*qxc7`pWN6{1Qa=Bvg>otC;w45iB?VTZs8CIonvsjMDT_PF&~Qi?c0}S%V3HG}v$r_hT&F913hH)-y}HB%4jn%Ak0 z1m)3W?cWE+INFR=zU^f(4Ykj*}^A(IhEhcdXnoArs`{~RB zk`x~I84Cw*NJ^GXfPB5nsrFkHWDjBd;HcRdV(YHeay}0sC+XWvUV&bOtB$C?c?;Nr zqi!$}NSIgaxWrt!C9QyIi}-3lv*$Z2pt&z034x6d4^x@KjtV+7cLG&cDI&p#gE}6J zJyLn<1ia8+NoaVCP8}LudVT~+*#P&6F6h$EXNS`8jKXleoGR_4b;@4#V3h- z%BOBU61#y*7;IB=4H~Wf&(4S4vAgd>ANWBm930~md1F8vT0~Agf$J<%Yoq|{W3Dax zo0kQvnPyKuV-)p6`gZ>1pB8q2FmZ+Sg@+D;O|$QpDiNcLp8>Q+L&oVq@1v1s`<_SG zi?4^XR{uoaT3vJ<3oQ1)1#G0CaX_I0eKBC2J?XM-d{v9+S|OnG`^cJr#!0P}1}2l) zx}y=(MW+wGj_T-isc{|K52Bql9irQavdrk&j?lMQ8oiF;lYoX?I$rAO_iJe?c-LL7 zlT8-|?>-3kjFhyR^ZbD|36x*a4E%5*gtmK=2C`*I#Ol1_-Wj83yJ@&-Nyd~mY@YhV z<)X0vH9=eR!_yKEw)VuDO`)L(b>iVYAn7@+#+22NJPVg6~7az%i3*D1YhY~IrEgN0iv1CHGNscS&4!*l8eADTF^*Q6E22K6sM8n z%LG|Xd+C9q_(A-BT!-Mpnc+uteG1R@_NfRJ;vdOD(lWbpCoH$gzrmKGqD4&J)>MW< zJNQw@r(~LjLv|>%_MzT);dy3bbXQTk4uCc(h>JD-P2Up0-$mm-t?~<9zy};V7%N9G zLuOAl&!WVjx$9;s!~%Uj0JmI)+lA0TcHnsTeuBxXxlc{=e_s6D*>-D9_^;CNY7v>^ zYz9CgSe>69**v)^{;bsACaG%xCs8$;bbflVsuM@)zosXg0kKE~AnUL=D?>wzC;)Cm z;|kW1y!P)5rTBv9lX~`qdT6TaU0p$@#ZN=j;AfsfE#nQN!|enU;Rz7^w4yi>nwT^QP! z;>G@bsR9Jr^}5ep1{59?{VGr+R}7$BE-H`OJOY~7UOeF3LML(iOtQr9Rnnku+7{YL z5j;SahHypSGD%o?iY652^ECa;3vqjqc*{XDx5?q^ceix;o&AmY+>{%8(XsEk9?TuP zv=ze?LYwD*7{5Nk!_Y%4WP8zU;}Kh;$%gVj$?;x_c*61h<1SU-61LbcbquolU_{G3 zAt`@IZ^c{zyyc3z7edSTdvaS#`R(4sE!e!pv$wp$?-ar#TCQoWcBexZcb&(({3x7J zNsDgjADUqbcXCcBJ4i2UraSE0nW}D7g#GwNLA?)>d|^3(T5u~`BlRfCB|I4c1zeny zMB;8^dJRH3@pKWKJT|#vOa^zVAfph|D=p5Zk7MH@skeKStda;~IA{GFw4tS}2PDP7 z5M%y(l+LGQ)e(A6Qe*qsJ8j=lzx4U107%XAGzLcNT@6K9U=;3U0OL>V2?zpQAxUU0NHSOS z!=gua1nMV4#_ZBBA_|~ld9|m9nEt|hrRk(og4An5HYBQy0}|(~Cve-Vkam!PJL9vi zXbv){6HOY}+wCl!vH1oQdQA_+;zzymD}baGu%n6}^a!D`zJJ)(#%J+t=M*YBTfIsjq6<^JSQW9qWGY>4Vc~vy6p)-fuEtk2_OPBU9@~#dXOB1H^QY^vW}@e zaB}!JI#r!0N|tRvJo(cAD7eXiCs+WR+RGs|&rJQHVA7B0(8U|=`1HAM3AeTonrul> zW11VB1t~=*h4r-PFAC&WJhK1}U??>=)<~z;Z#_s}l}mJ<(9PrRu9!PUVUk!Q5kzo) z`T~{PYj2IUh(kGwq(@gE79htnl5hGX!_37O{>-oW+}za>uWo-D)06*;@UL}oexBN! zjWGH65o%(-Q$y}xtw%h=^iH0OrBk&*;8yn%03O)^H}qX$AM*O_Bs4M`iOY|Ql0oUbsg|1P(f!@%acbmtrq7HTUZp$B2 zd2C#jX6_qsGo_gBO1Q{UQtAnK@Dbc-ja0#`ximyF>u{k^O96mj5Xu`?u7$rSU4^IK zjkUritB?G1VNMAS<`hykUP;shPOzk#F z5g+m~o8RUB!xEL=o4GJJw^RFk9H6%U`k3Tc;BG`+fAKM$GN+mC*ywxwOW$Ww^^&nB zT&j)N$J0PSEn0*-0f3cH>UpU+^r#vKb(JBB#_?wjbGjVIkDkuaquMcF#+s-9H!EYd zrJbym%!q38LO4ratWXW$gE}#zaqk~kncQmTq8}Njn%@-6wSpljM!KQfk9LOEqac>0 zhj1gSHrqA_QCuaqSG^eCSdnZ(_F$e}HULP5eQ*--G9~-$KOgteK-w{d00Y@%(V;-0 zN&}Gz&pX|#2tfywgoibDG%s~wNBvu}R*{Woy!~lJ)$Wq1O`93L94N<LNkoc_qtpf--*R>$?rWZIp}83s8At^h#or>Q0+`6d7c4S^`swmM)(g2Dp> ziD$dG_XFO&5xOCs?dY>}ibI3Ar1IGW8#C`cqLfg*>t{CQTqwgbH&(8N_GKf5?{kH1LRV^NV4qZ@=cC2i z|6-P_FzR^#XMzEciPj*LnsQmD7Y(9?68r!>?&(-Nf~NFLJ`$UH8qRn_L-9=ItvxIw zvqh7yhC(}L>`OD52wO^9L*f)FxekRCG%2vyN&B2=e0&MS@TWO|mD}lhIWhJZio{_0 z(bGIaClh0sp!P@{h{pM1HmGjYmXZwsTVS(V8Rpm}8eiRI{|95ha2ES%hdM`sYO6Rq z2tami4`p2|>~G8=aou}O`MrPnd}*Jf-6gor53+jF-JJ~u9%eME!l~E9RxmG0XH;Hw zo^>z2rk+?}Gzxo=bYP2|!#sisQRCs{kQuuNyo+pp4o0NAm^Mer+CQcaDN-8v*);puUG~+xeyB zi<(fT=xbmL&Je?#$}Y8TpLmAK8v_7Zc^f!vDFzwwe{Qv`W8*2oUMl9&X+yGuBgZ;@XYk90f4<3;X@d&6fHh{9v$&aVEc31J$iA_|qFz;RgLR(OBmsy8MsnQd|kJ<=) zMd6f35|@{f3pBMlhcnYFyfUuCJ#@*y`U>OlC$V7nne*duvE5Zep>Q!59#$H;BmRjY zw6FcztB&iMJRVueQ}S_~nvlFXp)=(5{OpMhDIoWsE_F67=uhwNJ1MbsuuW4fKnnSm z>gu3Y&azun2DpTUULyjh0)6i!+WvK(^S?9QW-eo%`QAQ?niU)$u?b ze@MPfOkqQ0DCZ}LRdczH1b6!^Yk~vrw34oZm2s(s%3N+rY+ThGycClmUW*LFGj5QS zJ*~j#CQh=EAz0lF`-CJQJ$E@T@FUDjty=ALS-(>?SAVa*_()8KoO|&S2VE z2q^2_V4&9<=G&#pSZke-u$iZBI0-jw}g%%dl4z#d^YvstFR?g2pj z_x(`7sQ^pTB>=Vv(BoF-cgp9!m!YgOGKFGsqFL4%Bi~yV4~k}@fNUJh(B$dlY@dgtFBAj z-lzm{#k($OGSrov)y5Z3BbH-aSt*MzGD3WaHk*rC|a=1Wf;Om@S`wm5rdFW z<>@v+hoxQu80h$p6JdPPO=^%!S=IHRp-M^MzKF+26fT4Y*JftC{l5EdCWKaY z0sM27R6YB{@?K?l6s40#KT~?}sZ!?E$DS4GwbKGd|zw zv!2&U)M6%p!$NQ|?qy`f>eja2p&Qs*&rDU{Zlzw(qA*Pr>oN1>-jf9bP^6S@1A2+o z`NSKgAb5F|q-?`ECVmYt{@D8UED0>oM<8G;dF!P|e}EbRC@t*786G%?qC8! z?wA!f1rD~n&U#)BxuUs6Z>89-JUcjjpiBJN2E}7_YFVtr*?jHTogsixrA68(N}o_M zr|Z?YR??uXV883Jc9WU`7C}9ZGepXxI0TLBZa|Grn+v7iV@6Dtsj>#h)(54<4T+w4 zAN6n_fW&iGu0+=WF7_?qrZva>eY)#I9Zb-{T9P%}Ge2n?JGDe^M zGinhbfv~ri!9FbjtRN>(T01W*(y-WoTeYQxV<~E zY`!_MK7)KyBs5;1-9ni?%^G%TBDui4qIK<~i6x7uvE0_svRCwEei|D55&K?W@k~aA zX`+aBY=OA~@L~)w(p#_L8RPU5jD%R!=mDqVEN}=`5pWou^m^a=e2<`MyF!}^8&Tpjq^t7!E+i6=f)ej@zMpmYeF69gwA@CYd0^%ZbvmU44u=nma1KM>V%{8(8ji&bs)3FW!X;H@v>E|_z1NFSm}MJ{V{X%s75qMoRqmDn~B+t#}o)NwzQ zH#k5;L632C=jhPy*6-`rjG)mjwwi0RDoBhpeLJSFXPKGb%|0(5T4=+}`-r(t5I*-9 z9jDZZi+itJ+*w? zml*`w#z44Hb)FFpQnCJ^YpnDU1_e4ne^!k6;I zU+(yHu;dv6+&Xu_bp}h2x-y3kWg4V%45hCLP(N3(*sWP)-i|%q z-e+D4pRL@Vww|pujHaiqBS)I|GS>auF2|6WE)9i282qjNlb~liQ`dny6}YHw=|Vok zmUw9|-6SOlY=}@*RNx|oDQ#_e}wkq zd2(&+4>UNG8aQv45PzX5Iy0p+2$DD=DDnd21V+;ea_2D9fdiWPCO5aWb99CzbKD*k zs@Sl$Woa$|IsDn@aZrgnFYW{G7B`6#`_%P)AMf8zQ3iib7!+gQ6A+-w5Ckru1+)>* z-wk{p-VRlIdyg5KFk-6zW+6)jCrZm&{Jg!M{woa))(-;IuSKSInLz=<0CY>_=bGI@Hb2809EhZy$JmnAn`juyz_NF3 zNV%YXh00$O3X7{mFu-yV9YxaY7s0+vzh|*3`#K>%)gudL!Tj}7=l4(bLwh)l#&x^5 z{rpxBa?1x*q|DDyBy%#cUS6&H<*7gjr+1=3JzJ|6F{Sq-*{u zhl3gvAeECN2CIv+n=LB3tWVW{KUaga0P?hh7gD%hwx16Fn!oF z7=7wRQ3je^a*30+ldWYWaEkzw-`b^}x@I>zu}p8w#N}Zk*FGqKMvW8o4-mlhys>F> zWE|>GMV~`Oo-MXsp<8NMoO%qV|H$xDcYuxNx#JsJte)2rj3`^Lig|@n!_ZcuoLJ0c zQx`vfN$M*YFGLHjNIoo18+3Oj>v|~34|(&HFJuG*qG()vNZix;*a)=g+v7`Q6K8zQ zX}Q?;43YCw!ePCh=)eUW!%{ObMXhaIw=VNiv%PYixOs#&v0y_O z0ri4UL2^S{Qo~2r}DW zg>BwtUSYpWFs6W5YOh~w6~kiG&1-oM&elce-D`23?Yu`&&%1f(gdNTORw&w!_8Yyw z9j?5k0k+vHA`2g}L2lah2kjvKiQH;;4tvpD^$DsCAKj)*Q{mWv|(dW;4P*RNT0!OdiE=Z<_z_dh(!{+_rF zOC3kque)sc8rXqys);ZUH@&rxqc*`y@;cvo=kI{gZr!JqCx-Bh*@Ly~<}bZ}@9d#w zpL?e_4T~=GIM3_cC#9VWC+Md{Z8CzZ?4kiIHny1atXsRIt+9RQvX-0919|D(9*bAK zcit{3-(^zUs8dB_`>)n(W~omM7v%M&tfam3Ot-XF3KGE(%1_StTixhrAp~eF7S})L zVJ9>yh@6pMIJSWWW@w1(=!(MJqPKoKg{?p4``q6m$0ct~Q2Vc0+r)p}U(k&2-Mg*# zEfmd@*ZyukIuUTY5w{hsu;f&3NYuR2SyDNg_Jq!gV9Nz(*Kob*(oZ>b591~O#y9y% zQhUL z$QhwFj;uq|Ov@Cg5%M34XNBv3AGtHRwce%ZqvJY`-3W|n&LLh4&Pm?At)|B_%AZmF z>sn>~i4>8syuSkd-7hE~3%tHI2|fEGw^=wj>FDfy29dh!<^5yOl1u+wgR}SW;Q8SS12YEn?kiuSlWxI76vJBgMqnGnZY-*LfYu)nkh)8m_b=4-Zc+x^nQXAJ!=ot{~cmsB2y~ z^`>UODLzj4P}E*9{l5B3<|!RKOd&>bM9Ih^nQl!U*ryny7$aoRu<3^h?CD(_kdQHc z_{sZ;k)zywLf}TE?Ql}^z9^YAuchttT~WVDWyR6CfbV-uKr39pIMrm?KGJ|UtMLSn z>6f9&3N+efe|jeEL_CBq(q!bpF((ue_}m2y0o>livn>Y*BZ@Rnh1x4*-D0-MFqw-% zRpkjE(f|4vcQ56YB=QCLQks27QovAK-z+s7pz*S-kGLBg?_-iQJ)+;cI0+;?=@ZC48=L0|3&3!{S7-H_o1mrk=T0M9NUp2n^R zj$Cn1@a;`^D|)szzxWORz=pB|mz|Ga-;aDJz_Qssv8a8?a#ksR7M`3S1Hm~ar~5a| z2vtrF(F-}_CDU0`)6i5+ejxS6@<*X0CsZ(L22slH^yk?vU#B1HtGPTRZO%hwhW;e^ zjCJProU)5__xAl%fUDUUq;tkSS$v=9u?^0XhvI@IiFshoqi22K!8UNhvEK5|lz6xI zIt)_?=!-A6S}D~@+bWKp4gMY}do+DTHm$1Jpp!kJ*>Jjo<$g}PEFeW=1?b5#3h8`w zeMv6Rd3(e(3NDdiq$<8W!9!+HWe|C`a%z@PlY$OuL>*(2fJy#1$7)mGcQKPO|jwl{>X!^HPzsDh4JaHJQtIZDu@p%@J{l_(a%&$x5gqxdq=28 zKggDpk$E!t>{#0p0PeezsU9E4hl`?z*M{0mrSgX$DuCGuNKgv6DMHjCxj(;A+S>F+ zEV)$y}I_gX?5z zaQ?@x=ETLJ+eP{7Uv+L}uco=}*jH6He5S)}+#{c>vU#WD!oC)WrYaG~YE-mUF6blr{WCAe7HIAroKSoTEvty;80q{k} zaweM^+{1_Za>Aujawc!gd|E6Z(*?F_ssqiKsFt{T<(4QO6x5<3m%K2M9 z_X&TRQ|Nle%WZ*HVFaPMwf-^Dl~nePL22Y6JF`@G2hv28DuUwNC+ViGg4%HFy=*b* z1tjJQ^2*^=<8T0j6Q?;`H1{LXZt(*q5cWpTqkT3E6Av<-5BXYybdAX!IlF-Vc!V6) zSQ+5lb8WpGznbo_<`5Z+U_>erSvUtYf2?!*;A>*0B59*(yoPf&uf&0wtLr-?amO*Z533sN*3l6vYcpOI< znRYP5!}RR=B*!NTl~aTRrD!CEYEEWWU-aM2YKWE9{p_jM zQFG8}dR^J-6PA{nIgEHaf5#d`405e+@5&+1I;n_Z(bmHWIbGF7Ykuj+Cxz{CJBf+u z4}rL@slT27X)r~~GT$);uWUSrj<|2qm(aEEeDQM0V9$LAL_w_oE%ef%s7yFVUa%MV zfm+D|GM{N#I{liC?PxeS)aQX%@_j^f)V41%jY@RXiW4y(sC!wPlJDc1kdP&f8cZd- z3-x_Kw z=4r`~zpv0|)dq%57pZDiF&iQ^Wx-VtE6^fZNNaqf$Cf)GVA z(U*r%epiu;v77$vgMKs|rVBQ}j{JX3o-8yIbLH1S2 zWAQuKWPvEA+32+1WewL%c;jH3QOYj z;21B5okZ2|h5GJs#~y^DCu@*bs1=)%A=kee867AQ6?7&hLXX&D%${qlk_MqdpSd|l;m%=~NvJwg} ze`9hB=Ax=;vQA#rPNa#zL|eHUP-^&bd3;}tw!AV-%N1cUsRZA%n7p<$WB#k+XnnED z)_z>G#to)qI=khpXaf}*JUaNk1&G*vnflm^=3~y;U+vpF&d1Q3H2NJpv|Cop*ggvf zwSTL+*ONy3-D5AnHT^2I&TPL06g>c-K4k6=;Bk03Y(lZYE5&Q?N?+RyW>bxtyO(MC zd^U%m17irZj|6{R)%1IXwv0Ekw-J~XUGpR12{cYnqOS-78nf5uR^OtCn5}{f1>b#v zBlNBNOo}~1IIe=tJ3L_8+kyMWdleI%`1t&KaEkcdF9>Se%#%|RkiaKw+%b05}zu*ZvN3)$tHcN ze?y!9Z>gjxkXmhhcRPRTg_KU`;5VoC;w^*ySRvb;Un@v2pSQxV=I3X4Fi8o5#jpQl z7xp;>CA2=-&AiXql?WpB$-tlXzDyv)+a3yt62{7r@|$bXeYPXozDXANs087qF}RgI zuFir$X$+)Q{7mrC)kXf53z9jzC;^eSxA@{Y6B0dfjm2j%mN?ilAUD#3ur3$qp4*0HI@^ zT%yqjReXT0+;dd|Ia!)p6q?T}6)A46l?@1&pUZ)1ygOmd2&kjftBWc$u`e_^i_ea0 z;lN6y*Y%&m(;x7p`v1gUVhb}MofO)E0N@_?2fx3Sok-dpNgBjzWLB`26*fERXM_I$MBVFFq|saw|X zCp4o^vOV+tp6Bj>#)$5vq}d2HCTCi~T8)PTtd8;p8m*h>ks1yT+_GWh5g}h?9N2AU6{KPHXWwYLG-zu5H%<3Uv6#d(nuaI*w+`YcpR8pNl~MNbl^^c*tUJe-NXKZkFLYSu0-u zMm+hne_2ugV6+Q)oFlDbmS-FyCOUw4t~QmpI`1*DDl*ahZil;y+P>7+WOavpdt$u+ zGz3jE$=ENb9m{Kp9j9#?c)WhS6)hgw)(ZKT2a8zSLx^poVvsIIE!CvRfH5}l@J|J! zKI_F6(NCha*dU>gsq>)&{~WtL?^grRz|W$onh21=iBf3(gM#D0AglON`*2u?Rx_6~ z?F1=AP?R(J-0HFd-=g~U`=`*G5ez^IkZD_QSIHgNR&s7^2J%Pjdw$@aOa0}#sqhs@ zh8S$!w+#Z}+{A9(=6{YC_kR(f_tB%?6(T1)_hiJO{lV#qAqf}-x^E)+tek{p2XBgN z-E$`P#-`vI`bja}Sx<}HA_znTgCu`S?j;NSeI;7Dj6qx<>2@3VU4y?$W_K!EIfrnm zJMzE+#K2%ZZV|OHZ1NPN-vk5il;`X=Y(=PbcsnFlL7p~Q`+5eZ&JK;mYGp%WJM*l2 zrO#dO>^;t%{7WI9b?-I#tsym)vt!!Q5Jge={egbuhm#x=9*5pu^$Mhbp&W&f`9{ew zreeF&CjWb|due13cbc2jIuEf(2Ir-w)z{NzLKcyMDnj!8`bghfN%GoeoPLXE>J0+UG~v$n-}7#dZg_YXjuKV@$kB>yLjLUqW_fF@M9fg)XlC`sv5Ct^pTcTbknQng&osTkXBIwX)`lN>5LZkTfgM z1RIcJi(lo}T-a+e4?T~0G}}eE&P}m^pI=EizVdSW zxyX0vN6yrX=j%6^!H+?Y)C^iYSj1_F9dsLmNkn9od zk1W1f`MXoznY#}2*jx^{lN(iv+@bl64Tkmi)>$6}@t+(V`GF}ppO-Z@-hwv(u)N&f z=WCfC#8e6zf8Ev!G^w(37{cl|7okB-bM? zWM7X3!ivHFk#Yos$NjkvP3dfj9+?g~NH}|G*?q_OPEf;U93b>HRP__i`}{yrX-@p3*9x!JTRDL`HsIFM`Y<709+Umr@>IP4mx zHC2D%17Wnhcu!6B(mtFalUge@>@2KUOoQEcHNPBkB^s)>SmL(3=I2MU(%B!pa*$K* zEK5GtMhxY9+rL(x6$lDLUGcADj9SCyg`sw<_UMA0P3;-;gQ>S=G3T=ABm5h*sN4Dn zXNz+1@`I3~Xv@D(&&+0P1*SaP{CQP&@8~m*TM65alJ9C8h3=KA$;c6vW8wq}7q11= zX`DOGbL3eTOQzbjbwvoh%aWR!zR;MxZ7($%zD365d2IQ?>3kMso3tR1{Xx+-7gf$| z6igJmN%2<%*ko^!m75x`(9a_}O$l4bI~bn{zs&Bz&0<{pw2mk=gSPWU;}3P|9uxGi z*mBV?n)}AX#9EV(tBNGPfIgeiKv3O5!yjsLgrvSIS1>jPK9HrOjq%zW=K zP1e@+@L`JqqZh4`t&&naSR7)FeL4%AQJ!r${CzDPDP}U{(qxaONWmJb*YP*s32Ph4 zE!>M=v`wZ*$?;UjVfw!eqg(cY@3uq!cGS09``B8>MH&cA>Sg%;L3or?Yj*CK>K_HZ z(jgwi^KV`9i580@qGpxPf0xL2e%*WZQ<>J5r^dhzqXmS$auL=L#_YFtJnG~ry1M7Q zs&p;6pOg~Z5z06sX~t|a-XB0qW?BsTz3iUZRWD=r$NElQHW^=QU2mZbXIj=SJB_SC z+$@x2{1IJ=^i1MjOw^VO&P_=)wYjY*1QQxq;3QL==h*V?SyZh~V4$c{-t&j{?2B?y z`tuKFQ6Q`;m#d_vOsM*aaLnZ0H2d&;8{I);UG5V#)T<@n(G7jS(!T|cp000aNOdz8 zq)_a_3gONT$G;zqee@t+TFe$Tdh z@tU5f*B`Vhr&X^5pObStNj z$QS!>8wW`G>aO3$&*b{@*7wu+fs=?4D%#mn@Hj*`)mbetf{CY3lHbMS?ZGhUT>>A$ z&+6QIoHo+WQh7!ktHk;Ab<>-QTl9;U2X$A|uw5Z>D{bmpJ#0(6Wtlc)5o=fUR$2{w zKo*7V0!_G{!XZ8;vHQ&~J!Ng5wJ1LRa-;Tf7CQf#&HbMauKrV#XE%-mRm;8gw`>kh zPFyjPsylGGL^n{Q1}fjQKe>g@5MHI+GT#=rSe1lo*&20PpCPesM?yRLR^ykBPD`SD zH0F%cdwtOO;WRIZy^<1S#-fuO>V8${eNk(d_vP@0QPcd3m5k&w4xUUr)1Vp|$s)o} zn6Cpc8ykaV8``|rP=&9rGE+5e_sw6}8Bdv0&eRDv4g9_9hsN8SGyOiB z7U&}K@nr^DUi=UfONzLz6j8Sy$)bu%-ws3$&QA(rU8ffIjYxLftPr0^`(ZqEa(aYh z5I;u5(i83Su1{|IuL}!Jkf7^2CEt#mR|jK@I4=u+4Ra~?48h=xyRvkN4%2l$3An#> z0kSl@-5%B^I~?+KS8V)@_o*UV#|W!}gK#FcUf+YEG+gct3x>uuuKe(w==z$4SJB)o z`|xv{Gk&Gck4onqKQ}%u>v@2FeP}W`^$u@3+*o|U^6ntj*AoqxwOAPDx)~Bs;20u& z!*p+Wza8y4M(ObrPl1(il(kO%v1%P1-`kshrR=qu?D8vJfGbt z6~h~ur+llQ>7%;;{$19B3+GDh-y)p9xnVprp_!zI`O~`OdG6IO;uy6qd+cyQRN!l(B<2_16h(TF=3UkDwcu`J zS0*xW?|N;0OwCKqcGY{k`#|9H7w@rOK;gptcR{VgXF3RQpPrIl_0X;sr(X|6uVNZO=Ja{eN=-#Jd5MuGyzw*kn zJIQJoJ>Yogzk%5U$Z-5RQqyvoMOUY9jyY9F{(e4@!N7!5luYCxr9O zVz%o9?KOD-qQct)0oMA3FC#D^TSxS>RUpYq_Ha?FeOojv;YA*=q2bvkpDgzOHbWj= zHTpMxIX;+XC~(iA3(>`Mc6b~=_fjI(dXxfl;Ru}D2lbvY0mnklN_XiECae*CKcfJ!<=JijASov=e+s#q6tSkQTWefY^f za^LF2FpZM3V=cMw*6V9I)YzZm=(=y6P?Wf|{CmZ-@n_rNqRMl)4>@M#!0C=|D*Jk; z{M^u6Ig4xE1$O-NJ6EtPepl?aPxBDlXI zPt?8{65951twDAR-(BRv<~&vAik|XxOf*i?#ikK-#;@%ax5Ch=3zTgT||Pf&x4l72V&?csImX5e6c9mrq{EpqOb_q>eeWhdSkf%+K#3LmX=; z|FI~}T$J~PHRixjn@6;(y8U47o>?7SW9UZi>S~6H`@}lq*Gu%YuK~jdd$qDaS=Ux2 z$3w2~CshGEm0I)QN7bK~G|`7ughz1Sb%Hr(=yYgXDe6n^b3B%6QuMS)iCHKkCQ;Mg zSIP~&+U$MdTLk}^0F`Q1e>=ql%}c*YhL*to40{Vv-VnEcTtSZI(^T*MRIdt*sY4vi z-amWT*Y{P`Gj&>t?F{r&ZI(RUmK?A`?B`g!@xUUDf97%sVJ}wJN+9Fm$C}#nKJu#W zPvAU;EO4eXTIb31H&hPY8KU3_5qrM)P>?+Ci?eNFX9M?f(s|U%KAXQjn6@dpcMm_i zb9QJ!o1B{6gP8ERuSd^332ZM z9fYGo3u0768ns|wO)a9t#c*<;Fgt1BN^rku#F@3#s~^tozv9tL47c(Ez>LKwmcF#W zkC(Vm6+r;q2AiuS4c^mG@z1!YEBDkEn+=UWR)`TH}# zb57LwSsIsVrq3DDLgAk;|6}*$((e+QaqTAUW*|?&9`;#tB2h-?AN@ofEd1&rOD|CQ z)rtAVFYr!7*TO*_9U`2*?@DSm3c&dPlwC&NF<*?-Ky&g&*?Si&i0Uk~=t zn>3k$7hauI zdP};##y@@5e|)%whr%hP(e28$KtVH> zz}95#e+lx>>rZUcbJW!p^(G(4y1&gQ!d^NGHZ^NUG7Eo$Vz9|MLnC7c0+$9yLnHKu zqC6=%Ofxqn##jS`Ojq{futyEXc6Yyny4Yc*Uy;y#DM6yFGvBwS9tcoT@gH0MpC$cZ zMCT&HNPsmrt(7FL-2+GWTiQOhjn>+%DNfmoBz&XwovJ-_)G!-Kk$*N9tC~v@VSA(2 zwb$IFuAS{az++)kwz9=ZKLsqPn+jhb`QM~92yAROr{^!}0B@Y+=bKy|D5&;)@cDW$ zGu4)tT!gTFs}r}!nM#I1^{B^<@ABJh>Lcfxge|6qwI1j847Zd^|KH(*SRtmJ>1?{B zvYG9p7DCC5RoH?Pb;{GV4vx~)ex-_Z$-}>7l2MByxd$4;XBxsR<}t*UrGy-d_AbL0 zmNMH22*vv&+AgXFTYa+7;Clu~`lU~2>3@Sci&e{emnY1F(m{udr_jTP^?6w+bFIPm zjk89BZ%aWmhS8honttDz3)r0W2mZkEFUlO(y)JW8qS!Xc>xmMpfu6%~bMGDJ3cG5> zw~YVu=&v_WN0?&b=Y#{DB{Qt}wnfQs`82FhY55n6l~a4#qB9w|llF14LSXyuhCNTc zDzTKaclxE4miiU0r-BJ;Etpy8+&4!5zw>g~v1)yHR9n>!-4y~dT$!=a`c;FN1`s+G zSAw&flzCs%+h7arG?%=^fny&b#nBQSQ}x%+Y9NzcTs^h_+xGvYf^9ppW?h>gOTNi1t!RIRAxzx(sb0YFI|s^qq! z{-}5er#ca&2yU|^`frq9C1cexPcG0MS9{W7&)sH-A-Y@G$Q3GIK<11)SpBa0=hqGI zzzy*~hJN)&&wGqqU>L(&^l7%2&ZP!dE7a_$z50@qn*KM#2`p50)rZQ%N5%&DF5SwQ z9XthWOej+n0Eh?F9lrQc(3^fznS4ph>IdEdOF3V>rH{DGKYj|1P&<}t7^xj?mMVAw+2P<@mPkMfA2ve{=nxQ4pzl5mW zBry7>$|Y(($tVPdjg%#FeMCzzLD;-sMKnIcFwFBbuw91iJ50r^^~t{pV42x zO>V0dFt|7lc`WXkFhF;OKysgoNCkCHgV zfwnOlZ@jAG1Om@29Qfsuh}qWdbnej@E~~oP4K9v|`va0w9%8^NuYr8?e9A->Wro)Z z+2+Twc-*M(8o?V$lY-cC3UCr^-C8@sO31-ab6`R!=t~q43zw&3V5f@?YP0S3=H}h~ zM!QIrEyfmZF;rU;VR(b`^Eft<(Z2zCN2{3P#DxS26tyu#*wb?B zW8f}>XG7>zaVZsR6guuqQT86E*?g{-$mDSkBNylGW<9!ZU%UPLDP}XrN{aMJ^By%d z_1TP-v^|@?k`XgG_>_>_^GtrE&VkfOn1eYEh1KTHpSnlrz~uoAb$y}Vpd`&j7qWkf z6qPcg^7{lSrDZFM5~hf@GbFQjfs{4b<>CL8>mM@j{EPkYBp`aHMBes1K0y4uR;VHE z?L~U|k*ruDrNx_Vc>OIKJ$(m$ZdO)tT7oVPl zxF+|^sHmM6=$*A=3SX?xo_&wa&Isxme97o_MQXro=%auXuRGijFA10a0ci2Ql|H{9 z8r!hQ{v@+E=U*h=_F|WZeM*MN=J{6tf-%BmZaf4?-i0?*{owZ`zA`N~^q{u2sXntn z|L%8*xnU{-igWD$Di{|Zkd=p@t@cEy2UB4xga%klC7{r~ICzCluJVv@bphA~b+4dA zR%gh&`X~Ffl^CK_clSxGH#m%@CUWsPq3LI#ze0@}GS${~;OAWUXb>5<)_$gHAb`$h z{9^?){%UYztZ!>cr*9tE8|_O2L)Ne?BC7nHB*d!9OrH@woj|DP`h4`3d#?iqXZ`ZO zgzBmWkr^~Wd%hGS;xo!of7DPzypXWJHw;3;DZVOgLaJufpX-{l^|uHGC3Cc~W-<{Q zO%KU5@_s3(m+=L!7eWrI;~Z#-`smQ!d`vOTJvCXp-S>kueS6%Gh9EQdFAse74HI(5AnZXjy7hUZk)8?jQ z6zX~5wnKeo;?J_LkYnjDWj~?Dkb+`KpUO4_)=VPe`f$s2pSRhtPc7+^@DJX=UbE0; zWv%>=_@a3_l7oq=;eo$&0B!9J9Jd`Qq@KeZ22o%|5Icg-5sp}NlC2IEj#m#stJglw z`$}6IC!58ng0GhqHU2_u&>N?%twvQpTPfFJm0!6e&=@x*ci3P0MS$IX_H5JDg@`0? z+SQhC)u>23AQjN_nweM9%=KS!HO=gQT9F+hV0*96o-jcJR2Pox86ep$!UD-N4av8C z&Nqc+7+g=-{t|mH?1s!6?tJI}K3&X1hpZ`YsbLE9RvShWQ0<0;>U}34MhrYgdS-bF z$nQ-K(nj1|Dgpj3kSubc$_tR<7@uWT+YXC|<|{vU%?e!Fa2Ao(JbdeU+w-=3)$CbT z*B|nzX3}|cjMLc^^kn;+**rr2%KH{=qU%+#(K48W6r}r?V9-^a91+o!DR2VI{oKN7zx3d_+FbifmiH zN&mp>(-4I!_3|sQ$-VylD@I+T6~ho=$i`nC_}o~^6zyQ&$;*+No(=Q#4`SFT>nd?S zRKY#TV8-&b|6%;dEzA5)VNe@NfBkL2pofP?tJ_p4`}(bA+G0gZ3f#G8Hr}L-h%r5~ zfI73u%L#vYsTs+$F-Df;R-(|b)Q{dR*jF|qdZC7j+VpfF&DV1nr{5KsA29`aoPk6w ze;W9LHBS+CoVA^cdMH1KTp0=A$x zp*91me*q$KzR2SukosE$TB&eceh2!KS-(S-F-jfa?71DztSaIJ@IiUt59_`Ak$2tV zpwa+`&i`H;A!b}wGB9|&ylO~&`|cBKnYgpN;bed5+Z?bbe2e*2S4Ct5JFrYg9J-@^ z+x5{xojN^oXzn}npg%QYLPqC~4q|)dec!>iQ95Moq~uT9V5t7-hqC;GlW;Z893@z# zrMc(5{5aifaqsN2LmdE7Qub`DDld(p3xo4wse7-K14NOeCG$+_+kw^hgs-GU@uAs46lACdG_zO7_phjpgFKe^feFwo6ZWkqkEB=T#+za|8Azx5;NUdtzkNTYJ zWgT&45#sn?-VrWJi42NKcitFF^N`0LdXz8${$eR6j{Aiq!L9X3!M{m2ALa`OfyMkk1}#xANPOklUwbS^()9(m3Oh z*Fch(Ba^%G`j9tOq>*vaIXvtcG!wBN6tHf)G!P0_zKW0v$D|j)CbM0NXJgfCo2N7U z1#HkUN=1(PJc&e;gB>B3Qy=|)Iz%xJzeB$N*ko`&z)_M}Jh2BIKkl;HaC%7TK$_c8 zM)!jpDxf>%wLeGhdmZ{wXjPT;x5y6D+tJI%>_@(T)M?f~iG0$rJgW8-6EEyV20ogO z{-9UIjf6RT%@*M!6BdwrBqdk0pG{XyQENGa1{!=3Yo|tR zF#k;7U_++1WtLt~44ImWp3yQ~xM`^X?Xxd1oT zWmBx4%v>}~*P?X~7n(#=IOa+;fc2=`$nYpR#-$(t+PF^tyS+Ol`8fn4FC zqcJ{(BUWF1e)rdIDu9?q4hK0?p{=w1kZW2_>BX=k(yLghXzgs>ViBhr&q~Hr+ z$_|Oaq&UCwa<>FC4MSzx7G~29+etw`X+8+FnpO>6{DSlJG2c}CmzaD%+v0x+uZQj^ zH~*RRj{6kyB4F9dgx7T71-|r3G!A-ND(uo#@7Y(6?O4^gQ63bzYIV-mwVvpQ^W;~r zz2=UZ6u>slXNAN5W546Dhz^wzZHeBM9)qT)&p1z=<#9)vgshlgYRz$H8h05po*ddt zh^H$WOc$ix(1f;&lZv?#q;dJ2hh#eL(6&$wKO2Fl%6@p4TheSheq`SNw-nvyiB?u=?hI&N9}hXYXsBHV z3nL^q+uxLA%P_EOi{Tt932bGOX(~K;kN(t`w1xC0Wy6eDtC>%nPOIdH?50A(Tmvu- zm)!jP4yqa?q zP!9)_Ac%v+)%e98Rt1(1NrbWWqC8Fv{kT8nPu6dwNJqPk>aP#gK+>>tL|8rfP!ZTh zt%3r6OIFC@c|#dJQ@>qiH1DshbuXj=z~5dvFJbWYf2|bmpw|&cFWy5ZB5y_c-j};5 zzf2=G*Of&6)UWS}k~I6r%{sLVCL>;7oE6bgj)2Z{(YNVeC&zq($-P%MIoMJl(Yc7} zi6v^DeCMYS1U)%C3I9?xBp7~}cH-He-+ZKz?V$u?!|Vl8hn}MmaiwQyhf#$|IVtvem?-ya zk1ymOY*~8?%2i~>+oj$(yhe@Z$M?_sy4&lDfewWW+55lgY_g-}42=#S{zawC0xE;=+3T-e{ZScAAw1d^y% zFE1nxxJOv@B9>M<^fB$l)^h73`}b62@yR%cGSg$($l@*e~*;4G>m6ulf40QCB}_DKQ9dK^!XXmgzRRU!w03;xqiK zv{DS-u=?esD7!JPNjwQxjVsDk#ArJhDrZ=&*D=b)Kkz2UObXg_h)rKf0h?w}-A40* zlj8M?>_GQmGnU3ah@o20FtF`~b$ioeW!JoI^l5RVDpON#^cY`Zl40Jd6+B=|EKEFs(u&cjTs0u{?Ya9l`)F@u~ns-IGv zFnc>tmV(QR(2V(T2$K*@6WC*VZ7!fQs@Lqqml1c%q~~#wt4bq%CtZ0#18!^~K80G- zS~mKCO#EY8I`spl1AUsBgP;2LzOJgPaP(j`%M1p9A~fn@0fxj6_)DiTV|Sp6<_x*it3|4`z}&0kC`_?8j#9lw&`NpsG?FtmffX zNLu9?OlZ-=LymWg1-EhXHhZJPbiS(jMGka!^qvP~(GhEWCsh{bnuFpMyfpW+;6>?| zI8~#;ASI7^t%bd{+U%>zY(r*qT0)=!@H*~ppo4veqhlzm{GxERRn@==6Oz?@d(E8! zu$M~(*yCJEJg_@GN`PQOB%2VFF+l`vOVF*%mFNTCGoqKs@1@94kL@#?UCxxMbrEa= zw?pM2QCZ~_4PQ8v;J!?|{!5pp$X3YKb!YJM=UymGp%Z95$d^VCAbhYMf8C5HZw^i( zou8S0{C8Ue#Wr}&2wUD6i1=hO3X1*RugZ8J0ea+Ry&0w4iy>s(?L^^W6-jZjryn+- z+UxmlR5~pkAdMGzH}P|HtE8klbIRkl|CEQcyBQjk;cxMOk*uXX(dc)zWkz()-|5so z;fYb~=e2F-YLV$s9t@Dtj<8p;g$&IR-~w+h-PeyoFKn=f?7W?~A|Z-fb14!I8WcNn zQOVL;;Yql_6lbO3UE2Gee>3}cbLG3(Zg?*J!#zm`jw*>C|MSC`l#0M#ZXZb&*|_WA zS^4dC_AqCQs=Z;^qtTmZ{mHBwurK;Esv6C)uv@lth=#2|hvLE?J_Q5#cm9bXfnVWw zW5ZsFi2@3Xbo;Cm=l}u1)0Hqg`0fXO8^+qHu==_^BPTW`tP7$|Nh%S=!1Nk$8X}|3 zR{Kl}ye;LPAzlp>$=@x)69$#lzezB_+9q>VH}t|(Y7GuS?q2tMPgci@l?1_U#tS+* zWgHmlHfVSO>#M!;2v_e1-TZ=OI}kr--zaRa#fmUzJKt@p=sGeL-|tV<0rN(c z`i*TemareIlK9vn9lutH@CnwpAdC7j@3{++f^R=%^@PZTk1;6IogetmeHSaFPNT0> z^Og?>eaH~EUjW4PQOrJXJ%pdUQ`PLE^%Z_Ss9HhyxiZY};w0BNXT$iuSiB`~Mlh#= zP8vf8ga|=W$~>UY5$Mka?TFHmRS~!3E>3=^GK> zZqv4xT=mznk$m9Ik)LE~wN~m}++M)~pKACcOsO@Ezn;c3 zf}1#}KgYRMFUY1|{9WzxUphKZRqfaPSR7Qt@Up4ht&VYmXt8B4l?9hVG{c+p@JmRayz}@I1#mM`~^`f^d6ou@XHAb?&gCT zP_0+vZ}YB9KhbG*7pI?8>Y|7$guWGgC<=OGL|buWlFwV?^~vV?7I$leNY$YIaHli( z60l9XR3qNMMS|n2h%2QxIK2La=@l#75VnN#wUy8%xi68g!ls)%<{{_&wq2Egp8yuYE zbDV38`K{6ONHC{&@!%ynr6_fXx|dOsr$H>N2Ij{7wTrBLtqbQd`lGKX%9g#sbK|c{ z-HG!KPm(TZ-BHD4a zNk1XbU$4L5V}{})i`~~HX5aiaypqQmO(O4SVq>Ir<5Bj-ZrIe5B}yu9jtxeKhCS^` zOAxsb0qK<{o{&JW?pB`n2wtZAw*v@)uc^b@wT`LjVI(bpbt}6Ya=72eo^QC%;o5FF zRd6q~JAy`;^Y{#Z0+R4_ciAW(2XsKT0MCcByS7;+4Zeg{5;`^3Yqt&(21B5Z+LZF{ z5fMJ%fZ&Ti@(AyPXZi2~-2Y?hD;%P3w!cZ~5CoK38l(~FSOk#{MPfW_!_qo6KADG!Wd*;l1&nE`6GpD4tR{j1H-V#PUHyzJzkBNVoae5s8 zf%WW5p-NljHT`=+UZYZf{oMsqZpC<|GaH^MA0!n z3WFDXvvxd>aoZw*=H~)nQLe>eW24YS&FGNgnx8_f|0UOXix;Snh+uh@ z({wP3xJR}Hn%xzOa@*Rj<-;ajIyF{2CkfJ=bVpe(yFjbWKwoJQNg_WHIb@U?gvz|t{~_i$w{?RUOeN-k_w|6%Rh5U<$|tP!rWiTvAfUo-L>%PTbwQ* z055(^Bg}U!e73zEm(P8vayhN9BHtOenob_<@fJ)7rVx?*aTtGbZkFba_!^sYl~PHS(4k))*2A1 zyb@xQ@ZLR)!Tw*givJBf8%Yp#HefYG&W)lkWUTaBjLH0?KeRMWwUA503%^#~6ei(4 z1Wy)?RAh%es9->F;g6Lt)Q#(dB$Ka)JZKbD!2>l+{yLLZ_s|Eu-Hk} zKWz(+Y~Zu$k*-fxka&Bpas1 zpCD`Yo6A+kwZAQisj`;ieIy4L62PE0gE4zRB~IQW4~@=|gaC}oFMSBqnlkpx z`c@%fIR>_-iTU|yye9n7hU7lOWhRnX8oFOJs52hdcJTzDKIkj zr;(s-O5rM4-G*=jn{Q|A{vQnt4BHxqpt>x4&?tY%43t31*(?kHShyuUKb6C8Xe;Jm zDH;9lbal>nNy^8#vT{=XDj2=JFI!Gn4&MZ)L%MDEs?}}bS6xRLeA3?aQ}@{+H%0YG zb+tP=dLYKMaa!}L**}Vze-JbWOoWE$Hh}95wL5t{KFuGCZ?(t8&gVx}yTdrw=M)8j z$MAuR+V|vbvszGYOx1C-wF8ahQp+AqfsjZJzUWvqgg+K9u@CMr3CZ(vbX4KL@Xfdr zQuFab!kMP?nLX9XA;0K~NSn}F!WDmwzQTpQg$3u4GJ1a>rZOw8tWUxl{L+KDhgc!wybfuLPKjh?DKIB5y`|L> zT=_w?=tDZbnZ$|e{h@p!lG^8-|AO8yzZ4dkXQ_)WuBS&z(@~5It;}v4iY&cvo)8`9 zg6HS`GR%PK%8%Dkrc4`k=(9lvp5CQav?h$+_i?GaF4qXm}h&i6FzYli=Rl_I{ z|6uUG7hyg_`6WIgYnAJJ<#xbDT9@IYle$f-(;Ny*3?$(5sXGl2GbNl`4q)!u4{*ZsNR@AJ01iC1$d-7X zoeBx=#;Pa3{eM&kOoW6FB#YO^tAbqfO?%=WI?L8_x-s9#uL{0i=VrMO5|&U5Q@HI= zn44`YU4l2Mugj6HU+PE}LWX0q-N?*Qjp2;*>s4sqyW0`^9ke zG>Ok+j6Vs@__SWMPO0`Z=i$iK6#MPpIKO2>{h>b6a-c!fiX79rr*aKaIft#=*q$@? zGonn&^7{>a-ne!TnhnCuN6SrO;RO^=hMB;-xf!6j9Qyyb55ttd1voluJY);F(U$N^ zY@&9fI0egAK|T=8plv~q#K;E^M!mE*ei0#ewSaffJbAO8$pv@T>(&||7Kb(6D z4?g+R)MM!xFXa5kTC1^{jy{Tj$seT>nc=v02d6%dwqJ)!Nb-yfdkVa2Y-W*&KfLpu zDvF`+=>A&R{6j)uL*P<{!W?uIzD^qdVpy<498@Ivz+9&_Swp~l?|-Q2Jg^ikCTwj{ zrXpZ~6HtI9P*kQ00Cv;;e>?^zgn|%2)N`sY>)Mxf8^2trrc}N%S_&Sk+3)m@nF;39 zMRI^)!$8PtY_UG_?+E3H;CV@Z9B|vuOQ~EzP}yl}xbk0a(SNf!R77ucjzpmzIqF$L zllw-Y!ug!b^DeU6WyJ!aaGn*%+S%j(7&9;h&U|;7wdYoozuh};t}%;hzgkBg`0`;% zFD`s!9m-HfhI(c96wmYu9RmSxmD<8}I6+z`1)4Fy{^3mDNzn&Nr2qY!DHMva_cwK` zu9CPh&mA{l`GTf6sl`&X#8^m*^Ak7ykC;9F3qFuWV^y#vw?T;1$!{TZ6hr+TA@3cy z2l~I_t$(tcUHEmrG_+$hZzMDUkD)Z~^;@=#AiUC@Dop+U57S??K7JBa>6|R@aZttM zkad1YXx9}3LFbKngz<|p2NuZ|(+jb$mHSTWSpMqe{u2}1KoN$E$lkr{6>p}~Bw>1Y z!p#A3Tv>zvZ!frrw$pmm`@aZRH3pyRcW!4(&CUDw>AJR1G2}aUF?qB4Jm4@=Y%ngV z=G(|(-B*j&=}BJqfL2g>o|3%wTM+iUuIa~B$H0B8|F_Bi5>!gF)Y-E6OG0O=%ph^` z0@{u{Zs2U|Qx+6M$qK7VIL-LwicLf3I9J( za~f2JIY@6SZUzO0o@*J^y(4#&939k8J=PHZm{IHnsSuk_LR$!de_(S=*|{`#f&^!BU0QAhhB zM{fh#i2IyodePJHmZLp=W- zmjcb#PrbHBb4ej8-@kNpg?r9WPrl!Rz8W1x?;FX@zCMgIXsx(n#5>JT5m5v?mdoEX}Dt?C!-NE z&gZ4#&EVs2UGu0D6ATs>OWYyt9|=;d0@R!4h(2ZRJx4K_X!9Bynzw}hkKL6{>>Eex zWtTH8!L&e9SufM7?dQBe24RM~*?;e5p^EwaY9eE*@6}=#9?x`O_#DDz3$kl1s2+U(6FTIc^K zObesrW0(mFwG*Y*Yo;}&nKzVlZ_bA}%Ijc0C#BN=<3?2@`p(int2TR}8w$qT@WJa5 zb|YbvT%PME$D+agXCD?S&8Vb!QbY-LaksLBE7ZX-M^o33rz&~P6v^|4xy!fRzW;_D z&idGt3-z$NY2$lc{CYzKE&Zor355xzs9g)RuU{Z<>;Ds?y0_lhV+gZgbYbgljjCWJ z$QoDN1Ynw7`;chbQt-iVK|_5@>;L#sGpOIS7c@r9$!TNKvy9$T2Zf}7D;&^BcFM5; zyGkUeUL>Y7NSR5gTt56O__Hp*2*2MH7<^px25J*9oA~N;{BN<{RO6Qf-m$9kehJWh z{VIyN#Iexn+sYOKV<*FzvxQG|3tf|0_*hPH*{n;oD+{LLflzTwdqLTV+CSL>YMUHj$pK(eqko)*zW}wzNt*ZddgTYW z^s^k3wvc`LiSuu|w^NL#DLrjtM3d8N`t>JI*h*h-vXHwDdMgI&8X)% z&`rCF;^zrL@{s*GY-C&e2`!aGvy#2;X_A;CSuJ?v9%M;uIiCf@o{*DFSckA3u^nAS zOt8P6Kl}f3>?0O@GFq}x+2C(&cW6U-f2%JZSZgC`hUceUvg$?#H%+gJ)vv8AOa<(O zv1mjq`|qV#Kq{A=u9CAy^ron?Loil(-KH_07S+LFh{}sM)s_`I#wxH}t zG%Vp1GY*i_q&`AjMK^1PU|hMaokLCz2iS0+wIR#m5r@8Bn z)Ey<>YR(K?z|Qq&&r#WuF(IQ0-TuFt(tiSBg6YdmXjqbI46tj;7 z+dI1`8t%i+-T~61(>MHFvdPC9Ah6CpKU$7@LkB0cPIa^IZRS&#)3=vj^<5H2@Sda0 zI`y#`VSj1Ru(5qPeu>E7x3xMwzhnd$$JGercC4dSB>&PQ~*ty#dzoa{ml2>c_c3F%YwSV}OvadwF&W`?fgWw_Z3jVF~kW(WseinYhoW zySuSibrOwPjkrDSxq<-k?RXrko)QmmYg(|{kG$c_RCjOG6$54RFfCg6%e3?QkE)2i z_bLS=7pViqaL3ow~^S%D#Ud3aSSuCEc~cxV_=9s!=mMlZ*OOz@3ztA zbf}XK8qW;YO+!`e{57AErshxC5K2~a_-FRUwZ}s4Nfd{aC;s!gixB*-{ky0v>_oDw zhP6O3ozhvM`(k>I!a^yu*)t?>DNl8#qZ++KzQc2=LV(VvmDUm!Sy$?>ft^G!cb_LU z?G~p&o~E&q2r_I{;Mu$R+eVeg*N=W8gh*!L0KwAQ)9>CO)hOXFVFSyCVoSRQK_1Ht zpk&4pJ2HTy?v_D>qqm(8KDzPRVDCkZx^Lmg>bl!Aty_-Vg8`{NOhyg}nZHGQEnIky zJ`KoTz=C+a$ULU$&YCdYU5|Ks$0dY$Vmvd3X>uBvVG&+`{VV1jIaeO)edd%;2)i%{ zDTpg!(1{=N4*%O0!ujl)I&LKn)>vVC8&^gaZd*r8RI!$b+CC33liHk{BW1JQM z2*#(_6OlF{7l|ov;Z_FmO83>m@`__4Ntjl4y{L%1m335<`lIx{p=a#Sf>r0AH=NGA zfeN0!`D#cqrB(b4kAr4^oo#Tc2AwifgwFz09rQHurtUw%^*W5`qx^arkW+xdD2GZE z6Y`m##nG6fl7IIO5WfIkI~gilyc_O|5++Ywiu;UU0Ki%rsZI6_1*pJicW$kGHDj&i zn26eug&>G$s^GoNa10VEZpR-}&UK^D zP4KQ4!)ZJv@4I&8pVsSfkJCIegBRbVzutSBIL0h-_ZW{1i0CA?ajGvdt_X-pjTAAa z^9)PIUVk5puRUq?23C`nrmetoS9yLXa#gfJNWO&B*HHeS256tJG0 zBWl~A_GMjp7m7j;>tj82L&TE8z(|uzCcW`EH#jc+dG{qinsULRZvsJ)m6Ed$spat{ z{;z%N&d34;4vs?0*)xv1-`80|K!iJK;lL+?{)zaU)sR<*HIKB?^L1$>{zRg_;Kte( zPmElwqf2~HtVCucNFN`@OC&)37<0ce;^9Hs6%`%Bw>uxO9VqWnCa27eo1>rnftZFX ze=`wo$suYKoUzTv3Q4#hB+Jt@#_d_ENhgS4|7GOC=#s!#|tH1OW=O9{d+DtQYhYWc}YJc{LYjL zi6%DY1QzJ}$gh4#h@|xt>B1GWV%qFURC?;Zk_=K|30%JfP) z`#z@y;n2FJG0fwcj<((qMA=7VPg0`JAI-XExf&d{*Vb(-OGgE-y?Z-5MATa8l74+e z^DYC{`DmYqnb?G`rLOiF>=*;2wO_Y0yyL)%&Q|R!lu=QMILc6 z9gs*|xI3O?0lv+hD8iWTjQg%w#VO^$Qn9z`bHFLg*ZIIS%j38;ZyhkK&2o$r0}7Jk zZ%&{vq^DFI8!;=N1lBHiDjwCXFYUB~`>bp)pkbH&Va2d}u>&_kg9_B`q?!J`tNn8a z9)1Kkogu?Dm9BLzmyzV>WQ8SGy5u64XU?f#_DdQsMoI3*;J_>C(reeMZ~WUEVlKX+ zY-Bw}W}>f8BOg9Q(X!6(ESTUAS_xg-Co~3V=sr?Bzmqwz7T^I5Qcgk@C8lch_`1U#`}i1y2t)3ZEsk z1qfWVY0d!YvNsX`G(78(Q3sN3AV2j*LB2v^vY+5uVwX<8ASZtFp=by7M7Vdcf*0xX zs|lBjYz#Lrh`DU@UR`-NgvlDLL10hVlG$0kOni>~0w;PQ}V^x^P; z-=lER#hC+x4rFlY0T8|YZbPIQWi~*C=~aI)XR|CowT(k8O(1^+!?+q4gce_sdLy`` zy@h#HMnBU_U4~C?SS*fhjC(n#2>i9?6-us!x<`4;zUbZ(0BJo(dDr8jacSx1bwfxd zS3qzU_^+Lv#6YqJX{57K*y81S5Y0;=L>rNSxwBky+#6bZ9{-c663(sQ6W&Zmf6EB5 z17)+52!%%~*Q3KAG97p_DAL1mVyVP5y;TK}S!(>mV(Aua+x{T{=Vu1$0gU?ii)$fL z6lw9#wFD(|)`#uv?8wv(e}|6~?JX29=mUpjAbt&Ip(YXwB%v@m+3#UzCCz+XVU@A) zIy!;f^Yct2j^|eLyc5scs5#PaRw*DjHYr8Y4-BYn%Meh)`bz5cGg1V~gNh+fc)Q!k zu|x{+Hkyrp-?`zMY`o`~%i@oLL$~ZtUFxrMRQ>*%w2#JZJzDM& z_}NzFAnBe_ZAasaxSS6Eot@_Zsb!QfhU&dCmri#i0NK;qN)(~HQoCdf_@!w~yh_g) ztlTQ-r+()`B!@8X{e~^&^*!416qmBf4@8k2mk@)S#F0&9rvP?5)OHGRd> zBe&$?-0Y>w5sPolbs+c`T*@H1$Z6URJsH+oY~#yay1RB|JUdD>G2Ih;O#@3B+{Zby zMy_*+8YisQ`;yqfxZ6LH+}@DIA{H2g`Ft?Rq5K?_grvrwSuc zsRTdxSKavV0Ni77CR)5$v@PGcY1L$Gp<@I1joW3qhlMw2P=U0)jf*D<;nzM0fAid@fmp8WkUgseEwp z!*-FzNOGg@c}FonvnmXtO>#2!NL1ItPOUf(zvq^@SC(?=srHhp`Kyw}AKI8U zvNUSi{f)_XZs#)o2ZHOsv~S1x*Xeu1Lr;)BQD5S)61(rc{09WeIc7;lLUs#hj# z92cYnNjw`DcXS+*Cm?-ZL?iItC*i9P>*}j~3wYBr5=rDZ5R_w|ie$*6j_WgX7ft<| zi55fL`80T$y2W_Pb4m2Gseve*Hxp$v1!~QQ_xBvtLy>2kZ)b6iHM}~9aaqI=ReG%l zDG2va&tan|AHud~OVH*DOv=Z@Yl`8Ca2Gu(~N!x%NmZ9M3)d+kz zwVX2*o>SgmmbtM|-gII6-UgejEvzrIcPKZZoH`QS6{`MgWWQDhd_Rk_A#gO+(Z15YI%UnwBpL8Ii01#D5v+y)^&Vpu~ z{CdzqOhROr!|w^C&CP!5lvKU9OX!NN(P7p3@5%lMHb@zm;cRK?)V+ej(h=@|}MPu3&z= zrGk_429Zam-U`~L&5LvY^7*!tt38CJ5ot}}CwffnXj91FXb{G;uB2>3DErF#LP~S3 zrTC6lbHH9e24uZiY}!-|)KW4EKw4)>lxWxZaCD1p3>W+fVk8-@P-u6a=Q8$brI#wS zA_Ne3`*O0qT)1LH1RO|LBn8_O4Rl6Czpi8IHO0#)^+5VK91e-#LLhKl$(ovASzZCY ziP`9L&-cBcp78ojXh!XirpR*C@DYCh(5dGG_5$PHiTf`k^MjO<-SBF*DRX6JZw&lx`2--6iKl$BQeG)1WN%uw(AD$` z#&%t%x$j}bKtpm7JR?t#O-X6D;^(srOuK`)Vq#lelLRGOB$Do%VACA>?URU+K`_DO&QEIj5^pyG{IDA6;Kf&#JNiy zT>?&`bJR7=`sA0Rb^Qz}2a7RI-DMB_(v!BaETh8CBGX8W z^bLCL6T2F}o;wst^Da~v@6{y`9umE|O?hD4%0z~Jv~~#Vw9wl+ZJL}Tq_Q3CoI%|# z+S#gBwqZ8I;Z;)>>SJH+vA;g)2>do8vYK@-5#HPG3Ud!ilZw7_E#Ex7Tr!2B7~bo4 zqDen~=Do_bBG<&D>iPKN(t$CGq~R9~gQBczw-5U*$2gfPD;{r-fb6_E+zcHzKTkC4KyMZEP+I>a#;dT4RWY4M75+xbCKe8{<$ zQ*7lT+o1)0s}Bqud7e49093|^x+a{srY5E9;ZFqC z`&euy4URSvXY6Vpzh2C=+3-NaY*OTfy1puq{>J7^JuzHjcNG9Um)&}?<>toE&$&f= z@0WVPGC+RtN5cAgB=@ksrUU}5;HHa!PCK>I%s)+AIXPZFnaSY2Yqp*Mg|Q=&k?j_M z9{^}Z5qa+>yxNbFcUc2_dO>TTmyy(QOJB9U?^T3Dex>K_!7+&wDq9TOktr|yxbbkJ zb_FxnKmANb)b>A{1?p05R9a21q+a4{a(;d8JlK&vEO*n6mck8KABWr)SGw*T9v})L z%vI*WUv`6e4ysPv9)2~#Xk=)I)G^a05VI;`dY;<=sYsYNS@QM8{&Fo1-u_`)*+ZT3 zDP{RARP=7l9ltpprADQ}Wu9$`YH1&z@pBdJjF5S8AC1+~rPhOo3+b7kzMl0DU0c@o zkSxo|V9LRTmbkXx%f6{@3)lItntuOl0HcIZmbt1p){CQ~-6_WtMLcmP)~|~mfyk2<(TuWPRq*w% z!N?XN)uJ0>hf{ZJ)&ZM$yOthZKnJgdG<+Cv9JNK&m;;3~eY=H{iZCwDlfq&3#5l-Cs7K4t; zVyE?_i|OJ@DLbL$I)m0aRI8}RJ{p0W$&K8mkefrl)hdwV9n1pmVX<=6x@Q_sJ15nX3)eKMu+K44#xQ3 z*RtlUCUT{HD-h%e;XJ3#WktTSfgMr*qxIJZz&A@-Ro~%Z z*DRbCnmb95XmTmQIM!0TzrX)}yi@-2hg)@(Kc)5b&>M||bK7ci-R$uhsm`nh zlUcL@167cZ;x&_TjND}2-gP)+U;7T=Y*7BvE-xYB%?d&!7$KN0Tek|hD^OlKv$gvZ z+G=u2@TuV1G}?hfq$x0py)S5BVJr9n@%r-IdBf6UOw3QAxk`JbdW-42ewC?XP3{%$ z-uQRX+Y(@A$0$Ufl4ic7I1g!OQaAzWyWZ!xZ_Xk=NM_ojHHx#}{6p=484WX9m<@}F zYdFgB%JFQ(Uoa9@%``Tla{+vZj0$SskQTU`$rwiaJmLjaN^$E93Xay@^%!@C;Nr*1 zNv9O2SW}$aAE%^$oefP!KN15mG%pwQDq~{Vw!m=AeXEn_HrAuUpXcvy96+reJ!)MOPSDT%ygzb01@G92!q@7p~a<`W6 zI{PX`?If$@RzR;@k5h zvQfdGoA<8&;EdH2J)_`Tr{uTh;#?NhW#t6%IF4X9S4Ewcc7tbfglTSZXx@7zdrUN) z=$vf7+%Ij&dD8BichFd41ElwG4$*EW2rLQNtiBCAWRp|`<6~@_-_XKb$-L1>EmWP4 z%?@w!6q)~Vv5BLAb2dD)%-s+i$otEu{UbR$a%@e%z^};qWH{@Bz2LI;v!!&F#*1w& zF@Okbh3Mxc1Jfr21pd+(OZ=Q4JrO1I;iU&kdYtHohr2XTUSn9_6J?bEYuMv~fR+ zR39JM(*%5y7!QPZRJiwto+R3}m#`y;p3V~~#&0NaWGQGUr|#oelG>m@9H~cM4_WHf ze7=TCfwkzVn>FFn;D{&lNRjN|w#c^j4=I4m`QMJcJW#S3B))bj|FT=tQzHAY%))#j z=P{0AFHsP-CSA|1(tK?G_~mS^F4Hzp9S2w!Msf!Se+ zEUz_>emQ2AGz`GqKQvp7G^?(}u$2Nlb*NsYN;RwWa;{nsq3<*$Eg0Xo?KDmlCAL=0 ze+%qPVz$fr`YKH=fm_e^XuYGj6~k@D7EGlpFUk6;0*!(lOBGz7!90XNHOa1<$$Y#{ z1|5jZgP!3(Dgy9ZA71`GL#C-5d)G9R`a4^I;wM$Qh$tbhEW+!z6R%0hBuJl(dM#64 z8^0oo`duDK_L&$7WI)f9zn;JLYje2%*U_FICqJfMKh^JY8p?XOOkF8w!p5T0JK)}m z{ZXr``%Tel;b=qK_KN$h{fn~JU22_n&4yFu+kzm~z303ocpFN82!w_-(j<}Ijrn=T zI&nY4_(*`HLVxkXCD`w+36--8+OJ`HZH9PT3(51|OLTCbnmW{(If*MUZ^buRN@i|l zPI3|P%2;Rdrx#(Pz}`rr_Rv`Elu=twT*P3qMEb;;REeaEvgOX&s(LRq#hF&??&fP$ zPJYT_$kskm?$E&@&@iS;-2s%6&%F3qS2mo8lxJ6Lv|0KS961~RXVu@)o{2$umlrbt zYUQ1HDPK^%9w21MqdiLeJEn>H2GleSSpbX8DS?6UU{$l}02$`pmz}P$8A(Pc_jZhG zfEu(e73*<-o$zNk_(UAuE`rE|{QX?2G&WYE52SS6$H3k(n9|^lM!EsU?YY~^B;PY)7{;%J0Y55-`6((S zzJl!0gDOI!2(z`4?-{8iIM^lPu{t2_UZgr`c%&1iaAcqh6`M^IIZI44+?Ttp9f7_$ zj*`I-JeD8pEpc)L`94dR%B*kX9+6=^dAS!K^M&|=8cjV0^j$q$4Ww*oeqYhpUA`F$ z{_+Wf0D&8)2k>+KsvN*~pS63XAsjz@`f+hRW3V3*eG||o$1Peu!Gyqc1}Ix z#WA>0{mVGhdVRphd*#E6c z0!aR@2J1=ROGNV?z7Tr87`2cwWab2h(Oqo1^o@r(yI2h4Y8MH}Pn+L-hb&d?hj zqb`#8l`qst)m=>fTwwer!H*>LFk>b{p2JrtH27eYqd^IXFoIQR%zj_V!%fK7 zrI6~`?>yv!EezPwDt;3_@sf*9=)D&J9Js`wF|{iJ8_}0?EQ*@09n%DWR(7wtHf*iv>C} z%dQ?vktZHHN~uKc$nggmM986H;-Sx$)PQKLutg+eQ`|1m;3DiR5*f^@^XKL4kh00; z%LtG1hQ~_|n*CWEp+RD?@hlI!R^GY1EH6MxK`=l7iS9wRd3{R0Yu-|5XpVHQ|M;A{ z?14OR=I7MwY0GQB+~%! zg!i{R#-g6!2UCWyB4#_vlQ|*G&#Yf3tItXHPXaj)pim^Rm`U<2IGtANtz-lh(d#P= znd8laxge{daNAY#J4hJygiUq1I5siS#gj_);EmBjZ`1JQNN;hwXsd@3_ML{NZ))CS z`XihZs#RoTQv??in0?m?(w39a)xV?Xgn&cPmJU*FEP1e9*97JZO|C zh_SUVHwE||TJ87gGlsg0qy`}`=xbu`Vf^xMEF4m@D#=Nct_)9T{%@f1!4qDVs32Y- zq`ZWeBJnYD^pW+=Xq_>DKO8i}y(uu<_2?YPJ8znSTs=~Uw3qwfj5v+KMIlKwvP^!e<8^DJ!i+9$N3ym= ztL}z#SR!fV9%=hlDxCU7VZT(0No~d;T;0J5;+3jBCc0Qy!Ldj7)r9~&9`373Ud}L+ zKN)+~h_4>Q%vRS171pCk=YayDWDhRuA@aE2f^VpQb55AvnD-^+`@PhCO_qKbfx>O{ zT~o(GXEu{tn{*0uqT{w&mm@Q&`Yra#6Zv@DlBk4Gas=Sv-Ob`ai}t&xOF-}1)mwG? zeBR6ZM}Fm@Lar<4@Ic^-Nk*5SRG6mF-gPR!J4b{0HMo`|~1TbDtrd9{zEwY`{;;~0v9CsFUv;^&3$EsrcrV$*)#c!!@WuOaVhk18l zm@FD|dNY^;M#e{&Gw&-~g~L3m&L@UbW{lpvW}m2Z%hJzS)hx5(YB{-zaMSUAS+AOL zu+Y&-bj(W<-y5)TVApY;oo&tZUj15iG>h}*>)UD1JM|x5>aG?5?EZ0L&yiR+%O=NY zeT83=l}F2sjM({E!T^SHDr(v-D&+(CKwSd~~Ea*y&g`Cb> z0+84z%O9%*gL|-SLD+lN-CUPw(AIcVzF1^SOuJ?4G{5L5hym=~q_gkh6Znl#_7MLp zIQZxXncRGf5f!U?Q58WZ&`|DHhnoC7@s(|}Vc9XCf@XbiDk{liR=~a_@*Z0Q?pS!p z%W_$PbRHe6~s1J90=!?K*v*+@Mo>L<^@{=t%7AR zQKr$p!FsYw@)+6vZn2dG*hPqLyrusj@U>IkA5)^_OsnG7VEZY<2p{#LQ@)$%D?dx( zePPRmbDbr$y(*Ar-P)C7cX_-DZE$CDX2sEiul1521KvY|wKG$DPR2IKLieh@v%%gy zuC(yQdAZ}$+R((y(P8lzU8?2k7oDuNYIT9-TIou;_pPZb* z(xP3~q^U9ELYSXuezjK9Na!_~!~U_pFs(=8viEECnO^V%ndsc1+^9!s+^E_go=0ca zHmrLA58N{?ULcR~oucmC_|iEmPA_)Yb2+8mo_aalROakHpC|ShlU_tj;m2VzF3 z;8%}{XXK~6U83oPujUhx;hQW%?qF4uGz^zb&JE!15@((#TXl(G93+HuZ|*Swn#cyN zuWXSnr1Sygk`xX|Xv{Xf2(!2%=*Tako5irp&86Tmr!3c>suEyN$Ej-X@IsVdO!2sRyG?XNn!QNPV(2 ztanqwP0Zg~3MF4k^LraXo!aW=Y zt74BZBg)<2f(wRl4Trr(`H!A=m|RvMu(-fz6PbM>&Pe8LH-UK?!?!HXO71#+2denU z#pAtD0h#@uzHLO{-ajmwD#Fr^R@8j!IVUi$j$usa_op$oLPAcNL~~j3f%0_&as_h= z&F3V7ia|sl)!PR?s;wtPfR1BKp4kvGSL$&`j8omXXEt-5=C;NT5|RNB*OWGWNvl>A zaIdK9t!E$+#KR}@W5r&<)fbvY9$yh^Ai7+=^}KYX_~tIpF@5EjWtlX%xD<^Gc> z8Gqc`oQLcuJC>KzkNg*_b)y#hFsJS()hTOeli^vxu64D6)=FRyaISZ6_5Rpyt1-gV zAUK}LYpTx6>H=2)xd)*ycv%UpU$4(%KYLEV97hHe^SeINOVmRCb`wrN^gYe{>r;-z zo1`T{B|&sZu;je)NueRVY=^^lgimV!CST4_J`sp zmCL>>?%lfBZI->{{gQC)z~##nenFoD4e_!wt0E&|o4fquWv;4oIqizuB1_~n8Kcc8 z$K>RJqIWQxv#BM4Qvx9wm6u9w&&e<*FXDluUJPPXP>gB#n|B92OpK99i^pycmd6Sn z(#;0H`>%zj&r7t00ZX2K&Z?~5iOD?q9O;@nz%vn_bBF*4i-@rl2cB7^r36Y{kQ5k_ zMp81*OLKoX@l%e&*15;ZJsjQXqjm8^>RW%&hv5TMg`&J5iYE1^)Le|OoQc64Y(|@T zq0uToI>0+vMbIXp^7J`JEOFZno{2WQ(F5@cX1SRv4Tu4Jwsx;FUF74cF>UuIJ+^jU zbU-j(=kjGgbz0)N!t(c3?TTR^i>X^#6nFfa;f7!4hRPB?t>g9OrH4n6MeZiD(ii1$ zlhHI1HMZpaIWtnfzNe^+Wkq=>>Cl4u`yzJvC{uTMjqSL=KUJ;MK)d3t`=|;``q5{r z1V@`$O>%URIOn_Sxgf2dq12e}GogX0IZ0>k1v~yW8C{n(*JcC0Bhfp;ZE3MbW~*Ei z0vvU9I`<z1(!TPYq`(shJB0f|-s$6}#9-F1b-)+pkt%Xcr_eb{>5W zp*lfiQ=grGw&_0l`LD(vjlS|CV1s?m0V{U(RwT)1(6I&)1!Rc0H_M_}$>Qi!_RlJ! zu2=!QxJ!`MyaU6?R**C%1Bi(0h!!;ELY_iTSOa9S)9Up+LXS zSy&%Lh*#xq2M=>4+@Ta2nPtk|>o@0Xjm4^r2eChGDoBDM4u{sZ2E%74L#&Qbx zl<|9Zntz+Q>d8D)J( z<|RCEaO=$}ZVa=E8gxrM@xwU=ZHb-Y4MvsB*pO7b%Y~>_scUt2S=IVz8jq05uR8HR zcYDy~a~EZxc-MA++6MV{^rdQwLa~nH2GDZw#D!tFFN{bC#t!`w#RJ((MR#zivHF0K z^9EjA8cEBN9u2Gn~N_R|8w0mYM-3=5#vfGf>C!c2|F*qu6JZWq8Ajvq- znLDart5^B;h5Lb*WDq*#Dvdj!YH~vG??~KV(hW9vz-|VaI^(n#-J3xKF@zI#f|Dp~ z+79zOdg`@zx8KF1u}m-MRGbCfZ>xRYg_&7dR;SoUL-UQf zkoy~qzbi2@M;c^>?iSwY6eQLZXJkuaSooD%Sw74@wdQ{cqk9*O9r{iE#|bD{9rid> zn=tR229D7KqD;;_0=+0F3PuPOR>7iHVzU&7VM3egN%jQHj!r^oeNyl5vGaQ zD%Pvsb59THom_GbaYuKBj*RB1Uh*#~GNpij4R|{{RD&uE9rFwI|MQ>1i>H&lX3)5J z{M;u&ol(*KuNMHy1F|9^KjEve%=3mmH)#w?wj{yx(n&=7r>s18@&Y$U%!J!tY77Qc zX;swP{l;30^*2H>{u)hxfO$Q&Z{1%y5|q#R(X_6~)E3|WT}L`IkglzYy-tUWRImm2l zcRUt>PR5ciJ<$$`+_B$vV>mMy9EUsnH&Cz%*#1r+y`!E7N0-bf(an6J6ozh;8$1upOZd!od*kt-Pe1NR;OgQ0)m|Np$xKMV~ukJ|Z{^-sm6*_(6l`pYX$G5<#I@R~dZZ ztRY(Gdz^$;9j##dFvn5dIgs`)pR3Kd+7H%u|VRc(2jvNiJ=l< z&L#E_!ZWVH>)5Y&xcHjcs%hFCYFr#7D0j@s!=E?j=O!P^dfIOPHFg#2M+D?IRAElCcHaJpWMm!vsmok^rgT@O49zV2x&uOtLRwr z_M^j~U>R-Z*2iZJ666MQ@d!KV{ZO_w8B1Bjc}#Pu2u`|F(Eot{!m8cO?!Cgibj?Fk zlDFWhbQ%nvt17)yc;*!$4OXQ3=2B@-QH^x@@m;zrKi!B{o0DI{Y{|cyl6?{t)18uW zwNiqKdig?6!pc7|+Gt0T{B2dw^8Gz!cWK?i6i$!%M;7w?t<7>VBDVNsYpbRDN^PCY zV3ZpuTqM!+l}jI0Y?-Rv1%uT>7KyLsEnd=qS!db2>_6K-9rYIt%m@Li zY2gYROumpI5k^pIpIqoNWoNHsU$#Q#)M?`*{({E*fKpW!g}z#{>_y)tetq=^(qR7( zrI=$*o+1GB)<@sPXe+%>Gq=ra`F9Dwxe%<7hk8qdtb2QSq294;y zg`&m1NU#=ncP$#om+t4@`+lC|-N*NfBmB6MYppfsnmOm38OFLeHJ*q z_}#<)6VQ3*MM07wrqupM#OQCh#OEVH6NNMGRw+ z{O`jBQMfI959g-ZlZt}%U%qJ7d&Qr@A(|~dw+Oq*o>H-w0e%deJEI?{CyY)6ocLN@ z`K2x%oc$QZ5zfBP52p9A{=)kh!2r%LDI-{+4s2X zy`6S@*C2^>oK@eh3gb!H;ds6~#Oku&D9qcj-F+{WzIstOb$#`9UmTwLP<*@Y=HXE+ z^!I_ZM2KA{B0Cl{5Wf_fa2}awybUmKlqPoZT*9+;0J|ixD>)u2T!z__K&fcyD7W(}98%Ysp5#3qI3u6k6 zX?u$}$m#F^uCbH8k`=0fH=mlg_N9m#zedM@&qhb(tw4UBo}BQYGc9?H;dS@XqEBLp z<8Ms++gAU8GaE{2bY~9R-O;2?Qu2BDB`)NKyL;<2V?IAFP;69l6mTqyCLva3;VB)m z$sX|RebzXc5ewT;DQJD950vBeiZboSH3Q0&r#9PcA$ zb#1WWVT+Cx{)dr~nI)YyxqftiRR+R)HKZPx!q{U3p+$+Zl(7s2i>-D@YS&L>vnwpG zUoA?+fh>PJBmeOv{&pyE2~&OuqZ-b&)~F>HMq?g)iIG(MsG}F2Rd*nRckJZ)p+f;E z(R!jAS=@B-eOmhPK|4bAoD`ybBCgIiZX+thwS7xg;z2^d=dg6GUiAJSc=^lm`RBWe z*wM<;Tz`l-F$F9fX!d?S1I5PM8M5h4aHC70;||EDKNYUvwKY|dJ0{ET6(#&#Z*0R2=h(-;r&`Rd&~Qqu&@i=OY@<8ofauVmrM8RhOq{V?eCNwU;1&{x_Wzvu|F|#z{7J)7{{3#VA?K@F(tHG=t_UumHAAsw zo`wBJ2eGO?kE}<=eL#;5>jtzenY-D{B=*gqMy+hN4 ze4A=QT2B4TMatbr>T^l`-*EHKCH>bCA!MYtb02gXqHwsRlS7u|UdzX^|L~3_GbAf4 z*T}Bd6dIpI+G{-)D$Tqrf0;uVKu7<6V~brXby*mXxl1~EYqrK{6Pdf+`1tS@wa`TI zZ7rA9m_qRDF?eP>9(}Lcz~8I)KPUS?pJLm_ z5`1-6kE-HCC06z7`$F2+O^&HyT7Qjw);Vm3R4f-jnI4(l>T!r3h}A^zgDn-Tl)VXz zss=uH)mTX{YO}D?IYEgL`z?Aw z$WyerR$XyBdkk1M6d`K?E25|zqQD+&`Kxf;Bc z`!WyHDJChqCc`MAC^~3!fKbP^i)h}kh(1oedDYWANioerz%N|>=F`8vmN>(>yG)EV z{26Ix5DUGEwrQ1A@jB;(Ji|+CHC%S8k^+zr%}v>=S`` zmcr6S$0aMv9tc8eX0@DHy=gWBMR!pJ8M~#7A~L$hmF#EAUXYGph1M_DLB-7~9<*G6 z9(L72_SO(C%B)$ra9@d^92aWh|Fe%C{$Q(?O(w)XzMhY0S5AFr7^5;D_uwlqnh#&? zFOgRIR|~SCLH;1|X^cd3BYTqn!w!y?bv&mwIybsN?T?sddNP_e2T<&1t*~TFEwtS> zuGL7nTQ=q7)8}ShqbvusSo;5N7ku7CyVXL^TQ_&}w2TY;#7r%9*0AE@RSbt(#{fl7 zns;@0;|@Qgym+=l|Ngit&g|t_q{|N}t_-=Lr)ue8M(1jq1hQ|8c@%deH3o-fpPx}p zN>uZ85C`$&K1}3zrWJ)I)#L~85}EBEjdM7;j8QPno4>&P_tzr`EmD1 zj-&jUJ4RaN4B;5kBw62EfsA>C z-glC|{YYK9qQvSGWqi|V_}w)ewbl06Lt84Cd%a*4=hgWd&TJ>c8FQkRs5WjuWQmoi zg~IFo&agZ>z;PLx*xCwZ*2R!es3cJBPD3=cRG$7; z;rgAX)SK__-wgllTA;|oYU1E4q{e;}*S393hj0KgW+^V7*S-3EFWC`^y2;1w&koNa zSc_kl|7f1i6&LSJdmEO6VRvW;<{}rxDrOOy8WT?JVHJbjNfMW3Ox+c8e~J(5B_Qqf z=~Tt-%edS`sCZ)Wnh}@pbbP>eD0q|;_)hnDE;jWaSL**j0DoLaMp&xZGY2o*QHE-x z#i!ix00pbK8M#d;aJSrt^~Pk}|{ z8lRkB)S?7wZ^2^SQM2)ZMm)d?f}pR>SiK&VAs(U@RgQ&ybB~5`KaCEL65Vnr+HS0u zFC{N0jq)L5D*vxlhQ7qoii`<^SFV&^EiUA@`e(->#ky(+ zaTR0Nh3kE6Qqv*zB9|}xJq;u`)p%Y9sB|4fVKd6}o=L{1oho+KL`lZ?JYim{Q3KKr zUtcY#;Zr4G{{mG`nm)vYtP}kT{g=xWVUpp%ONb-6qdu2W4Izl{&9Jp3x&MN&&&n%9cwJw!NZ^NqA4^u%^X`t?3EHs#OoG zROVR*+9l?{T@bYUzR;`hGHqJ!iSic}*Nhm~aThrH>(bt<54f_!m!NYFd}J(IcIHFO z{q`N)+pKN#-BvoC1M~1>-ojAIo3|&DV9S`gy<+no_5XQSiaM-KF+cn5#kZ9& zKh&g0IgSCks#lr(D&_hh^)-Z>*pw)>K&oFXpv#r#yqGk1>(+(7mgTqBnt`=|LazgH zUZ4Cl*ih_dgh$F#6J_W13lTjeIoJhEey(qSdVSGmeA%u7Q)IW&t7 z#sdw*3Bn8+N!~uHRUXsFfiu&p{)f@|uY1!uD_67;4}MfuKQ`sD&rQLGk~Q{{82FC} zM(ELd^1o;)~2Y*-;|~(qF1{k;Pj>QgCGMjyr0)!_qIX!rx!YnZz;)IY%Y#v?3Mb z)f#DH3>se+`1{RMi3ZhaPm9+!0_ec?Q1P6Xu(^=bRdm5K^eNH`iLvB$kQW);_>hP!Qbgmgg2S=*N24ppZI4pS} zJM?>pp0?}nE>;r2Wxkia%GdZ+8+hyDB3 z^=3xhu1eEM!Rv^{wVn}1gDV(iMW%pZ;lEgBK|&`5$K5E}BRw%Xt%&Jm=ulsMX|p@f z#gH&A@sjyGF-HT@W8Xi^TCDisiCY%ixiQz3#>{;m{iRAEA~T z2S;cpUaNYn8A{(6ls85{4We29YJh2$LYFW5%fQxI!GfxJ|3jAiFU#0PLn{;8k1*xjj=66gP|Evt!a?pN!_O7jTvJJ4qO3Mb zVXz!)J;6yT8FAJ9f;6dE_9GJBQtCSrwI8+OKtjl&MxYobyUygQxoube2-yLPj_kK| zEQ`yF9VY3P*Zc;8RO4Klqw0J_0^}qDHQBX+6rmJcCEM?)=qw7(tIGc6e7HnP`$p{O*NVq?aZh5P;;M#uWl>Z&{{L0gZ9v^K`!g@ z8taGPqC=aM>PF^B%)|B9wQc+a8%Ui*<{$rGT-QRIM??PLI?r6tKUFhq-sp2#vh=dP zjJ;T_6lE08IE!Z_2zdviL{m`*i@c!!F$O<~*sO$#L+`ZDdtD7hO;c8I$PiZ1D}(%Q z+QDQFt-1F~e3XoewI8FP?c0v#K*GmW&Z$yAFHTHL(SYdO%7B2gbWg+c+nk-z7s)3D zlLk8f;$>*dgdnC6yIwu@;qB1t(y5xL>JA%CmW#C9*ZJ<3#rYUfJyW=ZQ#CfY(2}pS zE+Sua02Qkf0OA)Y>&Tq+g}$IK5640@Sz`8N+pDZ?bKiy`qTc}(OfT+Rn9dY&pfYrW zYF`BXgjnl+&{tLT`-tlBIr)`t>g9Bv=Shc?dGC#WL=n0xwb#j7|BX` z$~l+Zu4I^llqSM@jTL)9tE-D$Do6rgIFA29gaNA;I4s{Ks+^jJam`2qD%=ZeHWh1I z9gu{rbdhStRYa>?TvEF}k(S0{#cwxKA0Z?WCf}0gs){g4t#e~wBNxbbWV9S1Ia{VX zeijr|@bIn|jov1_rlMeW!D7}QD0OkI|1NcC>#?~a0Ioagva+PF;=py`vT{E_An~y4 z@cA2EwTPz8@$u-<1JNHTUz}KLt>w<17Xi)Fr~Y*94kzeI1Gt#j)ODt0#usww2Q94* zx2T_@Hq>1Hd({+q5h5g*l_cjv@Gop2bA2Hvk_R6*SBOv60$uu#iYha4gbcn8qqK6| ztU(%wkXMNzoYk%wI}Kj`H6N6@SF$)6_u6w{?*1xFVSbTI;W zpw1JpL&v$dp0+xMaR1`ZR_h~nm1>>;+(2PS8ss^Tw{=uf9x*F3G&ey7%-}LT;ua?V zfYH>miz)ViIqvuCYS`lMB2Vq41)=15o{{f%qowAOv0{qI5w@e?NStgFi}$-)r9CZv zH=r3;=T6>J)w)yOqdm~Q>#S)0H9CmQcH-mP1tt>;s1c47epK3+rv51*o>KN~D^zy6 zt!=h>dAJ~K{PH#ca^Bpn2t(t#l5cqw2-VuWSD)=c`0zR$AJe!MEf-*OysH-rUQJf& zwiy0~)kied5bydEh_Dk*`!`Ix)P>E=gIy|6`MWmDV{=qqT-Q#B_igFnk@&*rwj~n# zocA5$;YoObin9|fwBn{af|ey8d!&nez6=GtI{>%4Q1DFa{juOs{&1u#lP{g%gZDkT zT4On-0R~lOOWNYLri8AhAX30dPCMz#hzPo=qLKQ*V#OcRWp{BOT8`%0ZhT~doNusu zq643FdOAQwBW<$Pn#b<3QPJX9E_!gqH)+B5xyF(cb>imI{buixgklKR=rMyO>?6{d zBmz(K`V;hP*c~9_Z$)FFok6Fu%+Yp7rDh0a7fD*2>Njj;(mM3JH+7ewUvcv;7Y;6c zGh$Pi+TLP{Z^(l!2RiF+NRr%GhR<;X)|unMBAJ zob%oDh?5lOFQ3@k0S$wEOtOVfFlWdmu%0(-58s^=L=o`&fF~xQjkT&ygcjh)^K4WR zTX?RKm%Tw2b;9RrGBr_J*IH9(EIN4yhV?F%P+po|%9s^;*QE`~fxlgFG^pwcV+py-XTDYp8_A@!OJHUv!GtN~MuG!a5raV3> z(DUbzvH6o%Hw#k1V^kLnr*%~}8y{m%);`AE_)!~+yQOx7qSx&JV5o8?q-CRvNeBCd zQdV=Q$&JP@OS6*5VWk*B)D+Msx!81g*6>p zOhRDHef9BN`AOH?P=f{BBXj{_q?BAKhQd}PdJ?Q%#8T9X5YYsuD56cviGHSwGgcsF z2CK@zDrVK=*fH5{pq|c^4*WvPbo}`V`CB9LA_pA+yl-~N(&eE150_#O>J91@WQMXa zCmNkGCo>IK!f6-B^HX2+ppPee%LQ~2j`!Od`@xRxmOc;o^~2xA*L+INY9=NAuu_K% zDZksDe8lAFY>oi6ZR@VoiRryJNZ zlyU;*n^Yv?FpqZQU&InD%sX4e`*9 zqU2o5sTA_WmN}MC*^62-?0|U%-Ot8fKfL^<5Jba{Ldg{3w&Qxc)FZjj(Ji^4w0-L) zVxuKKP7_3M2f4eJ@D_6Cnj9Gj3gHxYf7+uuclmi<<6@@#Z)z|B1Le4QDmTh?p#%gr zvM^${3eHfOkGL;?hOsjIglSzMJjObGU0uYJUdH>T5nKr8!0W@18p-J zWlymLfr5nTB^!`OwS3VhlO9NhH=v8YJ$GY;Zziu8c`@)3mQvoLG;Bh-u-Y^MAzR(i z#6!C5n9Gc;9wnuTHSL2Nyw?cL^+G2Aa z_qHObc5m;^JOy%9X#9eR(|Hgt-`AZX7<^lSW1N_K{5DT@N%R zr8$o3YsAtBrA`PISiOSQMJMr6t8nXuB$$bq&(lmWBtN9`RF7QS?$&MhbU~@WCIs4G2<^T zR~FE_m68wW3qI@e5|&O5+A@D=PK3Zh=MWHV^7T}#KWKJ$gY6MiIQ+J)&f#|dBY5id4b3k7T z?nWFxPc<=JgkemxtS8Yn_Oq;}+U)QlF1`pQe?j}FR6IhlxsHrLOt8AxCL!*&XrB9_ zkpg-)$;FZpw$4|aKGBPiX6pyj6Kgb#t9448QrY_6==H@P8iSumcW5<`YzlFNwzdH+ zWwpDflwKu6Z6U~vpEcKOVkPH%&1wnAUL!*5P~dCA*+H$%Vx#qmF7$Jt*y}tIl+92S zg4d{94v@uETn>ys`UYtMtfJWtn&9LnyDG|qLzmO^tNO$dVb5QIb*-F@ez2Qv-RLbU>sRw%Nk={%EM@j*I%lfuvzcB%1rr}U_cKI)oY%KB0>bX!2m$i#TG)%R zf8e4_URbZQN&c9Ng?6|v%0E>u^qeeU;@Xq4>@s%Kv@axfJrL0b&JbgpcCisoUh;Cz zd8NuwvDN#tOyT`~FS8l;p^nBTy~q>2D$><-EqtsKPF!hEC7kx)A*KJfH_{VQ4y%#_QS*0U5IxTzv1M~+qa){n%;bCZ??CU zo?$~A&2bs5S#-Dg){fKlUtGGhXEc#~x4pWz9|qU9KhiL~=Vh;Ed+SDu>oi+uRDN`b zDy-vlr^nphi+v;t-1)=|a-$#!#Pv=g4y$r>8xw-O4EFjkaVpvb`6-`G{pi-D4tI-N z<^x8}0BKfDrd1OV4Ju(_9zSop(jyopMQ@lS@HescDLkDgrHs+@Jg=UZc@v_&z!x?3 z*PSQ~#XgU=qP(sR8*VlQqap2BSi6mW9c|IgeUx}wHsC0;K#!~cbAVCNS9yi|CQ-a} zzgK|#o$2u*LMQz4Jiv@of8-i7=L9k{IjovATmvV|wt|}(JWgxcq5V<952kQCS6A^% z3>k^~ib{}9zx>Okx{@v;Q-D{RE+^k#(aCptqxEn^;uD#Ini*9&D$)=M7*pOdc*10) zekBrRtB=GJg@#^6u}vZiG%g@RZEuCHMrv)^LYzA62I;j$DA@qY(*3#QC^~3`Tscaz zKAYN`;XD|?s+yhJPHN_vBjb2k6Z6wo@50Ib3A|mxVT?-juGs)<)KeH>;2|{f(ULbO zB`EmQ-^pnC+U`Nc~03%DE;I}ftpQP>L*Hl7IFg+G}LwyHV@}hTC zKL4)}Boiy))r8xZg5TQt+KRyLi+S za4X?}4JuYeP54>q;Da9N!k2g&>t_-G=O3fIy)peIOc1(ZbX>yM4{v^1Ys$1$&t|g$ zDa|1mp^3N(v~euU?k96Q>Z?Z9gfvOU$2meBSWMh^lB{A{Xdjuze|#eE9%OxHv1itN z70&R5rhj{0pO>CMfU!|%c31NrFmfwc?b_5tvt2FvUw%=V9fe8fa^XGjN|9Hh6%Rd_ zKm1LoTpuaGWLDWqf0~C}zKmo(uKMy24ZBLNJ)dN+4>&;$#hWdpti_nni6M^OGwL;= zgPzF-C2gVhVwXTM0Y+VC6O?r{*(cW`nlw|nebVN0w)?_51A~g36AFA~uY!@6ns|-UXhQC>(-|%v=}rScT|d zaQW?Ph+SuWWVeEE#p(NPRG%FI_X?i>(v9>sXfMq#7o3u~_>lR1C%S(6muk zhGVaO0*Lyuc&Y=7d;9wslejz8S{a`I|2Q0cW17y_)GJP7Cc^ZaMu(%{k|*T+lh}oY z1CB>U6zEoFw3g|pI!D~nOM zUQBwQ52{76yGq2X&A*==+>2dY5Ru}Xdx&ch(?Ntpo>&R;T`P7Y9_a>E4+_mUM?doF zt(Q6&8nfENs^J64lc>>Gj)u5`ynmDJmOhF_b_$^51&h$S$_w{o-&&7irl0t~Uzzp} z^w_fWlBIBV%WFs;menvmbAcWge2%bgo2{>(Wi&fip+V@jAY-9khK_12&TANDC(cd4 z2E!P#R#w_qcLs1CR_~L~&5x;0p-2zcqgON&RBbnt$w-T}g(|3zft8r;3G8d?Z(_b! z(w&A`IZF%OoQ$X)6=-JJq@SJ~e!ShZ1`#1CzUnTKswWtzV)Jr;f^l{f_F?7Ouy9-6 z&o`xrEq;QgSh9L@8C{_L*n|nEg<%w=Ao1dKzw{SM5K^$zBkWv(YZ5ix)v+Y_;X;>l z_!rSU#D@XyZ-+sG>zJ(=pZeb>i~A+Bd=e707M^br2aFZ+=QQp-r3%7r<#Zij4zEhM zrL*x;d->Zw9rsz)Lf_SGUGk_&fW>oEiOV-{5%G-IME2ot{kl(vQNqQER7UA=!Rn8a zG_8pN(@uc>HSC6ps@j=VO76xe*pgKO=g$@lFl^U2=fGOx({_mcb^_EJ$1&>5mHK}3 z$YQUdtnfzpD**<#k|Tv@@!H3g`rx-E5M!jtY^jFN1T9|=M^&kIw|QGXG1i@ zwL~v%r`1Skc={tKFQqVtlJSaGQLrd;n4?&(LNhMn3l`h2Kd#m}p zU06I|tumdOrhXc$uLkHS2CNHT?!WYBVo*A(ryyWyd(CW(2ULWApW|KoS+Mc+cW6OV ze1KuK(^Ds~zLON3m14-U31uEH~}HwLeSUfLk^+CHdxZvG**8dAa8 zxvM%(;7nFV@NGE#&i{B-*&*T3U~q{h$FhSo7B5UAP9%To5k75qch`O3psZ$shbGos z^qK$LNN+)$HvD_3{Q_GDs{s8Ek*D!}hn-=iJLK4M9b5uS<;FHd73E!nvs&?w%tdTX z?a5*BD+Z|>cBBeNsU?Q z->7)Aht0z3HX*Lr-w_pr)$k9&bXON@PjB0Lea?h$cxY$wDRMkE?0@qZ|Ni7X_`Z<3 zVHDDa^?c0b_ij>#2G7iIL&;&o(x?xM^9{R=!lO%|`Pu^?kA0n^GS+Sd!$BNQ%G39| zDgZ-k#;Zf~I9`WMmjXzJ2txLtW2KN76t$6K=6zr@E{(!07;Il{1h06af!7UQuNf|y z1VGz#!0f=xIHj)WpQ&{3Db52Q*@I>Mxw>!BH^#GPnFA!a=kuMUE_NN#4^xW|a|Ij} z?RTv#jUNXc7=v$Nw&2~@$}fzb*_RX6Fo7QLHzFy}q-3v47#~TH<(0S1yZCQWxj15G z|GI7^9cq&QnF@SxM01Vp)$~K^efMC zve=4zp8NRWxHhy@9R)Q$$v?=7FF2S|d!hC;zsPVyRHowv&>ryp^~qy*{AE@C$h!>S z3-Nl0)VT^pM-ayQ?f@LB7i;g_OHzN^XyfE|P&B97kxw@~j=7GKWgQQ8x*jK)$4Z#xF{p=pxvA1PA z*_|B;nprq0)1`=92z@XL{zUZ?wUHc})s3Juq(Bl$L=k_-jA`B469byiL^Fv8Gwt@% z&$f?vW4t5j{7(+I?zt@pbESS;sZDW_*bzPnq$vtDS`5f$y~B@t?6|DQ-`Oc?qx@J#WOuy!2kZ7gzc2uxAn|G*xapsT0%NYkp|_o26y>Oe7C2V>?k1J#-0O%8@-fVxU0PF9H&H{B&au8& z4(w(Bp~U@P*Qy)8aV&Tsf2e`x-frIwAS6%UB)#?tP6<0fykMX%B>3|!3ldfa)#D=? z5|%eICqL;*+0NPX4*o{BB!aIj8JU$)(wsh`%s{*FY$3~Pin8Y7^W$3Q~At` zKYxYJbP`5!nEU$|vVha4!ZD{*Zm6BieZ9NPz){KoDef!cXc(+l_ zNxW~GLx_p4-E6IhP4O|?R(-#OQ}V=3I`r)zfW26SPM7~hyAeHqE|HVF)a#cCLtI;Y z(+)%~`9akOq*K@9W}$Bfa6R<9G?>+{WiuBE?0EA%)H4R!?zAK5a!F}raq`ZvPe~Wi zpCkkKI@v-r^@t^haJ(ZW@5jkTfMS3Lsi&YlKCjU)g=)L@(m5tVZDxzJ0{D`|kl=H0 z*(I#|1eHoBY?@<)cN*|>mVOyqD$t!ntEkv(C~hr>!W!5X%VCb)f7POm=1qczp^@jM z&H&kK4@PM=%`nNaOz`Ml>Q2F_5an|l6UQm%!@GVu721#4+S&>hT5Hg!lB1#FL}7~U zyh8WdwxvlP!$){ogLUDrx$btLch9^5kIN_GWn}&I1&xuAH6-`xR(Mlk72UgnC>-9D zxGz;NaNd<^S00BisPJ?iG0#{omStb@QE`2*NA_waB&bsRp7|+rZth}5q!}LR!s{*O z{Uo6(h`V5XcZEOY7C9p-9vtwS2&(9(rWxat_>t7{=Ii;jetZ4iKFhDT;Fw+viC~PW zxruCZ-%Y-wsOgxU+fd%2(8E0t966Rc%GRVdRqBaZNPhG5<>!vCC3h5rIZm|i@6Cu$ zf(OFU2ok-IN}|Qv5-N7ryinn{Smx#oiV<5B{xBOMH*|}~z)mZ%8s62_p0Oj7Bje-M z`dX+$zzY#9Ow&75-X7X_Cc;u!Kw^=v@%RryX?{TQtXq%AUZUsB2Nyoh<#QbNF^dZ+ zTs6S7j`Z&6(3n_-#4Y6X^V2|F?9^oeDyEW!C2HhD<_YBCtZ#*xPFdeZ{GvrLFjn?b z^q!9{A!ek-m#^9?l;fexEs(+9EXXjW*Z;}BK~`EuPpk#47t46e&#qV`GGQyMM>D^} zYi7$AjP4=JclLvOq0_#R`828NWDlBn_^U``C+@LtOc2#Xv__w~7b#Cnew8jgioH2S ziG*J&LiAQfM%cN-1qVx!;dVArdVG38U985Pgs40+B= zD`9goB5Jx)YH=Jgyp`SzG6f7p>M}CaGFSd5;7@?%EMj=w-t~~2FD399N+~;dTxGqU z3NI|Ns8UEZ6-nsYvCfh9G8*3D=7Qh)TG|*g4p>dfTOEKnbx3R+oKgq8#2e=XwnQ1W zy|%LkK;+^hu1;Cbm)Cyj<@j?`T{I%%}Sx>H;nqJcj~lWVbHtmW&cDuDYc zRAZhyS6Qshwlg0xViLAe(1}+)%J%iwws-qNvb4j z(FZ14v1{n>8+YjEJN`F&aP(q4IznGZ&ZTIO=%&N-{uXzn0v4LF&qT&slb#^f{Q)nB z>b%R3ZJ>?neeNgC50@L}1$2vVJ#2AsR3o^pi%#LY4d`C&AivvpttO<5>n8Wa_cNd4 z^e*GWjaCl)4ibEF2^P&}tOjTt#w6J~oOaFcG|1Z$jw_E#=m-wI&_OH-pkPOqkO~fZ z1{KXX3L(+})>TZ&f0FV|v&{A%|6&;S{$d!M5e!4EZ1oPAh-$8{|0h85YUdRVKkeF8 ztoK@QV*&LX>_YpR7OHTc956Ow@?0eB!;RMQ@DV}8EROw1QdG(FT3MQ#yOWqeDcd2s zhGcE(GAVk^$q*1Uc^#=!$tGxuuFd;P(AWOH+w@XgYHUN4{J3!1;WM)zWL}x6%#>q8 zi4TjqEhQY~Yb%%+y|mtE)4`O#sZZ@CYRZe5;Kcd?h!7JoVJ3gb4(wiAi>qgXAeiP! zkS~7okZ^Nc*Sie)+`slpf&#D|Y#zXn)BU3Wpi(*#>;fP^+YN$J?9JLAQ4Xq9*IX0+%k@7Pp zwz0~e*faQN>`|Wh>(vikJ2fVn-Sietk%gpQq^^f>F=f(>_Lnhut%ydvjJYJoVt@>>uq=}_BIEa#Mj>1&EZ>d z>TXn~ZUCPGgu3q*X!eY@nL(oF(1%8*y!)@sK_m~#uZAf?4S0xcwi0B4RuMq94jfIbM}vL~k`vdez;dvx z*sd?yr40B?DQD~8ZvR1NlQl`aXlGkr^XDgv7j8RYGf-*{T=S5E{f_SA&T_Wwd&d(* zR_}wouF5Zv+b^C&Yg=>aq9*DIwaqjCZ>XpK-_i`T^xyd~!ImFZrVybAcH*qwRNoP* zk9Fe_+7I(CHWT8-7p6I zKwJyKj9KZ;HScNm!t>%EF|tpC+w_(t2Egm5jcb#XEgf$NAau=~TGDrPg1Mj<@d|?O zFZfD^?r&oWgMR4K$3|bi0XyB7SX3X??Lgfz#yS$g6u%E2%%^--;#s_3JX<8v1OH5H zJHsO>wE)GJPBnocAUZ%HNEth1Q#5#fFn?H`ZIscX9g&S%p9m)80)p2V5cRJ{g#tTk z?GFcS#yFVvbBcFe&U4B3IJ$;2anb{fmWiV6mm!`58cHMx(Qv4cd=clqKfEmSQ%9Da zFsasc}<~BOKiA~t1JMMY1o#@WX_C+dbbxwTiOVIC=H|*X`OvaoA4Jk}k z@pU832CU(qFxo-xzZOxk#W8|s;zUGh-eSY>?^}7AUGhK&$4wZ78V!>8-VZ=NKc5Ek z;eZ|i0@sL5MG4=F1-6HEhqz3`(F~JsyUDzJI~>F4ZzIWdlj!1dH7)e{-Wy#+ay?>RhkjG>XI>N7UQ0H) zi#s;t7w>mqsCLkTD?{ILjX+D5R1k~8#glDPTssV|ZJ5e)J$Lo>Gs3(G>bqXvS?H{S z?oz7P#lmjGfJHcHdpwokFS+Ti1ls9oDU%ql)2I;woy5>XtDuAqq9>uZbv!+y@58@d zsg(1P?Dk)jHTo=aj^Hr`=lPt(y$x2$ewdPDI~aW{;!hU;I2i`% zF572iXvXqFr*zopH^*nK>m)2}vUy5nar!lUU2)SCDW2%}CZTK=Ng{cY4SvB~Flu2p zyhB!KVL^=m&V)S@BoftIY~H`Mt<+_tLB$rsbM`*+yFBv2Hqd{|-|YZahu@!%)8~cF zUhAVDv%TO|-bWC;7B0B`5>aUk@b^ncR2*-tgs?k=8lJlhd|yibJgfxsf2OX*H4!gC zdM_#(C?8#lE+nP6*7<5;I?PN&U&KO4O}Kz7;!iE=cq~>xg_-Q(b+;$zaJrA9Rw7>~+6$mb*3Ryd%>zMY0R_Uh%bC{w&$Y@R{;&w8Q)4Te9i)xQWqJ@T7n-Yt{{%2}_t-eo* zpm|huE8+&PT%BCOum{^%0eA(Y>)BV9A;=OV1B7IYr5PJ!e>SZGdHb4BFgZB)wpQvk zqTP!C*p$Ep2YGjq?nGqJ3r-l8#BPx1Qqj81P4v+_(I8T!h(T1FBU5Jrx=;Ca%>JUm zKQe^~jN*K9N+_IeJ9bU366g#XIUD+1MI*fD_NVKLHcasKQnP(}_UDHmuk4af9#}dh zE=oEqFD`|utjHe1!^64#DrwDqd`-knmx#gJW*fkER`_I+Mf7*Bf%ko9DQzJ9RSu3B zvhWi6wC=c^SnKro_lyK(ys|xzjK6yUjF@ukb2apqlDI2jyjrgCq8E*Lv>q)9#?GLE zi%m5i%Md-ETxg$pkr;&`T(atOMwGCj;(o3uF)r0XkMbc^3UGnEf=c*f5Oc4yDE~`D zvj};4U9nN-;hYZ_Pm~WB)`j7X#8Sa!6*I~;fEj!BEZ|De|A)l4FRMtMn10i}7!Hqa z(Q`*4IqserjTY)-D_in8r-XTeQoWjG+iCQ)Lyn`#m$LWnBh{uzPLD$KQa6p>j|?M; z!i=by0w9I&P^B-6J5I-w`O=!ve=tE6?bP8O=LQ~a(66l_)Twf2zq*aC z4sJTiyTPGQy7Un0ur7&`iEfXPGxhu>9~D0tGt__sl>m9D^L%U==+_R#7+E3&?kT6HrHoHc*Zfl7vn-;PFS@zsIWUvg}=KzC$?rPq+vlIs?oUCnWE z7#0Y&C1i`2WRJEH!q2sqlMudYSC|u}ul)v;kKB#e{Qv@Y75ek3_xA67#Xso71!7DP zEI}0-?uESWH>e64y#FjT63UX$-IW$8_v=o1{lAi!m2pU8z7~4=RvD4AEV+4avCaCy zf=&?Q8$|SS9f+;Dd@|gfeXY$#9qwU5{vi2f{@xR^WArrVaD^`wPr{cXAW!Ifw-@NU zhW0T#RB%{+B6j7K>rN+UAcW05Rr9``_P;5CpkRaY&R7h)#p?X#W| zwQbg2H5&U8+wQ=#;+{6;SlQEaTPWKF=MYkbe(6nb9yI-CrI&<~_vx3LjM!z5>G_5; zw7`#s)-c#S!4O5d67!8e7{5L3H8vCXHH08A?#pl9@3v4e(gDeq?HnpPGtTnF%k8Yh z9a*^Pch{3AB2rDS)SjRv+LUjTfP-Ox)HjwULctCY&rxk#jZNKtW^!kV$1H)05zhJR=CYtF%O}`)swbdk9)3Je|`=vz)8v# zv$}oAUDkbR#qr~>Qg+K}!oh`Ir_V5M7jJ8}o4n_rUqySVppr$Fa`6RSA5w3T&Oeh_ zb_o8uH3MsAA~Q*!PvazWFn%z!ZP!C3 zf?m9)$CJ$p--+i;70<2Ax*TURv4{*keirP)V**bk{`nMlLHHnZVq6XC?lIsOW8s-h z-+S<*ZPfJaG}*D~>DyXFs_h~b?P15BSLE=94FVSpMoKUY;eCAy8xMfZaV=xDGc(oI zw+$LAvyOD~N5h`x*8(A49w(2ewRQas+YK+GQ_#)70UL>Yub*h1-`+sEb0C{aT#ydL zFiKAdXb2^MaR?;5Bi)-sHH^x-CG+Bt8MG!UT-77tjNo9#3dykRN={aUZ9(3Ax~W4C znawsA!Zxyvh(n6dq~Ma7w@}wgN$8x-bB`qA(by+Mq_H9~H)%%bjgB?G`GdJS_;Xal3Tp1Rl%vDyG$h~p^{XR$i7Ge_=N zTVPGPH)F;74=}#A9>L9(%e<}S-C@3DK}-T@nFUa`5+v9vOYS6_`#Nu+Exz~s8tFEh zOf6q~%nw;OCpVZ$L>$RptX1}f8Qp3|x9 zI_)*p{K(U6#fFRfkvh129injUGeF~)21%T zOAO7^6W*>IDa~8;2L~d{0{2}q>uTUb=j#*Sr`ZoXB;|O7_Cp)Pl{XF~5ISY-o@Q0B zB_C8&vw}#Ro~eSqpf1}F$K(>_nhX2)Z04-o(|#c1G>c7^jU4L}Gvboi?~^N-2eTyF zFcX9rJ6-hiCO(Y%LzQdr^`W%k~lQD2++-qgg zamX0zQ`aN+a>$1B1=a*e$P#zOJrGq*eRs&Y*E%oW#CVIQ2C^5VMeWp4)sT zHjJi%;AnUs<$D-0c&mTou;aeAs;JCap(v4vZ>HLDxMCK^w&}~Q3Z>Hu5(;ahDb6Ft zsiS~?)mh#G*LxxrOy0P>$vA0`3A#A~za7&NEvv0KPDHKMa0|(Re+g1Csa))EO##W* zOt|%Wz-~=~&@?mOZ`c2iudfV?y6g6qP(URF5ozh}ZjsKRyQCZGW~56(x`zhoMmnUs zJEUvqo?(WU`^0n3dGva}%yrF||6Y6T6~7gGZCj`0bbzpYvLNRSm@0GfhB zqG_)+6C3!Mewq*wOk=KCjW_C(*Jjx#aNH|3va$E_^|V9nF7G8UstL^kp0|(A)_`Fc z(_zF6lE9)HjT>Ike*WqH0e0K3XY$mX4N>5J3&#_$y}@TWX#>i#ZQ#Dn_4Prcb#|;v z#vvVbW%Dmj7Qh%~$)Fg{1P~-IL=xZUIu<_*xpTNV&5M1+!xL?Jfz=69eyl{e4pDm* zyq^&AdPxbtG7Numy{GKMek$hyuJ*kwvuom#1QL`p`oJmr(CNRqS#r z6E3wUd>?^ol)Nz+@d@{z*{X$WYmSxKpFoe5TGMg5oe>DGGf#-A?dg^5788!pdgHls zA(%>-lK&^JhzUWr&p*DB@o!fTp#7vEOIwI!A1qE>2%upn2|`e5|K>@8Id??C6UF)V zVO=a1a|;{ZLRej@nH=G%_wF7k-_Xw@wCWDs*8)F#q1=});)}1p5by;z$ya0P&pS>a zw)yiwNJPzRDc&Q%sSlUi`8Rh-?x!jj3MJY{g4a*i6q;gaQh{fw=U9Y1A{pn6%C~;; zBMP@CXMTr7DW0YKz7c)Q83DR>Y%iT(_Jd;(QP8N*T-o0}-Gsd{r3m(0%F;)cWY5ns z#m;ihK}U1y`1shgKidT4_61BJ6sL{)*$y$Tblk@LBsN1xpn10!)WRw3G%-H12l7!> zpeey3|9EQy_Z%3o{wt0P9f0&MX2adwtBpHq ze?y_-3K<9~C2=l)8cPeb$a_d&q~TVhoj9G^(uSxRK6xW72_YOB-xi?v4IcLa2jA85 z>=>#R2fS9f?nw1G!-T;}tokxq_`o&Hb@-eAuHDFvj0AZ7Z^YRv*U62^29!j*NiOP|z1M0N=hZS_n4R zn@(tQN7!%-$Gz>)^E_yW!g|T^j%jA+FGP+Cb+tUBCnYrzJOTk7 z+aPM!K_%0kEowwE(Rju7GZP}zDmOMbNC1|um?mRkzs5^Ju-;~o;ee$n43r6neDTXC zxL8n2NDaFVR}b@hFOs=_P6!^U84cZldT5eMU3A?wrG!_%>by@ROs*!|V;8Yd!Dfjd zi5_X+8ntMAf4N8#)#NLusqwrcsB9)(0Q8_km3kqC;_qMd0xCswah8``?CW%AK<}MW zXM7A)OERaxCv_$M9#y2ma!0q22ZV#ylVthh#ZZ1JpYizgsteU-Rz3JNvw!*rn7W`M ziUmJt6UUVl{y;Si`Iw_*dG9AvJ9xvAa(Q5GXS0YK={M=Zg#}{Vsm^#u6`cKkljAY} zqf?Ps{zE_O;(jLrZ+i-MhrbZMM^kOcf?o9ohE$YRDD;%a>1lQWpVv>h4BOtO=T`R* zgUBy};xi;LW*%Z^76cpu?gI-w$lAptfEU_Tr@NaVjAt1lmrRr-_P^ATmq(ZgH&%K8 zCW_n9L6pLKRF|)EoyMXu`g6N)f(vd&4o-13^4hc;4&EAhsoI9Bt@i(NA@9hirL%Zh z$f+UoH zyC!STxEvOB$`r@$Oti?aqy%Ewbqh(6P_tX+4dSRN+ep^ynE$M>E*p4?=DGt+E9dc|G*%= z_aKJ981|hoIUO{jtoGc3{v(cXX28A}(H`Y%Ja5)V6X9oHZmtqPbB{)kGQ|KoUphNv zME2zVW)@K-&$MA=j!bpmunoB|thG=SDn58fveU6ma^SuaS#p>nk+unbM08@ri{%d= z?V<$YrB=TSUI8etbS$sHk;hiHL~!pKopV4O4BWm=i+ZyaLRcxSKF4-Uqdk%$HUA92 zlru5i<N~>YiA7t)JA)zABZ-uKTNtiKyr|PqrCmOLrx*NY2{LHSYZAoO}V5fulsf zzS~}Ok?tmuqGNjSn%fNhm)T14XUJ!Sw=j)o)plJO!R2SA!npp7Se-|nk6f=rtVqSg z?m>l~c?w(CP2-L1DDD6eH;bPOj5rZTWJ^lb;!bNloKgREmDK1ooluTVp5Clyds(k( zEpzg^j|u;GnXr%%x&ZidJ9`DzRHW4hoX(Wcg@klaqd!`dgwz;!t>9VW9H5B&rgwZ# z?WqAu)lsfz&_njI>ZQ8#i&q)y8Ci10D?-qxQa8(V_Xk1ou2F{pdju(J zx$eTW18-D-+U=;Nw3UO5@ZU)zo zmHN_7+lSfdFlSQ!Iy~^Dv!w;X?V4{+qGQNW`qLE;5j~Mvu)>%g??D69PgOz6?8!67 zq9eA+X+EMR-&??W6gqGhO&9oCT&Re5WFD(uY1jWQV$A*paY#=~2WBTx;8ZO1DV4 zUo=P%GT*$q;Xlo~yj8pR9|v6oBV^_z*Iw-~PF=n__AD_VYk0?ZZ|eCw;nG>2U2fUC z>8_{Z;AzNc#y#nrx9n&+;Uh-;gOJ5$ck(x?(YOaHyyVJcfwbo7LYHlUZnL2!_jiaC zj%s*7>dL}kWQ$DT3iJN!k#y&@W$o^DXB*uyao@sI`({K7H3FeYQaQjdNeD%JcbofT zCx|2KY@In7hRMi#NI4V^m&;;0@^?JFsGn~b>G)@$oEpkI~Lc zr|9iZmdr=3A$7$fvWX#I9*EyYIGmIaU7nVE3H&{b$pQibyp2^$adh0J zAFfi8vyf=PZMEql#A+vq;%ckxR8kAyIhMfiZa~Q7SjV=X6T*8)u#tICqa5t5)%UZd zZ3@8&Fy5bz$;80Bd@nG?@CrS-x{X!Oh+L+RFA&QS(NN+?vIJ!1Z{;iyqN z!rQ>2&3=aS)bOZ@*_)ijtf|e zzx$F(c!Knh(8K)p;_BsGQe(wQ#TMFD63W!GC(%+0_*nY#1B6)g+}Tm4Q`snc!BFhwY=n4e+)vobOXrtWMhat7|Es>{99nv~U`xdu~MeO@HbRv~C zM5}>3QB6p~J8G?;wQ-Uee{StV@7FKE!wqaJGXqo#|xLAfGl=fZ?8;k)LbCay~! zTZlP_^@8VNTrfo*d@JF|GtI%ByUh z{^IkOk9R&_T%hKkXB#j(DbfZ3FFPSjhS5WGFMXz&G;c|BG`oEzB8EgNf|~|aN>Qca zhsF6nOiZJmJ%*NlKo|ED{^%*fY60SVb<=XV3td9XB^C7SxQov{hSkoEaaYg3eUsvT zT`rQ%Q?S;J>>ELML%`kO-7ofV%F~v0Pu-TqXI6<2|K&F(^4+z6&`9T{Ks)NiDPNKS zFl}hsIA!I)3~aoGgo5198V;Zg25QU{y`2`4~$A z_M{M-;_;rUV&B@|)`o7$tCw*-CMt5kwcLKQ7WW6tg1q_g3=vzbq3?+5ns0Sy-W*{r z*HrpJ#^Ckft&?B3ZB{B0_!hvWH!(_fC^GtNm5vi>b!$p~R~DMHGFn;_+uVW!vnJ2{ z8^}77O)qKc?3SxSc}iv>fE4#pCMM6k2K*}YN&`p+L<BuVdE1dMa|Va^k6Bw$l34eE*?u z$2r6S-#2J&AY=ZUk5#mJmM-Mvx_@5<%v0zs@4h-hP^2Tru=cTJcBRB~-gb?3Hmxsm zxxs6Y&gHbG!Ou4ibtn{t+g@A1KtbILqO&7+;2sC}&*E?{1s~7tfUb@zsMrf-Gk@q; zU-~ztUT|cJeWA=JV@}I6GS;T_9g(x4`a$H^ZwDya3S{IqnHWEZ@yG3-W6Q$y7(|L$ zD`KRUG%H3|t)YUy^qrtF>Rg$N`aa7PZ&?gmvQIaGf!w@&<5KnF8J`rIa$7U+-Y3qn z(6i6g@<6!y4Soyz>;acF|YCVMrU%bt0PDYbfj}`?p8MJB0V}T!g!_u zTQGDRwyz%ru)YKax-Nx^psk4l#$ij<7Az-|Xe?ScAxEv(>Gqq>3du9R@$h$TUmW07 z$#3>Uob@W+Gkjnb!1_S0La0-}t!H?P*O+TUzQxiIR5h2}=CcN2QiVgx4WX_5n8)wo z+%V!K20*AizLmsc91gHi=f&|i>Z}gGOP&WS8e-l$@BX}F`XB>}ikwHxIeBvth>lrz zFg4Dq&w9XB%TjvS8^1F78A~xT>sGc`@)LJC?2(iH?>@hGep4wKp=r$Y!&Z=vsGMt0 z`j|DsONpY01M1Gm$4R(){xgI~M~*WH@{{{S-6q@(yKXzJWli4;Fl_(uyQ1~>?OKvU zU$VovM0N4=gx(dJ{d~Wqs7h>bwY~^hq*qT>II8{G?lFAkmx9N@xT=I_!;D}DfAF!~ z_5INxO1=on%YJV1k1T1s7;UipK;3(RT|3(%JKgK+WA6p{kpn$&r^v1aU`GKVfeaGK zfEFHj+Ms>|Gc_YwwC#`2fyCxFE-R^-Cp_*aCSuFF@I1oIMZuD%OP3oVY02{2Mc|t> zTNaG#YB1>jV(&+^n_$er6qt0XU@@{#hhmeT6v2J=mL!j!7^d6arYbDsKyCe`8lHXo zW8X=+I4oMdMPPIH{e)-)4!yRD_?h;ZSPh-f8G?iS{R5-$%ze(a{A8n>C~fJAj^46D zn&=acpJbvdk-rVEi?CEct@ap2umURxCeA;I^&X38aOx{ak0LBT*mr+3LGv%9Lt<*P-t<< zgX=sxaA>Sb-Z8CQ1)M3J`1fg+lQ>0pcB+z!NSz^UoQ4$zwOj~v*lUxGtxndgC@8M* zXtb0L(s|Pp`@#xi;Ooa>a^V&)wcstY{N1M~wr+-34ihnHna;BJdVQJ%JgzhPZtki$ z8kBj?Z6d&D%AXHq)j`fQ=guA-d!*;sx)IeBU0Nt~?AGpD^ zA0~*9_xIK+lJL;&ntuVEOY8yfr~;fTn|5@M7pt#ZCSHZ$UEUYAAd)UYR{6bAAlwTb z9Pb{!1g;YugRPbIYq7F5u`DS-MT0c4O@zdoRCJk@c$#RcWouii5UuvpZELfM;M-r-B9CQt#Uy@C)(C_VMa)vx-Vu^{L~+jIpTfV(Nr(0fJ} zq7ZIFpC@~5b0?0P^fZBJ>1an6|Ni3=O67>tS6=NN!YBX*j zK)BFef0*DyJv(h|xUjFzoVGHds@JjWZMEUnU$#8ZADuX)V!1JauX{C$O{Wf@6jcfm zS#e?syhVTrT)l({%(w(}vTzF2?F`kV`C=ydZ|#A%G*(ucS&}r}CJlDZB6^?tTOtkS z*YtHe(o36oCNv4*71si|0t-;Ww@W|dGOr#DE3X=SXV1rpOJn>j4lN3Nzaw>cU;X4M zUvF?4%qh!C3^)fshVSsGf~-@tO}4e z(i{6bhWGxsz7YCUN1C)q%tK0@`Af#*af$DvDTJGuP#$tv2Z*u<8`b4CqTlr(lGwG> z$z@$iNrGrLlrZ_M4v})}Dn!b+jJN@I!oI&vFar@Qoz5d ze>B@br=j2tzn)D(FI%sp8x>JK(s$7H8#(#@z0fB(M-|@ix?IbN0S0YzDP%2QY1HsO zez4(Q)v}UHQ1Gf)mD)4$SNcWS!3b+Ppm|8B(vCCF)FzeDlcwU|%I9+_df`2g5bUz5ZxpGhQp;$KkaCQuS5>m@wpxI#q39yhjAx z8<7hop}nO_x1WTqM_nopl<(jx!E*cKlGg%O)xu2DIH9f*K>HBs4j?oj5;f)0$)mp% zaD;j30aG@#Uq#x=dZd*5HC6fY3Eni#`KGk$j(kczEIgIy37ShztY}D-e(bgkeTLjj zFP|iz^Z(52Xs5Jo|H$OQMIcG0*>yMQiIo@N5|hEyLbiHIIqDkNdP>O zE0fR5M=iszRyLtLs&$nfspLC^aV>zZ?zTmcP zcEPk)Wmh;XdA`S-zqizKEa^?@3)dg_Q%s5)M1M|hg+qph(~YMEifuIlpb?*r@Wa%2 zf}};M3?ug5O7a{7pyR?rC)B!07}msfFA^&I*f4R_pG&F5Cg2= zmCli}=bv-Adsi7D{)@POQR;6+UL`d(-n0rmT}dPUIsS1)3YCaMjzD&w{09ZuP?OvV zPJ*EN((F7xtv7lDWBMBL>K?IItZ5B&*v$nC+s-S_op~YM?*6TbCsUqZy~t&8;R^T@ zhsLPi*|r}r&956kqQWrlFSrch6)lUw<0SuK{#aEAUy(Y=f;d=sxyz3*1(0;_A`EFo z&W+e_8doKy$)1CzaLxanolg{}kRZyAQz!IxY+2@75@8PzOW{{11YK_uAXEE!X?OHU zgbK|Y#S1IiD9ERN;G6lb(`)uY`vLqsGHNaQh(gA;C z(fL2e{6Cze{=jM#u*1T;%SL{AuONioO?_RZIOt26Z%TJR)zDfytG!;**OR>U5VK09 z3sT-;f0HTVjIe4%R;Rzj!RUd_L2T=rp{KX6ggf3o2IFrrKEgRLf49l^-AjeE!>!Av zmhEv-Z`|tV`!ue+k_Ay$#$oaqJ$2A-vDvAMrpOrrT55M!rH}an*GvJQF;l}wuBkGu zh*Xn6W*MX@kXRta|B}uBBsv=(75Rp%NlpA=U7GR4q=0t#S}U4@u}5)vP=(l|-03y# zD`QRb_rowo-_6HZdfd>okn%L-QJ`-ZA?BZ?*bQ(v2ceXZsmF|=YyR$oRW^KV~tuoD}2b@4n2OV5Tv%pfE?P3V0>0(hPME>h#PU1 z>XI!5`c1Rb)^Cz=px=2LR&9>JBctv8(+c;a(?^DK%bHrlCL`^ns5O;{=@mUOFIQ1o zkxdI(>yhvMTdHtucCBX!|1PA3QJn@3+l@uUD=4RhEQ>9-FLR={ImFL&WXMWYn!4;C z7Bw%!iRK7?HCICp;NU!XYCawMZBDtk*y_a3uGUau6@Zc~F{LhPlB<54r>L&gafT|m zi%*`47}{f6L)#yzjT9*K^gxdJylK2wV0q=~-2s;0;AZ&QQIen(A8LfmiQXE>m0NQD zFn#Ot>1n`c$o~@0f6=NS_7&e)HALib{|$K>%#(e0no@i72c=`{Y7Y;V2Aa7P#!IRt zJ?_w964zw=(bEx!Yn%ia{sWp@5-@;?Yl;juljfXwgUKbaJM8AR^y@v3@KxElpk{uI z)|adj$j@h^%01qVaDS_|>R-fzw|88Pwz-5UPnO{(@_LfI4o|3;M1zf{N&hx4BA@Lg z;vYi!3{@V%-wNl`>a@PgZ3g)49x9$hLmBHqgd-q!G9xku)~s><_TsrVTEUASsq@$1 zkHB|^B_j136+dq^ym%pKtqOdLb3$UmKLFG53L$izVO?4$MP%(I9q;is7)(ChXnj%v zy&o8G(_L$?|CRRXPE(M>Cs@p82J(ylI0mg_)@qgCIg0Tp?Rhe+)V%-oUl=$l_R-4t zl3j)RDfvQCV|(k{4JL0YUHD{sm|c*<6)#01SYXap#dOEI=u$ttYUU0qFZ?m$cdU%5 zJXO@IHA;#rIiVu=ywJ@l;#xI|jg;rDEm2J)To$8`Zw~9m6~^Ln)Bu;#Qt-Se#W2j6 zg_+BAa`gjFT}jhC9gh1G-U?pG9KJdyPcFkgt$3`Kq>=oqe(`uvFD`WFAI5?J!fhb5<}xYf0w|)=prk0>BvdH78>)CSHH1|ZjJIdarFMi^4&04 zJu-(cfu@$LKflWz0JFk~8iyEc%&kHJY`vV%Puqqygli4R_tI3M@$6y-ODYaGTquJ-qy@7K9-0`cRp?ZR%;cMMqenV_tMr}MufFzFUKj5Ix%Cii?rRRwY&U~q-Bdy3nRB`qd$|k# z8JWvz*Vm8!(1BHVp6ZzpH5a5Zy)*NZTHUkDDjo8*S51Wcl z9ILi0Q$u!-jB{<|Tt9R3uBYO$_SNt+_ZkAEKX4N3GFFwEm85r(z}e+#ok%?`IV%s9 z+a%UP@zbw)kfnuxNQJ&#!oXvO9-nv26^BnF7WFXsj~FFnA2S6fBzTwd`P-JhvobfQ zuv`8QnGmU#m*FBTi<(Hh9fcP4qd)8gOFIU3v#$jp&HXea)Wezt&W95XG`s*=(sQLFHJQND#L?TQa33D^JGJjM$bZNK1sT z7c$!w^%Ed0F2WR!@P~};`ywZ_ySfy?%Yq$pcn~Vo;l&R%YIRN$8*a@XVz3v#y{Zc}j zh~0BKqM}6lsp3`k`}oh=lyuf7KJGhhcqk^CidXuubkua5i<@E*=m8G{KC`{nv8B?)db>;Id1gs zS(~2(y@V!8wWdPa+lxgq6sg9}!F?}e@_eOC$bxPtn7iS8+~2V6^Hm=$HObERsG!zg zx0Q)U&-JP>(a+Vpz$}stQlZ&sFe{-Se0|?zi=Yg*jhKd&)+7H;*E4^EPuT$y*DBsS z22XvZfPn{Eed1UcpY~8&@<3kNYiG5K;*vChe&6l(;UR%Kiya3K1;d+bQlHHCrw;wZ z^}%hv~XiYj^Q|9*|tVuAP#RnajX>4l(8LNc{+>lD^qRlgOMXvj#y8fR`PB9 zv^52b^NU`sK6L}&?PtZ!!c@bqrsRW~H7Ha@C>KvD5g%BeewQ=FqffK@73_}-*Ih0K zCG7t4QP!3>`<_z(5mk4ihULm^K(nC&GMw*1l+QPVNlYYjPusO;H;>Ux=dfUh$aF-4 zS%u%7hqz*3u62`t@5K=~;!iz&l2Ie-H~V~3r}Ip{82V{&QSxn;p}}UX3wB4%o?!50 zz~`!wcE>>jM{!MTt!VeYm=|v4(}{?C)3eW#`*>0RLgX{#rLd3l@qSPKYK|C)uO9$3 zN3y5FurK=#uC*@-0+|G#Pm4R_o@1Ij9+mpWRUmrcR3I9yu>Q-4A^b}avWZb$s1C-% z;TH^Hwv~e{)$2%VvJa}p%p&L(n==MpV%bCXE*dK~f_!_YEHkyjw*-xDmwUFnrvLiF zf5ou>@$FH`>{98D4zB}JY-hL>WV@9m4tC|fic3ZYg(!O~z04^}3idf_LEyu|i%}~O z&x*2s^+TNOfUbQb3Ner4z@&IP{x_hxw(&tiCg%BH@ZK|jYO>CRx~VEWyxG5kIajaQZ9lRjR_CKQupSsiP2zOtMIw@N=NEbIoL;ed7 zjC4?47!Phq1w1=!?cFoxV}m_)GxO_bY3<;>TYIWPKMy}*VTb;F-UR+hz}z%o zrrvsE-X%66gJZyYUVE$8Fws2P?a1hI@C9{e7`E}TY-8x84{tOUgLw zXoY8JQod)YAfpjb5!@>!hj(Rkuqi3W^vMXltY2ISD|nYHZ2S9x+kFfZllI=|?@Gyn zN{h1^se3tkbpS^aPXgg{NEw%X<4K@~?9b8`w_w}eC~4bKWvZvSsI&FyJ+Uq;qiLJI zcK^jSMSgZ*3*b;`S&B6n77qcXpB&Z#cy9 zgSlij;tJIMHVuowEPU=6_;s!fJJrOr>yzk!dV%=*QV$y~r4V1go;4@`XaRL57xj&W zH|x1~No5b5&e7mBbhW9meAbQ?>3=l&fAsJ@CPHDE9idBJJ2dPkiSm-tV0GMW#zLIj zhpS1F+=M+{3_F~N4!cOA{>z=8F9;dreVRK~OX-E@NQtIBWJslfvxEfAzGV!k1~$3% z&hFUfKniRqu7 ze3Dyox*-`QwNQ;v|F%ihuI!2wNv*o;- zwIN=LFPzpB?9Y)^S@7_s5OoEE_O4G_NgEzU)3r#D|6)7$36K-$car^)QX6Eqyrf%_Hfp+}79ZqT2xRWVCq1rw z8WJ(9o#jpc1JPU*ipOIgAFDH(D~AxHEV%l8Zw895D(R^0))t0hDQhIbNx z6HlWp@HEL=sp8~hZ(`Wc$aYg^3@?JjtRppF#_A7tKx!Q%yttA@!Zq!h5e`&wD<%3v zBhZZ>DofxpUpmz)g=86DJMj=$1bN# zh9xAFmT_Z*^Otfq<*x3Ry+7XSjjv_ucsu+mx)wtQXx&gjKP-=NgC6E#{YeNLz}GZZ z(go2urnw4#%uzSr|I7A_ZpbF;01(*hFbUlozuiJvrQjm!pcK0YC329l!`5P9P|7uZ zf6N3Q=7DQRXX94d)}p`3R(3F?s1{NJZC&Uv53iz$*j63J=|sCy?L z=iw%I%TP{d)#iuly9qQK2t)fLTzQ6U&WGs#T@mv+`GZM94g@_&TK<W{)MLTTks8a3z{H&>OpSQgX9G!q}{dp8r?8Ad8K`&8u0?o=a z%=_D3Q;*0FxF*F``RB)^b5T!w{OC=qkB&7AZ`yUsPkt|4Tp7Nn^K|yAhJ*&+sSVJw zp%;vvVv2;MYCGXX#!Ti&li!a6`|W5Rn|9up{q4ND$&`FPiG)|Qk(TWQiBze{Wdz%* zvXdQJSISmwr`mQg-M)N9Rav&3QT7gply+`uQ7ZIqBG*)t>Y#ouZWTH7Y6rrw+4N$R z%6#kBK}u+8goW=@gLntO^|zZMn>5$`tgSv(<_5k-(Bto1T!N6lo&YJLyaJ8TzQDtC zIWz1b%6O?6NwWDwRO=I+yHF1tY@vkTN$*{%H12JT>b`e6m9Y@aa4g)$szMopLxK-~ z`X)w>i1vrPOfhjFilwC8DG7^l!|oy4%xkCZZri$v7=0x``8V^Sk4z1d0a9(SywO5R z!cx(Rc~audd^&Bj$M^AA#?dk`DgbXjH#8(L4tQ;`9&u%zL}1(cehOVWwZwyoUs%l+ z%R4^kFoR`EkI2E5jRlRdAL2pkm(s;dDtKZciS)Osh4~xAcygG_v~ar|kS#%6YIBhK za{(s~0*c{kg5`=8#t+#pJGF{ya=;H^)Z%EQ>q{iD@QlEaRK+ ztVkvwQop6%fEMzX)+I4EK}Qll@l?FeJz17aDU|2nq!Ue@P$4S)*x9TxE1*CPlrpajyyU!D-VYW`hUm9OQ+Qr+2_KzLLf{Mbt@Q@#RL9%tU!Dn3GV>Of-J6xmj4<8^ z3eG$Ed@)b&OOIWV7X}lo`gT12uCdVO8TgA&o`9l)uW6tU5Hp6_W}s+Lu75Utttrwl zX96#S=xBW}+b9|QEnzoBbt3AhVNi0uEQejTcYcr7bphod`P}&6@e5H6?+h`)bkBsF z4+VGMRb*OSs}3&rABy>U#v)_&uB=VxBar7ZEb<849%FmZ+6ME;{&qguEpJfeYnss> zpQci0951bUQ2dk@ju`Gn40I9w)21&J!_C6s zK6v#7`(M1y6*HnYeA|7#BI8UdPUa(OYJoNypNXo3PHJq4fyIq_0oIby?+nJFILx;; z$3%rQMzpO;x7PtP0DCx82T#;>V!RtoED0$LG?YCV#foy#dPm^ zOe}-p_PyNeH1q`3@UpSP@ePe4O0DjI95qsW7rChERCEFdS2v{UqpZnr_u)`*0bv#W zfR0#Qs1|pr0(;e3&#NTk0ZcH%-87L(!X}rV9ktqpb?d@WX!6Matvt|jb!7kdEP!YK zAfB%u0TfF2G98A%2LkdG05hs1Ro;kFF;_jvhsua5f0-i%_kY z;Rh%Pc48UwwB8@}8KJ0;-Q?jSep}mc@QsudLG!!Kfs-Ltv0`l5J>K1?SGku{OJNZ! zeu+(x2HUb5&Z+Y)*3B{&vNlhSE^xOec^8)#Zk|5wAkndop><1jH(nIF;!CRK-YKpmW*%r|+5pE4sVrsZ-;KCCEz{}eTfx4fRZ<79|OLC~3 z25UfQp4e12whUQK+2^d{*Kvb3H#{yZcehQ`+%V|}8qYJH)`uq&x58KmO_A$HX?ZMu?;_%_3lw2l* zr|I0jwPsV}s*l&;T7K~3*%Xj`3VIRZf=-!;TL{)N6f>=m-dYrSdcRy|i%MumvqM&( z|G-Z)`CXTbRlr;8HAy=}R{$u*VG(0A;p%?KlXu}Hw!K`E| zrNb-L;lp?QHuP9Cnx<)cn5aPWEvdl;i`uV8y5nAPp6Dv2Oc-T`uNo-~Cr3P>-WNUB zb&$k3s)@a$FTZ|&j-b*eOC2xVvsl7e!q73S^u4C#kcxWiVV&?^$ZCr{DJ_cepDFfd zh;1PsTfc)0-F*}fk#65=EX}*W{tjz*d*k* z_wXtn>`A!)Ee$hKi;8-1Yv?oBE{>cmmn?5?b5ee#@4Kh*`1>Svel>Eo zN4~y}rAM`l9t08^e7Xd@eL>b^_3fu6b4{s%T8RY>0kz&#)gmPEhNqfbrD}mI1ScfN zJDL!Hw$K-&)$sz4o=(a6fYCnZT{=kp0+l}50hu)fXZ4s@-W-~ z7!eKlV0YS?sjFFw}6 zU>6(VzGrO!1d`ISf5LOC1KdaXLs(efAX~%ZS+bJvAvpWgz83BT8+$KSmJ}XSN3T)j zI4%wvtr#|b_QgehKhwRj*}?k$AFzZnC`(K>$na@Oj#OIYRyp%O*5xi-@c)_@Kyl*i zRv&V@b5S3s5cQoq@nvhq*(+3s3p_@>WfP`c;y+a<2&>p^+0WHmBi%Vg;CgqM<}DkN zqWx@=p((7sj{z%z0;M9|Y4-u!lUa+{_B_AVfjplwRV+92ootzFQU>^KNKbnGp{Kd) zH&rA$t`6)+&el4`SKF%)Wb4IR46WaaZ3j6*cP>GLnSMtswPmNpt?#LuC?yaHWoNipQjv?qd0#vs6(qLp z@U8ndW(GkyJsHWL8sa_XilB*ep8+>p=$mkAW=L)3HMle|l3i>|orz;!Tv&x+lsoIV zS;H{CLQ@<qMcapjG1E4n)p7UB`ngq=V&t>$!C~03VXK=Us``8FO(a%~0P~s6U%>It00vmcYm9O%LV$bKEabV5J*{McfX)$+`xWq3zSa`?54Nx(Aa4S06gnFz z^j7fG*QJ65DFxk$>0m&^pbd*p{0(-5IT)6K`>-c{18w~nhm-B8AaHQq(f=T$B*i^#pV}fPXpNY0B zMnruX$d2udwS|PF1)6<=voS;arw8nt{uL#4!6UK6^C{1<>}dKYE8#jS{COY#9|6g^ z*k#&P$xyg2tEJ*1`M#~6#vsMQ!uV2T{4SFx!ZK*6n&U9@Q2@A6 zulyY053W!ALUmy}C>nkcc^h7hrN=MVZILLC;xydDQW7whHSxlDV2o3Z#aSN9NtvWx z_tU6jfet4iZ2o;#-Uu5QkAxF9@HH6Exkh!f%rhce&sejG{G&-gU^{-NqlvGODCA(* z*CASA8Lnk@{zhI}b9^lhy7gxUaNiEOIq7QH$`Nk21E|w39U05`sn%;Vc`hnbcU}1s z^=5{$XQ{7dMDgmkj7%~3mv<_eo6e;kUw{~8MUI9>455h~nV+DA;VIe_Xcl(O=Mx0z zp?_u#sPqR3A3s{2bt37kH@}2`HazNtH)D(mdk3wyc-a!(%a*O*^p_v%EYGDP4eX8! z?5eZ9`?HfG8|BTu-_$x!XjuAZXUT8d`hW~TZ;Of|Pi^b?9}*!qf|=O1B>-rKSeI5_u3Nf*!hStaY!%^%T-J2?nGdxVknmRc|;AgG^AfYU+@8 z;+xT!iN~9e{ew>LVL00luY@T)Sqhnq@Z=2JdH6S$$jJ&XjUcjZ4Lp7n@3yts{B^@G zVAV?=w>p;IPza9vz7hhkr!>nIc4;W^mtKwHPuV=uG0qg|VCFL&tF&-KS@;z?!jX|l znO<;4JJ|<6YR_=fT49;D`Z&HTfyDctFJGv;e9ln=R`tA(23$I0b1eA$&M?GRz>9!i zyfv`uZs2Er-PH9|Brecj;FbL|B9KS*U;6-Cb10*nm%a0t3#}1vyV5sO>HpoIuM2K| zSM-o=>b2rA)XVL+Z$RBv;$%$vI!)CLmH$5>z)kH9Io&A0+q8q}u)WaC zQ6)>V;%F~?Ay=q0PMv=G{>>stf6O2EPy6PMwU0h!c+^qh|MrM4f)ao$-)B{9U{19! zjw+F_eJo3KS^TkqPnh;8-Z~>PyWlwBQV@>!hXr-UOB!QajH+V1hK719e&F3tM_`M7 zwUZ&}QRx$L9o`;^Sv@|1*VxT;8JKS7-NUm#BU*(e#clMbpYg)@hXEEVH3cr_t52clc~EMw^x<+UC!NJXGSCpl1f=VVQG+n$f?pj?n6ByjI@ZygK)GF$czv zge6kBhEExOxuR3C{>nJi0GGb&x8m>I8y7f?;(q;SIQZ0!zmGO``qYSQD5r=PFG{`5 zZmF?Z>MT1&WdIXPQ7nsgl>Bj@cvrMh;HvXsXVL>EuA_Q6Qq67f%k`b1Yqs{$^dhxU zqe=#{`)!wnL)f#ZdC(?9En+su^FdFF_kAm7tLQIEP!Rt;mQbUZz{xk%QQhp%U>=e^ z(~^><>XAh>8y)*x+~#Dr`QK_y#kMRJVD0RjVb8*`M~Om}_mAU_ZZAQVsmFN!ajw}v z+`|2oJGA&DqxCT!@o^#`IM7>DFxTLDxA^hB^G5h88e++xk_N{2hYO{*j975ZVcKdd^VJ%$M1f(SJt%dU9G+gpN6`M2gNghcm8K8OzDiwAi4V5VPBZyGPZ>j=bQJsk5+4OACih-YaX5^htS{ds}AhH3NT$K#KwQ zm+yp_E!hzM*mg6Cf7S<>-|8SzZ>rJ%W9uu!+H99@DNZSr;>Dd(+^r=PDWy;-rMQIR z?ph>J+>1NGDef)-io3hJOYuOGlfL`g-#*vb=gQCg$o1s8=bkld)~w-EVkDF>b^bUm zPa0!dC%4P0BAT*C;B!s@A*kSeBbVZ(_&qcfi?0$)Xdfz{E~p%V^W&Iy(r|6uKB3*NFFjZ28hd=dlo&=_@0B|)n;q-c97;@> zDdd^cAA7+S5%p=Yc z;UXOUCyo%Hi@?xqws4;g>MlkZ0IO;DojyIvUo^!cUleM1|V`5t{E~89#cisDZog}cGR6%Rtr12a~{kkn4 zx)qhDk}6$cJtvH5{rlO=7RxtF+vx#!lb6Af>A?lxVPk=h;HLG<(jJumy1$&oP}|-? z`60m3+vJo9g46fagiRegj=7>?dN8dD>z}ejV=UCM>^~*9%6ET!SiGzCb*9b{r6uDw zC88ZD66r3xnWt^B1o8feuY+rJn>0L)Qu=!E$YU^R-@zro0%O%oN+fYFxI0?xy+0-q zy$8C>Hb{ju|G&p3nfmXWB9nR_+`pmuf<`4N{j_zRrJ)AH!bJ850=>Q^-+#e_n1I`| zkZ4{i@SEPEdjBnY@f-d7>!970X2K_5t67p4={CqZ;5SqC4TD9D>d9ZEKnOo}H!D5m@PKUX; zm(P#kn!(qv+Bck5&v5v+1 zpfs{E^=I9OdBRN=<4AAR^G()w7z0Kby){6dzGQ;em^a~~?0>JB32zT|!vV^GY-7G& z3#Ix?{rj)eeK$NZ+v&Blcbc?ob%+N&pE>yaehda_g#2VpBZh7s0-aVL(X1M0L7`uf@%kVonF$HeOjvDAY0R^nt6*oz< zxjH7G(Js_yOTfj?S06_K4?Ej$WWJ`alT+#*FAiGQ-_@i?`-k3nLQD_d6?gnM)=$Ry zi}k1SVM%i10THs3Br^=y6;=jTqTh_Lm~AcGEi!t8MOGvMFB1iqx}@hQ%4_yr&{75U z&C+~VK02fd4Cg~r`?)_W^-mkbb#AuBVb{9V82E;49T#PHalg+!z`ggU38pH`6T$vc z{JW2sQ7`DJ%sZ_{dbGWj=AnEDEyN85w>@psZ7o4akv{>scHI@XSDOz>f&iqLV{e(; zi&NYi4jloPRgYn=)XymBCql-oLu zhi1^horn@T>n$bp^3P1_EutPF5e(00IaFw2A;h5l-vgBO@M6B+aNzxS>WkT8rTyFC zzJAx$j$Y25;LYBcA|(xc(8cBp%TfrP_ExP5gXJ-!VwruE4CgOGr<8pM5mD?3#sxyz zkzYu$JKn-rhyEgv@JoD(!cADffrK`=d2&(DJ!#=H-U{!76Ipuz55h1CXQmXkuu#vZ z^>~k7NM3M%{JnULcCUR;!t2aQp{O#M7d=Qx@217a`FM?0&3DMh4Iab^1b`XL9QcZA&s-y{%ZUZ6b{eSTVEQasz}|eAz3} zyT1M-fgHVo9}7cX?(fi~A)SA{SM?nE+dQKGM=%p7Yhd29SrbyOD>TuV>eM&3RM~V@ zVxuRIxuXi#gSXGSlUS%`oSW$fsHbow28j@-PU~tq7QNPYxk0vY3q_4Mt)E?2{<=WQ z(qe-W%PxwEj70K8jkxOO-~(-EQ5y3}O@#j?~_pV)>rB1WnMpj-U}cOS_(v zH5>CCmX53Kx9WdbW)?a*2Q! zdZHlBeGaa7W|uV|X*zp-W^Kc#buFXm-;LMJoBaOM*=wagQ&rfldLkvV669#VSF!I1 z$E^-NTVg}81Wv}G=DrQM98(aIbs``JIfz377sOT!K6i@y-2&n(9dV^T7^{Y^;l7NPdCgbe%E~-cObTG>%o|5CWr_s`q+JF5 z{lnd{UPekvsUlXHU#K|e6TEvydB44S8R?K3chagML2@mh^G0OX7@W1&#K#IsLX4_; z80^vBd&W4s!86c1u^i7EE5^-mKqoynw9YwCHL;xh0PH!F>xK7SR2OsURJo$kZ;WUz zxQB(>`oHTN!qVd$@1Xb-QL0L$un-zQ_mPpS>j}w9@(E-@1AGIyW=?EZhu@JEsa#?NB`oabY@W%))r}%nzF2Gd|k3i`lEQ+~*a#)rKsdmc6T22|w}tjv-Ai z?@h(z-d+~&Zi5aEk+($LZJ`1bGCgp8ZE15gwhP|Joz_2j;r&km#_~gQWo`}d0@8+D z8Y1>b@aBL5sZ7oqvS<^ps^+EFXFFoZj}>6n$1x-7A|)!gFdlbzt?f=X5=j~<+z_i# zcILU@jh62)WK;SPE?wl~l9#0kZgymNDZad}2cD8G9EDT&z0Kg-D^wt?=Ep^eMdti8 zgA6}q#s5wDX&l>=cd?;PVsH}_Bu+LH3D=GWtEjC!E_ z{veN~^LCr+3DkM})~{!nPLlgGNP=J7NaLRue?~7!Y$ob9BbWzRs`Io$yWn~u$e`jt zZLC+wAIGz65EQ)AJ)CYHwSm<%_%p?&_6uKMHGch(7_^u{#DW^hh5TPtOQBT}INqX_ zw9;H<$1cigQRyXoIk(=FvBihuS|<4`cAFz8!bME8r~Jk9*q!tM_fUG#MbYSsx%des zq0V?SY8HK%v-(qucL{L@M6_&d=Vw^q3BN!w|iaFm5i;Rt-$NP-D`YG(WH z7?`>l_YJz$MMAq2aKkMY#p@3fO}hJOJtw4OG5`)H*2-~s{t)-vj-;O5P*fviZ#fn` zms-OSgzgQ$VuXAi^ur+7r$=|qtbgpcwFo|o6~CGqyI33Bg~(42(77WZcdCdJ_9Uvs z0h9U?A*lSATdfuMv1(*TeL{G2NxdX4I+Eu|#=wr4Mmo;wxxP8LP2%toj424ji)2qS z+)Rjl&7uz_Fin)PD%~(-eok*oA55rnkudUcNj`lyTwc+TK68Q~z+lf?YH&Zh$vFxZ zNbWklnx_=kVIscra7rH0B=+HakM{B-{X@G?P&(HMH|o!;zB&ca8`emHQhAlh3n^Mm zFjFK)$uQ|!@nvC=f@kVBZ>Ec@Kb;j&+j#|%4RktI{e&6vNe1Z%P)#PttH(BTUY!5- zf?wa~L%|QElc%G{24)g(YCtHl%U<$ zx~IM=qer@Bg`hu91s6SVWX^XMLS4N_%nUz;6|qWW=gLFY8ofZxQ}>ZGpNO^$@tM1a z2ucX$!|`Rq_Qhz7jIh4Xx4u(j+VE!IGhixc_}D_fAJ-pGY9Vz1%&7{D}SiCz%v~saXc^e z(e~mI%oO2Fqt1zYP3dybZq(vqm`*SB;z`mBnE>*sNiup1*61p0-=&eZG@QL@RnwU$ zEa3bNc`115Ex2FUb$ErivJ+$k&h4Eqi0|Vc-fL7ex4#q^Z^OPTbhA78MfH~&;juwa z{l2qOxdyw6Vu3AGxZw%^G-Uq9EM-bgytKg5&AA`h)GsHIs$eDx_`mooQqdWjzx-8| z#vA%t()zy{yrsJ)^2iJWFXf@w&N11u7Ph~3U1~OUdvox9;+j?_Jzt%3ag#eJuQv~X zH&s9a3}s+k>Ir^MtW%vfz4@EV6f`nm8&+3m_3R<=D&IXa#%6k9+e~dBc-FXn>Eq#4 zRO{z2>*HV1v7u%Hg4v(cD;l^ORtkImd{~?RR<`&9u5qXt5j4jEIvk%nrO8Lg-XlIl z_@cl7m(IxX~wX4_9MZmx4;d&mn#MWb#9 z3v(po<5?p`7g+a=yld4n1eC2tc9zYS0~^-jSyL7mz0E)|0J{y%de5t1RO?c(=jLLq zc^TNOH|AusLrLHV$3;^?2=}l@!~k14aY>W)$9loWYBY9>?qnv3U2*5WP$HAmv_ z?E^FI}{JDL!*avnvyz%@3JIOpQ4o_V~_%4E6RGMCq{5=ih7ue2B2e)LjZq&S4 z_F8CdtChO)#{U%0`cn0=b1a5qdL?5r_MfW@10rW0$?arxLe_HmnM3cjlwy0KWfCGi zR~DboM@|qYT&n%C@W))RvN8B|v0XOJt7eK-E{AMR}e&T}WLenq+THii&;>9~n&8%`O~n z{W=$Uv=B6bECrPY-oI_*4XqMJ4^rpK2I{Blb%RFJ;WM7UF>YoV*14MQCuUE5kN8MVIckc;ja0D8)WwoBOxS_u=Jh*+LQG@`q7<6xS;p;o ze=JgyF}L#=nFgHkP|IfcH`X-D;|=`8MN3tNXw4&IkV);2j2DfGvPpbpk##rerx)3h zipyZWwT0QqsfQ)Fw`JIEy~(NdtenrnTkSw3>4wbcLs7dY(oh@<=3@=2Q^^{-18j|n zrxuq&3aflx=T-ZtfBYSoVWsY+Ih%b^y-UtN59k5@O}srCbFm-E;;oip1FZ3s4- zx=z*+bLk!)hpDW*LZbtW#hUMMN7iZEP|QHX;69mg+<9=6aEKA7~J z4`(y@obH>9=xI)&KSBQfX9?C#qRpYipNt~dez|zlfHe*R9wPFSVk22{#Yc+wl}_;K z(tjo1(fl?GZwq)k+H+_BHS48}goCFM9x_*FFRIUAM-1|1hsuY0G+m6y1kCF5&P=g% z6sPjT{kwCXqvUinRo}8T5z}zHnft9;=!eMxzTV5hQ(EKtA?(Xc#~$~{4ar#VHb&dw z})+kCGPi1|O{qX4d7)ZJ+% z#C^gp;6q|F!zLp*uX>W8fN^&7oac!az zs=_?doJ1h4J)eF&OAyDjzjo$ed+urD@nnC^;n=CB8KHgy5dVG2L~LiJILLlzCVjrw z{;~R1n7@mv4GzdLM1te9tvs!9Byyig;k5$;4x{uzQ+KB|Zqp^6buXP0PqaYQp_7%g zyJ6yO}|4^g_(f~VGd?fi9QFA&1d%X~&Lw7hRk z4>Q_-giKhY?}NLdpIOgW7c6+hJpWgp<0-o7wybp3+cv`H{l+t*Ct^H@@ujj-y#XP> zaty;fS9}94Q?XZeVHL-BCZv#2z8aT$C^=CeQ`GeUoTB1;nTlSno)9O#wrVZwwLFe1 z_tTkltYiN5(NzImCacKpF~IIh?SW@a74IV5G=q)`y*6$M2BOwyE2}N+}EH%q#7#2R1j1NDh94GxOen91^XH$;r0a1|> z^uY`2hnx1CmGN^TVg1)Jdqr~A_D82cwr_t0OFYcz`*8xQiJcpSBq(?h4%^!R!%`8{hg%e;zsWU0Q)9oz{F~;eOQJxX z$+Y>x`pZN670wrnCPF9^0W=3-33!qVyWWoD$(!3os}-mnz92p4mwy7$w?m&GS!Gfg zd~TODlnf@)RM#*5Nv~Q*$j)qRZJ2?-qwqezAYC+uez(-VzA3CDJq_n_GTGp3HL3T^ zDF55LeCF_bKbG0RxwITJA&qa`GxYefT=<1YfRzQEE?l`NyVG<3u~pWkw|_Vp=2$01 z*R4CfFrKdX);OXvw((Hv-IQcn_#3y#3la16P_G8=gL zs6|pAp<}L8rn9>ao@Ka>i!`#{InpIJqDn9>CN zb-{^~^~DD1oJGDvG@Qks?aFll7Qza5m6Ngn4MK%y<3+N{oW=STAOp*okpDO)Ek<@k z{PY1WIE2?g=UI(vy21(Te_JccrxJ4C)a2GGZ4Ibw?L-E4k0NyiBVt1mhmtjff*H&r z^B%}%qCK*iSP?}`e55+}lbdUWu?(su0qU%po65NJ7E(vNo|zzfm})awRRC#2h8L4Y zvjKXGt)*Mj^?E&mP#vsT*@~J^q<_r428e||KPuD{^fj+1rtUoMx8I;Ez=-o;P6nk* zrW4%)R^DQTDBa%HZw44!5N{_8kdv_;=mc437XX1L4J^%#R!Ga#6w3DKweD6T1;MjJ z9Z;9>lRSWe7u$E8USw?uSxAhm#Q6(0{uw;v;Y45b@qj=a58f?|PCSN3D*7@wd@<~n zkvAcYw8n`WJmzA2de65gn)%g`<(=_tl>z3G8guo9S_3&zx?mEf<(r3aMXVw)iK{ZB z0)paK%^jko<$M%iP^9%6a=D*d^WBx&J4adAfMV&rpik!EQW6c8N~f29j@hJtCXqJn zoH7Ncg4q|@M?+A~HX2@}*+jqL(8vqgg$`&8r1#t>EPDFIQ-Tz0FNtoY>f?bLd?eSD zDV(8j9RvDM62n(gF`bjR{_8qaj5t@YifizTB#pJv*I8&S$_jt<=ZNTOW>aJuW(n%} z3okE>;1)!ene7^g^y82w4LctLXi5Rt&o<=dYjbp`#=Zn5!V|i16WeLVy&R79pHV|e zEV^;^Np4})X7>rksx!iD!?J4T)P>$$KkS&Ovr3xb!K7{t7;~c2*Y0q}nzFELxZ_x1 zvAe@7RAlx_l`_=e%Bm%)kUsG|tVnEIZ95x&R3t zDsptrImmP=50iqz;qGy-y~v~2EdyGat{d+7eVLyPsLgGHgGuF9e1$f=3!umvfcrS> zz=VyGSm)@=(GV{7bv3U@NQSZ2`#px}kJ$jwVi)siv1b7Yi)SSKCH9pVsuBF?#L{6s zOBAa~!Pci%@8Od%*bgrasJM2Cc;-EZa3Q(?M?LpmL|`<7I@t^2(5n7*Oi+-_vDFK6 z_Jc7l{jbaPN=-^k5**_MZ4_Gc_#DK)Q*mwR*(QhpVRLl^qF)Lwn(>*p@xRe`D^NR! zSE{4hji{Ttu>lk43uhS*y5A9*Ep)W{FMDKMqfY91JqK|o(vpz`BIgEZFI!9XLF^k3 znA+DnBeB6ZWM-3rv&{M%@Ly6kMMYip;{JuGp3=S`xy)6A)ifQ|<3|`Qr8ymBhc|xv zh;TRG*}O;ZQMla|=WH2++iPE7|3`|W9VNNcKBWv8N%A6;;vS5DF3Tqad&)c4p6mbm z>FRXH@=T!7K7GZ#=4g^D?u1&~s|aM%t57vC6U$vekPo)6(Yh((-R zC8*W3?3bT4Dx7-6wK!V=-s;vPjvlJDUBxnxOCKL8zq4530Fj90T}UH_*GHUBUj8Xg zfmBEpx=rdYdLHt5da)v>TrNCi=}GuxIz>gz0-GB%+MaRCm{O(b-`S#wXp|Rl_TC1e zF}}~@>lYax@9Gqqrx7Msx99qL4VE<8brI$0zyEy&prDJ9_|^aPfm*cdVEdw>qcck* zX@lhF|E3M-7XCJ-M}_;V>hDGMX;@1X;d1=y!g>p;)tOsA z*mhQ4xaW9Fv$AfmqE~(W+U?+NaP!dqCtnP#!t}4HtQF5O1YPl=cW*4&fq6F1~pB(EGw%^ly>ekQp*xJzo?{&8#S8o*Wn>HGns!!lKHfa~i*g+s(1NoflfO zJAf9Ji&WS!vn0n`_lS%PxW*cNm;XHda(J_YCGs!Re_&-RaO62i<+edhDbhL@q~mZI z(sFg`Hc5%%ed_p~s6)KDDt_qf7xns(Ls%9jc0c)r!edQzi65B&pP3E2oqwj+w~*Y2 zIIQPxmPJdq-e(p1$p*&OaiA`7-XhmuxJ)!p!pZBL_WDWH7X}F44%_d!GK!x znw38rhhE5U<~%PzGem_>aj|0Ff}Xdy*2zAkTb^7kML^3f!Kl5>_NQF;V{Jqgy;dnO z?vg6q5GoL&t6LvqJ3CjkhE=yBpx~Occ6lZPe;y}{V(IfF0H03NH%~|v_Wd+D+!Ed_0>x4>2v{$jWplwB4yvN8-U%8IS~7QT<% z;h~`@w^AvN3ylu=WJBDM)2pECh)n2|pMU0!3-$%bIPFO+=-D4}$8pqH9&okXN?5w% z2%n6J-ZUYnzRC9Q9qb>`mviVVFFXh&BbiG%;k^`Kz!O(1!UYM?F;1crwd2v{J7){b zvS3qhcoAs%O*$f(ztrY+QS?q|}(FEOV1*khK01`Z7i%wg5EIk?c z;C6*rvSB9$CA)fhvAZtAFS%O-{=nDNx8Ez#@u;A?mTBIUzW8plp$F4UYHB%5gwxrn=7s)ODc$@Luu&t(99z(;%tVOB6Y7|Mh{%;mOY883|{-MZcO{MIUwrq-wd zK@Cl72`OLqBD{WJ`i^tWbPCqTJt>&ui=N;Pe)Aqs>jEj6u`NszavRojJ968P>9@fAu=C+e%oXi4px6%V{WXF{FTK?BIhS}ZpM~8vnipBDK)NXrJfoCCD0|Dw^Pf> z0;z6*^gCB}PxO{>$Z%o$_}R|h$~9B(Qay1y$XH`OU~Bzj#_5IoV%Z7<*!%h12p6oH z=`#Lfj>rQZzbV!F7BE4Bo~D|qnP=w?x2L%=LsQlT5+e0czi!?z+$M?06KpO(7?OJb z&JJchdE&Ft=4oB~ZtW|E-t5|e@ad8cMCK9v0b=|4F>G`dmE~K-gBao?$_E4!kH3`@ zvK8y{=m?~33q|CwW<>7DTfFOz^MSD-O@Fy2W}wwcV>*x>U_s5%jVc*f24va(QFPZS z^Uf_8(U$a9E6pUgcHH~^DgAdeL;KaBPhQcvYsdyxL=gOEQda;`fuKJ{0CeP>8k1a2Ll7^!EuNu9>< zQsV(wduF{pK|$Gd6)3-FQFN+8JAokU3XLJ!yhKQMt55gwUQxjufgl^^ws)6|BfL7M z_mrD`mtC6*$kk+nSEZoz33jpcqb7q(o=vm`{2U7dmmNyL0$SJ@QU>M3+cm3i!20usg+rc6Di%I!JR zmT@oo|Asr!Ai-1_yX|9M{@C_0pxI#Uxbs-S8LrGW*XbVR2Jeqg?(>G5PhLHKe6tfh z7H1F7fjkw9)6=bGkrVyArH`s8_^3zd z55p*56s>_jP-h(T*IFJ>04snCVH5{r*Idovk3MDnWugZ?*G5c3;r26vo|zDbaJcg7 z@wCl|9Ctg?hA3xN$Wv8p3>Xi@HFq`KCPLpAT|KXmt;sq-)>TpaQyHLRwuf?YnfUHD``03Z}mktld64aX#Ff&n6kVdmTzyG?%!B^3{sD zTJ+fJ^wVXJLXS1gu8h%h9ZL}5+oc7P?v4oG~)Y54=W zR|2A3hCm#*z!Sw;$tPTFk#(Z3qFrq5v6Y{5J3zti3WftiNaRCSM&M~{YiqY%1t26P zsa=}_*BlNt4hOQxqW16sxUCVJ9fO9NPT8DH%u<_j7tOoEXd-UNnLwc-16j>}O6)^| z;Z)ztpm<9aRo!sCEor5);EeQ^*!C9C`zyO2>%v^%xVLY-P}?eM(+{;?fzqkHznreb z@oVe>UOoI=maCg;DY6xZsoV*Y{862}R6badj&7+gMc}(loVfj5j`^M8bH?@h*sW0n z;<`br`W!@y%ekeK4sscv%0624VFpePG5Bt`xi81YQv;(YHtfA(ean2 z5&Z%Z#F;av_>1&q(6v9_S=BA-Y%1w-5iE%K>njRmTung)mG>RZKl>!n^VAw%jO~Mu z{8?3n+BO7}upe`;N=UJk1e8|4UbS0*jPA^2+4e}TQa2XwDTOPN&8f@&Yz<8YyF$+{ zt>o{i=G)ONW(ruiUsQN#t*l8Vk1LqouD7CLlC~%yro37$)5T?|^y{unWbP0yd^`5w z>0IzBW&hP9j4Go9@aJ*Eu_S0LDyu~EblvGo$#t9as$hdpk(y2&znzcT_`KV`?r^r8 zLPNo0MXvAyP|l9a+6@NdPHs5e)zNO=K#vtpxOz|^Z3~C@ja1|s@&tZ%BKa7k$s`*4 znpv@6@)xpIxtXId?to8!ztyPK(mQxx7DDD(on*_+o7!>A{PuGMva6H+-tgdcjr1+; zy7+v}_t(<45dt^2c6o>j<=k`yqf=VE9db*giQi!sns?L3_xiML_nXhN1ogzuz-q*O zaK=?rS17m)ZJ)U%b(1#&!OOpJ#P0e^;0YF1$WnA+;5W_ zaSk)qKC5z|SI+Aaph`5w@fJ(`5(!q*O3_2^i=OVkA>gjF_kDR>eqktlk)PRJh3%XP z;m4f>(xKvD8(*RBd-p)t%AOdn3Z|7?ecDYK7)(l?t$~uIHhXeDd{e!oe@QTphU$zl zS9dkGpN9=nl&c62(%?cG?&ImKQo4}*pw(?hj4R6pu`7Q1a^FB$^u5HX&It?YRb4AD z&zf%fFv!e0>wN=s*808{;IDoB!7k)Y99N-FM98Ej*a=tc`f2?4HVL*ayKhTKO`6^Q zNTz?OEd$?+{)!h8kf}q^*`)U2brmw?7BnTm?9kJQIFTEuINzY>$on~%eVKs5jsNFG3a3HMsG(X89RML$1thikbuTANkcKgZ+&j=M5d{llg;Uz$^M^DeDvDfDm zo{On)zqK!sIFh73zSDl`i>Rr5xt1$k-=oIhLr=IC5%~N|z8`B&1pkPP^PRcX75?4h z_evA{7Kv+=GUYV+iU$YZbyesyj!}`IPkN09FI;*G%+QnUo~dlDE$A|{evImkPfLT0 zME@ZBc6%vnoE`U!V!>WsV7H0B`9|-ZsdUP{@vE8c=n`%L!hGI~eP-841p<8qhW7iX zcTYt~#-Y|`i4O#3nTvn;mQ4xsJryqSRPRkKdXx7puPI+bS2eQEpYCTBmDp9@t_XjL z_&(6u7KZUia;7auhW2%W^CPE4?L7VCLG>&Ii_U_wxYRYfElQ&2!F zgQDyPw-VhIrvQSn3|6$U(tmpah^Cb<=-Orh$iq$zkt!}@w;xX;pYWjC{%SBX$7z2- zO(}7b=xc5hEBR6LSd*IHK<7Q!F; zL5Za^i&qO+86{(>`3Hfr$6UcD10)Y@>_QSbLjm6{i2=RDag@MeMyh~HjxzRxkK&Ql`?Z-WqyEtQ4-GTV!2=y`?WkML zsLrB~?utC=0z0A}yMg=(;IXO9h8_0LWvD26YrlF+f}{GpXcCw!Aot~85K)dLW4)gk z4U$Nd^#xERofXhY#arKUrv)x`s=b7XpRNV*Bf#v-8j<*)`@F4)%U%bum-%QW9PrqW z8yV$Y-%?K|<6k`SenRW3>7{9FMMRuH(9WvV%iaZd_3R1LVf_{4T=Gt(NuwqWcYltI zO8ee%yMp8U?{Kjv`VqR=Z6cBP$*SN5Wb2yl9YChMc_5#FNo5n^mbhbS}JX+uh{2q-mI!&`(5K1+<)*b!Z5*-mjj^s ztO#eI*(ilSa&;M%kcd;yXijpG^dWj?{;RcbM7NKP*EVaNUvZ=Gtk)hp&jveBrM<1H z*~5EII#PZLwE}630{zPe$QC7QlIODv!S_~`cf0K4u}@K)+r-J_#2O`rln^6FIv~7C z9P}iVq#8rZ#GoE+WoDFsm9SphP;(()mTQOi$FDHc8h3K!RX-Iy=ScQ;R>h<;@!kwC zkw8tHJ>B$|)E=|{x@bBN^zpi^$8fUheN%={1-^c`czbc6{!rFOYb$uih;ItZp~)~c zNyCI`7J=AKa|_Iz3Jg0>(VtLQqFR4RW(jqegudq%;-NB+;hf9-rNI4tQo(Dorn(y| zJAj5=ZI$pMoX$Cvrnur_0oJ}q+Vk6n;B8|7h@WQXf}Cny-_x>^(INCcS;b>)Tj4Rv zN0zZ(!HICF`pA}+o$kly&DH_Q;u!3OyrkL>5XSj-n1nYUHF`2{mU4%FQkep-P;9Qwo(G@R}tAeufdqp7NcI!1PF@*OdPs&Kvz z73We7)j0q*u3@mLh7ujxQrcgtkiQO-U8J>ILhg>-bt<4=wpgng?Rfx`ldK0uIDI6^ z%3`;9Dj9w=(p&mXgT8wQ0v_N;Nne4GDVsGhDW@5kgxfZeYYLccXx{hnpE>EcI~W`# zUe^4XuQ!HY!2x*nJ*nDS7dVmJx4<`rWwzoyh}unmX>EY&ru7~TR*iljn)i}6$yOzI z>vyW7Az-U#rT1l16~5#%G)gHEzJhH2`i{Qr7!hIdkV1wbC><|lM@VIi6@OyX{g1Q{ ziC41f#@#HGPWSI8oH<5~T0=p?g_?k;U6Wjz$M_|OGpo}@R#)|<` zkdG{yZ3Fb(S+x%B;WowHym%ohtYpY;h+n%o9@zHqUZO=Q{9)tk-Koc-U4J6J1ZrDB zh2do3@ae%C)zwt_pu43?UecCiueihbpP8~z+^j!=9{1?$4|LYdwzNx*!^dQJr{s^2 zRxe^3EL`bF8Sd{3r>a#-m|=ihf4ZDX$B>`E1K2sM-8C`%K_b%lQ}b5`#I5 z7R=YWA&rPsYQP(X^7ypvF&U-Cu0lG_wNTBg6d5rkMvv+qzFvt>gHS^%lyP^wgE-Un zzKK`XAvN$|^!&oDb!p!ohxDwBZ>=%ZKk|&^W1nLy@}u%4LN)KdiVeG2^wPwHutLkR zm%1oJ#Wu@BXdjU2cpX?>QPH$kp%VU!hFZ;-3R|(s^<)L*)Jz~g>?zIfR4hB&4|DAI zPX)d_DO;Nf(H6|`16q4=U!dr^Qrb8`EQP|d?DR!$D@~6Nhe)SxK8tsnx2EJd^XYxkXOoe5lMU6!92;DT!Z)RyUw9&Y zXDUtawpm9=fs_0|md?0NQMZ6bH^60V`Zrr`#m}_B>%3`3q9_~kmIH$7qX%wQUYJk}Fq;d+XykM>GSEZCXi-G&eE|nkrh;BQ{*fjD ze$AV1Ix{nFn_8`hbS%s*P7c#ZA5h-$lV+36bFMHKN~y)5@KfP%wq zdhpIxqO4VBjMo%AG^$+*-*ANyjY2v&Ypo?$oz?x5dmOR;DUicQl(eZ*`OT~{?Im|;iR7QK{3=iA_4?sp z{y@MN>@4zHDFb=mNEFs!y-wesWLgKG>aD}Au`{kX$DZl=B!V^+bQu_{G~26KGwzV< zIFyT&SNv*vGS-H@t(;%70tZ9+Pc*Xo`+D+Yx;|un0S)KFTSFst^ChZ$O$%Q1CKu=` zT-g!{=P3UWgGzJ&yloSUhlEL8NdlWKw`Q<+EZd9`;Lekh9mdWL`6#LQyI*7!IF64> zKBdR4`2avVZTvj`L1Ay+pim?pg;Q=bxz<78jwkR5@JVrpU;DFr^{m_CH3S;zEklWO zO7^PQ9R(HV3K{TB9JNgSx?C5=zj?pQ&g1hs3miNIU9#lmD=&LW(d?|3)Bq6issCh? zVxW9*&^V2#Urn&uohg{m|8n)A>n7}1mHBWkhDBkM3Epkj+612&r}H$R_GE%#dB(c{ z2z2hZdzptVLN7_k*h-%FIbOy{ERx-thGoUk;||zjMDqYZXb2FG!tFY zE8<}51Jj0r-8=`~BhMS3RurF)+$+<}N6{Kd>rZ_%R}Kj8@akDOKFCVuLi-^+al_q} z{0%QjG!I`pRtXlugE}00O^GuKm6OY_L#IYIf9Ay7Rg^a!33k$`x=QIIY8|x6V!=4e zy>d>iA)f@&z%h*8G*Z6b>EqI=MC@IT$*ZlWCOUa+jfeJYKJmWxTKjur5`TF@bewG!vCtcQrdZ)HhXu6^P)UvHv-%VtTdZvV5f7=10 zU-wPod4SRoR+1wb>S=E=e&aCWvg}Xf*aO@7&U5&j%6YRSpkkJGV(=nDa#KlCh>=W+ zTZxhPi2!~Rp8zVVugrXMMSuSL?meMmG)7aB*9OCy29l;QTwd~L_@cE6*RX`qXVDJ@ zP#*+w2ZE!tvf>=Oi(TZK4j*b}5utrsKysB|AhYG^GBwefkI!(jxtQkQIwIh}Y@#+K zNS53U0ctGwi3lAUQ{V%(GD6s(MOjMN_DALa;oaaW2XG=02Q@k!n7e&T4aE#vIk_jhS%C}#J)j-k%(Rn zL@vqD64gHM<|z!P)AXx((4@1})#u$b%@FNvL$LZe#7fxg_EmmT?_I(oUXZAVfAQpt zQv>Cs^6e#W8a2N3iGY@6Y{SG#*-f<=-hVEC5i>mfM)oFC|iqvZ$haoRg{bYQLP zDnD-_s;-o<`1}9W|3cxE(Y2z3^$m+lJx>7Zlz9Die69I>MZ@69Sg>66J7x4I2+T`E zmGlV-q?kQ0qd&%d_~W0@HujDCc0rPk1vtB>Mk(i2F)r1%TQ3sVNkoLp zs?a7%_nLE7K?z+d4wVBrC(prP{Zymrc=QaE4D-cG<0piIJ5FQ0FQ#!e^Ifd%A?UL) z#yk&YM{rfN(V7}7jbJRZcZ^9+_C+!VRl5qYckBl5YB%5|XOZ+YEBw27TJpM`$R+6Q zNBcGjlUc0FO?c9#n99Uw)`i_Sf_1x5;g2FYW=E(aD7d(p4^B5~in_1(okMl&N zQFp5z4UHGo2;^>x1N}m^{XRg-`=<-_-ImV6YR_!`M(EwsuO*W5MPzDQCKJfAI8$~k zx`5_HuL^20!eJbVhN19cY!WW(q%;}R&H#b(Z%|f<@P2kdI>VFz%yOv22$5kV235Gif!%%8zw$lKN8pC zB)bnMp+^uXUnGtyTQ`DDCe1v1-;;9@@FFiZ#r>!I>uN+|AaE-ZwRDJ-`8Hb|h6#dx z35up)w6>@(yx+D*+3dGqpF5s;w(bVI;Q~5|t~~Y4DCOjOJI3ppDU-uX-O8Z;YR8E ztZ}Iw(Jb2Cz-TRrl|-k@^OoJblc<^20)Cig>zR|Et~^^-&wGxJZbFVzhgSpHD3tXW z-YK~KyySha2bSTuM4gJ&zDVkA)FFrQo)@HQ5au?h{IJK&`Sh} zcHKb zFSLpNdifGL>Z>pHU>N^xQ3_FYy-YOm9F)OOUe5)@xct>8m%^t@t^8Smgv zH17MMMjZgWj+*v88}@4(lt4H2nv8-e*imD;_nN@l3Xe0cDOdHR$NHZz<_6^Bpr>XGp3PZaycQCnoM z_9r`oiDlvUF({LkU+%}NxO$d66D!~qbedD~ovS+_ZCo_V%O9eedAk3Hr>_i)vWwOp zhVGK?P!y2vRzO-(LSpDpx|<;sknZm8llvS+l&jIjCcwL`fM=~Cs)V0x5JibE~#>7u4Xuvtwj)IHQjpx`CC~`AsK`ylW7QMua zvyJZUkE|~wubhTj9a0Zwi}#C;EJyCW;2=zNhFFB$tJP(zShyq1;I@+#eA% z>1CCjt&>HhDxcwWq_Zh<{odfPi|L7&<-b-OSteoEbp0PLBz~)F? zKAo1lscO^*%63QJ#;?`C?uvw3e)zZGD60zcRWaIk?WREVDtkNb%G<09PYu&LQ0rGd zhy!4_(;dH(@6X!d7gtj7Rec1D`8c(J>)MrNwYOiU>v0V)^FJ~Ss=hLVoknbJbPzt2 z7B)dzjgQYo4Do*}M9;br;uTwDo?zlJMM6c)*&qelA|T`Xu&E>VPEg7E^O}dU%N`8| zVwm^5?{$~ppF@E(;{Jil6w0^6IGUbY6qyn0v#IKUiC;(i#*Vfs^ZQ3LI3d^AvoK@( z(iV3r=vHdW!Ng53$yPb+Fl0YBh$)mEzY~v6kX1Z)v){_taFBLmv)NTRR@9arEU4eX z%K>>i{sjA~@3X)XAz?&?16V=dmidL~)APX#b-B?G&)*wRFPY5tFcs9ue(T=6Nf?F3 zO0m_v2px3)*5fvN)p~dYT=z!yMjogIGDqiCnUMXsKV{iqnZzMd>85h_aL&s~mOfvj zhazI``@RAnke-l;U>`@V|6N`6ncn%XIn^PpZ*$z!{D^aC`AuJ*7h^m2#b=hcALxsY z47hpUB)xgw#Jr{Rair`VHbc9LBgDY&Wn#pH)dNSEde3=nKHE+nw3YSQ?K6>9h+&!H z;=dgGH+vliGavZ$hQ-ZD8JIp!{B9Hls0$p6^ZlkFy4eoD`EJ}5Iq}n51Zh+SA88Ve zU6mApZ&nN6)uy?H)$ZoKaR3-Oj{XD%%&EcLVX4SNKb^d0?>}F3#(|W&zu>(7As8ue zO3To}^+F@z`4a`rLqcefiLuM~p35{+LErEKCZC}wt5oVDh^`n~*WMhNc7!m6;b9q{Cm~|W13ns>#Qowym{ik|h z9f|kuoJ{ppH1R$xLGV+lDBd-89R88xO9A!sM9}-t;Q%asju0fF^*S=IQyxYSu1H*# z25gZWd3BxnkSA6lmM461Vhb!4GL9(^WFNE)22>v&1&-IF5b^V9Mjf{=O#Xo>kiR_g zf!7NEzu(Xe5CC931V4k_Ssx#|J5i_giB0Jd&GOA)G65LLgsE)M1O3-be6gY`f@n>n8^L44b2w0nBv6hQ-y zXMoH(#jHZ1-=IC5-rj)!s5l{iBwACit0uXDBLdPSqAnZ{qa+BQZuLvBEwd@CkZGl& z;|FS*Qr}dT>uTz<1JxN=a@dU2Dr33*q8Uje48OoOy}^2n{~NxICQ2jj4%R3O{-NyV z(Y7}^@x`OISYmC(q|GZ2gM{eQ*K)gYh4Srea_?O=iJmrD{j!jAfwBcm@ta`(;!FtdRpU-3-}UNfmOL9%xI&NP3SM>R9tOM&DcDr<3ui}y^p~+*dSwk8h>9G zj*A2?901nA46bkF>wONDBx`7Ei!tGstt_;z&#*l+IPL#m`P7l^Uo}S0m40_T`|)4vYXdI!Ykw!+p}5xOLY(y1 zXP}K+2jGJrZGWF6GT#^Q8CD}CWWM{Bg);l;%anpa{dMt28%8jbKwImVO-1O~NK zdT8|TuDCocdPo~z&&9wQTR-?iTvMd?$LCqQ`U)H)x-i~v+kUdSP^po}h*KNBM8x)r z{(Y&oNwHFxS%7c(BFxyUP@rrasdOiS2#Cm!W*>EGYBt7~*SyRM3W)?DEEtVl4Ed(M zZ`ks!gU*8PNec~_K4kf9JU(RlRBW?L4@D6=U6;*OBcVS?`Kr-e=pfl0KK=PotZs+w z{t-#ttC95VSM7$SwE(z4~=;I!_l)?Z`*HKi%ef*q4K4D^NRTo5H^6QQ*#1UEVzX?L;T zBcJzhh?MC&p6S%=Ih_(Hlx?Fa91&IA$-Q_cRXsT3`_`mou5sJ_QPMdMBUdZ`P-5|r zN-|HY*@VV+E#6_zWFL(UO*o2}m?Ssd1+oecG`uo=Eh=M;w4yK)+Q(iN9u<&xPVZLp z+Plmch0DVCQ)qaHkcGahEg7>8qt6-L%&kt{hSGVrM=a=0$u2~H%PFA(D>V73JQ81V zfBz^BF_Fo~I63ryV+bElC@$#p$JsxAB3lLnaJo+$NpY)A@rKKXi}*>{Y)>Y_RXwA{ z^ck`H<(s2*A0%f*4;G7x>43)wb{|a^BCAszP1H#4W&E03R*=sJeAnfny#|xLQR^c2 zTH}-!>sy%l6q68kBYIm=G&0Xk%==Y$28H3ipK)grK zwHoZiTh!}@lp;~@I}AS*pUlfhLf!Ye95soao4>-MX6YBgM>!^=ELyc9A)Fk64_M_y z!n{CWHc~V}b7|xVH*u-^RB--_SvCPlZ%df9D9B%G^P<%QVrAY^EGG@!2r@JHIJk zSl@d9Y$E1L^1p#b&0n^p!AD~OX$eV83FKc>B2k@rTbX+0Qsw=6CVDD%n?=~gp!n#9Cbd_HxYS>6?1?}_7-E~ z0iGP_m9T4=cVGLi0_~qRM zXWw!X<%v^|JTiRu*nc8Ung&4pS8Ki8TQRJE#Ua+rwy-^HA#N#KCOX@ncm|u6K?Z zbT!tgWC+S)eiA`pC|=y!NhU-vscvmc9wH8TUzX8XBi%5MT(6!%<2?ar8uL z$034%Wklqip#?gvR?Yy!w3)qmVHWgzFJ?O6Vm&na-UuGT;iPkwIHzRy97-|C7UZ0Y z@2NYybpx(GJGpd&j(pDw&V-xz7r**qT5lArVTr3(urJY4f=<}##9oE8Q5{Pv}vXYn$v7nnfc$e@zm&oN8zT&>`q@S!5#_e+BIYm6RiL8*RJ> zveB5-vIwyD$6AdpoHt$zp#q*dyM$04>li|nuZ(nQhxH&^k|oNh?W-ik+%Hc-(W!@D z)=!@&VWl2A>d>1M8Y!$SiSU_}x0j358vG4LyNp1j@^BUjDYtQIW;>mex6lqTBj`f4 z0I1i63Dr5OQw*nT9m+q>$eyF%&i5kk?x4mf!H$oIEa_NSemK5VkT=q11S~gS*K2rf zob5u=BLE!nqv_I(TC2CjY-7AU*89m^o%?iq~dLVevZ*pK~1T^7dg zjW2dUbij?X!a&OGhuPa}IsX2OP~qz%Tm%*q$I`?s&LN2e+&^d^JWUji?>8M`h_gg# zsa^xSXK`*A)axy)=p3$nm!Zlxe7=$j`}-kRDmNv{{A>uMeBy%wGg6_*aeosTabm40 ziYc;8sI$tFHen}bP=<*IwWntFb?g=|vFyZ4gsgf_@qcCeQw(@1XxJ3DcSI?(A~+H2 zv|?BT|7&#?UnGtxmIV#=uapUR=Y}_P?obZ@QBHMU; zVa9n<>?%5ZYbf$uQ`lfZWQGa74ChOi`$X6#`BniOcB2UpL69L9cpV?-&G#)jYLUPv zY!54hE93WsSVm*K7y!miWjiLh%732Hy^(m#?5pTaz@oH7;#qKp%;DvKqQhJ!(% zK~m|3RS1&ayB)+`A-PYj8YtMg>`_k-c$Yn!+ zhd?PRg*a@gnjkoD|7dX{YQ#cGOE5C#HlPtjn9pvW#)A!V^nCQwi(Cl&n%euEg@cnh z+qPSL`}o%o5vB+9A9~}+Va{%8@tdAUpFs}<{@p{a<93b5u-7P(`zxCI7Q3X9=2)*a zPfiyVG2Jf>fQ`4A`;i&^srcPS59~*FP4+`n`CZnKbsjr7 zd=!K9wP4`u>^6n$Pd-(gc@Tb{yB!O>Xwcivf2?{CwGoW%3?Hmh`7g&s+;zyVln7 z_wiY~*3+p@<2Smg+_a`!Kte>z5D~RH@4N}LFy}HJl+QmcT*mZp2sk(hpS5Lujw0)R zs3}(^jeGV52!$OmibX!aW|5B#^rFUU;(6~2FN{f`@hPz2kwFj2LDPm53d5Fx^jdt` z>lNsTwsok%E5!lP7g(R@ODjg%nt{H@0`6_>VHU#0b20MHofAVOhnkti^>ckjlmp2|&EIwBTes$NXKr!=q@#Un8;S-^pOe5e)yxg|w{_s<;o00|~ zZNKErtc-ep+*@yo8lcc3Cw(V^d2t}9;TqcmJAams8Jc#^e7oM3qx{b2&5Ii|6Ur8v zUy=OgRseO$93St6|3AG8f>B=zl;8G+a@uOgV%)p!`+56@&kQ?P1zaShg!9preupc< zm0j-`$zMJUMm^;#nwt3I0niaCm{5A&q7-p_0Y}~_zWPTYIbcn4v}F#XB?3Joa1VGNC;qHkjr(0e}@Vuz5*T47> zfh{TV&~lOj6(lw~At!Hlu*8h8W8(ymqs#Fq(<(Wx`~CBjx$>Ez)+ml#TAR_(K9C(# zO-ov2HJH5qPvRnj#p~Piqc&kzHKymvZFYwo%2_jtLS!S$GXzQBSZ*RkdE0A#sY>pM z62V)1!NVcI(66?e4;NTIJ>kMS?cMw?xB3(HmpZ5%dq5|YWr8e5$x98O(LI+1S3j#a zcVhF+JcwDGZx50qc&IHp8al>9PT_-PW73gQQxY#$Q!dJ&c-?teK@C}E=HpSxVLnmp z#F=esf>DSEv||%BqP+GFNBxHPoh7CsY_Gkx0{HC%$1~>s6Jl22!u-iMS(w>%&(i(^ z>pAj2ECgrbi-AUX1{|L%W!xxAT4*jsTU6OqD}bf5x3auz?nQ&y;>>=NZ;pVtnDqcL zg7>2QikRk>k)a2zeEPzP=LBQP*4T*3w6WjkeuI7v6f?rCXWO9d@u47ZBB) zL@;`>!U9ZFzX6{~D9}$^L_zS+UL15d{W=c)8^iM8SlW_%-t?40pY)qwcY_5lSxHus z&!5{-z@(@*4@TlVGI2G1Ns)AkT$gY=HIv~qk&jl8&1QrYl>^I`Z=zgQASc3Pd}=~y zQ6<_)oj_23X95Z0CuPXJQn6Qs;?;volX*oo_w%B$@IJ}mqE1iBiIn`w|LKRUsywMEueA>SwWVq ze^|ah4((-&l}SS-p-s>0(fy@A3dP!80bqzpO*ztmkP{HE;rpV|U>3Vfl81ZT(@!6O z(VscD)8S-ixezZT+AEy~DW<8o04tqav*nFApSUbBsNl`Y=XH2Xmay;_FW%n1dXYuG zMeO+6_+$E}FXkytO`6R&sBHbsrx~V+b;5OCJ39eg0PMwNpXP6Mht~hnFmG#t@)fMp z-gONMlDlJLe=nfFwG6Lpsc(em=;MvR;j}oCjzL%(aw^6by+Zlt019FThR+OqF|~c# zvm8wf0aNQG&e0|Xcbk)%PT5_H=nBEb*YkdDu80}$Lr0!F@q*M@FnfpY;6*rMm5BF@ z*}e&7av?3WBxUUSC_c+X-PS6*u)O{9GSM~aQ8=P$8yyRc57kaRHE~K=KwD=l0B7W-iTR;f`{n=O~7xpf#(@ z3Ix7zj6(-iYUfWa!Kq^19q+LS@a^GA zR&P2En>>!KeG50}bn!>fMAw?4p3juSv5fIk?Jyi{E7(27F=%D&8EZ+UOoR`oMf&Qc zKvc(w4l>&c&6m(wiZKwMnX%58bIV1Y6tswqw5*TBzHYdBH=YiTi{qgRIC=p4@A@a~ zPQXtPwwj4bLgwr*GpHRxbYr2UCg*E14KRciN3yUY=zJ;0L5_`A!?0HCL+FQ202T^A z@Fx~j7C_D9Z7w-~M4AaEE0YN@jUykJ_x|bgJx+?MV-f2%ZAr1+E>N-zyO@0E@%|BN zpLX7719+j!G{gg4o!E*u?zx5w38qDreM{$hE2Qga28}A}N)vg@8wf^QX!I~zej;Tom_0DC*Mb*00Vx?eL(}7hZwtH>q@9dx6qr8 z4a%3=t>O|G^D5pv1aHK;Ml5^wzHjpLQygD8=t%K8;^^$WAZqtaG~rQ(4P z6f=F5qf4DBq$iZ9m>*()U*gYT^kIw+a@cV1k)t@D>?hqstdQ5jxDftRW@KO|YWXwK){e;!;KY4b~n0PI{5$CSx>_ zlW2IOgW692Hfch7xC)Q_UiY%{a0{p&LbV*YkwfJ#W@E1BMxge~)u0Nk@UyVYZN=Y@ z`MGH=#xrctKEzBZZDHKymmR%^By=xr5n}r=u(fc~!AlJNR zta;}YDt=~xwtRo8its$#t$Y)gWh=lHIr}-8v(Yy#uG=PGHQhz22k7 ztHzZV;#RQ0oykoP01*(>jroSSEsZgR9sF}JvV6zNCA@l(KzfSFgL*r{9}8bEYdjgk zNcmGHR%2D^uzl9!7^AgFCX4f$@WU(bU)$u4caH_ceB!au!2Bx)or*)|pqW7bqR$IO z)L^Vh_Mm9)3G(t!%reCKTZ(@^ry@x?b=ld|dmtYSk^_=2*1#9w>NS*fpAIgRrOitQ=f zL1-F>bw}K8tKS$uo!o>rVeFKku48aGu_A%UgHQWJavLlfT7bHCYf>y(ZYQ`QXTs%W zubb0vdB_aS_XwKvey!|wcwuiKu7h_t z-1i5TRls$-OPh{n-Fp-thSoHt|#o!1RtH@(8WMlm|hq>1(EH z^k~If!V^~XCT3IWn74EVK`g0(5+Xp&S*%GlpT-3rvLdlZk3pmEjuixP{Y;v8wqA^JJ! zd0WXiyo9K;&8JJzhK8jJ%C#+JdZp)c^AX@aStjDM}2#ubwIt=c3PFhvL=9LvUA(1ML82;YrcVG&x+kncUOf* z6>o2FX_a;{%AX(hk_Lm_bO6Q(c`WER*kgWgVuIZ~j1@dx-w`s%dS2z8=c~MTQkoTE zQ-T_g)$*bpapQV+yg)|ZlCIRCQ3tmow)b_ z_4UOYPI<*jVXgIok>tj(nh#L=EHee?fQ>yvwR0YqULW~Y`-!bj2!8!~j`?C<=lipM zYYRjtUe0oU*1l|IHcX=7*C`k;RmE7B+R=@~X01f74l7qpnvi$HsMM?X1-aI7t1sK2 zAQz(nEec8uU*Qg}t0f2qkAc7JVT1Tg)yG|!1;u)wL7gN^c0%bP#uAPaJNJn!;tk0x z0D9XIZZ^H~1yFLF+!cj}yIq78%^IT}e51%f9!CBXezU5XFLqHsW}4O?A8D)~>7C8w zj(}>=*3|*)Wda}h2g;uWhD*aY1)J`I(u&!UWKn34P+&|G0-(ODqdB5Raq9RUH@FQp z5+tHZtAkKvY30&8uTaR3#o_+jmgtGm6&KYs?pdIN5H+V9jC3B9iK8MVi^{%GNf(NA zU+bgc?%%R$0C@HSRV1#iWktU;{Kzs@dK{+zyA51DxWYKT^UC!NHO-IDog!Qdbutxe zi=x33BBiofo{#gwzv|b&E#G+kWN%s_;p%}cu2#S!Ue`o_@_V@T7(TKn}m3Mst+Rh&tW5elaP2Qkq+!W)B zQ!hcUXYmR;J~D9C9VlfCZNNqY@6264+a1+L@OR(oV-@PdwYx{oONS?OMg5N`PNh*H zvD70fH2TsrpD5U_{iu#L!=komsoNRB&XhF>)!34rg%n?VIyiTS6Xa>svJe(KU(Ot0 z+U#r!!JP@NN6a@RsPF_W`XgF$j2JnDz0HHsm%5F90c!)|Tuo6`7b8<`W0(iaVVZx1 zkCKUe@tgj{Gpz$Ctp$i;?H4mhQ&4|qRC!+6I!dsV&A>0 zQRC&$CMMBk0TY^&TFyy2fLSV-4ihY^0wJA=mhDN(oUIspB|cMFLxki^Gn34tH{6MB zaUWGXF6cWdAf8LFGaR+eeyg}qH{JVJVyCafv#Z0 zf~v3)^s{;qKcn)32#FqG=9HhJ*^AIqprhtU+F3}7Ko({yuS5*ETy8@?@g2TaI{LP&k5I$V{x*d=>h&zsr3pOYI8b;5kMQHKASOWG5mRW3 zpYGehEyJx$c4<~#-|kBF9(LXL&bx<9(!?XncSHx-7zZkDNC$&%E217rL>q(axyf#-?d^Ij z;9Fx9M_$YD-`h4`+S<)kA$tAhyNcqQG~LqSKREES-%PvO26>G4)C3*Ogb&b9IR6>a zlQ8_cjuJi1Z-<>ELkt~9B4A+FaIewSJ|1QsTK!` zHS0v+il@;0fk!h(%;D!e+^BY)>eK4DEoKe!t`Wr`S28w(eFASIMoE=N#<;ndQpWp9 z^?sswe-zC95)A*2SVUGgBdVP&PSRQF0gk6lZUOWN7hTTBMFHUV9KO)0ZIA0IyO#Vv1AYZXtEFO-uNc5jxemMDlt&hq*k%4=trI%1h zn{(eTuT{bY2yhAb+l8Da15tI;vd^chBaaTCi-yGg9Gza>LD#&$-2&?huv?Qd2p}<= zKy*e{j!&9c&xelmGyFO|I^~L!CmdihVTxm&P}f6QwCA7Ojxb5t7_eXwZ6!{ znKblmk1H%d@JIT)7;ShM#OeTDIQRTt;>&-E1-xFZAd^%I`glK<^|f<;@f)7R5s2e) zehkz6c(Y1yooxA_?OudsvhF@6Y2QlOdb4f)*lYzy6z8LN)q%jp0kz&hh09a8D}qh< z>7V zB9K0HdyWznCP7jfxR2h;k%K!Iy+szE(UKPZtZ-Hz6$YU`hnBae(iO`cx{HsJoHyp+;W(40W~E>e)e*q*3uNw>voZ{kPiMe5 zXyu}|>vPjPDJIhK4gMJ8@WI@ln|~Q|;!`lP>xs7z9<;hA)MrI)%ni#>RNI% z9&mijzmJ#AzsaH^gFO3FDCn3NdGd6v&3?Sbg{46y$8V}l3lT}I%reQOrkbLn-M^~S zD{Q=?^9f=;%W+$vS-${1-Nu4Rhtw@1hw)UVUX8(Z{Os36UH7_YVR^=Gwf5C9S`HT( zu4H#hGJq!{Wuae{|3dIaKel8tz9M*^9hw@Py~nsIa^(LD?jFOmfVCj}Zu#<2@94=8 z=#H5j&;3NalHxzQJAGBJptYWfPW&3}I{Gf*f}r-M@_j9h^p8Mau=>8E3KD&dN(fg> zdh!k$T87-mBu2Fdodz;lA00{_dhW2b?6i$Ar5HN=+6fGtn4cdp3lSjvK7w^Eo-;Dr zi{<(PAM&70jO5oVcx3|?@hP|oCKjhMui!57ud4oM_G*_&PF6lj!t6&yc~=v^s(yRc zy3;ICduG-whg*N{&`AFf<)|z9dVO+{eEg>m25Jt5K6*0cZDm_ULD(s=3bWm`R<;TA zB)86cW_oS!ET1;`F!Xn&&2YT&GQ(9(lrK+~y-H?nq`?ANqj=3g!xVA?vrujLUQ-5N znn7?eGx9ygM)OS{K6m;d6Ou(Lm=}{8y$_wn1i|ayyhL{X0qmKho@F&tV`dW@Bd@+c z#eCJz`+TW$|5soLd(h64TAhuc^CH90BGv5_HjRSmTX4)_okS}Wv-X;IxkQ7Cxl$|3@;{2YM}>d;SMquh#Sa%i-p7E zp~8*m{B@US_VW4n{v*ik-p3@7`LdZ1@8SSX;m0zlEm@E9coaowt3k#KsvR>frSN&m z?Ge%Y^-lXct;^+?(A;Ok*Bi>jr@hPn6y{rCbNcxNQF+l9e=f}kw zky?C`=deA>xsc2St1OHgR^5nGkYcX|tXE*>rQWza%GPCrgrXsWEg=di;}FL367#9y z4InaqIv03ANF0vm0=y#d=B{~q75CIErhXz)2n`Qh129e0xTl4ymD}c#a$R$O?aY9kAD|#X1>Vz8EyV!C@g`ic+Z%#MBknk344-i;`odkx|X!X)36|zghDT$_C>=DX(cY>Pi=peOiHU z=SU+pJNhKWGaO+sonNWBM%0yjI2{&yD5r5l$ZDJ|_q?qGf7Ij_ox4MYZeBc>+al$* z2E8YykIAP65DWV0<P;b8+TWETNqm z|Jbu`s|~^S>&YMyJp+k6xaDpH(v2J@Z~O0w`Qf+-;*7&^hh7r+J7y3Wd9( z05q4=&`N}<#=TQolo8|Qrjfed?FZk{oDkf|tSg7MMTmY2n!v-5KY~ocW#tZ&Gf8qC z4pN`EVBw7!TS2toGHsS|xTg$gCx0J0NMD|Fi<;&ul8HfF=lAQwmJ?!WY8FxD&fo`C z?>9MA$_Dg|@JQV&eFVzBT!j)ol2e(JW7-xtpzw?HVDSQXfo^eaoaW!ZTYH4lx^TX; zGV`Da{wY~p5I>@Inu>TPy`(MR8qp1=#oicO)W=0~J3oIA{7q})Z+p0a7IoN~D?zeW z|IZYJM$`q{7-OiWFuy%t6f!@qY5H)SaNYV~=z^!{dWaq2av>|}X;4zZ%;B`Gbl`6hgRyKccR+9N>2z*mNmi+1Slqu`&rpKs!o7UB%WxyFz2M}2+ zyYc&#FLJAF@?d9|SUqB(LY3dbum1Im-dk+3V+y1yStPZm{MRg#^QkB}5+`5EtZf~? zc4jp4;xug-e!mtj{{md@FkHI^+@V@BQCS>#mWB|0JWKgoXF>O~UG?86l*&BW>S$xc za<=VOT7dd%1|63*ox2LA94I_}^K+kBRxGE?NYcQeoCS~h%Yk~Q{oZpkhr;3Uf8b1Meu_F-MDFi`X$oT+kei9brPUXdZH~Z)znvkk=)SHNq9gRhRZK1m!18Yo+FEy6?g0H*o7MAQDFZ9?3@NdkT1eHE5K(?H*+r zq27@o#p@m|x)k09yr80zXf(J~%Uj*H(_(1_8&#XvuI+NdqaVH<7&}8*CoLxMVFT;u z)U|_(yVxjYXw}qyv>*ypXT7Ad3OEP}$3Z}AtN6d3ArV2;6;QymA^h5J5*Kz!HX#^Q zfAsC$S6s7=J#5{}m76p2nJOLY;a_w2v#ck`%N;-?Qnrv>OS38eRB2CGBqH`iw;f2m zv#qKB8jG~43s9dcS@jJhA0TTzP@Xr zwYlBnPE>~iSNIj~JjOOAsG#w6$N}3lZ2q2j#aN^GrKXc@9q2iJDPOrK;AfJ zH?#xGIlG5(@a;5k(rrv|O9|U$au7Pt_w*OiUrUIIOUDY} z$B*ay2sMJxvTgenYFid+CD}nj#7@B@7sa9?^7u+yaW%`=q;{{Ec!v}`L({w%9DBn3 zw6tuY@*-vD8I=Z;gJ*VFf)9ge;)M!hea`g0^dBX*@=A7PoCT9mpEU^AziRqhvCOx{ zyMFt+XP+)~l(NA4dsV$xr)J1km%k%H-e@5#O>}vx$*t-TUaROY{%gm!tz?a*tC4{r zs1}#k+3@cb&K&#N8}!hFyIf}G`V>zZ6HwA_)_2HuJ4yJ6qROkjMe_Y+hR@W`vVXkNo?y#LMCMlSk; zwP=>V!W-JD49+9U_Q%g--qK+^haN4QGwxM?`@_D%B@@sh)!g*=Zm&YZx%?E*hE~S9V%IS`Zw}@S^H2c;i zS0}&*1srv>d-8N@N5GVt$o+{8XKs2trpshztP-PEN6?f71S)id4LW^Tz=8VBdPb`q zWP3C^-i4r(uX<>}2;>m->^MPxQ8=tb_Kbv&lGef@HMw(4`*?2}7D+f{%U4njq6N-2 zpp8Z&fNnH#7UD=EI#6xRWZkEuTx_@Qk);MUHJVCs42Dhl^ZDU{EZQq68u4p0w%?Tw z@4E6H6%hoe$le`fmZ1fnjpFgp}*duxK2@G1#T{7Mwf zYOnD7DEN626M6TR$n~9d(VR)XdricGAzhVQIODcQ2FQO%z0gpfXBuLtBbH)o03Iv$op4Z`9_a#%*|PUFP%~2gLBfvqc2@)2!F}1jsf) zgqLI~{$qCb1<#BB{$l`ml_qP_rs8I)q{AL;3P6>=JDi2Mef3xd^}btuVeLkvzyrfb z76+VU@Gi?WH6@JN2Lt{}`5~DU-_8ffFRRswvS|5{tdAu%&RS6j9W$3C@jtrH&KJ69 zJ4UR{3t8BSs!qnh5N~wF)+%SE#Bev56G(_JIqg5d$WFi5VHs8H=1l!5Liwmlu@5#5IcKQf0_RND?B5z3h{zwDjvTo z{eKvH3#h2x?R{K8L68uUlCl7ilI|8!Qbjt3?rs>E5s^?@x}^o_t^uUGyN1pghMa*J z;y0grzyI&|UcL9fKI@z{>pcUDbLOLzEFM(sv{?NFO+ zKkq%g;^$khDysnfWmz6k76r@C`fYzn`}tfhmebud`D>w`f7D0HdnT00?IoVi_H#W? zXC-JR_@G~cCGXVe_$Ow?5?s~@f?jA+-Zgw&@`}x3Iu{`Op zI7igvQJbc(;6br3i-+jaG!bA)0ZuuhXzCAue*J-M-GGshpJ8B6@oiPTl|jpXZMva_ zEesJKA{mxN*=K2d{OGcE9q|*q>d{~TuTkHX6dN)gsjO_{l-^;ntfft*eaXuIt@NWUMJs@m3nlgINP&W zvCh5;_iVLu_h(`D5Y>Idr@5NA4~L&E4ATg=&hqGnqdiTR8zA~7(Q@=B4P}r|N248- zw@Z)XmWhh`8%eQQhrmVAXwRbRx%OYPkt<=>Z>sw|8&Zkd!3gYv-*2kJruv{TLKO5gnN!5Sl}0BT7@1ajVwC8M`C>7j~qh$vvH2I1PD@tiv;w z(slMI*INg-E{-04=-#lac`{f~c9M*BX&kVgWn1D01pJ1dl;ofvvd`-7wQIfb5T1Ij zyY8gVEEw@EsmA1#GcYF`mxE?Ogd}v*U|eK0!aheB<1JrszuC<$``Hq3dVPNj+oXTx$RBzrxJwg7 z_(`e0@`9g%7{{GzH2RTGrUnl+-y&)ovR|~~oD<{y^${KTm2~{)M0n!;NyT@L=8@qU zA)oxz!*89<8-*pZ!z12AY>htB%)OE^?|w@v97R&;ZA#!I3$pVaLQ;bVx<9XxXCbg9 zA^EuD@ul@apqB?SpbEb%8{?;n5`hfeWuE8uQjVF^Jg$LCa$p(+|4mf5&RtFq`sb&c zMGO&C!7Gd5?`}E0IT0~kZ+KLzo&o4Pt#J3PceH&LMfxuJul1P^9#-Yb$(B4(K7G0& zxKXIVdC{y{FX?diBO=)Sss4{=PF-q8Zr>GSbg>a8$hGVGP~4TRkE-PDIsfYAGzUgK zh<6X({C8JV~Z z&WT4-*OUpQ-Pprq@S*0I^3qls&5!$)Z9|6yT`xYzH+Dsi20MFz69(`iI3x3_NpU`9 z{A?=`DL$Rkbv)C(B8R`gDssmGQ$EP02gTA@8Wp~)Io?h?#{FTf`iTLjcHADCuJC?S zBg6547|V@NMwp91Qte`SMKCmfeA}~r^6I#GHIFqFd99l!CjgdMaX=Jx*?wMXgiQrM z810uMXt4(_3+>x_&paP^l^}W(+LEtXnX!c%>EgtOgPwJ!F`@+f3fv7beYo|Qk023C zI^yjKcm{W4G@f)LUohW&J;+0i3F|!+OBCJpU?YhvW}0m9d>tYkX7w7dw!G#|& zMQ0_-qH-&a4<-l_x)+nt(RY}lJD>VcZS6GzZZjn?#X?#@)+lglEN5YN&cfCB>kFC8 zqfk`?882gi|CHtp)E!XZaN_6Pwc^tS?4+R2cs6FOjUHl`4sczM&v^lZuhVPcQMIv4#k{T+(u9=Zx$#n)m^ssv!&~|}rB#SL)=MY<_1((IkMw?$w z(t=)3SA(l&$seCdB}4O-Dw%aGX}xhPC= ze8M<(8av;8XA_7nKTf1?32iz=R6JmeQE>@MNMzN^-oWloW%Xcv@|g z*x9s}Gx1F|q;`tt(9!P>Lb+HQ6Qt|T@`-+tUD5p=^QmK6DmMt?fRHfJq;{B|As9AC z^jPwGx?H+qo0~4BByhs+x3F;Q6;}leJ2hp@<*4gJ+&{#yh`wilS`wV95_-0K%5Lc& zl}_aS6}f-HqvodH%UUA}sNEuO&-w1=#OQHUMedQ19v2Mp(804hI+7~cx~%rlNu-5B z&n{pZw&Bi!s^hFlH>$7vFU4K~+NGrkvI6F5^?AQPHH)|Tv}PCSANFPf_uXUJ4ABHN z-X}F*KS^SiQ@P6BaH9f9Yt(M7h42Qi6RV&G?dUo37bc`8CE~oEvUp+=%h$~Vf;2_* zr6sgmz}e(G60?l6W(g6_4_qKGmW3D2!X*2nQj;)4THo>5KQdL@(mq|&K?paWW|J!W z%XLNmqD}4oDp0yRL9a{hiKq~e+7NYD>2j3b5}(D%802f>=c)C;d|lI0`0Pg%c|^-7+ZBgqPP241&QFm`|Q1Xp7X4a zI{MZ#Jgb&e(g(jzHgN|cZSDzNii0C|FpW!7W)h16zzP|#^;W_Mlfq8}9A%%MUa^}V zDCpv^mp=%%9bpxi$CezuqkAso7yCreezgLWDnr#j7`aNG+!F; zeRckVjF6m}X9sv~g^gsBj7|PMd5c3`M1E9umALWm2_+beWhbn z+xI)?J>l3ktKO=tnjdlAQb-po1!7bnnl50O-&l!#Cay(R0V|W1tI2H-zYxbbH^dO=fx8l0}r&sPb_DXeM zJ4xEcPp;HzzVl_241v}lCZ8kvRtSY1OE)UqwemGgMXf#$PYgkF7xN#ri0Q6s-P-ET zSQAhX*p1wMW6L3s6{&arar*h7ycOm1S7?gidB&HcPw}lk55FAiw7D5ZxXwJZE!sA~ zY8qi3Y%uB?ViNNq%)our=Ww5<(C>$ugmm|zQc;d=mzmD$n)54;-V2Af3HE3!_|kFA zM7P@Xdy1Op)vIUH<@0T4u^*ncXn(nRNR932RJntBRZ*hKR0)u>nKCtv7Vc5>8Q^bv zXJ1fX9#V8-^fL|>@-!491n^faX~nk5O%%xS^yMAdO*`9yGgj)y&S?{U8pn$6YfM5P zmS6pq!pw{~G4UN_(EXl5Jihyeayt~rBC+SF#!gei7zNCKmBVl0P)=1%;=`7=?H57+nhYR;duf57g-1jzjV*b%GYD_M{I0GKX zNwht!E$&WOoICayTwgcqF_4-RAm`&(+$BrNf$c-#;az-W$|h81wXcx%tnl2LHm0GG zY;I>xW3P*M)5j0Ro#;o@EXvj6dQA*?34XtrD>SY_aoWZA?V@$Ho;$2>lMx zDQqrZVyE-QPtcoPSIc1{514lM!|)vaG8Rq3BIo|QcjJ2+{5~mA5VnUE8W3~G6#h6WrtH7=kl@9zse-JRvf?Je2=s$^L_%_K1EQ?=*BY1)Wt?opylLh| znIae*=A?wC#a4e`zaua4%b|vA5q^C2LF)PUOco9vDGSzZeq-;ZS@hb>z$wb&rkL_L z1=cWXa2raw7mf~894Fp6-6X{ym{J_>x|UtFvU}3I!W4X!ef8-&UxNlbU)s0yn(}yZ z6zZ#Gy{wf&dZ%ynr?d3QQeZ$Xb%^D+@uZCj_uD_hhi>{8^WN*y1SPcbez{!B{8V!v#O=USL*P7iv0Ov(y9a}j{w69ncg_nm=i4HBh-~U4DcB|pSc>R3e z2Kq#Ya0PQpH6j(Pa0Q|@{Xso{pd&_z!AZb6Sv zTjGVJT)OJ7TN@X&4{>+`opqOV`SJRNe9R*KpPUiSzcLKuen(w`F_=>>cJ-SZC~e;d z-a8Tux+#$U)Z}~9w>DE;bY#k*d56D7jtWO_)VDX1WC6>XDI7GyKDY)-Q53uD$fuRiz!C^=*Ssc zATn}|rgNh8cf;Ae$#Lshqe)4*a`P`wGljE~2>RC}4ZR9dKi17*xUa&29&A_k7ajL; zzDDM(8fJ(eD^FSP=zZ|EyWbtDZFfl?5-dvn$!iDP_S4-23K!SA^dy8iI^ToJM_y~T>f>&amzm0K4o*^k zyG^50Uh3|OQczvQ%$IBlYrgG}Bq=6%+3R(pl!M+*}E?HI>`j1vz$3MLDcy7GWnHLZ-BA@=Z&2Um;OvWfq6e6J@8 zyN#Z8n}Gn@0&iJ-9-}GHnBmW5;q_pQS@V?nWJGkA(pxLcEy=M8ZDF~Tzft&s4y(C5 z+Sk#>F_{_{ilxQUgE&ciuBC)@f zF(~?heHK(gj+J*@%oiH%FtZQyCd5d&;?-_rzWh~b^&bvtK1v$Olb_AiV1l=e04G{8 z(U#{ODn!0rrEk;OCXk#bha?-40uxS|j7 zQ_xv;))&>!-r5fJt=46Yz3ljp(}%4^nIZ}!Lia|Af-fa0#aUWoM7(}}g3;XlrrZ!M zX_&!N%7EuW7@SCnd#LV zt?w)&!-iE2kGecRPkkIKG??SmRyz}?e*EE<-5sfD-1V2Shu@QE82q}55?DI+5`QQO zJs5GcW4WMf8OW-AejY8A&2_#x9U^_<%a%PHHxL~UsC!z>X_x{DFBK{?-cd`_rr}B7T z#_!nkDlJW zO?zAJKA};H_m9F#poDFyWm+|AcI#(O;rmmK$>Xatqz_a8aV@D~HjUo>+0lLV6`Py? zilT0I;6@4AGRBk$IR}6N3vy90?(gz)nDY4XF3zx2q&3MK-5N=@=6(-{{O-S>Gvv5J z=-d|W3h1Ii7iPWYPB)!#^Gv6b5y|?UCvG#-aol0=%Jz`Z%!IufzpwcykQYU@|1(tz zV8K>Ha2hz|aJI5`h71LKE?1*92VJ?=|~>)r2RuBD*rXroHU#u3d`8bZ)+s{`b=eLl_3AtW7EqJKa{By))k) zPk(&NuXl`n%n*v~yTd-QQ5V~Z4NEiOSJy}ZYDt@3&=bnVwMQy#3p`V1_$?`fW1JM|lexKbRmC zTg;8!D3NV}k@@UsS8)80`1n1CTjqLg5OqGXn%Y4N`pka(OlyXTzR7JAZ2i&iZ5(%@ zxE!kn%?>BIcYMB4>v$qjH~f@u55eHG!}MZ8=HF*n z`ld%zs|Vz!N2&N`&7j62s?wv02x&>LIOlt=geVJ!&PWmsCxACUgT;WBn7Pu~VVard zNi__u?fF~RN!<#W@~+G90i}A#wS8yGVtuRQMCe_}U+WYW8ry z<5d}2E2ix3+R4cMY2PHlCNE$VB04FarR_v$^!FJd-+zGOIGxzXP9va3~jDxOB z+D*YAVGA}-a34SX_p?m>w%xRn)brZXvpF`F=Gui@OT26HWL*W+?Ox=kGvyNY>?D3O zcOrdC9c$K1u6?0<=;pU}`mFcRclKguP0q5&-bj%JaIR`?xCgssRrW?ZEKKz@eel$1 z+Df{#VRMVAUCdLUPn4PMu9NX;#V&24AIi)M?#B@tA4nD=frWC$eF;kF$TakahXUUVXErM!)wV6x9Ou?ny=ml#Cc7w%$&m3F9Q==i#^QYHBPEFG!*Ghz&r? zxe#r##N?H_wFAYa%m$#-aRQ71LcJWPMqd5?3SS!K-<`=!03nvA201ac`l+zo2yR#3 z(Olxn?gQo#*0!*nc8vat5hCttb%1&%x!=Z}TYQ&(xRxOSS-oXw1G&P1zT*p=ez`c} zrSiAhm2Wjg|!JoRpS3YC=wS(!JX~C8E(!0~+gxLEp)+BGDg4sYfy-6kZww zw2+p4&h!^72yXhH;6)()@vpZyZC18B@(oX)>6v2cJjPjTPh{pjt21V<6Jk)CJ6SC- zR-eEIBo9|wO^9QPQWw{Mx;x>&?oQzj9FcnchJr$BhTHHP>yjS%7WW0)Im>HnnbfF8 z*ZPjetQInWJKQsLgT--PNZ-ro+HkNz;1)(GiMytgaWhwH;JXr%tos`jBV=$X_u0gv zPNZY%>7IH+xJMrMR?TJDMzy~IQ~m%Y8fR?Q+Y=Xbvs z(mM2{Ox+MYs)~7z`2{jSNuj3>?pcX7e?O9syr)_g4nH@c=Z-Gh3N_D|E%nlRSrURU zbXso=JK+Lkz-NDb4wQM8ik!{y6et4M8#$G#8AI^R#l`Sr^e2!oeg~4y=B+SdL6i^+)#aa%dcMBo^ z;a(ptmjc9CH8OI6z3-?64S+A3E=d5yE34drxhBoRuh@l;ZzWXJSzeswx~v5OYf2@r z=_XI}V2v@6)#;@zP6fYU+!dUsQiW|-1?ge6KzE6KZ?`Ae+4Bb73IaApsV&we*27Kf zcjKXkvl4qDdV(pn`jQUAm`x=}t(1+I+X)(P@%^>lyr-Y-8WLF`{5uxk^`E@yF_)9U zJf~&glmq#3RoTLUzVm`peiaf45Sij~4DyXu(J?9KEOGFMZWbqmH93rx`>lCX&q~pG z+HK0I`mWsaY*L0`3Dajzla&ON7P1UOL@1-7P4(&YCmx>i7z_u#A+{C>RbMRIfNCPw zFZJvbrf$sB3Rczy<}%=#*e6~R)qeZk^F72BOK4RE?Mk)TEWR-Laof-MdO44*6t z`?R@>4q+;OVJL>uSXHH<8^^VkWV`1ZAYFk7H*Euf}aQob34@h5DuCZ2N z+Zb6@+PIzX6AW+kNMS55ufG_h;{XGG#GV*t`SO)sCZx~wf0x<|MD^7qQu9*B<J#XIH+) zU(a1=1L!joC35{PZy`vA;Z%#g3ch28u*LOv_`^*qM8z6%I~n!jkOrT7 zEc<5k(s&i!{(QRgsJC)`_87d5@u?R;4rjDhCk~QWy%OJx79< zji!(R7T&IyeMeA@mlgZJ;~f_M%09Jr%x@A6GraZ8r}xfNamZ+XP44J<)n+-@n*a$! zjg>U>PbIt+MS4fVTMRP#;4#?n%SXG?d@r9R`#3N|2)DE@sQ_s5t%@gtmmVM0{cujU zW>9FJkL!FT+C4a8@eS&NJ*Dc}jO9@B?AvhU*VE+7{4J*#k0t8d`g%?Vbe##~dY+_6 zrE-TSTyGBLyEi+b`1OxjB_=#jargnDRYj^_f(vKoE^0gJOk>l1er@zKqC-%PowW_> zA~q5LVp<~*9OfZ-crE$Z!_9qIWc6}tfFj|@OhnLrtTr2yO-oqDRGNF`4PF^YJxGCj zB9JF{hM4kaqFqr{Ojq1g*DJa7u(-=iZ$ziKwcJQ-35%(CPH6##4{vZK&IEqOIcSGe zhc`B#C+w7l|KWe6L2GC(nNi5*wjRG!B47pjcqpO8-p>|nKWYjyCr5U-1p?>R4ffDD;>&!`;e=pUCD*LCp*h}P@T>P%a@agmo%sZ$3F6I8r}lbRymw| zhHMY>L~~ZB0ywvV!h0zZNPhyJghv7u;GSD*7E0KBGliGnd_DP^QC<~tz+K2G zrH53=a2D@(Ol4SVK2Av(QTZckM9Sm(jxTJWmLS{DnqIUF-#L~i2}Vcslw5QU>7IIa zmIttPbA!UNPonS~=9>?jz}YsIz5604h}^h7hG%cZKY-AUvo#)aZ4-jsYnOg*mVIuV z8#MbFrK;}E3D73|IipIYri6vUN|0z+OlMH;x6a4tZ&)vl33VFKP=#YnTbrd>Y@YnbmyIn zy#-fiW8dm(x=078)78QJ3^lo!`Lx8Ap_C=$5{y*8X0nz*830S8(=W@Uel%_Z;D%Cj z0}a#Fj#ubFvD|3;r#pgaUQWkpOdMcT`v)*79UyS!uIUUNf(C4+P0W)Nq>`5p0m)Hwl1;N-{ao5lWqCj-lp z%VdG)UdpqkdepA6-DhkJ@Mn6uj3BCkR!mCub*A5NZT>YS{`%POY}FqUbpsGN-C69; zExc=r#7Aj6;&Z#4<97=+j^)kw*E@_`(7_0}t3X$c$Z%?jtRNUWW`74IKGb|?g}w!_ zWkwC=3FX(B29xd9%&U>d$^fE+JE9PL)aBe;RE1px8di?Tpt>-WS^WFfLD z)Zy2C%qLj7$FR`661wup@G>{i_x#-p3%sBm$V`sJ*%URnHdl^GPAIkTi;rYRRVNEP zbS%ICO;)9u{ooa#mSWa1Ta5P(xuHBiDOJNrRm^eB~ zt=IVS6mh#TKZna})mk%kI?fy%AWx~W9SZitG5gl2Gippggc#={opTh~QeWm;BQIW_ zTa^qi;~2G+uJcl~SDwBNk$X1%-dd0DLL)zO%Ov=Evj*PCwYVcSL2h342U(XOUrw3z z*|i=Cgl)6LP)kP0_m^{UR*q)GJoDXGoWI9YGnm`3cifVTcOotrFqrLpQbs($`g;)&IlV~O z!1?2lGaXC}()03~MIFA9vY!LIN`qWn1^==?AXDsl1h{Iq{oG%T$AGs32>1QP<&p{> z31hGkwu422*1Y0NzcmX;9(S<}?_5~IG2EB4;?{pqM&KiViQU|ci^eS`=ZrjCDO<;o zTDQgJz#-C8@$~yzbQGj!p6;$QGPTx1X`b!U5CVngnLHL1?L1Y-;ugBJoxxay)ATkOv$e4^c?tzi=uYev#X}QOa%6(yDCL+kidKTFjH*f zKubQ-0NKMOZUpk0!_W{f@hT(8~bPEo(yeYM+Oa!5>9=b?h}2XC?lF#c}K zkISa-&e#IH8mQ?#Uss+cLu;gN3VR<&3WMBySJr_)=hvhep1BWBS;%32V9oh@OSp4i z)N}YR$s~TSWu$6xk$@Xx*Mq4IZJCiHln3+ew_%Rkx4#K?-EV9$>z*Bq<}-cOd`>_r zKO960a2*RjSM2AnA4nu5=pw~EGJ--zL7i7`S3=Cus>%O-%I^9@!fq_ZBfo51 z6SZzkOHD2bfCmkc`*5K&?u)BUTKZLcXLv%FYw{%$EQ<*`=AL0VXow-bPRdKV-Z^6c z6;OlOHt+B-RWHuWp)_Gm^qoN1Gn~Z{X@Pecsk6qyxoPO=qWVHM05a3Aw1%q1_-OUY z)?w_*rVCVgXWkQZe9!BTK(@76@uTA>%Fyl{DT8`aW}Qq8AKEbmBvfR`K59pPHLba2 z$y|18v}3gp%R0{$@=MA+sG!y?H03OP@}h*fiaQ}eU=b#UT)cm6A{DbNh8(*}+w4}m z*g_J5E2?WU{{!C(XDu6UIVlY+1YW(9ny|BvbZ9897n9|Osn z^jr-*nJ{u6F*E%VSBmY?H7%i+kA4{_GxDb{%`5n41f_23-DEv;sKOhL(hli`FxYUw zt_U6}>kk>YCUvfsD$HnM1QO`x?j(ybI!CLZ;AAX+IP>2i=3g%JZpRYBVs#o$Uwz*b z989kDgGmlfagvoIn!5oAaLDDs6>z=`GU$)_zQdb@vL{|UPq?@Ha4GoY?6s2%liu~p zb>`2_LZ%50f=!fDqgfbpVZCC=bg-14WhFbTo6C3TLTY{>8C>T0;Y=TRM1AddH!I+G zm-eR+_Rnu%Pj0@jnbfts*-$IKJR~>(iX}M!kL4{&8B4h!Y9xVM<42FY_y;9|Pb9_3 zn1f+X?u~CqhaZ)1%K=rPgQ|32pD@R7aaZh?br(u_OFVyMi@R&fIbQA%=fuFV$zv|o zIMPhMoIThztB@kbbVz&IbdB?j;ddPTm$~}aA0c^h6XR{*__$Zur^CLjaw+F9LcyME zTHBS9P{F>tDSe{i-DTniRv*_UB;D3BMF_42q;A))?*raHRx!|Nd8UI`xQl3ph2uY4 zvD}*BniINpQZFt8HhF;i!{G!_2e9ddF2ZUL4dAXrXsW?KJlt zyF-DfsoHwO*%P!D%yHt{iL{&=Z)a5EJ|4k5y%n`O6aR)073tzn+b6^M|6ebF zm#s#vQi_`e-zz(DE`;^2ZNy2 z0PHH?2EgcPNt*25CSGolTVYdX8LE6wu-Miz z1CbuK3^{CP5?f_96L@%8Q+g|fwbP>92DILF^!`L3Nx<05Ai)Xk#5aGI0zV#>B+&dL zI{GaU^uL$dYBx=Y8q#%jTOe+ZQqCgjk&(Ffif$2#R;zF*FYK(fK)HX{9Kd^jLR* zaVLh0^y3`)wcB%vK!-ub!C*V|fR-Q}MmdP%DOv1?>@Ee|A6NZd@%dMC`q!}s8IH1K zwdURJh7x;KaO?0KbmqD^4<4~YFig*-rjm)b<@9#JGJ~E=!8p&1DLq-S&xXUDw{+)> z-}aI?c$8FJ&Lpq_I-l7k`-RWO>2Sbnn$KEPKJ6PfhCidhGNj)ssD4db1rMbW+!XxH z=xyb8^pp8uMoYmFCX8)I6A7Tflvj9&kf^{B*c7e#tG=f>^=k;Cx%(_Z0Cp&h-S{l;Q05vYJ(Kdh1y>0Mo` zep-@P_o4-5kq}n?QegU_Th?@S(3T&c$LV7>UhtGZL$G~OQKz(GM{)UZ9p$-BdWHQ} z!R*L|BBqJk&szTT#Gi2UpT8*^CtL_A*ikL5-@oT!nR)=QH@XtFg+(mslh)d2r3Bd5 z*!Nfke+80$$-m%f-E^8Ug~=XG0Grq{x6c_YQ+Q##IZY4tnICaNbm%r>dk{H%u5 zIvzFt(jrn1P}wDU`EJ|3ewIFA6?l9ia3Rs+{r0iWQSd#ifpcoj8w)lzSZ@g)TptlE zXi)#{hatQvT)aS7Fa`L!?-wbWQ@@HSwN5_gbHPo+JK3HNu3N+5VyV&Jd>g#^LG2CG zNwWVp$$(_jC#kXtAmQ!@#POl&9?F@vsZg~C{ZYvcU(f+(JzM)VDBm!i9X%@lDvdR2 z^~0t3%g*u~7p=(J{yNnMgYoA-`H=eAIs0lU%$u|hw#CUopn&G@ITQ@vc^NV&mwh6`7CrIhC_mA?|rqsi))94?L7JR1PqQK^a?RyJLMsr`;Nk;Goh~bg+jaX}I4rV)JJUkOxneGzQFFH2g^8 zbO^SZYUOF;_kzcE794qN8FYB@wrxo`7uoG#gEg?EQ`%(S7*z8JbzI{{lJa9=U=HJ$ zCi1?&_x|AJq+P(7Ny>?kSpP`e)-y4;A6-8Jg*O?MHr;xcV9VA{4mC58$mHPcUd;JhmXf=>I!X#qU6$h`wZ-}JwC3VE7uj}W zeNV6Ume#!4BxETSYNsR?wR)R^@A3c8Iq8vMX$lT2z4eMmAcA9A){kXy-MG>fZr+6Q zVyTh~Qt(R;RpPVFm`p#)9mn7{{Hb~W=ODOs?xygZ{=6-NP9vH4S^VHe3e*~Jue;PP zG{BJ5m`&m%9$-n7wbbI|k??xofGr)%S|T*ZvAAUV3wrI+NR$yWaWyL`T7cF_*xx|%#O!B@9UfZvW-heSJS*EEEPb~3iZ?of9DR8GkMnyVfTK)dK8e22_pRx z)owfG$FeOnK=x&W=hCCBmPujMZsy<)Jap*XNSpazU%>z0*y!7ht_Wbqt}1vLY@J*T zHX3B)O&xlL5s9kiLuqVc3yjps7*J8#BDWEdB1s#qRJ#R`?rDF-ONI_!si#wQAXTt! z6J;2((EH7_rT$4mJ>;$SJI_`8?Y$CPckb$nM;Y<9;rmRR`#VLXUZoDiAIc*{8z+)q>m#g<}qlR8=E3&y7=gS^+LGzvGcOOq?w&nZd!oB`dyb>6NtX`sq>#r)Mssnl z;|lz+(F8~P;ic3&dqFU|JwDaR;SXW#JF}j}wS^Xdl_QIGSTyzxUdnYpw0L1EXeVhhvgmb2luh>4nJzVFZYeUgA?PoJva+4|{+4Hg|9~w|(yZ?n z$C_dOZe)!2^ZQ2PIewgzpXG}D7fIdUruhrtpeWp&!43R z?0mDi%XGeA2aL2FX7TIKiK?-=@QMnroCi*G497A$CO9)_z358ad(k+z5ZEg_ zz^CSA%!e>cF>s<$e1kWv(NMe;L?XY}G@;@lGhp=V#ZY)v;h zmW?kx<*`miv&Jf;FOB_GfGF`NtX)P{9w!1wD{03SPOfHxo2OK?o< z5_2}|UnLilz9+~l%jG&+7ZH3{!$c%UP2^eH72-+hnxwA*=CO{DT?thuw5*rEbPDcS zU}nMFwj?R;#rM7o*yZDArXvDuhxRQVDYKMtO1vktX5W)HN(Z`v1@x9oJ4VHK9ACv} zG7ZzJ-lDG~`=YBoAQ2A{D1i+|FfwlW54TPFb=CMd7HvoxwP^tP4XP3)#_R=w&X{l9 zkRXLOe=oZ7_Y0Ly^jTX{Z;VcUNro zxpqe!HpMb#e$Cd~OW*%#wj@XRV1mPE{UODYT-P*icH#pCDyK}z7>lE_*?J`J5>T9C z?ooTTLvR;!sH zr*B4!AQ(5Cf&WAfBgyqnh1EDW6&RoP(No(u)XYr5)L)O;6urPHffNPTihf{lm!xZ(Ek_w86&l=7Px(PB|ot74har1 z#ebM%{G~k+Cn0iB|E>WHsnX&nu&-0YG`U{Y+f-Bkmxua2@NXn^n)9k$GWYBvEG=Kz z4W*Lbb>ge~Cnj2yRVz!lEy$U0lE|Ar&{I-{ODy>=O3)|Ld3T?`3r5Qf{s?|a>v$e@ z?`L9y8$A}$v44@Uw8&Wk=Oimb@gM=XM0YLrxX|WT?TZNq(0WKIGS5eAX9C;HK zY{h7YH=oE;zOYY}_yvl+&iGJ`{Lf7D-?bC$?*O@Rlo=drCjW{zQ!K9XWc)=(KI2#d z%y0Y;CepN;`1Bw2@D6CiCb0-|bZ3?|ju8^<%T*wBGl22NuSqKvthWi0PD8&5e3#`a zVPvDXW(rE}2I5;3|M=otWp21_k_&!rM-fr2 zuuUUn3tebF=^r-!{98ixzX$>$txHO+3K3!$WJ9gwfkN{61%=?5xK~t4z*|L{@~x5a zv|?sAfsvH9VW(o?nfJ){DxuHfOSJJoEZ$LadiAsD@_hooCoHgoW3OFVSt-MSqjwaN zYnb6YZ^x(=1_xf+s&@0E(z#Gf?4*^{Zd@$eG~AjIC}F8+6S{C!G;^i7quu)t<1v zEN^!@_MpI7SZGjeE+Gx|^HTF~@>qXJoU}5f=MdZ-;k#|0yjOZnK=+dQvEqS*Qi4{=BpA3-*j^CXnI-_=Ffy^T>75O>?rA}WT39>OBWPMCeYX~f>OObz<< zIEpwkmGMP88qhYBS<>6*q0B9ZnYzFAsmrD{EF|9ZHZcbaj|X=Z-q9-#78h@Cnljnl z-Kv$t`?M$d%^Yl@L~2ZzAqTmO{i__dla|HupXypdwp?Arl5695;uGQOEKFUfN1=OP zo3}sSn=Q4Un zJ7bh90mdvtJk{&VW4Q*t+IN5k(XK^>SV5s)^At0l#r zcV0{goOki4ui9O~4liO~y>~tEHP4U?@n38%EFs&z<6}3I`Ag(|?g@rWZ;2w+epIlN z%v*fr8Jp?%E^02?$YZN|we1-_CM!k0wg@i(sEi@NsFr&ULTXRUhJ1Uv5>HXW2w+Z= z^=bGqtQ!CfyV%)EkxT?FW$YLqF^0M^oxESOu^-PC9~>oOntVvwcYg6@5kZg1kCu`B zdx4@6_tVz$6%VMc=O!VU_2wc}=hG$i8{e#Y8pF*SR2whq_;mFY4J=yI3CPqPtw*^a z_hZN`dYvtAE~6+zqM~&B$+^P5`1C5wIji=~wG{tc z|235Dz2$UU)I4mSk@!`%LQd%^pE!D*_MYuX^IvJ6B7X_0;V?v;hx}tMKA*I2rAy#N zz7BK#_66snJbz4~+>+dz7k`n@6^IEQq&N%_dFg(C4dhXg2#b4ur~*E45F=I@y?J zPKif!m^DdE=z9VD=T#&OQ{l8rye-``%%&Xg1}81UexCozXpY5WqW@o%ZiqF1!*gEL z^@cp|3&yXD(;P;Lg=x4~MyByYDdC1b8y|)kL&*!53_`R@q6F0g)SZk5GL5fcmEp(1 z%yBgeFR0wj)ku9EV)p^u><^^-dOLMvpX7(FbsY^SE7azvqo$vz{ZWhYUy>F`BizcA zF(5X9hlOk=$7IfaIS{E(QdGN&;_f4n;37=e){QtE=k%{hUp-Myo6>b?9=NuJ-vbWv zvG3P1?Z%$&6NkxR?E5`CC^92H?Y%B z;gij=-{gF{cd8b^BC512*!v+3LQz;jb=Y#t**DhH6FQFLJQCyv+Mfh$2aWeZXcPI? ze!BK{7o#G-YcmFmZ<}fq?O10Gc-a-+!}LhK?e-U_xMepW=qNP>*~IaDCHOZ}3I31( z>4;mk?qZAcp!KW4_`!_I%nh8&yTXr!jbN9 zN4a6Jd5pi@)4+KzPHbaRqq*L*7gQ)^iDe_*Qk*?AJUKrxj1Q)Q8+vC+_wNQTk~m@a zYwH`v)w~Kw?gOF&v`HDrdvUBt={a-Bo{NkU?|?P|!QTxbms(0kEdvK4p%~WVx*zqI zOe_guuaoYThWI#Yt_L)twQwpqfGrRpB*wv*a`F@~{iP%5bv7L=#P|H?i zY)^pM`GswolNqNcXEQAxUW|!jzp3mh%o^SX%G9&{HGJI8hHNhWqHyU=jD`BdOj=3s zGzXVJE@tjlLoemfEI^p$&i&40MWX7RSuF&53_0C$^qg!|{%`ufNS0RXm30-j#XKF? zE(NJYx8q<^{6rC&>K9BbCO@p`h^bv0dSdsT(r2;NZLqza>tU%Hc%De{o{Wd1=;6Lf z?dcZ}Jhd871S2s3ayiG0DBs?FAt=)7@QZPnCgz`6JQ5w|uDWPwYn0s77vrMtlxCNk31+=C zSV@SHpix|_-f7oVe26}gV$8kiCCS`kPXkLOSg0dAZ6w&cK-@>koWJkHRAOi!H&}ZO z{g%w9n$L8*{~|Wp=FNxwbPC3J4wSRS!@aXvQt@eV2Rcd*DZaOD1VE04_oS%<=_oVO zq5$DY%eKdU{buBN*9|?T_L6qspV!yLEbzY@ABp28-sLLZAE5Yul)ZIWl<&7Lu7H3_ z3DPYJ64G5mgQS3n5>nD3-7|m)BMd1mF`&}j-6c76cMUZ(GYmug_QGb*Lq1bP^{g}6 zqb^x3TzSm5b4$syG>qdkn$c8k9SOl7h};WP4|krnjF3-`gkYOYbK`bqG~!rlWevD> z@v-9#tS_-%zp{BN4I9A}5G{Z|5#EW(InK5~zdP7J5+(Lud*kG1T7v2^I0(E~GWTo8 zxr^pPD{V0>DQu~UZA+;M=yUK>-W&16y2J&@N)_@sj_}0MhH){&cgaNHuW>L#Ia5=t z*^l-FP(C}?yv!CWW-2H`#5TWGiDbEePD`&pzFX{STudK#LFJHXI&7T+D%$sBfjwbi zg@puj-kFhs8{!9SOe_?T!CpU+5*M?fA9pQE)*8uK=`+#Fpqm*JWxfOJq=KlURT7Cf zlxIm>irtx6YvN*zw6 ze!hHM+ZnI^9rUry$D9+2*=#zyb?#pe z1udS=n@D5)c8Vg&wly1X$x?kzi6rRiWX$9Ap@%ddiCo;g8;=acnugko(Y_fmK6zrS z$PbWCGu4ZdyOw5H+MCIbF}M)%1LMA6vE!T7?UpQg#y_h9LgW(rkk3@Jr=)iK41|47;>1&;E)V>-ud!=8~WKxB=E})=Q?u! zHUpv7auI3EW;-nrj9w18d1Qr8brU;mjp@@PgC-~8Y7>;K>bo(%WZ zNq~1;XXWX9Qv+Z|!C4psvGQEeozK1Pv}^{K*gx6UY`xVU+S*zd=9HEM&(pcOIZLXL zbQ(@i1{Jf5#teCjYKIjg`22g;mh6*<$3xS_yR1a-+M?U?V1JLibiO?7U&Z)tVFJL4 zciI&qQ{XVPaVU?6=rg|c0{3|uO62_{8vQ-*i*Q=g!B3K(m&gcsiqv+FJ&*ZyRV#}N zLNaCP?ykauBp`Zwj2)uW);DY3G%Q|`ObM1&wocx5l&S2?;xr`DU(;d2ICEbGoT|DR zUHkaPaqIk`@Rb8*uu{4iTMV@`awmQ-71a9< zutmVJDVPGqaLdK~2^YKkg~9a@oF||8JX8q$h`c}iFU?w!ri(Ci?~Q{+`Jp&3l2q`$ zKOz#tu@|Xvr&s?1U4v#!#LpjX_1ZRBHy7!hjBTOX7MRDOmt!)C#EVSQ5#8z36(VQf zHigQlp9gkKi3X)#FAXZ7vKcx)}p9N0J^MT4QH*5*o$%X(~wS^3+j-PH2|#kg&TB zO!ycDesJwQ8DFM2S8f0M<8x6JDL(VY(HL|wpQFn3^w-NFG@FmCqmV~^*l-Gbij;(pZ7k}Xd=WtV2+Cz z##{OiNM{jt@d&Ab%iIDrUY}m5167gAVg9xe?VkBs6y28XV32y?mZN3FP9Y@qgUBaF z?UE`MEp0alU4Hb&2c9(V(6eqPl_G7U%M{zxD~eSgC<9}C^V)4ewyKyjzr-OF zg%`GYtp5J@=aj+c>zKToej~kJslykrnfNPR7%^YvtVt~o;Bb^6&d3C(K_k^_h%mst zMyh|kLO^S&&Yl7d>b2Vh6m&EJZpLi@XQnpJooEwiTn zAj1?{`yrF7EBcm_Ti!jD*6?z~(3(ii2pjB0+|9&y1*h(nwv^ok?tx(?TnGdbC8mIi zWK-{q)hyc__+Rkdwf8~SObU2^6TVW3_j2S68e?QoTX@UWv;GKuM|`jC{tB@!PWeW< zm1hOpE`vcXlEV?;So^2gLhG(fR4t&Ao_=plRbqVPpg^mW8Q!Q%g5MpVF6tgqrYVE|L_awHv*Ft_@(u$gTHWV! z1a7RTn)J^-LKX4h3tF5+OYIv9-;T6tfEQIW=iT>jhBlEHIcxcwb`BT;BLzt5qTbD9 z{1jXChM+FLQPFMDV|nMJ=dvHM&fdRi%>P3*SEfulk{KW(S%d7AuI~=L?wxf;(TY{A zGbLVMkVKOi$9Z_eF;x350HG_xaI=$#ecmF>ytv`}zqY;*!^7)yvDf5wY`sH=DHf*| zQsdy@PyU2w>Yb2(mDjx&dgVE}Vf^dm`KtRYw=(p2Cj%5^W)Xcf!4npN5nhHyc7tsU zxRjp9I^DCiISK?~ygZAUP%oOZxB;ice;QSUhQsBsKI6;ip>TK-Fmw_2OUgZ`fDz!e z_v1sQ&#BlVd+*XBtl@ti5cu!%^L{yw;P$dc^f34u(T*yY-M75kCSrA?>LLoQEP3z# z0k4H_j>!G(GuX31ua7@xfcBJ0R)dn|FzMvHOD2mAbGlPLBC|5Sh173U%V2uH%gYQ8 zIV;I?=Z*>^m85f*8lEXHO3_bWmKZPD>CJbD>ih9nxlloa8vEL%+sU~Fxogx|v{P-% zM4(VIVM`z2cscP>K*GVnLyDku-0R0wjXqwxd;t#2-Y)95$^DgG0^M$dLYFZs+tM+= zq|B8LG(?t5ZH1xB%^UY?gFpO@=4J|eo+*3l`l;Lw~RUoT@Fg)bZ{Wb(>W)>NA_^zfi!qF0d9w%l!dNsO0?(KCIG z*V4gHW7C*p_5)UW{er*qF&kU@ZSm~xce+i|sdpNAT9w9~OUVZGUDbzW#J0IBB3|d7 zjDp94XBgv)LD!TUjrQ~DzK7N`F}Dvn_lPr!r2qjL=r&qdjx zt6d(i&w$a;o4?W@{GQz>y!1TPwTHS*)jBw%7C;7+Llf;E0m+8Rg^mjn*1l)$)WLuZ zmm^?0uIBbOao^9Gz2G1e45LO%=A%pD_?=^_H|1Kf?`)O&yUPMs_juMszxRZY1m@KLEH}e? zf&=4ubFKbs$ccI6`VtuBSmPvRaf!~#KB?~*g$fCm_b@(`TsrxNxp*@HbDdsjslOtzD&ZFn2!K=SHs08)<<~QfL33nz-=Jj2meyF z#qjAicszHdBynTtBy)c2s$8!9F^B<`h`&6+b>6;aZU#VPlTq(~!{vBl$!-=Js?;lL758$ohju}+5y;U*MsAI%QtwQl|Jm^7iOcB=2Fu8g}aq9UwJMD zTl5V_K_VnG73ajKZUX057xi-XYA|B)m&|^nhxw1gn%-X()qOR;**=K>1tOF98&xex z3KEEWy|?M(xZrF@v}UK}5vYGY)7e9Pv|^O7nl$|6s~Pn3kO(*=XXOnEx^4x`Q{+P6 z5&vuK4Tgq*`onnKD_84i0{)cdkdm#}BEoozf->YUJ~Q3XCuxpv}JUbj?KSC_rXzRh#jEY0lGl+QC zoMW%Ro(^@N(gOg8emmF#O|&57J0PgxU~>@??K{G&!uB_KbFTT%ah`mgi)+20rmYA7 zRnQadutw%=$T;(!7RDLlgg)8L524YOH%Bqfzk9yQM2g-Ed~zV2RuW=gIjHZ>Kz6gf zl-!te3UmxqQtP@b33t1k4@D;)04`npb|Ulho}@xo~PQU zUhAM+l}`$yny;iFcwce3WB)5j0{@okH*(vz39Yy)>zh{LTOG zwi*8pGDR#{G-sv1z@v1$m_3j;t;VE}@uJqbBo%M346!&-aPP6$dgZ5<++cct+A+MD zY^KFbgL)BcH!FV+Zgk!G&6B4C>oIu1qHrN8jd<#44Lx&4G~TXgnNm$4p@sSs)$fl4 zuQ5{Vixf#T0%hR#5aXt|F34i`Cju=24KMU39+~h!fTc7lwUcV79p5p~^pkC2dcQn9 z%uqMn_v~sUJpUa40K)IUy9tIRrK9VE=mNaeynobq^3(*Vu4t-c{}s8vd1y1z8kM1q z*{^K1#%}yOTFa1i`&!CV4t{L)^`Xyci%+OKb_B#IA94x7S$$f~U#iU0 zn>2C2cT^h;UHz)@;p4LVelW@;yV36p4VBdUVZq7f`ltcRNJ1z_Sk+HuC(;yo z`rTXFo7ErWL5w%EcLK+==61^@BE7jFX!s=$5E;ExPhc0ZR49>>Jqj<0M9ki`__~sf{i4tJucl=zQnhmy1Gc;4rpJcA^OD zTTssn*U5NLz>BHc*ua0`WdHv!oHXH3K6m~U*KDgjVD68<;NV2mIKK?mGuJ1(8{?+& zzqiJ+>KMVW*v1oZ9g)!tI4tLO3b#|~>D<5^WoFBuV7))X!okGiEST_YUbu z(yJCnC>vM)BBET6g`G!;fU81IMPC^8O8Z0^R3fqesZFE?ULS~KEviK|M@warRjzHE zsuen}rO4_525!>i;ZTX^;R!GaX@KZ>n((P&RD&cuF-bq+uVyUv;{Jh?gL-!i5394V zPv_CAf5GH)ihZP_1YS^cdFwlgbB3t<&vcktRK-Jn^F$3k*nt-WcaWKl^IZA_Pz3WH zmaCv-?|?G){{UrhMMk~#5P`y)%C2;IYx$L=mJtc;Bd&+3NNUng`3Xyt7zRe9-uVZn z4m|&YD9i0O@jrWrWC3I)(zsb}+E~kUFYdzI=!AMz%r%=kejN^nQj4Z80?{kXSr7$o z#2U14BzwjB8TmEb+v!eQR#aZ7wyFLb73w|sj_;ZT5N`%{Z;1X_Z;R@*RUx>@L@{Sb zoQV@X*aNoHajWqi(azYJ&SISTcC9pU-BLvOD~rGF;#+exVy@>y(WM zYU1-wxA?+M02|73QZJv~Me3z51JxS+ zTy4B=?KUr~E8R*YX6v5wYvPaxgt&h=zjs~TUA1}tSFL%E?2NbEx4fUHRImwRc6;C! z(W%@7ZeF!Q(P4ooMtYaeq`3SOPcxs8-XB1oEcoF=09TSa30xMaMFpzyq79akH%eyl z-{y~DF(fpphQWfnpHcelSy`7nioMzTM@hN6#`%#K0w7^OSpid!2Amech|NUdG(eD! ziLg*oA&cxo4h9jMR)6fUaG=OT;sxepI-B}V{zK^ zWy60$IvzIZ{{RSlSpUk)C%)we&94LOC7Wf zH5p26l#Y62!u{0u%l6-Z2gEiI#nLkn#2AB5S>l@UPEG=4&q$C5dp@JeUP`c%>fC8Y z1$$*z%Vh=k^L+;J^M$WpeadXWV@L*o^ZPSgq0>gSiIX(XK0gIbL#L=T+dYlGh4U;6 zAh9*w>DS+T9IuI-c%&vTE0GThJF=Hw;2bRL9~1v^mhc8yt-1XwLL?k@momOAKVn{M zNh^G`d%Omp@BDSoZ?_>5iN1Atj6U8fuwR~%y8YJDTGKoRYQ6krRdb9$9D>dtugCun z##jH&FBbgoLbw$@vvf9ix&=6sr9)Emg=G+LB#Y;GO`!dUx#@^pZQvC>GEX3#O=s1F z>u&cP#d#itT~X8diXerP`InGOv{>8NjljvEPsw847B_dRQo=jn2H%jjtp<`K^~MDg>1e3X4$tLO++Me#3<=7dye5Oy$X?fLC^GZfDfz zu}^Pe98qY`aee77-o8bdO#3K9U(mTgDy%?KWcNb$$n9)c>cs?hfd1FYhiZ*w7Q}JJ zSGi}6E_HA?J}Cr#Ga-12e&v8E9P&Rcy*y$>TOo+|Pim}gXQ>gKt(Wu-|AX(%zyCY? zMtAJ%&?rM9u{ia%iFo{-RajOrG2CBunt0D#srD%a_q9y)6xH0Z%4?I1!rz4Q3Pc#* zm@W5)DfpYRp2{H7wMd?7(nqC~!$o2K3-S%b5CWR*geM1}CC)Vjq~uTe)X&ejDV4nn zU)lj?P7V3~T(T+k>U>BoM!{~@U+q=1tmsa*#73~L_V|9q;?ZFH2e7eLW-6ly`l<)k z=o#AkgAsgkb&P%uB&0%66IUO;!Y4He7SgFZY|FYGJUP`5c=finq`nx4*OouzVW<_k z8eomOvPQ1o1~dW}r-zG6=Kh9+Isk(7EZPyUyg!I%Bh5E;V8PToCsJw8XbpMme5m#Xfn4G)vvR!Jg`PDdD8!N^?>ztUVc?^UtiBngARu?5EjtXH9@< zK77)wHOV8lQ1Vc>}5A{<7MR6lwSZv3@B;4$KQqGZ=hKi;AG$&MOLY#zqv* zEnoJltrk>c@ZEFifS~cA=mWsOXz$8t^%@#2AaZ;8KG(^Dj)BqacJRXM0n;~4A=&Md zO1(#$@M+p&*>VwJByD3PEL{v{72ptjtLu0a(5E1m|2G{cC!G5cW>r)7gARmxuTwMz zK@E)kku?2ghTA}HN^IdgQT1PRA#fMo7iaS9ZGdG-!FmSjyS0NVNO16MLLjty<`?*xXVbIx zmyQ8iTX*f^b#Zn5J)(n$K}PRBy~(|{!x)-06BmDPjF!1`y)miWRVKt;Um7-m5ffR# zt%t7V!FWT~8dAgg1nU=W37&O7U_YQHkCEP5gB+|Zw(%;RGp`71vJPcDljc`$$%kTV zC5wS`A5se&|BB@lJ{)|P`e{}Vr$J=t&^h(Xx%`c|y9G8?giGL-JU?y4WczYkPiE|f zOsT5o5*5si(31X=U~NZ*Wti&T+|TgukJ2oZW+Xyddy`{PP>+<%ew8+(l*TR=MoPD1 z^%NB8Bfz+dt(bPN+xx|cAbtw>Gqc+&?T%qgPLc4wzzaHa?b-^EM$a<>VX-|>L0Z*f zI*vHTSse(vSV2dOT1cbvL)TNH8ND(F;B1|?T&@d`VbsBqXciokdMW8wA|$iI(ij z3pNtq{z)r}Omhpg@+Fum6OEC-Vk*+yuz4w-=Y7UZPaI2DpG4uG3{jHs4@A+ON1qs2-~38G0kJ0mQ6}QV~yn zwAR@5Us4zPKF=Il7kJoA0Ua&RznS|OZrMq2avJxeSU;fFuY~X#>b0@#&Lh570(my~ z@0M%-o+M-LvAvR1J21af%MVfUR!di)+gc;BBMuFjkX(iF0^q}A$DUbSdGTm1%jY3% z9+m*AVZJ4@w)~G+LPEzF7!A2jkr=16EpF>B0Hrx0e6)lZLEkI2SC5L#hul4|mhzc)X58eL{ zF91?cHyM+XC@Elbv$`q6D9_vXF8k{mJ0&@17fUZn)v>!p12(^7t34++*?s8;G5!@q zL!7=$me!wf&Rkn9dBZw^lICJx4?Tz31z@i5oC<&MH-^ff)>uqzmIqJgT4(@_WH1_{ zLg~*}1k4do&I`9_cr@(myafyvijlR3pzoX<){o!BW2x0-&DyhkYO>P`Heqw-LQ6R* zmR7^|hp=meE0NQw(o7<{JHI9T@qWVKc znL2p~!46hg+{y-T6`q1!M59o21ui!4PR9~`SQr&9b$eIS(kuP9agWWo4hCbIU2JLv z@2P9eN080bp9JpdMCS}Ft&l((;@25mddvwYY7`Uordr-ZeWZH0pByyHfFIBg@Iq-b zORv@UPjfo9j`5>@4-WV{Vh)G)R~oBQhZ{mU`WEFg{YLp(rvwd`9bo+o?|eWuU?{Y2 zY8Q`{?wS9EPf%nixgTh$;OpMoYxNLMM4Rx-C%uZsJ;^~rE7(#=n6X&gmyXQ15VZei zyxm@<99fxp|3#2o2dpaB_(IWZ{4eIXkjz+oj1Hc*|q^ae%;A??tl7W9j#Rz3Z@Oc z_;VzBb8!yphC=rYL;{9B%r!8wt-~L`^11p+n8!Mu36Ll{N1x+dU0vdN*AFv+-j+{= zAFYhd7B}TdA=aiNpSjUmM2ZpZj~{LXqCtHkZT5KJj}TV9;VvE50mYc zx6}Iha^OP9-fG##YG|3xzh@RYtuolG-TfL0=6WmyA$Y|Nhx10`TZakl# z7pYt70YPq27X-lR8{&0-OzRIdkzuRb^)`uxT>(UnmeVXA$qt1VU(mq@n8E#;aC*UU zz~2*>f3|3?rMGIWUF^AuTPrJZB(`gG3cyHx4j4bQMqVROHIYc_ z=5}|HWP~q<0zs=D5WG`b3p*8J4KS@e1!6ukVy??EAc@|?xXMG3%Gqo@5xjtA;9l-6 zio3-)f$V=;S9y{Q?%x|Rg8q9I^i z^g)xZc4EFQd<-YTFUF|oVQ8mmp==!jFC26sXtVW}t=IGkLa~eY5HAHi%>o=HJ|pLy zO=wR7JPID{IDN#r6R)Ly?l@hPUE=~BZe!j@!(hYbgtfV*D}f4~GTxg}!UGXl>dDaC;3`WKD}8C|C2rP3QZ7 zDyh3ZS=vT_1@}WE^w~P&=j9os9i|z5ls=gW^yIFj%v_ed(5$_YBE0pYm~7^RRkP9G zb{bkO1|wSi868?jC1-BPR_+UX18lVF2Wo6Z<^z`eyDz2YTXt6VBP)@Q@to>T0o9+; z7w3NcQh8eclWrgMAjm%Be5KK8(SOlac;F%>#1rF%w5DHnoS!Xay!ykkyePe@RpZ1- z*2D6zj`=R8d4K`Q12-k8K7M+nycR#AQ7le!8bp)EyHL?~#d5x&peb!W-q|Hfmpx5Q z?%66`jlyBf$>y|#PE=lWgFR|2Kq_3(jBGWPg~|VAxFKbOI#ruKCpUwysGC9RY56+& zLnT{`AHT^~F5R?QgMpW`7XC)XvvqMU-Vs9rjB;0KWN&S1i$8az%F-1MFPDAEb?0)K zDo-UF?;dA~Hwa=)9@z~JfyE=%Bya9T0Q7Cag%66*=xWnwR9BI?Yw=}wvD2)5!ge=c zK)p}gfrfP8jKSI(sm_YFH=BsVuy}?nsb!PVVJ6{#S~2fd<(g7)#(;UvJBHSVZ-lPG z+}2!U`Ok6(j|!JIb@Vt>2=YmMVlV0#M9elKZwa zm&;9Q)4IrmJFADYx#A>%uXHM4?q+_q*YR6G^!dax_fEEBNyY6YIv#kf=(Yl4l-{VS z+;7BGE11GqMw+*kKf5d@OsAE3w4BQ#m(Pf+K0DPnUgusHBWOQ5S+=%(wuH+gn;La` z_tFD_Ek`h_k516i0mlHJY0u^ATO0JtE|tLY1f~a|9iV?h7St~Cr3=e zL~rO9n;@+d%@*i)O0@`b+IhlTbY?ARRkzTeS9Wwx@t?rP2yghR61C^<_Nd$Uy#-r{ zQ3dM*ztZ`laf%p=>LF<7JYkPe?&&|2zIW>tKA~CLS2l3j&u``o#(X-mkJ_2aqKz;= z)ZcWroD8-wm9J&Y;8}i-us^Hn->M(-Nb`-caChEHOlm$)eG;9gW{9Mzj&WTWzi2XB z559XjTHAyEGwVN5T?6pWXzi7L?Damr3@&Xk7JXNFyl6NXjD7`hSck#x(!ST# z?9sxRS=K)?piuZ7r9WLNAg0X`fVp5xMghj-r1 zH2iqI7!aT@0tNW=@;e4pU7PgQS6&nO?zewNFJ#X{6=UzN3ckH@M^pnGZ^5^asp;t1 z$0t2^Uw|*7`$k~H1mPs zjoK*8qx+c94!8YQz9mm*zZtwa0f5hBi|ca3e~tGbdKTyN@q>WNrk#v>iw{l)RoB#e zTeCd}t9VeC19(p?Rf-J)3v013y7I6l84yv~NM}AdC)UQl>1~rBOi;QX_+g6a12F!s z1#3~J9D&E|+#MbmWca+_NZm-MOuwK)6F0?ja!I`i%uvqX0w5~kg7O^^N8_7xrFQrQ zOZ_wBBE@xffF&jD>Cy_?%c?6YCB-`I+w`Ee;J2_dSIA*TvgYin16qrRLZ@z6Z}nRv z)D1)!gAU>?4wu~xm#kYuqYXh;H(BLt-ib9AS9e=*=^#*ZB;&(NKXDHB&Ob2ns0F{~ ziwJGT1GLx{JYuH_H(gHi{0~ir2={@$MM}K5L}S12$&xzYk1^mhB8WiBuh7ZEL_P;u z)aQScGSo6c=RFc#TYB^Trg?$gY7CKpQzE`|qgBzKa@|rbJyn!`z03R=vnDa6EV8@S zLt1z8d!2Dq__Vcp*}$uBd1d*XNo9`IdQ2_!)PDXX4hVd*opBz(=sc8oc(vA)3V_|v zu5O=CE`A&xLOTlh%`?{~x9Tpxt=5->No}#-z3Sq2PUy6DrgX0pnVd73hhM~GTAG&L zT-&l5bA8}na3hvL9`l>xKhXLDun&BgW~7&J(>zJ9k}Hw9g2f*$gMVL6oaBi%HMK~a zC5f_gs*Af(1&NW2C2iG%ctzn4729<~SCiVfcwY1(MkM#;DRAUIxhUYhc{jfJp`q~L zRsx>xhH25COh5QtSXh8rFqxJ>Wn6<$?>r_Y&OcIP>C)XdA`oasW%VAkN%R6~A3S(; zL+Md$Y%GPBNi)o=~ zsH)4UqGEaVHJd*wfxoJ>Jf6eErfNJ&^G)6l_UsEuKt&R$-O?$~Q}wk9(2gb?@1ejN zThmiW71WC)>#d3f9kMkN8{8p#&1os15&u$1M-$WWZ1fM}_4H_YE5QETMCqNt4)Phv zaGDezY@Ww7EGlowX6MIi6I6vmbwORjgzD?88OFYE9#7Ozg7Xk;)u0O&gvFS()NbY` z(z2&O+>XnYK2F2p-G@)UMc+62>&ZRb`o7&Ve;-KD@Bk?S_}{riWZxvnm2TWQAJ?G} zo!-1P%)IO*nNac_;L#qS`_oO$EbCX1pCVo@4oHa7>AcQRBIfO2uGjGukMIe{%_<)% zI$nGZK8qLxE9Z@VZ^;Hra}vZaGd7ugL$NgqibL}$7)z_`f>kfnZF8g45ZqL{j^}Jv zEkH;EEdQ(XL6<`1%h0wimO!l-z`??4pguaozE;!U9b$t|g%ujeZ2G?*BN6xxzRO?W z@wEgFGH5fn5*$1>OxgIZ$ggormYl@iLypPcb;(GdsL=U~eXe8Z$TM>Go;8}}yIyBb z-N?@b?sTdG4Gq6B>Kt36?B6*+?qu?{GP+0c`gg^tCXaX^t^hyuH&5pvgKyCz*7-QO zu?fQR@EcvDI_S%|l9PC)+V3)UTCd9q*e3)yNMmbHym%35k~x|o zfvT^m!3M(Uky!%K14PjsAMhBqa0j5>{DZJ!i?g(%$H(FJk_(`5skiTM3g9#Ymh1VS zBjw*-lV#_KE7ZTZU-0RTN*A4Bk*h)nF`Ctu@YX?4y~H+yuU0VpdB@haTgfve- zou)DA-oUg)CA<++r9|n}^+2_><13%S)-^8^X38mopuSL&vwc1E7#vVxZ*}K9`Oztgd{@G!-7KNK-L2_yuf_6Fz{1v_!3tBH zroHZ0V%#a(a|oSAp=v}Jy{zfL_f8_Zy!h!^EysQQaI1M8{CHJ0Yi<)a4Yf^&KAQh> zUZ(gH4}u~gTZ>`*eL)^BE%cgdORsi}%ALeg=E9N@_nZY;SHINf-d|J;edJ@8t@x69 zn!_Mg<+1*T48*F+s7UKkm3vHVqdDY~gT$Do=csyLF*&ag{N8B2scn;Lm)Guf?)E*4 zA;Z(+{wFznwO!DYX9=1FvKDqU!8kT_JgY8Cqc-@u=L5o`-+YLsySOf20PS{@JjNC# zT!J`=EDQkQ!ODsATGu{%CaPJ*k;GW5gV;9=`UmTYaS3qVKRX6WE0*`Yo1fH9-9+yE zrd3LA0M%d1@sksb!>_Rd*k4Q<9RK2+)LMw+a{OUl74*g;=3@b@p&$>-{Ch^kB;#>` ztJ>FHtFCJ;P@nc(SIm05iF<1N3}}OU`<6>i+%nr z;eDlhha%EpC|X8gQG)yOZ6v%n|ND`{jdc+=F>n+DCl;i|GR`*kJRJx?i!N0f&}!kx zZL`-yN-<%DUy~yGODU%7xI^UM1%Ah(c}4v2t1Bh&l>wni8!1K(H;gke5A(%9_~~Xc zW8|p$ljw;2Nmo^eqsdks9W9KYW@^K;45Y;s9a*rP|JW~KQcwz3)K9f_DsadeMav|# zOyF7n4>G>$(o2?ZYq#T}9bz&zbM>2JCgYrJV)W@j6Ap{LM4(LFNnQFP^q`m0rDL{4 zCxs7(SM0$|gqKRs34shFm|Mgdr!&Bdo=T8 zo1;fyBk!=+b9C}?da77q(1X*oWLz7*UWepk=eNe%g(=Y8m?to7f^*99d(r2vWHI*~ zRPbh2pEy1Oe%C$Cjz)7H?yR=Z69iExnU1e@M$r@z+%)Os1TM#cET{X001gTMxvCji z*6k53czCzrJP}pZU1@4J3n>HBpsE+Hj>peC`(Vq>wM}R&#)ZahdU=Re?^rbc1)J(H zRLTN2U3?@ZmGGw~iaCZUkW)V+i0wMqTP-S8{=EQB4g=QA?QMklZL3yu%6tUje>=qv zyr}){y~E|12zbALA9S?ZAED^^-HHxnTelMP;9}d4Ec|Nxr=eUjg+HHlnjbaHIxO!xPu5^5n3Y+F+=rLx-4M?h}UO+4%XfQh2P9ff)oqLGII>}a_ zzFQJNd_0u(mN_gzeAHjJ;KclDB4PJsv`uji=yeXTy6-qXMZ5!NBGj3qpzF%}=Lh%6 zKBcl_Z2wIcm~pFK;%GTD$&JSW$jN!d^(oRM6=7KpL-0Jv$P+dOMCjIp>lz5MEl=27 zucMEuU^+T~HX5|vn|!K9f`9N$Ud4ZTeNd%MwDaB~FD>sxr{6Ut@TBiaZh_`w*D**b z;XV^>Wpf0CBfl`M`GQp-Qmf_z*2L={qLIE-%5Lt0((`Oqw$m6uL(R_O&4~nq+U%4F zj={tGMnkty?@n~jRNt%#z-@Dm%z$kqg zXf%5Xy)e1#5D($4)%Y6d)dIsDF*l!^kY!ut3sT)>!G_kT>H8Sy;)+Mv5urjGrqz>v z?nbcHc~S@bmZC)TP~V)qgj+km@`pc$-+#$lZAx)2Znkg zbE(@SZ*{^o@)K0Djth!HnF}sv&{7g;sF)#*Rl7+!0fJfw0h9_AjTgS}l&J%iu zhQbJ{nN|3ra0iafbOrP;UZ1Pp)H;~6&*&Bpgs*M+N~UgJIuAd(Cs6^? zvwxAQIITMV)5Yn27F&Uy|GSX(Zy0^VY`M~XdUnvyL{FjVc%71_q{-}_(cfV@*iZzo zrpt3}f9|KQ=D>F<`;{d*fUggCUaMVm3a2HCtH1P$Gb)^VC~X0vVanQ7{jl^3slQY! z2Ua2sdMA5tnQO7Qw)JrIU7!9bmxld(;py(=ZLY58AXm5Db^W7!C`wZtoL@CczyYI%M+@;u1|4K?jJJrCft19Gb%^U$GP|l=aw@E za$bt8Rmx1y6sgaXBpcyhAZwDmj4LmDFhp5d2O~YuZXmGt%}(W<%_nPA9GOrHkIjSbu#b>kNBOJ!x5uLUP1~i z&SZzYg#L_+iuzCzOw%F+7?NPk7tWm1OW7?buA^_sB*c@X?Bkm&WY!Lsr^zn<;Qiyw}@`a|w;wW!+7nz_=Y& z{ah!JV?lOM<260S;Ixv{W*iD?;ZP1r=TB_DZ>+^B3_4#tALwMqT&K70 zE>SdaH1P7!YQDy~ycA&^4<{que6)Fuem4l@-&$zR^DA}5f2Fqp_rPBz&wRJN+^!L} zoGO8POLO}R)!v)Y5?nIq&(B1%pv%ea|JdXvtJWN_yPt-%3fL)7X6>ACAhM7*9Ut?- z5D>kO4RFXyLH<_ABqeHZDjET>Q%g*B`w0cMTrP{X*J_YAVkR-Y9X~iYHGmw%QF(8u)(4Wi zNwu!sWHk`q!U0kGowdomKaCQAyK0v^O)~-g`rs}y#bH7qQlrUyyh%Y>?_0sQN70f2 zS8@VczT5Y9=+X!0j%*Hg-hJz) zQXlcc7(2*ia*_pFy2$*pC7+Lk1@$^(M9#Z~*JP$4p%c?C6Hk_nE-15hD=IFSfm?98 zvZM&&tb>3lwSE3#W=uizi<+ie3#Rfh@BOEe^uGqUB4(i%ZtM%lJ2wKXOAhPJ+_Wcq zLS=NHt#JDF!awS=zL#KU>~OPFi2!dwQ# z$3b-=sedH=NA2*h5<-TPCGceJqXw|&_Zq4~?$&d^%(?HXb8%&b$F#w1Sh9BR?fdUJ z4|s~bkHZAb3uHX{?q7~Z|FI{ppQ)ZxOJkO|{B&c}CEeY+m1SUH3USfPe7mOL=Kig_ zp5oF@2cm=-jMw|7Tr8Rp!KsXYzF`rrI5%zN>e(lQ2+QUpb15;5cXR5WPzcju0nJ%k zdA=c|$v!3{KgiiyO5cK+1boo$?g=~^oON@CM?_;C#NG4jOVAC}{c3l_a>G)@xU+5W z`yfw?-&Nv^56Fa^K40pB4o~pFWLGU>m2~9lLo}%z1Uc*6C8boqhclDZ^ITetK8t+4 zD{Sj~5H^v{yf#g1jgoq)L4>IIZQZ@!FZ?wDlljQDVRpPRy#nAroQ%i}fZE2^3eB!; zyq=_;A{+R@JTi!n1OA*Cbw=kfwjqDyCt_=-%U|r8SG7gS^Q96f*h4>{zfIJ@xXK1V z(*MfO*D}NT@;E(0e-&&5_%o_tXxW@}P#w zj#=YvD2GXx%32JkQ^$1693=kr4_(a?zSoa|o(V7ADAg<2hfOAvOWPHaz;`(c$of_f z{Hyy)uw={(p+JIQ=cSp=7NoUQPREW6y{v6m%n>OB26n5C&f`^28>gc^|`w(%@A?r8j?OZ8aIax{&M#OUSpmw=(@mm;1ViwgRP z_;6uT87)T{vbdsBSAH22gimw#>x9T7$X8?Xg!ZDho~}+uCC>fQrLTU>%#hfK>+KKSGY@YTwK8(w$-zz+yJyOUbo%yF0#+do2_0@^GO-r}@N;zW+`^S*fuC5L5+< zLdO#Z&-$#|c#Pct=y)9(8@_qtYsL+IZ;B;?tUh`!m~r{0#Ww~kaqdYrm||8X(sJ~E zkDXy~FES?X+j;1yHsvnFf`lxBisw-~C1A8v^c%<6X!$qr2@`I_Y({(+bk|mW=x*dx zXR0{%UT+t3_?UD=_^O~1O{&LA;3r#Xnw=93z*?){rvDf7xzORyh+g-Yo^qpB`_sp7 zRsvc8=Q$c2KkVW)NkRqSO{{64Hl8;N#6~kbN&03|n)fKG8a@mZ`MD zqBsFsPh%j$uj(Ve$`5|VB8<^B{z26Y%-=znY{2jcJfBemkjEw%o z-y;+B+oP5Z zij*a?RLRs{e?3ldPHQnHqSsELp{py1{p;wv%Z88b0Rmi$s8_!ohe&J;aQyEK@cb`v zJ{!2_YMN(L7!%Jc&oBG}LWr+1OLwF5di~^=6(UTOR)E&G7!3vYg&|ISH6+b&p4YY&!jb5_606L&aX281kQEeq*p z+i6E8PDB^{=J+M|og(^z8*Jp$KV7ZzakA_F6Ta2mw+RKj?~UVySkV*G+Eb%4qxm>Y z#ykAvoAJuhN_GXb^s*_A&)=1>-v9V2fJV;t?17RtVE2vAj{i&UWu*B5u`( zhTX9`gEm^1A)?xRJ9#waRa)_w8@hlcV>sKKZVs)qSn0S_%cgP3zNQC5>!^Rv{n>@W zBmEJ4fisqy{5AZ&%q@lSb88c7$n#F&YPJUlEEL+vBm;7)qSXFAT=gO7r4UL>oTr?p z&dMoPpU%2Z=gn2Vmd?*B*#yPmyi#Pmi5^*2vUSO1rm7h1n;WaJ!`jsoww}oJrsCu- zBQa_BKDKrJVg|7yTICOHTXM*!0*;?}n$ zfzhRgbJxRo8m+rin4JDJ$Bh4ePQ~Cr@=NfCO6S>FdMC9*t;LnLCm*z5Kaw}#(vf&& z#P=X>PtkT%<&p05+%@TW2t%YB@|pg!`sByteEVHpgIKl*!QLM?lizH{qU*!tJ@Lej zt6vyfT802<%7eD!=-<;o*PoaFEWe2M-B1b+%<-=nrJI!Ycx~lSfc)7d{5!d)KXkOU zr*C$gshqup@qupRHx_k{F1&1|w+p+76R+RCP+Sgz z&OY|AC`-STbr^!=Rg7-l*&_|QzI07fP;QX-3HxQkGb{wirb{K3zdwU3KcvWRYXi-{ zcn+i>36ilOl}K<&?h5MBess?4SE1)eI$=YTcrC}!I~QvtDB>Brk=y1L^@&(w2dPO8YK|IcG&Rm{ANXSvDYFGFvs=1CU5)~%{yWyhLvgZ3bo`5kY$wXO^U2$dVXX>)FVA^*##UB5bkL7=~k+JihKAL~MGxx#klh0t0zPt%F$d;HmVp{5QhsiK`R#AaW_fbMq<3CgPRgKMjB#UqO1dGJm&UQW1%jltm zI1u$UH8tYY9tVKKBmYyy9QrD=E!IG*RYcM3nR7Gkk3Y0BDKbWo$Q$?>!zM zx%P&x|pFnbjbqyr1nb4?UzS|#ywVjPEz}%bW<1KD&F(ML?gy? z5s}a$(FK!=;qWV650;sx|B9P7%sBhuH=oKo9)O$Z*xXydYnnpbwz6FMBpto?ifJwN zUU)|kxM#=wE)so*`yvLp8r{?XOqI(@g-bh3l2lg>s0-NC6N{%B^=g-{9FE%M+|&m2 z$V1(}X!Wq_{T7X{?I$g;+c#lN=zK>mW0u&hk{AA3Ny8R*hD6Ja1@r^YUS(l5E!Rb; zr^fZIRQ8L2RC~_m4%EVNvfG~6?kDlDm2l~KJ={dB1(azqbWJ!wEH$G9Z~5W32!3oy5y9a9$ z+=Dxfy9D>f-QC^Yz3G0PbIy0(y>Gmq{ipXHW3M&Ws+v_b_sz?R{7%e2%GBsBCI$Fa zxib|Plev&ntxacxFO|C}pcG+Fs$0V|zd1F?K`T;Whh?)+25~u9{|< zu($_@9>VJtO=pr4T*Sox@X`@qGTj{R4jRgC10q7#tQ{`$7Ula7_T25xMe>vzDs!wB zJ%AI%v`5K%`FG6j3O}qKda~X}b_#^&oPXH;*y2Lh!d_&CG_otu0(LXFn^pGYwe00O zvbC){W&)i^ehvi%#RfqoR%qk=o;Yuxrs~#mz7rv!e{FBpgIxDpqz}#Mvubnv!?gaV zlxU&-JpAQqwIjl^5XiVIJY{p+)*Cdnr;b}#{LL{$F47B4buZJmE5x#kSe5e~7FBuJ%_`k^Ha!xy zAO}Z0`G;l8n2h*xPQZPkkcv^v(+9!COZ8-B1Yg6>d(qM%xfI0vZeH?l3hZWpZfx8< zLDfEejC!C7z?u@HKaL2!sKRJdg2w+}aC4U?_mB_ynA+(TU+;@Ub{9X}vQpZh~ixH_x zetcj513lSp(70f|1W+Z3?aD0`S=?8tEc|$&So#M=#^g@K;NaK~GDA$W#^V-qpgs3* znmh9WYu?N8?zls=o~UPsa0FyS`so_VD(uf%Q(p`8c&u7FEfVurYCgW7E*ANm48CAk z^C10%9tMC+>&-pk0p5i9p&?^R)3{+erK^8%ZadW#gvFHaSP64Bnh9{3@fh_i!g_}f zHolC72;4w_biDy@;u&1myNB7h{Z30+$}TdCh{}(D2dVfhveMY6QqeP}+<%73?XsAV z_P-FTFF6|%f=bgk8Q9e@wfV06Xoco3r4%7&cHf<*28BEo#_HCB6#eqJ${lP?P?4R$;8?iiNe87$u!Owe6g)F~*bnQA_swascV z0k&S*VAdI)Hm1q?W$Czj+vKH#j?Ec`4$2`ny#tWgkjBQP|IwC#zrDT; zC7TJ_^G4?nv#fsDMZ=?XD=pq-14>UpT;^9)O3oQITxL3YHJ`}Nf?l;^$H&5<9_r`e zR642^opRMiLjlKZ(k$axD+XGcN3DJtmr#d!TKZsL@6C66Qo?FX!Z}RX5(LStf)Qi8 zmIXfk#fSEsLBJRlcAp8o{Fn`?FEWP2x0Ygui)LC)!|9%V$l5nuRBON1&{-UJ2Alun zkLk-X_|@J8mJ=Fedh3exR`{YH9f*p`y0quiPUauwt3HThU(H87!DrMQ4kcNCwS3eu za(VOnv?%&GN1o_~Ty0b%^<@e-#oU90=jNQ0@AvG|rsCoTdfYiNf9!WmTyx|Wx17Fq zbx{f&0Xj@G(Sq4%7Zqa#s>9y#u|K=_Y$sV4#n%Ebni&|v$OhZ+T-B_r3KHfI1Vb!k zo9qR;Zfu|N#3f7S3;)?+Y*;A%m?R4mOKWc0Jpp{!SQT09EzQl_OTx>IUN=0%DUzhW z+?d;JNSDEpIzbs3%4c13ti4ZtitClKq@7%=CickJHqUL6Pl|koqv0jCP@^sEs<%Wx zeZAD7jD}NNKfi8&i%Lqx8v)vmjFH};aE}VNUX=(Wtld62xGuT7X-otOTmA3bdtm#v zq&^(0b^Sg2Ytzn}z9sh#mGqFXKr%zc0~lCa1F{;gbf(gsZqRdq#+UvMg4NLlT5v5p$iWQZ@^C z=^`)&$hh{a1*(Pu7i_BXSQ(UhjY34>8U=xf=v%c6#KG$y!q&qq6h3ii2NIq{pJEpp z1;ufHG2h=liTrKBC1{?u?572dc%TSffi{uqT2|B;!q|fr(r8zHfp+!Mfc&N;vEL2hnWGObb%4LaTZyzK>?acc{?xrUdN{8Qm1z5?IMq?bK$smoV%IpYFmSeR>=~?cPoJ7V( z%3zIocU;MrKbf81zRv4}{o(^`eq;}Eiqmw3z=)ro_GJTlJ$~LXR=enlgJTtnFua4&RwUgRcYk} z9?lInqxvrL;dQEwQC^UNtU9L}t@QXHR^1wVAw$P#Zw~ce6Ya_I+rPVzOe5fNEhe>) zV<)Sk?Lc9!RjExv^T&#%n;u0`O^*?}nRu_>Tj+o@Bd7cdKqicraC&D1ylLf`{llH` z-#u@Oa?NrG1seQ;%sM#D%SE<$lHi`WjcHb%HkrzlU^Pljz_5d#L*&o2&(kh6PD*`k z;Px9EpgpOk&g5zlbTfcK^nbzkyKZ;;-k(^*P|swuQr%2bm9OJVTdS zZj###6_?)_Vd~eJ&AN>_QrAb7tZ#J5^#=VJti^%lR(RB&SJVQXNweRIP6zdd9Z?}v z83^G1mY*~eaCuwosbX}ldEbPk+FQ3NdxP`h4eJv%$ZXmKS?qxwqjRWdyoGAaoV5}c zj>xsKKLRa5E+vld>-o}nh2QjlJqa;P8|0PS^mW1}{rh>ri+;0~R2ptnQAQ`*x{f9Dq`1s`oPY*RG4Ha+Z)EZ}QVJeA zMqdCA;vA;El*E>$1vq}wWw-HFm_*-R?Kp6UIvDz7$0CiV1s6!rvYW*Wap6hPJufasgOMofu5^@$?U>g=ca6YRdut^Ua^v8- zX!-WuW*80{oAA5&diLJ8pME4pWHxa0WX*yZ4rz8BHr#DCVo#*W_mT(}9*>~KxIyy9 z6~=gu(>nAbt~gU;MbWKw`)F_3_tH4qbiCAF>_GHMP9~&Xi~!b}nCwZREa;A2(TrcI zhG=5;Lztgvf1o1|$272GDp6xsNk0tBVjRY3^6zjel+A(C(vJJTnR^MFl^#FnqT!#b zCicY9TGN4wzanr>&NZ@`nD&-5w06Zjk6sL&3Prh`{6`L^j}nfJkhRyH4xcRwh=P52 z3XdJixA$8+fV!IXg~vj6cm{0pQz**v<>Ba+EqGg@J8^#L(Z}%)xNb9$n##SvPPIF9 z8q{Fb0lo|fWYfVVSC$brBcB3lU6`>;kjAlh);51&qs9VEcxj&r*lR(YToEL17m zMEc3|`_{6DX!d`)x6&sjtovX!q7#F@C%|wLD|fLY688&Hm2j0dqAxTI zCL|*&4Zm;(kvUs6k(2M;Z@|%oLpWSqp!t0+h)S_}3W-CMxpsL{PqrG79 zs1)WjKC?PT4ZRSdbD3q*^|L<-x=m_RJ7e4-)}MXA1FPe;k*O-3Y$6LHMClK_`_Q?{ z!T4hDnbr5&tFYYRP{X{7xB?@!uB7J>%p3W`{~+n!--8+{$a1@dkXnwjd#U7O9IqS34*zsZN5BoQI)#b%Mb^E9@B3Cmp2t{Uhv&?Gb{w5g zIHU+gEjOra3KZpB|L~RilJE8bj`!718S_;yh4asXL8g^Gz|o*3uLDF<##zW}W9>+c z`q1tM>jr4o1DZe`MA}d*=*~g&salQJkCjpIZ|A;36pE(pf{{@F|KEt?bgyY7vOu;5 z`={D4beso((Cb|Fto9HtLi&FDj-VulZ@Td%_|bC=j+LQ{CBhoM&L361s-+-(oxh87 z`4OEy$fTJ^Vx+FOBho9!_%J)|NIc1foeg$1!FS2AE5XKrbZq=a@==_J! zy+ps_+zIJ#r&cWX4#mZib48?-_R^fyXr{;@u0_4%wizNr8C$6~S?^ep5b)KR*xIhld1PabGpb}Rw@7_=@p1M;KCZ~VC`Tv7W zH?hngz5pBSSCLm*-Ml~HMWcu@+?$IA({o6E)v!@zG^>aw$7MhSiT8M5h9nn!F{FCV zO&y94pVl}=@w0YhX80B6Q%0e|j`2iAOQ8?q-PchYHM}4+d7oxOM>P;oa6z9}Gv?DC z>QM~v+dU8Z*{i12<^P=>Y2jTE#?l`%;;3vej25_>?u-~-EA9IN{Q8_O|3dA@wkeK6 zYIS@3U`5xgJLzjDr!T9YYUn4C@=ph}#>!H-4ac6)p3M~@*+7$!s>9;qQ_sBaF|LI@ z>+(h#)D*HMY(Q)_%VT!|{4TtJ9lUVyBllmBGh}S>J?PN_EJ1vsBf&XG0C>w)uQi{y zu|U4?EmnsUGcTE~?XBgPDxGqILQ)m34?lZ#vQ$<*Fe2?pMVG|?TmJr__{W0UJlEQH zwa?eg-{U+y2bK#hVfLg~JqD%!dDDvs@6TC{%{yOa4IvN3ySM}4V?ue;^=WZ6_=w2? zTpb3?|1V+mpTlc>5~ao(4k84BV8%o{=lILFEQ98i!KfTsxdXV~=IJ#kxmJNH=Bn!x zU*6+4OUYkrilZK2cUbZ zNZvm4G#5=|-N68i34HYArcNM1st5Y?gOqL}&<(to5F)CZFA)?cgk~`L9h{?iB{XZq%=UT#OTo3K~ z#qf9@zt9%vP_pFki;zjZlsAb+{t8Lfls&_J1B&|5FU1kAqU9lOm9!R=Z;A&bo?L1kYK-VfAoHqIscCT7Y>dcDrcu%_V-E2yKo?H zsw8LXjH@6A1BO6>--x`Uy^TZdZX`IO zP8NapM#rdij))M#ecSd&1;(>Vg7!NifT-KEGpt=s+syOLFyGeIyecV^W(PZ zcr~4m!>!OlCpD7DVwI`_VXe+V0 z!zEanaS>jyeClaCFIbf)eH8MU*Sn+KTQLqqCSzNNX+V}%zJTl*ORtbiB~tXgjj5^? z>-5bi41@T{Ex3(54q}r&=00dwDS~u_zaV%oP92|kPi2Wi&{WH8&cDktO(Scj;4ksykb5P?&Y-`sd4X*$}UqoB66 zO^4=^`z0}L&AFKgpXN5_8A^e}rDIxTgsi{fWyxiqyuo#7d?+Zun-^_tMohx39E!;hrb#w+E zl&7unPFZ+DERz1M1onlY-U=G1*7Nl*0cKkgzJ!F9#lTy6c)a}!shF1kAFJJ%LDI4!m_it#PkK|d&JnSrHWrDF-Df*s3Kyw+*5X37~@5@w}DQVpc9{RMo4t8GE6*Pk~2tz zIx620RW&c$0qqC>9c|m@9Wa*fPY(Gv;A?J{6gQ#Uy^EVDPB51JmtAB!DN+Hj-pJA| z#dxzj^hqqw@!@unXAlGCQSV%)Id`eie#d+aZrbb|i0E`k+qCU&oBYn9QTlYn3(s^B z@NG}XL)(4(_HFjZ_xUHjsc*P?1~Mx)%}`c3vqYJb$k{MZthG2{jec2*iQVVD8KEeYE_1F4JPly)tIIp)+FXMSt|jR`%T1T(0NxByMDUap?EL`=J~b zZAXHKG$?6wMjEmCq%_h9BSD2hzi!`Bij+n5Va(XuVhF2pO)5oEpWzWi{?a3dAX5+@GI{4H7nJD8Mya380GHX3g;u8Qyg z=fpogX-_rhjerRjS%ap3#v`pv#7c?nm&TIO&ojc+gMa(77NBb`q>Fw4_XK(IX?z7Y z5u@1{M!)oA_scz0xLXXae^x_`$jNX{Q%;D^;^tL+u9hO%yI;3}CLcVPkF@pOE#FYy z7*D?|v{6TDM}3*eC4@hQ!e?JekfGdAFHa&j+G zxZbHr`o$?t<1R=gxhn~TBvsg?tX{@@D7;(zHFKF7(V}*9E=|N*RRjJC012&b38$Th zqE8&vqAWabozotbs^h9Y5P+{y+aSW8LNb+=J}dA3d;zXxrYlF5jjuKAtTr?};dqTU zRyhzJyBnu*djD}6yZsI}Q$zEb^X}VQV))Rxi7!%Hf2qO0!FNqPW2&&)3|J4N04@#F zYuN^VW`12d4nV`*n)%`znooDS?2DP?(l$v*7R^&1zZiM)*VIz$NQk+bAB(xttW)lV zp>fyhEC`wD3j!jDT-6VsEjyUZ71;VT2(xRgS)Ii^TwUa?VLN=<5>K;RXuC1voF%-c zb@15dU&dV*X*y36&59j8)g-2U?SVfElsJ#C*jm=Q(N*cA4{Yj~=`3(7({!qgB$no3 zPOn$|(ca4A4r6uK_s&+eS1(OVmzK^& z9?#VWJePhvqJy^+-A<3e>lK<;-E}u^I%2{qB6V9ChkIEEXwUQhtGdqpwfD52>&JRM z(S4)|v%}HdD=h*fp!i2^#&EK9Q}aQN`s-lMI~~;+O+gyO2--o5$WB9LTtyO`VW)uH zX`cq4aAd?0_TErw)6T-MOeI`q!(GCL$j$Aly4)0uH z+#AVeAF)yDz{he4Z`KB&KgEYk@HO&s-JYIC@$wO*#uGy8V@2lsVpvm~*JU>A&-c)| z@Os}(RIyT%rh+Y^xy!WDX5qf~c-q|#RY0lVr_s)2-R_ojoMsq$qrwC7Bk%FtX25tO z^y8VC;*|{{P9sW1QaPiA7ej;?=#z~*hTptwEF#x?a1e>rh87rAu2quV61R$>D%j}o zYl(|kJL>_7w4sAQro`_lm}VUlkEL4B#_i~_673&d}J!!1M8DT-jqOv-ZKzgDr~qFv&r<4jj63e}yleC-=Cf7CG_Hd$WEELVG<7yn_xqZ>*VsmQl#l(w1AcVPwnvrY}DChqCT0maT zA=qfL%TGU8o-M@d0&7n$^xapT7@uo$enEB5x10*s=^TYZ`otuh!ab3<-K^-H?B#D! z-E-8nwq!QA_uRBh0B;G9Mj6dcj(yJ7jv3;oGTC`vR_lNKIHy$|4D86A{dPAno=t5f zjf7~16Q#LeU=G4!tfS(Y4fuRA=_L*7qbOa3t@n9L3`(;MM`09l;P_oT>xD??t8NuK zEFd9Ge7!WpK4HWasomUmEXRua{@#Dt#HJPS@bt<>A6}hl5!Cl9Xq!~}>Tw^5t7qMz z<$bWxS47y}g4vI>O{RfugcX||?#9N#mXyA&uCHzvWi4e>{f|~??ImCf@-Y#41}Nb~ z@WmKKR7_vg-zF-=*5J`%Hz9(@b|FzLJXbeWT5eJ=%!${mn&=bOdN7>v+bw?bpnSzQo*_5zMD%X<^=nQF3n zfgxtg)SGA#!-y5$Yn_QwN9y-)3rOIEK>Kdk1@ZP-??JaR<=*1{JYAh_C*N9>D|7{# zxPae&)JC-6Ic86PyZVL~SDrSn3=82Jk$F#KwXqMXaSu22Mk3R>O2AyRr8Gzy`s$zv zb|g{#p&T`8l^TuiUy$kZyPr!0QR$vF3&{n}1DPiaE51~1=bKJx%AmnKy(v8GdzRTON zmWn#b{HD|9oNl?960m`C2q^Mjp~*^`&W26@ybV#_63+_*hjL&0VV5*E^=ZbldLb&vMm(Ou23^d+7iYIYZ zJ|5oyohlmQwI|b1Yv7EKbKhI5z|Xo^@Do^fBmL88*|^AsEc&p>&scz&g4gy%NH8!u z{?=m3RI$x+rgdv;qUCQdQ(^@cSt1Q9T6L)F6IuO^xW;Z%G0Lbe)F5{;bT2yVHF+S+lddJxTW`53p1sC%_Ec88{cE?4)!WhtDBKe`5N z*ANbyTDZ+CQ({4|y@D-_j-G=_8`(NgpL1RdsG;GH3E*k8`Xp9t&TXQqOimt#;AsRa zQwpc!y`a{$TvW86DH0BCY%&PwpTcm61wWc_-={F{h|>QS)cDq!q&cmrpvqqwD!lZk zcU*Mkouqd$3@4Eje8`|^an0bM;wcllCoUrm*s?l>6TBEpv38s%1)Q<#bQj5ZF47^J z%`fNFJM9hxpS{+cx=c4`b1o8PpbZDFU+etxzKdbv38liGgIJUjbYIge8mJpEEffot zOuXc_j`G0*MhtAIWqfm>$M^)WP$mhBqhgIz`9{gkGZ65&IHQxC*j<*A`dIM7+)@&* zk@ZHU*tCY`_ARb&?Y(MwqUIL~I6*)Cu~L%1Sr6@e!r*OxxcuI}QPy6}+$BBt^AE)f zv?LB~7jXrK7QAIF;{I&D`zF(FWAJ%Dpvh+<&@1L0vx}_JOb9!+DLY2Uw8)e=4|=96 z-0B>ivMb78q|1WwCMel=ak^%1Aod+IKAMq>bXARFXx`+7&%^T?RWz4aW(JC8R$Iot z0_mFiK4`x7^e-zsw8IQcnlIcUMyDN#?2)b}3$M_)Qn!QOw%kBO3>%XkeT2IQoOYmOqd5%xxFuIPY^Si_yq6N%yuOXSAK`&WC{;d(Kq+#`_$98_ZMomm7n z-dq80lq=DmqGS@o-(!<;<9*u6l7%Ehj!Qd@p%oq99$b8+!n36K+OBW&j`eW0gru{U zO~_GTctreNCM#$?gLuzb_{v`~@`gecUY!ky1IASx@pbRSaI^t~0UxXKI>XfEYk0+t zSo(keQdN~Io6iQL#vFz<`6Ii)hc3e!-<1aUr|L~O| zoq&Qrj$rdMng+f6)#UwQq9NW>ie$J1|2GP48%~?lZx3s9HCx^mmEv{Ng;mnBP~~k^C=qY*XwgRGw4#qRA|aK@s-^E7G*Z zg}ybG*ROm&WS043_unHy)`lM&foFGhRC=^FJYMJRjkfxk$X7l>G;eBN6R$|}K~RuP z-sOFLT(iG#x6+sY2phO=V1H2sK z54dN~fWLxQzpA^jp0!$Ikr0j=XfNbvM70yLT3w%~umIw4QcD!g!mcsL$3y*22a)T>~jzk z)4a*wly!;g%4B9@2W1aKsc8lbv82%WYtz24j)bXlDJ;?gEmSnRr+mUeMuy*l6+NaM zujce+zQ074|Jo$M{-6#texFK}$A<-YDi%@p;>KUYnM#EEs^UF3os}+?d38!+2)^Xg z^OdA6{{ZZaKM(jNMN-M$+x2s=y~}2Jyn@$Dm(a5cf%IFr?ER)F;dElP16^&0 zEe+%tAtL$y*O#w;ONiVAen{tOK!(+M2s)kKZ;Q)m9P4az%FV>0?Wi|C)=_>LV`ik&mM;B?{Di9Lln?rzoc8=S8{S^C+=mp;x?+CgKs^Yo8Og#Xb6Rps}uV zCKG@3Ona6*T_28qwgf{t&I|iP#cE(}ZbLAn^#Z%9ij67IP^UUq(Xy*{nz@f$f(;jl z!P3GM&1BqEp{haO7dqyagU6#ootw?j|!E>?%j{qqfHnqN`R&gyf6F8FfdOkoBn(|_T} z9NNO{O|!{H7P5`YjzEe7(ml)@4P2^mReW|{i@oFl^tx00U5{J)0s$%+U{MYqslceQ zwjgH}0`k9qp&+2+&w4CxmEXdYX!-iwq}R&y_+k2PE3(#aW^$k}t9kFX?8AKUl%)XA z%5e*9W*FBBz?srwA8AsK2?d^$EIDyL=5x@z=04qC)El?1C^1SAO^*{B`$gD_i4GMQ zm4%6=e@R+;{qm74O8W_z>-4aAh3%>~hx)AcTa^Q@X7_sK4i&;zGh|13=M?RKT@;ny zL$YbbEJ5FP()n@Gj7CgS>r+fDh}`yg=YEs37n_+Bdnf;^coFV#_6PB<-JZY&(cvw@ z1wAh(I<=2CHLSvukkE_JEu!5C>H$lx8^up21wIst$wicMpLcNR8kTgmmzurcQ7k9S z9sD{!mPb#sL`e3R*L9Ak#Lf|aHNGQ7D9solPP|Yt`L^QPxp;a*`LqlrvUtu+Whv=Z zu$a)f%7qwBS^y#f3ZDFLB=GK7X^WBGAd1v(B|%Nu+74v|fIYy=$e{N-(i3@@tEas) zc74XefsJSJ%yP^m=1qf=iTWRk4kmLw{P*f+S%ccTr+6Kn{j=Cr72#jj%J@(79vt;hF=lKJTvXp6jh8xxcAMZwz zl-oVDCR69r$h}LWt};Vd%mXWv27^fZLs$8RbGV2w%DU=t6hFYDy;9|Z)+-F<68{g` z@;N#LMtY-ogyTK$-uJFO@gs1OZv`e+HkMzeyl=P0j#4+q|F32i=4v<(?Y%sYh%`Lo?xAFtOEa*J4 z)6O8Okrl0plk9XGJ*B<7JtuvLv6`SAC_={vyc{pek2|sNzd&`E1`_e$qg@Q-nv$T% z7WCzq-nK0YR8QiQ8cH2|MDP zeC%t-hPfj%g!ga}aW@8MADsL~`^=9h*^G7$VVz7~@ZPbkgX6)p#~2E&6109r zQNZ-^a&1}nOmlbbuRh~vFZnyy{rb$Kbhn~oKoCLYcoZwSkLw>2Xx^%W_7rfw7C1%o z2)n=dy1jM>Mf41m_k-ty8LqE??XFMS^8budjZ}xR?8kZ_qIG%F=giV(GsFACmVqaJ z9Ynd;mBPR(54WkVd0iirQ#Z~wJ9m&9=&uJlHdbjX==(L1`>Is3_K_MRIdpU^T|8Wd zxu8vVM?SFdi!7YSuOgq>9^So`f4k9;7l_8Lx7bWC2zJpV=<%7yk!yf&T{IfpO$bL@0x}3{PB^~JO;;A`ra;_A@6y`cqf4--IuYqt-}ir5ksU6qfcQEQR>@4H}=?34rbb8YF@`Bya6Z zu=R_)sEBS-<^{{CkZmU90}C`Z!l|`=SN8rOfblu+j&sIl-f%T%{~qo10c{#@pex|+ z?8#EYHBn!XmSc=2^(NMcd6}RM#o18rTmIZj+bX;!TNw!==}{eP)xz>P29dmjBLxB8P`JbrFTkc;z2VTSni(~~r zM`STlximjO989KOpcc&1pd)mg=)Li4TY%puEAA0aWSbJo7Iq~7%v^Ue?yekrM`BAH zQxJI6&N4iM1V)4NU{>IDq)390rTl;ZwujJo;qlpSW^)U_2kX1N0q=hXwUu(=BRF;L z%3~UM`z-O5T`L1;EQ_0K#8ctd&-;Uklhe7V)nD2gq=Nx{IuZ(KG}7b}-*q@T$eB;O zDO9kG=qI=5|KxokUyA+QTS|FR^I43)kp{|}ajnu=tnwdCl2p?~JpYTRhXGAA*)(GR zW9?UYA7+yOB}%$bDWx!Vq&tj-EiSWv4Ys)5%1xZUt&7)d{tmIP@e8{l8#Pf~h))O!G88tNXJp57ord}ep| z+XDEZp-*5x=YyXm&wIzGk98SnFYpbg6F@$n=zCcSOR_f$!nE^fxr_S0UV+vi+ zT<@cGv$l_t>Q;6<2~>`>oi0IKVozV+7DjVQz?=U`#VFPez?GbXy~s}JZot*undkoL z(uGH>)70M5`s<4i`}ElH2(UBn^9y36K|e`3Rk^UK7jP#&bzGOF&IS;~dIHJ*OW;lW zGWCk&x;1m%NRpCm9+9H{034j0bv@}=MSS(O{T{{I1}V3ST0nk+b7|cCAdlX)s_j3o z>eZ3#I`EI14hj3b&Ik}RL5;22L%`m|Z?o1H&&&>e0dMH9gA_+ok8C|&*XL$w-{jnP z1mH3J8mDAVlM=~zde4XZ%@WUSS`VLvh(XLyDv5wGLYiS4xh#PXjVdz5VI%l;41TIC z=q89y9G-7c%bD+AXp{Ueu~dqz4e}2N=kA{-#Fu;dUsLFmILUlAy_N**^B%}P1(K%X zz65TZ+>zH`?Q~ddz7lU+E25#{lr8FYC+y ztx#*{rSM$>Ln##ujYX~H0#+)BKi6;3cbGA6SyJwH%5jfY z`PK4Q`hVQAq`^=j-RE~o{fu0nFvD~|zYwweDKIP;3SvxN`O#C1j5aCF-i_~BzM}QP zt1CBY7$^Dl=-O}}{+Z7l>QtF$7Fqov44>y)hn@6X`7iO`4gE2y-)netI2rOu@2Tpw zDx`-wGEfI-4ro_2owvW>kQ7$TV<9bUYpK4*_pTeG-~O^2mK5{ishfN>+AF(K)9dSZ znozb+0CytL$c(}>irUPEIR=cX01k}qpm=k_CpOSDm)qvhu8jo>ue26o@#3|3WU~k! z{?&B8Jpvs6M8mdLRN~1#Z=U5A$1$?i_64V3x0qap=yOtehYvYVn&uOA`4M!|_gQ<~ z7gkj5OiBuOBGraoIyV5}u15GUuIHx-m1pU82R`tScjH;(UPVt$iuZ9v%N}um^aqwS z?k5Xd{d1$FX-|7%0|@KKZ$-H52AQ9tKM(>*->Ibs6Kk&H0z_1qxh8zxg64Ph_M{w= z@+(zK9pV{4bUW>p;}gOY#ra=Q=G*9~jv*u)agZuj=c+W1l4YWp$*1a25#aXdjHRWsBZV(^V~rJ< z6*GhCba3JTTJ=D>a5ngOe3u{k0twk%{_$xQlE1 zP7g@Ql+((7kmdPyDyH$on(o30p76k$J%7NG?NR+X&9y~{suzlm{%{jyk59PdS5bTz zbP_W5RqP)777KVI7A7X&%TEP3)=0A&Hpj%isdy7y{MxvJ!O*M)$l;m~Pv1(3I-gGL zjd=L>>z!kUfwIplwRdcW|MvN?A-(Pl0&rH}4Mebh@RN=$dW2b5`7@FJqagdMUpkC@ z5z4U!56Qe;xpQz7jU44a4JxmHHsL&W%_&$r-L3v$3}p)X6xkG2^f6n4fO+3S zRNMs~>>(~CZb>H=5U2Xx`upExk0J{Y-BF>9GwRn(v4u3og|H;L2ZEv^TTW$S2Q4PL znacw5xUT?xoSPgB>bwxyUrK=r-GE)f83}p=u|~|O0O+zn8&yWQoYHH!EyaM9ceyiz z?AkN^q#V`(bd10JzCOYrm=&18NUv98<^sEbG9RnVj@Yyh^PjGDe}|`a>}4<>#>S2B z3BCtd5aoD3hg7`TusC3Xv7X>$^BwXrF97~-y3#(Z8{tT@ARVIq!$To5O?vD!*^`4t}- z=kE{;In$r`cXpPU3L&%?xcGZKxhenLTa%jLDYaFwB=rpMg0oElgxX6ICb$3jiF@Jk zfNlF)mA70*RfKtt|I*g%Tr4TMd!5qBr>LU`Jg;ri?C-e=ZTVYyD=Ow?ggge6Ag#kp zf237Ze)$*Of(gbh2vc~K@5$JPORpf&iU@e|gPJ9u&wV%41!&vDr#T9*G}S@ces_24 zkV8t|xnPhkdepkCL{v76z};s4RXQ)Cv|C-KfQ}%VN$#_LHRi2rUw;N|5RSx!1>CS& zyAii_d#&MZCtEU#3RrwV2!+6wiyxwd>|n3U$yx`RCnN49?TzL>*wo)=s689qR9hUh zcn|vJ;lr~i`-I}cMV=9e7%|}i~}5qmBOLUU8^#8nF**-xjHFlx8Mga?32a^omkvw zZ&pX4G17*iol8;i7+W8TqbCbvnW*D1Qs9sEvVEluAooQ>&jZ?M_i!0Ihy6#1nqVOJ za2xb@T0DGHK_(w@V8Gv1<*CY>c|-Uo8=?0_OeZRIL@Ft1lnQ&?Aq0RNRXR zLqzTnS(lkoxD-0_k!L9*L@*L<2RSpZia06pGQI@~5mzAo1b=_xK0Z=D{V@>fqG(j1 zoCpFE8dQETXSCX~k@v)X%RY7-C#j0A`ZDfLfTH_=l~vYMH|Hg+(Fyn*7~C7o2WR9n(>+bfSG{I}#pqo?pw0y{Yw?NG`^ZCX5jF zv8V5QPWYqX;nK^J+`61w!TwHF`}9ys|4XMz?tvKmw(D&hh&UdrMr`^*44Tj#wpNi# zH*Du<34QoNO&Gj4W$xLh2__SP1Xg;JL0zIV{Umi#4mg2*TLAg$q|<(ErBULsU(&Bf zXP#h5ea+_E70eW!@)1Z;72eG|Im*?tAi+-nbpur{K}0er_`^#}A~_(T!232nv*>R2B>p z)qz=kY0EU&D+#@3fLlT~<{T!7y^a$ zNqi2Z7poaf74k3GyRZ_-K6`;y(jo3F^q=(ieRs_kfV}3bwfp*ZDQ4q$DL5YM)jNQO zB#C{fK#a3J>mOSF3M*gd&93Bd_7zOMd_I#a_yFZd@ou{F%K~Gi$?DAoLHyt?RhCD# zX*2ENSf?KNh&0i`A0Yxsx>!ytFXL%m19&<@9PRCkE%u&$&X6f;qV8U4$Up+x3zA54RfNxj!936qgqr9#6HB-zP z{}LXLu3n;bp87z71qVxl9CzXEkHBYWKK6mIm!#)wd-u~;DQmcYrZ<1wx-eTosktGI z*Frj5@{XAG?#&HhVhYu}lzAH1blTBsuYKYQ*HfJq|3z(eZZ8lvSa~($R(X@W*ud>( zob#5c4;0(WR76#yaE;a;zFkZ$`h56%K^WKk-DJkOi?B!2aK5}@ns?&EaTkY>Y(#;=S#-Y}@z_^7%?xB+z<$U-`nTu1UYGfe%2!^GS0 z&tB`lvSEM$i5$v1;4#FH?2V)m6fiqRk%hX;WuRMhs@oF z@-x2>fWn8N4o*&ASTc#KKMAct-ff_3jC~#I3TTf&bjqU`hhWpbhanu@C3<2D*a*E1 z^fUT;buSQ@M!9`Cen{ppAxobJ(U|L5*YmPxEX6;B&Uei3WQ%#>7S_VF!HwYeCNfiq zi}%oo@cC8rHbdX-*+Kf{Y@dx#Zl&@x4i3Gp@UV93XCKsIk!y9rZu#(QZ2+!Ww$JOl z4%M>f-$Z+dSDiOF4F}0f>ce%%@AmTn*4oF|O#cyuj6{h*)^2=3j_g{U-)1k5(w%)8 z_szWi*Em4Lg*@;UKY%G^W0zoJX|6iubZy@N$xo}({`CSvCttqC%XCO2+hLBsy$IlmUa}U#NMt{pg zP5<=xN_;u3Ujn69uA%k7m`TQ`UG*IEj{E~K{_5YnIGs%5p4QkYd?<`w`xg|E@5SRs zP=EH7d&l)Flc!xj-o}L=x={c!8$_ega=Wwch31KD;YQNG>tTMlztru0iy+wu$OUrm zWiE1?f~#g+c9s0l9d+=&?&Ore!wDWwBnt1gD<}r-V&nxo##A|jb7CKHmC9;=y3N6c z(qxHM_W$M>>K&m=M{QR_I5DWh#C$L`zwd+Hqfh%A?<%Oe7$Wzc^x zo*u&7+3^#W2mg8Y0u*=FEoql)pL<67_2{gPvZQD5ChMoHwq@BwxvOtpJG7bkb7$iO z^4lNbiEt6x@>3skf;>M03$J_n#=XC>A7!y_|G*d8;{bjD+{rbIKS*Xr-zsN&-lAte zLb_}SpShdWZ|6JgB^4b?IX|W{73oOB4dA}I!Sx0igwun<9az^b6<>a^UNedxnj$jV zHlrcbkD%v=oA8liU?3vmkOnzP2JECcsbE{((Sua?_41|S{q;}X0{r|{f^1CylAXT^ zq$|0OF%`pGCyl+0VVR>(cuYr#6g`&noOvA0Rc~T47hd%71g@gHM)aHfx`lZPJ_hnX zaP_vj?YxF|Ra(AO(QOZ!9>w3&9CnStynJbkHm*^gq}v@gSiLWnlPt=NBkJ@#w%0XM zJ=94e zQW4VcNPeP{?2jo+vZYkrLZ)s|dIRx-BW0zE)AFlA&L_0a$4a9a>RG;lla)$_=vu3o zov5@hld_ArZF~?(Q0Jv9J)_wy*E(V9jDFC^?Oj%usJ5O=kbYf2XY@O$(3E+e`pFgb z_9P%WD?CDi`AO>UPdysw(FeG~s;qdjL3&%WmzWCu(w|i{8jHf1vuZt5Qd~c;ye2-d zG;~kn4K@6BBT7AL0W2+X*}lQR2Oi$dX#du8!ZV7ghC6 zJN4b4|L#b(D?W%M*t9#3zqY|1ti)~Cf>7dqA9O^}dX0R!znx+)RVHorJRTH7d7YsQ zENsatC^@qCY#QAZKee{1E>wAQ&W^aoso@cJu@Xe>aUmybP&CQC7QF{h12@qbee z2p~>Fb{kDS`zk57z0%<6mG3eJl(vgY z^VrNsiafKy1H8ALZ~veYdTg`fUKtk-s1+;PbOqXIRWt_Vr-9gvok~C zfqoHD+{TW7(h*@+`*0`a{D>x>LBFNRDC)boabAxVOt;V{H)Jmd#!+00Axai@iP|t) zyeT+u0@qicoeR9Y*%UBfA<8$N33=Jl9kH3B#Q4IeZ3NSFFFi)bo`(hAe<`kBXh;aW29upnPU-+^5 zUA_->3Vu+s9+TM*xhq4%?MW)q?~j|R6w41_$2xQ>Ky73@FueCAaT)5h@hSQ1A%{Ko zv&H;Vy9Avl8S-bh)-Gh;drS8XWEU#AXY zm|q~j0vD|LUG2VZX8J(+AYxdQmFl$+aqAj;Er*dxAS<`TA3jr&u78)4J{&=)hxFE5 z$!f})WFfzT749x-dOKh;wMXS}^K-=Yy9)k{n~CjdG{WJv4rss?4$yECs86#Yt+FEr zkF8N;)ei_z^WQaae5~Y3v@orwlejaO!B)JgT*bzpI+7) zZfwJiy1Q))hLC^?!oPbE5zKShBN)W`Q`f8s5j;1S9gzj=j91l-g6R!hKc0&e}aNnqR&bI-I*Tp;_`_r^vC*bPx}0fn9e_G z<=00RF(}y&{FoJsEVj5qIoHty_Qh^u00nHX-dp0NM*Eab@}O zk4Mq*QOuGf^Z}8z&8y{k)+BS#K^aJT4uYrx1z~y!54i08#>#oe8BhWs>f9NsdFH7< z{bBZP)@4C;y6S{@W9}PO+!MnnTFl|{-#}da9`aM zoZJ2tEOOtM5?1ga3LlJ*aKeO3csZpTLy-M2uYA8`t|a+geGzJ*xe-g_eZCo?%Hotg ztBT3;=^2Xoi!I4qhB@_e+7j+DYyV7plhx8P=4;)%3IxkeXWc$pDO*wg;pimw{g?^x{-AgMa5x@kX z1M*6;*~LZ$RBXtq#vPo6J*mOn9kYGw$teP3pmv=7hDXW7|9lL3@VQ|gZ>Sz(&{f7I z3O)QZL_?W5#N5+{kmC(7(wh2=CKeQ6>DMpr)+@=sdETGhdpQN{lC3`h`6GoMz{~t? zmTk!XXg|YHl3i#xfefag=537I)Y0*z)|n}S2^a_`U^uahR6ZH**`}FuM`ZrRO2xSOgw<~PIz;fYKm4cQkdv!u z!xhki;!{KA12mV(kx#nz+Vc#e3OQ?;C7$#cMd}YT#fJ1k$ejlU8Hg?EhZmTS$F*U_{^{V zWD-PLMHc-HK3P)Sm$41Mfl{&!#*mMb7RioMrdQL-foP>;EtgiaHgU2$6dDyGzLoI1o+JqMUv#AkVqur^B!;Z{6!q^Q@047^cqlN z6`OuzNFJq1z-oE^X7&55qGOS<FlKJ228u*<%y9IxP~f2}C>^MWYn^sb zB)i!cw#_^2@oox?IJmL?5dH6`hJg_e3Dn9F2Y4P;OQ{0D zMFTS)Nxh3}QE%Sv6JYqqMq1MyHaI)pP-#|=R?;U< z$YdduedC6s@rF%cn%8+7yW^$PH<0hdCq<9Hbl}e@FB(VO+6rFXY@6KLOtuwl@a`?Y zB?$e4qMkUW$7F+I#t86et+b>){jZ~~hJcj#)N#_@8PpAPFZpBXp17zA4HMq(3T(u! zw1|d4g3ta2f)PBi40!-p)k@?yD8*Hlcn~F=s?6 zCTiqtLK>6nL5-VRl;otsD;;ImYP8kXl5|F3hLuHn;-<*V&Sk7cugl07uhHr!-#p!U z%|l&S^QAR+qy$w~yHTZ*DAnCa-DBC9ks_tokvJL&Al1hPic4(DPF8c-jYrY<4Yq*x zq)B%tpD{=2?BW~t1(&7rpD9L{J6w6ArDXx{qP3l5&$o=+%kV#dk>Mcqex?Zx05q`? z(JrfsR>V=NgzHEx4cV{gs)%=|Ok>ZbkkcV|o2enF`z7J`t@T0B5c5|##eq%Tt38*! z4@_^jNKihtEG`eZwmogrN*2Q`$p70Vm|$R7k--tUv8u9NA9e7cDgFNyg3l&X6Mq!- zFOIe+X)MePe{=#evXF7Um@%eVwRB81N}6G`xRdhYpa;Y^GiS|G`Nb3B8r&2QwS|(y z*m>buq)fyGsP54&G5{2Qcb@d#%RVL(A^FQGIe^w2l694ydWl01T$8A*HEii=m+dX( z+6wz4?~bGRg zPm$jiYGuh#_E7H##I|sT372^}572Xo>(pe@RX&-LC<|Y(9^iv{UXE`(`3O!TvoKQm zEZwb|*ZUqI0Yx+@;!@o9$%u}p%NeZ*x(T2g!?r#+FE@HEm`q+ z`+u-L=9ryb;dk7r0P_#?0N90dK5vbu(jV+rYVbKP8hb>3>PRYmPck}M@HuffGs77z zFgYxm*9Z8GHMF_?9bL%knZG6pqy;f?<<+98>T?N46$n=kUuq;jSM_|K+E&AIOFwF9 z`Q)HnkjColHF`^TY4XJ@s6YCZMsaE)e)?O2(uCpD^J&f^#jH)N zqD5%+)K4m0U~ zp`WGo_1vwQmh3xiQ80bj`8r_m$0ut;PW{_C>UlpPhkjjopzqJeTRQRGbmupm;W^Wr zc$gA)G&ar_@2-z>aXx)p8EW@gaCYQp{*5x-e0I~nD#v)KXs2^K!l3g;lU?OO`WA1j zr$JtUb2(q0K7rPTGo0^7vWOd1Huo+tFZ(3{Fk`Jo$guHN`26}4+IDQs*}WS2L6p*+ z++~7kR1}W3v1bLJ;%-;{Os4+NrEZrT)EPF>=*_4(5%aDrHrZRY1-XPkK=zO?p2K{v zi`qVZ@!B154%VIP@Um6IEsg7QowAGbe0-i+G0;llFI-YCYa*`<+UJ;8YS0{Z{30TD zjO@ETw>ZZx4UwxrkihXO>ph3Z)SQKqdTPE9J9S2krx`aO-cL7=>JltZOv&uR76Tkj zS7A`x*OlQxLMzzQaT;SyQu=nbTSwjCQh(shYO`maT(>ID^L}`f=+?1q7^42|!V{pB z<*9E}gSfn0(+ypV*m?)~`280))Z7!BgAikgaY0};LZFFc*H0l7{TKJir&U(B;L-%0 z?b~BJ@q`hF?xEh|Xn)?oACwQ-q+@oYbQt}4RKAqY^}K!$t%XrjmQL#si0XvVhS|4s z>q)yV;F%_y%R?8+9`gnLz2&&J)}ptE zWUChmRTr(V_mRngI5+k(q4IvNz&tN}yX4yi1>mavD!;%)%2`U)HKv=VLB@1hU@0|p zf@yG%!C&8HG-SVSnI1Hif)Jx^2sAjH!2J;sjD#DmHigxeY93l_BKe)IB-cVBPT}RjyylfV8(h|GdP42 z>k3yCoTJUz2lz=2*(_!;12(xmHuL#9JzQ+1{?J)Q=G}VqQ|GH9C*j9qv*8E|g>g*n zj$&z^CD!TFv&uCMnKy(QY5HhU4>vY6C?_JeCxHrb=Agd#)_Ul^?LAIpLBx~DTFA+rQ&zyE` z43}R0MtJ?u7GCkx zYx)N2uJKR8dI@HOZYB$6h5tb{$;nw1Fd}07zt(_nv|`Q*J(tbk2n+r%autZU5o!6j z#V$fLsI^(v#u6{^2{RVFRA*S`PgN8DqFU|;T*%uY|0@m3*K$!6U@B>UQNz| zEnIztnuN$%#3Wr>%jTklB7jOo%VNScbFUw??c4eQfX8SlTuEyAgkX&Fr%=^``3cRH zGD<2<>bu==i#{_|`O%+5vki(0a&C&gMR)8y*{Ij2&zKN%y*(5h(o=sMNUV8Y9lX;m=haP*bLUMC#2Ew2RRzV-FU-tT{uR- z<||&(hwG0n%|w@Z4d1X(9*GU9g|gZP5nW0L>r1a2cbC+Hi3aTmINV*L!}U>S&4MHn z_J&lzx5U1su$=<{w;RAS4$Yo2+oXawg+A74W7QWHGGrm@NOa$pq1(v~q}yM&33G+Q zWwpAh%a#Ghw#yq~Wm!|>d%c1F&PkxmrOs6~-U-8p5{lB2;uRz41 zwJN1oA4WB_dRc#b96BI|?ft`H$*q%KX?c@H6Vc7^={QVhId{}^` zSeE}7t)Ql{OQ}M+qgf(SCrPn8zk(Yrkvb+gBPsF3q5Mn%vl?zMJ!)Wf=Qo?4sVq+$ z8So*@M+Asn_J&dc4P=Vs`Ahdd|eW-+su)%jnbvU8=<3t@tFHeLB5{EM=R z{%(LISlVRs4L9;^#~p4w-p5YuDbhB&a12ZLR|-i?o%2(2Afmi7Rg49s0vIl7nr@$n zYQ39x7x~R6=`l;Vl=bBoDKpS?&#H$EQ>6ADx@~^35V&y7vt4~`#_6~y$&)qNdgeoX zQ{Ur%uIThVnb%^VoriaS4o-M{FzldUVy1C6k+@h+QSD*5eC<#EqDJH`Kh)NIV<^hVzT|QmLXcfah2rU(G^6zrb#wxBS}~h zsY@g_qo)F#as?cn- z4BH1d+|SNTibC6*UIVHF>fOr8DG-mW_H)8=t+F1!-Pzudnvw3=63+TclkQbmD1>&r zWRDnnpKhq&XR01zfX+xqhafZG_pmmcx!=*POm}gqA+P>L{CW3C6O$ z^O4llJ{1@t3yT4Cjl<1ZO1)#RB(z-Ljpq23%a9DCG|WejqoMBi5fnxT4WcwCM;=y1 zzD$psm`EC2-dZUir;@(j8SSUsW`^H@FWzBBtosO^N$b zOJ>=$bx5_$XXTRt80)rr!teqP+KJEAguFM0pfFC(0D&lc#ZUi(r}eRjnAlAmNv|6- zeak0{eJ42^Smo`60 zV_UaZ51D20A{uW{m5gZ@4=C)5Z8XkR!Vuxk03BZm;hGjEi{;cxkDuT2Q#CSB0!n&! zFvq*alu_@H*{jYE_;b7P?yALJr8X-{+m~U~go)pYdh2hkBCSj$a;O0@WmFFPJf1_* zCvmoNDVLaXiOTeX5`l&*=r>VkzKLE+=V15r$N`($+W%`c$u+yl7KK0|phEj-sOSx_qqt!#Ss z!C-VJeeg4AfQkHH;q9)Pwnb#uhb+@4mdv}NFpzz2IslSr5(rHu zUvgXvtOSz{+plex*XrHt3{;&j4nJDS>i>5#5us2hX;ns_C z-9OXx$jrmgJ?L(?TAkMm6QnI>7yVGrM@QNwp{rwX5Vc#NamM;XbDfT5A=E2v_H}?n z_@l!rZn@*hu<{Rmk1u6E?Ej}aeT0Dl{qE$lOXsw}eVbMwgmY=;s;{-qV%2J8T-C81 z?Kl2EWvp40ykI>!yk!dUZ{4uzdX<5=Br#W{V)^OQgRXj9ZT|XhCmZ#n<=L)##!jcV z@FNE?_6XytxNVdikyuWz<2wy)i+S?>4E^j1DN z8^MsQpq|sGqpNemEUwZewTR*{SfOA#T6NYf|4!vlOoMc7ZK&}Ta~QN^iViR?$;4!O zC-6O0QA;-ex~QShH)?u8Jwrfp;HrNa$U8!FS;mnJ*@NbxYz2) zLXk^?{RfX@fS%0near*w%>-?v+@J>OT=-kQ7c*X*j8W4oUf)e2+`x<6>}!sG}B6*G$Fl-INahSB5o_OT+IQ0eYwX8&wP!n?T!{}r_H#-PZGPM@3%{v8Vp zpcT>C=~S6zc}z{0Ro-Qk>f{^bi!M zS}r-Nrk%*ZI3F);RAm{lr9njKH3-T~%-iR!Qb~rpN=0VZUQ9$tITUR;#(zr=2FA(< zxRE9f$Tn9QJTAG3Qr_HLPyTPo&%6={;fhYT&~9>Q;wTiTIM9GMUKQ*?MKTZTU;OuI zFL+sro(s-A`>SarqNi42tiwFuz`?bE*=2ABDS%|Hg&d=NyCSK>Okd-)SlwB&w;dcf zT`+UqQ8e;71s8dm$VZ&1My5aXr@^(vhZdR~4QwGy)*7v%aggaA)jxEQ?OuR>R-E)l zjwR7)*OD2kYh{XO!0E_wglBVZw6YzP0dq-JKxt*33cp=%o=~;BBhPKIU%Y4#gsb%% zakOI6b=p%TMLGs58x^&p?Z!jLvG3~vt_Kp`F`2CLV3jiB3gvAxMhQN*%aTxdxtcHE z(he+AKU;-cm&6-PVnVC`;+DRqTa|OCeB0{}May&XrCC8^^Wb|yJx&Nt-kJ6tY2?%c z`DUCxXucY}onLEsYssd0T2gELg5m36sg%Kj|71L6s)nIC=TYzcHM{A{YW<5sS%KZW z2Uj*Mi^TM$ld1M*R2<8Ji@bNfy5sx(q?lKo>?#&n1OPr6&_Tg9 ziybraPYXk=r-TV%SPieJN>$a~D)e!}C+>h?))%U<7(pTQYQ^fu5&t?F`;CS%Uk4A^ zZpR8t;K%N(@ieSXQzDEp1Q;G42=1EOdo%J;8t#hun>@wM(n znixEhHJd93M!M7@?UA3wHLCrWn_l5rVquM*S2+bWD7tHS9E>d?~2(yK!rWXfuB;WL#sPgtspdi*o9!UpK3Ac^&UVSoXhFM?7+%!qk@2_amE#cI1Z8IjpL;| zwA)D?7F_Z#%MH-1=JnJJrsDfLy$otb7+fX?X*^1Mt5X_>LOPM*; zOhlJ;!;21P$8y=x!i1?sCx;OftH;@5@2ZJWb#f3n>Rf=yA2VZyOCpe`E55j|d~)@r zXi+P{jQ^enZWLsVc_#iXo5!BF4l5bp*7F9!PSd5&M?qX5fR61f7|Sa7lYciTNa=7M z?ukKS1Gn3DlShcULs**%Vos@+B7~T#jCd+InYwwp7(Oz8%krnH;ca?qE)O4sQmMN{RR?pJ}33@8E|v?(w}bjn~OsB(hd{)Lrlklulu9C z^TC?2h5(2Jlm&hYuS#J-M_hn|J{zcA7@8&L@9%Vc5#=J7M1_LJK6d8GcY?w@DU5n8 z!_dBq*T3sS;rUFAFsDe7yK_=YjoghepR%#@)t)S6gxE2c*AK#^34#?ua_923m?rn7 z{&bsqaWO}t0bZ7K9BM6_j?r%dFO5jBnB)EvEyxjpT5j!q1%Wb}=(?xc+JYr2hI}fp zFd=awIFh#?HjkWGR*J;)19+-#e*w#qL2JL(hzS9FY5`<~6NA4`P$YkIsZ*Wt<%S#< zgfsq-G1Wo#jH3|-$;OQwg;GhrUyN~OV`Ae-1zNeQHK^W<7)C;Vb@N-Q7#~Y`4 zm8ql$9lN}Kizm~km8AA+ds4B34sXpjd}evcoGqQkUtxEU z5>xXYttnR8v%~`3x?V>El&{~=O-m9TIQ?v6{1U6iR$1#;1?UQk0lpz8YhWISU#yH6||H4;b>BulzPKeQBi=P1n;~UFq;9;R#Dk!z2`ujomDvA@Gyoi=a z^bGY&s{$H9&)vKOL1Tf(CoHmALvY=o>tWyC`__w%3sT^ENZ-~BnO0m+EKfeH(l~lw zF2)7Mxl*9Kda8$tK@u)W{5%40D@N`O`J|IZaDaF_sztrYpZ7ty|Dup7-^)`V;v+-5 z%-tMk;U7N~7!X}zx|`P#2ujnQXXPBY4+77BzP%Ai@afN~={MpW4e@`D zZ;OcW|Dl;o4;Kw(SJLa=M*77|yOt9t+S}|J`#PiZ-7~-{=q#847O@Dai)t5}K?N!7 zt463?K(ODmYVn+MGT3}-j5W4g*6~6V+J#Ji0}?3YVa>Bn16_upzu8h?Xxt4%@!l%b zv&Y}zWd-%B1x@tGND$uo49U%GoX-zn!#n2fypp+=PKQV=AL|n$%_a~&uCzU(TbV7L z`)j51%QqG6cT4j98Um+(spa?2vUngSg1+&p0JBwJpu=GS2jDaXw@h_BHSa&;l zupwAK%BAVd4-Fo2BeZR~L#{&$r{V-Le@UG~d0K0fXM~kbgcM$pv`*(fl&Pc9;0Oy3Tasf>I9M|9xTrCba?7pgDv!-(PQS7c+3TjjV z*~NKiOtpe#RMw_D?)6H0@_nIjfY1dy+@#%EfQZkN&~j%mOa7_rci6{J>4uuJT~VN& zCkL0s!FXKOdi`l1mC$-$zTNfCdQttD#_e=Vef>Svay0r}F?BbNyRTmS+i)4;{D!SL z``qoFWc=iPnK&QEp>hFzJhOZ@IaC_HD$A@Ye^kooiM+OT7ur&qz|B#@2b`E?IOxq5 z5E<%e73#TeXf0_88wPSVY;mm{LoDiSqeRJ*PPjdvQ%2czwL8B~uxx<8U! zIeT2F@E-<$mn?-2)cHyV$dah)7By&M)BP~lo@+=hKuKSW;?O0bi*jQAKt2?TgzEmjnS^7pkn5`n%JI(Zcfb)npl0&ukA06A26ILO)E8w|*XM7??GD7m|X3 z3J+6U+!#w(sbgbsJjcue2IpNxZ0XCpZbj-p3tKq|wv=}=SKr$j%ki5k@$cU8OiImfq;SNbELzQ+hsQCyb}Fb}HpQi`tYgrCjP z+lp9GW!>A`YgCbqtKIs}XqXi_x71r-r(6%_4XTiT4@*g}XXSUJA95BAUcmw=vqsq4 zMxDPy78>`89}$xbccaOuUp`bRaDHY05u)`sn-Q`zb^-WX6BF^pMryX|KTMiD8nhx;-I;jDmY&-an5Lj z_`hQGIp#8f!+1P4b`e}Bb`NNln3F!-Y>;?xt8h`I5RwN{>YF0JIuoC3z{(J=ht7ub z=?0^`e!Gsr{2GV8lagN$M&x7x$9{)9jEaRrIkJe%F+lA@*JI%nj+%Az!^_GZ6iUz{ zPQ+0{Bd$Fr`$<*@EBB6aO+7DG87#M5m}|k~_dNnnGC&=H^eN7q?M@%(*>U8%Z`qlw zhuIs`MyBupE?E2Lu_=cE=FIKVn}+eL75x^!XYHwWQtP`vdHXB=5r*u8&oRA7qay>P z`(%QJNa4kuwwG?a=U(=PEp=*gviq1ke9YUku2I%c@8>@cSIfA}!7}4qy4=U1O5L~7K{3UT2kF-Kpwqnx zWJ7O!m|?|W36aawI&}H8`lH(o2Z@~09_W~y4w4r%odwV|@NyEvI9pdYSC5YmD9>CV zcwhcRM{Rkla=R)Byf4B#f)45z6Cryn#Cll84Y82z zKZ+SVM5|W?#tn`J^bO3NVW~gN`&wjhPCC}?Q7^3=oRZ;c&b@BeH;L8JWNlqSvm9m1 z+8*!k4`Di=DaOSwnW>elP?0>z*KdT@Wm*`=n#w*w$wHHkFAzq?F#umx5=qp(lZ>Jm zV zGh;oB4k#0UspoV19yh|aa0@4Mq7xgj^{(NM^Z(pDZm2-_RWz0N&`p> zI9b`D=V)%Yzy8W^BxQIc2-4~0f1WvQlyZP`bGb8d2tEdo@8L0a`VCgmLBb)-cSKbx zsN3VEyLhMXG8e|)5|yBE6M~>Wyz1zuOc~L)$OsR$z(0p_t}rWxUa_o0{~j|5k)aFU zwp5-MCI7Y;UxLAuH-=ZC9xM-&KZvUoVP=DwOg;+zN6gZy*BPCYb zf~#990TPqQW2Dt=l-^zVH}!;_jU%N(aX{`^9&?0wsjjWra=tb5IL?>PFKPM-)4Dot z_E7llr$TrG_n{&mo=y`*DpPURRxPvc^=bYc_s^EZ3DK`yj^XizbpgatT~3_g!_RgL z5Acwc8u726k}BuaCd}{0;#d`RdJOY}w0(=_H@bAoebVS%MuvV!fD*TYS>BMJh5t$< z374_vJtaHX(u322H2Sy8wqbrccLngXn2V6VpJeIm@}*`eOpC1|$m)~Y625!G*FO*~ zrnr_RCKadC?UmCF)kkwYe(U75*bTpTi+^j&>{FS$L#<59Y7e(7ZRxtg2;NwK-rcZ} zlC{hnq!6E0B1!#G2$jr+7W?%9i3bzg*pB|RFHiqvH(7_R#OSO(>Qiy#z2jmsXXAiS ztleFCBo@-dr*1IB1j|=zjXlAOlt&Q0nFe!79n7Z49I_OIZNT?4?s|^s|1oveL2Y+i zxCTm#7T01$io1JSin}|c#ogV4ySr1QxNC8@;_mM54#~~;opbKJGx;YonPf71{q|mK z?e~3_{WXR#$}Mf?F?YBpc0;kUxoPCpgkWJp=p|w9l^@0hn)a?;>?5ByazV;G?!KZju>g zhJ@Eo84V3K^j*TcxoGSnNOkcdzO4dTX6TsI1?gPJUK$WJx*@mDAA*9={Vo9If%xP59YCWb`lAHzUSZx&hUR{}{`KN0fDS+A<&b9&JsYHkVg$qZynE3^Pk z>%r(#H=8+fG5){lIL{4B2`DtWL$I~VoVl_EtTetFBhh=3U1*v);Vd1(YTpm{0@(`1 z9ezFe^Z|ySov=)`J}vHNP|e&*bF2Fn&ddMBKO|Nj07>Uiljek5ZUc99y|^(dI)1N^ zKAA5)O-9MC?CPm%9KFzrPRs#)c9(N+IR7M%X_#15=`ZA@#^U!?7|%0k3Q!LsYH;O?9)3Zw>@ud{1v8KZZ_Y0|!=hUQs{&g;+W3B6Tu?5= zP>)lwj>4ma<-w5|u(GO)*nQhrIfz*#*8>U#Sq?Z!k6&+6hbgUkg6UkEdwo@_A$aGU z`Jum1k&dvvK=I0>J3777=u2f}PDp@1@OCJOAP-~3sAXpb^Hewpkr#d#(aA|D0J~=l ztvTfTj?vivJzuF2H|=zx;fQfG|9&L7VIs2yb0fw9a!B}$w$RcWn)V$21!{6S`$hV1 zA1;^#&JcLhVN5asoqBpMlKilH75cp;mAl?r^w&=FoUK?G#j^NaOYzc=JAGYi`+f=* zJmz)9xZfcIUL%IyK(wS!bn~ofG{2N$#M^BdV+l)z=6C9_*INa}$?o&aVFI>CYSK#=lDm5{J9 z=hMMjDMiatp zo;9&J#syuJ=}XNDDch(E9*Vbd%|nX0QsLsti1GSHi#{y<6!8IsB{a?JM=P+yc9c4e zd_n@nLsQSr;>Ou?4+pU&;ZieK4PK3{9Zq}w(iMrajx!mJQdKG$b91yd-hlz^e}0GQ zASfzh%oL;~YqLanxlc$XRMLsfR<3cVCx(WYpiDdslreNZK}g5xkBJ$YNMIE-xx*$&gg zQtmy+;eAwE_0Rcw%A@AJ02={h6&uhMLr-Mqq z{YmrvmXB>uv%y*_*`!T}emCLxZcZ8m=4 z54U@BZhnop@bx|tch48Bm4`8N=TcL_;i5X`iwVv47sE4|;oOyM(U zeurQ6!-YjnUZzdm`Zl!lx3LBTvaOzKrrPpq6w{6svY18+n>RGoA+o@>Z60BF-YENi zaPI!8HyNv`0=q?mdwRs{`n0rl3fpj(Mi@4Z_b9g4hyk7VL|Es5@lib!07fBcnBA3K z)R*JlG;Q2fnm4XwKWA6&)kQ5_1B$#VlJi0pyM3sOAhta$fcHLICb=4TQojaY`JW*L zsDi1eQh$yL7NrtkBc?I3XOj`K1FewQW)dP74U@n0U4f6u6oi9x%45dOW{pa1H6J#3 zhYgYS?Q6-pD{^8Yl0N81`v`+Q{rYNi0HXQo9}OJ_8sUjuvWEmf$;sLP?$n_g01J27 z8Naf^lO1t}Wka+0oIrY+czyH^!=0^%7iZ;sj#m57#ZkylXf`q_02lY9bOHCYw|y0S zb4{eTBR=0j*MUQ}b*+%67)Eh;po6~-d<;meh)9NrTY4Mkc0B}e9qU3bxEE-G?0qo0 zmc7{3ucDs9%q-&$fyeKgLh@$je;~j9Te!2DAs)5}ez2YFnFu4FnY}H_46L1F-PY_h zFBAFpKUZ2Q1%}vhh#Dau)pqLe(LW_RA1c!VdBa2+6j~Lj^rw}aDhNCjxk-VE>*PUC zf%&RCdgZ~-D9LHTp6o8tpu@VvJ-ozbuN*{|tHBi;U50>pQcj$J!ON|jhp%7-v_6IQ zEZVn4O!B52t4Y+yGFvx@#`s>!w^pu*f>;`^{32^&h{!2e9|*I`VQH^@q@38qy-iMy zN_peoVl+G4+31`GDOY^n1y~t90Pm5s(1MJ-NNgFw4NEG{DLy9hy-Z+*oJT<$=zvWQ zAE+u#xGa4(cc^UE(Sds++kwW8fF|DXS2^4ilax_rCa!%}KX?B5C7#C}fr}CdWbg%` zu(njT_H_dI@QZyaThiW93~UU8p~&qfjXbt-fEB)`-7)FWhX!Yr&JCAHi#fbZ?!pa^ zSH~~EhHS4}U~7FTtUm{%)l5VdPo@a;6r2X;>s$gl1oRh<-!t_1>59=Dq}x z&am{qLA)%?ohAwN6j~o#7wt%fu=mMB3lf-=!%}g=7PFF^4N(^h7dWa?)mBGmkHdJCnm zCf_Lr%WrJcoD7_N7D+x(Fh0FKYiTyFc8qhp9sPQ%wTjG9f&NTI@jT8LY7~59*LUsf zWN@Q>_?8?2eYo35G@d&v8Dn$eIy}zSECzWZ#hHg;%>WvN(CPCgimY|*F@TsL1!RJV zj<$_pG`I zS;h`It`fR;e7(f|f{FGIM}RdHancj@Vu%bqZ+JO<`bw?AnRm4PXqqQH62_;UQ}tW* zZ};2QOItFU_jq+%WUt15JYJ6t#5dfOTu0MgvY|Me{=c$Sw(cu|IuW>zq1^wGi4eo) zL)kY0^?{G1O=hvOA1es+se=x<(V6V9k>rhmN53}k-^#wpRQLG=106Bq7bW7QR15`g+bwPf@c zo~Myh$rM-pm(uhQdR$)$fI1(GNM>a9SUOjFn_3TGgLUIBSQKSVrNEuXhL2LB^RQ1so3^2s+&M8qhM_>_j#<>%&xtISZQ6J}hP z3yqHQ$D-^s_0?!S;(1M%?7N9VK0hj&D~Wc_38945RpQ*1mYe}xFx1qa;Na@QB(y`? zbPd9uKfZ=%5M`+m82$Dmy?^4%A?)W=OqSmhJxDe#v@#SkM$FQA7f()&TQN{4PB|$5 zK@IYF-#)G%h49=mn5`j4Nz-%I($^5Bw_PZV%TthgutW1rBOeJ*%_!B#9+SJTISizY zae!{<@=atO-#PDl`0%6cWV0w&%%=&BV@D;(70I1k%)}JWmi&i*fin#fzuZNC+WN(i zkyWj*S{{SuNb9!_FelVHG0C1dkTaU+(PP@L{5tWt!SsG7L>Es*>~aViKXHQtA1-xI zbzFnrA>HZKLgj-UL>Z6q&*D>{3#EdI$-y^7S4{L@Ipp7_?8)-os|zC(kg%L zd^nKi?Oi(`7=?h^O*?}u8T5^vKtl(hkDw4eDuc~_ zm!}{|8llM2eprXby$c)|9Tw8BmdUQya-fsiym!n-6}h{KU&4~ zRQpg6nV^l&c^M75p9=?6d6BW`KJvO3{p0w?XFkWUgZ>Bx1}#6F_@I~qIm^|FyA0Ux zJAKpMm+bZJE~zx&X(pHT#JUk2%YVb5l#=y)V2`1Gy0db8jBKuN-;tLblK&LJ2*k8b z<#T4ESmpsL-3g_e;Pnd;$3LT~IV&D+ZDZVV-t99Q8E2x8xH|m!vyEls&3|N9GfY<} zpwUI~PqV?8eBO^NEXtZ%#T58jaBIHZFX0-62la$_F!L1m{fHN^nAPD}b+kzyz72Kp z4Yu50^APUCB*q?MTN1pP9KCo#YkHd9ZTJ5-FkQqaymbclIm?O7sd*C!<#$@+qf|p6F)kBI|Y>>D-y=b=ySTj7A#lx7WR`YvzgcKIyY9 z4jTD@CW*#W&!`O^iPlot-#i%dCk|d1j2%U@H(lW1E!h>svF!~L@D{cHY;aar1orea z)m@wzrT*Q?8v7bx^KZEPBkFSS?-C2m_rjmegjZvVj1NC*-S;fLg0nuvFw41t(%z4J zIHH>s0#dTz*34XRMvb7EG- z7LhEZpXe5WaWKHA0#Kz-Bf}?G#}yll()n{L5fs|+`P+8j-iclR>#!IiJ|qATn!w&` zUqh~2{@=EI#+JcrV@vnLk*B@iIB0UMvvE$m;_R)6ro+HpbtT+G6 z{pnlNTVjAKcLqO-(rbTyhe;EoZU-&PpB-eo*D9X=<{|MiP@@fx4U6}l9?`Y`Ptt8O zfc=19X{#mSUuk_IPV~4tq2T@fLdy8fD0#Ft#kkS3v@eBUdx6Sd-z6AZv2=t|v-|wi zf1Jh6v3e1jD#46OzxBZop(GQnx?~aWhZ$?%zh#OV(-g=iKo?7+J76XykQy{ajw(vR&|}Dyz)7 zOH*#*uW6pktiC9#5QXZq{z=&l$tMd|!m}}eO901XpsbG0&rYiYv@gVm=kw zL}+3@%eLB3S{N=`M^0*rx0%jPmtV))cIEVpo6RdERVSvxOLw*L6PgDyf^z3n$8YS; zjc}daK_(Uu(fKom%l?0P5@uBJ+J!th(S}AW_~bON!jHqj*oE@UBIRNcHHP!EDBPo& z28z27Kwrn0n9pCLjiL=BRdd3n??10b#Cj?Eh%n4l;l-oPgsT*r3Ga^YQ&w`=>(Ezf z6z$P}Ruh@Z3Cub<3;EV6Z^Z~uBbnXFD*N7+B`PaYQnBsB2}2E?|5IgH<}I({p8b+( ze8ooWbCHe-`ilcPw$kDrd!ts7>OY8c+(%IfBrnK^$c5qA`Lm#WdJl%E+b<{^-?}ir zm!45b8;EbYmFE@kt&ZVa!7|JyQOD*FeC4{Adu~j%d3UL*QkaQ~^fkG^qFRlKX0Rtr zmJ7ld6Lo21Gp8%z6#ug$-@pbb`T*rN-q%*)+Ek4Lu4xp)1r_skLdAU0ZjN5?bNZaZ zjv)pB`I6YRo0bS^FsmOx+4uC!DTDE9WNM_-kx5d-di@Cf(%u|519;7JCcr~MFYCXj zF()eA?P#^+5lTchhK-?{-Af&$!RKc5=mlRW#iP%5JiSJ!5*0+Rz8~oENM@C@ESf`P zmEqnP!f)gm*{p&-RmO#-wI|2{CTR_+o>j<`;Bn zj|z7YKkS5Pf_(CG_V_=|bryU`zW)ARmNj(nJqJTykdRU}``kyWX9E>gqwKRfuTo5h z?id2W8t;ahqSKFh-CQRT`$oa(EIEqPI?=E_vzEAJS@)0MwSQ@HICgi06gxhw`L|uk zQg>rD8{1>3=gf?J@-+a?PYkQtiwd$a2!%~80s({Ad5drX3m={Czk9HYD{Ob5D<$Z= zF`9<8K_Xy0YEI%-V|Qx1!-WLWu;VqM^{Tf(>vS2O1FG3GY*g2q(EmKyM)&YtMTG|Fg1i za7+;?z{rWetwf(w>~&Pl-;+vQR`YF*ZOJow>nd(Ko4-6)-aR%wJPViZYNLvEU(_?| z&$GJD95XC3MI?hbl&7Y=lO|e;af|G)<;{D`OPaQSu?xj;Le0`&X-s$iRulc{A{*4W z|MumAf~C=FfuDSpnd@Q%XZwGqN9%7eF=Q{K(V(?Prj~~JZr4aQk}M)J&LRc#l71x!*`lucIl*!fbHV)|4tNmf#%EGEqyxYU!zP`<>e8yEQ)pN_L+W^;5% zkL*dIUy&k0eDg!|RT?N4Vuls)Pu;Hzf9pZL9CbLUIxzj>zziEdf_w;>p@CR9O1FK* zcD(OsDye+5*`3QQPurz=R2p|1<}Y->)?)bH#wc8C(}tEUI5IuJ{gco81o%h{LrrmT znC5p_*Me)3-ms7%e2|I@6DOG|F@P^ucC5+ACI-&xz!1`rt#t~^Srom#x^b7!dZ$<# zxH6H$f0gY4B>Y{a-%jlMhj+RCf(kvXN&2~`v@af3^1j641)XmBHtS1)O z-!M!m1NMD($LYXeT7S2+;D4HN7#Kg`wKK%q$(qE^Ef9Glm#f-6X8=&5!dsG-prPpZ zT~2tZU%np1mDjXekk#hzKRTGHkN7T_B+hQqT6ib?R5CX&>oDn;5jJct{}g;MA0S@o zs4=8O3m0C4)?yi-sLH-6X@Hc228tUg>Mz?nxRvR>nmL|j>skUbXS@nm}$ay_F){+aqvEiSj{`mcq z_P2r{XYN$ufC0nE4xhD^p|jN=nsh*6Ga0X(5Jdbfn<{)>b|o%678vj!0@;Y=3Zwf5Jjt?WnuKU0K&GWWjHn4Pd6?1akEw~rX%&8n z(SgCp9hK;SRpxe#hxw@t_2FCdVoffU%jcb2l6))QTd5eWL-)wA#qD)M$ro$}YM%sc zNET@ObY%g#gtWcGXKVuF$CHc+x8AUlzu_sZDTN!~$YMpx?!`zf8bh*Y&B1Nx`@G_W z@R=>C9-4Muu!0QIf4HD#wD7l453kr7??7#F@jXx%z?=_g0goQTCX?fgDJpTLao_*K zb<9nFN2FyLAM)Z83Ibh|fOO>c#nEX>6Jtlap-|8y2W(XmIKpUr7t z#PWjQ?f>B&tTD~jD(`@s_TR1BZ8CU>KM^g>S*vfU4{X)&>-beW-V>n@+E%5sw93Tn zut>Z?&nQQiM1W%hz@h+Oux@U=vH&G$Z-@GMxn8#<-hOVC^8S@|16Faha*1d z)(616<8^Imj>`)kzNe zV&ZULS-z8Yb!6xe346r@|F)_98Xq=^BxndYK6YClT|2l;w1}d4es%_mMn0(TO4{?j zVtP`)(g)JVp}@@Jt<)Rf-V5I0RQ-L%qT`lG%W7)3!Xfi*)8!;42|3Y>Y3wuJxV3w z%cu1j`<7qN|eOuFB;AM1p7hY(IY z9V%I+WmgQQ>!O@l@fsuEbK+scrm3I@r*3MR8+;7yP@3@7Of?x_d&rV@77AY#m!cOWZZ*bh=`iB_oLeNI0*P%-t?eUJ zHV@sGC!vgi`M854+Lkt0m7T=P-d##36J}gQrAIKfp7B&@^Yj_{)w@0ZO#AjAhkj5s zqz^K%z-dsKsN(22gK221`+OiiW~*~!q1X2MCRcj2Xg$Z`PkMj$?kcntaOs&|c|XYX zo@YG$d7q+hJ%wQGwAaNdN9c}`SP~-8nIe;s)2}f<(Q5nKn@yRDu%crgN)fK#@-dC3 zVA2ZZ`fqFK1A?DD4>NG8;I7;0*3yn~z9*dT(*(=8O%6v=^u@;$6Zv%TCohfGfR3u4 z@2h&ztBJEhOUO_+DuVCM3F9XS;h=$`G)r(kq^0SNh5#vWIaj{2AXd?7f9fNAxz}PV z@^^ZL>1UfhAGqtc%y2DAez~nj`)pVtIr>ytlgiYdsv0v zhS}hysnA%>E>u3rixi(F+w_~ulY)?KLOKaFS6+Ept*oM_9izEzLIUusb~WMvPVko8 zQoP?{>@RPjypM#o$Ia|i5yNgFJ2gm{N4MdPJ0ABxhxONA-56%j)`2e02nBI2?JiUQ za~tsh@v?QxMPE08dbe7E!sZRclbU_w_d9FvMitXx*Sis|d;jaseijp)#1>m??HkEVr0pSb;gqsF-hXvZ%r{lw1$`K=%m%wKH3Gl7cHgDNqS zYrluA6n_>+iAuSpOQXmBfZfA*K_^`krPi0a@X{ek{RL<|?oxfFix~Ej2#V?T2{q3c z<+CAIW~o8?cr%Y#HGLrX7_WG}oN+@<63AjQTrvCQLTs zn2q>Dp5Lu?+-<~Y#=4NmI@KhRq$i69-82RXi4&@*Iu}4XP`W$PxzsBxI zaJX35Ug!q|7_8tkk$9zen265ax_IC@PZ?ZTwvo_`x*6&ox4a*;xdHx~dET;*NLDzv zv}uU%y@eRPgjop+)?giG;+Z}tPugO5se z_rvL`G%{LpwneC{FAo;>+(i1>EgHE~WIYz+%NdHlbss$j*9}TSs<7y;Bj!ePq!sWs zXpu@{dn(x;S}NUEltqr1tC@Pf2z`R%vTwEBzQS^vtSlV!vfmz5eC)*Yqe3|TYj0d# z9uJe?oA4v<@5bPS!tnGG`e8>Z;9jjXs-K1siuODzTL9OjFDlNAO1*5#W9hkG`%sP3 zHfC4<;73A+agl6>dNnkF)sjzs{xjq&oVnD7N7(d>7ZNp{7!9H{?EpcQ$0A33oz z++oB0D7%8htkW;6Xe65KiQV+?s$m#4>Lb0@P`!JrxEFdsao*QqlzP9vETV5*LRJLu zd0R`5!57}9)Wb&9u;1Xleg(!N(Ef_^7fV#Pj%Zw7_HTH8ur0%d6a7VxsF|f+=Kn35 zJZ!nt?2VzgVtL*amr)(_ofM8A#`SDP75Q+Mr>W1&O-nnlMRQi>pypt7QNHtP95N3&qL3kp49!Ihbovw1hRV_~AFB)2A|@Q; z?FC}RRn>?Ha_?Gw>I$s@S?`OkiT5NS$RR%eKHu&F9Zd z&o`YWt0aNEj&e26^Hbr?j+zMtPkDikwD=%!mQZU&lW8vKffZdNYq9|x(zF%|nTXJl zJI}Tr7-azCz2@z=j9;vQ_IcjA=5(|PL))f&dXvX&`!h}_dWj;k*Z#JzI9Dm>0{v0n zIqnIt#?1Rx+$TM>RFfdo#8IT<-j-{ql>JeQu%4nmQT3KUlQZNZC*JD^gh^>P>f&HA z32W8cpUP=GOTBrY-Jj!z@!D=>YL#6n&wZnd^0Ke5v5QY0&#+e{NBbbMzohvj9>=Jb zQKHRq615{2`e5Y>E^YMa3C)98+A%zr!5B~AI7R*;PRCnyb~KNBZU(E3O_aogk7?RT zz7J#rMasgOxQ-o$@beRZ?W{YGw;2HwF>9%&TCWi+^fK0L#<`tL^1W#9yG0;qTgyLZ_f!qx#x1HWSc{5(Pn0=T#y0OIfLD&F1JG5a!L|?~No8HybQyJ0Sx~904&Q-eH z**Pg?_Jz-N6>O;2`4=8{cZFNd#~9_@V-P8Y2l3X`2{-W&#Vu(*2b)A_O7>5bD$hnM-7dtZ4*rZ zr(6E&U`UXRg|bYpWON*zuPz&$ISF?uz<2stCPXD241T6a-uLt z+TG#dwI?(+!#m@D2zCUG^@1t&uv`DcpydmaosfP+`?dA5hOOX35&*!un{QhFGCrqZ zw#ZWmU`%-}_}Q(w?_Hz$gTUPC=)ff`hcId~BZ@ghBS^)R^ccV5JoUn!l$;@4>Yue% zg;T++(8T@l;dw#m@$Tf;B3sT60xmjc7Ye@yp#~|5#*+xOtPl0JSJxApGw*Wr9(q?g zf{S8o59=QZZB4PdRL=Qre!KU~GN=zhNUW&7!u{v9@_Dk;X)oG=TfhjI!-~dNA8Y^r|;exjGehzaQdFtn1fp-e_t-AH!QiBJ&|g&{8ytj zyIdVBxQ{mJG*+u+I>%iE8Viw;V!LLje9<}D?DM?lNQFh6s7Uo=65+;Mn2568tliQN zi97IQXtar*)hCw0 z_C6|K2ovTYNH(@~CstDP-pu|c7GU!!qHoupub<#x%6WNYyC%>XKpU1--Y;Llb1y3a z`Efg|uE%S8p3~f&o4`psGDV>Z=EJ8gMl*7$#43_4l;(~ZpLQSNW+MwTZlqo*bSB&x zY;Dz3c({0uS)Wd3G%PH+LD3NQAD-HJWAO-HsXYQ+nLu5Sl7HnK{__6zq70!p*i}FX zGsG!lA&khOtz&))=$em5g=+^V1c=Z*0#J)41ZRM?&lHX`rRzYSL4_W34xg|tebrsV zZ!+-Q(d|y8A@rSsS#DDWk4&y}VU5H3k0mq3qz8FrA1!OG?2DNT4FIY@->Ko+zvBNa z+)kP=8A0s9XlH~%VjDhsSPsENGkeoLr7u1l{ymF6xZ^&eypHmkMqelp6|8Dw-sE#q zXnBeL5FsEyDZVide>wWJ4gSI~VRb-2NQ4v%^UtfE(htm#%rZz+<+&hqduMq$JzH}| zuoK-Em@*fQ{{3!8#eT4r<`PMv4XOHmuVW+QDgTk!SwilS^YkMKv&mzU~#+4|8xsZp`SI|V=t4hW3GhzL- z9>2(9QIrikEj`qV(OY{Xf3+|ho{mc+oLoKpkZ0y?S0dh$4T2h06ap2akqN8 zp2p(%{aoUQfL0x?eM1|S7U$T;Gwn=}653H_7@8Fp$WFFX*nIMk_Dl<6r^$ce0Gh6? zh>~vA+FmmV^btey1%q+vJ|3`%5PwmPxBMLy?<2)ggAE#*KTFY%4}{9PyFH%^voED{OYxH z$H1NG^>{HG@PcWhAm}{mzcfdLuu8}k=(;(>c>$GrHgS2iVB5m|A*#Y%_qWdJg8aG$ zbtkMZWcSIqC~Q0Tk!m=4_V}Q;Wj4|1qpe}Hdu5fbysM%Vu3EZTCin8^{_vY#B%e1e@&~!wWn?ey%?S(EO_c=x z5EDGAF}!)F#mSP~UxkzxmfF&Nuyg51(l|w)$#DYN zRM|&B55d{NM;j1%DgIfT2-u|q?pmK9DRAITr7)K0&&JuOkHE-zFOb^3&6q^ZJq+Oc zou=ml|2!A{+?+f*FJaFW4Pb#7~TM)}p43a-A7%u#E6!6{?Z z@66D9c>S(9BgYFMN`_}|sdEOrEC92gE+uJd!q9mQD`0;*mn(V{V>C(6An2d(lGvS! zDHZL^<5}K`dBR-jd0pB{42ZeZSnUuz?~8{2XAOm5R~t-(;sqUMUQ@=`wKuLi2`;$K z6HNRozHGj!th)VCf8;4H6dDzKrm*ISt6d?SyyDeqq?<+86f9xiNS1mev1G z^zgC2692Q*lN8f#PRGQ0un`MksR4A@Xf1Kby9=^27qIKLwKKtUQ#5&IU!$k}QAoHZb5WO`r}+K4YmmGXmYP+WJA)_uuu#K;qcZM>KfJowcEnsLlGI zfr_5lc`V4P-)VI7vFK$fK2M4~$WHS9yp7dv6{p6^_$H+y8DIdIa+~Jz_vh+_~ z6!d?Yyo}g*%*yF6fU6>cJ=$|8s~$a`@jjq%sCtwqw%ThDHjR@p)({e~`yHM=jIHRWYVos*CtJ6Ns?`47eQSj^ zuj_mn#vv?T<2_a@=NaY0^wW%(niPK;?Vg@lpJ7l=#jv`E#qE#j#Sw!uen^;_#CDEU zzSh*yX$fTaxKk_|$nu74R>-S4FfHK~#A;}KAk9kk#yNzV|L(>Z|M#K}td3U!p7+oK zil7ffC*e=hyNgOWca5q}!Tvad+SO~}J!^5KP^4|=81vicr&+^M1#vZVeJFPla#Es_yKue!qL3bh-Ez!Q?%W=1~ zwqIZ&MipiE0<@Qacc1`}vA{{j>eX`c*h=j~!%I5e^PBs~?wSS}U3hS@o75Bo%V&#k z<>~SCA5m^fa1X51_TB5~z@Ip|8IN0-(%Cr^X#ZXl$V3|n(U)25_ui_CIni6^yF= zbi7T(okod`vnh=MWcasb77Cb>9!z zXpkyJx;vYS%3gj5l5Pmsn6ti|k^8z9LW)5a8|&9d;B^Ld-6kRKS#u#+fZZLQm%*v^ zwLxAR`8$Om{(bDwiXyHWm%fY3fVDNfszl3oEDmi9KA_7!|1K-39|%aB5BnJcX6*aN z4e5|7Hgp5x50kD>a-H3G)eUPZ-y^@Pu(WpUoQqDK>$)0yIb@jP5QBBWq%YcMhON^) z-VOM$ZGlh1OqVQrOH&7g8*O$Po^jTsA3JPcviBLVRgVRB+T_l%_|M06Ak!J@o35ai z)qX>NeQ(2@MpuPdkCx~}IM4>}h^-kO25J7vea*+Jo!KH?pPhC&ls7SU+fQGuUzJEG z6Sim8mEmWkPBWrzMAEeJL*l|MYw2wYj0=N)IjE8;%6Ax{k}yq%2~mF`+t+;lgBNnF zbt((oQ}djPf6qCE4KX2Gy}k5Xs&lT;L+c)-sQi-jzHn6321yb~NRu@>9?ZA0+TM&K zL|DXimDRAheh8K7yk#H_o=kS;lXL9FZ*nr0{pd5Uo^_~=AkXE z1PC)`EhJRc8xdRdN4zFoO04T7&?nD{`!^Z=PB9smUD)lnfDb@Bk!w!Xo3$;x3C%EE zUrd0e#$BQ`tb5@^8u@ktGQwK^uHGQ`yqh0jW4J%mAFg;@zg@x2g>O9Iztx|0_LgUM z_hk|ZTyYfdtHv5L;-PtnKEDy}gZemspAK|JPQ10q7^m4W9)CIk=)scUa&kdOC*4^t+qLmcCPO^P0U zeE)VD&O(6}a5OxBX=rp{{=lQ8n#My8H<;wmV^zg_s48$V6xBPRxgsJwa<145JM48P=b+P2xBkmWY^q6ZE8gY~u&g#W^K-2q-6E{+n=+3)l_t}CxCZV1oe9F%U7 zYEtqBIwkW6Y9?7CzyVGA5x{E&95tRKRD2v`3pI9z0;w9=0d*r4T+F1gXuAH7jqZJ_j?T@|Bjtjq^NNP1dQrNIgognS}#ozj0gABC3%Mn ze5kzoBrzWc+&*8q#Q~)RP0XxQfktTVZb$p?8Z&<^r~0}sxF{UC zcL-PMw`{Y#;VzV0?wGmK*LQfE>IDv_O1S(Tw&5Ib+=>Q!1g`mgIAEA<1Gu_AuHy>Z zkNYgS_W!j#Lk4DT=R?AiHjaQTdA9K<{5W621q8mFyF_7wC>Qcg3P2p)cQJ2WwIm+c z@4=>E-0YpEHH5T1&`Zh7*`4`T^i`wI<0Lsxt0JI)cBoqv*}{TwPz`^GANR1Jnz}{( zhb2LVKd(9ad^O9c~ECfi`{6Xj5oMC~#*&|>EKmny1rJ7xVXrDgQpzuk{67i>h+ zi50_Ml>n6EJ3H#g`(>N&^o=aA7oF-E)9t@5wvEvnZDS+L)!^r|p0_oijU<%I$fGY6 z%Ly-n-f(VL=cHt>N8U0ipq(Sn+%M2G;~qoP^;zkqMULpAe`lxQY|8fkH1^g}ZFO7M zcuPy6&_Y|>TPRSx6!#V>EmEMkySux)6)o;s++BhPcPD5dxCT#1etGWwz2AL5x%YiC z&N$wNXOty9G$Sk6Rx&yA?*{)$EQ^%E{O6q+L6<>*LCMPZReNn z7%!|z+wrmkjxEZ(+F>uSTzpql*c%i+9?J2s8>I ztPV-GQ#8bmp!%0D+^-5aO2Vn&JDozUa!EYEW2-DYlP8LMLQNtMFGaSz(?7(k%!VD-&Bn}-5o0bMT%iJK=?^;=B1*be_f`>fE^NJA@ zyq#c9$_fX1WToC}QBlGc$Cm`*79!XlaPp6cqF+V78N26=K5}YBc(Kn?T4M9TaSePR zb}O9y?9o^YXXN;FqE1?Kd{O@_r+?Q#D2=MOobnD z_h%Abw#JXXboi0`91ukOWQSDNvF>0|OWIZzt~8NdrG3KImcQd$-^;+!84ipUnObL$ zl)ImH&VLM?!|a|9*5;Cgc{d2(lz}NWF?J!6O#|I+RQI&5fYNRj^nWs?0^)C9jHb6D za=R1GcoD*I#abi|iK4p<=7!uBu7$QXRYvPxQTDIzk3jW?m_hz{bk=TXjYzx<5tJ!8 z)J0|k%qQ=4kPoq-%5Gin&Q7i}B%Ubw#Ph~X67A;(F^IDn4cT?F^y56Yt8LEJm1?!g zY$^H}f5Gh+EwkIX@L|*JsYN=`PNCkX!fQd_^9y<)hbu(oRaachc(lYY*VH#J2J-%O(6BGq2CZUxdvguHWd^m#{fjx9!)v zWIhh3-yf2-kY|-R7T^*#AH<~I0}lLG)LnYYnJc8@mN6Tf1$gX}^YV$K?q*0&!~G<) zZ)y2kldKD!g?H6D^F|p@mqZ!2hWOJ)Q6#W+s+K6X=OzEB(aUT3ssRf~?L-*NR9HeT zZ6AWNxquP@%a-Nq&&kHq9&Dbvg`?HL%aar4yJ#WFP7(O&S@dFYj!l560qQiKRnuj0 zmdlAQksm&|5;PfPw_pCiU)t3{pVl2*mEnLl_cH)#ZJ616$TpBH(||t0e_^wh&*b*z zn~MZmTDHX7=lw~GgXDPWD_je9vb!$9;o3zOWXU6${1k+=+2pE+ zrHVjOOmsAQPnTbeAWqgETQThsHB<)$XF z*;`E{jaLM0&hTMbS)iIYl6XGLYY_nEJ0%-1uwB7p>+mY^9U5+0%y{Udc?AK$Ne)+A zUALTD6wekf1HvWs7EGdcwRmPlj|0{o*3X=U8@WxHT-&vg8+d>&B+T&ML{CsoxW#rT zqHrv~pk7Mv7*6xU?&@Ay*_~g&m$8!ebfKgvU|A9kTmpw8w>FROfBsEU#Lb{zU3V_cAD#-Uw-=zo|K9!M}CpfOh) zH7q+(a4f!ysnk%~`!&Yi?tA^*1{1eyZjlpC?29Fv5FI@8o;*u)c>uUr0F7OdTyLzp zO4Z~k@oYpcR+KqRxltWfz^DMKorh0ixZ)HPeZJ=PO!ZAmf?B=-$13;ZD;dHXqo)=u zPNB(b{%s=ljlqhz?frAT8Typ9fTvb0kqY9Ueka`$%!Ih(6ES@KMVFwHnsVxuOFiNX z44t#N%x*PZJ4>W_^Y$?+&0qcgS@^2n#_~b-mgbC5u#&1n;3loBbKyP>P)Z0lEoN0m zBs?GWFKJ5gTkCNgdE05j+>Socqcgj84D5Hg1sX7At@seJB_S+*ZP$4;&P4~B9|7Ng z(|hsUO3iN8@lcZ+v7jb&vbnw=>ZLkyc*}rbZ^zu4C))*VFLvK=_!{t66i&I_sEyq% zzau2xy+j#m$dq6JF<5jaT){Gin`&J3BtR53y|Aj`qDt?2npfPTy ze-=c7cW>SOEt^98K(+^m?$;x5y^X2xsFVff z;qHzKKg&*Q`Ek?83;kTmzH52T`9AJ~BlpUlYuDUx71t{f@ABfIza27uiLI)e0hjZ8 zY_k$0_aTI>AhM=U_cOzGfVe36V+j0BnOTBUek4ellTAxfLO>EC30Xz3AmRl8MtLe% z`iLmW%rX&rXTD@*Dqq~*(r)pdD0VXV@-wsM7aE4Sfik)Aiu}?ck?-L?R+Hi;F z_~=kE^Y{%h8CtqrI*+NH*%_~(72pl-+Vm+8cU(QP@?ygNZ1WlX@q>@6>M@2QPT9k3 zcDb_<*}nID9%Q zdh23qyY71~`@1bk*v9iAqC58FHL`Qd6^iohMyFW3M{y#J34OOPbLDoIlrIZh25+i zuCJUQb}O9uYX1o>b2&`kX-8@xeJ0!v&F(B|EhXiwZ(%LSC?YjvQTMoo*>tgqD5f24 zVL&GSNrCZ5YZjJo?FarMKVhQ!*@VXp7wNowjK#wPpNAl{B?O{XLNS*P0J$`jI0_OyIheCSx@kM4VC@lv>N2F5Up5z z1y4arMvtj$h#>o`fZ%od8rToO{&(TcNFX2*)=KXS(sk*814bLkFoVz~WpzcG?@rI( zZMcGwDc=PE!Me)O6QO2s6o}8SBKYaHmJO(O2lt>8!QXD;A~?R=$pY%MXF8?o2Sab< z`C&LZBQVO&pBHgo3$K#~*MTo_kuZV7cV16rZkAHbB6pomkj~D|nUOpIP@Pbx9`uql z;z75U>Vjv>{Jl;|SIp(~g}p{lyZZT$ONlHjcfub|7M5GZ2O>*@S=AiKt(ml?GV9Bd zbNzDeJmQ@aqPPmvjysv>knn?B1)iO%YqAj{vmSMf^{_r2EtA*aM9xC>#c65jeV~6O zu*P1#W3Nk1+SVbV4luq6R)=4LzsQ=btyCq7Tg zFcy3%#k92!xsx82y=H({ohPri6qh!f`K??7(3;FUT>7v-vVW219)}6eGZGb)l1tE2 z6-R2$>%X_8MbH5Q%16?cfi=ssl~>uVhrGB_&$02MfRo>^tMpU2y2dO`s(P+**By3ol=;a?tP8pMkYU#vmKj|o?1OUhr&YPY(T&^w1 z`+mQh9SlEdb9+{4=UNa3AsQE@~wRNdgI-dpjRUSbiD zGL+}K)zoW3*M6+k{;}Wp50BmB+`u$QA17k0ssXOI*?DV3zS-NXDi?74VCI`@T*SNm zb8<&zSJel=z(r$&p!NG|7PR}t>%Fwy=2j8C!MW^Eq%V%&Slt=Cj0pMUYRi32Nig&v z*ov|8Tu19Pwxy&tWY^{vFl^n&k4ScKC^Lck25WM|s$W0Q!6^q_*+tOqo@kE?`QdV} zo?3L^UQ&8?1tR*&>|wTzKd9f@o~%}zL=CIB}*4QI{pmx(~( z^4v#ZE2^%t_rG*6p+J5H;5qT(JqP6Yl>6mo!q$az$7A2BGajaIQ@k?0cOLi?h7kaD zR>82US8)6FIumU$M&&^0A_9*7*W{@G<2Hiz}p`SySOSKYn(?u zWyZnCe>n5Z1JK;I%^Obap9@@k)KP8kb$0b`LtYr)%1_K#p50xd8j{}5epwk5$F?l*c(eL}u2sp{Ki73QF()i4 z@uZjWJ~K2(<-cJ^o-6Mjn7zQ+JW@yc88EKB&I*k1H?tvT@-3$)(0tWFXK0vqleZl8 z{ZptT*rIkLL~CJt_g)SJk4=eLAY{$tTdGK+C%-x(6epmJ_u}vw%XtBf+-1f}%M=li z+yV}`>txv(js#%+5VP3JpVvHfbR0oH0FP}PZB05v_-bxs?Xg#UGWSkL2?=fOS$zV=glxc%ly4sbU?&xbnd_Fdr z>BZ4C?NCw)#18RGqC3Z55zH41+KL2{pT>@@)UDD8nQ2Y13v}_xduc;v2s!%8UG+a+Iog;t$wbFH+$yuxDkCGgO-J~9BWowC^|bQiN5|$@tQYo^J<9Y>Ex^il z^zY-}@1%A1?<2mGrkn85BZ`==Z@+W*v|=@ck6sowJzyu}-i@gEa(URQ7h7d`8V^f2 zMz}AXW?tQ0<-eBlAr6b?G*qJ4bsW((N&=wFZ=-SOcsB|n_Ob$?pCQrzc92pbdj*sg* z@<781%eUzHcke>_DdmGz> zN*_g1hyU`|{pV?AEvlD{e@{zy z@$A)^qP6?Ro4W0w?Dl4JXne^Y!9nlVpw#yCMJEH!l>bi{sTjzi=3|Ya5Z?P2rzuWAe zp0oe={WI*uikI{{o67W1?rn@Kdirde=&Keb}y+ae>bR$TYMqGOd<|a1fy16Q z+~okc@MPDYwD2OW9bJVtnbQp6XkgPwlFoRHDe0&>f;nJr+2N(ka;<)f@1&q=6;)~_ z)e_&1(sQw@8jFCG$iYeg{QkR4p6oO`U_grkzvqty>2jouvK0O2abO@KzKxP~-vI?8 z{zmLrf7VMTL`^OcyOHS1Hcu-2A<8%@^{E0$TG>eRe)%1D{h!KtKlJfqra~7j*cI3u)TqLuFcOlhUmfwLm1uKLyPC`M1=7pDz$V zb6=eQzSjKP=bUIvB}VHu?pnLG4BKunm1Xc4mR)Urlwx=7rvXkbhE{d<%8!f@4rAMm ztOMq&N7jz&GLOUZFeeS-)w!ML>H=BxY{XU+l~5+bibE~X52T^V(y(y5E8Pj> zM$Cc`EulH;yj*kla>nYQXt5*bm!VdCn{`}=Win2O&Avna#Nx)0V%|YWdm%&>9KGz6 zC)sc*^aij;V)GE<>n!YNJRo7PaK`arrf4t8q)=7Y7*RHh>qph76*jw5EE0=21~Z)<7}QrFd7PDjQ3uzHO*#=xlN^Qocc z(xCj>-paBzJggwqw*!$6QX?Q;s=4My?zeTuKIeV^k38`&n(9AX{*7OL0Lg zk#WtAvFDu9e`x7@FafC8$^L`$1So5NcmlwFe5`sVsYhtbK}T5oKF3|k=XT2L{Ze`A z=)5t5DUE|=sbxgtThV&_m?-6dhw7wl#BSvXV1=#y;l6n}o;5@G@Ed*!n$SM;mDiUS{{NZW2N%fhkh>@T_`nNIm z-@!wUHD+Jw)=4zI*GBadZSN5*rKO^shT#xxD1SD=cKxShq7y4}F0^zMSUt@5>KxrB`Q<%#&@VYsX7*FTqDBjCz z*ywmQw(L`O3*G;04Tin}3`*9sAp0h+hf-2>I^{ZjomK4>905+b*AhGoUgoOaTOt`8 zj#N$W+F!1%``hgjt_-*pj->8@MQiR9j;j-IK7GHAudkQ+5~`rnF`rnxw_807sVyA| z{;}#T$KR*xuwu<wkUnzovOhTb*^0J~!h4G+&vi_SX zRy8LD)6)o!gdOkYr#MQK=&5A|2A}rRxu8sz+}x`_y~fDQ#)wvGKK ziRSM-u_GQ>FS$<)y~>lxIatD^9Y;hINlegsmBI+n*}qD2tEq}Z>T6j&3Z<%v#Uzi7 zqg0d`+B71sl;u5M*_Q`%`*^*)_B8C|nZF)b7T(J)?3{kb-@prfxOkATu2+ecb>b4% zeDy^*iBH3PJ;k;L4K~~!?!NiyVBhEC$pK%F?)*JZk{Q1#c}?-k<#r&k97Co^xOctE z*4v2q7aFXp{<6ku#+jqsC?TcJoK3Z5|IQeeBk}5M~u@aRbT{bzyh5Ax2kX21Uo5 zgb(R{Lv=5^uWs|A^`4I88@QZnTd` zc&uCA;4{;YEcqa3*PQB5teT%uwl(*`UEq@yF`2$>M@^6;toY79y=gBB<3Fxp{}p9s z9B2(HK(NUDp>5j`Os=PMfj~kCe?MYNLt%R)(uPz^D-kV=;HbQ5qoJAJM_e_+r)EfL z%)Yv?U9~}G{pey1D-@!6e}G8x+YjqFq8am`2>os&-AwaWI@3De6A0L7TyG969-&{c zRrva*tUu|7W^=OLP&hB2+o9|I60ijlTr&*LW8nf9gZe%&?y#rC>d9vgjbonNdkPNO9%qr z_8w>)6ft~#!59HAT;x=L>2RAfWTZGcbLuGm)H>{{D3HYR~HpaiY~Kfd=VN0X&Yu+ zmjfc0m@jY*!D0V4E&SJZnIrUEt;B9LANvVg+9tQ{10SQer)BpHmg{^mX2nm_4rV=O zbm1{NGU-iLRcT?X$7p1w9sFUPqjE<+ONc&Vh%`G8x&FjMv7&24SAIex4bg?k@T_+oUFay4 zjkN(+x0hcd5?n#5+7>&487LbVCtqb`Eg9Wum_`jPIEsO0LDNzk0UZuVEpwReTJ)Q0|lVU{#HFmrlk|lpnkh&mz zN>u6LS+qK>?>5nm-36P@BWCi?{jN4o>NXg#FVUYE!>n(RF)P_fJR?WXurBGGfB4Lu zQweaEtd*Ac9OX@SAQ7W;Day1rL&d4J>!Hof+)TVTgAr+Td>t=tDW|82D;yoTa8XLR=_ zbQ=fS>uYh7$1{#jT-FD&0L8GRW}~};Jj;Qq`i!Bn=Y2|0#py)d6I*eF{LcRf=owy0dYD_LQL7hNA7|)T)2@sC5&s7jw+oF^6ZUO8; zfMwVfS)qzJ!aXmoJIvj51L@*A^5qWk6higOt`g9z}HgyR&q%oHTum1OrLsm!TWv!{!{Xnm$L4zry;*MmX!e4p}&TJ|0pfzXu{P)+-u-9R8)z{d}F&{E+dUiJxdPTl=pP}#cRGUT1H`k%%Ud~^L z=2RSN6wx3?3$JQR7L(EzjanOvEKG=Df0p~~H=Ec84p+NpVy@^}RxE5ZS3_?`Q+Ind zZeq7|`qz>yjpCrvU@W{|J^C?-d$yh_iONI*bGYpE82R4hBjBPqmn}o57BLVqoRoHK zcp|yF4lj8EC4`x1)vApFu8a?5D^)!60dSm_6;aK4yJ>7z(YL1f-Aa#&))P{qv{%NO zvE;a#`lje%%ySA8ROE}42Gdqlj<&mOfX==m6<8MXa@F^P828@-M0-!sexeOjx{WPxcDG{<;C7qbtKTP z`q>**&#`%6Yb;RjMT|Jf*=>=Bv7VHETsXMO_Z{YknCweuhjaRK^3XA|M6@#?3lhCc zSBz@dQpHq+PN%GU5p+B-la7PM02wQCm{RPo8a2@T3gxn<6@+eFn*U`2hIR~$#&<}Y ziA-hSTaIoCJF@H0Z_73ERn+$vX5xrBFPgdtcmL*60nu6mrf0)sV$SA{j^$GQ29%n2 zba(d&|Ej?&-Naz7G;Dx$x# z;BK6)lgcANulS+n5E1@Yo&22r938`F1?QTo6TF)RHTI;EXk~W(PslajMN~o``0@n! z`PCZ7p_^)zZurM+_4l-2%+Mq_-_+I1C}A?E8qC|(8}Ga=gLK_%5dw!lk&W0DB*DeL zXi2T8lpjzH6Ds=1nyW!LU5m0J16g=hOnEC_Rzl>U$?JDZqqWu{o7+#2&+oD|yJ~X^ zt2jq$9$VB8ssG`_S>g9>iMArr-XFhf#*aWZKp0kC(?m)C%1t>H*b<(EBJ{WI1fDe+ z!lf@qv{IZBkjX3aNupape*^OPJ#~5am_gs!3p<;)eB!}nMl}{w*!ouzk*T7-imF{$ za3_4Gx8;YhN`l(Xh(%}#=7+}(SVszZL|0Wz6r|Y(Y z%T>=V98~sW&q1W)`M4wfjJckKR(q!B2tF-XRR3k(OKn zz0j)R&ptgReN;0)f5{K3FQ;`)ob9RIrh-x;VC~`2C*e9?Lw)dFc!IZ5qc>FeP8p*G zY*5~s7vxN~f*@>Tj+wP$Q*W|w(G3iyYMs3DUf{SCLYBZzh=&Mv{tmtQm#|s$sgb2& z97V!rKM3P5j{|WXMj}0GEa>}r%u9IHWJV7^Hk%zx1w<)z7{f%auo9&0<$NnHJ@7BBz=mZIhh{38pIegi-9rX@9 zw3M}=sO-VAv6LcV9IG~X#!|~0DwNcXPcxr>Z0i}81tAHn>1bcy(s~eWnpmSUU)b`A zS`5Bp<0WgVK{k&`3yS}_8~Gex$t}IO9Vf|3`J3t}%6P4;?ZdZDE8i6{!pRG0(zVoA z`7lFh6}N(w;eO$c38YCae3$RU{7YFUU*)AmHXlopFZ#?x>&c1lRd&mvzT;Td--@=c z)OrM^aq|Kyl;f#f7{S9;-~@=Hw8WCqrI>~L?Ww%X_g_7bye5Vs>uX8cQl9CO;)%yypE@!P?Pz-7tQ0~MSiCIhnK2We563-3>BZ?a42 zFcefF(?+WU_9>CG?5f68@#E&iuEpf5QW0^gFu%~-0&!n3BPsI}9Kup!K( zkl@dnQvHH8wklPDf=y+m%DY9Dh)9H_%{`?r2z5#Zt|`h&hQ93>%haj!C4N{F&*wY( zlQEL}u`@1v#c4&KDZl{)Y-S|`U4s`vOs9+4K5440pPRqv6G_;{<> zCroqRC{EV=VfKZ10+eX#1%SQlsjP_DRC1Z#l;n6cdOr-QaZIOr$lr^EYKw5Qqbd#mi~RVv5B}lOZ&haK zp845bw+m^hwGsEX@(|5w;7^i9SoHJ+)ih~nDOZ+G#!+W+F%17EouBOt*Mf)haxAzH z38$x^NG5;6*SV@t5tkXdj&W4MENh*`h(0lI{kl-iot!-|xQQC6`sC?a(BoGx;ja*3 z5$E@`HOE=$IP5PRAm)(y5Z^C zY#?n(`U;kW=b-eS+rrjX-i^-eQ8)%+{d`Rwlk`Xv zVgl>z_v6JD3tY#aCbRnq#6DwQcIJe!8lk?(F=^I0!ZT@sXt&%XT) z-Q{B(rW%Pk^-g(92=1uxq;;h)VS;MWwjl)z!AiM7u|$&>yUM0gPz}LTs4(Ae|NWGY zuB3QELy&!OK*)kt#xZOqtW6HV8$Ww;tasmJM2IZD_R>Ux|?cb=)i>pQ*St2v_Fic!~IdRjyA$ZE9h;$Zd+7rJwXS zD8udho5_1Nnko@#_X5k&#lGK+cmnT2X36)+1@SaB&880tdH>j!ADUOU@CV5Mj_4O` z3~}r8-4TrV&_JxH#6DLqIQ<#w7q@K8{`-0&1HujwmcCc}GcL=s(j&f{d_AFJ1kkYN zcz=46-FCBO6)g65V$1%=XQ^*^oxxBOA)xh3)tt&(kKo*^{`P|;{aS;p56fyECC}2* z#^+}2yq8KNTUP$Wx0;}TUJ*-VW}TB(vG3-NiD;EOW?vvc^ss4p%T})LgFk+>E%h{5 zmEqy!T$$@(R&~XAbjrEg%h}GCLv@!6T+}B&;KCPM2w2tF%fa0fx^Eq%wAa=y%cxpE zC~8(lzy%hZ_|vWXsm8NvLN)Oac;vsnx88Bl^`P8uT!lmw_q_9mj8waf=cFjrl_i3m z4B`E!d9GovvA%eKuIw(0xL7FuwURh%E3a8bzx?~cEf14C%elb2Z-AJO-?(4?(yw?{ z`+bw4KZ);0=cm+{W5&Ww_ELRMQ)_Fxvs$T8zTYutmdPp{i;d-y)mn54v)`s!)VkQ;~e;>DBq0;acl%2F{-4$2c*O zj{>eNjK@)A0of97gi&k0>`eu!F~X7XO+vjDpAcfO0@YNB1>tz()giwX_cwMkz4q7D z7ISVRmdQJKYdq4OZC<%$3%jL?O!tMNWQ^8yO!#(Db4~3Zi!FJ#okbNa=gZxak0gc? z9Wm%aN1c?PYDW%v#1S3a?0V{)vbA0%)9H!$JP%4RZAZ7&y2G!GDe*W~|I)dC6?yoL zt;+3jktG&1WQ0v8w3M_8z&Nn?wSP-GBi*-y)foN4DS9|B?320%Q&Qd&nLL|)S6QdG zs-7>befOK@tmLNZ?APc$q3iEerfS?O*xpe7l5k?K^s-`)&|Ko#i94pbhp2j(7ZT@> za%1Xaq9Xy9s%x-0(NxL5Gj+~IyBNj5wArg^lFgU5Lnobc^!dMBD7lx5KMWdc7NJpA zTRg_Gq^lFnD#3P-TWTGwFe^6X>nmz4GW)evGL!fAax^X*1JmmW@A^ z+Jn;1ogDD<#mAzIlN7m?q$^RPR#Kz7kzShO{l z7LCl)|AH{x*Rkj|p`h#PPIA8wTm_we{G z?~)A!gEGV7BUr*dQjKV7B&vf*+4_e2<_jgIA$B(QrRCT7ozq)pNc6R7z@vVe|JfAa zB>b3xr$$H??Oyx*aK0T|qW&hYHbgVOHx7TJU?;dybQ*5f&$r+I#U{Jdzl0H!f@v$d zT5hPb*0@uZGp4_r-{H1dz$oVN+A^T0Jg^8=_kpdosvUOtN3yCAuE9VMb}SmZZN=PC zPq*+p?82C=%*W-UDvB*ZPky^+yT&k zYJBMTznyHs!76UdI)s3|vU|RO>ORW7OCKq)l@X7PF00{Q5m~2C9eHME!6xKmC3lJ( z({*1bGfw^Ywwiz8n4G%jeWmiI^i!-;p|9EnEXS!@?{*CQ2W=iOuCY9sxp-7r?1`xzzfPm-&s!Lu{%i!Ye+97>WC&_jIVbdB+t95{Lh!4g;qnwyESHG4$+S!$b+(#f`+5bT!HOnX>#UnzsjU*T!XEu&%Sxt< z{l9eJ#!;Um%zx%m_xsxZklCuOK$+o=C*hA7>^=K-W9Ze;m!B4Wvr*DR zYgSXh#GhVo(m8(vo1+4U4P{E-dqBFL+U4A(g5sk)TK}qcI#Y~RwrYJ~g72Qds8)i7 z{^zL>``Pq$EY@qy$mc;fl=HhG+@0Nbc4&A0+G!J-r_{gVgSm^$4OM3=Z`z)1orGL$Zv zn3vJM7v!F)nEQ35y5^}}Il%t6M&MO!Jg#Q?D@@a|EJ#R*PD~ys{I>E+MBLlIbgpV zMroqScc1}=*LX(5!_PbqeAvG#ST+J^^&swp=2o3nReK}jW%mPLrj%(vUt5Mf~Vmd$X{&QgPCRZAeUU$-~v7Rp(ovOYzvx%|WP22VVcvF2q5mIuN94%3p zyZ5JOGmsD|UUBdint4iN$f6Q~J?9R(TQ0UQLrS#IAwSMrM{gb9u45)4AFa0Rqv+~P z{8UsWy)v=zqPaBAQG5T|Xn9o@z-cX1JE;-BrltHBM*{WupPU7Zs8Ls)j}t&zV08mA zw6h-g0k7sY24vlXtLEunP+{@^f(k8qM(0D+112;PMNA#_f>oe$HI`qrWHPgKjQHHT zSGw)GC(J$nXnyuT5D1fBo)*mZ&Tl^Lf#Ix9ytKLVo<)ywxjGa0fJy0Jh5q5>SuB>P z%DGr=iCao^!>h=VFOj}Q=~vuV8eTzh%e}ffUij&004gBc<}Nm>tk@^mr>Dto+CQ`{ zP4khNZ?FK*CE+Ly;f`(Cn@hKGaY}V;Q*#&A^h^=WI_jFebl-+h-&N{+6!4U_bjeq?`l}y`~E$QT$g4^Y;A%O4Yd4?@&w&xnm zc{5g4>=quVZf2_KfAo9`d0K{?*a)^_fzMasebrT96~sazRCnSC!$DZnt+yw>EvCop zTu=U_KS*TD>*4jnDl`lhn2bo$ZF&6jU#}9pxMrMW9eI?L z;dbJqcZn(RWkgbMkP{uuV2QQh8~Fc3S5Z$4C!olWh{%%}$meoQz2`l%As9tGsey;C z9J(V>E^ZR?G1=nEV04b`!^Zjb2p*k`0MR382zFzf>#vqRKzt2BbYXH)zdlJKdDx?| zabxzC6DW~fw8j$eDKxk~_?W6H)CB$L=R1L!xx@s11Es=6ABrX z6nsY&! zCDXboc!?5YwnG07ETnYDMdYKr?LvJ|S8f8xFwFCGsQXxiwi%-s-E~m7`{90aL-;axqoe7 Date: Mon, 2 Jul 2018 22:07:07 +0800 Subject: [PATCH 54/75] bugfix (#92) --- site/CNAME | 1 + 1 file changed, 1 insertion(+) create mode 100644 site/CNAME diff --git a/site/CNAME b/site/CNAME new file mode 100644 index 0000000000..1ac261f54c --- /dev/null +++ b/site/CNAME @@ -0,0 +1 @@ +graphql.cn From ba2c27786431e91c754aac43b2f1cd982b760b60 Mon Sep 17 00:00:00 2001 From: Lj Chen Date: Mon, 23 Jul 2018 09:48:30 +0800 Subject: [PATCH 55/75] Fix typo (#93) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Original version: `A common use case in GraphQL is traversing the relationship between sets of objects. ` Current the Chinese version translates the "relationship" into "连接". --- site/learn/BestPractice-Pagination.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/site/learn/BestPractice-Pagination.md b/site/learn/BestPractice-Pagination.md index 8f2ddee889..9c08f2daf0 100644 --- a/site/learn/BestPractice-Pagination.md +++ b/site/learn/BestPractice-Pagination.md @@ -8,7 +8,7 @@ next: /learn/caching/ > 不同的分页模型可以实现不同的客户端功能 -在 GraphQL 中一个常见的用例是遍历对象集合之间的连接(connection)。在 GraphQL 中有许多不同的方式来展示这些连接,为客户端开发人员提供了一组不同的功能。 +在 GraphQL 中一个常见的用例是遍历对象集合之间的关系。在 GraphQL 中有许多不同的方式来展示这些连接,为客户端开发人员提供了一组不同的功能。 ## 复数 From 30d3c6bc7df1f905afbd302d624abb3a7a117d14 Mon Sep 17 00:00:00 2001 From: Lj Chen Date: Mon, 23 Jul 2018 11:31:42 +0800 Subject: [PATCH 56/75] One more fix to #93 (#94) I didn't realize there is a same typo in the same paragraph when PR #93 . This PR is the one more fix to that typos. Original version[1]: A common use case in GraphQL is traversing the **relationship** between sets of objects. There are a number of different ways that these **relationships** can be exposed in GraphQL, giving a varying set of capabilities to the client developer. [1]: https://graphql.org/learn/pagination/ --- site/learn/BestPractice-Pagination.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/site/learn/BestPractice-Pagination.md b/site/learn/BestPractice-Pagination.md index 9c08f2daf0..9d14611d0d 100644 --- a/site/learn/BestPractice-Pagination.md +++ b/site/learn/BestPractice-Pagination.md @@ -8,7 +8,7 @@ next: /learn/caching/ > 不同的分页模型可以实现不同的客户端功能 -在 GraphQL 中一个常见的用例是遍历对象集合之间的关系。在 GraphQL 中有许多不同的方式来展示这些连接,为客户端开发人员提供了一组不同的功能。 +在 GraphQL 中一个常见的用例是遍历对象集合之间的关系。在 GraphQL 中有许多不同的方式来展示这些关系,为客户端开发人员提供了一组不同的功能。 ## 复数 From 0a534a5b9b5eacd6951c5a6c14c657acecc7ca42 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=AB=98=E8=8B=B1=E5=81=A5?= Date: Wed, 24 Oct 2018 20:23:19 +0800 Subject: [PATCH 57/75] up to date 20181024 (#95) --- site/code/index.html.js | 3 ++- site/community/Community-Events.md | 12 +++++------- site/community/Community-Resources.md | 2 +- site/learn/BestPractice-Introduction.md | 2 +- 4 files changed, 9 insertions(+), 10 deletions(-) diff --git a/site/code/index.html.js b/site/code/index.html.js index 19daa7892f..053f062d58 100644 --- a/site/code/index.html.js +++ b/site/code/index.html.js @@ -42,7 +42,7 @@ GraphQL 已有多种编程语言支持。下表包含一些流行的服务端框 - [graphql-dotnet](https://github.com/graphql-dotnet/graphql-dotnet):.NET 的 GraphQL 实现 - [graphql-net](https://github.com/ckimes89/graphql-net):转换 GraphQL 到 IQueryable - - [Hot Chocolate](https://github.com/ChilliCream/hotchocolate):针对 .net core 和 .net classic 的 GraphQL 服务 + - [Hot Chocolate](https://github.com/ChilliCream/hotchocolate):针对 .net core 和 .net classic 的 GraphQL 服务器 ### Clojure @@ -470,6 +470,7 @@ Executor.execute(schema, query) map println - [nanogql](https://github.com/yoshuawuyts/nanogql):一个使用模板字符串的小型 GraphQL 客户端库。 - [gq-loader](https://github.com/Houfeng/gq-loader):一个简单的 JavaScript GraphQL 客户端,通过 webpack 加载器让 *.gql 文件作为模块使用。 - [AWS Amplify](https://aws.github.io/aws-amplify):使用云服务进行应用开发的 JavaScript 库,支持 GraphQL 后端和用于处理 GraphQL 数据的 React 组件。 + - [Grafoo](https://github.com/grafoojs/grafoo):一个通用的 GraphQL 客户端,具有仅 1.6kb 的多框架的视图层集成。 ### Swift / Objective-C iOS diff --git a/site/community/Community-Events.md b/site/community/Community-Events.md index e62dee337d..475b635ce3 100644 --- a/site/community/Community-Events.md +++ b/site/community/Community-Events.md @@ -14,15 +14,13 @@ sublinks: 即将举行的活动,聚会 - **地点:** 德国 柏林 - **链接:** https://graphql-europe.org -GraphQL Europe 是欧洲非营利性的 GraphQL 大会,邀请了来自世界各地的演讲嘉宾。了解来自行业专家的 GraphQL 最佳实践,并成为蓬勃发展的 GraphQL 社区的一部分。 +### GraphQL Conf -### GraphQL Finland 会议 - -- **日期:** 2018 年 10 月 18 - 19 日 -- **地点:** 芬兰 赫尔辛基 -- **链接:** https://graphql-finland.fi/ +- **日期:** 2019 年 6 月 20 - 21 日 +- **地点:** 德国 柏林 +- **链接:** https://www.graphqlconf.org/ -GraphQL Finland 是一个社区组织的 GraphQL 会议。这是首次在芬兰举办这样的活动,该活动由一天的研讨会和一天的专题演讲组成。GraphQL Finland 由 React Finland 的团队组织。 +GraphQL Conf 是欧洲非营利性的 GraphQL 大会,邀请了来自世界各地的演讲嘉宾。了解来自行业专家的 GraphQL 最佳实践,并成为蓬勃发展的 GraphQL 社区的一部分。 ## 聚会 diff --git a/site/community/Community-Resources.md b/site/community/Community-Resources.md index 54ec733057..c3309ed82a 100644 --- a/site/community/Community-Resources.md +++ b/site/community/Community-Resources.md @@ -57,7 +57,7 @@ sublinks: 博客,视频 - [GraphQL 概念可视化](https://medium.com/apollo-stack/the-concepts-of-graphql-bc68bd819be3#.hfczgtdsj) - Dhaivat Pandya - [构建 f8 App:使用 GraphQL & Relay](http://makeitopen.com/docs/en/1-A2-relay.html) - [你的第一个 GraphQL 服务器](https://medium.com/the-graphqlhub/your-first-graphql-server-3c766ab4f0a2#.ovn0y19k4) - Clay Allsopp -- [教程:用 Apollo-server、Dataloader 和 Knex 启动一个 JS API](https://bamtech.gitbooks.io/dev-standards/content/backend/graphql-js/getting-started-with-apollo-server-dataloader-knex.mo.html) - Thomas Pucci +- [教程:用 Apollo-server、Dataloader 和 Knex 启动一个 JS API](https://bamtech.gitbook.io/dev-standards/backend/graphql-js/getting-started-with-apollo-server-dataloader-knex.mo.html) - Thomas Pucci - [教程:如何构建一个 GraphQL 服务器](https://medium.com/apollo-stack/tutorial-building-a-graphql-server-cddaa023c035#.bu6sdnst4) - Jonas Helfer - [使用 GraphQL 查询参数设计强大的 API](https://www.graph.cool/docs/tutorials/designing-powerful-apis-with-graphql-query-parameters-aing7uech3/) - Johannes Schickling - [GraphQL 和不可思议的 Apollo Client](https://medium.com/google-developer-experts/graphql-and-the-amazing-apollo-client-fe57e162a70c) - Gerard Sans diff --git a/site/learn/BestPractice-Introduction.md b/site/learn/BestPractice-Introduction.md index 1782689c6f..e5f89bba34 100644 --- a/site/learn/BestPractice-Introduction.md +++ b/site/learn/BestPractice-Introduction.md @@ -16,7 +16,7 @@ GraphQL 规范特意忽略了一些面向 API 的重要问题,例如处理网 ### HTTP -GraphQL 通常通过单入口来提供 HTTP 服务的完整功能,这一实现方式与暴露一组 URL 且每个 URL 只暴露一个资源的 REST API 不同。虽然 GraphQL 也可以暴露多个资源 URL 来使用,但这可能导致您在使用 GraphiQL 等工具时遇到困难。 +GraphQL 通常通过单入口来提供 HTTP 服务的完整功能,这一实现方式与暴露一组 URL 且每个 URL 只暴露一个资源的 REST API 不同。虽然 GraphQL 也可以暴露多个资源 URL 来使用,但这可能导致您在使用 [GraphiQL](https://github.com/graphql/graphiql) 等工具时遇到困难。 了解更多:[提供 HTTP 服务](/learn/serving-over-http/)。 From 52c5cd995c3b2d6318a7670ce427c1be047df27a Mon Sep 17 00:00:00 2001 From: Qin Xiaoqiang Date: Mon, 5 Nov 2018 14:50:10 +0800 Subject: [PATCH 58/75] Update BestPractice-ThinkingInGraphs.md (#96) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 修改 心理模型 的翻译 --- site/learn/BestPractice-ThinkingInGraphs.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/site/learn/BestPractice-ThinkingInGraphs.md b/site/learn/BestPractice-ThinkingInGraphs.md index de16fae276..402702642f 100644 --- a/site/learn/BestPractice-ThinkingInGraphs.md +++ b/site/learn/BestPractice-ThinkingInGraphs.md @@ -9,7 +9,7 @@ next: /learn/serving-over-http/ ## 一切皆是图 [\*](https://en.wikipedia.org/wiki/Turtles_all_the_way_down) > 使用 GraphQL,你可以将你所有的业务建模为图 -图是将很多真实世界现象变成模型的强大工具,因为它们和我们自然的心理模型和基本过程的口头描述很相似。通过 GraphQL,你会把自己的业务领域通过定义 schema 建模成一张图;在你的 schema 里,你定义不同类型的节点以及它们之间是如何连接的。在客户端这边,这创建了一种类似于面向对象编程的模式:引用其他类型的类型。在服务器端,由于 GraphQL 定义了接口,你可以在任何后端自由的使用它(无论新旧!)。 +图是将很多真实世界现象变成模型的强大工具,因为它们和我们自然的心智模型和基本过程的口头描述很相似。通过 GraphQL,你会把自己的业务领域通过定义 schema 建模成一张图;在你的 schema 里,你定义不同类型的节点以及它们之间是如何连接的。在客户端这边,这创建了一种类似于面向对象编程的模式:引用其他类型的类型。在服务器端,由于 GraphQL 定义了接口,你可以在任何后端自由的使用它(无论新旧!)。 ## 共同语言 > 命名是构建直观接口中一个困难但重要的部分 From 83edf29d12e5a3586669323b6e3246c8ac6e241d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=AB=98=E8=8B=B1=E5=81=A5?= Date: Tue, 13 Nov 2018 09:17:07 +0800 Subject: [PATCH 59/75] up to date 20181111 (#97) --- site/_core/HeaderLinks.js | 2 +- site/_core/Site.js | 6 +++--- site/code/index.html.js | 3 ++- site/community/Community-Events.md | 12 +++++++----- site/community/Community-Resources.md | 6 ++++++ 5 files changed, 19 insertions(+), 10 deletions(-) diff --git a/site/_core/HeaderLinks.js b/site/_core/HeaderLinks.js index edccfe6d24..0222399955 100644 --- a/site/_core/HeaderLinks.js +++ b/site/_core/HeaderLinks.js @@ -12,8 +12,8 @@ const links = [ { section: 'learn', text: '学习', href: '/learn/' }, { section: 'code', text: '代码', href: '/code/' }, { section: 'community', text: '社区', href: '/community/' }, - { section: 'blog', text: '博客', href: '/blog/' }, { section: 'spec', text: '规范', href: 'http://spec.graphql.cn/' }, + { section: 'foundation', text: '基金会', href: 'https://foundation.graphql.org/' }, ]; export default ({ section }) => diff --git a/site/_core/Site.js b/site/_core/Site.js index c4059d58e9..f958da2148 100644 --- a/site/_core/Site.js +++ b/site/_core/Site.js @@ -81,9 +81,9 @@ export default ({ page, category, title, section, className, noSearch, children

diff --git a/site/code/index.html.js b/site/code/index.html.js index 053f062d58..c74f5ebff8 100644 --- a/site/code/index.html.js +++ b/site/code/index.html.js @@ -121,8 +121,9 @@ $ curl -XPOST "http://0.0.0.0:3000/" -H'Content-Type: application/json' -d'{ ### Go - [graphql-go](https://github.com/graphql-go/graphql):一个 Go/Golang 的 GraphQL 实现。 + - [graph-gophers/graphql-go](https://github.com/graph-gophers/graphql-go):一个活跃的 Golang GraphQL 实现。 + - [GQLGen](https://github.com/99designs/gqlgen):生成基于 graphql 的服务器的库。 - [graphql-relay-go](https://github.com/graphql-go/relay):一个用于帮助构建 graphql-go 服务器的 Go/Golang 库,支持 react-relay 。 - - [neelance/graphql-go](https://github.com/neelance/graphql-go):一个活跃的 Golang GraphQL 实现。 - [machinebox/graphql](https://github.com/machinebox/graphql):用于 GraphQL 的一个优雅的底层 HTTP 客户端。 - [samsarahq/thunder](https://github.com/samsarahq/thunder):可轻松进行 schema 构建、实时查询和批处理的 GraphQL 实现。 diff --git a/site/community/Community-Events.md b/site/community/Community-Events.md index 475b635ce3..682961cb9c 100644 --- a/site/community/Community-Events.md +++ b/site/community/Community-Events.md @@ -8,13 +8,15 @@ sublinks: 即将举行的活动,聚会 ## 即将举行的活动 -### GraphQL Europe 会议 +### GraphQL 峰会 -- **日期:** 2018 年 6 月 15 日 -- **地点:** 德国 柏林 -- **链接:** https://graphql-europe.org +- **日期:** 2018 年 11 月 7 - 8 日 +- **地点:** 美国 旧金山 +- **链接:** https://summit.graphql.com + +世界上最大的致力于 GraphQL 的会议。 -### GraphQL Conf +### GraphQL Conf Berlin 2019 - **日期:** 2019 年 6 月 20 - 21 日 - **地点:** 德国 柏林 diff --git a/site/community/Community-Resources.md b/site/community/Community-Resources.md index c3309ed82a..968028da40 100644 --- a/site/community/Community-Resources.md +++ b/site/community/Community-Resources.md @@ -51,6 +51,12 @@ sublinks: 博客,视频 以下是一些值得注意的博客文章,以帮助您更好地了解 GraphQL: +- [GraphQL:一种数据查询语言](/blog/graphql-a-query-language/) - Lee Byron +- [GraphQL 和 Relay 中的订阅](/blog/subscriptions-in-graphql-and-relay/) - Dan Schafer and Laney Kuenzel +- [用 GraphQL 轻松 mock 你的服务器](/blog/mocking-with-graphql/) - Jonas Helfer +- [在 GraphQL 中包装 REST API](/blog/rest-api-graphql-wrapper/) - Steven Luscher +- [告别技术预览](/blog/production-ready/) - Lee Byron +- [重新许可 GraphQL 规范](https://medium.com/@leeb/relicensing-the-graphql-specification-e7d07a52301b) - Lee Byron - [GraphQL 简介](https://facebook.github.io/react/blog/2015/05/01/graphql-introduction.html) - Nick Schrock - [从 REST 到 GraphQL](https://0x2a.sh/from-rest-to-graphql-b4e95e94c26b#.tag7nzkrb) - Jacob Gillespie - [GraphQL 讲解](https://medium.com/apollo-stack/graphql-explained-5844742f195e#.zdykxos6i) - Jonas Helfer From 3249e5df73e7025e919c67588f225ad74923befa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=AB=98=E8=8B=B1=E5=81=A5?= Date: Mon, 26 Nov 2018 12:24:47 +0800 Subject: [PATCH 60/75] up to date 20181124 (#98) --- .../blog/20160502-rest-api-graphql-wrapper.md | 4 +-- site/code/index.html.js | 6 ++-- site/community/Community-Events.md | 1 + site/community/Community-Resources.md | 1 - site/learn/Learn-Queries.md | 27 ++++++++++++++++++ site/learn/Learn-Schema.md | 4 +-- site/users/index.html.js | 12 +++++++- site/users/logos/cloverleaf.png | Bin 0 -> 12555 bytes site/users/logos/expert360.png | Bin 0 -> 7357 bytes 9 files changed, 47 insertions(+), 8 deletions(-) create mode 100644 site/users/logos/cloverleaf.png create mode 100644 site/users/logos/expert360.png diff --git a/site/blog/20160502-rest-api-graphql-wrapper.md b/site/blog/20160502-rest-api-graphql-wrapper.md index 384d4d3556..8501c8d4c1 100644 --- a/site/blog/20160502-rest-api-graphql-wrapper.md +++ b/site/blog/20160502-rest-api-graphql-wrapper.md @@ -141,7 +141,7 @@ const PersonType = new GraphQLObjectType({ /* ... */ friends: { type: new GraphQLList(PersonType), - resolve: person => person.friends.map(getPersonByURL), + resolve: person => person.friends.map(fetchPersonByURL), }, }), }); @@ -395,7 +395,7 @@ To create a `DataLoader` you supply a method that can resolve a list of objects ```js const personLoader = new DataLoader( - urls => Promise.all(urls.map(getPersonByURL)) + urls => Promise.all(urls.map(fetchPersonByURL)) ); ``` diff --git a/site/code/index.html.js b/site/code/index.html.js index c74f5ebff8..88f524aa54 100644 --- a/site/code/index.html.js +++ b/site/code/index.html.js @@ -107,7 +107,9 @@ $ curl -XPOST "http://0.0.0.0:3000/" -H'Content-Type: application/json' -d'{ (executor/execute nil schema resolver-fn "{ hello }") \`\`\` - - [lacinia](https://github.com/walmartlabs/lacinia):一套 GraphQL 规范的完整实现,致力于维护对规范的外部兼容。 +#### [lacinia](https://github.com/walmartlabs/lacinia) + +一套 GraphQL 规范的完整实现,致力于维护对规范的外部兼容。 ### Elixir @@ -335,7 +337,7 @@ $resolvers = [ ]; $schema = Graphql\schema($typeDefs, $resolvers); -echo "Server running at http://127.0.0.1:8080\\n"; +echo "Server running at http://127.0.0.1:8080"; Http\server(Graphql\psr7($schema), function (\Throwable $err) { var_dump($err); return Diactoros\json([ diff --git a/site/community/Community-Events.md b/site/community/Community-Events.md index 682961cb9c..44e444034e 100644 --- a/site/community/Community-Events.md +++ b/site/community/Community-Events.md @@ -72,3 +72,4 @@ GraphQL Conf 是欧洲非营利性的 GraphQL 大会,邀请了来自世界各 - [GraphQL Tel Aviv](https://www.meetup.com/GraphQL-TLV/) - [GraphQL Tokyo](https://www.meetup.com/GraphQL-Tokyo/) - [GraphQL Meetup (Bangalore)](https://www.meetup.com/GraphQL-Meetup/) +- [GraphQL Meetup (Bangkok)](https://www.meetup.com/GraphQL-Bangkok/) diff --git a/site/community/Community-Resources.md b/site/community/Community-Resources.md index 968028da40..6886b16476 100644 --- a/site/community/Community-Resources.md +++ b/site/community/Community-Resources.md @@ -23,7 +23,6 @@ sublinks: 博客,视频 - [@GraphQL](https://twitter.com/GraphQL) - [@graphqlweekly](https://twitter.com/graphqlweekly) -- [@graphqlnews](https://twitter.com/graphqlnews) - [@GraphQLStackOverflow](https://twitter.com/GraphQLatSO) - [@apollographql](https://twitter.com/apollographql) - [@graphcool](https://twitter.com/graphcool) diff --git a/site/learn/Learn-Queries.md b/site/learn/Learn-Queries.md index 71388e6f68..ab1d586cb6 100644 --- a/site/learn/Learn-Queries.md +++ b/site/learn/Learn-Queries.md @@ -124,6 +124,33 @@ fragment comparisonFields on Character { 你可以看到上面的查询如何漂亮地重复了字段。片段的概念经常用于将复杂的应用数据需求分割成小块,特别是你要将大量不同片段的 UI 组件组合成一个初始数据获取的时候。 +### 在片段内使用变量 + +片段可以访问查询或变更中声明的变量。详见 [变量](learn/queries/#variables)。 + +```graphql +# { "graphiql": true } +query HeroComparison($first: Int = 3) { + leftComparison: hero(episode: EMPIRE) { + ...comparisonFields + } + rightComparison: hero(episode: JEDI) { + ...comparisonFields + } +} + +fragment comparisonFields on Character { + name + friendsConnection(first: $first) { + totalCount + edges { + node { + name + } + } + } +} +``` ## 操作名称(Operation name) diff --git a/site/learn/Learn-Schema.md b/site/learn/Learn-Schema.md index 108a8704da..0176baf32b 100644 --- a/site/learn/Learn-Schema.md +++ b/site/learn/Learn-Schema.md @@ -42,7 +42,7 @@ GraphQL 服务可以用任何语言编写,因为我们并不依赖于任何特 ```graphql type Character { name: String! - appearsIn: [Episode]! + appearsIn: [Episode!]! } ``` @@ -52,7 +52,7 @@ type Character { - `name` 和 `appearsIn` 是 `Character` 类型上的**字段**。这意味着在一个操作 `Character` 类型的 GraphQL 查询中的任何部分,都只能出现 `name` 和 `appearsIn` 字段。 - `String` 是内置的**标量**类型之一 —— 标量类型是解析到单个标量对象的类型,无法在查询中对它进行次级选择。后面我们将细述标量类型。 - `String!` 表示这个字段是**非空的**,GraphQL 服务保证当你查询这个字段后总会给你返回一个值。在类型语言里面,我们用一个感叹号来表示这个特性。 -- `[Episode]!` 表示一个 `Episode` **数组**。因为它也是**非空的**,所以当你查询 `appearsIn` 字段的时候,你也总能得到一个数组(零个或者多个元素)。 +- `[Episode!]!` 表示一个 `Episode` **数组**。因为它也是**非空的**,所以当你查询 `appearsIn` 字段的时候,你也总能得到一个数组(零个或者多个元素)。且由于 `Episode!` 也是**非空的**,你总是可以预期到数组中的每个项目都是一个 `Episode` 对象。 现在你知道一个 GraphQL 对象类型看上去是怎样,也知道如何阅读基础的 GraphQL 类型语言了。 diff --git a/site/users/index.html.js b/site/users/index.html.js index 2e9ae50f45..e8571c6e07 100644 --- a/site/users/index.html.js +++ b/site/users/index.html.js @@ -655,7 +655,17 @@ var logos = [ name: 'UC Trends', img: 'uctrends.png', link: 'https://trends.ucweb.com/' - } + }, + { + name: 'Expert360', + img: 'expert360.png', + link: 'https://expert360.com/' + }, + { + name: 'Cloverleaf', + img: 'cloverleaf.png', + link: 'https://cloverleaf.me/' + }, // Adding your logo? // Add it to the /users/logos/ directory and then append an entry above this comment. // diff --git a/site/users/logos/cloverleaf.png b/site/users/logos/cloverleaf.png new file mode 100644 index 0000000000000000000000000000000000000000..38986d7e182057770b6f0bf352c4983cc9d172ea GIT binary patch literal 12555 zcmb`O^I^d>5`76mTu{85b17MQer6y0qHL3ZX^ULkp}5rq@>}Ce%|+g zaQ`xootf*JYv!DD)$2SrMqO1N3!NMt4h{}W0W6~l2M1sD^4l2=<>gpN*!Twyjs{La zMoQbq)JmyiOnXy37Y`c)d@%43j&|*W5*O2fpX{?zN@dk9S@W13*X! z2=JjHl9DuL2uMJJeHv|CG&H1t7vYd-V`OP?|94&@DT$lRViK+nqWSLEMMQAoVaH(E)7l1vm7aao{|xkENGy;dg%Lsh z)ic~5E})SKwzC#W9XzIUSk4_@7YUlXiBJefmM`RAHG>E2FA>Yb!h?;UH16kLB8YG^_(**CZ%LK*Pq z&9C;i!nwFA|GBl724NRibUSKn);A32=;R{a_YQ`%zy?0nzs&Y!%|MLlM*i#n-s0$x zHnbRSfIZHi@Ii5S%O>Sp5b4`~drC;R)^(<)M1JZ^gwWukX&{YDgVD*bx~R>l;iLKA z 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 literal 0 HcmV?d00001 From ebe6a78c3140ebe1e12ea21c09da21257ef4b719 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=AB=98=E8=8B=B1=E5=81=A5?= Date: Fri, 19 Apr 2019 08:53:42 +0800 Subject: [PATCH 61/75] Sync Chinese translation to 20190415 & add `principles` link to nav (#99) * fix variables link * Correct the misunderstanding of the original text * Sync Chinese translation to 20190415 & add `principles` link to nav --- site/_core/HeaderLinks.js | 4 ++- site/codeofconduct/CodeOfConduct.md | 50 +++++++++++++++++++++++++++ site/learn/BestPractice-Pagination.md | 2 +- site/learn/Learn-Queries.md | 2 +- site/learn/Learn-Schema.md | 28 +++++++++++++++ 5 files changed, 83 insertions(+), 3 deletions(-) create mode 100644 site/codeofconduct/CodeOfConduct.md diff --git a/site/_core/HeaderLinks.js b/site/_core/HeaderLinks.js index 0222399955..052f435efb 100644 --- a/site/_core/HeaderLinks.js +++ b/site/_core/HeaderLinks.js @@ -12,8 +12,10 @@ const links = [ { section: 'learn', text: '学习', href: '/learn/' }, { section: 'code', text: '代码', href: '/code/' }, { section: 'community', text: '社区', href: '/community/' }, - { section: 'spec', text: '规范', href: 'http://spec.graphql.cn/' }, + { section: 'spec', text: '规范', href: 'https://spec.graphql.cn/' }, + { section: 'codeofconduct', text: '行为守则', href: '/codeofconduct/' }, { section: 'foundation', text: '基金会', href: 'https://foundation.graphql.org/' }, + { section: 'principles', text: '开发原则', href: 'https://principles.graphql.cn/' }, ]; export default ({ section }) => diff --git a/site/codeofconduct/CodeOfConduct.md b/site/codeofconduct/CodeOfConduct.md new file mode 100644 index 0000000000..57a14a9e89 --- /dev/null +++ b/site/codeofconduct/CodeOfConduct.md @@ -0,0 +1,50 @@ +--- +title: 行为守则 +layout: ../_core/DocsLayout +category: 行为守则 +permalink: /codeofconduct/ +--- + +# GraphQL 行为守则 v1.0 + +## 我们的承诺 + +为了营造一个开放和热情的环境,我们作为贡献者和维护者承诺任何人都能不受困扰的参与我们的项目和社区,无论年龄、体型、是否残疾、种族、性别特征、性别认同和表达、经验水平、教育、社会经济地位、国籍、个人形象、种族、宗教、或是性别认同和取向。 + +## 我们的标准 + +以下是有助于创造积极环境的行为范例: + +* 使用欢迎和包容的语言 +* 尊重不同的观点和经验 +* 优雅地接受建设性的批评 +* 关注对社区最有利的事情 +* 表现出对其他社区成员的同情 + +以下是参与者不可接受的行为案例: + +* 使用色情语言或图像以及不受欢迎的性关注或求爱 +* 恶意破坏、侮辱/贬损评论以及个人或政治攻击 +* 公开或私下的骚扰 +* 发布他人的私人信息,例如未经明确许可的实体或电子地址 +* 在专业环境中可被合理地认为不合适的其他行为 + +## 我们的责任 + +GraphQL 规范成员、项目参与者和贡献者(统称“参与者”)负责澄清可接受行为的标准,并且应该采取适当和公平的纠正措施来应对任何不可接受的行为。 + +GraphQL 规范的指导委员会有权力和责任删除、编辑或拒绝与本行为守则不一致的评论、提交、代码、维基编辑、议题和其他贡献,也可以暂时或永久性的禁止他们认为不合适的来自任何参与者的具有威胁性、攻击性或有害性的其他行为。 + +所有参与者都认定 Linux 基金会是最适合此项目开发的组织。参与者承认并同意 Linux 基金会拥有“GraphQL”以及与 GraphQL 开源项目和 GraphQL 规范相关的任何其他名称和商标的专利权,并授权他人使用这些商标,确定此类使用的指导方针以及分派这些职责。参与者同意不采取任何与此类权利不一致的行为,并配合 Linux 基金会认为必要或可取的任何行动,以防止混淆或确立或保留这些权利。参与者不会独立采用、使用或尝试注册与这些名称混淆或相似的任何商标或商品名称。 + +## 适用范围 + +本行为守则适用于项目空间和某一个体代表项目或其社区时的公共领域中。代表项目或社区的示例包括使用一个官方的项目电子邮件地址、通过官方社交媒体帐户发布信息或是作为线上或线下活动的指定代表。项目维护人员可以进一步定义和澄清对于项目的陈述。 + +## 执行 + +可以通过联系执行主管报告滥用、骚扰或其他不可接受行为的情况。如果投诉涉及执行主管,则联系指导委员会的成员。所有投诉都将得到审查和调查,并给出必要且适合当时情况的回复。项目团队有义务为事件报告者保密。具体执行政策的进一步细节可以单独发布。未真诚遵守或执行本行为守则的参与者可能会面临由指导委员会确定的暂时或永久性影响。 + +## 来源 + +本行为守则改编自贡献者契约 1.4 版,可以从 [https://www.contributor-covenant.org/version/1/4/code-of-conduct.html](https://www.contributor-covenant.org/version/1/4/code-of-conduct.html) 获取。有关本行为守则的常见问题的解答,请参阅 [https://www.contributor-covenant.org/faq](https://www.contributor-covenant.org/faq)。 diff --git a/site/learn/BestPractice-Pagination.md b/site/learn/BestPractice-Pagination.md index 9d14611d0d..7b0d8f4c73 100644 --- a/site/learn/BestPractice-Pagination.md +++ b/site/learn/BestPractice-Pagination.md @@ -78,7 +78,7 @@ next: /learn/caching/ 现在我们有能力使用游标对连接进行分页,但是我们如何知道何时到达连接的结尾?我们必须继续查询,直到我们收到一个空列表,但是我们真的希望连接能够告诉我们什么时候到达结尾,这样我们不需要额外的请求。同样的,如果我们想知道关于连接本身的附加信息怎么办;例如,R2-D2 有多少个朋友? -为了解决这两个问题,我们的 `friends` 字段可以返回一个连接对象。然后,连接对象将具有边其中的字段以及其他信息(如总计数和有关下一页是否存在的信息)。所以我们的最终查询可能看起来像这样: +为了解决这两个问题,我们的 `friends` 字段可以返回一个连接对象。连接对象将拥有一个存放边的字段以及其他信息(如总计数和有关下一页是否存在的信息)。所以我们的最终查询可能看起来像这样: ```graphql diff --git a/site/learn/Learn-Queries.md b/site/learn/Learn-Queries.md index ab1d586cb6..6ee7b201f5 100644 --- a/site/learn/Learn-Queries.md +++ b/site/learn/Learn-Queries.md @@ -126,7 +126,7 @@ fragment comparisonFields on Character { ### 在片段内使用变量 -片段可以访问查询或变更中声明的变量。详见 [变量](learn/queries/#variables)。 +片段可以访问查询或变更中声明的变量。详见 [变量](#variables)。 ```graphql # { "graphiql": true } diff --git a/site/learn/Learn-Schema.md b/site/learn/Learn-Schema.md index 0176baf32b..1cad925dea 100644 --- a/site/learn/Learn-Schema.md +++ b/site/learn/Learn-Schema.md @@ -311,6 +311,7 @@ union SearchResult = Human | Droid | Starship # { "graphiql": true} { search(text: "an") { + __typename ... on Human { name height @@ -327,6 +328,33 @@ union SearchResult = Human | Droid | Starship } ``` +`_typename` 字段解析为 `String`,它允许你在客户端区分不同的数据类型。 + +此外,在这种情况下,由于 `Human` 和 `Droid` 共享一个公共接口(`Character`),你可以在一个地方查询它们的公共字段,而不必在多个类型中重复相同的字段: + +```graphql +{ + search(text: "an") { + __typename + ... on Character { + name + } + ... on Human { + height + } + ... on Droid { + primaryFunction + } + ... on Starship { + name + length + } + } +} +``` + +注意 `name` 仍然需要指定在 `Starship` 上,否则它不会出现在结果中,因为 `Starship` 并不是一个 `Character`! + ### 输入类型(Input Types) 目前为止,我们只讨论过将例如枚举和字符串等标量值作为参数传递给字段,但是你也能很容易地传递复杂对象。这在变更(mutation)中特别有用,因为有时候你需要传递一整个对象作为新建对象。在 GraphQL schema language 中,输入对象看上去和常规对象一模一样,除了关键字是 `input` 而不是 `type`: From 8989fcb8cf7870803488771a6a7c77344fea56ec Mon Sep 17 00:00:00 2001 From: Gao Yingjian Date: Fri, 18 Oct 2019 12:02:10 +0800 Subject: [PATCH 62/75] Sync 190827 (#100) * Sync Chinese translation to 20190725 * Sync Chinese translation to 20190827 --- resources/fileWalker.js | 2 +- site/_core/Site.js | 8 +------- site/_redirects | 2 ++ site/community/Community-Events.md | 22 +++++++++++----------- 4 files changed, 15 insertions(+), 19 deletions(-) create mode 100644 site/_redirects diff --git a/resources/fileWalker.js b/resources/fileWalker.js index 5b18b4223b..de3ecbe089 100644 --- a/resources/fileWalker.js +++ b/resources/fileWalker.js @@ -14,7 +14,7 @@ module.exports = fileWalker; var IGNORE_RX = /^(?:_|\.|(?:node_modules|package\.json|README\.(?:md|markdown))$)/; -var INCLUDE_RX = /^(?:\.nojekyll|\.htaccess)/; +var INCLUDE_RX = /^(?:\.nojekyll|\.htaccess|\_redirects)/; function fileWalker(dirPath, onVisitFile) { return new Promise((resolve, reject) => { diff --git a/site/_core/Site.js b/site/_core/Site.js index f958da2148..43fd94a08b 100644 --- a/site/_core/Site.js +++ b/site/_core/Site.js @@ -87,14 +87,8 @@ export default ({ page, category, title, section, className, noSearch, children {page && 编辑本页 ✎}

- - Facebook Open Source -
- Copyright © - - - Facebook Inc. The contents of this page are licensed BSD-3-Clause. + Copyright © 2019 GraphQL 基金会。保留所有权利。Linux 基金会已经注册了商标和使用商标。有关 Linux 基金会的商标清单,请参阅我们的 商标使用 页面。Linux 是 Linus Torvalds 的注册商标。隐私政策使用条款
diff --git a/site/_redirects b/site/_redirects new file mode 100644 index 0000000000..35a9d89135 --- /dev/null +++ b/site/_redirects @@ -0,0 +1,2 @@ +/swapi-graphql https://graphql.github.io/swapi-graphql/ 200 +/swapi-graphql/* https://graphql.github.io/swapi-graphql/:splat 200 diff --git a/site/community/Community-Events.md b/site/community/Community-Events.md index 44e444034e..d344e88c24 100644 --- a/site/community/Community-Events.md +++ b/site/community/Community-Events.md @@ -8,21 +8,21 @@ sublinks: 即将举行的活动,聚会 ## 即将举行的活动 -### GraphQL 峰会 - -- **日期:** 2018 年 11 月 7 - 8 日 -- **地点:** 美国 旧金山 -- **链接:** https://summit.graphql.com - -世界上最大的致力于 GraphQL 的会议。 - -### GraphQL Conf Berlin 2019 +### GraphQL Conf Berlin - **日期:** 2019 年 6 月 20 - 21 日 - **地点:** 德国 柏林 - **链接:** https://www.graphqlconf.org/ -GraphQL Conf 是欧洲非营利性的 GraphQL 大会,邀请了来自世界各地的演讲嘉宾。了解来自行业专家的 GraphQL 最佳实践,并成为蓬勃发展的 GraphQL 社区的一部分。 +GraphQL Conf Berlin 是世界上最大的 GraphQL 社区会议。这是一次非盈利性会议,邀请了来自世界各地的演讲嘉宾。了解来自行业专家的 GraphQL 最佳实践,并成为蓬勃发展的 GraphQL 社区的一部分。 + +### GraphQL 峰会 + +- **日期:** 2019 年 10 月 29 - 31 日 +- **地点:** 美国 旧金山 +- **链接:** https://summit.graphql.com + +Apollo 组织的 GraphQL 的会议。 ## 聚会 @@ -41,7 +41,7 @@ GraphQL Conf 是欧洲非营利性的 GraphQL 大会,邀请了来自世界各 - [GraphQL Columbus](https://www.meetup.com/GraphQL-Columbus/) - [GraphQL Vancouver](https://www.meetup.com/GraphQL-Vancouver/) - [GraphQL Minneapolis](https://www.meetup.com/GraphQL-MN/) -- [GraphQL Denver/Boulder](https://www.meetup.com/GraphQL-Denver-Boulder-Meetup/) +- [GraphQL Denver](https://www.meetup.com/graphql-denver/) - [GraphQL By the Bay (San Francisco)](https://www.meetup.com/graphql-by-the-bay/) ### 南美洲 From 936e29c61bb7ced247c38faa10f2220928623eb9 Mon Sep 17 00:00:00 2001 From: dawnxuuu Date: Thu, 14 Nov 2019 15:25:36 +0800 Subject: [PATCH 63/75] Update Tutorial-PassingArguments.md (#101) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Update Tutorial-PassingArguments.md 与右侧标题保持一致 * Update Tutorial-PassingArguments.md --- site/graphql-js/Tutorial-PassingArguments.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/site/graphql-js/Tutorial-PassingArguments.md b/site/graphql-js/Tutorial-PassingArguments.md index e2298528cd..8016c783a5 100644 --- a/site/graphql-js/Tutorial-PassingArguments.md +++ b/site/graphql-js/Tutorial-PassingArguments.md @@ -6,7 +6,7 @@ permalink: /graphql-js/passing-arguments/ next: /graphql-js/object-types/ --- -就像 REST API 一样,在 GraphQL API 中,通常向入口端点传入参数,在 schema language 中定义参数,并自动进行类型检查。每一个参数必须有名字和数据类型。举个例子,在 [基础类型文档](/graphql-js/basic-types/) 中,我们定义了一个名为 `rollThreeDice` 的入口端点: +就像 REST API 一样,在 GraphQL API 中,通常向入口端点传入参数,在 schema language 中定义参数,并自动进行类型检查。每一个参数必须有名字和数据类型。举个例子,在 [基本类型文档](/graphql-js/basic-types/) 中,我们定义了一个名为 `rollThreeDice` 的入口端点: ```javascript type Query { @@ -127,4 +127,4 @@ fetch('http://github.com/graphql', { 使用 `$dice` 和 `$sides` 作为 GraphQL 中的变量,我们无需在客户端对它们进行转义。 -通过基础类型和参数传递,你可以定义任意你"能够"在 REST API 中定义的内容。但 GraphQL 支持更强大的查询。如果你学习了 [定义你自己的对象类型](/graphql-js/object-types/),你可以用单个 API 调用来代替多个 API 调用。 \ No newline at end of file +通过基本类型和参数传递,你可以定义任意你"能够"在 REST API 中定义的内容。但 GraphQL 支持更强大的查询。如果你学习了 [定义你自己的对象类型](/graphql-js/object-types/),你可以用单个 API 调用来代替多个 API 调用。 From bb58b24f5757b70a85c84fe046ec1edc0bbde922 Mon Sep 17 00:00:00 2001 From: Gao Yingjian Date: Fri, 27 Dec 2019 17:55:22 +0800 Subject: [PATCH 64/75] Sync 20191130 (#102) * Sync 191024 * sync 20191111 * sync 20191130 --- site/code/index.html.js | 159 ++++- site/community/Community-Events.md | 8 - site/community/Community-Resources.md | 7 +- site/graphql-js/APIReference-TypeSystem.md | 4 +- site/graphql-js/Guides-ConstructingTypes.md | 4 +- site/graphql-js/Tutorial-Authentication.md | 2 +- site/graphql-js/Tutorial-ExpressGraphQL.md | 2 +- site/graphql-js/Tutorial-Mutations.md | 10 +- site/graphql-js/Tutorial-ObjectTypes.md | 4 +- site/graphql-js/Tutorial-PassingArguments.md | 6 +- site/learn/Introduction.md | 2 +- site/users/index.html.js | 691 +------------------ 12 files changed, 155 insertions(+), 744 deletions(-) diff --git a/site/code/index.html.js b/site/code/index.html.js index 88f524aa54..cfc2b09c68 100644 --- a/site/code/index.html.js +++ b/site/code/index.html.js @@ -33,16 +33,46 @@ GraphQL 已有多种编程语言支持。下表包含一些流行的服务端框 - [Groovy](#groovy) - [Java](#java) - [JavaScript](#javascript) +- [Kotlin](#kotlin) - [PHP](#php) - [Python](#python) -- [Scala](#scala) - [Ruby](#ruby) +- [Rust](#rust) +- [Scala](#scala)] +- [Swift](#swift) ### C# / .NET - - [graphql-dotnet](https://github.com/graphql-dotnet/graphql-dotnet):.NET 的 GraphQL 实现 +#### [graphql-dotnet](https://github.com/graphql-dotnet/graphql-dotnet):.NET 的 GraphQL 实现 + +\`\`\`csharp +using System; +using GraphQL; +using GraphQL.Types; + +public class Program +{ + public static void Main(string[] args) + { + var schema = Schema.For(@" + type Query { + hello: String + } + "); + var json = schema.Execute(_ => + { + _.Query = "{ hello }"; + _.Root = new { Hello = "Hello World!" }; + }); + Console.WriteLine(json); + } +} +\`\`\` + - [graphql-net](https://github.com/ckimes89/graphql-net):转换 GraphQL 到 IQueryable - - [Hot Chocolate](https://github.com/ChilliCream/hotchocolate):针对 .net core 和 .net classic 的 GraphQL 服务器 + - [Entity GraphQL](https://github.com/lukemurray/EntityGraphQL):针对 .NET Core 的 GraphQL 库。编译为 IQueryable 以轻松地从现有的数据模型(例如从 Entity Framework 数据模型)中暴露出 schema + - [DotNetGraphQLQueryGen](https://github.com/lukemurray/DotNetGraphQLQueryGen):从 GraphQL schema 生成类,以在 dotnet 中进行类型安全的查询的 .NET Core 库 + - [Hot Chocolate](https://github.com/ChilliCream/hotchocolate):针对 .NET core 和 .NET classic 的 GraphQL 服务器 ### Clojure @@ -128,6 +158,8 @@ $ curl -XPOST "http://0.0.0.0:3000/" -H'Content-Type: application/json' -d'{ - [graphql-relay-go](https://github.com/graphql-go/relay):一个用于帮助构建 graphql-go 服务器的 Go/Golang 库,支持 react-relay 。 - [machinebox/graphql](https://github.com/machinebox/graphql):用于 GraphQL 的一个优雅的底层 HTTP 客户端。 - [samsarahq/thunder](https://github.com/samsarahq/thunder):可轻松进行 schema 构建、实时查询和批处理的 GraphQL 实现。 + - [99designs/gqlgen](https://github.com/99designs/gqlgen):一个 schema 优先的 GraphQL 服务器生成。 + - [appointy/jaal](https://github.com/appointy/jaal):在 Go 中开发符合规范的 GraphQL 服务器。 ### Groovy @@ -145,7 +177,7 @@ $ curl -XPOST "http://0.0.0.0:3000/" -H'Content-Type: application/json' -d'{ 更多信息请查看 [文档](https://grails.github.io/gorm-graphql/latest/guide/index.html)。 -#### [GQL](https://grooviter.github.io/gql/) +#### [GQL](https://grooviter.github.io/gql/) GQL 是一个在 Groovy 中使用 GraphQL 的库。 @@ -177,7 +209,7 @@ public class HelloWorld { SchemaParser schemaParser = new SchemaParser(); TypeDefinitionRegistry typeDefinitionRegistry = schemaParser.parse(schema); - RuntimeWiring runtimeWiring = newRuntimeWiring() + RuntimeWiring runtimeWiring = new RuntimeWiring() .type("Query", builder -> builder.dataFetcher("hello", new StaticDataFetcher("world"))) .build(); @@ -266,47 +298,83 @@ app.listen(4000, () => console.log('Now browse to localhost:4000/graphql')); 如果要运行 \`apollo-server-express\` 的 hello world 服务器: \`\`\`bash -npm install apollo-server-express body-parser express graphql graphql-tools +npm install apollo-server-express express \`\`\` 然后使用 \`node server.js\` 以运行 \`server.js\` 中的代码: \`\`\`js -var express = require('express'); -var bodyParser = require('body-parser'); -var { graphqlExpress, graphiqlExpress } = require('apollo-server-express'); -var { makeExecutableSchema } = require('graphql-tools'); - -var typeDefs = [\` -type Query { - hello: String -} - -schema { - query: Query -}\`]; - -var resolvers = { - Query: { - hello(root) { - return 'world'; - } +const express = require('express'); +const { ApolloServer, gql } = require('apollo-server-express'); +const typeDefs = gql\` + type Query { + hello: String } +\`; +const resolvers = { + Query: { + hello: () => 'Hello world!', + }, }; - -var schema = makeExecutableSchema({typeDefs, resolvers}); -var app = express(); -app.use('/graphql', bodyParser.json(), graphqlExpress({schema})); -app.use('/graphiql', graphiqlExpress({endpointURL: '/graphql'})); -app.listen(4000, () => console.log('Now browse to localhost:4000/graphiql')); +const server = new ApolloServer({ typeDefs, resolvers }); +const app = express(); +server.applyMiddleware({ app }); +app.listen({ port: 4000 }, () => + console.log('Now browse to http://localhost:4000' + server.graphqlPath) +); \`\`\` Apollo Server 也支持所有的 Node.js HTTP 服务器框架:Express、Connect、HAPI 和 Koa。 +### Kotlin + + - [graphql-kotlin](https://github.com/ExpediaGroup/graphql-kotlin/):一组用于在 Kotlin 中运行 GraphQL 服务器的库。 + + ### PHP - [graphql-php](https://github.com/webonyx/graphql-php):GraphQL 参考实现的 PHP 移植版本。 - [graphql-relay-php](https://github.com/ivome/graphql-relay-php):一个用于辅助构建 graphql-php 服务器的库,支持 react-relay。 + - [Lighthouse](https://github.com/nuwave/lighthouse):一个用于 Laravel 的 GraphQL 服务器 + - [GraphQLBundle](https://github.com/overblog/GraphQLBundle):一个用于 Symfony 的 GraphQL 服务器 + +#### [API Platform](https://api-platform.com) ([github](https://github.com/api-platform/api-platform)) + +API Platform 是一个基于 Symfony 构建的功能齐全、灵活且可扩展的 API 框架。 +以下的类足以创建与 Relay 兼容的 GraphQL 服务器和支持现代 REST 格式(JSON-LD、JSONAPI...)的超媒体 API: + +\`\`\`php + (obj, args, ctx) { 'Hello world!' } end end -Schema = GraphQL::Schema.define do +class Schema < GraphQL::Schema query QueryType end @@ -413,6 +485,10 @@ puts Schema.execute('{ hello }').to_json 其也有对于 Relay 和 Rails 的良好绑定。 +### Rust + + - [graphql-rust/juniper](https://github.com/graphql-rust/juniper):用于 Rust 的 GraphQL 服务端库 + ### Scala #### [Sangria](http://sangria-graphql.org/) ([github](https://github.com/sangria-graphql/sangria)):支持 [Relay](https://facebook.github.io/relay/) 的一个 Scala GraphQL 库。 @@ -439,6 +515,7 @@ Executor.execute(schema, query) map println - [C# / .NET](#c-net-1) - [Clojurescript](#clojurescript-1) +- [Flutter](#flutter) - [Go](#go-1) - [Java / Android](#java-android) - [JavaScript](#javascript-1) @@ -455,6 +532,10 @@ Executor.execute(schema, query) map println - [re-graph](https://github.com/oliyh/re-graph/):一个在 Clojurescript 中实现的 GraphQL 客户端,支持 websockets。 +### Flutter + + - [graphql](https://github.com/zino-app/graphql-flutter#readme):一个 Flutter 中的 GraphQL 客户端实现。 + ### Go - [graphql](https://github.com/shurcooL/graphql#readme):一个使用 Go 编写的 GraphQL 客户端实现。 @@ -468,12 +549,13 @@ Executor.execute(schema, query) map println - [Relay](https://facebook.github.io/relay/) ([github](https://github.com/facebook/relay)) ([npm](https://www.npmjs.com/package/react-relay)):Facebook 的框架,用于构建与 GraphQL 后端交流的 React 应用。 - [Apollo Client](http://apollographql.com/client/) ([github](https://github.com/apollographql/apollo-client)):一个强大的 JavaScript GraphQL 客户端,设计用于与 React、React Native、Angular 2 或者原生 JavaScript 一同工作。 - - [graphql-request](https://github.com/graphcool/graphql-request):一个简单的弹性的 JavaScript GraphQL 客户端,可以运行于所有的 JavaScript 环境(浏览器,Node.js 和 React Native)—— 基本上是 \`fetch\` 的轻度封装。 + - [graphql-request](https://github.com/prisma/graphql-request):一个简单灵活的 JavaScript GraphQL 客户端,可以运行于所有的 JavaScript 环境(浏览器,Node.js 和 React Native)—— 基本上是 \`fetch\` 的轻度封装。 - [Lokka](https://github.com/kadirahq/lokka):一个简单的 JavaScript GraphQL 客户端,可以运行于所有的 JavaScript 环境 —— 浏览器,Node.js 和 React Native。 - [nanogql](https://github.com/yoshuawuyts/nanogql):一个使用模板字符串的小型 GraphQL 客户端库。 - [gq-loader](https://github.com/Houfeng/gq-loader):一个简单的 JavaScript GraphQL 客户端,通过 webpack 加载器让 *.gql 文件作为模块使用。 - [AWS Amplify](https://aws.github.io/aws-amplify):使用云服务进行应用开发的 JavaScript 库,支持 GraphQL 后端和用于处理 GraphQL 数据的 React 组件。 - [Grafoo](https://github.com/grafoojs/grafoo):一个通用的 GraphQL 客户端,具有仅 1.6kb 的多框架的视图层集成。 + - [urql](https://formidable.com/open-source/urql/) ([github](https://github.com/FormidableLabs/urql)):一个用于 React 的高度可定制且用途广泛的 GraphQL 客户端。 ### Swift / Objective-C iOS @@ -483,7 +565,7 @@ Executor.execute(schema, query) map println ### Python - [GQL](https://github.com/graphql-python/gql):一个 Python 中的 GraphQL 客户端。 - - [python-graphql-client](https://github.com/graphcool/python-graphql-client):适用于 Python 2.7+ 的简单 GraphQL 客户端。 + - [python-graphql-client](https://github.com/prisma/python-graphql-client):适用于 Python 2.7+ 的简单 GraphQL 客户端。 - [sgqlc](https://github.com/profusion/sgqlc):一个简单的 Python GraphQL 客户端。支持为 GraphQL schema 中定义的类型生成代码。 ## 工具 @@ -495,14 +577,15 @@ Executor.execute(schema, query) map println ## 服务 - - [Apollo Engine](http://www.apollographql.com/engine/):一个用于监视 GraphQL 后端的性能和使用的服务。 + - [Apollo Graph Manage](http://engine.apollographql.com):一个用于监视 GraphQL 后端的性能和使用的云服务。 - [GraphCMS](https://graphcms.com/):一个 BaaS(后端即服务),它为你配置了一个作为内容编辑工具来处理存储数据的 GraphQL 后端。 - - [Graphcool](https://www.graph.cool) ([github](https://github.com/graphcool)):一个 BaaS(后端即服务),它为你的应用程序提供了一个 GraphQL 后端,且具有用于管理数据库和存储数据的强大的 web ui。 + - [Prisma](https://www.prisma.io) ([github](https://github.com/prisma)):一个 BaaS(后端即服务),它为你的应用程序提供了一个 GraphQL 后端,且具有用于管理数据库和存储数据的强大的 web ui。 - [Reindex](https://www.reindex.io/baas/) ([github](https://github.com/reindexio/reindex-js)):一个 BaaS(后端即服务),它针对使用 React 和 Relay 的应用程序配置了 GraphQL 后端。 - [Scaphold](https://scaphold.io) ([github](https://github.com/scaphold-io)):一个 BaaS(后端即服务),为你的应用程序配置了一个拥有多种不同集成的 GraphQL 后端。 - [Tipe](https://tipe.io) ([github](https://github.com/tipeio)):一个 SaaS(软件即服务)内容管理系统,允许你使用强大的编辑工具创建你的内容,并通过 GraphQL 或 REST API 从任何地方访问它。 - [AWS AppSync](https://aws.amazon.com/appsync/):完全托管的 GraphQL 服务,包含实时订阅、离线编程和同步、企业级安全特性以及细粒度的授权控制。 - [Hasura](https://hasura.io):一个 BaaS(后端即服务),允许你在 Postgres 上创建数据表、定义权限并使用 GraphQL 接口查询和操作。 + - [FaunaDB](https://docs.fauna.com/fauna/current/graphql):通过导入 gql schema 创建即时 GraphQL 后端。数据库将为你创建关系和索引,因此你无需编写任何数据库代码即可在几秒钟内查询。Serverless 定价可免费开始使用。 ## 更多内容 diff --git a/site/community/Community-Events.md b/site/community/Community-Events.md index d344e88c24..e97228fdcc 100644 --- a/site/community/Community-Events.md +++ b/site/community/Community-Events.md @@ -8,14 +8,6 @@ sublinks: 即将举行的活动,聚会 ## 即将举行的活动 -### GraphQL Conf Berlin - -- **日期:** 2019 年 6 月 20 - 21 日 -- **地点:** 德国 柏林 -- **链接:** https://www.graphqlconf.org/ - -GraphQL Conf Berlin 是世界上最大的 GraphQL 社区会议。这是一次非盈利性会议,邀请了来自世界各地的演讲嘉宾。了解来自行业专家的 GraphQL 最佳实践,并成为蓬勃发展的 GraphQL 社区的一部分。 - ### GraphQL 峰会 - **日期:** 2019 年 10 月 29 - 31 日 diff --git a/site/community/Community-Resources.md b/site/community/Community-Resources.md index 6886b16476..f12ac2a3ab 100644 --- a/site/community/Community-Resources.md +++ b/site/community/Community-Resources.md @@ -4,7 +4,7 @@ layout: ../_core/DocsLayout category: 社区 permalink: /community/ next: /community/upcoming-events/ -sublinks: 博客,视频 +sublinks: 博客,视频,图书,更多资源 --- ## Stack Overflow @@ -25,7 +25,7 @@ sublinks: 博客,视频 - [@graphqlweekly](https://twitter.com/graphqlweekly) - [@GraphQLStackOverflow](https://twitter.com/GraphQLatSO) - [@apollographql](https://twitter.com/apollographql) -- [@graphcool](https://twitter.com/graphcool) +- [@prisma](https://twitter.com/prisma) - [@ScapholdDotIO](https://twitter.com/ScapholdDotIO) ## IRC @@ -69,6 +69,7 @@ sublinks: 博客,视频 - [GraphQL 服务器基础(第一部分):Schema](https://blog.graph.cool/graphql-server-basics-the-schema-ac5e2950214e) - Nikolas Burk - [GraphQL 服务器基础(第二部分):网络层](https://blog.graph.cool/graphql-server-basics-the-network-layer-51d97d21861) - Nikolas Burk - [GraphQL 服务器基础(第三部分):揭秘 GraphQL 解析器中的 `info` 参数](https://blog.graph.cool/graphql-server-basics-demystifying-the-info-argument-in-graphql-resolvers-6f26249f613a) - Nikolas Burk +- [GraphQL 入门指南](https://www.freecodecamp.org/news/a-beginners-guide-to-graphql-86f849ce1bec/) - Leonardo Maldonado ## 视频 @@ -107,11 +108,13 @@ Facebook 内外的开发者在世界各地的会议和聚会上都谈到了 Grap - [全栈 GraphQL](https://www.graphql.college/fullstack-graphql) - Julian Mayorga - [在 Elixir 和 Absinthe 中使用 Craft GraphQL API](https://pragprog.com/book/wwgraphql/craft-graphql-apis-in-elixir-with-absinthe) - Bruce Williams and Ben Wilson - [学习 GraphQL 和 Relay](https://www.packtpub.com/web-development/learning-graphql-and-relay) - Samer Buna +- [GraphQL 之路](https://www.robinwieruch.de/the-road-to-graphql-book/) - Robin Wieruch ## 更多资源 要探索其他有关 GraphQL 的社区开发的资源和内容,请查看以下网站: +- [Exploring GraphQL: A Query Language For APIs](https://www.edx.org/course/exploring-graphql-a-query-language-for-apis):免费的 7 周 edX 课程 - [How to GraphQL](https://www.howtographql.com):GraphQL 的全栈教程 - [Building Apollo](https://dev-blog.apollodata.com/) - [Learn GraphQL](https://learngraphql.com/basics/introduction) diff --git a/site/graphql-js/APIReference-TypeSystem.md b/site/graphql-js/APIReference-TypeSystem.md index 05bfd11a68..35c3946067 100644 --- a/site/graphql-js/APIReference-TypeSystem.md +++ b/site/graphql-js/APIReference-TypeSystem.md @@ -508,8 +508,8 @@ class GraphQLList { var PersonType = new GraphQLObjectType({ name: 'Person', fields: () => ({ - parents: { type: new GraphQLList(Person) }, - children: { type: new GraphQLList(Person) }, + parents: { type: new GraphQLList(PersonType) }, + children: { type: new GraphQLList(PersonType) }, }) }); ``` diff --git a/site/graphql-js/Guides-ConstructingTypes.md b/site/graphql-js/Guides-ConstructingTypes.md index f7f261979b..28bb023383 100644 --- a/site/graphql-js/Guides-ConstructingTypes.md +++ b/site/graphql-js/Guides-ConstructingTypes.md @@ -41,7 +41,7 @@ var fakeDatabase = { }; var root = { - user: function ({id}) { + user: ({id}) => { return fakeDatabase[id]; } }; @@ -94,7 +94,7 @@ var queryType = new graphql.GraphQLObjectType({ args: { id: { type: graphql.GraphQLString } }, - resolve: function (_, {id}) { + resolve: (_, {id}) => { return fakeDatabase[id]; } } diff --git a/site/graphql-js/Tutorial-Authentication.md b/site/graphql-js/Tutorial-Authentication.md index e787d08f82..5ed65c90d7 100644 --- a/site/graphql-js/Tutorial-Authentication.md +++ b/site/graphql-js/Tutorial-Authentication.md @@ -24,7 +24,7 @@ var schema = buildSchema(` } `); -function loggingMiddleware(req, res, next) { +const loggingMiddleware = (req, res, next) => { console.log('ip:', req.ip); next(); } diff --git a/site/graphql-js/Tutorial-ExpressGraphQL.md b/site/graphql-js/Tutorial-ExpressGraphQL.md index 9835f7b4f2..78f22c701c 100644 --- a/site/graphql-js/Tutorial-ExpressGraphQL.md +++ b/site/graphql-js/Tutorial-ExpressGraphQL.md @@ -41,7 +41,7 @@ app.use('/graphql', graphqlHTTP({ graphiql: true, })); app.listen(4000); -console.log('Running a GraphQL API server at localhost:4000/graphql'); +console.log('Running a GraphQL API server at http://localhost:4000/graphql'); ``` 用以下命令启动该 GraphQL 服务器: diff --git a/site/graphql-js/Tutorial-Mutations.md b/site/graphql-js/Tutorial-Mutations.md index 71f636430c..7629da17cc 100644 --- a/site/graphql-js/Tutorial-Mutations.md +++ b/site/graphql-js/Tutorial-Mutations.md @@ -27,11 +27,11 @@ type Query { ```javascript var fakeDatabase = {}; var root = { - setMessage: function ({message}) { + setMessage: ({message}) => { fakeDatabase.message = message; return message; }, - getMessage: function () { + getMessage: () => { return fakeDatabase.message; } }; @@ -112,20 +112,20 @@ class Message { var fakeDatabase = {}; var root = { - getMessage: function ({id}) { + getMessage: ({id}) => { if (!fakeDatabase[id]) { throw new Error('no message exists with id ' + id); } return new Message(id, fakeDatabase[id]); }, - createMessage: function ({input}) { + createMessage: ({input}) => { // Create a random id for our "database". var id = require('crypto').randomBytes(10).toString('hex'); fakeDatabase[id] = input; return new Message(id, input); }, - updateMessage: function ({id, input}) { + updateMessage: ({id, input}) => { if (!fakeDatabase[id]) { throw new Error('no message exists with id ' + id); } diff --git a/site/graphql-js/Tutorial-ObjectTypes.md b/site/graphql-js/Tutorial-ObjectTypes.md index 002cb7be19..523c5a1bf3 100644 --- a/site/graphql-js/Tutorial-ObjectTypes.md +++ b/site/graphql-js/Tutorial-ObjectTypes.md @@ -50,7 +50,7 @@ class RandomDie { } var root = { - getDie: function ({numSides}) { + getDie: ({numSides}) => { return new RandomDie(numSides || 6); } } @@ -111,7 +111,7 @@ class RandomDie { // root 规定了顶层的 API 入口端点 var root = { - getDie: function ({numSides}) { + getDie: ({numSides}) => { return new RandomDie(numSides || 6); } } diff --git a/site/graphql-js/Tutorial-PassingArguments.md b/site/graphql-js/Tutorial-PassingArguments.md index 8016c783a5..a4be59c445 100644 --- a/site/graphql-js/Tutorial-PassingArguments.md +++ b/site/graphql-js/Tutorial-PassingArguments.md @@ -28,7 +28,7 @@ type Query { ```javascript var root = { - rollDice: function (args) { + rollDice: (args) => { var output = []; for (var i = 0; i < args.numDice; i++) { output.push(1 + Math.floor(Math.random() * (args.numSides || 6))); @@ -42,7 +42,7 @@ var root = { ```javascript var root = { - rollDice: function ({numDice, numSides}) { + rollDice: ({numDice, numSides}) => { var output = []; for (var i = 0; i < numDice; i++) { output.push(1 + Math.floor(Math.random() * (numSides || 6))); @@ -70,7 +70,7 @@ var schema = buildSchema(` // root 为每个端点入口 API 提供一个解析器 var root = { - rollDice: function ({numDice, numSides}) { + rollDice: ({numDice, numSides}) => { var output = []; for (var i = 0; i < numDice; i++) { output.push(1 + Math.floor(Math.random() * (numSides || 6))); diff --git a/site/learn/Introduction.md b/site/learn/Introduction.md index 67224f827f..f28e8c6a5d 100644 --- a/site/learn/Introduction.md +++ b/site/learn/Introduction.md @@ -7,7 +7,7 @@ permalink: /learn/ next: /learn/queries/ --- -> 在接下来的一系列文章中,我们会了解 GraphQL 是什么,它是如何运作以及如何使用它。在找如何搭建 GraphQL 服务的文档?这有一些类库可以帮你用[多种不同语言](/code/)实现 GraphQL。通过实用教程深入学习体验,请访问 [How to GraphQL](https://www.howtographql.com) 全栈教程网站。 +> 在接下来的一系列文章中,我们会了解 GraphQL 是什么,它是如何运作以及如何使用它。在找如何搭建 GraphQL 服务的文档?这有一些类库可以帮你用[多种不同语言](/code/)实现 GraphQL。通过实用教程深入学习体验,请访问 [How to GraphQL](https://www.howtographql.com) 全栈教程网站。我们还与 edX 合作创建了免费的在线课程,[探索 GraphQL:一种用于 API 的查询语言](https://www.edx.org/course/exploring-graphql-a-query-language-for-apis)。 GraphQL 是一个用于 API 的查询语言,是一个使用基于类型系统来执行查询的服务端运行时(类型系统由你的数据定义)。GraphQL 并没有和任何特定数据库或者存储引擎绑定,而是依靠你现有的代码和数据支撑。 diff --git a/site/users/index.html.js b/site/users/index.html.js index e8571c6e07..de20c2616f 100644 --- a/site/users/index.html.js +++ b/site/users/index.html.js @@ -1,5 +1,5 @@ /** - * Copyright (c) 2015, Facebook, Inc. + * Copyright (c) 2015, GraphQL Contributors * All rights reserved. * * This source code is licensed under the license found in the @@ -9,675 +9,14 @@ var React = require('react'); var Site = require('../_core/Site'); -/** - * Adding your logo? - * Add it to the /users/logos/ directory and then append an entry to this list. - * - * Please include logos with transparent backgrounds with no extra margin in the image. - * Images should be around 400px in the larger dimension. - * If your logo is round, include `isRound: true` in your entry. - * - * Please leave a trailing comma after your entry to avoid merge conflicts. - */ -var logos = [ - { - name: 'Facebook', - img: 'facebook.png', - link: 'https://www.facebook.com/' - }, - { - name: 'GitHub', - img: 'github.png', - isRound: true, - link: 'https://developer.github.com/v4/' - }, - { - name: 'Intuit', - img: 'intuit.png', - link: 'https://www.intuit.com/' - }, - { - name: 'Coursera', - img: 'coursera.png', - link: 'https://www.coursera.org/' - }, - { - name: 'Pinterest', - img: 'pinterest.png', - isRound: true, - link: 'https://www.pinterest.com/' - }, - { - name: 'Hudl', - img: 'hudl.png', - link: 'https://www.hudl.com/' - }, - { - name: 'Reindex', - img: 'reindex.png', - link: 'https://www.reindex.io/' - }, - { - name: 'Shopify', - img: 'shopify.png', - isRound: true, - link: 'https://www.shopify.com/' - }, - { - name: 'Meteor', - img: 'meteor.png', - link: 'https://dev-blog.apollodata.com/snappier-uis-with-apollo-client-graphql-bffab0b52b79#.fr92aru2y' - }, - { - name: 'Attendify', - img: 'attendify.png', - link: 'https://attendify.com/' - }, - { - name: 'Brewery Buddy', - img: 'brewerybuddy.png', - link: 'http://brewerybuddy.co/' - }, - { - name: 'Loggi', - img: 'loggi.png', - link: 'https://www.loggi.com/' - }, - { - name: 'Restorando', - img: 'restorando.png', - link: 'https://www.restorando.com/' - }, - { - name: 'Wishlife', - img: 'wishlife.png', - link: 'http://www.wishlife.com/' - }, - { - name: 'Prowl', - img: 'prowl.png', - link: 'http://getprowl.com/' - }, - { - name: 'Project September', - img: 'project-september.png', - link: 'https://www.projectseptember.com/' - }, - { - name: 'Curio', - img: 'curio.png', - link: 'https://curio.org/' - }, - { - name: 'Persado', - img: 'persado.png', - link: 'http://persado.com/platform/persado-go/' - }, - { - name: 'Bazinga', - img: 'bazinga.png', - link: 'https://www.mybazinga.com/' - }, - { - name: 'OK GROW!', - img: 'okgrow.png', - link: 'https://www.okgrow.com/graphql' - }, - { - name: 'Redbubble', - img: 'redbubble.png', - link: 'https://www.redbubble.com/' - }, - { - name: 'Commercetools', - img: 'commercetools.png', - isRound: true, - link: 'https://commercetools.com/' - }, - { - name: '20 Minutes', - img: '20minutes.png', - link: 'https://www.20minutes.fr/' - }, - { - name: 'AlloCiné', - img: 'allocine.png', - link: 'http://www.allocine.fr/' - }, - { - name: 'Easy Carros', - img: 'easycarros.png', - link: 'http://www.easycarros.com/' - }, - { - name: 'Graphcool', - img: 'graphcool.png', - link: 'https://graph.cool/' - }, - { - name: 'Alphasights', - img: 'alphasights.png', - link: 'https://engineering.alphasights.com/' - }, - { - name: 'Inerva', - img: 'inerva.png', - link: 'http://www.inerva.com/' - }, - { - name: 'Serverless', - img: 'serverless.png', - link: 'https://serverless.com/' - }, - { - name: 'NewSpring', - img: 'newspring.png', - link: 'https://github.com/NewSpring' - }, - { - name: 'Buildkite', - img: 'buildkite.png', - link: 'https://buildkite.com/' - }, - { - name: 'LeanIX', - img: 'leanix.png', - link: 'https://www.leanix.net/' - }, - { - name: 'Quri', - img: 'quri.png', - link: 'http://www.quri.com/' - }, - { - name: 'Make School', - img: 'make-school.png', - link: 'http://www.makeschool.com/' - }, - { - name: 'Drift', - img: 'drift.png', - link: 'https://www.drift.com/' - }, - { - name: 'Icon Systems', - img: 'icon-systems.png', - link: 'https://www.iconcmo.com/' - }, - { - name: 'ovos', - img: 'ovos.png', - link: 'http://www.ovos.at/' - }, - { - name: 'GraphCMS', - img: 'graphcms.png', - link: 'https://graphcms.com/' - }, - { - name: 'Credit Karma', - img: 'creditkarma.png', - link: 'https://www.creditkarma.com/' - }, - { - name: 'The Hunt', - img: 'thehunt.png', - link: 'https://www.thehunt.com/' - }, - { - name: 'SYZYGY', - img: 'syzygy.png', - link: 'https://www.syzygy.net/' - }, - { - name: 'UST Global', - img: 'ustglobal.png', - link: 'http://www.ust-global.com/' - }, - { - name: 'Sale Stock', - img: 'salestock.png', - link: 'https://www.salestockindonesia.com/' - }, - { - name: 'IndonesiaX', - img: 'indonesiax.png', - link: 'https://www.indonesiax.co.id/' - }, - { - name: 'ArangoDB', - img: 'arangodb.png', - link: 'https://www.arangodb.com/' - }, - { - name: 'Wayfair', - img: 'wayfair.png', - link: 'https://www.wayfair.com/' - }, - { - name: 'BlenderBottle', - img: 'blenderbottle.png', - link: 'https://www.blenderbottle.com/' - }, - { - name: 'Sky', - img: 'sky.png', - link: 'https://www.sky.com/' - }, - { - name: 'MojiLaLa', - img: 'mojilala.png', - link: 'https://www.mojilala.com/' - }, - { - name: 'Ningensoft', - img: 'ningensoft.png', - link: 'http://www.ningensoft.com/' - }, - { - name: 'Whitescape', - img: 'whitescape.png', - link: 'http://whitescape.com/' - }, - { - name: 'Appier', - img: 'appier.png', - link: 'https://www.appier.com/' - }, - { - name: 'Bright', - img: 'bright.png', - link: 'https://www.thinkbright.mx/' - }, - { - name: 'Eastview', - img: 'eastview.png', - link: 'http://eastview.church/' - }, - { - name: 'zlyde', - img: 'zlyde.png', - link: 'http://www.zlyde.com/' - }, - { - name: 'Artsy', - img: 'artsy.png', - link: 'https://artsy.github.io/series/react-native-at-artsy/' - }, - { - name: 'Stem Disintermedia', - img: 'stem.png', - link: 'https://stem.is/' - }, - { - name: 'M1 Finance', - img: 'm1finance.png', - link: 'https://www.m1finance.com/' - }, - { - name: 'Nova-Ideo', - img: 'nova-ideo.png', - link: 'https://www.nova-ideo.com/' - }, - { - name: 'Wirtualna Polska', - img: 'wirtualnapolska.png', - link: 'http://www.wp.pl/' - }, - { - name: 'Club Med', - img: 'clubmed.png', - link: 'https://www.clubmed.com/' - }, - { - name: 'Swapcard', - img: 'swapcard.png', - link: 'https://www.swapcard.com/' - }, - { - name: 'Scaphold.io', - img: 'scaphold.png', - link: 'https://scaphold.io/' - }, - { - name: 'Waldo Photos', - img: 'waldo-photos.png', - link: 'https://waldo.photos/' - }, - { - name: 'Taller', - img: 'taller.png', - link: 'http://www.taller.net.br/' - }, - { - name: 'WaitlessQ', - img: 'waitlessq.png', - link: 'http://waitlessq.com/' - }, - { - name: 'Adayroi.com', - img: 'adayroi.png', - link: 'https://www.adayroi.com/' - }, - { - name: 'Startups.co', - img: 'startupsco.png', - link: 'https://www.startups.co/' - }, - { - name: 'WOW air', - img: 'wowair.png', - isRound: true, - link: 'https://wowair.com/' - }, - { - name: 'Unigraph', - img: 'unigraph.png', - link: 'https://unigraph.io/' - }, - { - name: 'Smarkets', - img: 'smarkets.png', - link: 'https://smarkets.com/' - }, - { - name: 'Lelivrescolaire.fr', - img: 'lelivrescolaire.png', - link: 'http://www.lelivrescolaire.fr/' - }, - { - name: 'DueDil', - img: 'duedil.png', - link: 'https://www.duedil.com/' - }, - { - name: 'Zzish', - img: 'zzish.png', - link: 'https://www.zzish.com/' - }, - { - name: 'Product Hunt', - img: 'product-hunt.png', - link: 'https://www.producthunt.com/' - }, - { - name: 'WorkflowGen', - img: 'workflowgen.png', - link: 'https://www.workflowgen.com/' - }, - { - name: 'Directlyrics', - img: 'directlyrics.png', - link: 'http://www.directlyrics.com/' - }, - { - name: 'Mixcloud', - img: 'mixcloud.png', - link: 'https://www.mixcloud.com/' - }, - { - name: 'HIJUP', - img: 'hijup.png', - link: 'https://www.hijup.com/' - }, - { - name: 'Vanila.io', - img: 'vanilaio.png', - link: 'https://vanila.io/' - }, - { - name: 'ANTS', - img: 'ants.png', - link: 'http://ants.vn/' - }, - { - name: 'Ediket', - img: 'ediket.png', - link: 'https://ediket.com/' - }, - { - name: 'HousingAnywhere', - img: 'housinganywhere.png', - link: 'https://housinganywhere.com/' - }, - { - name: 'SkyArch Networks Inc.', - img: 'skyarchnetworks.png', - link: 'https://www.skyarch.net/' - }, - { - name: 'Idobata', - img: 'idobata.png', - link: 'https://idobata.io/' - }, - { - name: 'Trove', - img: 'trove.png', - link: 'https://www.mytrove.com/' - }, - { - name: 'Legends of Learning', - img: 'legendsoflearning.png', - link: 'https://www.legendsoflearning.com/' - }, - { - name: 'Yelp', - img: 'yelp.png', - link: 'https://www.yelp.com/developers/graphql/guides/intro' - }, - { - name: 'The New York Times', - img: 'nyt.png', - link: 'https://www.nytimes.com/', - }, - { - name: 'TeselaGen Biotechnology', - img: 'teselagen_logo.png', - link: 'https://www.teselagen.com/', - }, - { - name: 'CircleHD', - img: 'circlehd.png', - link: 'https://www.circlehd.com/', - }, - { - name: 'Helsinki Regional Transport Authority HSL', - img: 'hsl.png', - link: 'https://www.hsl.fi/', - }, - { - name: 'Digitransit', - img: 'digitransit.png', - link: 'https://digitransit.fi/', - }, - { - name: 'MyHeritage', - img: 'myheritage.png', - link: 'https://www.myheritage.com/', - }, - { - name: 'Protel', - img: 'protel.png', - link: 'https://protel.com.tr/', - }, - { - name: 'Alembic', - img: 'alembic.png', - link: 'https://alembic.com.au/', - }, - { - name: 'Twitter', - img: 'twitter.png', - link: 'https://twitter.com/' - }, - { - name: 'EtMDB', - img: 'etmdb.png', - isRound: true, - link: 'https://etmdb.com/' - }, - { - name: 'GetNinjas', - img: 'getninjas.png', - link: 'https://labs.getninjas.com.br/tagged/graphql' - }, - { - name: 'Dailymotion', - img: 'dailymotion.png', - link: 'https://developer.dailymotion.com/' - }, - { - name: 'Myntra', - img: 'myntra.png', - link: 'https://www.myntra.com/' - }, - { - name: 'Conduit', - img: 'conduit.png', - link: 'https://conduithq.com/' - }, - { - name: 'Medallia', - img: 'medallia.png', - link: 'https://www.medallia.com/' - }, - { - name: 'Colectica', - img: 'colectica.png', - link: 'http://www.colectica.com/' - }, - { - name: 'Neo4j', - img: 'neo4j_logo.png', - link: 'https://www.neo4j.com/developer/graphql/' - }, - { - name: 'ComparaOnline', - img: 'comparaonline.png', - link: 'https://www.comparaonline.com/' - }, - { - name: 'Goalify.plus', - img: 'goalify.png', - link: 'https://goalify.plus/' - }, - { - name: 'Teachers Pay Teachers', - img: 'teacherspayteachers.png', - link: 'https://teacherspayteachers.com/' - }, - { - name: '1stdibs', - img: '1stdibs.png', - link: 'https://www.1stdibs.com/' - }, - { - name: 'Hackages', - img: 'hackages.png', - link: 'https://hackages.io/' - }, - { - name: 'Fairfax Media', - img: 'fairfaxmedia.png', - link: 'https://www.fairfaxmedia.com.au/' - }, - { - name: 'Amplitude', - img: 'amplitude.png', - link: 'https://amplitude.com/engineering' - }, - { - name: 'Gentux', - img: 'gentux.png', - link: 'https://www.generationtux.com/' - }, - { - name: 'Bynder', - img: 'bynder.png', - link: 'https://www.bynder.com/' - }, - { - name: 'Hasura', - img: 'hasura.png', - link: 'https://hasura.io/' - }, - { - name: 'Atlassian', - img: 'atlassian.png', - link: 'https://www.atlassian.com/' - }, - { - name: 'Lets.events', - img: 'letsevents.png', - link: 'https://lets.events/' - }, - { - name: 'KLM Royal Dutch Airlines', - img: 'klm.png', - link: 'https://www.klm.com/' - }, - { - name: 'Universe', - img: 'universe.png', - link: 'https://www.universe.com/' - }, - { - name: 'StackShare', - img: 'stackshare.png', - link: 'https://stackshare.io/' - }, - { - name: 'Metric.ai', - img: 'metric-ai.png', - link: 'https://www.metric.ai/' - }, - { - name: 'Jusbrasil', - img: 'jusbrasil.png', - link: 'https://www.jusbrasil.com.br/' - }, - { - name: 'NBC News Digital', - img: 'nbc-news-digital.png', - link: 'https://www.nbcnews.com/' - }, - { - name: 'PayPal', - img: 'paypal.png', - link: 'https://www.paypal.com/' - }, - { - name: 'Cheddar', - img: 'cheddar.png', - link: 'https://cheddar.com/' - }, - { - name: 'UC Trends', - img: 'uctrends.png', - link: 'https://trends.ucweb.com/' - }, - { - name: 'Expert360', - img: 'expert360.png', - link: 'https://expert360.com/' - }, - { - name: 'Cloverleaf', - img: 'cloverleaf.png', - link: 'https://cloverleaf.me/' - }, - // Adding your logo? - // Add it to the /users/logos/ directory and then append an entry above this comment. - // - // Please include logos with transparent backgrounds with no extra margin in the image. - // Images should be around 400px in the larger dimension. - // If your logo is round, include `isRound: true` in your entry. - // - // Please leave a trailing comma after your entry to avoid merge conflicts. -]; +const iframe = ''; + +function Iframe(props) { + return (
); +} module.exports = ({ page }) => - +
@@ -687,19 +26,13 @@ module.exports = ({ page }) =>

你的公司也在使用 GraphQL 吗?
- 编辑这个页面然后发出一个 Pull Request 来加上你的 logo 吧。 + 请参考 说明文档 来向 GraphQL Landscape 提交你的拉取请求吧。

-
- {logos.sort((a, b) => - a.name.toLowerCase() < b.name.toLowerCase() ? -1 : 1 - ).map(logo => - - - - )} -
+ '; - -function Iframe(props) { - return (
); -} - -module.exports = ({ page }) => - -
- -
-

谁在使用 GraphQL?

-

- GraphQL 已经被各种体量的团队所使用,在不同的环境、不同的语言下,用于增强移动应用、网站和 API。 -

-

- 你的公司也在使用 GraphQL 吗?
- 请参考 说明文档 来向 GraphQL Landscape 提交你的拉取请求吧。 -

-
- - +
+ + ) +} diff --git a/src/templates/doc.tsx b/src/templates/doc.tsx new file mode 100644 index 0000000000..c22a9de1d6 --- /dev/null +++ b/src/templates/doc.tsx @@ -0,0 +1,70 @@ +import React from "react" +import { graphql } from "gatsby" +import Layout from "../components/Layout" +import DocsLayout from "../components/DocsLayout" +import BlogLayout from '../components/BlogLayout'; +import CodeLayout from "../components/CodeLayout"; + +interface Props { + data: any + pageContext: any +} + +const layoutMap: any = { + docs: DocsLayout, + blog: BlogLayout, + code: CodeLayout, +} + +const Blog = ({ data, pageContext }: Props) => { + const { + doc: { + frontmatter: { title, date, permalink, byline, guestBio, layout }, + rawMarkdownBody, + }, + nextDoc, + } = data + const InnerLayout = layoutMap[layout]; + return ( + + + + ) +} + +export const query = graphql` + query LearnQuery($permalink: String!, $nextPermalink: String) { + doc: markdownRemark(frontmatter: { permalink: { eq: $permalink } }) { + frontmatter { + title + date + permalink + byline + guestBio + sublinks + layout + } + id + rawMarkdownBody + } + nextDoc: markdownRemark( + frontmatter: { permalink: { eq: $nextPermalink } } + ) { + frontmatter { + title + permalink + } + } + } +` + +export default Blog diff --git a/src/utils/slug.ts b/src/utils/slug.ts new file mode 100644 index 0000000000..080eaf1823 --- /dev/null +++ b/src/utils/slug.ts @@ -0,0 +1,30 @@ +export const toSlug = (string: string) => { + // var accents = "àáäâèéëêìíïîòóöôùúüûñç"; + var accents = + "\u00e0\u00e1\u00e4\u00e2\u00e8" + + "\u00e9\u00eb\u00ea\u00ec\u00ed\u00ef" + + "\u00ee\u00f2\u00f3\u00f6\u00f4\u00f9" + + "\u00fa\u00fc\u00fb\u00f1\u00e7" + + var without = "aaaaeeeeiiiioooouuuunc" + + return ( + String(string) + // Handle uppercase characters + .toLowerCase() + + // Handle accentuated characters + .replace(new RegExp("[" + accents + "]", "g"), function (c) { + return without.charAt(accents.indexOf(c)) + }) + + // Dash special characters + .replace(/[^a-z0-9]/g, "-") + + // Compress multiple dash + .replace(/-+/g, "-") + + // Trim dashes + .replace(/^-|-$/g, "") + ) +} diff --git a/site/CNAME b/static/CNAME similarity index 100% rename from site/CNAME rename to static/CNAME diff --git a/site/_redirects b/static/_redirects similarity index 95% rename from site/_redirects rename to static/_redirects index aeb4e39f1a..ca92c9f573 100644 --- a/site/_redirects +++ b/static/_redirects @@ -8,7 +8,7 @@ # https://www.netlify.com/docs/redirects/#http-status-codes /docs/api-reference-errors /graphql-js/error/ 301 -/docs/api-reference-execution /graphql-js/exection/ 301 +/docs/api-reference-execution /graphql-js/execution/ 301 /docs/api-reference-express-graphql /graphql-js/express-graphql/ 301 /docs/api-reference-graphql /graphql-js/graphql/ 301 /docs/api-reference-language /graphql-js/language/ 301 diff --git a/site/favicon.ico b/static/favicon.ico similarity index 100% rename from site/favicon.ico rename to static/favicon.ico diff --git a/site/img/blog/20160502-rest-api-graphql-wrapper/dataloader-query.png b/static/img/blog/20160502-rest-api-graphql-wrapper/dataloader-query.png similarity index 100% rename from site/img/blog/20160502-rest-api-graphql-wrapper/dataloader-query.png rename to static/img/blog/20160502-rest-api-graphql-wrapper/dataloader-query.png diff --git a/site/img/blog/20160502-rest-api-graphql-wrapper/pathological-query.png b/static/img/blog/20160502-rest-api-graphql-wrapper/pathological-query.png similarity index 100% rename from site/img/blog/20160502-rest-api-graphql-wrapper/pathological-query.png rename to static/img/blog/20160502-rest-api-graphql-wrapper/pathological-query.png diff --git a/site/img/blog/20160502-rest-api-graphql-wrapper/rest-api-people.png b/static/img/blog/20160502-rest-api-graphql-wrapper/rest-api-people.png similarity index 100% rename from site/img/blog/20160502-rest-api-graphql-wrapper/rest-api-people.png rename to static/img/blog/20160502-rest-api-graphql-wrapper/rest-api-people.png diff --git a/site/img/diagrams/business_layer.png b/static/img/diagrams/business_layer.png similarity index 100% rename from site/img/diagrams/business_layer.png rename to static/img/diagrams/business_layer.png diff --git a/site/img/favicon.png b/static/img/favicon.png similarity index 100% rename from site/img/favicon.png rename to static/img/favicon.png diff --git a/site/img/graph-wash.png b/static/img/graph-wash.png similarity index 100% rename from site/img/graph-wash.png rename to static/img/graph-wash.png diff --git a/site/img/graphiql.mp4 b/static/img/graphiql.mp4 similarity index 100% rename from site/img/graphiql.mp4 rename to static/img/graphiql.mp4 diff --git a/site/img/hello.png b/static/img/hello.png similarity index 100% rename from site/img/hello.png rename to static/img/hello.png diff --git a/site/img/logo-gray.svg b/static/img/logo-gray.svg similarity index 100% rename from site/img/logo-gray.svg rename to static/img/logo-gray.svg diff --git a/site/img/logo.svg b/static/img/logo.svg similarity index 100% rename from site/img/logo.svg rename to static/img/logo.svg diff --git a/site/img/og_image.png b/static/img/og_image.png similarity index 100% rename from site/img/og_image.png rename to static/img/og_image.png diff --git a/site/img/oss_logo.png b/static/img/oss_logo.png similarity index 100% rename from site/img/oss_logo.png rename to static/img/oss_logo.png diff --git a/site/img/phone.svg b/static/img/phone.svg similarity index 100% rename from site/img/phone.svg rename to static/img/phone.svg diff --git a/site/img/search.png b/static/img/search.png similarity index 100% rename from site/img/search.png rename to static/img/search.png diff --git a/site/img/search.svg b/static/img/search.svg similarity index 100% rename from site/img/search.svg rename to static/img/search.svg diff --git a/site/img/server.svg b/static/img/server.svg similarity index 100% rename from site/img/server.svg rename to static/img/server.svg diff --git a/site/img/twitter_image.png b/static/img/twitter_image.png similarity index 100% rename from site/img/twitter_image.png rename to static/img/twitter_image.png diff --git a/site/users/logos/1stdibs.png b/static/users/logos/1stdibs.png similarity index 100% rename from site/users/logos/1stdibs.png rename to static/users/logos/1stdibs.png diff --git a/site/users/logos/20minutes.png b/static/users/logos/20minutes.png similarity index 100% rename from site/users/logos/20minutes.png rename to static/users/logos/20minutes.png diff --git a/site/users/logos/adayroi.png b/static/users/logos/adayroi.png similarity index 100% rename from site/users/logos/adayroi.png rename to static/users/logos/adayroi.png diff --git a/site/users/logos/airbnb.png b/static/users/logos/airbnb.png similarity index 100% rename from site/users/logos/airbnb.png rename to static/users/logos/airbnb.png diff --git a/site/users/logos/alembic.png b/static/users/logos/alembic.png similarity index 100% rename from site/users/logos/alembic.png rename to static/users/logos/alembic.png diff --git a/site/users/logos/allocine.png b/static/users/logos/allocine.png similarity index 100% rename from site/users/logos/allocine.png rename to static/users/logos/allocine.png diff --git a/site/users/logos/alphasights.png b/static/users/logos/alphasights.png similarity index 100% rename from site/users/logos/alphasights.png rename to static/users/logos/alphasights.png diff --git a/site/users/logos/amplitude.png b/static/users/logos/amplitude.png similarity index 100% rename from site/users/logos/amplitude.png rename to static/users/logos/amplitude.png diff --git a/site/users/logos/ants.png b/static/users/logos/ants.png similarity index 100% rename from site/users/logos/ants.png rename to static/users/logos/ants.png diff --git a/site/users/logos/appier.png b/static/users/logos/appier.png similarity index 100% rename from site/users/logos/appier.png rename to static/users/logos/appier.png diff --git a/site/users/logos/arangodb.png b/static/users/logos/arangodb.png similarity index 100% rename from site/users/logos/arangodb.png rename to static/users/logos/arangodb.png diff --git a/site/users/logos/artsy.png b/static/users/logos/artsy.png similarity index 100% rename from site/users/logos/artsy.png rename to static/users/logos/artsy.png diff --git a/site/users/logos/atlassian.png b/static/users/logos/atlassian.png similarity index 100% rename from site/users/logos/atlassian.png rename to static/users/logos/atlassian.png diff --git a/site/users/logos/attendify.png b/static/users/logos/attendify.png similarity index 100% rename from site/users/logos/attendify.png rename to static/users/logos/attendify.png diff --git a/site/users/logos/bazinga.png b/static/users/logos/bazinga.png similarity index 100% rename from site/users/logos/bazinga.png rename to static/users/logos/bazinga.png diff --git a/site/users/logos/blenderbottle.png b/static/users/logos/blenderbottle.png similarity index 100% rename from site/users/logos/blenderbottle.png rename to static/users/logos/blenderbottle.png diff --git a/site/users/logos/brewerybuddy.png b/static/users/logos/brewerybuddy.png similarity index 100% rename from site/users/logos/brewerybuddy.png rename to static/users/logos/brewerybuddy.png diff --git a/site/users/logos/bright.png b/static/users/logos/bright.png similarity index 100% rename from site/users/logos/bright.png rename to static/users/logos/bright.png diff --git a/site/users/logos/buildkite.png b/static/users/logos/buildkite.png similarity index 100% rename from site/users/logos/buildkite.png rename to static/users/logos/buildkite.png diff --git a/site/users/logos/bynder.png b/static/users/logos/bynder.png similarity index 100% rename from site/users/logos/bynder.png rename to static/users/logos/bynder.png diff --git a/site/users/logos/cheddar.png b/static/users/logos/cheddar.png similarity index 100% rename from site/users/logos/cheddar.png rename to static/users/logos/cheddar.png diff --git a/site/users/logos/circlehd.png b/static/users/logos/circlehd.png similarity index 100% rename from site/users/logos/circlehd.png rename to static/users/logos/circlehd.png diff --git a/site/users/logos/cloverleaf.png b/static/users/logos/cloverleaf.png similarity index 100% rename from site/users/logos/cloverleaf.png rename to static/users/logos/cloverleaf.png diff --git a/site/users/logos/clubmed.png b/static/users/logos/clubmed.png similarity index 100% rename from site/users/logos/clubmed.png rename to static/users/logos/clubmed.png diff --git a/site/users/logos/colectica.png b/static/users/logos/colectica.png similarity index 100% rename from site/users/logos/colectica.png rename to static/users/logos/colectica.png diff --git a/site/users/logos/commercetools.png b/static/users/logos/commercetools.png similarity index 100% rename from site/users/logos/commercetools.png rename to static/users/logos/commercetools.png diff --git a/site/users/logos/comparaonline.png b/static/users/logos/comparaonline.png similarity index 100% rename from site/users/logos/comparaonline.png rename to static/users/logos/comparaonline.png diff --git a/site/users/logos/conduit.png b/static/users/logos/conduit.png similarity index 100% rename from site/users/logos/conduit.png rename to static/users/logos/conduit.png diff --git a/site/users/logos/coursera.png b/static/users/logos/coursera.png similarity index 100% rename from site/users/logos/coursera.png rename to static/users/logos/coursera.png diff --git a/site/users/logos/creditkarma.png b/static/users/logos/creditkarma.png similarity index 100% rename from site/users/logos/creditkarma.png rename to static/users/logos/creditkarma.png diff --git a/site/users/logos/curio.png b/static/users/logos/curio.png similarity index 100% rename from site/users/logos/curio.png rename to static/users/logos/curio.png diff --git a/site/users/logos/dailymotion.png b/static/users/logos/dailymotion.png similarity index 100% rename from site/users/logos/dailymotion.png rename to static/users/logos/dailymotion.png diff --git a/site/users/logos/digitransit.png b/static/users/logos/digitransit.png similarity index 100% rename from site/users/logos/digitransit.png rename to static/users/logos/digitransit.png diff --git a/site/users/logos/directlyrics.png b/static/users/logos/directlyrics.png similarity index 100% rename from site/users/logos/directlyrics.png rename to static/users/logos/directlyrics.png diff --git a/site/users/logos/drift.png b/static/users/logos/drift.png similarity index 100% rename from site/users/logos/drift.png rename to static/users/logos/drift.png diff --git a/site/users/logos/duedil.png b/static/users/logos/duedil.png similarity index 100% rename from site/users/logos/duedil.png rename to static/users/logos/duedil.png diff --git a/site/users/logos/eastview.png b/static/users/logos/eastview.png similarity index 100% rename from site/users/logos/eastview.png rename to static/users/logos/eastview.png diff --git a/site/users/logos/easycarros.png b/static/users/logos/easycarros.png similarity index 100% rename from site/users/logos/easycarros.png rename to static/users/logos/easycarros.png diff --git a/site/users/logos/ediket.png b/static/users/logos/ediket.png similarity index 100% rename from site/users/logos/ediket.png rename to static/users/logos/ediket.png diff --git a/site/users/logos/etmdb.png b/static/users/logos/etmdb.png similarity index 100% rename from site/users/logos/etmdb.png rename to static/users/logos/etmdb.png diff --git a/site/users/logos/expert360.png b/static/users/logos/expert360.png similarity index 100% rename from site/users/logos/expert360.png rename to static/users/logos/expert360.png diff --git a/site/users/logos/facebook.png b/static/users/logos/facebook.png similarity index 100% rename from site/users/logos/facebook.png rename to static/users/logos/facebook.png diff --git a/site/users/logos/fairfaxmedia.png b/static/users/logos/fairfaxmedia.png similarity index 100% rename from site/users/logos/fairfaxmedia.png rename to static/users/logos/fairfaxmedia.png diff --git a/static/users/logos/filejet.png b/static/users/logos/filejet.png new file mode 100644 index 0000000000000000000000000000000000000000..b6e9a8e3cbbb1287a4a6c8440241b43efe0b321e GIT binary patch literal 3251 zcmdUx2{_bg9LHaSv=X)DTIZu4&!Uj5tCneiJs)p8JT#YMoCyUwlFWPx5Wv^$S=J`L*yz~2i-{0~1{oePPFsy~~M*h$E z0RS5@CI(gjeDV+gl*f8*XwmwuIvIZ9v1ZnWY&P2@c<6)Aw$FF|rRSZ)z4R- zu^$?3Cw6b0DzEg=N@BVHSapEswJUnZm)BouLAM|I#~r`60_fTHKGDL5{i9V-z}msq z{NT=k0p&z)xTYVai}kwj0_-t`ww7%dnE~|_0E9IOFT@6XQ9yP7oZl}4qYN)y6tIgp zagNa`324U{=*!xG6wVE_#Dw`47FZ$x>5!+j0st{93POMHRl!aFp9(Eu zcR9e5hh99J%Vs@wEo^1usvQf71$}bI#*doaWtsCA-QQ5cThd){kl1lWa%`M6l`Em# z{7m}`O=a`EAcYtuhba-f>V95;6urm*DQ6W1E2yZtLq^>>H8YdAHUCk}+U z`D@itDZbkPDNOMlpCza(u;!r1saiz8l+E8#*~Mv4_e_>NPP9}#?{{K2TctZTcy?Ec z-I)%w7G@SI?Qcd)D0e&<*xybaAUV#;H#Wqey zDW0nLH0@5H$z5l)4#b@`$n7nEP-%!IQV+e>&e#R;N&L&t*BarhK7pJF*Q7#D`iGmw zshYmavE?{-@i-$I=ZvaJ_i%NT-qMCAvJ$YwhH`$F##>Z3P0>I?lGNKfBFveYW>Vg2 z1i%%ih(CgI3@s9cqX5pJ|B(t^+&KNxDkTvGr%0sPA@xxrgto$bFP|Wo&MMiFyDn~A z3Fs?E@tp_iSwJ9J@A$g&KCh+I2|7dHYgJ+%K_7=?o)MDF4m>KZS zjR&pQjK$OEssob812*S0Da~d;LKFe(!Scqr^3YP-X}yX_#nqDeGf)x+mV)+c;#vf{ zO6!*$vsF|bxJ;NL$0gK|V)~oB3_%8vc8mX$7NcYK1)d9uDOc6$>Avvf#$d8>D^tqD z->58p=E${Pia=ucIh%RO8i885@(PJ&B>__jAdgfu`D+T_;&tGzGRXxqqb!~%v`ou0 zKB#a=(}eK<^{Uf^9f-q*IgKC0dw)+*Whnv&gn0-1( zVfQv?Ga{^!Osl#?7HYd4A#n#8x108v`Cp$wQhSb-OfTf;qME2=;iRB*J2A}!iU!m~+QU0uhNemsp;J+dF85HFIith)O15bnn7~yF1M()dz`> z!Q{9h`}noe$Wwzzwx6acQ09<+kVDPG#ly6$9S&J~>bzlClA6XMPBQBoDBy+5K6aO*IoJXpgMR@1((FCm4A`xy(F@W+w^M zLwr+e2HS-Cg&}h-f0z4tPO0*EBVoW-Wp1Gv~W@rH3` ThWGGwq!f&yg+bO=_@Lhbk({o_ literal 0 HcmV?d00001 diff --git a/site/users/logos/gentux.png b/static/users/logos/gentux.png similarity index 100% rename from site/users/logos/gentux.png rename to static/users/logos/gentux.png diff --git a/site/users/logos/getninjas.png b/static/users/logos/getninjas.png similarity index 100% rename from site/users/logos/getninjas.png rename to static/users/logos/getninjas.png diff --git a/site/users/logos/github.png b/static/users/logos/github.png similarity index 100% rename from site/users/logos/github.png rename to static/users/logos/github.png diff --git a/site/users/logos/goalify.png b/static/users/logos/goalify.png similarity index 100% rename from site/users/logos/goalify.png rename to static/users/logos/goalify.png diff --git a/site/users/logos/graphcms.png b/static/users/logos/graphcms.png similarity index 100% rename from site/users/logos/graphcms.png rename to static/users/logos/graphcms.png diff --git a/site/users/logos/graphcool.png b/static/users/logos/graphcool.png similarity index 100% rename from site/users/logos/graphcool.png rename to static/users/logos/graphcool.png diff --git a/site/users/logos/hackages.png b/static/users/logos/hackages.png similarity index 100% rename from site/users/logos/hackages.png rename to static/users/logos/hackages.png diff --git a/site/users/logos/hasura.png b/static/users/logos/hasura.png similarity index 100% rename from site/users/logos/hasura.png rename to static/users/logos/hasura.png diff --git a/site/users/logos/hijup.png b/static/users/logos/hijup.png similarity index 100% rename from site/users/logos/hijup.png rename to static/users/logos/hijup.png diff --git a/site/users/logos/housinganywhere.png b/static/users/logos/housinganywhere.png similarity index 100% rename from site/users/logos/housinganywhere.png rename to static/users/logos/housinganywhere.png diff --git a/site/users/logos/hsl.png b/static/users/logos/hsl.png similarity index 100% rename from site/users/logos/hsl.png rename to static/users/logos/hsl.png diff --git a/site/users/logos/hudl.png b/static/users/logos/hudl.png similarity index 100% rename from site/users/logos/hudl.png rename to static/users/logos/hudl.png diff --git a/site/users/logos/icon-systems.png b/static/users/logos/icon-systems.png similarity index 100% rename from site/users/logos/icon-systems.png rename to static/users/logos/icon-systems.png diff --git a/site/users/logos/idobata.png b/static/users/logos/idobata.png similarity index 100% rename from site/users/logos/idobata.png rename to static/users/logos/idobata.png diff --git a/site/users/logos/indonesiax.png b/static/users/logos/indonesiax.png similarity index 100% rename from site/users/logos/indonesiax.png rename to static/users/logos/indonesiax.png diff --git a/site/users/logos/inerva.png b/static/users/logos/inerva.png similarity index 100% rename from site/users/logos/inerva.png rename to static/users/logos/inerva.png diff --git a/site/users/logos/intuit.png b/static/users/logos/intuit.png similarity index 100% rename from site/users/logos/intuit.png rename to static/users/logos/intuit.png diff --git a/site/users/logos/jusbrasil.png b/static/users/logos/jusbrasil.png similarity index 100% rename from site/users/logos/jusbrasil.png rename to static/users/logos/jusbrasil.png diff --git a/site/users/logos/klm.png b/static/users/logos/klm.png similarity index 100% rename from site/users/logos/klm.png rename to static/users/logos/klm.png diff --git a/site/users/logos/leanix.png b/static/users/logos/leanix.png similarity index 100% rename from site/users/logos/leanix.png rename to static/users/logos/leanix.png diff --git a/site/users/logos/legendsoflearning.png b/static/users/logos/legendsoflearning.png similarity index 100% rename from site/users/logos/legendsoflearning.png rename to static/users/logos/legendsoflearning.png diff --git a/site/users/logos/lelivrescolaire.png b/static/users/logos/lelivrescolaire.png similarity index 100% rename from site/users/logos/lelivrescolaire.png rename to static/users/logos/lelivrescolaire.png diff --git a/site/users/logos/letsevents.png b/static/users/logos/letsevents.png similarity index 100% rename from site/users/logos/letsevents.png rename to static/users/logos/letsevents.png diff --git a/site/users/logos/loggi.png b/static/users/logos/loggi.png similarity index 100% rename from site/users/logos/loggi.png rename to static/users/logos/loggi.png diff --git a/site/users/logos/m1finance.png b/static/users/logos/m1finance.png similarity index 100% rename from site/users/logos/m1finance.png rename to static/users/logos/m1finance.png diff --git a/site/users/logos/make-school.png b/static/users/logos/make-school.png similarity index 100% rename from site/users/logos/make-school.png rename to static/users/logos/make-school.png diff --git a/site/users/logos/medallia.png b/static/users/logos/medallia.png similarity index 100% rename from site/users/logos/medallia.png rename to static/users/logos/medallia.png diff --git a/site/users/logos/meteor.png b/static/users/logos/meteor.png similarity index 100% rename from site/users/logos/meteor.png rename to static/users/logos/meteor.png diff --git a/site/users/logos/metric-ai.png b/static/users/logos/metric-ai.png similarity index 100% rename from site/users/logos/metric-ai.png rename to static/users/logos/metric-ai.png diff --git a/site/users/logos/mixcloud.png b/static/users/logos/mixcloud.png similarity index 100% rename from site/users/logos/mixcloud.png rename to static/users/logos/mixcloud.png diff --git a/site/users/logos/mojilala.png b/static/users/logos/mojilala.png similarity index 100% rename from site/users/logos/mojilala.png rename to static/users/logos/mojilala.png diff --git a/site/users/logos/myheritage.png b/static/users/logos/myheritage.png similarity index 100% rename from site/users/logos/myheritage.png rename to static/users/logos/myheritage.png diff --git a/site/users/logos/myntra.png b/static/users/logos/myntra.png similarity index 100% rename from site/users/logos/myntra.png rename to static/users/logos/myntra.png diff --git a/site/users/logos/nbc-news-digital.png b/static/users/logos/nbc-news-digital.png similarity index 100% rename from site/users/logos/nbc-news-digital.png rename to static/users/logos/nbc-news-digital.png diff --git a/site/users/logos/neo4j_logo.png b/static/users/logos/neo4j_logo.png similarity index 100% rename from site/users/logos/neo4j_logo.png rename to static/users/logos/neo4j_logo.png diff --git a/site/users/logos/newspring.png b/static/users/logos/newspring.png similarity index 100% rename from site/users/logos/newspring.png rename to static/users/logos/newspring.png diff --git a/site/users/logos/ningensoft.png b/static/users/logos/ningensoft.png similarity index 100% rename from site/users/logos/ningensoft.png rename to static/users/logos/ningensoft.png diff --git a/site/users/logos/nova-ideo.png b/static/users/logos/nova-ideo.png similarity index 100% rename from site/users/logos/nova-ideo.png rename to static/users/logos/nova-ideo.png diff --git a/site/users/logos/nyt.png b/static/users/logos/nyt.png similarity index 100% rename from site/users/logos/nyt.png rename to static/users/logos/nyt.png diff --git a/site/users/logos/okgrow.png b/static/users/logos/okgrow.png similarity index 100% rename from site/users/logos/okgrow.png rename to static/users/logos/okgrow.png diff --git a/site/users/logos/ovos.png b/static/users/logos/ovos.png similarity index 100% rename from site/users/logos/ovos.png rename to static/users/logos/ovos.png diff --git a/site/users/logos/paypal.png b/static/users/logos/paypal.png similarity index 100% rename from site/users/logos/paypal.png rename to static/users/logos/paypal.png diff --git a/site/users/logos/persado.png b/static/users/logos/persado.png similarity index 100% rename from site/users/logos/persado.png rename to static/users/logos/persado.png diff --git a/site/users/logos/pinterest.png b/static/users/logos/pinterest.png similarity index 100% rename from site/users/logos/pinterest.png rename to static/users/logos/pinterest.png diff --git a/site/users/logos/product-hunt.png b/static/users/logos/product-hunt.png similarity index 100% rename from site/users/logos/product-hunt.png rename to static/users/logos/product-hunt.png diff --git a/site/users/logos/project-september.png b/static/users/logos/project-september.png similarity index 100% rename from site/users/logos/project-september.png rename to static/users/logos/project-september.png diff --git a/site/users/logos/protel.png b/static/users/logos/protel.png similarity index 100% rename from site/users/logos/protel.png rename to static/users/logos/protel.png diff --git a/site/users/logos/prowl.png b/static/users/logos/prowl.png similarity index 100% rename from site/users/logos/prowl.png rename to static/users/logos/prowl.png diff --git a/site/users/logos/quri.png b/static/users/logos/quri.png similarity index 100% rename from site/users/logos/quri.png rename to static/users/logos/quri.png diff --git a/site/users/logos/redbubble.png b/static/users/logos/redbubble.png similarity index 100% rename from site/users/logos/redbubble.png rename to static/users/logos/redbubble.png diff --git a/site/users/logos/reindex.png b/static/users/logos/reindex.png similarity index 100% rename from site/users/logos/reindex.png rename to static/users/logos/reindex.png diff --git a/site/users/logos/restorando.png b/static/users/logos/restorando.png similarity index 100% rename from site/users/logos/restorando.png rename to static/users/logos/restorando.png diff --git a/site/users/logos/salestock.png b/static/users/logos/salestock.png similarity index 100% rename from site/users/logos/salestock.png rename to static/users/logos/salestock.png diff --git a/site/users/logos/scaphold.png b/static/users/logos/scaphold.png similarity index 100% rename from site/users/logos/scaphold.png rename to static/users/logos/scaphold.png diff --git a/site/users/logos/serverless.png b/static/users/logos/serverless.png similarity index 100% rename from site/users/logos/serverless.png rename to static/users/logos/serverless.png diff --git a/site/users/logos/shopify.png b/static/users/logos/shopify.png similarity index 100% rename from site/users/logos/shopify.png rename to static/users/logos/shopify.png diff --git a/site/users/logos/sky.png b/static/users/logos/sky.png similarity index 100% rename from site/users/logos/sky.png rename to static/users/logos/sky.png diff --git a/site/users/logos/skyarchnetworks.png b/static/users/logos/skyarchnetworks.png similarity index 100% rename from site/users/logos/skyarchnetworks.png rename to static/users/logos/skyarchnetworks.png diff --git a/site/users/logos/smarkets.png b/static/users/logos/smarkets.png similarity index 100% rename from site/users/logos/smarkets.png rename to static/users/logos/smarkets.png diff --git a/site/users/logos/stackshare.png b/static/users/logos/stackshare.png similarity index 100% rename from site/users/logos/stackshare.png rename to static/users/logos/stackshare.png diff --git a/site/users/logos/startupsco.png b/static/users/logos/startupsco.png similarity index 100% rename from site/users/logos/startupsco.png rename to static/users/logos/startupsco.png diff --git a/site/users/logos/stem.png b/static/users/logos/stem.png similarity index 100% rename from site/users/logos/stem.png rename to static/users/logos/stem.png diff --git a/site/users/logos/swapcard.png b/static/users/logos/swapcard.png similarity index 100% rename from site/users/logos/swapcard.png rename to static/users/logos/swapcard.png diff --git a/site/users/logos/syzygy.png b/static/users/logos/syzygy.png similarity index 100% rename from site/users/logos/syzygy.png rename to static/users/logos/syzygy.png diff --git a/site/users/logos/taller.png b/static/users/logos/taller.png similarity index 100% rename from site/users/logos/taller.png rename to static/users/logos/taller.png diff --git a/site/users/logos/teacherspayteachers.png b/static/users/logos/teacherspayteachers.png similarity index 100% rename from site/users/logos/teacherspayteachers.png rename to static/users/logos/teacherspayteachers.png diff --git a/site/users/logos/teselagen_logo.png b/static/users/logos/teselagen_logo.png similarity index 100% rename from site/users/logos/teselagen_logo.png rename to static/users/logos/teselagen_logo.png diff --git a/site/users/logos/thehunt.png b/static/users/logos/thehunt.png similarity index 100% rename from site/users/logos/thehunt.png rename to static/users/logos/thehunt.png diff --git a/site/users/logos/trove.png b/static/users/logos/trove.png similarity index 100% rename from site/users/logos/trove.png rename to static/users/logos/trove.png diff --git a/site/users/logos/twitter.png b/static/users/logos/twitter.png similarity index 100% rename from site/users/logos/twitter.png rename to static/users/logos/twitter.png diff --git a/site/users/logos/uctrends.png b/static/users/logos/uctrends.png similarity index 100% rename from site/users/logos/uctrends.png rename to static/users/logos/uctrends.png diff --git a/site/users/logos/unigraph.png b/static/users/logos/unigraph.png similarity index 100% rename from site/users/logos/unigraph.png rename to static/users/logos/unigraph.png diff --git a/site/users/logos/universe.png b/static/users/logos/universe.png similarity index 100% rename from site/users/logos/universe.png rename to static/users/logos/universe.png diff --git a/site/users/logos/ustglobal.png b/static/users/logos/ustglobal.png similarity index 100% rename from site/users/logos/ustglobal.png rename to static/users/logos/ustglobal.png diff --git a/site/users/logos/vanilaio.png b/static/users/logos/vanilaio.png similarity index 100% rename from site/users/logos/vanilaio.png rename to static/users/logos/vanilaio.png diff --git a/site/users/logos/waitlessq.png b/static/users/logos/waitlessq.png similarity index 100% rename from site/users/logos/waitlessq.png rename to static/users/logos/waitlessq.png diff --git a/site/users/logos/waldo-photos.png b/static/users/logos/waldo-photos.png similarity index 100% rename from site/users/logos/waldo-photos.png rename to static/users/logos/waldo-photos.png diff --git a/site/users/logos/wayfair.png b/static/users/logos/wayfair.png similarity index 100% rename from site/users/logos/wayfair.png rename to static/users/logos/wayfair.png diff --git a/site/users/logos/whitescape.png b/static/users/logos/whitescape.png similarity index 100% rename from site/users/logos/whitescape.png rename to static/users/logos/whitescape.png diff --git a/site/users/logos/wirtualnapolska.png b/static/users/logos/wirtualnapolska.png similarity index 100% rename from site/users/logos/wirtualnapolska.png rename to static/users/logos/wirtualnapolska.png diff --git a/site/users/logos/wishlife.png b/static/users/logos/wishlife.png similarity index 100% rename from site/users/logos/wishlife.png rename to static/users/logos/wishlife.png diff --git a/site/users/logos/workflowgen.png b/static/users/logos/workflowgen.png similarity index 100% rename from site/users/logos/workflowgen.png rename to static/users/logos/workflowgen.png diff --git a/site/users/logos/wowair.png b/static/users/logos/wowair.png similarity index 100% rename from site/users/logos/wowair.png rename to static/users/logos/wowair.png diff --git a/site/users/logos/yelp.png b/static/users/logos/yelp.png similarity index 100% rename from site/users/logos/yelp.png rename to static/users/logos/yelp.png diff --git a/site/users/logos/zlyde.png b/static/users/logos/zlyde.png similarity index 100% rename from site/users/logos/zlyde.png rename to static/users/logos/zlyde.png diff --git a/site/users/logos/zzish.png b/static/users/logos/zzish.png similarity index 100% rename from site/users/logos/zzish.png rename to static/users/logos/zzish.png diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000000..4e6519fe90 --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,18 @@ +{ + "compilerOptions": { + "module": "commonjs", + "target": "esnext", + "jsx": "preserve", + "lib": ["dom", "es2015", "es2017"], + "strict": true, + "noEmit": true, + "isolatedModules": true, + "esModuleInterop": true, + "skipLibCheck": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "removeComments": false, + "preserveConstEnums": true + }, + "include": ["./src/**/*"] + } \ No newline at end of file diff --git a/yarn.lock b/yarn.lock new file mode 100644 index 0000000000..beb86c53ba --- /dev/null +++ b/yarn.lock @@ -0,0 +1,12513 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@ardatan/aggregate-error@0.0.6": + version "0.0.6" + resolved "https://registry.yarnpkg.com/@ardatan/aggregate-error/-/aggregate-error-0.0.6.tgz#fe6924771ea40fc98dc7a7045c2e872dc8527609" + integrity sha512-vyrkEHG1jrukmzTPtyWB4NLPauUw5bQeg4uhn8f+1SSynmrOcyvlb1GKQjjgoBzElLdfXCRYX8UnBlhklOHYRQ== + dependencies: + tslib "~2.0.1" + +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.10.4.tgz#168da1a36e90da68ae8d49c0f1b48c7c6249213a" + integrity sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg== + dependencies: + "@babel/highlight" "^7.10.4" + +"@babel/compat-data@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.12.1.tgz#d7386a689aa0ddf06255005b4b991988021101a0" + integrity sha512-725AQupWJZ8ba0jbKceeFblZTY90McUBWMwHhkFQ9q1zKPJ95GUktljFcgcsIVwRnTnRKlcYzfiNImg5G9m6ZQ== + +"@babel/core@7.10.5": + version "7.10.5" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.10.5.tgz#1f15e2cca8ad9a1d78a38ddba612f5e7cdbbd330" + integrity sha512-O34LQooYVDXPl7QWCdW9p4NR+QlzOr7xShPPJz8GsuCU3/8ua/wqTr7gmnxXv+WBESiGU/G5s16i6tUvHkNb+w== + dependencies: + "@babel/code-frame" "^7.10.4" + "@babel/generator" "^7.10.5" + "@babel/helper-module-transforms" "^7.10.5" + "@babel/helpers" "^7.10.4" + "@babel/parser" "^7.10.5" + "@babel/template" "^7.10.4" + "@babel/traverse" "^7.10.5" + "@babel/types" "^7.10.5" + convert-source-map "^1.7.0" + debug "^4.1.0" + gensync "^1.0.0-beta.1" + json5 "^2.1.2" + lodash "^4.17.19" + resolve "^1.3.2" + semver "^5.4.1" + source-map "^0.5.0" + +"@babel/core@^7.11.6": + version "7.12.3" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.12.3.tgz#1b436884e1e3bff6fb1328dc02b208759de92ad8" + integrity sha512-0qXcZYKZp3/6N2jKYVxZv0aNCsxTSVCiK72DTiTYZAu7sjg73W0/aynWjMbiGd87EQL4WyA8reiJVh92AVla9g== + dependencies: + "@babel/code-frame" "^7.10.4" + "@babel/generator" "^7.12.1" + "@babel/helper-module-transforms" "^7.12.1" + "@babel/helpers" "^7.12.1" + "@babel/parser" "^7.12.3" + "@babel/template" "^7.10.4" + "@babel/traverse" "^7.12.1" + "@babel/types" "^7.12.1" + convert-source-map "^1.7.0" + debug "^4.1.0" + gensync "^1.0.0-beta.1" + json5 "^2.1.2" + lodash "^4.17.19" + resolve "^1.3.2" + semver "^5.4.1" + source-map "^0.5.0" + +"@babel/generator@^7.10.5", "@babel/generator@^7.11.6", "@babel/generator@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.12.1.tgz#0d70be32bdaa03d7c51c8597dda76e0df1f15468" + integrity sha512-DB+6rafIdc9o72Yc3/Ph5h+6hUjeOp66pF0naQBgUFFuPqzQwIlPTm3xZR7YNvduIMtkDIj2t21LSQwnbCrXvg== + dependencies: + "@babel/types" "^7.12.1" + jsesc "^2.5.1" + source-map "^0.5.0" + +"@babel/helper-annotate-as-pure@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.10.4.tgz#5bf0d495a3f757ac3bda48b5bf3b3ba309c72ba3" + integrity sha512-XQlqKQP4vXFB7BN8fEEerrmYvHp3fK/rBkRFz9jaJbzK0B1DSfej9Kc7ZzE8Z/OnId1jpJdNAZ3BFQjWG68rcA== + dependencies: + "@babel/types" "^7.10.4" + +"@babel/helper-builder-binary-assignment-operator-visitor@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.10.4.tgz#bb0b75f31bf98cbf9ff143c1ae578b87274ae1a3" + integrity sha512-L0zGlFrGWZK4PbT8AszSfLTM5sDU1+Az/En9VrdT8/LmEiJt4zXt+Jve9DCAnQcbqDhCI+29y/L93mrDzddCcg== + dependencies: + "@babel/helper-explode-assignable-expression" "^7.10.4" + "@babel/types" "^7.10.4" + +"@babel/helper-builder-react-jsx-experimental@^7.12.1": + version "7.12.4" + resolved "https://registry.yarnpkg.com/@babel/helper-builder-react-jsx-experimental/-/helper-builder-react-jsx-experimental-7.12.4.tgz#55fc1ead5242caa0ca2875dcb8eed6d311e50f48" + integrity sha512-AjEa0jrQqNk7eDQOo0pTfUOwQBMF+xVqrausQwT9/rTKy0g04ggFNaJpaE09IQMn9yExluigWMJcj0WC7bq+Og== + dependencies: + "@babel/helper-annotate-as-pure" "^7.10.4" + "@babel/helper-module-imports" "^7.12.1" + "@babel/types" "^7.12.1" + +"@babel/helper-builder-react-jsx@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-builder-react-jsx/-/helper-builder-react-jsx-7.10.4.tgz#8095cddbff858e6fa9c326daee54a2f2732c1d5d" + integrity sha512-5nPcIZ7+KKDxT1427oBivl9V9YTal7qk0diccnh7RrcgrT/pGFOjgGw1dgryyx1GvHEpXVfoDF6Ak3rTiWh8Rg== + dependencies: + "@babel/helper-annotate-as-pure" "^7.10.4" + "@babel/types" "^7.10.4" + +"@babel/helper-compilation-targets@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.12.1.tgz#310e352888fbdbdd8577be8dfdd2afb9e7adcf50" + integrity sha512-jtBEif7jsPwP27GPHs06v4WBV0KrE8a/P7n0N0sSvHn2hwUCYnolP/CLmz51IzAW4NlN+HuoBtb9QcwnRo9F/g== + dependencies: + "@babel/compat-data" "^7.12.1" + "@babel/helper-validator-option" "^7.12.1" + browserslist "^4.12.0" + semver "^5.5.0" + +"@babel/helper-create-class-features-plugin@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.12.1.tgz#3c45998f431edd4a9214c5f1d3ad1448a6137f6e" + integrity sha512-hkL++rWeta/OVOBTRJc9a5Azh5mt5WgZUGAKMD8JM141YsE08K//bp1unBBieO6rUKkIPyUE0USQ30jAy3Sk1w== + dependencies: + "@babel/helper-function-name" "^7.10.4" + "@babel/helper-member-expression-to-functions" "^7.12.1" + "@babel/helper-optimise-call-expression" "^7.10.4" + "@babel/helper-replace-supers" "^7.12.1" + "@babel/helper-split-export-declaration" "^7.10.4" + +"@babel/helper-create-regexp-features-plugin@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.12.1.tgz#18b1302d4677f9dc4740fe8c9ed96680e29d37e8" + integrity sha512-rsZ4LGvFTZnzdNZR5HZdmJVuXK8834R5QkF3WvcnBhrlVtF0HSIUC6zbreL9MgjTywhKokn8RIYRiq99+DLAxA== + dependencies: + "@babel/helper-annotate-as-pure" "^7.10.4" + "@babel/helper-regex" "^7.10.4" + regexpu-core "^4.7.1" + +"@babel/helper-define-map@^7.10.4": + version "7.10.5" + resolved "https://registry.yarnpkg.com/@babel/helper-define-map/-/helper-define-map-7.10.5.tgz#b53c10db78a640800152692b13393147acb9bb30" + integrity sha512-fMw4kgFB720aQFXSVaXr79pjjcW5puTCM16+rECJ/plGS+zByelE8l9nCpV1GibxTnFVmUuYG9U8wYfQHdzOEQ== + dependencies: + "@babel/helper-function-name" "^7.10.4" + "@babel/types" "^7.10.5" + lodash "^4.17.19" + +"@babel/helper-explode-assignable-expression@^7.10.4": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.12.1.tgz#8006a466695c4ad86a2a5f2fb15b5f2c31ad5633" + integrity sha512-dmUwH8XmlrUpVqgtZ737tK88v07l840z9j3OEhCLwKTkjlvKpfqXVIZ0wpK3aeOxspwGrf/5AP5qLx4rO3w5rA== + dependencies: + "@babel/types" "^7.12.1" + +"@babel/helper-function-name@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.10.4.tgz#d2d3b20c59ad8c47112fa7d2a94bc09d5ef82f1a" + integrity sha512-YdaSyz1n8gY44EmN7x44zBn9zQ1Ry2Y+3GTA+3vH6Mizke1Vw0aWDM66FOYEPw8//qKkmqOckrGgTYa+6sceqQ== + dependencies: + "@babel/helper-get-function-arity" "^7.10.4" + "@babel/template" "^7.10.4" + "@babel/types" "^7.10.4" + +"@babel/helper-get-function-arity@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.4.tgz#98c1cbea0e2332f33f9a4661b8ce1505b2c19ba2" + integrity sha512-EkN3YDB+SRDgiIUnNgcmiD361ti+AVbL3f3Henf6dqqUyr5dMsorno0lJWJuLhDhkI5sYEpgj6y9kB8AOU1I2A== + dependencies: + "@babel/types" "^7.10.4" + +"@babel/helper-hoist-variables@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.10.4.tgz#d49b001d1d5a68ca5e6604dda01a6297f7c9381e" + integrity sha512-wljroF5PgCk2juF69kanHVs6vrLwIPNp6DLD+Lrl3hoQ3PpPPikaDRNFA+0t81NOoMt2DL6WW/mdU8k4k6ZzuA== + dependencies: + "@babel/types" "^7.10.4" + +"@babel/helper-member-expression-to-functions@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.12.1.tgz#fba0f2fcff3fba00e6ecb664bb5e6e26e2d6165c" + integrity sha512-k0CIe3tXUKTRSoEx1LQEPFU9vRQfqHtl+kf8eNnDqb4AUJEy5pz6aIiog+YWtVm2jpggjS1laH68bPsR+KWWPQ== + dependencies: + "@babel/types" "^7.12.1" + +"@babel/helper-module-imports@^7.0.0-beta.49", "@babel/helper-module-imports@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.12.1.tgz#1644c01591a15a2f084dd6d092d9430eb1d1216c" + integrity sha512-ZeC1TlMSvikvJNy1v/wPIazCu3NdOwgYZLIkmIyAsGhqkNpiDoQQRmaCK8YP4Pq3GPTLPV9WXaPCJKvx06JxKA== + dependencies: + "@babel/types" "^7.12.1" + +"@babel/helper-module-transforms@^7.10.5", "@babel/helper-module-transforms@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.12.1.tgz#7954fec71f5b32c48e4b303b437c34453fd7247c" + integrity sha512-QQzehgFAZ2bbISiCpmVGfiGux8YVFXQ0abBic2Envhej22DVXV9nCFaS5hIQbkyo1AdGb+gNME2TSh3hYJVV/w== + dependencies: + "@babel/helper-module-imports" "^7.12.1" + "@babel/helper-replace-supers" "^7.12.1" + "@babel/helper-simple-access" "^7.12.1" + "@babel/helper-split-export-declaration" "^7.11.0" + "@babel/helper-validator-identifier" "^7.10.4" + "@babel/template" "^7.10.4" + "@babel/traverse" "^7.12.1" + "@babel/types" "^7.12.1" + lodash "^4.17.19" + +"@babel/helper-optimise-call-expression@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.10.4.tgz#50dc96413d594f995a77905905b05893cd779673" + integrity sha512-n3UGKY4VXwXThEiKrgRAoVPBMqeoPgHVqiHZOanAJCG9nQUL2pLRQirUzl0ioKclHGpGqRgIOkgcIJaIWLpygg== + dependencies: + "@babel/types" "^7.10.4" + +"@babel/helper-plugin-utils@7.10.4", "@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz#2f75a831269d4f677de49986dff59927533cf375" + integrity sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg== + +"@babel/helper-regex@^7.10.4": + version "7.10.5" + resolved "https://registry.yarnpkg.com/@babel/helper-regex/-/helper-regex-7.10.5.tgz#32dfbb79899073c415557053a19bd055aae50ae0" + integrity sha512-68kdUAzDrljqBrio7DYAEgCoJHxppJOERHOgOrDN7WjOzP0ZQ1LsSDRXcemzVZaLvjaJsJEESb6qt+znNuENDg== + dependencies: + lodash "^4.17.19" + +"@babel/helper-remap-async-to-generator@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.12.1.tgz#8c4dbbf916314f6047dc05e6a2217074238347fd" + integrity sha512-9d0KQCRM8clMPcDwo8SevNs+/9a8yWVVmaE80FGJcEP8N1qToREmWEGnBn8BUlJhYRFz6fqxeRL1sl5Ogsed7A== + dependencies: + "@babel/helper-annotate-as-pure" "^7.10.4" + "@babel/helper-wrap-function" "^7.10.4" + "@babel/types" "^7.12.1" + +"@babel/helper-replace-supers@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.12.1.tgz#f15c9cc897439281891e11d5ce12562ac0cf3fa9" + integrity sha512-zJjTvtNJnCFsCXVi5rUInstLd/EIVNmIKA1Q9ynESmMBWPWd+7sdR+G4/wdu+Mppfep0XLyG2m7EBPvjCeFyrw== + dependencies: + "@babel/helper-member-expression-to-functions" "^7.12.1" + "@babel/helper-optimise-call-expression" "^7.10.4" + "@babel/traverse" "^7.12.1" + "@babel/types" "^7.12.1" + +"@babel/helper-simple-access@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.12.1.tgz#32427e5aa61547d38eb1e6eaf5fd1426fdad9136" + integrity sha512-OxBp7pMrjVewSSC8fXDFrHrBcJATOOFssZwv16F3/6Xtc138GHybBfPbm9kfiqQHKhYQrlamWILwlDCeyMFEaA== + dependencies: + "@babel/types" "^7.12.1" + +"@babel/helper-skip-transparent-expression-wrappers@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.12.1.tgz#462dc63a7e435ade8468385c63d2b84cce4b3cbf" + integrity sha512-Mf5AUuhG1/OCChOJ/HcADmvcHM42WJockombn8ATJG3OnyiSxBK/Mm5x78BQWvmtXZKHgbjdGL2kin/HOLlZGA== + dependencies: + "@babel/types" "^7.12.1" + +"@babel/helper-split-export-declaration@^7.10.4", "@babel/helper-split-export-declaration@^7.11.0": + version "7.11.0" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.11.0.tgz#f8a491244acf6a676158ac42072911ba83ad099f" + integrity sha512-74Vejvp6mHkGE+m+k5vHY93FX2cAtrw1zXrZXRlG4l410Nm9PxfEiVTn1PjDPV5SnmieiueY4AFg2xqhNFuuZg== + dependencies: + "@babel/types" "^7.11.0" + +"@babel/helper-validator-identifier@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz#a78c7a7251e01f616512d31b10adcf52ada5e0d2" + integrity sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw== + +"@babel/helper-validator-option@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.12.1.tgz#175567380c3e77d60ff98a54bb015fe78f2178d9" + integrity sha512-YpJabsXlJVWP0USHjnC/AQDTLlZERbON577YUVO/wLpqyj6HAtVYnWaQaN0iUN+1/tWn3c+uKKXjRut5115Y2A== + +"@babel/helper-wrap-function@^7.10.4": + version "7.12.3" + resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.12.3.tgz#3332339fc4d1fbbf1c27d7958c27d34708e990d9" + integrity sha512-Cvb8IuJDln3rs6tzjW3Y8UeelAOdnpB8xtQ4sme2MSZ9wOxrbThporC0y/EtE16VAtoyEfLM404Xr1e0OOp+ow== + dependencies: + "@babel/helper-function-name" "^7.10.4" + "@babel/template" "^7.10.4" + "@babel/traverse" "^7.10.4" + "@babel/types" "^7.10.4" + +"@babel/helpers@^7.10.4", "@babel/helpers@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.12.1.tgz#8a8261c1d438ec18cb890434df4ec768734c1e79" + integrity sha512-9JoDSBGoWtmbay98efmT2+mySkwjzeFeAL9BuWNoVQpkPFQF8SIIFUfY5os9u8wVzglzoiPRSW7cuJmBDUt43g== + dependencies: + "@babel/template" "^7.10.4" + "@babel/traverse" "^7.12.1" + "@babel/types" "^7.12.1" + +"@babel/highlight@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.10.4.tgz#7d1bdfd65753538fabe6c38596cdb76d9ac60143" + integrity sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA== + dependencies: + "@babel/helper-validator-identifier" "^7.10.4" + chalk "^2.0.0" + js-tokens "^4.0.0" + +"@babel/parser@^7.10.4", "@babel/parser@^7.10.5", "@babel/parser@^7.11.5", "@babel/parser@^7.12.1", "@babel/parser@^7.12.3", "@babel/parser@^7.7.0": + version "7.12.3" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.12.3.tgz#a305415ebe7a6c7023b40b5122a0662d928334cd" + integrity sha512-kFsOS0IbsuhO5ojF8Hc8z/8vEIOkylVBrjiZUbLTE3XFe0Qi+uu6HjzQixkFaqr0ZPAMZcBVxEwmsnsLPZ2Xsw== + +"@babel/plugin-proposal-async-generator-functions@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.12.1.tgz#dc6c1170e27d8aca99ff65f4925bd06b1c90550e" + integrity sha512-d+/o30tJxFxrA1lhzJqiUcEJdI6jKlNregCv5bASeGf2Q4MXmnwH7viDo7nhx1/ohf09oaH8j1GVYG/e3Yqk6A== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-remap-async-to-generator" "^7.12.1" + "@babel/plugin-syntax-async-generators" "^7.8.0" + +"@babel/plugin-proposal-class-properties@^7.10.4", "@babel/plugin-proposal-class-properties@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.12.1.tgz#a082ff541f2a29a4821065b8add9346c0c16e5de" + integrity sha512-cKp3dlQsFsEs5CWKnN7BnSHOd0EOW8EKpEjkoz1pO2E5KzIDNV9Ros1b0CnmbVgAGXJubOYVBOGCT1OmJwOI7w== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.12.1" + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-proposal-dynamic-import@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.12.1.tgz#43eb5c2a3487ecd98c5c8ea8b5fdb69a2749b2dc" + integrity sha512-a4rhUSZFuq5W8/OO8H7BL5zspjnc1FLd9hlOxIK/f7qG4a0qsqk8uvF/ywgBA8/OmjsapjpvaEOYItfGG1qIvQ== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-dynamic-import" "^7.8.0" + +"@babel/plugin-proposal-export-namespace-from@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.12.1.tgz#8b9b8f376b2d88f5dd774e4d24a5cc2e3679b6d4" + integrity sha512-6CThGf0irEkzujYS5LQcjBx8j/4aQGiVv7J9+2f7pGfxqyKh3WnmVJYW3hdrQjyksErMGBPQrCnHfOtna+WLbw== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-export-namespace-from" "^7.8.3" + +"@babel/plugin-proposal-json-strings@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.12.1.tgz#d45423b517714eedd5621a9dfdc03fa9f4eb241c" + integrity sha512-GoLDUi6U9ZLzlSda2Df++VSqDJg3CG+dR0+iWsv6XRw1rEq+zwt4DirM9yrxW6XWaTpmai1cWJLMfM8qQJf+yw== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-json-strings" "^7.8.0" + +"@babel/plugin-proposal-logical-assignment-operators@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.12.1.tgz#f2c490d36e1b3c9659241034a5d2cd50263a2751" + integrity sha512-k8ZmVv0JU+4gcUGeCDZOGd0lCIamU/sMtIiX3UWnUc5yzgq6YUGyEolNYD+MLYKfSzgECPcqetVcJP9Afe/aCA== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" + +"@babel/plugin-proposal-nullish-coalescing-operator@^7.10.4", "@babel/plugin-proposal-nullish-coalescing-operator@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.12.1.tgz#3ed4fff31c015e7f3f1467f190dbe545cd7b046c" + integrity sha512-nZY0ESiaQDI1y96+jk6VxMOaL4LPo/QDHBqL+SF3/vl6dHkTwHlOI8L4ZwuRBHgakRBw5zsVylel7QPbbGuYgg== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0" + +"@babel/plugin-proposal-numeric-separator@^7.10.4", "@babel/plugin-proposal-numeric-separator@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.12.1.tgz#0e2c6774c4ce48be412119b4d693ac777f7685a6" + integrity sha512-MR7Ok+Af3OhNTCxYVjJZHS0t97ydnJZt/DbR4WISO39iDnhiD8XHrY12xuSJ90FFEGjir0Fzyyn7g/zY6hxbxA== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-numeric-separator" "^7.10.4" + +"@babel/plugin-proposal-object-rest-spread@7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.10.4.tgz#50129ac216b9a6a55b3853fdd923e74bf553a4c0" + integrity sha512-6vh4SqRuLLarjgeOf4EaROJAHjvu9Gl+/346PbDH9yWbJyfnJ/ah3jmYKYtswEyCoWZiidvVHjHshd4WgjB9BA== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-object-rest-spread" "^7.8.0" + "@babel/plugin-transform-parameters" "^7.10.4" + +"@babel/plugin-proposal-object-rest-spread@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.12.1.tgz#def9bd03cea0f9b72283dac0ec22d289c7691069" + integrity sha512-s6SowJIjzlhx8o7lsFx5zmY4At6CTtDvgNQDdPzkBQucle58A6b/TTeEBYtyDgmcXjUTM+vE8YOGHZzzbc/ioA== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-object-rest-spread" "^7.8.0" + "@babel/plugin-transform-parameters" "^7.12.1" + +"@babel/plugin-proposal-optional-catch-binding@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.12.1.tgz#ccc2421af64d3aae50b558a71cede929a5ab2942" + integrity sha512-hFvIjgprh9mMw5v42sJWLI1lzU5L2sznP805zeT6rySVRA0Y18StRhDqhSxlap0oVgItRsB6WSROp4YnJTJz0g== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.0" + +"@babel/plugin-proposal-optional-chaining@^7.11.0", "@babel/plugin-proposal-optional-chaining@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.12.1.tgz#cce122203fc8a32794296fc377c6dedaf4363797" + integrity sha512-c2uRpY6WzaVDzynVY9liyykS+kVU+WRZPMPYpkelXH8KBt1oXoI89kPbZKKG/jDT5UK92FTW2fZkZaJhdiBabw== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-skip-transparent-expression-wrappers" "^7.12.1" + "@babel/plugin-syntax-optional-chaining" "^7.8.0" + +"@babel/plugin-proposal-private-methods@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.12.1.tgz#86814f6e7a21374c980c10d38b4493e703f4a389" + integrity sha512-mwZ1phvH7/NHK6Kf8LP7MYDogGV+DKB1mryFOEwx5EBNQrosvIczzZFTUmWaeujd5xT6G1ELYWUz3CutMhjE1w== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.12.1" + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-proposal-unicode-property-regex@^7.12.1", "@babel/plugin-proposal-unicode-property-regex@^7.4.4": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.12.1.tgz#2a183958d417765b9eae334f47758e5d6a82e072" + integrity sha512-MYq+l+PvHuw/rKUz1at/vb6nCnQ2gmJBNaM62z0OgH7B2W1D9pvkpYtlti9bGtizNIU1K3zm4bZF9F91efVY0w== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.12.1" + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-async-generators@^7.8.0": + version "7.8.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" + integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-class-properties@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.1.tgz#bcb297c5366e79bebadef509549cd93b04f19978" + integrity sha512-U40A76x5gTwmESz+qiqssqmeEsKvcSyvtgktrm0uzcARAmM9I1jR221f6Oq+GmHrcD+LvZDag1UTOTe2fL3TeA== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-dynamic-import@^7.8.0", "@babel/plugin-syntax-dynamic-import@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz#62bf98b2da3cd21d626154fc96ee5b3cb68eacb3" + integrity sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-export-namespace-from@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz#028964a9ba80dbc094c915c487ad7c4e7a66465a" + integrity sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-syntax-json-strings@^7.8.0": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a" + integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-jsx@7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.10.4.tgz#39abaae3cbf710c4373d8429484e6ba21340166c" + integrity sha512-KCg9mio9jwiARCB7WAcQ7Y1q+qicILjoK8LP/VkPkEKaf5dkaZZK1EcTe91a3JJlZ3qy6L5s9X52boEYi8DM9g== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-jsx@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.12.1.tgz#9d9d357cc818aa7ae7935917c1257f67677a0926" + integrity sha512-1yRi7yAtB0ETgxdY9ti/p2TivUxJkTdhu/ZbF9MshVGqOx1TdB3b7xCXs49Fupgg50N45KcAsRP/ZqWjs9SRjg== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-logical-assignment-operators@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz#ca91ef46303530448b906652bac2e9fe9941f699" + integrity sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-nullish-coalescing-operator@^7.8.0": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9" + integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-numeric-separator@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz#b9b070b3e33570cd9fd07ba7fa91c0dd37b9af97" + integrity sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-object-rest-spread@^7.8.0": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871" + integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-optional-catch-binding@^7.8.0": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz#6111a265bcfb020eb9efd0fdfd7d26402b9ed6c1" + integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-optional-chaining@^7.8.0": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz#4f69c2ab95167e0180cd5336613f8c5788f7d48a" + integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-top-level-await@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.12.1.tgz#dd6c0b357ac1bb142d98537450a319625d13d2a0" + integrity sha512-i7ooMZFS+a/Om0crxZodrTzNEPJHZrlMVGMTEpFAj6rYY/bKCddB0Dk/YxfPuYXOopuhKk/e1jV6h+WUU9XN3A== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-typescript@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.12.1.tgz#460ba9d77077653803c3dd2e673f76d66b4029e5" + integrity sha512-UZNEcCY+4Dp9yYRCAHrHDU+9ZXLYaY9MgBXSRLkB9WjYFRR6quJBumfVrEkUxrePPBwFcpWfNKXqVRQQtm7mMA== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-arrow-functions@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.12.1.tgz#8083ffc86ac8e777fbe24b5967c4b2521f3cb2b3" + integrity sha512-5QB50qyN44fzzz4/qxDPQMBCTHgxg3n0xRBLJUmBlLoU/sFvxVWGZF/ZUfMVDQuJUKXaBhbupxIzIfZ6Fwk/0A== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-async-to-generator@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.12.1.tgz#3849a49cc2a22e9743cbd6b52926d30337229af1" + integrity sha512-SDtqoEcarK1DFlRJ1hHRY5HvJUj5kX4qmtpMAm2QnhOlyuMC4TMdCRgW6WXpv93rZeYNeLP22y8Aq2dbcDRM1A== + dependencies: + "@babel/helper-module-imports" "^7.12.1" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-remap-async-to-generator" "^7.12.1" + +"@babel/plugin-transform-block-scoped-functions@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.12.1.tgz#f2a1a365bde2b7112e0a6ded9067fdd7c07905d9" + integrity sha512-5OpxfuYnSgPalRpo8EWGPzIYf0lHBWORCkj5M0oLBwHdlux9Ri36QqGW3/LR13RSVOAoUUMzoPI/jpE4ABcHoA== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-block-scoping@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.12.1.tgz#f0ee727874b42a208a48a586b84c3d222c2bbef1" + integrity sha512-zJyAC9sZdE60r1nVQHblcfCj29Dh2Y0DOvlMkcqSo0ckqjiCwNiUezUKw+RjOCwGfpLRwnAeQ2XlLpsnGkvv9w== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-classes@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.12.1.tgz#65e650fcaddd3d88ddce67c0f834a3d436a32db6" + integrity sha512-/74xkA7bVdzQTBeSUhLLJgYIcxw/dpEpCdRDiHgPJ3Mv6uC11UhjpOhl72CgqbBCmt1qtssCyB2xnJm1+PFjog== + dependencies: + "@babel/helper-annotate-as-pure" "^7.10.4" + "@babel/helper-define-map" "^7.10.4" + "@babel/helper-function-name" "^7.10.4" + "@babel/helper-optimise-call-expression" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-replace-supers" "^7.12.1" + "@babel/helper-split-export-declaration" "^7.10.4" + globals "^11.1.0" + +"@babel/plugin-transform-computed-properties@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.12.1.tgz#d68cf6c9b7f838a8a4144badbe97541ea0904852" + integrity sha512-vVUOYpPWB7BkgUWPo4C44mUQHpTZXakEqFjbv8rQMg7TC6S6ZhGZ3otQcRH6u7+adSlE5i0sp63eMC/XGffrzg== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-destructuring@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.12.1.tgz#b9a570fe0d0a8d460116413cb4f97e8e08b2f847" + integrity sha512-fRMYFKuzi/rSiYb2uRLiUENJOKq4Gnl+6qOv5f8z0TZXg3llUwUhsNNwrwaT/6dUhJTzNpBr+CUvEWBtfNY1cw== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-dotall-regex@^7.12.1", "@babel/plugin-transform-dotall-regex@^7.4.4": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.12.1.tgz#a1d16c14862817b6409c0a678d6f9373ca9cd975" + integrity sha512-B2pXeRKoLszfEW7J4Hg9LoFaWEbr/kzo3teWHmtFCszjRNa/b40f9mfeqZsIDLLt/FjwQ6pz/Gdlwy85xNckBA== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.12.1" + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-duplicate-keys@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.12.1.tgz#745661baba295ac06e686822797a69fbaa2ca228" + integrity sha512-iRght0T0HztAb/CazveUpUQrZY+aGKKaWXMJ4uf9YJtqxSUe09j3wteztCUDRHs+SRAL7yMuFqUsLoAKKzgXjw== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-exponentiation-operator@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.12.1.tgz#b0f2ed356ba1be1428ecaf128ff8a24f02830ae0" + integrity sha512-7tqwy2bv48q+c1EHbXK0Zx3KXd2RVQp6OC7PbwFNt/dPTAV3Lu5sWtWuAj8owr5wqtWnqHfl2/mJlUmqkChKug== + dependencies: + "@babel/helper-builder-binary-assignment-operator-visitor" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-for-of@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.12.1.tgz#07640f28867ed16f9511c99c888291f560921cfa" + integrity sha512-Zaeq10naAsuHo7heQvyV0ptj4dlZJwZgNAtBYBnu5nNKJoW62m0zKcIEyVECrUKErkUkg6ajMy4ZfnVZciSBhg== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-function-name@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.12.1.tgz#2ec76258c70fe08c6d7da154003a480620eba667" + integrity sha512-JF3UgJUILoFrFMEnOJLJkRHSk6LUSXLmEFsA23aR2O5CSLUxbeUX1IZ1YQ7Sn0aXb601Ncwjx73a+FVqgcljVw== + dependencies: + "@babel/helper-function-name" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-literals@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.12.1.tgz#d73b803a26b37017ddf9d3bb8f4dc58bfb806f57" + integrity sha512-+PxVGA+2Ag6uGgL0A5f+9rklOnnMccwEBzwYFL3EUaKuiyVnUipyXncFcfjSkbimLrODoqki1U9XxZzTvfN7IQ== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-member-expression-literals@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.12.1.tgz#496038602daf1514a64d43d8e17cbb2755e0c3ad" + integrity sha512-1sxePl6z9ad0gFMB9KqmYofk34flq62aqMt9NqliS/7hPEpURUCMbyHXrMPlo282iY7nAvUB1aQd5mg79UD9Jg== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-modules-amd@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.12.1.tgz#3154300b026185666eebb0c0ed7f8415fefcf6f9" + integrity sha512-tDW8hMkzad5oDtzsB70HIQQRBiTKrhfgwC/KkJeGsaNFTdWhKNt/BiE8c5yj19XiGyrxpbkOfH87qkNg1YGlOQ== + dependencies: + "@babel/helper-module-transforms" "^7.12.1" + "@babel/helper-plugin-utils" "^7.10.4" + babel-plugin-dynamic-import-node "^2.3.3" + +"@babel/plugin-transform-modules-commonjs@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.12.1.tgz#fa403124542636c786cf9b460a0ffbb48a86e648" + integrity sha512-dY789wq6l0uLY8py9c1B48V8mVL5gZh/+PQ5ZPrylPYsnAvnEMjqsUXkuoDVPeVK+0VyGar+D08107LzDQ6pag== + dependencies: + "@babel/helper-module-transforms" "^7.12.1" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-simple-access" "^7.12.1" + babel-plugin-dynamic-import-node "^2.3.3" + +"@babel/plugin-transform-modules-systemjs@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.12.1.tgz#663fea620d593c93f214a464cd399bf6dc683086" + integrity sha512-Hn7cVvOavVh8yvW6fLwveFqSnd7rbQN3zJvoPNyNaQSvgfKmDBO9U1YL9+PCXGRlZD9tNdWTy5ACKqMuzyn32Q== + dependencies: + "@babel/helper-hoist-variables" "^7.10.4" + "@babel/helper-module-transforms" "^7.12.1" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-validator-identifier" "^7.10.4" + babel-plugin-dynamic-import-node "^2.3.3" + +"@babel/plugin-transform-modules-umd@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.12.1.tgz#eb5a218d6b1c68f3d6217b8fa2cc82fec6547902" + integrity sha512-aEIubCS0KHKM0zUos5fIoQm+AZUMt1ZvMpqz0/H5qAQ7vWylr9+PLYurT+Ic7ID/bKLd4q8hDovaG3Zch2uz5Q== + dependencies: + "@babel/helper-module-transforms" "^7.12.1" + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-named-capturing-groups-regex@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.12.1.tgz#b407f5c96be0d9f5f88467497fa82b30ac3e8753" + integrity sha512-tB43uQ62RHcoDp9v2Nsf+dSM8sbNodbEicbQNA53zHz8pWUhsgHSJCGpt7daXxRydjb0KnfmB+ChXOv3oADp1Q== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.12.1" + +"@babel/plugin-transform-new-target@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.12.1.tgz#80073f02ee1bb2d365c3416490e085c95759dec0" + integrity sha512-+eW/VLcUL5L9IvJH7rT1sT0CzkdUTvPrXC2PXTn/7z7tXLBuKvezYbGdxD5WMRoyvyaujOq2fWoKl869heKjhw== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-object-super@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.12.1.tgz#4ea08696b8d2e65841d0c7706482b048bed1066e" + integrity sha512-AvypiGJH9hsquNUn+RXVcBdeE3KHPZexWRdimhuV59cSoOt5kFBmqlByorAeUlGG2CJWd0U+4ZtNKga/TB0cAw== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-replace-supers" "^7.12.1" + +"@babel/plugin-transform-parameters@^7.10.4", "@babel/plugin-transform-parameters@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.12.1.tgz#d2e963b038771650c922eff593799c96d853255d" + integrity sha512-xq9C5EQhdPK23ZeCdMxl8bbRnAgHFrw5EOC3KJUsSylZqdkCaFEXxGSBuTSObOpiiHHNyb82es8M1QYgfQGfNg== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-property-literals@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.12.1.tgz#41bc81200d730abb4456ab8b3fbd5537b59adecd" + integrity sha512-6MTCR/mZ1MQS+AwZLplX4cEySjCpnIF26ToWo942nqn8hXSm7McaHQNeGx/pt7suI1TWOWMfa/NgBhiqSnX0cQ== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-react-display-name@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.12.1.tgz#1cbcd0c3b1d6648c55374a22fc9b6b7e5341c00d" + integrity sha512-cAzB+UzBIrekfYxyLlFqf/OagTvHLcVBb5vpouzkYkBclRPraiygVnafvAoipErZLI8ANv8Ecn6E/m5qPXD26w== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-react-jsx-development@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.12.1.tgz#0b8f8cd531dcf7991f1e5f2c10a2a4f1cfc78e36" + integrity sha512-IilcGWdN1yNgEGOrB96jbTplRh+V2Pz1EoEwsKsHfX1a/L40cUYuD71Zepa7C+ujv7kJIxnDftWeZbKNEqZjCQ== + dependencies: + "@babel/helper-builder-react-jsx-experimental" "^7.12.1" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-jsx" "^7.12.1" + +"@babel/plugin-transform-react-jsx-self@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.12.1.tgz#ef43cbca2a14f1bd17807dbe4376ff89d714cf28" + integrity sha512-FbpL0ieNWiiBB5tCldX17EtXgmzeEZjFrix72rQYeq9X6nUK38HCaxexzVQrZWXanxKJPKVVIU37gFjEQYkPkA== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-react-jsx-source@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.12.1.tgz#d07de6863f468da0809edcf79a1aa8ce2a82a26b" + integrity sha512-keQ5kBfjJNRc6zZN1/nVHCd6LLIHq4aUKcVnvE/2l+ZZROSbqoiGFRtT5t3Is89XJxBQaP7NLZX2jgGHdZvvFQ== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-react-jsx@^7.10.4", "@babel/plugin-transform-react-jsx@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.12.1.tgz#c2d96c77c2b0e4362cc4e77a43ce7c2539d478cb" + integrity sha512-RmKejwnT0T0QzQUzcbP5p1VWlpnP8QHtdhEtLG55ZDQnJNalbF3eeDyu3dnGKvGzFIQiBzFhBYTwvv435p9Xpw== + dependencies: + "@babel/helper-builder-react-jsx" "^7.10.4" + "@babel/helper-builder-react-jsx-experimental" "^7.12.1" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-jsx" "^7.12.1" + +"@babel/plugin-transform-react-pure-annotations@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.12.1.tgz#05d46f0ab4d1339ac59adf20a1462c91b37a1a42" + integrity sha512-RqeaHiwZtphSIUZ5I85PEH19LOSzxfuEazoY7/pWASCAIBuATQzpSVD+eT6MebeeZT2F4eSL0u4vw6n4Nm0Mjg== + dependencies: + "@babel/helper-annotate-as-pure" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-regenerator@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.12.1.tgz#5f0a28d842f6462281f06a964e88ba8d7ab49753" + integrity sha512-gYrHqs5itw6i4PflFX3OdBPMQdPbF4bj2REIUxlMRUFk0/ZOAIpDFuViuxPjUL7YC8UPnf+XG7/utJvqXdPKng== + dependencies: + regenerator-transform "^0.14.2" + +"@babel/plugin-transform-reserved-words@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.12.1.tgz#6fdfc8cc7edcc42b36a7c12188c6787c873adcd8" + integrity sha512-pOnUfhyPKvZpVyBHhSBoX8vfA09b7r00Pmm1sH+29ae2hMTKVmSp4Ztsr8KBKjLjx17H0eJqaRC3bR2iThM54A== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-runtime@^7.11.5": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.12.1.tgz#04b792057eb460389ff6a4198e377614ea1e7ba5" + integrity sha512-Ac/H6G9FEIkS2tXsZjL4RAdS3L3WHxci0usAnz7laPWUmFiGtj7tIASChqKZMHTSQTQY6xDbOq+V1/vIq3QrWg== + dependencies: + "@babel/helper-module-imports" "^7.12.1" + "@babel/helper-plugin-utils" "^7.10.4" + resolve "^1.8.1" + semver "^5.5.1" + +"@babel/plugin-transform-shorthand-properties@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.12.1.tgz#0bf9cac5550fce0cfdf043420f661d645fdc75e3" + integrity sha512-GFZS3c/MhX1OusqB1MZ1ct2xRzX5ppQh2JU1h2Pnfk88HtFTM+TWQqJNfwkmxtPQtb/s1tk87oENfXJlx7rSDw== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-spread@^7.11.0", "@babel/plugin-transform-spread@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.12.1.tgz#527f9f311be4ec7fdc2b79bb89f7bf884b3e1e1e" + integrity sha512-vuLp8CP0BE18zVYjsEBZ5xoCecMK6LBMMxYzJnh01rxQRvhNhH1csMMmBfNo5tGpGO+NhdSNW2mzIvBu3K1fng== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-skip-transparent-expression-wrappers" "^7.12.1" + +"@babel/plugin-transform-sticky-regex@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.12.1.tgz#5c24cf50de396d30e99afc8d1c700e8bce0f5caf" + integrity sha512-CiUgKQ3AGVk7kveIaPEET1jNDhZZEl1RPMWdTBE1799bdz++SwqDHStmxfCtDfBhQgCl38YRiSnrMuUMZIWSUQ== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-regex" "^7.10.4" + +"@babel/plugin-transform-template-literals@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.12.1.tgz#b43ece6ed9a79c0c71119f576d299ef09d942843" + integrity sha512-b4Zx3KHi+taXB1dVRBhVJtEPi9h1THCeKmae2qP0YdUHIFhVjtpqqNfxeVAa1xeHVhAy4SbHxEwx5cltAu5apw== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-typeof-symbol@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.12.1.tgz#9ca6be343d42512fbc2e68236a82ae64bc7af78a" + integrity sha512-EPGgpGy+O5Kg5pJFNDKuxt9RdmTgj5sgrus2XVeMp/ZIbOESadgILUbm50SNpghOh3/6yrbsH+NB5+WJTmsA7Q== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-typescript@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.12.1.tgz#d92cc0af504d510e26a754a7dbc2e5c8cd9c7ab4" + integrity sha512-VrsBByqAIntM+EYMqSm59SiMEf7qkmI9dqMt6RbD/wlwueWmYcI0FFK5Fj47pP6DRZm+3teXjosKlwcZJ5lIMw== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.12.1" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-typescript" "^7.12.1" + +"@babel/plugin-transform-unicode-escapes@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.12.1.tgz#5232b9f81ccb07070b7c3c36c67a1b78f1845709" + integrity sha512-I8gNHJLIc7GdApm7wkVnStWssPNbSRMPtgHdmH3sRM1zopz09UWPS4x5V4n1yz/MIWTVnJ9sp6IkuXdWM4w+2Q== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-unicode-regex@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.12.1.tgz#cc9661f61390db5c65e3febaccefd5c6ac3faecb" + integrity sha512-SqH4ClNngh/zGwHZOOQMTD+e8FGWexILV+ePMyiDJttAWRh5dhDL8rcl5lSgU3Huiq6Zn6pWTMvdPAb21Dwdyg== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.12.1" + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/preset-env@^7.11.5": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.12.1.tgz#9c7e5ca82a19efc865384bb4989148d2ee5d7ac2" + integrity sha512-H8kxXmtPaAGT7TyBvSSkoSTUK6RHh61So05SyEbpmr0MCZrsNYn7mGMzzeYoOUCdHzww61k8XBft2TaES+xPLg== + dependencies: + "@babel/compat-data" "^7.12.1" + "@babel/helper-compilation-targets" "^7.12.1" + "@babel/helper-module-imports" "^7.12.1" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-validator-option" "^7.12.1" + "@babel/plugin-proposal-async-generator-functions" "^7.12.1" + "@babel/plugin-proposal-class-properties" "^7.12.1" + "@babel/plugin-proposal-dynamic-import" "^7.12.1" + "@babel/plugin-proposal-export-namespace-from" "^7.12.1" + "@babel/plugin-proposal-json-strings" "^7.12.1" + "@babel/plugin-proposal-logical-assignment-operators" "^7.12.1" + "@babel/plugin-proposal-nullish-coalescing-operator" "^7.12.1" + "@babel/plugin-proposal-numeric-separator" "^7.12.1" + "@babel/plugin-proposal-object-rest-spread" "^7.12.1" + "@babel/plugin-proposal-optional-catch-binding" "^7.12.1" + "@babel/plugin-proposal-optional-chaining" "^7.12.1" + "@babel/plugin-proposal-private-methods" "^7.12.1" + "@babel/plugin-proposal-unicode-property-regex" "^7.12.1" + "@babel/plugin-syntax-async-generators" "^7.8.0" + "@babel/plugin-syntax-class-properties" "^7.12.1" + "@babel/plugin-syntax-dynamic-import" "^7.8.0" + "@babel/plugin-syntax-export-namespace-from" "^7.8.3" + "@babel/plugin-syntax-json-strings" "^7.8.0" + "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0" + "@babel/plugin-syntax-numeric-separator" "^7.10.4" + "@babel/plugin-syntax-object-rest-spread" "^7.8.0" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.0" + "@babel/plugin-syntax-optional-chaining" "^7.8.0" + "@babel/plugin-syntax-top-level-await" "^7.12.1" + "@babel/plugin-transform-arrow-functions" "^7.12.1" + "@babel/plugin-transform-async-to-generator" "^7.12.1" + "@babel/plugin-transform-block-scoped-functions" "^7.12.1" + "@babel/plugin-transform-block-scoping" "^7.12.1" + "@babel/plugin-transform-classes" "^7.12.1" + "@babel/plugin-transform-computed-properties" "^7.12.1" + "@babel/plugin-transform-destructuring" "^7.12.1" + "@babel/plugin-transform-dotall-regex" "^7.12.1" + "@babel/plugin-transform-duplicate-keys" "^7.12.1" + "@babel/plugin-transform-exponentiation-operator" "^7.12.1" + "@babel/plugin-transform-for-of" "^7.12.1" + "@babel/plugin-transform-function-name" "^7.12.1" + "@babel/plugin-transform-literals" "^7.12.1" + "@babel/plugin-transform-member-expression-literals" "^7.12.1" + "@babel/plugin-transform-modules-amd" "^7.12.1" + "@babel/plugin-transform-modules-commonjs" "^7.12.1" + "@babel/plugin-transform-modules-systemjs" "^7.12.1" + "@babel/plugin-transform-modules-umd" "^7.12.1" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.12.1" + "@babel/plugin-transform-new-target" "^7.12.1" + "@babel/plugin-transform-object-super" "^7.12.1" + "@babel/plugin-transform-parameters" "^7.12.1" + "@babel/plugin-transform-property-literals" "^7.12.1" + "@babel/plugin-transform-regenerator" "^7.12.1" + "@babel/plugin-transform-reserved-words" "^7.12.1" + "@babel/plugin-transform-shorthand-properties" "^7.12.1" + "@babel/plugin-transform-spread" "^7.12.1" + "@babel/plugin-transform-sticky-regex" "^7.12.1" + "@babel/plugin-transform-template-literals" "^7.12.1" + "@babel/plugin-transform-typeof-symbol" "^7.12.1" + "@babel/plugin-transform-unicode-escapes" "^7.12.1" + "@babel/plugin-transform-unicode-regex" "^7.12.1" + "@babel/preset-modules" "^0.1.3" + "@babel/types" "^7.12.1" + core-js-compat "^3.6.2" + semver "^5.5.0" + +"@babel/preset-modules@^0.1.3": + version "0.1.4" + resolved "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.4.tgz#362f2b68c662842970fdb5e254ffc8fc1c2e415e" + integrity sha512-J36NhwnfdzpmH41M1DrnkkgAqhZaqr/NBdPfQ677mLzlaXo+oDiv1deyCDtgAhz8p328otdob0Du7+xgHGZbKg== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-proposal-unicode-property-regex" "^7.4.4" + "@babel/plugin-transform-dotall-regex" "^7.4.4" + "@babel/types" "^7.4.4" + esutils "^2.0.2" + +"@babel/preset-react@^7.10.4": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.12.1.tgz#7f022b13f55b6dd82f00f16d1c599ae62985358c" + integrity sha512-euCExymHCi0qB9u5fKw7rvlw7AZSjw/NaB9h7EkdTt5+yHRrXdiRTh7fkG3uBPpJg82CqLfp1LHLqWGSCrab+g== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-transform-react-display-name" "^7.12.1" + "@babel/plugin-transform-react-jsx" "^7.12.1" + "@babel/plugin-transform-react-jsx-development" "^7.12.1" + "@babel/plugin-transform-react-jsx-self" "^7.12.1" + "@babel/plugin-transform-react-jsx-source" "^7.12.1" + "@babel/plugin-transform-react-pure-annotations" "^7.12.1" + +"@babel/preset-typescript@^7.10.4": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.12.1.tgz#86480b483bb97f75036e8864fe404cc782cc311b" + integrity sha512-hNK/DhmoJPsksdHuI/RVrcEws7GN5eamhi28JkO52MqIxU8Z0QpmiSOQxZHWOHV7I3P4UjHV97ay4TcamMA6Kw== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-transform-typescript" "^7.12.1" + +"@babel/runtime-corejs3@^7.10.2": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/runtime-corejs3/-/runtime-corejs3-7.12.1.tgz#51b9092befbeeed938335a109dbe0df51451e9dc" + integrity sha512-umhPIcMrlBZ2aTWlWjUseW9LjQKxi1dpFlQS8DzsxB//5K+u6GLTC/JliPKHsd5kJVPIU6X/Hy0YvWOYPcMxBw== + dependencies: + core-js-pure "^3.0.0" + regenerator-runtime "^0.13.4" + +"@babel/runtime@^7.10.0", "@babel/runtime@^7.10.2", "@babel/runtime@^7.11.2", "@babel/runtime@^7.7.2", "@babel/runtime@^7.8.4": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.12.1.tgz#b4116a6b6711d010b2dad3b7b6e43bf1b9954740" + integrity sha512-J5AIf3vPj3UwXaAzb5j1xM4WAQDX3EMgemF8rjCP3SoW09LfRKAXQKt6CoVYl230P6iWdRcBbnLDDdnqWxZSCA== + dependencies: + regenerator-runtime "^0.13.4" + +"@babel/standalone@^7.11.6": + version "7.12.4" + resolved "https://registry.yarnpkg.com/@babel/standalone/-/standalone-7.12.4.tgz#1493960e765308cc06e9a75ba1affbe65a11124b" + integrity sha512-9vw7RYK7CWh5MdTfLyC7j6hZmDYmm6DieFP4yetvpVftKQ+yrEY7ovhnhsVHznLqx5luU9Bx4k7xoEc3acrsow== + +"@babel/template@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.10.4.tgz#3251996c4200ebc71d1a8fc405fba940f36ba278" + integrity sha512-ZCjD27cGJFUB6nmCB1Enki3r+L5kJveX9pq1SvAUKoICy6CZ9yD8xO086YXdYhvNjBdnekm4ZnaP5yC8Cs/1tA== + dependencies: + "@babel/code-frame" "^7.10.4" + "@babel/parser" "^7.10.4" + "@babel/types" "^7.10.4" + +"@babel/traverse@^7.10.4", "@babel/traverse@^7.10.5", "@babel/traverse@^7.11.5", "@babel/traverse@^7.12.1", "@babel/traverse@^7.7.0": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.12.1.tgz#941395e0c5cc86d5d3e75caa095d3924526f0c1e" + integrity sha512-MA3WPoRt1ZHo2ZmoGKNqi20YnPt0B1S0GTZEPhhd+hw2KGUzBlHuVunj6K4sNuK+reEvyiPwtp0cpaqLzJDmAw== + dependencies: + "@babel/code-frame" "^7.10.4" + "@babel/generator" "^7.12.1" + "@babel/helper-function-name" "^7.10.4" + "@babel/helper-split-export-declaration" "^7.11.0" + "@babel/parser" "^7.12.1" + "@babel/types" "^7.12.1" + debug "^4.1.0" + globals "^11.1.0" + lodash "^4.17.19" + +"@babel/types@^7.0.0-beta.49", "@babel/types@^7.10.4", "@babel/types@^7.10.5", "@babel/types@^7.11.0", "@babel/types@^7.11.5", "@babel/types@^7.12.1", "@babel/types@^7.4.4", "@babel/types@^7.7.0": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.12.1.tgz#e109d9ab99a8de735be287ee3d6a9947a190c4ae" + integrity sha512-BzSY3NJBKM4kyatSOWh3D/JJ2O3CVzBybHWxtgxnggaxEuaSTTDqeiSb/xk9lrkw2Tbqyivw5ZU4rT+EfznQsA== + dependencies: + "@babel/helper-validator-identifier" "^7.10.4" + lodash "^4.17.19" + to-fast-properties "^2.0.0" + +"@graphql-tools/batch-execute@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@graphql-tools/batch-execute/-/batch-execute-7.0.0.tgz#e79d11bd5b39f29172f6ec2eafa71103c6a6c85b" + integrity sha512-+ywPfK6N2Ddna6oOa5Qb1Mv7EA8LOwRNOAPP9dL37FEhksJM9pYqPSceUcqMqg7S9b0+Cgr78s408rgvurV3/Q== + dependencies: + "@graphql-tools/utils" "^7.0.0" + dataloader "2.0.0" + is-promise "4.0.0" + tslib "~2.0.1" + +"@graphql-tools/delegate@^7.0.0", "@graphql-tools/delegate@^7.0.1": + version "7.0.3" + resolved "https://registry.yarnpkg.com/@graphql-tools/delegate/-/delegate-7.0.3.tgz#d25028de64acc886be6e0514162aa6739d9acd51" + integrity sha512-BSRF/Wg9XNllWo3Kdt0QBBaFltexn3vAnTOWH1qLrNcmfQAvUMf17/TsAqH9ZLSKU1NW9XCOsd7YMHhhUuTCEg== + dependencies: + "@ardatan/aggregate-error" "0.0.6" + "@graphql-tools/batch-execute" "^7.0.0" + "@graphql-tools/schema" "^7.0.0" + "@graphql-tools/utils" "^7.0.2" + dataloader "2.0.0" + is-promise "4.0.0" + tslib "~2.0.1" + +"@graphql-tools/graphql-file-loader@^6.0.0": + version "6.2.5" + resolved "https://registry.yarnpkg.com/@graphql-tools/graphql-file-loader/-/graphql-file-loader-6.2.5.tgz#831289675e5f446baa19afbc0af8ea6bc94063bf" + integrity sha512-vYDn71FHqwCxWgw8swoVOsD5C0xGz/Lw4zUQnPcgZfAzhAAwl6e/rVWl/HF1UNNSf5CSZu+2oidjOWCI5Wl6Gg== + dependencies: + "@graphql-tools/import" "^6.2.4" + "@graphql-tools/utils" "^7.0.0" + fs-extra "9.0.1" + tslib "~2.0.1" + +"@graphql-tools/import@^6.2.4": + version "6.2.4" + resolved "https://registry.yarnpkg.com/@graphql-tools/import/-/import-6.2.4.tgz#0547f6d4754a924e80439d6af013577cdb617194" + integrity sha512-Q6fk6hbtDevoEVcgwb3WRn7XOqGY4MnX3Mvc+x8/b8k4RZ4wT+0WSLRDXGAKiVKRxGhgouU2lZVnGE/LDrGSCg== + dependencies: + fs-extra "9.0.1" + resolve-from "5.0.0" + tslib "~2.0.1" + +"@graphql-tools/json-file-loader@^6.0.0": + version "6.2.5" + resolved "https://registry.yarnpkg.com/@graphql-tools/json-file-loader/-/json-file-loader-6.2.5.tgz#1357d2efd2f416f44e0dd717da06463c29adbf60" + integrity sha512-9LS7WuQdSHlRUvXD7ixt5aDpr3hWsueURHOaWe7T0xZ+KWMTw+LIRtWIliCRzbjNmZ+4ZhwHB3Vc1SO2bfYLgg== + dependencies: + "@graphql-tools/utils" "^7.0.0" + fs-extra "9.0.1" + tslib "~2.0.1" + +"@graphql-tools/load@^6.0.0": + version "6.2.5" + resolved "https://registry.yarnpkg.com/@graphql-tools/load/-/load-6.2.5.tgz#7dd0d34c8ce2cfb24f61c6beba2817d9afdd7f2b" + integrity sha512-TpDgp+id0hhD1iMhdFSgWgWumdI/IpFWwouJeaEhEEAEBkdvH4W9gbBiJBSbPQwMPRNWx8/AZtry0cYKLW4lHg== + dependencies: + "@graphql-tools/merge" "^6.2.5" + "@graphql-tools/utils" "^7.0.0" + globby "11.0.1" + import-from "3.0.0" + is-glob "4.0.1" + p-limit "3.0.2" + tslib "~2.0.1" + unixify "1.0.0" + valid-url "1.0.9" + +"@graphql-tools/merge@^6.0.0", "@graphql-tools/merge@^6.2.5": + version "6.2.5" + resolved "https://registry.yarnpkg.com/@graphql-tools/merge/-/merge-6.2.5.tgz#a03d6711f2a468b8de97c0fe9092469280ca66c9" + integrity sha512-T2UEm7L5MeS1ggbGKBkdV9kTqLqSHQM13RrjPzIAYzkFL/mK837sf+oq8h2+R8B+senuHX8akUhMTcU85kcMvw== + dependencies: + "@graphql-tools/schema" "^7.0.0" + "@graphql-tools/utils" "^7.0.0" + tslib "~2.0.1" + +"@graphql-tools/schema@7.0.0", "@graphql-tools/schema@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@graphql-tools/schema/-/schema-7.0.0.tgz#f87e307d00a3d388f5c54d32f4697611396c0127" + integrity sha512-yDKgoT2+Uf3cdLYmiFB9lRIGsB6lZhILtCXHgZigYgURExrEPmfj3ZyszfEpPKYcPmKaO9FI4coDhIN0Toxl3w== + dependencies: + "@graphql-tools/utils" "^7.0.0" + tslib "~2.0.1" + +"@graphql-tools/schema@^6.0.14": + version "6.2.4" + resolved "https://registry.yarnpkg.com/@graphql-tools/schema/-/schema-6.2.4.tgz#cc4e9f5cab0f4ec48500e666719d99fc5042481d" + integrity sha512-rh+14lSY1q8IPbEv2J9x8UBFJ5NrDX9W5asXEUlPp+7vraLp/Tiox4GXdgyA92JhwpYco3nTf5Bo2JDMt1KnAQ== + dependencies: + "@graphql-tools/utils" "^6.2.4" + tslib "~2.0.1" + +"@graphql-tools/url-loader@^6.0.0": + version "6.3.2" + resolved "https://registry.yarnpkg.com/@graphql-tools/url-loader/-/url-loader-6.3.2.tgz#ed4e9dafcd83bda94ba7114629e712fc81a6a3ef" + integrity sha512-nrrZD33T7lFeOjIufCrwk2PAHYqFtdFcb1pe1ULWnvuFmFuhZnRCgIsfCsoy+WOMwmZHQ/eXBem//I/bewXlgw== + dependencies: + "@graphql-tools/delegate" "^7.0.1" + "@graphql-tools/utils" "^7.0.1" + "@graphql-tools/wrap" "^7.0.0" + "@types/websocket" "1.0.1" + cross-fetch "3.0.6" + subscriptions-transport-ws "0.9.18" + tslib "~2.0.1" + valid-url "1.0.9" + websocket "1.0.32" + +"@graphql-tools/utils@^6.0.0", "@graphql-tools/utils@^6.0.14", "@graphql-tools/utils@^6.2.4": + version "6.2.4" + resolved "https://registry.yarnpkg.com/@graphql-tools/utils/-/utils-6.2.4.tgz#38a2314d2e5e229ad4f78cca44e1199e18d55856" + integrity sha512-ybgZ9EIJE3JMOtTrTd2VcIpTXtDrn2q6eiYkeYMKRVh3K41+LZa6YnR2zKERTXqTWqhobROwLt4BZbw2O3Aeeg== + dependencies: + "@ardatan/aggregate-error" "0.0.6" + camel-case "4.1.1" + tslib "~2.0.1" + +"@graphql-tools/utils@^7.0.0", "@graphql-tools/utils@^7.0.1", "@graphql-tools/utils@^7.0.2": + version "7.0.2" + resolved "https://registry.yarnpkg.com/@graphql-tools/utils/-/utils-7.0.2.tgz#1977d3277158bf32df792a5ff76d3fdc04647a64" + integrity sha512-VQQ7krHeoXO0FS3qbWsb/vZb8c8oyiCYPIH4RSgeK9SKOUpatWYt3DW4jmLmyHZLVVMk0yjUbsOhKTBEMejKSA== + dependencies: + "@ardatan/aggregate-error" "0.0.6" + camel-case "4.1.1" + tslib "~2.0.1" + +"@graphql-tools/wrap@^7.0.0": + version "7.0.1" + resolved "https://registry.yarnpkg.com/@graphql-tools/wrap/-/wrap-7.0.1.tgz#a93e548439d19a1be6f7a032c7561059ea589b70" + integrity sha512-0feqjgEJSRLm2V0kEUaV2dw7ukVPjRujYMqNdcqHsIyXmf0VO8PGF5hcva/+5U/9Yfbf3Fck+P5JTJ5MlXPlsQ== + dependencies: + "@graphql-tools/delegate" "^7.0.0" + "@graphql-tools/schema" "^7.0.0" + "@graphql-tools/utils" "^7.0.0" + is-promise "4.0.0" + tslib "~2.0.1" + +"@hapi/address@2.x.x": + version "2.1.4" + resolved "https://registry.yarnpkg.com/@hapi/address/-/address-2.1.4.tgz#5d67ed43f3fd41a69d4b9ff7b56e7c0d1d0a81e5" + integrity sha512-QD1PhQk+s31P1ixsX0H0Suoupp3VMXzIVMSwobR3F3MSUO2YCV0B7xqLcUw/Bh8yuvd3LhpyqLQWTNcRmp6IdQ== + +"@hapi/bourne@1.x.x": + version "1.3.2" + resolved "https://registry.yarnpkg.com/@hapi/bourne/-/bourne-1.3.2.tgz#0a7095adea067243ce3283e1b56b8a8f453b242a" + integrity sha512-1dVNHT76Uu5N3eJNTYcvxee+jzX4Z9lfciqRRHCU27ihbUcYi+iSc2iml5Ke1LXe1SyJCLA0+14Jh4tXJgOppA== + +"@hapi/hoek@8.x.x", "@hapi/hoek@^8.3.0": + version "8.5.1" + resolved "https://registry.yarnpkg.com/@hapi/hoek/-/hoek-8.5.1.tgz#fde96064ca446dec8c55a8c2f130957b070c6e06" + integrity sha512-yN7kbciD87WzLGc5539Tn0sApjyiGHAJgKvG9W8C7O+6c7qmoQMfVs0W4bX17eqz6C78QJqqFrtgdK5EWf6Qow== + +"@hapi/hoek@^9.0.0": + version "9.1.0" + resolved "https://registry.yarnpkg.com/@hapi/hoek/-/hoek-9.1.0.tgz#6c9eafc78c1529248f8f4d92b0799a712b6052c6" + integrity sha512-i9YbZPN3QgfighY/1X1Pu118VUz2Fmmhd6b2n0/O8YVgGGfw0FbUYoA97k7FkpGJ+pLCFEDLUmAPPV4D1kpeFw== + +"@hapi/joi@^15.1.1": + version "15.1.1" + resolved "https://registry.yarnpkg.com/@hapi/joi/-/joi-15.1.1.tgz#c675b8a71296f02833f8d6d243b34c57b8ce19d7" + integrity sha512-entf8ZMOK8sc+8YfeOlM8pCfg3b5+WZIKBfUaaJT8UsjAAPjartzxIYm3TIbjvA4u+u++KbcXD38k682nVHDAQ== + dependencies: + "@hapi/address" "2.x.x" + "@hapi/bourne" "1.x.x" + "@hapi/hoek" "8.x.x" + "@hapi/topo" "3.x.x" + +"@hapi/topo@3.x.x": + version "3.1.6" + resolved "https://registry.yarnpkg.com/@hapi/topo/-/topo-3.1.6.tgz#68d935fa3eae7fdd5ab0d7f953f3205d8b2bfc29" + integrity sha512-tAag0jEcjwH+P2quUfipd7liWCNX2F8NvYjQp2wtInsZxnMlypdw0FtAOLxtvvkO+GSRRbmNi8m/5y42PQJYCQ== + dependencies: + "@hapi/hoek" "^8.3.0" + +"@hapi/topo@^5.0.0": + version "5.0.0" + resolved "https://registry.yarnpkg.com/@hapi/topo/-/topo-5.0.0.tgz#c19af8577fa393a06e9c77b60995af959be721e7" + integrity sha512-tFJlT47db0kMqVm3H4nQYgn6Pwg10GTZHb1pwmSiv1K4ks6drQOtfEF5ZnPjkvC+y4/bUPHK+bc87QvLcL+WMw== + dependencies: + "@hapi/hoek" "^9.0.0" + +"@jest/types@^25.5.0": + version "25.5.0" + resolved "https://registry.yarnpkg.com/@jest/types/-/types-25.5.0.tgz#4d6a4793f7b9599fc3680877b856a97dbccf2a9d" + integrity sha512-OXD0RgQ86Tu3MazKo8bnrkDRaDXXMGUqd+kTtLtK1Zb7CRzQcaSRPPPV37SvYTdevXEBVxe0HXylEjs8ibkmCw== + dependencies: + "@types/istanbul-lib-coverage" "^2.0.0" + "@types/istanbul-reports" "^1.1.1" + "@types/yargs" "^15.0.0" + chalk "^3.0.0" + +"@mdx-js/util@^2.0.0-next.8": + version "2.0.0-next.8" + resolved "https://registry.yarnpkg.com/@mdx-js/util/-/util-2.0.0-next.8.tgz#66ecc27b78e07a3ea2eb1a8fc5a99dfa0ba96690" + integrity sha512-T0BcXmNzEunFkuxrO8BFw44htvTPuAoKbLvTG41otyZBDV1Rs+JMddcUuaP5vXpTWtgD3grhcrPEwyx88RUumQ== + +"@mikaelkristiansson/domready@^1.0.10": + version "1.0.10" + resolved "https://registry.yarnpkg.com/@mikaelkristiansson/domready/-/domready-1.0.10.tgz#f6d69866c0857664e70690d7a0bfedb72143adb5" + integrity sha512-6cDuZeKSCSJ1KvfEQ25Y8OXUjqDJZ+HgUs6dhASWbAX8fxVraTfPsSeRe2bN+4QJDsgUaXaMWBYfRomCr04GGg== + +"@nodelib/fs.scandir@2.1.3": + version "2.1.3" + resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.3.tgz#3a582bdb53804c6ba6d146579c46e52130cf4a3b" + integrity sha512-eGmwYQn3gxo4r7jdQnkrrN6bY478C3P+a/y72IJukF8LjB6ZHeB3c+Ehacj3sYeSmUXGlnA67/PmbM9CVwL7Dw== + dependencies: + "@nodelib/fs.stat" "2.0.3" + run-parallel "^1.1.9" + +"@nodelib/fs.stat@2.0.3", "@nodelib/fs.stat@^2.0.2": + version "2.0.3" + resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.3.tgz#34dc5f4cabbc720f4e60f75a747e7ecd6c175bd3" + integrity sha512-bQBFruR2TAwoevBEd/NWMoAAtNGzTRgdrqnYCc7dhzfoNvqPzLyqlEQnzZ3kVnNrSp25iyxE00/3h2fqGAGArA== + +"@nodelib/fs.walk@^1.2.3", "@nodelib/fs.walk@^1.2.4": + version "1.2.4" + resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.4.tgz#011b9202a70a6366e436ca5c065844528ab04976" + integrity sha512-1V9XOY4rDW0rehzbrcqAmHnz8e7SKvX27gh8Gt2WgB0+pdzdiLV83p72kZPU+jvMbS1qU5mauP2iOvO8rhmurQ== + dependencies: + "@nodelib/fs.scandir" "2.1.3" + fastq "^1.6.0" + +"@pieh/friendly-errors-webpack-plugin@1.7.0-chalk-2": + version "1.7.0-chalk-2" + resolved "https://registry.yarnpkg.com/@pieh/friendly-errors-webpack-plugin/-/friendly-errors-webpack-plugin-1.7.0-chalk-2.tgz#2e9da9d3ade9d18d013333eb408c457d04eabac0" + integrity sha512-65+vYGuDkHBCWWjqzzR/Ck318+d6yTI00EqII9qe3aPD1J3Olhvw0X38uM5moQb1PK/ksDXwSoPGt/5QhCiotw== + dependencies: + chalk "^2.4.2" + error-stack-parser "^2.0.0" + string-width "^2.0.0" + strip-ansi "^3" + +"@pmmmwh/react-refresh-webpack-plugin@^0.4.1": + version "0.4.3" + resolved "https://registry.yarnpkg.com/@pmmmwh/react-refresh-webpack-plugin/-/react-refresh-webpack-plugin-0.4.3.tgz#1eec460596d200c0236bf195b078a5d1df89b766" + integrity sha512-br5Qwvh8D2OQqSXpd1g/xqXKnK0r+Jz6qVKBbWmpUcrbGOxUrf39V5oZ1876084CGn18uMdR5uvPqBv9UqtBjQ== + dependencies: + ansi-html "^0.0.7" + error-stack-parser "^2.0.6" + html-entities "^1.2.1" + native-url "^0.2.6" + schema-utils "^2.6.5" + source-map "^0.7.3" + +"@reach/router@^1.3.4": + version "1.3.4" + resolved "https://registry.yarnpkg.com/@reach/router/-/router-1.3.4.tgz#d2574b19370a70c80480ed91f3da840136d10f8c" + integrity sha512-+mtn9wjlB9NN2CNnnC/BRYtwdKBfSyyasPYraNAyvaV1occr/5NnB4CVzjEZipNHwYebQwcndGUmpFzxAUoqSA== + dependencies: + create-react-context "0.3.0" + invariant "^2.2.3" + prop-types "^15.6.1" + react-lifecycles-compat "^3.0.4" + +"@sideway/address@^4.1.0": + version "4.1.0" + resolved "https://registry.yarnpkg.com/@sideway/address/-/address-4.1.0.tgz#0b301ada10ac4e0e3fa525c90615e0b61a72b78d" + integrity sha512-wAH/JYRXeIFQRsxerIuLjgUu2Xszam+O5xKeatJ4oudShOOirfmsQ1D6LL54XOU2tizpCYku+s1wmU0SYdpoSA== + dependencies: + "@hapi/hoek" "^9.0.0" + +"@sideway/formula@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@sideway/formula/-/formula-3.0.0.tgz#fe158aee32e6bd5de85044be615bc08478a0a13c" + integrity sha512-vHe7wZ4NOXVfkoRb8T5otiENVlT7a3IAiw7H5M2+GO+9CDgcVUUsX1zalAztCmwyOr2RUTGJdgB+ZvSVqmdHmg== + +"@sideway/pinpoint@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@sideway/pinpoint/-/pinpoint-2.0.0.tgz#cff8ffadc372ad29fd3f78277aeb29e632cc70df" + integrity sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ== + +"@sindresorhus/is@^0.14.0": + version "0.14.0" + resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-0.14.0.tgz#9fb3a3cf3132328151f353de4632e01e52102bea" + integrity sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ== + +"@sindresorhus/is@^0.7.0": + version "0.7.0" + resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-0.7.0.tgz#9a06f4f137ee84d7df0460c1fdb1135ffa6c50fd" + integrity sha512-ONhaKPIufzzrlNbqtWFFd+jlnemX6lJAgq9ZeiZtS7I1PIf/la7CW4m83rTXRnVnsMbW2k56pGYu7AUFJD9Pow== + +"@sindresorhus/slugify@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@sindresorhus/slugify/-/slugify-1.1.0.tgz#2f195365d9b953384305b62664b44b4036c49430" + integrity sha512-ujZRbmmizX26yS/HnB3P9QNlNa4+UvHh+rIse3RbOXLp8yl6n1TxB4t7NHggtVgS8QmmOtzXo48kCxZGACpkPw== + dependencies: + "@sindresorhus/transliterate" "^0.1.1" + escape-string-regexp "^4.0.0" + +"@sindresorhus/transliterate@^0.1.1": + version "0.1.1" + resolved "https://registry.yarnpkg.com/@sindresorhus/transliterate/-/transliterate-0.1.1.tgz#779b31244781d3c898f185b61d58c89e7c782674" + integrity sha512-QSdIQ5keUFAZ3KLbfbsntW39ox0Ym8183RqTwBq/ZEFoN3NQAtGV+qWaNdzKpIDHgj9J2CQ2iNDRVU11Zyr7MQ== + dependencies: + escape-string-regexp "^2.0.0" + lodash.deburr "^4.1.0" + +"@szmarczak/http-timer@^1.1.2": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-1.1.2.tgz#b1665e2c461a2cd92f4c1bbf50d5454de0d4b421" + integrity sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA== + dependencies: + defer-to-connect "^1.0.1" + +"@turist/fetch@^7.1.7": + version "7.1.7" + resolved "https://registry.yarnpkg.com/@turist/fetch/-/fetch-7.1.7.tgz#a2b1f7ec0265e6fe0946c51eef34bad9b9efc865" + integrity sha512-XP20kvfyMNlWdPVQXyuzA40LoCHbbJptikt7W+TlZ5sS+NNjk70xjXCtHBLEudp7li3JldXEFSIUzpW1a0WEhA== + dependencies: + "@types/node-fetch" "2" + +"@turist/time@^0.0.1": + version "0.0.1" + resolved "https://registry.yarnpkg.com/@turist/time/-/time-0.0.1.tgz#57637d2a7d1860adb9f9cecbdcc966ce4f551d63" + integrity sha512-M2BiThcbxMxSKX8W4z5u9jKZn6datnM3+FpEU+eYw0//l31E2xhqi7vTAuJ/Sf0P3yhp66SDJgPu3bRRpvrdQQ== + +"@types/codemirror@0.0.98": + version "0.0.98" + resolved "https://registry.yarnpkg.com/@types/codemirror/-/codemirror-0.0.98.tgz#b35c7a4ab1fc1684b08a4e3eb65240020556ebfb" + integrity sha512-cbty5LPayy2vNSeuUdjNA9tggG+go5vAxmnLDRWpiZI5a+RDBi9dlozy4/jW/7P/gletbBWbQREEa7A81YxstA== + dependencies: + "@types/tern" "*" + +"@types/common-tags@^1.8.0": + version "1.8.0" + resolved "https://registry.yarnpkg.com/@types/common-tags/-/common-tags-1.8.0.tgz#79d55e748d730b997be5b7fce4b74488d8b26a6b" + integrity sha512-htRqZr5qn8EzMelhX/Xmx142z218lLyGaeZ3YR8jlze4TATRU9huKKvuBmAJEW4LCC4pnY1N6JAm6p85fMHjhg== + +"@types/configstore@^2.1.1": + version "2.1.1" + resolved "https://registry.yarnpkg.com/@types/configstore/-/configstore-2.1.1.tgz#cd1e8553633ad3185c3f2f239ecff5d2643e92b6" + integrity sha1-zR6FU2M60xhcPy8jns/10mQ+krY= + +"@types/debug@^0.0.30": + version "0.0.30" + resolved "https://registry.yarnpkg.com/@types/debug/-/debug-0.0.30.tgz#dc1e40f7af3b9c815013a7860e6252f6352a84df" + integrity sha512-orGL5LXERPYsLov6CWs3Fh6203+dXzJkR7OnddIr2514Hsecwc8xRpzCapshBbKFImCsvS/mk6+FWiN5LyZJAQ== + +"@types/eslint-visitor-keys@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@types/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz#1ee30d79544ca84d68d4b3cdb0af4f205663dd2d" + integrity sha512-OCutwjDZ4aFS6PB1UZ988C4YgwlBHJd6wCeQqaLdmadZ/7e+w79+hbMUFC1QXDNCmdyoRfAFdm0RypzwR+Qpag== + +"@types/estree@*": + version "0.0.45" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.45.tgz#e9387572998e5ecdac221950dab3e8c3b16af884" + integrity sha512-jnqIUKDUqJbDIUxm0Uj7bnlMnRm1T/eZ9N+AVMqhPgzrba2GhGG5o/jCTwmdPK709nEZsGoMzXEDUjcXHa3W0g== + +"@types/events@*": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@types/events/-/events-3.0.0.tgz#2862f3f58a9a7f7c3e78d79f130dd4d71c25c2a7" + integrity sha512-EaObqwIvayI5a8dCzhFrjKzVwKLxjoG9T6Ppd5CEo07LRKfQ8Yokw54r5+Wq7FaBQ+yXRvQAYPrHwya1/UFt9g== + +"@types/get-port@^3.2.0": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@types/get-port/-/get-port-3.2.0.tgz#f9e0a11443cc21336470185eae3dfba4495d29bc" + integrity sha512-TiNg8R1kjDde5Pub9F9vCwZA/BNW9HeXP5b9j7Qucqncy/McfPZ6xze/EyBdXS5FhMIGN6Fx3vg75l5KHy3V1Q== + +"@types/glob@*", "@types/glob@^7.1.1": + version "7.1.3" + resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.1.3.tgz#e6ba80f36b7daad2c685acd9266382e68985c183" + integrity sha512-SEYeGAIQIQX8NN6LDKprLjbrd5dARM5EXsd8GI/A5l0apYI1fGMWgPHSe4ZKL4eozlAyI+doUE9XbYS4xCkQ1w== + dependencies: + "@types/minimatch" "*" + "@types/node" "*" + +"@types/glob@^5.0.34": + version "5.0.36" + resolved "https://registry.yarnpkg.com/@types/glob/-/glob-5.0.36.tgz#0c80a9c8664fc7d19781de229f287077fd622cb2" + integrity sha512-KEzSKuP2+3oOjYYjujue6Z3Yqis5HKA1BsIC+jZ1v3lrRNdsqyNNtX0rQf6LSuI4DJJ2z5UV//zBZCcvM0xikg== + dependencies: + "@types/events" "*" + "@types/minimatch" "*" + "@types/node" "*" + +"@types/history@*": + version "4.7.8" + resolved "https://registry.yarnpkg.com/@types/history/-/history-4.7.8.tgz#49348387983075705fe8f4e02fb67f7daaec4934" + integrity sha512-S78QIYirQcUoo6UJZx9CSP0O2ix9IaeAXwQi26Rhr/+mg7qqPy8TzaxHSUut7eGjL8WmLccT7/MXf304WjqHcA== + +"@types/http-proxy@^1.17.4": + version "1.17.4" + resolved "https://registry.yarnpkg.com/@types/http-proxy/-/http-proxy-1.17.4.tgz#e7c92e3dbe3e13aa799440ff42e6d3a17a9d045b" + integrity sha512-IrSHl2u6AWXduUaDLqYpt45tLVCtYv7o4Z0s1KghBCDgIIS9oW5K1H8mZG/A2CfeLdEa7rTd1ACOiHBc1EMT2Q== + dependencies: + "@types/node" "*" + +"@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0": + version "2.0.3" + resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.3.tgz#4ba8ddb720221f432e443bd5f9117fd22cfd4762" + integrity sha512-sz7iLqvVUg1gIedBOvlkxPlc8/uVzyS5OwGz1cKjXzkl3FpL3al0crU8YGU1WoHkxn0Wxbw5tyi6hvzJKNzFsw== + +"@types/istanbul-lib-report@*": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#c14c24f18ea8190c118ee7562b7ff99a36552686" + integrity sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg== + dependencies: + "@types/istanbul-lib-coverage" "*" + +"@types/istanbul-reports@^1.1.1": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-1.1.2.tgz#e875cc689e47bce549ec81f3df5e6f6f11cfaeb2" + integrity sha512-P/W9yOX/3oPZSpaYOCQzGqgCQRXn0FFO/V8bWrCQs+wLmvVVxk6CRBXALEvNs9OHIatlnlFokfhuDo2ug01ciw== + dependencies: + "@types/istanbul-lib-coverage" "*" + "@types/istanbul-lib-report" "*" + +"@types/json-schema@^7.0.3", "@types/json-schema@^7.0.5": + version "7.0.6" + resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.6.tgz#f4c7ec43e81b319a9815115031709f26987891f0" + integrity sha512-3c+yGKvVP5Y9TYBEibGNR+kLtijnj7mYrXRg+WpFb2X9xm04g/DXYkfg4hmzJQosc9snFNUPkbYIhu+KAm6jJw== + +"@types/json5@^0.0.29": + version "0.0.29" + resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" + integrity sha1-7ihweulOEdK4J7y+UnC86n8+ce4= + +"@types/lodash@^4.14.92": + version "4.14.164" + resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.164.tgz#52348bcf909ac7b4c1bcbeda5c23135176e5dfa0" + integrity sha512-fXCEmONnrtbYUc5014avwBeMdhHHO8YJCkOBflUL9EoJBSKZ1dei+VO74fA7JkTHZ1GvZack2TyIw5U+1lT8jg== + +"@types/mdast@^3.0.3": + version "3.0.3" + resolved "https://registry.yarnpkg.com/@types/mdast/-/mdast-3.0.3.tgz#2d7d671b1cd1ea3deb306ea75036c2a0407d2deb" + integrity sha512-SXPBMnFVQg1s00dlMCc/jCdvPqdE4mXaMMCeRlxLDmTAEoegHT53xKtkDnzDTOcmMHUfcjyf36/YYZ6SxRdnsw== + dependencies: + "@types/unist" "*" + +"@types/minimatch@*": + version "3.0.3" + resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.3.tgz#3dca0e3f33b200fc7d1139c0cd96c1268cadfd9d" + integrity sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA== + +"@types/mkdirp@^0.5.2": + version "0.5.2" + resolved "https://registry.yarnpkg.com/@types/mkdirp/-/mkdirp-0.5.2.tgz#503aacfe5cc2703d5484326b1b27efa67a339c1f" + integrity sha512-U5icWpv7YnZYGsN4/cmh3WD2onMY0aJIiTE6+51TwJCttdHvtCYmkBNOobHlXwrJRL0nkH9jH4kD+1FAdMN4Tg== + dependencies: + "@types/node" "*" + +"@types/node-fetch@2": + version "2.5.7" + resolved "https://registry.yarnpkg.com/@types/node-fetch/-/node-fetch-2.5.7.tgz#20a2afffa882ab04d44ca786449a276f9f6bbf3c" + integrity sha512-o2WVNf5UhWRkxlf6eq+jMZDu7kjgpgJfl4xVNlvryc95O/6F2ld8ztKX+qu+Rjyet93WAWm5LjeX9H5FGkODvw== + dependencies: + "@types/node" "*" + form-data "^3.0.0" + +"@types/node@*": + version "14.14.6" + resolved "https://registry.yarnpkg.com/@types/node/-/node-14.14.6.tgz#146d3da57b3c636cc0d1769396ce1cfa8991147f" + integrity sha512-6QlRuqsQ/Ox/aJEQWBEJG7A9+u7oSYl3mem/K8IzxXG/kAGbV1YPD9Bg9Zw3vyxC/YP+zONKwy8hGkSt1jxFMw== + +"@types/node@^8.5.7": + version "8.10.66" + resolved "https://registry.yarnpkg.com/@types/node/-/node-8.10.66.tgz#dd035d409df322acc83dff62a602f12a5783bbb3" + integrity sha512-tktOkFUA4kXx2hhhrB8bIFb5TbwzS4uOhKEmwiD+NoiL0qtP2OQ9mFldbgD4dV1djrlBYP6eBuQZiWjuHUpqFw== + +"@types/parse-json@^4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0" + integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA== + +"@types/prismjs@1.16.2": + version "1.16.2" + resolved "https://registry.yarnpkg.com/@types/prismjs/-/prismjs-1.16.2.tgz#c130c977191c988cb35e97585da5d580948cc2d2" + integrity sha512-1M/j21xgTde7RPtpJVQebW5rzrquj7S+wnqt4x9uWrIPpr0Ya/uXypcqC2aUQL5gtLXFCKSH7GnjfAijMdfbuA== + +"@types/prop-types@*": + version "15.7.3" + resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.3.tgz#2ab0d5da2e5815f94b0b9d4b95d1e5f243ab2ca7" + integrity sha512-KfRL3PuHmqQLOG+2tGpRO26Ctg+Cq1E01D2DMriKEATHgWLfeNDmq9e29Q9WIky0dQ3NPkd1mzYH8Lm936Z9qw== + +"@types/q@^1.5.1": + version "1.5.4" + resolved "https://registry.yarnpkg.com/@types/q/-/q-1.5.4.tgz#15925414e0ad2cd765bfef58842f7e26a7accb24" + integrity sha512-1HcDas8SEj4z1Wc696tH56G8OlRaH/sqZOynNNB+HF0WOeXPaxTtbYzJY2oEfiUxjSKjhCKr+MvR7dCHcEelug== + +"@types/reach__router@^1.3.6": + version "1.3.6" + resolved "https://registry.yarnpkg.com/@types/reach__router/-/reach__router-1.3.6.tgz#413417ce74caab331c70ce6a03a4c825188e4709" + integrity sha512-RHYataCUPQnt+GHoASyRLq6wmZ0n8jWlBW8Lxcwd30NN6vQfbmTeoSDfkgxO0S1lEzArp8OFDsq5KIs7FygjtA== + dependencies: + "@types/history" "*" + "@types/react" "*" + +"@types/react-helmet@6.1.0": + version "6.1.0" + resolved "https://registry.yarnpkg.com/@types/react-helmet/-/react-helmet-6.1.0.tgz#af586ed685f4905e2adc7462d1d65ace52beee7a" + integrity sha512-PYRoU1XJFOzQ3BHvWL1T8iDNbRjdMDJMT5hFmZKGbsq09kbSqJy61uwEpTrbTNWDopVphUT34zUSVLK9pjsgYQ== + dependencies: + "@types/react" "*" + +"@types/react@*": + version "16.9.55" + resolved "https://registry.yarnpkg.com/@types/react/-/react-16.9.55.tgz#47078587f5bfe028a23b6b46c7b94ac0d436acff" + integrity sha512-6KLe6lkILeRwyyy7yG9rULKJ0sXplUsl98MGoCfpteXf9sPWFWWMknDcsvubcpaTdBuxtsLF6HDUwdApZL/xIg== + dependencies: + "@types/prop-types" "*" + csstype "^3.0.2" + +"@types/rimraf@^2.0.2": + version "2.0.4" + resolved "https://registry.yarnpkg.com/@types/rimraf/-/rimraf-2.0.4.tgz#403887b0b53c6100a6c35d2ab24f6ccc042fec46" + integrity sha512-8gBudvllD2A/c0CcEX/BivIDorHFt5UI5m46TsNj8DjWCCTTZT74kEe4g+QsY7P/B9WdO98d82zZgXO/RQzu2Q== + dependencies: + "@types/glob" "*" + "@types/node" "*" + +"@types/tern@*": + version "0.23.3" + resolved "https://registry.yarnpkg.com/@types/tern/-/tern-0.23.3.tgz#4b54538f04a88c9ff79de1f6f94f575a7f339460" + integrity sha512-imDtS4TAoTcXk0g7u4kkWqedB3E4qpjXzCpD2LU5M5NAXHzCDsypyvXSaG7mM8DKYkCRa7tFp4tS/lp/Wo7Q3w== + dependencies: + "@types/estree" "*" + +"@types/tmp@^0.0.33": + version "0.0.33" + resolved "https://registry.yarnpkg.com/@types/tmp/-/tmp-0.0.33.tgz#1073c4bc824754ae3d10cfab88ab0237ba964e4d" + integrity sha1-EHPEvIJHVK49EM+riKsCN7qWTk0= + +"@types/unist@*", "@types/unist@^2.0.0", "@types/unist@^2.0.2", "@types/unist@^2.0.3": + version "2.0.3" + resolved "https://registry.yarnpkg.com/@types/unist/-/unist-2.0.3.tgz#9c088679876f374eb5983f150d4787aa6fb32d7e" + integrity sha512-FvUupuM3rlRsRtCN+fDudtmytGO6iHJuuRKS1Ss0pG5z8oX0diNEw94UEL7hgDbpN94rgaK5R7sWm6RrSkZuAQ== + +"@types/vfile-message@*": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@types/vfile-message/-/vfile-message-2.0.0.tgz#690e46af0fdfc1f9faae00cd049cc888957927d5" + integrity sha512-GpTIuDpb9u4zIO165fUy9+fXcULdD8HFRNli04GehoMVbeNq7D6OBnqSmg3lxZnC+UvgUhEWKxdKiwYUkGltIw== + dependencies: + vfile-message "*" + +"@types/vfile@^3.0.0": + version "3.0.2" + resolved "https://registry.yarnpkg.com/@types/vfile/-/vfile-3.0.2.tgz#19c18cd232df11ce6fa6ad80259bc86c366b09b9" + integrity sha512-b3nLFGaGkJ9rzOcuXRfHkZMdjsawuDD0ENL9fzTophtBg8FJHSGbH7daXkEpcwy3v7Xol3pAvsmlYyFhR4pqJw== + dependencies: + "@types/node" "*" + "@types/unist" "*" + "@types/vfile-message" "*" + +"@types/websocket@1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@types/websocket/-/websocket-1.0.1.tgz#039272c196c2c0e4868a0d8a1a27bbb86e9e9138" + integrity sha512-f5WLMpezwVxCLm1xQe/kdPpQIOmL0TXYx2O15VYfYzc7hTIdxiOoOvez+McSIw3b7z/1zGovew9YSL7+h4h7/Q== + dependencies: + "@types/node" "*" + +"@types/yargs-parser@*": + version "15.0.0" + resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-15.0.0.tgz#cb3f9f741869e20cce330ffbeb9271590483882d" + integrity sha512-FA/BWv8t8ZWJ+gEOnLLd8ygxH/2UFbAvgEonyfN6yWGLKc7zVjbpl2Y4CTjid9h2RfgPP6SEt6uHwEOply00yw== + +"@types/yargs@^15.0.0": + version "15.0.9" + resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-15.0.9.tgz#524cd7998fe810cdb02f26101b699cccd156ff19" + integrity sha512-HmU8SeIRhZCWcnRskCs36Q1Q00KBV6Cqh/ora8WN1+22dY07AZdn6Gel8QZ3t26XYPImtcL8WV/eqjhVmMEw4g== + dependencies: + "@types/yargs-parser" "*" + +"@types/yoga-layout@1.9.2": + version "1.9.2" + resolved "https://registry.yarnpkg.com/@types/yoga-layout/-/yoga-layout-1.9.2.tgz#efaf9e991a7390dc081a0b679185979a83a9639a" + integrity sha512-S9q47ByT2pPvD65IvrWp7qppVMpk9WGMbVq9wbWZOHg6tnXSD4vyhao6nOSBwwfDdV2p3Kx9evA9vI+XWTfDvw== + +"@typescript-eslint/eslint-plugin@^2.24.0": + version "2.34.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-2.34.0.tgz#6f8ce8a46c7dea4a6f1d171d2bb8fbae6dac2be9" + integrity sha512-4zY3Z88rEE99+CNvTbXSyovv2z9PNOVffTWD2W8QF5s2prBQtwN2zadqERcrHpcR7O/+KMI3fcTAmUUhK/iQcQ== + dependencies: + "@typescript-eslint/experimental-utils" "2.34.0" + functional-red-black-tree "^1.0.1" + regexpp "^3.0.0" + tsutils "^3.17.1" + +"@typescript-eslint/experimental-utils@2.34.0": + version "2.34.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-2.34.0.tgz#d3524b644cdb40eebceca67f8cf3e4cc9c8f980f" + integrity sha512-eS6FTkq+wuMJ+sgtuNTtcqavWXqsflWcfBnlYhg/nS4aZ1leewkXGbvBhaapn1q6qf4M71bsR1tez5JTRMuqwA== + dependencies: + "@types/json-schema" "^7.0.3" + "@typescript-eslint/typescript-estree" "2.34.0" + eslint-scope "^5.0.0" + eslint-utils "^2.0.0" + +"@typescript-eslint/parser@^2.24.0": + version "2.34.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-2.34.0.tgz#50252630ca319685420e9a39ca05fe185a256bc8" + integrity sha512-03ilO0ucSD0EPTw2X4PntSIRFtDPWjrVq7C3/Z3VQHRC7+13YB55rcJI3Jt+YgeHbjUdJPcPa7b23rXCBokuyA== + dependencies: + "@types/eslint-visitor-keys" "^1.0.0" + "@typescript-eslint/experimental-utils" "2.34.0" + "@typescript-eslint/typescript-estree" "2.34.0" + eslint-visitor-keys "^1.1.0" + +"@typescript-eslint/typescript-estree@2.34.0": + version "2.34.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-2.34.0.tgz#14aeb6353b39ef0732cc7f1b8285294937cf37d5" + integrity sha512-OMAr+nJWKdlVM9LOqCqh3pQQPwxHAN7Du8DR6dmwCrAmxtiXQnhHJ6tBNtf+cggqfo51SG/FCwnKhXCIM7hnVg== + dependencies: + debug "^4.1.1" + eslint-visitor-keys "^1.1.0" + glob "^7.1.6" + is-glob "^4.0.1" + lodash "^4.17.15" + semver "^7.3.2" + tsutils "^3.17.1" + +"@webassemblyjs/ast@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.9.0.tgz#bd850604b4042459a5a41cd7d338cbed695ed964" + integrity sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA== + dependencies: + "@webassemblyjs/helper-module-context" "1.9.0" + "@webassemblyjs/helper-wasm-bytecode" "1.9.0" + "@webassemblyjs/wast-parser" "1.9.0" + +"@webassemblyjs/floating-point-hex-parser@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.9.0.tgz#3c3d3b271bddfc84deb00f71344438311d52ffb4" + integrity sha512-TG5qcFsS8QB4g4MhrxK5TqfdNe7Ey/7YL/xN+36rRjl/BlGE/NcBvJcqsRgCP6Z92mRE+7N50pRIi8SmKUbcQA== + +"@webassemblyjs/helper-api-error@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.9.0.tgz#203f676e333b96c9da2eeab3ccef33c45928b6a2" + integrity sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw== + +"@webassemblyjs/helper-buffer@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.9.0.tgz#a1442d269c5feb23fcbc9ef759dac3547f29de00" + integrity sha512-qZol43oqhq6yBPx7YM3m9Bv7WMV9Eevj6kMi6InKOuZxhw+q9hOkvq5e/PpKSiLfyetpaBnogSbNCfBwyB00CA== + +"@webassemblyjs/helper-code-frame@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.9.0.tgz#647f8892cd2043a82ac0c8c5e75c36f1d9159f27" + integrity sha512-ERCYdJBkD9Vu4vtjUYe8LZruWuNIToYq/ME22igL+2vj2dQ2OOujIZr3MEFvfEaqKoVqpsFKAGsRdBSBjrIvZA== + dependencies: + "@webassemblyjs/wast-printer" "1.9.0" + +"@webassemblyjs/helper-fsm@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-fsm/-/helper-fsm-1.9.0.tgz#c05256b71244214671f4b08ec108ad63b70eddb8" + integrity sha512-OPRowhGbshCb5PxJ8LocpdX9Kl0uB4XsAjl6jH/dWKlk/mzsANvhwbiULsaiqT5GZGT9qinTICdj6PLuM5gslw== + +"@webassemblyjs/helper-module-context@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-module-context/-/helper-module-context-1.9.0.tgz#25d8884b76839871a08a6c6f806c3979ef712f07" + integrity sha512-MJCW8iGC08tMk2enck1aPW+BE5Cw8/7ph/VGZxwyvGbJwjktKkDK7vy7gAmMDx88D7mhDTCNKAW5tED+gZ0W8g== + dependencies: + "@webassemblyjs/ast" "1.9.0" + +"@webassemblyjs/helper-wasm-bytecode@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz#4fed8beac9b8c14f8c58b70d124d549dd1fe5790" + integrity sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw== + +"@webassemblyjs/helper-wasm-section@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.9.0.tgz#5a4138d5a6292ba18b04c5ae49717e4167965346" + integrity sha512-XnMB8l3ek4tvrKUUku+IVaXNHz2YsJyOOmz+MMkZvh8h1uSJpSen6vYnw3IoQ7WwEuAhL8Efjms1ZWjqh2agvw== + dependencies: + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/helper-buffer" "1.9.0" + "@webassemblyjs/helper-wasm-bytecode" "1.9.0" + "@webassemblyjs/wasm-gen" "1.9.0" + +"@webassemblyjs/ieee754@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.9.0.tgz#15c7a0fbaae83fb26143bbacf6d6df1702ad39e4" + integrity sha512-dcX8JuYU/gvymzIHc9DgxTzUUTLexWwt8uCTWP3otys596io0L5aW02Gb1RjYpx2+0Jus1h4ZFqjla7umFniTg== + dependencies: + "@xtuc/ieee754" "^1.2.0" + +"@webassemblyjs/leb128@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.9.0.tgz#f19ca0b76a6dc55623a09cffa769e838fa1e1c95" + integrity sha512-ENVzM5VwV1ojs9jam6vPys97B/S65YQtv/aanqnU7D8aSoHFX8GyhGg0CMfyKNIHBuAVjy3tlzd5QMMINa7wpw== + dependencies: + "@xtuc/long" "4.2.2" + +"@webassemblyjs/utf8@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.9.0.tgz#04d33b636f78e6a6813227e82402f7637b6229ab" + integrity sha512-GZbQlWtopBTP0u7cHrEx+73yZKrQoBMpwkGEIqlacljhXCkVM1kMQge/Mf+csMJAjEdSwhOyLAS0AoR3AG5P8w== + +"@webassemblyjs/wasm-edit@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.9.0.tgz#3fe6d79d3f0f922183aa86002c42dd256cfee9cf" + integrity sha512-FgHzBm80uwz5M8WKnMTn6j/sVbqilPdQXTWraSjBwFXSYGirpkSWE2R9Qvz9tNiTKQvoKILpCuTjBKzOIm0nxw== + dependencies: + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/helper-buffer" "1.9.0" + "@webassemblyjs/helper-wasm-bytecode" "1.9.0" + "@webassemblyjs/helper-wasm-section" "1.9.0" + "@webassemblyjs/wasm-gen" "1.9.0" + "@webassemblyjs/wasm-opt" "1.9.0" + "@webassemblyjs/wasm-parser" "1.9.0" + "@webassemblyjs/wast-printer" "1.9.0" + +"@webassemblyjs/wasm-gen@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.9.0.tgz#50bc70ec68ded8e2763b01a1418bf43491a7a49c" + integrity sha512-cPE3o44YzOOHvlsb4+E9qSqjc9Qf9Na1OO/BHFy4OI91XDE14MjFN4lTMezzaIWdPqHnsTodGGNP+iRSYfGkjA== + dependencies: + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/helper-wasm-bytecode" "1.9.0" + "@webassemblyjs/ieee754" "1.9.0" + "@webassemblyjs/leb128" "1.9.0" + "@webassemblyjs/utf8" "1.9.0" + +"@webassemblyjs/wasm-opt@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.9.0.tgz#2211181e5b31326443cc8112eb9f0b9028721a61" + integrity sha512-Qkjgm6Anhm+OMbIL0iokO7meajkzQD71ioelnfPEj6r4eOFuqm4YC3VBPqXjFyyNwowzbMD+hizmprP/Fwkl2A== + dependencies: + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/helper-buffer" "1.9.0" + "@webassemblyjs/wasm-gen" "1.9.0" + "@webassemblyjs/wasm-parser" "1.9.0" + +"@webassemblyjs/wasm-parser@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.9.0.tgz#9d48e44826df4a6598294aa6c87469d642fff65e" + integrity sha512-9+wkMowR2AmdSWQzsPEjFU7njh8HTO5MqO8vjwEHuM+AMHioNqSBONRdr0NQQ3dVQrzp0s8lTcYqzUdb7YgELA== + dependencies: + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/helper-api-error" "1.9.0" + "@webassemblyjs/helper-wasm-bytecode" "1.9.0" + "@webassemblyjs/ieee754" "1.9.0" + "@webassemblyjs/leb128" "1.9.0" + "@webassemblyjs/utf8" "1.9.0" + +"@webassemblyjs/wast-parser@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-parser/-/wast-parser-1.9.0.tgz#3031115d79ac5bd261556cecc3fa90a3ef451914" + integrity sha512-qsqSAP3QQ3LyZjNC/0jBJ/ToSxfYJ8kYyuiGvtn/8MK89VrNEfwj7BPQzJVHi0jGTRK2dGdJ5PRqhtjzoww+bw== + dependencies: + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/floating-point-hex-parser" "1.9.0" + "@webassemblyjs/helper-api-error" "1.9.0" + "@webassemblyjs/helper-code-frame" "1.9.0" + "@webassemblyjs/helper-fsm" "1.9.0" + "@xtuc/long" "4.2.2" + +"@webassemblyjs/wast-printer@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.9.0.tgz#4935d54c85fef637b00ce9f52377451d00d47899" + integrity sha512-2J0nE95rHXHyQ24cWjMKJ1tqB/ds8z/cyeOZxJhcb+rW+SQASVjuznUSmdz5GpVJTzU8JkhYut0D3siFDD6wsA== + dependencies: + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/wast-parser" "1.9.0" + "@xtuc/long" "4.2.2" + +"@xtuc/ieee754@^1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz#eef014a3145ae477a1cbc00cd1e552336dceb790" + integrity sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA== + +"@xtuc/long@4.2.2": + version "4.2.2" + resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d" + integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== + +accepts@^1.3.7, accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.7: + version "1.3.7" + resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.7.tgz#531bc726517a3b2b41f850021c6cc15eaab507cd" + integrity sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA== + dependencies: + mime-types "~2.1.24" + negotiator "0.6.2" + +acorn-jsx@^5.2.0: + version "5.3.1" + resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.1.tgz#fc8661e11b7ac1539c47dbfea2e72b3af34d267b" + integrity sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng== + +acorn@^6.4.1: + version "6.4.2" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.2.tgz#35866fd710528e92de10cf06016498e47e39e1e6" + integrity sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ== + +acorn@^7.1.1: + version "7.4.1" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" + integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== + +address@1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/address/-/address-1.0.3.tgz#b5f50631f8d6cec8bd20c963963afb55e06cbce9" + integrity sha512-z55ocwKBRLryBs394Sm3ushTtBeg6VAeuku7utSoSnsJKvKcnXFIyC6vh27n3rXyxSgkJBBCAvyOn7gSUcTYjg== + +address@1.1.2, address@^1.0.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/address/-/address-1.1.2.tgz#bf1116c9c758c51b7a933d296b72c221ed9428b6" + integrity sha512-aT6camzM4xEA54YVJYSqxz1kv4IHnQZRtThJJHhUMRExaU5spC7jX5ugSwTaTgJliIgs4VhZOk7htClvQ/LmRA== + +after@0.8.2: + version "0.8.2" + resolved "https://registry.yarnpkg.com/after/-/after-0.8.2.tgz#fedb394f9f0e02aa9768e702bda23b505fae7e1f" + integrity sha1-/ts5T58OAqqXaOcCvaI7UF+ufh8= + +aggregate-error@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.1.0.tgz#92670ff50f5359bdb7a3e0d40d0ec30c5737687a" + integrity sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA== + dependencies: + clean-stack "^2.0.0" + indent-string "^4.0.0" + +ajv-errors@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/ajv-errors/-/ajv-errors-1.0.1.tgz#f35986aceb91afadec4102fbd85014950cefa64d" + integrity sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ== + +ajv-keywords@^3.1.0, ajv-keywords@^3.4.1, ajv-keywords@^3.5.2: + version "3.5.2" + resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz#31f29da5ab6e00d1c2d329acf7b5929614d5014d" + integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ== + +ajv@^6.1.0, ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.4: + version "6.12.6" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" + integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== + dependencies: + fast-deep-equal "^3.1.1" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.4.1" + uri-js "^4.2.2" + +alphanum-sort@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/alphanum-sort/-/alphanum-sort-1.0.2.tgz#97a1119649b211ad33691d9f9f486a8ec9fbe0a3" + integrity sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM= + +ansi-align@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/ansi-align/-/ansi-align-3.0.0.tgz#b536b371cf687caaef236c18d3e21fe3797467cb" + integrity sha512-ZpClVKqXN3RGBmKibdfWzqCY4lnjEuoNzU5T0oEFpfd/z5qJHVarukridD4juLO2FXMiwUQxr9WqQtaYa8XRYw== + dependencies: + string-width "^3.0.0" + +ansi-colors@^3.0.0: + version "3.2.4" + resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-3.2.4.tgz#e3a3da4bfbae6c86a9c285625de124a234026fbf" + integrity sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA== + +ansi-escapes@^3.0.0, ansi-escapes@^3.1.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b" + integrity sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ== + +ansi-escapes@^4.2.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.1.tgz#a5c47cc43181f1f38ffd7076837700d395522a61" + integrity sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA== + dependencies: + type-fest "^0.11.0" + +ansi-html@0.0.7, ansi-html@^0.0.7: + version "0.0.7" + resolved "https://registry.yarnpkg.com/ansi-html/-/ansi-html-0.0.7.tgz#813584021962a9e9e6fd039f940d12f56ca7859e" + integrity sha1-gTWEAhliqenm/QOflA0S9WynhZ4= + +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-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" + integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg= + +ansi-regex@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" + integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg== + +ansi-regex@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75" + integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg== + +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.0, 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" + +ansi-styles@^4.0.0, ansi-styles@^4.1.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" + integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== + dependencies: + color-convert "^2.0.1" + +anymatch@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb" + integrity sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw== + dependencies: + micromatch "^3.1.4" + normalize-path "^2.1.1" + +anymatch@~3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.1.tgz#c55ecf02185e2469259399310c173ce31233b142" + integrity sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg== + dependencies: + normalize-path "^3.0.0" + picomatch "^2.0.4" + +application-config-path@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/application-config-path/-/application-config-path-0.1.0.tgz#193c5f0a86541a4c66fba1e2dc38583362ea5e8f" + integrity sha1-GTxfCoZUGkxm+6Hi3DhYM2LqXo8= + +aproba@^1.1.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" + integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== + +arch@^2.1.1: + version "2.2.0" + resolved "https://registry.yarnpkg.com/arch/-/arch-2.2.0.tgz#1bc47818f305764f23ab3306b0bfc086c5a29d11" + integrity sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ== + +argparse@^1.0.7: + version "1.0.10" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" + integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== + dependencies: + sprintf-js "~1.0.2" + +aria-query@^4.2.2: + version "4.2.2" + resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-4.2.2.tgz#0d2ca6c9aceb56b8977e9fed6aed7e15bbd2f83b" + integrity sha512-o/HelwhuKpTj/frsOsbNLNgnNGVIFsVP/SW2BSF14gVl7kAfMOJ6/8wUAUvG1R1NHKrfG+2sHZTu0yauT1qBrA== + dependencies: + "@babel/runtime" "^7.10.2" + "@babel/runtime-corejs3" "^7.10.2" + +arr-diff@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" + integrity sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA= + +arr-flatten@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" + integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg== + +arr-union@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" + integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ= + +array-filter@~0.0.0: + version "0.0.1" + resolved "https://registry.yarnpkg.com/array-filter/-/array-filter-0.0.1.tgz#7da8cf2e26628ed732803581fd21f67cacd2eeec" + integrity sha1-fajPLiZijtcygDWB/SH2fKzS7uw= + +array-find-index@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/array-find-index/-/array-find-index-1.0.2.tgz#df010aa1287e164bbda6f9723b0a96a1ec4187a1" + integrity sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E= + +array-flatten@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" + integrity sha1-ml9pkFGx5wczKPKgCJaLZOopVdI= + +array-flatten@^2.1.0: + version "2.1.2" + resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-2.1.2.tgz#24ef80a28c1a893617e2149b0c6d0d788293b099" + integrity sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ== + +array-includes@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.1.tgz#cdd67e6852bdf9c1215460786732255ed2459348" + integrity sha512-c2VXaCHl7zPsvpkFsw4nxvFie4fh1ur9bpcgsVkIjqn0H/Xwdg+7fv3n2r/isyS8EBj5b06M9kHyZuIr4El6WQ== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.0" + is-string "^1.0.5" + +array-iterate@^1.0.0: + version "1.1.4" + resolved "https://registry.yarnpkg.com/array-iterate/-/array-iterate-1.1.4.tgz#add1522e9dd9749bb41152d08b845bd08d6af8b7" + integrity sha512-sNRaPGh9nnmdC8Zf+pT3UqP8rnWj5Hf9wiFGsX3wUQ2yVSIhO2ShFwCoceIPpB41QF6i2OEmrHmCo36xronCVA== + +array-map@~0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/array-map/-/array-map-0.0.0.tgz#88a2bab73d1cf7bcd5c1b118a003f66f665fa662" + integrity sha1-iKK6tz0c97zVwbEYoAP2b2ZfpmI= + +array-reduce@~0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/array-reduce/-/array-reduce-0.0.0.tgz#173899d3ffd1c7d9383e4479525dbe278cab5f2b" + integrity sha1-FziZ0//Rx9k4PkR5Ul2+J4yrXys= + +array-union@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" + integrity sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk= + dependencies: + array-uniq "^1.0.1" + +array-union@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" + integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== + +array-uniq@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" + integrity sha1-r2rId6Jcx/dOBYiUdThY39sk/bY= + +array-unique@^0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" + integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg= + +array.prototype.flat@^1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.2.3.tgz#0de82b426b0318dbfdb940089e38b043d37f6c7b" + integrity sha512-gBlRZV0VSmfPIeWfuuy56XZMvbVfbEUnOXUvt3F/eUUUSyzlgLxhEX4YAEpxNAogRGehPSnfXyPtYyKAhkzQhQ== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.0-next.1" + +array.prototype.flatmap@^1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/array.prototype.flatmap/-/array.prototype.flatmap-1.2.3.tgz#1c13f84a178566042dd63de4414440db9222e443" + integrity sha512-OOEk+lkePcg+ODXIpvuU9PAryCikCJyo7GlDG1upleEpQRx6mzL9puEBkozQ5iAx20KV0l3DbyQwqciJtqe5Pg== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.0-next.1" + function-bind "^1.1.1" + +arraybuffer.slice@~0.0.7: + version "0.0.7" + resolved "https://registry.yarnpkg.com/arraybuffer.slice/-/arraybuffer.slice-0.0.7.tgz#3bbc4275dd584cc1b10809b89d4e8b63a69e7675" + integrity sha512-wGUIVQXuehL5TCqQun8OW81jGzAWycqzFF8lFp+GOM5BXLYj3bKNsYC4daB7n6XjCqxQA/qgTJ+8ANR3acjrog== + +asn1.js@^5.2.0: + version "5.4.1" + resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-5.4.1.tgz#11a980b84ebb91781ce35b0fdc2ee294e3783f07" + integrity sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA== + dependencies: + bn.js "^4.0.0" + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + safer-buffer "^2.1.0" + +assert@^1.1.1: + version "1.5.0" + resolved "https://registry.yarnpkg.com/assert/-/assert-1.5.0.tgz#55c109aaf6e0aefdb3dc4b71240c70bf574b18eb" + integrity sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA== + dependencies: + object-assign "^4.1.1" + util "0.10.3" + +assign-symbols@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" + integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c= + +ast-types-flow@^0.0.7: + version "0.0.7" + resolved "https://registry.yarnpkg.com/ast-types-flow/-/ast-types-flow-0.0.7.tgz#f70b735c6bca1a5c9c22d982c3e39e7feba3bdad" + integrity sha1-9wtzXGvKGlycItmCw+Oef+ujva0= + +astral-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9" + integrity sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg== + +async-cache@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/async-cache/-/async-cache-1.1.0.tgz#4a9a5a89d065ec5d8e5254bd9ee96ba76c532b5a" + integrity sha1-SppaidBl7F2OUlS9nulrp2xTK1o= + dependencies: + lru-cache "^4.0.0" + +async-each@^1.0.1: + 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== + +async-limiter@~1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.1.tgz#dd379e94f0db8310b08291f9d64c3209766617fd" + integrity sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ== + +async-retry-ng@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/async-retry-ng/-/async-retry-ng-2.0.1.tgz#f5285ec1c52654a2ba6a505d0c18b1eadfaebd41" + integrity sha512-iitlc2murdQ3/A5Re3CcplQBEf7vOmFrFQ6RFn3+/+zZUyIHYkZnnEziMSa6YIb2Bs2EJEPZWReTxjHqvQbDbw== + +async@1.5.2: + version "1.5.2" + resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" + integrity sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo= + +async@^2.6.2: + version "2.6.3" + resolved "https://registry.yarnpkg.com/async/-/async-2.6.3.tgz#d72625e2344a3656e3a3ad4fa749fa83299d82ff" + integrity sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg== + dependencies: + lodash "^4.17.14" + +asynckit@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" + integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= + +at-least-node@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2" + integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg== + +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== + +autoprefixer@^9.8.4: + version "9.8.6" + resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-9.8.6.tgz#3b73594ca1bf9266320c5acf1588d74dea74210f" + integrity sha512-XrvP4VVHdRBCdX1S3WXVD8+RyG9qeb1D5Sn1DeLiG2xfSpzellk5k54xbUERJ3M5DggQxes39UGOTP8CFrEGbg== + dependencies: + browserslist "^4.12.0" + caniuse-lite "^1.0.30001109" + colorette "^1.2.1" + normalize-range "^0.1.2" + num2fraction "^1.2.2" + postcss "^7.0.32" + postcss-value-parser "^4.1.0" + +axe-core@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.0.2.tgz#c7cf7378378a51fcd272d3c09668002a4990b1cb" + integrity sha512-arU1h31OGFu+LPrOLGZ7nB45v940NMDMEJeNmbutu57P+UFDVnkZg3e+J1I2HJRZ9hT7gO8J91dn/PMrAiKakA== + +axios@^0.19.0: + version "0.19.2" + resolved "https://registry.yarnpkg.com/axios/-/axios-0.19.2.tgz#3ea36c5d8818d0d5f8a8a97a6d36b86cdc00cb27" + integrity sha512-fjgm5MvRHLhx+osE2xoekY70AhARk3a6hkN+3Io1jc00jtquGvxYlKlsFUhmUET0V5te6CcZI7lcv2Ym61mjHA== + dependencies: + follow-redirects "1.5.10" + +axios@^0.20.0: + version "0.20.0" + resolved "https://registry.yarnpkg.com/axios/-/axios-0.20.0.tgz#057ba30f04884694993a8cd07fa394cff11c50bd" + integrity sha512-ANA4rr2BDcmmAQLOKft2fufrtuvlqR+cXNNinUmvfeSNCOF98PZL+7M/v1zIdGo7OLjEA9J2gXJL+j4zGsl0bA== + dependencies: + follow-redirects "^1.10.0" + +axobject-query@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-2.2.0.tgz#943d47e10c0b704aa42275e20edf3722648989be" + integrity sha512-Td525n+iPOOyUQIeBfcASuG6uJsDOITl7Mds5gFyerkWiX7qhUTdYUBlSgNMyVqtSJqwpt1kXGLdUt6SykLMRA== + +babel-code-frame@6.26.0, babel-code-frame@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b" + integrity sha1-Y/1D99weO7fONZR9uP42mj9Yx0s= + dependencies: + chalk "^1.1.3" + esutils "^2.0.2" + js-tokens "^3.0.2" + +babel-core@7.0.0-bridge.0: + version "7.0.0-bridge.0" + resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-7.0.0-bridge.0.tgz#95a492ddd90f9b4e9a4a1da14eb335b87b634ece" + integrity sha512-poPX9mZH/5CSanm50Q+1toVci6pv5KSRv/5TWCwtzQS5XEwn40BcCrgIeMFWP9CKKIniKXNxoIOnOq4VVlGXhg== + +babel-eslint@^10.1.0: + version "10.1.0" + resolved "https://registry.yarnpkg.com/babel-eslint/-/babel-eslint-10.1.0.tgz#6968e568a910b78fb3779cdd8b6ac2f479943232" + integrity sha512-ifWaTHQ0ce+448CYop8AdrQiBsGrnC+bMgfyKFdi6EsPLTAWG+QfyDeM6OH+FmWnKvEq5NnBMLvlBUPKQZoDSg== + dependencies: + "@babel/code-frame" "^7.0.0" + "@babel/parser" "^7.7.0" + "@babel/traverse" "^7.7.0" + "@babel/types" "^7.7.0" + eslint-visitor-keys "^1.0.0" + resolve "^1.12.0" + +babel-loader@^8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.1.0.tgz#c611d5112bd5209abe8b9fa84c3e4da25275f1c3" + integrity sha512-7q7nC1tYOrqvUrN3LQK4GwSk/TQorZSOlO9C+RZDZpODgyN4ZlCqE5q9cDsyWOliN+aU9B4JX01xK9eJXowJLw== + dependencies: + find-cache-dir "^2.1.0" + loader-utils "^1.4.0" + mkdirp "^0.5.3" + pify "^4.0.1" + schema-utils "^2.6.5" + +babel-plugin-add-module-exports@^0.3.3: + version "0.3.3" + resolved "https://registry.yarnpkg.com/babel-plugin-add-module-exports/-/babel-plugin-add-module-exports-0.3.3.tgz#b9f7c0a93b989170dce07c3e97071a905a13fc29" + integrity sha512-hC37mm7aAdEb1n8SgggG8a1QuhZapsY/XLCi4ETSH6AVjXBCWEa50CXlOsAMPPWLnSx5Ns6mzz39uvuseh0Xjg== + optionalDependencies: + chokidar "^2.0.4" + +babel-plugin-dynamic-import-node@^2.3.3: + version "2.3.3" + resolved "https://registry.yarnpkg.com/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz#84fda19c976ec5c6defef57f9427b3def66e17a3" + integrity sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ== + dependencies: + object.assign "^4.1.0" + +babel-plugin-lodash@3.3.4: + version "3.3.4" + resolved "https://registry.yarnpkg.com/babel-plugin-lodash/-/babel-plugin-lodash-3.3.4.tgz#4f6844358a1340baed182adbeffa8df9967bc196" + integrity sha512-yDZLjK7TCkWl1gpBeBGmuaDIFhZKmkoL+Cu2MUUjv5VxUZx/z7tBGBCBcQs5RI1Bkz5LLmNdjx7paOyQtMovyg== + dependencies: + "@babel/helper-module-imports" "^7.0.0-beta.49" + "@babel/types" "^7.0.0-beta.49" + glob "^7.1.1" + lodash "^4.17.10" + require-package-name "^2.0.1" + +babel-plugin-macros@^2.8.0: + version "2.8.0" + resolved "https://registry.yarnpkg.com/babel-plugin-macros/-/babel-plugin-macros-2.8.0.tgz#0f958a7cc6556b1e65344465d99111a1e5e10138" + integrity sha512-SEP5kJpfGYqYKpBrj5XU3ahw5p5GOHJ0U5ssOSQ/WBVdwkD2Dzlce95exQTs3jOVWPPKLBN2rlEWkCK7dSmLvg== + dependencies: + "@babel/runtime" "^7.7.2" + cosmiconfig "^6.0.0" + resolve "^1.12.0" + +babel-plugin-remove-graphql-queries@^2.9.20: + version "2.9.20" + resolved "https://registry.yarnpkg.com/babel-plugin-remove-graphql-queries/-/babel-plugin-remove-graphql-queries-2.9.20.tgz#69ad42efdb3b4340992080afba101d2d1a2843b2" + integrity sha512-FB4tIvdXaGFBFhHAzlqB0NxVA5BcjzVYbY8ut7ProStW3cjv208ADMlfzmPdSP/I1Z0wl2MrXgHNCrL1TQ/Mew== + +babel-plugin-transform-react-remove-prop-types@^0.4.24: + version "0.4.24" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-remove-prop-types/-/babel-plugin-transform-react-remove-prop-types-0.4.24.tgz#f2edaf9b4c6a5fbe5c1d678bfb531078c1555f3a" + integrity sha512-eqj0hVcJUR57/Ug2zE1Yswsw4LhuqqHhD+8v120T1cl3kjg76QwtyBrdIk4WVwK+lAhBJVYCd/v+4nc4y+8JsA== + +babel-preset-gatsby@^0.5.15: + version "0.5.15" + resolved "https://registry.yarnpkg.com/babel-preset-gatsby/-/babel-preset-gatsby-0.5.15.tgz#03b25bd6a12bbd4267612dd9425bc38ec106bd4c" + integrity sha512-0eno/GAvzmaLW/s+RzsLXrZVQwBMZYU/zMv1HpArGlYbNCon/fK53/Bz3pklJDq1pNAybXQ2RROpPHDyJM2EGA== + dependencies: + "@babel/plugin-proposal-class-properties" "^7.10.4" + "@babel/plugin-proposal-nullish-coalescing-operator" "^7.10.4" + "@babel/plugin-proposal-optional-chaining" "^7.11.0" + "@babel/plugin-syntax-dynamic-import" "^7.8.3" + "@babel/plugin-transform-runtime" "^7.11.5" + "@babel/plugin-transform-spread" "^7.11.0" + "@babel/preset-env" "^7.11.5" + "@babel/preset-react" "^7.10.4" + "@babel/runtime" "^7.11.2" + babel-plugin-dynamic-import-node "^2.3.3" + babel-plugin-macros "^2.8.0" + babel-plugin-transform-react-remove-prop-types "^0.4.24" + gatsby-core-utils "^1.3.23" + gatsby-legacy-polyfills "^0.0.6" + +babel-runtime@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe" + integrity sha1-llxwWGaOgrVde/4E/yM3vItWR/4= + dependencies: + core-js "^2.4.0" + regenerator-runtime "^0.11.0" + +backo2@1.0.2, backo2@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/backo2/-/backo2-1.0.2.tgz#31ab1ac8b129363463e35b3ebb69f4dfcfba7947" + integrity sha1-MasayLEpNjRj41s+u2n038+6eUc= + +bail@^1.0.0: + version "1.0.5" + resolved "https://registry.yarnpkg.com/bail/-/bail-1.0.5.tgz#b6fa133404a392cbc1f8c4bf63f5953351e7a776" + integrity sha512-xFbRxM1tahm08yHBP16MMjVUAvDaBMD38zsM9EMAUN61omwLmKlOpB/Zku5QkjZ8TZ4vn53pj+t518cH0S03RQ== + +balanced-match@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" + integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= + +base64-arraybuffer@0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/base64-arraybuffer/-/base64-arraybuffer-0.1.4.tgz#9818c79e059b1355f97e0428a017c838e90ba812" + integrity sha1-mBjHngWbE1X5fgQooBfIOOkLqBI= + +base64-arraybuffer@0.1.5: + version "0.1.5" + resolved "https://registry.yarnpkg.com/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz#73926771923b5a19747ad666aa5cd4bf9c6e9ce8" + integrity sha1-c5JncZI7Whl0etZmqlzUv5xunOg= + +base64-js@^1.0.2, base64-js@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.3.1.tgz#58ece8cb75dd07e71ed08c736abc5fac4dbf8df1" + integrity sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g== + +base64id@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/base64id/-/base64id-2.0.0.tgz#2770ac6bc47d312af97a8bf9a634342e0cd25cb6" + integrity sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog== + +base@^0.11.1: + version "0.11.2" + resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" + integrity sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg== + dependencies: + cache-base "^1.0.1" + class-utils "^0.3.5" + component-emitter "^1.2.1" + define-property "^1.0.0" + isobject "^3.0.1" + mixin-deep "^1.2.0" + pascalcase "^0.1.1" + +batch@0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/batch/-/batch-0.6.1.tgz#dc34314f4e679318093fc760272525f94bf25c16" + integrity sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY= + +better-assert@~1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/better-assert/-/better-assert-1.0.2.tgz#40866b9e1b9e0b55b481894311e68faffaebc522" + integrity sha1-QIZrnhueC1W0gYlDEeaPr/rrxSI= + dependencies: + callsite "1.0.0" + +better-opn@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/better-opn/-/better-opn-2.1.1.tgz#94a55b4695dc79288f31d7d0e5f658320759f7c6" + integrity sha512-kIPXZS5qwyKiX/HcRvDYfmBQUa8XP17I0mYZZ0y4UhpYOSvtsLHDYqmomS+Mj20aDvD3knEiQ0ecQy2nhio3yA== + dependencies: + open "^7.0.3" + +better-queue-memory@^1.0.1: + version "1.0.4" + resolved "https://registry.yarnpkg.com/better-queue-memory/-/better-queue-memory-1.0.4.tgz#f390d6b30bb3b36aaf2ce52b37a483e8a7a81a22" + integrity sha512-SWg5wFIShYffEmJpI6LgbL8/3Dqhku7xI1oEiy6FroP9DbcZlG0ZDjxvPdP9t7hTGW40IpIcC6zVoGT1oxjOuA== + +better-queue@^3.8.10: + version "3.8.10" + resolved "https://registry.yarnpkg.com/better-queue/-/better-queue-3.8.10.tgz#1c93b9ec4cb3d1b72eb91d0efcb84fc80e8c6835" + integrity sha512-e3gwNZgDCnNWl0An0Tz6sUjKDV9m6aB+K9Xg//vYeo8+KiH8pWhLFxkawcXhm6FpM//GfD9IQv/kmvWCAVVpKA== + dependencies: + better-queue-memory "^1.0.1" + node-eta "^0.9.0" + uuid "^3.0.0" + +big.js@^5.2.2: + version "5.2.2" + resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328" + integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ== + +binary-extensions@^1.0.0: + version "1.13.1" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.13.1.tgz#598afe54755b2868a5330d2aff9d4ebb53209b65" + integrity sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw== + +binary-extensions@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.1.0.tgz#30fa40c9e7fe07dbc895678cd287024dea241dd9" + integrity sha512-1Yj8h9Q+QDF5FzhMs/c9+6UntbD5MkRfRwac8DoEm9ZfUBZ7tZ55YcGVAzEe4bXsdQHEk+s9S5wsOKVdZrw0tQ== + +bindings@^1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df" + integrity sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ== + dependencies: + file-uri-to-path "1.0.0" + +bl@^4.0.0: + version "4.0.3" + resolved "https://registry.yarnpkg.com/bl/-/bl-4.0.3.tgz#12d6287adc29080e22a705e5764b2a9522cdc489" + integrity sha512-fs4G6/Hu4/EE+F75J8DuN/0IpQqNjAdC7aEQv7Qt8MHGUH7Ckv2MwTEEeN9QehD0pfIDkMI1bkHYkKy7xHyKIg== + dependencies: + buffer "^5.5.0" + inherits "^2.0.4" + readable-stream "^3.4.0" + +blob@0.0.5: + version "0.0.5" + resolved "https://registry.yarnpkg.com/blob/-/blob-0.0.5.tgz#d680eeef25f8cd91ad533f5b01eed48e64caf683" + integrity sha512-gaqbzQPqOoamawKg0LGVd7SzLgXS+JH61oWprSLH+P+abTczqJbhTR8CmJ2u9/bUYNmHTGJx/UEmn6doAvvuig== + +bluebird@^3.5.5, bluebird@^3.7.2: + version "3.7.2" + resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" + integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== + +bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.4.0: + version "4.11.9" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.9.tgz#26d556829458f9d1e81fc48952493d0ba3507828" + integrity sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw== + +bn.js@^5.1.1: + version "5.1.3" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.1.3.tgz#beca005408f642ebebea80b042b4d18d2ac0ee6b" + integrity sha512-GkTiFpjFtUzU9CbMeJ5iazkCzGL3jrhzerzZIuqLABjbwRaFt33I9tUdSNryIptM+RxDet6OKm2WnLXzW51KsQ== + +body-parser@1.19.0, body-parser@^1.19.0: + version "1.19.0" + resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.19.0.tgz#96b2709e57c9c4e09a6fd66a8fd979844f69f08a" + integrity sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw== + dependencies: + bytes "3.1.0" + content-type "~1.0.4" + debug "2.6.9" + depd "~1.1.2" + http-errors "1.7.2" + iconv-lite "0.4.24" + on-finished "~2.3.0" + qs "6.7.0" + raw-body "2.4.0" + type-is "~1.6.17" + +bonjour@^3.5.0: + version "3.5.0" + resolved "https://registry.yarnpkg.com/bonjour/-/bonjour-3.5.0.tgz#8e890a183d8ee9a2393b3844c691a42bcf7bc9f5" + integrity sha1-jokKGD2O6aI5OzhExpGkK897yfU= + dependencies: + array-flatten "^2.1.0" + deep-equal "^1.0.1" + dns-equal "^1.0.0" + dns-txt "^2.0.2" + multicast-dns "^6.0.1" + multicast-dns-service-types "^1.1.0" + +boolbase@^1.0.0, boolbase@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" + integrity sha1-aN/1++YMUes3cl6p4+0xDcwed24= + +boxen@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/boxen/-/boxen-4.2.0.tgz#e411b62357d6d6d36587c8ac3d5d974daa070e64" + integrity sha512-eB4uT9RGzg2odpER62bBwSLvUeGC+WbRjjyyFhGsKnc8wp/m0+hQsMUvUe3H2V0D5vw0nBdO1hCJoZo5mKeuIQ== + dependencies: + ansi-align "^3.0.0" + camelcase "^5.3.1" + chalk "^3.0.0" + cli-boxes "^2.2.0" + string-width "^4.1.0" + term-size "^2.1.0" + type-fest "^0.8.1" + widest-line "^3.1.0" + +brace-expansion@^1.0.0, 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@^2.3.1, braces@^2.3.2: + version "2.3.2" + resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" + integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w== + dependencies: + arr-flatten "^1.1.0" + array-unique "^0.3.2" + extend-shallow "^2.0.1" + fill-range "^4.0.0" + isobject "^3.0.1" + repeat-element "^1.1.2" + snapdragon "^0.8.1" + snapdragon-node "^2.0.1" + split-string "^3.0.2" + to-regex "^3.0.1" + +braces@^3.0.1, 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" + +brorand@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" + integrity sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8= + +browserify-aes@^1.0.0, browserify-aes@^1.0.4: + version "1.2.0" + resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48" + integrity sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA== + dependencies: + buffer-xor "^1.0.3" + cipher-base "^1.0.0" + create-hash "^1.1.0" + evp_bytestokey "^1.0.3" + inherits "^2.0.1" + safe-buffer "^5.0.1" + +browserify-cipher@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/browserify-cipher/-/browserify-cipher-1.0.1.tgz#8d6474c1b870bfdabcd3bcfcc1934a10e94f15f0" + integrity sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w== + dependencies: + browserify-aes "^1.0.4" + browserify-des "^1.0.0" + evp_bytestokey "^1.0.0" + +browserify-des@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.2.tgz#3af4f1f59839403572f1c66204375f7a7f703e9c" + integrity sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A== + dependencies: + cipher-base "^1.0.1" + des.js "^1.0.0" + inherits "^2.0.1" + safe-buffer "^5.1.2" + +browserify-rsa@^4.0.0, browserify-rsa@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.0.1.tgz#21e0abfaf6f2029cf2fafb133567a701d4135524" + integrity sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ= + dependencies: + bn.js "^4.1.0" + randombytes "^2.0.1" + +browserify-sign@^4.0.0: + version "4.2.1" + resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.2.1.tgz#eaf4add46dd54be3bb3b36c0cf15abbeba7956c3" + integrity sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg== + dependencies: + bn.js "^5.1.1" + browserify-rsa "^4.0.1" + create-hash "^1.2.0" + create-hmac "^1.1.7" + elliptic "^6.5.3" + inherits "^2.0.4" + parse-asn1 "^5.1.5" + readable-stream "^3.6.0" + safe-buffer "^5.2.0" + +browserify-zlib@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.2.0.tgz#2869459d9aa3be245fe8fe2ca1f46e2e7f54d73f" + integrity sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA== + dependencies: + pako "~1.0.5" + +browserslist@^4.0.0, browserslist@^4.12.0, browserslist@^4.12.2, browserslist@^4.8.5: + version "4.14.6" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.14.6.tgz#97702a9c212e0c6b6afefad913d3a1538e348457" + integrity sha512-zeFYcUo85ENhc/zxHbiIp0LGzzTrE2Pv2JhxvS7kpUb9Q9D38kUX6Bie7pGutJ/5iF5rOxE7CepAuWD56xJ33A== + dependencies: + caniuse-lite "^1.0.30001154" + electron-to-chromium "^1.3.585" + escalade "^3.1.1" + node-releases "^1.1.65" + +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== + +buffer-indexof@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/buffer-indexof/-/buffer-indexof-1.1.1.tgz#52fabcc6a606d1a00302802648ef68f639da268c" + integrity sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g== + +buffer-xor@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" + integrity sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk= + +buffer@^4.3.0: + version "4.9.2" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.2.tgz#230ead344002988644841ab0244af8c44bbe3ef8" + integrity sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg== + dependencies: + base64-js "^1.0.2" + ieee754 "^1.1.4" + isarray "^1.0.0" + +buffer@^5.5.0: + version "5.7.0" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.0.tgz#88afbd29fc89fa7b58e82b39206f31f2cf34feed" + integrity sha512-cd+5r1VLBwUqTrmnzW+D7ABkJUM6mr7uv1dv+6jRw4Rcl7tFIFHDqHPL98LhpGFn3dbAt3gtLxtrWp4m1kFrqg== + dependencies: + base64-js "^1.3.1" + ieee754 "^1.1.13" + +bufferutil@^4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/bufferutil/-/bufferutil-4.0.2.tgz#79f68631910f6b993d870fc77dc0a2894eb96cd5" + integrity sha512-AtnG3W6M8B2n4xDQ5R+70EXvOpnXsFYg/AK2yTZd+HQ/oxAdz+GI+DvjmhBw3L0ole+LJ0ngqY4JMbDzkfNzhA== + dependencies: + node-gyp-build "^4.2.0" + +builtin-modules@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-3.1.0.tgz#aad97c15131eb76b65b50ef208e7584cd76a7484" + integrity sha512-k0KL0aWZuBt2lrxrcASWDfwOLMnodeQjodT/1SxEQAXsHANgo6ZC/VEaSEHCXt7aSTZ4/4H5LKa+tBXmW7Vtvw== + +builtin-status-codes@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8" + integrity sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug= + +bytes@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" + integrity sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg= + +bytes@3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.0.tgz#f6cf7933a360e0588fa9fde85651cdc7f805d1f6" + integrity sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg== + +cacache@^12.0.2: + version "12.0.4" + resolved "https://registry.yarnpkg.com/cacache/-/cacache-12.0.4.tgz#668bcbd105aeb5f1d92fe25570ec9525c8faa40c" + integrity sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ== + dependencies: + bluebird "^3.5.5" + chownr "^1.1.1" + figgy-pudding "^3.5.1" + glob "^7.1.4" + graceful-fs "^4.1.15" + infer-owner "^1.0.3" + lru-cache "^5.1.1" + mississippi "^3.0.0" + mkdirp "^0.5.1" + move-concurrently "^1.0.1" + promise-inflight "^1.0.1" + rimraf "^2.6.3" + ssri "^6.0.1" + unique-filename "^1.1.1" + y18n "^4.0.0" + +cacache@^13.0.1: + version "13.0.1" + resolved "https://registry.yarnpkg.com/cacache/-/cacache-13.0.1.tgz#a8000c21697089082f85287a1aec6e382024a71c" + integrity sha512-5ZvAxd05HDDU+y9BVvcqYu2LLXmPnQ0hW62h32g4xBTgL/MppR4/04NHfj/ycM2y6lmTnbw6HVi+1eN0Psba6w== + dependencies: + chownr "^1.1.2" + figgy-pudding "^3.5.1" + fs-minipass "^2.0.0" + glob "^7.1.4" + graceful-fs "^4.2.2" + infer-owner "^1.0.4" + lru-cache "^5.1.1" + minipass "^3.0.0" + minipass-collect "^1.0.2" + minipass-flush "^1.0.5" + minipass-pipeline "^1.2.2" + mkdirp "^0.5.1" + move-concurrently "^1.0.1" + p-map "^3.0.0" + promise-inflight "^1.0.1" + rimraf "^2.7.1" + ssri "^7.0.0" + unique-filename "^1.1.1" + +cache-base@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" + integrity sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ== + dependencies: + collection-visit "^1.0.0" + component-emitter "^1.2.1" + get-value "^2.0.6" + has-value "^1.0.0" + isobject "^3.0.1" + set-value "^2.0.0" + to-object-path "^0.3.0" + union-value "^1.0.0" + unset-value "^1.0.0" + +cache-manager-fs-hash@^0.0.9: + version "0.0.9" + resolved "https://registry.yarnpkg.com/cache-manager-fs-hash/-/cache-manager-fs-hash-0.0.9.tgz#a65bb7ca2c9f9f9cf7035945bbfab536c5aab340" + integrity sha512-G0RUUSMZADiMx/0tHjPa+uzJyjtVB/Xt9yuFm6g/rBpm0p/IMr4atUWX2G2f1yGCPmDnyUcFz4RlSpgNRgvldg== + dependencies: + lockfile "^1.0.4" + +cache-manager@^2.11.1: + version "2.11.1" + resolved "https://registry.yarnpkg.com/cache-manager/-/cache-manager-2.11.1.tgz#212e8c3db15288af653b029a1d9fe12f1fd9df61" + integrity sha512-XhUuc9eYwkzpK89iNewFwtvcDYMUsvtwzHeyEOPJna/WsVsXcrzsA1ft2M0QqPNunEzLhNCYPo05tEfG+YuNow== + dependencies: + async "1.5.2" + lodash.clonedeep "4.5.0" + lru-cache "4.0.0" + +cacheable-request@^2.1.1: + version "2.1.4" + resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-2.1.4.tgz#0d808801b6342ad33c91df9d0b44dc09b91e5c3d" + integrity sha1-DYCIAbY0KtM8kd+dC0TcCbkeXD0= + dependencies: + clone-response "1.0.2" + get-stream "3.0.0" + http-cache-semantics "3.8.1" + keyv "3.0.0" + lowercase-keys "1.0.0" + normalize-url "2.0.1" + responselike "1.0.2" + +cacheable-request@^6.0.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-6.1.0.tgz#20ffb8bd162ba4be11e9567d823db651052ca912" + integrity sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg== + dependencies: + clone-response "^1.0.2" + get-stream "^5.1.0" + http-cache-semantics "^4.0.0" + keyv "^3.0.0" + lowercase-keys "^2.0.0" + normalize-url "^4.1.0" + responselike "^1.0.2" + +call-bind@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.0.tgz#24127054bb3f9bdcb4b1fb82418186072f77b8ce" + integrity sha512-AEXsYIyyDY3MCzbwdhzG3Jx1R0J2wetQyUynn6dYHAO+bg8l1k7jwZtRv4ryryFs7EP+NDlikJlVe59jr0cM2w== + dependencies: + function-bind "^1.1.1" + get-intrinsic "^1.0.0" + +caller-callsite@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/caller-callsite/-/caller-callsite-2.0.0.tgz#847e0fce0a223750a9a027c54b33731ad3154134" + integrity sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ= + dependencies: + callsites "^2.0.0" + +caller-path@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-2.0.0.tgz#468f83044e369ab2010fac5f06ceee15bb2cb1f4" + integrity sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ= + dependencies: + caller-callsite "^2.0.0" + +callsite@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/callsite/-/callsite-1.0.0.tgz#280398e5d664bd74038b6f0905153e6e8af1bc20" + integrity sha1-KAOY5dZkvXQDi28JBRU+borxvCA= + +callsites@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/callsites/-/callsites-2.0.0.tgz#06eb84f00eea413da86affefacbffb36093b3c50" + integrity sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA= + +callsites@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" + integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== + +camel-case@4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-4.1.1.tgz#1fc41c854f00e2f7d0139dfeba1542d6896fe547" + integrity sha512-7fa2WcG4fYFkclIvEmxBbTvmibwF2/agfEBc6q3lOpVu0A13ltLsA+Hr/8Hp6kp5f+G7hKi6t8lys6XxP+1K6Q== + dependencies: + pascal-case "^3.1.1" + tslib "^1.10.0" + +camelcase-css@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/camelcase-css/-/camelcase-css-2.0.1.tgz#ee978f6947914cc30c6b44741b6ed1df7f043fd5" + integrity sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA== + +camelcase@^5.0.0, camelcase@^5.3.1: + version "5.3.1" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" + integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== + +caniuse-api@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/caniuse-api/-/caniuse-api-3.0.0.tgz#5e4d90e2274961d46291997df599e3ed008ee4c0" + integrity sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw== + dependencies: + browserslist "^4.0.0" + caniuse-lite "^1.0.0" + lodash.memoize "^4.1.2" + lodash.uniq "^4.5.0" + +caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001109, caniuse-lite@^1.0.30001154: + version "1.0.30001154" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001154.tgz#f3bbc245ce55e4c1cd20fa731b097880181a7f17" + integrity sha512-y9DvdSti8NnYB9Be92ddMZQrcOe04kcQtcxtBx4NkB04+qZ+JUWotnXBJTmxlKudhxNTQ3RRknMwNU2YQl/Org== + +ccount@^1.0.0, ccount@^1.0.3: + version "1.1.0" + resolved "https://registry.yarnpkg.com/ccount/-/ccount-1.1.0.tgz#246687debb6014735131be8abab2d93898f8d043" + integrity sha512-vlNK021QdI7PNeiUh/lKkC/mNHHfV0m/Ad5JoI0TYtlBnJAslM/JIkm/tGC88bkLIwO6OQ5uV6ztS6kVAtCDlg== + +chalk@1.1.3, 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.0.0, chalk@^2.1.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" + +chalk@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-3.0.0.tgz#3f73c2bf526591f574cc492c51e2456349f844e4" + integrity sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +chalk@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.0.tgz#4e14870a618d9e2edd97dd8345fd9d9dc315646a" + integrity sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +character-entities-html4@^1.0.0: + version "1.1.4" + resolved "https://registry.yarnpkg.com/character-entities-html4/-/character-entities-html4-1.1.4.tgz#0e64b0a3753ddbf1fdc044c5fd01d0199a02e125" + integrity sha512-HRcDxZuZqMx3/a+qrzxdBKBPUpxWEq9xw2OPZ3a/174ihfrQKVsFhqtthBInFy1zZ9GgZyFXOatNujm8M+El3g== + +character-entities-legacy@^1.0.0: + version "1.1.4" + resolved "https://registry.yarnpkg.com/character-entities-legacy/-/character-entities-legacy-1.1.4.tgz#94bc1845dce70a5bb9d2ecc748725661293d8fc1" + integrity sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA== + +character-entities@^1.0.0: + version "1.2.4" + resolved "https://registry.yarnpkg.com/character-entities/-/character-entities-1.2.4.tgz#e12c3939b7eaf4e5b15e7ad4c5e28e1d48c5b16b" + integrity sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw== + +character-reference-invalid@^1.0.0: + version "1.1.4" + resolved "https://registry.yarnpkg.com/character-reference-invalid/-/character-reference-invalid-1.1.4.tgz#083329cda0eae272ab3dbbf37e9a382c13af1560" + integrity sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg== + +chardet@^0.4.0: + version "0.4.2" + resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.4.2.tgz#b5473b33dc97c424e5d98dc87d55d4d8a29c8bf2" + integrity sha1-tUc7M9yXxCTl2Y3IfVXU2KKci/I= + +chardet@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" + integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== + +chokidar@^2.0.4, chokidar@^2.1.8: + version "2.1.8" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.8.tgz#804b3a7b6a99358c3c5c61e71d8728f041cff917" + integrity sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg== + dependencies: + anymatch "^2.0.0" + async-each "^1.0.1" + braces "^2.3.2" + glob-parent "^3.1.0" + inherits "^2.0.3" + is-binary-path "^1.0.0" + is-glob "^4.0.0" + normalize-path "^3.0.0" + path-is-absolute "^1.0.0" + readdirp "^2.2.1" + upath "^1.1.1" + optionalDependencies: + fsevents "^1.2.7" + +chokidar@^3.4.1, chokidar@^3.4.2, chokidar@^3.4.3: + version "3.4.3" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.4.3.tgz#c1df38231448e45ca4ac588e6c79573ba6a57d5b" + integrity sha512-DtM3g7juCXQxFVSNPNByEC2+NImtBuxQQvWlHunpJIS5Ocr0lG306cC7FCi7cEA0fzmybPUIl4txBIobk1gGOQ== + dependencies: + anymatch "~3.1.1" + braces "~3.0.2" + glob-parent "~5.1.0" + is-binary-path "~2.1.0" + is-glob "~4.0.1" + normalize-path "~3.0.0" + readdirp "~3.5.0" + optionalDependencies: + fsevents "~2.1.2" + +chownr@^1.1.1, chownr@^1.1.2: + version "1.1.4" + resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" + integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== + +chrome-trace-event@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz#234090ee97c7d4ad1a2c4beae27505deffc608a4" + integrity sha512-9e/zx1jw7B4CO+c/RXoCsfg/x1AfUBioy4owYH0bJprEYAx5hRFLRhWBqHAG57D0ZM4H7vxbP7bPe0VwhQRYDQ== + dependencies: + tslib "^1.9.0" + +ci-info@2.0.0, ci-info@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" + integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== + +cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" + integrity sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q== + dependencies: + inherits "^2.0.1" + safe-buffer "^5.0.1" + +class-utils@^0.3.5: + version "0.3.6" + resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" + integrity sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg== + dependencies: + arr-union "^3.1.0" + define-property "^0.2.5" + isobject "^3.0.0" + static-extend "^0.1.1" + +clean-stack@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" + integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== + +cli-boxes@^2.2.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-2.2.1.tgz#ddd5035d25094fce220e9cab40a45840a440318f" + integrity sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw== + +cli-cursor@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5" + integrity sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU= + dependencies: + restore-cursor "^2.0.0" + +cli-cursor@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307" + integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== + dependencies: + restore-cursor "^3.1.0" + +cli-table3@^0.5.1: + version "0.5.1" + resolved "https://registry.yarnpkg.com/cli-table3/-/cli-table3-0.5.1.tgz#0252372d94dfc40dbd8df06005f48f31f656f202" + integrity sha512-7Qg2Jrep1S/+Q3EceiZtQcDPWxhAvBw+ERf1162v4sikJrvojMHFqXt8QIVha8UlH9rgU0BeWPytZ9/TzYqlUw== + dependencies: + object-assign "^4.1.0" + string-width "^2.1.1" + optionalDependencies: + colors "^1.1.2" + +cli-width@^2.0.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.1.tgz#b0433d0b4e9c847ef18868a4ef16fd5fc8271c48" + integrity sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw== + +cli-width@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-3.0.0.tgz#a2f48437a2caa9a22436e794bf071ec9e61cedf6" + integrity sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw== + +clipboard@^2.0.0: + version "2.0.6" + resolved "https://registry.yarnpkg.com/clipboard/-/clipboard-2.0.6.tgz#52921296eec0fdf77ead1749421b21c968647376" + integrity sha512-g5zbiixBRk/wyKakSwCKd7vQXDjFnAMGHoEyBogG/bw9kTD9GvdAvaoRR1ALcEzt3pVKxZR0pViekPMIS0QyGg== + dependencies: + good-listener "^1.2.2" + select "^1.1.2" + tiny-emitter "^2.0.0" + +clipboardy@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/clipboardy/-/clipboardy-2.3.0.tgz#3c2903650c68e46a91b388985bc2774287dba290" + integrity sha512-mKhiIL2DrQIsuXMgBgnfEHOZOryC7kY7YO//TN6c63wlEm3NG5tz+YgY5rVi29KCmq/QQjKYvM7a19+MDOTHOQ== + dependencies: + arch "^2.1.1" + execa "^1.0.0" + is-wsl "^2.1.1" + +cliui@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-5.0.0.tgz#deefcfdb2e800784aa34f46fa08e06851c7bbbc5" + integrity sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA== + dependencies: + string-width "^3.1.0" + strip-ansi "^5.2.0" + wrap-ansi "^5.1.0" + +cliui@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-6.0.0.tgz#511d702c0c4e41ca156d7d0e96021f23e13225b1" + integrity sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ== + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.0" + wrap-ansi "^6.2.0" + +clone-response@1.0.2, clone-response@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/clone-response/-/clone-response-1.0.2.tgz#d1dc973920314df67fbeb94223b4ee350239e96b" + integrity sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws= + dependencies: + mimic-response "^1.0.0" + +clone@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.2.tgz#1b7f4b9f591f1e8f83670401600345a02887435f" + integrity sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18= + +coa@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/coa/-/coa-2.0.2.tgz#43f6c21151b4ef2bf57187db0d73de229e3e7ec3" + integrity sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA== + dependencies: + "@types/q" "^1.5.1" + chalk "^2.4.1" + q "^1.1.2" + +codemirror-graphql@0.12.3: + version "0.12.3" + resolved "https://registry.yarnpkg.com/codemirror-graphql/-/codemirror-graphql-0.12.3.tgz#8b76f59ea02ead356ca39c9574827396e4b4b454" + integrity sha512-u0TooVA2MWGNV+Bio89RCTRW9P5FqegB1V9rnz9I0QKoGXX/c9z9/Fc+nj18p8jxkWK8ii8d7hkz7vsNsHxdkw== + dependencies: + graphql-language-service-interface "^2.4.2" + graphql-language-service-parser "^1.6.4" + +codemirror@5.58.2: + version "5.58.2" + resolved "https://registry.yarnpkg.com/codemirror/-/codemirror-5.58.2.tgz#ed54a1796de1498688bea1cdd4e9eeb187565d1b" + integrity sha512-K/hOh24cCwRutd1Mk3uLtjWzNISOkm4fvXiMO7LucCrqbh6aJDdtqUziim3MZUI6wOY0rvY1SlL1Ork01uMy6w== + +collapse-white-space@^1.0.0, collapse-white-space@^1.0.2: + version "1.0.6" + resolved "https://registry.yarnpkg.com/collapse-white-space/-/collapse-white-space-1.0.6.tgz#e63629c0016665792060dbbeb79c42239d2c5287" + integrity sha512-jEovNnrhMuqyCcjfEJA56v0Xq8SkIoPKDyaHahwo3POf4qcSXqMYuwNcOTzp74vTsR9Tn08z4MxWqAhcekogkQ== + +collection-visit@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" + integrity sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA= + dependencies: + map-visit "^1.0.0" + object-visit "^1.0.0" + +color-convert@^1.9.0, color-convert@^1.9.1: + 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" + +color-convert@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" + integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== + dependencies: + color-name "~1.1.4" + +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= + +color-name@^1.0.0, color-name@~1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + +color-string@^1.5.4: + version "1.5.4" + resolved "https://registry.yarnpkg.com/color-string/-/color-string-1.5.4.tgz#dd51cd25cfee953d138fe4002372cc3d0e504cb6" + integrity sha512-57yF5yt8Xa3czSEW1jfQDE79Idk0+AkN/4KWad6tbdxUmAs3MvjxlWSWD4deYytcRfoZ9nhKyFl1kj5tBvidbw== + dependencies: + color-name "^1.0.0" + simple-swizzle "^0.2.2" + +color@^3.0.0: + version "3.1.3" + resolved "https://registry.yarnpkg.com/color/-/color-3.1.3.tgz#ca67fb4e7b97d611dcde39eceed422067d91596e" + integrity sha512-xgXAcTHa2HeFCGLE9Xs/R82hujGtu9Jd9x4NW3T34+OMs7VoPsjwzRczKHvTAHeJwWFwX5j15+MgAppE8ztObQ== + dependencies: + color-convert "^1.9.1" + color-string "^1.5.4" + +colorette@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.2.1.tgz#4d0b921325c14faf92633086a536db6e89564b1b" + integrity sha512-puCDz0CzydiSYOrnXpz/PKd69zRrribezjtE9yd4zvytoRc8+RY/KJPvtPFKZS3E3wP6neGyMe0vOTlHO5L3Pw== + +colors@^1.1.2: + version "1.4.0" + resolved "https://registry.yarnpkg.com/colors/-/colors-1.4.0.tgz#c50491479d4c1bdaed2c9ced32cf7c7dc2360f78" + integrity sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA== + +combined-stream@^1.0.8: + version "1.0.8" + resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" + integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== + dependencies: + delayed-stream "~1.0.0" + +comma-separated-tokens@^1.0.0, comma-separated-tokens@^1.0.1: + version "1.0.8" + resolved "https://registry.yarnpkg.com/comma-separated-tokens/-/comma-separated-tokens-1.0.8.tgz#632b80b6117867a158f1080ad498b2fbe7e3f5ea" + integrity sha512-GHuDRO12Sypu2cV70d1dkA2EUmXHgntrzbpvOB+Qy+49ypNfGgFQIC2fhhXbnyrJRynDCAARsT7Ou0M6hirpfw== + +command-exists@^1.2.4: + version "1.2.9" + resolved "https://registry.yarnpkg.com/command-exists/-/command-exists-1.2.9.tgz#c50725af3808c8ab0260fd60b01fbfa25b954f69" + integrity sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w== + +commander@^2.20.0, commander@^2.20.3: + 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== + +common-tags@^1.8.0: + version "1.8.0" + resolved "https://registry.yarnpkg.com/common-tags/-/common-tags-1.8.0.tgz#8e3153e542d4a39e9b10554434afaaf98956a937" + integrity sha512-6P6g0uetGpW/sdyUy/iQQCbFF0kWVMSIVSyYz7Zgjcgh8mgw8PQzDNZeyZ5DQ2gM7LBoZPHmnjz8rUthkBG5tw== + +commondir@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" + integrity sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs= + +component-bind@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/component-bind/-/component-bind-1.0.0.tgz#00c608ab7dcd93897c0009651b1d3a8e1e73bbd1" + integrity sha1-AMYIq33Nk4l8AAllGx06jh5zu9E= + +component-emitter@1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.2.1.tgz#137918d6d78283f7df7a6b7c5a63e140e69425e6" + integrity sha1-E3kY1teCg/ffemt8WmPhQOaUJeY= + +component-emitter@^1.2.1, component-emitter@~1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0" + integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg== + +component-inherit@0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/component-inherit/-/component-inherit-0.0.3.tgz#645fc4adf58b72b649d5cae65135619db26ff143" + integrity sha1-ZF/ErfWLcrZJ1crmUTVhnbJv8UM= + +compressible@~2.0.16: + version "2.0.18" + resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.18.tgz#af53cca6b070d4c3c0750fbd77286a6d7cc46fba" + integrity sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg== + dependencies: + mime-db ">= 1.43.0 < 2" + +compression@^1.7.4: + version "1.7.4" + resolved "https://registry.yarnpkg.com/compression/-/compression-1.7.4.tgz#95523eff170ca57c29a0ca41e6fe131f41e5bb8f" + integrity sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ== + dependencies: + accepts "~1.3.5" + bytes "3.0.0" + compressible "~2.0.16" + debug "2.6.9" + on-headers "~1.0.2" + safe-buffer "5.1.2" + vary "~1.1.2" + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= + +concat-stream@^1.5.0: + version "1.6.2" + resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" + integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== + dependencies: + buffer-from "^1.0.0" + inherits "^2.0.3" + readable-stream "^2.2.2" + typedarray "^0.0.6" + +configstore@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/configstore/-/configstore-5.0.1.tgz#d365021b5df4b98cdd187d6a3b0e3f6a7cc5ed96" + integrity sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA== + dependencies: + dot-prop "^5.2.0" + graceful-fs "^4.1.2" + make-dir "^3.0.0" + unique-string "^2.0.0" + write-file-atomic "^3.0.0" + xdg-basedir "^4.0.0" + +confusing-browser-globals@^1.0.9: + version "1.0.10" + resolved "https://registry.yarnpkg.com/confusing-browser-globals/-/confusing-browser-globals-1.0.10.tgz#30d1e7f3d1b882b25ec4933d1d1adac353d20a59" + integrity sha512-gNld/3lySHwuhaVluJUKLePYirM3QNCKzVxqAdhJII9/WXKVX5PURzMVJspS1jTslSqjeuG4KMVTSouit5YPHA== + +connect-history-api-fallback@^1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz#8b32089359308d111115d81cad3fceab888f97bc" + integrity sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg== + +console-browserify@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.2.0.tgz#67063cef57ceb6cf4993a2ab3a55840ae8c49336" + integrity sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA== + +constants-browserify@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75" + integrity sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U= + +contains-path@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/contains-path/-/contains-path-0.1.0.tgz#fe8cf184ff6670b6baef01a9d4861a5cbec4120a" + integrity sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo= + +content-disposition@0.5.3: + version "0.5.3" + resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.3.tgz#e130caf7e7279087c5616c2007d0485698984fbd" + integrity sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g== + dependencies: + safe-buffer "5.1.2" + +content-type@^1.0.4, content-type@~1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" + integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== + +contentful-management@^5.26.3: + version "5.28.0" + resolved "https://registry.yarnpkg.com/contentful-management/-/contentful-management-5.28.0.tgz#f3b58d60400d66e42439bbd9085cecb0e486f0bb" + integrity sha512-o+qihN3zrD6+/BT/e8n26jl/zQvmV6+9S6NY5QDmzM+IaiSeCk6yvPMq74s+IZT9mOS54igl6qFTbeIpdJ9FDA== + dependencies: + axios "^0.19.0" + contentful-sdk-core "^6.4.0" + lodash "^4.17.11" + type-fest "0.15.1" + +contentful-sdk-core@^6.4.0: + version "6.4.6" + resolved "https://registry.yarnpkg.com/contentful-sdk-core/-/contentful-sdk-core-6.4.6.tgz#a94b1355afd292dfddb0cdc16b565980f9a03c47" + integrity sha512-6KVLeCdn1akqjGvVMUgMxQ3B+zNIYeq3MUlqWsSLLJozr++0ZYWU76XmHf4n5MPTMoX9RGbRSR8hJAaKcUNDFw== + dependencies: + lodash "^4.17.10" + qs "^6.5.2" + +convert-hrtime@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/convert-hrtime/-/convert-hrtime-3.0.0.tgz#62c7593f5809ca10be8da858a6d2f702bcda00aa" + integrity sha512-7V+KqSvMiHp8yWDuwfww06XleMWVVB9b9tURBx+G7UTADuo5hYPuowKloz4OzOqbPezxgo+fdQ1522WzPG4OeA== + +convert-source-map@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.7.0.tgz#17a2cb882d7f77d3490585e2ce6c524424a3a442" + integrity sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA== + dependencies: + safe-buffer "~5.1.1" + +cookie-signature@1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" + integrity sha1-4wOogrNCzD7oylE6eZmXNNqzriw= + +cookie@0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.3.1.tgz#e7e0a1f9ef43b4c8ba925c5c5a96e806d16873bb" + integrity sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s= + +cookie@0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.0.tgz#beb437e7022b3b6d49019d088665303ebe9c14ba" + integrity sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg== + +copy-concurrently@^1.0.0: + version "1.0.5" + resolved "https://registry.yarnpkg.com/copy-concurrently/-/copy-concurrently-1.0.5.tgz#92297398cae34937fcafd6ec8139c18051f0b5e0" + integrity sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A== + dependencies: + aproba "^1.1.1" + fs-write-stream-atomic "^1.0.8" + iferr "^0.1.5" + mkdirp "^0.5.1" + rimraf "^2.5.4" + run-queue "^1.0.0" + +copy-descriptor@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" + integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= + +copyfiles@^2.3.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/copyfiles/-/copyfiles-2.4.0.tgz#fcac72a4f2b882f021dd156b4bcf6d71315487bd" + integrity sha512-yGjpR3yjQdxccW8EcJ4a7ZCA6wGER6/Q2Y+b7bXbVxGeSHBf93i9d7MzTsx+VV1CpMKQa3v4ThZfXBcltMzl0w== + dependencies: + glob "^7.0.5" + minimatch "^3.0.3" + mkdirp "^1.0.4" + noms "0.0.0" + through2 "^2.0.1" + untildify "^4.0.0" + yargs "^15.3.1" + +core-js-compat@^3.6.2, core-js-compat@^3.6.5: + version "3.6.5" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.6.5.tgz#2a51d9a4e25dfd6e690251aa81f99e3c05481f1c" + integrity sha512-7ItTKOhOZbznhXAQ2g/slGg1PJV5zDO/WdkTwi7UEOJmkvsE32PWvx6mKtDjiMpjnR2CNf6BAD6sSxIlv7ptng== + dependencies: + browserslist "^4.8.5" + semver "7.0.0" + +core-js-pure@^3.0.0: + version "3.6.5" + resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.6.5.tgz#c79e75f5e38dbc85a662d91eea52b8256d53b813" + integrity sha512-lacdXOimsiD0QyNf9BC/mxivNJ/ybBGJXQFKzRekp1WTHoVUWsUHEn+2T8GJAzzIhyOuXA+gOxCVN3l+5PLPUA== + +core-js@^2.4.0: + version "2.6.11" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.11.tgz#38831469f9922bded8ee21c9dc46985e0399308c" + integrity sha512-5wjnpaT/3dV+XB4borEsnAYQchn00XSgTAWKDkEqv+K8KevjbzmofK6hfJ9TZIlpj2N0xQpazy7PiRQiWHqzWg== + +core-js@^3.6.5: + version "3.6.5" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.6.5.tgz#7395dc273af37fb2e50e9bd3d9fe841285231d1a" + integrity sha512-vZVEEwZoIsI+vPEuoF9Iqf5H7/M3eeQqWlQnYa8FSKKePuYTf5MWnxb5SDAzCa60b3JBRS5g9b+Dq7b1y/RCrA== + +core-util-is@~1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" + integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= + +cors@^2.8.5: + version "2.8.5" + resolved "https://registry.yarnpkg.com/cors/-/cors-2.8.5.tgz#eac11da51592dd86b9f06f6e7ac293b3df875d29" + integrity sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g== + dependencies: + object-assign "^4" + vary "^1" + +cosmiconfig@6.0.0, cosmiconfig@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-6.0.0.tgz#da4fee853c52f6b1e6935f41c1a2fc50bd4a9982" + integrity sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg== + dependencies: + "@types/parse-json" "^4.0.0" + import-fresh "^3.1.0" + parse-json "^5.0.0" + path-type "^4.0.0" + yaml "^1.7.2" + +cosmiconfig@^5.0.0: + version "5.2.1" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-5.2.1.tgz#040f726809c591e77a17c0a3626ca45b4f168b1a" + integrity sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA== + dependencies: + import-fresh "^2.0.0" + is-directory "^0.3.1" + js-yaml "^3.13.1" + parse-json "^4.0.0" + +create-ecdh@^4.0.0: + version "4.0.4" + resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.4.tgz#d6e7f4bffa66736085a0762fd3a632684dabcc4e" + integrity sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A== + dependencies: + bn.js "^4.1.0" + elliptic "^6.5.3" + +create-hash@^1.1.0, create-hash@^1.1.2, create-hash@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196" + integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg== + dependencies: + cipher-base "^1.0.1" + inherits "^2.0.1" + md5.js "^1.3.4" + ripemd160 "^2.0.1" + sha.js "^2.4.0" + +create-hmac@^1.1.0, create-hmac@^1.1.4, create-hmac@^1.1.7: + version "1.1.7" + resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff" + integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg== + dependencies: + cipher-base "^1.0.3" + create-hash "^1.1.0" + inherits "^2.0.1" + ripemd160 "^2.0.0" + safe-buffer "^5.0.1" + sha.js "^2.4.8" + +create-react-context@0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/create-react-context/-/create-react-context-0.3.0.tgz#546dede9dc422def0d3fc2fe03afe0bc0f4f7d8c" + integrity sha512-dNldIoSuNSvlTJ7slIKC/ZFGKexBMBrrcc+TTe1NdmROnaASuLPvqpwj9v4XS4uXZ8+YPu0sNmShX2rXI5LNsw== + dependencies: + gud "^1.0.0" + warning "^4.0.3" + +cross-fetch@3.0.6: + version "3.0.6" + resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-3.0.6.tgz#3a4040bc8941e653e0e9cf17f29ebcd177d3365c" + integrity sha512-KBPUbqgFjzWlVcURG+Svp9TlhA5uliYtiNx/0r8nv0pdypeQCRJ9IaSIc3q/x3q8t3F75cHuwxVql1HFGHCNJQ== + dependencies: + node-fetch "2.6.1" + +cross-spawn@5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449" + integrity sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk= + dependencies: + lru-cache "^4.0.1" + shebang-command "^1.2.0" + which "^1.2.9" + +cross-spawn@^6.0.0, cross-spawn@^6.0.5: + version "6.0.5" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" + integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== + dependencies: + nice-try "^1.0.4" + path-key "^2.0.1" + semver "^5.5.0" + shebang-command "^1.2.0" + which "^1.2.9" + +cross-spawn@^7.0.0: + version "7.0.3" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" + integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== + dependencies: + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" + +crypto-browserify@^3.11.0: + version "3.12.0" + resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec" + integrity sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg== + dependencies: + browserify-cipher "^1.0.0" + browserify-sign "^4.0.0" + create-ecdh "^4.0.0" + create-hash "^1.1.0" + create-hmac "^1.1.0" + diffie-hellman "^5.0.0" + inherits "^2.0.1" + pbkdf2 "^3.0.3" + public-encrypt "^4.0.0" + randombytes "^2.0.0" + randomfill "^1.0.3" + +crypto-random-string@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-2.0.0.tgz#ef2a7a966ec11083388369baa02ebead229b30d5" + integrity sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA== + +css-color-names@0.0.4, css-color-names@^0.0.4: + version "0.0.4" + resolved "https://registry.yarnpkg.com/css-color-names/-/css-color-names-0.0.4.tgz#808adc2e79cf84738069b646cb20ec27beb629e0" + integrity sha1-gIrcLnnPhHOAabZGyyDsJ762KeA= + +css-declaration-sorter@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/css-declaration-sorter/-/css-declaration-sorter-4.0.1.tgz#c198940f63a76d7e36c1e71018b001721054cb22" + integrity sha512-BcxQSKTSEEQUftYpBVnsH4SF05NTuBokb19/sBt6asXGKZ/6VP7PLG1CBCkFDYOnhXhPh0jMhO6xZ71oYHXHBA== + dependencies: + postcss "^7.0.1" + timsort "^0.3.0" + +css-loader@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-1.0.1.tgz#6885bb5233b35ec47b006057da01cc640b6b79fe" + integrity sha512-+ZHAZm/yqvJ2kDtPne3uX0C+Vr3Zn5jFn2N4HywtS5ujwvsVkyg0VArEXpl3BgczDA8anieki1FIzhchX4yrDw== + dependencies: + babel-code-frame "^6.26.0" + css-selector-tokenizer "^0.7.0" + icss-utils "^2.1.0" + loader-utils "^1.0.2" + lodash "^4.17.11" + postcss "^6.0.23" + postcss-modules-extract-imports "^1.2.0" + postcss-modules-local-by-default "^1.2.0" + postcss-modules-scope "^1.1.0" + postcss-modules-values "^1.3.0" + postcss-value-parser "^3.3.0" + source-list-map "^2.0.0" + +css-select-base-adapter@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz#3b2ff4972cc362ab88561507a95408a1432135d7" + integrity sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w== + +css-select@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/css-select/-/css-select-1.2.0.tgz#2b3a110539c5355f1cd8d314623e870b121ec858" + integrity sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg= + dependencies: + boolbase "~1.0.0" + css-what "2.1" + domutils "1.5.1" + nth-check "~1.0.1" + +css-select@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/css-select/-/css-select-2.1.0.tgz#6a34653356635934a81baca68d0255432105dbef" + integrity sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ== + dependencies: + boolbase "^1.0.0" + css-what "^3.2.1" + domutils "^1.7.0" + nth-check "^1.0.2" + +css-selector-parser@^1.1.0: + version "1.4.1" + resolved "https://registry.yarnpkg.com/css-selector-parser/-/css-selector-parser-1.4.1.tgz#03f9cb8a81c3e5ab2c51684557d5aaf6d2569759" + integrity sha512-HYPSb7y/Z7BNDCOrakL4raGO2zltZkbeXyAd6Tg9obzix6QhzxCotdBl6VT0Dv4vZfJGVz3WL/xaEI9Ly3ul0g== + +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-tree@1.0.0-alpha.37: + version "1.0.0-alpha.37" + resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.0.0-alpha.37.tgz#98bebd62c4c1d9f960ec340cf9f7522e30709a22" + integrity sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg== + dependencies: + mdn-data "2.0.4" + source-map "^0.6.1" + +css-tree@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.0.0.tgz#21993fa270d742642a90409a2c0cb3ac0298adf6" + integrity sha512-CdVYz/Yuqw0VdKhXPBIgi8DO3NicJVYZNWeX9XcIuSp9ZoFT5IcleVRW07O5rMjdcx1mb+MEJPknTTEW7DdsYw== + dependencies: + mdn-data "2.0.12" + source-map "^0.6.1" + +css-what@2.1: + version "2.1.3" + resolved "https://registry.yarnpkg.com/css-what/-/css-what-2.1.3.tgz#a6d7604573365fe74686c3f311c56513d88285f2" + integrity sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg== + +css-what@^3.2.1: + version "3.4.2" + resolved "https://registry.yarnpkg.com/css-what/-/css-what-3.4.2.tgz#ea7026fcb01777edbde52124e21f327e7ae950e4" + integrity sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ== + +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== + +cssfilter@0.0.10: + version "0.0.10" + resolved "https://registry.yarnpkg.com/cssfilter/-/cssfilter-0.0.10.tgz#c6d2672632a2e5c83e013e6864a42ce8defd20ae" + integrity sha1-xtJnJjKi5cg+AT5oZKQs6N79IK4= + +cssnano-preset-default@^4.0.7: + version "4.0.7" + resolved "https://registry.yarnpkg.com/cssnano-preset-default/-/cssnano-preset-default-4.0.7.tgz#51ec662ccfca0f88b396dcd9679cdb931be17f76" + integrity sha512-x0YHHx2h6p0fCl1zY9L9roD7rnlltugGu7zXSKQx6k2rYw0Hi3IqxcoAGF7u9Q5w1nt7vK0ulxV8Lo+EvllGsA== + dependencies: + css-declaration-sorter "^4.0.1" + cssnano-util-raw-cache "^4.0.1" + postcss "^7.0.0" + postcss-calc "^7.0.1" + postcss-colormin "^4.0.3" + postcss-convert-values "^4.0.1" + postcss-discard-comments "^4.0.2" + postcss-discard-duplicates "^4.0.2" + postcss-discard-empty "^4.0.1" + postcss-discard-overridden "^4.0.1" + postcss-merge-longhand "^4.0.11" + postcss-merge-rules "^4.0.3" + postcss-minify-font-values "^4.0.2" + postcss-minify-gradients "^4.0.2" + postcss-minify-params "^4.0.2" + postcss-minify-selectors "^4.0.2" + postcss-normalize-charset "^4.0.1" + postcss-normalize-display-values "^4.0.2" + postcss-normalize-positions "^4.0.2" + postcss-normalize-repeat-style "^4.0.2" + postcss-normalize-string "^4.0.2" + postcss-normalize-timing-functions "^4.0.2" + postcss-normalize-unicode "^4.0.1" + postcss-normalize-url "^4.0.1" + postcss-normalize-whitespace "^4.0.2" + postcss-ordered-values "^4.1.2" + postcss-reduce-initial "^4.0.3" + postcss-reduce-transforms "^4.0.2" + postcss-svgo "^4.0.2" + postcss-unique-selectors "^4.0.1" + +cssnano-util-get-arguments@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/cssnano-util-get-arguments/-/cssnano-util-get-arguments-4.0.0.tgz#ed3a08299f21d75741b20f3b81f194ed49cc150f" + integrity sha1-7ToIKZ8h11dBsg87gfGU7UnMFQ8= + +cssnano-util-get-match@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/cssnano-util-get-match/-/cssnano-util-get-match-4.0.0.tgz#c0e4ca07f5386bb17ec5e52250b4f5961365156d" + integrity sha1-wOTKB/U4a7F+xeUiULT1lhNlFW0= + +cssnano-util-raw-cache@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/cssnano-util-raw-cache/-/cssnano-util-raw-cache-4.0.1.tgz#b26d5fd5f72a11dfe7a7846fb4c67260f96bf282" + integrity sha512-qLuYtWK2b2Dy55I8ZX3ky1Z16WYsx544Q0UWViebptpwn/xDBmog2TLg4f+DBMg1rJ6JDWtn96WHbOKDWt1WQA== + dependencies: + postcss "^7.0.0" + +cssnano-util-same-parent@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/cssnano-util-same-parent/-/cssnano-util-same-parent-4.0.1.tgz#574082fb2859d2db433855835d9a8456ea18bbf3" + integrity sha512-WcKx5OY+KoSIAxBW6UBBRay1U6vkYheCdjyVNDm85zt5K9mHoGOfsOsqIszfAqrQQFIIKgjh2+FDgIj/zsl21Q== + +cssnano@^4.1.10: + version "4.1.10" + resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-4.1.10.tgz#0ac41f0b13d13d465487e111b778d42da631b8b2" + integrity sha512-5wny+F6H4/8RgNlaqab4ktc3e0/blKutmq8yNlBFXA//nSFFAqAngjNVRzUvCgYROULmZZUoosL/KSoZo5aUaQ== + dependencies: + cosmiconfig "^5.0.0" + cssnano-preset-default "^4.0.7" + is-resolvable "^1.0.0" + postcss "^7.0.0" + +csso@^4.0.2: + version "4.1.0" + resolved "https://registry.yarnpkg.com/csso/-/csso-4.1.0.tgz#1d31193efa99b87aa6bad6c0cef155e543d09e8b" + integrity sha512-h+6w/W1WqXaJA4tb1dk7r5tVbOm97MsKxzwnvOR04UQ6GILroryjMWu3pmCCtL2mLaEStQ0fZgeGiy99mo7iyg== + dependencies: + css-tree "^1.0.0" + +csstype@^3.0.2: + version "3.0.4" + resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.0.4.tgz#b156d7be03b84ff425c9a0a4b1e5f4da9c5ca888" + integrity sha512-xc8DUsCLmjvCfoD7LTGE0ou2MIWLx0K9RCZwSHMOdynqRsP4MtUcLeqh1HcQ2dInwDTqn+3CE0/FZh1et+p4jA== + +currently-unhandled@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/currently-unhandled/-/currently-unhandled-0.4.1.tgz#988df33feab191ef799a61369dd76c17adf957ea" + integrity sha1-mI3zP+qxke95mmE2nddsF635V+o= + dependencies: + array-find-index "^1.0.1" + +cyclist@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-1.0.1.tgz#596e9698fd0c80e12038c2b82d6eb1b35b6224d9" + integrity sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk= + +d@1, d@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/d/-/d-1.0.1.tgz#8698095372d58dbee346ffd0c7093f99f8f9eb5a" + integrity sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA== + dependencies: + es5-ext "^0.10.50" + type "^1.0.1" + +damerau-levenshtein@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/damerau-levenshtein/-/damerau-levenshtein-1.0.6.tgz#143c1641cb3d85c60c32329e26899adea8701791" + integrity sha512-JVrozIeElnj3QzfUIt8tB8YMluBJom4Vw9qTPpjGYQ9fYlB3D/rb6OordUxf3xeFB35LKWs0xqcO5U6ySvBtug== + +dataloader@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/dataloader/-/dataloader-2.0.0.tgz#41eaf123db115987e21ca93c005cd7753c55fe6f" + integrity sha512-YzhyDAwA4TaQIhM5go+vCLmU0UikghC/t9DTQYZR2M/UvZ1MdOhPezSDZcjj9uqQJOMqjLcpWtyW2iNINdlatQ== + +date-fns@^2.14.0: + version "2.16.1" + resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-2.16.1.tgz#05775792c3f3331da812af253e1a935851d3834b" + integrity sha512-sAJVKx/FqrLYHAQeN7VpJrPhagZc9R4ImZIWYRFZaaohR3KzmuK88touwsSwSVT8Qcbd4zoDsnGfX4GFB4imyQ== + +debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.0, debug@^2.6.6, debug@^2.6.9: + version "2.6.9" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" + integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== + dependencies: + ms "2.0.0" + +debug@=3.1.0, 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" + +debug@^3.0.0, debug@^3.1.0, debug@^3.1.1, debug@^3.2.5, debug@^3.2.6: + version "3.2.6" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" + integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ== + dependencies: + ms "^2.1.1" + +debug@^4.0.1, debug@^4.1.0, debug@^4.1.1: + version "4.2.0" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.2.0.tgz#7f150f93920e94c58f5574c2fd01a3110effe7f1" + integrity sha512-IX2ncY78vDTjZMFUdmsvIRFY2Cf4FnD0wRs+nQwJU8Lu99/tPFdb0VybiiMTPe3I6rQmwsqQqRBvxU+bZ/I8sg== + dependencies: + ms "2.1.2" + +debug@~4.1.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791" + integrity sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw== + dependencies: + ms "^2.1.1" + +decamelize@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" + integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= + +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= + +decompress-response@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-3.3.0.tgz#80a4dd323748384bfa248083622aedec982adff3" + integrity sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M= + dependencies: + mimic-response "^1.0.0" + +deep-equal@^1.0.1, deep-equal@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.1.1.tgz#b5c98c942ceffaf7cb051e24e1434a25a2e6076a" + integrity sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g== + dependencies: + is-arguments "^1.0.4" + is-date-object "^1.0.1" + is-regex "^1.0.4" + object-is "^1.0.1" + object-keys "^1.1.1" + regexp.prototype.flags "^1.2.0" + +deep-extend@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" + integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== + +deep-is@~0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" + integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= + +default-gateway@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/default-gateway/-/default-gateway-4.2.0.tgz#167104c7500c2115f6dd69b0a536bb8ed720552b" + integrity sha512-h6sMrVB1VMWVrW13mSc6ia/DwYYw5MN6+exNu1OaJeFac5aSAvwM7lZ0NVfTABuSkQelr4h5oebg3KB1XPdjgA== + dependencies: + execa "^1.0.0" + ip-regex "^2.1.0" + +defer-to-connect@^1.0.1: + version "1.1.3" + resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-1.1.3.tgz#331ae050c08dcf789f8c83a7b81f0ed94f4ac591" + integrity sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ== + +define-properties@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" + integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ== + dependencies: + object-keys "^1.0.12" + +define-property@^0.2.5: + version "0.2.5" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" + integrity sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY= + dependencies: + is-descriptor "^0.1.0" + +define-property@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6" + integrity sha1-dp66rz9KY6rTr56NMEybvnm/sOY= + dependencies: + is-descriptor "^1.0.0" + +define-property@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d" + integrity sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ== + dependencies: + is-descriptor "^1.0.2" + isobject "^3.0.1" + +del@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/del/-/del-4.1.1.tgz#9e8f117222ea44a31ff3a156c049b99052a9f0b4" + integrity sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ== + dependencies: + "@types/glob" "^7.1.1" + globby "^6.1.0" + is-path-cwd "^2.0.0" + is-path-in-cwd "^2.0.0" + p-map "^2.0.0" + pify "^4.0.1" + rimraf "^2.6.3" + +del@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/del/-/del-5.1.0.tgz#d9487c94e367410e6eff2925ee58c0c84a75b3a7" + integrity sha512-wH9xOVHnczo9jN2IW68BabcecVPxacIA3g/7z6vhSU/4stOKQzeCRK0yD0A24WiAAUJmmVpWqrERcTxnLo3AnA== + dependencies: + globby "^10.0.1" + graceful-fs "^4.2.2" + is-glob "^4.0.1" + is-path-cwd "^2.2.0" + is-path-inside "^3.0.1" + p-map "^3.0.0" + rimraf "^3.0.0" + slash "^3.0.0" + +delayed-stream@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" + integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= + +delegate@^3.1.2: + version "3.2.0" + resolved "https://registry.yarnpkg.com/delegate/-/delegate-3.2.0.tgz#b66b71c3158522e8ab5744f720d8ca0c2af59166" + integrity sha512-IofjkYBZaZivn0V8nnsMJGBr4jVLxHDheKSW88PyxS5QC4Vo9ZbZVvhzlSxY87fVq3STR6r+4cGepyHkcWOQSw== + +depd@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" + integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak= + +des.js@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.1.tgz#5382142e1bdc53f85d86d53e5f4aa7deb91e0843" + integrity sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA== + dependencies: + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + +destroy@~1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" + integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA= + +detab@^2.0.0: + version "2.0.4" + resolved "https://registry.yarnpkg.com/detab/-/detab-2.0.4.tgz#b927892069aff405fbb9a186fe97a44a92a94b43" + integrity sha512-8zdsQA5bIkoRECvCrNKPla84lyoR7DSAyf7p0YgXzBO9PDJx8KntPUay7NS6yp+KdxdVtiE5SpHKtbp2ZQyA9g== + dependencies: + repeat-string "^1.5.4" + +detect-indent@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-6.0.0.tgz#0abd0f549f69fc6659a254fe96786186b6f528fd" + integrity sha512-oSyFlqaTHCItVRGK5RmrmjB+CmaMOW7IaNA/kdxqhoa6d17j/5ce9O9eWXmV/KEdRwqpQA+Vqe8a8Bsybu4YnA== + +detect-newline@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-1.0.3.tgz#e97b1003877d70c09af1af35bfadff168de4920d" + integrity sha1-6XsQA4d9cMCa8a81v63/Fo3kkg0= + dependencies: + get-stdin "^4.0.1" + minimist "^1.1.0" + +detect-node@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.0.4.tgz#014ee8f8f669c5c58023da64b8179c083a28c46c" + integrity sha512-ZIzRpLJrOj7jjP2miAtgqIfmzbxa4ZOr5jJc601zklsfEx9oTzmmj2nVpIPRpNlRTIh8lc1kyViIY7BWSGNmKw== + +detect-port-alt@1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/detect-port-alt/-/detect-port-alt-1.1.3.tgz#a4d2f061d757a034ecf37c514260a98750f2b131" + integrity sha1-pNLwYddXoDTs83xRQmCph1DysTE= + dependencies: + address "^1.0.1" + debug "^2.6.0" + +detect-port@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/detect-port/-/detect-port-1.3.0.tgz#d9c40e9accadd4df5cac6a782aefd014d573d1f1" + integrity sha512-E+B1gzkl2gqxt1IhUzwjrxBKRqx1UzC3WLONHinn8S3T6lwV/agVCyitiFOsGJ/eYuEUBvD71MZHy3Pv1G9doQ== + dependencies: + address "^1.0.1" + debug "^2.6.0" + +devcert@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/devcert/-/devcert-1.1.3.tgz#ff8119efae52ebf2449531b7482ae0f7211542e9" + integrity sha512-7/nIzKdQ8y2K0imjIP7dyg2GJ2h38Ps6VOMXWZHIarNDV3p6mTXyEugKFnkmsZ2DD58JEG34ILyVb3qdOMmP9w== + dependencies: + "@types/configstore" "^2.1.1" + "@types/debug" "^0.0.30" + "@types/get-port" "^3.2.0" + "@types/glob" "^5.0.34" + "@types/lodash" "^4.14.92" + "@types/mkdirp" "^0.5.2" + "@types/node" "^8.5.7" + "@types/rimraf" "^2.0.2" + "@types/tmp" "^0.0.33" + application-config-path "^0.1.0" + command-exists "^1.2.4" + debug "^3.1.0" + eol "^0.9.1" + get-port "^3.2.0" + glob "^7.1.2" + lodash "^4.17.4" + mkdirp "^0.5.1" + password-prompt "^1.0.4" + rimraf "^2.6.2" + sudo-prompt "^8.2.0" + tmp "^0.0.33" + tslib "^1.10.0" + +diff-sequences@^25.2.6: + version "25.2.6" + resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-25.2.6.tgz#5f467c00edd35352b7bca46d7927d60e687a76dd" + integrity sha512-Hq8o7+6GaZeoFjtpgvRBUknSXNeJiCx7V9Fr94ZMljNiCr9n9L8H8aJqgWOQiDDGdyn29fRNcDdRVJ5fdyihfg== + +diffie-hellman@^5.0.0: + version "5.0.3" + resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz#40e8ee98f55a2149607146921c63e1ae5f3d2875" + integrity sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg== + dependencies: + bn.js "^4.1.0" + miller-rabin "^4.0.0" + randombytes "^2.0.0" + +dir-glob@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" + integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== + dependencies: + path-type "^4.0.0" + +dns-equal@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/dns-equal/-/dns-equal-1.0.0.tgz#b39e7f1da6eb0a75ba9c17324b34753c47e0654d" + integrity sha1-s55/HabrCnW6nBcySzR1PEfgZU0= + +dns-packet@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/dns-packet/-/dns-packet-1.3.1.tgz#12aa426981075be500b910eedcd0b47dd7deda5a" + integrity sha512-0UxfQkMhYAUaZI+xrNZOz/as5KgDU0M/fQ9b6SpkyLbk3GEswDi6PADJVaYJradtRVsRIlF1zLyOodbcTCDzUg== + dependencies: + ip "^1.1.0" + safe-buffer "^5.0.1" + +dns-txt@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/dns-txt/-/dns-txt-2.0.2.tgz#b91d806f5d27188e4ab3e7d107d881a1cc4642b6" + integrity sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY= + dependencies: + buffer-indexof "^1.0.0" + +doctrine@1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-1.5.0.tgz#379dce730f6166f76cefa4e6707a159b02c5a6fa" + integrity sha1-N53Ocw9hZvds76TmcHoVmwLFpvo= + dependencies: + esutils "^2.0.2" + isarray "^1.0.0" + +doctrine@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d" + integrity sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw== + dependencies: + esutils "^2.0.2" + +doctrine@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" + integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== + dependencies: + esutils "^2.0.2" + +dom-converter@^0.2: + version "0.2.0" + resolved "https://registry.yarnpkg.com/dom-converter/-/dom-converter-0.2.0.tgz#6721a9daee2e293682955b6afe416771627bb768" + integrity sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA== + dependencies: + utila "~0.4" + +dom-serializer@0: + version "0.2.2" + resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.2.2.tgz#1afb81f533717175d478655debc5e332d9f9bb51" + integrity sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g== + dependencies: + domelementtype "^2.0.1" + entities "^2.0.0" + +dom-serializer@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-1.1.0.tgz#5f7c828f1bfc44887dc2a315ab5c45691d544b58" + integrity sha512-ox7bvGXt2n+uLWtCRLybYx60IrOlWL/aCebWJk1T0d4m3y2tzf4U3ij9wBMUb6YJZpz06HCCYuyCDveE2xXmzQ== + dependencies: + domelementtype "^2.0.1" + domhandler "^3.0.0" + entities "^2.0.0" + +dom-walk@^0.1.0: + version "0.1.2" + resolved "https://registry.yarnpkg.com/dom-walk/-/dom-walk-0.1.2.tgz#0c548bef048f4d1f2a97249002236060daa3fd84" + integrity sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w== + +domain-browser@^1.1.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda" + integrity sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA== + +domelementtype@1, domelementtype@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.1.tgz#d048c44b37b0d10a7f2a3d5fee3f4333d790481f" + integrity sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w== + +domelementtype@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.0.2.tgz#f3b6e549201e46f588b59463dd77187131fe6971" + integrity sha512-wFwTwCVebUrMgGeAwRL/NhZtHAUyT9n9yg4IMDwf10+6iCMxSkVq9MGCVEH+QZWo1nNidy8kNvwmv4zWHDTqvA== + +domhandler@^2.3.0: + version "2.4.2" + resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-2.4.2.tgz#8805097e933d65e85546f726d60f5eb88b44f803" + integrity sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA== + dependencies: + domelementtype "1" + +domhandler@^3.0.0, domhandler@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-3.3.0.tgz#6db7ea46e4617eb15cf875df68b2b8524ce0037a" + integrity sha512-J1C5rIANUbuYK+FuFL98650rihynUOEzRLxW+90bKZRWB6A1X1Tf82GxR1qAWLyfNPRvjqfip3Q5tdYlmAa9lA== + dependencies: + domelementtype "^2.0.1" + +domutils@1.5.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.5.1.tgz#dcd8488a26f563d61079e48c9f7b7e32373682cf" + integrity sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8= + dependencies: + dom-serializer "0" + domelementtype "1" + +domutils@^1.5.1, domutils@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.7.0.tgz#56ea341e834e06e6748af7a1cb25da67ea9f8c2a" + integrity sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg== + dependencies: + dom-serializer "0" + domelementtype "1" + +domutils@^2.0.0: + version "2.4.2" + resolved "https://registry.yarnpkg.com/domutils/-/domutils-2.4.2.tgz#7ee5be261944e1ad487d9aa0616720010123922b" + integrity sha512-NKbgaM8ZJOecTZsIzW5gSuplsX2IWW2mIK7xVr8hTQF2v1CJWTmLZ1HOCh5sH+IzVPAGE5IucooOkvwBRAdowA== + dependencies: + dom-serializer "^1.0.1" + domelementtype "^2.0.1" + domhandler "^3.3.0" + +dot-prop@^5.2.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-5.3.0.tgz#90ccce708cd9cd82cc4dc8c3ddd9abdd55b20e88" + integrity sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q== + dependencies: + is-obj "^2.0.0" + +dotenv@^8.2.0: + version "8.2.0" + resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-8.2.0.tgz#97e619259ada750eea3e4ea3e26bceea5424b16a" + integrity sha512-8sJ78ElpbDJBHNeBzUbUVLsqKdccaa/BXF1uPTw3GrvQTBgrQrtObr2mUrE38vzYd8cEv+m/JBfDLioYcfXoaw== + +duplexer3@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2" + integrity sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI= + +duplexer@^0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.2.tgz#3abe43aef3835f8ae077d136ddce0f276b0400e6" + integrity sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg== + +duplexify@^3.4.2, duplexify@^3.6.0: + version "3.7.1" + resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.7.1.tgz#2a4df5317f6ccfd91f86d6fd25d8d8a103b88309" + integrity sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g== + dependencies: + end-of-stream "^1.0.0" + inherits "^2.0.1" + readable-stream "^2.0.0" + stream-shift "^1.0.0" + +ee-first@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" + integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= + +electron-to-chromium@^1.3.585: + version "1.3.585" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.585.tgz#71cdb722c73488b9475ad1c572cf43a763ef9081" + integrity sha512-xoeqjMQhgHDZM7FiglJAb2aeOxHZWFruUc3MbAGTgE7GB8rr5fTn1Sdh5THGuQtndU3GuXlu91ZKqRivxoCZ/A== + +elliptic@^6.5.3: + version "6.5.3" + resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.3.tgz#cb59eb2efdaf73a0bd78ccd7015a62ad6e0f93d6" + integrity sha512-IMqzv5wNQf+E6aHeIqATs0tOLeOTwj1QKbRcS3jBbYkl5oLAserA8yJTT7/VyHUYG91PRmPyeQDObKLPpeS4dw== + dependencies: + bn.js "^4.4.0" + brorand "^1.0.1" + hash.js "^1.0.0" + hmac-drbg "^1.0.0" + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + minimalistic-crypto-utils "^1.0.0" + +"emoji-regex@>=6.0.0 <=6.1.1": + version "6.1.1" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-6.1.1.tgz#c6cd0ec1b0642e2a3c67a1137efc5e796da4f88e" + integrity sha1-xs0OwbBkLio8Z6ETfvxeeW2k+I4= + +emoji-regex@^7.0.1: + version "7.0.3" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" + integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== + +emoji-regex@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" + integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== + +emoji-regex@^9.0.0: + version "9.2.0" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.0.tgz#a26da8e832b16a9753309f25e35e3c0efb9a066a" + integrity sha512-DNc3KFPK18bPdElMJnf/Pkv5TXhxFU3YFDEuGLDRtPmV4rkmCjBkCSEp22u6rBHdSN9Vlp/GK7k98prmE1Jgug== + +emojis-list@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-3.0.0.tgz#5570662046ad29e2e916e71aae260abdff4f6a78" + integrity sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q== + +encodeurl@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" + integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k= + +end-of-stream@^1.0.0, end-of-stream@^1.1.0: + version "1.4.4" + resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" + integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== + dependencies: + once "^1.4.0" + +engine.io-client@~3.4.0: + version "3.4.4" + resolved "https://registry.yarnpkg.com/engine.io-client/-/engine.io-client-3.4.4.tgz#77d8003f502b0782dd792b073a4d2cf7ca5ab967" + integrity sha512-iU4CRr38Fecj8HoZEnFtm2EiKGbYZcPn3cHxqNGl/tmdWRf60KhK+9vE0JeSjgnlS/0oynEfLgKbT9ALpim0sQ== + dependencies: + component-emitter "~1.3.0" + component-inherit "0.0.3" + debug "~3.1.0" + engine.io-parser "~2.2.0" + has-cors "1.1.0" + indexof "0.0.1" + parseqs "0.0.6" + parseuri "0.0.6" + ws "~6.1.0" + xmlhttprequest-ssl "~1.5.4" + yeast "0.1.2" + +engine.io-parser@~2.2.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/engine.io-parser/-/engine.io-parser-2.2.1.tgz#57ce5611d9370ee94f99641b589f94c97e4f5da7" + integrity sha512-x+dN/fBH8Ro8TFwJ+rkB2AmuVw9Yu2mockR/p3W8f8YtExwFgDvBDi0GWyb4ZLkpahtDGZgtr3zLovanJghPqg== + dependencies: + after "0.8.2" + arraybuffer.slice "~0.0.7" + base64-arraybuffer "0.1.4" + blob "0.0.5" + has-binary2 "~1.0.2" + +engine.io@~3.4.0: + version "3.4.2" + resolved "https://registry.yarnpkg.com/engine.io/-/engine.io-3.4.2.tgz#8fc84ee00388e3e228645e0a7d3dfaeed5bd122c" + integrity sha512-b4Q85dFkGw+TqgytGPrGgACRUhsdKc9S9ErRAXpPGy/CXKs4tYoHDkvIRdsseAF7NjfVwjRFIn6KTnbw7LwJZg== + dependencies: + accepts "~1.3.4" + base64id "2.0.0" + cookie "0.3.1" + debug "~4.1.0" + engine.io-parser "~2.2.0" + ws "^7.1.2" + +enhanced-resolve@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-4.3.0.tgz#3b806f3bfafc1ec7de69551ef93cca46c1704126" + integrity sha512-3e87LvavsdxyoCfGusJnrZ5G8SLPOFeHSNpZI/ATL9a5leXo2k0w6MKnbqhdBad9qTobSfB20Ld7UmgoNbAZkQ== + dependencies: + graceful-fs "^4.1.2" + memory-fs "^0.5.0" + tapable "^1.0.0" + +entities@^1.1.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.2.tgz#bdfa735299664dfafd34529ed4f8522a275fea56" + integrity sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w== + +entities@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/entities/-/entities-2.1.0.tgz#992d3129cf7df6870b96c57858c249a120f8b8b5" + integrity sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w== + +envinfo@^7.7.3: + version "7.7.3" + resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-7.7.3.tgz#4b2d8622e3e7366afb8091b23ed95569ea0208cc" + integrity sha512-46+j5QxbPWza0PB1i15nZx0xQ4I/EfQxg9J8Had3b408SV63nEtor2e+oiY63amTo9KTuh2a3XLObNwduxYwwA== + +eol@^0.9.1: + version "0.9.1" + resolved "https://registry.yarnpkg.com/eol/-/eol-0.9.1.tgz#f701912f504074be35c6117a5c4ade49cd547acd" + integrity sha512-Ds/TEoZjwggRoz/Q2O7SE3i4Jm66mqTDfmdHdq/7DKVk3bro9Q8h6WdXKdPqFLMoqxrDK5SVRzHVPOS6uuGtrg== + +errno@^0.1.1, errno@^0.1.3, errno@~0.1.7: + version "0.1.7" + resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.7.tgz#4684d71779ad39af177e3f007996f7c67c852618" + integrity sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg== + dependencies: + prr "~1.0.1" + +error-ex@^1.2.0, error-ex@^1.3.1: + version "1.3.2" + resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" + integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== + dependencies: + is-arrayish "^0.2.1" + +error-stack-parser@^2.0.0, error-stack-parser@^2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/error-stack-parser/-/error-stack-parser-2.0.6.tgz#5a99a707bd7a4c58a797902d48d82803ede6aad8" + integrity sha512-d51brTeqC+BHlwF0BhPtcYgF5nlzf9ZZ0ZIUQNZpc9ZB9qw5IJ2diTrBY9jlCJkTLITYPjmiX6OWCwH+fuyNgQ== + dependencies: + stackframe "^1.1.1" + +es-abstract@^1.17.0, es-abstract@^1.17.0-next.1, es-abstract@^1.17.2, es-abstract@^1.17.5: + version "1.17.7" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.17.7.tgz#a4de61b2f66989fc7421676c1cb9787573ace54c" + integrity sha512-VBl/gnfcJ7OercKA9MVaegWsBHFjV492syMudcnQZvt/Dw8ezpcOHYZXa/J96O8vx+g4x65YKhxOwDUh63aS5g== + dependencies: + es-to-primitive "^1.2.1" + function-bind "^1.1.1" + has "^1.0.3" + has-symbols "^1.0.1" + is-callable "^1.2.2" + is-regex "^1.1.1" + object-inspect "^1.8.0" + object-keys "^1.1.1" + object.assign "^4.1.1" + string.prototype.trimend "^1.0.1" + string.prototype.trimstart "^1.0.1" + +es-abstract@^1.18.0-next.0, es-abstract@^1.18.0-next.1: + version "1.18.0-next.1" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.18.0-next.1.tgz#6e3a0a4bda717e5023ab3b8e90bec36108d22c68" + integrity sha512-I4UGspA0wpZXWENrdA0uHbnhte683t3qT/1VFH9aX2dA5PPSf6QW5HHXf5HImaqPmjXaVeVk4RGWnaylmV7uAA== + dependencies: + es-to-primitive "^1.2.1" + function-bind "^1.1.1" + has "^1.0.3" + has-symbols "^1.0.1" + is-callable "^1.2.2" + is-negative-zero "^2.0.0" + is-regex "^1.1.1" + object-inspect "^1.8.0" + object-keys "^1.1.1" + object.assign "^4.1.1" + string.prototype.trimend "^1.0.1" + string.prototype.trimstart "^1.0.1" + +es-to-primitive@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" + integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== + dependencies: + is-callable "^1.1.4" + is-date-object "^1.0.1" + is-symbol "^1.0.2" + +es5-ext@^0.10.35, es5-ext@^0.10.50: + version "0.10.53" + resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.53.tgz#93c5a3acfdbef275220ad72644ad02ee18368de1" + integrity sha512-Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q== + dependencies: + es6-iterator "~2.0.3" + es6-symbol "~3.1.3" + next-tick "~1.0.0" + +es6-iterator@~2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.3.tgz#a7de889141a05a94b0854403b2d0a0fbfa98f3b7" + integrity sha1-p96IkUGgWpSwhUQDstCg+/qY87c= + dependencies: + d "1" + es5-ext "^0.10.35" + es6-symbol "^3.1.1" + +es6-symbol@^3.1.1, es6-symbol@~3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.3.tgz#bad5d3c1bcdac28269f4cb331e431c78ac705d18" + integrity sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA== + dependencies: + d "^1.0.1" + ext "^1.1.2" + +escalade@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" + integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== + +escape-goat@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/escape-goat/-/escape-goat-2.1.1.tgz#1b2dc77003676c457ec760b2dc68edb648188675" + integrity sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q== + +escape-html@~1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" + integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg= + +escape-string-regexp@1.0.5, 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= + +escape-string-regexp@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344" + integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== + +escape-string-regexp@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" + integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== + +eslint-config-react-app@^5.2.1: + version "5.2.1" + resolved "https://registry.yarnpkg.com/eslint-config-react-app/-/eslint-config-react-app-5.2.1.tgz#698bf7aeee27f0cea0139eaef261c7bf7dd623df" + integrity sha512-pGIZ8t0mFLcV+6ZirRgYK6RVqUIKRIi9MmgzUEmrIknsn3AdO0I32asO86dJgloHq+9ZPl8UIg8mYrvgP5u2wQ== + dependencies: + confusing-browser-globals "^1.0.9" + +eslint-import-resolver-node@^0.3.4: + version "0.3.4" + resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.4.tgz#85ffa81942c25012d8231096ddf679c03042c717" + integrity sha512-ogtf+5AB/O+nM6DIeBUNr2fuT7ot9Qg/1harBfBtaP13ekEWFQEEMP94BCB7zaNW3gyY+8SHYF00rnqYwXKWOA== + dependencies: + debug "^2.6.9" + resolve "^1.13.1" + +eslint-loader@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/eslint-loader/-/eslint-loader-2.2.1.tgz#28b9c12da54057af0845e2a6112701a2f6bf8337" + integrity sha512-RLgV9hoCVsMLvOxCuNjdqOrUqIj9oJg8hF44vzJaYqsAHuY9G2YAeN3joQ9nxP0p5Th9iFSIpKo+SD8KISxXRg== + dependencies: + loader-fs-cache "^1.0.0" + loader-utils "^1.0.2" + object-assign "^4.0.1" + object-hash "^1.1.4" + rimraf "^2.6.1" + +eslint-module-utils@^2.6.0: + version "2.6.0" + resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.6.0.tgz#579ebd094f56af7797d19c9866c9c9486629bfa6" + integrity sha512-6j9xxegbqe8/kZY8cYpcp0xhbK0EgJlg3g9mib3/miLaExuuwc3n5UEfSnU6hWMbT0FAYVvDbL9RrRgpUeQIvA== + dependencies: + debug "^2.6.9" + pkg-dir "^2.0.0" + +eslint-plugin-flowtype@^3.13.0: + version "3.13.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-flowtype/-/eslint-plugin-flowtype-3.13.0.tgz#e241ebd39c0ce519345a3f074ec1ebde4cf80f2c" + integrity sha512-bhewp36P+t7cEV0b6OdmoRWJCBYRiHFlqPZAG1oS3SF+Y0LQkeDvFSM4oxoxvczD1OdONCXMlJfQFiWLcV9urw== + dependencies: + lodash "^4.17.15" + +eslint-plugin-graphql@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-graphql/-/eslint-plugin-graphql-4.0.0.tgz#d238ff2baee4d632cfcbe787a7a70a1f50428358" + integrity sha512-d5tQm24YkVvCEk29ZR5ScsgXqAGCjKlMS8lx3mS7FS/EKsWbkvXQImpvic03EpMIvNTBW5e+2xnHzXB/VHNZJw== + dependencies: + "@babel/runtime" "^7.10.0" + graphql-config "^3.0.2" + lodash.flatten "^4.4.0" + lodash.without "^4.4.0" + +eslint-plugin-import@^2.22.0: + version "2.22.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.22.1.tgz#0896c7e6a0cf44109a2d97b95903c2bb689d7702" + integrity sha512-8K7JjINHOpH64ozkAhpT3sd+FswIZTfMZTjdx052pnWrgRCVfp8op9tbjpAk3DdUeI/Ba4C8OjdC0r90erHEOw== + dependencies: + array-includes "^3.1.1" + array.prototype.flat "^1.2.3" + contains-path "^0.1.0" + debug "^2.6.9" + doctrine "1.5.0" + eslint-import-resolver-node "^0.3.4" + eslint-module-utils "^2.6.0" + has "^1.0.3" + minimatch "^3.0.4" + object.values "^1.1.1" + read-pkg-up "^2.0.0" + resolve "^1.17.0" + tsconfig-paths "^3.9.0" + +eslint-plugin-jsx-a11y@^6.3.1: + version "6.4.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.4.1.tgz#a2d84caa49756942f42f1ffab9002436391718fd" + integrity sha512-0rGPJBbwHoGNPU73/QCLP/vveMlM1b1Z9PponxO87jfr6tuH5ligXbDT6nHSSzBC8ovX2Z+BQu7Bk5D/Xgq9zg== + dependencies: + "@babel/runtime" "^7.11.2" + aria-query "^4.2.2" + array-includes "^3.1.1" + ast-types-flow "^0.0.7" + axe-core "^4.0.2" + axobject-query "^2.2.0" + damerau-levenshtein "^1.0.6" + emoji-regex "^9.0.0" + has "^1.0.3" + jsx-ast-utils "^3.1.0" + language-tags "^1.0.5" + +eslint-plugin-react-hooks@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-1.7.0.tgz#6210b6d5a37205f0b92858f895a4e827020a7d04" + integrity sha512-iXTCFcOmlWvw4+TOE8CLWj6yX1GwzT0Y6cUfHHZqWnSk144VmVIRcVGtUAzrLES7C798lmvnt02C7rxaOX1HNA== + +eslint-plugin-react@^7.20.6: + version "7.21.5" + resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.21.5.tgz#50b21a412b9574bfe05b21db176e8b7b3b15bff3" + integrity sha512-8MaEggC2et0wSF6bUeywF7qQ46ER81irOdWS4QWxnnlAEsnzeBevk1sWh7fhpCghPpXb+8Ks7hvaft6L/xsR6g== + dependencies: + array-includes "^3.1.1" + array.prototype.flatmap "^1.2.3" + doctrine "^2.1.0" + has "^1.0.3" + jsx-ast-utils "^2.4.1 || ^3.0.0" + object.entries "^1.1.2" + object.fromentries "^2.0.2" + object.values "^1.1.1" + prop-types "^15.7.2" + resolve "^1.18.1" + string.prototype.matchall "^4.0.2" + +eslint-scope@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-4.0.3.tgz#ca03833310f6889a3264781aa82e63eb9cfe7848" + integrity sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg== + dependencies: + esrecurse "^4.1.0" + estraverse "^4.1.1" + +eslint-scope@^5.0.0: + version "5.1.1" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" + integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== + dependencies: + esrecurse "^4.3.0" + estraverse "^4.1.1" + +eslint-utils@^1.4.3: + version "1.4.3" + resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-1.4.3.tgz#74fec7c54d0776b6f67e0251040b5806564e981f" + integrity sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q== + dependencies: + eslint-visitor-keys "^1.1.0" + +eslint-utils@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-2.1.0.tgz#d2de5e03424e707dc10c74068ddedae708741b27" + integrity sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg== + dependencies: + eslint-visitor-keys "^1.1.0" + +eslint-visitor-keys@^1.0.0, eslint-visitor-keys@^1.1.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e" + integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ== + +eslint@^6.8.0: + version "6.8.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-6.8.0.tgz#62262d6729739f9275723824302fb227c8c93ffb" + integrity sha512-K+Iayyo2LtyYhDSYwz5D5QdWw0hCacNzyq1Y821Xna2xSJj7cijoLLYmLxTQgcgZ9mC61nryMy9S7GRbYpI5Ig== + dependencies: + "@babel/code-frame" "^7.0.0" + ajv "^6.10.0" + chalk "^2.1.0" + cross-spawn "^6.0.5" + debug "^4.0.1" + doctrine "^3.0.0" + eslint-scope "^5.0.0" + eslint-utils "^1.4.3" + eslint-visitor-keys "^1.1.0" + espree "^6.1.2" + esquery "^1.0.1" + esutils "^2.0.2" + file-entry-cache "^5.0.1" + functional-red-black-tree "^1.0.1" + glob-parent "^5.0.0" + globals "^12.1.0" + ignore "^4.0.6" + import-fresh "^3.0.0" + imurmurhash "^0.1.4" + inquirer "^7.0.0" + is-glob "^4.0.0" + js-yaml "^3.13.1" + json-stable-stringify-without-jsonify "^1.0.1" + levn "^0.3.0" + lodash "^4.17.14" + minimatch "^3.0.4" + mkdirp "^0.5.1" + natural-compare "^1.4.0" + optionator "^0.8.3" + progress "^2.0.0" + regexpp "^2.0.1" + semver "^6.1.2" + strip-ansi "^5.2.0" + strip-json-comments "^3.0.1" + table "^5.2.3" + text-table "^0.2.0" + v8-compile-cache "^2.0.3" + +espree@^6.1.2: + version "6.2.1" + resolved "https://registry.yarnpkg.com/espree/-/espree-6.2.1.tgz#77fc72e1fd744a2052c20f38a5b575832e82734a" + integrity sha512-ysCxRQY3WaXJz9tdbWOwuWr5Y/XrPTGX9Kiz3yoUXwW0VZ4w30HTkQLaGx/+ttFjF8i+ACbArnB4ce68a9m5hw== + dependencies: + acorn "^7.1.1" + acorn-jsx "^5.2.0" + eslint-visitor-keys "^1.1.0" + +esprima@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" + integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== + +esquery@^1.0.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.3.1.tgz#b78b5828aa8e214e29fb74c4d5b752e1c033da57" + integrity sha512-olpvt9QG0vniUBZspVRN6lwB7hOZoTRtT+jzR+tS4ffYx2mzbw+z0XCOk44aaLYKApNX5nMm+E+P6o25ip/DHQ== + dependencies: + estraverse "^5.1.0" + +esrecurse@^4.1.0, esrecurse@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" + integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== + dependencies: + estraverse "^5.2.0" + +estraverse@^4.1.1: + version "4.3.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" + integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== + +estraverse@^5.1.0, estraverse@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.2.0.tgz#307df42547e6cc7324d3cf03c155d5cdb8c53880" + integrity sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ== + +esutils@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" + integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== + +etag@~1.8.1: + version "1.8.1" + resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" + integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc= + +event-source-polyfill@^1.0.15: + version "1.0.21" + resolved "https://registry.yarnpkg.com/event-source-polyfill/-/event-source-polyfill-1.0.21.tgz#6b11b1299517a48e04540748b7c23f5a7620155b" + integrity sha512-Mz8LO8hPgg2X6VcSXmq7gvgFU3kUnTZb4zU3tTYDx8cJHRXP15tjdpGUiP2IUUwOqAGZ1TEfe+KagjMXfFgwLA== + +eventemitter3@^3.1.0: + version "3.1.2" + resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-3.1.2.tgz#2d3d48f9c346698fce83a85d7d664e98535df6e7" + integrity sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q== + +eventemitter3@^4.0.0: + version "4.0.7" + resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" + integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== + +events@^3.0.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/events/-/events-3.2.0.tgz#93b87c18f8efcd4202a461aec4dfc0556b639379" + integrity sha512-/46HWwbfCX2xTawVfkKLGxMifJYQBWMwY1mjywRtb4c9x8l5NP3KoJtnIOiL1hfdRkIuYhETxQlo62IF8tcnlg== + +eventsource@0.1.6: + version "0.1.6" + resolved "https://registry.yarnpkg.com/eventsource/-/eventsource-0.1.6.tgz#0acede849ed7dd1ccc32c811bb11b944d4f29232" + integrity sha1-Cs7ehJ7X3RzMMsgRuxG5RNTykjI= + dependencies: + original ">=0.0.5" + +eventsource@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/eventsource/-/eventsource-1.0.7.tgz#8fbc72c93fcd34088090bc0a4e64f4b5cee6d8d0" + integrity sha512-4Ln17+vVT0k8aWq+t/bF5arcS3EpT9gYtW66EPacdj/mAFevznsnyoHLPy2BA8gbIQeIHoPsvwmfBftfcG//BQ== + dependencies: + original "^1.0.0" + +evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02" + integrity sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA== + dependencies: + md5.js "^1.3.4" + safe-buffer "^5.1.1" + +execa@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8" + integrity sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA== + dependencies: + cross-spawn "^6.0.0" + get-stream "^4.0.0" + is-stream "^1.1.0" + npm-run-path "^2.0.0" + p-finally "^1.0.0" + signal-exit "^3.0.0" + strip-eof "^1.0.0" + +execa@^3.4.0: + version "3.4.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-3.4.0.tgz#c08ed4550ef65d858fac269ffc8572446f37eb89" + integrity sha512-r9vdGQk4bmCuK1yKQu1KTwcT2zwfWdbdaXfCtAh+5nU/4fSX+JAb7vZGvI5naJrQlvONrEB20jeruESI69530g== + dependencies: + cross-spawn "^7.0.0" + get-stream "^5.0.0" + human-signals "^1.1.1" + is-stream "^2.0.0" + merge-stream "^2.0.0" + npm-run-path "^4.0.0" + onetime "^5.1.0" + p-finally "^2.0.0" + signal-exit "^3.0.2" + strip-final-newline "^2.0.0" + +execa@^4.0.2, execa@^4.0.3: + version "4.1.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-4.1.0.tgz#4e5491ad1572f2f17a77d388c6c857135b22847a" + integrity sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA== + dependencies: + cross-spawn "^7.0.0" + get-stream "^5.0.0" + human-signals "^1.1.1" + is-stream "^2.0.0" + merge-stream "^2.0.0" + npm-run-path "^4.0.0" + onetime "^5.1.0" + signal-exit "^3.0.2" + strip-final-newline "^2.0.0" + +expand-brackets@^2.1.4: + version "2.1.4" + resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" + integrity sha1-t3c14xXOMPa27/D4OwQVGiJEliI= + dependencies: + debug "^2.3.3" + define-property "^0.2.5" + extend-shallow "^2.0.1" + posix-character-classes "^0.1.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + +expand-tilde@^2.0.0, expand-tilde@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/expand-tilde/-/expand-tilde-2.0.2.tgz#97e801aa052df02454de46b02bf621642cdc8502" + integrity sha1-l+gBqgUt8CRU3kawK/YhZCzchQI= + dependencies: + homedir-polyfill "^1.0.1" + +express-graphql@^0.9.0: + version "0.9.0" + resolved "https://registry.yarnpkg.com/express-graphql/-/express-graphql-0.9.0.tgz#00fd8552f866bac5c9a4612b2c4c82076107b3c2" + integrity sha512-wccd9Lb6oeJ8yHpUs/8LcnGjFUUQYmOG9A5BNLybRdCzGw0PeUrtBxsIR8bfiur6uSW4OvPkVDoYH06z6/N9+w== + dependencies: + accepts "^1.3.7" + content-type "^1.0.4" + http-errors "^1.7.3" + raw-body "^2.4.1" + +express@^4.17.1: + version "4.17.1" + resolved "https://registry.yarnpkg.com/express/-/express-4.17.1.tgz#4491fc38605cf51f8629d39c2b5d026f98a4c134" + integrity sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g== + dependencies: + accepts "~1.3.7" + array-flatten "1.1.1" + body-parser "1.19.0" + content-disposition "0.5.3" + content-type "~1.0.4" + cookie "0.4.0" + cookie-signature "1.0.6" + debug "2.6.9" + depd "~1.1.2" + encodeurl "~1.0.2" + escape-html "~1.0.3" + etag "~1.8.1" + finalhandler "~1.1.2" + fresh "0.5.2" + merge-descriptors "1.0.1" + methods "~1.1.2" + on-finished "~2.3.0" + parseurl "~1.3.3" + path-to-regexp "0.1.7" + proxy-addr "~2.0.5" + qs "6.7.0" + range-parser "~1.2.1" + safe-buffer "5.1.2" + send "0.17.1" + serve-static "1.14.1" + setprototypeof "1.1.1" + statuses "~1.5.0" + type-is "~1.6.18" + utils-merge "1.0.1" + vary "~1.1.2" + +ext@^1.1.2: + version "1.4.0" + resolved "https://registry.yarnpkg.com/ext/-/ext-1.4.0.tgz#89ae7a07158f79d35517882904324077e4379244" + integrity sha512-Key5NIsUxdqKg3vIsdw9dSuXpPCQ297y6wBjL30edxwPgt2E44WcWBZey/ZvUc6sERLTxKdyCu4gZFmUbk1Q7A== + dependencies: + type "^2.0.0" + +extend-shallow@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" + integrity sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8= + dependencies: + is-extendable "^0.1.0" + +extend-shallow@^3.0.0, extend-shallow@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8" + integrity sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg= + dependencies: + assign-symbols "^1.0.0" + is-extendable "^1.0.1" + +extend@^3.0.0, extend@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" + integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== + +external-editor@^2.0.4: + version "2.2.0" + resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-2.2.0.tgz#045511cfd8d133f3846673d1047c154e214ad3d5" + integrity sha512-bSn6gvGxKt+b7+6TKEv1ZycHleA7aHhRHyAqJyp5pbUFuYYNIzpZnQDk7AsYckyWdEnTeAnay0aCy2aV6iTk9A== + dependencies: + chardet "^0.4.0" + iconv-lite "^0.4.17" + tmp "^0.0.33" + +external-editor@^3.0.3: + version "3.1.0" + resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-3.1.0.tgz#cb03f740befae03ea4d283caed2741a83f335495" + integrity sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew== + dependencies: + chardet "^0.7.0" + iconv-lite "^0.4.24" + tmp "^0.0.33" + +extglob@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" + integrity sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw== + dependencies: + array-unique "^0.3.2" + define-property "^1.0.0" + expand-brackets "^2.1.4" + extend-shallow "^2.0.1" + fragment-cache "^0.2.1" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + +fast-deep-equal@^3.1.1: + version "3.1.3" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" + integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== + +fast-glob@^3.0.3, fast-glob@^3.1.1: + version "3.2.4" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.4.tgz#d20aefbf99579383e7f3cc66529158c9b98554d3" + integrity sha512-kr/Oo6PX51265qeuCYsyGypiO5uJFgBS0jksyG7FUeCyQzNwYnzrNIMR1NXfkZXsMYXYLRAHgISHBz8gQcxKHQ== + dependencies: + "@nodelib/fs.stat" "^2.0.2" + "@nodelib/fs.walk" "^1.2.3" + glob-parent "^5.1.0" + merge2 "^1.3.0" + micromatch "^4.0.2" + picomatch "^2.2.1" + +fast-json-stable-stringify@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" + integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== + +fast-levenshtein@^2.0.6, fast-levenshtein@~2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" + integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= + +fastest-levenshtein@^1.0.12: + version "1.0.12" + resolved "https://registry.yarnpkg.com/fastest-levenshtein/-/fastest-levenshtein-1.0.12.tgz#9990f7d3a88cc5a9ffd1f1745745251700d497e2" + integrity sha512-On2N+BpYJ15xIC974QNVuYGMOlEVt4s0EOI3wwMqOmK1fdDY+FN/zltPV8vosq4ad4c/gJ1KHScUn/6AWIgiow== + +fastparse@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/fastparse/-/fastparse-1.1.2.tgz#91728c5a5942eced8531283c79441ee4122c35a9" + integrity sha512-483XLLxTVIwWK3QTrMGRqUfUpoOs/0hbQrl2oz4J0pAcm3A3bu84wxTFqGqkJzewCLdME38xJLJAxBABfQT8sQ== + +fastq@^1.6.0: + version "1.9.0" + resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.9.0.tgz#e16a72f338eaca48e91b5c23593bcc2ef66b7947" + integrity sha512-i7FVWL8HhVY+CTkwFxkN2mk3h+787ixS5S63eb78diVRc1MCssarHq3W5cj0av7YDSwmaV928RNag+U1etRQ7w== + dependencies: + reusify "^1.0.4" + +faye-websocket@^0.10.0: + version "0.10.0" + resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.10.0.tgz#4e492f8d04dfb6f89003507f6edbf2d501e7c6f4" + integrity sha1-TkkvjQTftviQA1B/btvy1QHnxvQ= + dependencies: + websocket-driver ">=0.5.1" + +faye-websocket@~0.11.0, faye-websocket@~0.11.1: + version "0.11.3" + resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.11.3.tgz#5c0e9a8968e8912c286639fde977a8b209f2508e" + integrity sha512-D2y4bovYpzziGgbHYtGCMjlJM36vAl/y+xUyn1C+FVx8szd1E+86KwVw6XvYSzOP8iMpm1X0I4xJD+QtUb36OA== + dependencies: + websocket-driver ">=0.5.1" + +fd@~0.0.2: + version "0.0.3" + resolved "https://registry.yarnpkg.com/fd/-/fd-0.0.3.tgz#b3240de86dbf5a345baae7382a07d4713566ff0c" + integrity sha512-iAHrIslQb3U68OcMSP0kkNWabp7sSN6d2TBSb2JO3gcLJVDd4owr/hKM4SFJovFOUeeXeItjYgouEDTMWiVAnA== + +figgy-pudding@^3.5.1: + version "3.5.2" + resolved "https://registry.yarnpkg.com/figgy-pudding/-/figgy-pudding-3.5.2.tgz#b4eee8148abb01dcf1d1ac34367d59e12fa61d6e" + integrity sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw== + +figures@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/figures/-/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962" + integrity sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI= + dependencies: + escape-string-regexp "^1.0.5" + +figures@^3.0.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/figures/-/figures-3.2.0.tgz#625c18bd293c604dc4a8ddb2febf0c88341746af" + integrity sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg== + dependencies: + escape-string-regexp "^1.0.5" + +file-entry-cache@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-5.0.1.tgz#ca0f6efa6dd3d561333fb14515065c2fafdf439c" + integrity sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g== + dependencies: + flat-cache "^2.0.1" + +file-loader@^1.1.11: + version "1.1.11" + resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-1.1.11.tgz#6fe886449b0f2a936e43cabaac0cdbfb369506f8" + integrity sha512-TGR4HU7HUsGg6GCOPJnFk06RhWgEWFLAGWiT6rcD+GRC2keU3s9RGJ+b3Z6/U73jwwNb2gKLJ7YCrp+jvU4ALg== + dependencies: + loader-utils "^1.0.2" + schema-utils "^0.4.5" + +file-type@^12.4.2: + version "12.4.2" + resolved "https://registry.yarnpkg.com/file-type/-/file-type-12.4.2.tgz#a344ea5664a1d01447ee7fb1b635f72feb6169d9" + integrity sha512-UssQP5ZgIOKelfsaB5CuGAL+Y+q7EmONuiwF3N5HAH0t27rvrttgi6Ra9k/+DVaY9UF6+ybxu5pOXLUdA8N7Vg== + +file-uri-to-path@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" + integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw== + +filesize@3.5.11: + version "3.5.11" + resolved "https://registry.yarnpkg.com/filesize/-/filesize-3.5.11.tgz#1919326749433bb3cf77368bd158caabcc19e9ee" + integrity sha512-ZH7loueKBoDb7yG9esn1U+fgq7BzlzW6NRi5/rMdxIZ05dj7GFD/Xc5rq2CDt5Yq86CyfSYVyx4242QQNZbx1g== + +fill-range@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" + integrity sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc= + dependencies: + extend-shallow "^2.0.1" + is-number "^3.0.0" + repeat-string "^1.6.1" + to-regex-range "^2.1.0" + +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" + +finalhandler@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.2.tgz#b7e7d000ffd11938d0fdb053506f6ebabe9f587d" + integrity sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA== + dependencies: + debug "2.6.9" + encodeurl "~1.0.2" + escape-html "~1.0.3" + on-finished "~2.3.0" + parseurl "~1.3.3" + statuses "~1.5.0" + unpipe "~1.0.0" + +find-cache-dir@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-0.1.1.tgz#c8defae57c8a52a8a784f9e31c57c742e993a0b9" + integrity sha1-yN765XyKUqinhPnjHFfHQumToLk= + dependencies: + commondir "^1.0.1" + mkdirp "^0.5.1" + pkg-dir "^1.0.0" + +find-cache-dir@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-2.1.0.tgz#8d0f94cd13fe43c6c7c261a0d86115ca918c05f7" + integrity sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ== + dependencies: + commondir "^1.0.1" + make-dir "^2.0.0" + pkg-dir "^3.0.0" + +find-cache-dir@^3.3.1: + version "3.3.1" + resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-3.3.1.tgz#89b33fad4a4670daa94f855f7fbe31d6d84fe880" + integrity sha512-t2GDMt3oGC/v+BMwzmllWDuJF/xcDtE5j/fCGbqDD7OLuJkj0cfh1YSA5VKPvwMeLFLNDBkwOKZ2X85jGLVftQ== + dependencies: + commondir "^1.0.1" + make-dir "^3.0.2" + pkg-dir "^4.1.0" + +find-up@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f" + integrity sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8= + dependencies: + path-exists "^2.0.0" + pinkie-promise "^2.0.0" + +find-up@^2.0.0, find-up@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" + integrity sha1-RdG35QbHF93UgndaK3eSCjwMV6c= + dependencies: + locate-path "^2.0.0" + +find-up@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" + integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== + dependencies: + locate-path "^3.0.0" + +find-up@^4.0.0, find-up@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" + integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== + dependencies: + locate-path "^5.0.0" + path-exists "^4.0.0" + +flat-cache@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-2.0.1.tgz#5d296d6f04bda44a4630a301413bdbc2ec085ec0" + integrity sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA== + dependencies: + flatted "^2.0.0" + rimraf "2.6.3" + write "1.0.3" + +flatted@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/flatted/-/flatted-2.0.2.tgz#4575b21e2bcee7434aa9be662f4b7b5f9c2b5138" + integrity sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA== + +flush-write-stream@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/flush-write-stream/-/flush-write-stream-1.1.1.tgz#8dd7d873a1babc207d94ead0c2e0e44276ebf2e8" + integrity sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w== + dependencies: + inherits "^2.0.3" + readable-stream "^2.3.6" + +follow-redirects@1.5.10: + version "1.5.10" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.5.10.tgz#7b7a9f9aea2fdff36786a94ff643ed07f4ff5e2a" + integrity sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ== + dependencies: + debug "=3.1.0" + +follow-redirects@^1.0.0, follow-redirects@^1.10.0: + version "1.13.0" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.13.0.tgz#b42e8d93a2a7eea5ed88633676d6597bc8e384db" + integrity sha512-aq6gF1BEKje4a9i9+5jimNFIpq4Q1WiwBToeRK5NvZBd/TRsmW8BsJfOEGkr76TbOyPVD3OVDN910EcUNtRYEA== + +for-in@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" + integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA= + +form-data@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-3.0.0.tgz#31b7e39c85f1355b7139ee0c647cf0de7f83c682" + integrity sha512-CKMFDglpbMi6PyN+brwB9Q/GOw0eAnsrEZDgcsH5Krhz5Od/haKHAX0NmQfha2zPPz0JpWzA7GJHGSnvCRLWsg== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.8" + mime-types "^2.1.12" + +forwarded@~0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.2.tgz#98c23dab1175657b8c0573e8ceccd91b0ff18c84" + integrity sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ= + +fragment-cache@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" + integrity sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk= + dependencies: + map-cache "^0.2.2" + +fresh@0.5.2: + version "0.5.2" + resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" + integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac= + +from2@^2.1.0, from2@^2.1.1: + version "2.3.0" + resolved "https://registry.yarnpkg.com/from2/-/from2-2.3.0.tgz#8bfb5502bde4a4d36cfdeea007fcca21d7e382af" + integrity sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8= + dependencies: + inherits "^2.0.1" + readable-stream "^2.0.0" + +fs-exists-cached@1.0.0, fs-exists-cached@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs-exists-cached/-/fs-exists-cached-1.0.0.tgz#cf25554ca050dc49ae6656b41de42258989dcbce" + integrity sha1-zyVVTKBQ3EmuZla0HeQiWJidy84= + +fs-extra@9.0.1: + version "9.0.1" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.0.1.tgz#910da0062437ba4c39fedd863f1675ccfefcb9fc" + integrity sha512-h2iAoN838FqAFJY2/qVpzFXy+EBxfVE220PalAqQLDVsFOHLJrZvut5puAbCdNv6WJk+B8ihI+k0c7JK5erwqQ== + dependencies: + at-least-node "^1.0.0" + graceful-fs "^4.2.0" + jsonfile "^6.0.1" + universalify "^1.0.0" + +fs-extra@^8.0.1, fs-extra@^8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-8.1.0.tgz#49d43c45a88cd9677668cb7be1b46efdb8d2e1c0" + integrity sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g== + dependencies: + graceful-fs "^4.2.0" + jsonfile "^4.0.0" + universalify "^0.1.0" + +fs-minipass@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-2.1.0.tgz#7f5036fdbf12c63c169190cbe4199c852271f9fb" + integrity sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg== + dependencies: + minipass "^3.0.0" + +fs-write-stream-atomic@^1.0.8: + version "1.0.10" + resolved "https://registry.yarnpkg.com/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz#b47df53493ef911df75731e70a9ded0189db40c9" + integrity sha1-tH31NJPvkR33VzHnCp3tAYnbQMk= + dependencies: + graceful-fs "^4.1.2" + iferr "^0.1.5" + imurmurhash "^0.1.4" + readable-stream "1 || 2" + +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@^1.2.7: + version "1.2.13" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.13.tgz#f325cb0455592428bcf11b383370ef70e3bfcc38" + integrity sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw== + dependencies: + bindings "^1.5.0" + nan "^2.12.1" + +fsevents@~2.1.2: + version "2.1.3" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.1.3.tgz#fb738703ae8d2f9fe900c33836ddebee8b97f23e" + integrity sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ== + +function-bind@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" + integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== + +functional-red-black-tree@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" + integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= + +gatsby-cli@^2.12.114: + version "2.12.114" + resolved "https://registry.yarnpkg.com/gatsby-cli/-/gatsby-cli-2.12.114.tgz#49019eeb4b11a9fb0514eb3a2f1d89c584c03025" + integrity sha512-5VH1GUvdrDkjAHjWN8H+xzCdbkCZjuTDeqXXaXoH3e4MnTjb1YAiX+RrQqJY9fhUVo51hdCGlddWZwANdYoWog== + dependencies: + "@babel/code-frame" "^7.10.4" + "@hapi/joi" "^15.1.1" + "@types/common-tags" "^1.8.0" + better-opn "^2.0.0" + chalk "^2.4.2" + clipboardy "^2.3.0" + common-tags "^1.8.0" + configstore "^5.0.1" + convert-hrtime "^3.0.0" + envinfo "^7.7.3" + execa "^3.4.0" + fs-exists-cached "^1.0.0" + fs-extra "^8.1.0" + gatsby-core-utils "^1.3.23" + gatsby-recipes "^0.2.35" + gatsby-telemetry "^1.3.38" + hosted-git-info "^3.0.6" + is-valid-path "^0.1.1" + lodash "^4.17.20" + meant "^1.0.2" + node-fetch "^2.6.1" + opentracing "^0.14.4" + pretty-error "^2.1.1" + progress "^2.0.3" + prompts "^2.3.2" + redux "^4.0.5" + resolve-cwd "^3.0.0" + semver "^7.3.2" + signal-exit "^3.0.3" + source-map "0.7.3" + stack-trace "^0.0.10" + strip-ansi "^5.2.0" + update-notifier "^4.1.3" + uuid "3.4.0" + yargs "^15.4.1" + yoga-layout-prebuilt "^1.9.6" + yurnalist "^1.1.2" + +gatsby-core-utils@^1.3.23: + version "1.3.23" + resolved "https://registry.yarnpkg.com/gatsby-core-utils/-/gatsby-core-utils-1.3.23.tgz#5d99e86178b2aa3561f58fde4fdffbebecb0dd0c" + integrity sha512-H6n6dDeRZ22HAJaBUIt5YjB/BSaE8Jq+kayMUv/YzL1RL2yFZ5lqcLwIL1OE2vWk1mQjMUBZCRxLODU0q1i3bQ== + dependencies: + ci-info "2.0.0" + configstore "^5.0.1" + fs-extra "^8.1.0" + node-object-hash "^2.0.0" + proper-lockfile "^4.1.1" + tmp "^0.2.1" + xdg-basedir "^4.0.0" + +gatsby-graphiql-explorer@^0.4.15: + version "0.4.15" + resolved "https://registry.yarnpkg.com/gatsby-graphiql-explorer/-/gatsby-graphiql-explorer-0.4.15.tgz#3a2a8d09cba4bdd1c37695b80f71b9ef9983206e" + integrity sha512-Mo6wo6EX3pIL7ErKI0yJIfJw9iYDZyPyEsCQJDhcxymhqf1x0d8DRGDjyJDndDBiSuSUfgdBrHz/MKh3ZOZnAg== + dependencies: + "@babel/runtime" "^7.11.2" + +gatsby-legacy-polyfills@^0.0.6: + version "0.0.6" + resolved "https://registry.yarnpkg.com/gatsby-legacy-polyfills/-/gatsby-legacy-polyfills-0.0.6.tgz#7a28e8a01c3e5aaa9aed8a23e10d3d3ae5bd3453" + integrity sha512-23O0orFhu1zkCluIFBs8pu8psfyyWquczfRk2NNdT2x4wW/HkZEjonWM5AkM6kjzZL9JrVCAZEgL4qf9OjgUoA== + dependencies: + core-js-compat "^3.6.5" + +gatsby-link@^2.4.16: + version "2.4.16" + resolved "https://registry.yarnpkg.com/gatsby-link/-/gatsby-link-2.4.16.tgz#e0dda6c6e8450412dca94989f8d3d583d3734b83" + integrity sha512-wsccuSOIAjhRDQRKmIj2+FUNR94QEBnELki0giN+lLKvWB3EO8mXjTIccXC0bMpe8VQcBlv3DHpUo72EAkkFAg== + dependencies: + "@babel/runtime" "^7.11.2" + "@types/reach__router" "^1.3.6" + prop-types "^15.7.2" + +gatsby-page-utils@^0.2.29: + version "0.2.29" + resolved "https://registry.yarnpkg.com/gatsby-page-utils/-/gatsby-page-utils-0.2.29.tgz#eadaa4c57a7a281d53fc9236272e16c718edc8e5" + integrity sha512-0xN3kBNd7PNwsJB1lJrsy7hEJbIIBcvnmbxGTplGenmGnOMoJqK6kEfM5Ru5dWBdSmwHrS+kcihFi0ZiGxpoww== + dependencies: + "@babel/runtime" "^7.11.2" + bluebird "^3.7.2" + chokidar "^3.4.3" + fs-exists-cached "^1.0.0" + gatsby-core-utils "^1.3.23" + glob "^7.1.6" + lodash "^4.17.20" + micromatch "^4.0.2" + +gatsby-plugin-anchor-links@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/gatsby-plugin-anchor-links/-/gatsby-plugin-anchor-links-1.1.1.tgz#6a04441f5acc42768447dc6c12474630520a9f90" + integrity sha512-mgSHUAEa7RRWD/lcmJVUWD9mIT14EIJvMPcxJ1W2Ev+rNuqBBpk1j4vDWy1uxas+qusi0vrtZ4HdU7mse12qDw== + dependencies: + scroll-to-element "^2.0.3" + +gatsby-plugin-feed@2.6.0: + version "2.6.0" + resolved "https://registry.yarnpkg.com/gatsby-plugin-feed/-/gatsby-plugin-feed-2.6.0.tgz#b5b1cf428011b457e31419e978614c6436740921" + integrity sha512-BxsFwp5tJVew4Asf6NOP2ebhonjBDL0CuQT5HaRzuDjBj9N1/Bc5VRfYQpFy25wj+qQ5CMm5rJWkNGVVwl9//A== + dependencies: + "@babel/runtime" "^7.11.2" + "@hapi/joi" "^15.1.1" + common-tags "^1.8.0" + fs-extra "^8.1.0" + gatsby-plugin-utils "^0.2.40" + lodash.merge "^4.6.2" + rss "^1.2.2" + +gatsby-plugin-google-analytics@2.4.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/gatsby-plugin-google-analytics/-/gatsby-plugin-google-analytics-2.4.0.tgz#7c2d0dbb93910129518d325083ac740b756e2819" + integrity sha512-NKgYyICCo94OZ8SxoBEMxfRiJTRLBTYDIGkzhS+Dlzqt46T5UZARNcaPFqARw9/OdMf7FDUJ+6FSUqJoLKLNbg== + dependencies: + "@babel/runtime" "^7.11.2" + minimatch "3.0.4" + +gatsby-plugin-less@4.0.6: + version "4.0.6" + resolved "https://registry.yarnpkg.com/gatsby-plugin-less/-/gatsby-plugin-less-4.0.6.tgz#58d0d4e6a34bf3971b865a0dac3cee09734656da" + integrity sha512-82tCyb+AkseoPqQSaVvBPzNb2pNccP6jmp22yvIMFRi4P2dO4kxIOcl0zio27J7+1f4kqSSQla8bZTDxoQoISw== + dependencies: + "@babel/runtime" "^7.11.2" + less-loader "^6.2.0" + +gatsby-plugin-page-creator@^2.3.34: + version "2.3.34" + resolved "https://registry.yarnpkg.com/gatsby-plugin-page-creator/-/gatsby-plugin-page-creator-2.3.34.tgz#4b76a63e3c68d0b8b4901cd778dff37d29f3813b" + integrity sha512-/rFG/ye4m0JJ8NAxTObkKKD8098KOVGE+dZrgBx9I3VN1TcKru0HprVe1xj679HBgKjjNUvchXZbhLl5I+2o4A== + dependencies: + "@babel/traverse" "^7.11.5" + "@sindresorhus/slugify" "^1.1.0" + chokidar "^3.4.2" + fs-exists-cached "^1.0.0" + gatsby-page-utils "^0.2.29" + globby "^11.0.1" + graphql "^14.7.0" + lodash "^4.17.20" + +gatsby-plugin-react-helmet@3.3.14: + version "3.3.14" + resolved "https://registry.yarnpkg.com/gatsby-plugin-react-helmet/-/gatsby-plugin-react-helmet-3.3.14.tgz#6eac5854e24d008352742783fe68817b18e24151" + integrity sha512-5GsIVZIVOax2V9g1UL8row1TG3p2zPY2I+8Rq52H0R5xD9QoMTPde2Q4N0Y2td+qzfRdcfkbSj/kokK2I5owPw== + dependencies: + "@babel/runtime" "^7.11.2" + +gatsby-plugin-typescript@^2.5.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/gatsby-plugin-typescript/-/gatsby-plugin-typescript-2.5.0.tgz#b7daacff18da2926bf7f6a3251785356bec20c52" + integrity sha512-AGsUvjh/iiX5zo5cR88Rsj0da20oOVgzQK9bidMoDa42tjbskiu7oq6hl6NBo8TCuLeoHvf/enxXF1aByU7JGw== + dependencies: + "@babel/core" "^7.11.6" + "@babel/plugin-proposal-nullish-coalescing-operator" "^7.10.4" + "@babel/plugin-proposal-numeric-separator" "^7.10.4" + "@babel/plugin-proposal-optional-chaining" "^7.11.0" + "@babel/preset-typescript" "^7.10.4" + "@babel/runtime" "^7.11.2" + babel-plugin-remove-graphql-queries "^2.9.20" + +gatsby-plugin-utils@^0.2.40: + version "0.2.40" + resolved "https://registry.yarnpkg.com/gatsby-plugin-utils/-/gatsby-plugin-utils-0.2.40.tgz#20e997d10efb9a0368270f79ce2e6001346f6336" + integrity sha512-RKjmpPhmi8TDR9hAKxmD4ZJMje3BLs6nt6mxMWT0F8gf5giCYEywplJikyCvaPfuyaFlq1hMmFaVvzmeZNussg== + dependencies: + joi "^17.2.1" + +gatsby-plugin-webfonts@1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/gatsby-plugin-webfonts/-/gatsby-plugin-webfonts-1.1.3.tgz#429bed411e1be861920cb0963f2376fc75aa4b4f" + integrity sha512-L9BwptbT1i3bBv4ZAgDt10br/cpdosecRttm1TLzsQdiqt02uKjaP2tr4qLjUlEzu4YQQ8d8394Rm3ZCnvO8cA== + dependencies: + axios "^0.19.0" + cssnano "^4.1.10" + fs-extra "^8.0.1" + lodash.isempty "^4.4.0" + postcss "^7.0.17" + postcss-js "^2.0.1" + +gatsby-react-router-scroll@^3.0.15: + version "3.0.15" + resolved "https://registry.yarnpkg.com/gatsby-react-router-scroll/-/gatsby-react-router-scroll-3.0.15.tgz#0d081941f63894a3b6f2e7c2986091e187875bbd" + integrity sha512-7tmpFuRZhP3QnONC4bMmV9lA032J2aYms5MkcAUVP6EGY3ZCNqbod+EFBECJS1R3tkqhtQLKWmooFSGxPulxog== + dependencies: + "@babel/runtime" "^7.11.2" + +gatsby-recipes@^0.2.35: + version "0.2.35" + resolved "https://registry.yarnpkg.com/gatsby-recipes/-/gatsby-recipes-0.2.35.tgz#e123c837010f191b6c42a28f222211ddfded76ce" + integrity sha512-qAddi9cZoDSYnwgII3NSuQ7LvF3oVguucKtxu6xa8LO3iEMhb/8XW9eIMmrANRpICxRvAaIUpeQO28+Yql3gRQ== + dependencies: + "@babel/core" "^7.11.6" + "@babel/generator" "^7.11.6" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-proposal-optional-chaining" "^7.11.0" + "@babel/plugin-transform-react-jsx" "^7.10.4" + "@babel/standalone" "^7.11.6" + "@babel/template" "^7.10.4" + "@babel/types" "^7.11.5" + "@graphql-tools/schema" "^6.0.14" + "@graphql-tools/utils" "^6.0.14" + "@hapi/hoek" "8.x.x" + "@hapi/joi" "^15.1.1" + better-queue "^3.8.10" + chokidar "^3.4.2" + contentful-management "^5.26.3" + cors "^2.8.5" + debug "^4.1.1" + detect-port "^1.3.0" + dotenv "^8.2.0" + execa "^4.0.2" + express "^4.17.1" + express-graphql "^0.9.0" + fs-extra "^8.1.0" + gatsby-core-utils "^1.3.23" + gatsby-telemetry "^1.3.38" + glob "^7.1.6" + graphql "^14.6.0" + graphql-compose "^6.3.8" + graphql-subscriptions "^1.1.0" + graphql-type-json "^0.3.2" + hicat "^0.7.0" + is-binary-path "^2.1.0" + is-url "^1.2.4" + jest-diff "^25.5.0" + lock "^1.0.0" + lodash "^4.17.20" + mitt "^1.2.0" + mkdirp "^0.5.1" + node-fetch "^2.5.0" + pkg-dir "^4.2.0" + prettier "^2.0.5" + prop-types "^15.6.1" + remark-mdx "^2.0.0-next.4" + remark-mdxjs "^2.0.0-next.4" + remark-parse "^6.0.3" + remark-stringify "^8.1.0" + resolve-cwd "^3.0.0" + resolve-from "^5.0.0" + semver "^7.3.2" + single-trailing-newline "^1.0.0" + strip-ansi "^6.0.0" + style-to-object "^0.3.0" + unified "^8.4.2" + unist-util-remove "^2.0.0" + unist-util-visit "^2.0.2" + uuid "3.4.0" + ws "^7.3.0" + xstate "^4.9.1" + yoga-layout-prebuilt "^1.9.6" + +gatsby-source-filesystem@2.4.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/gatsby-source-filesystem/-/gatsby-source-filesystem-2.4.0.tgz#6401d03684977a5a2239c67b6be717358f6efd89" + integrity sha512-YfWSsF1x7vjj2uk3XI9Qldo+iO0TmbcgwX5XBEJJgIg8p3v43EZ1gCj0JGIyYyhvfmUaf5SQgFH03Yt3GURRyQ== + dependencies: + "@babel/runtime" "^7.11.2" + better-queue "^3.8.10" + chokidar "^3.4.2" + file-type "^12.4.2" + fs-extra "^8.1.0" + gatsby-core-utils "^1.3.23" + got "^9.6.0" + md5-file "^5.0.0" + mime "^2.4.6" + pretty-bytes "^5.4.1" + progress "^2.0.3" + read-chunk "^3.2.0" + valid-url "^1.0.9" + xstate "^4.13.0" + +gatsby-telemetry@^1.3.38: + version "1.3.38" + resolved "https://registry.yarnpkg.com/gatsby-telemetry/-/gatsby-telemetry-1.3.38.tgz#1c6a81ac8cca7117c09577fa2f4c8dd12573c14e" + integrity sha512-8AoSNzVgrtPJ0Jgd+cPSuVGj2uBCXI2aJ2ANokOVjPbZO/Z+Z9hcOFdU+AkeBdZWCHaJaX0+qpE6KbgkwBoWPA== + dependencies: + "@babel/code-frame" "^7.10.4" + "@babel/runtime" "^7.11.2" + "@turist/fetch" "^7.1.7" + "@turist/time" "^0.0.1" + async-retry-ng "^2.0.1" + boxen "^4.2.0" + configstore "^5.0.1" + envinfo "^7.7.3" + fs-extra "^8.1.0" + gatsby-core-utils "^1.3.23" + git-up "^4.0.2" + is-docker "^2.1.1" + lodash "^4.17.20" + node-fetch "^2.6.1" + uuid "3.4.0" + +gatsby-transformer-remark@2.9.0: + version "2.9.0" + resolved "https://registry.yarnpkg.com/gatsby-transformer-remark/-/gatsby-transformer-remark-2.9.0.tgz#0c460e1eebdd0926219ed906a71f0f0bd7521c23" + integrity sha512-9dahd3SZ7R+wcURPEWQ8DmYqiTwzJ66ikW9O2G/HVRVF3Nu64GdegiKMretjR2lY6P9OBWZovjUUGpFPTbejkQ== + dependencies: + "@babel/runtime" "^7.11.2" + bluebird "^3.7.2" + gatsby-core-utils "^1.3.23" + gray-matter "^4.0.2" + hast-util-raw "^4.0.0" + hast-util-to-html "^4.0.1" + lodash "^4.17.20" + mdast-util-to-hast "^3.0.4" + mdast-util-to-string "^1.1.0" + mdast-util-toc "^5.0" + remark "^10.0.1" + remark-parse "^6.0.3" + remark-retext "^3.1.3" + remark-stringify "6.0.4" + retext-english "^3.0.4" + sanitize-html "^1.27.5" + underscore.string "^3.3.5" + unified "^6.2.0" + unist-util-remove-position "^1.1.4" + unist-util-select "^1.5.0" + unist-util-visit "^1.4.1" + +gatsby@2.25.0: + version "2.25.0" + resolved "https://registry.yarnpkg.com/gatsby/-/gatsby-2.25.0.tgz#9ea8a3d52c1377a3443427303ed8be2595109b8a" + integrity sha512-rOmxdcGkiVB48ClYFHYsGHp/SvW8spHX9gsEjwMU/HLcVMhLoyKZgcOyaWDRpq1IPNKMjMVWAHngsPJGdAp8fw== + dependencies: + "@babel/code-frame" "^7.10.4" + "@babel/core" "^7.11.6" + "@babel/parser" "^7.11.5" + "@babel/runtime" "^7.11.2" + "@babel/traverse" "^7.11.5" + "@babel/types" "^7.11.5" + "@hapi/joi" "^15.1.1" + "@mikaelkristiansson/domready" "^1.0.10" + "@nodelib/fs.walk" "^1.2.4" + "@pieh/friendly-errors-webpack-plugin" "1.7.0-chalk-2" + "@pmmmwh/react-refresh-webpack-plugin" "^0.4.1" + "@reach/router" "^1.3.4" + "@types/http-proxy" "^1.17.4" + "@typescript-eslint/eslint-plugin" "^2.24.0" + "@typescript-eslint/parser" "^2.24.0" + address "1.1.2" + autoprefixer "^9.8.4" + axios "^0.20.0" + babel-core "7.0.0-bridge.0" + babel-eslint "^10.1.0" + babel-loader "^8.1.0" + babel-plugin-add-module-exports "^0.3.3" + babel-plugin-dynamic-import-node "^2.3.3" + babel-plugin-lodash "3.3.4" + babel-plugin-remove-graphql-queries "^2.9.20" + babel-preset-gatsby "^0.5.15" + better-opn "^2.0.0" + better-queue "^3.8.10" + bluebird "^3.7.2" + body-parser "^1.19.0" + browserslist "^4.12.2" + cache-manager "^2.11.1" + cache-manager-fs-hash "^0.0.9" + chalk "^2.4.2" + chokidar "^3.4.2" + common-tags "^1.8.0" + compression "^1.7.4" + convert-hrtime "^3.0.0" + copyfiles "^2.3.0" + core-js "^3.6.5" + cors "^2.8.5" + css-loader "^1.0.1" + date-fns "^2.14.0" + debug "^3.2.6" + del "^5.1.0" + detect-port "^1.3.0" + devcert "^1.1.3" + dotenv "^8.2.0" + eslint "^6.8.0" + eslint-config-react-app "^5.2.1" + eslint-loader "^2.2.1" + eslint-plugin-flowtype "^3.13.0" + eslint-plugin-graphql "^4.0.0" + eslint-plugin-import "^2.22.0" + eslint-plugin-jsx-a11y "^6.3.1" + eslint-plugin-react "^7.20.6" + eslint-plugin-react-hooks "^1.7.0" + event-source-polyfill "^1.0.15" + execa "^4.0.3" + express "^4.17.1" + express-graphql "^0.9.0" + fastest-levenshtein "^1.0.12" + file-loader "^1.1.11" + find-cache-dir "^3.3.1" + fs-exists-cached "1.0.0" + fs-extra "^8.1.0" + gatsby-cli "^2.12.114" + gatsby-core-utils "^1.3.23" + gatsby-graphiql-explorer "^0.4.15" + gatsby-legacy-polyfills "^0.0.6" + gatsby-link "^2.4.16" + gatsby-plugin-page-creator "^2.3.34" + gatsby-plugin-typescript "^2.5.0" + gatsby-plugin-utils "^0.2.40" + gatsby-react-router-scroll "^3.0.15" + gatsby-telemetry "^1.3.38" + glob "^7.1.6" + got "8.3.2" + graphql "^14.6.0" + graphql-compose "^6.3.8" + graphql-playground-middleware-express "^1.7.18" + hasha "^5.2.0" + http-proxy "^1.18.1" + invariant "^2.2.4" + is-relative "^1.0.0" + is-relative-url "^3.0.0" + jest-worker "^24.9.0" + joi "^17.2.1" + json-loader "^0.5.7" + json-stringify-safe "^5.0.1" + latest-version "5.1.0" + lodash "^4.17.20" + md5-file "^5.0.0" + meant "^1.0.1" + micromatch "^4.0.2" + mime "^2.4.6" + mini-css-extract-plugin "^0.11.2" + mitt "^1.2.0" + mkdirp "^0.5.1" + moment "^2.27.0" + name-all-modules-plugin "^1.0.1" + normalize-path "^3.0.0" + null-loader "^3.0.0" + opentracing "^0.14.4" + optimize-css-assets-webpack-plugin "^5.0.3" + p-defer "^3.0.0" + parseurl "^1.3.3" + physical-cpu-count "^2.0.0" + pnp-webpack-plugin "^1.6.4" + postcss-flexbugs-fixes "^4.2.1" + postcss-loader "^3.0.0" + prompts "^2.3.2" + prop-types "^15.7.2" + query-string "^6.13.1" + raw-loader "^0.5.1" + react-dev-utils "^4.2.3" + react-error-overlay "^6.0.7" + react-hot-loader "^4.12.21" + react-refresh "^0.8.3" + redux "^4.0.5" + redux-thunk "^2.3.0" + semver "^7.3.2" + shallow-compare "^1.2.2" + signal-exit "^3.0.3" + slugify "^1.4.4" + socket.io "^2.3.0" + socket.io-client "2.3.0" + st "^2.0.0" + stack-trace "^0.0.10" + string-similarity "^1.2.2" + style-loader "^0.23.1" + terser-webpack-plugin "^2.3.8" + tmp "^0.2.1" + "true-case-path" "^2.2.1" + type-of "^2.0.1" + url-loader "^1.1.2" + util.promisify "^1.0.1" + uuid "3.4.0" + v8-compile-cache "^1.1.2" + webpack "^4.44.1" + webpack-dev-middleware "^3.7.2" + webpack-dev-server "^3.11.0" + webpack-hot-middleware "^2.25.0" + webpack-merge "^4.2.2" + webpack-stats-plugin "^0.3.2" + webpack-virtual-modules "^0.2.2" + xstate "^4.11.0" + yaml-loader "^0.6.0" + +gensync@^1.0.0-beta.1: + version "1.0.0-beta.2" + resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" + integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== + +get-caller-file@^2.0.1: + version "2.0.5" + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" + integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== + +get-intrinsic@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.0.1.tgz#94a9768fcbdd0595a1c9273aacf4c89d075631be" + integrity sha512-ZnWP+AmS1VUaLgTRy47+zKtjTxz+0xMpx3I52i+aalBK1QP19ggLF3Db89KJX7kjfOfP2eoa01qc++GwPgufPg== + dependencies: + function-bind "^1.1.1" + has "^1.0.3" + has-symbols "^1.0.1" + +get-port@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/get-port/-/get-port-3.2.0.tgz#dd7ce7de187c06c8bf353796ac71e099f0980ebc" + integrity sha1-3Xzn3hh8Bsi/NTeWrHHgmfCYDrw= + +get-stdin@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-4.0.1.tgz#b968c6b0a04384324902e8bf1a5df32579a450fe" + integrity sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4= + +get-stream@3.0.0, get-stream@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14" + integrity sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ= + +get-stream@^4.0.0, get-stream@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" + integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w== + dependencies: + pump "^3.0.0" + +get-stream@^5.0.0, get-stream@^5.1.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3" + integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA== + dependencies: + pump "^3.0.0" + +get-value@^2.0.3, get-value@^2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" + integrity sha1-3BXKHGcjh8p2vTesCjlbogQqLCg= + +git-up@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/git-up/-/git-up-4.0.2.tgz#10c3d731051b366dc19d3df454bfca3f77913a7c" + integrity sha512-kbuvus1dWQB2sSW4cbfTeGpCMd8ge9jx9RKnhXhuJ7tnvT+NIrTVfYZxjtflZddQYcmdOTlkAcjmx7bor+15AQ== + dependencies: + is-ssh "^1.3.0" + parse-url "^5.0.0" + +github-slugger@^1.2.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/github-slugger/-/github-slugger-1.3.0.tgz#9bd0a95c5efdfc46005e82a906ef8e2a059124c9" + integrity sha512-gwJScWVNhFYSRDvURk/8yhcFBee6aFjye2a7Lhb2bUyRulpIoek9p0I9Kt7PT67d/nUlZbFu8L9RLiA0woQN8Q== + dependencies: + emoji-regex ">=6.0.0 <=6.1.1" + +glob-parent@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae" + integrity sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4= + dependencies: + is-glob "^3.1.0" + path-dirname "^1.0.0" + +glob-parent@^5.0.0, glob-parent@^5.1.0, glob-parent@~5.1.0: + version "5.1.1" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.1.tgz#b6c1ef417c4e5663ea498f1c45afac6916bbc229" + integrity sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ== + dependencies: + is-glob "^4.0.1" + +glob@^7.0.3, glob@^7.0.5, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, 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" + +global-dirs@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-2.0.1.tgz#acdf3bb6685bcd55cb35e8a052266569e9469201" + integrity sha512-5HqUqdhkEovj2Of/ms3IeS/EekcO54ytHRLV4PEY2rhRwrHXLQjeVEES0Lhka0xwNDtGYn58wyC4s5+MHsOO6A== + dependencies: + ini "^1.3.5" + +global-modules@1.0.0, global-modules@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-1.0.0.tgz#6d770f0eb523ac78164d72b5e71a8877265cc3ea" + integrity sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg== + dependencies: + global-prefix "^1.0.1" + is-windows "^1.0.1" + resolve-dir "^1.0.0" + +global-prefix@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-1.0.2.tgz#dbf743c6c14992593c655568cb66ed32c0122ebe" + integrity sha1-2/dDxsFJklk8ZVVoy2btMsASLr4= + dependencies: + expand-tilde "^2.0.2" + homedir-polyfill "^1.0.1" + ini "^1.3.4" + is-windows "^1.0.1" + which "^1.2.14" + +global@^4.3.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/global/-/global-4.4.0.tgz#3e7b105179006a323ed71aafca3e9c57a5cc6406" + integrity sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w== + dependencies: + min-document "^2.19.0" + process "^0.11.10" + +globals@^11.1.0: + version "11.12.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" + integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== + +globals@^12.1.0: + version "12.4.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-12.4.0.tgz#a18813576a41b00a24a97e7f815918c2e19925f8" + integrity sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg== + dependencies: + type-fest "^0.8.1" + +globby@11.0.1, globby@^11.0.1: + version "11.0.1" + resolved "https://registry.yarnpkg.com/globby/-/globby-11.0.1.tgz#9a2bf107a068f3ffeabc49ad702c79ede8cfd357" + integrity sha512-iH9RmgwCmUJHi2z5o2l3eTtGBtXek1OYlHrbcxOYugyHLmAsZrPj43OtHThd62Buh/Vv6VyCBD2bdyWcGNQqoQ== + dependencies: + array-union "^2.1.0" + dir-glob "^3.0.1" + fast-glob "^3.1.1" + ignore "^5.1.4" + merge2 "^1.3.0" + slash "^3.0.0" + +globby@^10.0.1: + version "10.0.2" + resolved "https://registry.yarnpkg.com/globby/-/globby-10.0.2.tgz#277593e745acaa4646c3ab411289ec47a0392543" + integrity sha512-7dUi7RvCoT/xast/o/dLN53oqND4yk0nsHkhRgn9w65C4PofCLOoJ39iSOg+qVDdWQPIEj+eszMHQ+aLVwwQSg== + dependencies: + "@types/glob" "^7.1.1" + array-union "^2.1.0" + dir-glob "^3.0.1" + fast-glob "^3.0.3" + glob "^7.1.3" + ignore "^5.1.1" + merge2 "^1.2.3" + slash "^3.0.0" + +globby@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/globby/-/globby-6.1.0.tgz#f5a6d70e8395e21c858fb0489d64df02424d506c" + integrity sha1-9abXDoOV4hyFj7BInWTfAkJNUGw= + dependencies: + array-union "^1.0.1" + glob "^7.0.3" + object-assign "^4.0.1" + pify "^2.0.0" + pinkie-promise "^2.0.0" + +good-listener@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/good-listener/-/good-listener-1.2.2.tgz#d53b30cdf9313dffb7dc9a0d477096aa6d145c50" + integrity sha1-1TswzfkxPf+33JoNR3CWqm0UXFA= + dependencies: + delegate "^3.1.2" + +got@8.3.2: + version "8.3.2" + resolved "https://registry.yarnpkg.com/got/-/got-8.3.2.tgz#1d23f64390e97f776cac52e5b936e5f514d2e937" + integrity sha512-qjUJ5U/hawxosMryILofZCkm3C84PLJS/0grRIpjAwu+Lkxxj5cxeCU25BG0/3mDSpXKTyZr8oh8wIgLaH0QCw== + dependencies: + "@sindresorhus/is" "^0.7.0" + cacheable-request "^2.1.1" + decompress-response "^3.3.0" + duplexer3 "^0.1.4" + get-stream "^3.0.0" + into-stream "^3.1.0" + is-retry-allowed "^1.1.0" + isurl "^1.0.0-alpha5" + lowercase-keys "^1.0.0" + mimic-response "^1.0.0" + p-cancelable "^0.4.0" + p-timeout "^2.0.1" + pify "^3.0.0" + safe-buffer "^5.1.1" + timed-out "^4.0.1" + url-parse-lax "^3.0.0" + url-to-options "^1.0.1" + +got@^9.6.0: + version "9.6.0" + resolved "https://registry.yarnpkg.com/got/-/got-9.6.0.tgz#edf45e7d67f99545705de1f7bbeeeb121765ed85" + integrity sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q== + dependencies: + "@sindresorhus/is" "^0.14.0" + "@szmarczak/http-timer" "^1.1.2" + cacheable-request "^6.0.0" + decompress-response "^3.3.0" + duplexer3 "^0.1.4" + get-stream "^4.1.0" + lowercase-keys "^1.0.1" + mimic-response "^1.0.1" + p-cancelable "^1.0.0" + to-readable-stream "^1.0.0" + url-parse-lax "^3.0.0" + +graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.2, graceful-fs@^4.2.3: + version "4.2.4" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.4.tgz#2256bde14d3632958c465ebc96dc467ca07a29fb" + integrity sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw== + +graphql-compose@^6.3.8: + version "6.3.8" + resolved "https://registry.yarnpkg.com/graphql-compose/-/graphql-compose-6.3.8.tgz#9f82a85d5001a83adf1f7c4d3b5e5f72c432a062" + integrity sha512-o0/jzQEMIpSjryLKwmD1vGrCubiPxD0LxlGTgWDSu38TBepu2GhugC9gYgTEbtiCZAHPtvkZ90SzzABOWZyQLA== + dependencies: + graphql-type-json "^0.2.4" + object-path "^0.11.4" + +graphql-config@^3.0.2: + version "3.0.3" + resolved "https://registry.yarnpkg.com/graphql-config/-/graphql-config-3.0.3.tgz#58907c65ed7d6e04132321450b60e57863ea9a5f" + integrity sha512-MBY0wEjvcgJtZUyoqpPvOE1e5qPI0hJaa1gKTqjonSFiCsNHX2lykNjpOPcodmAgH1V06ELxhGnm9kcVzqvi/g== + dependencies: + "@graphql-tools/graphql-file-loader" "^6.0.0" + "@graphql-tools/json-file-loader" "^6.0.0" + "@graphql-tools/load" "^6.0.0" + "@graphql-tools/merge" "^6.0.0" + "@graphql-tools/url-loader" "^6.0.0" + "@graphql-tools/utils" "^6.0.0" + cosmiconfig "6.0.0" + minimatch "3.0.4" + string-env-interpolation "1.0.1" + tslib "^2.0.0" + +graphql-language-service-interface@^2.4.2: + version "2.4.2" + resolved "https://registry.yarnpkg.com/graphql-language-service-interface/-/graphql-language-service-interface-2.4.2.tgz#77b868c0dad8f18908ff5c6a7a1706d43370bd40" + integrity sha512-iFLMz51cA2L5Tu7/mP19++bRGUuIe2J9ekQZrcJ6sMYStsF60x5eNu3JqheduYTLhQaSdKN55jX7RlLeIDUhQA== + dependencies: + graphql-language-service-parser "^1.6.4" + graphql-language-service-types "^1.6.3" + graphql-language-service-utils "^2.4.3" + vscode-languageserver-types "^3.15.1" + +graphql-language-service-parser@^1.6.4: + version "1.6.4" + resolved "https://registry.yarnpkg.com/graphql-language-service-parser/-/graphql-language-service-parser-1.6.4.tgz#d5b92db1e50a91cdcf7f54f79253e13455e20257" + integrity sha512-Y365zUFfJ1GJ9NeRHb5Z/HBo6EnbuTi187Gkuldwd1YIDc0QcD7kqz6U5g043zd7BI/UZQth13Zd7pElvbb2zw== + dependencies: + graphql-language-service-types "^1.6.3" + typescript "^3.9.5" + +graphql-language-service-types@^1.6.3: + version "1.6.3" + resolved "https://registry.yarnpkg.com/graphql-language-service-types/-/graphql-language-service-types-1.6.3.tgz#1a6ba25140ec9ffc6d7f36eca7a4069e91500f3d" + integrity sha512-VDtBhdan1iSe7ad7+eBbsO5rrzWQpC6aV4SxSHEi8AtEQOFXpnL9Lq5jSaN8O02pGvAUr4wNUPu0oRU5g2XmVA== + +graphql-language-service-utils@^2.4.3: + version "2.4.3" + resolved "https://registry.yarnpkg.com/graphql-language-service-utils/-/graphql-language-service-utils-2.4.3.tgz#e4f4d1a7e950dcc5ada2456096c88ad5b2bab9f2" + integrity sha512-XSCMKsV4GuVSGdW8RJTpO/IJDMXgESDJLu67SAuXFXwfel84j1gWrsmBAUeu6Di6NUEoM9NOCEtJv3LbU+/8qw== + dependencies: + graphql-language-service-types "^1.6.3" + +graphql-playground-html@^1.6.29: + version "1.6.29" + resolved "https://registry.yarnpkg.com/graphql-playground-html/-/graphql-playground-html-1.6.29.tgz#5b0c60a0161cc0f3116085f64c5a16cb3b2d9a16" + integrity sha512-fbF/zZKuw2sdfKp8gjTORJ/I9xBsqeEYRseWxBzuR15NHMptRTT9414IyRCs3ognZzUDr5MDJgx97SlLZCtQyA== + dependencies: + xss "^1.0.6" + +graphql-playground-middleware-express@^1.7.18: + version "1.7.22" + resolved "https://registry.yarnpkg.com/graphql-playground-middleware-express/-/graphql-playground-middleware-express-1.7.22.tgz#e4bbe4faaa56b48e95769c8b87b65e53355d91a4" + integrity sha512-PJLiCxLmN6Dp+dHGyHU92m9y3hB/RAkcUBWcqYl2fiP+EbpDDgNfElrsVzW60MhJe+LTV1PFqiInH2d3KNvlCQ== + dependencies: + graphql-playground-html "^1.6.29" + +graphql-subscriptions@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/graphql-subscriptions/-/graphql-subscriptions-1.1.0.tgz#5f2fa4233eda44cf7570526adfcf3c16937aef11" + integrity sha512-6WzlBFC0lWmXJbIVE8OgFgXIP4RJi3OQgTPa0DVMsDXdpRDjTsM1K9wfl5HSYX7R87QAGlvcv2Y4BIZa/ItonA== + dependencies: + iterall "^1.2.1" + +graphql-type-json@^0.2.4: + version "0.2.4" + resolved "https://registry.yarnpkg.com/graphql-type-json/-/graphql-type-json-0.2.4.tgz#545af27903e40c061edd30840a272ea0a49992f9" + integrity sha512-/tq02ayMQjrG4oDFDRLLrPk0KvJXue0nVXoItBe7uAdbNXjQUu+HYCBdAmPLQoseVzUKKMzrhq2P/sfI76ON6w== + +graphql-type-json@^0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/graphql-type-json/-/graphql-type-json-0.3.2.tgz#f53a851dbfe07bd1c8157d24150064baab41e115" + integrity sha512-J+vjof74oMlCWXSvt0DOf2APEdZOCdubEvGDUAlqH//VBYcOYsGgRW7Xzorr44LvkjiuvecWc8fChxuZZbChtg== + +graphql@15.4.0: + version "15.4.0" + resolved "https://registry.yarnpkg.com/graphql/-/graphql-15.4.0.tgz#e459dea1150da5a106486ba7276518b5295a4347" + integrity sha512-EB3zgGchcabbsU9cFe1j+yxdzKQKAbGUWRb13DsrsMN1yyfmmIq+2+L5MqVWcDCE4V89R5AyUOi7sMOGxdsYtA== + +graphql@^14.6.0, graphql@^14.7.0: + version "14.7.0" + resolved "https://registry.yarnpkg.com/graphql/-/graphql-14.7.0.tgz#7fa79a80a69be4a31c27dda824dc04dac2035a72" + integrity sha512-l0xWZpoPKpppFzMfvVyFmp9vLN7w/ZZJPefUicMCepfJeQ8sMcztloGYY9DfjVPo6tIUDzU5Hw3MUbIjj9AVVA== + dependencies: + iterall "^1.2.2" + +gray-matter@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/gray-matter/-/gray-matter-4.0.2.tgz#9aa379e3acaf421193fce7d2a28cebd4518ac454" + integrity sha512-7hB/+LxrOjq/dd8APlK0r24uL/67w7SkYnfwhNFwg/VDIGWGmduTDYf3WNstLW2fbbmRwrDGCVSJ2isuf2+4Hw== + dependencies: + js-yaml "^3.11.0" + kind-of "^6.0.2" + section-matter "^1.0.0" + strip-bom-string "^1.0.0" + +gud@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/gud/-/gud-1.0.0.tgz#a489581b17e6a70beca9abe3ae57de7a499852c0" + integrity sha512-zGEOVKFM5sVPPrYs7J5/hYEw2Pof8KCyOwyhG8sAF26mCAeUFAcYPu1mwB7hhpIP29zOIBaDqwuHdLp0jvZXjw== + +gzip-size@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-3.0.0.tgz#546188e9bdc337f673772f81660464b389dce520" + integrity sha1-VGGI6b3DN/Zzdy+BZgRks4nc5SA= + dependencies: + duplexer "^0.1.1" + +handle-thing@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/handle-thing/-/handle-thing-2.0.1.tgz#857f79ce359580c340d43081cc648970d0bb234e" + integrity sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg== + +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-binary2@~1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has-binary2/-/has-binary2-1.0.3.tgz#7776ac627f3ea77250cfc332dab7ddf5e4f5d11d" + integrity sha512-G1LWKhDSvhGeAQ8mPVQlqNcOB2sJdwATtZKl2pDKKHfpf/rYj24lkinxf69blJbnsvtqqNU+L3SL50vzZhXOnw== + dependencies: + isarray "2.0.1" + +has-cors@1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/has-cors/-/has-cors-1.1.0.tgz#5e474793f7ea9843d1bb99c23eef49ff126fff39" + integrity sha1-XkdHk/fqmEPRu5nCPu9J/xJv/zk= + +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= + +has-flag@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" + integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== + +has-symbol-support-x@^1.4.1: + version "1.4.2" + resolved "https://registry.yarnpkg.com/has-symbol-support-x/-/has-symbol-support-x-1.4.2.tgz#1409f98bc00247da45da67cee0a36f282ff26455" + integrity sha512-3ToOva++HaW+eCpgqZrCfN51IPB+7bJNVT6CUATzueB5Heb8o6Nam0V3HG5dlDvZU1Gn5QLcbahiKw/XVk5JJw== + +has-symbols@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.1.tgz#9f5214758a44196c406d9bd76cebf81ec2dd31e8" + integrity sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg== + +has-to-string-tag-x@^1.2.0: + version "1.4.1" + resolved "https://registry.yarnpkg.com/has-to-string-tag-x/-/has-to-string-tag-x-1.4.1.tgz#a045ab383d7b4b2012a00148ab0aa5f290044d4d" + integrity sha512-vdbKfmw+3LoOYVr+mtxHaX5a96+0f3DljYd8JOqvOLsf5mw2Otda2qCDT9qRqLAhrjyQ0h7ual5nOiASpsGNFw== + dependencies: + has-symbol-support-x "^1.4.1" + +has-value@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" + integrity sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8= + dependencies: + get-value "^2.0.3" + has-values "^0.1.4" + isobject "^2.0.0" + +has-value@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177" + integrity sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc= + dependencies: + get-value "^2.0.6" + has-values "^1.0.0" + isobject "^3.0.0" + +has-values@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771" + integrity sha1-bWHeldkd/Km5oCCJrThL/49it3E= + +has-values@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f" + integrity sha1-lbC2P+whRmGab+V/51Yo1aOe/k8= + dependencies: + is-number "^3.0.0" + kind-of "^4.0.0" + +has-yarn@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/has-yarn/-/has-yarn-2.1.0.tgz#137e11354a7b5bf11aa5cb649cf0c6f3ff2b2e77" + integrity sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw== + +has@^1.0.0, has@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" + integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== + dependencies: + function-bind "^1.1.1" + +hash-base@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.1.0.tgz#55c381d9e06e1d2997a883b4a3fddfe7f0d3af33" + integrity sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA== + dependencies: + inherits "^2.0.4" + readable-stream "^3.6.0" + safe-buffer "^5.2.0" + +hash.js@^1.0.0, hash.js@^1.0.3: + version "1.1.7" + resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42" + integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA== + dependencies: + inherits "^2.0.3" + minimalistic-assert "^1.0.1" + +hasha@^5.2.0: + version "5.2.2" + resolved "https://registry.yarnpkg.com/hasha/-/hasha-5.2.2.tgz#a48477989b3b327aea3c04f53096d816d97522a1" + integrity sha512-Hrp5vIK/xr5SkeN2onO32H0MgNZ0f17HRNH39WfL0SYUNOTZ5Lz1TJ8Pajo/87dYGEFlLMm7mIc/k/s6Bvz9HQ== + dependencies: + is-stream "^2.0.0" + type-fest "^0.8.0" + +hast-to-hyperscript@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/hast-to-hyperscript/-/hast-to-hyperscript-5.0.0.tgz#5106cbba78edb7c95e2e8a49079371eb196c1ced" + integrity sha512-DLl3eYTz8uwwzEubDUdCChsR5t5b2ne+yvHrA2h58Suq/JnN3+Gsb9Tc4iZoCCsykmFUc6UUpwxTmQXs0akSeg== + dependencies: + comma-separated-tokens "^1.0.0" + property-information "^4.0.0" + space-separated-tokens "^1.0.0" + style-to-object "^0.2.1" + unist-util-is "^2.0.0" + web-namespaces "^1.1.2" + +hast-util-from-parse5@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/hast-util-from-parse5/-/hast-util-from-parse5-4.0.2.tgz#b7164a7ffc88da4f751dc7c2f801ff8d7c143bab" + integrity sha512-I6dtjsGtDqz4fmGSiFClFyiXdKhj5bPceS6intta7k/VDuiKz9P61C6hO6WMiNNmEm1b/EtBH8f+juvz4o0uwQ== + dependencies: + ccount "^1.0.3" + hastscript "^4.0.0" + property-information "^4.0.0" + web-namespaces "^1.1.2" + xtend "^4.0.1" + +hast-util-is-element@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/hast-util-is-element/-/hast-util-is-element-1.1.0.tgz#3b3ed5159a2707c6137b48637fbfe068e175a425" + integrity sha512-oUmNua0bFbdrD/ELDSSEadRVtWZOf3iF6Lbv81naqsIV99RnSCieTbWuWCY8BAeEfKJTKl0gRdokv+dELutHGQ== + +hast-util-parse-selector@^2.2.0: + version "2.2.5" + resolved "https://registry.yarnpkg.com/hast-util-parse-selector/-/hast-util-parse-selector-2.2.5.tgz#d57c23f4da16ae3c63b3b6ca4616683313499c3a" + integrity sha512-7j6mrk/qqkSehsM92wQjdIgWM2/BW61u/53G6xmC8i1OmEdKLHbk419QKQUjz6LglWsfqoiHmyMRkP1BGjecNQ== + +hast-util-raw@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/hast-util-raw/-/hast-util-raw-4.0.0.tgz#2dc10c9facd9b810ea6ac51df251e6f87c2ed5b5" + integrity sha512-5xYHyEJMCf8lX/NT4iA5z6N43yoFsrJqXJ5GWwAbLn815URbIz+UNNFEgid33F9paZuDlqVKvB+K3Aqu5+DdSw== + dependencies: + hast-util-from-parse5 "^4.0.2" + hast-util-to-parse5 "^4.0.1" + html-void-elements "^1.0.1" + parse5 "^5.0.0" + unist-util-position "^3.0.0" + web-namespaces "^1.0.0" + xtend "^4.0.1" + zwitch "^1.0.0" + +hast-util-to-html@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/hast-util-to-html/-/hast-util-to-html-4.0.1.tgz#3666b05afb62bd69f8f5e6c94db04dea19438e2a" + integrity sha512-2emzwyf0xEsc4TBIPmDJmBttIw8R4SXAJiJZoiRR/s47ODYWgOqNoDbf2SJAbMbfNdFWMiCSOrI3OVnX6Qq2Mg== + dependencies: + ccount "^1.0.0" + comma-separated-tokens "^1.0.1" + hast-util-is-element "^1.0.0" + hast-util-whitespace "^1.0.0" + html-void-elements "^1.0.0" + property-information "^4.0.0" + space-separated-tokens "^1.0.0" + stringify-entities "^1.0.1" + unist-util-is "^2.0.0" + xtend "^4.0.1" + +hast-util-to-parse5@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/hast-util-to-parse5/-/hast-util-to-parse5-4.0.1.tgz#e52534b4bf40dc4e7d0428fcaf6d32bc75c62ee5" + integrity sha512-U/61W+fsNfBpCyJBB5Pt3l5ypIfgXqEyW9pyrtxF7XrqDJHzcFrYpnC94d0JDYjvobLpYCzcU9srhMRPEO1YXw== + dependencies: + hast-to-hyperscript "^5.0.0" + property-information "^4.0.0" + web-namespaces "^1.0.0" + xtend "^4.0.1" + zwitch "^1.0.0" + +hast-util-whitespace@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/hast-util-whitespace/-/hast-util-whitespace-1.0.4.tgz#e4fe77c4a9ae1cb2e6c25e02df0043d0164f6e41" + integrity sha512-I5GTdSfhYfAPNztx2xJRQpG8cuDSNt599/7YUn7Gx/WxNMsG+a835k97TDkFgk123cwjfwINaZknkKkphx/f2A== + +hastscript@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/hastscript/-/hastscript-4.1.0.tgz#ea5593fa6f6709101fc790ced818393ddaa045ce" + integrity sha512-bOTn9hEfzewvHyXdbYGKqOr/LOz+2zYhKbC17U2YAjd16mnjqB1BQ0nooM/RdMy/htVyli0NAznXiBtwDi1cmQ== + dependencies: + comma-separated-tokens "^1.0.0" + hast-util-parse-selector "^2.2.0" + property-information "^4.0.0" + space-separated-tokens "^1.0.0" + +hex-color-regex@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/hex-color-regex/-/hex-color-regex-1.1.0.tgz#4c06fccb4602fe2602b3c93df82d7e7dbf1a8a8e" + integrity sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ== + +hicat@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/hicat/-/hicat-0.7.0.tgz#a704cb3f57e49fbd7d38c2edd7aba38ff0b35263" + integrity sha1-pwTLP1fkn719OMLt16ujj/CzUmM= + dependencies: + highlight.js "^8.1.0" + minimist "^0.2.0" + +highlight.js@^8.1.0: + version "8.9.1" + resolved "https://registry.yarnpkg.com/highlight.js/-/highlight.js-8.9.1.tgz#b8a9c5493212a9392f0222b649c9611497ebfb88" + integrity sha1-uKnFSTISqTkvAiK2SclhFJfr+4g= + +hmac-drbg@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" + integrity sha1-0nRXAQJabHdabFRXk+1QL8DGSaE= + dependencies: + hash.js "^1.0.3" + minimalistic-assert "^1.0.0" + minimalistic-crypto-utils "^1.0.1" + +hoist-non-react-statics@^3.3.0: + version "3.3.2" + resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz#ece0acaf71d62c2969c2ec59feff42a4b1a85b45" + integrity sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw== + dependencies: + react-is "^16.7.0" + +homedir-polyfill@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz#743298cef4e5af3e194161fbadcc2151d3a058e8" + integrity sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA== + dependencies: + parse-passwd "^1.0.0" + +hosted-git-info@^2.1.4: + version "2.8.8" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.8.tgz#7539bd4bc1e0e0a895815a2e0262420b12858488" + integrity sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg== + +hosted-git-info@^3.0.6: + version "3.0.7" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-3.0.7.tgz#a30727385ea85acfcee94e0aad9e368c792e036c" + integrity sha512-fWqc0IcuXs+BmE9orLDyVykAG9GJtGLGuZAAqgcckPgv5xad4AcXGIv8galtQvlwutxSlaMcdw7BUtq2EIvqCQ== + dependencies: + lru-cache "^6.0.0" + +hpack.js@^2.1.6: + version "2.1.6" + resolved "https://registry.yarnpkg.com/hpack.js/-/hpack.js-2.1.6.tgz#87774c0949e513f42e84575b3c45681fade2a0b2" + integrity sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI= + dependencies: + inherits "^2.0.1" + obuf "^1.0.0" + readable-stream "^2.0.1" + wbuf "^1.1.0" + +hsl-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/hsl-regex/-/hsl-regex-1.0.0.tgz#d49330c789ed819e276a4c0d272dffa30b18fe6e" + integrity sha1-1JMwx4ntgZ4nakwNJy3/owsY/m4= + +hsla-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/hsla-regex/-/hsla-regex-1.0.0.tgz#c1ce7a3168c8c6614033a4b5f7877f3b225f9c38" + integrity sha1-wc56MWjIxmFAM6S194d/OyJfnDg= + +html-comment-regex@^1.1.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/html-comment-regex/-/html-comment-regex-1.1.2.tgz#97d4688aeb5c81886a364faa0cad1dda14d433a7" + integrity sha512-P+M65QY2JQ5Y0G9KKdlDpo0zK+/OHptU5AaBwUfAIDJZk1MYf32Frm84EcOytfJE0t5JvkAnKlmjsXDnWzCJmQ== + +html-entities@^1.2.0, html-entities@^1.2.1, html-entities@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-1.3.1.tgz#fb9a1a4b5b14c5daba82d3e34c6ae4fe701a0e44" + integrity sha512-rhE/4Z3hIhzHAUKbW8jVcCyuT5oJCXXqhN/6mXXVCpzTmvJnoH2HL/bt3EZ6p55jbFJBeAe1ZNpL5BugLujxNA== + +html-void-elements@^1.0.0, html-void-elements@^1.0.1: + version "1.0.5" + resolved "https://registry.yarnpkg.com/html-void-elements/-/html-void-elements-1.0.5.tgz#ce9159494e86d95e45795b166c2021c2cfca4483" + integrity sha512-uE/TxKuyNIcx44cIWnjr/rfIATDH7ZaOMmstu0CwhFG1Dunhlp4OC6/NMbhiwoq5BpW0ubi303qnEk/PZj614w== + +htmlparser2@^3.3.0: + version "3.10.1" + resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.10.1.tgz#bd679dc3f59897b6a34bb10749c855bb53a9392f" + integrity sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ== + dependencies: + domelementtype "^1.3.1" + domhandler "^2.3.0" + domutils "^1.5.1" + entities "^1.1.1" + inherits "^2.0.1" + readable-stream "^3.1.1" + +htmlparser2@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-4.1.0.tgz#9a4ef161f2e4625ebf7dfbe6c0a2f52d18a59e78" + integrity sha512-4zDq1a1zhE4gQso/c5LP1OtrhYTncXNSpvJYtWJBtXAETPlMfi3IFNjGuQbYLuVY4ZR0QMqRVvo4Pdy9KLyP8Q== + dependencies: + domelementtype "^2.0.1" + domhandler "^3.0.0" + domutils "^2.0.0" + entities "^2.0.0" + +http-cache-semantics@3.8.1: + version "3.8.1" + resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-3.8.1.tgz#39b0e16add9b605bf0a9ef3d9daaf4843b4cacd2" + integrity sha512-5ai2iksyV8ZXmnZhHH4rWPoxxistEexSi5936zIQ1bnNTW5VnA85B6P/VpXiRM017IgRvb2kKo1a//y+0wSp3w== + +http-cache-semantics@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz#49e91c5cbf36c9b94bcfcd71c23d5249ec74e390" + integrity sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ== + +http-deceiver@^1.2.7: + version "1.2.7" + resolved "https://registry.yarnpkg.com/http-deceiver/-/http-deceiver-1.2.7.tgz#fa7168944ab9a519d337cb0bec7284dc3e723d87" + integrity sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc= + +http-errors@1.7.2: + version "1.7.2" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.2.tgz#4f5029cf13239f31036e5b2e55292bcfbcc85c8f" + integrity sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg== + dependencies: + depd "~1.1.2" + inherits "2.0.3" + setprototypeof "1.1.1" + statuses ">= 1.5.0 < 2" + toidentifier "1.0.0" + +http-errors@1.7.3, http-errors@~1.7.2: + version "1.7.3" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.3.tgz#6c619e4f9c60308c38519498c14fbb10aacebb06" + integrity sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw== + dependencies: + depd "~1.1.2" + inherits "2.0.4" + setprototypeof "1.1.1" + statuses ">= 1.5.0 < 2" + toidentifier "1.0.0" + +http-errors@^1.7.3: + version "1.8.0" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.8.0.tgz#75d1bbe497e1044f51e4ee9e704a62f28d336507" + integrity sha512-4I8r0C5JDhT5VkvI47QktDW75rNlGVsUf/8hzjCC/wkWI/jdTRmBb9aI7erSG82r1bjKY3F6k28WnsVxB1C73A== + dependencies: + depd "~1.1.2" + inherits "2.0.4" + setprototypeof "1.2.0" + statuses ">= 1.5.0 < 2" + toidentifier "1.0.0" + +http-errors@~1.6.2: + version "1.6.3" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d" + integrity sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0= + dependencies: + depd "~1.1.2" + inherits "2.0.3" + setprototypeof "1.1.0" + statuses ">= 1.4.0 < 2" + +http-parser-js@>=0.5.1: + version "0.5.2" + resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.5.2.tgz#da2e31d237b393aae72ace43882dd7e270a8ff77" + integrity sha512-opCO9ASqg5Wy2FNo7A0sxy71yGbbkJJXLdgMK04Tcypw9jr2MgWbyubb0+WdmDmGnFflO7fRbqbaihh/ENDlRQ== + +http-proxy-middleware@0.19.1: + version "0.19.1" + resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-0.19.1.tgz#183c7dc4aa1479150306498c210cdaf96080a43a" + integrity sha512-yHYTgWMQO8VvwNS22eLLloAkvungsKdKTLO8AJlftYIKNfJr3GK3zK0ZCfzDDGUBttdGc8xFy1mCitvNKQtC3Q== + dependencies: + http-proxy "^1.17.0" + is-glob "^4.0.0" + lodash "^4.17.11" + micromatch "^3.1.10" + +http-proxy@^1.17.0, http-proxy@^1.18.1: + version "1.18.1" + resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.18.1.tgz#401541f0534884bbf95260334e72f88ee3976549" + integrity sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ== + dependencies: + eventemitter3 "^4.0.0" + follow-redirects "^1.0.0" + requires-port "^1.0.0" + +https-browserify@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73" + integrity sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM= + +human-signals@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-1.1.1.tgz#c5b1cd14f50aeae09ab6c59fe63ba3395fe4dfa3" + integrity sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw== + +iconv-lite@0.4.24, iconv-lite@^0.4.17, iconv-lite@^0.4.24: + version "0.4.24" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" + integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== + dependencies: + safer-buffer ">= 2.1.2 < 3" + +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= + +icss-utils@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-2.1.0.tgz#83f0a0ec378bf3246178b6c2ad9136f135b1c962" + integrity sha1-g/Cg7DeL8yRheLbCrZE28TWxyWI= + dependencies: + postcss "^6.0.1" + +ieee754@^1.1.13, ieee754@^1.1.4: + version "1.2.1" + resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" + integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== + +iferr@^0.1.5: + version "0.1.5" + resolved "https://registry.yarnpkg.com/iferr/-/iferr-0.1.5.tgz#c60eed69e6d8fdb6b3104a1fcbca1c192dc5b501" + integrity sha1-xg7taebY/bazEEofy8ocGS3FtQE= + +ignore@^4.0.6: + version "4.0.6" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" + integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== + +ignore@^5.1.1, ignore@^5.1.4: + version "5.1.8" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.1.8.tgz#f150a8b50a34289b33e22f5889abd4d8016f0e57" + integrity sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw== + +image-size@~0.5.0: + version "0.5.5" + resolved "https://registry.yarnpkg.com/image-size/-/image-size-0.5.5.tgz#09dfd4ab9d20e29eb1c3e80b8990378df9e3cb9c" + integrity sha1-Cd/Uq50g4p6xw+gLiZA3jfnjy5w= + +import-cwd@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/import-cwd/-/import-cwd-2.1.0.tgz#aa6cf36e722761285cb371ec6519f53e2435b0a9" + integrity sha1-qmzzbnInYShcs3HsZRn1PiQ1sKk= + dependencies: + import-from "^2.1.0" + +import-fresh@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-2.0.0.tgz#d81355c15612d386c61f9ddd3922d4304822a546" + integrity sha1-2BNVwVYS04bGH53dOSLUMEgipUY= + dependencies: + caller-path "^2.0.0" + resolve-from "^3.0.0" + +import-fresh@^3.0.0, import-fresh@^3.1.0: + version "3.2.2" + resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.2.2.tgz#fc129c160c5d68235507f4331a6baad186bdbc3e" + integrity sha512-cTPNrlvJT6twpYy+YmKUKrTSjWFs3bjYjAhCwm+z4EOCubZxAuO+hHpRN64TqjEaYSHs7tJAE0w1CKMGmsG/lw== + dependencies: + parent-module "^1.0.0" + resolve-from "^4.0.0" + +import-from@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/import-from/-/import-from-3.0.0.tgz#055cfec38cd5a27d8057ca51376d7d3bf0891966" + integrity sha512-CiuXOFFSzkU5x/CR0+z7T91Iht4CXgfCxVOFRhh2Zyhg5wOpWvvDLQUsWl+gcN+QscYBjez8hDCt85O7RLDttQ== + dependencies: + resolve-from "^5.0.0" + +import-from@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/import-from/-/import-from-2.1.0.tgz#335db7f2a7affd53aaa471d4b8021dee36b7f3b1" + integrity sha1-M1238qev/VOqpHHUuAId7ja387E= + dependencies: + resolve-from "^3.0.0" + +import-lazy@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/import-lazy/-/import-lazy-2.1.0.tgz#05698e3d45c88e8d7e9d92cb0584e77f096f3e43" + integrity sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM= + +import-local@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/import-local/-/import-local-2.0.0.tgz#55070be38a5993cf18ef6db7e961f5bee5c5a09d" + integrity sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ== + dependencies: + pkg-dir "^3.0.0" + resolve-cwd "^2.0.0" + +imurmurhash@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" + integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= + +indent-string@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" + integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== + +indexes-of@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/indexes-of/-/indexes-of-1.0.1.tgz#f30f716c8e2bd346c7b67d3df3915566a7c05607" + integrity sha1-8w9xbI4r00bHtn0985FVZqfAVgc= + +indexof@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/indexof/-/indexof-0.0.1.tgz#82dc336d232b9062179d05ab3293a66059fd435d" + integrity sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10= + +infer-owner@^1.0.3, infer-owner@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/infer-owner/-/infer-owner-1.0.4.tgz#c4cefcaa8e51051c2a40ba2ce8a3d27295af9467" + integrity sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A== + +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.4, inherits@^2.0.0, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.1, 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== + +inherits@2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1" + integrity sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE= + +inherits@2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" + integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= + +ini@^1.3.4, ini@^1.3.5, ini@~1.3.0: + version "1.3.5" + resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" + integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw== + +inline-style-parser@0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/inline-style-parser/-/inline-style-parser-0.1.1.tgz#ec8a3b429274e9c0a1f1c4ffa9453a7fef72cea1" + integrity sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q== + +inquirer@3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-3.3.0.tgz#9dd2f2ad765dcab1ff0443b491442a20ba227dc9" + integrity sha512-h+xtnyk4EwKvFWHrUYsWErEVR+igKtLdchu+o0Z1RL7VU/jVMFbYir2bp6bAj8efFNxWqHX0dIss6fJQ+/+qeQ== + dependencies: + ansi-escapes "^3.0.0" + chalk "^2.0.0" + cli-cursor "^2.1.0" + cli-width "^2.0.0" + external-editor "^2.0.4" + figures "^2.0.0" + lodash "^4.3.0" + mute-stream "0.0.7" + run-async "^2.2.0" + rx-lite "^4.0.8" + rx-lite-aggregates "^4.0.8" + string-width "^2.1.0" + strip-ansi "^4.0.0" + through "^2.3.6" + +inquirer@^7.0.0: + version "7.3.3" + resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-7.3.3.tgz#04d176b2af04afc157a83fd7c100e98ee0aad003" + integrity sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA== + dependencies: + ansi-escapes "^4.2.1" + chalk "^4.1.0" + cli-cursor "^3.1.0" + cli-width "^3.0.0" + external-editor "^3.0.3" + figures "^3.0.0" + lodash "^4.17.19" + mute-stream "0.0.8" + run-async "^2.4.0" + rxjs "^6.6.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + through "^2.3.6" + +internal-ip@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/internal-ip/-/internal-ip-4.3.0.tgz#845452baad9d2ca3b69c635a137acb9a0dad0907" + integrity sha512-S1zBo1D6zcsyuC6PMmY5+55YMILQ9av8lotMx447Bq6SAgo/sDK6y6uUKmuYhW7eacnIhFfsPmCNYdDzsnnDCg== + dependencies: + default-gateway "^4.2.0" + ipaddr.js "^1.9.0" + +internal-slot@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.2.tgz#9c2e9fb3cd8e5e4256c6f45fe310067fcfa378a3" + integrity sha512-2cQNfwhAfJIkU4KZPkDI+Gj5yNNnbqi40W9Gge6dfnk4TocEVm00B3bdiL+JINrbGJil2TeHvM4rETGzk/f/0g== + dependencies: + es-abstract "^1.17.0-next.1" + has "^1.0.3" + side-channel "^1.0.2" + +into-stream@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/into-stream/-/into-stream-3.1.0.tgz#96fb0a936c12babd6ff1752a17d05616abd094c6" + integrity sha1-lvsKk2wSur1v8XUqF9BWFqvQlMY= + dependencies: + from2 "^2.1.1" + p-is-promise "^1.1.0" + +invariant@^2.2.0, invariant@^2.2.3, invariant@^2.2.4: + version "2.2.4" + resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" + integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA== + dependencies: + loose-envify "^1.0.0" + +ip-regex@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-2.1.0.tgz#fa78bf5d2e6913c911ce9f819ee5146bb6d844e9" + integrity sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk= + +ip@^1.1.0, ip@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a" + integrity sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo= + +ipaddr.js@1.9.1, ipaddr.js@^1.9.0: + version "1.9.1" + resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" + integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== + +is-absolute-url@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-2.1.0.tgz#50530dfb84fcc9aa7dbe7852e83a37b93b9f2aa6" + integrity sha1-UFMN+4T8yap9vnhS6Do3uTufKqY= + +is-absolute-url@^3.0.0, is-absolute-url@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-3.0.3.tgz#96c6a22b6a23929b11ea0afb1836c36ad4a5d698" + integrity sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q== + +is-accessor-descriptor@^0.1.6: + version "0.1.6" + resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" + integrity sha1-qeEss66Nh2cn7u84Q/igiXtcmNY= + dependencies: + kind-of "^3.0.2" + +is-accessor-descriptor@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656" + integrity sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ== + dependencies: + kind-of "^6.0.0" + +is-alphabetical@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-alphabetical/-/is-alphabetical-1.0.4.tgz#9e7d6b94916be22153745d184c298cbf986a686d" + integrity sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg== + +is-alphanumeric@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-alphanumeric/-/is-alphanumeric-1.0.0.tgz#4a9cef71daf4c001c1d81d63d140cf53fd6889f4" + integrity sha1-Spzvcdr0wAHB2B1j0UDPU/1oifQ= + +is-alphanumerical@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz#7eb9a2431f855f6b1ef1a78e326df515696c4dbf" + integrity sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A== + dependencies: + is-alphabetical "^1.0.0" + is-decimal "^1.0.0" + +is-arguments@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.0.4.tgz#3faf966c7cba0ff437fb31f6250082fcf0448cf3" + integrity sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA== + +is-arrayish@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" + integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= + +is-arrayish@^0.3.1: + version "0.3.2" + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.3.2.tgz#4574a2ae56f7ab206896fb431eaeed066fdf8f03" + integrity sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ== + +is-binary-path@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898" + integrity sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg= + dependencies: + binary-extensions "^1.0.0" + +is-binary-path@^2.1.0, 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.4, 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-buffer@^2.0.0: + version "2.0.4" + resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.4.tgz#3e572f23c8411a5cfd9557c849e3665e0b290623" + integrity sha512-Kq1rokWXOPXWuaMAqZiJW4XxsmD9zGx9q4aePabbn3qCRGedtH7Cm+zV8WETitMfu1wdh+Rvd6w5egwSngUX2A== + +is-builtin-module@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-3.0.0.tgz#137d3d2425023a19a660fb9dd6ddfabe52c03466" + integrity sha512-/93sDihsAD652hrMEbJGbMAVBf1qc96kyThHQ0CAOONHaE3aROLpTjDe4WQ5aoC5ITHFxEq1z8XqSU7km+8amw== + dependencies: + builtin-modules "^3.0.0" + +is-callable@^1.1.4, is-callable@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.2.tgz#c7c6715cd22d4ddb48d3e19970223aceabb080d9" + integrity sha512-dnMqspv5nU3LoewK2N/y7KLtxtakvTuaCsU9FU50/QDmdbHNy/4/JuRtMHqRU22o3q+W89YQndQEeCVwK+3qrA== + +is-ci@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-2.0.0.tgz#6bc6334181810e04b5c22b3d589fdca55026404c" + integrity sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w== + dependencies: + ci-info "^2.0.0" + +is-color-stop@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-color-stop/-/is-color-stop-1.1.0.tgz#cfff471aee4dd5c9e158598fbe12967b5cdad345" + integrity sha1-z/9HGu5N1cnhWFmPvhKWe1za00U= + dependencies: + css-color-names "^0.0.4" + hex-color-regex "^1.1.0" + hsl-regex "^1.0.0" + hsla-regex "^1.0.0" + rgb-regex "^1.0.1" + rgba-regex "^1.0.0" + +is-core-module@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.0.0.tgz#58531b70aed1db7c0e8d4eb1a0a2d1ddd64bd12d" + integrity sha512-jq1AH6C8MuteOoBPwkxHafmByhL9j5q4OaPGdbuD+ZtQJVzH+i6E3BJDQcBA09k57i2Hh2yQbEG8yObZ0jdlWw== + dependencies: + has "^1.0.3" + +is-data-descriptor@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" + integrity sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y= + dependencies: + kind-of "^3.0.2" + +is-data-descriptor@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7" + integrity sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ== + dependencies: + kind-of "^6.0.0" + +is-date-object@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.2.tgz#bda736f2cd8fd06d32844e7743bfa7494c3bfd7e" + integrity sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g== + +is-decimal@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-decimal/-/is-decimal-1.0.4.tgz#65a3a5958a1c5b63a706e1b333d7cd9f630d3fa5" + integrity sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw== + +is-descriptor@^0.1.0: + version "0.1.6" + resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca" + integrity sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg== + dependencies: + is-accessor-descriptor "^0.1.6" + is-data-descriptor "^0.1.4" + kind-of "^5.0.0" + +is-descriptor@^1.0.0, is-descriptor@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec" + integrity sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg== + dependencies: + is-accessor-descriptor "^1.0.0" + is-data-descriptor "^1.0.0" + kind-of "^6.0.2" + +is-directory@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/is-directory/-/is-directory-0.3.1.tgz#61339b6f2475fc772fd9c9d83f5c8575dc154ae1" + integrity sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE= + +is-docker@^2.0.0, is-docker@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.1.1.tgz#4125a88e44e450d384e09047ede71adc2d144156" + integrity sha512-ZOoqiXfEwtGknTiuDEy8pN2CfE3TxMHprvNer1mXiqwkOT77Rw3YVrUQ52EqAOU3QAWDQ+bQdx7HJzrv7LS2Hw== + +is-extendable@^0.1.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-extendable@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4" + integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA== + dependencies: + is-plain-object "^2.0.4" + +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.0, 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-fullwidth-code-point@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" + integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= + +is-fullwidth-code-point@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" + integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== + +is-glob@4.0.1, is-glob@^4.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-glob@^2.0.0: + 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@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" + integrity sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo= + dependencies: + is-extglob "^2.1.0" + +is-hexadecimal@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz#cc35c97588da4bd49a8eedd6bc4082d44dcb23a7" + integrity sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw== + +is-installed-globally@^0.3.1: + version "0.3.2" + resolved "https://registry.yarnpkg.com/is-installed-globally/-/is-installed-globally-0.3.2.tgz#fd3efa79ee670d1187233182d5b0a1dd00313141" + integrity sha512-wZ8x1js7Ia0kecP/CHM/3ABkAmujX7WPvQk6uu3Fly/Mk44pySulQpnHG46OMjHGXApINnV4QhY3SWnECO2z5g== + dependencies: + global-dirs "^2.0.1" + is-path-inside "^3.0.1" + +is-invalid-path@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/is-invalid-path/-/is-invalid-path-0.1.0.tgz#307a855b3cf1a938b44ea70d2c61106053714f34" + integrity sha1-MHqFWzzxqTi0TqcNLGEQYFNxTzQ= + dependencies: + is-glob "^2.0.0" + +is-negative-zero@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.0.tgz#9553b121b0fac28869da9ed459e20c7543788461" + integrity sha1-lVOxIbD6wohp2p7UWeIMdUN4hGE= + +is-npm@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/is-npm/-/is-npm-4.0.0.tgz#c90dd8380696df87a7a6d823c20d0b12bbe3c84d" + integrity sha512-96ECIfh9xtDDlPylNPXhzjsykHsMJZ18ASpaWzQyBr4YRTcVjUvzaHayDAES2oU/3KpljhHUjtSRNiDwi0F0ig== + +is-number@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" + integrity sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU= + dependencies: + kind-of "^3.0.2" + +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@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-2.0.0.tgz#473fb05d973705e3fd9620545018ca8e22ef4982" + integrity sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w== + +is-object@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-object/-/is-object-1.0.1.tgz#8952688c5ec2ffd6b03ecc85e769e02903083470" + integrity sha1-iVJojF7C/9awPsyF52ngKQMINHA= + +is-path-cwd@^2.0.0, is-path-cwd@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-2.2.0.tgz#67d43b82664a7b5191fd9119127eb300048a9fdb" + integrity sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ== + +is-path-in-cwd@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz#bfe2dca26c69f397265a4009963602935a053acb" + integrity sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ== + dependencies: + is-path-inside "^2.1.0" + +is-path-inside@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-2.1.0.tgz#7c9810587d659a40d27bcdb4d5616eab059494b2" + integrity sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg== + dependencies: + path-is-inside "^1.0.2" + +is-path-inside@^3.0.1: + version "3.0.2" + resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.2.tgz#f5220fc82a3e233757291dddc9c5877f2a1f3017" + integrity sha512-/2UGPSgmtqwo1ktx8NDHjuPwZWmHhO+gj0f93EkhLB5RgW9RZevWYYlIkS6zePc6U2WpOdQYIwHe9YC4DWEBVg== + +is-plain-obj@^1.0.0, is-plain-obj@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" + integrity sha1-caUMhCnfync8kqOQpKA7OfzVHT4= + +is-plain-obj@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-2.1.0.tgz#45e42e37fccf1f40da8e5f76ee21515840c09287" + integrity sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA== + +is-plain-object@^2.0.3, is-plain-object@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" + integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== + dependencies: + isobject "^3.0.1" + +is-promise@4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-4.0.0.tgz#42ff9f84206c1991d26debf520dd5c01042dd2f3" + integrity sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ== + +is-regex@^1.0.4, is-regex@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.1.tgz#c6f98aacc546f6cec5468a07b7b153ab564a57b9" + integrity sha512-1+QkEcxiLlB7VEyFtyBg94e08OAsvq7FUBgApTq/w2ymCLyKJgDPsybBENVtA7XCQEgEXxKPonG+mvYRxh/LIg== + dependencies: + has-symbols "^1.0.1" + +is-relative-url@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-relative-url/-/is-relative-url-3.0.0.tgz#f623c8e26baa5bd3742b3b7ec074f50f3b45b3f3" + integrity sha512-U1iSYRlY2GIMGuZx7gezlB5dp1Kheaym7zKzO1PV06mOihiWTXejLwm4poEJysPyXF+HtK/BEd0DVlcCh30pEA== + dependencies: + is-absolute-url "^3.0.0" + +is-relative@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-relative/-/is-relative-1.0.0.tgz#a1bb6935ce8c5dba1e8b9754b9b2dcc020e2260d" + integrity sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA== + dependencies: + is-unc-path "^1.0.0" + +is-resolvable@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-resolvable/-/is-resolvable-1.1.0.tgz#fb18f87ce1feb925169c9a407c19318a3206ed88" + integrity sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg== + +is-retry-allowed@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/is-retry-allowed/-/is-retry-allowed-1.2.0.tgz#d778488bd0a4666a3be8a1482b9f2baafedea8b4" + integrity sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg== + +is-root@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-root/-/is-root-1.0.0.tgz#07b6c233bc394cd9d02ba15c966bd6660d6342d5" + integrity sha1-B7bCM7w5TNnQK6FclmvWZg1jQtU= + +is-ssh@^1.3.0: + version "1.3.2" + resolved "https://registry.yarnpkg.com/is-ssh/-/is-ssh-1.3.2.tgz#a4b82ab63d73976fd8263cceee27f99a88bdae2b" + integrity sha512-elEw0/0c2UscLrNG+OAorbP539E3rhliKPg+hDMWN9VwrDXfYK+4PBEykDPfxlYYtQvl84TascnQyobfQLHEhQ== + dependencies: + protocols "^1.1.0" + +is-stream@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" + integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ= + +is-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.0.tgz#bde9c32680d6fae04129d6ac9d921ce7815f78e3" + integrity sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw== + +is-string@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.5.tgz#40493ed198ef3ff477b8c7f92f644ec82a5cd3a6" + integrity sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ== + +is-svg@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-svg/-/is-svg-3.0.0.tgz#9321dbd29c212e5ca99c4fa9794c714bcafa2f75" + integrity sha512-gi4iHK53LR2ujhLVVj+37Ykh9GLqYHX6JOVXbLAucaG/Cqw9xwdFOjDM2qeifLs1sF1npXXFvDu0r5HNgCMrzQ== + dependencies: + html-comment-regex "^1.1.0" + +is-symbol@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.3.tgz#38e1014b9e6329be0de9d24a414fd7441ec61937" + integrity sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ== + dependencies: + has-symbols "^1.0.1" + +is-typedarray@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" + integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= + +is-unc-path@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-unc-path/-/is-unc-path-1.0.0.tgz#d731e8898ed090a12c352ad2eaed5095ad322c9d" + integrity sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ== + dependencies: + unc-path-regex "^0.1.2" + +is-url@^1.2.4: + version "1.2.4" + resolved "https://registry.yarnpkg.com/is-url/-/is-url-1.2.4.tgz#04a4df46d28c4cff3d73d01ff06abeb318a1aa52" + integrity sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww== + +is-valid-path@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/is-valid-path/-/is-valid-path-0.1.1.tgz#110f9ff74c37f663e1ec7915eb451f2db93ac9df" + integrity sha1-EQ+f90w39mPh7HkV60UfLbk6yd8= + dependencies: + is-invalid-path "^0.1.0" + +is-whitespace-character@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-whitespace-character/-/is-whitespace-character-1.0.4.tgz#0858edd94a95594c7c9dd0b5c174ec6e45ee4aa7" + integrity sha512-SDweEzfIZM0SJV0EUga669UTKlmL0Pq8Lno0QDQsPnvECB3IM2aP0gdx5TrU0A01MAPfViaZiI2V1QMZLaKK5w== + +is-windows@^1.0.1, is-windows@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" + integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== + +is-word-character@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-word-character/-/is-word-character-1.0.4.tgz#ce0e73216f98599060592f62ff31354ddbeb0230" + integrity sha512-5SMO8RVennx3nZrqtKwCGyyetPE9VDba5ugvKLaD4KopPG5kR4mQ7tNt/r7feL5yt5h3lpuBbIUmCOG2eSzXHA== + +is-wsl@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d" + integrity sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0= + +is-wsl@^2.1.1: + version "2.2.0" + resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271" + integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== + dependencies: + is-docker "^2.0.0" + +is-yarn-global@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/is-yarn-global/-/is-yarn-global-0.3.0.tgz#d502d3382590ea3004893746754c89139973e232" + integrity sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw== + +isarray@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" + integrity sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8= + +isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" + integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= + +isarray@2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.1.tgz#a37d94ed9cda2d59865c9f76fe596ee1f338741e" + integrity sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4= + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= + +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" + +isobject@^3.0.0, isobject@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" + integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= + +isurl@^1.0.0-alpha5: + version "1.0.0" + resolved "https://registry.yarnpkg.com/isurl/-/isurl-1.0.0.tgz#b27f4f49f3cdaa3ea44a0a5b7f3462e6edc39d67" + integrity sha512-1P/yWsxPlDtn7QeRD+ULKQPaIaN6yF368GZ2vDfv0AL0NwpStafjWCDDdn0k8wgFMWpVAqG7oJhxHnlud42i9w== + dependencies: + has-to-string-tag-x "^1.2.0" + is-object "^1.0.1" + +iterall@^1.2.1, iterall@^1.2.2: + version "1.3.0" + resolved "https://registry.yarnpkg.com/iterall/-/iterall-1.3.0.tgz#afcb08492e2915cbd8a0884eb93a8c94d0d72fea" + integrity sha512-QZ9qOMdF+QLHxy1QIpUHUU1D5pS2CG2P69LF6L6CPjPYA/XMOmKV3PZpawHoAjHNyB0swdVTRxdYT4tbBbxqwg== + +jest-diff@^25.5.0: + version "25.5.0" + resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-25.5.0.tgz#1dd26ed64f96667c068cef026b677dfa01afcfa9" + integrity sha512-z1kygetuPiREYdNIumRpAHY6RXiGmp70YHptjdaxTWGmA085W3iCnXNx0DhflK3vwrKmrRWyY1wUpkPMVxMK7A== + dependencies: + chalk "^3.0.0" + diff-sequences "^25.2.6" + jest-get-type "^25.2.6" + pretty-format "^25.5.0" + +jest-get-type@^25.2.6: + version "25.2.6" + resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-25.2.6.tgz#0b0a32fab8908b44d508be81681487dbabb8d877" + integrity sha512-DxjtyzOHjObRM+sM1knti6or+eOgcGU4xVSb2HNP1TqO4ahsT+rqZg+nyqHWJSvWgKC5cG3QjGFBqxLghiF/Ig== + +jest-worker@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-24.9.0.tgz#5dbfdb5b2d322e98567898238a9697bcce67b3e5" + integrity sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw== + dependencies: + merge-stream "^2.0.0" + supports-color "^6.1.0" + +jest-worker@^25.4.0: + version "25.5.0" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-25.5.0.tgz#2611d071b79cea0f43ee57a3d118593ac1547db1" + integrity sha512-/dsSmUkIy5EBGfv/IjjqmFxrNAUpBERfGs1oHROyD7yxjG/w+t0GOJDX8O1k32ySmd7+a5IhnJU2qQFcJ4n1vw== + dependencies: + merge-stream "^2.0.0" + supports-color "^7.0.0" + +joi@^17.2.1: + version "17.3.0" + resolved "https://registry.yarnpkg.com/joi/-/joi-17.3.0.tgz#f1be4a6ce29bc1716665819ac361dfa139fff5d2" + integrity sha512-Qh5gdU6niuYbUIUV5ejbsMiiFmBdw8Kcp8Buj2JntszCkCfxJ9Cz76OtHxOZMPXrt5810iDIXs+n1nNVoquHgg== + dependencies: + "@hapi/hoek" "^9.0.0" + "@hapi/topo" "^5.0.0" + "@sideway/address" "^4.1.0" + "@sideway/formula" "^3.0.0" + "@sideway/pinpoint" "^2.0.0" + +"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" + integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== + +js-tokens@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" + integrity sha1-mGbfOVECEw449/mWvOtlRDIJwls= + +js-yaml@^3.11.0, js-yaml@^3.13.1: + version "3.14.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.0.tgz#a7a34170f26a21bb162424d8adacb4113a69e482" + integrity sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A== + dependencies: + argparse "^1.0.7" + esprima "^4.0.0" + +jsesc@^2.5.1: + version "2.5.2" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" + integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== + +jsesc@~0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" + integrity sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0= + +json-buffer@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.0.tgz#5b1f397afc75d677bde8bcfc0e47e1f9a3d9a898" + integrity sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg= + +json-loader@^0.5.7: + version "0.5.7" + resolved "https://registry.yarnpkg.com/json-loader/-/json-loader-0.5.7.tgz#dca14a70235ff82f0ac9a3abeb60d337a365185d" + integrity sha512-QLPs8Dj7lnf3e3QYS1zkCo+4ZwqOiF9d/nZnYozTISxXWCfNs9yuky5rJw4/W34s7POaNlbZmQGaB5NiXCbP4w== + +json-parse-better-errors@^1.0.1, json-parse-better-errors@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" + integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== + +json-parse-even-better-errors@^2.3.0: + version "2.3.1" + resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" + integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== + +json-schema-traverse@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" + integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== + +json-stable-stringify-without-jsonify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" + integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= + +json-stringify-safe@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" + integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= + +json3@^3.3.2: + version "3.3.3" + resolved "https://registry.yarnpkg.com/json3/-/json3-3.3.3.tgz#7fc10e375fc5ae42c4705a5cc0aa6f62be305b81" + integrity sha512-c7/8mbUsKigAbLkD5B010BK4D9LZm7A1pNItkEwiUZRpIN66exu/e7YQWysGun+TRKaJp8MhemM+VkfWv42aCA== + +json5@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe" + integrity sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow== + dependencies: + minimist "^1.2.0" + +json5@^2.1.2: + version "2.1.3" + resolved "https://registry.yarnpkg.com/json5/-/json5-2.1.3.tgz#c9b0f7fa9233bfe5807fe66fcf3a5617ed597d43" + integrity sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA== + dependencies: + minimist "^1.2.5" + +jsonfile@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" + integrity sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss= + optionalDependencies: + graceful-fs "^4.1.6" + +jsonfile@^6.0.1: + version "6.1.0" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae" + integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ== + dependencies: + universalify "^2.0.0" + optionalDependencies: + graceful-fs "^4.1.6" + +jsonify@~0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73" + integrity sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM= + +"jsx-ast-utils@^2.4.1 || ^3.0.0", jsx-ast-utils@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-3.1.0.tgz#642f1d7b88aa6d7eb9d8f2210e166478444fa891" + integrity sha512-d4/UOjg+mxAWxCiF0c5UTSwyqbchkbqCvK87aBovhnh8GtysTjWmgC63tY0cJx/HzGgm9qnA147jVBdpOiQ2RA== + dependencies: + array-includes "^3.1.1" + object.assign "^4.1.1" + +keyv@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/keyv/-/keyv-3.0.0.tgz#44923ba39e68b12a7cec7df6c3268c031f2ef373" + integrity sha512-eguHnq22OE3uVoSYG0LVWNP+4ppamWr9+zWBe1bsNcovIMy6huUJFPgy4mGwCd/rnl3vOLGW1MTlu4c57CT1xA== + dependencies: + json-buffer "3.0.0" + +keyv@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/keyv/-/keyv-3.1.0.tgz#ecc228486f69991e49e9476485a5be1e8fc5c4d9" + integrity sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA== + dependencies: + json-buffer "3.0.0" + +killable@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/killable/-/killable-1.0.1.tgz#4c8ce441187a061c7474fb87ca08e2a638194892" + integrity sha512-LzqtLKlUwirEUyl/nicirVmNiPvYs7l5n8wOPP7fyJVpUPkvCnW/vuiXGpylGUlnPDnB7311rARzAt3Mhswpjg== + +kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: + 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@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" + integrity sha1-IIE989cSkosgc3hpGkUGb65y3Vc= + dependencies: + is-buffer "^1.1.5" + +kind-of@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d" + integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw== + +kind-of@^6.0.0, kind-of@^6.0.2: + 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== + +kleur@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" + integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== + +language-subtag-registry@~0.3.2: + version "0.3.21" + resolved "https://registry.yarnpkg.com/language-subtag-registry/-/language-subtag-registry-0.3.21.tgz#04ac218bea46f04cb039084602c6da9e788dd45a" + integrity sha512-L0IqwlIXjilBVVYKFT37X9Ih11Um5NEl9cbJIuU/SwP/zEEAbBPOnEeeuxVMf45ydWQRDQN3Nqc96OgbH1K+Pg== + +language-tags@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/language-tags/-/language-tags-1.0.5.tgz#d321dbc4da30ba8bf3024e040fa5c14661f9193a" + integrity sha1-0yHbxNowuovzAk4ED6XBRmH5GTo= + dependencies: + language-subtag-registry "~0.3.2" + +last-call-webpack-plugin@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/last-call-webpack-plugin/-/last-call-webpack-plugin-3.0.0.tgz#9742df0e10e3cf46e5c0381c2de90d3a7a2d7555" + integrity sha512-7KI2l2GIZa9p2spzPIVZBYyNKkN+e/SQPpnjlTiPhdbDW3F86tdKKELxKpzJ5sgU19wQWsACULZmpTPYHeWO5w== + dependencies: + lodash "^4.17.5" + webpack-sources "^1.1.0" + +latest-version@5.1.0, latest-version@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/latest-version/-/latest-version-5.1.0.tgz#119dfe908fe38d15dfa43ecd13fa12ec8832face" + integrity sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA== + dependencies: + package-json "^6.3.0" + +less-loader@^6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/less-loader/-/less-loader-6.2.0.tgz#8b26f621c155b342eefc24f5bd6e9dc40c42a719" + integrity sha512-Cl5h95/Pz/PWub/tCBgT1oNMFeH1WTD33piG80jn5jr12T4XbxZcjThwNXDQ7AG649WEynuIzO4b0+2Tn9Qolg== + dependencies: + clone "^2.1.2" + less "^3.11.3" + loader-utils "^2.0.0" + schema-utils "^2.7.0" + +less@^3.11.3: + version "3.12.2" + resolved "https://registry.yarnpkg.com/less/-/less-3.12.2.tgz#157e6dd32a68869df8859314ad38e70211af3ab4" + integrity sha512-+1V2PCMFkL+OIj2/HrtrvZw0BC0sYLMICJfbQjuj/K8CEnlrFX6R5cKKgzzttsZDHyxQNL1jqMREjKN3ja/E3Q== + dependencies: + tslib "^1.10.0" + optionalDependencies: + errno "^0.1.1" + graceful-fs "^4.1.2" + image-size "~0.5.0" + make-dir "^2.1.0" + mime "^1.4.1" + native-request "^1.0.5" + source-map "~0.6.0" + +leven@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" + integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== + +levn@^0.3.0, levn@~0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" + integrity sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4= + dependencies: + prelude-ls "~1.1.2" + type-check "~0.3.2" + +lines-and-columns@^1.1.6: + version "1.1.6" + resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00" + integrity sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA= + +load-json-file@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-2.0.0.tgz#7947e42149af80d696cbf797bcaabcfe1fe29ca8" + integrity sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg= + dependencies: + graceful-fs "^4.1.2" + parse-json "^2.2.0" + pify "^2.0.0" + strip-bom "^3.0.0" + +loader-fs-cache@^1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/loader-fs-cache/-/loader-fs-cache-1.0.3.tgz#f08657646d607078be2f0a032f8bd69dd6f277d9" + integrity sha512-ldcgZpjNJj71n+2Mf6yetz+c9bM4xpKtNds4LbqXzU/PTdeAX0g3ytnU1AJMEcTk2Lex4Smpe3Q/eCTsvUBxbA== + dependencies: + find-cache-dir "^0.1.1" + mkdirp "^0.5.1" + +loader-runner@^2.4.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.4.0.tgz#ed47066bfe534d7e84c4c7b9998c2a75607d9357" + integrity sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw== + +loader-utils@^1.0.2, loader-utils@^1.1.0, loader-utils@^1.2.3, loader-utils@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.4.0.tgz#c579b5e34cb34b1a74edc6c1fb36bfa371d5a613" + integrity sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA== + dependencies: + big.js "^5.2.2" + emojis-list "^3.0.0" + json5 "^1.0.1" + +loader-utils@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-2.0.0.tgz#e4cace5b816d425a166b5f097e10cd12b36064b0" + integrity sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ== + dependencies: + big.js "^5.2.2" + emojis-list "^3.0.0" + json5 "^2.1.2" + +locate-path@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" + integrity sha1-K1aLJl7slExtnA3pw9u7ygNUzY4= + dependencies: + p-locate "^2.0.0" + path-exists "^3.0.0" + +locate-path@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" + integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== + dependencies: + p-locate "^3.0.0" + path-exists "^3.0.0" + +locate-path@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" + integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== + dependencies: + p-locate "^4.1.0" + +lock@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/lock/-/lock-1.1.0.tgz#53157499d1653b136ca66451071fca615703fa55" + integrity sha1-UxV0mdFlOxNspmRRBx/KYVcD+lU= + +lockfile@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/lockfile/-/lockfile-1.0.4.tgz#07f819d25ae48f87e538e6578b6964a4981a5609" + integrity sha512-cvbTwETRfsFh4nHsL1eGWapU1XFi5Ot9E85sWAwia7Y7EgB7vfqcZhTKZ+l7hCGxSPoushMv5GKhT5PdLv03WA== + dependencies: + signal-exit "^3.0.2" + +lodash.clonedeep@4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef" + integrity sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8= + +lodash.deburr@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/lodash.deburr/-/lodash.deburr-4.1.0.tgz#ddb1bbb3ef07458c0177ba07de14422cb033ff9b" + integrity sha1-3bG7s+8HRYwBd7oH3hRCLLAz/5s= + +lodash.every@^4.6.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/lodash.every/-/lodash.every-4.6.0.tgz#eb89984bebc4364279bb3aefbbd1ca19bfa6c6a7" + integrity sha1-64mYS+vENkJ5uzrvu9HKGb+mxqc= + +lodash.flatten@^4.4.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/lodash.flatten/-/lodash.flatten-4.4.0.tgz#f31c22225a9632d2bbf8e4addbef240aa765a61f" + integrity sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8= + +lodash.flattendeep@^4.4.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz#fb030917f86a3134e5bc9bec0d69e0013ddfedb2" + integrity sha1-+wMJF/hqMTTlvJvsDWngAT3f7bI= + +lodash.foreach@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.foreach/-/lodash.foreach-4.5.0.tgz#1a6a35eace401280c7f06dddec35165ab27e3e53" + integrity sha1-Gmo16s5AEoDH8G3d7DUWWrJ+PlM= + +lodash.isempty@^4.4.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/lodash.isempty/-/lodash.isempty-4.4.0.tgz#6f86cbedd8be4ec987be9aaf33c9684db1b31e7e" + integrity sha1-b4bL7di+TsmHvpqvM8loTbGzHn4= + +lodash.map@^4.6.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/lodash.map/-/lodash.map-4.6.0.tgz#771ec7839e3473d9c4cde28b19394c3562f4f6d3" + integrity sha1-dx7Hg540c9nEzeKLGTlMNWL09tM= + +lodash.maxby@^4.6.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/lodash.maxby/-/lodash.maxby-4.6.0.tgz#082240068f3c7a227aa00a8380e4f38cf0786e3d" + integrity sha1-CCJABo88eiJ6oAqDgOTzjPB4bj0= + +lodash.memoize@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" + integrity sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4= + +lodash.merge@^4.6.2: + version "4.6.2" + resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" + integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== + +lodash.toarray@^4.4.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/lodash.toarray/-/lodash.toarray-4.4.0.tgz#24c4bfcd6b2fba38bfd0594db1179d8e9b656561" + integrity sha1-JMS/zWsvuji/0FlNsRedjptlZWE= + +lodash.uniq@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" + integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M= + +lodash.without@^4.4.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/lodash.without/-/lodash.without-4.4.0.tgz#3cd4574a00b67bae373a94b748772640507b7aac" + integrity sha1-PNRXSgC2e643OpS3SHcmQFB7eqw= + +lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.4, lodash@^4.17.5, lodash@^4.3.0: + version "4.17.20" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.20.tgz#b44a9b6297bcb698f1c51a3545a2b3b368d59c52" + integrity sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA== + +loglevel@^1.6.8: + version "1.7.0" + resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.7.0.tgz#728166855a740d59d38db01cf46f042caa041bb0" + integrity sha512-i2sY04nal5jDcagM3FMfG++T69GEEM8CYuOfeOIvmXzOIcwE9a/CJPR0MFM97pYMj/u10lzz7/zd7+qwhrBTqQ== + +longest-streak@^2.0.1: + version "2.0.4" + resolved "https://registry.yarnpkg.com/longest-streak/-/longest-streak-2.0.4.tgz#b8599957da5b5dab64dee3fe316fa774597d90e4" + integrity sha512-vM6rUVCVUJJt33bnmHiZEvr7wPT78ztX7rojL+LW51bHtLh6HTjx84LA5W4+oa6aKEJA7jJu5LR6vQRBpA5DVg== + +loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" + integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== + dependencies: + js-tokens "^3.0.0 || ^4.0.0" + +loud-rejection@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/loud-rejection/-/loud-rejection-2.2.0.tgz#4255eb6e9c74045b0edc021fa7397ab655a8517c" + integrity sha512-S0FayMXku80toa5sZ6Ro4C+s+EtFDCsyJNG/AzFMfX3AxD5Si4dZsgzm/kKnbOxHl5Cv8jBlno8+3XYIh2pNjQ== + dependencies: + currently-unhandled "^0.4.1" + signal-exit "^3.0.2" + +lower-case@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-2.0.1.tgz#39eeb36e396115cc05e29422eaea9e692c9408c7" + integrity sha512-LiWgfDLLb1dwbFQZsSglpRj+1ctGnayXz3Uv0/WO8n558JycT5fg6zkNcnW0G68Nn0aEldTFeEfmjCfmqry/rQ== + dependencies: + tslib "^1.10.0" + +lowercase-keys@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.0.tgz#4e3366b39e7f5457e35f1324bdf6f88d0bfc7306" + integrity sha1-TjNms55/VFfjXxMkvfb4jQv8cwY= + +lowercase-keys@^1.0.0, lowercase-keys@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.1.tgz#6f9e30b47084d971a7c820ff15a6c5167b74c26f" + integrity sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA== + +lowercase-keys@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-2.0.0.tgz#2603e78b7b4b0006cbca2fbcc8a3202558ac9479" + integrity sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA== + +lru-cache@4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.0.0.tgz#b5cbf01556c16966febe54ceec0fb4dc90df6c28" + integrity sha1-tcvwFVbBaWb+vlTO7A+03JDfbCg= + dependencies: + pseudomap "^1.0.1" + yallist "^2.0.0" + +lru-cache@^4.0.0, lru-cache@^4.0.1: + version "4.1.5" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd" + integrity sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g== + dependencies: + pseudomap "^1.0.2" + yallist "^2.1.2" + +lru-cache@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" + integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== + dependencies: + yallist "^3.0.2" + +lru-cache@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" + integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== + dependencies: + yallist "^4.0.0" + +make-dir@^2.0.0, make-dir@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5" + integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA== + dependencies: + pify "^4.0.1" + semver "^5.6.0" + +make-dir@^3.0.0, make-dir@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" + integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== + dependencies: + semver "^6.0.0" + +map-cache@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" + integrity sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8= + +map-visit@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" + integrity sha1-7Nyo8TFE5mDxtb1B8S80edmN+48= + dependencies: + object-visit "^1.0.0" + +markdown-escapes@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/markdown-escapes/-/markdown-escapes-1.0.4.tgz#c95415ef451499d7602b91095f3c8e8975f78535" + integrity sha512-8z4efJYk43E0upd0NbVXwgSTQs6cT3T06etieCMEg7dRbzCbxUCK/GHlX8mhHRDcp+OLlHkPKsvqQTCvsRl2cg== + +markdown-table@^1.1.0: + version "1.1.3" + resolved "https://registry.yarnpkg.com/markdown-table/-/markdown-table-1.1.3.tgz#9fcb69bcfdb8717bfd0398c6ec2d93036ef8de60" + integrity sha512-1RUZVgQlpJSPWYbFSpmudq5nHY1doEIv89gBtF0s4gW1GF2XorxcA/70M5vq7rLv0a6mhOUccRsqkwhwLCIQ2Q== + +markdown-table@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/markdown-table/-/markdown-table-2.0.0.tgz#194a90ced26d31fe753d8b9434430214c011865b" + integrity sha512-Ezda85ToJUBhM6WGaG6veasyym+Tbs3cMAw/ZhOPqXiYsr0jgocBV3j3nx+4lk47plLlIqjwuTm/ywVI+zjJ/A== + dependencies: + repeat-string "^1.0.0" + +marked@1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/marked/-/marked-1.2.2.tgz#5d77ffb789c4cb0ae828bfe76250f7140b123f70" + integrity sha512-5jjKHVl/FPo0Z6ocP3zYhKiJLzkwJAw4CZoLjv57FkvbUuwOX4LIBBGGcXjAY6ATcd1q9B8UTj5T9Umauj0QYQ== + +md5-file@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/md5-file/-/md5-file-5.0.0.tgz#e519f631feca9c39e7f9ea1780b63c4745012e20" + integrity sha512-xbEFXCYVWrSx/gEKS1VPlg84h/4L20znVIulKw6kMfmBUAZNAnF00eczz9ICMl+/hjQGo5KSXRxbL/47X3rmMw== + +md5.js@^1.3.4: + version "1.3.5" + resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f" + integrity sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg== + dependencies: + hash-base "^3.0.0" + inherits "^2.0.1" + safe-buffer "^5.1.2" + +mdast-util-compact@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/mdast-util-compact/-/mdast-util-compact-1.0.4.tgz#d531bb7667b5123abf20859be086c4d06c894593" + integrity sha512-3YDMQHI5vRiS2uygEFYaqckibpJtKq5Sj2c8JioeOQBU6INpKbdWzfyLqFFnDwEcEnRFIdMsguzs5pC1Jp4Isg== + dependencies: + unist-util-visit "^1.1.0" + +mdast-util-compact@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/mdast-util-compact/-/mdast-util-compact-2.0.1.tgz#cabc69a2f43103628326f35b1acf735d55c99490" + integrity sha512-7GlnT24gEwDrdAwEHrU4Vv5lLWrEer4KOkAiKT9nYstsTad7Oc1TwqT2zIMKRdZF7cTuaf+GA1E4Kv7jJh8mPA== + dependencies: + unist-util-visit "^2.0.0" + +mdast-util-definitions@^1.2.0: + version "1.2.5" + resolved "https://registry.yarnpkg.com/mdast-util-definitions/-/mdast-util-definitions-1.2.5.tgz#3fe622a4171c774ebd06f11e9f8af7ec53ea5c74" + integrity sha512-CJXEdoLfiISCDc2JB6QLb79pYfI6+GcIH+W2ox9nMc7od0Pz+bovcHsiq29xAQY6ayqe/9CsK2VzkSJdg1pFYA== + dependencies: + unist-util-visit "^1.0.0" + +mdast-util-to-hast@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/mdast-util-to-hast/-/mdast-util-to-hast-3.0.4.tgz#132001b266031192348d3366a6b011f28e54dc40" + integrity sha512-/eIbly2YmyVgpJNo+bFLLMCI1XgolO/Ffowhf+pHDq3X4/V6FntC9sGQCDLM147eTS+uSXv5dRzJyFn+o0tazA== + dependencies: + collapse-white-space "^1.0.0" + detab "^2.0.0" + mdast-util-definitions "^1.2.0" + mdurl "^1.0.1" + trim "0.0.1" + trim-lines "^1.0.0" + unist-builder "^1.0.1" + unist-util-generated "^1.1.0" + unist-util-position "^3.0.0" + unist-util-visit "^1.1.0" + xtend "^4.0.1" + +mdast-util-to-nlcst@^3.2.0: + version "3.2.3" + resolved "https://registry.yarnpkg.com/mdast-util-to-nlcst/-/mdast-util-to-nlcst-3.2.3.tgz#dcd0f51b59515b11a0700aeb40f168ed7ba9ed3d" + integrity sha512-hPIsgEg7zCvdU6/qvjcR6lCmJeRuIEpZGY5xBV+pqzuMOvQajyyF8b6f24f8k3Rw8u40GwkI3aAxUXr3bB2xag== + dependencies: + nlcst-to-string "^2.0.0" + repeat-string "^1.5.2" + unist-util-position "^3.0.0" + vfile-location "^2.0.0" + +mdast-util-to-string@^1.0.5, mdast-util-to-string@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/mdast-util-to-string/-/mdast-util-to-string-1.1.0.tgz#27055500103f51637bd07d01da01eb1967a43527" + integrity sha512-jVU0Nr2B9X3MU4tSK7JP1CMkSvOj7X5l/GboG1tKRw52lLF1x2Ju92Ms9tNetCcbfX3hzlM73zYo2NKkWSfF/A== + +mdast-util-toc@^5.0: + version "5.0.4" + resolved "https://registry.yarnpkg.com/mdast-util-toc/-/mdast-util-toc-5.0.4.tgz#5c7bc8ff64914546384d81ea155478ba34802c12" + integrity sha512-JjLlJfcnsQlAJKWCY8CfTp9gA5A2Mk5PeDmPmCLLvq+2SjlJKyGUQTiDdSO5WvPRzpwnghO3ByyJc4OngadB3w== + dependencies: + "@types/mdast" "^3.0.3" + "@types/unist" "^2.0.3" + extend "^3.0.2" + github-slugger "^1.2.1" + mdast-util-to-string "^1.0.5" + unist-util-is "^4.0.0" + unist-util-visit "^2.0.0" + +mdn-data@2.0.12: + version "2.0.12" + resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.12.tgz#bbb658d08b38f574bbb88f7b83703defdcc46844" + integrity sha512-ULbAlgzVb8IqZ0Hsxm6hHSlQl3Jckst2YEQS7fODu9ilNWy2LvcoSY7TRFIktABP2mdppBioc66va90T+NUs8Q== + +mdn-data@2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.4.tgz#699b3c38ac6f1d728091a64650b65d388502fd5b" + integrity sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA== + +mdurl@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/mdurl/-/mdurl-1.0.1.tgz#fe85b2ec75a59037f2adfec100fd6c601761152e" + integrity sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4= + +meant@^1.0.1, meant@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/meant/-/meant-1.0.2.tgz#5d0c78310a3d8ae1408a16be0fe0bd42a969f560" + integrity sha512-KN+1uowN/NK+sT/Lzx7WSGIj2u+3xe5n2LbwObfjOhPZiA+cCfCm6idVl0RkEfjThkw5XJ96CyRcanq6GmKtUg== + +media-typer@0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" + integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g= + +memory-fs@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552" + integrity sha1-OpoguEYlI+RHz7x+i7gO1me/xVI= + dependencies: + errno "^0.1.3" + readable-stream "^2.0.1" + +memory-fs@^0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.5.0.tgz#324c01288b88652966d161db77838720845a8e3c" + integrity sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA== + dependencies: + errno "^0.1.3" + readable-stream "^2.0.1" + +merge-descriptors@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" + integrity sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E= + +merge-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" + integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== + +merge2@^1.2.3, merge2@^1.3.0: + version "1.4.1" + resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" + integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== + +methods@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" + integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4= + +micromatch@^3.1.10, micromatch@^3.1.4: + version "3.1.10" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" + integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== + dependencies: + arr-diff "^4.0.0" + array-unique "^0.3.2" + braces "^2.3.1" + define-property "^2.0.2" + extend-shallow "^3.0.2" + extglob "^2.0.4" + fragment-cache "^0.2.1" + kind-of "^6.0.2" + nanomatch "^1.2.9" + object.pick "^1.3.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.2" + +micromatch@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.2.tgz#4fcb0999bf9fbc2fcbdd212f6d629b9a56c39259" + integrity sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q== + dependencies: + braces "^3.0.1" + picomatch "^2.0.5" + +miller-rabin@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d" + integrity sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA== + dependencies: + bn.js "^4.0.0" + brorand "^1.0.1" + +mime-db@1.44.0: + version "1.44.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.44.0.tgz#fa11c5eb0aca1334b4233cb4d52f10c5a6272f92" + integrity sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg== + +"mime-db@>= 1.43.0 < 2": + version "1.45.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.45.0.tgz#cceeda21ccd7c3a745eba2decd55d4b73e7879ea" + integrity sha512-CkqLUxUk15hofLoLyljJSrukZi8mAtgd+yE5uO4tqRZsdsAJKv0O+rFMhVDRJgozy+yG6md5KwuXhD4ocIoP+w== + +mime-db@~1.25.0: + version "1.25.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.25.0.tgz#c18dbd7c73a5dbf6f44a024dc0d165a1e7b1c392" + integrity sha1-wY29fHOl2/b0SgJNwNFloeexw5I= + +mime-types@2.1.13: + version "2.1.13" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.13.tgz#e07aaa9c6c6b9a7ca3012c69003ad25a39e92a88" + integrity sha1-4HqqnGxrmnyjASxpADrSWjnpKog= + dependencies: + mime-db "~1.25.0" + +mime-types@^2.1.12, mime-types@~2.1.17, mime-types@~2.1.24: + version "2.1.27" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.27.tgz#47949f98e279ea53119f5722e0f34e529bec009f" + integrity sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w== + dependencies: + mime-db "1.44.0" + +mime@1.6.0, mime@^1.4.1: + version "1.6.0" + resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" + integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== + +mime@^2.0.3, mime@^2.4.4, mime@^2.4.6: + version "2.4.6" + resolved "https://registry.yarnpkg.com/mime/-/mime-2.4.6.tgz#e5b407c90db442f2beb5b162373d07b69affa4d1" + integrity sha512-RZKhC3EmpBchfTGBVb8fb+RL2cWyw/32lshnsETttkBAyAUXSGHxbEJWWRXc751DrIxG1q04b8QwMbAwkRPpUA== + +mimic-fn@^1.0.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022" + integrity sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ== + +mimic-fn@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" + integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== + +mimic-response@^1.0.0, mimic-response@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b" + integrity sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ== + +min-document@^2.19.0: + version "2.19.0" + resolved "https://registry.yarnpkg.com/min-document/-/min-document-2.19.0.tgz#7bd282e3f5842ed295bb748cdd9f1ffa2c824685" + integrity sha1-e9KC4/WELtKVu3SM3Z8f+iyCRoU= + dependencies: + dom-walk "^0.1.0" + +min-indent@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/min-indent/-/min-indent-1.0.1.tgz#a63f681673b30571fbe8bc25686ae746eefa9869" + integrity sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg== + +mini-css-extract-plugin@^0.11.2: + version "0.11.3" + resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-0.11.3.tgz#15b0910a7f32e62ffde4a7430cfefbd700724ea6" + integrity sha512-n9BA8LonkOkW1/zn+IbLPQmovsL0wMb9yx75fMJQZf2X1Zoec9yTZtyMePcyu19wPkmFbzZZA6fLTotpFhQsOA== + dependencies: + loader-utils "^1.1.0" + normalize-url "1.9.1" + schema-utils "^1.0.0" + webpack-sources "^1.1.0" + +minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" + integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== + +minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" + integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo= + +minimatch@3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.3.tgz#2a4e4090b96b2db06a9d7df01055a62a77c9b774" + integrity sha1-Kk5AkLlrLbBqnX3wEFWmKnfJt3Q= + dependencies: + brace-expansion "^1.0.0" + +minimatch@3.0.4, minimatch@^3.0.3, 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@^0.2.0: + version "0.2.1" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.2.1.tgz#827ba4e7593464e7c221e8c5bed930904ee2c455" + integrity sha512-GY8fANSrTMfBVfInqJAY41QkOM+upUTytK1jZ0c8+3HdHrJxBJ3rF5i9moClXTE8uUSnUo8cAsCoxDXvSY4DHg== + +minimist@^1.1.0, minimist@^1.2.0, 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== + +minipass-collect@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/minipass-collect/-/minipass-collect-1.0.2.tgz#22b813bf745dc6edba2576b940022ad6edc8c617" + integrity sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA== + dependencies: + minipass "^3.0.0" + +minipass-flush@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/minipass-flush/-/minipass-flush-1.0.5.tgz#82e7135d7e89a50ffe64610a787953c4c4cbb373" + integrity sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw== + dependencies: + minipass "^3.0.0" + +minipass-pipeline@^1.2.2: + version "1.2.4" + resolved "https://registry.yarnpkg.com/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz#68472f79711c084657c067c5c6ad93cddea8214c" + integrity sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A== + dependencies: + minipass "^3.0.0" + +minipass@^3.0.0, minipass@^3.1.1: + version "3.1.3" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.1.3.tgz#7d42ff1f39635482e15f9cdb53184deebd5815fd" + integrity sha512-Mgd2GdMVzY+x3IJ+oHnVM+KG3lA5c8tnabyJKmHSaG2kAGpudxuOf8ToDkhumF7UzME7DecbQE9uOZhNm7PuJg== + dependencies: + yallist "^4.0.0" + +mississippi@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/mississippi/-/mississippi-3.0.0.tgz#ea0a3291f97e0b5e8776b363d5f0a12d94c67022" + integrity sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA== + dependencies: + concat-stream "^1.5.0" + duplexify "^3.4.2" + end-of-stream "^1.1.0" + flush-write-stream "^1.0.0" + from2 "^2.1.0" + parallel-transform "^1.1.0" + pump "^3.0.0" + pumpify "^1.3.3" + stream-each "^1.1.0" + through2 "^2.0.0" + +mitt@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/mitt/-/mitt-1.2.0.tgz#cb24e6569c806e31bd4e3995787fe38a04fdf90d" + integrity sha512-r6lj77KlwqLhIUku9UWYes7KJtsczvolZkzp8hbaDPPaE24OmWl5s539Mytlj22siEQKosZ26qCBgda2PKwoJw== + +mixin-deep@^1.2.0: + version "1.3.2" + resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566" + integrity sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA== + dependencies: + for-in "^1.0.2" + is-extendable "^1.0.1" + +mkdirp@^0.5.1, mkdirp@^0.5.3, mkdirp@^0.5.5, mkdirp@~0.5.1: + 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== + +moment@^2.27.0: + version "2.29.1" + resolved "https://registry.yarnpkg.com/moment/-/moment-2.29.1.tgz#b2be769fa31940be9eeea6469c075e35006fa3d3" + integrity sha512-kHmoybcPV8Sqy59DwNDY3Jefr64lK/by/da0ViFcuA4DH0vQg5Q6Ze5VimxkfQNSC+Mls/Kx53s7TjP1RhFEDQ== + +move-concurrently@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/move-concurrently/-/move-concurrently-1.0.1.tgz#be2c005fda32e0b29af1f05d7c4b33214c701f92" + integrity sha1-viwAX9oy4LKa8fBdfEszIUxwH5I= + dependencies: + aproba "^1.1.1" + copy-concurrently "^1.0.0" + fs-write-stream-atomic "^1.0.8" + mkdirp "^0.5.1" + rimraf "^2.5.4" + run-queue "^1.0.3" + +ms@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" + integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= + +ms@2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" + integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== + +ms@2.1.2, ms@^2.1.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" + integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== + +multicast-dns-service-types@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz#899f11d9686e5e05cb91b35d5f0e63b773cfc901" + integrity sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE= + +multicast-dns@^6.0.1: + version "6.2.3" + resolved "https://registry.yarnpkg.com/multicast-dns/-/multicast-dns-6.2.3.tgz#a0ec7bd9055c4282f790c3c82f4e28db3b31b229" + integrity sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g== + dependencies: + dns-packet "^1.3.1" + thunky "^1.0.2" + +mute-stream@0.0.7: + version "0.0.7" + resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" + integrity sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s= + +mute-stream@0.0.8, mute-stream@~0.0.4: + version "0.0.8" + resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" + integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== + +name-all-modules-plugin@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/name-all-modules-plugin/-/name-all-modules-plugin-1.0.1.tgz#0abfb6ad835718b9fb4def0674e06657a954375c" + integrity sha1-Cr+2rYNXGLn7Te8GdOBmV6lUN1w= + +nan@^2.12.1: + version "2.14.2" + resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.2.tgz#f5376400695168f4cc694ac9393d0c9585eeea19" + integrity sha512-M2ufzIiINKCuDfBSAUr1vWQ+vuVcA9kqx8JJUsbQi6yf1uGRyb7HfpdfUr5qLXf3B/t8dPvcjhKMmlfnP47EzQ== + +nanomatch@^1.2.9: + version "1.2.13" + resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" + integrity sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA== + dependencies: + arr-diff "^4.0.0" + array-unique "^0.3.2" + define-property "^2.0.2" + extend-shallow "^3.0.2" + fragment-cache "^0.2.1" + is-windows "^1.0.2" + kind-of "^6.0.2" + object.pick "^1.3.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + +native-request@^1.0.5: + version "1.0.8" + resolved "https://registry.yarnpkg.com/native-request/-/native-request-1.0.8.tgz#8f66bf606e0f7ea27c0e5995eb2f5d03e33ae6fb" + integrity sha512-vU2JojJVelUGp6jRcLwToPoWGxSx23z/0iX+I77J3Ht17rf2INGjrhOoQnjVo60nQd8wVsgzKkPfRXBiVdD2ag== + +native-url@^0.2.6: + version "0.2.6" + resolved "https://registry.yarnpkg.com/native-url/-/native-url-0.2.6.tgz#ca1258f5ace169c716ff44eccbddb674e10399ae" + integrity sha512-k4bDC87WtgrdD362gZz6zoiXQrl40kYlBmpfmSjwRO1VU0V5ccwJTlxuE72F6m3V0vc1xOf6n3UCP9QyerRqmA== + dependencies: + querystring "^0.2.0" + +natural-compare@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" + integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= + +negotiator@0.6.2, negotiator@~0.6.2: + version "0.6.2" + resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb" + integrity sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw== + +neo-async@^2.5.0, neo-async@^2.6.1: + version "2.6.2" + resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" + integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== + +next-tick@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.0.0.tgz#ca86d1fe8828169b0120208e3dc8424b9db8342c" + integrity sha1-yobR/ogoFpsBICCOPchCS524NCw= + +nice-try@^1.0.4: + version "1.0.5" + resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" + integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== + +nlcst-to-string@^2.0.0: + version "2.0.4" + resolved "https://registry.yarnpkg.com/nlcst-to-string/-/nlcst-to-string-2.0.4.tgz#9315dfab80882bbfd86ddf1b706f53622dc400cc" + integrity sha512-3x3jwTd6UPG7vi5k4GEzvxJ5rDA7hVUIRNHPblKuMVP9Z3xmlsd9cgLcpAMkc5uPOBna82EeshROFhsPkbnTZg== + +no-case@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/no-case/-/no-case-3.0.3.tgz#c21b434c1ffe48b39087e86cfb4d2582e9df18f8" + integrity sha512-ehY/mVQCf9BL0gKfsJBvFJen+1V//U+0HQMPrWct40ixE4jnv0bfvxDbWtAHL9EcaPEOJHVVYKoQn1TlZUB8Tw== + dependencies: + lower-case "^2.0.1" + tslib "^1.10.0" + +node-emoji@^1.10.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/node-emoji/-/node-emoji-1.10.0.tgz#8886abd25d9c7bb61802a658523d1f8d2a89b2da" + integrity sha512-Yt3384If5H6BYGVHiHwTL+99OzJKHhgp82S8/dktEK73T26BazdgZ4JZh92xSVtGNJvz9UbXdNAc5hcrXV42vw== + dependencies: + lodash.toarray "^4.4.0" + +node-eta@^0.9.0: + version "0.9.0" + resolved "https://registry.yarnpkg.com/node-eta/-/node-eta-0.9.0.tgz#9fb0b099bcd2a021940e603c64254dc003d9a7a8" + integrity sha1-n7CwmbzSoCGUDmA8ZCVNwAPZp6g= + +node-fetch@2.6.1, node-fetch@^2.5.0, node-fetch@^2.6.1: + version "2.6.1" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.1.tgz#045bd323631f76ed2e2b55573394416b639a0052" + integrity sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw== + +node-forge@^0.10.0: + version "0.10.0" + resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.10.0.tgz#32dea2afb3e9926f02ee5ce8794902691a676bf3" + integrity sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA== + +node-gyp-build@^4.2.0: + version "4.2.3" + resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.2.3.tgz#ce6277f853835f718829efb47db20f3e4d9c4739" + integrity sha512-MN6ZpzmfNCRM+3t57PTJHgHyw/h4OWnZ6mR8P5j/uZtqQr46RRuDE/P+g3n0YR/AiYXeWixZZzaip77gdICfRg== + +node-libs-browser@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-2.2.1.tgz#b64f513d18338625f90346d27b0d235e631f6425" + integrity sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q== + dependencies: + assert "^1.1.1" + browserify-zlib "^0.2.0" + buffer "^4.3.0" + console-browserify "^1.1.0" + constants-browserify "^1.0.0" + crypto-browserify "^3.11.0" + domain-browser "^1.1.1" + events "^3.0.0" + https-browserify "^1.0.0" + os-browserify "^0.3.0" + path-browserify "0.0.1" + process "^0.11.10" + punycode "^1.2.4" + querystring-es3 "^0.2.0" + readable-stream "^2.3.3" + stream-browserify "^2.0.1" + stream-http "^2.7.2" + string_decoder "^1.0.0" + timers-browserify "^2.0.4" + tty-browserify "0.0.0" + url "^0.11.0" + util "^0.11.0" + vm-browserify "^1.0.1" + +node-object-hash@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/node-object-hash/-/node-object-hash-2.0.0.tgz#9971fcdb7d254f05016bd9ccf508352bee11116b" + integrity sha512-VZR0zroAusy1ETZMZiGeLkdu50LGjG5U1KHZqTruqtTyQ2wfWhHG2Ow4nsUbfTFGlaREgNHcCWoM/OzEm6p+NQ== + +node-releases@^1.1.65: + version "1.1.65" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.65.tgz#52d9579176bd60f23eba05c4438583f341944b81" + integrity sha512-YpzJOe2WFIW0V4ZkJQd/DGR/zdVwc/pI4Nl1CZrBO19FdRcSTmsuhdttw9rsTzzJLrNcSloLiBbEYx1C4f6gpA== + +noms@0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/noms/-/noms-0.0.0.tgz#da8ebd9f3af9d6760919b27d9cdc8092a7332859" + integrity sha1-2o69nzr51nYJGbJ9nNyAkqczKFk= + dependencies: + inherits "^2.0.1" + readable-stream "~1.0.31" + +normalize-package-data@^2.3.2: + version "2.5.0" + resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" + integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== + dependencies: + hosted-git-info "^2.1.4" + resolve "^1.10.0" + semver "2 || 3 || 4 || 5" + validate-npm-package-license "^3.0.1" + +normalize-path@^2.1.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== + +normalize-range@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942" + integrity sha1-LRDAa9/TEuqXd2laTShDlFa3WUI= + +normalize-url@1.9.1: + version "1.9.1" + resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-1.9.1.tgz#2cc0d66b31ea23036458436e3620d85954c66c3c" + integrity sha1-LMDWazHqIwNkWENuNiDYWVTGbDw= + dependencies: + object-assign "^4.0.1" + prepend-http "^1.0.0" + query-string "^4.1.0" + sort-keys "^1.0.0" + +normalize-url@2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-2.0.1.tgz#835a9da1551fa26f70e92329069a23aa6574d7e6" + integrity sha512-D6MUW4K/VzoJ4rJ01JFKxDrtY1v9wrgzCX5f2qj/lzH1m/lW6MhUZFKerVsnyjOhOsYzI9Kqqak+10l4LvLpMw== + dependencies: + prepend-http "^2.0.0" + query-string "^5.0.1" + sort-keys "^2.0.0" + +normalize-url@^3.0.0, normalize-url@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-3.3.0.tgz#b2e1c4dc4f7c6d57743df733a4f5978d18650559" + integrity sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg== + +normalize-url@^4.1.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-4.5.0.tgz#453354087e6ca96957bd8f5baf753f5982142129" + integrity sha512-2s47yzUxdexf1OhyRi4Em83iQk0aPvwTddtFz4hnSSw9dCEsLEGf6SwIO8ss/19S9iBb5sJaOuTvTGDeZI00BQ== + +npm-run-path@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" + integrity sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8= + dependencies: + path-key "^2.0.0" + +npm-run-path@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" + integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== + dependencies: + path-key "^3.0.0" + +nth-check@^1.0.1, nth-check@^1.0.2, nth-check@~1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-1.0.2.tgz#b2bd295c37e3dd58a3bf0700376663ba4d9cf05c" + integrity sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg== + dependencies: + boolbase "~1.0.0" + +null-loader@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/null-loader/-/null-loader-3.0.0.tgz#3e2b6c663c5bda8c73a54357d8fa0708dc61b245" + integrity sha512-hf5sNLl8xdRho4UPBOOeoIwT3WhjYcMUQm0zj44EhD6UscMAz72o2udpoDFBgykucdEDGIcd6SXbc/G6zssbzw== + dependencies: + loader-utils "^1.2.3" + schema-utils "^1.0.0" + +num2fraction@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/num2fraction/-/num2fraction-1.2.2.tgz#6f682b6a027a4e9ddfa4564cd2589d1d4e669ede" + integrity sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4= + +object-assign@^4, object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" + integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= + +object-component@0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/object-component/-/object-component-0.0.3.tgz#f0c69aa50efc95b866c186f400a33769cb2f1291" + integrity sha1-8MaapQ78lbhmwYb0AKM3acsvEpE= + +object-copy@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c" + integrity sha1-fn2Fi3gb18mRpBupde04EnVOmYw= + dependencies: + copy-descriptor "^0.1.0" + define-property "^0.2.5" + kind-of "^3.0.3" + +object-hash@^1.1.4: + version "1.3.1" + resolved "https://registry.yarnpkg.com/object-hash/-/object-hash-1.3.1.tgz#fde452098a951cb145f039bb7d455449ddc126df" + integrity sha512-OSuu/pU4ENM9kmREg0BdNrUDIl1heYa4mBZacJc+vVWz4GtAwu7jO8s4AIt2aGRUTqxykpWzI3Oqnsm13tTMDA== + +object-inspect@^1.8.0: + version "1.8.0" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.8.0.tgz#df807e5ecf53a609cc6bfe93eac3cc7be5b3a9d0" + integrity sha512-jLdtEOB112fORuypAyl/50VRVIBIdVQOSUUGQHzJ4xBSbit81zRarz7GThkEFZy1RceYrWYcPcBFPQwHyAc1gA== + +object-is@^1.0.1: + version "1.1.3" + resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.3.tgz#2e3b9e65560137455ee3bd62aec4d90a2ea1cc81" + integrity sha512-teyqLvFWzLkq5B9ki8FVWA902UER2qkxmdA4nLf+wjOLAWgxzCWZNCxpDq9MvE8MmhWNr+I8w3BN49Vx36Y6Xg== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.18.0-next.1" + +object-keys@^1.0.12, object-keys@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" + integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== + +object-path@^0.11.2, object-path@^0.11.4: + version "0.11.5" + resolved "https://registry.yarnpkg.com/object-path/-/object-path-0.11.5.tgz#d4e3cf19601a5140a55a16ad712019a9c50b577a" + integrity sha512-jgSbThcoR/s+XumvGMTMf81QVBmah+/Q7K7YduKeKVWL7N111unR2d6pZZarSk6kY/caeNxUDyxOvMWyzoU2eg== + +object-visit@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" + integrity sha1-95xEk68MU3e1n+OdOV5BBC3QRbs= + dependencies: + isobject "^3.0.0" + +object.assign@^4.1.0, object.assign@^4.1.1: + version "4.1.2" + resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.2.tgz#0ed54a342eceb37b38ff76eb831a0e788cb63940" + integrity sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ== + dependencies: + call-bind "^1.0.0" + define-properties "^1.1.3" + has-symbols "^1.0.1" + object-keys "^1.1.1" + +object.entries@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.2.tgz#bc73f00acb6b6bb16c203434b10f9a7e797d3add" + integrity sha512-BQdB9qKmb/HyNdMNWVr7O3+z5MUIx3aiegEIJqjMBbBf0YT9RRxTJSim4mzFqtyr7PDAHigq0N9dO0m0tRakQA== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.5" + has "^1.0.3" + +object.fromentries@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.2.tgz#4a09c9b9bb3843dd0f89acdb517a794d4f355ac9" + integrity sha512-r3ZiBH7MQppDJVLx6fhD618GKNG40CZYH9wgwdhKxBDDbQgjeWGGd4AtkZad84d291YxvWe7bJGuE65Anh0dxQ== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.0-next.1" + function-bind "^1.1.1" + has "^1.0.3" + +object.getownpropertydescriptors@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.0.tgz#369bf1f9592d8ab89d712dced5cb81c7c5352649" + integrity sha512-Z53Oah9A3TdLoblT7VKJaTDdXdT+lQO+cNpKVnya5JDe9uLvzu1YyY1yFDFrcxrlRgWrEFH0jJtD/IbuwjcEVg== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.0-next.1" + +object.pick@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" + integrity sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c= + dependencies: + isobject "^3.0.1" + +object.values@^1.1.0, object.values@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.1.tgz#68a99ecde356b7e9295a3c5e0ce31dc8c953de5e" + integrity sha512-WTa54g2K8iu0kmS/us18jEmdv1a4Wi//BZ/DTVYEcH0XhLM5NYdpDHja3gt57VrZLcNAO2WGA+KpWsDBaHt6eA== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.0-next.1" + function-bind "^1.1.1" + has "^1.0.3" + +obuf@^1.0.0, obuf@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/obuf/-/obuf-1.1.2.tgz#09bea3343d41859ebd446292d11c9d4db619084e" + integrity sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg== + +on-finished@~2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" + integrity sha1-IPEzZIGwg811M3mSoWlxqi2QaUc= + dependencies: + ee-first "1.1.1" + +on-headers@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.2.tgz#772b0ae6aaa525c399e489adfad90c403eb3c28f" + integrity sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA== + +once@^1.3.0, once@^1.3.1, once@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= + dependencies: + wrappy "1" + +onetime@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4" + integrity sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ= + dependencies: + mimic-fn "^1.0.0" + +onetime@^5.1.0: + version "5.1.2" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" + integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== + dependencies: + mimic-fn "^2.1.0" + +open@^7.0.3: + version "7.3.0" + resolved "https://registry.yarnpkg.com/open/-/open-7.3.0.tgz#45461fdee46444f3645b6e14eb3ca94b82e1be69" + integrity sha512-mgLwQIx2F/ye9SmbrUkurZCnkoXyXyu9EbHtJZrICjVAJfyMArdHp3KkixGdZx1ZHFPNIwl0DDM1dFFqXbTLZw== + dependencies: + is-docker "^2.0.0" + is-wsl "^2.1.1" + +opentracing@^0.14.4: + version "0.14.4" + resolved "https://registry.yarnpkg.com/opentracing/-/opentracing-0.14.4.tgz#a113408ea740da3a90fde5b3b0011a375c2e4268" + integrity sha512-nNnZDkUNExBwEpb7LZaeMeQgvrlO8l4bgY/LvGNZCR0xG/dGWqHqjKrAmR5GUoYo0FIz38kxasvA1aevxWs2CA== + +opn@5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/opn/-/opn-5.1.0.tgz#72ce2306a17dbea58ff1041853352b4a8fc77519" + integrity sha512-iPNl7SyM8L30Rm1sjGdLLheyHVw5YXVfi3SKWJzBI7efxRwHojfRFjwE/OLM6qp9xJYMgab8WicTU1cPoY+Hpg== + dependencies: + is-wsl "^1.1.0" + +opn@^5.5.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/opn/-/opn-5.5.0.tgz#fc7164fab56d235904c51c3b27da6758ca3b9bfc" + integrity sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA== + dependencies: + is-wsl "^1.1.0" + +optimize-css-assets-webpack-plugin@^5.0.3: + version "5.0.4" + resolved "https://registry.yarnpkg.com/optimize-css-assets-webpack-plugin/-/optimize-css-assets-webpack-plugin-5.0.4.tgz#85883c6528aaa02e30bbad9908c92926bb52dc90" + integrity sha512-wqd6FdI2a5/FdoiCNNkEvLeA//lHHfG24Ln2Xm2qqdIk4aOlsR18jwpyOihqQ8849W3qu2DX8fOYxpvTMj+93A== + dependencies: + cssnano "^4.1.10" + last-call-webpack-plugin "^3.0.0" + +optionator@^0.8.3: + version "0.8.3" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495" + integrity sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA== + dependencies: + deep-is "~0.1.3" + fast-levenshtein "~2.0.6" + levn "~0.3.0" + prelude-ls "~1.1.2" + type-check "~0.3.2" + word-wrap "~1.2.3" + +original@>=0.0.5, original@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/original/-/original-1.0.2.tgz#e442a61cffe1c5fd20a65f3261c26663b303f25f" + integrity sha512-hyBVl6iqqUOJ8FqRe+l/gS8H+kKYjrEndd5Pm1MfBtsEKA038HkkdbAl/72EAXGyonD/PFsvmVG+EvcIpliMBg== + dependencies: + url-parse "^1.4.3" + +os-browserify@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27" + integrity sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc= + +os-tmpdir@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" + integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= + +p-cancelable@^0.4.0: + version "0.4.1" + resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-0.4.1.tgz#35f363d67d52081c8d9585e37bcceb7e0bbcb2a0" + integrity sha512-HNa1A8LvB1kie7cERyy21VNeHb2CWJJYqyyC2o3klWFfMGlFmWv2Z7sFgZH8ZiaYL95ydToKTFVXgMV/Os0bBQ== + +p-cancelable@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-1.1.0.tgz#d078d15a3af409220c886f1d9a0ca2e441ab26cc" + integrity sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw== + +p-defer@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/p-defer/-/p-defer-3.0.0.tgz#d1dceb4ee9b2b604b1d94ffec83760175d4e6f83" + integrity sha512-ugZxsxmtTln604yeYd29EGrNhazN2lywetzpKhfmQjW/VJmhpDmWbiX+h0zL8V91R0UXkhb3KtPmyq9PZw3aYw== + +p-finally@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" + integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4= + +p-finally@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-2.0.1.tgz#bd6fcaa9c559a096b680806f4d657b3f0f240561" + integrity sha512-vpm09aKwq6H9phqRQzecoDpD8TmVyGw70qmWlyq5onxY7tqyTTFVvxMykxQSQKILBSFlbXpypIw2T1Ml7+DDtw== + +p-is-promise@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/p-is-promise/-/p-is-promise-1.1.0.tgz#9c9456989e9f6588017b0434d56097675c3da05e" + integrity sha1-nJRWmJ6fZYgBewQ01WCXZ1w9oF4= + +p-limit@3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.0.2.tgz#1664e010af3cadc681baafd3e2a437be7b0fb5fe" + integrity sha512-iwqZSOoWIW+Ew4kAGUlN16J4M7OB3ysMLSZtnhmqx7njIHFPlxWBX8xo3lVTyFVq6mI/lL9qt2IsN1sHwaxJkg== + dependencies: + p-try "^2.0.0" + +p-limit@^1.1.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8" + integrity sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q== + dependencies: + p-try "^1.0.0" + +p-limit@^2.0.0, p-limit@^2.2.0, p-limit@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" + integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== + dependencies: + p-try "^2.0.0" + +p-locate@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" + integrity sha1-IKAQOyIqcMj9OcwuWAaA893l7EM= + dependencies: + p-limit "^1.1.0" + +p-locate@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" + integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== + dependencies: + p-limit "^2.0.0" + +p-locate@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" + integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== + dependencies: + p-limit "^2.2.0" + +p-map@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/p-map/-/p-map-2.1.0.tgz#310928feef9c9ecc65b68b17693018a665cea175" + integrity sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw== + +p-map@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/p-map/-/p-map-3.0.0.tgz#d704d9af8a2ba684e2600d9a215983d4141a979d" + integrity sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ== + dependencies: + aggregate-error "^3.0.0" + +p-retry@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/p-retry/-/p-retry-3.0.1.tgz#316b4c8893e2c8dc1cfa891f406c4b422bebf328" + integrity sha512-XE6G4+YTTkT2a0UWb2kjZe8xNwf8bIbnqpc/IS/idOBVhyves0mK5OJgeocjx7q5pvX/6m23xuzVPYT1uGM73w== + dependencies: + retry "^0.12.0" + +p-timeout@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/p-timeout/-/p-timeout-2.0.1.tgz#d8dd1979595d2dc0139e1fe46b8b646cb3cdf038" + integrity sha512-88em58dDVB/KzPEx1X0N3LwFfYZPyDc4B6eF38M1rk9VTZMbxXXgjugz8mmwpS9Ox4BDZ+t6t3QP5+/gazweIA== + dependencies: + p-finally "^1.0.0" + +p-try@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" + integrity sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M= + +p-try@^2.0.0, p-try@^2.1.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" + integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== + +package-json@^6.3.0: + version "6.5.0" + resolved "https://registry.yarnpkg.com/package-json/-/package-json-6.5.0.tgz#6feedaca35e75725876d0b0e64974697fed145b0" + integrity sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ== + dependencies: + got "^9.6.0" + registry-auth-token "^4.0.0" + registry-url "^5.0.0" + semver "^6.2.0" + +pako@~1.0.5: + version "1.0.11" + resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf" + integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw== + +parallel-transform@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/parallel-transform/-/parallel-transform-1.2.0.tgz#9049ca37d6cb2182c3b1d2c720be94d14a5814fc" + integrity sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg== + dependencies: + cyclist "^1.0.1" + inherits "^2.0.3" + readable-stream "^2.1.5" + +parent-module@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" + integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== + dependencies: + callsites "^3.0.0" + +parse-asn1@^5.0.0, parse-asn1@^5.1.5: + version "5.1.6" + resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.6.tgz#385080a3ec13cb62a62d39409cb3e88844cdaed4" + integrity sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw== + dependencies: + asn1.js "^5.2.0" + browserify-aes "^1.0.0" + evp_bytestokey "^1.0.0" + pbkdf2 "^3.0.3" + safe-buffer "^5.1.1" + +parse-english@^4.0.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/parse-english/-/parse-english-4.2.0.tgz#037b68f34d1a1bdf3d33668b87791bdfc1f01e1e" + integrity sha512-jw5N6wZUZViIw3VLG/FUSeL3vDhfw5Q2g4E3nYC69Mm5ANbh9ZWd+eligQbeUoyObZM8neynTn3l14e09pjEWg== + dependencies: + nlcst-to-string "^2.0.0" + parse-latin "^4.0.0" + unist-util-modify-children "^2.0.0" + unist-util-visit-children "^1.0.0" + +parse-entities@^1.0.2, parse-entities@^1.1.0: + version "1.2.2" + resolved "https://registry.yarnpkg.com/parse-entities/-/parse-entities-1.2.2.tgz#c31bf0f653b6661354f8973559cb86dd1d5edf50" + integrity sha512-NzfpbxW/NPrzZ/yYSoQxyqUZMZXIdCfE0OIN4ESsnptHJECoUk3FZktxNuzQf4tjt5UEopnxpYJbvYuxIFDdsg== + dependencies: + character-entities "^1.0.0" + character-entities-legacy "^1.0.0" + character-reference-invalid "^1.0.0" + is-alphanumerical "^1.0.0" + is-decimal "^1.0.0" + is-hexadecimal "^1.0.0" + +parse-entities@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/parse-entities/-/parse-entities-2.0.0.tgz#53c6eb5b9314a1f4ec99fa0fdf7ce01ecda0cbe8" + integrity sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ== + dependencies: + character-entities "^1.0.0" + character-entities-legacy "^1.0.0" + character-reference-invalid "^1.0.0" + is-alphanumerical "^1.0.0" + is-decimal "^1.0.0" + is-hexadecimal "^1.0.0" + +parse-json@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" + integrity sha1-9ID0BDTvgHQfhGkJn43qGPVaTck= + dependencies: + error-ex "^1.2.0" + +parse-json@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" + integrity sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA= + dependencies: + error-ex "^1.3.1" + json-parse-better-errors "^1.0.1" + +parse-json@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.1.0.tgz#f96088cdf24a8faa9aea9a009f2d9d942c999646" + integrity sha512-+mi/lmVVNKFNVyLXV31ERiy2CY5E1/F6QtJFEzoChPRwwngMNXRDQ9GJ5WdE2Z2P4AujsOi0/+2qHID68KwfIQ== + dependencies: + "@babel/code-frame" "^7.0.0" + error-ex "^1.3.1" + json-parse-even-better-errors "^2.3.0" + lines-and-columns "^1.1.6" + +parse-latin@^4.0.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/parse-latin/-/parse-latin-4.3.0.tgz#1a70fc5601743baa06c5f12253c334fc94b4a917" + integrity sha512-TYKL+K98dcAWoCw/Ac1yrPviU8Trk+/gmjQVaoWEFDZmVD4KRg6c/80xKqNNFQObo2mTONgF8trzAf2UTwKafw== + dependencies: + nlcst-to-string "^2.0.0" + unist-util-modify-children "^2.0.0" + unist-util-visit-children "^1.0.0" + +parse-passwd@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6" + integrity sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY= + +parse-path@^4.0.0: + version "4.0.2" + resolved "https://registry.yarnpkg.com/parse-path/-/parse-path-4.0.2.tgz#ef14f0d3d77bae8dd4bc66563a4c151aac9e65aa" + integrity sha512-HSqVz6iuXSiL8C1ku5Gl1Z5cwDd9Wo0q8CoffdAghP6bz8pJa1tcMC+m4N+z6VAS8QdksnIGq1TB6EgR4vPR6w== + dependencies: + is-ssh "^1.3.0" + protocols "^1.4.0" + +parse-srcset@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/parse-srcset/-/parse-srcset-1.0.2.tgz#f2bd221f6cc970a938d88556abc589caaaa2bde1" + integrity sha1-8r0iH2zJcKk42IVWq8WJyqqiveE= + +parse-url@^5.0.0: + version "5.0.2" + resolved "https://registry.yarnpkg.com/parse-url/-/parse-url-5.0.2.tgz#856a3be1fcdf78dc93fc8b3791f169072d898b59" + integrity sha512-Czj+GIit4cdWtxo3ISZCvLiUjErSo0iI3wJ+q9Oi3QuMYTI6OZu+7cewMWZ+C1YAnKhYTk6/TLuhIgCypLthPA== + dependencies: + is-ssh "^1.3.0" + normalize-url "^3.3.0" + parse-path "^4.0.0" + protocols "^1.4.0" + +parse5@^5.0.0: + version "5.1.1" + resolved "https://registry.yarnpkg.com/parse5/-/parse5-5.1.1.tgz#f68e4e5ba1852ac2cadc00f4555fff6c2abb6178" + integrity sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug== + +parseqs@0.0.5: + version "0.0.5" + resolved "https://registry.yarnpkg.com/parseqs/-/parseqs-0.0.5.tgz#d5208a3738e46766e291ba2ea173684921a8b89d" + integrity sha1-1SCKNzjkZ2bikbouoXNoSSGouJ0= + dependencies: + better-assert "~1.0.0" + +parseqs@0.0.6: + version "0.0.6" + resolved "https://registry.yarnpkg.com/parseqs/-/parseqs-0.0.6.tgz#8e4bb5a19d1cdc844a08ac974d34e273afa670d5" + integrity sha512-jeAGzMDbfSHHA091hr0r31eYfTig+29g3GKKE/PPbEQ65X0lmMwlEoqmhzu0iztID5uJpZsFlUPDP8ThPL7M8w== + +parseuri@0.0.5: + version "0.0.5" + resolved "https://registry.yarnpkg.com/parseuri/-/parseuri-0.0.5.tgz#80204a50d4dbb779bfdc6ebe2778d90e4bce320a" + integrity sha1-gCBKUNTbt3m/3G6+J3jZDkvOMgo= + dependencies: + better-assert "~1.0.0" + +parseuri@0.0.6: + version "0.0.6" + resolved "https://registry.yarnpkg.com/parseuri/-/parseuri-0.0.6.tgz#e1496e829e3ac2ff47f39a4dd044b32823c4a25a" + integrity sha512-AUjen8sAkGgao7UyCX6Ahv0gIK2fABKmYjvP4xmy5JaKvcbTRueIqIPHLAfq30xJddqSE033IOMUSOMCcK3Sow== + +parseurl@^1.3.3, parseurl@~1.3.2, parseurl@~1.3.3: + version "1.3.3" + resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" + integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== + +pascal-case@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/pascal-case/-/pascal-case-3.1.1.tgz#5ac1975133ed619281e88920973d2cd1f279de5f" + integrity sha512-XIeHKqIrsquVTQL2crjq3NfJUxmdLasn3TYOU0VBM+UX2a6ztAWBlJQBePLGY7VHW8+2dRadeIPK5+KImwTxQA== + dependencies: + no-case "^3.0.3" + tslib "^1.10.0" + +pascalcase@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" + integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ= + +password-prompt@^1.0.4: + version "1.1.2" + resolved "https://registry.yarnpkg.com/password-prompt/-/password-prompt-1.1.2.tgz#85b2f93896c5bd9e9f2d6ff0627fa5af3dc00923" + integrity sha512-bpuBhROdrhuN3E7G/koAju0WjVw9/uQOG5Co5mokNj0MiOSBVZS1JTwM4zl55hu0WFmIEFvO9cU9sJQiBIYeIA== + dependencies: + ansi-escapes "^3.1.0" + cross-spawn "^6.0.5" + +path-browserify@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.1.tgz#e6c4ddd7ed3aa27c68a20cc4e50e1a4ee83bbc4a" + integrity sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ== + +path-dirname@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" + integrity sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA= + +path-exists@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b" + integrity sha1-D+tsZPD8UY2adU3V77YscCJ2H0s= + dependencies: + pinkie-promise "^2.0.0" + +path-exists@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" + integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU= + +path-exists@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" + integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== + +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= + +path-is-inside@^1.0.2: + 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= + +path-key@^2.0.0, path-key@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" + integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A= + +path-key@^3.0.0, path-key@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" + integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== + +path-parse@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" + integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw== + +path-to-regexp@0.1.7: + version "0.1.7" + resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" + integrity sha1-32BBeABfUi8V60SQ5yR6G/qmf4w= + +path-type@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-2.0.0.tgz#f012ccb8415b7096fc2daa1054c3d72389594c73" + integrity sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM= + dependencies: + pify "^2.0.0" + +path-type@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" + integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== + +pbkdf2@^3.0.3: + version "3.1.1" + resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.1.1.tgz#cb8724b0fada984596856d1a6ebafd3584654b94" + integrity sha512-4Ejy1OPxi9f2tt1rRV7Go7zmfDQ+ZectEQz3VGUQhgq62HtIRPDyG/JtnwIxs6x3uNMwo2V7q1fMvKjb+Tnpqg== + dependencies: + create-hash "^1.1.2" + create-hmac "^1.1.4" + ripemd160 "^2.0.1" + safe-buffer "^5.0.1" + sha.js "^2.4.8" + +performance-now@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" + integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= + +physical-cpu-count@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/physical-cpu-count/-/physical-cpu-count-2.0.0.tgz#18de2f97e4bf7a9551ad7511942b5496f7aba660" + integrity sha1-GN4vl+S/epVRrXURlCtUlverpmA= + +picomatch@^2.0.4, picomatch@^2.0.5, picomatch@^2.2.1: + version "2.2.2" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad" + integrity sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg== + +pify@^2.0.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" + integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw= + +pify@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" + integrity sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY= + +pify@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" + integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== + +pinkie-promise@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" + integrity sha1-ITXW36ejWMBprJsXh3YogihFD/o= + dependencies: + pinkie "^2.0.0" + +pinkie@^2.0.0: + version "2.0.4" + resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" + integrity sha1-clVrgM+g1IqXToDnckjoDtT3+HA= + +pkg-dir@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-1.0.0.tgz#7a4b508a8d5bb2d629d447056ff4e9c9314cf3d4" + integrity sha1-ektQio1bstYp1EcFb/TpyTFM89Q= + dependencies: + find-up "^1.0.0" + +pkg-dir@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-2.0.0.tgz#f6d5d1109e19d63edf428e0bd57e12777615334b" + integrity sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s= + dependencies: + find-up "^2.1.0" + +pkg-dir@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-3.0.0.tgz#2749020f239ed990881b1f71210d51eb6523bea3" + integrity sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw== + dependencies: + find-up "^3.0.0" + +pkg-dir@^4.1.0, pkg-dir@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" + integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== + dependencies: + find-up "^4.0.0" + +pnp-webpack-plugin@^1.6.4: + version "1.6.4" + resolved "https://registry.yarnpkg.com/pnp-webpack-plugin/-/pnp-webpack-plugin-1.6.4.tgz#c9711ac4dc48a685dabafc86f8b6dd9f8df84149" + integrity sha512-7Wjy+9E3WwLOEL30D+m8TSTF7qJJUJLONBnwQp0518siuMxUQUbgZwssaFX+QKlZkjHZcw/IpZCt/H0srrntSg== + dependencies: + ts-pnp "^1.1.6" + +portfinder@^1.0.26: + version "1.0.28" + resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.28.tgz#67c4622852bd5374dd1dd900f779f53462fac778" + integrity sha512-Se+2isanIcEqf2XMHjyUKskczxbPH7dQnlMjXX6+dybayyHvAf/TCgyMRlzf/B6QDhAEFOGes0pzRo3by4AbMA== + dependencies: + async "^2.6.2" + debug "^3.1.1" + mkdirp "^0.5.5" + +posix-character-classes@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" + integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs= + +postcss-calc@^7.0.1: + version "7.0.5" + resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-7.0.5.tgz#f8a6e99f12e619c2ebc23cf6c486fdc15860933e" + integrity sha512-1tKHutbGtLtEZF6PT4JSihCHfIVldU72mZ8SdZHIYriIZ9fh9k9aWSppaT8rHsyI3dX+KSR+W+Ix9BMY3AODrg== + dependencies: + postcss "^7.0.27" + postcss-selector-parser "^6.0.2" + postcss-value-parser "^4.0.2" + +postcss-colormin@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-4.0.3.tgz#ae060bce93ed794ac71264f08132d550956bd381" + integrity sha512-WyQFAdDZpExQh32j0U0feWisZ0dmOtPl44qYmJKkq9xFWY3p+4qnRzCHeNrkeRhwPHz9bQ3mo0/yVkaply0MNw== + dependencies: + browserslist "^4.0.0" + color "^3.0.0" + has "^1.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-convert-values@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-convert-values/-/postcss-convert-values-4.0.1.tgz#ca3813ed4da0f812f9d43703584e449ebe189a7f" + integrity sha512-Kisdo1y77KUC0Jmn0OXU/COOJbzM8cImvw1ZFsBgBgMgb1iL23Zs/LXRe3r+EZqM3vGYKdQ2YJVQ5VkJI+zEJQ== + dependencies: + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-discard-comments@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-4.0.2.tgz#1fbabd2c246bff6aaad7997b2b0918f4d7af4033" + integrity sha512-RJutN259iuRf3IW7GZyLM5Sw4GLTOH8FmsXBnv8Ab/Tc2k4SR4qbV4DNbyyY4+Sjo362SyDmW2DQ7lBSChrpkg== + dependencies: + postcss "^7.0.0" + +postcss-discard-duplicates@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-discard-duplicates/-/postcss-discard-duplicates-4.0.2.tgz#3fe133cd3c82282e550fc9b239176a9207b784eb" + integrity sha512-ZNQfR1gPNAiXZhgENFfEglF93pciw0WxMkJeVmw8eF+JZBbMD7jp6C67GqJAXVZP2BWbOztKfbsdmMp/k8c6oQ== + dependencies: + postcss "^7.0.0" + +postcss-discard-empty@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-discard-empty/-/postcss-discard-empty-4.0.1.tgz#c8c951e9f73ed9428019458444a02ad90bb9f765" + integrity sha512-B9miTzbznhDjTfjvipfHoqbWKwd0Mj+/fL5s1QOz06wufguil+Xheo4XpOnc4NqKYBCNqqEzgPv2aPBIJLox0w== + dependencies: + postcss "^7.0.0" + +postcss-discard-overridden@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-discard-overridden/-/postcss-discard-overridden-4.0.1.tgz#652aef8a96726f029f5e3e00146ee7a4e755ff57" + integrity sha512-IYY2bEDD7g1XM1IDEsUT4//iEYCxAmP5oDSFMVU/JVvT7gh+l4fmjciLqGgwjdWpQIdb0Che2VX00QObS5+cTg== + dependencies: + postcss "^7.0.0" + +postcss-flexbugs-fixes@^4.2.1: + version "4.2.1" + resolved "https://registry.yarnpkg.com/postcss-flexbugs-fixes/-/postcss-flexbugs-fixes-4.2.1.tgz#9218a65249f30897deab1033aced8578562a6690" + integrity sha512-9SiofaZ9CWpQWxOwRh1b/r85KD5y7GgvsNt1056k6OYLvWUun0czCvogfJgylC22uJTwW1KzY3Gz65NZRlvoiQ== + dependencies: + postcss "^7.0.26" + +postcss-js@^2.0.1: + version "2.0.3" + resolved "https://registry.yarnpkg.com/postcss-js/-/postcss-js-2.0.3.tgz#a96f0f23ff3d08cec7dc5b11bf11c5f8077cdab9" + integrity sha512-zS59pAk3deu6dVHyrGqmC3oDXBdNdajk4k1RyxeVXCrcEDBUBHoIhE4QTsmhxgzXxsaqFDAkUZfmMa5f/N/79w== + dependencies: + camelcase-css "^2.0.1" + postcss "^7.0.18" + +postcss-load-config@^2.0.0: + version "2.1.2" + resolved "https://registry.yarnpkg.com/postcss-load-config/-/postcss-load-config-2.1.2.tgz#c5ea504f2c4aef33c7359a34de3573772ad7502a" + integrity sha512-/rDeGV6vMUo3mwJZmeHfEDvwnTKKqQ0S7OHUi/kJvvtx3aWtyWG2/0ZWnzCt2keEclwN6Tf0DST2v9kITdOKYw== + dependencies: + cosmiconfig "^5.0.0" + import-cwd "^2.0.0" + +postcss-loader@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/postcss-loader/-/postcss-loader-3.0.0.tgz#6b97943e47c72d845fa9e03f273773d4e8dd6c2d" + integrity sha512-cLWoDEY5OwHcAjDnkyRQzAXfs2jrKjXpO/HQFcc5b5u/r7aa471wdmChmwfnv7x2u840iat/wi0lQ5nbRgSkUA== + dependencies: + loader-utils "^1.1.0" + postcss "^7.0.0" + postcss-load-config "^2.0.0" + schema-utils "^1.0.0" + +postcss-merge-longhand@^4.0.11: + version "4.0.11" + resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-4.0.11.tgz#62f49a13e4a0ee04e7b98f42bb16062ca2549e24" + integrity sha512-alx/zmoeXvJjp7L4mxEMjh8lxVlDFX1gqWHzaaQewwMZiVhLo42TEClKaeHbRf6J7j82ZOdTJ808RtN0ZOZwvw== + dependencies: + css-color-names "0.0.4" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + stylehacks "^4.0.0" + +postcss-merge-rules@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-4.0.3.tgz#362bea4ff5a1f98e4075a713c6cb25aefef9a650" + integrity sha512-U7e3r1SbvYzO0Jr3UT/zKBVgYYyhAz0aitvGIYOYK5CPmkNih+WDSsS5tvPrJ8YMQYlEMvsZIiqmn7HdFUaeEQ== + dependencies: + browserslist "^4.0.0" + caniuse-api "^3.0.0" + cssnano-util-same-parent "^4.0.0" + postcss "^7.0.0" + postcss-selector-parser "^3.0.0" + vendors "^1.0.0" + +postcss-minify-font-values@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-minify-font-values/-/postcss-minify-font-values-4.0.2.tgz#cd4c344cce474343fac5d82206ab2cbcb8afd5a6" + integrity sha512-j85oO6OnRU9zPf04+PZv1LYIYOprWm6IA6zkXkrJXyRveDEuQggG6tvoy8ir8ZwjLxLuGfNkCZEQG7zan+Hbtg== + dependencies: + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-minify-gradients@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-minify-gradients/-/postcss-minify-gradients-4.0.2.tgz#93b29c2ff5099c535eecda56c4aa6e665a663471" + integrity sha512-qKPfwlONdcf/AndP1U8SJ/uzIJtowHlMaSioKzebAXSG4iJthlWC9iSWznQcX4f66gIWX44RSA841HTHj3wK+Q== + dependencies: + cssnano-util-get-arguments "^4.0.0" + is-color-stop "^1.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-minify-params@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-4.0.2.tgz#6b9cef030c11e35261f95f618c90036d680db874" + integrity sha512-G7eWyzEx0xL4/wiBBJxJOz48zAKV2WG3iZOqVhPet/9geefm/Px5uo1fzlHu+DOjT+m0Mmiz3jkQzVHe6wxAWg== + dependencies: + alphanum-sort "^1.0.0" + browserslist "^4.0.0" + cssnano-util-get-arguments "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + uniqs "^2.0.0" + +postcss-minify-selectors@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-minify-selectors/-/postcss-minify-selectors-4.0.2.tgz#e2e5eb40bfee500d0cd9243500f5f8ea4262fbd8" + integrity sha512-D5S1iViljXBj9kflQo4YutWnJmwm8VvIsU1GeXJGiG9j8CIg9zs4voPMdQDUmIxetUOh60VilsNzCiAFTOqu3g== + dependencies: + alphanum-sort "^1.0.0" + has "^1.0.0" + postcss "^7.0.0" + postcss-selector-parser "^3.0.0" + +postcss-modules-extract-imports@^1.2.0: + version "1.2.1" + resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-1.2.1.tgz#dc87e34148ec7eab5f791f7cd5849833375b741a" + integrity sha512-6jt9XZwUhwmRUhb/CkyJY020PYaPJsCyt3UjbaWo6XEbH/94Hmv6MP7fG2C5NDU/BcHzyGYxNtHvM+LTf9HrYw== + dependencies: + postcss "^6.0.1" + +postcss-modules-local-by-default@^1.2.0: + 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" + +postcss-modules-scope@^1.1.0: + 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" + +postcss-modules-values@^1.3.0: + 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-normalize-charset@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-normalize-charset/-/postcss-normalize-charset-4.0.1.tgz#8b35add3aee83a136b0471e0d59be58a50285dd4" + integrity sha512-gMXCrrlWh6G27U0hF3vNvR3w8I1s2wOBILvA87iNXaPvSNo5uZAMYsZG7XjCUf1eVxuPfyL4TJ7++SGZLc9A3g== + dependencies: + postcss "^7.0.0" + +postcss-normalize-display-values@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.2.tgz#0dbe04a4ce9063d4667ed2be476bb830c825935a" + integrity sha512-3F2jcsaMW7+VtRMAqf/3m4cPFhPD3EFRgNs18u+k3lTJJlVe7d0YPO+bnwqo2xg8YiRpDXJI2u8A0wqJxMsQuQ== + dependencies: + cssnano-util-get-match "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-positions@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-positions/-/postcss-normalize-positions-4.0.2.tgz#05f757f84f260437378368a91f8932d4b102917f" + integrity sha512-Dlf3/9AxpxE+NF1fJxYDeggi5WwV35MXGFnnoccP/9qDtFrTArZ0D0R+iKcg5WsUd8nUYMIl8yXDCtcrT8JrdA== + dependencies: + cssnano-util-get-arguments "^4.0.0" + has "^1.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-repeat-style@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-4.0.2.tgz#c4ebbc289f3991a028d44751cbdd11918b17910c" + integrity sha512-qvigdYYMpSuoFs3Is/f5nHdRLJN/ITA7huIoCyqqENJe9PvPmLhNLMu7QTjPdtnVf6OcYYO5SHonx4+fbJE1+Q== + dependencies: + cssnano-util-get-arguments "^4.0.0" + cssnano-util-get-match "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-string@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-string/-/postcss-normalize-string-4.0.2.tgz#cd44c40ab07a0c7a36dc5e99aace1eca4ec2690c" + integrity sha512-RrERod97Dnwqq49WNz8qo66ps0swYZDSb6rM57kN2J+aoyEAJfZ6bMx0sx/F9TIEX0xthPGCmeyiam/jXif0eA== + dependencies: + has "^1.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-timing-functions@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-4.0.2.tgz#8e009ca2a3949cdaf8ad23e6b6ab99cb5e7d28d9" + integrity sha512-acwJY95edP762e++00Ehq9L4sZCEcOPyaHwoaFOhIwWCDfik6YvqsYNxckee65JHLKzuNSSmAdxwD2Cud1Z54A== + dependencies: + cssnano-util-get-match "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-unicode@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-normalize-unicode/-/postcss-normalize-unicode-4.0.1.tgz#841bd48fdcf3019ad4baa7493a3d363b52ae1cfb" + integrity sha512-od18Uq2wCYn+vZ/qCOeutvHjB5jm57ToxRaMeNuf0nWVHaP9Hua56QyMF6fs/4FSUnVIw0CBPsU0K4LnBPwYwg== + dependencies: + browserslist "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-url@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-normalize-url/-/postcss-normalize-url-4.0.1.tgz#10e437f86bc7c7e58f7b9652ed878daaa95faae1" + integrity sha512-p5oVaF4+IHwu7VpMan/SSpmpYxcJMtkGppYf0VbdH5B6hN8YNmVyJLuY9FmLQTzY3fag5ESUUHDqM+heid0UVA== + dependencies: + is-absolute-url "^2.0.0" + normalize-url "^3.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-whitespace@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-whitespace/-/postcss-normalize-whitespace-4.0.2.tgz#bf1d4070fe4fcea87d1348e825d8cc0c5faa7d82" + integrity sha512-tO8QIgrsI3p95r8fyqKV+ufKlSHh9hMJqACqbv2XknufqEDhDvbguXGBBqxw9nsQoXWf0qOqppziKJKHMD4GtA== + dependencies: + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-ordered-values@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-4.1.2.tgz#0cf75c820ec7d5c4d280189559e0b571ebac0eee" + integrity sha512-2fCObh5UanxvSxeXrtLtlwVThBvHn6MQcu4ksNT2tsaV2Fg76R2CV98W7wNSlX+5/pFwEyaDwKLLoEV7uRybAw== + dependencies: + cssnano-util-get-arguments "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-reduce-initial@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/postcss-reduce-initial/-/postcss-reduce-initial-4.0.3.tgz#7fd42ebea5e9c814609639e2c2e84ae270ba48df" + integrity sha512-gKWmR5aUulSjbzOfD9AlJiHCGH6AEVLaM0AV+aSioxUDd16qXP1PCh8d1/BGVvpdWn8k/HiK7n6TjeoXN1F7DA== + dependencies: + browserslist "^4.0.0" + caniuse-api "^3.0.0" + has "^1.0.0" + postcss "^7.0.0" + +postcss-reduce-transforms@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-reduce-transforms/-/postcss-reduce-transforms-4.0.2.tgz#17efa405eacc6e07be3414a5ca2d1074681d4e29" + integrity sha512-EEVig1Q2QJ4ELpJXMZR8Vt5DQx8/mo+dGWSR7vWXqcob2gQLyQGsionYcGKATXvQzMPn6DSN1vTN7yFximdIAg== + dependencies: + cssnano-util-get-match "^4.0.0" + has "^1.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-selector-parser@^3.0.0: + version "3.1.2" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz#b310f5c4c0fdaf76f94902bbaa30db6aa84f5270" + integrity sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA== + dependencies: + dot-prop "^5.2.0" + indexes-of "^1.0.1" + uniq "^1.0.1" + +postcss-selector-parser@^6.0.2: + version "6.0.4" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.4.tgz#56075a1380a04604c38b063ea7767a129af5c2b3" + integrity sha512-gjMeXBempyInaBqpp8gODmwZ52WaYsVOsfr4L4lDQ7n3ncD6mEyySiDtgzCT+NYC0mmeOLvtsF8iaEf0YT6dBw== + dependencies: + cssesc "^3.0.0" + indexes-of "^1.0.1" + uniq "^1.0.1" + util-deprecate "^1.0.2" + +postcss-svgo@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-4.0.2.tgz#17b997bc711b333bab143aaed3b8d3d6e3d38258" + integrity sha512-C6wyjo3VwFm0QgBy+Fu7gCYOkCmgmClghO+pjcxvrcBKtiKt0uCF+hvbMO1fyv5BMImRK90SMb+dwUnfbGd+jw== + dependencies: + is-svg "^3.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + svgo "^1.0.0" + +postcss-unique-selectors@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-unique-selectors/-/postcss-unique-selectors-4.0.1.tgz#9446911f3289bfd64c6d680f073c03b1f9ee4bac" + integrity sha512-+JanVaryLo9QwZjKrmJgkI4Fn8SBgRO6WXQBJi7KiAVPlmxikB5Jzc4EvXMT2H0/m0RjrVVm9rGNhZddm/8Spg== + dependencies: + alphanum-sort "^1.0.0" + postcss "^7.0.0" + uniqs "^2.0.0" + +postcss-value-parser@^3.0.0, postcss-value-parser@^3.3.0: + version "3.3.1" + resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz#9ff822547e2893213cf1c30efa51ac5fd1ba8281" + integrity sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ== + +postcss-value-parser@^4.0.2, postcss-value-parser@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz#443f6a20ced6481a2bda4fa8532a6e55d789a2cb" + integrity sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ== + +postcss@^6.0.1, postcss@^6.0.23: + 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.0, postcss@^7.0.1, postcss@^7.0.17, postcss@^7.0.18, postcss@^7.0.26, postcss@^7.0.27, postcss@^7.0.32: + 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" + +prelude-ls@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" + integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ= + +prepend-http@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc" + integrity sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw= + +prepend-http@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-2.0.0.tgz#e92434bfa5ea8c19f41cdfd401d741a3c819d897" + integrity sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc= + +prettier@2.1.2, prettier@^2.0.5: + version "2.1.2" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.1.2.tgz#3050700dae2e4c8b67c4c3f666cdb8af405e1ce5" + integrity sha512-16c7K+x4qVlJg9rEbXl7HEGmQyZlG4R9AgP+oHKRMsMsuk8s+ATStlf1NpDqyBI1HpVyfjLOeMhH2LvuNvV5Vg== + +pretty-bytes@^5.4.1: + version "5.4.1" + resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-5.4.1.tgz#cd89f79bbcef21e3d21eb0da68ffe93f803e884b" + integrity sha512-s1Iam6Gwz3JI5Hweaz4GoCD1WUNUIyzePFy5+Js2hjwGVt2Z79wNN+ZKOZ2vB6C+Xs6njyB84Z1IthQg8d9LxA== + +pretty-error@^2.1.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/pretty-error/-/pretty-error-2.1.2.tgz#be89f82d81b1c86ec8fdfbc385045882727f93b6" + integrity sha512-EY5oDzmsX5wvuynAByrmY0P0hcp+QpnAKbJng2A2MPjVKXCxrDSUkzghVJ4ZGPIv+JC4gX8fPUWscC0RtjsWGw== + dependencies: + lodash "^4.17.20" + renderkid "^2.0.4" + +pretty-format@^25.5.0: + version "25.5.0" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-25.5.0.tgz#7873c1d774f682c34b8d48b6743a2bf2ac55791a" + integrity sha512-kbo/kq2LQ/A/is0PQwsEHM7Ca6//bGPPvU6UnsdDRSKTWxT/ru/xb88v4BJf6a69H+uTytOEsTusT9ksd/1iWQ== + dependencies: + "@jest/types" "^25.5.0" + ansi-regex "^5.0.0" + ansi-styles "^4.0.0" + react-is "^16.12.0" + +prism-react-renderer@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/prism-react-renderer/-/prism-react-renderer-1.1.1.tgz#1c1be61b1eb9446a146ca7a50b7bcf36f2a70a44" + integrity sha512-MgMhSdHuHymNRqD6KM3eGS0PNqgK9q4QF5P0yoQQvpB6jNjeSAi3jcSAz0Sua/t9fa4xDOMar9HJbLa08gl9ug== + +prismjs@1.22.0: + version "1.22.0" + resolved "https://registry.yarnpkg.com/prismjs/-/prismjs-1.22.0.tgz#73c3400afc58a823dd7eed023f8e1ce9fd8977fa" + integrity sha512-lLJ/Wt9yy0AiSYBf212kK3mM5L8ycwlyTlSxHBAneXLR0nzFMlZ5y7riFPF3E33zXOF2IH95xdY5jIyZbM9z/w== + optionalDependencies: + clipboard "^2.0.0" + +process-nextick-args@~2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" + integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== + +process@^0.11.10: + version "0.11.10" + resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" + integrity sha1-czIwDoQBYb2j5podHZGn1LwW8YI= + +progress@^2.0.0, progress@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" + integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== + +promise-inflight@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" + integrity sha1-mEcocL8igTL8vdhoEputEsPAKeM= + +prompts@^2.3.2: + version "2.4.0" + resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.4.0.tgz#4aa5de0723a231d1ee9121c40fdf663df73f61d7" + integrity sha512-awZAKrk3vN6CroQukBL+R9051a4R3zCZBlJm/HBfrSZ8iTpYix3VX1vU4mveiLpiwmOJT4wokTF9m6HUk4KqWQ== + dependencies: + kleur "^3.0.3" + sisteransi "^1.0.5" + +prop-types@^15.6.1, prop-types@^15.7.2: + version "15.7.2" + resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.7.2.tgz#52c41e75b8c87e72b9d9360e0206b99dcbffa6c5" + integrity sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ== + dependencies: + loose-envify "^1.4.0" + object-assign "^4.1.1" + react-is "^16.8.1" + +proper-lockfile@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/proper-lockfile/-/proper-lockfile-4.1.1.tgz#284cf9db9e30a90e647afad69deb7cb06881262c" + integrity sha512-1w6rxXodisVpn7QYvLk706mzprPTAPCYAqxMvctmPN3ekuRk/kuGkGc82pangZiAt4R3lwSuUzheTTn0/Yb7Zg== + dependencies: + graceful-fs "^4.1.11" + retry "^0.12.0" + signal-exit "^3.0.2" + +property-information@^4.0.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/property-information/-/property-information-4.2.0.tgz#f0e66e07cbd6fed31d96844d958d153ad3eb486e" + integrity sha512-TlgDPagHh+eBKOnH2VYvk8qbwsCG/TAJdmTL7f1PROUcSO8qt/KSmShEQ/OKvock8X9tFjtqjCScyOkkkvIKVQ== + dependencies: + xtend "^4.0.1" + +protocols@^1.1.0, protocols@^1.4.0: + version "1.4.8" + resolved "https://registry.yarnpkg.com/protocols/-/protocols-1.4.8.tgz#48eea2d8f58d9644a4a32caae5d5db290a075ce8" + integrity sha512-IgjKyaUSjsROSO8/D49Ab7hP8mJgTYcqApOqdPhLoPxAplXmkp+zRvsrSQjFn5by0rhm4VH0GAUELIPpx7B1yg== + +proxy-addr@~2.0.5: + version "2.0.6" + resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.6.tgz#fdc2336505447d3f2f2c638ed272caf614bbb2bf" + integrity sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw== + dependencies: + forwarded "~0.1.2" + ipaddr.js "1.9.1" + +prr@~1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" + integrity sha1-0/wRS6BplaRexok/SEzrHXj19HY= + +pseudomap@^1.0.1, pseudomap@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" + integrity sha1-8FKijacOYYkX7wqKw0wa5aaChrM= + +public-encrypt@^4.0.0: + version "4.0.3" + resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.3.tgz#4fcc9d77a07e48ba7527e7cbe0de33d0701331e0" + integrity sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q== + dependencies: + bn.js "^4.1.0" + browserify-rsa "^4.0.0" + create-hash "^1.1.0" + parse-asn1 "^5.0.0" + randombytes "^2.0.1" + safe-buffer "^5.1.2" + +pump@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/pump/-/pump-2.0.1.tgz#12399add6e4cf7526d973cbc8b5ce2e2908b3909" + integrity sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA== + dependencies: + end-of-stream "^1.1.0" + once "^1.3.1" + +pump@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" + integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== + dependencies: + end-of-stream "^1.1.0" + once "^1.3.1" + +pumpify@^1.3.3: + version "1.5.1" + resolved "https://registry.yarnpkg.com/pumpify/-/pumpify-1.5.1.tgz#36513be246ab27570b1a374a5ce278bfd74370ce" + integrity sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ== + dependencies: + duplexify "^3.6.0" + inherits "^2.0.3" + pump "^2.0.0" + +punycode@1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" + integrity sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0= + +punycode@^1.2.4: + version "1.4.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" + integrity sha1-wNWmOycYgArY4esPpSachN1BhF4= + +punycode@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" + integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== + +pupa@^2.0.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/pupa/-/pupa-2.1.1.tgz#f5e8fd4afc2c5d97828faa523549ed8744a20d62" + integrity sha512-l1jNAspIBSFqbT+y+5FosojNpVpF94nlI+wDUpqP9enwOTfHx9f0gh5nB96vl+6yTpsJsypeNrwfzPrKuHB41A== + dependencies: + escape-goat "^2.0.0" + +q@^1.1.2: + version "1.5.1" + resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" + integrity sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc= + +qs@6.7.0: + version "6.7.0" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.7.0.tgz#41dc1a015e3d581f1621776be31afb2876a9b1bc" + integrity sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ== + +qs@^6.5.2: + version "6.9.4" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.9.4.tgz#9090b290d1f91728d3c22e54843ca44aea5ab687" + integrity sha512-A1kFqHekCTM7cz0udomYUoYNWjBebHm/5wzU/XqrBRBNWectVH0QIiN+NEcZ0Dte5hvzHwbr8+XQmguPhJ6WdQ== + +query-string@^4.1.0: + version "4.3.4" + resolved "https://registry.yarnpkg.com/query-string/-/query-string-4.3.4.tgz#bbb693b9ca915c232515b228b1a02b609043dbeb" + integrity sha1-u7aTucqRXCMlFbIosaArYJBD2+s= + dependencies: + object-assign "^4.1.0" + strict-uri-encode "^1.0.0" + +query-string@^5.0.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/query-string/-/query-string-5.1.1.tgz#a78c012b71c17e05f2e3fa2319dd330682efb3cb" + integrity sha512-gjWOsm2SoGlgLEdAGt7a6slVOk9mGiXmPFMqrEhLQ68rhQuBnpfs3+EmlvqKyxnCo9/PPlF+9MtY02S1aFg+Jw== + dependencies: + decode-uri-component "^0.2.0" + object-assign "^4.1.0" + strict-uri-encode "^1.0.0" + +query-string@^6.13.1: + version "6.13.6" + resolved "https://registry.yarnpkg.com/query-string/-/query-string-6.13.6.tgz#e5ac7c74f2a5da43fbca0b883b4f0bafba439966" + integrity sha512-/WWZ7d9na6s2wMEGdVCVgKWE9Rt7nYyNIf7k8xmHXcesPMlEzicWo3lbYwHyA4wBktI2KrXxxZeACLbE84hvSQ== + dependencies: + decode-uri-component "^0.2.0" + split-on-first "^1.0.0" + strict-uri-encode "^2.0.0" + +querystring-es3@^0.2.0: + version "0.2.1" + resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73" + integrity sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM= + +querystring@0.2.0, querystring@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" + integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA= + +querystringify@^2.1.1: + version "2.2.0" + resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.2.0.tgz#3345941b4153cb9d082d8eee4cda2016a9aef7f6" + integrity sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ== + +raf@^3.4.0: + version "3.4.1" + resolved "https://registry.yarnpkg.com/raf/-/raf-3.4.1.tgz#0742e99a4a6552f445d73e3ee0328af0ff1ede39" + integrity sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA== + dependencies: + performance-now "^2.1.0" + +randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5, randombytes@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" + integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== + dependencies: + safe-buffer "^5.1.0" + +randomfill@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/randomfill/-/randomfill-1.0.4.tgz#c92196fc86ab42be983f1bf31778224931d61458" + integrity sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw== + dependencies: + randombytes "^2.0.5" + safe-buffer "^5.1.0" + +range-parser@^1.2.1, range-parser@~1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" + integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== + +raw-body@2.4.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.4.0.tgz#a1ce6fb9c9bc356ca52e89256ab59059e13d0332" + integrity sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q== + dependencies: + bytes "3.1.0" + http-errors "1.7.2" + iconv-lite "0.4.24" + unpipe "1.0.0" + +raw-body@^2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.4.1.tgz#30ac82f98bb5ae8c152e67149dac8d55153b168c" + integrity sha512-9WmIKF6mkvA0SLmA2Knm9+qj89e+j1zqgyn8aXGd7+nAduPoqgI9lO57SAZNn/Byzo5P7JhXTyg9PzaJbH73bA== + dependencies: + bytes "3.1.0" + http-errors "1.7.3" + iconv-lite "0.4.24" + unpipe "1.0.0" + +raw-loader@^0.5.1: + version "0.5.1" + resolved "https://registry.yarnpkg.com/raw-loader/-/raw-loader-0.5.1.tgz#0c3d0beaed8a01c966d9787bf778281252a979aa" + integrity sha1-DD0L6u2KAclm2Xh793goElKpeao= + +rc@^1.2.8: + version "1.2.8" + resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" + integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== + dependencies: + deep-extend "^0.6.0" + ini "~1.3.0" + minimist "^1.2.0" + strip-json-comments "~2.0.1" + +react-dev-utils@^4.2.3: + version "4.2.3" + resolved "https://registry.yarnpkg.com/react-dev-utils/-/react-dev-utils-4.2.3.tgz#5b42d9ea58d5e9e017a2f57a40a8af408a3a46fb" + integrity sha512-uvmkwl5uMexCmC0GUv1XGQP0YjfYePJufGg4YYiukhqk2vN1tQxwWJIBERqhOmSi80cppZg8mZnPP/kOMf1sUQ== + dependencies: + address "1.0.3" + babel-code-frame "6.26.0" + chalk "1.1.3" + cross-spawn "5.1.0" + detect-port-alt "1.1.3" + escape-string-regexp "1.0.5" + filesize "3.5.11" + global-modules "1.0.0" + gzip-size "3.0.0" + inquirer "3.3.0" + is-root "1.0.0" + opn "5.1.0" + react-error-overlay "^3.0.0" + recursive-readdir "2.2.1" + shell-quote "1.6.1" + sockjs-client "1.1.4" + strip-ansi "3.0.1" + text-table "0.2.0" + +react-dom@17.0.1: + version "17.0.1" + resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-17.0.1.tgz#1de2560474ec9f0e334285662ede52dbc5426fc6" + integrity sha512-6eV150oJZ9U2t9svnsspTMrWNyHc6chX0KzDeAOXftRa8bNeOKTTfCJ7KorIwenkHd2xqVTBTCZd79yk/lx/Ug== + dependencies: + loose-envify "^1.1.0" + object-assign "^4.1.1" + scheduler "^0.20.1" + +react-error-overlay@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/react-error-overlay/-/react-error-overlay-3.0.0.tgz#c2bc8f4d91f1375b3dad6d75265d51cd5eeaf655" + integrity sha512-XzgvowFrwDo6TWcpJ/WTiarb9UI6lhA4PMzS7n1joK3sHfBBBOQHUc0U4u57D6DWO9vHv6lVSWx2Q/Ymfyv4hw== + +react-error-overlay@^6.0.7: + version "6.0.8" + resolved "https://registry.yarnpkg.com/react-error-overlay/-/react-error-overlay-6.0.8.tgz#474ed11d04fc6bda3af643447d85e9127ed6b5de" + integrity sha512-HvPuUQnLp5H7TouGq3kzBeioJmXms1wHy9EGjz2OURWBp4qZO6AfGEcnxts1D/CbwPLRAgTMPCEgYhA3sEM4vw== + +react-fast-compare@^3.1.1: + version "3.2.0" + resolved "https://registry.yarnpkg.com/react-fast-compare/-/react-fast-compare-3.2.0.tgz#641a9da81b6a6320f270e89724fb45a0b39e43bb" + integrity sha512-rtGImPZ0YyLrscKI9xTpV8psd6I8VAtjKCzQDlzyDvqJA8XOW78TXYQwNRNd8g8JZnDu8q9Fu/1v4HPAVwVdHA== + +react-helmet@6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/react-helmet/-/react-helmet-6.1.0.tgz#a750d5165cb13cf213e44747502652e794468726" + integrity sha512-4uMzEY9nlDlgxr61NL3XbKRy1hEkXmKNXhjbAIOVw5vcFrsdYbH2FEwcNyWvWinl103nXgzYNlns9ca+8kFiWw== + dependencies: + object-assign "^4.1.1" + prop-types "^15.7.2" + react-fast-compare "^3.1.1" + react-side-effect "^2.1.0" + +react-hot-loader@^4.12.21: + version "4.13.0" + resolved "https://registry.yarnpkg.com/react-hot-loader/-/react-hot-loader-4.13.0.tgz#c27e9408581c2a678f5316e69c061b226dc6a202" + integrity sha512-JrLlvUPqh6wIkrK2hZDfOyq/Uh/WeVEr8nc7hkn2/3Ul0sx1Kr5y4kOGNacNRoj7RhwLNcQ3Udf1KJXrqc0ZtA== + dependencies: + fast-levenshtein "^2.0.6" + global "^4.3.0" + hoist-non-react-statics "^3.3.0" + loader-utils "^1.1.0" + prop-types "^15.6.1" + react-lifecycles-compat "^3.0.4" + shallowequal "^1.1.0" + source-map "^0.7.3" + +react-is@^16.12.0, react-is@^16.7.0, react-is@^16.8.1: + version "16.13.1" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" + integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== + +react-lifecycles-compat@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz#4f1a273afdfc8f3488a8c516bfda78f872352362" + integrity sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA== + +react-refresh@^0.8.3: + version "0.8.3" + resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.8.3.tgz#721d4657672d400c5e3c75d063c4a85fb2d5d68f" + integrity sha512-X8jZHc7nCMjaCqoU+V2I0cOhNW+QMBwSUkeXnTi8IPe6zaRWfn60ZzvFDZqWPfmSJfjub7dDW1SP0jaHWLu/hg== + +react-side-effect@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/react-side-effect/-/react-side-effect-2.1.1.tgz#66c5701c3e7560ab4822a4ee2742dee215d72eb3" + integrity sha512-2FoTQzRNTncBVtnzxFOk2mCpcfxQpenBMbk5kSVBg5UcPqV9fRbgY2zhb7GTWWOlpFmAxhClBDlIq8Rsubz1yQ== + +react@17.0.1: + version "17.0.1" + resolved "https://registry.yarnpkg.com/react/-/react-17.0.1.tgz#6e0600416bd57574e3f86d92edba3d9008726127" + integrity sha512-lG9c9UuMHdcAexXtigOZLX8exLWkW0Ku29qPRU8uhF2R9BN96dLCt0psvzPLlHc5OWkgymP3qwTRgbnw5BKx3w== + dependencies: + loose-envify "^1.1.0" + object-assign "^4.1.1" + +read-chunk@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/read-chunk/-/read-chunk-3.2.0.tgz#2984afe78ca9bfbbdb74b19387bf9e86289c16ca" + integrity sha512-CEjy9LCzhmD7nUpJ1oVOE6s/hBkejlcJEgLQHVnQznOSilOPb+kpKktlLfFDK3/WP43+F80xkUTM2VOkYoSYvQ== + dependencies: + pify "^4.0.1" + with-open-file "^0.1.6" + +read-pkg-up@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-2.0.0.tgz#6b72a8048984e0c41e79510fd5e9fa99b3b549be" + integrity sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4= + dependencies: + find-up "^2.0.0" + read-pkg "^2.0.0" + +read-pkg@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-2.0.0.tgz#8ef1c0623c6a6db0dc6713c4bfac46332b2368f8" + integrity sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg= + dependencies: + load-json-file "^2.0.0" + normalize-package-data "^2.3.2" + path-type "^2.0.0" + +read@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/read/-/read-1.0.7.tgz#b3da19bd052431a97671d44a42634adf710b40c4" + integrity sha1-s9oZvQUkMal2cdRKQmNK33ELQMQ= + dependencies: + mute-stream "~0.0.4" + +"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.6, readable-stream@~2.3.6: + version "2.3.7" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" + integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.3" + isarray "~1.0.0" + process-nextick-args "~2.0.0" + safe-buffer "~5.1.1" + string_decoder "~1.1.1" + util-deprecate "~1.0.1" + +readable-stream@^3.0.6, readable-stream@^3.1.1, readable-stream@^3.4.0, readable-stream@^3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" + integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== + dependencies: + inherits "^2.0.3" + string_decoder "^1.1.1" + util-deprecate "^1.0.1" + +readable-stream@~1.0.31: + version "1.0.34" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.0.34.tgz#125820e34bc842d2f2aaafafe4c2916ee32c157c" + integrity sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw= + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.1" + isarray "0.0.1" + string_decoder "~0.10.x" + +readdirp@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525" + integrity sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ== + dependencies: + graceful-fs "^4.1.11" + micromatch "^3.1.10" + readable-stream "^2.0.2" + +readdirp@~3.5.0: + version "3.5.0" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.5.0.tgz#9ba74c019b15d365278d2e91bb8c48d7b4d42c9e" + integrity sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ== + dependencies: + picomatch "^2.2.1" + +recursive-readdir@2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/recursive-readdir/-/recursive-readdir-2.2.1.tgz#90ef231d0778c5ce093c9a48d74e5c5422d13a99" + integrity sha1-kO8jHQd4xc4JPJpI105cVCLROpk= + dependencies: + minimatch "3.0.3" + +redux-thunk@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/redux-thunk/-/redux-thunk-2.3.0.tgz#51c2c19a185ed5187aaa9a2d08b666d0d6467622" + integrity sha512-km6dclyFnmcvxhAcrQV2AkZmPQjzPDjgVlQtR0EQjxZPyJ0BnMf3in1ryuR8A2qU0HldVRfxYXbFSKlI3N7Slw== + +redux@^4.0.5: + version "4.0.5" + resolved "https://registry.yarnpkg.com/redux/-/redux-4.0.5.tgz#4db5de5816e17891de8a80c424232d06f051d93f" + integrity sha512-VSz1uMAH24DM6MF72vcojpYPtrTUu3ByVWfPL1nPfVRb5mZVTve5GnNCUV53QM/BZ66xfWrm0CTWoM+Xlz8V1w== + dependencies: + loose-envify "^1.4.0" + symbol-observable "^1.2.0" + +regenerate-unicode-properties@^8.2.0: + version "8.2.0" + resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz#e5de7111d655e7ba60c057dbe9ff37c87e65cdec" + integrity sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA== + dependencies: + regenerate "^1.4.0" + +regenerate@^1.4.0: + version "1.4.2" + resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.2.tgz#b9346d8827e8f5a32f7ba29637d398b69014848a" + integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A== + +regenerator-runtime@^0.11.0: + version "0.11.1" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9" + integrity sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg== + +regenerator-runtime@^0.13.4: + version "0.13.7" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz#cac2dacc8a1ea675feaabaeb8ae833898ae46f55" + integrity sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew== + +regenerator-transform@^0.14.2: + version "0.14.5" + resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.14.5.tgz#c98da154683671c9c4dcb16ece736517e1b7feb4" + integrity sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw== + dependencies: + "@babel/runtime" "^7.8.4" + +regex-not@^1.0.0, regex-not@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" + integrity sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A== + dependencies: + extend-shallow "^3.0.2" + safe-regex "^1.1.0" + +regexp.prototype.flags@^1.2.0, regexp.prototype.flags@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.3.0.tgz#7aba89b3c13a64509dabcf3ca8d9fbb9bdf5cb75" + integrity sha512-2+Q0C5g951OlYlJz6yu5/M33IcsESLlLfsyIaLJaG4FA2r4yP8MvVMJUUP/fVBkSpbbbZlS5gynbEWLipiiXiQ== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.0-next.1" + +regexpp@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-2.0.1.tgz#8d19d31cf632482b589049f8281f93dbcba4d07f" + integrity sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw== + +regexpp@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.1.0.tgz#206d0ad0a5648cffbdb8ae46438f3dc51c9f78e2" + integrity sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q== + +regexpu-core@^4.7.1: + version "4.7.1" + resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.7.1.tgz#2dea5a9a07233298fbf0db91fa9abc4c6e0f8ad6" + integrity sha512-ywH2VUraA44DZQuRKzARmw6S66mr48pQVva4LBeRhcOltJ6hExvWly5ZjFLYo67xbIxb6W1q4bAGtgfEl20zfQ== + dependencies: + regenerate "^1.4.0" + regenerate-unicode-properties "^8.2.0" + regjsgen "^0.5.1" + regjsparser "^0.6.4" + unicode-match-property-ecmascript "^1.0.4" + unicode-match-property-value-ecmascript "^1.2.0" + +registry-auth-token@^4.0.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-4.2.0.tgz#1d37dffda72bbecd0f581e4715540213a65eb7da" + integrity sha512-P+lWzPrsgfN+UEpDS3U8AQKg/UjZX6mQSJueZj3EK+vNESoqBSpBUD3gmu4sF9lOsjXWjF11dQKUqemf3veq1w== + dependencies: + rc "^1.2.8" + +registry-url@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/registry-url/-/registry-url-5.1.0.tgz#e98334b50d5434b81136b44ec638d9c2009c5009" + integrity sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw== + dependencies: + rc "^1.2.8" + +regjsgen@^0.5.1: + version "0.5.2" + resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.5.2.tgz#92ff295fb1deecbf6ecdab2543d207e91aa33733" + integrity sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A== + +regjsparser@^0.6.4: + version "0.6.4" + resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.6.4.tgz#a769f8684308401a66e9b529d2436ff4d0666272" + integrity sha512-64O87/dPDgfk8/RQqC4gkZoGyyWFIEUTTh80CU6CWuK5vkCGyekIx+oKcEIYtP/RAxSQltCZHCNu/mdd7fqlJw== + dependencies: + jsesc "~0.5.0" + +remark-mdx@^2.0.0-next.4: + version "2.0.0-next.8" + resolved "https://registry.yarnpkg.com/remark-mdx/-/remark-mdx-2.0.0-next.8.tgz#db1c3cbc606ea0d01526242199bb134d99020363" + integrity sha512-mjP0yo6BgjYrx5a+gKWYRFWbGnRiWi4Fdf17xGCr9VkSMnG4Dyo06spqbaLfHwl0KkQ/RQZlR2sn1mKnYduJdw== + dependencies: + parse-entities "^2.0.0" + remark-stringify "^8.1.0" + stringify-entities "^3.0.1" + strip-indent "^3.0.0" + unist-util-stringify-position "^2.0.3" + +remark-mdxjs@^2.0.0-next.4: + version "2.0.0-next.8" + resolved "https://registry.yarnpkg.com/remark-mdxjs/-/remark-mdxjs-2.0.0-next.8.tgz#ff603ebfcb17f19503ee3fab78447445eaa08783" + integrity sha512-Z/+0eWc7pBEABwg3a5ptL+vCTWHYMFnYzpLoJxTm2muBSk8XyB/CL+tEJ6SV3Q/fScHX2dtG4JRcGSpbZFLazQ== + dependencies: + "@babel/core" "7.10.5" + "@babel/helper-plugin-utils" "7.10.4" + "@babel/plugin-proposal-object-rest-spread" "7.10.4" + "@babel/plugin-syntax-jsx" "7.10.4" + "@mdx-js/util" "^2.0.0-next.8" + +remark-parse@^6.0.0, remark-parse@^6.0.3: + version "6.0.3" + resolved "https://registry.yarnpkg.com/remark-parse/-/remark-parse-6.0.3.tgz#c99131052809da482108413f87b0ee7f52180a3a" + integrity sha512-QbDXWN4HfKTUC0hHa4teU463KclLAnwpn/FBn87j9cKYJWWawbiLgMfP2Q4XwhxxuuuOxHlw+pSN0OKuJwyVvg== + dependencies: + collapse-white-space "^1.0.2" + is-alphabetical "^1.0.0" + is-decimal "^1.0.0" + is-whitespace-character "^1.0.0" + is-word-character "^1.0.0" + markdown-escapes "^1.0.0" + parse-entities "^1.1.0" + repeat-string "^1.5.4" + state-toggle "^1.0.0" + trim "0.0.1" + trim-trailing-lines "^1.0.0" + unherit "^1.0.4" + unist-util-remove-position "^1.0.0" + vfile-location "^2.0.0" + xtend "^4.0.1" + +remark-retext@^3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/remark-retext/-/remark-retext-3.1.3.tgz#77173b1d9d13dab15ce5b38d996195fea522ee7f" + integrity sha512-UujXAm28u4lnUvtOZQFYfRIhxX+auKI9PuA2QpQVTT7gYk1OgX6o0OUrSo1KOa6GNrFX+OODOtS5PWIHPxM7qw== + dependencies: + mdast-util-to-nlcst "^3.2.0" + +remark-stringify@6.0.4, remark-stringify@^6.0.0: + version "6.0.4" + resolved "https://registry.yarnpkg.com/remark-stringify/-/remark-stringify-6.0.4.tgz#16ac229d4d1593249018663c7bddf28aafc4e088" + integrity sha512-eRWGdEPMVudijE/psbIDNcnJLRVx3xhfuEsTDGgH4GsFF91dVhw5nhmnBppafJ7+NWINW6C7ZwWbi30ImJzqWg== + dependencies: + ccount "^1.0.0" + is-alphanumeric "^1.0.0" + is-decimal "^1.0.0" + is-whitespace-character "^1.0.0" + longest-streak "^2.0.1" + markdown-escapes "^1.0.0" + markdown-table "^1.1.0" + mdast-util-compact "^1.0.0" + parse-entities "^1.0.2" + repeat-string "^1.5.4" + state-toggle "^1.0.0" + stringify-entities "^1.0.1" + unherit "^1.0.4" + xtend "^4.0.1" + +remark-stringify@^8.1.0: + version "8.1.1" + resolved "https://registry.yarnpkg.com/remark-stringify/-/remark-stringify-8.1.1.tgz#e2a9dc7a7bf44e46a155ec78996db896780d8ce5" + integrity sha512-q4EyPZT3PcA3Eq7vPpT6bIdokXzFGp9i85igjmhRyXWmPs0Y6/d2FYwUNotKAWyLch7g0ASZJn/KHHcHZQ163A== + dependencies: + ccount "^1.0.0" + is-alphanumeric "^1.0.0" + is-decimal "^1.0.0" + is-whitespace-character "^1.0.0" + longest-streak "^2.0.1" + markdown-escapes "^1.0.0" + markdown-table "^2.0.0" + mdast-util-compact "^2.0.0" + parse-entities "^2.0.0" + repeat-string "^1.5.4" + state-toggle "^1.0.0" + stringify-entities "^3.0.0" + unherit "^1.0.4" + xtend "^4.0.1" + +remark@^10.0.1: + version "10.0.1" + resolved "https://registry.yarnpkg.com/remark/-/remark-10.0.1.tgz#3058076dc41781bf505d8978c291485fe47667df" + integrity sha512-E6lMuoLIy2TyiokHprMjcWNJ5UxfGQjaMSMhV+f4idM625UjjK4j798+gPs5mfjzDE6vL0oFKVeZM6gZVSVrzQ== + dependencies: + remark-parse "^6.0.0" + remark-stringify "^6.0.0" + unified "^7.0.0" + +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= + +renderkid@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/renderkid/-/renderkid-2.0.4.tgz#d325e532afb28d3f8796ffee306be8ffd6fc864c" + integrity sha512-K2eXrSOJdq+HuKzlcjOlGoOarUu5SDguDEhE7+Ah4zuOWL40j8A/oHvLlLob9PSTNvVnBd+/q0Er1QfpEuem5g== + dependencies: + css-select "^1.1.0" + dom-converter "^0.2" + htmlparser2 "^3.3.0" + lodash "^4.17.20" + strip-ansi "^3.0.0" + +repeat-element@^1.1.2: + version "1.1.3" + resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.3.tgz#782e0d825c0c5a3bb39731f84efee6b742e6b1ce" + integrity sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g== + +repeat-string@^1.0.0, repeat-string@^1.5.2, repeat-string@^1.5.4, repeat-string@^1.6.1: + version "1.6.1" + resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" + integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= + +replace-ext@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/replace-ext/-/replace-ext-1.0.0.tgz#de63128373fcbf7c3ccfa4de5a480c45a67958eb" + integrity sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs= + +require-directory@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" + integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= + +require-main-filename@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" + integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== + +require-package-name@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/require-package-name/-/require-package-name-2.0.1.tgz#c11e97276b65b8e2923f75dabf5fb2ef0c3841b9" + integrity sha1-wR6XJ2tluOKSP3Xav1+y7ww4Qbk= + +requires-port@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" + integrity sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8= + +resolve-cwd@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-2.0.0.tgz#00a9f7387556e27038eae232caa372a6a59b665a" + integrity sha1-AKn3OHVW4nA46uIyyqNypqWbZlo= + dependencies: + resolve-from "^3.0.0" + +resolve-cwd@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-3.0.0.tgz#0f0075f1bb2544766cf73ba6a6e2adfebcb13f2d" + integrity sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg== + dependencies: + resolve-from "^5.0.0" + +resolve-dir@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/resolve-dir/-/resolve-dir-1.0.1.tgz#79a40644c362be82f26effe739c9bb5382046f43" + integrity sha1-eaQGRMNivoLybv/nOcm7U4IEb0M= + dependencies: + expand-tilde "^2.0.0" + global-modules "^1.0.0" + +resolve-from@5.0.0, resolve-from@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" + integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== + +resolve-from@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748" + integrity sha1-six699nWiBvItuZTM17rywoYh0g= + +resolve-from@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" + integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== + +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= + +resolve@^1.10.0, resolve@^1.12.0, resolve@^1.13.1, resolve@^1.17.0, resolve@^1.18.1, resolve@^1.3.2, resolve@^1.8.1: + version "1.18.1" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.18.1.tgz#018fcb2c5b207d2a6424aee361c5a266da8f4130" + integrity sha512-lDfCPaMKfOJXjy0dPayzPdF1phampNWr3qFCjAu+rw/qbQmr5jWH5xN2hwh9QKfw9E5v4hwV7A+jrCmL8yjjqA== + dependencies: + is-core-module "^2.0.0" + path-parse "^1.0.6" + +responselike@1.0.2, responselike@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/responselike/-/responselike-1.0.2.tgz#918720ef3b631c5642be068f15ade5a46f4ba1e7" + integrity sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec= + dependencies: + lowercase-keys "^1.0.0" + +restore-cursor@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf" + integrity sha1-n37ih/gv0ybU/RYpI9YhKe7g368= + dependencies: + onetime "^2.0.0" + signal-exit "^3.0.2" + +restore-cursor@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" + integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA== + dependencies: + onetime "^5.1.0" + signal-exit "^3.0.2" + +ret@~0.1.10: + version "0.1.15" + resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" + integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== + +retext-english@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/retext-english/-/retext-english-3.0.4.tgz#f978828d51fbcee842bc3807a45b7f709822ea8d" + integrity sha512-yr1PgaBDde+25aJXrnt3p1jvT8FVLVat2Bx8XeAWX13KXo8OT+3nWGU3HWxM4YFJvmfqvJYJZG2d7xxaO774gw== + dependencies: + parse-english "^4.0.0" + unherit "^1.0.4" + +retry@^0.12.0: + version "0.12.0" + resolved "https://registry.yarnpkg.com/retry/-/retry-0.12.0.tgz#1b42a6266a21f07421d1b0b54b7dc167b01c013b" + integrity sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs= + +reusify@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" + integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== + +rgb-regex@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/rgb-regex/-/rgb-regex-1.0.1.tgz#c0e0d6882df0e23be254a475e8edd41915feaeb1" + integrity sha1-wODWiC3w4jviVKR16O3UGRX+rrE= + +rgba-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/rgba-regex/-/rgba-regex-1.0.0.tgz#43374e2e2ca0968b0ef1523460b7d730ff22eeb3" + integrity sha1-QzdOLiyglosO8VI0YLfXMP8i7rM= + +rimraf@2.6.3: + version "2.6.3" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab" + integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA== + dependencies: + glob "^7.1.3" + +rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.2, rimraf@^2.6.3, rimraf@^2.7.1: + version "2.7.1" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" + integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== + dependencies: + glob "^7.1.3" + +rimraf@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" + integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== + dependencies: + glob "^7.1.3" + +ripemd160@^2.0.0, ripemd160@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c" + integrity sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA== + dependencies: + hash-base "^3.0.0" + inherits "^2.0.1" + +rss@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/rss/-/rss-1.2.2.tgz#50a1698876138133a74f9a05d2bdc8db8d27a921" + integrity sha1-UKFpiHYTgTOnT5oF0r3I240nqSE= + dependencies: + mime-types "2.1.13" + xml "1.0.1" + +run-async@^2.2.0, run-async@^2.4.0: + version "2.4.1" + resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.4.1.tgz#8440eccf99ea3e70bd409d49aab88e10c189a455" + integrity sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ== + +run-parallel@^1.1.9: + version "1.1.10" + resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.1.10.tgz#60a51b2ae836636c81377df16cb107351bcd13ef" + integrity sha512-zb/1OuZ6flOlH6tQyMPUrE3x3Ulxjlo9WIVXR4yVYi4H9UXQaeIsPbLn2R3O3vQCnDKkAl2qHiuocKKX4Tz/Sw== + +run-queue@^1.0.0, run-queue@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/run-queue/-/run-queue-1.0.3.tgz#e848396f057d223f24386924618e25694161ec47" + integrity sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec= + dependencies: + aproba "^1.1.1" + +rx-lite-aggregates@^4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/rx-lite-aggregates/-/rx-lite-aggregates-4.0.8.tgz#753b87a89a11c95467c4ac1626c4efc4e05c67be" + integrity sha1-dTuHqJoRyVRnxKwWJsTvxOBcZ74= + dependencies: + rx-lite "*" + +rx-lite@*, rx-lite@^4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/rx-lite/-/rx-lite-4.0.8.tgz#0b1e11af8bc44836f04a6407e92da42467b79444" + integrity sha1-Cx4Rr4vESDbwSmQH6S2kJGe3lEQ= + +rxjs@^6.6.0: + version "6.6.3" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.6.3.tgz#8ca84635c4daa900c0d3967a6ee7ac60271ee552" + integrity sha512-trsQc+xYYXZ3urjOiJOuCOa5N3jAZ3eiSpQB5hIT8zGlL2QfnHLJ2r7GMkBGuIausdJN1OneaI6gQlsqNHHmZQ== + dependencies: + tslib "^1.9.0" + +safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: + version "5.1.2" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== + +safe-buffer@>=5.1.0, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@~5.2.0: + version "5.2.1" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" + integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== + +safe-regex@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" + integrity sha1-QKNmnzsHfR6UPURinhV91IAjvy4= + dependencies: + ret "~0.1.10" + +"safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.1.0: + version "2.1.2" + resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" + integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== + +sanitize-html@^1.27.5: + version "1.27.5" + resolved "https://registry.yarnpkg.com/sanitize-html/-/sanitize-html-1.27.5.tgz#6c8149462adb23e360e1bb71cc0bae7f08c823c7" + integrity sha512-M4M5iXDAUEcZKLXkmk90zSYWEtk5NH3JmojQxKxV371fnMh+x9t1rqdmXaGoyEHw3z/X/8vnFhKjGL5xFGOJ3A== + dependencies: + htmlparser2 "^4.1.0" + lodash "^4.17.15" + parse-srcset "^1.0.2" + postcss "^7.0.27" + +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== + +scheduler@^0.20.1: + version "0.20.1" + resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.20.1.tgz#da0b907e24026b01181ecbc75efdc7f27b5a000c" + integrity sha512-LKTe+2xNJBNxu/QhHvDR14wUXHRQbVY5ZOYpOGWRzhydZUqrLb2JBvLPY7cAqFmqrWuDED0Mjk7013SZiOz6Bw== + dependencies: + loose-envify "^1.1.0" + object-assign "^4.1.1" + +schema-utils@^0.4.5: + version "0.4.7" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-0.4.7.tgz#ba74f597d2be2ea880131746ee17d0a093c68187" + integrity sha512-v/iwU6wvwGK8HbU9yi3/nhGzP0yGSuhQMzL6ySiec1FSrZZDkhm4noOSWzrNFo/jEc+SJY6jRTwuwbSXJPDUnQ== + dependencies: + ajv "^6.1.0" + ajv-keywords "^3.1.0" + +schema-utils@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-1.0.0.tgz#0b79a93204d7b600d4b2850d1f66c2a34951c770" + integrity sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g== + dependencies: + ajv "^6.1.0" + ajv-errors "^1.0.0" + ajv-keywords "^3.1.0" + +schema-utils@^2.6.5, schema-utils@^2.6.6, schema-utils@^2.7.0: + version "2.7.1" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.7.1.tgz#1ca4f32d1b24c590c203b8e7a50bf0ea4cd394d7" + integrity sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg== + dependencies: + "@types/json-schema" "^7.0.5" + ajv "^6.12.4" + ajv-keywords "^3.5.2" + +scroll-to-element@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/scroll-to-element/-/scroll-to-element-2.0.3.tgz#99b404fc6a09fe73f3c062cd5b8a14efb6404e4d" + integrity sha512-5herPcm9jMfQgRwu94lH5mei+2YhipR4RQ2nAvnBxJb2tG+P7O0ctOKAaAZBXbBejnn+MImh3wrAUA5EcLnjEQ== + dependencies: + raf "^3.4.0" + +section-matter@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/section-matter/-/section-matter-1.0.0.tgz#e9041953506780ec01d59f292a19c7b850b84167" + integrity sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA== + dependencies: + extend-shallow "^2.0.1" + kind-of "^6.0.0" + +select-hose@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca" + integrity sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo= + +select@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/select/-/select-1.1.2.tgz#0e7350acdec80b1108528786ec1d4418d11b396d" + integrity sha1-DnNQrN7ICxEIUoeG7B1EGNEbOW0= + +selfsigned@^1.10.7: + version "1.10.8" + resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-1.10.8.tgz#0d17208b7d12c33f8eac85c41835f27fc3d81a30" + integrity sha512-2P4PtieJeEwVgTU9QEcwIRDQ/mXJLX8/+I3ur+Pg16nS8oNbrGxEso9NyYWy8NAmXiNl4dlAp5MwoNeCWzON4w== + dependencies: + node-forge "^0.10.0" + +semver-diff@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/semver-diff/-/semver-diff-3.1.1.tgz#05f77ce59f325e00e2706afd67bb506ddb1ca32b" + integrity sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg== + dependencies: + semver "^6.3.0" + +"semver@2 || 3 || 4 || 5", semver@^5.4.1, semver@^5.5.0, semver@^5.5.1, semver@^5.6.0: + version "5.7.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" + integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== + +semver@7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e" + integrity sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A== + +semver@^6.0.0, semver@^6.1.2, semver@^6.2.0, 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== + +semver@^7.3.2: + version "7.3.2" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.2.tgz#604962b052b81ed0786aae84389ffba70ffd3938" + integrity sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ== + +send@0.17.1: + version "0.17.1" + resolved "https://registry.yarnpkg.com/send/-/send-0.17.1.tgz#c1d8b059f7900f7466dd4938bdc44e11ddb376c8" + integrity sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg== + dependencies: + debug "2.6.9" + depd "~1.1.2" + destroy "~1.0.4" + encodeurl "~1.0.2" + escape-html "~1.0.3" + etag "~1.8.1" + fresh "0.5.2" + http-errors "~1.7.2" + mime "1.6.0" + ms "2.1.1" + on-finished "~2.3.0" + range-parser "~1.2.1" + statuses "~1.5.0" + +serialize-javascript@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-4.0.0.tgz#b525e1238489a5ecfc42afacc3fe99e666f4b1aa" + integrity sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw== + dependencies: + randombytes "^2.1.0" + +serve-index@^1.9.1: + version "1.9.1" + resolved "https://registry.yarnpkg.com/serve-index/-/serve-index-1.9.1.tgz#d3768d69b1e7d82e5ce050fff5b453bea12a9239" + integrity sha1-03aNabHn2C5c4FD/9bRTvqEqkjk= + dependencies: + accepts "~1.3.4" + batch "0.6.1" + debug "2.6.9" + escape-html "~1.0.3" + http-errors "~1.6.2" + mime-types "~2.1.17" + parseurl "~1.3.2" + +serve-static@1.14.1: + version "1.14.1" + resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.14.1.tgz#666e636dc4f010f7ef29970a88a674320898b2f9" + integrity sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg== + dependencies: + encodeurl "~1.0.2" + escape-html "~1.0.3" + parseurl "~1.3.3" + send "0.17.1" + +set-blocking@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" + integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= + +set-value@^2.0.0, set-value@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.1.tgz#a18d40530e6f07de4228c7defe4227af8cad005b" + integrity sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw== + dependencies: + extend-shallow "^2.0.1" + is-extendable "^0.1.1" + is-plain-object "^2.0.3" + split-string "^3.0.1" + +setimmediate@^1.0.4: + version "1.0.5" + resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" + integrity sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU= + +setprototypeof@1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656" + integrity sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ== + +setprototypeof@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.1.tgz#7e95acb24aa92f5885e0abef5ba131330d4ae683" + integrity sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw== + +setprototypeof@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424" + integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== + +sha.js@^2.4.0, sha.js@^2.4.8: + version "2.4.11" + resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7" + integrity sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ== + dependencies: + inherits "^2.0.1" + safe-buffer "^5.0.1" + +shallow-compare@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/shallow-compare/-/shallow-compare-1.2.2.tgz#fa4794627bf455a47c4f56881d8a6132d581ffdb" + integrity sha512-LUMFi+RppPlrHzbqmFnINTrazo0lPNwhcgzuAXVVcfy/mqPDrQmHAyz5bvV0gDAuRFrk804V0HpQ6u9sZ0tBeg== + +shallowequal@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/shallowequal/-/shallowequal-1.1.0.tgz#188d521de95b9087404fd4dcb68b13df0ae4e7f8" + integrity sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ== + +shebang-command@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" + integrity sha1-RKrGW2lbAzmJaMOfNj/uXer98eo= + dependencies: + shebang-regex "^1.0.0" + +shebang-command@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" + integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== + dependencies: + shebang-regex "^3.0.0" + +shebang-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" + integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM= + +shebang-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" + integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== + +shell-quote@1.6.1: + version "1.6.1" + resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.6.1.tgz#f4781949cce402697127430ea3b3c5476f481767" + integrity sha1-9HgZSczkAmlxJ0MOo7PFR29IF2c= + dependencies: + array-filter "~0.0.0" + array-map "~0.0.0" + array-reduce "~0.0.0" + jsonify "~0.0.0" + +side-channel@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.3.tgz#cdc46b057550bbab63706210838df5d4c19519c3" + integrity sha512-A6+ByhlLkksFoUepsGxfj5x1gTSrs+OydsRptUxeNCabQpCFUvcwIczgOigI8vhY/OJCnPnyE9rGiwgvr9cS1g== + dependencies: + es-abstract "^1.18.0-next.0" + object-inspect "^1.8.0" + +signal-exit@^3.0.0, signal-exit@^3.0.2, signal-exit@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c" + integrity sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA== + +simple-swizzle@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/simple-swizzle/-/simple-swizzle-0.2.2.tgz#a4da6b635ffcccca33f70d17cb92592de95e557a" + integrity sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo= + dependencies: + is-arrayish "^0.3.1" + +single-trailing-newline@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/single-trailing-newline/-/single-trailing-newline-1.0.0.tgz#81f0ad2ad645181945c80952a5c1414992ee9664" + integrity sha1-gfCtKtZFGBlFyAlSpcFBSZLulmQ= + dependencies: + detect-newline "^1.0.3" + +sisteransi@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" + integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg== + +slash@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" + integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== + +slice-ansi@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-2.1.0.tgz#cacd7693461a637a5788d92a7dd4fba068e81636" + integrity sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ== + dependencies: + ansi-styles "^3.2.0" + astral-regex "^1.0.0" + is-fullwidth-code-point "^2.0.0" + +slugify@^1.4.4: + version "1.4.6" + resolved "https://registry.yarnpkg.com/slugify/-/slugify-1.4.6.tgz#ef288d920a47fb01c2be56b3487b6722f5e34ace" + integrity sha512-ZdJIgv9gdrYwhXqxsH9pv7nXxjUEyQ6nqhngRxoAAOlmMGA28FDq5O4/5US4G2/Nod7d1ovNcgURQJ7kHq50KQ== + +snapdragon-node@^2.0.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" + integrity sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw== + dependencies: + define-property "^1.0.0" + isobject "^3.0.0" + snapdragon-util "^3.0.1" + +snapdragon-util@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2" + integrity sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ== + dependencies: + kind-of "^3.2.0" + +snapdragon@^0.8.1: + version "0.8.2" + resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d" + integrity sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg== + dependencies: + base "^0.11.1" + debug "^2.2.0" + define-property "^0.2.5" + extend-shallow "^2.0.1" + map-cache "^0.2.2" + source-map "^0.5.6" + source-map-resolve "^0.5.0" + use "^3.1.0" + +socket.io-adapter@~1.1.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/socket.io-adapter/-/socket.io-adapter-1.1.2.tgz#ab3f0d6f66b8fc7fca3959ab5991f82221789be9" + integrity sha512-WzZRUj1kUjrTIrUKpZLEzFZ1OLj5FwLlAFQs9kuZJzJi5DKdU7FsWc36SNmA8iDOtwBQyT8FkrriRM8vXLYz8g== + +socket.io-client@2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/socket.io-client/-/socket.io-client-2.3.0.tgz#14d5ba2e00b9bcd145ae443ab96b3f86cbcc1bb4" + integrity sha512-cEQQf24gET3rfhxZ2jJ5xzAOo/xhZwK+mOqtGRg5IowZsMgwvHwnf/mCRapAAkadhM26y+iydgwsXGObBB5ZdA== + dependencies: + backo2 "1.0.2" + base64-arraybuffer "0.1.5" + component-bind "1.0.0" + component-emitter "1.2.1" + debug "~4.1.0" + engine.io-client "~3.4.0" + has-binary2 "~1.0.2" + has-cors "1.1.0" + indexof "0.0.1" + object-component "0.0.3" + parseqs "0.0.5" + parseuri "0.0.5" + socket.io-parser "~3.3.0" + to-array "0.1.4" + +socket.io-parser@~3.3.0: + version "3.3.1" + resolved "https://registry.yarnpkg.com/socket.io-parser/-/socket.io-parser-3.3.1.tgz#f07d9c8cb3fb92633aa93e76d98fd3a334623199" + integrity sha512-1QLvVAe8dTz+mKmZ07Swxt+LAo4Y1ff50rlyoEx00TQmDFVQYPfcqGvIDJLGaBdhdNCecXtyKpD+EgKGcmmbuQ== + dependencies: + component-emitter "~1.3.0" + debug "~3.1.0" + isarray "2.0.1" + +socket.io-parser@~3.4.0: + version "3.4.1" + resolved "https://registry.yarnpkg.com/socket.io-parser/-/socket.io-parser-3.4.1.tgz#b06af838302975837eab2dc980037da24054d64a" + integrity sha512-11hMgzL+WCLWf1uFtHSNvliI++tcRUWdoeYuwIl+Axvwy9z2gQM+7nJyN3STj1tLj5JyIUH8/gpDGxzAlDdi0A== + dependencies: + component-emitter "1.2.1" + debug "~4.1.0" + isarray "2.0.1" + +socket.io@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/socket.io/-/socket.io-2.3.0.tgz#cd762ed6a4faeca59bc1f3e243c0969311eb73fb" + integrity sha512-2A892lrj0GcgR/9Qk81EaY2gYhCBxurV0PfmmESO6p27QPrUK1J3zdns+5QPqvUYK2q657nSj0guoIil9+7eFg== + dependencies: + debug "~4.1.0" + engine.io "~3.4.0" + has-binary2 "~1.0.2" + socket.io-adapter "~1.1.0" + socket.io-client "2.3.0" + socket.io-parser "~3.4.0" + +sockjs-client@1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/sockjs-client/-/sockjs-client-1.1.4.tgz#5babe386b775e4cf14e7520911452654016c8b12" + integrity sha1-W6vjhrd15M8U51IJEUUmVAFsixI= + dependencies: + debug "^2.6.6" + eventsource "0.1.6" + faye-websocket "~0.11.0" + inherits "^2.0.1" + json3 "^3.3.2" + url-parse "^1.1.8" + +sockjs-client@1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/sockjs-client/-/sockjs-client-1.4.0.tgz#c9f2568e19c8fd8173b4997ea3420e0bb306c7d5" + integrity sha512-5zaLyO8/nri5cua0VtOrFXBPK1jbL4+1cebT/mmKA1E1ZXOvJrII75bPu0l0k843G/+iAbhEqzyKr0w/eCCj7g== + dependencies: + debug "^3.2.5" + eventsource "^1.0.7" + faye-websocket "~0.11.1" + inherits "^2.0.3" + json3 "^3.3.2" + url-parse "^1.4.3" + +sockjs@0.3.20: + version "0.3.20" + resolved "https://registry.yarnpkg.com/sockjs/-/sockjs-0.3.20.tgz#b26a283ec562ef8b2687b44033a4eeceac75d855" + integrity sha512-SpmVOVpdq0DJc0qArhF3E5xsxvaiqGNb73XfgBpK1y3UD5gs8DSo8aCTsuT5pX8rssdc2NDIzANwP9eCAiSdTA== + dependencies: + faye-websocket "^0.10.0" + uuid "^3.4.0" + websocket-driver "0.6.5" + +sort-keys@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-1.1.2.tgz#441b6d4d346798f1b4e49e8920adfba0e543f9ad" + integrity sha1-RBttTTRnmPG05J6JIK37oOVD+a0= + dependencies: + is-plain-obj "^1.0.0" + +sort-keys@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-2.0.0.tgz#658535584861ec97d730d6cf41822e1f56684128" + integrity sha1-ZYU1WEhh7JfXMNbPQYIuH1ZoQSg= + dependencies: + is-plain-obj "^1.0.0" + +source-list-map@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.1.tgz#3993bd873bfc48479cca9ea3a547835c7c154b34" + integrity sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw== + +source-map-resolve@^0.5.0: + 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.0" + resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3" + integrity sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM= + +source-map@0.7.3, 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== + +source-map@^0.5.0, source-map@^0.5.6: + 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== + +space-separated-tokens@^1.0.0: + version "1.1.5" + resolved "https://registry.yarnpkg.com/space-separated-tokens/-/space-separated-tokens-1.1.5.tgz#85f32c3d10d9682007e917414ddc5c26d1aa6899" + integrity sha512-q/JSVd1Lptzhf5bkYm4ob4iWPjx0KiRe3sRFBNrVqbJkFaBm5vbbowy1mymoPNLRa52+oadOhJ+K49wsSeSjTA== + +spdx-correct@^3.0.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.1.tgz#dece81ac9c1e6713e5f7d1b6f17d468fa53d89a9" + integrity sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w== + dependencies: + spdx-expression-parse "^3.0.0" + spdx-license-ids "^3.0.0" + +spdx-exceptions@^2.1.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz#3f28ce1a77a00372683eade4a433183527a2163d" + integrity sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A== + +spdx-expression-parse@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz#cf70f50482eefdc98e3ce0a6833e4a53ceeba679" + integrity sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q== + dependencies: + spdx-exceptions "^2.1.0" + spdx-license-ids "^3.0.0" + +spdx-license-ids@^3.0.0: + version "3.0.6" + resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.6.tgz#c80757383c28abf7296744998cbc106ae8b854ce" + integrity sha512-+orQK83kyMva3WyPf59k1+Y525csj5JejicWut55zeTWANuN17qSiSLUXWtzHeNWORSvT7GLDJ/E/XiIWoXBTw== + +spdy-transport@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/spdy-transport/-/spdy-transport-3.0.0.tgz#00d4863a6400ad75df93361a1608605e5dcdcf31" + integrity sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw== + dependencies: + debug "^4.1.0" + detect-node "^2.0.4" + hpack.js "^2.1.6" + obuf "^1.1.2" + readable-stream "^3.0.6" + wbuf "^1.7.3" + +spdy@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/spdy/-/spdy-4.0.2.tgz#b74f466203a3eda452c02492b91fb9e84a27677b" + integrity sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA== + dependencies: + debug "^4.1.0" + handle-thing "^2.0.0" + http-deceiver "^1.2.7" + select-hose "^2.0.0" + spdy-transport "^3.0.0" + +split-on-first@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/split-on-first/-/split-on-first-1.1.0.tgz#f610afeee3b12bce1d0c30425e76398b78249a5f" + integrity sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw== + +split-string@^3.0.1, split-string@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2" + integrity sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw== + dependencies: + extend-shallow "^3.0.0" + +sprintf-js@^1.0.3: + version "1.1.2" + resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.1.2.tgz#da1765262bf8c0f571749f2ad6c26300207ae673" + integrity sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug== + +sprintf-js@~1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" + integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= + +ssri@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/ssri/-/ssri-6.0.1.tgz#2a3c41b28dd45b62b63676ecb74001265ae9edd8" + integrity sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA== + dependencies: + figgy-pudding "^3.5.1" + +ssri@^7.0.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/ssri/-/ssri-7.1.0.tgz#92c241bf6de82365b5c7fb4bd76e975522e1294d" + integrity sha512-77/WrDZUWocK0mvA5NTRQyveUf+wsrIc6vyrxpS8tVvYBcX215QbafrJR3KtkpskIzoFLqqNuuYQvxaMjXJ/0g== + dependencies: + figgy-pudding "^3.5.1" + minipass "^3.1.1" + +st@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/st/-/st-2.0.0.tgz#eabd11e7722863b8ee8cfbdd027cb25e76ff35e9" + integrity sha512-drN+aGYnrZPNYIymmNwIY7LXYJ8MqsqXj4fMRue3FOgGMdGjSX10fhJ3qx0sVQPhcWxhEaN4U/eWM4O4dbYNAw== + dependencies: + async-cache "^1.1.0" + bl "^4.0.0" + fd "~0.0.2" + mime "^2.4.4" + negotiator "~0.6.2" + optionalDependencies: + graceful-fs "^4.2.3" + +stable@^0.1.8: + version "0.1.8" + resolved "https://registry.yarnpkg.com/stable/-/stable-0.1.8.tgz#836eb3c8382fe2936feaf544631017ce7d47a3cf" + integrity sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w== + +stack-trace@^0.0.10: + version "0.0.10" + resolved "https://registry.yarnpkg.com/stack-trace/-/stack-trace-0.0.10.tgz#547c70b347e8d32b4e108ea1a2a159e5fdde19c0" + integrity sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA= + +stackframe@^1.1.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/stackframe/-/stackframe-1.2.0.tgz#52429492d63c62eb989804c11552e3d22e779303" + integrity sha512-GrdeshiRmS1YLMYgzF16olf2jJ/IzxXY9lhKOskuVziubpTYcYqyOwYeJKzQkwy7uN0fYSsbsC4RQaXf9LCrYA== + +state-toggle@^1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/state-toggle/-/state-toggle-1.0.3.tgz#e123b16a88e143139b09c6852221bc9815917dfe" + integrity sha512-d/5Z4/2iiCnHw6Xzghyhb+GcmF89bxwgXG60wjIiZaxnymbyOmI8Hk4VqHXiVVp6u2ysaskFfXg3ekCj4WNftQ== + +static-extend@^0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" + integrity sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY= + dependencies: + define-property "^0.2.5" + object-copy "^0.1.0" + +"statuses@>= 1.4.0 < 2", "statuses@>= 1.5.0 < 2", statuses@~1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" + integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow= + +stream-browserify@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.2.tgz#87521d38a44aa7ee91ce1cd2a47df0cb49dd660b" + integrity sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg== + dependencies: + inherits "~2.0.1" + readable-stream "^2.0.2" + +stream-each@^1.1.0: + version "1.2.3" + resolved "https://registry.yarnpkg.com/stream-each/-/stream-each-1.2.3.tgz#ebe27a0c389b04fbcc233642952e10731afa9bae" + integrity sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw== + dependencies: + end-of-stream "^1.1.0" + stream-shift "^1.0.0" + +stream-http@^2.7.2: + version "2.8.3" + resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.8.3.tgz#b2d242469288a5a27ec4fe8933acf623de6514fc" + integrity sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw== + dependencies: + builtin-status-codes "^3.0.0" + inherits "^2.0.1" + readable-stream "^2.3.6" + to-arraybuffer "^1.0.0" + xtend "^4.0.0" + +stream-shift@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.1.tgz#d7088281559ab2778424279b0877da3c392d5a3d" + integrity sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ== + +strict-uri-encode@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713" + integrity sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM= + +strict-uri-encode@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz#b9c7330c7042862f6b142dc274bbcc5866ce3546" + integrity sha1-ucczDHBChi9rFC3CdLvMWGbONUY= + +string-env-interpolation@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/string-env-interpolation/-/string-env-interpolation-1.0.1.tgz#ad4397ae4ac53fe6c91d1402ad6f6a52862c7152" + integrity sha512-78lwMoCcn0nNu8LszbP1UA7g55OeE4v7rCeWnM5B453rnNr4aq+5it3FEYtZrSEiMvHZOZ9Jlqb0OD0M2VInqg== + +string-similarity@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/string-similarity/-/string-similarity-1.2.2.tgz#99b2c20a3c9bbb3903964eae1d89856db3d8db9b" + integrity sha512-IoHUjcw3Srl8nsPlW04U3qwWPk3oG2ffLM0tN853d/E/JlIvcmZmDY2Kz5HzKp4lEi2T7QD7Zuvjq/1rDw+XcQ== + dependencies: + lodash.every "^4.6.0" + lodash.flattendeep "^4.4.0" + lodash.foreach "^4.5.0" + lodash.map "^4.6.0" + lodash.maxby "^4.6.0" + +string-width@^2.0.0, string-width@^2.1.0, string-width@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" + integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== + dependencies: + is-fullwidth-code-point "^2.0.0" + strip-ansi "^4.0.0" + +string-width@^3.0.0, string-width@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" + integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w== + dependencies: + emoji-regex "^7.0.1" + is-fullwidth-code-point "^2.0.0" + strip-ansi "^5.1.0" + +string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.0.tgz#952182c46cc7b2c313d1596e623992bd163b72b5" + integrity sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.0" + +string.prototype.matchall@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-4.0.2.tgz#48bb510326fb9fdeb6a33ceaa81a6ea04ef7648e" + integrity sha512-N/jp6O5fMf9os0JU3E72Qhf590RSRZU/ungsL/qJUYVTNv7hTG0P/dbPjxINVN9jpscu3nzYwKESU3P3RY5tOg== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.0" + has-symbols "^1.0.1" + internal-slot "^1.0.2" + regexp.prototype.flags "^1.3.0" + side-channel "^1.0.2" + +string.prototype.trimend@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.2.tgz#6ddd9a8796bc714b489a3ae22246a208f37bfa46" + integrity sha512-8oAG/hi14Z4nOVP0z6mdiVZ/wqjDtWSLygMigTzAb+7aPEDTleeFf+WrF+alzecxIRkckkJVn+dTlwzJXORATw== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.18.0-next.1" + +string.prototype.trimstart@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.2.tgz#22d45da81015309cd0cdd79787e8919fc5c613e7" + integrity sha512-7F6CdBTl5zyu30BJFdzSTlSlLPwODC23Od+iLoVH8X6+3fvDPPuBVVj9iaB1GOsSTSIgVfsfm27R2FGrAPznWg== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.18.0-next.1" + +string_decoder@^1.0.0, string_decoder@^1.1.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" + integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== + dependencies: + safe-buffer "~5.2.0" + +string_decoder@~0.10.x: + version "0.10.31" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" + integrity sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ= + +string_decoder@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" + integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== + dependencies: + safe-buffer "~5.1.0" + +stringify-entities@^1.0.1: + version "1.3.2" + resolved "https://registry.yarnpkg.com/stringify-entities/-/stringify-entities-1.3.2.tgz#a98417e5471fd227b3e45d3db1861c11caf668f7" + integrity sha512-nrBAQClJAPN2p+uGCVJRPIPakKeKWZ9GtBCmormE7pWOSlHat7+x5A8gx85M7HM5Dt0BP3pP5RhVW77WdbJJ3A== + dependencies: + character-entities-html4 "^1.0.0" + character-entities-legacy "^1.0.0" + is-alphanumerical "^1.0.0" + is-hexadecimal "^1.0.0" + +stringify-entities@^3.0.0, stringify-entities@^3.0.1: + version "3.1.0" + resolved "https://registry.yarnpkg.com/stringify-entities/-/stringify-entities-3.1.0.tgz#b8d3feac256d9ffcc9fa1fefdcf3ca70576ee903" + integrity sha512-3FP+jGMmMV/ffZs86MoghGqAoqXAdxLrJP4GUdrDN1aIScYih5tuIO3eF4To5AJZ79KDZ8Fpdy7QJnK8SsL1Vg== + dependencies: + character-entities-html4 "^1.0.0" + character-entities-legacy "^1.0.0" + xtend "^4.0.0" + +strip-ansi@3.0.1, strip-ansi@^3, strip-ansi@^3.0.0, strip-ansi@^3.0.1: + 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" + +strip-ansi@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" + integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8= + dependencies: + ansi-regex "^3.0.0" + +strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" + integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== + dependencies: + ansi-regex "^4.1.0" + +strip-ansi@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532" + integrity sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w== + dependencies: + ansi-regex "^5.0.0" + +strip-bom-string@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/strip-bom-string/-/strip-bom-string-1.0.0.tgz#e5211e9224369fbb81d633a2f00044dc8cedad92" + integrity sha1-5SEekiQ2n7uB1jOi8ABE3IztrZI= + +strip-bom@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" + integrity sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM= + +strip-bom@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-4.0.0.tgz#9c3505c1db45bcedca3d9cf7a16f5c5aa3901878" + integrity sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w== + +strip-eof@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" + integrity sha1-u0P/VZim6wXYm1n80SnJgzE2Br8= + +strip-final-newline@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" + integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== + +strip-indent@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-3.0.0.tgz#c32e1cee940b6b3432c771bc2c54bcce73cd3001" + integrity sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ== + dependencies: + min-indent "^1.0.0" + +strip-json-comments@^3.0.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" + integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== + +strip-json-comments@~2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" + integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= + +style-loader@^0.23.1: + version "0.23.1" + resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-0.23.1.tgz#cb9154606f3e771ab6c4ab637026a1049174d925" + integrity sha512-XK+uv9kWwhZMZ1y7mysB+zoihsEj4wneFWAS5qoiLwzW0WzSqMrrsIy+a3zkQJq0ipFtBpX5W3MqyRIBF/WFGg== + dependencies: + loader-utils "^1.1.0" + schema-utils "^1.0.0" + +style-to-object@^0.2.1: + version "0.2.3" + resolved "https://registry.yarnpkg.com/style-to-object/-/style-to-object-0.2.3.tgz#afcf42bc03846b1e311880c55632a26ad2780bcb" + integrity sha512-1d/k4EY2N7jVLOqf2j04dTc37TPOv/hHxZmvpg8Pdh8UYydxeu/C1W1U4vD8alzf5V2Gt7rLsmkr4dxAlDm9ng== + dependencies: + inline-style-parser "0.1.1" + +style-to-object@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/style-to-object/-/style-to-object-0.3.0.tgz#b1b790d205991cc783801967214979ee19a76e46" + integrity sha512-CzFnRRXhzWIdItT3OmF8SQfWyahHhjq3HwcMNCNLn+N7klOOqPjMeG/4JSu77D7ypZdGvSzvkrbyeTMizz2VrA== + dependencies: + inline-style-parser "0.1.1" + +stylehacks@^4.0.0: + version "4.0.3" + resolved "https://registry.yarnpkg.com/stylehacks/-/stylehacks-4.0.3.tgz#6718fcaf4d1e07d8a1318690881e8d96726a71d5" + integrity sha512-7GlLk9JwlElY4Y6a/rmbH2MhVlTyVmiJd1PfTCqFaIBEGMYNsrO/v3SeGTdhBThLg4Z+NbOk/qFMwCa+J+3p/g== + dependencies: + browserslist "^4.0.0" + postcss "^7.0.0" + postcss-selector-parser "^3.0.0" + +subscriptions-transport-ws@0.9.18: + version "0.9.18" + resolved "https://registry.yarnpkg.com/subscriptions-transport-ws/-/subscriptions-transport-ws-0.9.18.tgz#bcf02320c911fbadb054f7f928e51c6041a37b97" + integrity sha512-tztzcBTNoEbuErsVQpTN2xUNN/efAZXyCyL5m3x4t6SKrEiTL2N8SaKWBFWM4u56pL79ULif3zjyeq+oV+nOaA== + dependencies: + backo2 "^1.0.2" + eventemitter3 "^3.1.0" + iterall "^1.2.1" + symbol-observable "^1.0.4" + ws "^5.2.0" + +sudo-prompt@^8.2.0: + version "8.2.5" + resolved "https://registry.yarnpkg.com/sudo-prompt/-/sudo-prompt-8.2.5.tgz#cc5ef3769a134bb94b24a631cc09628d4d53603e" + integrity sha512-rlBo3HU/1zAJUrkY6jNxDOC9eVYliG6nS4JA8u8KAshITd07tafMc/Br7xQwCSseXwJ2iCcHCE8SNWX3q8Z+kw== + +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@^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" + +supports-color@^7.0.0, supports-color@^7.1.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" + integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== + dependencies: + has-flag "^4.0.0" + +svgo@^1.0.0: + version "1.3.2" + resolved "https://registry.yarnpkg.com/svgo/-/svgo-1.3.2.tgz#b6dc511c063346c9e415b81e43401145b96d4167" + integrity sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw== + dependencies: + chalk "^2.4.1" + coa "^2.0.2" + css-select "^2.0.0" + css-select-base-adapter "^0.1.1" + css-tree "1.0.0-alpha.37" + csso "^4.0.2" + js-yaml "^3.13.1" + mkdirp "~0.5.1" + object.values "^1.1.0" + sax "~1.2.4" + stable "^0.1.8" + unquote "~1.1.1" + util.promisify "~1.0.0" + +symbol-observable@^1.0.4, symbol-observable@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.2.0.tgz#c22688aed4eab3cdc2dfeacbb561660560a00804" + integrity sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ== + +table@^5.2.3: + version "5.4.6" + resolved "https://registry.yarnpkg.com/table/-/table-5.4.6.tgz#1292d19500ce3f86053b05f0e8e7e4a3bb21079e" + integrity sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug== + dependencies: + ajv "^6.10.2" + lodash "^4.17.14" + slice-ansi "^2.1.0" + string-width "^3.0.0" + +tapable@^1.0.0, tapable@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2" + integrity sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA== + +term-size@^2.1.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/term-size/-/term-size-2.2.1.tgz#2a6a54840432c2fb6320fea0f415531e90189f54" + integrity sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg== + +terser-webpack-plugin@^1.4.3: + version "1.4.5" + resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-1.4.5.tgz#a217aefaea330e734ffacb6120ec1fa312d6040b" + integrity sha512-04Rfe496lN8EYruwi6oPQkG0vo8C+HT49X687FZnpPF0qMAIHONI6HEXYPKDOE8e5HjXTyKfqRd/agHtH0kOtw== + dependencies: + cacache "^12.0.2" + find-cache-dir "^2.1.0" + is-wsl "^1.1.0" + schema-utils "^1.0.0" + serialize-javascript "^4.0.0" + source-map "^0.6.1" + terser "^4.1.2" + webpack-sources "^1.4.0" + worker-farm "^1.7.0" + +terser-webpack-plugin@^2.3.8: + version "2.3.8" + resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-2.3.8.tgz#894764a19b0743f2f704e7c2a848c5283a696724" + integrity sha512-/fKw3R+hWyHfYx7Bv6oPqmk4HGQcrWLtV3X6ggvPuwPNHSnzvVV51z6OaaCOus4YLjutYGOz3pEpbhe6Up2s1w== + dependencies: + cacache "^13.0.1" + find-cache-dir "^3.3.1" + jest-worker "^25.4.0" + p-limit "^2.3.0" + schema-utils "^2.6.6" + serialize-javascript "^4.0.0" + source-map "^0.6.1" + terser "^4.6.12" + webpack-sources "^1.4.3" + +terser@^4.1.2, terser@^4.6.12: + 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" + +text-table@0.2.0, text-table@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" + integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= + +through2@^2.0.0, through2@^2.0.1: + version "2.0.5" + resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd" + integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ== + dependencies: + readable-stream "~2.3.6" + xtend "~4.0.1" + +through@^2.3.6: + version "2.3.8" + resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" + integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= + +thunky@^1.0.2: + version "1.1.0" + resolved "https://registry.yarnpkg.com/thunky/-/thunky-1.1.0.tgz#5abaf714a9405db0504732bbccd2cedd9ef9537d" + integrity sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA== + +timed-out@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-4.0.1.tgz#f32eacac5a175bea25d7fab565ab3ed8741ef56f" + integrity sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8= + +timers-browserify@^2.0.4: + version "2.0.12" + resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.12.tgz#44a45c11fbf407f34f97bccd1577c652361b00ee" + integrity sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ== + dependencies: + setimmediate "^1.0.4" + +timsort@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/timsort/-/timsort-0.3.0.tgz#405411a8e7e6339fe64db9a234de11dc31e02bd4" + integrity sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q= + +tiny-emitter@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/tiny-emitter/-/tiny-emitter-2.1.0.tgz#1d1a56edfc51c43e863cbb5382a72330e3555423" + integrity sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q== + +tmp@^0.0.33: + version "0.0.33" + resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" + integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw== + dependencies: + os-tmpdir "~1.0.2" + +tmp@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.2.1.tgz#8457fc3037dcf4719c251367a1af6500ee1ccf14" + integrity sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ== + dependencies: + rimraf "^3.0.0" + +to-array@0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/to-array/-/to-array-0.1.4.tgz#17e6c11f73dd4f3d74cda7a4ff3238e9ad9bf890" + integrity sha1-F+bBH3PdTz10zaek/zI46a2b+JA= + +to-arraybuffer@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43" + integrity sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M= + +to-fast-properties@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" + integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4= + +to-object-path@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" + integrity sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68= + dependencies: + kind-of "^3.0.2" + +to-readable-stream@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/to-readable-stream/-/to-readable-stream-1.0.0.tgz#ce0aa0c2f3df6adf852efb404a783e77c0475771" + integrity sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q== + +to-regex-range@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38" + integrity sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg= + dependencies: + is-number "^3.0.0" + repeat-string "^1.6.1" + +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" + +to-regex@^3.0.1, to-regex@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce" + integrity sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw== + dependencies: + define-property "^2.0.2" + extend-shallow "^3.0.2" + regex-not "^1.0.2" + safe-regex "^1.1.0" + +toidentifier@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553" + integrity sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw== + +trim-lines@^1.0.0: + version "1.1.3" + resolved "https://registry.yarnpkg.com/trim-lines/-/trim-lines-1.1.3.tgz#839514be82428fd9e7ec89e35081afe8f6f93115" + integrity sha512-E0ZosSWYK2mkSu+KEtQ9/KqarVjA9HztOSX+9FDdNacRAq29RRV6ZQNgob3iuW8Htar9vAfEa6yyt5qBAHZDBA== + +trim-trailing-lines@^1.0.0: + version "1.1.4" + resolved "https://registry.yarnpkg.com/trim-trailing-lines/-/trim-trailing-lines-1.1.4.tgz#bd4abbec7cc880462f10b2c8b5ce1d8d1ec7c2c0" + integrity sha512-rjUWSqnfTNrjbB9NQWfPMH/xRK1deHeGsHoVfpxJ++XeYXE0d6B1En37AHfw3jtfTU7dzMzZL2jjpe8Qb5gLIQ== + +trim@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/trim/-/trim-0.0.1.tgz#5858547f6b290757ee95cccc666fb50084c460dd" + integrity sha1-WFhUf2spB1fulczMZm+1AITEYN0= + +trough@^1.0.0: + version "1.0.5" + resolved "https://registry.yarnpkg.com/trough/-/trough-1.0.5.tgz#b8b639cefad7d0bb2abd37d433ff8293efa5f406" + integrity sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA== + +"true-case-path@^2.2.1": + version "2.2.1" + resolved "https://registry.yarnpkg.com/true-case-path/-/true-case-path-2.2.1.tgz#c5bf04a5bbec3fd118be4084461b3a27c4d796bf" + integrity sha512-0z3j8R7MCjy10kc/g+qg7Ln3alJTodw9aDuVWZa3uiWqfuBMKeAeP2ocWcxoyM3D73yz3Jt/Pu4qPr4wHSdB/Q== + +ts-pnp@^1.1.6: + version "1.2.0" + resolved "https://registry.yarnpkg.com/ts-pnp/-/ts-pnp-1.2.0.tgz#a500ad084b0798f1c3071af391e65912c86bca92" + integrity sha512-csd+vJOb/gkzvcCHgTGSChYpy5f1/XKNsmvBGO4JXS+z1v2HobugDz4s1IeFXM3wZB44uczs+eazB5Q/ccdhQw== + +tsconfig-paths@^3.9.0: + version "3.9.0" + resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.9.0.tgz#098547a6c4448807e8fcb8eae081064ee9a3c90b" + integrity sha512-dRcuzokWhajtZWkQsDVKbWyY+jgcLC5sqJhg2PSgf4ZkH2aHPvaOY8YWGhmjb68b5qqTfasSsDO9k7RUiEmZAw== + dependencies: + "@types/json5" "^0.0.29" + json5 "^1.0.1" + minimist "^1.2.0" + strip-bom "^3.0.0" + +tslib@^1.10.0, tslib@^1.8.1, tslib@^1.9.0: + version "1.14.1" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" + integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== + +tslib@^2.0.0, tslib@~2.0.1: + version "2.0.3" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.0.3.tgz#8e0741ac45fc0c226e58a17bfc3e64b9bc6ca61c" + integrity sha512-uZtkfKblCEQtZKBF6EBXVZeQNl82yqtDQdv+eck8u7tdPxjLu2/lp5/uPW+um2tpuxINHWy3GhiccY7QgEaVHQ== + +tsutils@^3.17.1: + version "3.17.1" + resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.17.1.tgz#ed719917f11ca0dee586272b2ac49e015a2dd759" + integrity sha512-kzeQ5B8H3w60nFY2g8cJIuH7JDpsALXySGtwGJ0p2LSjLgay3NdIpqq5SoOBe46bKDW2iq25irHCr8wjomUS2g== + dependencies: + tslib "^1.8.1" + +tty-browserify@0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6" + integrity sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY= + +type-check@~0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" + integrity sha1-WITKtRLPHTVeP7eE8wgEsrUg23I= + dependencies: + prelude-ls "~1.1.2" + +type-fest@0.15.1: + version "0.15.1" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.15.1.tgz#d2c4e73d3e4a53cf1a906396dd460a1c5178ca00" + integrity sha512-n+UXrN8i5ioo7kqT/nF8xsEzLaqFra7k32SEsSPwvXVGyAcRgV/FUQN/sgfptJTR1oRmmq7z4IXMFSM7im7C9A== + +type-fest@^0.11.0: + version "0.11.0" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.11.0.tgz#97abf0872310fed88a5c466b25681576145e33f1" + integrity sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ== + +type-fest@^0.8.0, type-fest@^0.8.1: + version "0.8.1" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" + integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== + +type-is@~1.6.17, type-is@~1.6.18: + version "1.6.18" + resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" + integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== + dependencies: + media-typer "0.3.0" + mime-types "~2.1.24" + +type-of@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/type-of/-/type-of-2.0.1.tgz#e72a1741896568e9f628378d816d6912f7f23972" + integrity sha1-5yoXQYllaOn2KDeNgW1pEvfyOXI= + +type@^1.0.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/type/-/type-1.2.0.tgz#848dd7698dafa3e54a6c479e759c4bc3f18847a0" + integrity sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg== + +type@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/type/-/type-2.1.0.tgz#9bdc22c648cf8cf86dd23d32336a41cfb6475e3f" + integrity sha512-G9absDWvhAWCV2gmF1zKud3OyC61nZDwWvBL2DApaVFogI07CprggiQAOOjvp2NRjYWFzPyu7vwtDrQFq8jeSA== + +typedarray-to-buffer@^3.1.5: + version "3.1.5" + resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080" + integrity sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q== + dependencies: + is-typedarray "^1.0.0" + +typedarray@^0.0.6: + version "0.0.6" + resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" + integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= + +typescript@^3.9.5: + version "3.9.7" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.9.7.tgz#98d600a5ebdc38f40cb277522f12dc800e9e25fa" + integrity sha512-BLbiRkiBzAwsjut4x/dsibSTB6yWpwT5qWmC2OfuCg3GgVQCSgMs4vEctYPhsaGtd0AeuuHMkjZ2h2WG8MSzRw== + +unc-path-regex@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/unc-path-regex/-/unc-path-regex-0.1.2.tgz#e73dd3d7b0d7c5ed86fbac6b0ae7d8c6a69d50fa" + integrity sha1-5z3T17DXxe2G+6xrCufYxqadUPo= + +underscore.string@^3.3.5: + version "3.3.5" + resolved "https://registry.yarnpkg.com/underscore.string/-/underscore.string-3.3.5.tgz#fc2ad255b8bd309e239cbc5816fd23a9b7ea4023" + integrity sha512-g+dpmgn+XBneLmXXo+sGlW5xQEt4ErkS3mgeN2GFbremYeMBSJKr9Wf2KJplQVaiPY/f7FN6atosWYNm9ovrYg== + dependencies: + sprintf-js "^1.0.3" + util-deprecate "^1.0.2" + +unherit@^1.0.4: + version "1.1.3" + resolved "https://registry.yarnpkg.com/unherit/-/unherit-1.1.3.tgz#6c9b503f2b41b262330c80e91c8614abdaa69c22" + integrity sha512-Ft16BJcnapDKp0+J/rqFC3Rrk6Y/Ng4nzsC028k2jdDII/rdZ7Wd3pPT/6+vIIxRagwRc9K0IUX0Ra4fKvw+WQ== + dependencies: + inherits "^2.0.0" + xtend "^4.0.0" + +unicode-canonical-property-names-ecmascript@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz#2619800c4c825800efdd8343af7dd9933cbe2818" + integrity sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ== + +unicode-match-property-ecmascript@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz#8ed2a32569961bce9227d09cd3ffbb8fed5f020c" + integrity sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg== + dependencies: + unicode-canonical-property-names-ecmascript "^1.0.4" + unicode-property-aliases-ecmascript "^1.0.4" + +unicode-match-property-value-ecmascript@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz#0d91f600eeeb3096aa962b1d6fc88876e64ea531" + integrity sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ== + +unicode-property-aliases-ecmascript@^1.0.4: + version "1.1.0" + resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz#dd57a99f6207bedff4628abefb94c50db941c8f4" + integrity sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg== + +unified@^6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/unified/-/unified-6.2.0.tgz#7fbd630f719126d67d40c644b7e3f617035f6dba" + integrity sha512-1k+KPhlVtqmG99RaTbAv/usu85fcSRu3wY8X+vnsEhIxNP5VbVIDiXnLqyKIG+UMdyTg0ZX9EI6k2AfjJkHPtA== + dependencies: + bail "^1.0.0" + extend "^3.0.0" + is-plain-obj "^1.1.0" + trough "^1.0.0" + vfile "^2.0.0" + x-is-string "^0.1.0" + +unified@^7.0.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/unified/-/unified-7.1.0.tgz#5032f1c1ee3364bd09da12e27fdd4a7553c7be13" + integrity sha512-lbk82UOIGuCEsZhPj8rNAkXSDXd6p0QLzIuSsCdxrqnqU56St4eyOB+AlXsVgVeRmetPTYydIuvFfpDIed8mqw== + dependencies: + "@types/unist" "^2.0.0" + "@types/vfile" "^3.0.0" + bail "^1.0.0" + extend "^3.0.0" + is-plain-obj "^1.1.0" + trough "^1.0.0" + vfile "^3.0.0" + x-is-string "^0.1.0" + +unified@^8.4.2: + version "8.4.2" + resolved "https://registry.yarnpkg.com/unified/-/unified-8.4.2.tgz#13ad58b4a437faa2751a4a4c6a16f680c500fff1" + integrity sha512-JCrmN13jI4+h9UAyKEoGcDZV+i1E7BLFuG7OsaDvTXI5P0qhHX+vZO/kOhz9jn8HGENDKbwSeB0nVOg4gVStGA== + dependencies: + bail "^1.0.0" + extend "^3.0.0" + is-plain-obj "^2.0.0" + trough "^1.0.0" + vfile "^4.0.0" + +union-value@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.1.tgz#0b6fe7b835aecda61c6ea4d4f02c14221e109847" + integrity sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg== + dependencies: + arr-union "^3.1.0" + get-value "^2.0.6" + is-extendable "^0.1.1" + set-value "^2.0.1" + +uniq@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/uniq/-/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff" + integrity sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8= + +uniqs@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/uniqs/-/uniqs-2.0.0.tgz#ffede4b36b25290696e6e165d4a59edb998e6b02" + integrity sha1-/+3ks2slKQaW5uFl1KWe25mOawI= + +unique-filename@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-1.1.1.tgz#1d69769369ada0583103a1e6ae87681b56573230" + integrity sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ== + dependencies: + unique-slug "^2.0.0" + +unique-slug@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/unique-slug/-/unique-slug-2.0.2.tgz#baabce91083fc64e945b0f3ad613e264f7cd4e6c" + integrity sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w== + dependencies: + imurmurhash "^0.1.4" + +unique-string@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/unique-string/-/unique-string-2.0.0.tgz#39c6451f81afb2749de2b233e3f7c5e8843bd89d" + integrity sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg== + dependencies: + crypto-random-string "^2.0.0" + +unist-builder@^1.0.1: + version "1.0.4" + resolved "https://registry.yarnpkg.com/unist-builder/-/unist-builder-1.0.4.tgz#e1808aed30bd72adc3607f25afecebef4dd59e17" + integrity sha512-v6xbUPP7ILrT15fHGrNyHc1Xda8H3xVhP7/HAIotHOhVPjH5dCXA097C3Rry1Q2O+HbOLCao4hfPB+EYEjHgVg== + dependencies: + object-assign "^4.1.0" + +unist-util-generated@^1.1.0: + version "1.1.5" + resolved "https://registry.yarnpkg.com/unist-util-generated/-/unist-util-generated-1.1.5.tgz#1e903e68467931ebfaea386dae9ea253628acd42" + integrity sha512-1TC+NxQa4N9pNdayCYA1EGUOCAO0Le3fVp7Jzns6lnua/mYgwHo0tz5WUAfrdpNch1RZLHc61VZ1SDgrtNXLSw== + +unist-util-is@^2.0.0: + version "2.1.3" + resolved "https://registry.yarnpkg.com/unist-util-is/-/unist-util-is-2.1.3.tgz#459182db31f4742fceaea88d429693cbf0043d20" + integrity sha512-4WbQX2iwfr/+PfM4U3zd2VNXY+dWtZsN1fLnWEi2QQXA4qyDYAZcDMfXUX0Cu6XZUHHAO9q4nyxxLT4Awk1qUA== + +unist-util-is@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/unist-util-is/-/unist-util-is-3.0.0.tgz#d9e84381c2468e82629e4a5be9d7d05a2dd324cd" + integrity sha512-sVZZX3+kspVNmLWBPAB6r+7D9ZgAFPNWm66f7YNb420RlQSbn+n8rG8dGZSkrER7ZIXGQYNm5pqC3v3HopH24A== + +unist-util-is@^4.0.0: + version "4.0.3" + resolved "https://registry.yarnpkg.com/unist-util-is/-/unist-util-is-4.0.3.tgz#e8b44db55fc20c43752b3346c116344d45d7c91d" + integrity sha512-bTofCFVx0iQM8Jqb1TBDVRIQW03YkD3p66JOd/aCWuqzlLyUtx1ZAGw/u+Zw+SttKvSVcvTiKYbfrtLoLefykw== + +unist-util-modify-children@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/unist-util-modify-children/-/unist-util-modify-children-2.0.0.tgz#9c9c30d4e32502aabb3fde10d7872a17c86801e2" + integrity sha512-HGrj7JQo9DwZt8XFsX8UD4gGqOsIlCih9opG6Y+N11XqkBGKzHo8cvDi+MfQQgiZ7zXRUiQREYHhjOBHERTMdg== + dependencies: + array-iterate "^1.0.0" + +unist-util-position@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/unist-util-position/-/unist-util-position-3.1.0.tgz#1c42ee6301f8d52f47d14f62bbdb796571fa2d47" + integrity sha512-w+PkwCbYSFw8vpgWD0v7zRCl1FpY3fjDSQ3/N/wNd9Ffa4gPi8+4keqt99N3XW6F99t/mUzp2xAhNmfKWp95QA== + +unist-util-remove-position@^1.0.0, unist-util-remove-position@^1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/unist-util-remove-position/-/unist-util-remove-position-1.1.4.tgz#ec037348b6102c897703eee6d0294ca4755a2020" + integrity sha512-tLqd653ArxJIPnKII6LMZwH+mb5q+n/GtXQZo6S6csPRs5zB0u79Yw8ouR3wTw8wxvdJFhpP6Y7jorWdCgLO0A== + dependencies: + unist-util-visit "^1.1.0" + +unist-util-remove@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/unist-util-remove/-/unist-util-remove-2.0.1.tgz#fa13c424ff8e964f3aa20d1098b9a690c6bfaa39" + integrity sha512-YtuetK6o16CMfG+0u4nndsWpujgsHDHHLyE0yGpJLLn5xSjKeyGyzEBOI2XbmoUHCYabmNgX52uxlWoQhcvR7Q== + dependencies: + unist-util-is "^4.0.0" + +unist-util-select@^1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/unist-util-select/-/unist-util-select-1.5.0.tgz#a93c2be8c0f653827803b81331adec2aa24cd933" + integrity sha1-qTwr6MD2U4J4A7gTMa3sKqJM2TM= + dependencies: + css-selector-parser "^1.1.0" + debug "^2.2.0" + nth-check "^1.0.1" + +unist-util-stringify-position@^1.0.0, unist-util-stringify-position@^1.1.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/unist-util-stringify-position/-/unist-util-stringify-position-1.1.2.tgz#3f37fcf351279dcbca7480ab5889bb8a832ee1c6" + integrity sha512-pNCVrk64LZv1kElr0N1wPiHEUoXNVFERp+mlTg/s9R5Lwg87f9bM/3sQB99w+N9D/qnM9ar3+AKDBwo/gm/iQQ== + +unist-util-stringify-position@^2.0.0, unist-util-stringify-position@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/unist-util-stringify-position/-/unist-util-stringify-position-2.0.3.tgz#cce3bfa1cdf85ba7375d1d5b17bdc4cada9bd9da" + integrity sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g== + dependencies: + "@types/unist" "^2.0.2" + +unist-util-visit-children@^1.0.0: + version "1.1.4" + resolved "https://registry.yarnpkg.com/unist-util-visit-children/-/unist-util-visit-children-1.1.4.tgz#e8a087e58a33a2815f76ea1901c15dec2cb4b432" + integrity sha512-sA/nXwYRCQVRwZU2/tQWUqJ9JSFM1X3x7JIOsIgSzrFHcfVt6NkzDtKzyxg2cZWkCwGF9CO8x4QNZRJRMK8FeQ== + +unist-util-visit-parents@^2.0.0: + version "2.1.2" + resolved "https://registry.yarnpkg.com/unist-util-visit-parents/-/unist-util-visit-parents-2.1.2.tgz#25e43e55312166f3348cae6743588781d112c1e9" + integrity sha512-DyN5vD4NE3aSeB+PXYNKxzGsfocxp6asDc2XXE3b0ekO2BaRUpBicbbUygfSvYfUz1IkmjFR1YF7dPklraMZ2g== + dependencies: + unist-util-is "^3.0.0" + +unist-util-visit-parents@^3.0.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/unist-util-visit-parents/-/unist-util-visit-parents-3.1.1.tgz#65a6ce698f78a6b0f56aa0e88f13801886cdaef6" + integrity sha512-1KROIZWo6bcMrZEwiH2UrXDyalAa0uqzWCxCJj6lPOvTve2WkfgCytoDTPaMnodXh1WrXOq0haVYHj99ynJlsg== + dependencies: + "@types/unist" "^2.0.0" + unist-util-is "^4.0.0" + +unist-util-visit@^1.0.0, unist-util-visit@^1.1.0, unist-util-visit@^1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/unist-util-visit/-/unist-util-visit-1.4.1.tgz#4724aaa8486e6ee6e26d7ff3c8685960d560b1e3" + integrity sha512-AvGNk7Bb//EmJZyhtRUnNMEpId/AZ5Ph/KUpTI09WHQuDZHKovQ1oEv3mfmKpWKtoMzyMC4GLBm1Zy5k12fjIw== + dependencies: + unist-util-visit-parents "^2.0.0" + +unist-util-visit@^2.0.0, unist-util-visit@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/unist-util-visit/-/unist-util-visit-2.0.3.tgz#c3703893146df47203bb8a9795af47d7b971208c" + integrity sha512-iJ4/RczbJMkD0712mGktuGpm/U4By4FfDonL7N/9tATGIF4imikjOuagyMY53tnZq3NP6BcmlrHhEKAfGWjh7Q== + dependencies: + "@types/unist" "^2.0.0" + unist-util-is "^4.0.0" + unist-util-visit-parents "^3.0.0" + +universalify@^0.1.0: + version "0.1.2" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" + integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== + +universalify@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-1.0.0.tgz#b61a1da173e8435b2fe3c67d29b9adf8594bd16d" + integrity sha512-rb6X1W158d7pRQBg5gkR8uPaSfiids68LTJQYOtEUhoJUWBdaQHsuT/EUduxXYxcrt4r5PJ4fuHW1MHT6p0qug== + +universalify@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717" + integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ== + +unixify@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unixify/-/unixify-1.0.0.tgz#3a641c8c2ffbce4da683a5c70f03a462940c2090" + integrity sha1-OmQcjC/7zk2mg6XHDwOkYpQMIJA= + dependencies: + normalize-path "^2.1.1" + +unpipe@1.0.0, unpipe@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" + integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw= + +unquote@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/unquote/-/unquote-1.1.1.tgz#8fded7324ec6e88a0ff8b905e7c098cdc086d544" + integrity sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ= + +unset-value@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" + integrity sha1-g3aHP30jNRef+x5vw6jtDfyKtVk= + dependencies: + has-value "^0.3.1" + isobject "^3.0.0" + +untildify@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/untildify/-/untildify-4.0.0.tgz#2bc947b953652487e4600949fb091e3ae8cd919b" + integrity sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw== + +upath@^1.1.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/upath/-/upath-1.2.0.tgz#8f66dbcd55a883acdae4408af8b035a5044c1894" + integrity sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg== + +update-notifier@^4.1.3: + version "4.1.3" + resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-4.1.3.tgz#be86ee13e8ce48fb50043ff72057b5bd598e1ea3" + integrity sha512-Yld6Z0RyCYGB6ckIjffGOSOmHXj1gMeE7aROz4MG+XMkmixBX4jUngrGXNYz7wPKBmtoD4MnBa2Anu7RSKht/A== + dependencies: + boxen "^4.2.0" + chalk "^3.0.0" + configstore "^5.0.1" + has-yarn "^2.1.0" + import-lazy "^2.1.0" + is-ci "^2.0.0" + is-installed-globally "^0.3.1" + is-npm "^4.0.0" + is-yarn-global "^0.3.0" + latest-version "^5.0.0" + pupa "^2.0.1" + semver-diff "^3.1.1" + xdg-basedir "^4.0.0" + +uri-js@^4.2.2: + version "4.4.0" + resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.0.tgz#aa714261de793e8a82347a7bcc9ce74e86f28602" + integrity sha512-B0yRTzYdUCCn9n+F4+Gh4yIDtMQcaJsmYBDsTSG8g/OejKBodLQ2IHfN3bM7jUsRXndopT7OIXWdYqc1fjmV6g== + dependencies: + punycode "^2.1.0" + +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= + +url-loader@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/url-loader/-/url-loader-1.1.2.tgz#b971d191b83af693c5e3fea4064be9e1f2d7f8d8" + integrity sha512-dXHkKmw8FhPqu8asTc1puBfe3TehOCo2+RmOOev5suNCIYBcT626kxiWg1NBVkwc4rO8BGa7gP70W7VXuqHrjg== + dependencies: + loader-utils "^1.1.0" + mime "^2.0.3" + schema-utils "^1.0.0" + +url-parse-lax@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-3.0.0.tgz#16b5cafc07dbe3676c1b1999177823d6503acb0c" + integrity sha1-FrXK/Afb42dsGxmZF3gj1lA6yww= + dependencies: + prepend-http "^2.0.0" + +url-parse@^1.1.8, url-parse@^1.4.3: + version "1.4.7" + resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.4.7.tgz#a8a83535e8c00a316e403a5db4ac1b9b853ae278" + integrity sha512-d3uaVyzDB9tQoSXFvuSUNFibTd9zxd2bkVrDRvF5TmvWWQwqE4lgYJ5m+x1DbecWkw+LK4RNl2CU1hHuOKPVlg== + dependencies: + querystringify "^2.1.1" + requires-port "^1.0.0" + +url-to-options@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/url-to-options/-/url-to-options-1.0.1.tgz#1505a03a289a48cbd7a434efbaeec5055f5633a9" + integrity sha1-FQWgOiiaSMvXpDTvuu7FBV9WM6k= + +url@^0.11.0: + version "0.11.0" + resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1" + integrity sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE= + dependencies: + punycode "1.3.2" + querystring "0.2.0" + +use@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" + integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== + +utf-8-validate@^5.0.2: + version "5.0.3" + resolved "https://registry.yarnpkg.com/utf-8-validate/-/utf-8-validate-5.0.3.tgz#3b64e418ad2ff829809025fdfef595eab2f03a27" + integrity sha512-jtJM6fpGv8C1SoH4PtG22pGto6x+Y8uPprW0tw3//gGFhDDTiuksgradgFN6yRayDP4SyZZa6ZMGHLIa17+M8A== + dependencies: + node-gyp-build "^4.2.0" + +util-deprecate@^1.0.1, util-deprecate@^1.0.2, util-deprecate@~1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= + +util.promisify@^1.0.1, util.promisify@~1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.1.tgz#6baf7774b80eeb0f7520d8b81d07982a59abbaee" + integrity sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.2" + has-symbols "^1.0.1" + object.getownpropertydescriptors "^2.1.0" + +util@0.10.3: + version "0.10.3" + resolved "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9" + integrity sha1-evsa/lCAUkZInj23/g7TeTNqwPk= + dependencies: + inherits "2.0.1" + +util@^0.11.0: + version "0.11.1" + resolved "https://registry.yarnpkg.com/util/-/util-0.11.1.tgz#3236733720ec64bb27f6e26f421aaa2e1b588d61" + integrity sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ== + dependencies: + inherits "2.0.3" + +utila@~0.4: + version "0.4.0" + resolved "https://registry.yarnpkg.com/utila/-/utila-0.4.0.tgz#8a16a05d445657a3aea5eecc5b12a4fa5379772c" + integrity sha1-ihagXURWV6Oupe7MWxKk+lN5dyw= + +utils-merge@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" + integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM= + +uuid@3.4.0, uuid@^3.0.0, uuid@^3.3.2, uuid@^3.4.0: + version "3.4.0" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" + integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== + +v8-compile-cache@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-1.1.2.tgz#8d32e4f16974654657e676e0e467a348e89b0dc4" + integrity sha512-ejdrifsIydN1XDH7EuR2hn8ZrkRKUYF7tUcBjBy/lhrCvs2K+zRlbW9UHc0IQ9RsYFZJFqJrieoIHfkCa0DBRA== + +v8-compile-cache@^2.0.3: + version "2.2.0" + resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.2.0.tgz#9471efa3ef9128d2f7c6a7ca39c4dd6b5055b132" + integrity sha512-gTpR5XQNKFwOd4clxfnhaqvfqMpqEwr4tOtCyz4MtYZX2JYhfr1JvBFKdS+7K/9rfpZR3VLX+YWBbKoxCgS43Q== + +valid-url@1.0.9, valid-url@^1.0.9: + version "1.0.9" + resolved "https://registry.yarnpkg.com/valid-url/-/valid-url-1.0.9.tgz#1c14479b40f1397a75782f115e4086447433a200" + integrity sha1-HBRHm0DxOXp1eC8RXkCGRHQzogA= + +validate-npm-package-license@^3.0.1: + version "3.0.4" + resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" + integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== + dependencies: + spdx-correct "^3.0.0" + spdx-expression-parse "^3.0.0" + +vary@^1, vary@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" + integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw= + +vendors@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/vendors/-/vendors-1.0.4.tgz#e2b800a53e7a29b93506c3cf41100d16c4c4ad8e" + integrity sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w== + +vfile-location@^2.0.0: + version "2.0.6" + resolved "https://registry.yarnpkg.com/vfile-location/-/vfile-location-2.0.6.tgz#8a274f39411b8719ea5728802e10d9e0dff1519e" + integrity sha512-sSFdyCP3G6Ka0CEmN83A2YCMKIieHx0EDaj5IDP4g1pa5ZJ4FJDvpO0WODLxo4LUX4oe52gmSCK7Jw4SBghqxA== + +vfile-message@*, vfile-message@^2.0.0: + version "2.0.4" + resolved "https://registry.yarnpkg.com/vfile-message/-/vfile-message-2.0.4.tgz#5b43b88171d409eae58477d13f23dd41d52c371a" + integrity sha512-DjssxRGkMvifUOJre00juHoP9DPWuzjxKuMDrhNbk2TdaYYBNMStsNhEOt3idrtI12VQYM/1+iM0KOzXi4pxwQ== + dependencies: + "@types/unist" "^2.0.0" + unist-util-stringify-position "^2.0.0" + +vfile-message@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/vfile-message/-/vfile-message-1.1.1.tgz#5833ae078a1dfa2d96e9647886cd32993ab313e1" + integrity sha512-1WmsopSGhWt5laNir+633LszXvZ+Z/lxveBf6yhGsqnQIhlhzooZae7zV6YVM1Sdkw68dtAW3ow0pOdPANugvA== + dependencies: + unist-util-stringify-position "^1.1.1" + +vfile@^2.0.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/vfile/-/vfile-2.3.0.tgz#e62d8e72b20e83c324bc6c67278ee272488bf84a" + integrity sha512-ASt4mBUHcTpMKD/l5Q+WJXNtshlWxOogYyGYYrg4lt/vuRjC1EFQtlAofL5VmtVNIZJzWYFJjzGWZ0Gw8pzW1w== + dependencies: + is-buffer "^1.1.4" + replace-ext "1.0.0" + unist-util-stringify-position "^1.0.0" + vfile-message "^1.0.0" + +vfile@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/vfile/-/vfile-3.0.1.tgz#47331d2abe3282424f4a4bb6acd20a44c4121803" + integrity sha512-y7Y3gH9BsUSdD4KzHsuMaCzRjglXN0W2EcMf0gpvu6+SbsGhMje7xDc8AEoeXy6mIwCKMI6BkjMsRjzQbhMEjQ== + dependencies: + is-buffer "^2.0.0" + replace-ext "1.0.0" + unist-util-stringify-position "^1.0.0" + vfile-message "^1.0.0" + +vfile@^4.0.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/vfile/-/vfile-4.2.0.tgz#26c78ac92eb70816b01d4565e003b7e65a2a0e01" + integrity sha512-a/alcwCvtuc8OX92rqqo7PflxiCgXRFjdyoGVuYV+qbgCb0GgZJRvIgCD4+U/Kl1yhaRsaTwksF88xbPyGsgpw== + dependencies: + "@types/unist" "^2.0.0" + is-buffer "^2.0.0" + replace-ext "1.0.0" + unist-util-stringify-position "^2.0.0" + vfile-message "^2.0.0" + +vm-browserify@^1.0.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-1.1.2.tgz#78641c488b8e6ca91a75f511e7a3b32a86e5dda0" + integrity sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ== + +vscode-languageserver-types@^3.15.1: + version "3.15.1" + resolved "https://registry.yarnpkg.com/vscode-languageserver-types/-/vscode-languageserver-types-3.15.1.tgz#17be71d78d2f6236d414f0001ce1ef4d23e6b6de" + integrity sha512-+a9MPUQrNGRrGU630OGbYVQ+11iOIovjCkqxajPa9w57Sd5ruK8WQNsslzpa0x/QJqC8kRc2DUxWjIFwoNm4ZQ== + +warning@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/warning/-/warning-4.0.3.tgz#16e9e077eb8a86d6af7d64aa1e05fd85b4678ca3" + integrity sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w== + dependencies: + loose-envify "^1.0.0" + +watchpack-chokidar2@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/watchpack-chokidar2/-/watchpack-chokidar2-2.0.0.tgz#9948a1866cbbd6cb824dea13a7ed691f6c8ddff0" + integrity sha512-9TyfOyN/zLUbA288wZ8IsMZ+6cbzvsNyEzSBp6e/zkifi6xxbl8SmQ/CxQq32k8NNqrdVEVUVSEf56L4rQ/ZxA== + dependencies: + chokidar "^2.1.8" + +watchpack@^1.7.4: + version "1.7.4" + resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.7.4.tgz#6e9da53b3c80bb2d6508188f5b200410866cd30b" + integrity sha512-aWAgTW4MoSJzZPAicljkO1hsi1oKj/RRq/OJQh2PKI2UKL04c2Bs+MBOB+BBABHTXJpf9mCwHN7ANCvYsvY2sg== + dependencies: + graceful-fs "^4.1.2" + neo-async "^2.5.0" + optionalDependencies: + chokidar "^3.4.1" + watchpack-chokidar2 "^2.0.0" + +wbuf@^1.1.0, wbuf@^1.7.3: + version "1.7.3" + resolved "https://registry.yarnpkg.com/wbuf/-/wbuf-1.7.3.tgz#c1d8d149316d3ea852848895cb6a0bfe887b87df" + integrity sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA== + dependencies: + minimalistic-assert "^1.0.0" + +web-namespaces@^1.0.0, web-namespaces@^1.1.2: + version "1.1.4" + resolved "https://registry.yarnpkg.com/web-namespaces/-/web-namespaces-1.1.4.tgz#bc98a3de60dadd7faefc403d1076d529f5e030ec" + integrity sha512-wYxSGajtmoP4WxfejAPIr4l0fVh+jeMXZb08wNc0tMg6xsfZXj3cECqIK0G7ZAqUq0PP8WlMDtaOGVBTAWztNw== + +webpack-dev-middleware@^3.7.2: + version "3.7.2" + resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-3.7.2.tgz#0019c3db716e3fa5cecbf64f2ab88a74bab331f3" + integrity sha512-1xC42LxbYoqLNAhV6YzTYacicgMZQTqRd27Sim9wn5hJrX3I5nxYy1SxSd4+gjUFsz1dQFj+yEe6zEVmSkeJjw== + dependencies: + memory-fs "^0.4.1" + mime "^2.4.4" + mkdirp "^0.5.1" + range-parser "^1.2.1" + webpack-log "^2.0.0" + +webpack-dev-server@^3.11.0: + version "3.11.0" + resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-3.11.0.tgz#8f154a3bce1bcfd1cc618ef4e703278855e7ff8c" + integrity sha512-PUxZ+oSTxogFQgkTtFndEtJIPNmml7ExwufBZ9L2/Xyyd5PnOL5UreWe5ZT7IU25DSdykL9p1MLQzmLh2ljSeg== + dependencies: + ansi-html "0.0.7" + bonjour "^3.5.0" + chokidar "^2.1.8" + compression "^1.7.4" + connect-history-api-fallback "^1.6.0" + debug "^4.1.1" + del "^4.1.1" + express "^4.17.1" + html-entities "^1.3.1" + http-proxy-middleware "0.19.1" + import-local "^2.0.0" + internal-ip "^4.3.0" + ip "^1.1.5" + is-absolute-url "^3.0.3" + killable "^1.0.1" + loglevel "^1.6.8" + opn "^5.5.0" + p-retry "^3.0.1" + portfinder "^1.0.26" + schema-utils "^1.0.0" + selfsigned "^1.10.7" + semver "^6.3.0" + serve-index "^1.9.1" + sockjs "0.3.20" + sockjs-client "1.4.0" + spdy "^4.0.2" + strip-ansi "^3.0.1" + supports-color "^6.1.0" + url "^0.11.0" + webpack-dev-middleware "^3.7.2" + webpack-log "^2.0.0" + ws "^6.2.1" + yargs "^13.3.2" + +webpack-hot-middleware@^2.25.0: + version "2.25.0" + resolved "https://registry.yarnpkg.com/webpack-hot-middleware/-/webpack-hot-middleware-2.25.0.tgz#4528a0a63ec37f8f8ef565cf9e534d57d09fe706" + integrity sha512-xs5dPOrGPCzuRXNi8F6rwhawWvQQkeli5Ro48PRuQh8pYPCPmNnltP9itiUPT4xI8oW+y0m59lyyeQk54s5VgA== + dependencies: + ansi-html "0.0.7" + html-entities "^1.2.0" + querystring "^0.2.0" + strip-ansi "^3.0.0" + +webpack-log@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/webpack-log/-/webpack-log-2.0.0.tgz#5b7928e0637593f119d32f6227c1e0ac31e1b47f" + integrity sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg== + dependencies: + ansi-colors "^3.0.0" + uuid "^3.3.2" + +webpack-merge@^4.2.2: + version "4.2.2" + resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-4.2.2.tgz#a27c52ea783d1398afd2087f547d7b9d2f43634d" + integrity sha512-TUE1UGoTX2Cd42j3krGYqObZbOD+xF7u28WB7tfUordytSjbWTIjK/8V0amkBfTYN4/pB/GIDlJZZ657BGG19g== + dependencies: + lodash "^4.17.15" + +webpack-sources@^1.1.0, webpack-sources@^1.4.0, webpack-sources@^1.4.1, webpack-sources@^1.4.3: + version "1.4.3" + resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.4.3.tgz#eedd8ec0b928fbf1cbfe994e22d2d890f330a933" + integrity sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ== + dependencies: + source-list-map "^2.0.0" + source-map "~0.6.1" + +webpack-stats-plugin@^0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/webpack-stats-plugin/-/webpack-stats-plugin-0.3.2.tgz#c06b185aa5dcc93b3f0c3a7891d24a111f849740" + integrity sha512-kxEtPQ6lBBik2qtJlsZkiaDMI6rGXe9w1kLH9ZCdt0wgCGVnbwwPlP60cMqG6tILNFYqXDxNt4+c4OIIuE+Fnw== + +webpack-virtual-modules@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/webpack-virtual-modules/-/webpack-virtual-modules-0.2.2.tgz#20863dc3cb6bb2104729fff951fbe14b18bd0299" + integrity sha512-kDUmfm3BZrei0y+1NTHJInejzxfhtU8eDj2M7OKb2IWrPFAeO1SOH2KuQ68MSZu9IGEHcxbkKKR1v18FrUSOmA== + dependencies: + debug "^3.0.0" + +webpack@^4.44.1: + version "4.44.2" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.44.2.tgz#6bfe2b0af055c8b2d1e90ed2cd9363f841266b72" + integrity sha512-6KJVGlCxYdISyurpQ0IPTklv+DULv05rs2hseIXer6D7KrUicRDLFb4IUM1S6LUAKypPM/nSiVSuv8jHu1m3/Q== + dependencies: + "@webassemblyjs/ast" "1.9.0" + "@webassemblyjs/helper-module-context" "1.9.0" + "@webassemblyjs/wasm-edit" "1.9.0" + "@webassemblyjs/wasm-parser" "1.9.0" + acorn "^6.4.1" + ajv "^6.10.2" + ajv-keywords "^3.4.1" + chrome-trace-event "^1.0.2" + enhanced-resolve "^4.3.0" + eslint-scope "^4.0.3" + json-parse-better-errors "^1.0.2" + loader-runner "^2.4.0" + loader-utils "^1.2.3" + memory-fs "^0.4.1" + micromatch "^3.1.10" + mkdirp "^0.5.3" + neo-async "^2.6.1" + node-libs-browser "^2.2.1" + schema-utils "^1.0.0" + tapable "^1.1.3" + terser-webpack-plugin "^1.4.3" + watchpack "^1.7.4" + webpack-sources "^1.4.1" + +websocket-driver@0.6.5: + version "0.6.5" + resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.6.5.tgz#5cb2556ceb85f4373c6d8238aa691c8454e13a36" + integrity sha1-XLJVbOuF9Dc8bYI4qmkchFThOjY= + dependencies: + websocket-extensions ">=0.1.1" + +websocket-driver@>=0.5.1: + version "0.7.4" + resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.4.tgz#89ad5295bbf64b480abcba31e4953aca706f5760" + integrity sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg== + dependencies: + http-parser-js ">=0.5.1" + safe-buffer ">=5.1.0" + websocket-extensions ">=0.1.1" + +websocket-extensions@>=0.1.1: + version "0.1.4" + resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.4.tgz#7f8473bc839dfd87608adb95d7eb075211578a42" + integrity sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg== + +websocket@1.0.32: + version "1.0.32" + resolved "https://registry.yarnpkg.com/websocket/-/websocket-1.0.32.tgz#1f16ddab3a21a2d929dec1687ab21cfdc6d3dbb1" + integrity sha512-i4yhcllSP4wrpoPMU2N0TQ/q0O94LRG/eUQjEAamRltjQ1oT1PFFKOG4i877OlJgCG8rw6LrrowJp+TYCEWF7Q== + dependencies: + bufferutil "^4.0.1" + debug "^2.2.0" + es5-ext "^0.10.50" + typedarray-to-buffer "^3.1.5" + utf-8-validate "^5.0.2" + yaeti "^0.0.6" + +which-module@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" + integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= + +which@^1.2.14, which@^1.2.9: + version "1.3.1" + resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" + integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== + dependencies: + isexe "^2.0.0" + +which@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" + integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== + dependencies: + isexe "^2.0.0" + +widest-line@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/widest-line/-/widest-line-3.1.0.tgz#8292333bbf66cb45ff0de1603b136b7ae1496eca" + integrity sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg== + dependencies: + string-width "^4.0.0" + +with-open-file@^0.1.6: + version "0.1.7" + resolved "https://registry.yarnpkg.com/with-open-file/-/with-open-file-0.1.7.tgz#e2de8d974e8a8ae6e58886be4fe8e7465b58a729" + integrity sha512-ecJS2/oHtESJ1t3ZfMI3B7KIDKyfN0O16miWxdn30zdh66Yd3LsRFebXZXq6GU4xfxLf6nVxp9kIqElb5fqczA== + dependencies: + p-finally "^1.0.0" + p-try "^2.1.0" + pify "^4.0.1" + +word-wrap@~1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" + integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== + +worker-farm@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.7.0.tgz#26a94c5391bbca926152002f69b84a4bf772e5a8" + integrity sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw== + dependencies: + errno "~0.1.7" + +wrap-ansi@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-5.1.0.tgz#1fd1f67235d5b6d0fee781056001bfb694c03b09" + integrity sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q== + dependencies: + ansi-styles "^3.2.0" + string-width "^3.0.0" + strip-ansi "^5.0.0" + +wrap-ansi@^6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53" + integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + +wrappy@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= + +write-file-atomic@^3.0.0: + version "3.0.3" + resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-3.0.3.tgz#56bd5c5a5c70481cd19c571bd39ab965a5de56e8" + integrity sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q== + dependencies: + imurmurhash "^0.1.4" + is-typedarray "^1.0.0" + signal-exit "^3.0.2" + typedarray-to-buffer "^3.1.5" + +write@1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/write/-/write-1.0.3.tgz#0800e14523b923a387e415123c865616aae0f5c3" + integrity sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig== + dependencies: + mkdirp "^0.5.1" + +ws@^5.2.0: + version "5.2.2" + resolved "https://registry.yarnpkg.com/ws/-/ws-5.2.2.tgz#dffef14866b8e8dc9133582514d1befaf96e980f" + integrity sha512-jaHFD6PFv6UgoIVda6qZllptQsMlDEJkTQcybzzXDYM1XO9Y8em691FGMPmM46WGyLU4z9KMgQN+qrux/nhlHA== + dependencies: + async-limiter "~1.0.0" + +ws@^6.2.1: + version "6.2.1" + resolved "https://registry.yarnpkg.com/ws/-/ws-6.2.1.tgz#442fdf0a47ed64f59b6a5d8ff130f4748ed524fb" + integrity sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA== + dependencies: + async-limiter "~1.0.0" + +ws@^7.1.2, ws@^7.3.0: + version "7.3.1" + resolved "https://registry.yarnpkg.com/ws/-/ws-7.3.1.tgz#d0547bf67f7ce4f12a72dfe31262c68d7dc551c8" + integrity sha512-D3RuNkynyHmEJIpD2qrgVkc9DQ23OrN/moAwZX4L8DfvszsJxpjQuUq3LMx6HoYji9fbIOBY18XWBsAux1ZZUA== + +ws@~6.1.0: + version "6.1.4" + resolved "https://registry.yarnpkg.com/ws/-/ws-6.1.4.tgz#5b5c8800afab925e94ccb29d153c8d02c1776ef9" + integrity sha512-eqZfL+NE/YQc1/ZynhojeV8q+H050oR8AZ2uIev7RU10svA9ZnJUddHcOUZTJLinZ9yEfdA2kSATS2qZK5fhJA== + dependencies: + async-limiter "~1.0.0" + +x-is-string@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/x-is-string/-/x-is-string-0.1.0.tgz#474b50865af3a49a9c4657f05acd145458f77d82" + integrity sha1-R0tQhlrzpJqcRlfwWs0UVFj3fYI= + +xdg-basedir@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-4.0.0.tgz#4bc8d9984403696225ef83a1573cbbcb4e79db13" + integrity sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q== + +xml@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/xml/-/xml-1.0.1.tgz#78ba72020029c5bc87b8a81a3cfcd74b4a2fc1e5" + integrity sha1-eLpyAgApxbyHuKgaPPzXS0ovweU= + +xmlhttprequest-ssl@~1.5.4: + version "1.5.5" + resolved "https://registry.yarnpkg.com/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.5.tgz#c2876b06168aadc40e57d97e81191ac8f4398b3e" + integrity sha1-wodrBhaKrcQOV9l+gRkayPQ5iz4= + +xss@^1.0.6: + version "1.0.8" + resolved "https://registry.yarnpkg.com/xss/-/xss-1.0.8.tgz#32feb87feb74b3dcd3d404b7a68ababf10700535" + integrity sha512-3MgPdaXV8rfQ/pNn16Eio6VXYPTkqwa0vc7GkiymmY/DqR1SE/7VPAAVZz1GJsJFrllMYO3RHfEaiUGjab6TNw== + dependencies: + commander "^2.20.3" + cssfilter "0.0.10" + +xstate@^4.11.0, xstate@^4.13.0, xstate@^4.9.1: + version "4.13.0" + resolved "https://registry.yarnpkg.com/xstate/-/xstate-4.13.0.tgz#0be22ceb8bae2bc6a025fab330fe44204d76771c" + integrity sha512-UnUJJzP2KTPqnmxIoD/ymXtpy/hehZnUlO6EXqWC/72XkPb15p9Oz/X4WhS3QE+by7NP+6b5bCi/GTGFzm5D+A== + +xtend@^4.0.0, xtend@^4.0.1, xtend@~4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" + integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== + +y18n@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b" + integrity sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w== + +yaeti@^0.0.6: + version "0.0.6" + resolved "https://registry.yarnpkg.com/yaeti/-/yaeti-0.0.6.tgz#f26f484d72684cf42bedfb76970aa1608fbf9577" + integrity sha1-8m9ITXJoTPQr7ft2lwqhYI+/lXc= + +yallist@^2.0.0, yallist@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" + integrity sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI= + +yallist@^3.0.2: + version "3.1.1" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" + integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== + +yallist@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" + integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== + +yaml-loader@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/yaml-loader/-/yaml-loader-0.6.0.tgz#fe1c48b9f4803dace55a59a1474e790ba6ab1b48" + integrity sha512-1bNiLelumURyj+zvVHOv8Y3dpCri0F2S+DCcmps0pA1zWRLjS+FhZQg4o3aUUDYESh73+pKZNI18bj7stpReow== + dependencies: + loader-utils "^1.4.0" + yaml "^1.8.3" + +yaml@^1.7.2, yaml@^1.8.3: + version "1.10.0" + resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.0.tgz#3b593add944876077d4d683fee01081bd9fff31e" + integrity sha512-yr2icI4glYaNG+KWONODapy2/jDdMSDnrONSjblABjD9B4Z5LgiircSt8m8sRZFNi08kG9Sm0uSHtEmP3zaEGg== + +yargs-parser@^13.1.2: + version "13.1.2" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.2.tgz#130f09702ebaeef2650d54ce6e3e5706f7a4fb38" + integrity sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg== + dependencies: + camelcase "^5.0.0" + decamelize "^1.2.0" + +yargs-parser@^18.1.2: + version "18.1.3" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-18.1.3.tgz#be68c4975c6b2abf469236b0c870362fab09a7b0" + integrity sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ== + dependencies: + camelcase "^5.0.0" + decamelize "^1.2.0" + +yargs@^13.3.2: + version "13.3.2" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.3.2.tgz#ad7ffefec1aa59565ac915f82dccb38a9c31a2dd" + integrity sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw== + dependencies: + cliui "^5.0.0" + find-up "^3.0.0" + get-caller-file "^2.0.1" + require-directory "^2.1.1" + require-main-filename "^2.0.0" + set-blocking "^2.0.0" + string-width "^3.0.0" + which-module "^2.0.0" + y18n "^4.0.0" + yargs-parser "^13.1.2" + +yargs@^15.3.1, yargs@^15.4.1: + version "15.4.1" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-15.4.1.tgz#0d87a16de01aee9d8bec2bfbf74f67851730f4f8" + integrity sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A== + dependencies: + cliui "^6.0.0" + decamelize "^1.2.0" + find-up "^4.1.0" + get-caller-file "^2.0.1" + require-directory "^2.1.1" + require-main-filename "^2.0.0" + set-blocking "^2.0.0" + string-width "^4.2.0" + which-module "^2.0.0" + y18n "^4.0.0" + yargs-parser "^18.1.2" + +yeast@0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/yeast/-/yeast-0.1.2.tgz#008e06d8094320c372dbc2f8ed76a0ca6c8ac419" + integrity sha1-AI4G2AlDIMNy28L47XagymyKxBk= + +yoga-layout-prebuilt@^1.9.6: + version "1.10.0" + resolved "https://registry.yarnpkg.com/yoga-layout-prebuilt/-/yoga-layout-prebuilt-1.10.0.tgz#2936fbaf4b3628ee0b3e3b1df44936d6c146faa6" + integrity sha512-YnOmtSbv4MTf7RGJMK0FvZ+KD8OEe/J5BNnR0GHhD8J/XcG/Qvxgszm0Un6FTHWW4uHlTgP0IztiXQnGyIR45g== + dependencies: + "@types/yoga-layout" "1.9.2" + +yurnalist@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/yurnalist/-/yurnalist-1.1.2.tgz#0fce283f1c53ea25ec278e2d1ab58537323b63e0" + integrity sha512-y7bsTXqL+YMJQ2De2CBtSftJNLQnB7gWIzzKm10GDyC8Fg4Dsmd2LG5YhT8pudvUiuotic80WVXt/g1femRVQg== + dependencies: + babel-runtime "^6.26.0" + chalk "^2.4.2" + cli-table3 "^0.5.1" + debug "^4.1.1" + deep-equal "^1.1.0" + detect-indent "^6.0.0" + inquirer "^7.0.0" + invariant "^2.2.0" + is-builtin-module "^3.0.0" + is-ci "^2.0.0" + leven "^3.1.0" + loud-rejection "^2.2.0" + node-emoji "^1.10.0" + object-path "^0.11.2" + read "^1.0.7" + rimraf "^3.0.0" + semver "^6.3.0" + strip-ansi "^5.2.0" + strip-bom "^4.0.0" + +zwitch@^1.0.0: + version "1.0.5" + resolved "https://registry.yarnpkg.com/zwitch/-/zwitch-1.0.5.tgz#d11d7381ffed16b742f6af7b3f223d5cd9fe9920" + integrity sha512-V50KMwwzqJV0NpZIZFwfOD5/lyny3WlSzRiXgA0G7VUnRlqttta1L6UQIHzd6EuBY/cHGfwTIck7w1yH6Q5zUw== From 6ae482008660292b11d0ad5b088f5f578e5333e9 Mon Sep 17 00:00:00 2001 From: Jonir Rings Date: Mon, 24 May 2021 15:36:14 +0800 Subject: [PATCH 69/75] chore: migrate CI from travis-ci.org to github-action (#110) --- .github/workflows/CI.yml | 20 ++++++++++++++++++++ .gitignore | 4 ++++ .travis.yml | 9 --------- resources/publish.sh | 26 -------------------------- 4 files changed, 24 insertions(+), 35 deletions(-) create mode 100644 .github/workflows/CI.yml delete mode 100644 .travis.yml delete mode 100755 resources/publish.sh diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml new file mode 100644 index 0000000000..366bf67e55 --- /dev/null +++ b/.github/workflows/CI.yml @@ -0,0 +1,20 @@ +name: Build and Deploy +on: [pull_request] + +jobs: + build-and-deploy: + runs-on: ubuntu-latest + + steps: + - name: Checkout + uses: actions/checkout@v2 + - name: Install and Build + uses: actions/setup-node@v2 + run: | + yarn install + yarn build + - name: Deploy + uses: JamesIves/github-pages-deploy-action@4.1.3 + with: + branch: master + folder: build \ No newline at end of file diff --git a/.gitignore b/.gitignore index e5827081d7..98edd83c52 100644 --- a/.gitignore +++ b/.gitignore @@ -68,3 +68,7 @@ yarn-error.log .pnp.js # Yarn Integrity file .yarn-integrity + +# IDE files +.idea/ +*.iml \ No newline at end of file diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 0529840303..0000000000 --- a/.travis.yml +++ /dev/null @@ -1,9 +0,0 @@ -language: node_js -node_js: 6 - -deploy: - skip_cleanup: true - provider: script - script: ./resources/publish.sh - on: - branch: zh-Hans diff --git a/resources/publish.sh b/resources/publish.sh deleted file mode 100755 index e6f6b1103a..0000000000 --- a/resources/publish.sh +++ /dev/null @@ -1,26 +0,0 @@ -#!/bin/bash -e - -# Publishing to NPM is currently supported by Travis CI, which ensures that all -# tests pass first and the deployed module contains the correct file struture. -# In order to prevent inadvertently circumventing this, we ensure that a CI -# environment exists before continuing. -if [ "$CI" != true ]; then - echo "\n\n\n \033[101;30m Only Travis CI can publish to NPM. \033[0m\n\n\n" 1>&2; - exit 1; -fi; - - -# Ensure the website was built -if [ ! -f ./build/index.html ]; then - echo "\n\n\n \033[101;30m Something went wrong, the site does not exist. \033[0m\n\n\n" 1>&2; - exit 1; -fi - -# Commit the website and push it -cd build -git init -git config user.name "Travis CI" -git config user.email "travis@travis-ci.org" -git add . -git commit -a -m "Auto-deploy by Travis CI" -git push --force --quiet "https://$%7BGH_TOKEN%7D@github.com/xitu/graphql.github.io.git" master:master From 314a108c9f38fbff01fe223c9f824da7a54e3b69 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=A0=B9=E5=8F=B7=E4=B8=89?= Date: Mon, 24 May 2021 19:22:16 +0800 Subject: [PATCH 70/75] ci: Add support for GitHub Actions (#112) * ci: Add support for GitHub Actions close #111 * ci: Deploy assets to master branch * ci: Deploy static files from `public` dir --- .github/workflows/CI.yml | 28 ++++++++++++++++++---------- 1 file changed, 18 insertions(+), 10 deletions(-) diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index 366bf67e55..4fa2c31f98 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -1,20 +1,28 @@ -name: Build and Deploy -on: [pull_request] +name: CI + +on: + push: + branches: [ zh-Hans ] + workflow_dispatch: jobs: build-and-deploy: runs-on: ubuntu-latest - steps: - - name: Checkout + - name: Checkout 🛎️ uses: actions/checkout@v2 - - name: Install and Build - uses: actions/setup-node@v2 + with: + persist-credentials: false + + - name: Install and Build 🔧 run: | yarn install yarn build - - name: Deploy - uses: JamesIves/github-pages-deploy-action@4.1.3 + + - name: Deploy 🚀 + uses: JamesIves/github-pages-deploy-action@3.7.1 with: - branch: master - folder: build \ No newline at end of file + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + BRANCH: master + FOLDER: public + CLEAN: true \ No newline at end of file From ab232bbf05b587dad8965c48e9aa63530f4895ae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=A0=B9=E5=8F=B7=E4=B8=89?= Date: Mon, 24 May 2021 19:57:48 +0800 Subject: [PATCH 71/75] docs: Fix typos (#113) --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 77180c4998..dbdf9b2519 100644 --- a/README.md +++ b/README.md @@ -33,7 +33,7 @@ Anytime you make some changes, refresh the page to see the updates. ### Publish the Website -Once pushed to the `source` branch, CI will publish http://graphql.cn/ +Once pushed to the `zh-Hans` branch, CI will publish to http://graphql.cn/ ## Contributors From 53798acd1e30f9d082854eda53a50155667ce6d1 Mon Sep 17 00:00:00 2001 From: dugenkui Date: Thu, 23 Sep 2021 23:46:09 +0800 Subject: [PATCH 72/75] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=20GraphQl=20Calculator?= =?UTF-8?q?=20(#115)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/content/code/code.md | 1 + 1 file changed, 1 insertion(+) diff --git a/src/content/code/code.md b/src/content/code/code.md index d762187c66..047225a853 100644 --- a/src/content/code/code.md +++ b/src/content/code/code.md @@ -759,6 +759,7 @@ Executor.execute(schema, query) map println - [GraphQL-ESLint](https://github.com/dotansimha/graphql-eslint):将 GraphQL AST 集成到 ESLint 核心中(作为解析器)。 - [GraphQL Modules](https://www.graphql-modules.com):使你可以将后端实现分拆成小型、可重用、易于实现和易于测试的部分。 - [GraphQL Mesh](https://www.graphql-mesh.com):允许你使用 GraphQL 查询语言来访问不运行 GraphQL 的远程 API(也包括那些运行 GraphQL 的远程 API)中的数据。它可以作为其他服务的网关,也可以作为本地 GraphQL schema 运行,以聚合来自远程 API 的数据。 + - [Graphql Calculator](https://github.com/graphql-calculator/graphql-calculator):基于指令和表达式实现的轻量级查询计算引擎,允许你基于指令和表达式对查询字段进行加工转换和编排控制。 ## 服务 From 7e895c5b55f3a598516ca9646bf8b1bd8e6b6479 Mon Sep 17 00:00:00 2001 From: Jonir Rings Date: Mon, 15 Nov 2021 11:54:23 +0800 Subject: [PATCH 73/75] Add missing file from upstream commit fec254fd (#116) --- .github/ISSUE_TEMPLATE/bug-report.md | 32 + .github/ISSUE_TEMPLATE/code-changes.md | 23 + .github/ISSUE_TEMPLATE/new-faq-question.md | 23 + .github/ISSUE_TEMPLATE/question.md | 7 + .github/PULL_REQUEST_TEMPLATE.md | 15 + .gitignore | 5 +- CONTRIBUTING.md | 164 +++++ gatsby-config.js | 14 +- gatsby-node.js | 420 +++++++---- notes/ContributingToCodePage.md | 78 ++ package.json | 7 +- scripts/sort-libraries.js | 209 ++++++ .../Sections/BringYourOwnCode/index.tsx | 10 +- src/Containers/Sections/Hero/index.tsx | 6 +- .../Sections/SingleRequest/index.tsx | 12 +- src/Containers/Sections/TypeSystem/index.tsx | 12 +- .../Sections/WithoutVersion/index.tsx | 4 +- src/assets/css/_css/algolia.less | 16 +- src/assets/css/_css/code.less | 213 +++++- src/assets/css/_css/docs.less | 180 +++-- src/assets/css/_css/faq.less | 97 +++ src/assets/css/_css/foundation.less | 34 + src/assets/css/_css/graphql.less | 68 +- src/assets/css/_css/index.less | 8 - src/assets/css/_css/users.less | 17 +- src/assets/css/_css/variables.less | 10 +- src/assets/css/style.less | 2 + src/components/BlogLayout/index.tsx | 22 +- src/components/BlogPost/index.tsx | 24 +- src/components/BlogSidebar/index.tsx | 81 ++- src/components/CodeLayout/index.tsx | 4 +- src/components/DocsLayout/index.tsx | 7 +- src/components/FAQLayout/index.tsx | 28 + src/components/FAQSection/index.tsx | 21 + src/components/Footer/index.tsx | 46 +- src/components/FoundationLayout/index.tsx | 48 ++ src/components/HeaderLinks/index.tsx | 49 +- src/components/Marked/index.tsx | 4 +- ...50914-graphql.md => 2015-09-14-graphql.md} | 1 + ...iptions.md => 2015-10-16-subscriptions.md} | 1 + ...60419-mocking.md => 2016-04-19-mocking.md} | 1 + ...=> 2016-05-02-rest-api-graphql-wrapper.md} | 3 +- ...eady.md => 2016-09-14-production-ready.md} | 1 + .../blog/2017-11-08-programmable-web.md | 12 + src/content/blog/2018-11-06-eweek.md | 12 + src/content/blog/2018-11-06-infoworld.md | 14 + .../2018-11-06-linux-foundation-graphql.md | 48 ++ src/content/blog/2018-11-07-datanami.md | 12 + src/content/blog/2018-11-07-sd-times.md | 14 + src/content/blog/2018-11-07-the-register.md | 12 + .../blog/2018-11-12-channel-futures.md | 17 + ...2019-03-12-joint-development-foundation.md | 60 ++ .../blog/2019-10-28-interactive-landscape.md | 50 ++ .../2019-10-31-linux-foundation-training.md | 39 + .../2020-04-02-graphql-annual-report-2019.md | 26 + .../2020-04-03-graphiql-graphql-playground.md | 75 ++ src/content/blog/2020-06-13-season-of-docs.md | 42 ++ .../blog/2020-06-30-gsoc-2020-naman.md | 26 + .../blog/2020-09-11-newsletter-august-2020.md | 58 ++ .../blog/2020-09-21-gsod-2020-carolyn.md | 35 + .../2020-10-15-newsletter-september-2020.md | 60 ++ .../2020-11-12-newsletter-october-2020.md | 55 ++ src/content/blog/2020-12-08-defer-stream.md | 138 ++++ .../2021-02-15-newsletter-february-2021.md | 65 ++ .../blog/2021-03-31-newsletter-march-2021.md | 59 ++ .../blog/2021-04-30-newsletter-april-2021.md | 60 ++ .../c-c/tools/libgraphqlparser.md | 8 + .../c-net/client/graphql-client.md | 8 + .../c-net/client/graphql-net-client.md | 8 + .../c-net/client/sahb-graphqlclient.md | 8 + .../c-net/client/strawberry-shake.md | 23 + .../c-net/server/entity-graphql.md | 8 + .../c-net/server/graphql-dotnet.md | 34 + .../c-net/server/graphql-net.md | 8 + .../c-net/server/hot-chocolate.md | 38 + .../language-support/c-net/server/ngraphql.md | 6 + .../clojure/client/regraph.md | 8 + .../clojure/server/alumbra.md | 41 ++ .../clojure/server/graphql-clj.md | 23 + .../clojure/server/lacinia.md | 8 + .../language-support/d/server/graphqld.md | 8 + .../elixir/client/common-graphql-client.md | 8 + .../language-support/elixir/client/neuron.md | 8 + .../elixir/server/absinthe.md | 8 + .../elixir/server/graphql-elixir.md | 8 + .../elm/client/dillonkearns-elm-graphql.md | 8 + .../erlang/server/graphql-erlang.md | 8 + .../language-support/flutter/client/ferry.md | 8 + .../flutter/client/graphql.md | 8 + .../go/client/go-graphql-client.md | 8 + .../language-support/go/client/graphql.md | 8 + .../go/client/machinebox-graphql.md | 8 + .../go/server/99designs-gqlgen.md | 8 + .../go/server/appointy-jaal.md | 8 + .../go/server/graph-gophers-graphql-go.md | 8 + .../language-support/go/server/graphql-go.md | 8 + .../go/server/graphql-relay-go.md | 8 + .../go/server/samsarahq-thunder.md | 8 + .../language-support/go/tools/graphjin.md | 8 + .../groovy/server/gorm-graphql.md | 21 + .../language-support/groovy/server/gql.md | 8 + .../haskell/client/morpheus-graphql-client.md | 8 + .../haskell/server/morpheus-graphql.md | 61 ++ .../haskell/server/mu-haskell.md | 56 ++ .../client/apollo-android.md | 8 + .../client/graphql-kotlin.md | 88 +++ .../java-kotlin-android/client/nodes.md | 8 + .../server/graphql-java.md | 47 ++ .../server/graphql-kotlin.md | 40 ++ .../java-kotlin-android/server/kgraphql.md | 61 ++ .../tools/graphql-java-generator.md | 16 + .../javascript/client/apollo-client.md | 9 + .../javascript/client/aws-amplify.md | 9 + .../javascript/client/gq-loader.md | 9 + .../javascript/client/grafoo.md | 9 + .../javascript/client/graphql-hooks.md | 70 ++ .../javascript/client/graphql-request.md | 9 + .../javascript/client/graphqurl.md | 9 + .../javascript/client/lokka.md | 9 + .../javascript/client/nanogql.md | 9 + .../javascript/client/relay.md | 9 + .../javascript/client/urql.md | 15 + .../javascript/server/apollo-server.md | 43 ++ .../javascript/server/express-graphql.md | 37 + .../javascript/server/graphql-helix.md | 84 +++ .../javascript/server/graphql-js.md | 31 + .../javascript/server/graphql-yoga.md | 37 + .../javascript/tools/giraphql.md | 32 + .../javascript/tools/graphiql.md | 9 + .../javascript/tools/graphql-cli.md | 9 + .../tools/graphql-code-generator.md | 9 + .../javascript/tools/graphql-config.md | 9 + .../javascript/tools/graphql-eslint.md | 9 + .../javascript/tools/graphql-inspector.md | 9 + .../tools/graphql-language-service.md | 9 + .../javascript/tools/graphql-live-query.md | 9 + .../javascript/tools/graphql-mesh.md | 9 + .../javascript/tools/graphql-middleware.md | 65 ++ .../javascript/tools/graphql-modules.md | 9 + .../javascript/tools/graphql-scalars.md | 9 + .../javascript/tools/graphql-shield.md | 60 ++ .../javascript/tools/graphql-tools.md | 9 + .../javascript/tools/graphql-ws.md | 9 + .../javascript/tools/postgraphile.md | 9 + .../language-support/javascript/tools/sofa.md | 9 + .../language-support/julia/client/diana-jl.md | 8 + .../server/ocaml-graphql-server.md | 8 + .../perl/server/graphql-perl.md | 16 + .../php/server/api-platform.md | 41 ++ .../php/server/graphpinator.md | 23 + .../php/server/graphql-api-for-wordpress.md | 8 + .../php/server/graphql-by-pop.md | 120 ++++ .../php/server/graphql-php.md | 8 + .../php/server/graphql-relay-php.md | 8 + .../php/server/graphqlbundle.md | 8 + .../language-support/php/server/graphqlite.md | 37 + .../language-support/php/server/lighthouse.md | 8 + .../code/language-support/php/server/railt.md | 8 + .../code/language-support/php/server/serge.md | 8 + .../code/language-support/php/server/siler.md | 43 ++ .../language-support/php/server/wpgraphql.md | 8 + .../language-support/python/client/gql.md | 8 + .../python/client/python-graphql-client.md | 8 + .../language-support/python/client/sgqlc.md | 8 + .../language-support/python/server/ariadne.md | 43 ++ .../python/server/graphene.md | 30 + .../python/server/strawberry.md | 32 + .../python/server/tartiflette.md | 34 + .../code/language-support/r/server/ghql.md | 8 + .../code/language-support/ruby/server/agoo.md | 37 + .../ruby/server/graphql-ruby.md | 33 + .../language-support/rust/client/cynic.md | 61 ++ .../rust/client/gql_client.md | 32 + .../rust/server/async-graphql.md | 18 + .../rust/server/graphql-rust-juniper.md | 8 + .../language-support/scala/client/caliban.md | 8 + .../language-support/scala/server/caliban.md | 29 + .../language-support/scala/server/sangria.md | 23 + .../client/apollo-ios.md | 8 + .../client/graphaello.md | 8 + .../client/graphql-ios.md | 8 + .../client/swift-graphql.md | 49 ++ .../swift-objective-c-ios/server/graphiti.md | 8 + .../swift-objective-c-ios/server/graphzahl.md | 8 + src/content/code/services/altair.md | 7 + .../code/services/apollo-graph-manager.md | 7 + src/content/code/services/aws-appsync.md | 7 + src/content/code/services/elide.md | 7 + src/content/code/services/faunadb.md | 7 + src/content/code/services/graphcms.md | 7 + src/content/code/services/hasura.md | 8 + src/content/code/services/lexascms.md | 7 + .../code/services/moesif-api-analytics.md | 7 + src/content/code/services/postman.md | 7 + src/content/code/services/prisma.md | 8 + src/content/code/services/tipe.md | 8 + src/content/code/slug-map.json | 30 + .../code/tools/graphql-code-generator.md | 9 + src/content/code/tools/quicktype.md | 9 + src/content/code/tools/schemathesis.md | 37 + src/content/community/Community-Developers.md | 86 +++ .../community/Community-RunningProjects.md | 79 +++ src/content/community/Community-Users.md | 126 ++++ src/content/faq/BestPractices.md | 60 ++ src/content/faq/Foundation.md | 54 ++ src/content/faq/Frontend.md | 12 + src/content/faq/General.md | 58 ++ src/content/faq/GettingStarted.md | 50 ++ src/content/faq/Specification.md | 32 + src/content/foundation/About.md | 35 + src/content/foundation/AnnualReports.md | 20 + src/content/foundation/Contact.md | 48 ++ src/content/foundation/Join.md | 97 +++ src/content/foundation/annual-report/2019.md | 289 ++++++++ src/pages/blog.tsx | 19 +- src/pages/code.tsx | 258 +++++++ src/pages/faq.tsx | 70 ++ src/pages/foundation/members.tsx | 41 ++ src/pages/index.tsx | 9 +- src/pages/users.tsx | 22 +- src/templates/doc.tsx | 26 +- src/templates/tags.tsx | 95 +++ src/utils/useFAQAccordion.ts | 83 +++ ...dation-Participation_Agreement-Preview.pdf | Bin 0 -> 671475 bytes static/files/LF_Membership-Preview.pdf | Bin 0 -> 212022 bytes .../dataloader-query.png | Bin 75396 -> 33591 bytes .../pathological-query.png | Bin 179694 -> 88947 bytes .../rest-api-people.png | Bin 181767 -> 116360 bytes static/img/diagrams/business_layer.png | Bin 29761 -> 11766 bytes static/img/downarrow.svg | 3 + static/img/favicon.png | Bin 2499 -> 1461 bytes static/img/graph-wash.png | Bin 29108 -> 23127 bytes .../img/graphal_foundation-logo-stacked.svg | 193 +++++ static/img/graphql_foundation-hero.jpg | Bin 0 -> 199332 bytes static/img/graphql_foundation-logo-white.svg | 229 ++++++ static/img/graphql_foundation-logo.svg | 197 ++++++ static/img/hello.png | Bin 71235 -> 25470 bytes static/img/logos/gsoc.svg | 41 ++ static/img/news/annual-report-1.png | Bin 0 -> 1050979 bytes static/img/news/annual-report-2.png | Bin 0 -> 133992 bytes static/img/news/annual-report-3.png | Bin 0 -> 156644 bytes static/img/news/annual-report-4.png | Bin 0 -> 1372544 bytes static/img/news/graphiql-parser.png | Bin 0 -> 150143 bytes .../img/news/playground-transition-banner.png | Bin 0 -> 72721 bytes static/img/og_image.png | Bin 145970 -> 134291 bytes static/img/oss_logo.png | Bin 4370 -> 4369 bytes static/img/report/amazon-web-services.svg | 1 + static/img/report/apollo-graphql.svg | 41 ++ static/img/report/expedia-group.svg | 43 ++ static/img/report/facebook.svg | 1 + static/img/report/hasura.svg | 1 + static/img/report/ibm.svg | 1 + static/img/report/novvum.svg | 15 + static/img/report/paypal.svg | 39 + static/img/report/salsify.svg | 669 ++++++++++++++++++ static/img/search.png | Bin 1378 -> 257 bytes static/img/twitter_image.png | Bin 87737 -> 82037 bytes static/users/logos/1stdibs.png | Bin 12298 -> 6820 bytes static/users/logos/20minutes.png | Bin 39014 -> 28258 bytes static/users/logos/adayroi.png | Bin 35312 -> 21232 bytes static/users/logos/airbnb.png | Bin 10004 -> 4014 bytes static/users/logos/alembic.png | Bin 5356 -> 2676 bytes static/users/logos/allocine.png | Bin 58395 -> 48046 bytes static/users/logos/alphasights.png | Bin 7842 -> 5211 bytes static/users/logos/ants.png | Bin 24455 -> 18949 bytes static/users/logos/appier.png | Bin 30303 -> 13425 bytes static/users/logos/arangodb.png | Bin 16777 -> 11809 bytes static/users/logos/artsy.png | Bin 30350 -> 10259 bytes static/users/logos/atlassian.png | Bin 37513 -> 22466 bytes static/users/logos/attendify.png | Bin 78291 -> 34848 bytes static/users/logos/bazinga.png | Bin 40826 -> 16675 bytes static/users/logos/blenderbottle.png | Bin 284024 -> 172316 bytes static/users/logos/brewerybuddy.png | Bin 38994 -> 29824 bytes static/users/logos/bright.png | Bin 83069 -> 66698 bytes static/users/logos/buildkite.png | Bin 6145 -> 4008 bytes static/users/logos/bynder.png | Bin 41401 -> 23335 bytes static/users/logos/cheddar.png | Bin 18017 -> 11874 bytes static/users/logos/circlehd.png | Bin 8426 -> 8414 bytes static/users/logos/cloverleaf.png | Bin 12555 -> 7984 bytes static/users/logos/colectica.png | Bin 38566 -> 22806 bytes static/users/logos/commercetools.png | Bin 31450 -> 25651 bytes static/users/logos/comparaonline.png | Bin 16981 -> 10217 bytes static/users/logos/conduit.png | Bin 9556 -> 6385 bytes static/users/logos/coursera.png | Bin 19683 -> 18553 bytes static/users/logos/creditkarma.png | Bin 43089 -> 20930 bytes static/users/logos/curio.png | Bin 11998 -> 3453 bytes static/users/logos/dailymotion.png | Bin 24139 -> 17732 bytes static/users/logos/digitransit.png | Bin 7396 -> 5016 bytes static/users/logos/directlyrics.png | Bin 16437 -> 13028 bytes static/users/logos/drift.png | Bin 36196 -> 21695 bytes static/users/logos/duedil.png | Bin 62505 -> 37907 bytes static/users/logos/eastview.png | Bin 8926 -> 4259 bytes static/users/logos/easycarros.png | Bin 6684 -> 3098 bytes static/users/logos/ediket.png | Bin 9736 -> 5696 bytes static/users/logos/etmdb.png | Bin 25122 -> 21633 bytes static/users/logos/expert360.png | Bin 7357 -> 5142 bytes static/users/logos/facebook.png | Bin 5793 -> 4463 bytes static/users/logos/fairfaxmedia.png | Bin 35062 -> 22684 bytes static/users/logos/gentux.png | Bin 2898 -> 2890 bytes static/users/logos/github.png | Bin 14114 -> 5648 bytes static/users/logos/goalify.png | Bin 44541 -> 44539 bytes static/users/logos/graphcms.png | Bin 43475 -> 24036 bytes static/users/logos/graphcool.png | Bin 10930 -> 6046 bytes static/users/logos/hackages.png | Bin 63099 -> 43405 bytes static/users/logos/hasura.png | Bin 9173 -> 9157 bytes static/users/logos/hijup.png | Bin 5276 -> 4850 bytes static/users/logos/housinganywhere.png | Bin 22464 -> 11906 bytes static/users/logos/hsl.png | Bin 7806 -> 4018 bytes static/users/logos/hudl.png | Bin 29764 -> 16660 bytes static/users/logos/icon-systems.png | Bin 33595 -> 25360 bytes static/users/logos/idobata.png | Bin 13604 -> 6764 bytes static/users/logos/indonesiax.png | Bin 42714 -> 19034 bytes static/users/logos/inerva.png | Bin 9922 -> 5764 bytes static/users/logos/intuit.png | Bin 6037 -> 2746 bytes static/users/logos/jusbrasil.png | Bin 20466 -> 11792 bytes static/users/logos/klm.png | Bin 27901 -> 12176 bytes static/users/logos/leanix.png | Bin 15466 -> 11420 bytes static/users/logos/legendsoflearning.png | Bin 25725 -> 21663 bytes static/users/logos/lelivrescolaire.png | Bin 33793 -> 19739 bytes static/users/logos/letsevents.png | Bin 5062 -> 2335 bytes static/users/logos/loggi.png | Bin 15718 -> 7608 bytes static/users/logos/m1finance.png | Bin 1121971 -> 464955 bytes static/users/logos/make-school.png | Bin 12377 -> 5402 bytes static/users/logos/medallia.png | Bin 46616 -> 42126 bytes static/users/logos/meteor.png | Bin 21095 -> 11046 bytes static/users/logos/metric-ai.png | Bin 3231 -> 3179 bytes static/users/logos/mixcloud.png | Bin 6017 -> 5154 bytes static/users/logos/mojilala.png | Bin 45056 -> 24387 bytes static/users/logos/myheritage.png | Bin 22858 -> 12596 bytes static/users/logos/myntra.png | Bin 51486 -> 40479 bytes static/users/logos/nbc-news-digital.png | Bin 35363 -> 15251 bytes static/users/logos/neo4j_logo.png | Bin 37897 -> 15121 bytes static/users/logos/newspring.png | Bin 27119 -> 16441 bytes static/users/logos/ningensoft.png | Bin 238594 -> 236396 bytes static/users/logos/nova-ideo.png | Bin 17187 -> 12348 bytes static/users/logos/nyt.png | Bin 47938 -> 12827 bytes static/users/logos/okgrow.png | Bin 51533 -> 15478 bytes static/users/logos/ovos.png | Bin 21869 -> 7097 bytes static/users/logos/paypal.png | Bin 47674 -> 19785 bytes static/users/logos/persado.png | Bin 8510 -> 6244 bytes static/users/logos/pinterest.png | Bin 22299 -> 9173 bytes static/users/logos/product-hunt.png | Bin 21306 -> 11433 bytes static/users/logos/project-september.png | Bin 54031 -> 34510 bytes static/users/logos/protel.png | Bin 21371 -> 10725 bytes static/users/logos/prowl.png | Bin 17997 -> 14637 bytes static/users/logos/quri.png | Bin 27245 -> 11453 bytes static/users/logos/redbubble.png | Bin 7075 -> 3468 bytes static/users/logos/reindex.png | Bin 23656 -> 13584 bytes static/users/logos/restorando.png | Bin 136934 -> 28818 bytes static/users/logos/salestock.png | Bin 60325 -> 39963 bytes static/users/logos/scaphold.png | Bin 79359 -> 42622 bytes static/users/logos/serverless.png | Bin 22814 -> 12848 bytes static/users/logos/shopify.png | Bin 28429 -> 24722 bytes static/users/logos/sky.png | Bin 382173 -> 327636 bytes static/users/logos/skyarchnetworks.png | Bin 17587 -> 12071 bytes static/users/logos/smarkets.png | Bin 19959 -> 12667 bytes static/users/logos/startupsco.png | Bin 9025 -> 1352 bytes static/users/logos/stem.png | Bin 7618 -> 2632 bytes static/users/logos/swapcard.png | Bin 24882 -> 5266 bytes static/users/logos/syzygy.png | Bin 18466 -> 6872 bytes static/users/logos/taller.png | Bin 6679 -> 3631 bytes static/users/logos/teacherspayteachers.png | Bin 10104 -> 6225 bytes static/users/logos/teselagen_logo.png | Bin 27726 -> 15299 bytes static/users/logos/thehunt.png | Bin 3119 -> 1627 bytes static/users/logos/trove.png | Bin 10849 -> 6081 bytes static/users/logos/twitter.png | Bin 7087 -> 2758 bytes static/users/logos/uctrends.png | Bin 208202 -> 103199 bytes static/users/logos/unigraph.png | Bin 5373 -> 2612 bytes static/users/logos/universe.png | Bin 23331 -> 12822 bytes static/users/logos/ustglobal.png | Bin 52984 -> 32029 bytes static/users/logos/vanilaio.png | Bin 4504 -> 2744 bytes static/users/logos/waitlessq.png | Bin 53973 -> 41457 bytes static/users/logos/waldo-photos.png | Bin 41031 -> 22627 bytes static/users/logos/wayfair.png | Bin 1252581 -> 24007 bytes static/users/logos/whitescape.png | Bin 6494 -> 6489 bytes static/users/logos/wirtualnapolska.png | Bin 44969 -> 13686 bytes static/users/logos/wishlife.png | Bin 79123 -> 12932 bytes static/users/logos/workflowgen.png | Bin 11100 -> 5078 bytes static/users/logos/wowair.png | Bin 16373 -> 10399 bytes static/users/logos/yelp.png | Bin 45519 -> 20960 bytes static/users/logos/zlyde.png | Bin 4307 -> 2241 bytes static/users/logos/zzish.png | Bin 15744 -> 4874 bytes yarn.lock | 131 +++- 383 files changed, 8450 insertions(+), 374 deletions(-) create mode 100644 .github/ISSUE_TEMPLATE/bug-report.md create mode 100644 .github/ISSUE_TEMPLATE/code-changes.md create mode 100644 .github/ISSUE_TEMPLATE/new-faq-question.md create mode 100644 .github/ISSUE_TEMPLATE/question.md create mode 100644 .github/PULL_REQUEST_TEMPLATE.md create mode 100644 CONTRIBUTING.md create mode 100644 notes/ContributingToCodePage.md create mode 100644 scripts/sort-libraries.js create mode 100644 src/assets/css/_css/faq.less create mode 100644 src/assets/css/_css/foundation.less create mode 100644 src/components/FAQLayout/index.tsx create mode 100644 src/components/FAQSection/index.tsx create mode 100644 src/components/FoundationLayout/index.tsx rename src/content/blog/{20150914-graphql.md => 2015-09-14-graphql.md} (99%) rename src/content/blog/{20151016-subscriptions.md => 2015-10-16-subscriptions.md} (99%) rename src/content/blog/{20160419-mocking.md => 2016-04-19-mocking.md} (99%) rename src/content/blog/{20160502-rest-api-graphql-wrapper.md => 2016-05-02-rest-api-graphql-wrapper.md} (99%) rename src/content/blog/{20160914-production-ready.md => 2016-09-14-production-ready.md} (99%) create mode 100644 src/content/blog/2017-11-08-programmable-web.md create mode 100644 src/content/blog/2018-11-06-eweek.md create mode 100644 src/content/blog/2018-11-06-infoworld.md create mode 100644 src/content/blog/2018-11-06-linux-foundation-graphql.md create mode 100644 src/content/blog/2018-11-07-datanami.md create mode 100644 src/content/blog/2018-11-07-sd-times.md create mode 100644 src/content/blog/2018-11-07-the-register.md create mode 100644 src/content/blog/2018-11-12-channel-futures.md create mode 100644 src/content/blog/2019-03-12-joint-development-foundation.md create mode 100644 src/content/blog/2019-10-28-interactive-landscape.md create mode 100644 src/content/blog/2019-10-31-linux-foundation-training.md create mode 100644 src/content/blog/2020-04-02-graphql-annual-report-2019.md create mode 100644 src/content/blog/2020-04-03-graphiql-graphql-playground.md create mode 100644 src/content/blog/2020-06-13-season-of-docs.md create mode 100644 src/content/blog/2020-06-30-gsoc-2020-naman.md create mode 100644 src/content/blog/2020-09-11-newsletter-august-2020.md create mode 100644 src/content/blog/2020-09-21-gsod-2020-carolyn.md create mode 100644 src/content/blog/2020-10-15-newsletter-september-2020.md create mode 100644 src/content/blog/2020-11-12-newsletter-october-2020.md create mode 100644 src/content/blog/2020-12-08-defer-stream.md create mode 100644 src/content/blog/2021-02-15-newsletter-february-2021.md create mode 100644 src/content/blog/2021-03-31-newsletter-march-2021.md create mode 100644 src/content/blog/2021-04-30-newsletter-april-2021.md create mode 100644 src/content/code/language-support/c-c/tools/libgraphqlparser.md create mode 100644 src/content/code/language-support/c-net/client/graphql-client.md create mode 100644 src/content/code/language-support/c-net/client/graphql-net-client.md create mode 100644 src/content/code/language-support/c-net/client/sahb-graphqlclient.md create mode 100644 src/content/code/language-support/c-net/client/strawberry-shake.md create mode 100644 src/content/code/language-support/c-net/server/entity-graphql.md create mode 100644 src/content/code/language-support/c-net/server/graphql-dotnet.md create mode 100644 src/content/code/language-support/c-net/server/graphql-net.md create mode 100644 src/content/code/language-support/c-net/server/hot-chocolate.md create mode 100644 src/content/code/language-support/c-net/server/ngraphql.md create mode 100644 src/content/code/language-support/clojure/client/regraph.md create mode 100644 src/content/code/language-support/clojure/server/alumbra.md create mode 100644 src/content/code/language-support/clojure/server/graphql-clj.md create mode 100644 src/content/code/language-support/clojure/server/lacinia.md create mode 100644 src/content/code/language-support/d/server/graphqld.md create mode 100644 src/content/code/language-support/elixir/client/common-graphql-client.md create mode 100644 src/content/code/language-support/elixir/client/neuron.md create mode 100644 src/content/code/language-support/elixir/server/absinthe.md create mode 100644 src/content/code/language-support/elixir/server/graphql-elixir.md create mode 100644 src/content/code/language-support/elm/client/dillonkearns-elm-graphql.md create mode 100644 src/content/code/language-support/erlang/server/graphql-erlang.md create mode 100644 src/content/code/language-support/flutter/client/ferry.md create mode 100644 src/content/code/language-support/flutter/client/graphql.md create mode 100644 src/content/code/language-support/go/client/go-graphql-client.md create mode 100644 src/content/code/language-support/go/client/graphql.md create mode 100644 src/content/code/language-support/go/client/machinebox-graphql.md create mode 100644 src/content/code/language-support/go/server/99designs-gqlgen.md create mode 100644 src/content/code/language-support/go/server/appointy-jaal.md create mode 100644 src/content/code/language-support/go/server/graph-gophers-graphql-go.md create mode 100644 src/content/code/language-support/go/server/graphql-go.md create mode 100644 src/content/code/language-support/go/server/graphql-relay-go.md create mode 100644 src/content/code/language-support/go/server/samsarahq-thunder.md create mode 100644 src/content/code/language-support/go/tools/graphjin.md create mode 100644 src/content/code/language-support/groovy/server/gorm-graphql.md create mode 100644 src/content/code/language-support/groovy/server/gql.md create mode 100644 src/content/code/language-support/haskell/client/morpheus-graphql-client.md create mode 100644 src/content/code/language-support/haskell/server/morpheus-graphql.md create mode 100644 src/content/code/language-support/haskell/server/mu-haskell.md create mode 100644 src/content/code/language-support/java-kotlin-android/client/apollo-android.md create mode 100644 src/content/code/language-support/java-kotlin-android/client/graphql-kotlin.md create mode 100644 src/content/code/language-support/java-kotlin-android/client/nodes.md create mode 100644 src/content/code/language-support/java-kotlin-android/server/graphql-java.md create mode 100644 src/content/code/language-support/java-kotlin-android/server/graphql-kotlin.md create mode 100644 src/content/code/language-support/java-kotlin-android/server/kgraphql.md create mode 100644 src/content/code/language-support/java-kotlin-android/tools/graphql-java-generator.md create mode 100644 src/content/code/language-support/javascript/client/apollo-client.md create mode 100644 src/content/code/language-support/javascript/client/aws-amplify.md create mode 100644 src/content/code/language-support/javascript/client/gq-loader.md create mode 100644 src/content/code/language-support/javascript/client/grafoo.md create mode 100644 src/content/code/language-support/javascript/client/graphql-hooks.md create mode 100644 src/content/code/language-support/javascript/client/graphql-request.md create mode 100644 src/content/code/language-support/javascript/client/graphqurl.md create mode 100644 src/content/code/language-support/javascript/client/lokka.md create mode 100644 src/content/code/language-support/javascript/client/nanogql.md create mode 100644 src/content/code/language-support/javascript/client/relay.md create mode 100644 src/content/code/language-support/javascript/client/urql.md create mode 100644 src/content/code/language-support/javascript/server/apollo-server.md create mode 100644 src/content/code/language-support/javascript/server/express-graphql.md create mode 100644 src/content/code/language-support/javascript/server/graphql-helix.md create mode 100644 src/content/code/language-support/javascript/server/graphql-js.md create mode 100644 src/content/code/language-support/javascript/server/graphql-yoga.md create mode 100644 src/content/code/language-support/javascript/tools/giraphql.md create mode 100644 src/content/code/language-support/javascript/tools/graphiql.md create mode 100644 src/content/code/language-support/javascript/tools/graphql-cli.md create mode 100644 src/content/code/language-support/javascript/tools/graphql-code-generator.md create mode 100644 src/content/code/language-support/javascript/tools/graphql-config.md create mode 100644 src/content/code/language-support/javascript/tools/graphql-eslint.md create mode 100644 src/content/code/language-support/javascript/tools/graphql-inspector.md create mode 100644 src/content/code/language-support/javascript/tools/graphql-language-service.md create mode 100644 src/content/code/language-support/javascript/tools/graphql-live-query.md create mode 100644 src/content/code/language-support/javascript/tools/graphql-mesh.md create mode 100644 src/content/code/language-support/javascript/tools/graphql-middleware.md create mode 100644 src/content/code/language-support/javascript/tools/graphql-modules.md create mode 100644 src/content/code/language-support/javascript/tools/graphql-scalars.md create mode 100644 src/content/code/language-support/javascript/tools/graphql-shield.md create mode 100644 src/content/code/language-support/javascript/tools/graphql-tools.md create mode 100644 src/content/code/language-support/javascript/tools/graphql-ws.md create mode 100644 src/content/code/language-support/javascript/tools/postgraphile.md create mode 100644 src/content/code/language-support/javascript/tools/sofa.md create mode 100644 src/content/code/language-support/julia/client/diana-jl.md create mode 100644 src/content/code/language-support/ocaml-reason/server/ocaml-graphql-server.md create mode 100644 src/content/code/language-support/perl/server/graphql-perl.md create mode 100644 src/content/code/language-support/php/server/api-platform.md create mode 100644 src/content/code/language-support/php/server/graphpinator.md create mode 100644 src/content/code/language-support/php/server/graphql-api-for-wordpress.md create mode 100644 src/content/code/language-support/php/server/graphql-by-pop.md create mode 100644 src/content/code/language-support/php/server/graphql-php.md create mode 100644 src/content/code/language-support/php/server/graphql-relay-php.md create mode 100644 src/content/code/language-support/php/server/graphqlbundle.md create mode 100644 src/content/code/language-support/php/server/graphqlite.md create mode 100644 src/content/code/language-support/php/server/lighthouse.md create mode 100644 src/content/code/language-support/php/server/railt.md create mode 100644 src/content/code/language-support/php/server/serge.md create mode 100644 src/content/code/language-support/php/server/siler.md create mode 100644 src/content/code/language-support/php/server/wpgraphql.md create mode 100644 src/content/code/language-support/python/client/gql.md create mode 100644 src/content/code/language-support/python/client/python-graphql-client.md create mode 100644 src/content/code/language-support/python/client/sgqlc.md create mode 100644 src/content/code/language-support/python/server/ariadne.md create mode 100644 src/content/code/language-support/python/server/graphene.md create mode 100644 src/content/code/language-support/python/server/strawberry.md create mode 100644 src/content/code/language-support/python/server/tartiflette.md create mode 100644 src/content/code/language-support/r/server/ghql.md create mode 100644 src/content/code/language-support/ruby/server/agoo.md create mode 100644 src/content/code/language-support/ruby/server/graphql-ruby.md create mode 100644 src/content/code/language-support/rust/client/cynic.md create mode 100644 src/content/code/language-support/rust/client/gql_client.md create mode 100644 src/content/code/language-support/rust/server/async-graphql.md create mode 100644 src/content/code/language-support/rust/server/graphql-rust-juniper.md create mode 100644 src/content/code/language-support/scala/client/caliban.md create mode 100644 src/content/code/language-support/scala/server/caliban.md create mode 100644 src/content/code/language-support/scala/server/sangria.md create mode 100644 src/content/code/language-support/swift-objective-c-ios/client/apollo-ios.md create mode 100644 src/content/code/language-support/swift-objective-c-ios/client/graphaello.md create mode 100644 src/content/code/language-support/swift-objective-c-ios/client/graphql-ios.md create mode 100644 src/content/code/language-support/swift-objective-c-ios/client/swift-graphql.md create mode 100644 src/content/code/language-support/swift-objective-c-ios/server/graphiti.md create mode 100644 src/content/code/language-support/swift-objective-c-ios/server/graphzahl.md create mode 100644 src/content/code/services/altair.md create mode 100644 src/content/code/services/apollo-graph-manager.md create mode 100644 src/content/code/services/aws-appsync.md create mode 100644 src/content/code/services/elide.md create mode 100644 src/content/code/services/faunadb.md create mode 100644 src/content/code/services/graphcms.md create mode 100644 src/content/code/services/hasura.md create mode 100644 src/content/code/services/lexascms.md create mode 100644 src/content/code/services/moesif-api-analytics.md create mode 100644 src/content/code/services/postman.md create mode 100644 src/content/code/services/prisma.md create mode 100644 src/content/code/services/tipe.md create mode 100644 src/content/code/slug-map.json create mode 100644 src/content/code/tools/graphql-code-generator.md create mode 100644 src/content/code/tools/quicktype.md create mode 100644 src/content/code/tools/schemathesis.md create mode 100644 src/content/community/Community-Developers.md create mode 100644 src/content/community/Community-RunningProjects.md create mode 100644 src/content/community/Community-Users.md create mode 100644 src/content/faq/BestPractices.md create mode 100644 src/content/faq/Foundation.md create mode 100644 src/content/faq/Frontend.md create mode 100644 src/content/faq/General.md create mode 100644 src/content/faq/GettingStarted.md create mode 100644 src/content/faq/Specification.md create mode 100644 src/content/foundation/About.md create mode 100644 src/content/foundation/AnnualReports.md create mode 100644 src/content/foundation/Contact.md create mode 100644 src/content/foundation/Join.md create mode 100644 src/content/foundation/annual-report/2019.md create mode 100644 src/pages/code.tsx create mode 100644 src/pages/faq.tsx create mode 100644 src/pages/foundation/members.tsx create mode 100644 src/templates/tags.tsx create mode 100644 src/utils/useFAQAccordion.ts create mode 100644 static/files/GraphQL_Foundation-Participation_Agreement-Preview.pdf create mode 100644 static/files/LF_Membership-Preview.pdf create mode 100644 static/img/downarrow.svg create mode 100644 static/img/graphal_foundation-logo-stacked.svg create mode 100644 static/img/graphql_foundation-hero.jpg create mode 100644 static/img/graphql_foundation-logo-white.svg create mode 100644 static/img/graphql_foundation-logo.svg create mode 100644 static/img/logos/gsoc.svg create mode 100644 static/img/news/annual-report-1.png create mode 100644 static/img/news/annual-report-2.png create mode 100644 static/img/news/annual-report-3.png create mode 100644 static/img/news/annual-report-4.png create mode 100644 static/img/news/graphiql-parser.png create mode 100644 static/img/news/playground-transition-banner.png create mode 100644 static/img/report/amazon-web-services.svg create mode 100644 static/img/report/apollo-graphql.svg create mode 100644 static/img/report/expedia-group.svg create mode 100644 static/img/report/facebook.svg create mode 100644 static/img/report/hasura.svg create mode 100644 static/img/report/ibm.svg create mode 100644 static/img/report/novvum.svg create mode 100644 static/img/report/paypal.svg create mode 100644 static/img/report/salsify.svg diff --git a/.github/ISSUE_TEMPLATE/bug-report.md b/.github/ISSUE_TEMPLATE/bug-report.md new file mode 100644 index 0000000000..90cff75711 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug-report.md @@ -0,0 +1,32 @@ +--- +name: "Bug Report" +about: Notice something off? Tell us about it here. +labels: bug +--- + + + +### Description + + + +### Steps to Reproduce + + + +### Expected Result + + + +### Actual Result + + + +### Additional Context + + \ No newline at end of file diff --git a/.github/ISSUE_TEMPLATE/code-changes.md b/.github/ISSUE_TEMPLATE/code-changes.md new file mode 100644 index 0000000000..ad751612cd --- /dev/null +++ b/.github/ISSUE_TEMPLATE/code-changes.md @@ -0,0 +1,23 @@ +--- +name: "Code Changes" +about: Tell us more about how you want to improve graphql.org +labels: enhancement +--- + + + +### Description + + + +### Motivation + + + +### Collaboration + + + +### Additional Context + + \ No newline at end of file diff --git a/.github/ISSUE_TEMPLATE/new-faq-question.md b/.github/ISSUE_TEMPLATE/new-faq-question.md new file mode 100644 index 0000000000..d596fb62c0 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/new-faq-question.md @@ -0,0 +1,23 @@ +--- +name: "New FAQ Question" +about: Propose a new question to add to our FAQ page +labels: faq +--- + + + +### Question + + + +### Proposed answer + + + +### Collaboration + + + +### Additional Context + + diff --git a/.github/ISSUE_TEMPLATE/question.md b/.github/ISSUE_TEMPLATE/question.md new file mode 100644 index 0000000000..d45f50dd58 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/question.md @@ -0,0 +1,7 @@ +--- +name: "Question" +about: Ask us anything! +labels: question +--- + + diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md new file mode 100644 index 0000000000..9b9f5e0d5f --- /dev/null +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -0,0 +1,15 @@ + + +Closes # + +## Description + + \ No newline at end of file diff --git a/.gitignore b/.gitignore index 98edd83c52..4dd1c8a2d2 100644 --- a/.gitignore +++ b/.gitignore @@ -69,6 +69,9 @@ yarn-error.log # Yarn Integrity file .yarn-integrity +# Swap files +*.swp + # IDE files .idea/ -*.iml \ No newline at end of file +*.iml diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000000..c3afcd0cb8 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,164 @@ +# Contributing to graphql.org + +> This repository is governed by the [GraphQL Code of Conduct](https://graphql.org/codeofconduct/). By contributing, you agree to abide by its terms. + +Thanks for taking the time to contribute! The GraphQL community is great because of people like you 🎉 + +There are many ways to get involved. Follow this guide and feel free to [reach out if you have questions](#asking-questions). + +## What's in this document + +- [Development guide](#development-guide) + - [Running the site locally](#running-the-site-locally) + - [Branching](#branching) + - [Project structure](#project-structure) + - [Publishing the updated site](#publishing-the-updated-site) +- [Updating content](#updating-content) + - [Fix a typo, code sample bug, or formatting](#fix-a-typo-code-sample-bug-or-formatting) + - [Add a library or tool to the Code page](#add-a-library-or-tool-to-the-code-page) + - [Add a resource to the Community page](#add-a-resource-to-the-community-page) + - [Add a question to the FAQ](#add-a-question-to-the-faq) + - [Write a new section or guide](#write-a-new-section-or-guide) +- [Making changes to the code](#making-changes-to-the-code) + - [Browser support](#browser-support) +- [Contributing something else](#contributing-something-else) +- [Asking questions](#asking-questions) + +## Development guide + +### Running the site locally + +First, clone this repository and move into the directory: + +```bash +git clone https://github.com/graphql/graphql.github.io.git +cd graphql.github.io +``` + +Then, use [Yarn](https://yarnpkg.com/getting-started/install) to install and load all the necessary dependencies: + +```bash +yarn +``` + +> Note: [Yarn is currently the only way to run the site locally](https://github.com/graphql/graphql.github.io/issues/946). + +Run the `start` script to launch the server: + +```bash +yarn start +``` + +Finally, open [http://localhost:8000](http://localhost:8000) to view it in the browser. + +The GraphQL website is built with [Gatsby](https://www.gatsbyjs.com/docs/). This means that a hot-reloading development environment will be accessible by default. + +### Branching + +Active development for graphql.org happens on the `source` branch. Be sure to create any new branches or direct any pull requests back to `source`. + +### Project structure + +- `static`: Files that will be copied directly to `public`. +- `public`: Output files that will be served by a static HTTP server. +- `src`: Markdown and the TypeScript/JavaScript files used to generate the website. + - `assets`: All the [`less`](http://lesscss.org/) files that contain stylesheets. + - `components` and `Containers`: React components used for layouts and pages. + - `content`: Markdown files with the content of pages. + - `templates`: Layout templates. + - `utils`: Helper functions. + +### Publishing the updated site + +Your changes will be merged into the `source` branch. Then, the CI will automatically publish a new version of http://graphql.org via [Netlify](https://docs.netlify.com/). + +## Updating content + +### Fix a typo, code sample bug, or formatting + +If you notice something wrong in the text or code samples, please follow our [development guide](#development-guide) to [open a pull request](https://github.com/graphql/graphql.github.io/pulls) with your fix. + +All of the content on graphql.org is written and formatted in [Markdown](https://www.gatsbyjs.com/docs/mdx/markdown-syntax/). + +### Add a library, tool, or service to the Code page + +The [Code page](https://graphql.org/code/) is a collection of libraries, tools, and services built for GraphQL. + +#### General guidelines + +**Adding a resource:** +- With rare exceptions, any pull request that adds a new library, tool, or service to the Code page will be accepted. +- Any library should include a few paragraphs describing the usage and offering people a chance to grok the project priorities. +- If there isn't a section already for your programming language, please add it. + +If it isn't a library, tool, or service - then it could go on the [Community page](#add-a-resource-to-the-community-page). If you aren't sure where your resource would fit, you can [open an issue](https://github.com/graphql/graphql.github.io/issues/new) and ask. + +**Removing a resource:** +- Services that don't work anymore +- Code repositories that are archived +- Projects declared to be abandoned by their maintainers +- Any link that 404s + +We rely on these concrete signals before removing a resource. Even if a project hasn't been released in a few years, that doesn't mean that it's not working. + +#### Workflow + +To add or remove a resource to this page, follow our [development guide](#development-guide) to [open a pull request](https://github.com/graphql/graphql.github.io/pulls). + +The content for this page is located in [various directories under `src/content/code`](./src/). Everything is written and formatted in [Markdown](https://www.gatsbyjs.com/docs/mdx/markdown-syntax/). + +### Add a resource to the Community page + +The [Community page](https://graphql.org/community/) highlights resources and groups that help people get more involved with GraphQL. + +To add something to this page, follow our [development guide](#development-guide) to [open a pull request](https://github.com/graphql/graphql.github.io/pulls). + +The content for this page is located in a [directory under `src/content/community`](./src/). Everything is written and formatted in [Markdown](https://www.gatsbyjs.com/docs/mdx/markdown-syntax/). + +### Add a question to the FAQ + +Our [Frequently Asked Questions (FAQ) page](https://graphql.org/faq/) is designed to help answer questions from the community. This page is still in development, so if you think there's a question missing - please [open an issue](https://github.com/graphql/graphql.github.io/issues/new)! It'd be great if you could include both the question and a proposed answer outline in the issue description. + +Once you have approval from a maintainer, use the [development guide](#development-guide) to add your question and answer. The content for the FAQ is located in [`src/content/faq`](./src/content/faq/). Each section has its own [Markdown](https://www.gatsbyjs.com/docs/mdx/markdown-syntax/) file. + +> Note: All answers in this section should be vendor-neutral and accessible to GraphQL users of all levels. + +When your answer is ready, [open a pull request](https://github.com/graphql/graphql.github.io/pulls/). + +### Write a new section or guide + +There are still several [Best Practices guides that no one has written](https://github.com/graphql/graphql.github.io/issues/41) yet. If you want to take one of these, comment on [the original issue](https://github.com/graphql/graphql.github.io/issues/41) and mention which topic you'll work on. + +Then, use our [development guide](#development-guide) to determine where your new page best fits. Our documentation is written and formatted in [Markdown](https://www.gatsbyjs.com/docs/mdx/markdown-syntax/). + +Once it's ready for review, please [open a pull request](https://github.com/graphql/graphql.github.io/pulls/). + +## Making changes to the code + +Before diving into any code updates, please [open an issue](https://github.com/graphql/graphql.github.io/issues/new) describing the change(s) you'd like to make. + +If you're working off an [existing issue](https://github.com/graphql/graphql.github.io/issues/), follow our [development guide](#development-guide) to make your changes. Once it's ready for review, please [open a pull request](https://github.com/graphql/graphql.github.io/pulls/) and reference the original issue. + +### Browser support + +We aim to support the latest stable versions of Chrome, Edge, Firefox, Safari, and Safari on mobile. + +## Contributing something else + +Interested in adding something not covered in this guide? Please [open an issue](https://github.com/graphql/graphql.github.io/issues/new) and tell us all about your idea. + +## Asking questions + +If you run into any problems or have questions while contributing, you're always welcome to [open an issue](https://github.com/graphql/graphql.github.io/issues/new). + +# Opening a PR to contribute your code + +You can also ping our team in the [#website channel on the GraphQL Slack](https://graphql.slack.com/messages/website/). [Get your invite here!](https://graphql-slack.herokuapp.com/) + +This repository is managed by EasyCLA. Project participants must sign the free ([GraphQL Specification Membership agreement](https://preview-spec-membership.graphql.org) before making a contribution. You only need to do this one time, and it can be signed by [individual contributors](http://individual-spec-membership.graphql.org/) or their [employers](http://corporate-spec-membership.graphql.org/). + +To initiate the signature process please open a PR against this repo. The EasyCLA bot will block the merge if we still need a membership agreement from you. + +You can find [detailed information here](https://github.com/graphql/graphql-wg/tree/main/membership). If you have issues, please email [operations@graphql.org](mailto:operations@graphql.org). + +If your company benefits from GraphQL and you would like to provide essential financial support for the systems and people that power our community, please also consider membership in the [GraphQL Foundation](https://foundation.graphql.org/join). diff --git a/gatsby-config.js b/gatsby-config.js index 2277ed5184..9582d3f079 100644 --- a/gatsby-config.js +++ b/gatsby-config.js @@ -16,7 +16,19 @@ module.exports = { path: `${__dirname}/src/content`, }, }, - `gatsby-transformer-remark`, + { + resolve: "gatsby-transformer-remark", + options: { + plugins: [ + { + resolve: "@weknow/gatsby-remark-twitter", + options: { + debug: true + } + } + ] + } + }, { resolve: `gatsby-plugin-webfonts`, options: { diff --git a/gatsby-node.js b/gatsby-node.js index 1f01018018..a3961b4567 100644 --- a/gatsby-node.js +++ b/gatsby-node.js @@ -1,14 +1,121 @@ const path = require("path") +const sortLibs = require("./scripts/sort-libraries") +const globby = require("globby") +const frontmatterParser = require("parser-front-matter") +const { readFile } = require("fs-extra") +const { promisify } = require("util") exports.onCreatePage = async ({ page, actions }) => { const { createPage, deletePage } = actions deletePage(page) + let context = { + ...page.context, + sourcePath: path.relative(__dirname, page.componentPath), + } + if (page.path === "/code" || page.path === "/code/") { + const markdownFilePaths = await globby("src/content/code/**/*.md") + const codeData = {} + const slugMap = require("./src/content/code/slug-map.json") + const parse$ = promisify(frontmatterParser.parse) + await Promise.all( + markdownFilePaths.map(async markdownFilePath => { + const markdownFileContent = await readFile(markdownFilePath, "utf-8") + let { + data: { name, description, url, github, npm, gem }, + content: howto, + } = await parse$(markdownFileContent, undefined) + howto = howto.trim() + const pathArr = markdownFilePath.split("/") + if (markdownFilePath.includes("language-support")) { + const languageSupportDirIndex = pathArr.indexOf("language-support") + const languageNameSlugIndex = languageSupportDirIndex + 1 + const languageNameSlug = pathArr[languageNameSlugIndex] + const languageName = slugMap[languageNameSlug] + codeData.Languages = codeData.Languages || {} + codeData.Languages[languageName] = + codeData.Languages[languageName] || {} + + const categoryNameSlugIndex = languageSupportDirIndex + 2 + const categoryNameSlug = pathArr[categoryNameSlugIndex] + const categoryName = slugMap[categoryNameSlug] + codeData.Languages[languageName][categoryName] = + codeData.Languages[languageName][categoryName] || [] + codeData.Languages[languageName][categoryName].push({ + name, + description, + howto, + url, + github, + npm, + gem, + sourcePath: markdownFilePath, + }) + } else { + const codeDirIndex = pathArr.indexOf("code") + const categoryNameSlugIndex = codeDirIndex + 1 + const categoryNameSlug = pathArr[categoryNameSlugIndex] + const categoryName = slugMap[categoryNameSlug] + codeData[categoryName] = codeData[categoryName] || [] + codeData[categoryName].push({ + name, + description, + howto, + url, + github, + npm, + gem, + sourcePath: markdownFilePath, + }) + } + }) + ) + const languageList = [] + let sortedTools = [] + await Promise.all([ + Promise.all( + Object.keys(codeData.Languages).map(async languageName => { + const libraryCategoryMap = codeData.Languages[languageName] + let languageTotalStars = 0 + await Promise.all( + Object.keys(libraryCategoryMap).map(async libraryCategoryName => { + const libraries = libraryCategoryMap[libraryCategoryName] + const { sortedLibs, totalStars } = await sortLibs(libraries) + libraryCategoryMap[libraryCategoryName] = sortedLibs + languageTotalStars += totalStars || 0 + }) + ) + languageList.push({ + name: languageName, + totalStars: languageTotalStars, + categoryMap: libraryCategoryMap, + }) + }) + ), + sortLibs(codeData.Tools).then(({ sortedLibs }) => { + sortedTools = sortedLibs + }), + ]) + + context = { + ...context, + otherLibraries: { + Services: codeData.Services, + Tools: sortedTools, + "More Stuff": codeData["More Stuff"], + }, + languageList: languageList.sort((a, b) => { + if (a.totalStars > b.totalStars) { + return -1 + } else if (a.totalStars < b.totalStars) { + return 1 + } + return 0 + }), + } + } createPage({ ...page, - context: { - ...page.context, - sourcePath: path.relative(__dirname, page.componentPath), - }, + context, }) } @@ -35,11 +142,17 @@ exports.createPages = async ({ graphql, actions }) => { sublinks sidebarTitle date + tags } id } } } + tagsGroup: allMarkdownRemark { + group(field: frontmatter___tags) { + fieldValue + } + } } `) @@ -51,147 +164,206 @@ exports.createPages = async ({ graphql, actions }) => { throw result.errors } - const { edges } = result.data.allMarkdownRemark + const markdownPages = result.data.allMarkdownRemark.edges - let sideBardata = {} + // foundation: [ + // { + // fileAbsolutePath: '/graphql/graphql.github.io/src/content/foundation/About.md', + // parent: {}, + // frontmatter: {}, + // id: '1d502d5e-3453-56cf-ad9a-7f6bfb68d9ba' + // }, + // ... + // ] + // } let pagesGroupedByFolder = {} + + // { + // foundation: [ + // { name: 'foundation', links: [{"fileAbsolutePath":"/graphql/graphql.github.io/src/content/foundation/About.md","parent":{"relativeDirectory":"foundation","sourceInstanceName":"content"},"frontmatter":{"title":"What is the GraphQL Foundation?","permalink":"/foundation/","next":"/foundation/join/","category":"GraphQL Foundation","sublinks":null,"sidebarTitle":"About the Foundation","date":null},"id":"1d502d5e-3453-56cf-ad9a-7f6bfb68d9ba"}] }, + // { name: 'GraphQL Foundation', links: [Array] } + // ], + // Note that this is mutated + let sideBardata = {} + + // Sidebar items to add which don't come from markdown + const additionalSidebarItems = { + foundation: [ + { + name: "GraphQL Foundation", + links: [ + { + frontmatter: { + sidebarTitle: "Foundation Members", + title: "Foundation Members", + permalink: "/foundation/members/", + date: null, + category: "GraphQL Foundation", + }, + }, + ], + }, + ], + } + + // E.g. + // { + // permalink: '/learn/best-practices/', + // relativeDirectory: 'learn', + // sidebarTitle: 'Introduction', + // nextPermalink: '/learn/thinking-in-graphs/', + // sourcePath: 'src/content/learn/BestPractice-Introduction.md' + // } const allPages = [] - await Promise.all( - edges.map(async ({ node }) => { - const { - frontmatter: { permalink, next, sidebarTitle }, - parent: { relativeDirectory, sourceInstanceName }, - } = node + // Loop through all *.md files in the repo, setting up both pagesGroupedByFolder + // and allPages. + markdownPages.map(({ node }) => { + const { + frontmatter: { permalink, next, sidebarTitle }, + parent: { relativeDirectory, sourceInstanceName }, + } = node - if (sourceInstanceName !== "content") { - return + if ( + sourceInstanceName !== "content" || + relativeDirectory.includes("code/") + ) { + return + } + + if (!pagesGroupedByFolder[relativeDirectory]) { + pagesGroupedByFolder = { + ...pagesGroupedByFolder, + [relativeDirectory]: [node], } + } else { + pagesGroupedByFolder = { + ...pagesGroupedByFolder, + [relativeDirectory]: [...pagesGroupedByFolder[relativeDirectory], node], + } + } - if (!pagesGroupedByFolder[relativeDirectory]) { - pagesGroupedByFolder = { - ...pagesGroupedByFolder, - [relativeDirectory]: [node], - } - } else { - pagesGroupedByFolder = { - ...pagesGroupedByFolder, - [relativeDirectory]: [ - ...pagesGroupedByFolder[relativeDirectory], - node, - ], - } + allPages.push({ + permalink, + relativeDirectory, + sidebarTitle, + nextPermalink: next, + sourcePath: path.relative(__dirname, node.fileAbsolutePath), + }) + }) + + // Loop through the sections in the sidebar, mutating the + // next and previous objects for different + Object.entries(pagesGroupedByFolder).map(([folder, pages]) => { + let pagesByUrl = {} + let previousPagesMap = {} + let pagesByDate = pages.sort((a, b) => { + const aDate = new Date(a.frontmatter.date || Date.now()) + const bDate = new Date(b.frontmatter.date || Date.now()) + if (aDate > bDate) { + return -1 + } else if (aDate < bDate) { + return 1 } - allPages.push({ - permalink, - relativeDirectory, - sidebarTitle, - nextPermalink: next, - sourcePath: path.relative(__dirname, node.fileAbsolutePath), - }) + return 0 }) - ) - - await Promise.all( - Object.entries(pagesGroupedByFolder).map(async ([folder, pages]) => { - let pagesByUrl = {} - let previousPagesMap = {} - let pagesByDate = pages.sort((a, b) => { - const aDate = new Date(a.frontmatter.date || Date.now()) - const bDate = new Date(b.frontmatter.date || Date.now()) - if (aDate > bDate) { - return -1 - } else if (aDate < bDate) { - return 1 - } - return 0 - }) - await Promise.all( - pagesByDate.map(async page => { - const { - frontmatter: { permalink, next }, - } = page - if (next) { - previousPagesMap[next] = permalink - } - pagesByUrl[permalink] = page - }) - ) + pagesByDate.forEach(page => { + const next = page.frontmatter.next + const permalink = page.frontmatter.permalink - let firstPage = null + if (next) { + previousPagesMap[next] = permalink + } + pagesByUrl[permalink] = page + }) - await Promise.all( - pagesByDate.map(async page => { - const { - frontmatter: { permalink }, - } = page + let firstPage = null + pagesByDate.forEach(page => { + const permalink = page.frontmatter.permalink + if (!previousPagesMap[permalink] && !firstPage) { + firstPage = page + return + } + }) - if (!previousPagesMap[permalink] && !firstPage) { - firstPage = page - return - } - }) - ) + if (!firstPage) { + throw new Error(`First page not found in ${folder}`) + } - if (!firstPage) { - throw new Error(`First page not found in ${folder}`) - } + let categoriesMap = {} + let currentCategory = null - let categoriesMap = {} - let currentCategory = null - - let page = firstPage - let i = 0 - while (page && i++ < 1000) { - const { frontmatter } = page - const { - category: definedCategory, - next: definedNextPageUrl, - } = frontmatter - let category = definedCategory || folder - if (!currentCategory || category !== currentCategory.name) { - if (currentCategory) { - if (!(currentCategory.name in categoriesMap)) { - categoriesMap[currentCategory.name] = currentCategory - } - } - currentCategory = { - name: category, - links: [], + let page = firstPage + let i = 0 + while (page && i++ < 1000) { + const { frontmatter } = page + const { + category: definedCategory, + next: definedNextPageUrl, + } = frontmatter + let category = definedCategory || folder + if (!currentCategory || category !== currentCategory.name) { + if (currentCategory) { + if (!(currentCategory.name in categoriesMap)) { + categoriesMap[currentCategory.name] = currentCategory } } - currentCategory.links.push(page) - if (definedNextPageUrl) { - page = pagesByUrl[definedNextPageUrl] - } else { - page = pagesByDate[pagesByDate.indexOf(page) + 1] - } - if (currentCategory.links.includes(page)) { - page = null + currentCategory = { + name: category, + links: [], } } - - if (!(currentCategory.name in categoriesMap)) { - categoriesMap[currentCategory.name] = currentCategory + currentCategory.links.push(page) + if (definedNextPageUrl) { + page = pagesByUrl[definedNextPageUrl] + } else { + page = pagesByDate[pagesByDate.indexOf(page) + 1] + } + if (currentCategory.links.includes(page)) { + page = null } + } + + if (!(currentCategory.name in categoriesMap)) { + categoriesMap[currentCategory.name] = currentCategory + } - sideBardata[folder] = Object.values(categoriesMap); + sideBardata[folder] = Object.values(categoriesMap) + }) + + Object.entries(additionalSidebarItems).map(([folder, sections]) => { + sections.forEach(s => { + const originalLinks = sideBardata[folder].find(l => l.name === s.name) + originalLinks.links = [...originalLinks.links, ...s.links] }) - ) - - await Promise.all( - allPages.map(async page => { - createPage({ - path: `${page.permalink}`, - component: docTemplate, - context: { - permalink: page.permalink, - nextPermalink: page.nextPermalink, - sideBarData: sideBardata[page.relativeDirectory], - sourcePath: page.sourcePath, - }, - }) + }) + + // Use all the set up data to now tell Gatsby to create pages + // on the site + allPages.forEach(page => { + createPage({ + path: `${page.permalink}`, + component: docTemplate, + context: { + permalink: page.permalink, + nextPermalink: page.nextPermalink, + sideBarData: sideBardata[page.relativeDirectory], + sourcePath: page.sourcePath, + }, }) - ) + }) + + // Create tag pages + const tagTemplate = path.resolve("src/templates/tags.tsx") + const tags = result.data.tagsGroup.group + tags.forEach(tag => { + createPage({ + path: `/tags/${tag.fieldValue}/`, + component: tagTemplate, + context: { + tag: tag.fieldValue, + }, + }) + }) } diff --git a/notes/ContributingToCodePage.md b/notes/ContributingToCodePage.md new file mode 100644 index 0000000000..2ac02d4479 --- /dev/null +++ b/notes/ContributingToCodePage.md @@ -0,0 +1,78 @@ +## Contributing to the Code Page + +Hi, thanks for reading the docs! + +Secondly, we want to provide a really strong overview of all the libraries in the GraphQL eco-system. To make this +easy for contributors the code page is automatically generated from a series of markdown files in this repo. + +```sh +$ tree src/content/code +src/content/code +├── language-support +│ ├── c-c +│ │ └── tools +│ │ └── libgraphqlparser.md +│ ├── clojure +│ │ ├── client +│ │ │ └── regraph.md +│ │ └── server +│ │ ├── alumbra.md +│ │ ├── graphql-clj.md +│ │ └── lacinia.md +│ ├── c-net +│ │ ├── client +│ │ │ ├── graphql-client.md +│ │ │ ├── graphql-net-client.md +│ │ │ └── sahb-graphqlclient.md +// etc +``` + +We'd love any new project to include a few paragraphs describing its goals and usage, the goal here is to make it easy for people to decide between options. + +Here's an optimal example example of what we're looking for: + +- It uses yml frontmatter to provide additional information like repo, npm +- It explains itself in the 'description' then fills fleshes out that description with some code samples + +````md +--- +name: Express GraphQL +description: The reference implementation of a GraphQL API server over an Express webserver. You can use this to run GraphQL in conjunction with a regular Express webserver, or as a standalone GraphQL server. +url: /graphql-js/running-an-express-graphql-server/ +github: graphql/express-graphql +npm: "express-graphql" +--- + +To run an `express-graphql` hello world server: + +```bash +npm install express express-graphql graphql +``` + +Then run `node server.js` with this code in `server.js`: + +```js +var express = require('express'); +var { graphqlHTTP } = require('express-graphql'); +var { buildSchema } = require('graphql'); + +var schema = buildSchema(` + type Query { + hello: String + } +`); + +var root = { hello: () => 'Hello world!' }; + +var app = express(); +app.use('/graphql', graphqlHTTP({ + schema: schema, + rootValue: root, + graphiql: true, +})); +app.listen(4000, () => console.log('Now browse to localhost:4000/graphql')); +``` + +```` + +Any library/tool/service has a maximum height in the site, and then it can be expanded by clicking, so if you need quite a lot of space to explain your project then that's OK. diff --git a/package.json b/package.json index 81fe1469a0..d56aaf28f0 100644 --- a/package.json +++ b/package.json @@ -13,6 +13,7 @@ }, "dependencies": { "@graphql-tools/schema": "7.0.0", + "@weknow/gatsby-remark-twitter": "^0.2.3", "codemirror": "5.58.2", "codemirror-graphql": "0.12.3", "gatsby": "2.25.0", @@ -24,13 +25,17 @@ "gatsby-plugin-webfonts": "1.1.3", "gatsby-source-filesystem": "2.4.0", "gatsby-transformer-remark": "2.9.0", + "globby": "11.0.1", "graphql": "15.4.0", "marked": "1.2.2", + "numbro": "2.3.2", + "parser-front-matter": "1.6.4", "prism-react-renderer": "1.1.1", "prismjs": "1.22.0", "react": "17.0.1", "react-dom": "17.0.1", - "react-helmet": "6.1.0" + "react-helmet": "6.1.0", + "timeago.js": "4.0.2" }, "devDependencies": { "@types/codemirror": "0.0.98", diff --git a/scripts/sort-libraries.js b/scripts/sort-libraries.js new file mode 100644 index 0000000000..a0fd747b63 --- /dev/null +++ b/scripts/sort-libraries.js @@ -0,0 +1,209 @@ +const fetch = require(`node-fetch`); +const numbro = require("numbro"); +const timeago = require('timeago.js'); + +const getGitHubStats = async githubRepo => { + const [owner, repoName] = githubRepo.split("/") + const accessToken = process.env.GITHUB_ACCESS_TOKEN + if (!accessToken) { + return {}; + } + const query = /* GraphQL */ ` + fragment defaultBranchRefFragment on Ref { + target { + ... on Commit { + history(since: $since) { + edges { + node { + author { + name + } + pushedDate + } + } + } + } + } + } + query($owner: String!, $repoName: String!, $since: GitTimestamp!) { + repositoryOwner(login: $owner) { + repository(name: $repoName) { + defaultBranchRef { + ...defaultBranchRefFragment + } + stargazers { + totalCount + } + updatedAt + forkCount + pullRequests { + totalCount + } + description + licenseInfo { + name + } + releases(last: 1) { + nodes { + publishedAt + } + } + tags: refs(refPrefix: "refs/tags/", first: 1, orderBy: {field: TAG_COMMIT_DATE, direction: DESC}) { + nodes { + name + target { + ... on Tag { + target { + ... on Commit { + pushedDate + } + } + } + } + } + } + } + } + } + ` + const lastMonth = new Date() + lastMonth.setMonth(lastMonth.getMonth() - 3) + const response = await fetch("http://github.com/service/https://api.github.com/graphql", { + method: "POST", + body: JSON.stringify({ + query, + variables: { owner, repoName, since: lastMonth }, + }), + headers: { + Authorization: `Bearer ${accessToken}`, + "Content-Type": "application/json", + }, + }) + const responseJson = await response.json() + if (responseJson && responseJson.errors) { + throw JSON.stringify(responseJson.errors); + } + if (!responseJson || !responseJson.data) { + throw `GitHub returned empty response for ${owner}/${repoName}` + } + const { repositoryOwner } = responseJson.data + if (!repositoryOwner) { + throw `No GitHub user found for ${owner}/${repoName}` + } + const { repository: repo } = repositoryOwner + if (!repo) { + throw `No GitHub repo found ${owner}/${repoName}` + } + const stars = repo.stargazers.totalCount + const commitHistory = repo.defaultBranchRef.target.history.edges + + let hasCommitsInLast3Months = false; + commitHistory.forEach(commit => { + if (!commit.node.author.name.match(/bot/i)) { + hasCommitsInLast3Months = true; + } + }) + const formattedStars = numbro(stars).format({ + average: true, + }); + + const releases = []; + if (repo.tags && repo.tags.nodes && repo.tags.nodes.length && repo.tags.nodes[0].target.target && repo.tags.nodes[0].target.target.pushedDate) { + releases.push(repo.tags.nodes[0].target.target.pushedDate); + } + if (repo.releases && repo.releases.nodes && repo.releases.nodes.length) { + releases.push(repo.releases.nodes[0].publishedAt) + } + if(owner.includes("graphql")) { + console.log({ releases, repoName }) + } + + const lastRelease = releases.filter(Boolean).sort().reverse()[0] + + return { + hasCommitsInLast3Months, + stars, + formattedStars, + license: repo.licenseInfo && repo.licenseInfo.name, + lastRelease, + formattedLastRelease: lastRelease && timeago.format(lastRelease), + } +} + +const getNpmStats = async packageName => { + const response = await fetch( + `https://api.npmjs.org/downloads/point/last-week/${encodeURIComponent( + packageName + )}` + ) + const responseJson = await response.json() + const downloadCount = responseJson.downloads + return { downloadCount } +} + +const getGemStats = async packageName => { + const response = await fetch( + `https://rubygems.org/api/v1/gems/${encodeURIComponent(packageName)}.json` + ) + const responseJson = await response.json() + const downloadCount = responseJson.downloads + return { downloadCount } +} + +const sortLibs = async libs => { + let totalStars = 0; + const libsWithScores = await Promise.all( + libs.map(async lib => { + const [ + npmStats = {}, + gemStars = {}, + githubStats = {}, + ] = await Promise.all([ + lib.npm && getNpmStats(lib.npm), + lib.gem && getGemStats(lib.gem), + lib.github && getGitHubStats(lib.github), + ]) + const result = { + ...lib, + ...npmStats, + ...gemStars, + ...githubStats, + } + totalStars += result.stars || 0; + return result; + }) + ) + const sortedLibs = libsWithScores.sort((a, b) => { + let aScore = 0, + bScore = 0 + if ("downloadCount" in a && 'downloadCount' in b) { + if (a.downloadCount > b.downloadCount) { + aScore += 40 + } else if (b.downloadCount > a.downloadCount) { + bScore += 40 + } + } + if ("hasCommitsInLast3Months" in a && a.hasCommitsInLast3Months) { + aScore += 30 + } + if ("hasCommitsInLast3Months" in b && b.hasCommitsInLast3Months) { + bScore += 30 + } + if ('stars' in a && 'stars' in b) { + if (a.stars > b.stars) { + aScore += 40 + } else if (a.stars < b.stars) { + bScore += 40 + } + } + if (bScore > aScore) { + return 1 + } else if (bScore < aScore) { + return -1 + } + return 0 + }) + return { sortedLibs, totalStars } +} + +module.exports = sortLibs diff --git a/src/Containers/Sections/BringYourOwnCode/index.tsx b/src/Containers/Sections/BringYourOwnCode/index.tsx index ab50a1641e..1455ab4ce8 100644 --- a/src/Containers/Sections/BringYourOwnCode/index.tsx +++ b/src/Containers/Sections/BringYourOwnCode/index.tsx @@ -19,11 +19,11 @@ const Index = (): JSX.Element => { return (
-
-

使用你现有的
数据和代码

- {/*Illustration of each field becoming a function?]*/} -

GraphQL 让你的整个应用共享一套 API,而不用被限制于特定存储引擎。GraphQL 引擎已经有多种语言实现,通过 GraphQL API 能够更好利用你的现有数据和代码。你只需要为类型系统的字段编写函数,GraphQL 就能通过优化并发的方式来调用它们。

-
+
+

使用你现有的
数据和代码

+ {/*Illustration of each field becoming a function?]*/} +

GraphQL 让你的整个应用共享一套 API,而不用被限制于特定存储引擎。GraphQL 引擎已经有多种语言实现,通过 GraphQL API 能够更好利用你的现有数据和代码。你只需要为类型系统的字段编写函数,GraphQL 就能通过优化并发的方式来调用它们。

+
{ return (
@@ -11,6 +12,7 @@ const Hero = () => {
+
@@ -69,4 +71,4 @@ const Hero = () => { ) }; -export default Hero; \ No newline at end of file +export default Hero; diff --git a/src/Containers/Sections/SingleRequest/index.tsx b/src/Containers/Sections/SingleRequest/index.tsx index f6d62c851e..a912324854 100644 --- a/src/Containers/Sections/SingleRequest/index.tsx +++ b/src/Containers/Sections/SingleRequest/index.tsx @@ -5,11 +5,11 @@ const SingleRequest = () => { return (
-
-

获取多个资源
只用一个请求

- {/*Illustration: a query 2 or 3 levels deep]*/} -

GraphQL 查询不仅能够获得资源的属性,还能沿着资源间引用进一步查询。典型的 REST API 请求多个资源时得载入多个 URL,而 GraphQL 可以通过一次请求就获取你应用所需的所有数据。这样一来,即使是比较慢的移动网络连接下,使用 GraphQL 的应用也能表现得足够迅速。

-
+
+

获取多个资源
只用一个请求

+ {/*Illustration: a query 2 or 3 levels deep]*/} +

GraphQL 查询不仅能够获得资源的属性,还能沿着资源间引用进一步查询。典型的 REST API 请求多个资源时得载入多个 URL,而 GraphQL 可以通过一次请求就获取你应用所需的所有数据。这样一来,即使是比较慢的移动网络连接下,使用 GraphQL 的应用也能表现得足够迅速。

+
{ ); }; -export default SingleRequest; \ No newline at end of file +export default SingleRequest; diff --git a/src/Containers/Sections/TypeSystem/index.tsx b/src/Containers/Sections/TypeSystem/index.tsx index 2a655270b3..392f3b8112 100644 --- a/src/Containers/Sections/TypeSystem/index.tsx +++ b/src/Containers/Sections/TypeSystem/index.tsx @@ -21,12 +21,12 @@ const TypeSysyem = () => { }, []) return (
-
-

描述所有的可能
类型系统

- {/*Illustration of a type IDL following a query by line]*/} - {/*Under: a server <-> client (Capabilities, Requirements)]?*/} -

GraphQL API 基于类型和字段的方式进行组织,而非入口端点。你可以通过一个单一入口端点得到你所有的数据能力。GraphQL 使用类型来保证应用只请求可能的数据,还提供了清晰的辅助性错误信息。应用可以使用类型,而避免编写手动解析代码。

-
+
+

描述所有的可能
类型系统

+ {/*Illustration of a type IDL following a query by line]*/} + {/*Under: a server <-> client (Capabilities, Requirements)]?*/} +

GraphQL API 基于类型和字段的方式进行组织,而非入口端点。你可以通过一个单一入口端点得到你所有的数据能力。GraphQL 使用类型来保证应用只请求可能的数据,还提供了清晰的辅助性错误信息。应用可以使用类型,而避免编写手动解析代码。

+
diff --git a/src/Containers/Sections/WithoutVersion/index.tsx b/src/Containers/Sections/WithoutVersion/index.tsx index cfb051b891..5dee2ce198 100644 --- a/src/Containers/Sections/WithoutVersion/index.tsx +++ b/src/Containers/Sections/WithoutVersion/index.tsx @@ -15,11 +15,11 @@ const WithoutVersion = () => { return (
-
+

API 演进
无需划分版本

{/*Illustration showing more legs added to a graph? Or a type evolving over time?]*/}

给你的 GraphQL API 添加字段和类型而无需影响现有查询。老旧的字段可以废弃,从工具中隐藏。通过使用单一演进版本,GraphQL API 使得应用始终能够使用新的特性,并鼓励使用更加简洁、更好维护的服务端代码。

-
+
diff --git a/src/assets/css/_css/algolia.less b/src/assets/css/_css/algolia.less index db659eca7e..130c971d89 100644 --- a/src/assets/css/_css/algolia.less +++ b/src/assets/css/_css/algolia.less @@ -23,11 +23,21 @@ margin-top: 10px; outline: none; padding: 0 10px 0 35px; - width: 180px; + width: 160px; transition: width 0.2s ease-out; - &:focus { - width: 250px; + @media screen and (min-width: 1076px) { + &:focus { + width: 190px; + } + } + @media screen and (min-width: 1065px) and (max-width: 1075px) { + &:focus { + width: 180px; + } + } + @media screen and (min-width: 1021px) and (max-width: 1064px) { + width: 135px; } } diff --git a/src/assets/css/_css/code.less b/src/assets/css/_css/code.less index 139da22628..7cd96810e9 100644 --- a/src/assets/css/_css/code.less +++ b/src/assets/css/_css/code.less @@ -53,9 +53,220 @@ left: 0; } .intro-note { - margin-top: 20px; + margin-top: 43px; + display: flex; + p { + width: 50%; + margin-top: 0; + margin-right: 5%; + font-size: 18px; + font-family: "Rubik", "Helvetica Neue", Helvetica, Arial, sans-serif; + line-height: 32px; + } + .goto-section { + display: flex; + flex-direction: row; + width: 40%; + p { + min-width: 72px; + width: 20%; + margin: 0; + color: #8c8c8c; + font-weight: bold; + font-size: 24px; + font-family: "Rubik", "Helvetica Neue", Helvetica, Arial, sans-serif; + } + .sections { + display: flex; + width: 80%; + flex-direction: column; + a { + h3 { + margin: 0 0 22px 0; + border-left: 1px solid #b7b7b7; + font-weight: bold; + padding-left: 15px; + line-height: 28px; + font-size: 24px; + font-family: "Rubik", "Helvetica Neue", Helvetica, Arial, sans-serif; + } + } + } + } } .inner-content { max-width: 100%; } + .language-content { + padding-top: 72px; + } + .languages-title { + font-size: 24px; + font-weight: bold; + font-family: "Rubik", "Helvetica Neue", Helvetica, Arial, sans-serif; + } + .language-boxes { + display: grid; + grid-row-gap: 20px; + grid-column-gap: 30px; + grid-template-columns: auto auto auto; + @media screen and (min-width: 1020px) { + grid-template-columns: auto auto auto auto auto auto; + } + .language-box { + border: 1px solid #979797; + min-width: 142px; + height: 120px; + display: flex; + flex-direction: row; + align-items: flex-end; + color: #000; + .article_title { + text-align: left; + font-size: 22px; + color: #000; + font-weight: bold; + font-family: "Rubik", "Helvetica Neue", Helvetica, Arial, sans-serif; + margin: 0; + } + } + } + .language-header { + display: flex; + flex-direction: row; + @media screen and (max-width: 600px) { + flex-direction: column; + } + justify-content: space-between; + .language-title { + margin: 0 0 10px 0; + font-size: 48px; + font-weight: bold; + } + .language-categories-permalinks { + margin: 0; + font-size: 24px; + font-weight: bold; + color: #a6a6a6; + .language-category-permalink { + color: #a6a6a6; + } + } + } + .library-category-title { + margin: 0; + padding-top: 45px; + font-size: 24px; + color: #a6a6a6; + font-weight: bold; + } + .library-info { + display: flex; + flex-direction: row; + @media screen and (max-width: 600px) { + flex-direction: column; + } + justify-content: space-between; + margin-top: 36px; + margin-bottom: 40px; + .library-details { + width: 30%; + @media screen and (max-width: 600px) { + width: 100%; + } + .library-name { + font-size: 24px; + font-weight: bold; + p { + margin: 0 0 20px 0; + } + } + .library-detail { + margin-top: 7px; + display: flex; + flex-direction: row; + b { + font-size: 14px; + min-width: 90px; + } + a, + span { + font-size: 16px; + color: #e10098; + font-weight: bold; + margin-left: 10px; + } + } + .library-description { + margin-top: 30px; + } + } + .library-howto { + @media screen and (max-width: 600px) { + width: 100%; + } + width: 60%; + position: relative; + .library-howto-content { + overflow: hidden; + pre.prism { + margin: 1em 0; + } + + &.not-expanded { + max-height: 450px; + } + &.expanded img { + display: none; + } + p { + margin: 0; + } + } + } + .library-howto-expand { + cursor: pointer; + + &.not-expanded { + background: -webkit-linear-gradient( + top, + rgba(237, 239, 240, 0), + rgba(237, 239, 240, 0) 380px, + #ffffff 400px + ); + background: linear-gradient( + to bottom, + rgba(237, 239, 240, 0), + rgba(237, 239, 240, 0) 380px, + #ffffff 400px + ); + box-sizing: border-box; + display: block; + height: 450px; + padding-top: 400px; + position: absolute; + top: 0; + right: 0; + left: 0; + text-align: center; + .library-howto-expand-anchor { + background: #ffffff; + -moz-box-sizing: border-box; + box-sizing: border-box; + border-radius: 9pt 9pt 0 0; + color: #8c8c8c; + display: inline-block; + max-width: 100%; + overflow: hidden; + padding: 10px; + text-decoration: underline; + text-overflow: ellipsis; + white-space: nowrap; + } + } + &.expanded { + display: none; + } + } + } } diff --git a/src/assets/css/_css/docs.less b/src/assets/css/_css/docs.less index 0ad08aa862..f4fcc96dd6 100644 --- a/src/assets/css/_css/docs.less +++ b/src/assets/css/_css/docs.less @@ -1,7 +1,7 @@ @import "http://github.com/variables.less"; .documentationContent { - margin-top:3px; + margin-top: 3px; margin-bottom: 8em; display: flex; width: 100%; @@ -13,58 +13,58 @@ } } -.headerline{ +.headerline { display: flex; // padding-right: 5px; // justify-content: center; } .main-block-blog { - /* background-color: #f0ece2; */ - background-color: #fff; - padding: 10px; - margin: 10px; - margin-bottom: 100px; - justify-content: center; - position: relative; - flex-flow: row; - text-align: center; + /* background-color: #f0ece2; */ + background-color: #fff; + padding: 10px; + margin: 10px; + margin-bottom: 100px; + justify-content: center; + position: relative; + flex-flow: row; + text-align: center; } -.column{ +.column { // padding: 0 10px; box-sizing: border-box; border: 3px rgb(44, 38, 38); justify-content: space-around; - margin-right: 15px; - // width: 800px; - // height: 250px; + margin-right: 15px; + // width: 800px; + // height: 250px; } .container-bl { display: flex; justify-content: center; - /* align-items: center; */ - // padding: 10px; - flex-direction: row; - // max-width: 1000px; - margin-right: 10px; - justify-content: space-around; + /* align-items: center; */ + // padding: 10px; + flex-direction: row; + // max-width: 1000px; + margin-right: 10px; + justify-content: space-around; } .container-bl1 { display: flex; justify-content: center; - /* align-items: center; */ - // padding: 10px; - flex-direction: row; - // max-width: 1000px; - margin-right: 10px; - justify-content: space-around; + /* align-items: center; */ + // padding: 10px; + flex-direction: row; + // max-width: 1000px; + margin-right: 10px; + justify-content: space-around; } -.codetitle{ - font-family: 'Rubik', 'Helvetica Neue', Helvetica, Arial, sans-serif; +.codetitle { + font-family: "Rubik", "Helvetica Neue", Helvetica, Arial, sans-serif; font-weight: 300; color: #202020; font-size: 22px; @@ -72,64 +72,63 @@ } .article { - background: white; - /* background-image: url(http://github.com/imgs/corona-virus.jpg) ; */ - /* filter: blur(8px); */ - // margin: 0 0 20px; - padding: 5px; - // border-radius: 1.5px; - // border: 0.7px solid black; - // box-shadow: 0 2px 4px #010101; - cursor: pointer; + background: white; + /* background-image: url(http://github.com/imgs/corona-virus.jpg) ; */ + /* filter: blur(8px); */ + // margin: 0 0 20px; + padding: 5px; + // border-radius: 1.5px; + // border: 0.7px solid black; + // box-shadow: 0 2px 4px #010101; + cursor: pointer; transition: 0.3s ease; width: 140px; height: 160px; } .article:active { - box-shadow: none; - transform-origin: center; - transform: scale(0.98); + box-shadow: none; + transform-origin: center; + transform: scale(0.98); } .article_category { - display: inline-block; - // background: rgb(235, 150, 206); - /* 47bbc5 */ - padding: 5px 8px; - border: black; - // border-radius: 10px; - margin: 0 0 10px; - color: white; - font-size: 0.75rem; - font-weight: 600; - letter-spacing: 0.075rem; + display: inline-block; + // background: rgb(235, 150, 206); + /* 47bbc5 */ + padding: 5px 8px; + border: black; + // border-radius: 10px; + margin: 0 0 10px; + color: white; + font-size: 0.75rem; + font-weight: 600; + letter-spacing: 0.075rem; text-transform: uppercase; width: 100px; height: 100px; } .article_excerpt { - color: black; - line-height: 1.5rem; - font-size: 0.875rem; + color: black; + line-height: 1.5rem; + font-size: 0.875rem; } .article_title { - margin: 0 0 10px; - color: #E10098; - font-family: "Josefin Sans"; - font-size: 1.25rem; - // font-weight: 600; - line-height: 1.75rem; + margin: 0 0 10px; + color: #e10098; + font-family: "Josefin Sans"; + font-size: 1.25rem; + // font-weight: 600; + line-height: 1.75rem; } - @media only screen and (min-width: 320px) and (max-width: 650px) { - .container-bl1 { - flex-direction: column; - width: 100%; - } + .container-bl1 { + flex-direction: column; + width: 100%; + } } .inner-content { @@ -168,11 +167,9 @@ .prism { position: relative; - box-shadow: - inset 0 1px 0 rgba(0,0,0,0.08), - inset 0 -1px 0 rgba(0,0,0,0.08), - inset -1px 0 0 rgba(0,0,0,0.08), - inset 4px 0 0 rgba(0,0,0,0.08); + box-shadow: inset 0 1px 0 rgba(0, 0, 0, 0.08), + inset 0 -1px 0 rgba(0, 0, 0, 0.08), inset -1px 0 0 rgba(0, 0, 0, 0.08), + inset 4px 0 0 rgba(0, 0, 0, 0.08); border-radius: 3px; .line-highlight { @@ -198,7 +195,8 @@ .not(code) > pre.prism { text-shadow: 0 1px white; - &::-moz-selection, &::selection { + &::-moz-selection, + &::selection { text-shadow: none; } } @@ -220,14 +218,17 @@ } border-radius: 3px; - box-shadow: inset 0 0 0 1px rgba(0,0,0,0.1); + box-shadow: inset 0 0 0 1px rgba(0, 0, 0, 0.1); padding: 0.7em 1.5em 0.5em 1em; - &:hover, &:focus, &:active { + &:hover, + &:focus, + &:active { background: @rhodamine-color; text-decoration: none; - .read-next-continue, .read-next-title { + .read-next-continue, + .read-next-title { color: white; } } @@ -282,9 +283,36 @@ color: #666; display: block; - &:hover, &:focus, &.active { + &:hover, + &:focus, + &.active { text-decoration: none; color: @rhodamine-color; } } } + +.blog-sidebar { + .recent-posts { + li { + border-bottom: 1px solid #ddd; + line-height: 18px; + padding: 10px 0; + font-weight: bold; + color: @rhodamine-color; + } + a { + font-weight: normal; + color: #666; + } + } +} + +.blog-sidebar { + .categories { + li { + font-weight: bold; + color: @rhodamine-color; + } + } +} diff --git a/src/assets/css/_css/faq.less b/src/assets/css/_css/faq.less new file mode 100644 index 0000000000..d43cba1ff8 --- /dev/null +++ b/src/assets/css/_css/faq.less @@ -0,0 +1,97 @@ +.inner-faq-content { + flex: 1; + @media screen and (max-width: 740px) { + margin-right: 0; + } + + & > h1:first-child { + margin-top: 1em; + } + + h2 { + margin-bottom: 10px; + } + + .faq-button-question { + background: transparent; + display: block; + width: 100%; + text-align: left; + padding: 0; + cursor: pointer; + box-shadow: 0px -1px 0px #aaa; + + &:first-child { + box-shadow: none; + } + } + + h3 { + color: #e10098; + padding: 20px 0 20px 5px; + margin: 0; + user-select: none; + position: relative; + + &.open:after { + transform: rotate(-45deg); + } + + &:after { + content: ""; + height: 33px; + width: 33px; + background-image: url('data:image/svg+xml,%3Csvg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 125"%3E%3Cpath height="20px" width="20px" style="text-indent:0;text-transform:none;block-progression:tb" d="M50 13a4 4 0 00-4 4v29H17a4 4 0 000 8h29v29a4 4 0 108 0V54h29a4 4 0 100-8H54V17a4 4 0 00-4-4z" overflow="visible" fill="%23aaa"/%3E%3C/svg%3E%0A'); + background-repeat: no-repeat; + position: absolute; + transition: transform 200ms ease; + right: 0; + + @media screen and (max-width: 768px) { + display: none; + } + } + + a { + clip: rect(0 0 0 0); + clip-path: inset(50%); + height: 1px; + overflow: hidden; + position: absolute; + white-space: nowrap; + width: 1px; + } + } + + ul { + max-height: 0; + opacity: 0; + margin-bottom: 0; + margin-top: 0; + overflow: hidden; + transition: height 0ms 400ms, opacity 400ms 0ms; + + &.show { + opacity: 1; + max-height: 800px; + margin-bottom: 1.0875rem; + overflow: visible; + transition: height 0ms 0ms, opacity 600ms 0ms; + } + } + + p { + max-height: 0; + opacity: 0; + margin: 0; + overflow: hidden; + transition: height 0ms 400ms, opacity 400ms 0ms; + + &.show { + opacity: 1; + max-height: 400px; + margin-bottom: 1.0875rem; + transition: height 0ms 0ms, opacity 600ms 0ms; + } + } +} diff --git a/src/assets/css/_css/foundation.less b/src/assets/css/_css/foundation.less new file mode 100644 index 0000000000..f15d78fb8a --- /dev/null +++ b/src/assets/css/_css/foundation.less @@ -0,0 +1,34 @@ +.foundation { + .foundation-hero { + background: url(http://github.com/img/graphql_foundation-hero.jpg) top left; + height: 35vmin; + position: relative; + width: 100%; + + .foundation-hero-inner-content { + background-color: rgba(221,23,151,0.75); + height: 35vmin; + width: 100%; + position: absolute; + } + + img { + padding: 4vmin 0 1vmin; + height: 20vmin; + display: block; + margin: 0 auto; + } + + h2 { + color: #FFF; + display: block; + margin: auto; + padding: 2vmin 5vmin; + height: 15vmin; + width: 100%; + text-align: center; + font-size: 2.5vmin; + line-height: 3vmin; + } + } +} diff --git a/src/assets/css/_css/graphql.less b/src/assets/css/_css/graphql.less index 5c6a807f61..8cc4fb0474 100644 --- a/src/assets/css/_css/graphql.less +++ b/src/assets/css/_css/graphql.less @@ -16,7 +16,8 @@ body { a { color: @rhodamine-color; text-decoration: none; - &:hover, &:focus { + &:hover, + &:focus { text-decoration: underline; } } @@ -29,7 +30,12 @@ em { font-style: italic; } -h1, h2, h3, h4, h5, h6 { +h1, +h2, +h3, +h4, +h5, +h6 { margin: 2em 0 0; text-rendering: optimizelegibility; } @@ -83,16 +89,21 @@ h6:hover > .hash-link { visibility: visible; } -ul, ol { +ul, +ol { margin: 1em 0 1em 2em; padding: 0; } -p + ul, p + ol { +p + ul, +p + ol { margin-top: 1em; } -ul ul, ul ol, ol ol, ol ul { +ul ul, +ul ol, +ol ol, +ol ul { margin-bottom: 0; } @@ -119,7 +130,7 @@ p code { header { .headline-font(@size: 15px); - height: 50px; + min-height: 50px; background: white; box-shadow: inset 0 -1px 0 0px rgba(0, 0, 0, 0.1); z-index: 10; @@ -162,7 +173,9 @@ nav { padding: 0 1em; transition: color 0.1s ease-out; - &:hover, &:focus, &.active { + &:hover, + &:focus, + &.active { color: @text-color; text-decoration: none; } @@ -201,7 +214,8 @@ footer { height: 50px; background: url("http://github.com/img/logo-gray.svg") no-repeat content-box; - &:hover, &:focus { + &:hover, + &:focus { background-image: url("http://github.com/img/logo.svg"); } @@ -215,16 +229,19 @@ footer { display: table; margin: 2px -10px; padding: 3px 10px; - &:hover, &:focus { + &:hover, + &:focus { color: @rhodamine-color; text-decoration: none; } } - h5, h6 { + h5, + h6 { margin: 0 0 10px; - &, & > a { + &, + & > a { color: lighten(@dark-color, 50%); } @@ -242,20 +259,16 @@ footer { width: 170px; &:hover { - opacity: 1.0; + opacity: 1; } } .copyright { - color: rgba(255,255,255,0.4); + color: rgba(255, 255, 255, 0.4); text-align: center; } } - - - - .guestBio { background: #f9f0f3; border-top: solid 2px #e0c3c8; @@ -269,7 +282,8 @@ footer { padding-top: 20px; } -.blogContent:before, .blogContent:after { +.blogContent:before, +.blogContent:after { content: " "; display: table; } @@ -289,7 +303,20 @@ footer { max-width: 100%; } +.tag-wrapper { + margin-bottom: 5px; +} +.tag { + font-weight: 700; + letter-spacing: 1.5px; + text-transform: uppercase; + background-color: #e9e8f3; + font-size: 14px; + padding: 5px; + border-radius: 4px; + margin-right: 5px; +} div[data-twttr-id] iframe { margin: 10px auto !important; @@ -314,7 +341,7 @@ p + .apiIndex { } .apiIndex li a:hover::before { color: @rhodamine-color; - content: '#'; + content: "#"; font-size: 16px; left: -2em; line-height: 20px; @@ -344,8 +371,7 @@ p + .apiIndex { line-height: 17px; padding: 7px 14px; background: white; - box-shadow: inset 0 0 0 1px #EEE, inset 4px 0 0 #EEE; + box-shadow: inset 0 0 0 1px #eee, inset 4px 0 0 #eee; border-radius: 3px; margin-left: -4px; } - diff --git a/src/assets/css/_css/index.less b/src/assets/css/_css/index.less index 29d3ec2741..d6bbd52ce9 100644 --- a/src/assets/css/_css/index.less +++ b/src/assets/css/_css/index.less @@ -18,14 +18,6 @@ div.index { } } - .fixedSearch { - position: fixed; - right: 0; - left: 0; - z-index: 12; - pointer-events: none; - } - .hero { background: @dark-color; @media screen and (min-width: 1020px) { diff --git a/src/assets/css/_css/users.less b/src/assets/css/_css/users.less index b92fbab106..b6e5bebee6 100644 --- a/src/assets/css/_css/users.less +++ b/src/assets/css/_css/users.less @@ -1,14 +1,7 @@ -section.whos-using-page { +section.whos-using-page, section.foundation-members-page { padding-bottom: 6em; - text-align: center; max-width: 900px; - .prose { - max-width: 560px; - text-align: center; - margin: 0 auto; - } - .logos { align-items: center; display: flex; @@ -38,3 +31,11 @@ section.whos-using-page { } } } + +section.whos-using-page { + .prose { + max-width: 560px; + text-align: center; + margin: 0 auto; + } +} diff --git a/src/assets/css/_css/variables.less b/src/assets/css/_css/variables.less index d7a6233fd4..160161d36c 100644 --- a/src/assets/css/_css/variables.less +++ b/src/assets/css/_css/variables.less @@ -4,7 +4,7 @@ @text-color: #202020; .headline-font(@size: 48px, @color: @text-color) { - font-family: quote, 'Rubik', 'Helvetica Neue', Helvetica, Arial, 'PingFang SC', 'Hiragino Sans GB', 'Source Han Sans CN', 'Source Han Sans SC', 'Microsoft YaHei', sans-serif; + font-family: 'Rubik', 'Helvetica Neue', Helvetica, Arial, sans-serif; font-weight: 300; color: @color; font-size: @size; @@ -12,7 +12,7 @@ } .body-font(@size: 18px, @color: @text-color) { - font-family: quote, 'Roboto', 'Helvetica Neue', Helvetica, Arial, 'PingFang SC', 'Hiragino Sans GB', 'Source Han Sans CN', 'Source Han Sans SC', 'Microsoft YaHei', sans-serif; + font-family: 'Roboto', 'Helvetica Neue', Helvetica, Arial, sans-serif; font-weight: 300; color: @color; font-size: @size; @@ -26,9 +26,3 @@ font-size: @size; line-height: @size * 17/13; } - -@font-face { - font-family: quote; - src: local('Lantinghei SC'), local('SimSun'); - unicode-range: U+201c, U+201d; -} diff --git a/src/assets/css/style.less b/src/assets/css/style.less index 44741808d3..f5c7f2dbf7 100644 --- a/src/assets/css/style.less +++ b/src/assets/css/style.less @@ -6,3 +6,5 @@ @import "http://github.com/_css/codemirror.less"; @import "http://github.com/_css/algolia.less"; @import "http://github.com/_css/code.less"; +@import "http://github.com/_css/faq.less"; +@import "http://github.com/_css/foundation.less"; diff --git a/src/components/BlogLayout/index.tsx b/src/components/BlogLayout/index.tsx index 7f69784438..c93a2a149e 100644 --- a/src/components/BlogLayout/index.tsx +++ b/src/components/BlogLayout/index.tsx @@ -10,6 +10,8 @@ interface Props { guestBio: string rawMarkdownBody: string sideBarData: any + pageContext: any + tags: Array } const index = ({ @@ -20,6 +22,8 @@ const index = ({ guestBio, rawMarkdownBody, sideBarData, + pageContext, + tags, }: Props) => { return (
@@ -32,21 +36,25 @@ const index = ({ guestBio={guestBio} rawMarkdownBody={rawMarkdownBody} isPermalink={true} + pageContext={pageContext} + tags={tags} /> - { - const aDate = new Date(a.frontmatter.date); + { + const aDate = new Date(a.frontmatter.date) const bDate = new Date(b.frontmatter.date) if (aDate > bDate) { - return -1; + return -1 } else if (aDate < bDate) { - return 1; + return 1 } - return 0; - }))} currentPermalink={permalink} /> + return 0 + })} + currentPermalink={permalink} + />
) } export default index - diff --git a/src/components/BlogPost/index.tsx b/src/components/BlogPost/index.tsx index 5c22cda2fc..3799c69100 100644 --- a/src/components/BlogPost/index.tsx +++ b/src/components/BlogPost/index.tsx @@ -1,5 +1,6 @@ import React from "react" import Marked from "../Marked" +import { Link } from "gatsby" interface Props { title: string @@ -9,6 +10,10 @@ interface Props { guestBio: string rawMarkdownBody: string isPermalink: boolean + pageContext: any + excerpt?: string + showExcerpt?: true + tags: Array } const BlogPost = ({ @@ -19,17 +24,34 @@ const BlogPost = ({ guestBio, rawMarkdownBody, isPermalink, + pageContext, + excerpt, + showExcerpt, + tags, }: Props) => (

{isPermalink ? title : {title}}

{new Date(date).toLocaleDateString()} by {byline}

+
+ {tags.map(tag => ( + + {tag} + + ))} +
+ {guestBio ? null :
} {guestBio && (

{`This guest article contributed by ${byline}, ${guestBio}.`}

)} - {rawMarkdownBody} + + {showExcerpt ? ( +

{excerpt}

+ ) : ( + {rawMarkdownBody} + )}
) diff --git a/src/components/BlogSidebar/index.tsx b/src/components/BlogSidebar/index.tsx index f77ffd45aa..1a828527ec 100644 --- a/src/components/BlogSidebar/index.tsx +++ b/src/components/BlogSidebar/index.tsx @@ -1,34 +1,63 @@ -import React from 'react'; -import { Link } from "gatsby" +import React from "react" +import { Link, useStaticQuery, graphql } from "gatsby" interface Props { posts: any[] currentPermalink?: string } -const BlogSidebar = ({ posts, currentPermalink }: Props) => ( -
-
-

Subscribe

- - RSS - -
-
-

Recent Posts

-
    - {posts.map(({ frontmatter }, i) => ( -
  • - {frontmatter.permalink === currentPermalink ? ( - frontmatter.title - ) : ( - {frontmatter.title} - )} -
  • - ))} -
+const BlogSidebar = ({ posts, currentPermalink }: Props) => { + const allTags = useStaticQuery(graphql` + query allTags { + allMarkdownRemark { + group(field: frontmatter___tags) { + fieldValue + } + } + } + `).allMarkdownRemark.group + + return ( +
+
+

Subscribe

+ + RSS + +
+
+

Categories

+
    + {allTags.map(({ fieldValue }: { fieldValue: string }, i: number) => { + const tag = fieldValue[0].toUpperCase() + fieldValue.substring(1) + return ( +
  • + {fieldValue === currentPermalink ? ( + tag + ) : ( + {tag} + )} +
  • + ) + })} +
+
+
+

Recent Posts

+
    + {posts.map(({ frontmatter }, i) => ( +
  • + {frontmatter.permalink === currentPermalink ? ( + frontmatter.title + ) : ( + {frontmatter.title} + )} +
  • + ))} +
+
-
-) + ) +} -export default BlogSidebar; \ No newline at end of file +export default BlogSidebar diff --git a/src/components/CodeLayout/index.tsx b/src/components/CodeLayout/index.tsx index 3364e24bcc..a6ead78a0a 100644 --- a/src/components/CodeLayout/index.tsx +++ b/src/components/CodeLayout/index.tsx @@ -1,12 +1,12 @@ import React from 'react' import Marked from "../Marked"; -export default ({ title, rawMarkdownBody }: any) => ( +export default ({ title, rawMarkdownBody, pageContext }: any) => (

{title}

- {rawMarkdownBody} + {rawMarkdownBody}
diff --git a/src/components/DocsLayout/index.tsx b/src/components/DocsLayout/index.tsx index 00f5e3de2e..f0d6e9b321 100644 --- a/src/components/DocsLayout/index.tsx +++ b/src/components/DocsLayout/index.tsx @@ -9,19 +9,20 @@ interface Props { permalink: string sideBarData: any rawMarkdownBody: string + pageContext: any } -const index = ({ title, nextDoc, sideBarData, rawMarkdownBody }: Props) => { +const index = ({ title, nextDoc, sideBarData, rawMarkdownBody, pageContext }: Props) => { return (

{title}

- {rawMarkdownBody} + {rawMarkdownBody} {nextDoc?.frontmatter?.permalink && ( - 继续阅读 → + Continue Reading → {nextDoc.frontmatter.title} diff --git a/src/components/FAQLayout/index.tsx b/src/components/FAQLayout/index.tsx new file mode 100644 index 0000000000..d3f3df6f71 --- /dev/null +++ b/src/components/FAQLayout/index.tsx @@ -0,0 +1,28 @@ +import React from "react" +import FAQSection from "../FAQSection" + +interface Props { + title: string + rawMarkdownBody: string + pageContext: any +} + +const index = ({ + title, + rawMarkdownBody, + pageContext +}: Props) => { + return ( +
+
+ +
+
+ ) +} + +export default index \ No newline at end of file diff --git a/src/components/FAQSection/index.tsx b/src/components/FAQSection/index.tsx new file mode 100644 index 0000000000..9c23d26c38 --- /dev/null +++ b/src/components/FAQSection/index.tsx @@ -0,0 +1,21 @@ +import React from "react" +import Marked from "../Marked" + +interface Props { + title: string + rawMarkdownBody: string + pageContext: any +} + +const FAQSection = ({ + title, + rawMarkdownBody, + pageContext +}: Props) => ( +
+

{title}

+ {rawMarkdownBody} +
+) + +export default FAQSection diff --git a/src/components/Footer/index.tsx b/src/components/Footer/index.tsx index e2025e584d..c09f7a6615 100644 --- a/src/components/Footer/index.tsx +++ b/src/components/Footer/index.tsx @@ -25,19 +25,27 @@ const getLinks = (sourcePath: string): FooterLinks[] => [ ], }, { - text: "代码", + text: "规范和代码", href: "/code", subsections: [ - { text: "服务端", href: "/code/#server-libraries" }, - { text: "客户端", href: "/code/#graphql-clients" }, + { text: "规范", href: "https://spec.graphql.cn/" }, + { text: "语言", href: "/code/#languages" }, { text: "工具", href: "/code/#tools" }, + { text: "服务", href: "/code/#services" }, + { + text: "编辑此页 ✎", + href: + "https://github.com/xitu/graphql.github.io/edit/source/" + + sourcePath, + }, ], }, { text: "社区", href: "/community", subsections: [ - { text: "即将到来的活动", href: "/community/upcoming-events/" }, + { text: "行为守则", href: "/codeofconduct/" }, + { text: "GitHub", href: "https://github.com/graphql" }, { text: "Stack Overflow", href: "http://stackoverflow.com/questions/tagged/graphql", @@ -47,26 +55,18 @@ const getLinks = (sourcePath: string): FooterLinks[] => [ href: "https://www.facebook.com/groups/graphql.community/", }, { text: "Twitter", href: "https://twitter.com/GraphQL" }, + { text: "即将到来的活动", href: "/community/upcoming-events/" }, ], }, { - text: "More", + text: "GraphQL 基金会", subsections: [ - { - text: "GraphQL 规范", - href: "/https://graphql.github.io/graphql-spec/", - }, - { text: "GraphQL 基金会", href: "https://foundation.graphql.org/" }, - { - text: "GraphQL GitHub", - href: "https://github.com/graphql", - }, - { - text: "编辑本页 ✎", - href: - "https://github.com/graphql/graphql.github.io/edit/source/" + - sourcePath, - }, + { text: "关于", href: "/foundation/" }, + { text: "加入", href: "/foundation/join/" }, + { text: "会员", href: "/foundation/members/" }, + { text: "总览", href: "https://landscape.graphql.org/" }, + { text: "图表", href: "https://github.com/graphql/artwork" }, + { text: "联系", href: "/foundation/contact/" }, ], }, ] @@ -95,7 +95,11 @@ const Footer = ({sourcePath}: { sourcePath: string }) => { ))}
- Copyright © {`${new Date().getFullYear()}`} GraphQL 基金会。保留所有权利。Linux 基金会已经注册了商标和使用商标。有关 Linux 基金会的商标清单,请参阅我们的 商标使用 页面。Linux 是 Linus Torvalds 的注册商标。隐私政策使用条款。 + Copyright © {`${new Date().getFullYear()}`} GraphQL 基金会。保留所有权利。 + Linux 基金会已经注册了商标和使用商标。有关 Linux 基金会的商标清单,请参阅我们的 + 商标使用 页面 + Linux 是 Linus Torvalds 的注册商标。隐私政策 + 和 使用条款
diff --git a/src/components/FoundationLayout/index.tsx b/src/components/FoundationLayout/index.tsx new file mode 100644 index 0000000000..6eee9ba247 --- /dev/null +++ b/src/components/FoundationLayout/index.tsx @@ -0,0 +1,48 @@ +import React from "react" +import { Link } from "gatsby" +import DocsSidebar from "../DocsSidebar" +import Marked from '../Marked' + +interface Props { + title: string + heroText: string + nextDoc: any + permalink: string + sideBarData: any + rawMarkdownBody: string + pageContext: any +} + +const Index = ({ title, heroText, nextDoc, sideBarData, rawMarkdownBody, pageContext }: Props) => { + return ( +
+
+
+
+ GraphQL Foundation logo +

{heroText}

+
+
+
+
+

{title}

+ {rawMarkdownBody} + {nextDoc?.frontmatter?.permalink && ( + + + Continue Reading → + + + {nextDoc.frontmatter.title} + + + )} +
+ +
+
+
+ ) +} + +export default Index diff --git a/src/components/HeaderLinks/index.tsx b/src/components/HeaderLinks/index.tsx index 2a0c0fdf86..819f77dd70 100644 --- a/src/components/HeaderLinks/index.tsx +++ b/src/components/HeaderLinks/index.tsx @@ -8,22 +8,51 @@ interface LinkItem { } const links: LinkItem[] = [ - { section: "learn", text: "学习", href: "/learn/" }, - { section: "code", text: "代码", href: "/code/" }, - { section: "community", text: "社区", href: "/community/" }, - { section: 'spec', text: '规范', href: 'https://spec.graphql.cn/' }, { - section: "codeofconduct", - text: "行为守则", - href: "/codeofconduct/", + section: "learn", + text: "学习", + href: "/learn/" + }, + { + section: "code", + text: "代码", + href: "/code/" + }, + { + section: "community", + text: "社区", + href: "/community/" + }, + { + section: "faq", + text: "FAQ", + href: "/faq/" + }, + { + section: "spec", + text: "规范", + href: "https://spec.graphql.org/", }, { section: "foundation", text: "基金会", - href: "https://foundation.graphql.org/", + href: "/foundation/", + }, + { + section: "news", + text: "新闻", + href: "/blog/", + }, + { + section: "landscape", + text: "社区总览", + href: "https://l.graphql.org/" + }, + { + section: 'principles', + text: '开发原则', + href: 'https://principles.graphql.cn/' }, - { section: "landscape", text: "社区总览", href: "https://l.graphql.org/" }, - { section: 'principles', text: '开发原则', href: 'https://principles.graphql.cn/' }, ] export default () => ( diff --git a/src/components/Marked/index.tsx b/src/components/Marked/index.tsx index 7c43477620..3e3d88455b 100644 --- a/src/components/Marked/index.tsx +++ b/src/components/Marked/index.tsx @@ -14,8 +14,8 @@ import MiniGraphiQL from "./MiniGraphiQL" import { StarWarsSchema } from "./swapiSchema" import { UsersSchema } from './usersSchema'; -export default function Marked(props) { - return
{marked(props.children, props)}
+export default function Marked(props: { pageContext: any; children: any; }) { + return
{props.children && marked(props.children, props)}
} /** diff --git a/src/content/blog/20150914-graphql.md b/src/content/blog/2015-09-14-graphql.md similarity index 99% rename from src/content/blog/20150914-graphql.md rename to src/content/blog/2015-09-14-graphql.md index 467b6111ea..bc5829b15c 100644 --- a/src/content/blog/20150914-graphql.md +++ b/src/content/blog/2015-09-14-graphql.md @@ -2,6 +2,7 @@ title: "GraphQL: A data query language" layout: blog permalink: /blog/graphql-a-query-language/ +tags: ["blog","spec"] date: 14 Sep 2015 byline: "Lee Byron" --- diff --git a/src/content/blog/20151016-subscriptions.md b/src/content/blog/2015-10-16-subscriptions.md similarity index 99% rename from src/content/blog/20151016-subscriptions.md rename to src/content/blog/2015-10-16-subscriptions.md index a034f8b22b..271cb31dad 100644 --- a/src/content/blog/20151016-subscriptions.md +++ b/src/content/blog/2015-10-16-subscriptions.md @@ -2,6 +2,7 @@ title: "Subscriptions in GraphQL and Relay" layout: blog permalink: /blog/subscriptions-in-graphql-and-relay/ +tags: ["blog", "spec"] date: 16 Oct 2015 byline: Dan Schafer and Laney Kuenzel --- diff --git a/src/content/blog/20160419-mocking.md b/src/content/blog/2016-04-19-mocking.md similarity index 99% rename from src/content/blog/20160419-mocking.md rename to src/content/blog/2016-04-19-mocking.md index 6eb936ed53..4d37e9c9de 100644 --- a/src/content/blog/20160419-mocking.md +++ b/src/content/blog/2016-04-19-mocking.md @@ -3,6 +3,7 @@ title: "Mocking your server is easy with GraphQL" layout: blog permalink: /blog/mocking-with-graphql/ date: 19 Apr 2016 +tags: ["blog"] byline: "Jonas Helfer" guestBio: engineer at Meteor working on Apollo --- diff --git a/src/content/blog/20160502-rest-api-graphql-wrapper.md b/src/content/blog/2016-05-02-rest-api-graphql-wrapper.md similarity index 99% rename from src/content/blog/20160502-rest-api-graphql-wrapper.md rename to src/content/blog/2016-05-02-rest-api-graphql-wrapper.md index 45ef5f48ba..99006133d5 100644 --- a/src/content/blog/20160502-rest-api-graphql-wrapper.md +++ b/src/content/blog/2016-05-02-rest-api-graphql-wrapper.md @@ -2,7 +2,8 @@ title: "Wrapping a REST API in GraphQL" layout: blog permalink: /blog/rest-api-graphql-wrapper/ -date: 5 May 2016 +tags: ["blog"] +date: 2016-05-05 byline: "Steven Luscher" --- diff --git a/src/content/blog/20160914-production-ready.md b/src/content/blog/2016-09-14-production-ready.md similarity index 99% rename from src/content/blog/20160914-production-ready.md rename to src/content/blog/2016-09-14-production-ready.md index 7b62b9f16f..4e2b4aacd3 100644 --- a/src/content/blog/20160914-production-ready.md +++ b/src/content/blog/2016-09-14-production-ready.md @@ -2,6 +2,7 @@ title: "Leaving technical preview" layout: blog permalink: /blog/production-ready/ +tags: ["blog"] date: 14 Sep 2016 byline: "Lee Byron" --- diff --git a/src/content/blog/2017-11-08-programmable-web.md b/src/content/blog/2017-11-08-programmable-web.md new file mode 100644 index 0000000000..a482bcc091 --- /dev/null +++ b/src/content/blog/2017-11-08-programmable-web.md @@ -0,0 +1,12 @@ +--- +title: "ProgrammableWeb: GraphQL Moving to Neutral, Open-Source Foundation" +tags: ["in-the-news"] +layout: blog +date: 2017-11-08 +byline: ProgrammableWeb +permalink: /blog/2017-11-08-programmableweb-graphql-moving-to-neutral-open-source-foundation +--- + +GraphQL will now have its own foundation: the [GraphQL Foundation](/foundation/). Although GraphQL was initially incubated by Facebook, GraphQL is now utilized heavily by a diverse set of companies including major tech giants (e.g. Twitter, Airbnb, Shopify, etc.). Accordingly, it makes sense that the data query language move to a neutral, open source home. Like many open source projects, the GraphQL Foundation will be hosted by the Linux Foundation. Linux will implement an open governance model similar to many collaborations overseen by Linux. The exact details of the model, and future plans continue to be a work in progress. The current founding members include Airbnb, Apollo, Coursera, Elementl, Facebook, GitHub, Hasura, Prisma, Shopify and Twitter. + +[Read More »](https://www.programmableweb.com/news/graphql-moving-to-neutral-open-source-foundation/brief/2018/11/08) \ No newline at end of file diff --git a/src/content/blog/2018-11-06-eweek.md b/src/content/blog/2018-11-06-eweek.md new file mode 100644 index 0000000000..9b847d6bd9 --- /dev/null +++ b/src/content/blog/2018-11-06-eweek.md @@ -0,0 +1,12 @@ +--- +title: "eWeek: GraphQL API Specification Moving Forward with Independent Foundation" +tags: ["in-the-news"] +layout: blog +date: 2018-11-06 +byline: eweek +permalink: /blog/2018-11-06-eweek-graphql-api-specification-moving-forward-with-independent-foundation +--- + +The Linux Foundation announced on Nov. 6 that it is forming a new foundation to support the open source GraphQL specification, which enables a new generation of APIs. For nearly two decades, REST (Representational State Transfer) has been one of the primary approaches for enabling APIs that help to connect and extend applications and web services. REST however has multiple limitations, which is where GraphQL steps into the picture, finding wide adoption by large web properties. GraphQL was created in 2012 by Facebook and became open source in 2015. The move to create a new vendor-neutral independent foundation under the Linux Foundation will serve to help further advance the development of GraphQL. + +[Read more »](https://www.eweek.com/development/graphql-api-specification-moving-forward-with-independent-foundation) \ No newline at end of file diff --git a/src/content/blog/2018-11-06-infoworld.md b/src/content/blog/2018-11-06-infoworld.md new file mode 100644 index 0000000000..7059d04f1c --- /dev/null +++ b/src/content/blog/2018-11-06-infoworld.md @@ -0,0 +1,14 @@ +--- +title: "InfoWorld: GraphQL gets its own foundation" +tags: ["in-the-news"] +layout: blog +date: 2018-11-06 +byline: InfoWorld +permalink: /blog/2018-11-06-infoworld-graphql-gets-its-own-foundation +--- + +The Linux Foundation plans to host a foundation to support the GraphQL API project, with the intent of growing a neutral ecosystem for the technology. + +GraphQL is a specification for building APIs. It is intended to make cross-platform and mobile development simpler. Providing an alternative to REST, GraphQL lets developers use a strongly typed query language to define requests and responses, letting an application specify what it needs from an API. GraphQL enables access to multiple data sources through a single request. + +[Read more »](https://www.infoworld.com/article/3318255/apis/graphql-gets-its-own-foundation.html) \ No newline at end of file diff --git a/src/content/blog/2018-11-06-linux-foundation-graphql.md b/src/content/blog/2018-11-06-linux-foundation-graphql.md new file mode 100644 index 0000000000..9d6a56d60c --- /dev/null +++ b/src/content/blog/2018-11-06-linux-foundation-graphql.md @@ -0,0 +1,48 @@ +--- +title: "The Linux Foundation Announces Intent to Form New Foundation to Support GraphQL" +tags: ["announcements"] +layout: blog +date: 2018-11-06 +byline: GraphQL Foundation +permalink: /blog/2018-11-06-linux-foundation-announces-intent-to-form-new-foundation-to-support-graphql +--- + +[The Linux Foundation](https://www.linuxfoundation.org/), the nonprofit organization enabling mass innovation through open source, announces a broad coalition of industry leaders and users have joined forces to create a new open source foundation for the [GraphQL](https://graphql.org/) project, which will be dedicated to growing and sustaining a neutral GraphQL ecosystem. Hosted under the Linux Foundation, the [GraphQL Foundation](https://gql.foundation/)'s mission will be to enable widespread adoption and help accelerate development of GraphQL and the surrounding ecosystem. + +“As one of GraphQL’s co-creators, I’ve been amazed and proud to see it grow in adoption since its open sourcing. Through the formation of the GraphQL Foundation, I hope to see GraphQL become industry standard by encouraging contributions from a broader group and creating a shared investment in vendor-neutral events, documentation, tools, and support,” said Lee Byron, co-creator of GraphQL. + +GraphQL is a next­-generation API technology developed internally by Facebook in 2012 before being publicly [open sourced in 2015](https://code.fb.com/core-data/graphql-a-data-query-language/). As application development shifts towards microservices architectures with an emphasis on flexibility and speed to market, tools like GraphQL are redefining API design and client-server interaction to improve the developer experience, increasing developer productivity and minimizing amounts of data transferred. GraphQL makes cross-platform and mobile development simpler with availability in multiple programming languages, allowing developers to create seamless user experiences for their customers. + +GraphQL is being used in production by a [variety of high scale companies](https://graphql.org/users/) such as Airbnb, Atlassian, Audi, CNBC, GitHub, Major League Soccer, Netflix, Shopify, The New York Times, Twitter, Pinterest and Yelp. GraphQL also [powers hundreds of billions of API calls a day at Facebook](https://code.fb.com/core-data/graphql-a-data-query-language/). + +“We are thrilled to welcome the GraphQL Foundation into the Linux Foundation. This advancement is important because it allows for long-term support and accelerated growth of this essential and groundbreaking technology that is changing the approach to API design for cloud-connected applications in any language,” said Jim Zemlin, Executive Director, the Linux Foundation. + +Unlike REST-­based APIs, which take advantage of HTTP and existing protocols, GraphQL APIs provide developers with the flexibility to query the exact data they need from a diverse set of cloud data sources, with less code, greater performance and security, and a faster development cycle. Not only does this enable developers to rapidly build top­ quality apps, it also helps them achieve consistency and feature parity across multiple platforms such as web, iOS, Android, and embedded and IoT applications. + +The GraphQL Foundation will have an open governance model that encourages participation and technical contribution and will provide a framework for long-term stewardship by an ecosystem invested in GraphQL’s success. + +“At Facebook, our mission is to give people the power to build community and bring the world closer together. We believe open source projects and the communities built around them help accelerate the pace of innovation and bring many minds to bear to solve large-scale challenges. GraphQL is one such project and community and the GraphQL Foundation will help ensure GraphQL continues to solve the real data fetching challenges that developers will face in building the products of tomorrow,” said Killian Murphy, Director, Facebook Open Source. + +“GraphQL has redefined how developers work with APIs and client-server interactions. We look forward to working with the diverse GraphQL community from end users like Facebook to a diverse ecosystem of vendors to become an independent foundation, draft their governance and continue to foster the growth and adoption of GraphQL,” said Chris Aniszczyk, Vice President of Developer Relations, the Linux Foundation. + +## Supporting Quotes + +“Airbnb is making a massive investment in GraphQL, putting it at the center of our API strategy across both our product and internal tools. We are excited to see the Foundation play a key role in cultivating the community around GraphQL and continue to evolve GraphQL as a technology, paving the way for continued innovation of Airbnb’s API.” — Adam Neary, Tech Lead, Airbnb + +“Given GraphQL’s centrality in the modern app development stack, the foundation we’re announcing today is not just necessary, but overdue. As the creators of Apollo, the most widely used implementation of GraphQL, we’re looking forward to working together with the Linux Foundation to define appropriate governance processes for this critical Internet standard.” – Geoff Schmidt, co­-founder and CEO of Apollo GraphQL + +“GraphQL, and the strong ecosystem behind it, is leading to a fundamental change in how we build products, and it helps bring together teams and organizations of every size. At Coursera, GraphQL assists us in understanding the massive breadth of our APIs and helps us create transformative educational experiences for everyone, everywhere. We’re excited to see the impact of the GraphQL Foundation in making both the technology and the community stronger.” – Jon Wong, Staff Software Engineer, Coursera + +“GraphQL has come a long way since its creation in 2012. It’s been an honor seeing the technology grow from a prototype, to powering Facebook’s core applications, to an open source technology on the way to becoming a ubiquitous standard across the entire industry. The GraphQL Foundation is an exciting step forward. This new governance model is a major milestone in that maturation process that will ensure a neutral venue and structure for the entire community to drive the technology forward.” – Nick Schrock, Founder, Elementl, GraphQL Co-Creator + +“We created GraphQL at Facebook six years ago to help us build high-performance mobile experiences, so to see it grow and gain broad industry adoption has been amazing. Since Facebook open-sourced GraphQL in 2015, the community has grown to include developers around the world, newly-founded startups, and well-established companies. The creation of the GraphQL Foundation is a new chapter that will create a governance structure we believe will empower the community and provide GraphQL long-term technical success. I’m excited to see its continued growth under the Foundation’s guidance.” – Dan Schafer, Facebook Software Engineer, GraphQL Co-Creator + +“GraphQL has proven to be a valuable, extensible tool for GitHub, our customers, and our integrators over the past two years. The GraphQL Foundation embodies openness, transparency, and community — all of which we believe in at GitHub.” – Kyle Daigle, Director, Ecosystem Engineering, GitHub + +“This is a very welcome announcement, and we believe that this is a necessary step. The GraphQL community has grown rapidly over the last few years, and has reached the point where transparent, neutral governance policies are necessary for future growth. At Hasura, we look forward to helping the Foundation in its work.” – Tanmai Gopal, CEO, Hasura + +“GraphQL has become one of the most important technologies in the modern application development stack and sees rapid adoption by developers and companies across all industries. At Prisma, we’re very excited to support the GraphQL Foundation to enable a healthy community and sustain the continuous development of GraphQL.” – Johannes Schickling, Founder and CEO, Prisma + +“At Shopify, GraphQL powers our core APIs and all our mobile and web clients. We strongly believe in open development and look to the Foundation to help expand the community and nurture its evolution.” – Jean-Michel Lemieux, SVP Engineering, Shopify + +“GraphQL is gaining tremendous adoption as one of the best protocols for remote retrieval of large object graphs. At Twitter, we are looking forward to what’s to come in the GraphQL ecosystem and are very excited to support the GraphQL Foundation.” – Anna Sulkina Sr. Engineering Manager, Core Services Group, Twitter diff --git a/src/content/blog/2018-11-07-datanami.md b/src/content/blog/2018-11-07-datanami.md new file mode 100644 index 0000000000..5978b8b549 --- /dev/null +++ b/src/content/blog/2018-11-07-datanami.md @@ -0,0 +1,12 @@ +--- +title: "Datanami: Will GraphQL Become a Standard for the New Data Economy?" +tags: ["in-the-news"] +layout: blog +date: 2018-11-07 +byline: Datanami +permalink: /blog/2018-11-07-datanami-will-graphql-become-a-standard-for-the-new-data-economy +--- + +Don’t look now but a new language called GraphQL is emerging that could radically simplify how developers use APIs to get data into applications, and potentially provide a graph-like alternative to procedural REST. The company behind the open source software, Apollo, today announced the GraphQL Platform to standardize access to the new technology. + +[Read more »](https://www.datanami.com/2018/11/07/will-graphql-become-a-standard-for-the-new-data-economy/) diff --git a/src/content/blog/2018-11-07-sd-times.md b/src/content/blog/2018-11-07-sd-times.md new file mode 100644 index 0000000000..017a1d70bd --- /dev/null +++ b/src/content/blog/2018-11-07-sd-times.md @@ -0,0 +1,14 @@ +--- +title: "SD Times: The Linux Foundation announces plans to form GraphQL foundation" +tags: ["in-the-news"] +layout: blog +date: 2018-11-07 +byline: SD Times +permalink: /blog/2018-11-07-sd-times-lf-announces-plans-to-form-graphql-foundation +--- + +In an effort to grow and sustain the GraphQL ecosystem, The Linux Foundation has announced plans to launch a new open-source foundation for it. GraphQL is an [API](https://sdtimes.com/tag/apis/) technology that was initially developed by Facebook. + +The GraphQL Foundation will be a collaborative effort between industry leaders and users. + +[Read more »](https://sdtimes.com/api/the-linux-foundation-announces-plans-to-form-graphql-foundation/) diff --git a/src/content/blog/2018-11-07-the-register.md b/src/content/blog/2018-11-07-the-register.md new file mode 100644 index 0000000000..e674b64824 --- /dev/null +++ b/src/content/blog/2018-11-07-the-register.md @@ -0,0 +1,12 @@ +--- +title: "The Register: Facebook’s open-source license drama-zone GraphQL gets swanky digs in Linux mansion" +tags: ["in-the-news"] +layout: blog +date: 2018-11-07 +byline: The Register +permalink: /blog/2018-11-07-the-register +--- + +GraphQL, a query language for APIs that was on the verge of being shunned last year over software license concerns, has bounced back and landed in the arms of the Linux Foundation. + +[Read more »](https://www.theregister.co.uk/2018/11/07/graphql_on_linux/) \ No newline at end of file diff --git a/src/content/blog/2018-11-12-channel-futures.md b/src/content/blog/2018-11-12-channel-futures.md new file mode 100644 index 0000000000..68ac1f29f9 --- /dev/null +++ b/src/content/blog/2018-11-12-channel-futures.md @@ -0,0 +1,17 @@ +--- +title: "Channel Futures: GraphQL API Query Language Growing, Gets Own Support Foundation" +tags: ["in-the-news"] +layout: blog +date: 2018-11-12 +byline: Channel Futures +permalink: /blog/2018-11-12-channel-futures-graphql-api-query-language-growing +--- + +The growing popularity and use of the open-source GraphQL API language by software developers has inspired the creation of a [GraphQL Foundation](https://www.linuxfoundation.org/press-release/2018/11/intent_to_form_graphql/) to promote the technology and help it accelerate its development and footprint in future code. + + + +The new organization, hosted by the non-profit [Linux Foundation](http://www.linuxfoundation.org/), is made up of a wide range of companies and users that are interested in growing and nurturing the GraphQL API project, which Facebook originally developed internally. After several years of development, Facebook released the code for GraphQL as an opn-source project. + +[Read more »](https://www.channelfutures.com/open-source/graphql-api-query-language-growing-gets-own-support-foundation +) \ No newline at end of file diff --git a/src/content/blog/2019-03-12-joint-development-foundation.md b/src/content/blog/2019-03-12-joint-development-foundation.md new file mode 100644 index 0000000000..c4c864fe44 --- /dev/null +++ b/src/content/blog/2019-03-12-joint-development-foundation.md @@ -0,0 +1,60 @@ +--- +title: The GraphQL Foundation Announces Collaboration with the Joint Development Foundation to Drive Open Source and Open Standards +tags: ["announcements"] +layout: blog +date: 2019-03-12 +byline: GraphQL Foundation +permalink: /blog/2019-03-12-graphql-foundation-announces-collaboration-with-jdf +--- + +The [GraphQL Foundation](/foundation/), a neutral home for the GraphQL community to accelerate development of the surrounding ecosystem, today announces it is collaborating with the Joint Development Foundation (JDF), [which recently joined the Linux Foundation to drive adoption of open source and standards](https://www.linuxfoundation.org/press-release/2018/12/jdf-joins-lf-family/), to continue developing the [GraphQL specification](https://github.com/facebook/graphql/). + +GraphQL Foundation encourages contributions, stewardship, and a shared investment from a broad group in vendor-neutral events, documentation, tools, and support for the data query language. The following companies Apollo, AWS, Butterfly Network, Dgraph Labs, Facebook, Gatsby, GraphZen, Hasura, IBM, Intuit, Neo4j, Novvum, Pipefy, Salsify, Solo.io and Thicit are joining as members to advance GraphQL as an industry specification for designing more effective APIs. + +GraphQL powers hundreds of billions of API calls a day at Facebook, which developed the technology in 2012 and played an integral role in helping GraphQL [join the Linux Foundation last year](https://www.linuxfoundation.org/press-release/2018/11/intent_to_form_graphql/). Today, virtually every major programming language offers GraphQL support through a variety of open source software libraries. + +GraphQL is the first Linux Foundation project to benefit from the JDF and Linux Foundation collaboration, which provides open source projects with a swift path to standardization for open specifications. Developers will have an open GraphQL specification and open source software implementations available for designing conformant APIs. + +“We are excited to formally welcome new members and to work closely with them to build out and support a global GraphQL ecosystem. We’re pleased that the GraphQL specification will continue to evolve through the JDF and Linux Foundation partnership. With an easier and faster way to create and advance standards, developers can concentrate on creating applications that make a bigger impact on communities around the world,” said Lee Byron, co-creator of GraphQL. + +GraphQL is important for API development as it allows nested objects in a single API request that traditionally would require multiple API requests. The [GraphQL specification](https://github.com/facebook/graphql/), [GraphQL.js](https://github.com/graphql/graphql-js) reference implementation, [DataLoader](https://github.com/facebook/dataloader) library, and [GraphiQL](https://github.com/graphql/graphiql) developer tool are technical projects supported by the GraphQL Foundation. As application development shifts toward microservices architectures with an emphasis on flexibility and speed to market, tools like GraphQL are redefining API design and client-server interaction to improve the developer experience, increasing developer productivity and minimizing amounts of data transferred. GraphQL makes cross-platform and mobile development simpler with availability in multiple programming languages that are consistent and feature parity across multiple platforms such as web, iOS, Android, and embedded and IoT applications. + +[The Linux Foundation](https://www.linuxfoundation.org/) and the [Facebook Open Source](https://opensource.facebook.com/) team leveraged the JDF’s proven framework to create a lightweight governance structure for specifications — allowing communities to quickly spin-up neutral collaborations. + +“We’re thrilled to see GraphQL and the Joint Development Foundation join forces and get to work so quickly to advance open standards,” said Jim Zemlin, executive director of the Linux Foundation. “Working with the JDF, the GraphQL community is able to leverage turnkey infrastructure to create and manage open standards more quickly and nimbly than ever before. This allows developers to continue to break barriers and modernize application development.” + +“We are very pleased to have worked closely with the Linux Foundation in creating this novel approach to specification-based collaborations,” said Michael Cheng from the Facebook Open Source team. “By offering open source communities a streamlined path to standardization and nurturing open source implementations, this strategic alignment benefits GraphQL developers, corporate contributors and end users who need both outcomes to succeed.” + +“We look forward to working closely with the GraphQL Foundation and we expect many other Linux Foundation projects to work with us this year to accelerate specifications and standards development to advance their mission and drive the creation of innovative technology, ” said David Rudin, president of the Joint Development Foundation. + +## Member Quotes + +“Given GraphQL’s centrality in the modern app development stack, the foundation we’re launching today is not just necessary, but overdue. As the creators of Apollo, the most widely used implementation of GraphQL, we’re looking forward to working together with the Linux Foundation to define appropriate governance processes and accelerate the adoption of this critical Internet standard.” — Geoff Schmidt, CEO and Co-Founder, Apollo + +“GraphQL is a foundational technology for building APIs that empower frontend developers to deliver the best user experience for their customers. With AWS AppSync and the Amplify Framework, AWS is enabling developers to build and run critical GraphQL workloads at scale, and we are excited to join the Foundation to support and grow the GraphQL community.” — Adrian Cockcroft, Vice President of Cloud Architecture Strategy, AWS + +“GraphQL has been invaluable to Butterfly Network in advancing our mission of democratizing medical imaging. It’s enabled us to build data-efficient APIs to serve healthcare providers in areas with limited broadband internet access, while preserving our ability to quickly develop new API functionality. GraphQL has played a key role in allowing our back end and front end teams to work together with a minimum of friction. We’re excited to support the GraphQL Foundation in its work to further shepherd the standard.” — Jimmy Jia, Principal Scientist, Butterfly Network + +“Dgraph started just a few months after a draft GraphQL spec was released in mid-2015. Unsatisfied with existing graph languages, we decided to bet the future of our distributed graph database on GraphQL. Dgraph is now the only database to natively support a language very close to GraphQL. Considering how easy and intuitive it is for our users, it has been the best decision we made. So, we stand proud with the GraphQL Foundation to help build the next generation of apps on graphs.” – Manish R. Jain, CEO, Dgraph Labs + +“Our goal at Gastby is to provide the best platform for building fast, compelling websites. We use GraphQL to provide a flexible data layer that can be used with different sources. We welcome the establishment of the GraphQL Specification Project and are very excited to be part of it.” — Mikhail Novikov, Software Developer, Gatsby Inc. + +“GraphZen strives to deliver a fantastic developer experience for C# developers building GraphQL APIs and to provide the support and training needed by enterprises to realize the benefits of GraphQL. GraphZen is excited to join the GraphQL Foundation and steward the GraphQL specification in a way that continues to drive innovation and adoption through open standards.” — Craig Smitham, Creator & Founder, GraphZen + +“The GraphQL technology and community is spearheading a much required shift in the API experience for the modern web, especially as applications are becoming more ‘frontend’ heavy. At Hasura, we’re extremely excited about the potential of GraphQL to evolve the way teams organize their codebases, and communicate with each other; especially in relation to the ongoing serverless movement. There could not be a better home for GraphQL projects and events than the GraphQL Foundation, and we are proud to do our bit to help make the technology and community around GraphQL sustainable and open.” — Tanmai Gopal, CEO, Hasura + +“IBM has continued to be an industry leader, helping clients keep pace with the rapidly evolving API technologies landscape. We are pleased to join the new GraphQL Foundation as a founding member to help drive greater open source innovation and adoption of this important data access language and runtime for APIs.” – Juan Carlos Soto, VP Hybrid Cloud Integration and API Economy, IBM + +“Intuit began using GraphQL shortly after it arrived in open source. We have developed a complex schema with over 600 core objects, 1,600 types and thousands of connections between objects. We’ve made major contributions to the open source GraphQL Java library. We look forward to participating in the GraphQL Foundation to advance its capabilities and more directly participate in the thriving community.” — Jeff Brewer, Vice President, Chief Architect, Small Business and Self-Employed Group, Intuit + +“Neo4j is pleased to support GraphQL, due to its unique ability to enable front-end developers, API developers and data architects to all work with the same graph-based data model. Our GraphQL integration and GRANDstack have already helped thousands of developers build graph applications with Neo4j, thanks to the huge developer productivity gain of GraphQL and the graph thinking mindset it brings for both developers and API consumers. The GraphQL Foundation is an important step to cement today’s most relevant standard for building APIs and we’re honored to join as founding members to help steward GraphQL as the ecosystem continues to evolve.” — Emil Eifrem, CEO and Co-Founder, Neo4j + +“We are grateful that Novvum has grown alongside GraphQL and its community over the past four years. We couldn’t be more excited about the future of GraphQL, and look forward to working with the Linux Foundation and GraphQL Foundation to improve the quality and experience of API development for engineers.” — Raj Singh, CEO and Co-Founder, Novvum + +“At Pipefy we are building the lean management platform. Since the beginning, GraphQL has enabled our developers to deliver new features and services more efficiently and with better communication from front-end and back-end teams. After we started using it internally, we decided to build our public API using GraphQL, a choice that enabled us to deliver a better developer experience to the developers who are building on top of our platform. We are excited to contribute to the GraphQL ecosystem and support the GraphQL Foundation.” — Raphael Costa, Head of Platform, Pipefy + +“Salsify provides a data platform that enables the world’s largest brands to deliver compelling product experiences across the retail ecosystem. Our GraphQL powered APIs enable us to support a diverse set of use cases with great developer ergonomics and excellent performance. We look forward to working with the GraphQL Foundation to support the continued evolution of GraphQL.” — Joel Turkel, Chief Software Architect, Salsify + +“[Solo.io](http://solo.io/)’s mission is to empower enterprise organizations rapidly adopt innovative technology and extend their existing investments. GraphQL is a powerful way to help “glue” monolith, microservices, and serverless applications with a unified API. Our open-source project, Sqoop, leverages GraphQL and other innovative projects like Envoy to streamline the developer experience, and simply glue together environments without writing a single line of code. We are excited to join the GraphQL Foundation and look forward to working within the GraphQL community” — Idit Levine, CEO & Founder, Solo.io + +“GraphQL, and alongside its tooling, has grown to proof its worth and is here to stay. Time for a power-up supported by many hands and brains through the Joint Development Foundation and Linux Foundation. GraphQL is the glue that keeps your domain data in context, understandable, and always ready to empower the next ideas. Looking forward to new and improved power’s, to evolution.” — Tim Govers, CEO, Thicit diff --git a/src/content/blog/2019-10-28-interactive-landscape.md b/src/content/blog/2019-10-28-interactive-landscape.md new file mode 100644 index 0000000000..c1926bf58f --- /dev/null +++ b/src/content/blog/2019-10-28-interactive-landscape.md @@ -0,0 +1,50 @@ +--- +title: GraphQL Foundation Launches Interactive Landscape and Welcomes New Members from Open Source Summit Europe +tags: ["announcements"] +layout: blog +date: 2019-10-28 +byline: GraphQL Foundation +permalink: /blog/2019-10-28-graphql-foundation-launches-interactive-landscape-welcomes-new-members +--- +[The GraphQL Foundation](/), a neutral home for the GraphQL community to accelerate development of the surrounding ecosystem, today announced seven new members to support the Foundation's efforts, along with the launch of the [GraphQL Landscape](https://landscape.graphql.org). + +The GraphQL Landscape is a dynamically generated tool designed to help explore the burgeoning GraphQL community of projects, adopters and member organizations. Currently, it is comprised of 100+ cards representing a market cap of more than $3.4T. + +"When we first created GraphQL, we set out to make product development easier with APIs driven by the needs of mobile and app developers and dramatic simplifications of how APIs are built and maintained," said Lee Byron, Director of the GraphQL Foundation. "I'm thrilled to see this influx of multi-industry support for GraphQL and a commitment to increase developer productivity, showcased throughout the impressive and growing landscape." + +"I'm thrilled to help launch the GraphQL Foundation's first landscape, displaying GraphQL's vast range of projects, adopters and members," said Chris Aniszczyk, VP of Developer Relations and CTO of CNCF at the Linux Foundation. "This interactive resource has been a labor of love from and for our community, and I look forward to watching it grow into the same standard for real-time ecosystem information that the CNCF Landscape has been for the cloud native space." + +GraphQL is a next­-generation API technology developed internally by Facebook in 2012 before being publicly [open sourced in 2015](https://code.fb.com/core-data/graphql-a-data-query-language/). Unlike REST-­based APIs, which take advantage of HTTP and existing protocols, GraphQL APIs provide developers with the flexibility to query the exact data they need from a diverse set of cloud data sources, with less code, greater performance and security, and a faster development cycle. Not only does this enable developers to rapidly build top­ quality apps, it also helps them achieve consistency and feature parity across multiple platforms such as web, iOS, Android, and embedded and IoT applications. + +Brian Warner of The Linux Foundation has joined the GraphQL Foundation as its Program Director, helping to support the growing community and the project's ongoing needs. "I look forward to working with Lee and the governing board to establish the infrastructure and support needed to ensure the health and sustainability of the vibrant GraphQL community." + +GraphQL is being used in production by a [variety of high scale companies](https://graphql.org/users/) such as Airbnb, Atlassian, Audi, CNBC, GitHub, Major League Soccer, Netflix, Shopify, The New York Times, Twitter, Pinterest and Yelp. GraphQL also [powers hundreds of billions of API calls a day at Facebook](https://code.fb.com/core-data/graphql-a-data-query-language/). + +## Member Quotes + +"Open source specifications rely on strong collaboration and proper stewardship. 8base loves GraphQL and we joined the GraphQL Foundation to be involved in the specification's future with other leading-edge technology companies. Our hope is that, with our involvement, the surrounding ecosystem continues to flourish at an accelerated pace." - *Albert Santalo, CEO & Founder, 8base* + +"It's truly surreal to see GraphQL grow from its conception to spread throughout the entire technology industry. The Foundation provides the infrastructure to make this a true industry standard, backed by stable, trusted, company-neutral governance." - *Nick Schrock, Founder, Elementl* + +"At Expedia Group, GraphQL is helping us build better experiences for our travelers. As a rapidly adopted technology in software development, we believe an open and community supported GraphQL specification and ecosystem is critical to its continued success." - *Trevor Livingston, Principal Architect, Expedia Group (VRBO)* + +"At Fauna, we have seen first-hand the productivity and architectural benefits GraphQL offers developers. We believe that an open ecosystem and shared specification are a benefit to all. We're excited to contribute to the GraphQL community and collaborate on its continued innovation." - *Matt Freels, CTO, Fauna, Inc.* + +"We are thrilled to be a part of the GraphQL Foundation. We see GraphQL as one of the most important emerging API technologies and strongly believe in its bright future! We're excited to continue investing in the GraphQL ecosystem and community with tools, events and educational content." - *Johannes Schickling, CEO, Prisma* + +"We're deliberate about the technology we build and adopt. That's why we're excited to double-down on our investment in GraphQL as a foundational technology at Shopify. We believe GraphQL provides great tools for our internal teams and app developers to extend our platform and create faster merchant experiences." - *Jean-Michel Lemieux, CTO, Shopify* + +"GraphQL plays a key part in helping us serve the public conversation on Twitter by enabling faster product iteration across our teams. As GraphQL is gaining tremendous adoption as one of the best protocols for remote retrieval of large object graphs, we are very excited to support the GraphQL Foundation." - *Anna Sulkina Engineering Director, Core Services Group, Twitter* + +## About the GraphQL Foundation + +The GraphQL Foundation is an open, neutral organization that provides oversight of funding, operations, and marketing resources for the GraphQL community to enable widespread adoption and help accelerate development of the broader ecosystem. The [GraphQL specification](https://github.com/graphql/graphql-spec), [GraphQL.js](https://github.com/graphql/graphql-js) reference implementation, [DataLoader](https://github.com/graphql/dataloader) library, and [GraphiQL](https://github.com/graphql/graphiql) developer tool are technical projects supported by the GraphQL Foundation. More details can be found at [https://foundation.graphql.org](/). + +## About The Linux Foundation + +The Linux Foundation is the organization of choice for the world’s top developers and companies to build ecosystems that accelerate open technology development and industry adoption. Together with the worldwide open source community, it is solving the hardest technology problems by creating the largest shared technology investment in history. Founded in 2000, The Linux Foundation today provides tools, training and events to scale any open source project, which together deliver an economic impact not achievable by any one company. More information can be found at www.linuxfoundation.org. + +\# \# \# + +*The Linux Foundation has registered trademarks and uses trademarks. For a list of trademarks of The Linux Foundation, please see our trademark usage page: [https://www.linuxfoundation.org/trademark-usage](https://www.linuxfoundation.org/trademark-usage). Linux is a registered trademark of Linus Torvalds.* + diff --git a/src/content/blog/2019-10-31-linux-foundation-training.md b/src/content/blog/2019-10-31-linux-foundation-training.md new file mode 100644 index 0000000000..c8205a956d --- /dev/null +++ b/src/content/blog/2019-10-31-linux-foundation-training.md @@ -0,0 +1,39 @@ +--- +title: "Linux Foundation Training Announces a Free Online Course-Exploring GraphQL: A Query Language for APIs" +tags: ["announcements"] +layout: blog +date: 2019-10-31 +byline: GraphQL Foundation +permalink: /blog/2019-10-31-linux-foundation-training-announces-free-online-course-exploring-graphql +--- + +[The Linux Foundation](http://www.linuxfoundation.org/), the nonprofit organization enabling mass innovation through open source, today announced enrollment is now open for a new, free, course – [Exploring GraphQL: A Query Language for APIs](https://www.edx.org/course/introduction-to-graphql). This course is offered through [edX](https://www.edx.org/), the trusted platform for learning. + +[GraphQL](https://graphql.org) is revolutionizing the way developers are building APIs for web, mobile and even databases. But what exactly is GraphQL? GraphQL is an open source data query and manipulation language for APIs, and a runtime for fulfilling queries with existing data. + +This course explains what GraphQL is and why it is getting so much attention from software engineers. It covers the advantages over REST, what types of software architectures to use it with, and why it benefits both frontend and backend developers. The student practices GraphQL queries in an interactive playground, and learns advanced topics such as how to implement a GraphQL server on the backend, how to use a GraphQL server with a client, and how to keep the GraphQL server secure. The course content was originally created by [Prisma](https://prisma.io), and updated and maintained by [Novvum](https://novvum.io). + +"Since open sourcing GraphQL, I have been blown away by the growth of the technology and community. I'm excited to see the introduction of more educational material which I hope will help our community continue to grow and reach developers world-wide." – *Lee Byron, Executive Director, GraphQL Foundation, and GraphQL Co-Creator* + +This course will help programmers gain the skills needed to use GraphQL for a small project or professionally in production. They will feel comfortable getting started with the right tools for their use case. + +For the nontechnical person, this course will help them improve communication with developers and to participate in conversations about GraphQL. They will understand when and why to use GraphQL for a project. + +[Exploring GraphQL: A Query Language for APIs](https://www.edx.org/course/introduction-to-graphql) is available at no cost, with content access for up to 7 weeks. Learners may upgrade to the verified track for $99, which includes all graded assessments, unlimited access to the course content and the ability to earn a Verified Certificate upon passing the course. + +### About The Linux Foundation + +The Linux Foundation is the organization of choice for the world’s top developers and companies to build ecosystems that accelerate open technology development and industry adoption. Together with the worldwide open source community, it is solving the hardest technology problems by creating the largest shared technology investment in history. Founded in 2000, The Linux Foundation today provides tools, training and events to scale any open source project, which together deliver an economic impact not achievable by any one company. More information can be found at [www.linuxfoundation.org](https://linuxfoundation.org). + +The Linux Foundation has registered trademarks and uses trademarks. For a list of trademarks of The Linux Foundation, please see our trademark usage page: [https://www.linuxfoundation.org/trademark-usage](https://www.linuxfoundation.org/trademark-usage/). + +Linux is a registered trademark of Linus Torvalds. + +\# \# \# + +### Media Contact: + +Clyde Seepersad +The Linux Foundation +404-964-6973 +cseepersad@linuxfoundation.org diff --git a/src/content/blog/2020-04-02-graphql-annual-report-2019.md b/src/content/blog/2020-04-02-graphql-annual-report-2019.md new file mode 100644 index 0000000000..c37151b693 --- /dev/null +++ b/src/content/blog/2020-04-02-graphql-annual-report-2019.md @@ -0,0 +1,26 @@ +--- +title: "Announcing the 1st GraphQL Foundation Annual Report" +tags: ["announcements"] +layout: blog +date: 2020-04-02 +byline: GraphQL Foundation +permalink: /blog/2020-04-02-announcing-the-first-graphql-foundation-annual-report +--- + +The GraphQL Foundation recently turned 1 year old and is happy to announce its [first annual report](/foundation/annual-reports/2019/)! + +The annual report details the accomplishments of the organization in its first year, along with a forward looking statement for 2020 and beyond from Lee Byron, the GraphQL Foundation Executive Director: + +> As the Executive Director of the GraphQL project, I hope I can speak for the whole community when I say we are looking forward to another productive year of GraphQL development. We are putting the final touches on the GraphQL 2020 spec release, and continue to make great progress developing new features, stabilizing existing ones, and exploring beyond core GraphQL. +> +> It has been really encouraging to see GraphQL continue to evolve over the past year as a technology and as a community. GraphQL is being used at scale by not only Facebook but now a great number of organizations large and small. As I said when first introducing the project, GraphQL is unapologetically driven by the needs of the client. This has been a critical aspect of GraphQL's success and it is great to see this principle reflect itself in our community, where those more interested in consuming APIs than producing them have come together to support the ongoing sustainability of the project. +> +> Since establishing the GraphQL Foundation, we've had an outpouring of support from these companies. This neutral, non-profit home for the GraphQL project has provided a healthy way for users, contributors, and supporters to collaborate and contribute funding in support of our programs and collaborative processes. For example, this support has enabled us to support long-time contributor Ivan Goncharov to focus on crucial development and maintenance of the reference implementation, specification and other community gardening work. It has also allowed us to launch a [free GraphQL edX course](https://www.edx.org/course/exploring-graphql-a-query-language-for-apis), and has enabled us to take some first steps toward supporting and producing community events. +> +> Development of the GraphQL spec has remained open to all contributors. Over the last year we've brought more rigor and clarity to the development process. I've found it encouraging that contributions have been a healthy mix of aspirational new features and iterative improvements to the stable base. This demonstrates that GraphQL is evolving in meaningful ways to address exciting new use cases while also building confidence and stability around what thousands of companies use in production every day. Both of these are essential for GraphQL's long term success. +> +> Looking ahead, I have great optimism for GraphQL and see huge opportunities. First, we've been hard at work on the 2020 spec and that release is imminent. Spec development continues to accelerate and exciting advancements and improvements are underway for the 2021 release and beyond. Second, we have been accepted to participate in Google Summer of Code and are looking forward to adding these talented students as project collaborators. Third, the communities around the core GraphQL project are collaborating. For example, GraphiQL and Playground recently announced they will be joining efforts to build better tools for us all. +> +> Thank you again for your involvement in this project and your support of the GraphQL Foundation. I am pleased with our progress and am looking forward to another productive year. +> +> _– **Lee Byron**, Executive Director, GraphQL Foundation, and GraphQL Co-Creator_ diff --git a/src/content/blog/2020-04-03-graphiql-graphql-playground.md b/src/content/blog/2020-04-03-graphiql-graphql-playground.md new file mode 100644 index 0000000000..8f2ecc7cfa --- /dev/null +++ b/src/content/blog/2020-04-03-graphiql-graphql-playground.md @@ -0,0 +1,75 @@ +--- +title: "Web-based GraphQL IDEs for the win: How & Why Playground & GraphiQL are joining forces" +tags: ["announcements"] +layout: blog +date: 2020-04-03 +byline: Rikki Schulte, Jason Kuhrt +permalink: /blog/2020-04-03-web-based-graphql-ides-for-the-win +--- + +![Banner showing the Prisma and GraphQL Foundation logos with a :handshake: emoji between them](/img/news/playground-transition-banner.png) + +## GraphiQL's beginnings + +The initial public commit to GraphiQL was in 2014. + +When [Lee Byron](https://github.com/leebyron), [Hyo Jeong](https://github.com/asiandrummer) and [Angel Gomez](https://github.com/AGS-) first published it, the intention was to create a minimal reference IDE development ecosystem for GraphQL. [Greg Hurrell](https://github.com/wincent) created the streaming `graphql-language-service-parser`, designed to empower the `codemirror-graphql` mode. + +The goal was to give people the utility packages they needed to build their own web based or desktop IDE tool, and at its core, a relatively simple tool for folks to start learning and applying the language, and for exploring schemas. At the time, LSP was not yet a commonly accepted standard, and VSCode had yet to become the incredibly popular development tool it is today. + +Last year, these original engineers handed over to the graphql foundation three repositories: GraphiQL, `codemirror-graphql` and the `graphql-language-service` packages. + +Fast forward to now, and GraphiQL is now used by GraphQL implementations in dozens of languages, as well as hundreds of frameworks and runtimes. It's used for everything from HTTP operations, to querying local schemas, data science tools, and even for data transmission for IOT platforms. You'll find it in the AWS dashboard, GitHub developer tools, and many more places we are honored to see this library used. + +## Enter Playground + +Alongside GraphiQL, many of us are familiar with its sibling - the handsome & feature-full [GraphQL Playground](https://github.com/prisma-labs/graphql-playground). Following GraphiQL's lead, it uses our `codemirror-graphql` ([Insomnia](https://insomnia.rest/graphql/), [Altair](https://altair.sirmuel.design/) and many others are also in this club!). This is why there are so many similarities between the direct editing experience of these tools. + +Playground is _exactly_ what we wanted to happen. It helped drive the development of our language ecosystem, and gave users an easier option than the more customization-oriented GraphiQL. It provided a ton of excellent features - `graphql-config` support, multiple tabs, i18n, and http server middlewares. + +## Prisma Donates Playground to GraphQL Foundation + +As many have successfully guessed, **Prisma _is_ donating Playground to the GraphQL Foundation.** Entering 2019 Prisma envisioned an eventual Playground 2.0 but then the advent of a modular GraphiQL 2 project showed an opportunity for great synergy, made all the more natural by Prisma's pivot toward modular database tooling for developers. + +Playground 1.x has been a community effort of [dozens of contributors](https://github.com/prisma-labs/graphql-playground/graphs/contributors). Prisma thanks all contributors who helped out along the way. Prisma remains deeply committed to supporting the future of the GraphQL language. For example the [Prisma Labs team](https://github.com/prisma-labs) continues to focus on GraphQL API layer and [recently announced](https://github.com/prisma-labs/nexus/issues/373) the transition of [Nexus](https://nexus.js.org/) from a schema building library into a full [fledged GraphQL API framework](https://www.nexusjs.org). + +## The Playground Features you love + +In the interest of parity, we will keep a lot of the same features, whether by introducing them to the core or proving plugins that will ship with the playground preset. + +- multiple tabs (GraphiQL Core) +- headers tab per operation tab (plugin) +- tracing tab (plugin) +- playground doc explorer (plugin) +- internationalization (GraphiQL Core) +- `graphql-config` support, with new features thanks to our fantastic colleagues at the [Guild Dev](https://github.com/orgs/the-guild-org/people), who Prisma has entrusted with many other projects. +- easy to use middlewares + +## New Features + +These new features will come with the new `graphql@2.0.0`: + +- vscode style command palette (via `monaco-editor`) +- jump to fragment or other type definitions +- generate a collection of operations from your project's source files +- more customizable network options - default headers per project, as well as headers per-operation +- helpers for integrating custom authentication flows +- extensive theme, layout, and component customization abilities (you can start with the playground theme preset and work from there!) +- custom tabs and panels +- a first-class `graphiql-explorer` plugin in partnership with the original creators, our colleagues at [OneGraph](https://www.onegraph.com/) + +## How will it be re-implemented? + +Playground 2.0 will be a GraphiQL preset that includes the custom theme as well as the custom playground doc explorer plugin (as an alternative to the new doc explorer proposed by @orta and other users), HTTP headers and tracing tab plugins. You can find more technical detail, ongoing discussion and things to work on the [GraphiQL Plugin API Meta Issue](https://github.com/graphql/graphiql/issues/983) or in [other playground related discussion issues](https://github.com/graphql/graphiql/issues?q=label%3Agraphql-playground-preset) in the GraphiQL monorepo. + +While the Playground team's baseline goal will be relative parity with Playground 1.0, the team will be accepting proposals for new features and plugins that build on the existing GraphQL Playground experience. The [Features Roundup](https://github.com/graphql/graphiql/projects/10) project is a great place to see what we have planned already for plugins that Playground's preset can use, or you can also create a proposal if you don't see what you're looking for. + +## `graphql-playground` repository next steps + +The existing `graphql-playground` repository will get one or two more maintenance/bugfix releases before it will be archived. You can still fork it of course. You can learn more about this in [the graphql-playground issue](https://github.com/prisma-labs/graphql-playground/issues/1143) we created for this migration. + +## Call for Contributors + +We're also looking for contributors to form a team to develop, support and maintain a playground preset. The goal would be for them to help iterate on and stabilize the plugin API effort, as well as work towards the effort of contributing to and maintaining the playground preset and its associated plugins. If you are interested leave comment in the [Call for Contributors Github issue](https://github.com/graphql/graphiql/issues/1443). + +You can also follow the [Plugin API Proposal discussion issue](https://github.com/graphql/graphiql/issues/983) for updates, and get involved in our [discord channel](https://discord.gg/EXUYPaY) we've created just for the playground initiative. diff --git a/src/content/blog/2020-06-13-season-of-docs.md b/src/content/blog/2020-06-13-season-of-docs.md new file mode 100644 index 0000000000..83e2abc1e0 --- /dev/null +++ b/src/content/blog/2020-06-13-season-of-docs.md @@ -0,0 +1,42 @@ +--- +title: "GraphQL joins Google Season of Docs" +tags: ["announcements"] +layout: blog +date: 2020-06-13 +byline: Obinna Ekwuno +permalink: /blog/2020-06-13-graphql-joins-google-season-of-docs +--- + +# **GraphQL joins Google Season of Docs.** + +Open source communities are one of the best ways to collaborate with a larger scale of developers, it incorporates the best part of learning, mentorship, and collaboration on a large scale. +**Open-source** software has been proven to create large effective ecosystems of users that improve quality. It has been known for many years that the more a piece of software is used, the quicker bugs **will** be identified. In the **open-source** community when a bug is found, users contribute fixes. +**GraphQL** is an **open**-**source** data query and manipulation language for APIs, and a runtime for fulfilling queries with existing data. **GraphQL** was developed internally by Facebook in 2012 before being publicly released in 2015. + + + +# **What is Google Season of Docs?** + +The Google Season of Docs is the intersection of technical writing, open-source contribution, and mentorship. In this three month program, you will be working closely with maintainers of open source projects to improve on existing documentation and processes to better the community. + +For technical writers who are new to open source, the program provides an opportunity to gain experience in contributing to open source projects. + +For technical writers who're already working in open source, the program provides a potentially new way of working together. Season of Docs also gives open source projects an opportunity to engage more of the technical writing community. + + + +## **How can I be a part of this?** + +Open source organizations apply to be mentor organizations in the Season of Docs which includes a list of documentation project ideas with their applications. Technical writers can look through the list of proposals here are the [project ideas for the GraphQL organization](https://github.com/graphql/foundation/tree/master/mentorship/2020/gsod). +When you have selected a project you would like to work on, write up a project proposal and submit it to [Season of Docs](https://developers.google.com/season-of-docs). You may continue to refine your proposals until July 9th. If you need clarifications, please contact Ivan Goncharov and Uri Goldshtein by sending a message to [mentorship@lists.foundation.graphql.org](mailto:mentorship@lists.foundation.graphql.org). + +The GraphQL organization will reach out to you after they have evaluated the proposals. The accepted technical writers spend a few months working with mentors from the open-source organizations to complete their projects. At the end of the program, the Google program administrators announce the projects that finished successfully. +Check out the [official technical writer guide.](https://developers.google.com/season-of-docs/docs/tech-writer-guide) + + + +## **How long is this program?** + +The technical writing applications started on June 9th, 2020 and will last till July 9th, 2020. The selection process for the proposals submitted to organizations lasts till July 31st, 2020. Then Doc development officially begins September 14th, 2020, and ends December 5th, 2020. For a more detailed timeline check out the [official season of docs timeline](https://developers.google.com/season-of-docs/docs/timeline). + +_– **Obinna Ekwuno**, Software Engineer, DevRel GatsbyJS_ diff --git a/src/content/blog/2020-06-30-gsoc-2020-naman.md b/src/content/blog/2020-06-30-gsoc-2020-naman.md new file mode 100644 index 0000000000..c685fc272f --- /dev/null +++ b/src/content/blog/2020-06-30-gsoc-2020-naman.md @@ -0,0 +1,26 @@ +--- +title: "Google Summer of Code 2020 Participant: Naman" +tags: ["announcements"] +layout: blog +date: 2020-06-30 +byline: Naman Kumar +permalink: /blog/2020-06-30-gsoc-2020-participant-naman +--- +![GSOC 2020](/img/logos/gsoc.svg) +> [Naman Kumar](https://naman.sh) is a Computer Science & Engineering student from New Delhi, India and a FullStack Engineer at [ProductHunt](https://producthunt.com). He is selected for Google Summer of Code 2020 - GraphQL Foundation under the mentorship of [Ivan Goncharov](https://github.com/IvanGoncharov). In this post he will share his plans on how he is going to spend his summer contributing to the Graphql Foundation. + +Hi, GraphQL is a technology I use everyday at my work place and other projects building platforms with 200 to 2 million users. I am surely in love with it, acknowledging how much it improves the development speed and removes the overhead of documentation for starters. + +I have huge respect for Open Source organisations and really inspired by the work the whole graphql community is doing to make lives of developers easier. I have always wanted to participating in GSOC, which I assure you is a dream of every student. + +I got to know about the acceptance of Graphql Foundation under GSOC from Ivan’s [talk](https://www.youtube.com/watch?v=PsXxL1oJLrc&list=PLTRTpHrUcSB9jtvOwnq1yVwZl5k2DdBb2&index=24&t=0s) at GraphQL Asia Submit 2020. I was really excited about having a chance to contribute to the tools which are used not only by me but are powering applications used by billions of people on the planet. + +Having a keen interest in compiler design, the project idea of working on the [graphql.js](https://github.com/graphql/graphql-js/) reference parser looked really interesting to me. Fortunately being selected for the program, I am going to spend the summer of 2020 working on Graphql.js reference parser and [GraphiQL parser](https://github.com/graphql/graphiql/tree/main/packages/graphql-language-service-parser), to merge the two together. Graphql.js reference parser do not have streaming support or the best error recovery setup. The goal is to take inspiration from the GraphiQL parser and implement the streaming support in the reference parser so that it can be used by IDEs and other development tools. + +I spent the community bonding period getting to know both the people in the graphql community and getting myself familiar with the projects. I explored the code base and solved few minor bugs with the help of Ivan. The graphql.js reference parser which is well maintained has a really good code quality and readability which helped me gain it's understanding really quickly, on the other hand the GraphiQL parser with just 1000 lines of pure “old is gold” code base, implemented 3 years ago, looks difficult to grasp at first but with proper understanding is a very simple and cute state machine. + +Ivan and I also spent the time ideating about dividing the whole project into 3 milestones and breaking those into smaller goals. As the graphiql parser is not actively maintained and has zero test coverage it was really important to have the parser fully covered before we make any changes. Our goal was to enable the graphql.js parser be able to used by the IDEs and performance is a major factor we need to care about for that. Considering it, we also decided to do benchmarking of the GraphiQL parser. Ergo the first milestones includes reaching 100% test coverage for the GraphiQL parser and thorough benchmarking. + +The next steps will be to use the graphql.js reference parser’s lexer in the GraphiQL parser and construct a plan to merge the parsers. Once the graphql.js parser reaches the capabilities as that of the GraphiQL parser, we can migrate the GraphiQL IDE to use graphql.js parser. Near to the completion of the first milestone I am really happy with the new thing I have learned under the mentorship of Ivan and really excited to work on the upcoming tasks. + +> – **Naman Kumar**, GSOC 2020, Graphql Foundation diff --git a/src/content/blog/2020-09-11-newsletter-august-2020.md b/src/content/blog/2020-09-11-newsletter-august-2020.md new file mode 100644 index 0000000000..7e252fc79e --- /dev/null +++ b/src/content/blog/2020-09-11-newsletter-august-2020.md @@ -0,0 +1,58 @@ +--- +title: GraphQL Foundation Monthly Newsletter August 2020 +tags: ["newsletter"] +layout: blog +date: 2020-09-11 +byline: GraphQL Foundation +permalink: /blog/2020-09-11-graphql-foundation-monthly-newsletter-august-2020 +--- + +[GraphQL](https://graphql.org) has redefined how developers work with APIs and client-server interactions. And as the community works hard to foster the growth and adoption of GraphQL, we are excited to share the work of the community and discussions via a new monthly GraphQL Foundation newsletter. + +All work on GraphQL and related projects, both big and small, is important to the growth and maturity of the project, which has already seen adoption from many of the world’s largest internet-scale companies. + +Many of these items are just in beginning discussions while some are further along. The goal of this monthly post is to summarize and share what’s top of mind for the community and help others get involved. These are only initial discussion topics. For notes on the full discussion during the monthly WG calls please refer to these [call notes](https://docs.google.com/document/d/1_jvxzCkI6VWo2KEobisoiW1n_irJ4dp0aD8Pq9UXuvw/edit#) + +## Updates + +### [GraphQL over WebSocket refresh, existing issues and security implications](https://github.com/enisdenjo/graphql-transport-ws/blob/master/PROTOCOL.md) +This discussion topic proposes taking on the following two critical items of security and bypassing the onConnect event. And possibly re-writing the WebSocket protocol from scratch with full RFCs + + +### [Tagged Type RFC](https://github.com/graphql/graphql-spec/pull/733) +This is an RFC for a new "Tagged" type to be added to GraphQL, to help address the input polymorphism feature gap. Originally proposed as the @oneField directive, the Tagged type has evolved into an entire new type in the type system, and is currently the lead proposal from the Input Unions Working Group. + +A Tagged type defines a list of named member fields each with an associated type (like the fields in Object and Input Object types); but with the stipulation that exactly one of these fields must be present (no more, no less). Depending on the types of the member fields, a Tagged type could be appropriate for input, output, or both, which is proving to be quite controversial; it's possible that the tagged type might be scoped to input only before release. The Tagged type was most recently introduced to the GraphQL Working Group in August and is undergoing feedback and revision before an expected update with the working group in October or November. + +If you have use-cases for input polymorphism, please take a look - feedback is very welcome. + +### [Standardize naming for Field coordinates](https://github.com/graphql/graphql-spec/issues/735) + +This PR proposes the following 2 RFCs +1. Formalizing the naming and definition of field coordinates (as discussed in [#735](https://github.com/graphql/graphql-spec/issues/735)) +2. Formalizing the way in which a Field Node (and list thereof) contained within a query document can be serialized as field coordinates + + +### [Adding generics to DocumentNode and Source to allow TypeScript type inference](https://github.com/graphql/graphql-js/issues/2727) + +[@dotansimha](https://github.com/dotansimha) from [The Guild](https://the-guild.dev) had recently implemented an improved version of DocumentNode, called TypedDocumentNode, that allows type generics for result type and variable type and contributed it to graphql-js. + +This improved version allows TypeScript to infer the types automatically when an object that matches the signature is used. + +You can learn more by reading about it on his [blog post](https://the-guild.dev/blog/typed-document-node). + +## In Other News + +* We recently welcomed the newest member of the GraphQL Foundation - [The Guild](https://the-guild.dev). [Here](https://foundation.graphql.org/members/) you can find the list of all current members of the foundation. +* [@hereisnaman](https://github.com/hereisnaman) successfully finished his Google Summer of Code (GSoC) project and is in the process of merging his[PR](https://github.com/graphql/graphql-js/pull/2770). Learn more about it [here](https://foundation.graphql.org/news/2020/06/30/google-summer-of-code-2020-participant-naman/). +* GraphQL was accepted to the Google Season of Docs (GSoD) and [@carolstran](https://github.com/carolstran) will be working on the [FAQ section](https://developers.google.com/season-of-docs/docs/participants/project-graphql-carolstran) of graphql.org +* [GraphQL over HTTP](https://github.com/graphql/graphql-over-http) was moved and is now under GraphQL Foundation +* [@lilianammmatos](https://github.com/lilianammmatos) and [@robrichard have](https://github.com/robrichard) made big progress on `@deferer & @stream`. Yo can learn more by watching their talk about it at the [GraphQL Summit](https://www.youtube.com/watch?v=icv_Pq06aOY): +* [@andimarek](https://github.com/andimarek) and [@eapache](https://github.com/eapache) started the [GraphQL Scalars](https://github.com/graphql/graphql-scalars/issues) initiative. You can also learn more by watching their talk about it at the [GraphQL Summit](https://www.youtube.com/watch?v=SRGTaYL3h9c). +* All WG recordings were published on [Youtube](https://www.youtube.com/channel/UCERcwLeheOXp_u61jEXxHMA). + +## Get Involved! + +Developers can get involved in the community and contribute to the project at [https://github.com/graphql](https://github.com/graphql). + +Organizations interested in becoming members of the GraphQL Foundation or the GraphQL Specification can learn more on our [member page](/foundation/join). If you have questions about membership, please send an email to [membership@graphql.org](mailto:membership@graphql.org). diff --git a/src/content/blog/2020-09-21-gsod-2020-carolyn.md b/src/content/blog/2020-09-21-gsod-2020-carolyn.md new file mode 100644 index 0000000000..a4cdc2f3e3 --- /dev/null +++ b/src/content/blog/2020-09-21-gsod-2020-carolyn.md @@ -0,0 +1,35 @@ +--- +title: "Google Season of Docs 2020 Participant: Carolyn Stransky" +tags: ["announcements"] +layout: blog +date: 2020-09-21 +byline: Carolyn Stransky +permalink: /blog/2020-09-21-gsod-carolyn-stransky +--- + +> [Carolyn Stransky](https://workwithcarolyn.com/) is a frontend developer and journalist based in Berlin, Germany. She is selected for [Google Season of Docs 2020](https://developers.google.com/season-of-docs) - GraphQL Foundation under the mentorship of [Ivan Goncharov](https://github.com/IvanGoncharov). In this post, she will share her plans on how she is going to spend the next couple of months contributing to the GraphQL Foundation. + +When I first heard about GraphQL three years ago, I thought that it was a programming language that constructed charts or plotted points on graphs. After building my first application with GraphQL, I would have categorized it as React-specific tooling, like Redux or React Router. Months later, I was still convinced it was just another Twitter-fueled programming trend. + +Looking back now, it’s clear that my initial perceptions of GraphQL were incorrect… but they weren’t uncommon. + +Learning a new technology comes with a lot of questions - and GraphQL is no exception. There are so many misconceptions about what GraphQL is and how it can be used. And I wasn’t the only GraphQL newbie holding on to those same, inaccurate beliefs. + +After gaining a solid understanding of what GraphQL _really_ is, I started giving presentations at conferences about how difficult I found the learning process (literally the talk title was [Life is hard and so is learning GraphQL](https://workwithcarolyn.com/speaking/life-is-hard-and-so-is-learning-graphql)). This talk was cathartic, both for me and the audiences I was presenting to. Through my research, I also realized that while [graphql.org](https://graphql.org/) thoroughly covers the core concepts, it doesn’t directly address some of the questions you face as a new learner. + +Fortunately, GraphQL has evolved enough that the information is out there and available. It’s more a matter of finding it because that information is scattered throughout various resources and programming communities. That’s why I was excited to see a [Frequently Asked Questions](https://github.com/graphql/faq) (FAQ) page as one of the proposed Season of Docs projects. And as someone who has openly critiqued the GraphQL documentation, I wanted to play a part in actively improving them. + +There are two main goals behind this FAQ page: + +1. **Build a centralized resource for everyone**. As of now, much of the GraphQL ecosystem is focused on JavaScript due to the early ties with Relay and React. But GraphQL is for everyone, regardless of programming language, so this resource should be too. To ensure this, the FAQ content will be framework agnostic and vendor-neutral. +2. **Become a truly community-owned resource**. GraphQL was initially passed down from Facebook, but it’s no longer maintained solely by Facebook. This should be a resource that everyone is welcome to contribute to and the community feels empowered to change and grow. That way, common questions won’t be left unanswered. + +The plan for exactly how to tackle this page will morph and evolve throughout the next two and a half months. My hope, though, is that keeping these goals in mind will lead to a new resource that will help both newcomers and seasoned GraphQL users thrive. + +In preparation for the documentation development part of Season of Docs, I became familiar with [the repository behind graphql.org](http://graphql.org) by triaging issues and reviewing open pull requests. I also helped with the [ongoing migration to Gatsby](https://github.com/graphql/graphql.github.io/issues/875) because I’ll be building the new FAQ page in Gatsby (there are still [open issues](https://github.com/graphql/graphql.github.io/pull/913#issuecomment-687325610) if you want to contribute). You can read more details about the community bonding phase [on my blog](https://workwithcarolyn.com/blog/community-bonding-gsod). + +The next step is to create the inaugural batch of FAQ content. This will be about 10-15 questions sourced from various areas of the Internet and in consultation with prominent GraphQL teachers. Once those are complete with thorough answers and built into the new Gatsby site, I’ll get feedback from the community (that’s you) and continue to iterate on the content, design, layout - everything! + +If you have opinions or would like to follow the project’s progress, [open an issue](https://github.com/graphql/graphql.github.io/issues/new) or [lurk around the website repository](https://github.com/graphql/graphql.github.io/). + +> – **Carolyn Stransky**, GSoD 2020, Graphql Foundation diff --git a/src/content/blog/2020-10-15-newsletter-september-2020.md b/src/content/blog/2020-10-15-newsletter-september-2020.md new file mode 100644 index 0000000000..2321a47875 --- /dev/null +++ b/src/content/blog/2020-10-15-newsletter-september-2020.md @@ -0,0 +1,60 @@ +--- +title: GraphQL Foundation Monthly Newsletter September 2020 +tags: ["newsletter"] +layout: blog +date: 2020-10-15 +byline: GraphQL Foundation +permalink: /blog/2020-10-15-graphql-foundation-monthly-newsletter-september-2020 +--- + +[GraphQL](https://graphql.org/) has redefined how developers work with APIs and client-server interactions. And as the community works hard to foster the growth and adoption of GraphQL, we are excited to share the work of the community and discussions via a new monthly GraphQL Foundation newsletter. + +All work on GraphQL and related projects, both big and small, is important to the growth and maturity of the project, which has already seen adoption from many of the world’s largest internet-scale companies. + +Many of these items are just in beginning discussions while some are further along. The goal of this monthly post is to summarize and share what’s top of mind for the community and help others get involved. These are only initial discussion topics. For notes on the full discussion during the monthly WG calls please refer to these [call notes](https://github.com/graphql/graphql-wg/blob/b1bfe0cee461d752146dc77e5c35a5e8d7921272/notes/2020-09-03.md#allowing-deprecation-of-inputs-10m-evan). + +## WG Updates: + +### Allowing deprecation of inputs + +Discussed whether the spec should allow deprecating an input that is required. Two concerns: deprecations are intended to be actionable; introspection does not include deprecated things by default - could break tooling that's no longer receiving deprecated inputs as part of their introspection results. +* Regarding case 1: not much of a blocker; the action from deprecation doesn't need to come from a schema (e.g. it could be switch to a new version/endpoint) +* Regarding case 2: much more of an issue because we could be breaking clients. My suggestion is to return required arguments even if they're deprecated - introspection should always give you what's necessary even if you say you don't want it. + +### @defer/@stream + +trying to answer the “why we don’t support Defer on field question”. The reasoning for that is the original Apollo implementation was only on fields. We ran into problems in that it’s difficult to coordinate + +### Querying Query query queries: "query" ambiguity + +The issue was first raised around the ambiguity of the term "query" as used in the GraphQL spec and ecosystem back in April. In just this title, we've referred to requesting, the Query type, a query operation, and a nested selection set; but that's just some of the ways we use this term, which can make it really hard for people new to GraphQL to get up to speed. Benjie has analyzed the use of the term, and has proposed a consistent set of terminology to use based on other terms used in the GraphQL spec already, this was discussed at the most recent Working Group. See [Spec PR #777](https://github.com/graphql/graphql-spec/pull/777). + +### Other topics discussed: + +* [TypeScript Migration Progress in graphql-js](https://github.com/graphql/graphql-js/issues/2104) +* [How to bootstrap graphql-js working group?](https://github.com/graphql/graphql-js/issues/2787) +* GitHub infrastructure for managing Working groups +* Custom Scalars subproject + +## Ecosystem Updates: + +Vscode-graphql, which uses the official GraphQL Language Server, has now become the official reference vscode extension! Like GraphiQL, we will work to ensure all new spec language features are introduced here. After making the announcement we gained 30,000 new users! [This blog post](https://rikki.dev/vscode-graphql-lsp-0-3-0/) will tell you more about all the new features. + +## In Other News... + +* Dgraph Labs launched [Slash GraphQL](https://www.producthunt.com/posts/slash-graphql), a product that can help you get a working GraphQL backend in minutes +* A new library for the WebSocket Protocol has been created. Read more [here](https://the-guild.dev/blog/graphql-over-websockets). +* The Guild has created a new [GraphQL-ESLint library](https://github.com/dotansimha/graphql-eslint) for linting your GraphQL schemas and operations with community and custom rules. Read more [here](https://the-guild.dev/blog/introducing-graphql-eslint). +* GraphQL CLI 4.1 has been released. [Read here](https://the-guild.dev/blog/whats-new-in-graphql-cli-4.1.0) about the new functionality. +* You can now consume WebHooks as GraphQL Subscriptions thanks to the new version of [GraphQL Mesh](https://github.com/urigo/graphql-mesh). Read more [here](https://the-guild.dev/blog/graphql-mesh-subscriptions). +* Hasura’s [Enterprise GraphQL Conf](https://hasura.io/enterprisegraphql/) is taking place October 20-22. There is still time to register +* AWS released a new webinar “[Build Modern Serverless Applications with GraphQL APIs and AWS AppSync](https://pages.awscloud.com/Build-Modern-Serverless-Applications-with-GraphQL-APIs-and-AWS-AppSync_2020_0918-MBL_OD.html?&trk=ep_card-el_a131L0000084iG3QAI&trkCampaign=NA-FY20-AWS-DIGMKT-WEBINAR-SERIES-September_2020_0918-MBL&sc_channel=el&sc_campaign=pac_2018-2019_exlinks_ondemand_OTT_evergreen&sc_outcome=Product_Adoption_Campaigns&sc_geo=NAMER&sc_country=mult)” +* Catch up on recent talks from the [GraphQL Berlin](https://www.youtube.com/watch?v=4UDsR4z2KIY) Meetup +* [GraphQL Amsterdam](https://www.meetup.com/Amsterdam-GraphQL-Meetup/events/273901137/), [GraphQL Copenhagen](https://www.meetup.com/Copenhagen-GraphQL-Meetup-Group/events/273901144/), React GraphQL Academy and The Guild are collaborating on an online GraphQL Meetup. Check out the details [here](https://twitter.com/reactgqlacademy/status/1313789927834947585?s=20). +* Apollo created an [Error Handling Visualizer](https://apollo-visualizer.vercel.app/) tool, which provides an interactive playground to visualize the relationship between nullability and error handling in GraphQL, specifically with Apollo Client. + +## Get Involved! + +Developers can get involved in the community and contribute to the project at [https://github.com/graphql](https://github.com/graphql). + +Organizations interested in becoming members of the GraphQL Foundation or the GraphQL Specification can learn more on our [member page](/foundation/join). If you have questions about membership, please send an email to [membership@graphql.org](mailto:membership@graphql.org). diff --git a/src/content/blog/2020-11-12-newsletter-october-2020.md b/src/content/blog/2020-11-12-newsletter-october-2020.md new file mode 100644 index 0000000000..145d595450 --- /dev/null +++ b/src/content/blog/2020-11-12-newsletter-october-2020.md @@ -0,0 +1,55 @@ +--- +title: GraphQL Foundation Monthly Newsletter October 2020 +tags: ["newsletter"] +layout: blog +date: 2020-11-12 +byline: GraphQL Foundation +permalink: /blog/2020-11-12-graphql-foundation-monthly-newsletter-october-2020 +--- + +[GraphQL](https://graphql.org/) has redefined how developers work with APIs and client-server interactions. And as the community works hard to foster the growth and adoption of GraphQL, we are excited to share the work of the community and discussions via the monthly GraphQL Foundation newsletter. + +## WG Updates + +The [GraphQL Working Group](https://github.com/graphql/graphql-wg) meets monthly, and records [detailed minutes](https://github.com/graphql/graphql-wg/blob/master/notes/2020-10-01.md). You can also listen to the replays of GraphQL technical meetings on [YouTube](https://youtube.graphql.org). + +### [Query ambiguity: discussion of replacement terms](https://github.com/graphql/graphql-spec/issues/715) + +In the GraphQL ecosystem the term "query" can seem overloaded and ambiguous - sometimes it refers to the query operation type or a query operation, sometimes it refers to a GraphQL request or a GraphQL document containing operations, sometimes it refers to the contents of selection sets (as in "query reuse"), and sometimes it is used as a verb to refer to the generic act of querying a server for information. + +The WG discussed the best way to remove this ambiguity and how to move forward. + +### [Schema Coordinates RFC check in](https://github.com/graphql/graphql-spec/pull/746) + +The RFC is filed, and the next action is to turn this into an actual spec edit. + +### [Tagged type update](https://github.com/graphql/graphql-spec/pull/733) + +This is an RFC for a new "Tagged type" to be added to GraphQL. It replaces the ["@oneField directive"](https://github.com/graphql/graphql-spec/pull/586) proposal following feedback from the Input Unions Working Group. Please note that "Tagged type" is the working name, and may change if we come up with a better name for it. + +A Tagged type defines a list of named members each with an associated type (like the fields in Object types and Input Object types), but differs from Object types and Input Object types in that exactly one of those members must be present. + +The aim of the Tagged type is to introduce a form of polymorphism in GraphQL that can be symmetric between input and output. In output, it can generally be used as an alternative to Union (the differences will be outlined below). It goes beyond interfaces and unions in that it allows the same type to be specified more than once, which is particularly useful to represent filters such as this pseudocode `{greaterThan: Int} | {lessThan: Int}`. + +## In Other News... + +* [Vox Media evaluates Apollo GraphQL Federation and The Guild Schema Stitching](https://product.voxmedia.com/2020/11/2/21494865/to-federate-or-stitch-a-graphql-gateway-revisited) for the best GraphQL platform to manage “a chorus of applications working together to publish modern media” +* AWS released a “[Decision Guide to GraphQL Implementation](https://aws.amazon.com/graphql/guide/)” +* [Netflix discusses](https://netflixtechblog.com/how-netflix-scales-its-api-with-graphql-federation-part-1-ae3557c187e2) how it scales its API with [Apollo GraphQL](https://www.apollographql.com/) Federation via its next generation architecture, “Studio Edge”, which uses federation as a critical element. +* [Building a GraphQL server with GraphQL Helix](https://dev.to/danielrearden/building-a-graphql-server-with-graphql-helix-2k44), a newly released library for building GraphQL APIs. The aim of GraphQL Helix is to allow developers to use new features that are not yet supported in other libraries and to prevent vendor lock-in. +* [GraphQL Tools v7 was released to deliver the next generation GraphQL API Gateway](https://the-guild.dev/blog/graphql-tools-v7), bringing a new way to federate multiple GraphQL servers, focusing on standard spec compliant GraphQ +* We’ve already announced that The Guild has recently joined the GraphQL Foundation and now [they wrote a blog post about it](https://the-guild.dev/blog/joining-graphql-foundation). Who will be the next to join? + +## Upcoming Events: + +* **Nov 17**: [GraphQL Contributor Days](https://www.graphql-meetup.com/#/graphql-contributor-days-november-2020), in partnership with [Hasura](https://hasura.io/), will give important updates to the community, and provide a forum for anyone using GraphQL to have direct access to core contributors and authors of various libraries and frameworks through live chat and an online broadcast. +* **Dec 2**: [Relay Meetup](https://relaymeetup.com/) is a global, online meetup on Relay, the GraphQL client. This event will feature a conversation about the @defer and @stream directives and why it should be brought to the official GraphQL specification. +* **Dec 7-8**: [GraphQL Galaxy Conference](https://graphqlgalaxy.com) is a new remote conference focusing on all things[ GraphQL](https://twitter.com/search?q=%23GraphQL&src=hashtag_click). +* Missed Apollo Day on Nov. 10th? Check out some of the great talks on [Twitch](https://www.twitch.tv/apollographql). + +## Get Involved! + +Developers can get involved in the community and contribute to the project at [https://github.com/graphql](https://github.com/graphql). + +Organizations interested in becoming members of the GraphQL Foundation or the GraphQL Specification can learn more on our [member page](/foundation/join). If you have questions about membership, please send an email to [membership@graphql.org](mailto:membership@graphql.org). + diff --git a/src/content/blog/2020-12-08-defer-stream.md b/src/content/blog/2020-12-08-defer-stream.md new file mode 100644 index 0000000000..b4a06e6674 --- /dev/null +++ b/src/content/blog/2020-12-08-defer-stream.md @@ -0,0 +1,138 @@ +--- +title: "Improving Latency with @defer and @stream Directives" +tags: ["announcements"] +layout: blog +date: 2020-12-08 +byline: Rob Richard, Liliana Matos +permalink: /blog/2020-12-08-improving-latency-with-defer-and-stream-directives +--- + +> Rob Richard and Liliana Matos are front-end engineers at [1stDibs.com](https://www.1stdibs.com). They have been working with the GraphQL Working Group as champions of the the `@defer` and `@stream` directives. + +The `@defer` and `@stream` directives have been a much anticipated set of features ever since Lee Byron first talked about it at [GraphQL Europe 2016](https://youtu.be/ViXL0YQnioU?t=769). For most of 2020, we have been working with the GraphQL Working Group to standardize this feature. It is now a Stage 2 proposal, but to advance further, we are looking to the GraphQL community to try using these directives and provide feedback. We have released experimental versions of `GraphQL.js` and `express-graphql`. They are published to npm under `graphql@experimental-stream-defer` and `express-graphql@experimental-stream-defer`. We encourage everyone interested in this feature to try out these releases and let us know how it goes in the [issue created for feedback](https://github.com/graphql/graphql-js/issues/2848). Read on to find out more about what this proposal offers. + +One of the disadvantages of GraphQL’s request/response model is that the GraphQL response is not returned to clients until the entire request has finished processing. However, not all requested data may be of equal importance, and in some use cases it may be possible for applications to act on a subset of the requested data. An application can speed up its time-to-interactive if the GraphQL server can send the most important data as soon as it’s ready. The new `@defer` and `@stream` directives allow GraphQL servers to do exactly that by returning multiple payloads from a single GraphQL response. + +The `@defer` directive can be applied to fragment spreads and inline fragments. It is a declarative way for developers to mark parts of a query as non-essential for immediate return. + +Here’s an example of the `@defer` directive: + +#### Request + +```graphql +query { + person(id: "cGVvcGxlOjE=") { + name + ...HomeworldFragment @defer(label: "homeworldDefer") +} + +fragment HomeworldFragment on Person { + homeworld { + name + } +} +``` + +#### Response + +**Payload 1** + +```json +{ + "data": { + "person": { + "name": "Luke Skywalker" + } + }, + "hasNext": true +} +``` + +**Payload 2** + +```json +{ + "label": "homeworldDefer", + "path": ["person"], + "data": { + "homeworld": { + "name": "Tatooine" + } + }, + "hasNext": false +} +``` + +When the GraphQL execution engine encounters the `@defer` directive, it will fork execution and begin to resolve those fields asynchronously. While the deferred payload is still being prepared, the client can receive and act on the initial payload. This is most useful when the deferred data is large, expensive to load, or not on the critical path for interactivity. + +Similar to `@defer`, the `@stream` directive also allows the client to receive data before the entire result is ready. `@stream` can be used on list fields. Here’s an example of the `@stream` directive: + +#### Request + +```graphql +query { + person(id: "cGVvcGxlOjE=") { + name + films @stream(initialCount: 2, label: "filmsStream") { + title + } +} +``` + +#### Response + +**Payload 1** + +```json +{ + "data": { + "person": { + "name": "Luke Skywalker", + "films": [ + { "title": "A New Hope" }, + { "title": "The Empire Strikes Back" } + ] + } + }, + "hasNext": true +} +``` + +**Payload 2** + +```json +{ + "label": "filmsStream", + "path": ["person", "films", 2], + "data": { + "title": "Return of the Jedi" + }, + "hasNext": true +} +``` + +**Payload 3** + +```json +{ + "label": "filmsStream", + "path": ["person", "films", 3], + "data": { + "title": "Revenge of the Sith" + }, + "hasNext": false +} +``` + +When the GraphQL execution engine encounters the `@stream` directive, it will resolve as many list items specified by the `initialCount` argument. The rest will be resolved asynchronously. This is especially useful for an interface where only a few elements can be rendered above the fold. The client can render these elements as soon as possible while the server is still resolving the rest of the data. + +While the GraphQL specification doesn’t specify transport protocols, we expect the most common transport for queries with `@defer`/`@stream` to be HTTP with chunked transfer encoding. This allows a GraphQL server to keep a standard HTTP connection open, while streaming each payload to the client as soon as it’s ready. It has low overhead, has been supported by browsers for decades, and can work easily with most infrastructure. + +You can learn more about these directives at: + +* [The @defer/@stream RFC](https://github.com/graphql/graphql-spec/blob/master/rfcs/DeferStream.md) +* [The proposed spec edits](https://github.com/graphql/graphql-spec/pull/742) +* [The GraphQL Incremental Delivery over HTTP RFC](https://github.com/graphql/graphql-over-http/blob/master/rfcs/IncrementalDelivery.md) +* [Our talk at GraphQL Summit 2020](https://www.youtube.com/watch?v=icv_Pq06aOY) + +> – **Rob Richard**, **Liliana Matos**, Front-End Engineering, 1stDibs.com diff --git a/src/content/blog/2021-02-15-newsletter-february-2021.md b/src/content/blog/2021-02-15-newsletter-february-2021.md new file mode 100644 index 0000000000..c61dc30593 --- /dev/null +++ b/src/content/blog/2021-02-15-newsletter-february-2021.md @@ -0,0 +1,65 @@ +--- +title: GraphQL Foundation Monthly Newsletter February 2021 +tags: ["newsletter"] +layout: blog +date: 2021-02-15 +byline: GraphQL Foundation +permalink: /blog/2021-02-15-graphql-foundation-monthly-newsletter-february-2021 +--- + +[GraphQL](https://graphql.org/) has redefined how developers work with APIs and client-server interactions. And as the community works hard to foster the growth and adoption of GraphQL, we are excited to share the work of the community and discussions via the monthly GraphQL Foundation newsletter. + +GraphQL reached new heights in 2020 and is only poised to continue it’s meteoric rise in 2021. Thank you again for your involvement in this project and your support of the GraphQL Foundation. We are excited for another productive year! + +## Working Group Updates + +### [Advancing no introspection at root of Subscription operation ](https://github.com/graphql/graphql-spec/pull/776) + +The group decided to disallow since it doesn’t work in the reference implementation. During the graphql-js implementation some issues were discovered around fragments that are being fixed. Read more [here](https://github.com/graphql/graphql-spec/pull/776). + +### [Default value coercion update](https://github.com/graphql/graphql-spec/pull/793) + +Currently this is a case where infinite loops can occur. The WG is working to figure out how to avoid this in the spec [here](https://github.com/graphql/graphql-spec/pull/793#issuecomment-738736539). + +### [Defer/stream updates](https://github.com/graphql/graphql-spec/blob/main/rfcs/DeferStream.md) + +The official experimental branch of graphql-js/express-graphql. The WG is working to update the initialCount, validation rule in GraphQL.js, and the spec. + +### Schema Coordinates Spec + +The RFC and spec edit have been out for a few months with credit due to everyone who has reviewed those. Last time the field arguments were the discussion there were two main contenders: `Query.business(id:)` versus `Query.business.id`. The WG is looking for consensus. The discussion summarized can be found [here](https://github.com/graphql/graphql-spec/pull/746#issuecomment-740914167). + +### _Typename is not valid at subscription root + +`__typename` does not return an async iterator and has been deemed not useful at the root of a subscription operation, yet it is allowed by GraphQL validation. This field has caused some confusion in the community, and the WG has proposed explicitly validating it to prevent the field to catch these issues earlier. + +### Default value coercion + +There's inconsistency in the handling of default values between user-supplied defaults (i.e. variables in operation documents) and schema-supplied defaults (for arguments or input object fields). The WG discussed ways in which a poorly constructed GraphQL schema can break the type safety guarantees of GraphQL and proposed addressing this by making schema defaults operate in a more expected manner. Next steps are to get an implementation finished so that we can advance the spec changes to stage 2. + +## In Other News... + +* [Federated GraphQL @ Walmart](https://medium.com/walmartglobaltech/federated-graphql-walmart-bfc85c2553de) +* [Apollo Extends Explorer GraphQL IDE to Development Environments](https://thenewstack.io/apollo-extends-explorer-graphql-ide-to-development-environments/) +* [How Netflix Scales its API with GraphQL Federation (Part 2)](https://netflixtechblog.com/how-netflix-scales-its-api-with-graphql-federation-part-2-bbe71aaec44a) +* [Hasura launched a 3 week series of articles, live-streams, and A.M.As for GraphQL beginners and experts.](https://hasura.io/blog/graphql-january-with-hasura/) +* [Prisma announced Nexus 1.0: A Major Release for Type-Safe, Code-First GraphQL APIs](https://www.prisma.io/blog/announcing-the-release-of-nexus-schema-v1-b5eno5g08d0b) +* ZDNet: [2021 Technology trend review: Cloud, Kubernetes, and GraphQL](https://zdnet.com/article/2021-technology-trend-review-part-1-blockchain-cloud-open-source/) +* TechTarget: [Enterprise application trends that will impact 2021: GraphQL vs. REST choice steers microservices development](https://searchapparchitecture.techtarget.com/feature/Enterprise-application-trends-that-will-impact) +* [Top 20 GraphQL Jobs Postings](https://www.dice.com/jobs/q-GraphQL-jobs) +* GraphQL Galaxy’s talk uploaded online, [check out the Keynote](https://youtu.be/mfg6ZJ2GGRc)! +* The [new Schema Stitching Handbook was released](https://the-guild.dev/blog/a-new-year-for-schema-stitching), together with examples and video walkthrough with everything you need to know about Federated/Distributed GraphQL Gateways +* [The Guild announced GraphQL Modules 1.0](https://the-guild.dev/blog/graphql-modules-v1) as a major rewrite after 3 years of experience. The new version includes better simplicity and performance +* With [GraphQL Mesh](https://graphql-mesh.com/) you can now wrap any existing API and add reactivity to it - check out [this blog post about how to do it](https://the-guild.dev/blog/add-reactivity-to-an-existing-source) +* [spotify-graphql is approaching v2.0](https://twitter.com/whereischarly/status/1349467930166239232?s=20) as a complete rewrite, instead of manual code it uses GraphQL Mesh under the hood to generate the API +* Software Engineering Daily: [Podcast with DGraph’s Manit Jain](https://softwareengineeringdaily.com/2021/01/19/dgraph-native-graphql-database-with-manish-jain/) + +## Upcoming Events: + +* Asia’s largest [GraphQL conference](https://graphql.asia/) is back! February 24th & 25th + +## Get Involved! + +Developers can get involved in the community and contribute to the project at [https://github.com/graphql](https://github.com/graphql). + +Organizations interested in becoming members of the GraphQL Foundation or the GraphQL Specification can learn more on our [member page](/foundation/join/). If you have questions about membership, please send an email to [membership@graphql.org](mailto:membership@graphql.org). diff --git a/src/content/blog/2021-03-31-newsletter-march-2021.md b/src/content/blog/2021-03-31-newsletter-march-2021.md new file mode 100644 index 0000000000..ee57badfe0 --- /dev/null +++ b/src/content/blog/2021-03-31-newsletter-march-2021.md @@ -0,0 +1,59 @@ +--- +title: GraphQL Foundation Monthly Newsletter March 2021 +tags: ["newsletter"] +layout: blog +date: 2021-03-31 +byline: GraphQL Foundation +permalink: /blog/2021-03-31-graphql-foundation-monthly-newsletter-march-2021 +--- + +[GraphQL](https://graphql.org/) has redefined how developers work with APIs and client-server interactions. And as the community works hard to foster the growth and adoption of GraphQL, we are excited to share the work of the community and discussions via the monthly GraphQL Foundation newsletter. + +GraphQL reached new heights in 2020 and is only poised to continue it’s meteoric rise in 2021. Thank you again for your involvement in this project and your support of the GraphQL Foundation. We are excited for another productive year! + +## Working Group Updates + +**GraphQL Foundation marketing committee** + +The newly created GraphQL Foundation marketing committee is responsible for coordinating marketing activities in support of the [Foundation](https://foundation.graphql.org/) and the [projects](https://github.com/graphql). They meet regularly, and welcome participation from Foundation and community members. + +The meeting agendas and minutes are open and available in [meetings/](https://github.com/graphql/marketing/blob/main/meetings). We generally meet on the fourth Thursday of the month at 9am PT. To be added to the recurring invite, please contact operations@graphql.org. + +**Allowing fields to diverge more** + +This is one of the most complicated validation rules, which is about overlapping fields and not forcing to ensure every field is unique in a query, especially if you compose queries. They have to be merged together and ensure the field is only executed once. There's a rule to ensure this merging can be done. + +The working group has agreed to add prose or a non-normative note to this validation rule to explain this. + +**Operation Expressions** + +Operation expressions is an extension to the Schema Coordinates syntax that allows for a host of new use cases. Outlined [here](https://github.com/graphql/graphql-spec/pull/823) are some of the use cases that have been discussed so far, and have iterated on the syntax, but everything in this is very much in flux. + +**Directions via introspection report** + +Custom directives are not currently introspectable. This has been a big discussion over the years. Recently, graphql-java has implemented (almost merged) the ability to query directive by introspection. + +**Oneof Input Objects and Oneof Fields** + +Oneof Input Objects are a special variant of Input Objects where the type system asserts that exactly one of the fields must be set and non-null, all others being omitted. This is represented in introspection with the `__Type.oneField: Boolean` field, and in SDL via the `@oneOf` directive on the input object. The working group has agreed to Contribute syntax thoughts and on the RFC itself, and write an implementation in GraphQL.js + +## In Other News... + +* ZDNet: [Databases, graphs, and GraphQL: The past, present, and future](https://www.zdnet.com/article/databases-graphs-and-graphql-past-present-and-future/) +* ZDNet: [Hasura connects GraphQL to the REST of the world](https://www.zdnet.com/article/hasura-connects-graphql-to-the-rest-of-the-world/) +* ADT Mag: [Netflix Open Sources GraphQL for Spring Boot](https://adtmag.com/articles/2021/02/17/netflix-open-sources-graphql-for-spring-boot.aspx) +* ProgrammableWeb: [Facebook Adds Relay Hooks for Improved GraphQL Data Fetching](https://www.programmableweb.com/news/facebook-adds-relay-hooks-improved-graphql-data-fetching/brief/2021/03/11) +* [Dgraph Labs Launches Slash GraphQL, Industry’s First GraphQL-Native Database Backend-As-A-Service](https://www.globenewswire.com/news-release/2020/09/10/2091563/0/en/Dgraph-Labs-Launches-Slash-GraphQL-Industry-s-First-GraphQL-Native-Database-Backend-As-A-Service.html) +* [How Square accelerates product development with Apollo GraphQL](https://www.apollographql.com/blog/how-square-accelerates-product-development-with-apollo-graphql/) +* [Netflix: Beyond REST Rapid Development with GraphQL Microservices](https://netflixtechblog.com/beyond-rest-1b76f7c20ef6) +* [The Guild announce early access to GraphQL Hive - A new Schema Registry for your GraphQL Workflows](https://the-guild.dev/blog/graphql-hive-preview) + +## Upcoming Events: + +* The GraphQL community will come together once again for [GraphQL Summit](https://summit.graphql.com/) April 7th & 8th + +## Get Involved! + +Developers can get involved in the community and contribute to the project at [https://github.com/graphql](https://github.com/graphql). + +Organizations interested in becoming members of the GraphQL Foundation or the GraphQL Specification can learn more on our [member page](https://foundation.graphql.org/join). If you have questions about membership, please send an email to membership@graphql.org. diff --git a/src/content/blog/2021-04-30-newsletter-april-2021.md b/src/content/blog/2021-04-30-newsletter-april-2021.md new file mode 100644 index 0000000000..fe4631ef75 --- /dev/null +++ b/src/content/blog/2021-04-30-newsletter-april-2021.md @@ -0,0 +1,60 @@ +--- +title: GraphQL Foundation Monthly Newsletter April 2021 +tags: ["newsletter"] +layout: blog +date: 2021-04-30 +byline: GraphQL Foundation +permalink: /blog/2021-04-30-graphql-foundation-monthly-newsletter-april-2021 +--- + +# GraphQL Foundation Monthly Newsletter April 2021 + +[GraphQL](https://graphql.org/) has redefined how developers work with APIs and client-server interactions. And as the community works hard to foster the growth and adoption of GraphQL, we are excited to share the work of the community and discussions via the monthly GraphQL Foundation newsletter. + +GraphQL reached new heights in 2020 and is only poised to continue it’s meteoric rise in 2021. Thank you again for your involvement in this project and your support of the GraphQL Foundation. We are excited for another productive year! + +## Working Group Updates + +### GraphQL Foundation marketing committee + +The newly created GraphQL Foundation marketing committee is responsible for coordinating marketing activities in support of the [Foundation](https://foundation.graphql.org/) and the [projects](https://github.com/graphql). They meet regularly, and welcome participation from Foundation and community members. + +The meeting agendas and minutes are open and available in [meetings/](https://github.com/graphql/marketing/blob/main/meetings). We generally meet on the fourth Thursday of the month at 9am PT. To be added to the recurring invite, please contact [operations@graphql.org](mailto:operations@graphql.org). + +### Spec cut + +There are few more final phase proposals still waiting on review, as well as updating the version of the legal text). The next step will include having the TSC take a formal vote to cut the draft. + +### TypeScript migration for GraphQL.js + +Representing almost 6 million downloads per week. TypeScript is in need of additional clean up, including GraphQLList and GraphQLNonNull. The WG decided to drop Flow types, and have a PR for converting to TypeScript. The plan is to incorporate the fixes into the main release, which is very close to being done. Once finished, it will be added to release 16.0.0-alpha.1. Once that is complete it will merge the PR and convert to TypeScript. + +### Adding descriptions to queries and fragments + +The purpose of this discussion is to add necessary comments for various business use cases. As of now we have to parse SDL data and it's problematic when people add other comments. The WG is working on the best way to solve this issue. + +### Schema introspection extensions + +First implemented by GraphQL Java,then some issues were found and it was discovered there was some additional work to be done before turning it into an RFC. The Working Group is planning to address these issues shortly. + + +## In Other News... + +* [Dgraph announces v21.03 - Resilient Rocket Release](https://dgraph.io/blog/post/v2103-release/) +* Read: [GraphQL API Security best practices with AWS AppSync and Amplify](https://github.com/danilop/graphql-api-security-with-aws-appsync-and-amplify) + * AWS AppSync is a fully managed service which allows developers to deploy and interact with serverless scalable GraphQL backends on AWS. +* [Neo4j announces GraphQL Library Beta Release](https://medium.com/neo4j/announcing-the-neo4j-graphql-library-beta-99ae8541bbe7) +* TechTarget: [Dgraph GraphQL database users detail graph use cases](https://searchdatamanagement.techtarget.com/news/252499595/Dgraph-GraphQL-database-users-detail-graph-use-cases) +* Devops.com: [Apollo GraphQL Makes Federated Server More Accessible](https://devops.com/apollo-graphql-makes-federated-server-more-accessible/) +* The New Stack: [Why Shopify Favors GraphQL over REST for Its APIs](https://thenewstack.io/why-shopify-favors-graphql-over-rest-for-its-apis/) +* Code Story: [E17: Matt Debergalis, Apollo GraphQL](https://codestory.co/podcast/e17-matt-debergalis-apollo-graphql/) + +## Upcoming Events: + +* [Hasura Con '21: The Big Hasura User Conference](https://hasura.io/events/hasura-con-2021/) The 2021 installment of Hasura Con will take place on June 23rd and 24th. The event brings together users from all over the world to celebrate all things Hasura and will feature top-notch speakers and workshops. Sign up today to attend Hasura Con '21 or submit a talk proposal to share your knowledge at the event. + +## Get Involved! + +Developers can get involved in the community and contribute to the project at [https://github.com/graphql](https://github.com/graphql). + +Organizations interested in becoming members of the GraphQL Foundation or the GraphQL Specification can learn more on our [member page](https://foundation.graphql.org/join). If you have questions about membership, please send an email to membership@graphql.org. diff --git a/src/content/code/language-support/c-c/tools/libgraphqlparser.md b/src/content/code/language-support/c-c/tools/libgraphqlparser.md new file mode 100644 index 0000000000..e3681c82fa --- /dev/null +++ b/src/content/code/language-support/c-c/tools/libgraphqlparser.md @@ -0,0 +1,8 @@ +--- +name: libgraphqlparser +description: A GraphQL query language parser in C++ with C and C++ APIs. +url: https://github.com/graphql/libgraphqlparser +github: graphql/libgraphqlparser +--- + + diff --git a/src/content/code/language-support/c-net/client/graphql-client.md b/src/content/code/language-support/c-net/client/graphql-client.md new file mode 100644 index 0000000000..df6e016432 --- /dev/null +++ b/src/content/code/language-support/c-net/client/graphql-client.md @@ -0,0 +1,8 @@ +--- +name: GraphQL.Client +description: A GraphQL Client for .NET. +url: https://github.com/graphql-dotnet/graphql-client +github: graphql-dotnet/graphql-client +--- + + diff --git a/src/content/code/language-support/c-net/client/graphql-net-client.md b/src/content/code/language-support/c-net/client/graphql-net-client.md new file mode 100644 index 0000000000..5042b5859c --- /dev/null +++ b/src/content/code/language-support/c-net/client/graphql-net-client.md @@ -0,0 +1,8 @@ +--- +name: graphql-net-client +description: Basic example GraphQL client for .NET. +url: https://github.com/bkniffler/graphql-net-client +github: bkniffler/graphql-net-client +--- + + diff --git a/src/content/code/language-support/c-net/client/sahb-graphqlclient.md b/src/content/code/language-support/c-net/client/sahb-graphqlclient.md new file mode 100644 index 0000000000..2fa58640f7 --- /dev/null +++ b/src/content/code/language-support/c-net/client/sahb-graphqlclient.md @@ -0,0 +1,8 @@ +--- +name: SAHB.GraphQLClient +description: GraphQL client which supports generating queries from C# classes +url: https://github.com/sahb1239/SAHB.GraphQLClient +github: sahb1239/SAHB.GraphQLClient +--- + + diff --git a/src/content/code/language-support/c-net/client/strawberry-shake.md b/src/content/code/language-support/c-net/client/strawberry-shake.md new file mode 100644 index 0000000000..b54c164cfa --- /dev/null +++ b/src/content/code/language-support/c-net/client/strawberry-shake.md @@ -0,0 +1,23 @@ +--- +name: Strawberry Shake +description: Strawberry Shake is a open-source reactive GraphQL client for .NET +url: https://chillicream.com/docs/strawberryshake/ +github: ChilliCream/hotchocolate +--- + +Strawberry Shake removes the complexity of state management and lets you interact with local and remote data through GraphQL. + +You can use Strawberry Shake to: + +- Generate a C# client from your GraphQL queries. +- Interact with local and remote data through GraphQL. +- Use reactive APIs to interact with your state. + +```csharp +client.GetHero + .Watch(ExecutionStrategy.CacheFirst) + .Subscribe(result => + { + Console.WriteLine(result.Data.Name); + }) +``` diff --git a/src/content/code/language-support/c-net/server/entity-graphql.md b/src/content/code/language-support/c-net/server/entity-graphql.md new file mode 100644 index 0000000000..be3cc954b3 --- /dev/null +++ b/src/content/code/language-support/c-net/server/entity-graphql.md @@ -0,0 +1,8 @@ +--- +name: Entity GraphQL +description: .NET Core GraphQL library. Compiles to IQueryable to easily expose a schema from an existing data model (E.g. from an Entity Framework data model) +url: https://github.com/lukemurray/EntityGraphQL +github: lukemurray/EntityGraphQL +--- + + diff --git a/src/content/code/language-support/c-net/server/graphql-dotnet.md b/src/content/code/language-support/c-net/server/graphql-dotnet.md new file mode 100644 index 0000000000..6ac2e840bb --- /dev/null +++ b/src/content/code/language-support/c-net/server/graphql-dotnet.md @@ -0,0 +1,34 @@ +--- +name: graphql-dotnet +description: GraphQL for .NET +url: https://github.com/graphql-dotnet/graphql-dotnet +github: graphql-dotnet/graphql-dotnet +--- + +```csharp +using System; +using System.Threading.Tasks; +using GraphQL; +using GraphQL.Types; +using GraphQL.SystemTextJson; // First add PackageReference to GraphQL.SystemTextJson + +public class Program +{ + public static async Task Main(string[] args) + { + var schema = Schema.For(@" + type Query { + hello: String + } + "); + + var json = await schema.ExecuteAsync(_ => + { + _.Query = "{ hello }"; + _.Root = new { Hello = "Hello World!" }; + }); + + Console.WriteLine(json); + } +} +``` diff --git a/src/content/code/language-support/c-net/server/graphql-net.md b/src/content/code/language-support/c-net/server/graphql-net.md new file mode 100644 index 0000000000..9c5d76e671 --- /dev/null +++ b/src/content/code/language-support/c-net/server/graphql-net.md @@ -0,0 +1,8 @@ +--- +name: graphql-net +description: Convert GraphQL to IQueryable +url: https://github.com/ckimes89/graphql-net +github: chkimes/graphql-net +--- + + diff --git a/src/content/code/language-support/c-net/server/hot-chocolate.md b/src/content/code/language-support/c-net/server/hot-chocolate.md new file mode 100644 index 0000000000..2b9704ad33 --- /dev/null +++ b/src/content/code/language-support/c-net/server/hot-chocolate.md @@ -0,0 +1,38 @@ +--- +name: Hot Chocolate +description: Hot Chocolate is an open-source GraphQL Server for .NET +url: https://chillicream.com/docs/hotchocolate/ +github: ChilliCream/hotchocolate +--- + +Hot Chocolate takes the complexity away from building a fully-fledged GraphQL server and lets you focus on delivering the next big thing. + +```csharp +using Microsoft.AspNetCore; +using Microsoft.AspNetCore.Hosting; +using Microsoft.AspNetCore.Builder; +using Microsoft.Extensions.DependencyInjection; + +WebHost + .CreateDefaultBuilder(args) + .ConfigureServices(services => + services + .AddGraphQLServer() + .AddQueryType()) + .Configure(builder => + builder + .UseRouting() + .UseEndpoints(e => e.MapGraphQL())) + .Build() + .Run(); + +public class Query +{ + public Hero GetHero() => new Hero(); +} + +public class Hero +{ + public string Name => "Luke Skywalker"; +} +``` diff --git a/src/content/code/language-support/c-net/server/ngraphql.md b/src/content/code/language-support/c-net/server/ngraphql.md new file mode 100644 index 0000000000..f9a94187b0 --- /dev/null +++ b/src/content/code/language-support/c-net/server/ngraphql.md @@ -0,0 +1,6 @@ +--- +name: NGraphQL +description: A set of packages for implementing high-performant GraphQL servers in .NET. Faithful implementation of official 2018 Specification. Features batched execution support (aka Data Loader); support for custom scalars; HTTP server based on ASP.NET Core; parsed query cache; modular API construction (equivalent of schema stiching); full introspection support; runtime metrics and quotas. +url: https://github.com/rivantsov/ngraphql +github: rivantsov/ngraphql +--- diff --git a/src/content/code/language-support/clojure/client/regraph.md b/src/content/code/language-support/clojure/client/regraph.md new file mode 100644 index 0000000000..2c8b73838a --- /dev/null +++ b/src/content/code/language-support/clojure/client/regraph.md @@ -0,0 +1,8 @@ +--- +name: regraph +description: A GraphQL client implemented in Clojurescript with support for websockets. +url: https://github.com/oliyh/re-graph/ +github: oliyh/re-graph +--- + + diff --git a/src/content/code/language-support/clojure/server/alumbra.md b/src/content/code/language-support/clojure/server/alumbra.md new file mode 100644 index 0000000000..c652f0769a --- /dev/null +++ b/src/content/code/language-support/clojure/server/alumbra.md @@ -0,0 +1,41 @@ +--- +name: alumbra +description: A set of reusable GraphQL components for Clojure conforming to the data structures given in [alumbra.spec](https://github.com/alumbra/alumbra.spec). +url: https://github.com/alumbra/alumbra +github: alumbra/alumbra +--- + +```clojure +(require '[alumbra.core :as alumbra] + '[claro.data :as data]) + +(def schema + "type Person { name: String!, friends: [Person!]! } + type QueryRoot { person(id: ID!): Person, me: Person! } + schema { query: QueryRoot }") + +(defrecord Person [id] + data/Resolvable + (resolve! [_ _] + {:name (str "Person #" id) + :friends (map ->Person (range (inc id) (+ id 3)))})) + +(def QueryRoot + {:person (map->Person {}) + :me (map->Person {:id 0})}) + +(def app + (alumbra/handler + {:schema schema + :query QueryRoot})) + +(defonce my-graphql-server + (aleph.http/start-server #'app {:port 3000})) +``` + +```bash +$ curl -XPOST "http://0.0.0.0:3000/" -H'Content-Type: application/json' -d'{ + "query": "{ me { name, friends { name } } }" +}' +{"data":{"me":{"name":"Person #0","friends":[{"name":"Person #1"},{"name":"Person #2"}]}}} +``` diff --git a/src/content/code/language-support/clojure/server/graphql-clj.md b/src/content/code/language-support/clojure/server/graphql-clj.md new file mode 100644 index 0000000000..e7baeea859 --- /dev/null +++ b/src/content/code/language-support/clojure/server/graphql-clj.md @@ -0,0 +1,23 @@ +--- +name: graphql-clj +description: A Clojure library that provides a GraphQL implementation. +url: https://github.com/tendant/graphql-clj +github: tendant/graphql-clj +--- + +Code that executes a hello world GraphQL query with `graphql-clj`: +```clojure + +(def schema "type QueryRoot { + hello: String + }") + +(defn resolver-fn [type-name field-name] + (get-in {"QueryRoot" {"hello" (fn [context parent & rest] + "Hello world!")}} + [type-name field-name])) + +(require '[graphql-clj.executor :as executor]) + +(executor/execute nil schema resolver-fn "{ hello }") +``` diff --git a/src/content/code/language-support/clojure/server/lacinia.md b/src/content/code/language-support/clojure/server/lacinia.md new file mode 100644 index 0000000000..0bb3f22aed --- /dev/null +++ b/src/content/code/language-support/clojure/server/lacinia.md @@ -0,0 +1,8 @@ +--- +name: lacinia +description: A full implementation of the GraphQL specification that aims to maintain external compliance with the specification. +url: https://github.com/walmartlabs/lacinia +github: walmartlabs/lacinia +--- + + diff --git a/src/content/code/language-support/d/server/graphqld.md b/src/content/code/language-support/d/server/graphqld.md new file mode 100644 index 0000000000..da50567414 --- /dev/null +++ b/src/content/code/language-support/d/server/graphqld.md @@ -0,0 +1,8 @@ +--- +name: graphqld +description: A GraphQL implementaiton for the D Programming Language. +url: https://github.com/burner/graphqld +github: burner/graphqld +--- + + diff --git a/src/content/code/language-support/elixir/client/common-graphql-client.md b/src/content/code/language-support/elixir/client/common-graphql-client.md new file mode 100644 index 0000000000..ec360e651f --- /dev/null +++ b/src/content/code/language-support/elixir/client/common-graphql-client.md @@ -0,0 +1,8 @@ +--- +name: common_graphql_client +description: Elixir GraphQL Client with HTTP and WebSocket support +url: https://github.com/annkissam/common_graphql_client +github: annkissam/common_graphql_client +--- + + diff --git a/src/content/code/language-support/elixir/client/neuron.md b/src/content/code/language-support/elixir/client/neuron.md new file mode 100644 index 0000000000..c77f230742 --- /dev/null +++ b/src/content/code/language-support/elixir/client/neuron.md @@ -0,0 +1,8 @@ +--- +name: Neuron +description: A GraphQL client for Elixir +url: https://github.com/uesteibar/neuron +github: uesteibar/neuron +--- + + diff --git a/src/content/code/language-support/elixir/server/absinthe.md b/src/content/code/language-support/elixir/server/absinthe.md new file mode 100644 index 0000000000..bc657a90b8 --- /dev/null +++ b/src/content/code/language-support/elixir/server/absinthe.md @@ -0,0 +1,8 @@ +--- +name: absinthe +description: GraphQL implementation for Elixir. +url: https://github.com/absinthe-graphql/absinthe +github: absinthe-graphql/absinthe +--- + + diff --git a/src/content/code/language-support/elixir/server/graphql-elixir.md b/src/content/code/language-support/elixir/server/graphql-elixir.md new file mode 100644 index 0000000000..4ec2bf84b1 --- /dev/null +++ b/src/content/code/language-support/elixir/server/graphql-elixir.md @@ -0,0 +1,8 @@ +--- +name: graphql-elixir +description: An Elixir implementation of Facebook's GraphQL. +url: https://github.com/graphql-elixir/graphql +github: graphql-elixir/graphql +--- + + diff --git a/src/content/code/language-support/elm/client/dillonkearns-elm-graphql.md b/src/content/code/language-support/elm/client/dillonkearns-elm-graphql.md new file mode 100644 index 0000000000..0850dba825 --- /dev/null +++ b/src/content/code/language-support/elm/client/dillonkearns-elm-graphql.md @@ -0,0 +1,8 @@ +--- +name: dillonkearns/elm-graphql +description: Library and command-line code generator to create type-safe Elm code for a GraphQL endpoint. +url: https://github.com/dillonkearns/elm-graphql +github: dillonkearns/elm-graphql +--- + + diff --git a/src/content/code/language-support/erlang/server/graphql-erlang.md b/src/content/code/language-support/erlang/server/graphql-erlang.md new file mode 100644 index 0000000000..9bb34ad549 --- /dev/null +++ b/src/content/code/language-support/erlang/server/graphql-erlang.md @@ -0,0 +1,8 @@ +--- +name: graphql-erlang +description: GraphQL implementation in Erlang. +url: https://github.com/shopgun/graphql-erlang +github: jlouis/graphql-erlang +--- + + diff --git a/src/content/code/language-support/flutter/client/ferry.md b/src/content/code/language-support/flutter/client/ferry.md new file mode 100644 index 0000000000..ffaa019b6b --- /dev/null +++ b/src/content/code/language-support/flutter/client/ferry.md @@ -0,0 +1,8 @@ +--- +name: Ferry +description: Ferry is a simple, powerful GraphQL Client for Flutter and Dart. +url: https://ferrygraphql.com/ +github: gql-dart/ferry +--- + + diff --git a/src/content/code/language-support/flutter/client/graphql.md b/src/content/code/language-support/flutter/client/graphql.md new file mode 100644 index 0000000000..fa0eb8e3aa --- /dev/null +++ b/src/content/code/language-support/flutter/client/graphql.md @@ -0,0 +1,8 @@ +--- +name: graphql +description: A GraphQL client implementation in Flutter. +url: https://github.com/zino-app/graphql-flutter#readme +github: zino-app/graphql-flutter +--- + + diff --git a/src/content/code/language-support/go/client/go-graphql-client.md b/src/content/code/language-support/go/client/go-graphql-client.md new file mode 100644 index 0000000000..35bdad9438 --- /dev/null +++ b/src/content/code/language-support/go/client/go-graphql-client.md @@ -0,0 +1,8 @@ +--- +name: go-graphql-client +description: A GraphQL Go client with Mutation, Query and Subscription support. +url: https://github.com/hasura/go-graphql-client +github: hasura/go-graphql-client +--- + + diff --git a/src/content/code/language-support/go/client/graphql.md b/src/content/code/language-support/go/client/graphql.md new file mode 100644 index 0000000000..3e778eac5d --- /dev/null +++ b/src/content/code/language-support/go/client/graphql.md @@ -0,0 +1,8 @@ +--- +name: graphql +description: A GraphQL client implementation in Go. +url: https://github.com/shurcooL/graphql#readme +github: shurcooL/graphql +--- + + diff --git a/src/content/code/language-support/go/client/machinebox-graphql.md b/src/content/code/language-support/go/client/machinebox-graphql.md new file mode 100644 index 0000000000..a2f35489d8 --- /dev/null +++ b/src/content/code/language-support/go/client/machinebox-graphql.md @@ -0,0 +1,8 @@ +--- +name: machinebox/graphql +description: An elegant low-level HTTP client for GraphQL. +url: https://github.com/machinebox/graphql +github: machinebox/graphql +--- + + diff --git a/src/content/code/language-support/go/server/99designs-gqlgen.md b/src/content/code/language-support/go/server/99designs-gqlgen.md new file mode 100644 index 0000000000..80b2f9d0f2 --- /dev/null +++ b/src/content/code/language-support/go/server/99designs-gqlgen.md @@ -0,0 +1,8 @@ +--- +name: 99designs/gqlgen +description: Go generate based graphql server library. +url: https://github.com/99designs/gqlgen +github: 99designs/gqlgen +--- + + diff --git a/src/content/code/language-support/go/server/appointy-jaal.md b/src/content/code/language-support/go/server/appointy-jaal.md new file mode 100644 index 0000000000..28095e284e --- /dev/null +++ b/src/content/code/language-support/go/server/appointy-jaal.md @@ -0,0 +1,8 @@ +--- +name: appointy/jaal +description: Develop spec compliant GraphQL servers in Go. +url: https://github.com/appointy/jaal +github: appointy/jaal +--- + + diff --git a/src/content/code/language-support/go/server/graph-gophers-graphql-go.md b/src/content/code/language-support/go/server/graph-gophers-graphql-go.md new file mode 100644 index 0000000000..2bf5eaad94 --- /dev/null +++ b/src/content/code/language-support/go/server/graph-gophers-graphql-go.md @@ -0,0 +1,8 @@ +--- +name: graph-gophers/graphql-go +description: An active implementation of GraphQL in Golang (was https://github.com/neelance/graphql-go). +url: https://github.com/graph-gophers/graphql-go +github: graph-gophers/graphql-go +--- + + diff --git a/src/content/code/language-support/go/server/graphql-go.md b/src/content/code/language-support/go/server/graphql-go.md new file mode 100644 index 0000000000..6ef7da936f --- /dev/null +++ b/src/content/code/language-support/go/server/graphql-go.md @@ -0,0 +1,8 @@ +--- +name: graphql-go +description: An implementation of GraphQL for Go / Golang. +url: https://github.com/graphql-go/graphql +github: graphql-go/graphql +--- + + diff --git a/src/content/code/language-support/go/server/graphql-relay-go.md b/src/content/code/language-support/go/server/graphql-relay-go.md new file mode 100644 index 0000000000..423b01719d --- /dev/null +++ b/src/content/code/language-support/go/server/graphql-relay-go.md @@ -0,0 +1,8 @@ +--- +name: graphql-relay-go +description: A Go/Golang library to help construct a graphql-go server supporting react-relay. +url: https://github.com/graphql-go/relay +github: graphql-go/relay +--- + + diff --git a/src/content/code/language-support/go/server/samsarahq-thunder.md b/src/content/code/language-support/go/server/samsarahq-thunder.md new file mode 100644 index 0000000000..370cd634e2 --- /dev/null +++ b/src/content/code/language-support/go/server/samsarahq-thunder.md @@ -0,0 +1,8 @@ +--- +name: samsarahq/thunder +description: A GraphQL implementation with easy schema building, live queries, and batching. +url: https://github.com/samsarahq/thunder +github: samsarahq/thunder +--- + + diff --git a/src/content/code/language-support/go/tools/graphjin.md b/src/content/code/language-support/go/tools/graphjin.md new file mode 100644 index 0000000000..464e5bac94 --- /dev/null +++ b/src/content/code/language-support/go/tools/graphjin.md @@ -0,0 +1,8 @@ +--- +name: graphjin +description: An instant GraphQL to SQL compiler. Use as a standalone service or a Go library. Formerly super-graph. +url: https://github.com/dosco/graphjin +github: dosco/graphjin +--- + + diff --git a/src/content/code/language-support/groovy/server/gorm-graphql.md b/src/content/code/language-support/groovy/server/gorm-graphql.md new file mode 100644 index 0000000000..9c6ba9c890 --- /dev/null +++ b/src/content/code/language-support/groovy/server/gorm-graphql.md @@ -0,0 +1,21 @@ +--- +name: gorm-graphql +description: An automatic GraphQL schema generator for GORM +url: https://grails.github.io/gorm-graphql/latest/guide/index.html +github: grails/gorm-graphql +--- + +**Core Library** - The GORM GraphQL library provides functionality to generate a GraphQL schema based on your GORM entities. In addition to mapping domain classes to a GraphQL schema, the core library also provides default implementations of "data fetchers" to query, update, and delete data through executions of the schema. + +**Grails Plugin** - In a addition to the Core Library, the GORM GraphQL Grails Plugin: + +- Provides a controller to receive and respond to GraphQL requests through HTTP, based on their guidelines. + +- Generates the schema at startup with spring bean configuration to make it easy to extend. + +- Includes a [GraphiQL](https://github.com/graphql/graphiql) browser enabled by default in development. The browser is accessible at /graphql/browser. + +- Overrides the default data binder to use the data binding provided by Grails +- Provides a [trait](https://grails.github.io/gorm-graphql/latest/api/org/grails/gorm/graphql/plugin/testing/GraphQLSpec.html) to make integration testing of your GraphQL endpoints easier + +See [the documentation](https://grails.github.io/gorm-graphql/latest/guide/index.html) for more information. diff --git a/src/content/code/language-support/groovy/server/gql.md b/src/content/code/language-support/groovy/server/gql.md new file mode 100644 index 0000000000..fa32e99e5a --- /dev/null +++ b/src/content/code/language-support/groovy/server/gql.md @@ -0,0 +1,8 @@ +--- +name: GQL +description: GQL is a Groove library for GraphQL +url: https://grooviter.github.io/gql/ +github: grooviter/gql +--- + + diff --git a/src/content/code/language-support/haskell/client/morpheus-graphql-client.md b/src/content/code/language-support/haskell/client/morpheus-graphql-client.md new file mode 100644 index 0000000000..cec77a5e8e --- /dev/null +++ b/src/content/code/language-support/haskell/client/morpheus-graphql-client.md @@ -0,0 +1,8 @@ +--- +name: morpheus-graphql-client +description: A strongly-typed GraphQL client implementation in Haksell. +url: https://github.com/morpheusgraphql/morpheus-graphql +github: morpheusgraphql/morpheus-graphql +--- + + diff --git a/src/content/code/language-support/haskell/server/morpheus-graphql.md b/src/content/code/language-support/haskell/server/morpheus-graphql.md new file mode 100644 index 0000000000..a53e7216ea --- /dev/null +++ b/src/content/code/language-support/haskell/server/morpheus-graphql.md @@ -0,0 +1,61 @@ +--- +name: Morpheus GraphQL +description: A Haskell library for building GraphQL APIs. +url: https://github.com/morpheusgraphql/morpheus-graphql +github: morpheusgraphql/morpheus-graphql +--- + +Hello world example with `morpheus-graphql`: + +```graphql +# schema.gql +""" +A supernatural being considered divine and sacred +""" +type Deity { + name: String! + power: String @deprecated(reason: "no more supported") +} +type Query { + deity(name: String! = "Morpheus"): Deity! +} +``` + + +```haskell +{-# LANGUAGE DeriveGeneric #-} +{-# LANGUAGE DuplicateRecordFields #-} +{-# LANGUAGE FlexibleContexts #-} +{-# LANGUAGE FlexibleInstances #-} +{-# LANGUAGE MultiParamTypeClasses #-} +{-# LANGUAGE NamedFieldPuns #-} +{-# LANGUAGE OverloadedStrings #-} +{-# LANGUAGE ScopedTypeVariables #-} +{-# LANGUAGE TemplateHaskell #-} +{-# LANGUAGE TypeFamilies #-} +module API (api) where +import Data.ByteString.Lazy.Char8 (ByteString) +import Data.Morpheus (interpreter) +import Data.Morpheus.Document (importGQLDocument) +import Data.Morpheus.Types (RootResolver (..), Undefined (..)) +import Data.Text (Text) +importGQLDocument "schema.gql" +rootResolver :: RootResolver IO () Query Undefined Undefined +rootResolver = + RootResolver + { queryResolver = Query {deity}, + mutationResolver = Undefined, + subscriptionResolver = Undefined + } + where + deity DeityArgs {name} = + pure + Deity + { name = pure name, + power = pure (Just "Shapeshifting") + } +api :: ByteString -> IO ByteString +api = interpreter rootResolver +``` + +See [morpheus-graphql-examples](https://github.com/morpheusgraphql/morpheus-graphql) for more sophisticated APIs. diff --git a/src/content/code/language-support/haskell/server/mu-haskell.md b/src/content/code/language-support/haskell/server/mu-haskell.md new file mode 100644 index 0000000000..636f68d248 --- /dev/null +++ b/src/content/code/language-support/haskell/server/mu-haskell.md @@ -0,0 +1,56 @@ +--- +name: Mu-Haskell with Mu-GraphQL +description: A Haskell library for building microservices (gRPC, HTTP) and GraphQL APIs. +url: https://higherkindness.io/mu-haskell/ +github: higherkindness/mu-haskell +--- + +Example implementation of a GraphQL server with type-level representation of the schema auto-generated: + +```haskell +{-# LANGUAGE DataKinds #-} +{-# LANGUAGE NamedFieldPuns #-} +{-# LANGUAGE OverloadedStrings #-} +{-# LANGUAGE PartialTypeSignatures #-} +{-# LANGUAGE TypeApplications #-} +{-# LANGUAGE TypeFamilies #-} +{-# LANGUAGE TypeOperators #-} + +-- imports omitted for brevity... + +graphql "Library" "library.graphql" -- all the magic happens here! 🪄🎩 + +-- ... a bit more code... + +libraryServer :: SqlBackend -> ServerT ObjectMapping i Library ServerErrorIO _ +libraryServer conn = + resolver + ( object @"Book" + ( field @"id" bookId, + field @"title" bookTitle, + field @"author" bookAuthor, + field @"imageUrl" bookImage + ), + object @"Author" + ( field @"id" authorId, + field @"name" authorName, + field @"books" authorBooks + ), + object @"Query" + ( method @"authors" allAuthors, + method @"books" allBooks + ), + object @"Mutation" + ( method @"newAuthor" newAuthor, + method @"newBook" newBook + ), + object @"Subscription" + (method @"allBooks" allBooksConduit) + ) + where + bookId :: Entity Book -> ServerErrorIO Integer + bookId (Entity (BookKey k) _) = pure $ toInteger k + -- ... more resolvers... +``` + +See [our docs](https://higherkindness.io/mu-haskell/graphql/) for more information about how to build your own GraphQL server and [the library example](https://github.com/higherkindness/mu-graphql-example-elm) for a more end-to-end example that includes a client written in Elm! diff --git a/src/content/code/language-support/java-kotlin-android/client/apollo-android.md b/src/content/code/language-support/java-kotlin-android/client/apollo-android.md new file mode 100644 index 0000000000..d4e6fc704e --- /dev/null +++ b/src/content/code/language-support/java-kotlin-android/client/apollo-android.md @@ -0,0 +1,8 @@ +--- +name: Apollo Android +description: A strongly-typed, caching GraphQL client for Android, written in Java. +url: https://github.com/apollographql/apollo-android +github: apollographql/apollo-android +--- + + diff --git a/src/content/code/language-support/java-kotlin-android/client/graphql-kotlin.md b/src/content/code/language-support/java-kotlin-android/client/graphql-kotlin.md new file mode 100644 index 0000000000..94bf273a58 --- /dev/null +++ b/src/content/code/language-support/java-kotlin-android/client/graphql-kotlin.md @@ -0,0 +1,88 @@ +--- +name: graphql-kotlin +description: A set of libraries for running GraphQL client and server in Kotlin. +url: https://github.com/ExpediaGroup/graphql-kotlin/ +github: ExpediaGroup/graphql-kotlin +--- + +GraphQL Kotlin provides a set of lightweight type-safe GraphQL HTTP clients. The library provides Ktor HTTP client and Spring WebClient based reference implementations as well as allows for custom implementations using other engines. Type-safe data models are generated at build time by the GraphQL Kotlin Gradle and Maven plugins. + +To generate Ktor based GraphQL client add following to your Gradle build file: + +```kotlin +// build.gradle.kts +import com.expediagroup.graphql.plugin.generator.GraphQLClientType +import com.expediagroup.graphql.plugin.gradle.graphql + +plugins { + id("com.expediagroup.graphql") version $latestGraphQLKotlinVersion +} + +dependencies { + implementation("com.expediagroup:graphql-kotlin-ktor-client:$latestGraphQLKotlinVersion") +} + +graphql { + client { + // target GraphQL endpoint + endpoint = "http://localhost:8080/graphql" + // package for generated client code + packageName = "com.example.generated" + clientType = GraphQLClientType.KTOR + } +} +``` + +By default, GraphQL Kotlin plugin will look for query files under `src/main/resources`. Given `helloWorld: String!` query we can add following `HelloWorldQuery.graphql` sample query to our repo: + +```graphql +query HelloWorldQuery { + helloWorld +} +``` + +Plugin will generate following client code: + +```kotlin +package com.example.generated + +import com.expediagroup.graphql.client.GraphQLKtorClient +import com.expediagroup.graphql.types.GraphQLResponse +import kotlin.String + +const val HELLO_WORLD_QUERY: String = "query HelloWorldQuery {\n helloWorld\n}" + +class HelloWorldQuery( + private val graphQLClient: GraphQLKtorClient<*> +) { + suspend fun execute(requestBuilder: HttpRequestBuilder.() -> Unit = {}): GraphQLResponse = + graphQLClient.execute(HELLO_WORLD_QUERY, "HelloWorldQuery", null, requestBuilder) + + data class Result( + val helloWorld: String + ) +} +``` + +We can then execute the client + +```kotlin +package com.example.client + +import com.expediagroup.graphql.client.GraphQLKtorClient +import com.expediagroup.graphql.generated.HelloWorldQuery +import kotlinx.coroutines.runBlocking +import java.net.URL + +fun main() { + val client = GraphQLKtorClient(url = URL("http://localhost:8080/graphql")) + val helloWorldQuery = HelloWorldQuery(client) + runBlocking { + val result = helloWorldQuery.execute() + println("hello world query result: ${result.data?.helloWorld}") + } + client.close() +} +``` + +See [graphql-kotlin docs](https://expediagroup.github.io/graphql-kotlin/docs/getting-started) for additial details. \ No newline at end of file diff --git a/src/content/code/language-support/java-kotlin-android/client/nodes.md b/src/content/code/language-support/java-kotlin-android/client/nodes.md new file mode 100644 index 0000000000..2840e6a29a --- /dev/null +++ b/src/content/code/language-support/java-kotlin-android/client/nodes.md @@ -0,0 +1,8 @@ +--- +name: Nodes +description: A GraphQL JVM Client designed for constructing queries from standard model definitions. By American Express. +url: https://github.com/americanexpress/nodes +github: americanexpress/nodes +--- + + diff --git a/src/content/code/language-support/java-kotlin-android/server/graphql-java.md b/src/content/code/language-support/java-kotlin-android/server/graphql-java.md new file mode 100644 index 0000000000..d01ea20a88 --- /dev/null +++ b/src/content/code/language-support/java-kotlin-android/server/graphql-java.md @@ -0,0 +1,47 @@ +--- +name: graphql-java +description: A Java library for building GraphQL APIs. +url: https://github.com/graphql-java/graphql-java +github: graphql-java/graphql-java +--- + +Code that executes a hello world GraphQL query with `graphql-java`: + +```java +import graphql.ExecutionResult; +import graphql.GraphQL; +import graphql.schema.GraphQLSchema; +import graphql.schema.StaticDataFetcher; +import graphql.schema.idl.RuntimeWiring; +import graphql.schema.idl.SchemaGenerator; +import graphql.schema.idl.SchemaParser; +import graphql.schema.idl.TypeDefinitionRegistry; + +import static graphql.schema.idl.RuntimeWiring.newRuntimeWiring; + +public class HelloWorld { + + public static void main(String[] args) { + String schema = "type Query{hello: String} schema{query: Query}"; + + SchemaParser schemaParser = new SchemaParser(); + TypeDefinitionRegistry typeDefinitionRegistry = schemaParser.parse(schema); + + RuntimeWiring runtimeWiring = new RuntimeWiring() + .type("Query", builder -> builder.dataFetcher("hello", new StaticDataFetcher("world"))) + .build(); + + SchemaGenerator schemaGenerator = new SchemaGenerator(); + GraphQLSchema graphQLSchema = schemaGenerator.makeExecutableSchema(typeDefinitionRegistry, runtimeWiring); + + GraphQL build = GraphQL.newGraphQL(graphQLSchema).build(); + ExecutionResult executionResult = build.execute("{hello}"); + + System.out.println(executionResult.getData().toString()); + // Prints: {hello=world} + } +} +``` + +See [the graphql-java docs](https://github.com/graphql-java/graphql-java) for more information on setup. + diff --git a/src/content/code/language-support/java-kotlin-android/server/graphql-kotlin.md b/src/content/code/language-support/java-kotlin-android/server/graphql-kotlin.md new file mode 100644 index 0000000000..9e321f89a7 --- /dev/null +++ b/src/content/code/language-support/java-kotlin-android/server/graphql-kotlin.md @@ -0,0 +1,40 @@ +--- +name: graphql-kotlin +description: A set of libraries for running GraphQL client and server in Kotlin. +url: https://github.com/ExpediaGroup/graphql-kotlin/ +github: ExpediaGroup/graphql-kotlin +--- + +GraphQL Kotlin follows a code first approach for generating your GraphQL schemas. Given the similarities between Kotlin and GraphQL, such as the ability to define nullable/non-nullable types, a schema can be generated from Kotlin code without any separate schema specification. To create a reactive GraphQL web server add following dependency to your Gradle build file: + +```kotlin +// build.gradle.kts +implementation("com.expediagroup", "graphql-kotlin-spring-server", latestVersion) +``` + +We also need to provide a list of supported packages that can be scanned for exposing your schema objects through reflections. Add following configuration to your `application.yml` file: + +```yaml +graphql: + packages: + - "com.your.package" +``` + +With the above configuration we can now create our schema. In order to expose your queries, mutations and/or subscriptions in the GraphQL schema you simply need to implement corresponding marker interface and they will be automatically picked up by `graphql-kotlin-spring-server` auto-configuration library. + +```kotlin +@Component +class HelloWorldQuery : Query { + fun helloWorld() = "Hello World!!!" +} +``` + +This will result in a reactive GraphQL web application with following schema: + +```graphql +type Query { + helloWorld: String! +} +``` + +See [graphql-kotlin docs](https://expediagroup.github.io/graphql-kotlin/docs/getting-started) for additial details. diff --git a/src/content/code/language-support/java-kotlin-android/server/kgraphql.md b/src/content/code/language-support/java-kotlin-android/server/kgraphql.md new file mode 100644 index 0000000000..bd73f061f1 --- /dev/null +++ b/src/content/code/language-support/java-kotlin-android/server/kgraphql.md @@ -0,0 +1,61 @@ +--- +name: KGraphQL +description: KGraphQL is a Kotlin implementation of GraphQL. It provides a rich DSL to set up the GraphQL schema. +url: https://kgraphql.io/ +github: aPureBase/KGraphQL +--- + +Here's an example on how to create a simple schema based on a kotlin data class plus a property resolver that gets applied onto your class. + +```kotlin +data class Article(val id: Int, val text: String) + +fun main() { + val schema = KGraphQL.schema { + query("article") { + resolver { id: Int?, text: String -> + Article(id ?: -1, text) + } + } + type
{ + property("fullText") { + resolver { article: Article -> + "${article.id}: ${article.text}" + } + } + } + } + + schema.execute(""" + { + article(id: 5, text: "Hello World") { + id + fullText + } + } + """).let(::println) +} +``` + +KGraphQL is using coroutines behind the scenes to provide great asynchronous performance. + +See [KGraphQL docs](https://kgraphql.io/Installation/) for more in depth usage. + +## Ktor Plugin + +KGraphQL has a Ktor plugin which gives you a fully functional GraphQL server with a single [install](https://ktor.io/docs/zfeatures.html) function call. Example below shows how to set up a GraphQL server within Ktor and it will give you a [GraphQL Playground](https://github.com/graphql/graphql-playground) out of the box by entering `localhost:8080/graphql`. + +```kotlin +fun Application.module() { + install(GraphQL) { + playground = true + schema { + query("hello") { + resolver { -> "World!" } + } + } + } +} +``` + +You can follow the [Ktor tutorial](https://kgraphql.io/Tutorials/ktor/) to set up a KGraphQL server with ktor from scratch up. diff --git a/src/content/code/language-support/java-kotlin-android/tools/graphql-java-generator.md b/src/content/code/language-support/java-kotlin-android/tools/graphql-java-generator.md new file mode 100644 index 0000000000..04f6855ad0 --- /dev/null +++ b/src/content/code/language-support/java-kotlin-android/tools/graphql-java-generator.md @@ -0,0 +1,16 @@ +--- +name: GraphQL Java Generator +description: GraphQL Java Generator is a tool that generates Java code to speed up development for Client and Server of GraphQL APIs +url: https://github.com/graphql-java-generator +github: graphql-java-generator/graphql-gradle-plugin-project +--- + +* GraphQL Java client: it generates the Java classes that call the GraphQL endpoint, and the POJO that will contain the data returned by the server. +The GraphQL endpoint can then be queried by using a simple call to a Java method (see sample below) +* GraphQL Java server: it is based on [graphql-java](https://github.com/graphql-java/graphql-java) (listed here above). It generates all the boilerplate code. +You'll only have to implement what's specific to your server, which are the joins between the GraphQL types. +GraphQL Java Generator is available as a [Maven Plugin](https://graphql-maven-plugin-project.graphql-java-generator.com/index.html). +A Gradle plugin is coming soon. +Please note that GraphQL Java Generator is an accelerator: the generated code doesn’t depend on any library specific to GraphQL Java Generator. +So, it helps you to start building application based on graphql-java. Once the code is generated, you can decide to manually edit it as any standard java application, and get rid of GraphQL Java Generator. +Of course you can, and should, according to us :), continue using GraphQL Java Generator when your projet evolves. diff --git a/src/content/code/language-support/javascript/client/apollo-client.md b/src/content/code/language-support/javascript/client/apollo-client.md new file mode 100644 index 0000000000..2de76d9c45 --- /dev/null +++ b/src/content/code/language-support/javascript/client/apollo-client.md @@ -0,0 +1,9 @@ +--- +name: Apollo Client +description: A powerful JavaScript GraphQL client, designed to work well with React, React Native, Angular 2, or just plain JavaScript. +url: http://apollographql.com/client/ +github: apollographql/apollo-client +npm: "@apollo/client" +--- + + diff --git a/src/content/code/language-support/javascript/client/aws-amplify.md b/src/content/code/language-support/javascript/client/aws-amplify.md new file mode 100644 index 0000000000..1588f72758 --- /dev/null +++ b/src/content/code/language-support/javascript/client/aws-amplify.md @@ -0,0 +1,9 @@ +--- +name: AWS Amplify +description: A JavaScript library for application development using cloud services, which supports GraphQL backend and React components for working with GraphQL data. +url: https://docs.amplify.aws/ +github: aws-amplify/amplify-js +npm: "aws-amplify" +--- + + diff --git a/src/content/code/language-support/javascript/client/gq-loader.md b/src/content/code/language-support/javascript/client/gq-loader.md new file mode 100644 index 0000000000..40a76b1b1a --- /dev/null +++ b/src/content/code/language-support/javascript/client/gq-loader.md @@ -0,0 +1,9 @@ +--- +name: gq-loader +description: A simple JavaScript GraphQL client,Let the *.gql file be used as a module through webpack loader. +url: https://github.com/Houfeng/gq-loader +github: Houfeng/gq-loader +npm: "gq-loader" +--- + + diff --git a/src/content/code/language-support/javascript/client/grafoo.md b/src/content/code/language-support/javascript/client/grafoo.md new file mode 100644 index 0000000000..792facaee3 --- /dev/null +++ b/src/content/code/language-support/javascript/client/grafoo.md @@ -0,0 +1,9 @@ +--- +name: Grafoo +description: An all purpose GraphQL client with view layer integrations for multiple frameworks in just 1.6kb. +url: https://github.com/grafoojs/grafoo +github: grafoojs/grafoo +npm: "@grafoo/core" +--- + + diff --git a/src/content/code/language-support/javascript/client/graphql-hooks.md b/src/content/code/language-support/javascript/client/graphql-hooks.md new file mode 100644 index 0000000000..0ae88803ac --- /dev/null +++ b/src/content/code/language-support/javascript/client/graphql-hooks.md @@ -0,0 +1,70 @@ +--- +name: graphql-hooks +description: Minimal React hooks-first GraphQL client with a tiny bundle, SSR support and caching +url: https://github.com/nearform/graphql-hooks +github: nearform/graphql-hooks +npm: "graphql-hooks" +--- + +- 🥇 First-class hooks API +- ⚖️ _Tiny_ bundle: only 7.6kB (2.8 gzipped) +- 📄 Full SSR support: see [graphql-hooks-ssr](packages/graphql-hooks-ssr) +- 🔌 Plugin Caching: see [graphql-hooks-memcache](packages/graphql-hooks-memcache) +- 🔥 No more render props hell +- ⏳ Handle loading and error states with ease + +### Quickstart + +```bash +npm install graphql-hooks +``` + +First you'll need to create a client and wrap your app with the provider: + +```js +import { GraphQLClient, ClientContext } from 'graphql-hooks' + +const client = new GraphQLClient({ + url: '/graphql' +}) + +function App() { + return ( + + {/* children */} + + ) +} +``` + +Now in your child components you can make use of `useQuery`: + +```js +import { useQuery } from 'graphql-hooks' + +const HOMEPAGE_QUERY = `query HomePage($limit: Int) { + users(limit: $limit) { + id + name + } +}` + +function MyComponent() { + const { loading, error, data } = useQuery(HOMEPAGE_QUERY, { + variables: { + limit: 10 + } + }) + + if (loading) return 'Loading...' + if (error) return 'Something Bad Happened' + + return ( +
    + {data.users.map(({ id, name }) => ( +
  • {name}
  • + ))} +
+ ) +} +``` diff --git a/src/content/code/language-support/javascript/client/graphql-request.md b/src/content/code/language-support/javascript/client/graphql-request.md new file mode 100644 index 0000000000..12e6d10d25 --- /dev/null +++ b/src/content/code/language-support/javascript/client/graphql-request.md @@ -0,0 +1,9 @@ +--- +name: GraphQL Request +description: A simple and flexible JavaScript GraphQL client that works in all JavaScript environments (the browser, Node.js, and React Native) - basically a lightweight wrapper around `fetch`. +url: https://github.com/prisma/graphql-request +github: prisma-labs/graphql-request +npm: "graphql-request" +--- + + diff --git a/src/content/code/language-support/javascript/client/graphqurl.md b/src/content/code/language-support/javascript/client/graphqurl.md new file mode 100644 index 0000000000..8d9b83db99 --- /dev/null +++ b/src/content/code/language-support/javascript/client/graphqurl.md @@ -0,0 +1,9 @@ +--- +name: graphqurl +description: curl for GraphQL with autocomplete, subscriptions and GraphiQL. Also a dead-simple universal javascript GraphQL client. +url: https://github.com/hasura/graphqurl +github: hasura/graphqurl +npm: "graphqurl" +--- + + diff --git a/src/content/code/language-support/javascript/client/lokka.md b/src/content/code/language-support/javascript/client/lokka.md new file mode 100644 index 0000000000..6f3c8d3277 --- /dev/null +++ b/src/content/code/language-support/javascript/client/lokka.md @@ -0,0 +1,9 @@ +--- +name: Lokka +description: A simple JavaScript GraphQL client that works in all JavaScript environments (the browser, Node.js, and React Native). +url: https://github.com/kadirahq/lokka +github: kadirahq/lokka +npm: "lokka" +--- + + diff --git a/src/content/code/language-support/javascript/client/nanogql.md b/src/content/code/language-support/javascript/client/nanogql.md new file mode 100644 index 0000000000..14e6761774 --- /dev/null +++ b/src/content/code/language-support/javascript/client/nanogql.md @@ -0,0 +1,9 @@ +--- +name: nanogql +description: Tiny GraphQL client library using template strings. +url: https://github.com/yoshuawuyts/nanogql +github: choojs/nanographql +npm: "nanographql" +--- + + diff --git a/src/content/code/language-support/javascript/client/relay.md b/src/content/code/language-support/javascript/client/relay.md new file mode 100644 index 0000000000..ea2d96a16d --- /dev/null +++ b/src/content/code/language-support/javascript/client/relay.md @@ -0,0 +1,9 @@ +--- +name: Relay +description: Facebook's framework for building React applications that talk to a GraphQL backend. +url: https://facebook.github.io/relay/ +github: facebook/relay +npm: "react-relay" +--- + + diff --git a/src/content/code/language-support/javascript/client/urql.md b/src/content/code/language-support/javascript/client/urql.md new file mode 100644 index 0000000000..801836bea7 --- /dev/null +++ b/src/content/code/language-support/javascript/client/urql.md @@ -0,0 +1,15 @@ +--- +name: urql +description: A highly customizable and versatile GraphQL client with which you add on features like normalized caching as you grow. +url: https://formidable.com/open-source/urql/docs/ +github: FormidableLabs/urql +npm: "@urql/core" +--- + +`urql` is a GraphQL client that exposes a set of helpers for several frameworks. +It's built to be highly customisable and versatile so you can take it from getting started with your first GraphQL project +all the way to building complex apps and experimenting with GraphQL clients. + +- Currently supports React, React Native, Preact, Svelte, and Vue, and is supported by GraphQL Code Generator. +- Logical yet simple default behaviour and document caching, and normalized caching via `@urql/exchange-graphcache` +- Fully customizable behaviour via "exchanges" (addon packages) diff --git a/src/content/code/language-support/javascript/server/apollo-server.md b/src/content/code/language-support/javascript/server/apollo-server.md new file mode 100644 index 0000000000..de749042b6 --- /dev/null +++ b/src/content/code/language-support/javascript/server/apollo-server.md @@ -0,0 +1,43 @@ +--- +name: Apollo Server +description: A set of GraphQL server packages from Apollo that work with various Node.js HTTP frameworks (Express, Connect, Hapi, Koa etc). +url: https://www.apollographql.com/docs/apollo-server/ +github: apollographql/apollo-server +npm: "apollo-server-express" +--- + +To run a hello world server with apollo-server-express: + +```bash +npm install apollo-server-express express +``` + +Then run `node server.js` with this code in `server.js`: + +```js +const express = require('express'); +const { ApolloServer, gql } = require('apollo-server-express'); + +const typeDefs = gql` + type Query { + hello: String + } +`; + +const resolvers = { + Query: { + hello: () => 'Hello world!', + }, +}; + +const server = new ApolloServer({ typeDefs, resolvers }); + +const app = express(); +server.applyMiddleware({ app }); + +app.listen({ port: 4000 }, () => + console.log('Now browse to http://localhost:4000' + server.graphqlPath) +); +``` + +Apollo Server also supports all Node.js HTTP server frameworks: Express, Connect, HAPI, Koa and NestJs. diff --git a/src/content/code/language-support/javascript/server/express-graphql.md b/src/content/code/language-support/javascript/server/express-graphql.md new file mode 100644 index 0000000000..ae70681236 --- /dev/null +++ b/src/content/code/language-support/javascript/server/express-graphql.md @@ -0,0 +1,37 @@ +--- +name: Express GraphQL +description: The reference implementation of a GraphQL API server over an Express webserver. You can use this to run GraphQL in conjunction with a regular Express webserver, or as a standalone GraphQL server. +url: /graphql-js/running-an-express-graphql-server/ +github: graphql/express-graphql +npm: "express-graphql" +--- + +To run an `express-graphql` hello world server: + +```bash +npm install express express-graphql graphql +``` + +Then run `node server.js` with this code in `server.js`: + +```js +var express = require('express'); +var { graphqlHTTP } = require('express-graphql'); +var { buildSchema } = require('graphql'); + +var schema = buildSchema(` + type Query { + hello: String + } +`); + +var root = { hello: () => 'Hello world!' }; + +var app = express(); +app.use('/graphql', graphqlHTTP({ + schema: schema, + rootValue: root, + graphiql: true, +})); +app.listen(4000, () => console.log('Now browse to localhost:4000/graphql')); +``` diff --git a/src/content/code/language-support/javascript/server/graphql-helix.md b/src/content/code/language-support/javascript/server/graphql-helix.md new file mode 100644 index 0000000000..5c872e3ec3 --- /dev/null +++ b/src/content/code/language-support/javascript/server/graphql-helix.md @@ -0,0 +1,84 @@ +--- +name: GraphQL Helix +description: A collection of utility functions for building your own GraphQL HTTP server. You can check out [Building a GraphQL server with GraphQL Helix](https://dev.to/danielrearden/building-a-graphql-server-with-graphql-helix-2k44) on DEV for a detailed tutorial on getting started. +url: https://github.com/contrawork/graphql-helix +github: contrawork/graphql-helix +npm: "graphql-helix" +--- + +To run a hello world server with GraphQL Helix: + +```bash +npm install graphql graphql-helix express +``` + +Then run `node server.js` with this code in `server.js`: + +```js +const express = require('express') +const { + GraphQLObjectType, + GraphQLSchema, + GraphQLString +} = require('graphql'); +const { + getGraphQLParameters, + processRequest, + renderGraphiQL, + shouldRenderGraphiQL +} = require('graphql-helix'); + +const schema = new GraphQLSchema({ + query: new GraphQLObjectType({ + name: 'Query', + fields: { + hello: { + type: GraphQLString, + resolve: () => 'Hello world!', + }, + }, + }), +}); + +const app = express(); + +app.use(express.json()); + +app.use('/graphql', async (req, res) => { + const request = { + body: req.body, + headers: req.headers, + method: req.method, + query: req.query, + }; + + if (shouldRenderGraphiQL(request)) { + res.send(renderGraphiQL()); + } else { + const { operationName, query, variables } = getGraphQLParameters(request); + + const result = await processRequest({ + operationName, + query, + variables, + request, + schema, + }); + + if (result.type === 'RESPONSE') { + result.headers.forEach(({ name, value }) => res.setHeader(name, value)); + res.status(result.status); + res.json(result.payload); + } else { + // graphql-helix also supports subscriptions and incremental delivery (i.e. @defer and @stream directives) + // out of the box. See the repo for more complete examples that also implement those features. + } + } +}); + +app.listen(4000, () => + console.log('Now browse to http://localhost:4000/graphql'); +) +``` + +This example uses Express, but GraphQL Helix is framework- and runtime-agnostic -- it can run in Node, Deno and the browser. GraphQL Helix provides you with a handful of utility functions to build your own HTTP server but leaves the ultimate implementation details up to you. diff --git a/src/content/code/language-support/javascript/server/graphql-js.md b/src/content/code/language-support/javascript/server/graphql-js.md new file mode 100644 index 0000000000..9769b78e39 --- /dev/null +++ b/src/content/code/language-support/javascript/server/graphql-js.md @@ -0,0 +1,31 @@ +--- +name: GraphQL.js +description: The reference implementation of the GraphQL specification, designed for running GraphQL in a Node.js environment. +url: /graphql-js/ +github: graphql/graphql-js +npm: "graphql" +--- + +To run a `GraphQL.js` hello world script from the command line: + +```bash +npm install graphql +``` + +Then run `node hello.js` with this code in `hello.js`: + +```js +var { graphql, buildSchema } = require('graphql'); + +var schema = buildSchema(` + type Query { + hello: String + } +`); + +var root = { hello: () => 'Hello world!' }; + +graphql(schema, '{ hello }', root).then((response) => { + console.log(response); +}); +``` diff --git a/src/content/code/language-support/javascript/server/graphql-yoga.md b/src/content/code/language-support/javascript/server/graphql-yoga.md new file mode 100644 index 0000000000..30f6521639 --- /dev/null +++ b/src/content/code/language-support/javascript/server/graphql-yoga.md @@ -0,0 +1,37 @@ +--- +name: graphql-yoga +description: Fully-featured GraphQL Server with focus on easy setup, performance & great developer experience +url: https://github.com/dotansimha/graphql-yoga +github: dotansimha/graphql-yoga +npm: "graphql-yoga" +--- + +- Sensible defaults & includes everything you need with minimal setup. +- Built-in support for GraphQL subscriptions using WebSockets. +- Works with all GraphQL clients (Apollo, Relay...) and fits seamless in your GraphQL workflow. + +To run a hello world server with graphql-yoga: + +```bash +npm install graphql-yoga +``` + +Then run `node server.js` with this code in `server.js`: + +```js +import { GraphQLServer } from 'graphql-yoga' +// ... or using "require()" +// const { GraphQLServer } = require('graphql-yoga') +const typeDefs = ` + type Query { + hello(name: String): String! + } +`; +const resolvers = { + Query: { + hello: (_, { name }) => `Hello ${name || 'World'}`, + }, +}; +const server = new GraphQLServer({ typeDefs, resolvers }) +server.start(() => console.log('Server is running on localhost:4000')) +``` diff --git a/src/content/code/language-support/javascript/tools/giraphql.md b/src/content/code/language-support/javascript/tools/giraphql.md new file mode 100644 index 0000000000..f4f2c62c8b --- /dev/null +++ b/src/content/code/language-support/javascript/tools/giraphql.md @@ -0,0 +1,32 @@ +--- +name: GiraphQL +description: A plugin based schema builder for creating code-first GraphQL schemas in typescript +url: https://giraphql.com/ +github: hayes/giraphql +npm: "@giraphql/core" +--- + +GiraphQL makes writing type-safe schemas simple, and works without a code generator, +build process, or extensive manual type definitions. + +```ts +import { ApolloServer } from "apollo-server" +import SchemaBuilder from "@giraphql/core" + +const builder = new SchemaBuilder({}) + +builder.queryType({ + fields: t => ({ + hello: t.string({ + args: { + name: t.arg.string({}), + }, + resolve: (parent, { name }) => `hello, ${name || "World"}`, + }), + }), +}) + +new ApolloServer({ + schema: builder.toSchema({}), +}).listen(3000) +``` diff --git a/src/content/code/language-support/javascript/tools/graphiql.md b/src/content/code/language-support/javascript/tools/graphiql.md new file mode 100644 index 0000000000..b9c2b53ffe --- /dev/null +++ b/src/content/code/language-support/javascript/tools/graphiql.md @@ -0,0 +1,9 @@ +--- +name: GraphiQL +description: An interactive in-browser GraphQL IDE. +url: https://github.com/graphql/graphiql +github: graphql/graphiql +npm: "graphiql" +--- + + diff --git a/src/content/code/language-support/javascript/tools/graphql-cli.md b/src/content/code/language-support/javascript/tools/graphql-cli.md new file mode 100644 index 0000000000..3c7ff98d00 --- /dev/null +++ b/src/content/code/language-support/javascript/tools/graphql-cli.md @@ -0,0 +1,9 @@ +--- +name: GraphQL CLI +description: A command line tool for common GraphQL development workflows. +url: https://graphql-cli.com +github: Urigo/graphql-cli +npm: "graphql-cli" +--- + + diff --git a/src/content/code/language-support/javascript/tools/graphql-code-generator.md b/src/content/code/language-support/javascript/tools/graphql-code-generator.md new file mode 100644 index 0000000000..ac5bf4fed5 --- /dev/null +++ b/src/content/code/language-support/javascript/tools/graphql-code-generator.md @@ -0,0 +1,9 @@ +--- +name: GraphQL Code Generator +description: GraphQL code generator with flexible support for custom plugins and templates like Typescript (frontend and backend), React Hooks, resolvers signatures and more. +url: https://graphql-code-generator.com +github: dotansimha/graphql-code-generator +npm: "@graphql-codegen/cli" +--- + + diff --git a/src/content/code/language-support/javascript/tools/graphql-config.md b/src/content/code/language-support/javascript/tools/graphql-config.md new file mode 100644 index 0000000000..8bc7db8659 --- /dev/null +++ b/src/content/code/language-support/javascript/tools/graphql-config.md @@ -0,0 +1,9 @@ +--- +name: GraphQL Config +description: One configuration for all your GraphQL tools (supported by most tools, editors & IDEs). +url: https://graphql-config.com +github: kamilkisiela/graphql-config +npm: "graphql-config" +--- + + diff --git a/src/content/code/language-support/javascript/tools/graphql-eslint.md b/src/content/code/language-support/javascript/tools/graphql-eslint.md new file mode 100644 index 0000000000..829e4c62eb --- /dev/null +++ b/src/content/code/language-support/javascript/tools/graphql-eslint.md @@ -0,0 +1,9 @@ +--- +name: GraphQL-ESLint +description: GraphQL-ESLint integrates GraphQL AST in the ESLint core (as a parser). +url: https://github.com/dotansimha/graphql-eslint/ +github: dotansimha/graphql-eslint/ +npm: "@graphql-eslint/eslint-plugin" +--- + + diff --git a/src/content/code/language-support/javascript/tools/graphql-inspector.md b/src/content/code/language-support/javascript/tools/graphql-inspector.md new file mode 100644 index 0000000000..060c06929f --- /dev/null +++ b/src/content/code/language-support/javascript/tools/graphql-inspector.md @@ -0,0 +1,9 @@ +--- +name: GraphQL Inspector +description: Compare schemas, validate documents, find breaking changes, find similar types, schema coverage, and more. +url: https://graphql-inspector.com/ +github: kamilkisiela/graphql-inspector +npm: "@graphql-inspector/cli" +--- + + diff --git a/src/content/code/language-support/javascript/tools/graphql-language-service.md b/src/content/code/language-support/javascript/tools/graphql-language-service.md new file mode 100644 index 0000000000..443a090ce2 --- /dev/null +++ b/src/content/code/language-support/javascript/tools/graphql-language-service.md @@ -0,0 +1,9 @@ +--- +name: GraphQL Language Service +description: An interface for building GraphQL language services for IDEs (diagnostics, autocomplete etc). +url: https://github.com/graphql/graphql-language-service +github: graphql/graphql-language-service +npm: "graphql-language-service" +--- + + diff --git a/src/content/code/language-support/javascript/tools/graphql-live-query.md b/src/content/code/language-support/javascript/tools/graphql-live-query.md new file mode 100644 index 0000000000..59eaad5c56 --- /dev/null +++ b/src/content/code/language-support/javascript/tools/graphql-live-query.md @@ -0,0 +1,9 @@ +--- +name: GraphQL Live Query +description: Real-Time with GraphQL for any GraphQL schema or transport. +url: https://github.com/n1ru4l/graphql-live-query +github: n1ru4l/graphql-live-query +npm: "@n1ru4l/graphql-live-query" +--- + + diff --git a/src/content/code/language-support/javascript/tools/graphql-mesh.md b/src/content/code/language-support/javascript/tools/graphql-mesh.md new file mode 100644 index 0000000000..8bf2de4398 --- /dev/null +++ b/src/content/code/language-support/javascript/tools/graphql-mesh.md @@ -0,0 +1,9 @@ +--- +name: GraphQL Mesh +description: GraphQL Mesh allows you to use GraphQL query language to access data in remote APIs that don't run GraphQL (and also ones that do run GraphQL). It can be used as a gateway to other services, or run as a local GraphQL schema that aggregates data from remote APIs. +url: https://graphql-mesh.com +github: Urigo/graphql-mesh +npm: "@graphql-mesh/cli" +--- + + diff --git a/src/content/code/language-support/javascript/tools/graphql-middleware.md b/src/content/code/language-support/javascript/tools/graphql-middleware.md new file mode 100644 index 0000000000..c5ebf02d76 --- /dev/null +++ b/src/content/code/language-support/javascript/tools/graphql-middleware.md @@ -0,0 +1,65 @@ +--- +name: GraphQLMiddleware +description: Split up your GraphQL resolvers in middleware functions. +url: https://github.com/maticzav/graphql-middleware +github: maticzav/graphql-middleware +npm: "graphql-middleware" +--- + +GraphQL Middleware is a schema wrapper which allows you to manage additional functionality across multiple resolvers efficiently. + +## Features + +💡 Easy to use: An intuitive, yet familiar API that you will pick up in a second. +💪 Powerful: Allows complete control over your resolvers (Before, After). +🌈 Compatible: Works with any GraphQL Schema. + +## Example + +```ts +const { ApolloServer } = require('apollo-server') +const { makeExecutableSchema } = require('@graphql-tools/schema') + +const typeDefs = ` +type Query { + hello(name: String): String + bye(name: String): String +} +` +const resolvers = { + Query: { + hello: (root, args, context, info) => { + console.log(`3. resolver: hello`) + return `Hello ${args.name ? args.name : 'world'}!` + }, + bye: (root, args, context, info) => { + console.log(`3. resolver: bye`) + return `Bye ${args.name ? args.name : 'world'}!` + }, + }, +} + +const logInput = async (resolve, root, args, context, info) => { + console.log(`1. logInput: ${JSON.stringify(args)}`) + const result = await resolve(root, args, context, info) + console.log(`5. logInput`) + return result +} + +const logResult = async (resolve, root, args, context, info) => { + console.log(`2. logResult`) + const result = await resolve(root, args, context, info) + console.log(`4. logResult: ${JSON.stringify(result)}`) + return result +} + +const schema = makeExecutableSchema({ typeDefs, resolvers }) + +const schemaWithMiddleware = applyMiddleware(schema, logInput, logResult) + +const server = new ApolloServer({ + schema: schemaWithMiddleware, +}) + +await server.listen({ port: 8008 }) +``` \ No newline at end of file diff --git a/src/content/code/language-support/javascript/tools/graphql-modules.md b/src/content/code/language-support/javascript/tools/graphql-modules.md new file mode 100644 index 0000000000..eeec6b18f6 --- /dev/null +++ b/src/content/code/language-support/javascript/tools/graphql-modules.md @@ -0,0 +1,9 @@ +--- +name: GraphQL Modules +description: GraphQL Modules lets you separate your backend implementation to small, reusable, easy-to-implement and easy-to-test pieces. +url: https://graphql-modules.com +github: Urigo/graphql-modules +npm: "graphql-modules" +--- + + diff --git a/src/content/code/language-support/javascript/tools/graphql-scalars.md b/src/content/code/language-support/javascript/tools/graphql-scalars.md new file mode 100644 index 0000000000..fcbe9a2123 --- /dev/null +++ b/src/content/code/language-support/javascript/tools/graphql-scalars.md @@ -0,0 +1,9 @@ +--- +name: GraphQL Scalars +description: A library of custom GraphQL scalar types for creating precise, type-safe GraphQL schemas. +url: https://github.com/Urigo/graphql-scalars +github: Urigo/graphql-scalars +npm: "graphql-scalars" +--- + + diff --git a/src/content/code/language-support/javascript/tools/graphql-shield.md b/src/content/code/language-support/javascript/tools/graphql-shield.md new file mode 100644 index 0000000000..282fde8515 --- /dev/null +++ b/src/content/code/language-support/javascript/tools/graphql-shield.md @@ -0,0 +1,60 @@ +--- +name: GraphQLShield +description: A GraphQL tool to ease the creation of permission layer. +url: https://github.com/maticzav/graphql-shield +github: maticzav/graphql-shield +npm: "graphql-shield" +--- + +GraphQL Shield helps you create a permission layer for your application. Using an intuitive rule-API, you'll gain the power of the shield engine on every request and reduce the load time of every request with smart caching. This way you can make sure your application will remain quick, and no internal data will be exposed. + +```ts +import { rule, shield, and, or, not } from 'graphql-shield' + +// Rules + +const isAuthenticated = rule({ cache: 'contextual' })( + async (parent, args, ctx, info) => { + return ctx.user !== null + }, +) + +const isAdmin = rule({ cache: 'contextual' })( + async (parent, args, ctx, info) => { + return ctx.user.role === 'admin' + }, +) + +const isEditor = rule({ cache: 'contextual' })( + async (parent, args, ctx, info) => { + return ctx.user.role === 'editor' + }, +) + +// Permissions + +const permissions = shield({ + Query: { + frontPage: not(isAuthenticated), + fruits: and(isAuthenticated, or(isAdmin, isEditor)), + customers: and(isAuthenticated, isAdmin), + }, + Mutation: { + addFruitToBasket: isAuthenticated, + }, + Fruit: isAuthenticated, + Customer: isAdmin, +}) + +// Server + +const server = new GraphQLServer({ + typeDefs, + resolvers, + middlewares: [permissions], + context: (req) => ({ + ...req, + user: getUser(req), + }), +}) +``` \ No newline at end of file diff --git a/src/content/code/language-support/javascript/tools/graphql-tools.md b/src/content/code/language-support/javascript/tools/graphql-tools.md new file mode 100644 index 0000000000..393b0568e4 --- /dev/null +++ b/src/content/code/language-support/javascript/tools/graphql-tools.md @@ -0,0 +1,9 @@ +--- +name: GraphQL Tools +description: A set of utils for faster development of GraphQL tools (Schema and documents loading, Schema merging and more). +url: https://graphql-tools.com +github: ardatan/graphql-tools +npm: "graphql-tools" +--- + + diff --git a/src/content/code/language-support/javascript/tools/graphql-ws.md b/src/content/code/language-support/javascript/tools/graphql-ws.md new file mode 100644 index 0000000000..1f5222c55c --- /dev/null +++ b/src/content/code/language-support/javascript/tools/graphql-ws.md @@ -0,0 +1,9 @@ +--- +name: GraphQL-WS +description: Coherent, zero-dependency, lazy, simple, GraphQL over WebSocket Protocol compliant server and client. +url: https://github.com/enisdenjo/graphql-ws +github: enisdenjo/graphql-ws +npm: "graphql-ws" +--- + + diff --git a/src/content/code/language-support/javascript/tools/postgraphile.md b/src/content/code/language-support/javascript/tools/postgraphile.md new file mode 100644 index 0000000000..79aedc83c7 --- /dev/null +++ b/src/content/code/language-support/javascript/tools/postgraphile.md @@ -0,0 +1,9 @@ +--- +name: Postgraphile +description: builds a powerful, extensible and performant GraphQL API from a PostgreSQL schema in seconds; saving you weeks if not months of development time. +url: https://www.graphile.org/postgraphile +github: graphile/postgraphile +npm: "postgraphile" +--- + + diff --git a/src/content/code/language-support/javascript/tools/sofa.md b/src/content/code/language-support/javascript/tools/sofa.md new file mode 100644 index 0000000000..becc69b471 --- /dev/null +++ b/src/content/code/language-support/javascript/tools/sofa.md @@ -0,0 +1,9 @@ +--- +name: SOFA +description: Generate REST API from your GraphQL API. +url: https://sofa-api.com/ +github: Urigo/SOFA +npm: "sofa-api" +--- + + diff --git a/src/content/code/language-support/julia/client/diana-jl.md b/src/content/code/language-support/julia/client/diana-jl.md new file mode 100644 index 0000000000..2def0c8952 --- /dev/null +++ b/src/content/code/language-support/julia/client/diana-jl.md @@ -0,0 +1,8 @@ +--- +name: Diana.jl +description: A Julia GraphQL server implementation. +url: https://github.com/neomatrixcode/Diana.jl +github: neomatrixcode/Diana.jl +--- + + diff --git a/src/content/code/language-support/ocaml-reason/server/ocaml-graphql-server.md b/src/content/code/language-support/ocaml-reason/server/ocaml-graphql-server.md new file mode 100644 index 0000000000..8826c9c9a4 --- /dev/null +++ b/src/content/code/language-support/ocaml-reason/server/ocaml-graphql-server.md @@ -0,0 +1,8 @@ +--- +name: ocaml-graphql-server +description: GraphQL server library for OCaml and Reason +url: https://github.com/andreas/ocaml-graphql-server +github: andreas/ocaml-graphql-server +--- + + diff --git a/src/content/code/language-support/perl/server/graphql-perl.md b/src/content/code/language-support/perl/server/graphql-perl.md new file mode 100644 index 0000000000..f9f099c2a1 --- /dev/null +++ b/src/content/code/language-support/perl/server/graphql-perl.md @@ -0,0 +1,16 @@ +--- +name: graphql-perl +description: A Perl port of GraphQL reference implementation +url: https://github.com/graphql-perl/graphql-perl +github: graphql-perl/graphql-perl +--- + +- [MetaCPAN documentation](https://metacpan.org/pod/GraphQL) + + - [Mojolicious-Plugin-GraphQL](https://github.com/graphql-perl/Mojolicious-Plugin-GraphQL) - connect your GraphQL service to a Mojolicious app + + - [GraphQL-Plugin-Convert-DBIC](https://github.com/graphql-perl/GraphQL-Plugin-Convert-DBIC) - automatically connect your DBIx::Class schema to GraphQL + + - [GraphQL-Plugin-Convert-OpenAPI](https://github.com/graphql-perl/GraphQL-Plugin-Convert-OpenAPI) - automatically connect any OpenAPI service (either local Mojolicious one, or remote) to GraphQL + + diff --git a/src/content/code/language-support/php/server/api-platform.md b/src/content/code/language-support/php/server/api-platform.md new file mode 100644 index 0000000000..0f5cfd77d5 --- /dev/null +++ b/src/content/code/language-support/php/server/api-platform.md @@ -0,0 +1,41 @@ +--- +name: API Platform +description: API Platform is a fully-featured, flexible and extensible API framework built on top of Symfony. +url: https://api-platform.com +github: api-platform/api-platform +--- + +The following class is enough to create both a Relay-compatible GraphQL server and a hypermedia API supporting modern REST formats (JSON-LD, JSONAPI...): + +```php +__('Representation of a user', 'users'); + } + + public function getID(object $user) + { + return $user->ID; + } + + public function getTypeDataLoaderClass(): string + { + return UserTypeDataLoader::class; + } +} +``` + +Please notice how the `TypeResolver` does not indicate which are its fields. It also does not load the objects from the database, but instead delegates this task to a `TypeDataLoader`. + +Adding fields to the type is done via a `FieldResolver`: + +```php +class UserFieldResolver extends AbstractDBDataFieldResolver +{ + public static function getClassesToAttachTo(): array + { + return [ + UserTypeResolver::class, + ]; + } + + public static function getFieldNamesToResolve(): array + { + return [ + 'username', + 'email', + 'url', + ]; + } + + public function getSchemaFieldDescription( + TypeResolverInterface $typeResolver, + string $fieldName + ): ?string { + $translationAPI = TranslationAPIFacade::getInstance(); + $descriptions = [ + 'username' => $translationAPI->__("User's username handle", "users"), + 'email' => $translationAPI->__("User's email", "users"), + 'url' => $translationAPI->__("URL of the user's profile in the website", "users"), + ]; + return $descriptions[$fieldName]; + } + + public function getSchemaFieldType( + TypeResolverInterface $typeResolver, + string $fieldName + ): ?string { + $types = [ + 'username' => SchemaDefinition::TYPE_STRING, + 'email' => SchemaDefinition::TYPE_EMAIL, + 'url' => SchemaDefinition::TYPE_URL, + ]; + return $types[$fieldName]; + } + + public function resolveValue( + TypeResolverInterface $typeResolver, + object $user, + string $fieldName, + array $fieldArgs = [] + ) { + switch ($fieldName) { + case 'username': + return $user->user_login; + + case 'email': + return $user->user_email; + + case 'url': + $userService = UserServiceFacade::getInstance(); + return $userService->getUserProfileURL($user->ID); + } + + return null; + } +} +``` + +The definition of a field for the GraphQL schema, and its resolution, is split into a multitude of functions from the `FieldResolver`: + +- `getSchemaFieldDescription` +- `getSchemaFieldType` +- `resolveValue` +- `getSchemaFieldArgs` +- `isSchemaFieldResponseNonNullable` +- `getImplementedInterfaceClasses` +- `resolveFieldTypeResolverClass` +- `resolveFieldMutationResolverClass` + +This code is more legible than if all functionality is satisfied through a single function, or through a configuration array, making it easier to implement and maintain the resolvers. diff --git a/src/content/code/language-support/php/server/graphql-php.md b/src/content/code/language-support/php/server/graphql-php.md new file mode 100644 index 0000000000..b84b448c96 --- /dev/null +++ b/src/content/code/language-support/php/server/graphql-php.md @@ -0,0 +1,8 @@ +--- +name: graphql-php +description: A PHP port of GraphQL reference implementation +url: https://github.com/webonyx/graphql-php +github: webonyx/graphql-php +--- + + diff --git a/src/content/code/language-support/php/server/graphql-relay-php.md b/src/content/code/language-support/php/server/graphql-relay-php.md new file mode 100644 index 0000000000..f35550c219 --- /dev/null +++ b/src/content/code/language-support/php/server/graphql-relay-php.md @@ -0,0 +1,8 @@ +--- +name: graphql-relay-php +description: A library to help construct a graphql-php server supporting react-relay. +url: https://github.com/ivome/graphql-relay-php +github: ivome/graphql-relay-php +--- + + diff --git a/src/content/code/language-support/php/server/graphqlbundle.md b/src/content/code/language-support/php/server/graphqlbundle.md new file mode 100644 index 0000000000..1a13a665ff --- /dev/null +++ b/src/content/code/language-support/php/server/graphqlbundle.md @@ -0,0 +1,8 @@ +--- +name: GraphQLBundle +description: A GraphQL server for Symfony +url: https://github.com/overblog/GraphQLBundle +github: overblog/GraphQLBundle +--- + + diff --git a/src/content/code/language-support/php/server/graphqlite.md b/src/content/code/language-support/php/server/graphqlite.md new file mode 100644 index 0000000000..055e61dc6a --- /dev/null +++ b/src/content/code/language-support/php/server/graphqlite.md @@ -0,0 +1,37 @@ +--- +name: GraphQLite +description: GraphQLite is a library that offers an annotations-based syntax for GraphQL schema definition. +url: https://graphqlite.thecodingmachine.io +github: thecodingmachine/graphqlite +--- + +It is framework agnostic with bindings available for Symfony and Laravel. +This code declares a "product" query and a "Product" Type: +```php +class ProductController +{ + /** + * @Query() + */ + public function product(string $id): Product + { + // Some code that looks for a product and returns it. + } +} + +/** + * @Type() + */ +class Product +{ + /** + * @Field() + */ + public function getName(): string + { + return $this->name; + } + // ... +} +``` +Other GraphQLite features include validation, security, error handling, loading via data-loader pattern... diff --git a/src/content/code/language-support/php/server/lighthouse.md b/src/content/code/language-support/php/server/lighthouse.md new file mode 100644 index 0000000000..33bfbf7450 --- /dev/null +++ b/src/content/code/language-support/php/server/lighthouse.md @@ -0,0 +1,8 @@ +--- +name: Lighthouse +description: A GraphQL server for Laravel +url: https://github.com/nuwave/lighthouse +github: nuwave/lighthouse +--- + + diff --git a/src/content/code/language-support/php/server/railt.md b/src/content/code/language-support/php/server/railt.md new file mode 100644 index 0000000000..0c4d999cff --- /dev/null +++ b/src/content/code/language-support/php/server/railt.md @@ -0,0 +1,8 @@ +--- +name: Railt +description: A PHP GraphQL Framework. +url: https://github.com/railt/railt +github: railt/railt +--- + + diff --git a/src/content/code/language-support/php/server/serge.md b/src/content/code/language-support/php/server/serge.md new file mode 100644 index 0000000000..e4a2a0fe96 --- /dev/null +++ b/src/content/code/language-support/php/server/serge.md @@ -0,0 +1,8 @@ +--- +name: serge +description: Use GraphQL to define your Domain Model for CQRS/ES and let serge generate code to handle GraphQL requests. +url: https://github.com/kepawni/serge +github: kepawni/serge +--- + + diff --git a/src/content/code/language-support/php/server/siler.md b/src/content/code/language-support/php/server/siler.md new file mode 100644 index 0000000000..c947260c11 --- /dev/null +++ b/src/content/code/language-support/php/server/siler.md @@ -0,0 +1,43 @@ +--- +name: Siler +description: Siler is a PHP library powered with high-level abstractions to work with GraphQL. +url: https://siler.leocavalcante.com/graphql/ +github: leocavalcante/siler +--- + +To run a Siler hello world script: +```graphql +type Query { + hello: String +} +``` + +```php + [ + 'hello' => 'world', + ], +]; +$schema = Graphqlschema($typeDefs, $resolvers); + +echo "Server running at http://127.0.0.1:8080"; + +Httpserver(Graphqlpsr7($schema), function (Throwable $err) { + var_dump($err); + return Diactorosjson([ + 'error' => true, + 'message' => $err->getMessage(), + ]); +})()->run(); +``` +It also provides functionality for the construction of a WebSocket Subscriptions Server based on how Apollo works. + diff --git a/src/content/code/language-support/php/server/wpgraphql.md b/src/content/code/language-support/php/server/wpgraphql.md new file mode 100644 index 0000000000..2fd292b5a5 --- /dev/null +++ b/src/content/code/language-support/php/server/wpgraphql.md @@ -0,0 +1,8 @@ +--- +name: WPGraphQL +description: A free, open-source WordPress plugin that provides an extendable GraphQL schema and API for any WordPress site +url: https://github.com/wp-graphql/wp-graphql +github: wp-graphql/wp-graphql +--- + + diff --git a/src/content/code/language-support/python/client/gql.md b/src/content/code/language-support/python/client/gql.md new file mode 100644 index 0000000000..8cebdc4361 --- /dev/null +++ b/src/content/code/language-support/python/client/gql.md @@ -0,0 +1,8 @@ +--- +name: GQL +description: A GraphQL client in Python. +url: https://github.com/graphql-python/gql +github: graphql-python/gql +--- + + diff --git a/src/content/code/language-support/python/client/python-graphql-client.md b/src/content/code/language-support/python/client/python-graphql-client.md new file mode 100644 index 0000000000..960e042369 --- /dev/null +++ b/src/content/code/language-support/python/client/python-graphql-client.md @@ -0,0 +1,8 @@ +--- +name: python-graphql-client +description: Simple GraphQL client for Python 2.7+. +url: https://github.com/prisma/python-graphql-client +github: prisma-labs/python-graphql-client +--- + + diff --git a/src/content/code/language-support/python/client/sgqlc.md b/src/content/code/language-support/python/client/sgqlc.md new file mode 100644 index 0000000000..20ec654363 --- /dev/null +++ b/src/content/code/language-support/python/client/sgqlc.md @@ -0,0 +1,8 @@ +--- +name: sgqlc +description: A simple Python GraphQL client. Supports generating code generation for types defined in a GraphQL schema. +url: https://github.com/profusion/sgqlc +github: profusion/sgqlc +--- + + diff --git a/src/content/code/language-support/python/server/ariadne.md b/src/content/code/language-support/python/server/ariadne.md new file mode 100644 index 0000000000..aa6f3ca0c1 --- /dev/null +++ b/src/content/code/language-support/python/server/ariadne.md @@ -0,0 +1,43 @@ +--- +name: Ariadne +description: Ariadne is a Python library for implementing GraphQL servers using schema-first approach. It supports both synchronous and asynchronous query execution, ships with batteries included for common GraphQL server problems like query cost validation or performance tracing and has simple API that is easy to extend or replace. +url: https://ariadnegraphql.org +github: mirumee/ariadne +--- + +Ariadne can be installed with pip: + +```bash +pip install ariadne +``` + +It ships with many GraphQL server implementations, enabling easy experimentation: + +```python +from ariadne import ObjectType, QueryType, gql, make_executable_schema +from ariadne.asgi import GraphQL +# Define types using Schema Definition Language (https://graphql.org/learn/schema/) +# Wrapping string in gql function provides validation and better error traceback +type_defs = gql(""" + type Query { + hello: String! + } +""") +# Bind resolver functions to Query's fields using QueryType +query_type = QueryType() +# Resolvers are simple python functions +@query_type.field("hello") +def resolve_hello(*_): + return "Hello world!" +# Create executable GraphQL schema +schema = make_executable_schema(type_defs, query_type) +# Create an ASGI app using the schema, running in debug mode +app = GraphQL(schema, debug=True) +``` + +Above server can be ran with uvicorn: + +``` +pip install uvicorn +uvicorn example:app +``` diff --git a/src/content/code/language-support/python/server/graphene.md b/src/content/code/language-support/python/server/graphene.md new file mode 100644 index 0000000000..772aaabc70 --- /dev/null +++ b/src/content/code/language-support/python/server/graphene.md @@ -0,0 +1,30 @@ +--- +name: Graphene +description: A Python library for building GraphQL APIs. +url: http://graphene-python.org/ +github: graphql-python/graphene +--- + +To run a Graphene hello world script: + +```bash +pip install graphene +``` + +Then run `python hello.py` with this code in `hello.py`: + +```python +import graphene + +class Query(graphene.ObjectType): + hello = graphene.String(name=graphene.String(default_value="World")) + + def resolve_hello(self, info, name): + return 'Hello ' + name + +schema = graphene.Schema(query=Query) +result = schema.execute('{ hello }') +print(result.data['hello']) # "Hello World" +``` + +There are also nice bindings for [Relay](https://facebook.github.io/relay/), Django, SQLAlchemy, and Google App Engine. diff --git a/src/content/code/language-support/python/server/strawberry.md b/src/content/code/language-support/python/server/strawberry.md new file mode 100644 index 0000000000..b12260ed80 --- /dev/null +++ b/src/content/code/language-support/python/server/strawberry.md @@ -0,0 +1,32 @@ +--- +name: Strawberry +description: Strawberry is a Python library for implementing code first GraphQL servers using modern Python features like type hints. +url: https://strawberry.rocks +github: strawberry-graphql/strawberry +--- + +Here's an example of a Strawberry hello world, first install the library: + +```bash +pip install strawberry-graphql +``` + +Create an `app.py` file with this content: + +```python +import strawberry + +@strawberry.type +class Query: + @strawberry.field + def hello(self, name: str = "World") -> str: + return f"Hello {name}" + +schema = strawberry.Schema(query=Query) +``` + +Then run `strawberry server app` and you will have a basic schema server +running on `http://localhost:8000/`. + +Strawberry also has views for ASGI, Flask and Django and provides utilities +like dataloaders and tracing. diff --git a/src/content/code/language-support/python/server/tartiflette.md b/src/content/code/language-support/python/server/tartiflette.md new file mode 100644 index 0000000000..b9c78af3eb --- /dev/null +++ b/src/content/code/language-support/python/server/tartiflette.md @@ -0,0 +1,34 @@ +--- +name: Tartiflette +description: A Python 3.6+ _(asyncio)_ library for building GraphQL APIs. +url: https://tartiflette.io +github: tartiflette/tartiflette +--- + +To run a tartiflette hello world script: +```bash +pip install tartiflette +``` +Then run `python hello.py` with this code in `hello.py`: +```python +import asyncio +from tartiflette import Engine, Resolver +@Resolver("Query.hello") +async def resolver_hello(parent, args, ctx, info): + return "hello " + args["name"] +async def run(): + tftt_engine = Engine(""" + type Query { + hello(name: String): String + } + """) + result = await tftt_engine.execute( + query='query { hello(name: "Chuck") }' + ) + print(result) + # {'data': {'hello': 'hello Chuck'}} +if __name__ == "__main__": + loop = asyncio.get_event_loop() + loop.run_until_complete(run()) +``` +There is also a nice [HTTP wrapper](https://github.com/dailymotion/tartiflette-aiohttp). diff --git a/src/content/code/language-support/r/server/ghql.md b/src/content/code/language-support/r/server/ghql.md new file mode 100644 index 0000000000..b832a4e73b --- /dev/null +++ b/src/content/code/language-support/r/server/ghql.md @@ -0,0 +1,8 @@ +--- +name: ghql +description: General purpose GraphQL R client +url: https://github.com/ropensci/ghql +github: ropensci/ghql +--- + + diff --git a/src/content/code/language-support/ruby/server/agoo.md b/src/content/code/language-support/ruby/server/agoo.md new file mode 100644 index 0000000000..be7b315dd5 --- /dev/null +++ b/src/content/code/language-support/ruby/server/agoo.md @@ -0,0 +1,37 @@ +--- +name: Agoo +description: A high performance web server with support for GraphQL. Agoo strives for a simple, easy to use API for GraphQL. +url: https://github.com/ohler55/agoo +github: ohler55/agoo +gem: agoo +--- + +```ruby +require 'agoo' + +class Query + def hello + 'hello' + end +end + +class Schema + attr_reader :query + + def initialize + @query = Query.new() + end +end + +Agoo::Server.init(6464, 'root', thread_count: 1, graphql: '/graphql') +Agoo::Server.start() +Agoo::GraphQL.schema(Schema.new) { + Agoo::GraphQL.load(%^type Query { hello: String }^) +} +sleep + +# To run this GraphQL example type the following then go to a browser and enter +# a URL of localhost:6464/graphql?query={hello} +# +# ruby hello.rb +``` diff --git a/src/content/code/language-support/ruby/server/graphql-ruby.md b/src/content/code/language-support/ruby/server/graphql-ruby.md new file mode 100644 index 0000000000..847cb44833 --- /dev/null +++ b/src/content/code/language-support/ruby/server/graphql-ruby.md @@ -0,0 +1,33 @@ +--- +name: graphql-ruby +description: A Ruby library for building GraphQL APIs. +url: https://github.com/rmosolgo/graphql-ruby +github: rmosolgo/graphql-ruby +gem: graphql +--- + +To run a hello world script with `graphql-ruby`: +```bash +gem install graphql +``` + +Then run `ruby hello.rb` with this code in `hello.rb`: + +```ruby +require 'graphql' + +class QueryType < GraphQL::Schema::Object + graphql_name 'Query' + field :hello do + type types.String + resolve -> (obj, args, ctx) { 'Hello world!' } + end +end + +class Schema < GraphQL::Schema + query QueryType +end + +puts Schema.execute('{ hello }').to_json +``` +There are also nice bindings for Relay and Rails. diff --git a/src/content/code/language-support/rust/client/cynic.md b/src/content/code/language-support/rust/client/cynic.md new file mode 100644 index 0000000000..f1680b6945 --- /dev/null +++ b/src/content/code/language-support/rust/client/cynic.md @@ -0,0 +1,61 @@ +--- +name: cynic +description: A bring your own types GraphQL client for Rust +url: https://cynic-rs.dev +github: obmarg/cynic +--- + +A client library for rust that generates queries from types you provide, +verifying that the types match the shape of your schema. + +It provides [a generator](https://generator.cynic-rs.dev) to bootstrap types +from existing GraphQL queries. + +Usage example: + +```rust +#[derive(cynic::QueryFragment, Debug)] +#[cynic( + schema_path = "../schemas/starwars.schema.graphql", + query_module = "query_dsl", + graphql_type = "Root", + argument_struct = "FilmArguments" +)] +struct FilmDirectorQuery { + #[arguments(id = &args.id)] + film: Option, +} + +#[derive(cynic::QueryFragment, Debug)] +#[cynic( + schema_path = "../schemas/starwars.schema.graphql", + query_module = "query_dsl", + graphql_type = "Film" +)] +struct Film { + title: Option, + director: Option, +} + +#[derive(cynic::FragmentArguments)] +struct FilmArguments { + id: Option, +} + +fn main() { + use cynic::{QueryBuilder, http::ReqwestBlockingExt}; + + let query = FilmDirectorQuery::build(&FilmArguments { + id: Some("ZmlsbXM6MQ==".into()), + }) + + reqwest::blocking::Client::new() + .post("https://swapi-graphql.netlify.com/.netlify/functions/index") + .run_graphql(query) + .unwrap() +} + +mod query_dsl { + cynic::query_dsl!("../schemas/starwars.schema.graphql"); +} +``` diff --git a/src/content/code/language-support/rust/client/gql_client.md b/src/content/code/language-support/rust/client/gql_client.md new file mode 100644 index 0000000000..bffd74c656 --- /dev/null +++ b/src/content/code/language-support/rust/client/gql_client.md @@ -0,0 +1,32 @@ +--- +name: gql_client +description: Minimal GraphQL client for Rust +url: https://github.com/arthurkhlghatyan/gql-client-rs +github: arthurkhlghatyan/gql-client-rs +--- + +Usage example +```rust +use gql_client::Client; + +#[tokio::main] +async fn main() -> Result<(), Box> { + let endpoint = "https://graphqlzero.almansi.me/api"; + let query = r#" + query AllPostsQuery { + posts { + data { + id + } + } + } + "#; + + let client = Client::new(endpoint); + let data: AllPosts = client.query::(query).await.unwrap(); + + println!("{:?}" data); + + Ok(()) +} +``` diff --git a/src/content/code/language-support/rust/server/async-graphql.md b/src/content/code/language-support/rust/server/async-graphql.md new file mode 100644 index 0000000000..77b29bc9c2 --- /dev/null +++ b/src/content/code/language-support/rust/server/async-graphql.md @@ -0,0 +1,18 @@ +--- +name: Async-graphql +description: Async-graphql is a high-performance server-side library that supports all GraphQL specifications. +url: https://github.com/async-graphql/async-graphql +github: async-graphql/async-graphql +--- + +```rust + use async_graphql::*; + struct Query; + #[Object] + impl Query { + /// Returns the sum of a and b + async fn add(&self, a: i32, b: i32) -> i32 { + a + b + } + } + ``` diff --git a/src/content/code/language-support/rust/server/graphql-rust-juniper.md b/src/content/code/language-support/rust/server/graphql-rust-juniper.md new file mode 100644 index 0000000000..7cf7c961f5 --- /dev/null +++ b/src/content/code/language-support/rust/server/graphql-rust-juniper.md @@ -0,0 +1,8 @@ +--- +name: graphql-rust/juniper +description: GraphQL server library for Rust +url: https://github.com/graphql-rust/juniper +github: graphql-rust/juniper +--- + + diff --git a/src/content/code/language-support/scala/client/caliban.md b/src/content/code/language-support/scala/client/caliban.md new file mode 100644 index 0000000000..881e35a0d5 --- /dev/null +++ b/src/content/code/language-support/scala/client/caliban.md @@ -0,0 +1,8 @@ +--- +name: Caliban +description: Functional GraphQL library for Scala, with client code generation and type-safe queries. +url: https://ghostdogpr.github.io/caliban/ +github: ghostdogpr/caliban +--- + + diff --git a/src/content/code/language-support/scala/server/caliban.md b/src/content/code/language-support/scala/server/caliban.md new file mode 100644 index 0000000000..0644058584 --- /dev/null +++ b/src/content/code/language-support/scala/server/caliban.md @@ -0,0 +1,29 @@ +--- +name: Caliban +description: Caliban is a purely functional library for building GraphQL servers and clients in Scala +url: https://ghostdogpr.github.io/caliban/ +github: ghostdogpr/caliban +--- + +An example of a GraphQL schema and query with `caliban`: +```scala +import caliban.GraphQL.graphQL +import caliban.RootResolver + +case class Character(name: String, age: Int) + +def getCharacters(): List[Character] = ??? + +// schema +case class Queries(characters: List[Character]) + +// resolver +val queries = Queries(getCharacters) + +val api = graphQL(RootResolver(queries)) + +for { + interpreter <- api.interpreter + result <- interpreter.execute("{ characters { name } }") +} yield result +``` diff --git a/src/content/code/language-support/scala/server/sangria.md b/src/content/code/language-support/scala/server/sangria.md new file mode 100644 index 0000000000..c900b46ed6 --- /dev/null +++ b/src/content/code/language-support/scala/server/sangria.md @@ -0,0 +1,23 @@ +--- +name: Sangria +description: A Scala GraphQL library that supports [Relay](https://facebook.github.io/relay/). +url: http://sangria-graphql.org/ +github: sangria-graphql/sangria +--- + +An example of a hello world GraphQL schema and query with `sangria`: +```scala +import sangria.schema._ +import sangria.execution._ +import sangria.macros._ + +val QueryType = ObjectType("Query", fields[Unit, Unit]( + Field("hello", StringType, resolve = _ ⇒ "Hello world!") +)) + +val schema = Schema(QueryType) + +val query = graphql"{ hello }" + +Executor.execute(schema, query) map println +``` diff --git a/src/content/code/language-support/swift-objective-c-ios/client/apollo-ios.md b/src/content/code/language-support/swift-objective-c-ios/client/apollo-ios.md new file mode 100644 index 0000000000..5bc1c64ac8 --- /dev/null +++ b/src/content/code/language-support/swift-objective-c-ios/client/apollo-ios.md @@ -0,0 +1,8 @@ +--- +name: Apollo iOS +description: A GraphQL client for iOS that returns results as query-specific Swift types, and integrates with Xcode to show your Swift source and GraphQL side by side, with inline validation errors. +url: https://www.apollographql.com/docs/ios/ +github: apollographql/apollo-ios +--- + + diff --git a/src/content/code/language-support/swift-objective-c-ios/client/graphaello.md b/src/content/code/language-support/swift-objective-c-ios/client/graphaello.md new file mode 100644 index 0000000000..27167b6e00 --- /dev/null +++ b/src/content/code/language-support/swift-objective-c-ios/client/graphaello.md @@ -0,0 +1,8 @@ +--- +name: Graphaello +description: A Tool for Writing Declarative, Type-Safe and Data-Driven Applications in SwiftUI using GraphQL and Apollo +url: https://github.com/nerdsupremacist/Graphaello +github: nerdsupremacist/Graphaello +--- + + diff --git a/src/content/code/language-support/swift-objective-c-ios/client/graphql-ios.md b/src/content/code/language-support/swift-objective-c-ios/client/graphql-ios.md new file mode 100644 index 0000000000..b4492cd232 --- /dev/null +++ b/src/content/code/language-support/swift-objective-c-ios/client/graphql-ios.md @@ -0,0 +1,8 @@ +--- +name: GraphQL iOS +description: An Objective-C GraphQL client for iOS. +url: https://github.com/funcompany/graphql-ios +github: funcompany/graphql-ios +--- + + diff --git a/src/content/code/language-support/swift-objective-c-ios/client/swift-graphql.md b/src/content/code/language-support/swift-objective-c-ios/client/swift-graphql.md new file mode 100644 index 0000000000..f6c4063245 --- /dev/null +++ b/src/content/code/language-support/swift-objective-c-ios/client/swift-graphql.md @@ -0,0 +1,49 @@ +--- +name: SwiftGraphQL +description: A GraphQL client that lets you forget about GraphQL. +url: https://github.com/maticzav/swift-graphql +github: maticzav/swift-graphql +--- + + +SwiftGraphQL is a Swift code generator and a lightweight GraphQL client. It lets you create queries using Swift, and guarantees that every query you create is valid. + +The library is centered around three core principles: + +🚀 If your project compiles, your queries work. +🦉 Use Swift in favour of GraphQL wherever possible. +🌳 Your application model should be independent of your schema. + +Here's a short preview of the SwiftGraphQL code + +```swift +import SwiftGraphQL + +// Define a Swift model. +struct Human: Identifiable { + let id: String + let name: String + let homePlanet: String? +} + +// Create a selection. +let human = Selection.Human { + Human( + id: try $0.id(), + name: try $0.name(), + homePlanet: try $0.homePlanet() + ) +} + +// Construct a query. +let query = Selection.Query { + try $0.humans(human.list) +} + +// Perform the query. +send(query, to: "http://swift-graphql.heroku.com/") { result in + if let data = try? result.get() { + print(data) // [Human] + } +} +``` \ No newline at end of file diff --git a/src/content/code/language-support/swift-objective-c-ios/server/graphiti.md b/src/content/code/language-support/swift-objective-c-ios/server/graphiti.md new file mode 100644 index 0000000000..f6a51dd945 --- /dev/null +++ b/src/content/code/language-support/swift-objective-c-ios/server/graphiti.md @@ -0,0 +1,8 @@ +--- +name: Graphiti +description: Swift library for building GraphQL schemas/types fast, safely and easily. +url: https://github.com/GraphQLSwift/Graphiti +github: GraphQLSwift/Graphiti +--- + + diff --git a/src/content/code/language-support/swift-objective-c-ios/server/graphzahl.md b/src/content/code/language-support/swift-objective-c-ios/server/graphzahl.md new file mode 100644 index 0000000000..dfacfe38aa --- /dev/null +++ b/src/content/code/language-support/swift-objective-c-ios/server/graphzahl.md @@ -0,0 +1,8 @@ +--- +name: GraphZahl +description: Swift library for writing Declarative, Type-Safe GraphQL APIs with Zero Boilerplate. +url: https://github.com/nerdsupremacist/GraphZahl +github: nerdsupremacist/GraphZahl +--- + + diff --git a/src/content/code/services/altair.md b/src/content/code/services/altair.md new file mode 100644 index 0000000000..979bb1bf9e --- /dev/null +++ b/src/content/code/services/altair.md @@ -0,0 +1,7 @@ +--- +name: Altair +description: An alternative to Postman that supports editing GraphQL queries directly and autoload your GraphQL schema. +url: https://altair.sirmuel.design/ +--- + + diff --git a/src/content/code/services/apollo-graph-manager.md b/src/content/code/services/apollo-graph-manager.md new file mode 100644 index 0000000000..d0283fd22f --- /dev/null +++ b/src/content/code/services/apollo-graph-manager.md @@ -0,0 +1,7 @@ +--- +name: Apollo Graph Manager +description: A cloud service for monitoring the performance and usage of your GraphQL backend. +url: https://engine.apollographql.com +--- + + diff --git a/src/content/code/services/aws-appsync.md b/src/content/code/services/aws-appsync.md new file mode 100644 index 0000000000..21fc42ae78 --- /dev/null +++ b/src/content/code/services/aws-appsync.md @@ -0,0 +1,7 @@ +--- +name: AWS AppSync +description: Fully managed GraphQL service with realtime subscriptions, offline programming & synchronization, and enterprise security features as well as fine grained authorization controls. +url: https://aws.amazon.com/appsync/ +--- + + diff --git a/src/content/code/services/elide.md b/src/content/code/services/elide.md new file mode 100644 index 0000000000..64ef631169 --- /dev/null +++ b/src/content/code/services/elide.md @@ -0,0 +1,7 @@ +--- +name: Elide +description: A Java library that can expose a JPA annotated data model as a GraphQL service over any relational database. +url: https://elide.io +--- + + diff --git a/src/content/code/services/faunadb.md b/src/content/code/services/faunadb.md new file mode 100644 index 0000000000..decd136ab3 --- /dev/null +++ b/src/content/code/services/faunadb.md @@ -0,0 +1,7 @@ +--- +name: FaunaDB +description: Create an instant GraphQL backend by importing a gql schema. The database will create relations and indexes for you, so you'll be ready to query in seconds, without writing any database code. Serverless pricing, free to get started. +url: https://docs.fauna.com/fauna/current/graphql +--- + + diff --git a/src/content/code/services/graphcms.md b/src/content/code/services/graphcms.md new file mode 100644 index 0000000000..5ae71b45d8 --- /dev/null +++ b/src/content/code/services/graphcms.md @@ -0,0 +1,7 @@ +--- +name: GraphCMS +description: A BaaS (Backend as a Service) that sets you up with a GraphQL backend as well as tools for content editors to work with the stored data. +url: https://graphcms.com/ +--- + + diff --git a/src/content/code/services/hasura.md b/src/content/code/services/hasura.md new file mode 100644 index 0000000000..dc72b4317f --- /dev/null +++ b/src/content/code/services/hasura.md @@ -0,0 +1,8 @@ +--- +name: Hasura +description: Hasura connects to your databases & microservices and instantly gives you a production-ready GraphQL API. +url: https://hasura.io +github: hasura/graphql-engine +--- + + diff --git a/src/content/code/services/lexascms.md b/src/content/code/services/lexascms.md new file mode 100644 index 0000000000..10907871c5 --- /dev/null +++ b/src/content/code/services/lexascms.md @@ -0,0 +1,7 @@ +--- +name: LexasCMS +description: A headless CMS (Content Management System) that combines powerful content personalisation and scheduling capabilities with a modern content editing experience and a blazing fast GraphQL/REST content delivery API. +url: https://www.lexascms.com +--- + + diff --git a/src/content/code/services/moesif-api-analytics.md b/src/content/code/services/moesif-api-analytics.md new file mode 100644 index 0000000000..3c903be90d --- /dev/null +++ b/src/content/code/services/moesif-api-analytics.md @@ -0,0 +1,7 @@ +--- +name: Moesif API Analytics +description: A GraphQL analaytics and monitoring Service to find functional and performance issues. +url: https://www.moesif.com/features/graphql-analytics +--- + + diff --git a/src/content/code/services/postman.md b/src/content/code/services/postman.md new file mode 100644 index 0000000000..749a1b49e7 --- /dev/null +++ b/src/content/code/services/postman.md @@ -0,0 +1,7 @@ +--- +name: Postman +description: An HTTP Client that supports editing GraphQL queries. +url: https://learning.postman.com/docs/sending-requests/supported-api-frameworks/graphql/ +--- + + diff --git a/src/content/code/services/prisma.md b/src/content/code/services/prisma.md new file mode 100644 index 0000000000..a01d88d797 --- /dev/null +++ b/src/content/code/services/prisma.md @@ -0,0 +1,8 @@ +--- +name: Prisma +description: A BaaS (Backend as a Service) providing a GraphQL backend for your applications with a powerful web ui for managing your database and stored data. +url: https://www.prisma.io +github: prisma/prisma +--- + + diff --git a/src/content/code/services/tipe.md b/src/content/code/services/tipe.md new file mode 100644 index 0000000000..eca017351a --- /dev/null +++ b/src/content/code/services/tipe.md @@ -0,0 +1,8 @@ +--- +name: Tipe +description: A SaaS (Software as a Service) content management system that allows you to create your content with powerful editing tools and access it from anywhere with a GraphQL or REST API. +url: https://tipe.io +github: tipeio/tipe +--- + + diff --git a/src/content/code/slug-map.json b/src/content/code/slug-map.json new file mode 100644 index 0000000000..a4895135eb --- /dev/null +++ b/src/content/code/slug-map.json @@ -0,0 +1,30 @@ +{ + "c-c": "C / C++", + "c-net": "C# / .NET", + "clojure": "Clojure", + "d": "D", + "elixir": "Elixir", + "elm": "Elm", + "erlang": "Erlang", + "flutter": "Flutter", + "go": "Go", + "groovy": "Groovy", + "haskell": "Haskell", + "java-kotlin-android": "Java / Kotlin", + "javascript": "JavaScript", + "julia": "Julia", + "perl": "Perl", + "php": "PHP", + "python": "Python", + "r": "R", + "ruby": "Ruby", + "rust": "Rust", + "scala": "Scala", + "ocaml-reason": "OCaml / Reason", + "swift-objective-c-ios": "Swift / Objective-C", + "language-support": "Language Support", + "client": "Client", + "server": "Server", + "tools": "Tools", + "services": "Services" +} diff --git a/src/content/code/tools/graphql-code-generator.md b/src/content/code/tools/graphql-code-generator.md new file mode 100644 index 0000000000..ac5bf4fed5 --- /dev/null +++ b/src/content/code/tools/graphql-code-generator.md @@ -0,0 +1,9 @@ +--- +name: GraphQL Code Generator +description: GraphQL code generator with flexible support for custom plugins and templates like Typescript (frontend and backend), React Hooks, resolvers signatures and more. +url: https://graphql-code-generator.com +github: dotansimha/graphql-code-generator +npm: "@graphql-codegen/cli" +--- + + diff --git a/src/content/code/tools/quicktype.md b/src/content/code/tools/quicktype.md new file mode 100644 index 0000000000..e5278b2798 --- /dev/null +++ b/src/content/code/tools/quicktype.md @@ -0,0 +1,9 @@ +--- +name: quicktype +description: Generate types for GraphQL queries in TypeScript, Swift, golang, C#, C++, and more. +url: https://quicktype.io/ +github: quicktype/quicktype +npm: "quicktype" +--- + + diff --git a/src/content/code/tools/schemathesis.md b/src/content/code/tools/schemathesis.md new file mode 100644 index 0000000000..19cc336747 --- /dev/null +++ b/src/content/code/tools/schemathesis.md @@ -0,0 +1,37 @@ +--- +name: Schemathesis +description: A modern API testing tool for web applications built with Open API and GraphQL specifications. +url: https://github.com/schemathesis/schemathesis +github: schemathesis/schemathesis +--- + +Install Schemathesis via `pip`: + +```bash +pip install schemathesis +``` + +Then, create a file `test_api.py` with the content below and replace the `URL` value with your own GraphQL endpoint URL: + +```python +from hypothesis import settings +import schemathesis + +URL = "https://your.app.com/graphql" +schema = schemathesis.graphql.from_url(http://github.com/URL) + +@schema.parametrize() +@settings(deadline=None) +def test_api(case): + response = case.call() + case.validate_response(response) +``` + +Then run `pytest test_api.py`. Note that you can write your app in any programming language; the tool will communicate with it over HTTP. + +Schemathesis will generate valid queries automatically based on the schema and will minimize failing cases. +For example, running the code above against `https://bahnql.herokuapp.com/graphql` uncovers that running the `{ search(searchTerm: "") { stations { name } } }` query leads to a server error: + +``` +{"errors":[{"message":"Cannot read property \'city\' of undefined","locations":[{"line":1,"column":28}],"path":["search","stations"]}],"data":null} +``` diff --git a/src/content/community/Community-Developers.md b/src/content/community/Community-Developers.md new file mode 100644 index 0000000000..16240f28de --- /dev/null +++ b/src/content/community/Community-Developers.md @@ -0,0 +1,86 @@ +--- +title: GraphQL for Developers +layout: docs +category: Community +permalink: /community/developers/ +next: /community/project-resources/ +sublinks: How GraphQL is developed,Participating in development,GraphQL project governance +--- + +The following resources are intended to describe how GraphQL development processes work, how to get involved, and where to get help. + +## Essential links + +* The [GraphQL Specification](https://spec.graphql.org) +* GraphQL [reference implementations and tools](/code/) +* The official [GraphQL GitHub org](https://github.com/graphql) +* The official [GraphQL Slack](https://slack.graphql.org) +* Instructions on how to sign the [GraphQL Specification Membership Agreement](https://github.com/graphql/graphql-wg/tree/HEAD/membership) +* The [GraphQL project calendar](https://calendar.graphql.org) +* Meeting replays on the [GraphQL YouTube channel](https://youtube.graphql.org) + +## How GraphQL is developed + +At its core, the GraphQL project is organized around the [specification](https://spec.graphql.org), with a wide variety of supporting implementations and tools. + +GraphQL has an active and mutually beneficial relationship with its many implementations. The GraphQL specification is continuously evolving under the care of the [GraphQL Working Group](https://github.com/graphql/graphql-wg), which consists of GraphQL spec experts, contributors to public [reference implementations](/code/), and implementers. At any given time, GraphQL specification updates are a combination of anticipatory planning with documentation of patterns and behaviors that are already proven in production, sometimes at very large scale. + +### Working groups + +The GraphQL specification, sub-specifications, and official reference implementations are developed using the working group model. The working groups meet monthly or as-needed in order to review ideas and plan their work. + +#### The GraphQL Working Group + +The [GraphQL Working Group](https://github.com/graphql/graphql-wg) is the main group that plans and implements changes to the [GraphQL specification](https://spec.graphql.org). It meets actively and is the default place for discussion for topics which do not have a separate breakout working group (breakout working groups include the [Input Union WG](https://github.com/graphql/graphql-spec/blob/main/rfcs/InputUnion.md) and the [GraphQL-over-HTTP WG](https://github.com/graphql/graphql-over-http)). + +* **GitHub**: [github.com/graphql/graphql-wg](https://github.com/graphql/graphql-wg) +* **Meeting frequency:** Monthly, generally the first Thursday ([calendar](https://calendar.graphql.org)) +* **Agenda:** [GitHub](https://github.com/graphql/graphql-wg/tree/main/agendas) +* **Recordings:** [YouTube](https://www.youtube.com/playlist?list=PLP1igyLx8foH30_sDnEZnxV_8pYW3SDtb) + +#### GraphQL.js Working Group + +The [GraphQL.js Working Group](https://github.com/graphql/graphql-js-wg) works on one of the main reference implementations, [graphql.js](https://github.com/graphql/graphql-js). + +* **GitHub**: [github.com/graphql/graphql-js-wg](https://github.com/graphql/graphql-wg) +* **Meeting frequency:** Monthly, generally the last Wednedsay ([calendar](https://calendar.graphql.org)) +* **Agenda:** [GitHub](https://github.com/graphql/graphql-js-wg/tree/main/agendas) +* **Recordings:** [YouTube](https://www.youtube.com/playlist?list=PLP1igyLx8foHghwopNuQM7weyP5jR147I) + +If you would like to set up a working group around a specific topic, please join a [GraphQL Working Group meeting](https://github.com/graphql/graphql-wg) and present your idea. + +## Participating in development + +GraphQL is developed in the open, through [GitHub](https://github.com/graphql) and working group meetings that are open for anyone to attend (so long as they are covered under the [free membership agreement](https://github.com/graphql/graphql-wg/tree/HEAD/membership)). In addition, anybody is welcome to view the [recordings of our meetings on YouTube](https://youtube.graphql.org) + +### First steps + +If you want to get involved in GraphQL, add yourself to the meeting agenda for one of our [working groups or implementations](https://github.com/graphql/graphql-wg/blob/main/GraphQL-TSC.md#about-the-graphql-specification-project), sign the document if you haven't already, and show up! Or, if you prefer, just open a PR against our projects as this will also initiate the spec membership signature process. + +We welcome your participation! + +### Getting up to speed + +All of our work [happens in the open](https://github.com/graphql). In addition, we record our workgroups' meetings on [YouTube](https://youtube.graphql.org). If you are interested in quickly getting up to speed on what's happening in a working group, the meeting minutes and [replays](https://youtube.graphql.org) are a great place to begin. + +### Asking questions + +The best place to ask a development-related question is in a working group meeting, or by opening a GitHub issue. Please note that if you have an implementation question, you may get a faster answer by [asking in one of the channels more geared toward users](/community/users/#where-to-ask-questions). + +## GraphQL project governance + +GraphQL was open sourced by Facebook in 2015, and became a neutrally governed project managed by the Linux Foundation in 2019. In keeping with best practices, the technical governance of the GraphQL project is separate and distinct from the financial and policy governance of the [GraphQL Foundation](/foundation/). + +### Technical governance + +The GraphQL project is a chartered under the [Joint Development Foundation](https://www.jointdevelopment.org/) (JDF). JDF is a part of the Linux Foundation family, and is an organization specifically dedicated to making open standards easier to manage. + +The GraphQL specification, the GraphQL Working Group, and all other sub-working groups and implementations in the [GraphQL GitHub organization](https://github.com/graphql) are governed by the [GraphQL project charter](https://technical-charter.graphql.org). + +The [Technical Steering Committee](https://github.com/graphql/graphql-wg/blob/main/GraphQL-TSC.md), or TSC, is established in the [technical charter](https://technical-charter.graphql.org) as the top technical decision-making body. It consists of [representatives from the GraphQL technical community](https://github.com/graphql/graphql-wg/blob/main/GraphQL-TSC.md#tsc-voting-members) and is responsible for overseeing specification and development work, and approving new releases. TSC members serve a two-year term. + +### Financial and policy governance + +The [GraphQL Foundation](/foundation/) provides financial support for the GraphQL project. In keeping with best practices, the Foundation is a separate organization, which helps to ensure that technical decisions are made upon their own merit and independent of financial contributions. The GraphQL Foundation uses the funds raised through [membership dues](/foundation/join/) to support the work of the GraphQL Project through investments in infrastructure, coordination support services, developer grants, and mentorship programs. + +The [GraphQL Foundation](/foundation/) is supported entirely by [membership dues](/foundation/join/), from [companies](/foundation/members/) who wish to support the long-term sustainability of the GraphQL ecosystem. diff --git a/src/content/community/Community-RunningProjects.md b/src/content/community/Community-RunningProjects.md new file mode 100644 index 0000000000..354468a667 --- /dev/null +++ b/src/content/community/Community-RunningProjects.md @@ -0,0 +1,79 @@ +--- +title: Project resources +layout: docs +category: Community +permalink: /community/project-resources/ +next: /community/upcoming-events/ +sublinks: Types of GraphQL projects,Running project meetings,Resources for projects +--- + +The following resources are intended to help official GraphQL projects understand what resources are available to them, and how to correctly run meetings.. + +## Types of GraphQL projects + +The GraphQL community is incredibly broad, with a large number of reference implementations which are developed and evolving in parallel to the GraphQL project. Many of them are listed [here](/code/). + +The primary distinction between official GraphQL projects and other implementations is that GraphQL projects are managed under the [GraphQL technical charter](https://technical-charter.graphql.org) and [GraphQL Code of Conduct](https://code-of-conduct.graphql.org). + +We welcome and encourage community members and third-parties to maintain their own implementations. + +> ### Making an independent project official +> +> If you maintain a tool or reference implementation that you'd like to transfer to the [GraphQL GitHub org](https://github.com/graphql), or if you are planning to start a new workgroup or implementation within the official GraphQL project, please add your name to the agenda of an upcoming [GraphQL Working Group meeting](https://github.com/graphql/graphql-wg/tree/HEAD/agendas) to introduce your idea. +> +> Should your proposal meet with approval, a few things will then need to happen. For example, we will work with you to adopt our policies and neutral governance, and help you transfer the project and its assets (generally the domain name and any trademarks) so that they are neutrally held at the Linux Foundation. If you'd like to explore the idea before making a proposal, please reach out to [operations@graphql.org](mailto:operations@graphql.org) + + +## Running project meetings + +Because GraphQL is a [Joint Development Foundation](https://www.jointdevelopment.org/) project, all meeting participants and contributors must complete the GraphQL specification membership agreement prior to participating. + +Each **technical meeting** must: + +* Have an agenda Markdown document in the project repo published at least a week before the call. +* Have an "Attendees" section where people can open a PR and add their own names in advance. +* Optional, but encouraged: Use the GraphQL Zoom account so that we can easily post the meeting recording to [YouTube](https://youtube.graphql.org). + +Each **attendee** must: + +* Add their name to the agenda prior to the meeting. +* Pass the EasyCLA check by signing the agreement as an individual, or asking their company to add them to the list. + +The **person running the call** must: + +* Merge all appropriate attendance and agenda PRs with passing checks prior to the meeting. +* Verify that everyone who connects to the meeting appears on the list. +* If someone joins who is not on the list, they need to disconnect until they can PR themselves onto the attendee list with all checks passing. +* Notify all attendees the meeting is being recorded, and record to the cloud. +* Keep minutes, or have a volunteer to write them. Minutes should be published to the project repo. + + +## Resources for projects + +### Zoom + +Official GraphQL projects and workgroups are welcome and encouraged to use the GraphQL zoom. Please contact [operations@graphql.org](mailto:operations@graphql.org) to get the credentials. + +### GitHub + +Official GraphQL projects can host their repos in the [graphql organization](https://github.com/graphql). This includes code repos, spec repos, and workgroup coordination repos. Please contact [operations@graphql.org](mailto:operations@graphql.org) for details. + +### YouTube playlist + +Wherever possible, we record meetings and post them to a playlist on the [GraphQL YouTube channel](https://youtube.graphql.org). If your project does not have a playlist, please contact [operations@graphql.org](mailto:operations@graphql.org) and we can set you up. + +### GraphQL calendar + +Project meetings should be added to the [GraphQL calendar](https://calendar.graphql.org), so that people can easily find them. + +### GraphQL domain registration and DNS management + +The Linux Foundation holds the top-level graphql.org domain, and a number of others. If you need to register a domain for your project (particularly if it includes the word "graphql") or need to manage DNS for a registered domain, please contact [operations@graphql.org](mailto:operations@graphql.org). + +### Trademark guidance + +The GraphQL trademark is managed by LF Projects. GraphQL projects are able to use the GraphQL name and marks in accordance with the [trademark policy](https://lfprojects.org/policies/trademark-policy/). If your project has questions about how you or others can use the mark, please contact [trademark@graphql.org](mailto:trademark@graphql.org). + +### All other questions + +If you have a question not covered here, please reach out to [operations@graphql.org](mailto:operations@graphql.org). diff --git a/src/content/community/Community-Users.md b/src/content/community/Community-Users.md new file mode 100644 index 0000000000..2e40a6dc55 --- /dev/null +++ b/src/content/community/Community-Users.md @@ -0,0 +1,126 @@ +--- +title: GraphQL for Users +layout: docs +category: Community +permalink: /community/users/ +next: /community/developers/ +sublinks: Training courses,Where to ask questions,Blogs,Videos,Books,More resources +--- + +The following resources are intended to help users and implementers. Find something useful? Please add it to the list! + +*Please note that the GraphQL Foundation does not provide support or services, and cannot recommend one vendor's product over another.* + +## Training courses + +A number of GraphQL training courses are available. + +* [Exploring GraphQL: A Query Language For APIs](https://www.edx.org/course/exploring-graphql-a-query-language-for-apis): A free 7 week edX course, developed by [Linux Foundation Training](https://training.linuxfoundation.org) +* [How to GraphQL](https://www.howtographql.com): The Fullstack Tutorial for GraphQL + +## Where to ask questions + +### Stack Overflow + +Many members of the community use Stack Overflow to ask and answer questions. If you're running into an implementation issue or having trouble with a query, this is the best place to start. + +[Read through the existing questions tagged with **graphql** or ask your own!](http://stackoverflow.com/questions/tagged/graphql) + +### Slack, Discord, and IRC + +Many GraphQL developers idle in Discord, Slack, and IRC for live +communication and can answer quick questions. + +Please be patient and polite. These are not explicitly user support channels, although they're likely a good place to find someone who can answer your question if you ask nicely. + +* **Slack:** [#general on the GraphQL Slack](https://graphql.slack.com/messages/general/) [(Get an invite)](https://graphql-slack.herokuapp.com/) +* **IRC:** [#graphql on freenode](https://freenode.net/) + +#### Discord + +* [Everything GraphQL: Curated By The Guild](https://discord.gg/xud7bH9) +* [#graphql on the ReactiFlux Discord](http://join.reactiflux.com/) + +### Vendor channels + +The following channels are maintained by vendors, and may be a good place to find help on their products. + +* [Apollo Slack](http://apollostack.com/#slack) +* [Graphile Discord](https://discord.gg/graphile) +* [Prisma Slack](https://slack.prisma.io/) + +## Blogs + +Here are a list of notable blog posts to help you better understand GraphQL: + +- [GraphQL: A data query language](/blog/graphql-a-query-language/) - Lee Byron +- [Subscriptions in GraphQL and Relay](/blog/subscriptions-in-graphql-and-relay/) - Dan Schafer and Laney Kuenzel +- [Mocking your server is easy with GraphQL](/blog/mocking-with-graphql/) - Jonas Helfer +- [Wrapping a REST API in GraphQL](/blog/rest-api-graphql-wrapper/) - Steven Luscher +- [Leaving technical preview](/blog/production-ready/) - Lee Byron +- [Relicensing the GraphQL specification](https://medium.com/@leeb/relicensing-the-graphql-specification-e7d07a52301b) - Lee Byron +- [GraphQL Introduction](https://facebook.github.io/react/blog/2015/05/01/graphql-introduction.html) - Nick Schrock +- [From REST to GraphQL](https://0x2a.sh/from-rest-to-graphql-b4e95e94c26b#.tag7nzkrb) - Jacob Gillespie +- [GraphQL Explained](https://medium.com/apollo-stack/graphql-explained-5844742f195e#.zdykxos6i) - Jonas Helfer +- [GraphQL Concepts Visualized](https://medium.com/apollo-stack/the-concepts-of-graphql-bc68bd819be3#.hfczgtdsj) - Dhaivat Pandya +- [Building the f8 App: Using GraphQL & Relay](http://makeitopen.com/docs/en/1-A2-relay.html) +- [Your First GraphQL Server](https://medium.com/the-graphqlhub/your-first-graphql-server-3c766ab4f0a2#.ovn0y19k4) - Clay Allsopp +- [Tutorial: Kick start a JS API with Apollo-server, Dataloader and Knex](https://bamtech.gitbook.io/dev-standards/backend/graphql-js/getting-started-with-apollo-server-dataloader-knex.mo) - Thomas Pucci +- [Tutorial: How to Build a GraphQL Server](https://medium.com/apollo-stack/tutorial-building-a-graphql-server-cddaa023c035#.bu6sdnst4) - Jonas Helfer +- [Designing Powerful APIs with GraphQL Query Parameters](https://www.graph.cool/docs/tutorials/designing-powerful-apis-with-graphql-query-parameters-aing7uech3/) - Johannes Schickling +- [GraphQL and the amazing Apollo Client](https://medium.com/google-developer-experts/graphql-and-the-amazing-apollo-client-fe57e162a70c) - Gerard Sans +- [GraphQL Server Basics (Part I): The Schema](https://blog.graph.cool/graphql-server-basics-the-schema-ac5e2950214e) - Nikolas Burk +- [GraphQL Server Basics (Part II): The Network Layer](https://blog.graph.cool/graphql-server-basics-the-network-layer-51d97d21861) - Nikolas Burk +- [GraphQL Server Basics (Part III): Demystifying the `info` argument in GraphQL resolvers](https://blog.graph.cool/graphql-server-basics-demystifying-the-info-argument-in-graphql-resolvers-6f26249f613a) - Nikolas Burk +- [A Beginner’s Guide to GraphQL](https://www.freecodecamp.org/news/a-beginners-guide-to-graphql-86f849ce1bec/) - Leonardo Maldonado +- [Architecture of a high performance GraphQL to SQL engine](https://blog.hasura.io/architecture-of-a-high-performance-graphql-to-sql-server-58d9944b8a87) - Hasura + +## Videos + +Developers inside and outside of Facebook have given talks about GraphQL at conferences and meetups around the world. Here are some of our favorites: + +- [Exploring GraphQL](https://www.youtube.com/watch?v=WQLzZf34FJ8) - Lee Byron, React Europe 2015 +- [From Zero to GraphQL in 30 Minutes](https://www.youtube.com/watch?v=UBGzsb2UkeY) - Steve Luscher +- [Exploring GraphQL](https://www.youtube.com/watch?v=_9RgHXqH8J0) - Nick Schrock, @Scale 2015 +- [GraphQL Servers](https://www.youtube.com/watch?v=KOudxKJXsjc) - Nick Schrock, React Rally 2015 +- [GraphQL at Facebook](https://www.youtube.com/watch?v=etax3aEe2dA) - Dan Schafer, React Europe 2016 +- [GraphQL Source Code Overview](https://www.youtube.com/watch?v=IqtYr6RX32Q) - Lee Byron +- [GraphQL Future](https://www.youtube.com/watch?v=ViXL0YQnioU) - Lee Byron & Laney Kuenzel +- [Apollo Client: Put GraphQL Data in Your UI](https://www.youtube.com/watch?v=u1E0CbGeICo) - Sashko Stubailo +- [Relay 2 - simpler, faster, and more predictable](https://www.youtube.com/watch?v=OEfUBN9dAI8) - Greg Hurrell +- [Build a GraphQL server for Node.js, using PostgreSQL/MySQL](https://www.youtube.com/watch?v=DNPVqK_woRQ) - Lee Benson +- [A GraphQL Framework for Non-JS Servers](https://www.youtube.com/watch?v=RNoyPSrQyPs) - Syrus Akbary +- [Modernize Your Angular App with GraphQL](https://www.youtube.com/watch?v=E8feZBidZcs) - Uri Goldshtein, AngularCamp 2016 +- [GraphQL server tutorial for Node.js with SQL, MongoDB and REST ](https://www.youtube.com/watch?v=PHabPhgRUuU) - Jonas Helfer +- [Building Native Mobile Apps with GraphQL](https://www.youtube.com/watch?v=z5rz3saDPJ8) - Martjin Walraven, React Europe 2016 +- [GraphQL in native applications](https://atscaleconference.com/videos/graphql-in-native-applications-at-scale/) - Igor Canadi & Alex Langenfeld, @Scale 2016 +- [Build a GraphQL Backend with the Serverless Framework](https://acloud.guru/learn/serverless-with-graphql) - Ryan Brown +- [Build a Full GraphQL Backend in Under 5 Minutes](https://www.youtube.com/watch?v=bJ8pnYd6jPQ) - Michael Paris +- [GraphQL: From Zero to Scala](https://www.youtube.com/watch?v=6ttypoLyRaU) - Jérémie Astori, Northeast Scala Symposium 2017 +- [GraphQL in Production: Backend as a Service](https://www.youtube.com/watch?v=U2NKoStGBvE) - Michael Paris & Vince Ning, GraphQL in Production Meetup SF August 2016 +- [Development of real-time apps with GraphQL Node.js](https://youtu.be/yh_A6CEqsSM) - Vince Ning & Michael Paris, SF Node Meetup February 2017 +- [Unleashing the power of GraphQL using Angular 2](https://www.youtube.com/watch?v=VYpJ9pfugM8) - Gerard Sans, NG-BE 2016 +- [Webinar Series: GraphQL Around The World](https://graphql-world.com/webinar) - Vince Ning & Michael Paris +- [All Talks from GraphQL Europe](https://www.youtube.com/playlist?list=PLn2e1F9Rfr6n_WFm9fPE-_wYPrYvSTySt) - Lee Byron, Sashko Stubailo, Dan Schafer, Johannes Schickling and many more +- [Learning GraphQL with React and Relay](https://www.packtpub.com/application-development/learning-graphql-react-and-relay-video) by Divyendu Singh +- [Hands-on GraphQL for Better RESTful Web Services (Video)](https://www.packtpub.com/application-development/hands-graphql-better-restful-web-services-video) by Ashwin Hegde +- [A PostgreSQL backed GraphQL BaaS](https://www.youtube.com/watch?v=neIZcc8y3B0) by Tanmai Gopal + +## Books + +- [The GraphQL Guide](https://graphql.guide) by John Resig and Loren Sands-Ramshaw +- [Learning GraphQL](https://www.amazon.com/Learning-GraphQL-Declarative-Fetching-Modern/dp/1492030716/) by Eve Porcello and Alex Banks +- [Fullstack GraphQL](https://www.graphql.college/fullstack-graphql) by Julian Mayorga +- [Craft GraphQL APIs in Elixir with Absinthe](https://pragprog.com/book/wwgraphql/craft-graphql-apis-in-elixir-with-absinthe) by Bruce Williams and Ben Wilson +- [Learning GraphQL and Relay](https://www.packtpub.com/web-development/learning-graphql-and-relay) by Samer Buna +- [Hands-on Full-Stack Web Development with GraphQL and React](https://www.packtpub.com/web-development/hands-full-stack-web-development-graphql-and-react) by Sebastian Grebe +- [The Road to GraphQL](https://www.robinwieruch.de/the-road-to-graphql-book/) by Robin Wieruch +- [Production Ready GraphQL](https://book.productionreadygraphql.com/) by Marc-Andre Giroux + +## More Resources + +To explore other community-developed resources and content about GraphQL, take a look at these sites: + +- [Building Apollo](https://blog.apollographql.com) +- [awesome-graphql](https://github.com/chentsulin/awesome-graphql): A fantastic community maintained collection of libraries, resources, and more. +- [graphql-apis](https://github.com/APIs-guru/graphql-apis): A collective list of public GraphQL APIs. diff --git a/src/content/faq/BestPractices.md b/src/content/faq/BestPractices.md new file mode 100644 index 0000000000..c01e0e6a78 --- /dev/null +++ b/src/content/faq/BestPractices.md @@ -0,0 +1,60 @@ +--- +title: Best Practices +layout: faq +permalink: /faq/best-practices +position: 3 +--- + +### Is GraphQL scalable? + +Yes, GraphQL is designed to be scalable and is used by many companies in production under a very high load. + +GraphQL comes with some [built-in performance boosts](#how-does-graphql-affect-my-product-s-performance) that can help. But once you push it to production, you're responsible for scaling it across instances and monitoring performance. + +### Does GraphQL support offline usage? + +No, or at least not natively. But there are [GraphQL clients](#what-is-a-graphql-client-and-why-would-i-need-one) that enable you to build offline-first. They use features designed to perform data operations while offline, such as caching and service workers. + +You can find a list of GraphQL clients in various languages on our [Code page](/code/). + +### What are the security concerns with GraphQL? + +Most of the security concerns associated with GraphQL are typical for any API or service. A few examples: SQL injections, Denial of Service (DoS) attacks, or someone abusing flawed authentication. But there are also some attacks specific to GraphQL. For instance, [batching attacks](https://cheatsheetseries.owasp.org/cheatsheets/GraphQL_Cheat_Sheet.html#batching-attacks). These attacks can happen as a result of GraphQL allowing you to batch multiple queries (or requests for multiple object instances) in a single network call. + +No matter the concern, it’s important to be proactive. There are many ways to securing your GraphQL server. Using a timeout, setting a maximum depth for queries, and throttling queries based on the server time it needs to complete are all potential approaches. + +For an overview of common security concerns and how to address them, check out the [Security tutorial on How to GraphQL](https://www.howtographql.com/advanced/4-security/) and [OWASP’s GraphQL Cheat Sheet](https://cheatsheetseries.owasp.org/cheatsheets/GraphQL_Cheat_Sheet.html). + +### How can I set up authorization with GraphQL? + +We recommend enforcing authorization behavior in the [business logic layer](/learn/thinking-in-graphs/#business-logic-layer). That way, you have a single source of truth for authorization. + +For a more detailed explanation, go to our [Authorization documentation](/learn/authorization/). + +### How does authentication work with GraphQL? + +You can implement authentication with common patterns, such as [OAuth](https://oauth.net/) or [JWT](https://jwt.io/). There’s nothing special about authentication within the GraphQL specification. + +Some [GraphQL libraries](/code/#language-support) include a specific protocol for authentication as well. Although if you’re working with a pipeline model, we recommend that [GraphQL be placed after all authentication middleware](/learn/serving-over-http/#web-request-pipeline). + +If you’re using [GraphQL.js](/graphql-js/) to build your API server, we have documentation on [handling authentication with Express middleware](/graphql-js/authentication-and-express-middleware/). + +### Is GraphQL the right fit for designing a microservice architecture? + +Yes, it can be. If you’re integrating GraphQL into your microservice architecture, we’d recommend having one GraphQL schema as an API gateway rather than having your client talk to multiple GraphQL services. This way, you can split your backend into microservices, but then still aggregate all your data to the frontend from a single API. + +There are many ways to create an API gateway. The benefit of using GraphQL is that you can take advantage of features like [caching](/learn/caching/), request budgeting, and planning out query schedules. + +### How does versioning work in GraphQL? + +There’s nothing that will prevent a GraphQL service from being versioned like any other REST API. That said, GraphQL avoids versioning by design. + +Instead, GraphQL provides the tools to continually build and evolve your schema. For example, GraphQL only returns the data that’s explicitly requested. This means that you can add new features (and all the associated types and fields) without creating a breaking change or bloating results for existing queries. + +You can read more about [how versioning works in GraphQL](/learn/best-practices/#versioning) in our Best Practices section. + +### How can I document my GraphQL API? + +One of the benefits of GraphQL is that it's inherently self-documenting. This means that when you use an interactive tool like [GraphiQL](https://github.com/graphql/graphiql), you’re able to explore what data is exposed by your GraphQL API. This includes the [fields](/learn/queries/#fields), [types](/learn/schema/#type-system), and more. You can also add a [description field](https://spec.graphql.org/draft/#sec-Documentation) to provide supplementary notes about your endpoint. This description field supports strings and Markdown. + +For many, this provides enough API reference documentation. But it doesn’t reduce the need for other forms of documentation. You'll likely still need to create guides that explain how the general concepts tie into your specific use case. \ No newline at end of file diff --git a/src/content/faq/Foundation.md b/src/content/faq/Foundation.md new file mode 100644 index 0000000000..d33d3f696c --- /dev/null +++ b/src/content/faq/Foundation.md @@ -0,0 +1,54 @@ +--- +title: GraphQL Foundation +layout: faq +permalink: /faq/graphql-foundation +position: 6 +--- + +### What does the GraphQL Foundation do? + +The primary responsibility of the Foundation is to set policy and allocate the budget to maximize the sustainability of the GraphQL community. Members participate on a governing board that meets monthly and decides how to allocate its funding. + +### Where does the funding go when I become a member? + +The GraphQL Foundation is funded exclusively through the support of our members. The governing board sets an annual budget to use the dues to the maximum benefit of the community. +Ways the Foundation distributes the money raised through memberships include: + +* Providing grants and sponsorship to core community developers who are working in neutral roles. +* Funding core community IT infrastructure. +* Funding coordination, financial, and legal support programs for the Foundation and the GraphQL project ecosystem. +* Other community and developer support programs. + +The GraphQL Foundation budget is realigned as the needs of the community change. + +### How are decisions made? + +As with other Linux Foundation projects, the governing board makes decisions through votes. Every vote is equal and no members have special voting rights or privileges. The charter currently limits the governing board to 25 members. + +### Who can join the GraphQL Foundation? + +GraphQL Foundation membership is open to companies who wish to support the GraphQL ecosystem. As the GraphQL Foundation is hosted at the [Linux Foundation](https://linuxfoundation.org), members must also join the Linux Foundation. + +### Do I need to join the Foundation to participate in GraphQL development? + +No, Foundation membership is separate from the technical development community. There is no cost to participate in GraphQL development, although you must sign the [free GraphQL Specification membership agreement](https://github.com/graphql/graphql-wg/tree/main/membership) in order to participate. These two things are different from each other. + +Members join the Foundation in order to provide essential funding and participate in the decisions on how it is used. Developers join the GraphQL Specification in order to contribute ideas, code, and other content. Many companies do both. + +### How do I participate in technical development? + +We would love to have you! The best place to get started is the [GraphQL Working Group](https://github.com/graphql/graphql-wg/tree/HEAD/membership), which meets monthly. Open a PR to add yourself to the agenda, and you are welcome to join. + +Otherwise, you can get involved in [any of our other projects](https://github.com/graphql/graphql-wg/blob/main/GraphQL-TSC.md#about-the-graphql-specification-project). + +### Who founded the organization? + +The GraphQL Foundation was founded by Apollo, AWS, Butterfly Network, Dgraph Labs, Facebook, Gatsby, GraphZen, Hasura, IBM, Intuit, Neo4j, Novvum, Pipefy, Salsify, Solo.io and Thicit. + +### Who is currently a member? + +You can learn more about our membership on the [GraphQL Foundation membership page](/foundation/members/). + +### How do we join? + +You can become a member of GraphQL Foundation and the Linux Foundation by completing our [membership application form](https://join.graphql.org). diff --git a/src/content/faq/Frontend.md b/src/content/faq/Frontend.md new file mode 100644 index 0000000000..ce7d9d805c --- /dev/null +++ b/src/content/faq/Frontend.md @@ -0,0 +1,12 @@ +--- +title: Frontend +layout: faq +permalink: /faq/frontend +position: 5 +--- + +### Does GraphQL replace Redux or other state management libraries? + +No, GraphQL isn’t a state management library - but it can reduce the need for one. + +One benefit of state management libraries like Redux is that they can manipulate API responses into a format that your application understands. With GraphQL, you have control over [what data you request](/learn/queries/#fields) and typically results are formatted in a client-friendly way by the graph design. So this benefit is already built-in. Many [client libraries](#what-is-a-graphql-client-and-why-would-i-need-one) can also be used to manage state and have features like caching built-in. You may still decide to implement a state management library, but using it to format response data is generally not necessary. \ No newline at end of file diff --git a/src/content/faq/General.md b/src/content/faq/General.md new file mode 100644 index 0000000000..3ac038d0d0 --- /dev/null +++ b/src/content/faq/General.md @@ -0,0 +1,58 @@ +--- +title: General +layout: faq +permalink: /faq/general +position: 2 +--- + +### Is GraphQL frontend or backend? + +Both. GraphQL specifies how you can [exchange information between client and server](https://www.howtographql.com/basics/3-big-picture/). This includes how the server can indicate [what data and operations are available](/learn/introspection/), how the client should [format requests](/learn/queries/), how the server should [execute these queries](/learn/execution/), and what the client will [receive in response](/learn/serving-over-http/#response). + +### Does GraphQL use HTTP? + +Yes, [GraphQL is typically served over HTTP](/learn/best-practices/#http). This is largely due to how pervasive the HTTP protocol is in our industry. But it helps that you can try out GraphQL by creating [a single HTTP request](#why-should-i-use-graphql). Guidelines for setting up a GraphQL server to operate over HTTP are available in our [Serving over HTTP](/learn/serving-over-http/) documentation. + +While HTTP is the most common choice for client-server protocol, it’s not the only one. GraphQL is agnostic to the transport layer. So, for example, you could use [WebSockets](https://developer.mozilla.org/en-US/docs/Web/API/WebSockets_API) for GraphQL subscriptions instead of HTTP to consume realtime data. + +### How does GraphQL affect my product’s performance? + +On a typical GraphQL backend, every field on every type has a focused, single-purpose function for resolving that value. Also, instead of trying to handle data batching on the client, [GraphQL moves that logic to the server](/learn/best-practices/#server-side-batching-caching). As a result, there are some inherent performance benefits. Minimizing over-fetching and making [fewer roundtrips to the server](/learn/queries/#fields) are two of them. + +Other performance factors should be considered when building out your GraphQL implementation. For example, it’s possible for a GraphQL service to be ‘chatty’ and repeatedly load data from your database. This is commonly solved by [implementing a batching technique](/learn/best-practices/#server-side-batching-caching) or [utilizing a tool like DataLoader](https://github.com/graphql/dataloader). + +### What is a GraphQL client and why would I use one? + +GraphQL clients can help you handle [queries, mutations,](/learn/queries/) and [subscriptions](https://spec.graphql.org/draft/#sec-Subscription) to a [GraphQL server](https://www.howtographql.com/advanced/1-server/). They use the underlying structure of a GraphQL API to automate certain processes. This includes batching, UI updates, build-time schema validation, and more. + +A list of GraphQL clients in various languages is available on our [Code page](/code/). There’s also an [in-depth explanation of their benefits](https://www.howtographql.com/advanced/0-clients/) on How To GraphQL. + +You don't need a specific client to work with GraphQL, though. You might want to start out by [issuing GraphQL results with a regular HTTP client](/learn/serving-over-http/). Then later switch to a GraphQL-optimized client as your application grows in complexity. + +### Does GraphQL replace ORMs? + +No, GraphQL is a specification typically used for remote client-server communications. It's [agnostic to the data source(s) used](#is-graphql-a-database-language-like-sql) and doesn’t implement an object-relational mapping technique. But there are ORMs built specifically for GraphQL. A few of those are listed under the [Services section of our Code page](/code/#services). + +### Is GraphQL owned by Facebook? + +No, GraphQL is governed by the [GraphQL Foundation](#what-is-the-graphql-foundation). + +That said, the specification was originally developed at Facebook and [Facebook is a member](https://foundation.graphql.org/members/) of the GraphQL Foundation. You might notice that some of our [GitHub repositories](https://github.com/graphql/) still have the license listed under Facebook Inc. We're updating those and have already converted major projects, like [GraphiQL](https://github.com/graphql/graphiql/blob/main/LICENSE) and [DataLoader](https://github.com/graphql/dataloader/blob/master/LICENSE), to the the new copyright: "Copyright (c) 2020 GraphQL Contributors." + +### Who is behind GraphQL? + +Many people! The [GraphQL specification and all related projects](http://github.com/graphql/) are open source, so anyone is welcome to [contribute](#how-can-i-contribute-to-the-specification). That said, there is a structure in place behind the repositories. This exists to resolve conflicts within the community and guiding technical decisions. + +The [GraphQL Foundation](#what-is-the-graphql-foundation) provides most of the oversight for GraphQL. It's made up of [representatives from dozens of different companies](https://foundation.graphql.org/members/). + +There are also monthly virtual [GraphQL Working Group (WG)](https://github.com/graphql/graphql-wg) meetings managed by the GraphQL Foundation. These meetings are designed to bring together maintainers of commonly used GraphQL libraries and tools, as well as significant contributors to the GraphQL community. The WG meetings are completely open. Anyone is able to join and [propose items to the agenda](https://github.com/graphql/graphql-wg/blob/main/agendas/). + +In the [November 2020 WG meeting](https://www.youtube.com/watch?v=UybZp9O24Ow), it was announced that GraphQL will have a Technical Steering Committee (TSC) going forward. More on that coming soon. + +If this is confusing, don’t worry - there’s a lot going on. To get a more visual, high-level overview, check out the [GraphQL Landscape](https://landscape.graphql.org/). + +### What is the GraphQL Foundation? + +The [GraphQL Foundation](https://foundation.graphql.org/faq/) is a neutral foundation that provides governance for GraphQL. This includes vendor-neutral oversight of open-source repositories, funding, events, and more. It's hosted under the [Linux Foundation](https://www.linuxfoundation.org/) and consists of [representatives from dozens of different companies](https://foundation.graphql.org/members/). The idea is that it’s an impartial and open home for the GraphQL community. + +You can find out more by visiting [foundation.graphql.org](https://foundation.graphql.org/). diff --git a/src/content/faq/GettingStarted.md b/src/content/faq/GettingStarted.md new file mode 100644 index 0000000000..1c9628ce8e --- /dev/null +++ b/src/content/faq/GettingStarted.md @@ -0,0 +1,50 @@ +--- +title: Getting Started +layout: faq +permalink: /faq/getting-started +position: 1 +--- + +### Why should I use GraphQL? + +It depends on your use case, but in general, GraphQL has a few key features that stand out. For example, GraphQL enables you to: + +* Aggregate data from [multiple UI components](/learn/queries/#fragments). +* Create a representation of your data that feels familiar and natural ([a graph](/learn/thinking-in-graphs/#it-s-graphs-all-the-way-down)). +* Ensure that all of your data is [statically typed](/learn/schema/) and these types inform [what queries the schema supports](/learn/introspection/). +* [Reduce the need for breaking changes](/learn/best-practices/#versioning), but utilize a [built-in mechanism for deprecations](https://spec.graphql.org/draft/#sec-Deprecation) when you need to. +* Access to a [powerful tooling ecosystem](/code/#generic-tools) with GUIs, editor integrations, code generation, linting, analytics, and more. + +[Our homepage](/) outlines even more reasons to use GraphQL. + +You can try out GraphQL without rewriting your entire application. For instance, starting with a single HTTP request that wraps an existing REST call. Your [GraphQL schema](/learn/thinking-in-graphs/#shared-language) and [business domain model](/learn/thinking-in-graphs/#business-logic-layer) can expand gradually. We recommend focusing on one use case at first and only building the part of the schema needed for that. + +### Does GraphQL replace REST? + +No, not necessarily. They both handle APIs and can [serve similar purposes](/learn/thinking-in-graphs/#business-logic-layer) from a business perspective. GraphQL is often considered an alternative to REST, but it’s not a definitive replacement. + +GraphQL and REST can actually co-exist in your stack. For example, you can abstract REST APIs behind a [GraphQL server](https://www.howtographql.com/advanced/1-server/). This can be done by masking your REST endpoint into a GraphQL endpoint using [root resolvers](/learn/execution/#root-fields-resolvers). + +For an opinionated perspective on how GraphQL compares to REST, check out [How To GraphQL](https://www.howtographql.com/basics/1-graphql-is-the-better-rest/). + +### Is GraphQL a database language like SQL? + +No, but this is a common misconception. + +GraphQL is a specification typically used for remote client-server communications. Unlike SQL, GraphQL is agnostic to the data source(s) used to retrieve data and persist changes. Accessing and manipulating data is performed with arbitrary functions called [resolvers](/learn/execution/). GraphQL coordinates and aggregates the data from these resolver functions, then returns the result to the client. Generally, these resolver functions should delegate to a [business logic layer](/learn/thinking-in-graphs/#business-logic-layer) responsible for communicating with the various underlying data sources. These data sources could be remote APIs, databases, [local cache](/learn/caching/), and nearly anything else your programming language can access. + +For more information on how to get GraphQL to interact with your database, check out our [documentation on resolvers](/learn/execution/#root-fields-resolvers). + +### How can I learn GraphQL? + +There are many resources available to help you learn GraphQL, including this website. In [our documentation](/learn/), you’ll find a series of articles that explain essential GraphQL concepts and how they work. Our [Community page](/community) is full of resources to reference and groups to join. + +For more practical guides, visit the [How to GraphQL](https://www.howtographql.com/) fullstack tutorial website. We also have a free online course with edX, [Exploring GraphQL: A Query Language for APIs](https://www.edx.org/course/exploring-graphql-a-query-language-for-apis). + +Before you start your learning journey, make sure you know [what an API is](https://www.codenewbie.org/blogs/an-intro-to-apis) and how communication generally works between client and server. + +### Is GraphQL only for React or JavaScript developers? + +No, not at all. [GraphQL is a specification](https://spec.graphql.org/) that can be [implemented in any language](/learn/schema/#type-language). Our [Code page](/code/) contains a long list of libraries in many different programming languages to help with that. + +It’s understandable why you’d think this, though. GraphQL was introduced at a [React conference](https://www.youtube.com/watch?v=9sc8Pyc51uU) and [GraphQL.js](/graphql-js/) is one of the most widely used implementations to date. We know this can be confusing, so we’re working to improve our documentation and add more code samples that aren’t written in JavaScript. \ No newline at end of file diff --git a/src/content/faq/Specification.md b/src/content/faq/Specification.md new file mode 100644 index 0000000000..4a21c82964 --- /dev/null +++ b/src/content/faq/Specification.md @@ -0,0 +1,32 @@ +--- +title: Specification +layout: faq +permalink: /faq/specification +position: 4 +--- + +### What is the best way to follow specification releases? + +The latest working draft release of the GraphQL specification can be found at [spec.graphql.org/draft](https://spec.graphql.org/draft/). Previous editions are also available at permalinks that match their [release tag](https://github.com/graphql/graphql-spec/releases). + +The entire process behind each release is open source. You can monitor specification proposals by following [pull requests in the graphql-spec repository](https://github.com/graphql/graphql-spec/pulls). You can also watch past GraphQL Working Group discussions about various proposals on [YouTube](https://www.youtube.com/channel/UCERcwLeheOXp_u61jEXxHMA). + +### How can I contribute to the GraphQL specification? + +GraphQL is still evolving and contributions are very welcome! The specification (including the [latest working draft](https://spec.graphql.org/)) is open source. [Contributor guidelines](https://github.com/graphql/graphql-spec/blob/main/CONTRIBUTING.md) are available on GitHub. + +There are more ways to get involved with GraphQL beyond the specification though. Updating the content on [this website and the documentation](https://github.com/graphql/graphql.github.io), for example. Or contributing to [graphql-js](https://github.com/graphql/graphql-js), [express-graphql](https://github.com/graphql/express-graphql), [GraphiQL](https://github.com/graphql/graphiql), or [one of the many other projects](https://github.com/graphql/) maintained by the [GraphQL Foundation](#what-is-the-graphql-foundation). + +### What is GraphQL Specification membership? + +The [GraphQL Specification](https://specification.graphql.org) and the associated reference implementations are a Joint Development Foundation project (also part of the Linux Foundation family). Individual or corporate contributors sign a document at no cost that they agree their contributions are under the open source licenses of the project. Because this is not GraphQL Foundation membership, specification members do not decide how to spend the budget. + +To sign the [GraphQL Specification membership document](https://github.com/graphql/graphql-wg/tree/HEAD/membership), open a PR against any [GraphQL repo on GitHub](https://github.com/graphql). + +If your organization uses and benefits from GraphQL, please consider becoming a member of both by opening a PR on behalf of your company and [joining the GraphQL Foundation](https://join.graphql.org). + +### Where is the documentation for subscriptions? + +It's not on this website yet, but we're working on it. If you'd like to help write guides on subscriptions, please [let us know](https://github.com/graphql/graphql.github.io/issues/993). + +For now, the specification includes details for [how to write and execute subscriptions](https://spec.graphql.org/draft/#sec-Subscription). diff --git a/src/content/foundation/About.md b/src/content/foundation/About.md new file mode 100644 index 0000000000..7ff55a183e --- /dev/null +++ b/src/content/foundation/About.md @@ -0,0 +1,35 @@ +--- +title: What is the GraphQL Foundation? +sidebarTitle: About the Foundation +heroText: An open and neutral home for the GraphQL community, dedicated to promoting widespread adoption and accelerating development of the surrounding ecosystem +layout: foundation +category: GraphQL Foundation +permalink: /foundation/ +next: /foundation/annual-reports/ +--- + +The **GraphQL Foundation** is a neutral foundation founded by global technology and application development companies. The GraphQL Foundation encourages contributions, stewardship, and a shared investment from a broad group in vendor-neutral events, documentation, tools, and support for GraphQL. + +GraphQL was created in 2012 and open sourced by Facebook in 2015. In 2019, Facebook and others [created the GraphQL Foundation](https://foundation.graphql.org/news/2019/03/12/the-graphql-foundation-announces-collaboration-with-the-joint-development-foundation-to-drive-open-source-and-open-standards/) as a neutral, non-profit home for the GraphQL assets and ongoing collaboration, and hosted by [The Linux Foundation](https://linuxfoundation.org). The GraphQL Foundation is a fully neutral home for the GraphQL trademark, and provides a means of collecting and distributing membership dues to support core community infrastructure and programs. + +## The GraphQL Foundation supports the community + +The primary mission of the GraphQL Foundation is to ensure that the GraphQL community is able to focus on the continued evolution of the [specification](https://spec.graphql.org) and [reference implementations](/code/). We accomplish this through a number of core activities: + +* Funding grants for project maintainers and community gardeners. +* Coordinating and funding mentorship programs. +* Providing collaboration infrastructure. +* Managing the GraphQL trademark and related policies. +* Providing legal support for projects. +* Operational and logistical support through The Linux Foundation. + +The GraphQL Foundation works in close collaboration with the [GraphQL Working Group](https://github.com/graphql/graphql-wg/) and the [GraphQL TSC](https://github.com/graphql/graphql-wg/blob/main/GraphQL-TSC.md). + +## Members support the GraphQL Foundation + +The GraphQL Foundation would like to thank [our current members](/foundation/members/) for their ongoing support to ensure the sustainability of the GraphQL ecosystem. Learn more about how your company can demonstrate its commitment to GraphQL by [becoming a member of the GraphQL Foundation](https://graphql.org/foundation/join). + + +If you have questions, you can reach out to [membership@graphql.org](mailto:membership@graphql.org). + + diff --git a/src/content/foundation/AnnualReports.md b/src/content/foundation/AnnualReports.md new file mode 100644 index 0000000000..ebd6f238ad --- /dev/null +++ b/src/content/foundation/AnnualReports.md @@ -0,0 +1,20 @@ +--- +title: Annual Reports +sidebarTitle: Annual Reports +heroText: Reflecting upon our accomplishments, anticipating our future +layout: foundation +category: GraphQL Foundation +permalink: /foundation/annual-reports/ +next: /foundation/contact/ +--- + +The GraphQL annual reports are a celebration of the ongoing work happening in the GraphQL technical community, the GraphQL Foundation, and our members. + +If you have an item you'd like to add to the annual report, please contact [operations@graphql.org](mailto:operations@graphql.org). + +## 2019 + +The GraphQL Foundation was founded in 2019, to support and sustain the GraphQL ecosystem. We had a busy first year! + +[Read the 2019 Annual Report »](/foundation/annual-reports/2019/) + diff --git a/src/content/foundation/Contact.md b/src/content/foundation/Contact.md new file mode 100644 index 0000000000..0770c50e65 --- /dev/null +++ b/src/content/foundation/Contact.md @@ -0,0 +1,48 @@ +--- +title: Contact the GraphQL Foundation +sidebarTitle: Contact us +heroText: The GraphQL Foundation is here to help. +layout: foundation +category: GraphQL Foundation +permalink: /foundation/contact/ +sublinks: Membership Inquriries,Membership Support,Meeting Logistics,Media Inquries,Technical Issues,General +next: /foundation/join/ +--- + +The GraphQL Foundation is supported by staff from [The Linux Foundation](https://linuxfoundation.org). If you have questions, please reach out to us using the links below. + +*Please note that we do not provide user support for GraphQL. If you have an implementation question, +please use the [relevant community channels](/community/).* + +## Membership Inquiries + +If you would like to learn more about becoming a GraphQL member, please email +[membership@graphql.org](mailto:membership@graphql.org). + +## Membership Support + +If you are already a member of the [GraphQL Foundation](/foundation/) and you need help with your membership, please reach out to [operations@graphql.org](mailto:operations@graphql.org). + +## Meeting Logistics + +Governing board and Working Group members who need help with meeting logistics (setting up a Zoom conference, adding or changing a calendar entry, designating an alternate representative, etc.) can reach out to [operations@graphql.org](mailto:operations@graphql.org) with their request. + +## Media Inquiries + +For media inquiries, please reach out to [pr@graphql.org](mailto:pr@graphql.org). + +## Technical Issues + +To report a technical issue with GraphQL, please use the [community channels](/community/). + +## General + +For all other inquiries, please email [info@graphql.org](mailto:info@graphql.org). + +Our mailing address is: + +> **GraphQL Foundation** +> 548 Market St +> PMB 57274 +> San Francisco, California +> 94104-5401 US diff --git a/src/content/foundation/Join.md b/src/content/foundation/Join.md new file mode 100644 index 0000000000..da7a00108f --- /dev/null +++ b/src/content/foundation/Join.md @@ -0,0 +1,97 @@ +--- +title: Become a Member +sidebarTitle: Join GraphQL +heroText: GraphQL Foundation members demonstrate their commitment to the ecosystem by providing essential financial support. +layout: foundation +category: GraphQL Foundation +permalink: /foundation/join/ +sublinks: GraphQL Specification,GraphQL Foundation +next: /foundation/members/ +--- + +There are two primary ways to support the ongoing development and success of GraphQL. + +* Developers can [join the GraphQL Specification](#the-graphql-specification), enabling them to contribute code, time, and talent to GraphQL technical projects. This is free for companies and individuals. + +* Organizations can [join the GraphQL Foundation](#the-graphql-foundation), which is the non-profit that supports the sustainability of the GraphQL community. This is accomplished through annual membership fees, which are allocated by the Governing Board for the benefit of the GraphQL ecosystem. + +If you have a question about which membership is right for you, please reach out to [membership@graphql.org](mailto:membership@graphql.org). + +--- + +## GraphQL Specification + +The GraphQL Specification and its related tools and libraries are developed under the Joint Development Foundation, a non-profit organization focused on open standards that is part of The Linux Foundation family. + +Membership in the GraphQL Specification is free, and is required for all who participate in the development process. This includes direct contributions to the specification, participation in meetings and discussions, and contributions to reference implementations and tooling. Joining is simple and straightforward, and all are welcome as members. + +*Please note that you or your employer must sign a specification membership before you can join GraphQL calls and participate in the technical development process.* + +### [Corporate specification membership](https://corporate-spec-membership.graphql.org) + +If you are planning to work on GraphQL for your employer, please ask an appropriate person to complete the corporate GraphQL Specification Membership application. ([preview](https://preview-spec-membership.graphql.org)) + +To join, please open a PR against a GraphQL repo ([instructions](https://corporate-spec-membership.graphql.org)). + +### [Individual specification membership](https://individual-spec-membership.graphql.org) + +If you are planning to work on GraphQL as an individual or if you are a student, please complete the individual GraphQL Specification Membership application. ([preview](https://preview-spec-membership.graphql.org)) + +To join, please open a PR against a GraphQL repo ([instructions](https://individual-spec-membership.graphql.org)). + +*Please note: If your employer has already signed a specification membership agreement, you do not need to sign a separate agreement as an individual. If your organization is a member of the GraphQL Foundation, you will still need a valid GraphQL Specification membership in order to contribute.* + +--- + +## GraphQL Foundation + +The GraphQL Foundation is a member-supported, non-profit organization whose mission is to support the long-term health and viability of the [GraphQL ecosystem](https://graphql.org). The GraphQL Foundation is hosted by [The Linux Foundation](https://linuxfoundation.org), the 501(c)6 non-profit home of Linux and many other open source collaborative projects. + +The GraphQL Foundation is entirely supported by [end-users, vendors, service providers, and consultants](/foundation/members) who recognize the importance of ensuring the long-term viability of neutral, collaborative development. The GraphQL Foundation is funded through participation fees, which are allocated by the governing board in ways that benefit the development community. + +### Benefits of membership + +The GraphQL Foundation Governing Board is responsible for setting high-level policy and allocating the GraphQL Foundation budget in ways that benefit the technical community. + +The first 20 members of the GraphQL Foundation participate as voting members of the Governing Board. Any additional members vote to select up to five additional seats. + +### How to join + +To [join the GraphQL Foundation](https://join.graphql.org), organizations become a member of the Linux Foundation and sign the GraphQL Foundation participation agreement. The GraphQL Foundation annual fee is received into a fund managed by the GraphQL Foundation Governing Board. + +* [Preview the Linux Foundation membership application »](/files/LF_Membership-Preview.pdf) +* [Preview the GraphQL Foundation participation agreement »](/files/GraphQL_Foundation-Participation_Agreement-Preview.pdf) + +GraphQL Foundation membership fees and Linux Foundation Silver Membership dues are adjusted according to an organization's number of full-time employees. + +### [GraphQL Foundation Membership](https://join.graphql.org) + +Organization size | Cost +:-----------------|:---- +General (5,000+) | $20,000 +General (2,000 to 4,999) | $10,000 +General (50 to 1,999) | $5,000 +General (Up to 49) | $2,000 + +To join, please complete the [membership application](https://join.graphql.org). + +### [Linux Foundation Membership](https://join.graphql.org) + +Organization size | Cost +:-----------------|:---- +Platinum | $500,000 +Gold | $100,000 +Silver (5,000+) | $20,000 +Silver (500 to 4,999) | $15,000 +Silver (100 to 499) | $10,000 +Silver (Up to 99) | $5,000 + +To join, please complete the [membership application](https://join.graphql.org). + +The GraphQL Foundation and the Linux Foundation also offer a no-cost associate membership for pre-approved non-profits, open source projects, and government entities. To learn more about Associate membership, please email [membership@graphql.org](mailto:membership@graphql.org). + +### Support the GraphQL Foundation + +To become a member and demonstrate your organization's support of GraphQL, please [complete the membership application](https://join.graphql.org). + +If you have questions or issues, please email [membership@graphql.org](mailto:membership@graphql.org). diff --git a/src/content/foundation/annual-report/2019.md b/src/content/foundation/annual-report/2019.md new file mode 100644 index 0000000000..e80eb9b163 --- /dev/null +++ b/src/content/foundation/annual-report/2019.md @@ -0,0 +1,289 @@ +--- +title: 2019 Annual Report +sidebarTitle: '2019' +heroText: 2019 Annual Report +layout: foundation +category: Annual Reports +permalink: /foundation/annual-reports/2019/ +next: /foundation/annual-reports/ +date: 2020-04-02 +--- + +The GraphQL Foundation is a neutral foundation founded by global technology and application development companies. The GraphQL Foundation encourages contributions, stewardship, and a shared investment from a broad group in vendor-neutral events, documentation, tools, and support for GraphQL. + +The GraphQL Foundation was formed in March 2019 and has now completed one full year of operation. We are pleased to present this annual report detailing the many things we have accomplished in support of this fast growing and broadly adopted platform. + +Comments and feedback are welcome at [info@graphql.org](mailto:info@graphql.org). + +> "The growth behind the technology and the community supporting GraphQL has been incredible. The GraphQL Foundation has played a critical role in helping to make GraphQL a neutral industry standard and enabling widespread adoption by encouraging contributions, and creating shared tools, and resources." +> +> – _**Lee Byron**, Executive Director, GraphQL Foundation, and GraphQL Co-Creator_ + +## A BUSY YEAR FOR GRAPHQL + +* [Who we are](#who-we-are) +* [Cultivating Projects](#cultivating-projects) +* [Growing membership](#growing-membership) +* [Growing The Graphql End User Community](#growing-the-graphql-end-user-community) +* [How Do I Get Involved?](#how-do-i-get-involved) +* [Events 2019](#events-2019) + * [Attendee Feedback](#attendee-feedback) +* [Community Updates](#community-updates) + * [Why Our Members Use GraphQL](#why-our-members-use-graphql) + * [How Our Members Are Using GraphQL](#how-our-members-are-using-graphql) + * [Member Contributions to the GraphQL Ecosystem](#member-contributions-to-the-graphql-ecosystem) + * [Publications From Our Members](#publications-from-our-members) + * [Talks, Papers, and Discussions on GraphQL](#talks-papers-and-discussions-on-graphql) +* [Training](#training) +* [Community Engagement](#community-engagement) +* [GraphQL Landscape](#graphql-landscape) +* [Devstats](#devstats) +* [A Look Ahead to 2020](#a-look-ahead-to-2020) + +## WHO WE ARE + +The [GraphQL Foundation](/) is a neutral foundation created by the founders of [GraphQL](https://graphql.org), along with many organizations who are using GraphQL in production. The GraphQL Foundation encourages contributions, stewardship, and a shared investment by providing vendor-neutral events, documentation, tools, and support for GraphQL. + + +## CULTIVATING PROJECTS + +The GraphQL Foundation hosts the [GraphQL specification](https://github.com/graphql/graphql-spec), [GraphQL.js](https://github.com/graphql/graphql-js) reference implementation, [DataLoader](https://github.com/graphql/dataloader) library, and [GraphiQL](https://github.com/graphql/graphiql) developer tool. + +GraphQL is a next­-generation API technology developed internally by Facebook in 2012 before being publicly [open sourced in 2015](https://code.fb.com/core-data/graphql-a-data-query-language/). Unlike REST-­based APIs, which take advantage of HTTP and existing protocols, GraphQL APIs provide developers with the flexibility to query the exact data they need from a diverse set of cloud data sources, with less code, greater performance and security, and a faster development cycle. Not only does this enable developers to rapidly build top­ quality apps, it also helps them achieve consistency and feature parity across multiple platforms such as web, iOS, Android, and embedded and IoT applications. + +The GraphQL Foundation also funded community member Ivan Goncharov to work through a variety of GraphQL project issues, from backlog cleanup and more. + +## GROWING MEMBERSHIP + +The GraphQL Foundation +[launched](/news/2019/03/12/the-graphql-foundation-announces-collaboration-with-the-joint-development-foundation-to-drive-open-source-and-open-standards/) with 10 [members](/foundation/members/) and we wrapped the year with 21 members in total, including Apollo, AWS, Butterfly Network, Dgraph Labs, Facebook, Gatsby, GraphZen, Hasura, IBM, Intuit, Neo4j, Novvum, Pipefy, Salsify, Solo.io and more. [Join](/join/) your industry peers in helping to shape the GraphQL ecosystem. + +
Lee presenting
+ +Organizations interested in becoming members of the GraphQL Foundation or the GraphQL Specification can learn more on our [new member page](/join). If you have questions about membership, please send an email to membership@graphql.org. + +## GROWING THE GRAPHQL END USER COMMUNITY + +We offer multiple opportunities for end users to contribute and have their voices heard. Companies that use GraphQL technologies internally, but do not sell any GraphQL services externally, are eligible to join the end user community. + +Our end user community is growing and we finished 2019 with 83 top companies and startups that are committed to accelerating the adoption of GraphQL and improving the developer experience. Please email us for more information at membership@graphql.org. + +## HOW DO I GET INVOLVED? + +GraphQL is first and foremost an open source project, and developers can contribute to the project at [https://github.com/graphql](https://github.com/graphql). Organizations interested in becoming members of the GraphQL Foundation or participating in development of the GraphQL Specification can learn more on our [new member page](/join). If you have questions about membership, please send an email to [membership@graphql.org](mailto:membership@graphql.org). + +## EVENTS 2019 + +In addition to multiple community events, GraphQL Summit 2019 was held in San Francisco, and GraphQL Asia 2019 was held in Bangalore. + +### ATTENDEE FEEDBACK + +
+
+
+ + + +
+ +## COMMUNITY UPDATES + +The GraphQL community is fortunate to have an active and engaged group of companies participating in the GraphQL Foundation. + +### WHY OUR MEMBERS USE GRAPHQL + +
Apollo GraphQL logo
+ +"GraphQL is a transformative technology that saves time and money for every team building rich, user-centric applications. **Apollo** is proud to play a central role in its rapid rise and maturation in 2019. Apollo’s industry-leading open source and cloud services power many of the world’s most significant online properties, including Expedia, Airbnb, PayPal, The New York Times, SurveyMonkey and thousands more. Apollo also hosts the world’s largest event dedicated to this technology - GraphQL Summit - which in 2019 featured more than 1,200 attendees and over 60 technical talks from some of the world’s most recognizable brands that are already benefiting from GraphQL." + +
AWS logo
+ +"Collaborating with the Open Source community is always special; it has allowed **AWS** to improve and better understand the use cases that customers want to tackle, such as local mocking and testing. In order to move fast and ensure that we were releasing a valuable feature, we worked for several months with community members. We want to give a special thanks to Conduit Ventures for their significant contributions to the new Amplify local mocking environment." + +
Expedia Group logo
+ +"GraphQL has been a huge accelerator for how **Expedia Group's** web application and service teams build APIs. Being part of the open source community is a priority for us in how we contribute back and learn from others on the same journey." + +
Hasura logo
+ +"GraphQL is a rare technology that simultaneously improves the communication between _machines_ and between _humans!_ Data becomes easier to explore and consume for humans and GraphQL's spec driven design allows the creation of tools that can automate complex tasks around data fetching on the server and data management on the client. **Hasura's** flagship GraphQL engine automates complex data access work while giving API consumers an API they love using!" + +
IBM logo
+ +"**IBM** is pleased to be an active member of the Linux Foundation's GraphQL project by participating on its technical working group and as a founding member of its Governing Board. IBM continued its commitment to innovating on key open technologies such as GraphQL in 2019." + +
Novvum logo
+ +"At **Novvum**, our team is tiny, but we try to contribute to the foundation and open source community whenever possible. A few projects that come to mind are graphql-playground, graphql-weekly, graphql-birdseye, and the graphql edX course. GraphQL enables teams to focus on their bottom line and less on the nuances of software development. It provides the freedom necessary for frontend devs, UI/UX designers, content marketers, etc. to make incredible stuff without compromising the safety, flexibility, and stability desired by backend teams. It's come a long way since the early days. We are not surprised to see so many big named companies adopting it today." + +
PayPal logo
+ +"GraphQL has been a complete game changer in the way **PayPal** thinks about data, fetch data and build applications." + +
Salsify logo
+ +"**Salsify** provides a commerce and content platform that enables the world's largest brands to deliver engaging product experiences across the digital shelf. Our GraphQL powered APIs enable us to support a diverse set of integrated use cases on an extensible microservices platform architecture with great developer ergonomics and excellent performance." + +--- + +### HOW OUR MEMBERS ARE USING GRAPHQL + +
Expedia Group logo
+ +**Expedia Group** continues to rapidly adopt GraphQL. Over the last 2 years we have transitioned our REST APIs to GraphQL – and now over 90% of all customer interactions in web and native[vrbo.com](http://vrbo.com/) apps are powered by GraphQL APIs and over 30% of all customer interactions on Expedia.com as well as other brands such as Hotels.com. + +
Facebook logo
+ +**Facebook** has used GraphQL to power our production mobile apps for the last 7.5 years, from its creation as an internal API in 2012 to its open sourcing in 2015 and beyond. In 2020, we’re as invested in the community and the technology as ever — we’re [discussing our approach to streaming semantics with the GraphQL working group](https://github.com/graphql/graphql-wg/issues/329), and we’re [powering the new Facebook.com with GraphQL and Relay](https://developers.facebook.com/videos/2019/building-the-new-facebookcom-with-react-graphql-and-relay/). + +
Novvum logo
+ +**Novvum** had been deploying graphql into production for the majority of our customers since its inception back in 2015. On any project, we find it extremely beneficial to add GraphQL as the primary communication layer between clients and the data that they need. From building car-sharing platforms on a time crunch to architecting fintech infrastructure to scaffolding MVPs for early-stage startups, we've observed many short- and long-term benefits by introducing GraphQL. + +
PayPal logo
+ +**PayPal** uses GraphQL to power many of our products and user experiences including PayPal Checkout, our flagship product that facilitates payments for millions of merchants and users. + +--- + +### MEMBER CONTRIBUTIONS TO THE GRAPHQL ECOSYSTEM + +Our members have been active and engaged participants in the GraphQL ecosystem. Here are some of the ways in which our ecosystem has been enriched through their participation. + +
Apollo GraphQL logo
+ +* **[Apollo Graph Manager](https://www.apollographql.com/docs/graph-manager/):** Tools and services for teams collaborating on a data graph, including a central schema registry, data graph analytics, workflows for developing and maintaining agile schemas, and machinery for managing graph security and policy and operations. +* **[Federation](https://www.apollographql.com/docs/apollo-server/federation/introduction/):** An open specification for composing multiple GraphQL services into a single data graph. The specification has been widely supported by the GraphQL community, with JavaScript, Kotlin, Java, Go, Python, Ruby, and PHP servers all adopting the federation programming model. +* **[Apollo Client](https://www.apollographql.com/docs/react/v3.0-beta):** The industry’s most popular open-source library for connecting application UI to a GraphQL service. The upcoming Apollo Client 3, currently in beta, introduces a flexible data cache and brings many improvements to managing both local state and remote data. +* **[Apollo Server](https://www.apollographql.com/docs/apollo-server):** An open-source library for building a data graph in JavaScript that’s incrementally adoptable, production-ready, and compatible with any data source. Apollo Server defines the de-facto standard for GraphQL over HTTP and supports essential features for running GraphQL at scale such as federation, tracing, and caching. +* **[Apollo developer tooling](https://github.com/apollographql/apollo-tooling):** The Apollo tooling repository is home to several open-source GraphQL developer tools, including the Apollo CLI and VS Code extension. These tools connect to the Apollo registry, a central hub for managing your data graph, in order to provide workflows for an excellent developer experience. + +
Expedia Group logo
+ +* **[GraphQL Kotlin](https://github.com/ExpediaGroup/graphql-kotlin):** Continued work on GraphQL Kotlin libraries for running GraphQL Server, including code first-schema generation and a Spring Boot based Kotlin Graphql Server. This technology powers Expedia.com and its fleet of brands like Orbitz, Wotif, & Travelocity +* **[GraphQL Component](https://github.com/ExpediaGroup/graphql-component):** GraphQL Component is a modular graphql schema framework in javascript being utilized to build APIs for Vrbo travel and owner applications, as well as partner services and public APIs. + +
Hasura logo
+ +* **[GraphQL Engine](https://github.com/hasura/graphql-engine):** An open-source GraphQL engine for Postgres and other data sources. +* **[GraphQURL](https://github.com/hasura/graphqurl):** A command like utility like curl for GraphQL, with autocomplete and support for subscriptions. +* **[graphql-bench](https://github.com/hasura/graphql-bench):** A GraphQL benchmarking suite to make it easy for developers to test the performance of their GraphQL servers. +* **[learn-graphql](https://github.com/hasura/learn-graphql):** Open-source tutorials for almost all frontend application stacks to get started with GraphQL. + +
IBM logo
+ +* **[OpenAPI-to-GraphQL](https://github.com/IBM/openapi-to-graphql):** Released the open-source OpenAPI-to-GraphQL library, which generates GraphQL interfaces on top of existing REST APIs. IBM made numerous other contributions to the open source community. +* **[libgraphqlparser](https://github.com/graphql/libgraphqlparser):** Delivered improvements to the open source GraphQL C++ library +* **[Loopback 4 OpenAPI-to-GraphQL](https://loopback.io/doc/en/lb4/exposing-graphql-apis.html):** Released Loopback 4 "OpenAPI-to-GraphQL" module that creates a GraphQL wrapper for REST APIs which are described by an OpenAPI specification + +--- + +### PUBLICATIONS FROM OUR MEMBERS + +
Apollo GraphQL logo
+ +* [Principled GraphQL, best practices for creating, maintaining, and operating a data graph](https://principledgraphql.com/) +* [Fullstack GraphQL tutorial](https://www.apollographql.com/docs/tutorial/introduction/) + +
AWS logo
+ +* [Merging GraphQL schema files and more from the CLI](https://aws.amazon.com/blogs/mobile/merging-graphql-schema-files-and-more-with-the-cli/) +* [Developing and testing GraphQL APIs, Storage and Functions with Amplify Framework Local Mocking features](https://aws.amazon.com/blogs/mobile/amplify-framework-local-mocking/) +* [Amplify DataStore – Simplify Development of Offline Apps with GraphQL](https://aws.amazon.com/blogs/aws/amplify-datastore-simplify-development-of-offline-apps-with-graphql/) + +
Expedia Group logo
+ +* [The Architectural Principles Behind Vrbo’s GraphQL Implementation](https://medium.com/expedia-group-tech/graphql-component-architecture-principles-homeaway-ede8a58d6fde) + +
Hasura logo
+ +* [Architecture of a high performance GraphQL to SQL engine](https://hasura.io/blog/architecture-of-a-high-performance-graphql-to-sql-server-58d9944b8a87/) +* [Level up your serverless game with a GraphQL data-as-a-service layer](https://hasura.io/blog/level-up-your-serverless-game-with-a-graphql-data-as-a-service-layer/) +* [Fluent GraphQL clients: how to write queries like a boss](https://hasura.io/blog/fluent-graphql-clients-how-to-write-queries-like-a-boss/) + +
IBM logo
+ +* [An Empirical Study of GraphQL Schemas (at ICSOC conference)](https://arxiv.org/pdf/1907.13012.pdf) +* [An Empirical Study of GraphQL (blog)](https://medium.com/swlh/empirical-study-graphql-icsoc19-29038c48da5) +* [GraphQL API Management](https://www.ibm.com/blogs/research/2019/02/graphql-api-management) + +--- + +### TALKS, PAPERS, AND DISCUSSIONS ON GRAPHQL + +
Apollo GraphQL logo
+ +* [GraphQL Summit 2019 Keynote, by Matt DeBergalis](https://youtu.be/EDqw-sGVq3k) +* [Migrating to Apollo and GraphQL at Airbnb, by Brie Bunge](https://youtu.be/pywcFELoU8E) +* [The Architecture of Federation, by Jeff Hampton](https://youtu.be/LKQKn1oFXJU) +* [All GraphQL Summit 2019 talks](https://www.youtube.com/playlist?list=PLpi1lPB6opQyraZSmwFre_FpL00_3nTzV) + +
AWS logo
+ +* Co-organized the [GraphQL London Meetup group](https://www.meetup.com/GraphQL-London) +* Co-organized the [GraphQL San Francisco Meetup group](https://www.meetup.com/GraphQL-SF) +* [Archive of Meetup talks](https://www.youtube.com/c/GraphQLTalks). +* [Building modern APIs with GraphQL](https://www.youtube.com/watch?v=bRnu7xvU1_Y) + +
Expedia Group logo
+ +* [Creating a federated schema for a global company (GraphQL Summit)](https://www.youtube.com/watch?v=MuD3TAP0D9Y) + +
Hasura logo
+ +* [Accelerating product and data delivery with GraphQL](https://www.youtube.com/watch?v=znzdocyfZsc) +* [API management and governance for GraphQL](https://www.youtube.com/watch?v=ypEtjxVmgoI) +* [Building a high performance realtime GraphQL API on existing databases](https://www.youtube.com/watch?v=HOKMJkBYaqQ) + +
IBM logo
+ +* [GraphQL sessions at 2019 API Conference, Berlin](https://apiconference.net/)) +* Demonstrated GraphQL API Management in IBM API Connect and IBM DataPower® Gateway enabling determination of GraphQL query characteristics, advanced threat protection, customized rate limiting, and API plan configuration +* [Conducted IBM Developer Meetups where GraphQL work was highlighted in talks and technical demonstrations](https://www.meetup.com/ibmcodenyc/events/266535427/) + +## TRAINING + +The GraphQL Foundation is proud to offer a new, free course – [Exploring GraphQL: A Query Language for APIs](https://www.edx.org/course/introduction-to-graphql) – through [edX](https://www.edx.org/) which we have had thousands already sign up for. + +If you are a programmer, this course will help you gain the skills you need to get started using GraphQL for a small project, or professionally in production. We cover a variety of tools to address multiple use cases. + +If you are nontechnical, this course will help you communicate with developers and participate in conversations about GraphQL, and understand when and why to use GraphQL for a project. + +## COMMUNITY ENGAGEMENT + +Want to start a meetup? Drop us a line, we’d love to hear your idea: info@graphql.org. + +## GRAPHQL LANDSCAPE + +The [GraphQL Interactive Landscape](https://landscape.graphql.org/) was recently published by the GraphQL Foundation. + +![GraphQL Landscape](https://landscape.graphql.org/images/landscape.png) + +What is an interactive landscape? The concept started when the CNCF began the process of cataloging different types of tools for building out a cloud native architecture. This led to the creation of the CNCF Interactive Landscape. Turns out this tool became very helpful to all of us sorting out this new and exciting space. In the interest of providing a similar reference, the GraphQL Foundation defined their own version of the interactive landscape, including also adopters of GraphQL technology. + +The landscape is open source, and contributions from the community are welcomed. You can find guidelines for updating the landscape at: [https://github.com/graphql/graphql-landscape](https://github.com/graphql/graphql-landscape). + +## DEVSTATS + +The [DevStats](https://github.com/cncf/devstats) tool, which is open source, downloads data representing every public GitHub action across GraphQL Foundation projects and stores it in a queryable [Postgres](https://www.postgresql.org/) database. DevStats downloads updated data every hour and you can check out the tool here: [https://devstats.graphql.org](https://devstats.graphql.org/) + +## A LOOK AHEAD TO 2020 + +As the Executive Director of the GraphQL project, I hope I can speak for the whole community when I say we are looking forward to another productive year of GraphQL development. We are putting the final touches on the GraphQL 2020 spec release, and continue to make great progress developing new features, stabilizing existing ones, and exploring beyond core GraphQL. + +It has been really encouraging to see GraphQL continue to evolve over the past year as a technology and as a community. GraphQL is being used at scale by not only Facebook but now a great number of organizations large and small. As I said when first introducing the project, GraphQL is unapologetically driven by the needs of the client. This has been a critical aspect of GraphQL's success and it is great to see this principle reflect itself in our community, where those more interested in consuming APIs than producing them have come together to support the ongoing sustainability of the project. + +Since establishing the GraphQL Foundation, we've had an outpouring of support from these companies. This neutral, non-profit home for the GraphQL project has provided a healthy way for users, contributors, and supporters to collaborate and contribute funding in support of our programs and collaborative processes. For example, this support has enabled us to support long-time contributor Ivan Goncharov to focus on crucial development and maintenance of the reference implementation, specification and other community gardening work. It has also allowed us to launch a free GraphQL edX course, and has enabled us to take some first steps toward supporting and producing community events. + +Development of the GraphQL spec has remained open to all contributors. Over the last year we've brought more rigor and clarity to the development process. I've found it encouraging that contributions have been a healthy mix of aspirational new features and iterative improvements to the stable base. This demonstrates that GraphQL is evolving in meaningful ways to address exciting new use cases while also building confidence and stability around what thousands of companies use in production every day. Both of these are essential for GraphQL's long term success. + +Looking ahead, I have great optimism for GraphQL and see huge opportunities. First, we've been hard at work on the 2020 spec and that release is imminent. Spec development continues to accelerate and exciting advancements and improvements are underway for the 2021 release and beyond. Second, we have been accepted to participate in Google Summer of Code and are looking forward to adding these talented students as project collaborators. Third, the communities around the core GraphQL project are collaborating. For example, GraphiQL and Playground recently announced they will be joining efforts to build better tools for us all. + +Thank you again for your involvement in this project and your support of the GraphQL Foundation. I am pleased with our progress and am looking forward to another productive year. + +_– Lee Byron, Executive Director, GraphQL Foundation, and GraphQL Co-Creator_ + + + + + diff --git a/src/pages/blog.tsx b/src/pages/blog.tsx index 65b349e946..b6d553b727 100644 --- a/src/pages/blog.tsx +++ b/src/pages/blog.tsx @@ -4,7 +4,7 @@ import BlogPost from "../components/BlogPost" import BlogSidebar from "../components/BlogSidebar" import { graphql } from "gatsby" -export default ({ pageContext, data }) => { +export default ({ pageContext, data }: any) => { const posts = data.allMarkdownRemark.edges .map((e: any) => e.node) .sort((a: any, b: any) => { @@ -17,6 +17,7 @@ export default ({ pageContext, data }) => { } return 0 }) + return (
@@ -25,8 +26,16 @@ export default ({ pageContext, data }) => { {posts.map( ( { - frontmatter: { title, date, permalink, byline, guestBio }, + frontmatter: { + title, + date, + permalink, + byline, + guestBio, + tags, + }, rawMarkdownBody, + excerpt, }: any, i ) => ( @@ -39,6 +48,10 @@ export default ({ pageContext, data }) => { guestBio={guestBio} rawMarkdownBody={rawMarkdownBody} isPermalink={false} + pageContext={pageContext} + excerpt={excerpt} + showExcerpt + tags={tags} /> ) )} @@ -65,8 +78,10 @@ export const query = graphql` guestBio sublinks layout + tags } id + excerpt rawMarkdownBody } } diff --git a/src/pages/code.tsx b/src/pages/code.tsx new file mode 100644 index 0000000000..1b9e0ca9c0 --- /dev/null +++ b/src/pages/code.tsx @@ -0,0 +1,258 @@ +import { AnchorLink } from "gatsby-plugin-anchor-links" +import React, { useState } from "react" +import Layout from "../components/Layout" +import Marked from "../components/Marked" +import { toSlug } from "../utils/slug" + +export function buildLanguagesMenu(pageContext: any) { + return ( +
+ {pageContext.languageList.map(({ name: languageName }) => { + const slug = toSlug(languageName) + return ( + + {languageName} + + ) + })} +
+ ) +} + +export function buildLibraryContent(library: any, pageContext: any) { + const [ overflown, setOverflown ] = useState(false); + const [ expanded, setExpanded ] = useState(false); + return ( +
+
+ +

{library.name}

+
+ {library.github && ( + + )} + {library.npm && ( + + )} + {library.gem && ( + + )} + {library.lastRelease && ( +
+ Last Release + {library.formattedLastRelease} +
+ )} + {library.stars && ( +
+ Stars + {library.formattedStars} +
+ )} + {library.license && ( +
+ License + {library.license} +
+ )} + {library.howto ? ( +
+ {library.description} +
+ ) : ( +
+ )} +
+
+
{ + if (el && !overflown) { + setOverflown(el.clientHeight < el.scrollHeight) + } + }} + > + + {library.howto || library.description} + +
+ {overflown && ( +
setExpanded(true)}> + +
+ )} +
+
+ ) +} + +export function buildLibraryList(libraries: any[], pageContext: any) { + return ( +
+ {libraries.map(library => buildLibraryContent(library, pageContext))} +
+ ) +} + +export function buildLibraryCategoryContent( + libraryCategories: any[], + libraryCategoryName: string, + slug: string, + pageContext: any +) { + if (libraryCategoryName in libraryCategories) { + const libraries = libraryCategories[libraryCategoryName as any] + return ( +
+

{libraryCategoryName}

+ {buildLibraryList(libraries, pageContext)} +
+ ) + } + return +} + +const categorySlugMap = [ + ["Server", toSlug("Server")], + ["Client", toSlug("Client")], + ["Tools", toSlug("Tools")], +] + +export function buildLanguagesContent(pageContext: any) { + const elements = [] + for (const languageObj of pageContext.languageList) { + const languageName = languageObj.name + const libraryCategories = languageObj.categoryMap + const filteredCategorySlugMap = categorySlugMap.filter( + ([libraryCategoryName]) => + libraryCategories[libraryCategoryName as any]?.length + ) + const languageSlug = toSlug(languageName) + elements.push( +
+
+

{languageName}

+ {filteredCategorySlugMap.length > 1 && ( +

+ {filteredCategorySlugMap.map( + ([libraryCategoryName, categorySlug], i) => ( + <> + + {libraryCategoryName} + + {i < filteredCategorySlugMap.length - 1 && " / "} + + ) + )} +

+ )} +
+
+ {filteredCategorySlugMap.map(([categoryName, categorySlug]) => + buildLibraryCategoryContent( + libraryCategories, + categoryName, + `${languageSlug}-${categorySlug}`, + pageContext + ) + )} +
+
+ ) + } + return
{elements}
+} + +export default ({ pageContext }: any) => { + return ( + +
+
+

Code

+

using GraphQL

+
+
+
+
+
+
+

+ Because GraphQL is a communication pattern, there are many tools + to help you get started working which support GraphQL in all + sorts of languages. +

+
+

Go to

+
+ +

Language Support

+
+ +

Tools

+
+ +

Services

+
+
+
+
+ +

+ Language Support +

+ {buildLanguagesMenu(pageContext)} + {buildLanguagesContent(pageContext)} +

+ + Tools + + # + +

+ {buildLibraryList(pageContext.otherLibraries.Tools, pageContext)} +

+ + Services + + # + +

+ {buildLibraryList(pageContext.otherLibraries.Services, pageContext)} +
+
+

Want to improve this page? See the docs here.

+
+
+ ) +} diff --git a/src/pages/faq.tsx b/src/pages/faq.tsx new file mode 100644 index 0000000000..9b0b9530c2 --- /dev/null +++ b/src/pages/faq.tsx @@ -0,0 +1,70 @@ +import React from "react" +import Layout from "../components/Layout" +import FAQSection from "../components/FAQSection" +import { graphql } from "gatsby" +import { useFAQAccordion } from "../utils/useFAQAccordion" + +export default ({ pageContext, data }: any) => { + useFAQAccordion() + + const sections = data.allMarkdownRemark.edges + .map((e: any) => e.node) + .sort((a: any, b: any) => { + const aPosition = a.frontmatter.position + const bPosition = b.frontmatter.position + if (aPosition < bPosition) { + return -1 + } + return 1 + }) + + return ( + +
+
+
+

Frequently Asked Questions (FAQ)

+
+ {sections.map( + ( + { + frontmatter: { title, permalink }, + rawMarkdownBody, + }: any, + i + ) => ( + + ) + )} +
+
+
+
+
+ ) +} + +export const query = graphql` + query getAllFAQSections { + allMarkdownRemark( + filter: { frontmatter: { permalink: { regex: "/faq/" } } } + ) { + edges { + node { + frontmatter { + title + position + } + id + rawMarkdownBody + } + } + } + } +` diff --git a/src/pages/foundation/members.tsx b/src/pages/foundation/members.tsx new file mode 100644 index 0000000000..a8badf01a6 --- /dev/null +++ b/src/pages/foundation/members.tsx @@ -0,0 +1,41 @@ +import React from "react" +import Layout from "../../components/Layout" + +export default ({ pageContext }) => { + return ( + +
+
+

GraphQL Foundation members

+

+ The GraphQL Foundation is the primary way in which funding is + raised and distributed to support essential GraphQL community programs. The members + listed on this page are directly invested in the success and long-term sustainability of + the GraphQL community. +

+

+ To learn more about the GraphQL Foundation and becoming a + member, please see our FAQ, + reach out to membership@graphql.org, or complete a membership application. +

+
+ + +
+
+ ) +} diff --git a/src/pages/index.tsx b/src/pages/index.tsx index 155553377a..43700c6e03 100644 --- a/src/pages/index.tsx +++ b/src/pages/index.tsx @@ -1,8 +1,6 @@ import React from "react" import Layout from "../components/Layout" -import Search from "../components/Search" - import Hero from "../Containers/Sections/Hero" import SingleRequest from "../Containers/Sections/SingleRequest" import TypeSystem from "../Containers/Sections/TypeSystem" @@ -15,13 +13,10 @@ import WhosUsing from "../Containers/Sections/WhosUsing" export default ({ pageContext }) => { return ( -
- -
-

一种用于 API 的查询语言

-

GraphQL 既是一种用于 API 的查询语言也是一个满足你数据查询的运行时。 GraphQL 对你的 API 中的数据提供了一套易于理解的完整描述,使得客户端能够准确地获得它需要的数据,而且没有任何冗余,也让 API 更容易地随着时间推移而演进,还能用于构建强大的开发者工具。

+

一种用于 API 的查询语言

+

GraphQL 既是一种用于 API 的查询语言也是一个满足你数据查询的运行时。 GraphQL 对你的 API 中的数据提供了一套易于理解的完整描述,使得客户端能够准确地获得它需要的数据,而且没有任何冗余,也让 API 更容易地随着时间推移而演进,还能用于构建强大的开发者工具。

diff --git a/src/pages/users.tsx b/src/pages/users.tsx index e606bd80f5..0c9ed32879 100644 --- a/src/pages/users.tsx +++ b/src/pages/users.tsx @@ -5,23 +5,23 @@ export default ({ pageContext }) => { return (
-
-

谁在使用 GraphQL?

-

- GraphQL 已经被各种体量的团队所使用,在不同的环境、不同的语言下,用于增强移动应用、网站和 API。 -

-

- 你的公司也在使用 GraphQL 吗?
- 请参考 说明文档 来向 GraphQL Landscape 提交你的拉取请求吧。 -

-
+
+

谁在使用 GraphQL?

+

+ GraphQL 已经被各种体量的团队所使用,在不同的环境、不同的语言下,用于增强移动应用、网站和 API。 +

+

+ 你的公司也在使用 GraphQL 吗?
+ 请参考 说明文档 来向 GraphQL Landscape 提交你的拉取请求吧。 +

+