<?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.
 */
-->
<ui version="4.0">
 <class>ViewContainer</class>
 <widget class="QWidget" name="ViewContainer">
  <property name="geometry">
   <rect>
    <x>0</x>
    <y>0</y>
    <width>450</width>
    <height>300</height>
   </rect>
  </property>
  <property name="font">
   <font>
    <pointsize>11</pointsize>
   </font>
  </property>
  <property name="windowTitle">
   <string/>
  </property>
  <property name="windowIcon">
   <iconset resource="Resource.qrc">
    <normaloff>:/file/R_DUMMY</normaloff>:/file/R_DUMMY</iconset>
  </property>
 </widget>
 <resources>
  <include location="Resource.qrc"/>
 </resources>
 <connections/>
</ui>
