<!--
  Copyright (c) 2016, The Linux Foundation. All rights reserved.

  Redistribution and use in source and binary forms, with or without
  modification, are permitted provided that the following conditions are
  met:
      * Redistributions of source code must retain the above copyright
        notice, this list of conditions and the following disclaimer.
      * Redistributions in binary form must reproduce the above
        copyright notice, this list of conditions and the following
        disclaimer in the documentation and/or other materials provided
        with the distribution.
      * Neither the name of The Linux Foundation nor the names of its
        contributors may be used to endorse or promote products derived
        from this software without specific prior written permission.

  THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
  WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
  ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
  BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
  BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
  WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
  OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
  IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-->

<vector xmlns:android="http://schemas.android.com/apk/res/android"
    android:width="32dp"
    android:height="32dp"
    android:viewportWidth="32"
    android:viewportHeight="32">

    <path
        android:fillColor="@color/white"
        android:pathData="M 7.2 23.3 L 5.5 23.3 L 5.5 7.1 L 13.3 4.8 L 14.1 4.8 L 21.7 7.1 L 21.7 11.9 L 20 11.9 L 20 8.3 L 13.7 6.5 L 13.4 6.5 L 7.2 8.3 Z" />
    <path
        android:fillColor="@color/white"
        android:pathData="M 8.6 7 L 8 7 L 8 5.3 L 13.5 3.5 L 19.1 5.3 L 19.1 7 L 18.6 7 L 18.6 5.7 L 13.5 4.1 L 8.6 5.7 Z" />
    <path
        android:fillColor="@color/white"
        android:pathData="M 13.4 3.8 H 13.7 V 5.6 H 13.4 V 3.8 Z" />
    <path
        android:fillColor="@color/white"
        android:pathData="M 13 23.3 L 12.7 23.3 L 12.7 8.4 L 6.5 10.2 L 6.5 9.9 L 13 8.1 Z" />
    <path
        android:fillColor="@color/white"
        android:pathData="M 14.4 23.3 L 14.1 23.3 L 14.1 8 L 20.7 9.8 L 20.6 10.1 L 14.4 8.3 Z" />
    <path
        android:fillColor="@color/white"
        android:pathData="M29.8,27h-1.7v-1.4h1.7V27z M26.3,27h-1.8v-1.4h1.8V27z M22.6,27h-1.8v-1.4h1.8V27z
M18.9,27h-1.8v-1.4 h1.8V27z M15.3,27h-1.8v-1.4h1.8V27z M11.6,27H9.8v-1.4h1.8V27z
M8,27H6.2v-1.4H8V27z M4.3,27H2.5v-1.4h1.8V27z" />
    <path
        android:fillColor="@color/white"
        android:pathData="M 26.7 23.3 L 25 23.3 L 25 13.4 L 22.3 12.3 L 19.6 13.4 L 19.6 23.3 L 17.8 23.3 L 17.8 12.2 L 22 10.6 L 22.6 10.6 L 26.7 12.2 Z" />
    <path
        android:fillColor="@color/white"
        android:pathData="M 22.2 11.6 H 22.5 V 23.3 H 22.2 V 11.6 Z" />
</vector>
