<!--
  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.
-->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Welcome to BlazeDS</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style>
body, pre { font-family:Tahoma,Helvetica,sans-serif; font-size:10pt; }
div.indent { margin-left: 20;}
span.reference { font-weight: bold }
span.header {white-space:nowrap }
span.title {font-size:12pt; color:blue}
span.highlight { background-color: #FFFFB7 }
table.code { font-family: courier; font-size: 9pt;}
span.fade { color:#666666; font-size:11px }
</style>
</head>
<body>
<span class="title">Welcome to BlazeDS</span>
<br>
&nbsp;<br>
This is an empty BlazeDS application that serves as a template for creating your custom application.
<!--
<br>&nbsp;<br>
If you're looking for sample Flex applications, check with the system administrator for the URL where the samples are deployed.
-->
<br>
&nbsp;<br>
Visit the <a href="http://opensource.adobe.com/wiki/display/blazeds/BlazeDS">product page</a> for documentation and further information.
</body>
</html>




