<!--

  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>
            <path-element>../../libs/spark.swc</path-element>
            <path-element>../../libs/textLayout.swc</path-element>
        </external-library-path>

        <keep-as3-metadata>
            <name>Bindable</name>
            <name>Managed</name>
            <name>ChangeEvent</name>
            <name>NonCommittingChangeEvent</name>
            <name>Transient</name>
            <name>SkinPart</name>
        </keep-as3-metadata>

        <locale/>

        <library-path/>

        <namespaces>
            <namespace>
                <uri>http://flex.apache.org/experimental/ns</uri>
                <manifest>manifest.xml</manifest>
            </namespace>
            <namespace>
                <uri>library://ns.adobe.com/flex/spark</uri>
                <manifest>spark-manifest.xml</manifest>
            </namespace>
        </namespaces>

        <source-path>
            <path-element>src</path-element>
        </source-path>

        <show-deprecation-warnings>false</show-deprecation-warnings>
        <warn-no-constructor>false</warn-no-constructor>
    </compiler>

	<include-namespaces>
		 <uri>http://flex.apache.org/experimental/ns</uri>
	</include-namespaces>

    <include-classes>
        <class>ExperimentalClasses</class>
    </include-classes>

    <include-file>
        <name>defaults.css</name>
        <path>defaults.css</path>
    </include-file>

    <resource-bundle-list>bundles.properties</resource-bundle-list>

    <target-player>${playerglobal.version}</target-player>
</flex-config>
