# Licensed 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.
# Welcome to Jekyll!

aizhamal:
    name: Aizhamal Nurmamat kyzy
    email: aizhamal@google.com
    twitter: iamaijamal
aljoscha:
    name: Aljoscha Krettek
    email: aljoscha@apache.org
    twitter: aljoscha
altay:
    name: Ahmet Altay
    email: altay@apache.org
ccy:
    name: Charles Chen
    email: ccy@apache.org
chamikara:
    name: Chamikara Jayalath
    email: chamikara@apache.org
davor:
    name: Davor Bonaci
    email: davor@apache.org
    twitter: BonaciDavor
dhalperi:
    name: Dan Halperin
    email: dhalperi@apache.org
    twitter:
fjp:
    name: Frances Perry
    email: frances@apache.org
    twitter: francesjperry
harshithdwivedi:
    name: Harshit Dwivedi
    email: harshithdwivedi@gmail.com
    twitter: harshithdwivedi
iemejia:
    name: Ismaël Mejía
    email: iemejia@apache.org
    twitter: iemejia
jamesmalone:
    name: James Malone
    email: jamesmalone@apache.org
    twitter: chimerasaurus
jesseanderson:
    name: Jesse Anderson
    twitter: jessetanderson
jphalip:
    name: Julien Phalip
    email: jphalip@google.com
    twitter: julienphalip
klk:
    name: Kenneth Knowles
    email: klk@apache.org
    twitter: KennKnowles
lkuligin:
    name: Leonid Kuligin
    email: kuligin@google.com
    twitter: lkulighin
robertwb:
    name: Robert Bradshaw
    email: robertwb@apache.org
    twitter:
takidau:
    name: Tyler Akidau
    email: takidau@apache.org
    twitter: takidau
tgroh:
    name: Thomas Groh
    email: tgroh@google.com
thw:
    name: Thomas Weise
    email: thw@apache.org
    twitter: thweise
jkff:
    name: Eugene Kirpichov
    email: ekirpichov@gmail.com
    twitter:
jbonofre:
    name: Jean-Baptiste Onofré
    email: jbonofre@apache.org
    twitter: jbonofre
ianand:
    name: Anand Iyer
    email: ianand@google.com
    twitter:
aromanenko:
    name: Alexey Romanenko
    email: aromanenko@apache.org
    twitter: alexromdev
pabloem:
    name: Pablo Estrada
    email: pabloem@apache.org
    twitter: polecitoem
rfernand:
    name: Rafael Fernández
    email: rfernand@google.com
mbaetens:
    name: Matthias Baetens
    email: baetensmatthias@gmail.com
    twitter: matthiasbaetens
