# Each line is a file pattern followed by one or more owners.

# These owners will be the default owners for everything in
# the repo, unless a later match takes precedence.
#
*       @gtristan @juergbi @BenjaminSchubert @cs-shadow
