# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements.  See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership.  The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License.  You may obtain a copy of the License at
#
#   http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied.  See the License for the
# specific language governing permissions and limitations
# under the License.

Anita Fronczak <afronczak@google.com> <akarbow@gmail.com>
Antony Mayi <antonymayi@users.noreply.github.com>
Arthur Wiedmer <arthur@apache.org> <arthur_wiedmer@arthur-wiedmer.local>
Arthur Wiedmer <arthur@apache.org> <arthur.wiedmer@airbnb.com>
Arthur Wiedmer <arthur@apache.org> <arthur.wiedmer@gmail.com>
Bolke de Bruin <bolke@xs4all.nl> <bolke@Bolkes-MacBook-Pro.local>
Bolke de Bruin <bolke@xs4all.nl> <bolkedebruin@users.noreply.github.com>
Benjamin Grenier <52801483+benjamingrenier@users.noreply.github.com>
Chip Myers Jr. <chip.myersjr@gmail.com>
Chris Riccomini <criccomini@apache.org> <chrisr@wepay.com>
Chris Riccomini <criccomini@apache.org> <criccomini@users.noreply.github.com>
Dan Davydov <ddavydov@twitter.com> <dan.davydov@airbnb.com>
Daniel Imberman <daniel.imberman@gmail.com> <daniel@astronomer.io>
Daniel Imberman <daniel.imberman@gmail.com> <danielryan2430@gmail.com>
Daniel Standish <dstandish@users.noreply.github.com>
Dependabot [bot] <49699333+dependabot[bot]@users.noreply.github.com>
Ephraim Anierobi <splendidzigy24@gmail.com> <4122866+ephraimbuddy@users.noreply.github.com>
Felix Uellendall <feluelle@users.noreply.github.com> <feluelle@users.noreply.github.com>
Feng Lu <fenglu@fengcloud.hot.corp.google.com> <fenglu@google.com>
Fokko Driesprong <fokko@apache.org> <fokko@driesprong.frl>
Fokko Driesprong <fokko@apache.org> <fokkodriesprong@godatadriven.com>
Gerard Toonstra <gtoonstra@gmail.com>
Greg Neiheisel <greg@astronomer.io>
Hossein Torabi <hossein.torabi@alopeyk.com> <blcksrx@gmail.com>
James Timmins <james@astronomer.io> <jameshtimmins@gmail.com>
Jarek Potiuk <jarek@potiuk.com> <jarek.potiuk@polidea.com> <potiuk@apache.org>
Jeremiah Lowin <jlowin@apache.org>
Jeremiah Lowin <jlowin@apache.org> <jlowin@gmail.com>
Jeremiah Lowin <jlowin@apache.org> <jlowin@iHal.local>
Jeremiah Lowin <jlowin@apache.org> <jlowin@Jeremiahs-MacBook-Air.local>
Jeremiah Lowin <jlowin@apache.org> <jlowin@jlowin.local>
Jeremiah Lowin <jlowin@apache.org> <jlowin@users.noreply.github.com>
Jiajie Zhong <zhongjiajie955@hotmail.com>
Jorge Machado <jorge.w.machado@hotmail.com>
Joseph Yen <joseph.yen@gmail.com>
Joy Gao <Joygao@apache.org> <joyg@wepay.com>
Kamil Breguła <mik-laj@users.noreply.github.com> <kamil.bregula@polidea.com>
Kaveri Sharma <kaverisharma09@gmail.com>
Kaxil Naik <kaxilnaik@apache.org>
Kaxil Naik <kaxilnaik@apache.org> <kaxilnaik@gmail.com>
Kousuke Saruta <sarutak@oss.nttdata.co.jp>
Kousuke Saruta <sarutak@oss.nttdata.co.jp> <sarutak@oss.nttdata.com>
Marcin Szymański <ms32035@gmail.com>
Martijn Pieters <mj@zopatista.com>
Martijn Pieters <mj@zopatista.com> <github.com@zopatista.com>
Matthew Bruce <matthew.bruce@shopify.com> <matthew.robert.bruce@gmail.com>
Maxime Beauchemin <maxime.beauchemin@apache.org> <maxime_beauchemin@i-0963e1d9.inst.aws.airbnb.com>
Maxime Beauchemin <maxime.beauchemin@apache.org> <maxime_beauchemin@i-a94af485.inst.aws.airbnb.com>
Maxime Beauchemin <maxime.beauchemin@apache.org> <maxime.beauchemin@airbnb.com>
Maxime Beauchemin <maxime.beauchemin@apache.org> <maximebeauchemin@gmail.com>
Maxime Beauchemin <maxime.beauchemin@apache.org> <maxime_beauchemin@maxime-beauchemin.local>
Michael Chirico <michaelchirico4@gmail.com>
Michael Chirico <michaelchirico4@gmail.com> <michael.chirico@grabtaxi.com>
Michał Słowikowski <michalslowikowski00@gmail.com>
Mustafa Gök <sd.mustafagok@gmail.com>
Mustafa Gök <sd.mustafagok@gmail.com> <gokmust@itu.edu.tr>
Niels Zeilemaker <niels@zeilemaker.nl>
Niels Zeilemaker <niels@zeilemaker.nl> <nielszeilemaker@godatadriven.com>
Nikolay Kolev <nikolays@wepay.com>
Patrick McKenna <patrick.b.mckenna@gmail.com>
Patrick McKenna <patrick.b.mckenna@gmail.com> <patrickmckenna@github.com>
Patrick Leo Tardif <plt@rdif.me>
Patrick Leo Tardif <plt@rdif.me> <patrick_tardif@unassigned0391.local>
Peng Chen <pengchen@xiaohongshu.com> <348707924@qq.com>
Pradeep Bhadani <pradeep.bhadani@gmail.com>
Rafael Bottega <rbottega@worldremit.com> <boittega@gmail.com>
Sergio Kefalas <sergiokef@gmail.com>
Sevak Avetisyan <sevak.avet@gmail.com>
Sid Anand <r39132@gmail.com> <sanand@agari.com>
Sid Anand <r39132@gmail.com> <sianand@paypal.com>
Sid Anand <r39132@gmail.com> <siddharthanand@yahoo.com>
Sumit Maheshwari <sumeet.manit@gmail.com> <smaheshwari@twitter.com>
Sumit Maheshwari <sumeet.manit@gmail.com> <sumitm@qubole.com>
Tao Feng <fengtao04@gmail.com> <tfeng@lyft.com>
Tobiasz Kedzierski <tobiasz.kedzierski@polidea.com>
Tomek Kzukowski <tomek@tomekzukowski.com>
Tomek Urbaszek <turbaszek@apache.org> <turbaszek@gmail.com>
Tomek Urbaszek <turbaszek@apache.org> <tomasz.urbaszek@polidea.com>
Xiaodong Deng <xd_deng@hotmail.com>
Xiaodong Deng <xd_deng@hotmail.com> <11539188+XD-DENG@users.noreply.github.com>
Xiaodong Deng <xd_deng@hotmail.com> <xd.deng.r@gmail.com>
Yuen-Kuei Hsueh <ph.study@gmail.com>
Zikun Zhu <33176974+zikun@users.noreply.github.com>
Ashish Patel <ashishpatel0720@gmail.com> <ashish.patel@walmart.com>
Ashish Patel <ashishpatel0720@gmail.com> <ashish.patel@walmartlabs.com>
Ashish Patel <ashishpatel0720@gmail.com> <ashish.patel@skyscanner.net>
Ashish Patel <ashishpatel0720@gmail.com> <ashishpatel@skyscanner.net>
