<!--

  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.

-->
<flex-config>

    <compiler>
        <accessible>true</accessible>
        
        <external-library-path>
            <path-element>${env.PLAYERGLOBAL_HOME}/${playerglobal.version}/playerglobal.swc</path-element>
            <path-element>../../libs/framework.swc</path-element>
        </external-library-path>
        
        <keep-as3-metadata>
        <name>Bindable</name>
            <name>Managed</name>
            <name>ChangeEvent</name>
            <name>NonCommittingChangeEvent</name>
            <name>Transient</name>
        </keep-as3-metadata>
        
        <namespaces>
            <namespace>
                <uri>library://ns.adobe.com/flex/mx</uri>
                <manifest>manifest.xml</manifest>
            </namespace>
            <namespace>
                <uri>http://www.adobe.com/2006/mxml</uri>
                <manifest>manifest.xml</manifest>
            </namespace>
        </namespaces>
        
        <source-path>
            <path-element>src</path-element>
        </source-path>
    </compiler>
    
    <include-classes>
        <class>MxClasses</class>
    </include-classes>
    
    <include-file>
        <name>defaults.css</name>
        <path>defaults.css</path>
    </include-file>
    <include-file>
        <name>defaults-3.0.0.css</name>
        <path>defaults-3.0.0.css</path>
    </include-file>
    
    <include-namespaces>
        <uri>library://ns.adobe.com/flex/mx</uri>
    </include-namespaces>
    
    <resource-bundle-list>bundles.properties</resource-bundle-list>
    
    <target-player>${playerglobal.version}</target-player>
</flex-config>
