<?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 flm:originalName="AccordionHeader/AccordionHeader_selectedSkin" version="2.0" afx:className="AccordionHeader_selectedSkin" afx:baseClassName="flash.display.Sprite" xmlns:afx="http://ns.apache.org/flex/2012" xmlns:flm="http://ns.adobe.com/flame/2008" xmlns="http://ns.adobe.com/fxg/2008">
  <Group scaleGridLeft="1" scaleGridRight="151" scaleGridTop="1" scaleGridBottom="21">
    <Path data="M152 0 152 22 0 22 0 0 152 0M151 21 151 1 1 1 1 21 151 21">
      <fill>
        <SolidColor/>
      </fill>
    </Path>
    <Path data="M151 21 1 21 1 1 151 1 151 21">
      <fill>
        <LinearGradient x="63.5" y="22.6125" scaleX="22.725" rotation="270">
          <GradientEntry ratio="0" color="#282828"/>
          <GradientEntry ratio="0.55686275" color="#2F2F2F"/>
          <GradientEntry ratio="0.58431373" color="#5F5F5F"/>
          <GradientEntry ratio="1" color="#4B4B4B"/>
        </LinearGradient>
      </fill>
    </Path>
  </Group>
</Graphic>