################################################################################
##
##  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.
##
################################################################################
sdk.mustella.excludes=LangPacks/Danish/**/*.mxml,LangPacks/German/**/*.mxml,LangPacks/Spanish/**/*.mxml,LangPacks/Finnish/**/*.mxml,LangPacks/French/**/*.mxml,LangPacks/Italian/**/*.mxml,LangPacks/Korean/**/*.mxml,LangPacks/Norwegian/**/*.mxml,LangPacks/Dutch/**/*.mxml,LangPacks/Portuguese/**/*.mxml,LangPacks/Russian/**/*.mxml,LangPacks/Swedish/**/*.mxml,LangPacks/ChineseSimplified/**/*.mxml,LangPacks/ChineseTraditional/**/*.mxml,DMV/**/*.mxml,charts/**/*.mxml,components/**/Backups/**/*.mxml,components/SWFLoader/SWFs/assets/*.swf,components/HorizontalList/**/HorizontalList_DataProvider.mxml,components/TileList/**/TileList_DataProvider.mxml,containers/Panel/**/Panel_ConstraintBindingTests.mxml,components/DataGrid/Bugs/datagrid_Bugs_bc.mxml,SkinningImprovements/**/*.mxml,SkinStates/**/*.mxml,components/TreeDMV/**/*.mxml,genericloader/**/*.mxml,Samples/Flexstore/**/*.mxml,gumbo/components/Button/styles/FxButton_textStyles_tester.mxml,gumbo/components/CheckBox/styles/FxCheckBox_textStyles_tester.mxml,spark/effects/AnimateTransformRotate3D/**/*.mxml,gumbo/components/PopUpAnchor/Properties/PopUpAnchor_Properties_MP.mxml,CompiletimeLocalization/**/*.mxml,resources/ResourceBundle/Methods/**/*.mxml,spark/components/VideoPlayer/**/*.mxml,spark/components/VideoDisplay/**/*.mxml,LangPacks/Spark/**/*.mxml,mobile/components/CalloutButton/**/*.mxml


apollo_only_excludes=resources/Integration/Compiler/**/*.mxml

sdk.mustella.swfs=**/*.swf
sdk.mustella.includes=**/*.mxml
