# This is the official list of Skia authors for copyright purposes.
#
# Names should be added to this file with one of the following patterns:
#
# For individual contributors:
# Name <email address>
#
# For corporate contributors:
# Organization <fnmatch pattern>
# See examples below or python fnmatch module documentation for more information.
#
# Please keep the list sorted alphabetically.

ACCESS CO., LTD. <*@access-company.com>
Amazon, Inc <*@amazon.com>
Anthony Catel <paraboul@gmail.com>
ARM <*@arm.com>
Dawson Coleman <dawsonmcoleman@gmail.com>
Ehsan Akhgari <ehsan.akhgari@gmail.com>
Facebook, Inc. <*fb.com>
George Wright <george@mozilla.com>
GiWan Go <gogil@stealien.com>
Google Inc. <*@google.com>
Herb Derby <herbderby@gmail.com>
Igalia <*@igalia.com>
Intel <*@intel.com>
Ion Rosca <rosca@adobe.com>
Jacek Caban <cjacek@gmail.com>
Jeff Muizelaar <jmuizelaar@mozilla.com>
Jongdeok Kim <jongdeok.kim@navercorp.com>
Lee Salzman <lsalzman@mozilla.com>
Marcin Kazmierczak <mar.kazmierczak@gmail.com>
Matthew Leibowitz <mattleibow@live.com>
Microsoft <*@microsoft.com>
MIPS <*@imgtec.com>
NVIDIA <*@nvidia.com>
Opera Software ASA <*@opera.com>
Pavel Krajcevski <pavel@cs.unc.edu>
Samsung <*@samsung.com>
Samsung Open Source Group <*@osg.samsung.com>
Sergey Melnikov <Melnikov.Sergey.V@gmail.com>
Skia <*@skia.org>
Skia Buildbots <skia.buildbots@gmail.com>
Sony Mobile Communications Inc. <*@sonymobile.com>
Steve Singer <steve@ssinger.info>
Sylvestre Ledru <sylvestre.ledru@gmail.com>
The Chromium Authors <*@chromium.org>
Thiago Fransosi Farina <thiago.farina@gmail.com>
Jose Mayol <jei.mayol@gmail.com>
Linaro <*@linaro.org>
Christian Plesner Hansen <plesner@t.undra.org>
Marco Alesiani <marco.diiga@gmail.com>
Adobe Systems Incorporated <*@adobe.com>
Yandex LLC <*@yandex-team.ru>
Kaloyan Donev <kdonev@gmail.com>
Yong-Hwan Baek <meisterdevhwan@gmail.com>
Alexander Khovansky <alx.khovansky@gmail.com>
Zhuo Qingliang <zhuo.dev@gmail.com>
Mainframe North <*@mainframe.co.uk>
