# Below is a list of people and organizations that have contributed
# to the R8 project. Names should be added to the list like so:
#
#   Name/Organization <email address>

Google Inc.
Uber Technologies Inc.
Square Inc.
Meta Platforms, Inc.

Albert Jin <albert.jin@gmail.com>
Kevin Sun <snxngxng@gmail.com>
Søren Gjesse <soren@gjesse.dk>
Andreas Gampe <agampe@meta.com>
Tiangong Li <tgli@meta.com>
