# People who have agreed to one of the CLAs and can contribute patches.
# The AUTHORS file lists the copyright holders; this file
# lists people.  For example, Google employees are listed here
# but not in AUTHORS, because Google holds the copyright.
#
# https://developers.google.com/open-source/cla/individual
# https://developers.google.com/open-source/cla/corporate
#
# Names should be added to this file as:
#     Name <email address>

Ulf Adams <ulfjack@google.com>
Eddie Aftandilian <eaftan@google.com>
Miguel Alcon Pinto <malcon@google.com>
Michael Beardsworth <beardsworth@google.com>
Anthony Bellissimo <twon33@gmail.com>
Lukacs Berki <lberki@google.com>
Shreya Bhattarai <shreyax@google.com>
Klaas Boesche <klaasb@google.com>
Phil Bordelon <sunfall@google.com>
Volker Braun <vbraun.name@gmail.com>
Thomas Broyer <t.broyer@ltgt.net>
David Chen <dzc@google.com>
Kristina Chodorow <kchodorow@google.com>
Onath Claridge <claridge@google.com>
Laszlo Csomor <laszlocsomor@google.com>
Steven Dee <steven@choosemuse.com>
Matthew DeVore <matvore@google.com>
Alan Donovan <adonovan@google.com>
Dave Dopson <ddopson@google.com>
Rumou Duan <rduan@google.com>
Greg Estren <gregce@google.com>
Thiago Farina <tfarina@chromium.org>
Eric Fellheimer <felly@google.com>
John Field <jfield@google.com>
Peter Foley <pefoley2@pefoley.com>
Carmi Grushko <carmi@google.com>
Nathan Harmata <nharmata@google.com>
Tom Hennigan <tomhennigan@google.com>
Alex Humesky <ahumesky@google.com>
Roland Huß <roland@jolokia.org>
Kamil Jiwa <kjiwa@google.com>
Anastasios Kakalis <anastasios@google.com>
Manuel Klimek <klimek@google.com>
Erik Kuefler <ekuefler@gmail.com>
Laurent Le Brun <laurentlb@google.com>
Ross Light <light@google.com>
liuhuahang <liuhuahang@zerus.co>
Marian Lobur <loburm@google.com>
Dmitry Lomov <dslomov@google.com>
Dave MacLachlan <dmaclach@google.com>
David Mankin <dmankin@atlassian.com>
Kamal Marhubi <kamal@marhubi.com>
Damien Martin-Guillerez <dmarting@google.com>
Carl Mastrangelo <carl-mastrangelo@users.noreply.github.com>
Michajlo Matijkiw <michajlo@google.com>
Liam Miller-Cushon <cushon@google.com>
Noah Misch <nmisch@google.com>
Kyle Moffett <kyle@moffetthome.net>
Nicholas Gorski <nicholasgorski@outlook.com>
Han-Wen Nienhuys <hanwen@google.com>
Gunther Noack <gnoack@google.com>
Chris Parsons <cparsons@google.com>
Andrew Pellegrini <apell@google.com>
Allen Porter <allen.porter@gmail.com>
Doug Rabson <dfr@rabson.org>
Janak Ramakrishnan <janakr@google.com>
Francois-Rene Rideau <tunes@google.com>
Ethan Rublee <rublee@google.com>
David Santiago <david.santiago@gmail.com>
Mark Schaller <mschaller@google.com>
Peter Schmitt <schmitt@google.com>
Cody Schroeder <schroederc@google.com>
Dmitry Shevchenko <dmishe@google.com>
John Shimek <varikin@gmail.com>
Brian Silverman <bsilver16384@gmail.com>
Michael Staib <mstaib@google.com>
John Sullivan <john.t.sullivan@gmail.com>
Keefer Taylor <keefer@google.com>
Michael Thvedt <mthvedt@google.com>
Cristopher Olson <topher.the.geek@gmail.com>
Daniel Wagner-Hall <danielwh@google.com>
Zhong Wang <linuxerwang@gmail.com>
Kevin Watts <kevinwwatts@gmail.com>
Florian Weikert <fwe@google.com>
Philipp Wollermann <philwo@google.com>
Jie Yu <yujie.jay@gmail.com>
Andrew Z Allen <me@andrewzallen.com>
Ming Zhao <mzhao@luminatewireless.com>
