<!--

  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>
 
        <locale/>
        
        <external-library-path>
            <path-element>${env.PLAYERGLOBAL_HOME}/${playerglobal.version}/playerglobal.swc</path-element>
        </external-library-path>

        <library-path/>
                
        <source-path>
            <path-element>src</path-element>
            <path-element>../framework/src</path-element>
        </source-path>
        
        <keep-as3-metadata name="Bindable"/>
        <keep-as3-metadata name="Managed"/>
        <keep-as3-metadata name="ChangeEvent"/>
        <keep-as3-metadata name="NonCommittingChangeEvent"/>
        <keep-as3-metadata name="Transient"/>
    </compiler>
    
    <include-classes>
        <class>CoreClasses</class>
    </include-classes>
        
    <resource-bundle-list>bundles.properties</resource-bundle-list>
    
    <target-player>${playerglobal.version}</target-player>
</flex-config>
