# GitHub code owners
# See https://help.github.com/articles/about-codeowners/
#
# KEEP THIS FILE SORTED. Order is important. Last match takes precedence.

builder/**                              @dnephin @tonistiigi
client/**                               @dnephin
contrib/mkimage/**                      @tianon
daemon/graphdriver/devmapper/**         @rhvgoyal 
daemon/graphdriver/lcow/**              @johnstep @jhowardmsft
daemon/graphdriver/overlay/**           @dmcgowan
daemon/graphdriver/overlay2/**          @dmcgowan
daemon/graphdriver/windows/**           @johnstep @jhowardmsft
daemon/logger/awslogs/**                @samuelkarp  
hack/**                                 @dnephin @tianon
hack/integration-cli-on-swarm/**        @AkihiroSuda
integration-cli/**                      @dnephin @vdemeester
integration/**                          @dnephin @vdemeester
pkg/testutil/**                         @dnephin
plugin/**                               @cpuguy83
project/**                              @thaJeztah
