# This is the official list of Go frontend authors for copyright
# purposes.  This file is distinct from the CONTRIBUTORS files.
# See the latter for an explanation.

# Names should be added to this file as
#	Name or Organization <email address>
# The email address is not required for organizations.

# Please keep the list sorted.

Alexander Shopov <ash@kambanaria.org>
Andrew Wilkins <axwalk@gmail.com>
ARM Ltd.
Atos Infogerance
Baokun Lee <nototon@gmail.com>
Ben Shi <powerman1st@163.com>
Benny Siegert <bsiegert@gmail.com>
Cavium
Christopher Wedgwood <cw@f00f.org>
Dave Cheney <dave@cheney.net>
Ettl Martin <ettl.martin78@googlemail.com>
Evan Shaw <edsrzf@gmail.com>
Google Inc.
IBM Inc.
James Clarke <jrtc27@jrtc27.com>
James Cowgill <james.cowgill@imgtec.com>
Janne Snabb <snabb@epipe.com>
Joel Sherrill <joel.sherrill@gmail.com>
John Paul Adrian Glaubitz <glaubitz@physik.fu-berlin.de>
Linaro
Massimiliano Ghilardi <massimiliano.ghilardi@gmail.com>
Matthias Klose <doko@ubuntu.com>
Nikhil Benesch <nikhil.benesch@gmail.com>
Oracle
Rainer Orth <ro@cebitec.uni-bielefeld.de>
Rémy Oudompheng <oudomphe@phare.normalesup.org>
Red Hat, Inc.
Sanjoy Das <sanjoy@playingwithpointers.com>
Shenghou Ma <minux@golang.org> <minux.ma@gmail.com>
Svante Signell <svante.signell@gmail.com>
Thiago Avelino <avelinorun@gmail.com>
Tobias Klauser <tklauser@distanz.ch>
Uros Bizjak <ubizjak@gmail.com>
Vinu Rajashekhar <vinutheraj@gmail.com>
Western Digital Technologies, Inc.
Xia Bin <snyh@snyh.org>
