<?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.

-->
<flexLibProperties includeAllClasses="true" useMultiPlatformConfig="false" version="3">
  <includeClasses>
    <classEntry path="com.flexcapacitor.components.ColorChooser"/>
    <classEntry path="com.flexcapacitor.components.IDocumentContainer"/>
    <classEntry path="com.flexcapacitor.controller.RadiateReferences"/>
    <classEntry path="com.flexcapacitor.events.HistoryEvent"/>
    <classEntry path="com.flexcapacitor.model.Device"/>
    <classEntry path="com.flexcapacitor.model.IProject"/>
    <classEntry path="com.flexcapacitor.model.Project"/>
    <classEntry path="com.flexcapacitor.model.ProjectDataDescriptor"/>
    <classEntry path="com.flexcapacitor.model.Size"/>
    <classEntry path="com.flexcapacitor.model.StyleMetaData"/>
    <classEntry path="com.flexcapacitor.skins.DeviceImage"/>
    <classEntry path="com.flexcapacitor.skins.DeviceSkin"/>
    <classEntry path="com.flexcapacitor.tools.ITool"/>
    <classEntry path="com.flexcapacitor.tools.Selection"/>
    <classEntry path="com.flexcapacitor.utils.MXMLDocumentImporter"/>
    <classEntry path="com.flexcapacitor.utils.SyntaxHighlighter"/>
    <classEntry path="com.flexcapacitor.utils.supportClasses.DragData"/>
    <classEntry path="com.flexcapacitor.utils.supportClasses.ISelectionGroup"/>
    <classEntry path="com.flexcapacitor.views.renderers.EditableDocumentRenderer"/>
    <classEntry path="com.flexcapacitor.views.renderers.HistoryItemRenderer"/>
    <classEntry path="com.flexcapacitor.views.supportClasses.Styles"/>
    <classEntry path="com.flexcapacitor.views.windows.PublishWindow"/>
    <classEntry path="com.flexcapacitor.utils.MXMLDocumentExporter"/>
    <classEntry path="com.flexcapacitor.model.Settings"/>
    <classEntry path="com.flexcapacitor.model.ISettings"/>
    <classEntry path="com.flexcapacitor.managers.PersistantDataManager"/>
    <classEntry path="com.flexcapacitor.model.ProjectMetaData"/>
    <classEntry path="com.flexcapacitor.model.DocumentMetaData"/>
    <classEntry path="com.flexcapacitor.model.SavedData"/>
    <classEntry path="com.flexcapacitor.model.ISavedData"/>
    <classEntry path="com.flexcapacitor.model.DocumentData"/>
    <classEntry path="com.flexcapacitor.model.ProjectData"/>
    <classEntry path="com.flexcapacitor.model.IProjectData"/>
    <classEntry path="com.flexcapacitor.model.IDocumentData"/>
    <classEntry path="com.flexcapacitor.model.IProjectMetaData"/>
    <classEntry path="com.flexcapacitor.model.IDocumentMetaData"/>
    <classEntry path="com.flexcapacitor.views.renderers.LayersRenderer"/>
    <classEntry path="com.flexcapacitor.model.ISavable"/>
    <classEntry path="com.flexcapacitor.model.ISavableService"/>
    <classEntry path="com.flexcapacitor.model.SaveResultsEvent"/>
    <classEntry path="com.flexcapacitor.controller.RadiateTest"/>
    <classEntry path="com.flexcapacitor.model.ImageData"/>
    <classEntry path="com.flexcapacitor.model.AttachmentData"/>
    <classEntry path="com.flexcapacitor.utils.DocumentExporter"/>
    <classEntry path="com.flexcapacitor.services.WPAttachmentService"/>
    <classEntry path="com.flexcapacitor.skins.MenuItemSkin"/>
    <classEntry path="com.flexcapacitor.skins.MenuBarButtonSkin"/>
    <classEntry path="com.flexcapacitor.skins.PopUpButtonSkin"/>
    <classEntry path="com.flexcapacitor.model.MenuItem"/>
    <classEntry path="com.flexcapacitor.views.renderers.ColorPickerRenderer"/>
    <classEntry path="com.flexcapacitor.views.renderers.PropertiesGridRendererBase"/>
    <classEntry path="com.flexcapacitor.views.windows.AnimatedPanelWindow"/>
    <classEntry path="com.flexcapacitor.model.InspectableClass"/>
    <classEntry path="com.flexcapacitor.model.InspectorData"/>
    <classEntry path="com.flexcapacitor.views.IInspector"/>
    <classEntry path="com.flexcapacitor.views.inspectors.Identity"/>
    <classEntry path="com.flexcapacitor.views.Size"/>
    <classEntry path="com.flexcapacitor.views.inspectors.FontStyles"/>
    <classEntry path="com.flexcapacitor.utils.Base64"/>
  </includeClasses>
  <includeResources/>
  <namespaceManifests/>
</flexLibProperties>
