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

-->
<TextFlow xmlns="library://ns.adobe.com/flex/spark" 
		  xmlns:fx="http://ns.adobe.com/mxml/2009" 
		  xmlns:mx="library://ns.adobe.com/flex/mx">
	<fx:Script>
		<![CDATA[
			private var _label:String;
			private var _note:String;
			
			public function get label():String
			{
				return _label;
			}
			
			public function set label(value:String):void
			{
				_label = value;
			}
			
			public function get note():String
			{
				return _note;
			}
			
			public function set note(value:String):void
			{
				_note = value;
			}
			
		]]>
	</fx:Script>
	<p><img  width="90" height="90" source="@Embed('../../../../../../../Assets/Images/redrect.jpg')" float="none"/>The quick brown fox jumps over the lazy dog</p>
	<p clearFloats="none">OH NO! IT's ANOTHER LINE OF TEXT!!</p>
</TextFlow>