<?xml version="1.0" encoding="utf-8"?>
<!--

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.

-->
<project>
  <output>
    <movie version="20"/>
    <movie disabled="False"/>
    <movie platform="Flash Player"/>
    <movie background="#FFFFFF"/>
    <movie height="600"/>
    <movie fps="60"/>
    <movie path="bin-debug/DataGridExample.swf"/>
    <movie input=""/>
    <movie width="800"/>
  </output>
  &lt;!-- Other classes to be compiled into your SWF --&gt;
  <jsOutput>
    <option path=""/>
  </jsOutput>
  <classpaths>
    <class path="src/main/royale"/>
  </classpaths>
  <moonshineResourcePaths></moonshineResourcePaths>
  <moonshineNativeExtensionPaths></moonshineNativeExtensionPaths>
  <build>
    <option showUnusedTypeSelectorWarnings="True"/>
    <option linkReport=""/>
    <option showActionScriptWarnings="True"/>
    <option showDeprecationWarnings="True"/>
    <option additional="+configname=flex"/>
    <option optimize="False"/>
    <option antBuildPath="build/build.xml"/>
    <option useNetwork="True"/>
    <option sourceMap="False"/>
    <option loadConfig=""/>
    <option useResourceBundleMetadata="True"/>
    <option locale=""/>
    <option compilerConstants=""/>
    <option es="False"/>
    <option warnings="True"/>
    <option showBindingWarnings="True"/>
    <option strict="True"/>
    <option allowSourcePathOverlap="False"/>
    <option verboseStackTraces="False"/>
    <option accessible="False"/>
    <option customSDK=""/>
    <option benchmark="False"/>
    <option staticLinkRSL="False"/>
  </build>
  <mavenBuild>
    <option dominoNotesProgram=""/>
    <option commandLine=""/>
    <option settingsFilePath=""/>
    <option dominoNotesPlatform=""/>
    <option mavenBuildPath=""/>
    <actions>
      <action actionName="Build" action="install"/>
      <action actionName="Clean and package" action="clean package"/>
      <action actionName="Clean" action="clean"/>
      <action actionName="Clean and Build" action="clean install"/>
      <action actionName="Exploded" action="war:exploded"/>
    </actions>
  </mavenBuild>
  <includeLibraries></includeLibraries>
  <libraryPaths></libraryPaths>
  <externalLibraryPaths></externalLibraryPaths>
  <rslPaths></rslPaths>
  <intrinsics>
    <element path="Library/AS3/frameworks/Flex4"/>
    <element path="Library\AS3\frameworks\Flex4"/>
  </intrinsics>
  <library></library>
  <modules/>
  <compileTargets>
    <compile path="src/main/royale/DataGridExample.mxml"/>
  </compileTargets>
  <hiddenPaths></hiddenPaths>
  <preBuildCommand>null</preBuildCommand>
  <postBuildCommand alwaysRun="False">null</postBuildCommand>
  <trustSVNCertificate>False</trustSVNCertificate>
  <options>
    <option visualEditorExportPath=""/>
    <option testMovieCommand=""/>
    <option testMovie=""/>
    <option showHiddenPaths="False"/>
    <option isDominoVisualEditor="False"/>
    <option isPrimeFacesVisualEditor="False"/>
    <option isRoyale="True"/>
    <option isExportedToExistingSource="False"/>
    <option defaultBuildTargets=""/>
    <option jdkType="default-java"/>
  </options>
  <moonshineRunCustomization>
    <option deviceSimulator="null"/>
    <option urlToLaunch=""/>
    <option targetPlatform="5"/>
    <option webBrowser="null"/>
    <option projectType="2"/>
    <option customUrlToLaunch=""/>
    <option deviceConnectType="USB"/>
    <option launchMethod="Simulator"/>
    <deviceSimulator>null</deviceSimulator>
    <certAndroid>null</certAndroid>
    <certIos>null</certIos>
    <certIosProvisioning>null</certIosProvisioning>
  </moonshineRunCustomization>
</project>