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

package
{

/**
 *  @private
 *  In some projects, this class is used to link additional classes
 *  into the SWC beyond those that are found by dependency analysis
 *  starting from the classes specified in manifest.xml.
 *  This project has no manifest file (because there are no MXML tags
 *  corresponding to any classes in it) so all the classes linked into
 *  the SWC are found by a dependency analysis starting from the classes
 *  listed here.
 */
internal class ZenClasses
{

import zen.skins.ApplicationSkin; ApplicationSkin;
import zen.skins.BorderSkin; BorderSkin;
import zen.skins.ButtonBarFirstButtonSkin; ButtonBarFirstButtonSkin;
import zen.skins.ButtonBarLastButtonSkin; ButtonBarLastButtonSkin;
import zen.skins.ButtonBarMiddleButtonSkin; ButtonBarMiddleButtonSkin;
import zen.skins.ButtonBarSkin; ButtonBarSkin;
import zen.skins.ButtonSkin; ButtonSkin;
import zen.skins.CheckBoxSkin; CheckBoxSkin;
import zen.skins.ComboBoxButtonSkin; ComboBoxButtonSkin;
import zen.skins.ComboBoxSkin; ComboBoxSkin;
import zen.skins.ComboBoxTextInputSkin; ComboBoxTextInputSkin;
import zen.skins.DefaultButtonSkin; DefaultButtonSkin;
import zen.skins.DefaultComplexItemRenderer; DefaultComplexItemRenderer;
import zen.skins.DefaultItemRenderer; DefaultItemRenderer;
import zen.skins.DropDownListButtonSkin; DropDownListButtonSkin;
import zen.skins.DropDownListSkin; DropDownListSkin;
import zen.skins.HScrollBarSkin; HScrollBarSkin;
import zen.skins.HScrollBarThumbSkin; HScrollBarThumbSkin;
import zen.skins.HScrollBarTrackSkin; HScrollBarTrackSkin;
import zen.skins.HSliderSkin; HSliderSkin;
import zen.skins.HSliderThumbSkin; HSliderThumbSkin;
import zen.skins.HSliderTrackSkin; HSliderTrackSkin;
import zen.skins.ListSkin; ListSkin;
import zen.skins.NumericStepperSkin; NumericStepperSkin;
import zen.skins.NumericStepperTextInputSkin; NumericStepperTextInputSkin;
import zen.skins.PanelSkin; PanelSkin;
import zen.skins.RadioButtonSkin; RadioButtonSkin;
import zen.skins.ScrollBarDownButtonSkin; ScrollBarDownButtonSkin;
import zen.skins.ScrollBarLeftButtonSkin; ScrollBarLeftButtonSkin;
import zen.skins.ScrollBarRightButtonSkin; ScrollBarRightButtonSkin;
import zen.skins.ScrollBarUpButtonSkin; ScrollBarUpButtonSkin;
import zen.skins.ScrollerSkin; ScrollerSkin;
import zen.skins.SkinnableContainerSkin; SkinnableContainerSkin;
import zen.skins.SkinnableDataContainerSkin; SkinnableDataContainerSkin;
import zen.skins.SpinnerDecrButtonSkin; SpinnerDecrButtonSkin;
import zen.skins.SpinnerIncrButtonSkin; SpinnerIncrButtonSkin;
import zen.skins.SpinnerSkin; SpinnerSkin;
import zen.skins.TabBarButtonSkin; TabBarButtonSkin;
import zen.skins.TabBarSkin; TabBarSkin;
import zen.skins.TextAreaBorderSkin; TextAreaBorderSkin;
import zen.skins.TextAreaSkin; TextAreaSkin;
import zen.skins.TextInputBorderSkin; TextInputBorderSkin;
import zen.skins.TextInputSkin; TextInputSkin;
import zen.skins.TitleWindowCloseButtonSkin; TitleWindowCloseButtonSkin;
import zen.skins.TitleWindowSkin; TitleWindowSkin;
import zen.skins.ToggleButtonSkin; ToggleButtonSkin;
import zen.skins.VScrollBarSkin; VScrollBarSkin;
import zen.skins.VScrollBarThumbSkin; VScrollBarThumbSkin;
import zen.skins.VScrollBarTrackSkin; VScrollBarTrackSkin;
import zen.skins.VSliderSkin; VSliderSkin;
import zen.skins.VSliderThumbSkin; VSliderThumbSkin;
import zen.skins.VSliderTrackSkin; VSliderTrackSkin;
import zen.skins.VideoPlayerSkin; VideoPlayerSkin;

}
}