/**************************************************************
 * 
 * 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.
 * 
 *************************************************************/



#include "macros.inc"

Module gid_Module_Prg_Math
    MOD_NAME_DESC ( MODULE_PRG_MATH );
    ParentID = gid_Module_Prg;
    Sortkey = "600";
    Styles =(APPLICATIONMODULE);
End

Module gid_Module_Prg_Math_Bin
    PackageInfo = "packinfo_office.txt";
    MOD_NAME_DESC ( MODULE_PRG_MATH_BIN );
    ParentID = gid_Module_Prg_Math;
    Sortkey = "100";
    Minimal = YES;
    Default = YES;
    Styles = (HIDDEN_ROOT);
    Files = (gid_File_Html_W3c_Ipr,gid_File_Lib_Sm,gid_File_Lib_Smd,gid_File_Extra_Urlmore_Math,gid_File_Extra_Urlnew_Math,gid_File_Extra_Urltasks_Math,
    gid_File_Share_Registry_Math_Xcd,
    gid_File_Tmp_Userinstall_Math_Inf);
End

// Module gid_Module_Prg_Math_Help
//     MOD_NAME_DESC ( MODULE_PRG_MATH_HELP );
//     ParentID = gid_Module_Prg_Math;
//     Sortkey = "200";
//     Default = YES;
//     Files = (gid_File_Help_Smath_Zip);
// End

Module gid_Module_Brand_Prg_Math
    PackageInfo = "packinfo_brand.txt";
    Name = "gid_Module_Brand_Prg_Math";
    Description = "gid_Module_Brand_Prg_Math";
    ParentID = gid_Module_Prg_Math;
    Sortkey = "100";
    InstallOrder = "1040";
    Minimal = YES;
    Default = YES;
    Styles = (HIDDEN_ROOT);
    Files = (gid_File_Exe_Smath);
End

Module gid_Module_Langpack_Math_Template
    ParentID = gid_Module_Prg_Math_Bin;
    Name = "gid_Module_Langpack_Math_Template";
    Description = "gid_Module_Langpack_Math_Template";
    Styles = (TEMPLATEMODULE);
    Files = (gid_File_Help_Smath_Zip,
             gid_File_Res_Sm);
End

#include "alllangmodules_math.inc"
