﻿<?xml version="1.0" encoding="utf-8"?>

<!--
   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.
-->

<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <ItemGroup>
    <Filter Include="Source Files">
      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
      <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
    </Filter>
    <Filter Include="Header Files">
      <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
      <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
    </Filter>
    <Filter Include="Resource Files">
      <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
      <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
    </Filter>
  </ItemGroup>
  <ItemGroup>
    <ClCompile Include="src\org\apache\hadoop\io\nativeio\NativeIO.c">
      <Filter>Source Files</Filter>
    </ClCompile>
    <ClCompile Include="src\org\apache\hadoop\io\nativeio\file_descriptor.c">
      <Filter>Source Files</Filter>
    </ClCompile>
    <ClCompile Include="src\org\apache\hadoop\util\bulk_crc32.c">
      <Filter>Source Files</Filter>
    </ClCompile>
    <ClCompile Include="src\org\apache\hadoop\util\NativeCrc32.c">
      <Filter>Source Files</Filter>
    </ClCompile>
    <ClCompile Include="src\org\apache\hadoop\util\NativeCodeLoader.c">
      <Filter>Source Files</Filter>
    </ClCompile>
    <ClCompile Include="src\org\apache\hadoop\io\compress\lz4\lz4.c">
      <Filter>Source Files</Filter>
    </ClCompile>
    <ClCompile Include="src\org\apache\hadoop\io\compress\lz4\lz4hc.c">
      <Filter>Source Files</Filter>
    </ClCompile>
    <ClCompile Include="src\org\apache\hadoop\io\compress\lz4\Lz4Compressor.c">
      <Filter>Source Files</Filter>
    </ClCompile>
    <ClCompile Include="src\org\apache\hadoop\io\compress\lz4\Lz4Decompressor.c">
      <Filter>Source Files</Filter>
    </ClCompile>
    <ClCompile Include="src\org\apache\hadoop\security\JniBasedUnixGroupsMappingWin.c">
      <Filter>Source Files</Filter>
    </ClCompile>
  </ItemGroup>
  <ItemGroup>
    <ClInclude Include="..\src\org\apache\hadoop\util\crc32_zlib_polynomial_tables.h">
      <Filter>Source Files</Filter>
    </ClInclude>
    <ClInclude Include="..\src\org\apache\hadoop\util\crc32c_tables.h">
      <Filter>Source Files</Filter>
    </ClInclude>
    <ClInclude Include="src\org\apache\hadoop\io\nativeio\file_descriptor.h">
      <Filter>Source Files</Filter>
    </ClInclude>
    <ClInclude Include="src\org\apache\hadoop\util\bulk_crc32.h">
      <Filter>Header Files</Filter>
    </ClInclude>
    <ClInclude Include="src\org\apache\hadoop\util\crc32_zlib_polynomial_tables.h">
      <Filter>Header Files</Filter>
    </ClInclude>
    <ClInclude Include="src\org\apache\hadoop\util\crc32c_tables.h">
      <Filter>Header Files</Filter>
    </ClInclude>
    <ClInclude Include="src\org_apache_hadoop.h">
      <Filter>Header Files</Filter>
    </ClInclude>
  </ItemGroup>
</Project>