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

-->


<Graphic xmlns:fc="http://ns.adobe.com/flashcatalyst/2009" xmlns:d="http://ns.adobe.com/fxg/2008/dt" xmlns="http://ns.adobe.com/fxg/2008" version="2.0">
	<Path data="M 2 4 C 2 3 3 2 4 2 C 4 2 44 2 44 2 C 45 2 46 3 46 4 C 46 4 46 44 46 44 C 46 45 46 46 45 46 C 45 46 3 46 3 46 C 2 46 2 45 2 44 C 2 44 2 4 2 4 Z " alpha="1">
		<fill>
			<LinearGradient x = "24" y = "9" scaleX = "31" rotation = "90">
				<GradientEntry color="#ffffff" ratio="0" alpha="0.8"/>
				<GradientEntry color="#ffffff" ratio="1" alpha="0.05"/>
			</LinearGradient>
		</fill>
	</Path>
	<Path data="M 3 5 C 3 4 4 3 5 3 C 5 3 43 3 43 3 C 44 3 45 4 45 5 C 45 5 45 43 45 43 C 45 44 45 45 44 45 C 44 45 4 45 4 45 C 3 45 3 44 3 43 C 3 43 3 5 3 5 Z M 2 4 C 2 4 2 44 2 44 C 2 45 2 46 3 46 C 3 46 45 46 45 46 C 46 46 46 45 46 44 C 46 44 46 4 46 4 C 46 3 45 2 44 2 C 44 2 4 2 4 2 C 3 2 2 3 2 4 Z " alpha="1">
		<fill>
			<LinearGradient x = "24" y = "2" scaleX = "44" rotation = "90">
				<GradientEntry color="#ffffff" ratio="0" alpha="0.35"/>
				<GradientEntry color="#000000" ratio="1" alpha="0"/>
			</LinearGradient>
		</fill>
	</Path>
	<Path data="M 2 4 C 2 3 3 2 4 2 C 4 2 44 2 44 2 C 45 2 46 3 46 4 C 46 4 46 44 46 44 C 46 45 46 46 45 46 C 45 46 3 46 3 46 C 2 46 2 45 2 44 C 2 44 2 4 2 4 Z M 1 3 C 1 3 1 45 1 45 C 1 46 2 47 3 47 C 3 47 45 47 45 47 C 46 47 47 46 47 45 C 47 45 47 3 47 3 C 47 2 46 1 45 1 C 45 1 3 1 3 1 C 2 1 1 3 1 3 Z " alpha="0.6">
		<fill>
			<SolidColor color="#000000"/>
		</fill>
	</Path>
	<Path data="M 1 3 C 1 2 2 1 3 1 C 3 1 45 1 45 1 C 46 1 47 2 47 3 C 47 3 47 45 47 45 C 47 46 47 47 46 47 C 46 47 2 47 2 47 C 1 47 1 46 1 45 C 1 45 1 3 1 3 Z M 0 2 C 0 2 0 46 0 46 C 0 47 1 48 2 48 C 2 48 46 48 46 48 C 47 48 48 47 48 46 C 48 46 48 2 48 2 C 48 1 47 0 46 0 C 46 0 2 0 2 0 C 1 0 0 2 0 2 Z " alpha="0.06">
		<fill>
			<SolidColor color="#000000"/>
		</fill>
	</Path>
	<Rect x="3" y="2" width="42" height="1" alpha="0.15">
		<fill>
			<SolidColor color="#ffffff"/>
		</fill>
	</Rect>
	<Rect x="2" y="47" width="44" height="1" alpha="0.1">
		<fill>
			<SolidColor color="#000000"/>
		</fill>
	</Rect>
</Graphic>