serverless-offline 14.5.0 → 14.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +1 -1
- package/README.md +106 -104
- package/package.json +25 -44
- package/src/config/commandOptions.js +5 -0
- package/src/config/defaultOptions.js +1 -0
- package/src/config/supportedRuntimes.js +7 -1
- package/src/events/alb/HttpServer.js +43 -40
- package/src/lambda/LambdaFunction.js +5 -5
- package/src/lambda/handler-runner/HandlerRunner.js +5 -7
- package/src/lambda/handler-runner/docker-runner/DockerContainer.js +6 -7
- package/src/lambda/handler-runner/ruby-runner/RubyRunner.js +332 -49
- package/src/lambda/handler-runner/ruby-runner/invoke.rb +46 -34
package/README.md
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
# Serverless Offline
|
|
2
2
|
|
|
3
3
|
<div align="center">
|
|
4
|
-
We are looking for maintainers!
|
|
4
|
+
We are looking for maintainers!
|
|
5
5
|
<br />
|
|
6
6
|
Please contact <a href="https://github.com/dherault">dherault</a> if you feel you are a good match.
|
|
7
|
-
</div>
|
|
7
|
+
</div>
|
|
8
8
|
<br />
|
|
9
9
|
<div align="center">
|
|
10
10
|
<sup>
|
|
@@ -15,18 +15,6 @@
|
|
|
15
15
|
Special thanks to:
|
|
16
16
|
</sup>
|
|
17
17
|
<br />
|
|
18
|
-
<a href="https://symmetrics.app?ref=so">
|
|
19
|
-
<div>
|
|
20
|
-
<img src="https://symmetrics.app/images/logo/logotype.png" height="64" alt="Symmetrics">
|
|
21
|
-
</div>
|
|
22
|
-
<b>
|
|
23
|
-
Become a data-driven product builder
|
|
24
|
-
</b>
|
|
25
|
-
<div>
|
|
26
|
-
Metrics, community and resources for lead developers and engineering managers.
|
|
27
|
-
</div>
|
|
28
|
-
</a>
|
|
29
|
-
<br />
|
|
30
18
|
<a href="https://arccode.dev?ref=so">
|
|
31
19
|
<div>
|
|
32
20
|
<img src="https://arccode.dev/images/logotype.png" height="64" alt="Arccode">
|
|
@@ -44,23 +32,14 @@
|
|
|
44
32
|
<a href="https://www.npmjs.com/package/serverless-offline">
|
|
45
33
|
<img src="https://img.shields.io/npm/v/serverless-offline.svg?style=flat-square">
|
|
46
34
|
</a>
|
|
47
|
-
<a href="https://github.com/dherault/serverless-offline/actions/workflows/integrate.yml">
|
|
48
|
-
<img src="https://img.shields.io/github/workflow/status/dherault/serverless-offline/Integrate">
|
|
49
|
-
</a>
|
|
50
35
|
<img src="https://img.shields.io/node/v/serverless-offline.svg?style=flat-square">
|
|
51
36
|
<a href="https://github.com/serverless/serverless">
|
|
52
37
|
<img src="https://img.shields.io/npm/dependency-version/serverless-offline/peer/serverless.svg?style=flat-square">
|
|
53
38
|
</a>
|
|
54
|
-
<a href="https://github.com/prettier/prettier">
|
|
55
|
-
<img src="https://img.shields.io/badge/code_style-prettier-ff69b4.svg?style=flat-square">
|
|
56
|
-
</a>
|
|
57
39
|
<img src="https://img.shields.io/npm/l/serverless-offline.svg?style=flat-square">
|
|
58
40
|
<a href="#contributing">
|
|
59
41
|
<img src="https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square">
|
|
60
42
|
</a>
|
|
61
|
-
<a href="https://gitter.im/serverless-offline/community">
|
|
62
|
-
<img src="https://badges.gitter.im/serverless-offline.png">
|
|
63
|
-
</a>
|
|
64
43
|
</p>
|
|
65
44
|
|
|
66
45
|
This [Serverless](https://github.com/serverless/serverless) plugin emulates [AWS λ](https://aws.amazon.com/lambda) and [API Gateway](https://aws.amazon.com/api-gateway) on your local machine to speed up your development cycles.
|
|
@@ -71,7 +50,7 @@ To do so, it starts an HTTP server that handles the request's lifecycle like API
|
|
|
71
50
|
- [Node.js](https://nodejs.org), [Python](https://www.python.org), [Ruby](https://www.ruby-lang.org), [Go](https://golang.org), [Java](https://www.java.com) (incl. [Kotlin](https://kotlinlang.org), [Groovy](https://groovy-lang.org), [Scala](https://www.scala-lang.org)) λ runtimes.
|
|
72
51
|
- Velocity templates support.
|
|
73
52
|
- Lazy loading of your handler files.
|
|
74
|
-
- And more: integrations, authorizers, proxies, timeouts, responseParameters, HTTPS, CORS, etc
|
|
53
|
+
- And more: integrations, authorizers, proxies, timeouts, responseParameters, HTTPS, CORS, etc.
|
|
75
54
|
|
|
76
55
|
This plugin is updated by its users, I just do maintenance and ensure that PRs are relevant to the community. In other words, if you [find a bug or want a new feature](https://github.com/dherault/serverless-offline/issues), please help us by becoming one of the [contributors](https://github.com/dherault/serverless-offline/graphs/contributors) :v: ! See the [contributing section](#contributing).
|
|
77
56
|
|
|
@@ -116,7 +95,7 @@ First, add Serverless Offline to your project:
|
|
|
116
95
|
|
|
117
96
|
`npm install serverless-offline --save-dev`
|
|
118
97
|
|
|
119
|
-
Then inside your project's `serverless.yml` file add following entry to the plugins section: `serverless-offline`. If there is no plugin section you will need to add it to the file.
|
|
98
|
+
Then inside your project's `serverless.yml` file add the following entry to the plugins section: `serverless-offline`. If there is no plugin section you will need to add it to the file.
|
|
120
99
|
|
|
121
100
|
**Note that the "plugin" section for serverless-offline must be at root level on serverless.yml.**
|
|
122
101
|
|
|
@@ -131,15 +110,15 @@ You can check whether you have successfully installed the plugin by running the
|
|
|
131
110
|
|
|
132
111
|
`serverless --verbose`
|
|
133
112
|
|
|
134
|
-
|
|
113
|
+
The console should display _Offline_ as one of the plugins now available in your Serverless project.
|
|
135
114
|
|
|
136
115
|
## Usage and command line options
|
|
137
116
|
|
|
138
|
-
In your project root run:
|
|
117
|
+
In your project root, run:
|
|
139
118
|
|
|
140
119
|
`serverless offline` or `sls offline`.
|
|
141
120
|
|
|
142
|
-
|
|
121
|
+
To list all the options for the plugin, run:
|
|
143
122
|
|
|
144
123
|
`sls offline --help`
|
|
145
124
|
|
|
@@ -157,8 +136,8 @@ Default: '\*'
|
|
|
157
136
|
|
|
158
137
|
#### corsDisallowCredentials
|
|
159
138
|
|
|
160
|
-
When provided, the
|
|
161
|
-
Default: true
|
|
139
|
+
When provided, sets the Access-Control-Allow-Credentials header to 'false'.\
|
|
140
|
+
Default (without flag): credentials are allowed ('true')
|
|
162
141
|
|
|
163
142
|
#### corsExposedHeaders
|
|
164
143
|
|
|
@@ -193,7 +172,7 @@ Enforce secure cookies
|
|
|
193
172
|
|
|
194
173
|
#### host
|
|
195
174
|
|
|
196
|
-
|
|
175
|
+
Host name to listen on.<br />
|
|
197
176
|
Default: localhost
|
|
198
177
|
|
|
199
178
|
#### httpPort
|
|
@@ -203,7 +182,7 @@ Default: 3000
|
|
|
203
182
|
|
|
204
183
|
#### httpsProtocol
|
|
205
184
|
|
|
206
|
-
|
|
185
|
+
To enable HTTPS, specify directory (relative to your cwd, typically your project dir) for both cert.pem and key.pem files.
|
|
207
186
|
|
|
208
187
|
#### ignoreJWTSignature
|
|
209
188
|
|
|
@@ -217,7 +196,7 @@ Default: 3002
|
|
|
217
196
|
#### layersDir
|
|
218
197
|
|
|
219
198
|
The directory layers should be stored in.<br />
|
|
220
|
-
Default: ${codeDir}/.serverless-offline/layers'
|
|
199
|
+
Default: '${codeDir}/.serverless-offline/layers'
|
|
221
200
|
|
|
222
201
|
#### localEnvironment
|
|
223
202
|
|
|
@@ -238,17 +217,21 @@ Remove sponsor message from the output.
|
|
|
238
217
|
|
|
239
218
|
#### noTimeout
|
|
240
219
|
|
|
241
|
-
|
|
220
|
+
Disables the timeout feature.
|
|
242
221
|
|
|
243
222
|
#### prefix
|
|
244
223
|
|
|
245
|
-
|
|
224
|
+
Adds a prefix to every path, to send your requests to http://localhost:3000/[prefix]/[your_path] instead.<br />
|
|
246
225
|
Default: ''
|
|
247
226
|
|
|
248
227
|
#### reloadHandler
|
|
249
228
|
|
|
250
229
|
Reloads handler with each request.
|
|
251
230
|
|
|
231
|
+
#### rubyWatchDirs
|
|
232
|
+
|
|
233
|
+
List of directories to watch for Ruby file changes. Automatically restarts the Ruby process on change, enabling hot-reload during local development.
|
|
234
|
+
|
|
252
235
|
#### resourceRoutes
|
|
253
236
|
|
|
254
237
|
Turns on loading of your HTTP proxy settings from serverless.yml.
|
|
@@ -292,7 +275,7 @@ custom:
|
|
|
292
275
|
serverless-offline:
|
|
293
276
|
httpsProtocol: 'dev-certs'
|
|
294
277
|
httpPort: 4000
|
|
295
|
-
|
|
278
|
+
foo: 'bar'
|
|
296
279
|
```
|
|
297
280
|
|
|
298
281
|
Options passed on the command line override YAML options.
|
|
@@ -308,7 +291,7 @@ By default you can send your requests to `http://localhost:3000/`. Please note t
|
|
|
308
291
|
|
|
309
292
|
### node.js
|
|
310
293
|
|
|
311
|
-
Lambda handlers with `serverless-offline` for the `node.js` runtime can run in different execution modes and have some differences with a variety of pros and cons.
|
|
294
|
+
Lambda handlers with `serverless-offline` for the `node.js` runtime can run in different execution modes and have some differences with a variety of pros and cons. They are currently mutually exclusive and it's not possible to use a combination, e.g. use `in-process` for one Lambda, and `worker-threads` for another. It is planned to combine the flags into one single flag in the future and also add support for combining run modes.
|
|
312
295
|
|
|
313
296
|
#### worker-threads (default)
|
|
314
297
|
|
|
@@ -343,7 +326,7 @@ NOTE:
|
|
|
343
326
|
|
|
344
327
|
### Python, Ruby, Go, Java (incl. Kotlin, Groovy, Scala)
|
|
345
328
|
|
|
346
|
-
|
|
329
|
+
The Lambda handler process is running in a child process.
|
|
347
330
|
|
|
348
331
|
## Invoke Lambda
|
|
349
332
|
|
|
@@ -401,7 +384,7 @@ export async function handler() {
|
|
|
401
384
|
}
|
|
402
385
|
```
|
|
403
386
|
|
|
404
|
-
You can also invoke using the
|
|
387
|
+
You can also invoke using the AWS CLI by specifying `--endpoint-url`
|
|
405
388
|
|
|
406
389
|
```
|
|
407
390
|
aws lambda invoke /dev/null \
|
|
@@ -427,7 +410,7 @@ offline: Function names exposed for local invocation by aws-sdk:
|
|
|
427
410
|
```
|
|
428
411
|
|
|
429
412
|
To list the available manual invocation paths exposed for targeting
|
|
430
|
-
by `aws-sdk` and `aws-cli`, use `SLS_DEBUG=*` with `serverless offline`. After the invoke server starts up, full list of endpoints will be displayed:
|
|
413
|
+
by `aws-sdk` and `aws-cli`, use `SLS_DEBUG=*` with `serverless offline`. After the invoke server starts up, the full list of endpoints will be displayed:
|
|
431
414
|
|
|
432
415
|
```
|
|
433
416
|
SLS_DEBUG=* serverless offline
|
|
@@ -445,7 +428,7 @@ offline: Function names exposed for local invocation by aws-sdk:
|
|
|
445
428
|
|
|
446
429
|
You can manually target these endpoints with a REST client to debug your lambda
|
|
447
430
|
function if you want to. Your `POST` JSON body will be the `Payload` passed to your function if you were
|
|
448
|
-
to
|
|
431
|
+
to call it via `aws-sdk`.
|
|
449
432
|
|
|
450
433
|
## The `process.env.IS_OFFLINE` variable
|
|
451
434
|
|
|
@@ -453,7 +436,7 @@ Will be `"true"` in your handlers when using `serverless-offline`.
|
|
|
453
436
|
|
|
454
437
|
## Docker and Layers
|
|
455
438
|
|
|
456
|
-
To use layers with serverless-offline, you need to have the `useDocker` option set to true. This can either
|
|
439
|
+
To use layers with serverless-offline, you need to have the `useDocker` option set to true. This can be done either by using the `--useDocker` command, or in your serverless.yml like this:
|
|
457
440
|
|
|
458
441
|
```yml
|
|
459
442
|
custom:
|
|
@@ -465,7 +448,7 @@ This will allow the docker container to look up any information about layers, do
|
|
|
465
448
|
|
|
466
449
|
- AWS as a provider, it won't work with other provider types.
|
|
467
450
|
- Layers that are compatible with your runtime.
|
|
468
|
-
- ARNs for layers. Local layers
|
|
451
|
+
- ARNs for layers. Local layers are not yet supported.
|
|
469
452
|
- A local AWS account set-up that can query and download layers.
|
|
470
453
|
|
|
471
454
|
If you're using least-privilege principals for your AWS roles, this policy should get you by:
|
|
@@ -483,7 +466,7 @@ If you're using least-privilege principals for your AWS roles, this policy shoul
|
|
|
483
466
|
}
|
|
484
467
|
```
|
|
485
468
|
|
|
486
|
-
Once you run a function that boots up the Docker container, it'll look through the layers for that function, download them in order to your layers folder, and save a hash of your layers so it can be re-used in future. You'll only need to re-download your layers if they change in the future. If you want your layers to re-download, simply remove your layers folder.
|
|
469
|
+
Once you run a function that boots up the Docker container, it'll look through the layers for that function, download them in order to your layers folder, and save a hash of your layers so it can be re-used in the future. You'll only need to re-download your layers if they change in the future. If you want your layers to re-download, simply remove your layers folder.
|
|
487
470
|
|
|
488
471
|
You should then be able to invoke functions as normal, and they're executed against the layers in your docker container.
|
|
489
472
|
|
|
@@ -553,7 +536,7 @@ The plugin only supports retrieving Tokens from headers. You can configure the h
|
|
|
553
536
|
|
|
554
537
|
### Remote authorizers
|
|
555
538
|
|
|
556
|
-
You are able to mock the response from remote authorizers by setting the
|
|
539
|
+
You are able to mock the response from remote authorizers by setting the environment variable `AUTHORIZER` before running `sls offline start`
|
|
557
540
|
|
|
558
541
|
Example:
|
|
559
542
|
|
|
@@ -578,7 +561,7 @@ offline:
|
|
|
578
561
|
```
|
|
579
562
|
|
|
580
563
|
```js
|
|
581
|
-
// ./path/to/
|
|
564
|
+
// ./path/to/custom-authentication-provider.js
|
|
582
565
|
|
|
583
566
|
module.exports = function (endpoint, functionKey, method, path) {
|
|
584
567
|
return {
|
|
@@ -596,7 +579,7 @@ module.exports = function (endpoint, functionKey, method, path) {
|
|
|
596
579
|
}
|
|
597
580
|
```
|
|
598
581
|
|
|
599
|
-
A working example of injecting a custom authorization provider can be found in the
|
|
582
|
+
A working example of injecting a custom authorization provider can be found in the project's integration tests under the folder [`custom-authentication`](./tests/integration/custom-authentication).
|
|
600
583
|
|
|
601
584
|
## Custom headers
|
|
602
585
|
|
|
@@ -634,7 +617,7 @@ You can use [serverless-dotenv-plugin](https://github.com/colynb/serverless-dote
|
|
|
634
617
|
[Serverless doc](https://serverless.com/framework/docs/providers/aws/events/apigateway#request-templates)
|
|
635
618
|
~ [AWS doc](http://docs.aws.amazon.com/apigateway/latest/developerguide/models-mappings.html#models-mappings-mappings)
|
|
636
619
|
|
|
637
|
-
You can supply response and request templates for each function. This is optional. To do so you will have to place function
|
|
620
|
+
You can supply response and request templates for each function. This is optional. To do so, you will have to place function-specific template files in the same directory as your function file and add the .req.vm extension to the template filename.
|
|
638
621
|
For example,
|
|
639
622
|
if your function is in code-file: `helloworld.js`,
|
|
640
623
|
your response template should be in file: `helloworld.res.vm` and your request template in file `helloworld.req.vm`.
|
|
@@ -788,17 +771,17 @@ apiGatewayManagementApi.postToConnection({
|
|
|
788
771
|
|
|
789
772
|
Where the `event` is received in the lambda handler function.
|
|
790
773
|
|
|
791
|
-
There's support for [websocketsApiRouteSelectionExpression](https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-websocket-api-selection-expressions.html) in
|
|
774
|
+
There's support for [websocketsApiRouteSelectionExpression](https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-websocket-api-selection-expressions.html) in its basic form: `$request.body.x.y.z`, where the default value is `$request.body.action`.
|
|
792
775
|
|
|
793
776
|
## Debug process
|
|
794
777
|
|
|
795
|
-
Serverless offline plugin will respond to the overall framework settings and output additional information to the console in debug mode. In order to do this you will have to set the `SLS_DEBUG` environmental variable. You can run the following in the command line to switch to debug mode execution.
|
|
778
|
+
The Serverless offline plugin will respond to the overall framework settings and output additional information to the console in debug mode. In order to do this you will have to set the `SLS_DEBUG` environmental variable. You can run the following in the command line to switch to debug mode execution.
|
|
796
779
|
|
|
797
780
|
> Unix: `export SLS_DEBUG=*`
|
|
798
781
|
|
|
799
782
|
> Windows: `SET SLS_DEBUG=*`
|
|
800
783
|
|
|
801
|
-
Interactive debugging is also possible for your project if you have installed the node-inspector module and
|
|
784
|
+
Interactive debugging is also possible for your project if you have installed the node-inspector module and Chrome browser. You can then run the following command line inside your project's root.
|
|
802
785
|
|
|
803
786
|
Initial installation:
|
|
804
787
|
`npm install -g node-inspector`
|
|
@@ -812,7 +795,7 @@ Depending on the breakpoint, you may need to call the URL path for your function
|
|
|
812
795
|
|
|
813
796
|
### Interactive Debugging with Visual Studio Code (VSC)
|
|
814
797
|
|
|
815
|
-
With newer versions of
|
|
798
|
+
With newer versions of Node.js (6.3+) the node inspector is already part of your Node.js environment and you can take advantage of debugging inside your IDE with source-map support. Here is the example configuration to debug interactively with VSC. It has two steps.
|
|
816
799
|
|
|
817
800
|
#### Step 1 : Adding a launch configuration in IDE
|
|
818
801
|
|
|
@@ -830,9 +813,9 @@ Add a new [launch configuration](https://code.visualstudio.com/docs/editor/debug
|
|
|
830
813
|
}
|
|
831
814
|
```
|
|
832
815
|
|
|
833
|
-
####
|
|
816
|
+
#### Step 2: Adding a debug script
|
|
834
817
|
|
|
835
|
-
You will also need to add a `debug` script reference in your `package.json file
|
|
818
|
+
You will also need to add a `debug` script reference in your `package.json` file
|
|
836
819
|
|
|
837
820
|
Add this to the `scripts` section:
|
|
838
821
|
|
|
@@ -849,13 +832,13 @@ Example:
|
|
|
849
832
|
}
|
|
850
833
|
```
|
|
851
834
|
|
|
852
|
-
In VSC, you can, then, add breakpoints to your code. To start a debug
|
|
835
|
+
In VSC, you can, then, add breakpoints to your code. To start a debug session you can either start your script in `package.json` by clicking the hovering debug intellisense icon or by going to your debug pane and selecting the Debug Serverless Offline configuration.
|
|
853
836
|
|
|
854
837
|
## Resource permissions and AWS profile
|
|
855
838
|
|
|
856
|
-
Lambda functions assume an IAM role during execution: the framework creates this role and
|
|
839
|
+
Lambda functions assume an IAM role during execution: the framework creates this role and sets all the permissions provided in the `iamRoleStatements` section of `serverless.yml`.
|
|
857
840
|
|
|
858
|
-
However, serverless offline makes use of your local AWS profile credentials to run the lambda functions and that might result in a different set of permissions. By default, the aws-sdk would load credentials for
|
|
841
|
+
However, serverless offline makes use of your local AWS profile credentials to run the lambda functions and that might result in a different set of permissions. By default, the aws-sdk would load credentials for your default AWS profile specified in your configuration file.
|
|
859
842
|
|
|
860
843
|
You can change this profile directly in the code or by setting proper environment variables. Setting the `AWS_PROFILE` environment variable before calling `serverless` offline to a different profile would effectively change the credentials, e.g.
|
|
861
844
|
|
|
@@ -864,13 +847,13 @@ You can change this profile directly in the code or by setting proper environmen
|
|
|
864
847
|
## Simulation quality
|
|
865
848
|
|
|
866
849
|
This plugin simulates API Gateway for many practical purposes, good enough for development - but is not a perfect simulator.
|
|
867
|
-
Specifically, Lambda currently runs on Node.js
|
|
850
|
+
Specifically, Lambda currently runs on Node.js v18.x, v20.x and v22.x ([AWS Docs](https://docs.aws.amazon.com/lambda/latest/dg/current-supported-versions.html)), whereas _Offline_ runs on your own runtime where no memory limits are enforced.
|
|
868
851
|
|
|
869
852
|
## Usage with other plugins
|
|
870
853
|
|
|
871
854
|
When combining this plugin with other plugins there are a few things that you need to keep in mind.
|
|
872
855
|
|
|
873
|
-
You should run `serverless offline start` instead of `serverless offline`. The `start` command fires the `offline:start:init` and `offline:start:end` lifecycle hooks which can be used by other plugins to process your code, add resources, perform cleanups, etc.
|
|
856
|
+
You should run `serverless offline start` instead of `serverless offline`. The `start` command fires the `offline:start:init` and `offline:start:end` lifecycle hooks, which can be used by other plugins to process your code, add resources, perform cleanups, etc.
|
|
874
857
|
|
|
875
858
|
The order in which plugins are added to `serverless.yml` is relevant.
|
|
876
859
|
Plugins are executed in order, so plugins that process your code or add resources should be added first so they are ready when this plugin starts.
|
|
@@ -885,7 +868,7 @@ plugins:
|
|
|
885
868
|
- serverless-offline # runs last so your code has been pre-processed and dynamo is ready
|
|
886
869
|
```
|
|
887
870
|
|
|
888
|
-
That works because all those plugins listen to the `offline:start:init` to do their processing.
|
|
871
|
+
That works because all those plugins listen to the `offline:start:init` hook to do their processing.
|
|
889
872
|
Similarly they listen to `offline:start:end` to perform cleanup (stop dynamo db, remove temporary files, etc).
|
|
890
873
|
|
|
891
874
|
## Credits and inspiration
|
|
@@ -901,92 +884,111 @@ MIT
|
|
|
901
884
|
Yes, thank you!
|
|
902
885
|
This plugin is community-driven, most of its features are from different authors.
|
|
903
886
|
Please update the docs and tests and add your name to the package.json file.
|
|
904
|
-
We try to follow [Airbnb's JavaScript Style Guide](https://github.com/airbnb/javascript).
|
|
905
887
|
|
|
906
888
|
## Contributors
|
|
907
889
|
|
|
908
|
-
[<img alt="dnalborczyk" src="https://avatars.githubusercontent.com/u/2903325?v=4&s=117" width="117">](https://github.com/dnalborczyk)[<img alt="dherault" src="https://avatars.githubusercontent.com/u/4154003?v=4&s=117" width="117">](https://github.com/dherault)[<img alt="computerpunc" src="https://avatars.githubusercontent.com/u/721008?v=4&s=117" width="117">](https://github.com/computerpunc)[<img alt="frozenbonito" src="https://avatars.githubusercontent.com/u/26363256?v=4&s=117" width="117">](https://github.com/frozenbonito)[<img alt="leonardoalifraco" src="https://avatars.githubusercontent.com/u/2942943?v=4&s=117" width="117">](https://github.com/leonardoalifraco)
|
|
890
|
+
[<img alt="dnalborczyk" src="https://avatars.githubusercontent.com/u/2903325?v=4&s=117" width="117">](https://github.com/dnalborczyk)[<img alt="dherault" src="https://avatars.githubusercontent.com/u/4154003?v=4&s=117" width="117">](https://github.com/dherault)[<img alt="computerpunc" src="https://avatars.githubusercontent.com/u/721008?v=4&s=117" width="117">](https://github.com/computerpunc)[<img alt="frozenbonito" src="https://avatars.githubusercontent.com/u/26363256?v=4&s=117" width="117">](https://github.com/frozenbonito)[<img alt="leonardoalifraco" src="https://avatars.githubusercontent.com/u/2942943?v=4&s=117" width="117">](https://github.com/leonardoalifraco)
|
|
891
|
+
|
|
892
|
+
[<img alt="medikoo" src="https://avatars.githubusercontent.com/u/122434?v=4&s=117" width="117">](https://github.com/medikoo)[<img alt="DorianMazur" src="https://avatars.githubusercontent.com/u/46839236?v=4&s=117" width="117">](https://github.com/DorianMazur)[<img alt="apancutt" src="https://avatars.githubusercontent.com/u/1040525?v=4&s=117" width="117">](https://github.com/apancutt)[<img alt="chardos" src="https://avatars.githubusercontent.com/u/4082442?v=4&s=117" width="117">](https://github.com/chardos)[<img alt="daniel-cottone" src="https://avatars.githubusercontent.com/u/26556340?v=4&s=117" width="117">](https://github.com/daniel-cottone)
|
|
893
|
+
|
|
894
|
+
[<img alt="damon-williams-rm" src="https://avatars.githubusercontent.com/u/254429975?v=4&s=117" width="117">](https://github.com/damon-williams-rm)[<img alt="bryantbiggs" src="https://avatars.githubusercontent.com/u/10913471?v=4&s=117" width="117">](https://github.com/bryantbiggs)[<img alt="pgrzesik" src="https://avatars.githubusercontent.com/u/17499590?v=4&s=117" width="117">](https://github.com/pgrzesik)[<img alt="Bilal-S" src="https://avatars.githubusercontent.com/u/668901?v=4&s=117" width="117">](https://github.com/Bilal-S)[<img alt="mikestaub" src="https://avatars.githubusercontent.com/u/1254558?v=4&s=117" width="117">](https://github.com/mikestaub)
|
|
895
|
+
|
|
896
|
+
[<img alt="juanjoDiaz" src="https://avatars.githubusercontent.com/u/3322485?v=4&s=117" width="117">](https://github.com/juanjoDiaz)[<img alt="frsechet" src="https://avatars.githubusercontent.com/u/7351940?v=4&s=117" width="117">](https://github.com/frsechet)[<img alt="johncmckim" src="https://avatars.githubusercontent.com/u/1297227?v=4&s=117" width="117">](https://github.com/johncmckim)[<img alt="dl748" src="https://avatars.githubusercontent.com/u/4815868?v=4&s=117" width="117">](https://github.com/dl748)[<img alt="zoellner" src="https://avatars.githubusercontent.com/u/2665319?v=4&s=117" width="117">](https://github.com/zoellner)
|
|
897
|
+
|
|
898
|
+
[<img alt="ThisIsNoZaku" src="https://avatars.githubusercontent.com/u/4680766?v=4&s=117" width="117">](https://github.com/ThisIsNoZaku)[<img alt="darthtrevino" src="https://avatars.githubusercontent.com/u/113544?v=4&s=117" width="117">](https://github.com/darthtrevino)[<img alt="NicolasSeiler" src="https://avatars.githubusercontent.com/u/31805224?v=4&s=117" width="117">](https://github.com/NicolasSeiler)[<img alt="miltador" src="https://avatars.githubusercontent.com/u/17062283?v=4&s=117" width="117">](https://github.com/miltador)[<img alt="moroine" src="https://avatars.githubusercontent.com/u/4658821?v=4&s=117" width="117">](https://github.com/moroine)
|
|
899
|
+
|
|
900
|
+
[<img alt="gertjvr" src="https://avatars.githubusercontent.com/u/1691062?v=4&s=117" width="117">](https://github.com/gertjvr)[<img alt="crespowang" src="https://avatars.githubusercontent.com/u/25573589?v=4&s=117" width="117">](https://github.com/crespowang)[<img alt="bytekast" src="https://avatars.githubusercontent.com/u/241901?v=4&s=117" width="117">](https://github.com/bytekast)[<img alt="jormaechea" src="https://avatars.githubusercontent.com/u/5612500?v=4&s=117" width="117">](https://github.com/jormaechea)[<img alt="thomaschaaf" src="https://avatars.githubusercontent.com/u/893393?v=4&s=117" width="117">](https://github.com/thomaschaaf)
|
|
901
|
+
|
|
902
|
+
[<img alt="dortega3000" src="https://avatars.githubusercontent.com/u/6676525?v=4&s=117" width="117">](https://github.com/dortega3000)[<img alt="tom-marsh" src="https://avatars.githubusercontent.com/u/18220186?v=4&s=117" width="117">](https://github.com/tom-marsh)[<img alt="rwynn" src="https://avatars.githubusercontent.com/u/260672?v=4&s=117" width="117">](https://github.com/rwynn)[<img alt="robbtraister" src="https://avatars.githubusercontent.com/u/5815296?v=4&s=117" width="117">](https://github.com/robbtraister)[<img alt="joubertredrat" src="https://avatars.githubusercontent.com/u/1520407?v=4&s=117" width="117">](https://github.com/joubertredrat)
|
|
903
|
+
|
|
904
|
+
[<img alt="jack-seek" src="https://avatars.githubusercontent.com/u/19676584?v=4&s=117" width="117">](https://github.com/jack-seek)[<img alt="perkyguy" src="https://avatars.githubusercontent.com/u/4624648?v=4&s=117" width="117">](https://github.com/perkyguy)[<img alt="ansraliant" src="https://avatars.githubusercontent.com/u/7121475?v=4&s=117" width="117">](https://github.com/ansraliant)[<img alt="hueniverse" src="https://avatars.githubusercontent.com/u/56631?v=4&s=117" width="117">](https://github.com/hueniverse)[<img alt="james-relyea" src="https://avatars.githubusercontent.com/u/1944491?v=4&s=117" width="117">](https://github.com/james-relyea)
|
|
905
|
+
|
|
906
|
+
[<img alt="sulaysumaria" src="https://avatars.githubusercontent.com/u/174357920?v=4&s=117" width="117">](https://github.com/sulaysumaria)[<img alt="paneidos" src="https://avatars.githubusercontent.com/u/125766?v=4&s=117" width="117">](https://github.com/paneidos)[<img alt="ondrowan" src="https://avatars.githubusercontent.com/u/423776?v=4&s=117" width="117">](https://github.com/ondrowan)[<img alt="kajwik" src="https://avatars.githubusercontent.com/u/230137596?v=4&s=117" width="117">](https://github.com/kajwik)[<img alt="franciscocpg" src="https://avatars.githubusercontent.com/u/3680556?v=4&s=117" width="117">](https://github.com/franciscocpg)
|
|
907
|
+
|
|
908
|
+
[<img alt="AyushG3112" src="https://avatars.githubusercontent.com/u/21307931?v=4&s=117" width="117">](https://github.com/AyushG3112)[<img alt="Andorbal" src="https://avatars.githubusercontent.com/u/579839?v=4&s=117" width="117">](https://github.com/Andorbal)[<img alt="AlexHayton" src="https://avatars.githubusercontent.com/u/63102?v=4&s=117" width="117">](https://github.com/AlexHayton)[<img alt="awwong1" src="https://avatars.githubusercontent.com/u/2760111?v=4&s=117" width="117">](https://github.com/awwong1)[<img alt="andreipopovici" src="https://avatars.githubusercontent.com/u/1143417?v=4&s=117" width="117">](https://github.com/andreipopovici)
|
|
909
|
+
|
|
910
|
+
[<img alt="emmoistner" src="https://avatars.githubusercontent.com/u/5419727?v=4&s=117" width="117">](https://github.com/emmoistner)[<img alt="coyoteecd" src="https://avatars.githubusercontent.com/u/47973420?v=4&s=117" width="117">](https://github.com/coyoteecd)[<img alt="OrKoN" src="https://avatars.githubusercontent.com/u/399150?v=4&s=117" width="117">](https://github.com/OrKoN)[<img alt="trevor-leach" src="https://avatars.githubusercontent.com/u/39206334?v=4&s=117" width="117">](https://github.com/trevor-leach)[<img alt="bebbi" src="https://avatars.githubusercontent.com/u/2752391?v=4&s=117" width="117">](https://github.com/bebbi)
|
|
909
911
|
|
|
910
|
-
[<img alt="
|
|
912
|
+
[<img alt="paulhbarker" src="https://avatars.githubusercontent.com/u/7366567?v=4&s=117" width="117">](https://github.com/paulhbarker)[<img alt="adieuadieu" src="https://avatars.githubusercontent.com/u/438848?v=4&s=117" width="117">](https://github.com/adieuadieu)[<img alt="encounter" src="https://avatars.githubusercontent.com/u/549122?v=4&s=117" width="117">](https://github.com/encounter)[<img alt="leemhenson" src="https://avatars.githubusercontent.com/u/515?v=4&s=117" width="117">](https://github.com/leemhenson)[<img alt="henrist" src="https://avatars.githubusercontent.com/u/703354?v=4&s=117" width="117">](https://github.com/henrist)
|
|
911
913
|
|
|
912
|
-
[<img alt="
|
|
914
|
+
[<img alt="ALOHACREPES345" src="https://avatars.githubusercontent.com/u/51868219?v=4&s=117" width="117">](https://github.com/ALOHACREPES345)[<img alt="Bob-Thomas" src="https://avatars.githubusercontent.com/u/2785213?v=4&s=117" width="117">](https://github.com/Bob-Thomas)[<img alt="cnuss" src="https://avatars.githubusercontent.com/u/819991?v=4&s=117" width="117">](https://github.com/cnuss)[<img alt="c24w" src="https://avatars.githubusercontent.com/u/710406?v=4&s=117" width="117">](https://github.com/c24w)[<img alt="Rawne" src="https://avatars.githubusercontent.com/u/1477918?v=4&s=117" width="117">](https://github.com/Rawne)
|
|
913
915
|
|
|
914
|
-
[<img alt="
|
|
916
|
+
[<img alt="raySavignone" src="https://avatars.githubusercontent.com/u/10362370?v=4&s=117" width="117">](https://github.com/raySavignone)[<img alt="pierreis" src="https://avatars.githubusercontent.com/u/203973?v=4&s=117" width="117">](https://github.com/pierreis)[<img alt="pmuens" src="https://avatars.githubusercontent.com/u/1606004?v=4&s=117" width="117">](https://github.com/pmuens)[<img alt="mzmiric5" src="https://avatars.githubusercontent.com/u/1480072?v=4&s=117" width="117">](https://github.com/mzmiric5)[<img alt="purefan" src="https://avatars.githubusercontent.com/u/315880?v=4&s=117" width="117">](https://github.com/purefan)
|
|
915
917
|
|
|
916
|
-
[<img alt="
|
|
918
|
+
[<img alt="matt-peck" src="https://avatars.githubusercontent.com/u/18297252?v=4&s=117" width="117">](https://github.com/matt-peck)[<img alt="marccampbell" src="https://avatars.githubusercontent.com/u/173451?v=4&s=117" width="117">](https://github.com/marccampbell)[<img alt="ablythe" src="https://avatars.githubusercontent.com/u/6164745?v=4&s=117" width="117">](https://github.com/ablythe)[<img alt="selcukcihan" src="https://avatars.githubusercontent.com/u/7043904?v=4&s=117" width="117">](https://github.com/selcukcihan)[<img alt="shalvah" src="https://avatars.githubusercontent.com/u/14361073?v=4&s=117" width="117">](https://github.com/shalvah)
|
|
917
919
|
|
|
918
|
-
[<img alt="
|
|
920
|
+
[<img alt="footballencarta" src="https://avatars.githubusercontent.com/u/1312258?v=4&s=117" width="117">](https://github.com/footballencarta)[<img alt="francisu" src="https://avatars.githubusercontent.com/u/944949?v=4&s=117" width="117">](https://github.com/francisu)[<img alt="haider-zada96" src="https://avatars.githubusercontent.com/u/65647762?v=4&s=117" width="117">](https://github.com/haider-zada96)[<img alt="naomichi-y" src="https://avatars.githubusercontent.com/u/1632478?v=4&s=117" width="117">](https://github.com/naomichi-y)[<img alt="patrickheeney" src="https://avatars.githubusercontent.com/u/1407228?v=4&s=117" width="117">](https://github.com/patrickheeney)
|
|
919
921
|
|
|
920
|
-
[<img alt="
|
|
922
|
+
[<img alt="re1ro" src="https://avatars.githubusercontent.com/u/470292?v=4&s=117" width="117">](https://github.com/re1ro)[<img alt="andidev" src="https://avatars.githubusercontent.com/u/571389?v=4&s=117" width="117">](https://github.com/andidev)[<img alt="arnas" src="https://avatars.githubusercontent.com/u/13507001?v=4&s=117" width="117">](https://github.com/arnas)[<img alt="clschnei" src="https://avatars.githubusercontent.com/u/1232625?v=4&s=117" width="117">](https://github.com/clschnei)[<img alt="d10-cc" src="https://avatars.githubusercontent.com/u/94011455?v=4&s=117" width="117">](https://github.com/d10-cc)
|
|
921
923
|
|
|
922
|
-
[<img alt="
|
|
924
|
+
[<img alt="pettyalex" src="https://avatars.githubusercontent.com/u/3219141?v=4&s=117" width="117">](https://github.com/pettyalex)[<img alt="domdomegg" src="https://avatars.githubusercontent.com/u/4953590?v=4&s=117" width="117">](https://github.com/domdomegg)[<img alt="apalumbo" src="https://avatars.githubusercontent.com/u/1729784?v=4&s=117" width="117">](https://github.com/apalumbo)[<img alt="rion18" src="https://avatars.githubusercontent.com/u/5338637?v=4&s=117" width="117">](https://github.com/rion18)[<img alt="anishkny" src="https://avatars.githubusercontent.com/u/357499?v=4&s=117" width="117">](https://github.com/anishkny)
|
|
923
925
|
|
|
924
|
-
[<img alt="
|
|
926
|
+
[<img alt="cameroncooper" src="https://avatars.githubusercontent.com/u/898689?v=4&s=117" width="117">](https://github.com/cameroncooper)[<img alt="cmuto09" src="https://avatars.githubusercontent.com/u/4679612?v=4&s=117" width="117">](https://github.com/cmuto09)[<img alt="dschep" src="https://avatars.githubusercontent.com/u/667763?v=4&s=117" width="117">](https://github.com/dschep)[<img alt="dimadk24" src="https://avatars.githubusercontent.com/u/25607790?v=4&s=117" width="117">](https://github.com/dimadk24)[<img alt="astron8t-voyagerx" src="https://avatars.githubusercontent.com/u/131428302?v=4&s=117" width="117">](https://github.com/astron8t-voyagerx)
|
|
925
927
|
|
|
926
|
-
[<img alt="
|
|
928
|
+
[<img alt="dwbelliston" src="https://avatars.githubusercontent.com/u/11450118?v=4&s=117" width="117">](https://github.com/dwbelliston)[<img alt="efrain17" src="https://avatars.githubusercontent.com/u/21026552?v=4&s=117" width="117">](https://github.com/efrain17)[<img alt="eabadjiev" src="https://avatars.githubusercontent.com/u/934059?v=4&s=117" width="117">](https://github.com/eabadjiev)[<img alt="tqfipe" src="https://avatars.githubusercontent.com/u/19840740?v=4&s=117" width="117">](https://github.com/tqfipe)[<img alt="G-Rath" src="https://avatars.githubusercontent.com/u/3151613?v=4&s=117" width="117">](https://github.com/G-Rath)
|
|
927
929
|
|
|
928
|
-
[<img alt="
|
|
930
|
+
[<img alt="garunski" src="https://avatars.githubusercontent.com/u/1002770?v=4&s=117" width="117">](https://github.com/garunski)[<img alt="jeroenvollenbrock" src="https://avatars.githubusercontent.com/u/4551130?v=4&s=117" width="117">](https://github.com/jeroenvollenbrock)[<img alt="joewestcott" src="https://avatars.githubusercontent.com/u/11187741?v=4&s=117" width="117">](https://github.com/joewestcott)[<img alt="djcrabhat" src="https://avatars.githubusercontent.com/u/803042?v=4&s=117" width="117">](https://github.com/djcrabhat)[<img alt="perrin4869" src="https://avatars.githubusercontent.com/u/5774716?v=4&s=117" width="117">](https://github.com/perrin4869)
|
|
929
931
|
|
|
930
|
-
[<img alt="
|
|
932
|
+
[<img alt="njyjn" src="https://avatars.githubusercontent.com/u/10694375?v=4&s=117" width="117">](https://github.com/njyjn)[<img alt="DocLM" src="https://avatars.githubusercontent.com/u/2318483?v=4&s=117" width="117">](https://github.com/DocLM)[<img alt="rfranco" src="https://avatars.githubusercontent.com/u/399203?v=4&s=117" width="117">](https://github.com/rfranco)[<img alt="uh-zz" src="https://avatars.githubusercontent.com/u/47747828?v=4&s=117" width="117">](https://github.com/uh-zz)[<img alt="juarezjaramillo" src="https://avatars.githubusercontent.com/u/4152822?v=4&s=117" width="117">](https://github.com/juarezjaramillo)
|
|
931
933
|
|
|
932
|
-
[<img alt="
|
|
934
|
+
[<img alt="Raph22" src="https://avatars.githubusercontent.com/u/18127594?v=4&s=117" width="117">](https://github.com/Raph22)[<img alt="randytarampi" src="https://avatars.githubusercontent.com/u/592216?v=4&s=117" width="117">](https://github.com/randytarampi)[<img alt="PsychicCat" src="https://avatars.githubusercontent.com/u/4073856?v=4&s=117" width="117">](https://github.com/PsychicCat)[<img alt="petetnt" src="https://avatars.githubusercontent.com/u/7641760?v=4&s=117" width="117">](https://github.com/petetnt)[<img alt="thepont" src="https://avatars.githubusercontent.com/u/2901992?v=4&s=117" width="117">](https://github.com/thepont)
|
|
933
935
|
|
|
934
|
-
[<img alt="
|
|
936
|
+
[<img alt="parasgera" src="https://avatars.githubusercontent.com/u/4932306?v=4&s=117" width="117">](https://github.com/parasgera)[<img alt="Trott" src="https://avatars.githubusercontent.com/u/718899?v=4&s=117" width="117">](https://github.com/Trott)[<img alt="RichiCoder1" src="https://avatars.githubusercontent.com/u/2391878?v=4&s=117" width="117">](https://github.com/RichiCoder1)[<img alt="rishi8094" src="https://avatars.githubusercontent.com/u/20362222?v=4&s=117" width="117">](https://github.com/rishi8094)[<img alt="rloomans" src="https://avatars.githubusercontent.com/u/92133?v=4&s=117" width="117">](https://github.com/rloomans)
|
|
935
937
|
|
|
936
|
-
[<img alt="
|
|
938
|
+
[<img alt="roberttaylor426" src="https://avatars.githubusercontent.com/u/535032?v=4&s=117" width="117">](https://github.com/roberttaylor426)[<img alt="wwsno" src="https://avatars.githubusercontent.com/u/6328924?v=4&s=117" width="117">](https://github.com/wwsno)[<img alt="gribnoysup" src="https://avatars.githubusercontent.com/u/5036933?v=4&s=117" width="117">](https://github.com/gribnoysup)[<img alt="sergiodurand" src="https://avatars.githubusercontent.com/u/19421918?v=4&s=117" width="117">](https://github.com/sergiodurand)[<img alt="sethetter" src="https://avatars.githubusercontent.com/u/655500?v=4&s=117" width="117">](https://github.com/sethetter)
|
|
937
939
|
|
|
938
|
-
[<img alt="
|
|
940
|
+
[<img alt="drace-rgare" src="https://avatars.githubusercontent.com/u/96196419?v=4&s=117" width="117">](https://github.com/drace-rgare)[<img alt="jeromemacias" src="https://avatars.githubusercontent.com/u/582446?v=4&s=117" width="117">](https://github.com/jeromemacias)[<img alt="kdybicz" src="https://avatars.githubusercontent.com/u/13134892?v=4&s=117" width="117">](https://github.com/kdybicz)[<img alt="kenleytomlin" src="https://avatars.githubusercontent.com/u/3004590?v=4&s=117" width="117">](https://github.com/kenleytomlin)[<img alt="kevinhankens" src="https://avatars.githubusercontent.com/u/679364?v=4&s=117" width="117">](https://github.com/kevinhankens)
|
|
939
941
|
|
|
940
|
-
[<img alt="
|
|
942
|
+
[<img alt="kerueter" src="https://avatars.githubusercontent.com/u/16644743?v=4&s=117" width="117">](https://github.com/kerueter)[<img alt="ktwbc" src="https://avatars.githubusercontent.com/u/624611?v=4&s=117" width="117">](https://github.com/ktwbc)[<img alt="kohanian" src="https://avatars.githubusercontent.com/u/8570821?v=4&s=117" width="117">](https://github.com/kohanian)[<img alt="kyusungpark" src="https://avatars.githubusercontent.com/u/58890841?v=4&s=117" width="117">](https://github.com/kyusungpark)[<img alt="lalifraco-devspark" src="https://avatars.githubusercontent.com/u/13339324?v=4&s=117" width="117">](https://github.com/lalifraco-devspark)
|
|
941
943
|
|
|
942
|
-
[<img alt="
|
|
944
|
+
[<img alt="DynamicSTOP" src="https://avatars.githubusercontent.com/u/9434504?v=4&s=117" width="117">](https://github.com/DynamicSTOP)[<img alt="brazilianbytes" src="https://avatars.githubusercontent.com/u/1900570?v=4&s=117" width="117">](https://github.com/brazilianbytes)[<img alt="m4i3r" src="https://avatars.githubusercontent.com/u/106649997?v=4&s=117" width="117">](https://github.com/m4i3r)[<img alt="Marcel-G" src="https://avatars.githubusercontent.com/u/2770666?v=4&s=117" width="117">](https://github.com/Marcel-G)[<img alt="neverendingqs" src="https://avatars.githubusercontent.com/u/8854618?v=4&s=117" width="117">](https://github.com/neverendingqs)
|
|
943
945
|
|
|
944
|
-
[<img alt="
|
|
946
|
+
[<img alt="msjonker" src="https://avatars.githubusercontent.com/u/781683?v=4&s=117" width="117">](https://github.com/msjonker)[<img alt="Takeno" src="https://avatars.githubusercontent.com/u/1499063?v=4&s=117" width="117">](https://github.com/Takeno)[<img alt="kelchm" src="https://avatars.githubusercontent.com/u/172301?v=4&s=117" width="117">](https://github.com/kelchm)[<img alt="mjmac" src="https://avatars.githubusercontent.com/u/83737?v=4&s=117" width="117">](https://github.com/mjmac)[<img alt="mohokh67" src="https://avatars.githubusercontent.com/u/10816168?v=4&s=117" width="117">](https://github.com/mohokh67)
|
|
945
947
|
|
|
946
|
-
[<img alt="
|
|
948
|
+
[<img alt="AlexHladin" src="https://avatars.githubusercontent.com/u/7945837?v=4&s=117" width="117">](https://github.com/AlexHladin)[<img alt="ojongerius" src="https://avatars.githubusercontent.com/u/1726055?v=4&s=117" width="117">](https://github.com/ojongerius)[<img alt="ericctsf" src="https://avatars.githubusercontent.com/u/42775388?v=4&s=117" width="117">](https://github.com/ericctsf)[<img alt="furipon308" src="https://avatars.githubusercontent.com/u/12597185?v=4&s=117" width="117">](https://github.com/furipon308)[<img alt="hsz" src="https://avatars.githubusercontent.com/u/108333?v=4&s=117" width="117">](https://github.com/hsz)
|
|
947
949
|
|
|
948
|
-
[<img alt="
|
|
950
|
+
[<img alt="jeffhall4" src="https://avatars.githubusercontent.com/u/14976795?v=4&s=117" width="117">](https://github.com/jeffhall4)[<img alt="jgilbert01" src="https://avatars.githubusercontent.com/u/1082126?v=4&s=117" width="117">](https://github.com/jgilbert01)[<img alt="polaris340" src="https://avatars.githubusercontent.com/u/2861192?v=4&s=117" width="117">](https://github.com/polaris340)[<img alt="khanguyen88" src="https://avatars.githubusercontent.com/u/26890183?v=4&s=117" width="117">](https://github.com/khanguyen88)[<img alt="kobanyan" src="https://avatars.githubusercontent.com/u/14950314?v=4&s=117" width="117">](https://github.com/kobanyan)
|
|
949
951
|
|
|
950
|
-
[<img alt="
|
|
952
|
+
[<img alt="livingmine" src="https://avatars.githubusercontent.com/u/7286614?v=4&s=117" width="117">](https://github.com/livingmine)[<img alt="lteacher" src="https://avatars.githubusercontent.com/u/6103860?v=4&s=117" width="117">](https://github.com/lteacher)[<img alt="martinmicunda" src="https://avatars.githubusercontent.com/u/1643606?v=4&s=117" width="117">](https://github.com/martinmicunda)[<img alt="nick-w-nick" src="https://avatars.githubusercontent.com/u/43578531?v=4&s=117" width="117">](https://github.com/nick-w-nick)[<img alt="nori3tsu" src="https://avatars.githubusercontent.com/u/379587?v=4&s=117" width="117">](https://github.com/nori3tsu)
|
|
951
953
|
|
|
952
|
-
[<img alt="
|
|
954
|
+
[<img alt="ppasmanik" src="https://avatars.githubusercontent.com/u/3534835?v=4&s=117" width="117">](https://github.com/ppasmanik)[<img alt="ryanzyy" src="https://avatars.githubusercontent.com/u/2299226?v=4&s=117" width="117">](https://github.com/ryanzyy)[<img alt="skhrapko-amplify" src="https://avatars.githubusercontent.com/u/103408480?v=4&s=117" width="117">](https://github.com/skhrapko-amplify)[<img alt="tom-stclair" src="https://avatars.githubusercontent.com/u/96192789?v=4&s=117" width="117">](https://github.com/tom-stclair)[<img alt="tveal" src="https://avatars.githubusercontent.com/u/42526035?v=4&s=117" width="117">](https://github.com/tveal)
|
|
953
955
|
|
|
954
|
-
[<img alt="
|
|
956
|
+
[<img alt="constb" src="https://avatars.githubusercontent.com/u/1006766?v=4&s=117" width="117">](https://github.com/constb)[<img alt="dfffpoi" src="https://avatars.githubusercontent.com/u/1043331?v=4&s=117" width="117">](https://github.com/dfffpoi)[<img alt="stesie" src="https://avatars.githubusercontent.com/u/113068?v=4&s=117" width="117">](https://github.com/stesie)[<img alt="stevemao" src="https://avatars.githubusercontent.com/u/6316590?v=4&s=117" width="117">](https://github.com/stevemao)[<img alt="trsrm" src="https://avatars.githubusercontent.com/u/1160872?v=4&s=117" width="117">](https://github.com/trsrm)
|
|
955
957
|
|
|
956
|
-
[<img alt="
|
|
958
|
+
[<img alt="ittus" src="https://avatars.githubusercontent.com/u/5120965?v=4&s=117" width="117">](https://github.com/ittus)[<img alt="Ankcorn" src="https://avatars.githubusercontent.com/u/7361428?v=4&s=117" width="117">](https://github.com/Ankcorn)[<img alt="expoe-codebuild" src="https://avatars.githubusercontent.com/u/38527465?v=4&s=117" width="117">](https://github.com/expoe-codebuild)[<img alt="tiagogoncalves89" src="https://avatars.githubusercontent.com/u/55122?v=4&s=117" width="117">](https://github.com/tiagogoncalves89)[<img alt="czubocha" src="https://avatars.githubusercontent.com/u/23511767?v=4&s=117" width="117">](https://github.com/czubocha)
|
|
957
959
|
|
|
958
|
-
[<img alt="
|
|
960
|
+
[<img alt="tuanmh" src="https://avatars.githubusercontent.com/u/3193353?v=4&s=117" width="117">](https://github.com/tuanmh)[<img alt="Gregoirevda" src="https://avatars.githubusercontent.com/u/12223738?v=4&s=117" width="117">](https://github.com/Gregoirevda)[<img alt="vivganes" src="https://avatars.githubusercontent.com/u/2035886?v=4&s=117" width="117">](https://github.com/vivganes)[<img alt="gcphost" src="https://avatars.githubusercontent.com/u/1173636?v=4&s=117" width="117">](https://github.com/gcphost)[<img alt="YaroslavApatiev" src="https://avatars.githubusercontent.com/u/24372409?v=4&s=117" width="117">](https://github.com/YaroslavApatiev)
|
|
959
961
|
|
|
960
|
-
[<img alt="
|
|
962
|
+
[<img alt="yo-ga" src="https://avatars.githubusercontent.com/u/9553773?v=4&s=117" width="117">](https://github.com/yo-ga)[<img alt="zacacollier" src="https://avatars.githubusercontent.com/u/18710669?v=4&s=117" width="117">](https://github.com/zacacollier)[<img alt="akinboboye" src="https://avatars.githubusercontent.com/u/60622084?v=4&s=117" width="117">](https://github.com/akinboboye)[<img alt="allenhartwig" src="https://avatars.githubusercontent.com/u/1261521?v=4&s=117" width="117">](https://github.com/allenhartwig)[<img alt="ctbaird" src="https://avatars.githubusercontent.com/u/37962844?v=4&s=117" width="117">](https://github.com/ctbaird)
|
|
961
963
|
|
|
962
|
-
[<img alt="
|
|
964
|
+
[<img alt="dependabot[bot]" src="https://avatars.githubusercontent.com/in/29110?v=4&s=117" width="117">](https://github.com/apps/dependabot)[<img alt="bchew" src="https://avatars.githubusercontent.com/u/818316?v=4&s=117" width="117">](https://github.com/bchew)[<img alt="BorjaMacedo" src="https://avatars.githubusercontent.com/u/16381759?v=4&s=117" width="117">](https://github.com/BorjaMacedo)[<img alt="BrandonE" src="https://avatars.githubusercontent.com/u/542245?v=4&s=117" width="117">](https://github.com/BrandonE)[<img alt="guerrerocarlos" src="https://avatars.githubusercontent.com/u/82532?v=4&s=117" width="117">](https://github.com/guerrerocarlos)
|
|
963
965
|
|
|
964
|
-
[<img alt="
|
|
966
|
+
[<img alt="icarus-sullivan" src="https://avatars.githubusercontent.com/u/17626168?v=4&s=117" width="117">](https://github.com/icarus-sullivan)[<img alt="christophgysin" src="https://avatars.githubusercontent.com/u/527924?v=4&s=117" width="117">](https://github.com/christophgysin)[<img alt="cdubz" src="https://avatars.githubusercontent.com/u/10456740?v=4&s=117" width="117">](https://github.com/cdubz)[<img alt="corwinm" src="https://avatars.githubusercontent.com/u/7642548?v=4&s=117" width="117">](https://github.com/corwinm)[<img alt="danmactough" src="https://avatars.githubusercontent.com/u/357481?v=4&s=117" width="117">](https://github.com/danmactough)
|
|
965
967
|
|
|
966
|
-
[<img alt="
|
|
968
|
+
[<img alt="GeneralistDev" src="https://avatars.githubusercontent.com/u/1705096?v=4&s=117" width="117">](https://github.com/GeneralistDev)[<img alt="designfrontier" src="https://avatars.githubusercontent.com/u/422540?v=4&s=117" width="117">](https://github.com/designfrontier)[<img alt="daniel0707" src="https://avatars.githubusercontent.com/u/22343156?v=4&s=117" width="117">](https://github.com/daniel0707)[<img alt="dnicolson" src="https://avatars.githubusercontent.com/u/2276355?v=4&s=117" width="117">](https://github.com/dnicolson)[<img alt="dbunker" src="https://avatars.githubusercontent.com/u/751580?v=4&s=117" width="117">](https://github.com/dbunker)
|
|
967
969
|
|
|
968
|
-
[<img alt="
|
|
970
|
+
[<img alt="dobrynin" src="https://avatars.githubusercontent.com/u/12061016?v=4&s=117" width="117">](https://github.com/dobrynin)[<img alt="DavideSegullo" src="https://avatars.githubusercontent.com/u/17269969?v=4&s=117" width="117">](https://github.com/DavideSegullo)[<img alt="domaslasauskas" src="https://avatars.githubusercontent.com/u/2464675?v=4&s=117" width="117">](https://github.com/domaslasauskas)[<img alt="enolan" src="https://avatars.githubusercontent.com/u/61517?v=4&s=117" width="117">](https://github.com/enolan)[<img alt="EduardMcfly" src="https://avatars.githubusercontent.com/u/16842163?v=4&s=117" width="117">](https://github.com/EduardMcfly)
|
|
969
971
|
|
|
970
|
-
[<img alt="
|
|
972
|
+
[<img alt="iansu" src="https://avatars.githubusercontent.com/u/433725?v=4&s=117" width="117">](https://github.com/iansu)[<img alt="adamldoyle" src="https://avatars.githubusercontent.com/u/86401?v=4&s=117" width="117">](https://github.com/adamldoyle)[<img alt="thejuan" src="https://avatars.githubusercontent.com/u/329807?v=4&s=117" width="117">](https://github.com/thejuan)[<img alt="adam-nielsen" src="https://avatars.githubusercontent.com/u/278772?v=4&s=117" width="117">](https://github.com/adam-nielsen)[<img alt="againer" src="https://avatars.githubusercontent.com/u/509709?v=4&s=117" width="117">](https://github.com/againer)
|
|
971
973
|
|
|
972
|
-
[<img alt="
|
|
974
|
+
[<img alt="AlbertXingZhang" src="https://avatars.githubusercontent.com/u/12808025?v=4&s=117" width="117">](https://github.com/AlbertXingZhang)[<img alt="aldenquimby" src="https://avatars.githubusercontent.com/u/2145098?v=4&s=117" width="117">](https://github.com/aldenquimby)[<img alt="abianco-doxee" src="https://avatars.githubusercontent.com/u/56639478?v=4&s=117" width="117">](https://github.com/abianco-doxee)[<img alt="koterpillar" src="https://avatars.githubusercontent.com/u/140276?v=4&s=117" width="117">](https://github.com/koterpillar)[<img alt="aliclark" src="https://avatars.githubusercontent.com/u/85300?v=4&s=117" width="117">](https://github.com/aliclark)
|
|
973
975
|
|
|
974
|
-
[<img alt="
|
|
976
|
+
[<img alt="andersem" src="https://avatars.githubusercontent.com/u/509817?v=4&s=117" width="117">](https://github.com/andersem)[<img alt="triptec" src="https://avatars.githubusercontent.com/u/240159?v=4&s=117" width="117">](https://github.com/triptec)[<img alt="m0ppers" src="https://avatars.githubusercontent.com/u/819421?v=4&s=117" width="117">](https://github.com/m0ppers)[<img alt="cspotcode" src="https://avatars.githubusercontent.com/u/376504?v=4&s=117" width="117">](https://github.com/cspotcode)[<img alt="AndrewCEmil" src="https://avatars.githubusercontent.com/u/2167475?v=4&s=117" width="117">](https://github.com/AndrewCEmil)
|
|
975
977
|
|
|
976
|
-
[<img alt="
|
|
978
|
+
[<img alt="mapsi" src="https://avatars.githubusercontent.com/u/516735?v=4&s=117" width="117">](https://github.com/mapsi)[<img alt="aliatsis" src="https://avatars.githubusercontent.com/u/4140524?v=4&s=117" width="117">](https://github.com/aliatsis)[<img alt="akaila" src="https://avatars.githubusercontent.com/u/484181?v=4&s=117" width="117">](https://github.com/akaila)[<img alt="austencollins" src="https://avatars.githubusercontent.com/u/2752551?v=4&s=117" width="117">](https://github.com/austencollins)[<img alt="austin-payne" src="https://avatars.githubusercontent.com/u/29075091?v=4&s=117" width="117">](https://github.com/austin-payne)
|
|
977
979
|
|
|
978
|
-
[<img alt="
|
|
980
|
+
[<img alt="BenjaminBergerM" src="https://avatars.githubusercontent.com/u/50329833?v=4&s=117" width="117">](https://github.com/BenjaminBergerM)[<img alt="gdinn" src="https://avatars.githubusercontent.com/u/19908659?v=4&s=117" width="117">](https://github.com/gdinn)[<img alt="MEGApixel23" src="https://avatars.githubusercontent.com/u/4102786?v=4&s=117" width="117">](https://github.com/MEGApixel23)[<img alt="idmontie" src="https://avatars.githubusercontent.com/u/412382?v=4&s=117" width="117">](https://github.com/idmontie)[<img alt="ihendriks" src="https://avatars.githubusercontent.com/u/7311659?v=4&s=117" width="117">](https://github.com/ihendriks)
|
|
979
981
|
|
|
980
|
-
[<img alt="
|
|
982
|
+
[<img alt="jacintoArias" src="https://avatars.githubusercontent.com/u/7511199?v=4&s=117" width="117">](https://github.com/jacintoArias)[<img alt="JacekDuszenko" src="https://avatars.githubusercontent.com/u/24210015?v=4&s=117" width="117">](https://github.com/JacekDuszenko)[<img alt="jgrigg" src="https://avatars.githubusercontent.com/u/12800024?v=4&s=117" width="117">](https://github.com/jgrigg)[<img alt="jankdc" src="https://avatars.githubusercontent.com/u/8384002?v=4&s=117" width="117">](https://github.com/jankdc)[<img alt="janicduplessis" src="https://avatars.githubusercontent.com/u/2677334?v=4&s=117" width="117">](https://github.com/janicduplessis)
|
|
981
983
|
|
|
982
|
-
[<img alt="
|
|
984
|
+
[<img alt="jsnajdr" src="https://avatars.githubusercontent.com/u/664258?v=4&s=117" width="117">](https://github.com/jsnajdr)[<img alt="horyd" src="https://avatars.githubusercontent.com/u/916414?v=4&s=117" width="117">](https://github.com/horyd)[<img alt="jasonfungsing" src="https://avatars.githubusercontent.com/u/1302364?v=4&s=117" width="117">](https://github.com/jasonfungsing)[<img alt="jaydp17" src="https://avatars.githubusercontent.com/u/1743425?v=4&s=117" width="117">](https://github.com/jaydp17)[<img alt="jeremygiberson" src="https://avatars.githubusercontent.com/u/487411?v=4&s=117" width="117">](https://github.com/jeremygiberson)
|
|
983
985
|
|
|
984
|
-
[<img alt="
|
|
986
|
+
[<img alt="josephwarrick" src="https://avatars.githubusercontent.com/u/5392984?v=4&s=117" width="117">](https://github.com/josephwarrick)[<img alt="jlsjonas" src="https://avatars.githubusercontent.com/u/932193?v=4&s=117" width="117">](https://github.com/jlsjonas)[<img alt="jonathonadams" src="https://avatars.githubusercontent.com/u/24870903?v=4&s=117" width="117">](https://github.com/jonathonadams)[<img alt="joostfarla" src="https://avatars.githubusercontent.com/u/851863?v=4&s=117" width="117">](https://github.com/joostfarla)[<img alt="TheTeaCat" src="https://avatars.githubusercontent.com/u/20339741?v=4&s=117" width="117">](https://github.com/TheTeaCat)
|
|
985
987
|
|
|
986
|
-
[<img alt="
|
|
988
|
+
[<img alt="eeroniemi" src="https://avatars.githubusercontent.com/u/1384231?v=4&s=117" width="117">](https://github.com/eeroniemi)[<img alt="minibikini" src="https://avatars.githubusercontent.com/u/439309?v=4&s=117" width="117">](https://github.com/minibikini)[<img alt="em0ney" src="https://avatars.githubusercontent.com/u/5679658?v=4&s=117" width="117">](https://github.com/em0ney)[<img alt="webdeveric" src="https://avatars.githubusercontent.com/u/1823514?v=4&s=117" width="117">](https://github.com/webdeveric)[<img alt="ericr3r" src="https://avatars.githubusercontent.com/u/792171?v=4&s=117" width="117">](https://github.com/ericr3r)
|
|
987
989
|
|
|
988
|
-
[<img alt="
|
|
990
|
+
[<img alt="fernyettheplant" src="https://avatars.githubusercontent.com/u/3887243?v=4&s=117" width="117">](https://github.com/fernyettheplant)[<img alt="fernandomoraes" src="https://avatars.githubusercontent.com/u/2366763?v=4&s=117" width="117">](https://github.com/fernandomoraes)[<img alt="panva" src="https://avatars.githubusercontent.com/u/241506?v=4&s=117" width="117">](https://github.com/panva)[<img alt="Edweis" src="https://avatars.githubusercontent.com/u/18052624?v=4&s=117" width="117">](https://github.com/Edweis)[<img alt="frodeaa" src="https://avatars.githubusercontent.com/u/45172?v=4&s=117" width="117">](https://github.com/frodeaa)
|
|
989
991
|
|
|
990
|
-
[<img alt="
|
|
992
|
+
[<img alt="gbroques" src="https://avatars.githubusercontent.com/u/12969835?v=4&s=117" width="117">](https://github.com/gbroques)[<img alt="ganey" src="https://avatars.githubusercontent.com/u/1401832?v=4&s=117" width="117">](https://github.com/ganey)[<img alt="geoffmanningcleartrace" src="https://avatars.githubusercontent.com/u/101125585?v=4&s=117" width="117">](https://github.com/geoffmanningcleartrace)[<img alt="grakic-glopal" src="https://avatars.githubusercontent.com/u/118749735?v=4&s=117" width="117">](https://github.com/grakic-glopal)[<img alt="guillaume" src="https://avatars.githubusercontent.com/u/368?v=4&s=117" width="117">](https://github.com/guillaume)
|
|
991
993
|
|
|
992
|
-
[<img alt="mebibou" src="https://avatars.githubusercontent.com/u/305342?v=4&s=117" width="117">](https://github.com/mebibou)[<img alt="balassy" src="https://avatars.githubusercontent.com/u/1872777?v=4&s=117" width="117">](https://github.com/balassy)[<img alt="bayoudhi" src="https://avatars.githubusercontent.com/u/3085156?v=4&s=117" width="117">](https://github.com/bayoudhi)[<img alt="enapupe" src="https://avatars.githubusercontent.com/u/291082?v=4&s=117" width="117">](https://github.com/enapupe)[<img alt="aardvarkk" src="https://avatars.githubusercontent.com/u/1251092?v=4&s=117" width="117">](https://github.com/aardvarkk)
|
|
994
|
+
[<img alt="mebibou" src="https://avatars.githubusercontent.com/u/305342?v=4&s=117" width="117">](https://github.com/mebibou)[<img alt="balassy" src="https://avatars.githubusercontent.com/u/1872777?v=4&s=117" width="117">](https://github.com/balassy)[<img alt="bayoudhi" src="https://avatars.githubusercontent.com/u/3085156?v=4&s=117" width="117">](https://github.com/bayoudhi)[<img alt="enapupe" src="https://avatars.githubusercontent.com/u/291082?v=4&s=117" width="117">](https://github.com/enapupe)[<img alt="aardvarkk" src="https://avatars.githubusercontent.com/u/1251092?v=4&s=117" width="117">](https://github.com/aardvarkk)
|