<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!--

  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.

-->
<fxpProperties abbreviated="false" authoringTool="Flex Builder" compiles="false" parentProject="7a351977-20f1-489f-901b-07eebae11319" projectUUID="7a351977-20f1-489f-901b-07eebae11319" pureCatalystProject="false" sdkVersion="4.5.1" uuid="2e94716c-1d4b-4e8b-8f5f-58d06fd112c1" version="15">
  <projects/>
  <src/>
  <swc>
    <linked location="sdkPlaceHolder" path="sdkPlaceHolder" position="0" uuid="2e94716c-1d4b-4e8b-8f5f-58d06fd112c1"/>
    <linked location="/libs" path="/libs" position="1" uuid="fa494d7c-481c-4870-9e08-2c54e115a044"/>
  </swc>
  <misc/>
  <theme/>
  <mxmlFormattingPrefs groupAttributesByState="true" maxLineWidth="100" mxmlAlignAttributes="true" mxmlAttributeOrder="id,userLabel,includeIn,excludeFrom,visible,x,y,z,left,right,top,bottom,width,height,minWidth,minHeight,maxWidth,maxHeight,label" mxmlKeepAttributeValuesOrganized="true"/>
</fxpProperties>
