[QGIS Commit] r9363 - trunk/qgis/python/plugins/plugin_installer

svn_qgis at osgeo.org svn_qgis at osgeo.org
Sat Sep 20 12:56:02 EDT 2008


Author: timlinux
Date: 2008-09-20 12:56:02 -0400 (Sat, 20 Sep 2008)
New Revision: 9363

Removed:
   trunk/qgis/python/plugins/plugin_installer/INSTALL
   trunk/qgis/python/plugins/plugin_installer/README
   trunk/qgis/python/plugins/plugin_installer/dialog.py
   trunk/qgis/python/plugins/plugin_installer/gui.py
   trunk/qgis/python/plugins/plugin_installer/gui.ui
   trunk/qgis/python/plugins/plugin_installer/icon.xpm
   trunk/qgis/python/plugins/plugin_installer/qgis_plugins.py
   trunk/qgis/python/plugins/plugin_installer/repository.ui
   trunk/qgis/python/plugins/plugin_installer/repository_dialog.py
   trunk/qgis/python/plugins/plugin_installer/repository_ui.py
   trunk/qgis/python/plugins/plugin_installer/resources.py
Modified:
   trunk/qgis/python/plugins/plugin_installer/CMakeLists.txt
   trunk/qgis/python/plugins/plugin_installer/__init__.py
   trunk/qgis/python/plugins/plugin_installer/installer_data.py
Log:
Plugin installer fixes from Borys

Modified: trunk/qgis/python/plugins/plugin_installer/CMakeLists.txt
===================================================================
--- trunk/qgis/python/plugins/plugin_installer/CMakeLists.txt	2008-09-20 07:33:05 UTC (rev 9362)
+++ trunk/qgis/python/plugins/plugin_installer/CMakeLists.txt	2008-09-20 16:56:02 UTC (rev 9363)
@@ -1,13 +1,10 @@
 #TODO: Need to configure cmake to run pyrcc4 and pyuic4 as required when the resource
 #      file or the ui change
 SET(INSTALLER_FILES
-dialog.py
 fetchingbase.py 
 fetchingbase.ui
 guibase.py 
 guibase.ui 
-gui.py
-icon.xpm
 __init__.py
 installer_data.py 
 installer_gui.py 
@@ -19,15 +16,11 @@
 plugin_installer.png 
 PluginInstaller.png
 qgis-icon.png 
-qgis_plugins.py
 repoConnected.png 
 repoDisabled.png
 repositorybase.py 
 repositorybase.ui 
-repository_dialog.py
-repository_ui.py
 repoUnavailable.png
-resources.py
 resources_rc.py 
 unzip.py 
 )

Deleted: trunk/qgis/python/plugins/plugin_installer/INSTALL
===================================================================
--- trunk/qgis/python/plugins/plugin_installer/INSTALL	2008-09-20 07:33:05 UTC (rev 9362)
+++ trunk/qgis/python/plugins/plugin_installer/INSTALL	2008-09-20 16:56:02 UTC (rev 9363)
@@ -1,7 +0,0 @@
-You must have qgis 0.9+ with python bindings in order to run this plugin. If you want to modify the UI, you'll need th qt4 devtools.
-
-1) Edit the INST_DIR in the Makefile to match your environment
-2) sudo make install
-3) open qgis and turn on the Installer plugin
-
-

Deleted: trunk/qgis/python/plugins/plugin_installer/README
===================================================================
--- trunk/qgis/python/plugins/plugin_installer/README	2008-09-20 07:33:05 UTC (rev 9362)
+++ trunk/qgis/python/plugins/plugin_installer/README	2008-09-20 16:56:02 UTC (rev 9363)
@@ -1,6 +0,0 @@
-The installer plugin retrieves an xml description of available plugins and shows the a full listing. You can choose to install any given plugin which will download the zip file to your temp directory and extract it into your *local user's* python plugin dir (ie ~/.qgis/python/plugins NOT /usr/share/qgis/python/plugins)
-
-This plugin itself should, however, be installed in the system plugin directory to ensure all users have access to it.
-
-Matthew T. Perry
-perrygeo at gmail.com

Modified: trunk/qgis/python/plugins/plugin_installer/__init__.py
===================================================================
--- trunk/qgis/python/plugins/plugin_installer/__init__.py	2008-09-20 07:33:05 UTC (rev 9362)
+++ trunk/qgis/python/plugins/plugin_installer/__init__.py	2008-09-20 16:56:02 UTC (rev 9363)
@@ -20,7 +20,7 @@
   return "perrygeo, borysiasty"
 
 def version():
-  return "Version 0.06.1"
+  return "Version 0.06.2"
 
 def classFactory(iface):
   from installer_plugin import InstallerPlugin

Deleted: trunk/qgis/python/plugins/plugin_installer/dialog.py
===================================================================
--- trunk/qgis/python/plugins/plugin_installer/dialog.py	2008-09-20 07:33:05 UTC (rev 9362)
+++ trunk/qgis/python/plugins/plugin_installer/dialog.py	2008-09-20 16:56:02 UTC (rev 9363)
@@ -1,223 +0,0 @@
-"""
-Copyright (C) 2008 Matthew Perry
-/***************************************************************************
- *                                                                         *
- *   This program is free software; you can redistribute it and/or modify  *
- *   it under the terms of the GNU General Public License as published by  *
- *   the Free Software Foundation; either version 2 of the License, or     *
- *   (at your option) any later version.                                   *
- *                                                                         *
- ***************************************************************************/
-"""
-from PyQt4.QtCore import *
-from PyQt4.QtGui import *
-
-from qgis.core import QgsApplication, QgsContextHelp
-
-from gui import Ui_Dialog
-import resources
-
-from repository_dialog import RepositoryDialog
-
-
-class InstallerPluginGui(QDialog, Ui_Dialog):
-  def __init__(self, parent, fl):
-    QDialog.__init__(self, parent, fl)
-    
-    self.default_repository_name = "Official QGIS repository"
-    self.default_repository = "http://spatialserver.net/cgi-bin/pyqgis_plugin.rb"
-    
-    self.setupUi(self)
-    
-    self.connect(self.buttonBrowse, SIGNAL("clicked()"), self.getAvailablePlugins)
-    self.connect(self.pbnOK, SIGNAL("clicked()"), self.installPlugin)
-
-    # grab the click on the treelist
-    self.connect(self.treePlugins, SIGNAL("itemClicked(QTreeWidgetItem *,int)"), self.treeClicked)
-
-    # repositories handling
-    self.connect(self.buttonAddRep, SIGNAL("clicked()"), self.addRepository)
-    self.connect(self.buttonEditRep, SIGNAL("clicked()"), self.editRepository)
-    self.connect(self.buttonDeleteRep, SIGNAL("clicked()"), self.deleteRepository)
-    
-    self.populateRepositories()
-    
-  
-  def on_pbnCancel_clicked(self):
-    self.close()
-    
-  
-  def getAvailablePlugins(self):
-    print "getting list of plugins"
-    repository = self.getRepository()
-    if not repository:
-      return
-    repository_url = str(repository[1])
-    
-    from qgis_plugins import retrieve_list
-    QApplication.setOverrideCursor(Qt.WaitCursor)
-
-    try:
-      pluginlist = retrieve_list(repository_url)
-    except IOError:
-      QApplication.restoreOverrideCursor()
-      QMessageBox.warning(self, "Error", "Couldn't connect to the repository.")
-      return
-    except Exception:
-      QApplication.restoreOverrideCursor()
-      QMessageBox.warning(self, "Error", "Couldn't parse output from repository.")
-      return
-    
-    #output = "QGIS python plugins avialable from \n%s\n" % self.repository
-    #for p in pluginlist:
-    #    output += "\n%s ( version %s )" % (p["name"], p["version"])
-    #    output += "\n\t%s by %s" % (p["desc"],p["author"])
-    #self.gui.txtAvailable.setText(output)   
-    self.treePlugins.clear()
-    for p in pluginlist:
-      a = QTreeWidgetItem(self.treePlugins)
-      a.setText(0,p["name"])
-      a.setText(1,p["version"])
-      a.setText(2,p["desc"])
-      a.setText(3,p["author"])
-      a.setToolTip(2, p["desc"])
-    
-    QApplication.restoreOverrideCursor()
-
-    # resize the columns
-    # plugin name
-    self.treePlugins.resizeColumnToContents(0);
-    # version
-    self.treePlugins.resizeColumnToContents(1);
-    # author/contributor
-    self.treePlugins.resizeColumnToContents(3);
-    # description
-    self.treePlugins.setColumnWidth(2, 560);
-
-  
-  def installPlugin(self):
-    """ installs currently selected plugin """
-    plugin = self.linePlugin.text()
-    repository = self.getRepository()
-    if not repository:
-      return
-    repository_url = str(repository[1])
-    plugindir = unicode(QgsApplication.qgisSettingsDirPath(),'utf-8') + "/python/plugins"
-    
-    QApplication.setOverrideCursor(Qt.WaitCursor)
-    from qgis_plugins import retrieve_list, install_plugin
-    print "install_plugin",plugin,plugindir,repository_url
-    result = install_plugin(plugin, plugindir, repository_url)
-    QApplication.restoreOverrideCursor()
-    
-    if result[0]:
-        QMessageBox.information(self, "Plugin installed successfully", result[1])
-    else:
-        QMessageBox.warning(self, "Plugin installation failed", result[1])
-
-  
-  def treeClicked(self, item, col):
-    self.linePlugin.setText(item.text(0))
-    
-    
-  def getRepository(self):
-    """ returns Name and URL of the current repository as a tuple or None if no repository is selected """
-    if self.comboRepositories.currentIndex() == -1:
-      return None
-    
-    settings = QSettings()
-    reposGroup = "/Qgis/plugin-repos"
-    reposName = self.comboRepositories.currentText()
-    reposURL = settings.value(reposGroup+"/"+reposName+"/url", QVariant()).toString()
-    return (reposName, reposURL)
-
-
-  def populateRepositories(self):
-    """ populate repository combo box from the settings """
-    self.comboRepositories.clear()
-    
-    settings = QSettings()
-    reposGroup = "/Qgis/plugin-repos"
-    settings.beginGroup(reposGroup)
-    
-    # add the default repository when there isn't any...
-    if len(settings.childGroups()) == 0:
-      settings.setValue(self.default_repository_name+"/url", QVariant(self.default_repository))
-    
-    for key in settings.childGroups():
-      self.comboRepositories.addItem(key)
-      
-    settings.endGroup()
-    
-    
-  def addRepository(self):
-    """ add repository button has been clicked """
-    print "add"
-    dlg = RepositoryDialog(self)
-    if not dlg.exec_():
-      return
-    
-    settings = QSettings()
-    reposGroup = "/Qgis/plugin-repos"
-    settings.beginGroup(reposGroup)
-    
-    reposName = dlg.editName.text()
-    reposURL = dlg.editURL.text()
-    print "name: "+reposName
-    print "url: "+reposURL
-    
-    # add to settings
-    settings.setValue(reposName+"/url", QVariant(reposURL))
-    
-    # add to combobox
-    self.comboRepositories.addItem(reposName)
-    
-    
-  def editRepository(self):
-    """ edit repository button has been clicked """
-    print "edit"
-    
-    current = self.comboRepositories.currentIndex()
-    if current == -1:
-      return
-    
-    (reposName, reposURL) = self.getRepository()
-    
-    dlg = RepositoryDialog(self)
-    dlg.editName.setText(reposName)
-    dlg.editURL.setText(reposURL)
-    if not dlg.exec_():
-      return
-    
-    settings = QSettings()
-    reposGroup = "/Qgis/plugin-repos"
-    settings.beginGroup(reposGroup)
-    
-    # first delete old setting
-    settings.remove(reposName)
-    
-    # and create new one
-    settings.setValue(dlg.editName.text()+"/url", QVariant(dlg.editURL.text()))
-    
-    # update the name if it has been changed
-    self.comboRepositories.setItemText(current, dlg.editName.text())
-    
-    
-  def deleteRepository(self):
-    """ delete repository button has been clicked """
-    print "delete"
-    
-    current = self.comboRepositories.currentIndex()
-    if current == -1:
-      return
-    
-    settings = QSettings()
-    reposGroup = "/Qgis/plugin-repos"
-    settings.beginGroup(reposGroup)
-
-    # delete from settings
-    reposName = self.comboRepositories.currentText()
-    settings.remove(reposName)
-    
-    # delete from combo box
-    self.comboRepositories.removeItem(current)

Deleted: trunk/qgis/python/plugins/plugin_installer/gui.py
===================================================================
--- trunk/qgis/python/plugins/plugin_installer/gui.py	2008-09-20 07:33:05 UTC (rev 9362)
+++ trunk/qgis/python/plugins/plugin_installer/gui.py	2008-09-20 16:56:02 UTC (rev 9363)
@@ -1,139 +0,0 @@
-# -*- coding: utf-8 -*-
-
-# Form implementation generated from reading ui file 'gui.ui'
-#
-# Created: Thu Jan 10 13:11:48 2008
-#      by: PyQt4 UI code generator 4.3
-#
-# WARNING! All changes made in this file will be lost!
-
-from PyQt4 import QtCore, QtGui
-
-class Ui_Dialog(object):
-    def setupUi(self, Dialog):
-        Dialog.setObjectName("Dialog")
-        Dialog.resize(QtCore.QSize(QtCore.QRect(0,0,761,471).size()).expandedTo(Dialog.minimumSizeHint()))
-
-        self.vboxlayout = QtGui.QVBoxLayout(Dialog)
-        self.vboxlayout.setObjectName("vboxlayout")
-
-        self.label = QtGui.QLabel(Dialog)
-        self.label.setObjectName("label")
-        self.vboxlayout.addWidget(self.label)
-
-        self.groupBox = QtGui.QGroupBox(Dialog)
-        self.groupBox.setObjectName("groupBox")
-
-        self.vboxlayout1 = QtGui.QVBoxLayout(self.groupBox)
-        self.vboxlayout1.setObjectName("vboxlayout1")
-
-        self.hboxlayout = QtGui.QHBoxLayout()
-        self.hboxlayout.setObjectName("hboxlayout")
-
-        self.label_4 = QtGui.QLabel(self.groupBox)
-        self.label_4.setObjectName("label_4")
-        self.hboxlayout.addWidget(self.label_4)
-
-        self.comboRepositories = QtGui.QComboBox(self.groupBox)
-
-        sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Expanding,QtGui.QSizePolicy.Fixed)
-        sizePolicy.setHorizontalStretch(0)
-        sizePolicy.setVerticalStretch(0)
-        sizePolicy.setHeightForWidth(self.comboRepositories.sizePolicy().hasHeightForWidth())
-        self.comboRepositories.setSizePolicy(sizePolicy)
-        self.comboRepositories.setObjectName("comboRepositories")
-        self.hboxlayout.addWidget(self.comboRepositories)
-        self.vboxlayout1.addLayout(self.hboxlayout)
-
-        self.hboxlayout1 = QtGui.QHBoxLayout()
-        self.hboxlayout1.setObjectName("hboxlayout1")
-
-        self.buttonBrowse = QtGui.QPushButton(self.groupBox)
-
-        sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed,QtGui.QSizePolicy.Fixed)
-        sizePolicy.setHorizontalStretch(0)
-        sizePolicy.setVerticalStretch(0)
-        sizePolicy.setHeightForWidth(self.buttonBrowse.sizePolicy().hasHeightForWidth())
-        self.buttonBrowse.setSizePolicy(sizePolicy)
-        self.buttonBrowse.setObjectName("buttonBrowse")
-        self.hboxlayout1.addWidget(self.buttonBrowse)
-
-        spacerItem = QtGui.QSpacerItem(40,20,QtGui.QSizePolicy.Expanding,QtGui.QSizePolicy.Minimum)
-        self.hboxlayout1.addItem(spacerItem)
-
-        self.buttonAddRep = QtGui.QPushButton(self.groupBox)
-        self.buttonAddRep.setObjectName("buttonAddRep")
-        self.hboxlayout1.addWidget(self.buttonAddRep)
-
-        self.buttonEditRep = QtGui.QPushButton(self.groupBox)
-        self.buttonEditRep.setObjectName("buttonEditRep")
-        self.hboxlayout1.addWidget(self.buttonEditRep)
-
-        self.buttonDeleteRep = QtGui.QPushButton(self.groupBox)
-        self.buttonDeleteRep.setObjectName("buttonDeleteRep")
-        self.hboxlayout1.addWidget(self.buttonDeleteRep)
-        self.vboxlayout1.addLayout(self.hboxlayout1)
-        self.vboxlayout.addWidget(self.groupBox)
-
-        self.treePlugins = QtGui.QTreeWidget(Dialog)
-        self.treePlugins.setAlternatingRowColors(True)
-        self.treePlugins.setRootIsDecorated(False)
-        self.treePlugins.setItemsExpandable(False)
-        self.treePlugins.setObjectName("treePlugins")
-        self.vboxlayout.addWidget(self.treePlugins)
-
-        self.hboxlayout2 = QtGui.QHBoxLayout()
-        self.hboxlayout2.setObjectName("hboxlayout2")
-
-        self.label_2 = QtGui.QLabel(Dialog)
-        self.label_2.setObjectName("label_2")
-        self.hboxlayout2.addWidget(self.label_2)
-
-        self.linePlugin = QtGui.QLineEdit(Dialog)
-        self.linePlugin.setObjectName("linePlugin")
-        self.hboxlayout2.addWidget(self.linePlugin)
-
-        self.pbnOK = QtGui.QPushButton(Dialog)
-        self.pbnOK.setObjectName("pbnOK")
-        self.hboxlayout2.addWidget(self.pbnOK)
-        self.vboxlayout.addLayout(self.hboxlayout2)
-
-        self.hboxlayout3 = QtGui.QHBoxLayout()
-        self.hboxlayout3.setObjectName("hboxlayout3")
-
-        self.label_3 = QtGui.QLabel(Dialog)
-        self.label_3.setObjectName("label_3")
-        self.hboxlayout3.addWidget(self.label_3)
-
-        self.pbnCancel = QtGui.QPushButton(Dialog)
-
-        sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed,QtGui.QSizePolicy.Fixed)
-        sizePolicy.setHorizontalStretch(0)
-        sizePolicy.setVerticalStretch(0)
-        sizePolicy.setHeightForWidth(self.pbnCancel.sizePolicy().hasHeightForWidth())
-        self.pbnCancel.setSizePolicy(sizePolicy)
-        self.pbnCancel.setObjectName("pbnCancel")
-        self.hboxlayout3.addWidget(self.pbnCancel)
-        self.vboxlayout.addLayout(self.hboxlayout3)
-
-        self.retranslateUi(Dialog)
-        QtCore.QMetaObject.connectSlotsByName(Dialog)
-
-    def retranslateUi(self, Dialog):
-        Dialog.setWindowTitle(QtGui.QApplication.translate("Dialog", "QGIS Plugin Installer", None, QtGui.QApplication.UnicodeUTF8))
-        self.label.setText(QtGui.QApplication.translate("Dialog", "Select repository, retrieve the list of available plugins, select one and install it", None, QtGui.QApplication.UnicodeUTF8))
-        self.groupBox.setTitle(QtGui.QApplication.translate("Dialog", "Repository", None, QtGui.QApplication.UnicodeUTF8))
-        self.label_4.setText(QtGui.QApplication.translate("Dialog", "Active repository:", None, QtGui.QApplication.UnicodeUTF8))
-        self.buttonBrowse.setText(QtGui.QApplication.translate("Dialog", "Get List", None, QtGui.QApplication.UnicodeUTF8))
-        self.buttonAddRep.setText(QtGui.QApplication.translate("Dialog", "Add", None, QtGui.QApplication.UnicodeUTF8))
-        self.buttonEditRep.setText(QtGui.QApplication.translate("Dialog", "Edit", None, QtGui.QApplication.UnicodeUTF8))
-        self.buttonDeleteRep.setText(QtGui.QApplication.translate("Dialog", "Delete", None, QtGui.QApplication.UnicodeUTF8))
-        self.treePlugins.headerItem().setText(0,QtGui.QApplication.translate("Dialog", "Name", None, QtGui.QApplication.UnicodeUTF8))
-        self.treePlugins.headerItem().setText(1,QtGui.QApplication.translate("Dialog", "Version", None, QtGui.QApplication.UnicodeUTF8))
-        self.treePlugins.headerItem().setText(2,QtGui.QApplication.translate("Dialog", "Description", None, QtGui.QApplication.UnicodeUTF8))
-        self.treePlugins.headerItem().setText(3,QtGui.QApplication.translate("Dialog", "Author", None, QtGui.QApplication.UnicodeUTF8))
-        self.label_2.setText(QtGui.QApplication.translate("Dialog", "Name of plugin to install", None, QtGui.QApplication.UnicodeUTF8))
-        self.pbnOK.setText(QtGui.QApplication.translate("Dialog", "Install Plugin", None, QtGui.QApplication.UnicodeUTF8))
-        self.label_3.setText(QtGui.QApplication.translate("Dialog", "The plugin will be installed to ~/.qgis/python/plugins", None, QtGui.QApplication.UnicodeUTF8))
-        self.pbnCancel.setText(QtGui.QApplication.translate("Dialog", "Done", None, QtGui.QApplication.UnicodeUTF8))
-

Deleted: trunk/qgis/python/plugins/plugin_installer/gui.ui
===================================================================
--- trunk/qgis/python/plugins/plugin_installer/gui.ui	2008-09-20 07:33:05 UTC (rev 9362)
+++ trunk/qgis/python/plugins/plugin_installer/gui.ui	2008-09-20 16:56:02 UTC (rev 9363)
@@ -1,186 +0,0 @@
-<ui version="4.0" >
- <class>Dialog</class>
- <widget class="QDialog" name="Dialog" >
-  <property name="geometry" >
-   <rect>
-    <x>0</x>
-    <y>0</y>
-    <width>761</width>
-    <height>471</height>
-   </rect>
-  </property>
-  <property name="windowTitle" >
-   <string>QGIS Plugin Installer</string>
-  </property>
-  <layout class="QVBoxLayout" >
-   <item>
-    <widget class="QLabel" name="label" >
-     <property name="text" >
-      <string>Select repository, retrieve the list of available plugins, select one and install it</string>
-     </property>
-    </widget>
-   </item>
-   <item>
-    <widget class="QGroupBox" name="groupBox" >
-     <property name="title" >
-      <string>Repository</string>
-     </property>
-     <layout class="QVBoxLayout" >
-      <item>
-       <layout class="QHBoxLayout" >
-        <item>
-         <widget class="QLabel" name="label_4" >
-          <property name="text" >
-           <string>Active repository:</string>
-          </property>
-         </widget>
-        </item>
-        <item>
-         <widget class="QComboBox" name="comboRepositories" >
-          <property name="sizePolicy" >
-           <sizepolicy vsizetype="Fixed" hsizetype="Expanding" >
-            <horstretch>0</horstretch>
-            <verstretch>0</verstretch>
-           </sizepolicy>
-          </property>
-         </widget>
-        </item>
-       </layout>
-      </item>
-      <item>
-       <layout class="QHBoxLayout" >
-        <item>
-         <widget class="QPushButton" name="buttonBrowse" >
-          <property name="sizePolicy" >
-           <sizepolicy vsizetype="Fixed" hsizetype="Fixed" >
-            <horstretch>0</horstretch>
-            <verstretch>0</verstretch>
-           </sizepolicy>
-          </property>
-          <property name="text" >
-           <string>Get List</string>
-          </property>
-         </widget>
-        </item>
-        <item>
-         <spacer>
-          <property name="orientation" >
-           <enum>Qt::Horizontal</enum>
-          </property>
-          <property name="sizeHint" >
-           <size>
-            <width>40</width>
-            <height>20</height>
-           </size>
-          </property>
-         </spacer>
-        </item>
-        <item>
-         <widget class="QPushButton" name="buttonAddRep" >
-          <property name="text" >
-           <string>Add</string>
-          </property>
-         </widget>
-        </item>
-        <item>
-         <widget class="QPushButton" name="buttonEditRep" >
-          <property name="text" >
-           <string>Edit</string>
-          </property>
-         </widget>
-        </item>
-        <item>
-         <widget class="QPushButton" name="buttonDeleteRep" >
-          <property name="text" >
-           <string>Delete</string>
-          </property>
-         </widget>
-        </item>
-       </layout>
-      </item>
-     </layout>
-    </widget>
-   </item>
-   <item>
-    <widget class="QTreeWidget" name="treePlugins" >
-     <property name="alternatingRowColors" >
-      <bool>true</bool>
-     </property>
-     <property name="rootIsDecorated" >
-      <bool>false</bool>
-     </property>
-     <property name="itemsExpandable" >
-      <bool>false</bool>
-     </property>
-     <column>
-      <property name="text" >
-       <string>Name</string>
-      </property>
-     </column>
-     <column>
-      <property name="text" >
-       <string>Version</string>
-      </property>
-     </column>
-     <column>
-      <property name="text" >
-       <string>Description</string>
-      </property>
-     </column>
-     <column>
-      <property name="text" >
-       <string>Author</string>
-      </property>
-     </column>
-    </widget>
-   </item>
-   <item>
-    <layout class="QHBoxLayout" >
-     <item>
-      <widget class="QLabel" name="label_2" >
-       <property name="text" >
-        <string>Name of plugin to install</string>
-       </property>
-      </widget>
-     </item>
-     <item>
-      <widget class="QLineEdit" name="linePlugin" />
-     </item>
-     <item>
-      <widget class="QPushButton" name="pbnOK" >
-       <property name="text" >
-        <string>Install Plugin</string>
-       </property>
-      </widget>
-     </item>
-    </layout>
-   </item>
-   <item>
-    <layout class="QHBoxLayout" >
-     <item>
-      <widget class="QLabel" name="label_3" >
-       <property name="text" >
-        <string>The plugin will be installed to ~/.qgis/python/plugins</string>
-       </property>
-      </widget>
-     </item>
-     <item>
-      <widget class="QPushButton" name="pbnCancel" >
-       <property name="sizePolicy" >
-        <sizepolicy vsizetype="Fixed" hsizetype="Fixed" >
-         <horstretch>0</horstretch>
-         <verstretch>0</verstretch>
-        </sizepolicy>
-       </property>
-       <property name="text" >
-        <string>Done</string>
-       </property>
-      </widget>
-     </item>
-    </layout>
-   </item>
-  </layout>
- </widget>
- <resources/>
- <connections/>
-</ui>

Deleted: trunk/qgis/python/plugins/plugin_installer/icon.xpm
===================================================================
--- trunk/qgis/python/plugins/plugin_installer/icon.xpm	2008-09-20 07:33:05 UTC (rev 9362)
+++ trunk/qgis/python/plugins/plugin_installer/icon.xpm	2008-09-20 16:56:02 UTC (rev 9363)
@@ -1,311 +0,0 @@
-/* XPM */
-static const char *icon[] = {
-/* columns rows colors chars-per-pixel */
-"48 48 257 2",
-"   c #4E4E57",
-".  c #555555",
-"X  c #55555E",
-"o  c #5B5B5B",
-"O  c #4F4F63",
-"+  c #585868",
-"@  c #5A5A7C",
-"#  c #437761",
-"$  c #4D7373",
-"%  c gray39",
-"&  c #6A6A6A",
-"*  c #646476",
-"=  c #79617B",
-"-  c gray46",
-";  c #72727C",
-":  c #7C7C7C",
-">  c #006BD1",
-",  c #0075DB",
-"<  c #1E7CD6",
-"1  c #007FE4",
-"2  c #5E5E85",
-"3  c #5F74A9",
-"4  c #5B7DB6",
-"5  c #62638A",
-"6  c #676899",
-"7  c #706F98",
-"8  c #767788",
-"9  c #72729F",
-"0  c #6C6EA2",
-"q  c #6575AA",
-"w  c #617FB3",
-"e  c #7676A8",
-"r  c #7C7CB4",
-"t  c #019A01",
-"y  c #0D9313",
-"u  c #1A8C26",
-"i  c #15A70E",
-"p  c #1AAA11",
-"a  c #25B118",
-"s  c #31AE34",
-"d  c #32BA21",
-"f  c #33804D",
-"g  c #3DC128",
-"h  c #49B550",
-"j  c #43AF60",
-"k  c #49CA31",
-"l  c #51C52F",
-"z  c #59D43B",
-"x  c #66DD44",
-"c  c #73E54C",
-"v  c #0088ED",
-"b  c #0598FC",
-"n  c #129FFF",
-"m  c #1BA2FE",
-"M  c #28A6FE",
-"N  c #37A1EF",
-"B  c #38ABFC",
-"V  c #56B28F",
-"C  c #7D85AF",
-"Z  c #7884B6",
-"A  c #73BBBF",
-"S  c #528FCF",
-"D  c #539FDF",
-"F  c #4BB2FD",
-"G  c #52B1F1",
-"H  c #55B5FF",
-"J  c #5AB2F5",
-"K  c #5AB7FF",
-"L  c #5EBDFE",
-"P  c #6493D1",
-"I  c #7691C9",
-"U  c #68ACE6",
-"Y  c #6DB8EB",
-"T  c #64BAFE",
-"R  c #6EB7F2",
-"E  c #69BCFF",
-"W  c #79B7EA",
-"Q  c #70BEFD",
-"!  c #74C680",
-"~  c #77C3F6",
-"^  c #75C0FF",
-"/  c #78C4F7",
-"(  c #7BC2FF",
-")  c #7CC8FB",
-"_  c #866979",
-"`  c #A65646",
-"'  c #B56E4E",
-"]  c #A66D60",
-"[  c #DF6923",
-"{  c #D26D30",
-"}  c #CE7E5A",
-"|  c #A99020",
-" . c #88F35A",
-".. c #A2EA5B",
-"X. c #B3E85C",
-"o. c #FA9535",
-"O. c #FFA23C",
-"+. c #EEA85E",
-"@. c #ECBE4F",
-"#. c #FFA842",
-"$. c #FFB14B",
-"%. c #CCD555",
-"&. c #DBC54F",
-"*. c #848484",
-"=. c #8B8B8B",
-"-. c #868597",
-";. c #989898",
-":. c #8383AA",
-">. c #8787BA",
-",. c #8F9DAA",
-"<. c #9999BB",
-"1. c #99A5B2",
-"2. c #9AA8B8",
-"3. c gray64",
-"4. c #A3A4AF",
-"5. c #ACACAC",
-"6. c #A5A9B6",
-"7. c #A6ACBF",
-"8. c #A9A9B9",
-"9. c #A6B0B9",
-"0. c #B2B2B2",
-"q. c #B4B4BA",
-"w. c #BBBBBB",
-"e. c #8788C6",
-"r. c #898BD7",
-"t. c #9394C6",
-"y. c #929FD2",
-"u. c #9F9FD2",
-"i. c #9C9CDA",
-"p. c #9999E5",
-"a. c #9B9BFE",
-"s. c #83A0C6",
-"d. c #98AAC9",
-"f. c #93A7DA",
-"g. c #9DB2CC",
-"h. c #8CB7E7",
-"j. c #87B4FC",
-"k. c #99A6FF",
-"l. c #95B0E3",
-"z. c #96BDE3",
-"x. c #97B9EC",
-"c. c #94BBFF",
-"v. c #A5A5C9",
-"b. c #A4A8DB",
-"n. c #ACACD9",
-"m. c #AFB3C1",
-"M. c #ADB3CC",
-"N. c #A1B9D8",
-"B. c #B2B2C9",
-"V. c #B3B4D1",
-"C. c #BABAD3",
-"Z. c #BEBED9",
-"A. c #ACACE9",
-"S. c #A7A7FE",
-"D. c #A5BFE5",
-"F. c #A9B2E5",
-"G. c #ADBDF0",
-"H. c #B3A9FF",
-"J. c #B3B3E6",
-"K. c #BBBCE5",
-"L. c #B7B6FE",
-"P. c #AEDDBF",
-"I. c #9FC5DF",
-"U. c #84C5FF",
-"Y. c #89C7FF",
-"T. c #8FCBFC",
-"R. c #9BCBEB",
-"E. c #96C2F9",
-"W. c #96CFF6",
-"Q. c #94CAFF",
-"!. c #98C2F5",
-"~. c #99C5FF",
-"^. c #9BCCFF",
-"/. c #99D1FB",
-"(. c #B6C4CF",
-"). c #BBCEDB",
-"_. c #A6C4EC",
-"`. c #A4CCFF",
-"'. c #ACC1F4",
-"]. c #ABCCFF",
-"[. c #ADD2EC",
-"{. c #A6D3FD",
-"}. c #B2CDE6",
-"|. c #B0CFE8",
-" X c #BFC2EB",
-".X c #B3CCFF",
-"XX c #BBCCFF",
-"oX c #B2D0E7",
-"OX c #B6DAF5",
-"+X c #B2D9FF",
-"@X c #BBDDFF",
-"#X c #BEE1FC",
-"$X c #DCAF81",
-"%X c #D1B392",
-"&X c #C4BBFF",
-"*X c #C2C0B9",
-"=X c #D0CEA7",
-"-X c #E9E7A7",
-";X c #C3C3C4",
-":X c #C0C0CD",
-">X c #CBCBCB",
-",X c #C0C0D6",
-"<X c #C6C6D9",
-"1X c #CFCFD6",
-"2X c #CECEDD",
-"3X c LightGray",
-"4X c #D1D1DE",
-"5X c #D5D8D9",
-"6X c gray86",
-"7X c #C4C4E5",
-"8X c #C2C2EC",
-"9X c #C8C8E6",
-"0X c #C5C5F2",
-"qX c #C4C4FE",
-"wX c #C3CCFF",
-"eX c #CDC4FF",
-"rX c #CDCFF6",
-"tX c #CBCBFE",
-"yX c #C9DCEC",
-"uX c #D2CCFD",
-"iX c #D3D3E1",
-"pX c #D6D7EE",
-"aX c #D6DDE4",
-"sX c #D6DFE8",
-"dX c #DADCE4",
-"fX c #D8DCE9",
-"gX c #D1D2F2",
-"hX c #D3D3FF",
-"jX c #DBDBFF",
-"kX c #CDE0ED",
-"lX c #C8E2FB",
-"zX c #D5E0EB",
-"xX c #DDE3E9",
-"cX c #D6E9FC",
-"vX c #EAC5FF",
-"bX c #EED7FF",
-"nX c #FDCCFF",
-"mX c #FAD8FF",
-"MX c gray89",
-"NX c #E2E4ED",
-"BX c #E4E8EC",
-"VX c gray93",
-"CX c #E3E3F3",
-"ZX c #E3E3FE",
-"AX c #E3EDF3",
-"SX c #EBEDF3",
-"DX c #EBEBFF",
-"FX c #E9F4FE",
-"GX c #FDE8FE",
-"HX c #F3F3F3",
-"JX c #F4F4FC",
-"KX c #F3F8FF",
-"LX c #FEF1FF",
-"PX c #FDFDFE",
-"IX c black",
-"UX c black",
-"YX c None",
-/* pixels */
-"YXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYX5X3X>Xw.>XMXYXYXBXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYXYX",
-"YXYXYXYXYXYXYXYXYXYX5X3X>Xw.w.0.5.m.6.7.M.M.K.K.8X8.0.6X>Xw.;Xw.0.;X>XMXYXYXYXYXYXYXYXYXYXYXYXYX",
-"YXYX>Xw.5.3.9.1.2.g.g.N.D.D.]..X.X.XXXXXXXwXwXwXtXV.: >X5.KXPXPXPXMX3X*X5.*XMXYXYXYXYXYXYXYXYXYX",
-";X>X3.R ^ U.Q.^.^.^.`.`.`.].].]..X.X.XXXXXXXwXwXwX X- 5.4XJXKXPXPXPXPXPXq.*.*XMXYXYXYXYXYXYXYXYX",
-"q.5Xq.H E ^ U.Q.^.^.^.`.`.`.].].]..X.X.XXXXXXXwXwXwX*.4.ZXDXJXJXPXPXPXHX: & w.BXYXYXYXYXYXYXYXYX",
-"3X3XPXKX#X/.^ U.Q.^.^.^.`.`.`.].].]..X.X.XXXXXXXwXwX4.9XjXZXDXDXJXPXPX>Xo *.3XYXYXYXYXYXYXYXYXYX",
-"MX0.HXHXHXHXT.^ U.Q.^.^.^.`.`.`.].].]..X.X.XXXXXXXwXK.hXhXjXZXDXDXJXPX=.o 5.MXYXYXYXYXYXYXYXYXYX",
-"YXw.MXYXYXYXOXE ^ U.Q.^.^.^.`.`.`.].].]..X'.G.F.F.b.fXZXZXjXjXZXDXDX1X% - >XYXYXYXYXYXYXYXYXYXYX",
-"YX6Xq.BXBXBXxXT E ^ U.Q.^.!.x.l.f.y.t.e.>.t.t.t.t.t.iXHXPXPXKXJXDXDX5.. ;.6XYXYXYXYXYXYXYXYXYXYX",
-"YXBX3.MXMXMXMXh.P I Z Z e r r r r >.>.>.>.>.t.t.t.t.2XBXHXHXJXYXYXMX;.% w.BXYXYXYXYXYXYXYXYXYXYX",
-"YXYXw.;X6X6X6X:X0 0 9 e e e r r r r >.>.>.>.>.v.V.C.dXMXMX6X6X6X6X5X3X3.3.6XYXYXYXYXYXYXYXYXYXYX",
-"YXYX>X;XYX6X5X5Xe 0 0 9 e e e r >.<.C.,XiXBXYXBXMXMXMXMX6X6X6X6X5X3X3X3X5.;.5XYXYXYXYXYXYXYXYXYX",
-"YXYX>X;XPXPXYX3X<.0 <.<.V.2XiXHXHXHXYXYXYXYXBXMXMXMXMX6X6X6X6X5X3X3X3X3X>X0.=.>XBXYXYXYXYXYXYXYX",
-"YXYX>X;XPXPXPXJXyXKXPXPXJXHXHXHXHXYXYXYXYXBXMXMXMXMX6X6X6X6X5X).I.Y 3.=.& & - 3.6XYXYXYXYXYXYXYX",
-"YXYX>X;X6XMXJXHXlXL PXJXHXHXHXHXYXYXYXYXBXMXMXMXMXoXR.Y G B b n m M - . - ;.3.;XMXYXYXYXYXYXYXYX",
-"YXYX>X;X3X3.0.MXlXB ) HXHXHXHXYXYXYXYX[.R.~ F M b n M M N S 4 3 6 6 5 5 -.q.5XMXYXYXYXYXYXYXYXYX",
-"YXYX>X;X6X6X;X;XlXF M /.AXOXW.~ B m n n M B B F F F D 3 6 <.V.9X7XgXK.n.t.0 9 m.MXYXYXYXYXYXYXYX",
-"YXYX>X*X3X3.0.BXkXK H n n m M B F K K K K K K K J w 6 B.CXDXDXZXZXjXhXhXtXqXt.0 :.3XBXYXYXYXYXYX",
-"YXYX>Xw.yXxX;X3XkXT T T T T T T T T T T T T T U q :.SXPXDXDXZXZXjXhXhXtXtXqX&XA.e 7 ;XMXYXYXYXYX",
-"YXYX>Xw.W < z.YXkXQ Q Q Q Q Q Q Q Q Q Q Q Q U 6 <.PXPXPXDXZXZXjXhXhXtXtXqX&XL.L.S.e 7 *XMXYXYXYX",
-"YXYX>Xw.W , > }.kX( ( ( ( ( ( ( ( ( ( ( ( j.0 <.PXPXPXPXJXZXjXhXhXtXtXqX&XL.L.H.S.a.e 8 >XBXYXYX",
-"YXYX>Xw.W 1 , }.zXY.Y.Y.Y.Y.Y.Y.Y.Y.Y.Y.c.e >.PXPXPXPXPXPXjXhXhXtXtXqX&XL.L.H.S.a.a.p.0 -.3XYXYX",
-"YXYX>Xw.~ v 1 |.zXQ.Q.Q.Q.Q.Q.Q.Q.Q.Q.c.r.9 JXPXPXPXPXPXPXZXhXtXtXqX&XL.L.H.S.a.a.a.a.e.5 5.MXYX",
-"YXYX>Xw./ b v |.zX^.^.^.^.^.^.^.^.^.~.k.0 <XPXPXPXPXPXPXPXKXtXtXqX&XL.L.H.S.a.a.a.a.S.S.0 8 >XYX",
-"YXYX>Xq.{.b b [.zX^.^.^.^.^.^.(.*X%X} ` e PXPXPXPXPXPXPXPXPXhXeXeX&XL.H.S.a.a.a.a.S.S.H.>.2 0.MX",
-"YXYX>X0.YXkXB [.zX{.{.{.$X+.O.#.#.O.[ = V.PXPXPXPXPXPXPXPXPXmXnXnXmXmX&Xa.a.a.a.S.S.H.L.i.5 ;.6X",
-"YXYX>X0.YXBXBXMXzX{.{.{.O.O.#.#.$.o.{ 6 qXhXDXPXPXPXPXPXPXGXmXnXvXbXGXLX&Xa.a.S.S.H.L.L.L.6 - >X",
-"YXYX>X0.BXBXMXMXzX{.{.{.O.#.#.$.$.o.' e tXtXtXtXjXDXPXPXLXGXLX0Xe.p.&XLXJXS.S.S.H.L.L.qXqX9 * ;X",
-"YXYX>X0.BXMXMXMXzX+X+X+XX.%. at .$.$.o.] t.tXtXtXtXtXtXuXDXLXLX<X0 Z 0 e.uXPXqXS.H.L.L.qXqXtXC + 0.",
-"YXYX>X0.MXMXMXMXsX+X+X+X . . ...&.o._ u.tXtXtXtXtXtXtXDXLXuX9 =X+X_.6 L.PXhXH.L.qXqXtXrXgX:.+ 5.",
-"YXYX>X5.MXMXMXMXsX at X@X at X . . . .l | _ J.tXtXtXtXtXtXtXJXLXA.-.-X at X@X6 pXPXSXfXfXfXfXfXfXfX:.+ 5.",
-"YXYX>X5.MXMXMXMXaX at X@X at Xc c c c g t $ K.hXhXtXtXqX&XL.DXLXp.7 -X at Xd.9 SXPXHXNXNXNXNXNXNXNX:.+ 5.",
-"YXYX>X5.MXMXMX6XaX#X#X#Xx x x x d t $ K.hXtXtXqX&XL.L.ZXLX&Xr 9 C 6 <XLXPXJXSXSXSXSXSXSXSX6 o 0.",
-"YXYX>X5.MXMX6X6XaXlXlXlXz z z z d t # u.tXtXqX&XL.L.H.&XLXmXH.r.r. XGXLXPXPXPXPXJXJXJXJXiX5 % ;X",
-"YXYX>X5.MX6X6X6XaXlXlXlXk k k k a t f >.tXqX&XL.L.H.S.a.uXGXmXvXvXmXGXLXPXPXPXPXPXPXPXPXv.@ - >X",
-"YXYX;X5.6X6X6X6XaXcXcXcXg g g g p t u e qX&XL.L.H.S.a.a.a.&XbXnXnXmXbXPXPXPXPXPXPXPXPXPXe X =.5X",
-"YXYX;X3.6X6X6X6XaXcXcXcXd d d d p t t 5 A.L.L.H.S.a.a.a.a.S.S.L.&XL.qXPXPXPXPXPXPXPXPX<X5 o 5.MX",
-"YXYX;X3.;X3X6X5XsXcXcXcXa a a a p t t # >.L.H.S.a.a.a.a.S.S.H.L.L.qXqXDXPXPXPXPXPXPXPXe O - >XYX",
-"YXYX;X3.;X;.0.3XxXcXcXcXi i i i i t t y 6 S.S.a.a.a.a.S.S.H.L.L.qXqXtXjXPXPXPXPXPXPXB.2 . 3.6XYX",
-"YXYX;X3.>X>X0.w.xXFXFXFXt t t t s j V A I r a.a.a.a.S.S.H.L.L.qXqXtXhXjXPXPXPXPXPXdX6   : >XYXYX",
-"YXYX;X3.0.3.;X3XxXFXFXFXh ! P.SXFXlX~.~.E.0 e.a.a.S.S.H.L.L.qXqXtXhXjXjXDXPXPXPXNX9 O & 0.MXYXYX",
-"YXYX;X3.5Xw.;.;XxXFXFXFXFXFXFXFXFXFX^.^.^.h.0 r.S.S.H.L.L.qXqXtXhXjXjXZXDXPXPXNX9 O % 3.6XYXYXYX",
-"YXYX3X*.;X3X>X>XxXKXKXKXKXKXKXKXKXKXcX^.^.^.s.6 r S.L.L.qXqXtXhXjXjXZXDXDXPXB.6 O % 3.3XYXYXYXYX",
-"YXYXBX0.- 0.3X3XMXKXKXKXKXKXKXKXKXBX;X,.8 % o X 2 0 i.qXqXtXhXjXjXZXDXCXZ.e 2   % 3.3XYXYXYXYXYX",
-"YXYXYX6X5.& ;.>XMXPXPXPXPX5Xw.;.: % . . . o & *.=.8 5 0 >.u.K.K.7Xv.>.6 5 O . : 5.6XYXYXYXYXYXYX",
-"YXYXYXYXMXw.- : 6X>X0.=.% o . . o % - =.3.w.>X3X5X>X3.; * 2 2 2 2 @ + X o - 3.>XMXYXYXYXYXYXYXYX",
-"YXYXYXYXYXMX>X*.% o . . o & : ;.5.;X>X5X6XBXYXYXYXYX6X>X0.;.*.: : : *.;.0.>X6XYXYXYXYXYXYXYXYXYX",
-"YXYXYXYXYXYXBX3X5.*.=.;.0.;X3X6XMXYXYXYXYXYXYXYXYXYXYXYXMX6X3X3X3X3X3X6XMXYXYXYXYXYXYXYXYXYXYXYX"
-};

Modified: trunk/qgis/python/plugins/plugin_installer/installer_data.py
===================================================================
--- trunk/qgis/python/plugins/plugin_installer/installer_data.py	2008-09-20 07:33:05 UTC (rev 9362)
+++ trunk/qgis/python/plugins/plugin_installer/installer_data.py	2008-09-20 16:56:02 UTC (rev 9363)
@@ -54,10 +54,10 @@
 
 # knownRepos: (name, url for QGIS 0.x, url for QGIS 1.x, possible depreciated url, another possible depreciated url)
 knownRepos = [("Official QGIS Repository","http://spatialserver.net/cgi-bin/pyqgis_plugin.rb","http://spatialserver.net/cgi-bin/pyqgis_plugin.rb","",""),
-              ("Carson Farmer's Repository","http://www.ftools.ca/cfarmerQgisRepo.xml","","http://www.geog.uvic.ca/spar/carson/cfarmerQgisRepo.xml",""),
+              ("Carson Farmer's Repository","http://www.ftools.ca/cfarmerQgisRepo_0.xx.xml","","http://www.geog.uvic.ca/spar/carson/cfarmerQgisRepo.xml",""),
               ("Barry Rowlingson's Repository","http://www.maths.lancs.ac.uk/~rowlings/Qgis/Plugins/plugins.xml","","",""),
               ("Borys Jurgiel's Repository","http://bwj.aster.net.pl/qgis-oldapi/plugins.xml","http://bwj.aster.net.pl/qgis/plugins.xml","",""),
-              ("Faunalia Repository","http://faunalia.it/qgis/plugins.xml","","","")]
+              ("Faunalia Repository","http://faunalia.it/qgis/plugins.xml","http://faunalia.it/qgis/1.x/plugins.xml","","")]
 
 
 
@@ -169,7 +169,7 @@
     settings.beginGroup(reposGroup)
     # first, update the QSettings repositories if needed
     if len(settings.childGroups()) == 0: # add the default repository when there isn't any
-      settings.setValue(self.knownRepos[0][0]+"/url", QVariant(self.knownRepos[0][self.QGISver+1]))
+      settings.setValue(knownRepos[0][0]+"/url", QVariant(knownRepos[0][self.QGISver+1]))
     else: # else update invalid urls
       for key in settings.childGroups():
         url = settings.value(key+"/url", QVariant()).toString()

Deleted: trunk/qgis/python/plugins/plugin_installer/qgis_plugins.py
===================================================================
--- trunk/qgis/python/plugins/plugin_installer/qgis_plugins.py	2008-09-20 07:33:05 UTC (rev 9362)
+++ trunk/qgis/python/plugins/plugin_installer/qgis_plugins.py	2008-09-20 16:56:02 UTC (rev 9363)
@@ -1,158 +0,0 @@
-"""
-qgis_plugins.py
-author: Matthew Perry
-date: 2007-Oct-21
-/***************************************************************************
- *                                                                         *
- *   This program is free software; you can redistribute it and/or modify  *
- *   it under the terms of the GNU General Public License as published by  *
- *   the Free Software Foundation; either version 2 of the License, or     *
- *   (at your option) any later version.                                   *
- *                                                                         *
- ***************************************************************************/
-"""
-import urllib
-import sys
-import os
-import tempfile
-import zipfile
-from xml.dom import minidom, Node
-
-
-class unzip:
-    """ unzip.py
-    Version: 1.1
-
-    Extract a zipfile to the directory provided
-    It first creates the directory structure to house the files
-    then it extracts the files to it.
-
-    import unzip
-    un = unzip.unzip()
-    un.extract(r'c:\testfile.zip', 'c:\testoutput')
-    
-
-    By Doug Tolton (http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/252508)
-    """
-    def __init__(self, verbose = True, percent = 10):
-        self.verbose = verbose
-        self.percent = percent
-        
-    def extract(self, file, dir):
-        if not dir.endswith(':') and not os.path.exists(dir):
-            os.mkdir(dir)
-
-        zf = zipfile.ZipFile(file)
-
-        # create directory structure to house files
-        print "Creating plugin structure:"
-        self._createstructure(file, dir)
-
-        num_files = len(zf.namelist())
-        percent = self.percent
-        divisions = 100 / percent
-        perc = int(num_files / divisions)
-
-        # extract files to directory structure
-        for i, name in enumerate(zf.namelist()):
-
-            if self.verbose == True:
-                print "Extracting %s" % name
-            elif perc > 0 and (i % perc) == 0 and i > 0:
-                complete = int (i / perc) * percent
-                print "%s%% complete" % complete
-
-            if not name.endswith('/'):
-                outfile = open(os.path.join(dir, name), 'wb')
-                outfile.write(zf.read(name))
-                outfile.flush()
-                outfile.close()
-
-
-    def _createstructure(self, file, dir):
-        self._makedirs(self._listdirs(file), dir)
-
-
-    def _makedirs(self, directories, basedir):
-        """ Create any directories that don't currently exist """
-        print "Processing directories contained in the zip file: %s" % directories
-        for dir in directories:
-            curdir = os.path.join(basedir, dir)
-            # normalize the path
-            curdir = os.path.normpath(curdir)
-            print "Checking to see if we should create %s" % curdir
-            if not os.path.exists(curdir):
-                # use makedirs to create parent directories as well
-                print "Creating %s" % curdir
-                os.makedirs(curdir)
-
-    def _listdirs(self, file):
-        """ Grabs all the directories in the zip structure
-        This is necessary to create the structure before trying
-        to extract the file to it. """
-        zf = zipfile.ZipFile(file)
-
-        dirs = []
-
-        for name in zf.namelist():
-          (path, filename) = os.path.split(name)
-          
-          if path not in dirs:
-            dirs.append(path)
-
-        dirs.sort()
-        return dirs
-
-
-def retrieve_list(repos):
-    repos = urllib.urlopen(repos).read()
-    repos_xml = minidom.parseString(repos)
-    plugin_nodes = repos_xml.getElementsByTagName("pyqgis_plugin")
-    plugins = [ 
-      {"name"    : x.getAttribute("name").encode(),
-       "version" : x.getAttribute("version").encode(),
-       "desc"    : x.getElementsByTagName("description")[0].childNodes[0].nodeValue.encode(),
-       "author"  : x.getElementsByTagName("author_name")[0].childNodes[0].nodeValue.encode(),
-       "url"     : x.getElementsByTagName("download_url")[0].childNodes[0].nodeValue.encode(),
-       "filename": x.getElementsByTagName("file_name")[0].childNodes[0].nodeValue.encode()}
-       for x in plugin_nodes]
-     
-    return plugins
-
-def install_plugin(plugin, plugindir, repos):
-    # normalize the path to the users plugin directory
-    plugindir = os.path.normpath(plugindir)
-    plugin_list = retrieve_list(repos)
-    target = [x for x in plugin_list if x["name"] == plugin]
-    if target:
-        # Take the first match
-        target = target[0]
-        url = target["url"]
-        filename = target["filename"]
-
-        print "Retrieving from %s" % url
-        try:
-            tmpdir = tempfile.gettempdir()
-            outfile = os.path.join(tmpdir,filename)
-            urllib.urlretrieve(url,outfile)          
-        except:
-            return (False, "Failed to download file to %s" % outfile)
-            return
-
-        # make sure that the parent directory exists
-        if not os.path.exists(plugindir):
-            os.makedirs(plugindir)
-
-        print "Extracting to plugin directory (%s)" % plugindir
-        try:
-            un = unzip()
-            un.extract(outfile, plugindir)        
-        except:
-            return (False, "Failed to unzip file to %s ... check permissions" % plugindir)
-
-    else:
-        return (False, "No plugins found named %s" % plugin)
-
-    return (True, "Python plugin installed. Go to Plugins > Plugin Manager to enable %s." % plugin )
-
-        

Deleted: trunk/qgis/python/plugins/plugin_installer/repository.ui
===================================================================
--- trunk/qgis/python/plugins/plugin_installer/repository.ui	2008-09-20 07:33:05 UTC (rev 9362)
+++ trunk/qgis/python/plugins/plugin_installer/repository.ui	2008-09-20 16:56:02 UTC (rev 9363)
@@ -1,100 +0,0 @@
-<ui version="4.0" >
- <class>RepositoryDetailsDialog</class>
- <widget class="QDialog" name="RepositoryDetailsDialog" >
-  <property name="geometry" >
-   <rect>
-    <x>0</x>
-    <y>0</y>
-    <width>395</width>
-    <height>169</height>
-   </rect>
-  </property>
-  <property name="windowTitle" >
-   <string>Repository details</string>
-  </property>
-  <layout class="QGridLayout" >
-   <item row="0" column="0" >
-    <widget class="QLabel" name="label" >
-     <property name="text" >
-      <string>Name:</string>
-     </property>
-    </widget>
-   </item>
-   <item row="0" column="1" >
-    <widget class="QLineEdit" name="editName" />
-   </item>
-   <item row="1" column="0" >
-    <widget class="QLabel" name="label_2" >
-     <property name="text" >
-      <string>URL:</string>
-     </property>
-    </widget>
-   </item>
-   <item row="1" column="1" >
-    <widget class="QLineEdit" name="editURL" >
-     <property name="text" >
-      <string>http://</string>
-     </property>
-    </widget>
-   </item>
-   <item row="2" column="0" colspan="2" >
-    <spacer>
-     <property name="orientation" >
-      <enum>Qt::Vertical</enum>
-     </property>
-     <property name="sizeHint" >
-      <size>
-       <width>181</width>
-       <height>40</height>
-      </size>
-     </property>
-    </spacer>
-   </item>
-   <item row="3" column="0" colspan="2" >
-    <widget class="QDialogButtonBox" name="buttonBox" >
-     <property name="orientation" >
-      <enum>Qt::Horizontal</enum>
-     </property>
-     <property name="standardButtons" >
-      <set>QDialogButtonBox::Cancel|QDialogButtonBox::NoButton|QDialogButtonBox::Ok</set>
-     </property>
-    </widget>
-   </item>
-  </layout>
- </widget>
- <resources/>
- <connections>
-  <connection>
-   <sender>buttonBox</sender>
-   <signal>accepted()</signal>
-   <receiver>RepositoryDetailsDialog</receiver>
-   <slot>accept()</slot>
-   <hints>
-    <hint type="sourcelabel" >
-     <x>248</x>
-     <y>254</y>
-    </hint>
-    <hint type="destinationlabel" >
-     <x>157</x>
-     <y>274</y>
-    </hint>
-   </hints>
-  </connection>
-  <connection>
-   <sender>buttonBox</sender>
-   <signal>rejected()</signal>
-   <receiver>RepositoryDetailsDialog</receiver>
-   <slot>reject()</slot>
-   <hints>
-    <hint type="sourcelabel" >
-     <x>316</x>
-     <y>260</y>
-    </hint>
-    <hint type="destinationlabel" >
-     <x>286</x>
-     <y>274</y>
-    </hint>
-   </hints>
-  </connection>
- </connections>
-</ui>

Deleted: trunk/qgis/python/plugins/plugin_installer/repository_dialog.py
===================================================================
--- trunk/qgis/python/plugins/plugin_installer/repository_dialog.py	2008-09-20 07:33:05 UTC (rev 9362)
+++ trunk/qgis/python/plugins/plugin_installer/repository_dialog.py	2008-09-20 16:56:02 UTC (rev 9363)
@@ -1,30 +0,0 @@
-"""
-Copyright (C) 2008 Matthew Perry
-/***************************************************************************
- *                                                                         *
- *   This program is free software; you can redistribute it and/or modify  *
- *   it under the terms of the GNU General Public License as published by  *
- *   the Free Software Foundation; either version 2 of the License, or     *
- *   (at your option) any later version.                                   *
- *                                                                         *
- ***************************************************************************/
-"""
-from PyQt4.QtCore import *
-from PyQt4.QtGui import *
-
-from repository_ui import Ui_RepositoryDetailsDialog
-
-class RepositoryDialog(QDialog, Ui_RepositoryDetailsDialog):
-  def __init__(self, parent=None):
-    QDialog.__init__(self, parent)
-    
-    self.setupUi(self)
-    
-    self.connect(self.editName, SIGNAL("textChanged(const QString &)"), self.changed)
-    self.connect(self.editURL,  SIGNAL("textChanged(const QString &)"), self.changed)
-    
-    self.changed(None)
-    
-  def changed(self, string):
-    enable = (self.editName.text().count() > 0 and self.editURL.text().count() > 0)
-    self.buttonBox.button(QDialogButtonBox.Ok).setEnabled(enable)

Deleted: trunk/qgis/python/plugins/plugin_installer/repository_ui.py
===================================================================
--- trunk/qgis/python/plugins/plugin_installer/repository_ui.py	2008-09-20 07:33:05 UTC (rev 9362)
+++ trunk/qgis/python/plugins/plugin_installer/repository_ui.py	2008-09-20 16:56:02 UTC (rev 9363)
@@ -1,55 +0,0 @@
-# -*- coding: utf-8 -*-
-
-# Form implementation generated from reading ui file 'repository.ui'
-#
-# Created: Thu Jan 10 14:22:08 2008
-#      by: PyQt4 UI code generator 4.3
-#
-# WARNING! All changes made in this file will be lost!
-
-from PyQt4 import QtCore, QtGui
-
-class Ui_RepositoryDetailsDialog(object):
-    def setupUi(self, RepositoryDetailsDialog):
-        RepositoryDetailsDialog.setObjectName("RepositoryDetailsDialog")
-        RepositoryDetailsDialog.resize(QtCore.QSize(QtCore.QRect(0,0,395,169).size()).expandedTo(RepositoryDetailsDialog.minimumSizeHint()))
-
-        self.gridlayout = QtGui.QGridLayout(RepositoryDetailsDialog)
-        self.gridlayout.setObjectName("gridlayout")
-
-        self.label = QtGui.QLabel(RepositoryDetailsDialog)
-        self.label.setObjectName("label")
-        self.gridlayout.addWidget(self.label,0,0,1,1)
-
-        self.editName = QtGui.QLineEdit(RepositoryDetailsDialog)
-        self.editName.setObjectName("editName")
-        self.gridlayout.addWidget(self.editName,0,1,1,1)
-
-        self.label_2 = QtGui.QLabel(RepositoryDetailsDialog)
-        self.label_2.setObjectName("label_2")
-        self.gridlayout.addWidget(self.label_2,1,0,1,1)
-
-        self.editURL = QtGui.QLineEdit(RepositoryDetailsDialog)
-        self.editURL.setObjectName("editURL")
-        self.gridlayout.addWidget(self.editURL,1,1,1,1)
-
-        spacerItem = QtGui.QSpacerItem(181,40,QtGui.QSizePolicy.Minimum,QtGui.QSizePolicy.Expanding)
-        self.gridlayout.addItem(spacerItem,2,0,1,2)
-
-        self.buttonBox = QtGui.QDialogButtonBox(RepositoryDetailsDialog)
-        self.buttonBox.setOrientation(QtCore.Qt.Horizontal)
-        self.buttonBox.setStandardButtons(QtGui.QDialogButtonBox.Cancel|QtGui.QDialogButtonBox.NoButton|QtGui.QDialogButtonBox.Ok)
-        self.buttonBox.setObjectName("buttonBox")
-        self.gridlayout.addWidget(self.buttonBox,3,0,1,2)
-
-        self.retranslateUi(RepositoryDetailsDialog)
-        QtCore.QObject.connect(self.buttonBox,QtCore.SIGNAL("accepted()"),RepositoryDetailsDialog.accept)
-        QtCore.QObject.connect(self.buttonBox,QtCore.SIGNAL("rejected()"),RepositoryDetailsDialog.reject)
-        QtCore.QMetaObject.connectSlotsByName(RepositoryDetailsDialog)
-
-    def retranslateUi(self, RepositoryDetailsDialog):
-        RepositoryDetailsDialog.setWindowTitle(QtGui.QApplication.translate("RepositoryDetailsDialog", "Repository details", None, QtGui.QApplication.UnicodeUTF8))
-        self.label.setText(QtGui.QApplication.translate("RepositoryDetailsDialog", "Name:", None, QtGui.QApplication.UnicodeUTF8))
-        self.label_2.setText(QtGui.QApplication.translate("RepositoryDetailsDialog", "URL:", None, QtGui.QApplication.UnicodeUTF8))
-        self.editURL.setText(QtGui.QApplication.translate("RepositoryDetailsDialog", "http://", None, QtGui.QApplication.UnicodeUTF8))
-

Deleted: trunk/qgis/python/plugins/plugin_installer/resources.py
===================================================================
--- trunk/qgis/python/plugins/plugin_installer/resources.py	2008-09-20 07:33:05 UTC (rev 9362)
+++ trunk/qgis/python/plugins/plugin_installer/resources.py	2008-09-20 16:56:02 UTC (rev 9363)
@@ -1,608 +0,0 @@
-# -*- coding: utf-8 -*-
-
-# Resource object code
-#
-# Created: Thu Jan 10 13:11:47 2008
-#      by: The Resource Compiler for PyQt (Qt v4.2.3)
-#
-# WARNING! All changes made in this file will be lost!
-
-from PyQt4 import QtCore
-
-qt_resource_data = "\
-\x00\x00\x23\x2f\
-\x2f\
-\x2a\x20\x58\x50\x4d\x20\x2a\x2f\x0a\x73\x74\x61\x74\x69\x63\x20\
-\x63\x68\x61\x72\x20\x2a\x69\x63\x6f\x6e\x5b\x5d\x20\x3d\x20\x7b\
-\x0a\x2f\x2a\x20\x63\x6f\x6c\x75\x6d\x6e\x73\x20\x72\x6f\x77\x73\
-\x20\x63\x6f\x6c\x6f\x72\x73\x20\x63\x68\x61\x72\x73\x2d\x70\x65\
-\x72\x2d\x70\x69\x78\x65\x6c\x20\x2a\x2f\x0a\x22\x34\x38\x20\x34\
-\x38\x20\x32\x35\x37\x20\x32\x22\x2c\x0a\x22\x20\x20\x20\x63\x20\
-\x23\x34\x45\x34\x45\x35\x37\x22\x2c\x0a\x22\x2e\x20\x20\x63\x20\
-\x23\x35\x35\x35\x35\x35\x35\x22\x2c\x0a\x22\x58\x20\x20\x63\x20\
-\x23\x35\x35\x35\x35\x35\x45\x22\x2c\x0a\x22\x6f\x20\x20\x63\x20\
-\x23\x35\x42\x35\x42\x35\x42\x22\x2c\x0a\x22\x4f\x20\x20\x63\x20\
-\x23\x34\x46\x34\x46\x36\x33\x22\x2c\x0a\x22\x2b\x20\x20\x63\x20\
-\x23\x35\x38\x35\x38\x36\x38\x22\x2c\x0a\x22\x40\x20\x20\x63\x20\
-\x23\x35\x41\x35\x41\x37\x43\x22\x2c\x0a\x22\x23\x20\x20\x63\x20\
-\x23\x34\x33\x37\x37\x36\x31\x22\x2c\x0a\x22\x24\x20\x20\x63\x20\
-\x23\x34\x44\x37\x33\x37\x33\x22\x2c\x0a\x22\x25\x20\x20\x63\x20\
-\x67\x72\x61\x79\x33\x39\x22\x2c\x0a\x22\x26\x20\x20\x63\x20\x23\
-\x36\x41\x36\x41\x36\x41\x22\x2c\x0a\x22\x2a\x20\x20\x63\x20\x23\
-\x36\x34\x36\x34\x37\x36\x22\x2c\x0a\x22\x3d\x20\x20\x63\x20\x23\
-\x37\x39\x36\x31\x37\x42\x22\x2c\x0a\x22\x2d\x20\x20\x63\x20\x67\
-\x72\x61\x79\x34\x36\x22\x2c\x0a\x22\x3b\x20\x20\x63\x20\x23\x37\
-\x32\x37\x32\x37\x43\x22\x2c\x0a\x22\x3a\x20\x20\x63\x20\x23\x37\
-\x43\x37\x43\x37\x43\x22\x2c\x0a\x22\x3e\x20\x20\x63\x20\x23\x30\
-\x30\x36\x42\x44\x31\x22\x2c\x0a\x22\x2c\x20\x20\x63\x20\x23\x30\
-\x30\x37\x35\x44\x42\x22\x2c\x0a\x22\x3c\x20\x20\x63\x20\x23\x31\
-\x45\x37\x43\x44\x36\x22\x2c\x0a\x22\x31\x20\x20\x63\x20\x23\x30\
-\x30\x37\x46\x45\x34\x22\x2c\x0a\x22\x32\x20\x20\x63\x20\x23\x35\
-\x45\x35\x45\x38\x35\x22\x2c\x0a\x22\x33\x20\x20\x63\x20\x23\x35\
-\x46\x37\x34\x41\x39\x22\x2c\x0a\x22\x34\x20\x20\x63\x20\x23\x35\
-\x42\x37\x44\x42\x36\x22\x2c\x0a\x22\x35\x20\x20\x63\x20\x23\x36\
-\x32\x36\x33\x38\x41\x22\x2c\x0a\x22\x36\x20\x20\x63\x20\x23\x36\
-\x37\x36\x38\x39\x39\x22\x2c\x0a\x22\x37\x20\x20\x63\x20\x23\x37\
-\x30\x36\x46\x39\x38\x22\x2c\x0a\x22\x38\x20\x20\x63\x20\x23\x37\
-\x36\x37\x37\x38\x38\x22\x2c\x0a\x22\x39\x20\x20\x63\x20\x23\x37\
-\x32\x37\x32\x39\x46\x22\x2c\x0a\x22\x30\x20\x20\x63\x20\x23\x36\
-\x43\x36\x45\x41\x32\x22\x2c\x0a\x22\x71\x20\x20\x63\x20\x23\x36\
-\x35\x37\x35\x41\x41\x22\x2c\x0a\x22\x77\x20\x20\x63\x20\x23\x36\
-\x31\x37\x46\x42\x33\x22\x2c\x0a\x22\x65\x20\x20\x63\x20\x23\x37\
-\x36\x37\x36\x41\x38\x22\x2c\x0a\x22\x72\x20\x20\x63\x20\x23\x37\
-\x43\x37\x43\x42\x34\x22\x2c\x0a\x22\x74\x20\x20\x63\x20\x23\x30\
-\x31\x39\x41\x30\x31\x22\x2c\x0a\x22\x79\x20\x20\x63\x20\x23\x30\
-\x44\x39\x33\x31\x33\x22\x2c\x0a\x22\x75\x20\x20\x63\x20\x23\x31\
-\x41\x38\x43\x32\x36\x22\x2c\x0a\x22\x69\x20\x20\x63\x20\x23\x31\
-\x35\x41\x37\x30\x45\x22\x2c\x0a\x22\x70\x20\x20\x63\x20\x23\x31\
-\x41\x41\x41\x31\x31\x22\x2c\x0a\x22\x61\x20\x20\x63\x20\x23\x32\
-\x35\x42\x31\x31\x38\x22\x2c\x0a\x22\x73\x20\x20\x63\x20\x23\x33\
-\x31\x41\x45\x33\x34\x22\x2c\x0a\x22\x64\x20\x20\x63\x20\x23\x33\
-\x32\x42\x41\x32\x31\x22\x2c\x0a\x22\x66\x20\x20\x63\x20\x23\x33\
-\x33\x38\x30\x34\x44\x22\x2c\x0a\x22\x67\x20\x20\x63\x20\x23\x33\
-\x44\x43\x31\x32\x38\x22\x2c\x0a\x22\x68\x20\x20\x63\x20\x23\x34\
-\x39\x42\x35\x35\x30\x22\x2c\x0a\x22\x6a\x20\x20\x63\x20\x23\x34\
-\x33\x41\x46\x36\x30\x22\x2c\x0a\x22\x6b\x20\x20\x63\x20\x23\x34\
-\x39\x43\x41\x33\x31\x22\x2c\x0a\x22\x6c\x20\x20\x63\x20\x23\x35\
-\x31\x43\x35\x32\x46\x22\x2c\x0a\x22\x7a\x20\x20\x63\x20\x23\x35\
-\x39\x44\x34\x33\x42\x22\x2c\x0a\x22\x78\x20\x20\x63\x20\x23\x36\
-\x36\x44\x44\x34\x34\x22\x2c\x0a\x22\x63\x20\x20\x63\x20\x23\x37\
-\x33\x45\x35\x34\x43\x22\x2c\x0a\x22\x76\x20\x20\x63\x20\x23\x30\
-\x30\x38\x38\x45\x44\x22\x2c\x0a\x22\x62\x20\x20\x63\x20\x23\x30\
-\x35\x39\x38\x46\x43\x22\x2c\x0a\x22\x6e\x20\x20\x63\x20\x23\x31\
-\x32\x39\x46\x46\x46\x22\x2c\x0a\x22\x6d\x20\x20\x63\x20\x23\x31\
-\x42\x41\x32\x46\x45\x22\x2c\x0a\x22\x4d\x20\x20\x63\x20\x23\x32\
-\x38\x41\x36\x46\x45\x22\x2c\x0a\x22\x4e\x20\x20\x63\x20\x23\x33\
-\x37\x41\x31\x45\x46\x22\x2c\x0a\x22\x42\x20\x20\x63\x20\x23\x33\
-\x38\x41\x42\x46\x43\x22\x2c\x0a\x22\x56\x20\x20\x63\x20\x23\x35\
-\x36\x42\x32\x38\x46\x22\x2c\x0a\x22\x43\x20\x20\x63\x20\x23\x37\
-\x44\x38\x35\x41\x46\x22\x2c\x0a\x22\x5a\x20\x20\x63\x20\x23\x37\
-\x38\x38\x34\x42\x36\x22\x2c\x0a\x22\x41\x20\x20\x63\x20\x23\x37\
-\x33\x42\x42\x42\x46\x22\x2c\x0a\x22\x53\x20\x20\x63\x20\x23\x35\
-\x32\x38\x46\x43\x46\x22\x2c\x0a\x22\x44\x20\x20\x63\x20\x23\x35\
-\x33\x39\x46\x44\x46\x22\x2c\x0a\x22\x46\x20\x20\x63\x20\x23\x34\
-\x42\x42\x32\x46\x44\x22\x2c\x0a\x22\x47\x20\x20\x63\x20\x23\x35\
-\x32\x42\x31\x46\x31\x22\x2c\x0a\x22\x48\x20\x20\x63\x20\x23\x35\
-\x35\x42\x35\x46\x46\x22\x2c\x0a\x22\x4a\x20\x20\x63\x20\x23\x35\
-\x41\x42\x32\x46\x35\x22\x2c\x0a\x22\x4b\x20\x20\x63\x20\x23\x35\
-\x41\x42\x37\x46\x46\x22\x2c\x0a\x22\x4c\x20\x20\x63\x20\x23\x35\
-\x45\x42\x44\x46\x45\x22\x2c\x0a\x22\x50\x20\x20\x63\x20\x23\x36\
-\x34\x39\x33\x44\x31\x22\x2c\x0a\x22\x49\x20\x20\x63\x20\x23\x37\
-\x36\x39\x31\x43\x39\x22\x2c\x0a\x22\x55\x20\x20\x63\x20\x23\x36\
-\x38\x41\x43\x45\x36\x22\x2c\x0a\x22\x59\x20\x20\x63\x20\x23\x36\
-\x44\x42\x38\x45\x42\x22\x2c\x0a\x22\x54\x20\x20\x63\x20\x23\x36\
-\x34\x42\x41\x46\x45\x22\x2c\x0a\x22\x52\x20\x20\x63\x20\x23\x36\
-\x45\x42\x37\x46\x32\x22\x2c\x0a\x22\x45\x20\x20\x63\x20\x23\x36\
-\x39\x42\x43\x46\x46\x22\x2c\x0a\x22\x57\x20\x20\x63\x20\x23\x37\
-\x39\x42\x37\x45\x41\x22\x2c\x0a\x22\x51\x20\x20\x63\x20\x23\x37\
-\x30\x42\x45\x46\x44\x22\x2c\x0a\x22\x21\x20\x20\x63\x20\x23\x37\
-\x34\x43\x36\x38\x30\x22\x2c\x0a\x22\x7e\x20\x20\x63\x20\x23\x37\
-\x37\x43\x33\x46\x36\x22\x2c\x0a\x22\x5e\x20\x20\x63\x20\x23\x37\
-\x35\x43\x30\x46\x46\x22\x2c\x0a\x22\x2f\x20\x20\x63\x20\x23\x37\
-\x38\x43\x34\x46\x37\x22\x2c\x0a\x22\x28\x20\x20\x63\x20\x23\x37\
-\x42\x43\x32\x46\x46\x22\x2c\x0a\x22\x29\x20\x20\x63\x20\x23\x37\
-\x43\x43\x38\x46\x42\x22\x2c\x0a\x22\x5f\x20\x20\x63\x20\x23\x38\
-\x36\x36\x39\x37\x39\x22\x2c\x0a\x22\x60\x20\x20\x63\x20\x23\x41\
-\x36\x35\x36\x34\x36\x22\x2c\x0a\x22\x27\x20\x20\x63\x20\x23\x42\
-\x35\x36\x45\x34\x45\x22\x2c\x0a\x22\x5d\x20\x20\x63\x20\x23\x41\
-\x36\x36\x44\x36\x30\x22\x2c\x0a\x22\x5b\x20\x20\x63\x20\x23\x44\
-\x46\x36\x39\x32\x33\x22\x2c\x0a\x22\x7b\x20\x20\x63\x20\x23\x44\
-\x32\x36\x44\x33\x30\x22\x2c\x0a\x22\x7d\x20\x20\x63\x20\x23\x43\
-\x45\x37\x45\x35\x41\x22\x2c\x0a\x22\x7c\x20\x20\x63\x20\x23\x41\
-\x39\x39\x30\x32\x30\x22\x2c\x0a\x22\x20\x2e\x20\x63\x20\x23\x38\
-\x38\x46\x33\x35\x41\x22\x2c\x0a\x22\x2e\x2e\x20\x63\x20\x23\x41\
-\x32\x45\x41\x35\x42\x22\x2c\x0a\x22\x58\x2e\x20\x63\x20\x23\x42\
-\x33\x45\x38\x35\x43\x22\x2c\x0a\x22\x6f\x2e\x20\x63\x20\x23\x46\
-\x41\x39\x35\x33\x35\x22\x2c\x0a\x22\x4f\x2e\x20\x63\x20\x23\x46\
-\x46\x41\x32\x33\x43\x22\x2c\x0a\x22\x2b\x2e\x20\x63\x20\x23\x45\
-\x45\x41\x38\x35\x45\x22\x2c\x0a\x22\x40\x2e\x20\x63\x20\x23\x45\
-\x43\x42\x45\x34\x46\x22\x2c\x0a\x22\x23\x2e\x20\x63\x20\x23\x46\
-\x46\x41\x38\x34\x32\x22\x2c\x0a\x22\x24\x2e\x20\x63\x20\x23\x46\
-\x46\x42\x31\x34\x42\x22\x2c\x0a\x22\x25\x2e\x20\x63\x20\x23\x43\
-\x43\x44\x35\x35\x35\x22\x2c\x0a\x22\x26\x2e\x20\x63\x20\x23\x44\
-\x42\x43\x35\x34\x46\x22\x2c\x0a\x22\x2a\x2e\x20\x63\x20\x23\x38\
-\x34\x38\x34\x38\x34\x22\x2c\x0a\x22\x3d\x2e\x20\x63\x20\x23\x38\
-\x42\x38\x42\x38\x42\x22\x2c\x0a\x22\x2d\x2e\x20\x63\x20\x23\x38\
-\x36\x38\x35\x39\x37\x22\x2c\x0a\x22\x3b\x2e\x20\x63\x20\x23\x39\
-\x38\x39\x38\x39\x38\x22\x2c\x0a\x22\x3a\x2e\x20\x63\x20\x23\x38\
-\x33\x38\x33\x41\x41\x22\x2c\x0a\x22\x3e\x2e\x20\x63\x20\x23\x38\
-\x37\x38\x37\x42\x41\x22\x2c\x0a\x22\x2c\x2e\x20\x63\x20\x23\x38\
-\x46\x39\x44\x41\x41\x22\x2c\x0a\x22\x3c\x2e\x20\x63\x20\x23\x39\
-\x39\x39\x39\x42\x42\x22\x2c\x0a\x22\x31\x2e\x20\x63\x20\x23\x39\
-\x39\x41\x35\x42\x32\x22\x2c\x0a\x22\x32\x2e\x20\x63\x20\x23\x39\
-\x41\x41\x38\x42\x38\x22\x2c\x0a\x22\x33\x2e\x20\x63\x20\x67\x72\
-\x61\x79\x36\x34\x22\x2c\x0a\x22\x34\x2e\x20\x63\x20\x23\x41\x33\
-\x41\x34\x41\x46\x22\x2c\x0a\x22\x35\x2e\x20\x63\x20\x23\x41\x43\
-\x41\x43\x41\x43\x22\x2c\x0a\x22\x36\x2e\x20\x63\x20\x23\x41\x35\
-\x41\x39\x42\x36\x22\x2c\x0a\x22\x37\x2e\x20\x63\x20\x23\x41\x36\
-\x41\x43\x42\x46\x22\x2c\x0a\x22\x38\x2e\x20\x63\x20\x23\x41\x39\
-\x41\x39\x42\x39\x22\x2c\x0a\x22\x39\x2e\x20\x63\x20\x23\x41\x36\
-\x42\x30\x42\x39\x22\x2c\x0a\x22\x30\x2e\x20\x63\x20\x23\x42\x32\
-\x42\x32\x42\x32\x22\x2c\x0a\x22\x71\x2e\x20\x63\x20\x23\x42\x34\
-\x42\x34\x42\x41\x22\x2c\x0a\x22\x77\x2e\x20\x63\x20\x23\x42\x42\
-\x42\x42\x42\x42\x22\x2c\x0a\x22\x65\x2e\x20\x63\x20\x23\x38\x37\
-\x38\x38\x43\x36\x22\x2c\x0a\x22\x72\x2e\x20\x63\x20\x23\x38\x39\
-\x38\x42\x44\x37\x22\x2c\x0a\x22\x74\x2e\x20\x63\x20\x23\x39\x33\
-\x39\x34\x43\x36\x22\x2c\x0a\x22\x79\x2e\x20\x63\x20\x23\x39\x32\
-\x39\x46\x44\x32\x22\x2c\x0a\x22\x75\x2e\x20\x63\x20\x23\x39\x46\
-\x39\x46\x44\x32\x22\x2c\x0a\x22\x69\x2e\x20\x63\x20\x23\x39\x43\
-\x39\x43\x44\x41\x22\x2c\x0a\x22\x70\x2e\x20\x63\x20\x23\x39\x39\
-\x39\x39\x45\x35\x22\x2c\x0a\x22\x61\x2e\x20\x63\x20\x23\x39\x42\
-\x39\x42\x46\x45\x22\x2c\x0a\x22\x73\x2e\x20\x63\x20\x23\x38\x33\
-\x41\x30\x43\x36\x22\x2c\x0a\x22\x64\x2e\x20\x63\x20\x23\x39\x38\
-\x41\x41\x43\x39\x22\x2c\x0a\x22\x66\x2e\x20\x63\x20\x23\x39\x33\
-\x41\x37\x44\x41\x22\x2c\x0a\x22\x67\x2e\x20\x63\x20\x23\x39\x44\
-\x42\x32\x43\x43\x22\x2c\x0a\x22\x68\x2e\x20\x63\x20\x23\x38\x43\
-\x42\x37\x45\x37\x22\x2c\x0a\x22\x6a\x2e\x20\x63\x20\x23\x38\x37\
-\x42\x34\x46\x43\x22\x2c\x0a\x22\x6b\x2e\x20\x63\x20\x23\x39\x39\
-\x41\x36\x46\x46\x22\x2c\x0a\x22\x6c\x2e\x20\x63\x20\x23\x39\x35\
-\x42\x30\x45\x33\x22\x2c\x0a\x22\x7a\x2e\x20\x63\x20\x23\x39\x36\
-\x42\x44\x45\x33\x22\x2c\x0a\x22\x78\x2e\x20\x63\x20\x23\x39\x37\
-\x42\x39\x45\x43\x22\x2c\x0a\x22\x63\x2e\x20\x63\x20\x23\x39\x34\
-\x42\x42\x46\x46\x22\x2c\x0a\x22\x76\x2e\x20\x63\x20\x23\x41\x35\
-\x41\x35\x43\x39\x22\x2c\x0a\x22\x62\x2e\x20\x63\x20\x23\x41\x34\
-\x41\x38\x44\x42\x22\x2c\x0a\x22\x6e\x2e\x20\x63\x20\x23\x41\x43\
-\x41\x43\x44\x39\x22\x2c\x0a\x22\x6d\x2e\x20\x63\x20\x23\x41\x46\
-\x42\x33\x43\x31\x22\x2c\x0a\x22\x4d\x2e\x20\x63\x20\x23\x41\x44\
-\x42\x33\x43\x43\x22\x2c\x0a\x22\x4e\x2e\x20\x63\x20\x23\x41\x31\
-\x42\x39\x44\x38\x22\x2c\x0a\x22\x42\x2e\x20\x63\x20\x23\x42\x32\
-\x42\x32\x43\x39\x22\x2c\x0a\x22\x56\x2e\x20\x63\x20\x23\x42\x33\
-\x42\x34\x44\x31\x22\x2c\x0a\x22\x43\x2e\x20\x63\x20\x23\x42\x41\
-\x42\x41\x44\x33\x22\x2c\x0a\x22\x5a\x2e\x20\x63\x20\x23\x42\x45\
-\x42\x45\x44\x39\x22\x2c\x0a\x22\x41\x2e\x20\x63\x20\x23\x41\x43\
-\x41\x43\x45\x39\x22\x2c\x0a\x22\x53\x2e\x20\x63\x20\x23\x41\x37\
-\x41\x37\x46\x45\x22\x2c\x0a\x22\x44\x2e\x20\x63\x20\x23\x41\x35\
-\x42\x46\x45\x35\x22\x2c\x0a\x22\x46\x2e\x20\x63\x20\x23\x41\x39\
-\x42\x32\x45\x35\x22\x2c\x0a\x22\x47\x2e\x20\x63\x20\x23\x41\x44\
-\x42\x44\x46\x30\x22\x2c\x0a\x22\x48\x2e\x20\x63\x20\x23\x42\x33\
-\x41\x39\x46\x46\x22\x2c\x0a\x22\x4a\x2e\x20\x63\x20\x23\x42\x33\
-\x42\x33\x45\x36\x22\x2c\x0a\x22\x4b\x2e\x20\x63\x20\x23\x42\x42\
-\x42\x43\x45\x35\x22\x2c\x0a\x22\x4c\x2e\x20\x63\x20\x23\x42\x37\
-\x42\x36\x46\x45\x22\x2c\x0a\x22\x50\x2e\x20\x63\x20\x23\x41\x45\
-\x44\x44\x42\x46\x22\x2c\x0a\x22\x49\x2e\x20\x63\x20\x23\x39\x46\
-\x43\x35\x44\x46\x22\x2c\x0a\x22\x55\x2e\x20\x63\x20\x23\x38\x34\
-\x43\x35\x46\x46\x22\x2c\x0a\x22\x59\x2e\x20\x63\x20\x23\x38\x39\
-\x43\x37\x46\x46\x22\x2c\x0a\x22\x54\x2e\x20\x63\x20\x23\x38\x46\
-\x43\x42\x46\x43\x22\x2c\x0a\x22\x52\x2e\x20\x63\x20\x23\x39\x42\
-\x43\x42\x45\x42\x22\x2c\x0a\x22\x45\x2e\x20\x63\x20\x23\x39\x36\
-\x43\x32\x46\x39\x22\x2c\x0a\x22\x57\x2e\x20\x63\x20\x23\x39\x36\
-\x43\x46\x46\x36\x22\x2c\x0a\x22\x51\x2e\x20\x63\x20\x23\x39\x34\
-\x43\x41\x46\x46\x22\x2c\x0a\x22\x21\x2e\x20\x63\x20\x23\x39\x38\
-\x43\x32\x46\x35\x22\x2c\x0a\x22\x7e\x2e\x20\x63\x20\x23\x39\x39\
-\x43\x35\x46\x46\x22\x2c\x0a\x22\x5e\x2e\x20\x63\x20\x23\x39\x42\
-\x43\x43\x46\x46\x22\x2c\x0a\x22\x2f\x2e\x20\x63\x20\x23\x39\x39\
-\x44\x31\x46\x42\x22\x2c\x0a\x22\x28\x2e\x20\x63\x20\x23\x42\x36\
-\x43\x34\x43\x46\x22\x2c\x0a\x22\x29\x2e\x20\x63\x20\x23\x42\x42\
-\x43\x45\x44\x42\x22\x2c\x0a\x22\x5f\x2e\x20\x63\x20\x23\x41\x36\
-\x43\x34\x45\x43\x22\x2c\x0a\x22\x60\x2e\x20\x63\x20\x23\x41\x34\
-\x43\x43\x46\x46\x22\x2c\x0a\x22\x27\x2e\x20\x63\x20\x23\x41\x43\
-\x43\x31\x46\x34\x22\x2c\x0a\x22\x5d\x2e\x20\x63\x20\x23\x41\x42\
-\x43\x43\x46\x46\x22\x2c\x0a\x22\x5b\x2e\x20\x63\x20\x23\x41\x44\
-\x44\x32\x45\x43\x22\x2c\x0a\x22\x7b\x2e\x20\x63\x20\x23\x41\x36\
-\x44\x33\x46\x44\x22\x2c\x0a\x22\x7d\x2e\x20\x63\x20\x23\x42\x32\
-\x43\x44\x45\x36\x22\x2c\x0a\x22\x7c\x2e\x20\x63\x20\x23\x42\x30\
-\x43\x46\x45\x38\x22\x2c\x0a\x22\x20\x58\x20\x63\x20\x23\x42\x46\
-\x43\x32\x45\x42\x22\x2c\x0a\x22\x2e\x58\x20\x63\x20\x23\x42\x33\
-\x43\x43\x46\x46\x22\x2c\x0a\x22\x58\x58\x20\x63\x20\x23\x42\x42\
-\x43\x43\x46\x46\x22\x2c\x0a\x22\x6f\x58\x20\x63\x20\x23\x42\x32\
-\x44\x30\x45\x37\x22\x2c\x0a\x22\x4f\x58\x20\x63\x20\x23\x42\x36\
-\x44\x41\x46\x35\x22\x2c\x0a\x22\x2b\x58\x20\x63\x20\x23\x42\x32\
-\x44\x39\x46\x46\x22\x2c\x0a\x22\x40\x58\x20\x63\x20\x23\x42\x42\
-\x44\x44\x46\x46\x22\x2c\x0a\x22\x23\x58\x20\x63\x20\x23\x42\x45\
-\x45\x31\x46\x43\x22\x2c\x0a\x22\x24\x58\x20\x63\x20\x23\x44\x43\
-\x41\x46\x38\x31\x22\x2c\x0a\x22\x25\x58\x20\x63\x20\x23\x44\x31\
-\x42\x33\x39\x32\x22\x2c\x0a\x22\x26\x58\x20\x63\x20\x23\x43\x34\
-\x42\x42\x46\x46\x22\x2c\x0a\x22\x2a\x58\x20\x63\x20\x23\x43\x32\
-\x43\x30\x42\x39\x22\x2c\x0a\x22\x3d\x58\x20\x63\x20\x23\x44\x30\
-\x43\x45\x41\x37\x22\x2c\x0a\x22\x2d\x58\x20\x63\x20\x23\x45\x39\
-\x45\x37\x41\x37\x22\x2c\x0a\x22\x3b\x58\x20\x63\x20\x23\x43\x33\
-\x43\x33\x43\x34\x22\x2c\x0a\x22\x3a\x58\x20\x63\x20\x23\x43\x30\
-\x43\x30\x43\x44\x22\x2c\x0a\x22\x3e\x58\x20\x63\x20\x23\x43\x42\
-\x43\x42\x43\x42\x22\x2c\x0a\x22\x2c\x58\x20\x63\x20\x23\x43\x30\
-\x43\x30\x44\x36\x22\x2c\x0a\x22\x3c\x58\x20\x63\x20\x23\x43\x36\
-\x43\x36\x44\x39\x22\x2c\x0a\x22\x31\x58\x20\x63\x20\x23\x43\x46\
-\x43\x46\x44\x36\x22\x2c\x0a\x22\x32\x58\x20\x63\x20\x23\x43\x45\
-\x43\x45\x44\x44\x22\x2c\x0a\x22\x33\x58\x20\x63\x20\x4c\x69\x67\
-\x68\x74\x47\x72\x61\x79\x22\x2c\x0a\x22\x34\x58\x20\x63\x20\x23\
-\x44\x31\x44\x31\x44\x45\x22\x2c\x0a\x22\x35\x58\x20\x63\x20\x23\
-\x44\x35\x44\x38\x44\x39\x22\x2c\x0a\x22\x36\x58\x20\x63\x20\x67\
-\x72\x61\x79\x38\x36\x22\x2c\x0a\x22\x37\x58\x20\x63\x20\x23\x43\
-\x34\x43\x34\x45\x35\x22\x2c\x0a\x22\x38\x58\x20\x63\x20\x23\x43\
-\x32\x43\x32\x45\x43\x22\x2c\x0a\x22\x39\x58\x20\x63\x20\x23\x43\
-\x38\x43\x38\x45\x36\x22\x2c\x0a\x22\x30\x58\x20\x63\x20\x23\x43\
-\x35\x43\x35\x46\x32\x22\x2c\x0a\x22\x71\x58\x20\x63\x20\x23\x43\
-\x34\x43\x34\x46\x45\x22\x2c\x0a\x22\x77\x58\x20\x63\x20\x23\x43\
-\x33\x43\x43\x46\x46\x22\x2c\x0a\x22\x65\x58\x20\x63\x20\x23\x43\
-\x44\x43\x34\x46\x46\x22\x2c\x0a\x22\x72\x58\x20\x63\x20\x23\x43\
-\x44\x43\x46\x46\x36\x22\x2c\x0a\x22\x74\x58\x20\x63\x20\x23\x43\
-\x42\x43\x42\x46\x45\x22\x2c\x0a\x22\x79\x58\x20\x63\x20\x23\x43\
-\x39\x44\x43\x45\x43\x22\x2c\x0a\x22\x75\x58\x20\x63\x20\x23\x44\
-\x32\x43\x43\x46\x44\x22\x2c\x0a\x22\x69\x58\x20\x63\x20\x23\x44\
-\x33\x44\x33\x45\x31\x22\x2c\x0a\x22\x70\x58\x20\x63\x20\x23\x44\
-\x36\x44\x37\x45\x45\x22\x2c\x0a\x22\x61\x58\x20\x63\x20\x23\x44\
-\x36\x44\x44\x45\x34\x22\x2c\x0a\x22\x73\x58\x20\x63\x20\x23\x44\
-\x36\x44\x46\x45\x38\x22\x2c\x0a\x22\x64\x58\x20\x63\x20\x23\x44\
-\x41\x44\x43\x45\x34\x22\x2c\x0a\x22\x66\x58\x20\x63\x20\x23\x44\
-\x38\x44\x43\x45\x39\x22\x2c\x0a\x22\x67\x58\x20\x63\x20\x23\x44\
-\x31\x44\x32\x46\x32\x22\x2c\x0a\x22\x68\x58\x20\x63\x20\x23\x44\
-\x33\x44\x33\x46\x46\x22\x2c\x0a\x22\x6a\x58\x20\x63\x20\x23\x44\
-\x42\x44\x42\x46\x46\x22\x2c\x0a\x22\x6b\x58\x20\x63\x20\x23\x43\
-\x44\x45\x30\x45\x44\x22\x2c\x0a\x22\x6c\x58\x20\x63\x20\x23\x43\
-\x38\x45\x32\x46\x42\x22\x2c\x0a\x22\x7a\x58\x20\x63\x20\x23\x44\
-\x35\x45\x30\x45\x42\x22\x2c\x0a\x22\x78\x58\x20\x63\x20\x23\x44\
-\x44\x45\x33\x45\x39\x22\x2c\x0a\x22\x63\x58\x20\x63\x20\x23\x44\
-\x36\x45\x39\x46\x43\x22\x2c\x0a\x22\x76\x58\x20\x63\x20\x23\x45\
-\x41\x43\x35\x46\x46\x22\x2c\x0a\x22\x62\x58\x20\x63\x20\x23\x45\
-\x45\x44\x37\x46\x46\x22\x2c\x0a\x22\x6e\x58\x20\x63\x20\x23\x46\
-\x44\x43\x43\x46\x46\x22\x2c\x0a\x22\x6d\x58\x20\x63\x20\x23\x46\
-\x41\x44\x38\x46\x46\x22\x2c\x0a\x22\x4d\x58\x20\x63\x20\x67\x72\
-\x61\x79\x38\x39\x22\x2c\x0a\x22\x4e\x58\x20\x63\x20\x23\x45\x32\
-\x45\x34\x45\x44\x22\x2c\x0a\x22\x42\x58\x20\x63\x20\x23\x45\x34\
-\x45\x38\x45\x43\x22\x2c\x0a\x22\x56\x58\x20\x63\x20\x67\x72\x61\
-\x79\x39\x33\x22\x2c\x0a\x22\x43\x58\x20\x63\x20\x23\x45\x33\x45\
-\x33\x46\x33\x22\x2c\x0a\x22\x5a\x58\x20\x63\x20\x23\x45\x33\x45\
-\x33\x46\x45\x22\x2c\x0a\x22\x41\x58\x20\x63\x20\x23\x45\x33\x45\
-\x44\x46\x33\x22\x2c\x0a\x22\x53\x58\x20\x63\x20\x23\x45\x42\x45\
-\x44\x46\x33\x22\x2c\x0a\x22\x44\x58\x20\x63\x20\x23\x45\x42\x45\
-\x42\x46\x46\x22\x2c\x0a\x22\x46\x58\x20\x63\x20\x23\x45\x39\x46\
-\x34\x46\x45\x22\x2c\x0a\x22\x47\x58\x20\x63\x20\x23\x46\x44\x45\
-\x38\x46\x45\x22\x2c\x0a\x22\x48\x58\x20\x63\x20\x23\x46\x33\x46\
-\x33\x46\x33\x22\x2c\x0a\x22\x4a\x58\x20\x63\x20\x23\x46\x34\x46\
-\x34\x46\x43\x22\x2c\x0a\x22\x4b\x58\x20\x63\x20\x23\x46\x33\x46\
-\x38\x46\x46\x22\x2c\x0a\x22\x4c\x58\x20\x63\x20\x23\x46\x45\x46\
-\x31\x46\x46\x22\x2c\x0a\x22\x50\x58\x20\x63\x20\x23\x46\x44\x46\
-\x44\x46\x45\x22\x2c\x0a\x22\x49\x58\x20\x63\x20\x62\x6c\x61\x63\
-\x6b\x22\x2c\x0a\x22\x55\x58\x20\x63\x20\x62\x6c\x61\x63\x6b\x22\
-\x2c\x0a\x22\x59\x58\x20\x63\x20\x4e\x6f\x6e\x65\x22\x2c\x0a\x2f\
-\x2a\x20\x70\x69\x78\x65\x6c\x73\x20\x2a\x2f\x0a\x22\x59\x58\x59\
-\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\
-\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\
-\x58\x59\x58\x59\x58\x59\x58\x35\x58\x33\x58\x3e\x58\x77\x2e\x3e\
-\x58\x4d\x58\x59\x58\x59\x58\x42\x58\x59\x58\x59\x58\x59\x58\x59\
-\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\
-\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\x58\x22\x2c\x0a\
-\x22\x59\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\
-\x58\x59\x58\x59\x58\x35\x58\x33\x58\x3e\x58\x77\x2e\x77\x2e\x30\
-\x2e\x35\x2e\x6d\x2e\x36\x2e\x37\x2e\x4d\x2e\x4d\x2e\x4b\x2e\x4b\
-\x2e\x38\x58\x38\x2e\x30\x2e\x36\x58\x3e\x58\x77\x2e\x3b\x58\x77\
-\x2e\x30\x2e\x3b\x58\x3e\x58\x4d\x58\x59\x58\x59\x58\x59\x58\x59\
-\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\
-\x58\x22\x2c\x0a\x22\x59\x58\x59\x58\x3e\x58\x77\x2e\x35\x2e\x33\
-\x2e\x39\x2e\x31\x2e\x32\x2e\x67\x2e\x67\x2e\x4e\x2e\x44\x2e\x44\
-\x2e\x5d\x2e\x2e\x58\x2e\x58\x2e\x58\x58\x58\x58\x58\x58\x58\x77\
-\x58\x77\x58\x77\x58\x74\x58\x56\x2e\x3a\x20\x3e\x58\x35\x2e\x4b\
-\x58\x50\x58\x50\x58\x50\x58\x4d\x58\x33\x58\x2a\x58\x35\x2e\x2a\
-\x58\x4d\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\
-\x58\x59\x58\x59\x58\x22\x2c\x0a\x22\x3b\x58\x3e\x58\x33\x2e\x52\
-\x20\x5e\x20\x55\x2e\x51\x2e\x5e\x2e\x5e\x2e\x5e\x2e\x60\x2e\x60\
-\x2e\x60\x2e\x5d\x2e\x5d\x2e\x5d\x2e\x2e\x58\x2e\x58\x2e\x58\x58\
-\x58\x58\x58\x58\x58\x77\x58\x77\x58\x77\x58\x20\x58\x2d\x20\x35\
-\x2e\x34\x58\x4a\x58\x4b\x58\x50\x58\x50\x58\x50\x58\x50\x58\x50\
-\x58\x71\x2e\x2a\x2e\x2a\x58\x4d\x58\x59\x58\x59\x58\x59\x58\x59\
-\x58\x59\x58\x59\x58\x59\x58\x59\x58\x22\x2c\x0a\x22\x71\x2e\x35\
-\x58\x71\x2e\x48\x20\x45\x20\x5e\x20\x55\x2e\x51\x2e\x5e\x2e\x5e\
-\x2e\x5e\x2e\x60\x2e\x60\x2e\x60\x2e\x5d\x2e\x5d\x2e\x5d\x2e\x2e\
-\x58\x2e\x58\x2e\x58\x58\x58\x58\x58\x58\x58\x77\x58\x77\x58\x77\
-\x58\x2a\x2e\x34\x2e\x5a\x58\x44\x58\x4a\x58\x4a\x58\x50\x58\x50\
-\x58\x50\x58\x48\x58\x3a\x20\x26\x20\x77\x2e\x42\x58\x59\x58\x59\
-\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\x58\x22\x2c\x0a\
-\x22\x33\x58\x33\x58\x50\x58\x4b\x58\x23\x58\x2f\x2e\x5e\x20\x55\
-\x2e\x51\x2e\x5e\x2e\x5e\x2e\x5e\x2e\x60\x2e\x60\x2e\x60\x2e\x5d\
-\x2e\x5d\x2e\x5d\x2e\x2e\x58\x2e\x58\x2e\x58\x58\x58\x58\x58\x58\
-\x58\x77\x58\x77\x58\x34\x2e\x39\x58\x6a\x58\x5a\x58\x44\x58\x44\
-\x58\x4a\x58\x50\x58\x50\x58\x3e\x58\x6f\x20\x2a\x2e\x33\x58\x59\
-\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\
-\x58\x22\x2c\x0a\x22\x4d\x58\x30\x2e\x48\x58\x48\x58\x48\x58\x48\
-\x58\x54\x2e\x5e\x20\x55\x2e\x51\x2e\x5e\x2e\x5e\x2e\x5e\x2e\x60\
-\x2e\x60\x2e\x60\x2e\x5d\x2e\x5d\x2e\x5d\x2e\x2e\x58\x2e\x58\x2e\
-\x58\x58\x58\x58\x58\x58\x58\x77\x58\x4b\x2e\x68\x58\x68\x58\x6a\
-\x58\x5a\x58\x44\x58\x44\x58\x4a\x58\x50\x58\x3d\x2e\x6f\x20\x35\
-\x2e\x4d\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\
-\x58\x59\x58\x59\x58\x22\x2c\x0a\x22\x59\x58\x77\x2e\x4d\x58\x59\
-\x58\x59\x58\x59\x58\x4f\x58\x45\x20\x5e\x20\x55\x2e\x51\x2e\x5e\
-\x2e\x5e\x2e\x5e\x2e\x60\x2e\x60\x2e\x60\x2e\x5d\x2e\x5d\x2e\x5d\
-\x2e\x2e\x58\x27\x2e\x47\x2e\x46\x2e\x46\x2e\x62\x2e\x66\x58\x5a\
-\x58\x5a\x58\x6a\x58\x6a\x58\x5a\x58\x44\x58\x44\x58\x31\x58\x25\
-\x20\x2d\x20\x3e\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\
-\x58\x59\x58\x59\x58\x59\x58\x59\x58\x22\x2c\x0a\x22\x59\x58\x36\
-\x58\x71\x2e\x42\x58\x42\x58\x42\x58\x78\x58\x54\x20\x45\x20\x5e\
-\x20\x55\x2e\x51\x2e\x5e\x2e\x21\x2e\x78\x2e\x6c\x2e\x66\x2e\x79\
-\x2e\x74\x2e\x65\x2e\x3e\x2e\x74\x2e\x74\x2e\x74\x2e\x74\x2e\x74\
-\x2e\x69\x58\x48\x58\x50\x58\x50\x58\x4b\x58\x4a\x58\x44\x58\x44\
-\x58\x35\x2e\x2e\x20\x3b\x2e\x36\x58\x59\x58\x59\x58\x59\x58\x59\
-\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\x58\x22\x2c\x0a\
-\x22\x59\x58\x42\x58\x33\x2e\x4d\x58\x4d\x58\x4d\x58\x4d\x58\x68\
-\x2e\x50\x20\x49\x20\x5a\x20\x5a\x20\x65\x20\x72\x20\x72\x20\x72\
-\x20\x72\x20\x3e\x2e\x3e\x2e\x3e\x2e\x3e\x2e\x3e\x2e\x74\x2e\x74\
-\x2e\x74\x2e\x74\x2e\x32\x58\x42\x58\x48\x58\x48\x58\x4a\x58\x59\
-\x58\x59\x58\x4d\x58\x3b\x2e\x25\x20\x77\x2e\x42\x58\x59\x58\x59\
-\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\
-\x58\x22\x2c\x0a\x22\x59\x58\x59\x58\x77\x2e\x3b\x58\x36\x58\x36\
-\x58\x36\x58\x3a\x58\x30\x20\x30\x20\x39\x20\x65\x20\x65\x20\x65\
-\x20\x72\x20\x72\x20\x72\x20\x72\x20\x3e\x2e\x3e\x2e\x3e\x2e\x3e\
-\x2e\x3e\x2e\x76\x2e\x56\x2e\x43\x2e\x64\x58\x4d\x58\x4d\x58\x36\
-\x58\x36\x58\x36\x58\x36\x58\x35\x58\x33\x58\x33\x2e\x33\x2e\x36\
-\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\
-\x58\x59\x58\x59\x58\x22\x2c\x0a\x22\x59\x58\x59\x58\x3e\x58\x3b\
-\x58\x59\x58\x36\x58\x35\x58\x35\x58\x65\x20\x30\x20\x30\x20\x39\
-\x20\x65\x20\x65\x20\x65\x20\x72\x20\x3e\x2e\x3c\x2e\x43\x2e\x2c\
-\x58\x69\x58\x42\x58\x59\x58\x42\x58\x4d\x58\x4d\x58\x4d\x58\x4d\
-\x58\x36\x58\x36\x58\x36\x58\x36\x58\x35\x58\x33\x58\x33\x58\x33\
-\x58\x35\x2e\x3b\x2e\x35\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\
-\x58\x59\x58\x59\x58\x59\x58\x59\x58\x22\x2c\x0a\x22\x59\x58\x59\
-\x58\x3e\x58\x3b\x58\x50\x58\x50\x58\x59\x58\x33\x58\x3c\x2e\x30\
-\x20\x3c\x2e\x3c\x2e\x56\x2e\x32\x58\x69\x58\x48\x58\x48\x58\x48\
-\x58\x59\x58\x59\x58\x59\x58\x59\x58\x42\x58\x4d\x58\x4d\x58\x4d\
-\x58\x4d\x58\x36\x58\x36\x58\x36\x58\x36\x58\x35\x58\x33\x58\x33\
-\x58\x33\x58\x33\x58\x3e\x58\x30\x2e\x3d\x2e\x3e\x58\x42\x58\x59\
-\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\x58\x22\x2c\x0a\
-\x22\x59\x58\x59\x58\x3e\x58\x3b\x58\x50\x58\x50\x58\x50\x58\x4a\
-\x58\x79\x58\x4b\x58\x50\x58\x50\x58\x4a\x58\x48\x58\x48\x58\x48\
-\x58\x48\x58\x59\x58\x59\x58\x59\x58\x59\x58\x42\x58\x4d\x58\x4d\
-\x58\x4d\x58\x4d\x58\x36\x58\x36\x58\x36\x58\x36\x58\x35\x58\x29\
-\x2e\x49\x2e\x59\x20\x33\x2e\x3d\x2e\x26\x20\x26\x20\x2d\x20\x33\
-\x2e\x36\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\
-\x58\x22\x2c\x0a\x22\x59\x58\x59\x58\x3e\x58\x3b\x58\x36\x58\x4d\
-\x58\x4a\x58\x48\x58\x6c\x58\x4c\x20\x50\x58\x4a\x58\x48\x58\x48\
-\x58\x48\x58\x48\x58\x59\x58\x59\x58\x59\x58\x59\x58\x42\x58\x4d\
-\x58\x4d\x58\x4d\x58\x4d\x58\x6f\x58\x52\x2e\x59\x20\x47\x20\x42\
-\x20\x62\x20\x6e\x20\x6d\x20\x4d\x20\x2d\x20\x2e\x20\x2d\x20\x3b\
-\x2e\x33\x2e\x3b\x58\x4d\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\
-\x58\x59\x58\x59\x58\x22\x2c\x0a\x22\x59\x58\x59\x58\x3e\x58\x3b\
-\x58\x33\x58\x33\x2e\x30\x2e\x4d\x58\x6c\x58\x42\x20\x29\x20\x48\
-\x58\x48\x58\x48\x58\x48\x58\x59\x58\x59\x58\x59\x58\x59\x58\x5b\
-\x2e\x52\x2e\x7e\x20\x46\x20\x4d\x20\x62\x20\x6e\x20\x4d\x20\x4d\
-\x20\x4e\x20\x53\x20\x34\x20\x33\x20\x36\x20\x36\x20\x35\x20\x35\
-\x20\x2d\x2e\x71\x2e\x35\x58\x4d\x58\x59\x58\x59\x58\x59\x58\x59\
-\x58\x59\x58\x59\x58\x59\x58\x59\x58\x22\x2c\x0a\x22\x59\x58\x59\
-\x58\x3e\x58\x3b\x58\x36\x58\x36\x58\x3b\x58\x3b\x58\x6c\x58\x46\
-\x20\x4d\x20\x2f\x2e\x41\x58\x4f\x58\x57\x2e\x7e\x20\x42\x20\x6d\
-\x20\x6e\x20\x6e\x20\x4d\x20\x42\x20\x42\x20\x46\x20\x46\x20\x46\
-\x20\x44\x20\x33\x20\x36\x20\x3c\x2e\x56\x2e\x39\x58\x37\x58\x67\
-\x58\x4b\x2e\x6e\x2e\x74\x2e\x30\x20\x39\x20\x6d\x2e\x4d\x58\x59\
-\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\x58\x22\x2c\x0a\
-\x22\x59\x58\x59\x58\x3e\x58\x2a\x58\x33\x58\x33\x2e\x30\x2e\x42\
-\x58\x6b\x58\x4b\x20\x48\x20\x6e\x20\x6e\x20\x6d\x20\x4d\x20\x42\
-\x20\x46\x20\x4b\x20\x4b\x20\x4b\x20\x4b\x20\x4b\x20\x4b\x20\x4b\
-\x20\x4a\x20\x77\x20\x36\x20\x42\x2e\x43\x58\x44\x58\x44\x58\x5a\
-\x58\x5a\x58\x6a\x58\x68\x58\x68\x58\x74\x58\x71\x58\x74\x2e\x30\
-\x20\x3a\x2e\x33\x58\x42\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\
-\x58\x22\x2c\x0a\x22\x59\x58\x59\x58\x3e\x58\x77\x2e\x79\x58\x78\
-\x58\x3b\x58\x33\x58\x6b\x58\x54\x20\x54\x20\x54\x20\x54\x20\x54\
-\x20\x54\x20\x54\x20\x54\x20\x54\x20\x54\x20\x54\x20\x54\x20\x54\
-\x20\x54\x20\x55\x20\x71\x20\x3a\x2e\x53\x58\x50\x58\x44\x58\x44\
-\x58\x5a\x58\x5a\x58\x6a\x58\x68\x58\x68\x58\x74\x58\x74\x58\x71\
-\x58\x26\x58\x41\x2e\x65\x20\x37\x20\x3b\x58\x4d\x58\x59\x58\x59\
-\x58\x59\x58\x59\x58\x22\x2c\x0a\x22\x59\x58\x59\x58\x3e\x58\x77\
-\x2e\x57\x20\x3c\x20\x7a\x2e\x59\x58\x6b\x58\x51\x20\x51\x20\x51\
-\x20\x51\x20\x51\x20\x51\x20\x51\x20\x51\x20\x51\x20\x51\x20\x51\
-\x20\x51\x20\x51\x20\x55\x20\x36\x20\x3c\x2e\x50\x58\x50\x58\x50\
-\x58\x44\x58\x5a\x58\x5a\x58\x6a\x58\x68\x58\x68\x58\x74\x58\x74\
-\x58\x71\x58\x26\x58\x4c\x2e\x4c\x2e\x53\x2e\x65\x20\x37\x20\x2a\
-\x58\x4d\x58\x59\x58\x59\x58\x59\x58\x22\x2c\x0a\x22\x59\x58\x59\
-\x58\x3e\x58\x77\x2e\x57\x20\x2c\x20\x3e\x20\x7d\x2e\x6b\x58\x28\
-\x20\x28\x20\x28\x20\x28\x20\x28\x20\x28\x20\x28\x20\x28\x20\x28\
-\x20\x28\x20\x28\x20\x28\x20\x6a\x2e\x30\x20\x3c\x2e\x50\x58\x50\
-\x58\x50\x58\x50\x58\x4a\x58\x5a\x58\x6a\x58\x68\x58\x68\x58\x74\
-\x58\x74\x58\x71\x58\x26\x58\x4c\x2e\x4c\x2e\x48\x2e\x53\x2e\x61\
-\x2e\x65\x20\x38\x20\x3e\x58\x42\x58\x59\x58\x59\x58\x22\x2c\x0a\
-\x22\x59\x58\x59\x58\x3e\x58\x77\x2e\x57\x20\x31\x20\x2c\x20\x7d\
-\x2e\x7a\x58\x59\x2e\x59\x2e\x59\x2e\x59\x2e\x59\x2e\x59\x2e\x59\
-\x2e\x59\x2e\x59\x2e\x59\x2e\x59\x2e\x63\x2e\x65\x20\x3e\x2e\x50\
-\x58\x50\x58\x50\x58\x50\x58\x50\x58\x50\x58\x6a\x58\x68\x58\x68\
-\x58\x74\x58\x74\x58\x71\x58\x26\x58\x4c\x2e\x4c\x2e\x48\x2e\x53\
-\x2e\x61\x2e\x61\x2e\x70\x2e\x30\x20\x2d\x2e\x33\x58\x59\x58\x59\
-\x58\x22\x2c\x0a\x22\x59\x58\x59\x58\x3e\x58\x77\x2e\x7e\x20\x76\
-\x20\x31\x20\x7c\x2e\x7a\x58\x51\x2e\x51\x2e\x51\x2e\x51\x2e\x51\
-\x2e\x51\x2e\x51\x2e\x51\x2e\x51\x2e\x51\x2e\x63\x2e\x72\x2e\x39\
-\x20\x4a\x58\x50\x58\x50\x58\x50\x58\x50\x58\x50\x58\x50\x58\x5a\
-\x58\x68\x58\x74\x58\x74\x58\x71\x58\x26\x58\x4c\x2e\x4c\x2e\x48\
-\x2e\x53\x2e\x61\x2e\x61\x2e\x61\x2e\x61\x2e\x65\x2e\x35\x20\x35\
-\x2e\x4d\x58\x59\x58\x22\x2c\x0a\x22\x59\x58\x59\x58\x3e\x58\x77\
-\x2e\x2f\x20\x62\x20\x76\x20\x7c\x2e\x7a\x58\x5e\x2e\x5e\x2e\x5e\
-\x2e\x5e\x2e\x5e\x2e\x5e\x2e\x5e\x2e\x5e\x2e\x5e\x2e\x7e\x2e\x6b\
-\x2e\x30\x20\x3c\x58\x50\x58\x50\x58\x50\x58\x50\x58\x50\x58\x50\
-\x58\x50\x58\x4b\x58\x74\x58\x74\x58\x71\x58\x26\x58\x4c\x2e\x4c\
-\x2e\x48\x2e\x53\x2e\x61\x2e\x61\x2e\x61\x2e\x61\x2e\x53\x2e\x53\
-\x2e\x30\x20\x38\x20\x3e\x58\x59\x58\x22\x2c\x0a\x22\x59\x58\x59\
-\x58\x3e\x58\x71\x2e\x7b\x2e\x62\x20\x62\x20\x5b\x2e\x7a\x58\x5e\
-\x2e\x5e\x2e\x5e\x2e\x5e\x2e\x5e\x2e\x5e\x2e\x28\x2e\x2a\x58\x25\
-\x58\x7d\x20\x60\x20\x65\x20\x50\x58\x50\x58\x50\x58\x50\x58\x50\
-\x58\x50\x58\x50\x58\x50\x58\x50\x58\x68\x58\x65\x58\x65\x58\x26\
-\x58\x4c\x2e\x48\x2e\x53\x2e\x61\x2e\x61\x2e\x61\x2e\x61\x2e\x53\
-\x2e\x53\x2e\x48\x2e\x3e\x2e\x32\x20\x30\x2e\x4d\x58\x22\x2c\x0a\
-\x22\x59\x58\x59\x58\x3e\x58\x30\x2e\x59\x58\x6b\x58\x42\x20\x5b\
-\x2e\x7a\x58\x7b\x2e\x7b\x2e\x7b\x2e\x24\x58\x2b\x2e\x4f\x2e\x23\
-\x2e\x23\x2e\x4f\x2e\x5b\x20\x3d\x20\x56\x2e\x50\x58\x50\x58\x50\
-\x58\x50\x58\x50\x58\x50\x58\x50\x58\x50\x58\x50\x58\x6d\x58\x6e\
-\x58\x6e\x58\x6d\x58\x6d\x58\x26\x58\x61\x2e\x61\x2e\x61\x2e\x61\
-\x2e\x53\x2e\x53\x2e\x48\x2e\x4c\x2e\x69\x2e\x35\x20\x3b\x2e\x36\
-\x58\x22\x2c\x0a\x22\x59\x58\x59\x58\x3e\x58\x30\x2e\x59\x58\x42\
-\x58\x42\x58\x4d\x58\x7a\x58\x7b\x2e\x7b\x2e\x7b\x2e\x4f\x2e\x4f\
-\x2e\x23\x2e\x23\x2e\x24\x2e\x6f\x2e\x7b\x20\x36\x20\x71\x58\x68\
-\x58\x44\x58\x50\x58\x50\x58\x50\x58\x50\x58\x50\x58\x50\x58\x47\
-\x58\x6d\x58\x6e\x58\x76\x58\x62\x58\x47\x58\x4c\x58\x26\x58\x61\
-\x2e\x61\x2e\x53\x2e\x53\x2e\x48\x2e\x4c\x2e\x4c\x2e\x4c\x2e\x36\
-\x20\x2d\x20\x3e\x58\x22\x2c\x0a\x22\x59\x58\x59\x58\x3e\x58\x30\
-\x2e\x42\x58\x42\x58\x4d\x58\x4d\x58\x7a\x58\x7b\x2e\x7b\x2e\x7b\
-\x2e\x4f\x2e\x23\x2e\x23\x2e\x24\x2e\x24\x2e\x6f\x2e\x27\x20\x65\
-\x20\x74\x58\x74\x58\x74\x58\x74\x58\x6a\x58\x44\x58\x50\x58\x50\
-\x58\x4c\x58\x47\x58\x4c\x58\x30\x58\x65\x2e\x70\x2e\x26\x58\x4c\
-\x58\x4a\x58\x53\x2e\x53\x2e\x53\x2e\x48\x2e\x4c\x2e\x4c\x2e\x71\
-\x58\x71\x58\x39\x20\x2a\x20\x3b\x58\x22\x2c\x0a\x22\x59\x58\x59\
-\x58\x3e\x58\x30\x2e\x42\x58\x4d\x58\x4d\x58\x4d\x58\x7a\x58\x2b\
-\x58\x2b\x58\x2b\x58\x58\x2e\x25\x2e\x40\x2e\x24\x2e\x24\x2e\x6f\
-\x2e\x5d\x20\x74\x2e\x74\x58\x74\x58\x74\x58\x74\x58\x74\x58\x74\
-\x58\x75\x58\x44\x58\x4c\x58\x4c\x58\x3c\x58\x30\x20\x5a\x20\x30\
-\x20\x65\x2e\x75\x58\x50\x58\x71\x58\x53\x2e\x48\x2e\x4c\x2e\x4c\
-\x2e\x71\x58\x71\x58\x74\x58\x43\x20\x2b\x20\x30\x2e\x22\x2c\x0a\
-\x22\x59\x58\x59\x58\x3e\x58\x30\x2e\x4d\x58\x4d\x58\x4d\x58\x4d\
-\x58\x73\x58\x2b\x58\x2b\x58\x2b\x58\x20\x2e\x20\x2e\x20\x2e\x2e\
-\x2e\x26\x2e\x6f\x2e\x5f\x20\x75\x2e\x74\x58\x74\x58\x74\x58\x74\
-\x58\x74\x58\x74\x58\x74\x58\x44\x58\x4c\x58\x75\x58\x39\x20\x3d\
-\x58\x2b\x58\x5f\x2e\x36\x20\x4c\x2e\x50\x58\x68\x58\x48\x2e\x4c\
-\x2e\x71\x58\x71\x58\x74\x58\x72\x58\x67\x58\x3a\x2e\x2b\x20\x35\
-\x2e\x22\x2c\x0a\x22\x59\x58\x59\x58\x3e\x58\x35\x2e\x4d\x58\x4d\
-\x58\x4d\x58\x4d\x58\x73\x58\x40\x58\x40\x58\x40\x58\x20\x2e\x20\
-\x2e\x20\x2e\x20\x2e\x6c\x20\x7c\x20\x5f\x20\x4a\x2e\x74\x58\x74\
-\x58\x74\x58\x74\x58\x74\x58\x74\x58\x74\x58\x4a\x58\x4c\x58\x41\
-\x2e\x2d\x2e\x2d\x58\x40\x58\x40\x58\x36\x20\x70\x58\x50\x58\x53\
-\x58\x66\x58\x66\x58\x66\x58\x66\x58\x66\x58\x66\x58\x66\x58\x3a\
-\x2e\x2b\x20\x35\x2e\x22\x2c\x0a\x22\x59\x58\x59\x58\x3e\x58\x35\
-\x2e\x4d\x58\x4d\x58\x4d\x58\x4d\x58\x61\x58\x40\x58\x40\x58\x40\
-\x58\x63\x20\x63\x20\x63\x20\x63\x20\x67\x20\x74\x20\x24\x20\x4b\
-\x2e\x68\x58\x68\x58\x74\x58\x74\x58\x71\x58\x26\x58\x4c\x2e\x44\
-\x58\x4c\x58\x70\x2e\x37\x20\x2d\x58\x40\x58\x64\x2e\x39\x20\x53\
-\x58\x50\x58\x48\x58\x4e\x58\x4e\x58\x4e\x58\x4e\x58\x4e\x58\x4e\
-\x58\x4e\x58\x3a\x2e\x2b\x20\x35\x2e\x22\x2c\x0a\x22\x59\x58\x59\
-\x58\x3e\x58\x35\x2e\x4d\x58\x4d\x58\x4d\x58\x36\x58\x61\x58\x23\
-\x58\x23\x58\x23\x58\x78\x20\x78\x20\x78\x20\x78\x20\x64\x20\x74\
-\x20\x24\x20\x4b\x2e\x68\x58\x74\x58\x74\x58\x71\x58\x26\x58\x4c\
-\x2e\x4c\x2e\x5a\x58\x4c\x58\x26\x58\x72\x20\x39\x20\x43\x20\x36\
-\x20\x3c\x58\x4c\x58\x50\x58\x4a\x58\x53\x58\x53\x58\x53\x58\x53\
-\x58\x53\x58\x53\x58\x53\x58\x36\x20\x6f\x20\x30\x2e\x22\x2c\x0a\
-\x22\x59\x58\x59\x58\x3e\x58\x35\x2e\x4d\x58\x4d\x58\x36\x58\x36\
-\x58\x61\x58\x6c\x58\x6c\x58\x6c\x58\x7a\x20\x7a\x20\x7a\x20\x7a\
-\x20\x64\x20\x74\x20\x23\x20\x75\x2e\x74\x58\x74\x58\x71\x58\x26\
-\x58\x4c\x2e\x4c\x2e\x48\x2e\x26\x58\x4c\x58\x6d\x58\x48\x2e\x72\
-\x2e\x72\x2e\x20\x58\x47\x58\x4c\x58\x50\x58\x50\x58\x50\x58\x50\
-\x58\x4a\x58\x4a\x58\x4a\x58\x4a\x58\x69\x58\x35\x20\x25\x20\x3b\
-\x58\x22\x2c\x0a\x22\x59\x58\x59\x58\x3e\x58\x35\x2e\x4d\x58\x36\
-\x58\x36\x58\x36\x58\x61\x58\x6c\x58\x6c\x58\x6c\x58\x6b\x20\x6b\
-\x20\x6b\x20\x6b\x20\x61\x20\x74\x20\x66\x20\x3e\x2e\x74\x58\x71\
-\x58\x26\x58\x4c\x2e\x4c\x2e\x48\x2e\x53\x2e\x61\x2e\x75\x58\x47\
-\x58\x6d\x58\x76\x58\x76\x58\x6d\x58\x47\x58\x4c\x58\x50\x58\x50\
-\x58\x50\x58\x50\x58\x50\x58\x50\x58\x50\x58\x50\x58\x76\x2e\x40\
-\x20\x2d\x20\x3e\x58\x22\x2c\x0a\x22\x59\x58\x59\x58\x3b\x58\x35\
-\x2e\x36\x58\x36\x58\x36\x58\x36\x58\x61\x58\x63\x58\x63\x58\x63\
-\x58\x67\x20\x67\x20\x67\x20\x67\x20\x70\x20\x74\x20\x75\x20\x65\
-\x20\x71\x58\x26\x58\x4c\x2e\x4c\x2e\x48\x2e\x53\x2e\x61\x2e\x61\
-\x2e\x61\x2e\x26\x58\x62\x58\x6e\x58\x6e\x58\x6d\x58\x62\x58\x50\
-\x58\x50\x58\x50\x58\x50\x58\x50\x58\x50\x58\x50\x58\x50\x58\x50\
-\x58\x65\x20\x58\x20\x3d\x2e\x35\x58\x22\x2c\x0a\x22\x59\x58\x59\
-\x58\x3b\x58\x33\x2e\x36\x58\x36\x58\x36\x58\x36\x58\x61\x58\x63\
-\x58\x63\x58\x63\x58\x64\x20\x64\x20\x64\x20\x64\x20\x70\x20\x74\
-\x20\x74\x20\x35\x20\x41\x2e\x4c\x2e\x4c\x2e\x48\x2e\x53\x2e\x61\
-\x2e\x61\x2e\x61\x2e\x61\x2e\x53\x2e\x53\x2e\x4c\x2e\x26\x58\x4c\
-\x2e\x71\x58\x50\x58\x50\x58\x50\x58\x50\x58\x50\x58\x50\x58\x50\
-\x58\x50\x58\x3c\x58\x35\x20\x6f\x20\x35\x2e\x4d\x58\x22\x2c\x0a\
-\x22\x59\x58\x59\x58\x3b\x58\x33\x2e\x3b\x58\x33\x58\x36\x58\x35\
-\x58\x73\x58\x63\x58\x63\x58\x63\x58\x61\x20\x61\x20\x61\x20\x61\
-\x20\x70\x20\x74\x20\x74\x20\x23\x20\x3e\x2e\x4c\x2e\x48\x2e\x53\
-\x2e\x61\x2e\x61\x2e\x61\x2e\x61\x2e\x53\x2e\x53\x2e\x48\x2e\x4c\
-\x2e\x4c\x2e\x71\x58\x71\x58\x44\x58\x50\x58\x50\x58\x50\x58\x50\
-\x58\x50\x58\x50\x58\x50\x58\x65\x20\x4f\x20\x2d\x20\x3e\x58\x59\
-\x58\x22\x2c\x0a\x22\x59\x58\x59\x58\x3b\x58\x33\x2e\x3b\x58\x3b\
-\x2e\x30\x2e\x33\x58\x78\x58\x63\x58\x63\x58\x63\x58\x69\x20\x69\
-\x20\x69\x20\x69\x20\x69\x20\x74\x20\x74\x20\x79\x20\x36\x20\x53\
-\x2e\x53\x2e\x61\x2e\x61\x2e\x61\x2e\x61\x2e\x53\x2e\x53\x2e\x48\
-\x2e\x4c\x2e\x4c\x2e\x71\x58\x71\x58\x74\x58\x6a\x58\x50\x58\x50\
-\x58\x50\x58\x50\x58\x50\x58\x50\x58\x42\x2e\x32\x20\x2e\x20\x33\
-\x2e\x36\x58\x59\x58\x22\x2c\x0a\x22\x59\x58\x59\x58\x3b\x58\x33\
-\x2e\x3e\x58\x3e\x58\x30\x2e\x77\x2e\x78\x58\x46\x58\x46\x58\x46\
-\x58\x74\x20\x74\x20\x74\x20\x74\x20\x73\x20\x6a\x20\x56\x20\x41\
-\x20\x49\x20\x72\x20\x61\x2e\x61\x2e\x61\x2e\x61\x2e\x53\x2e\x53\
-\x2e\x48\x2e\x4c\x2e\x4c\x2e\x71\x58\x71\x58\x74\x58\x68\x58\x6a\
-\x58\x50\x58\x50\x58\x50\x58\x50\x58\x50\x58\x64\x58\x36\x20\x20\
-\x20\x3a\x20\x3e\x58\x59\x58\x59\x58\x22\x2c\x0a\x22\x59\x58\x59\
-\x58\x3b\x58\x33\x2e\x30\x2e\x33\x2e\x3b\x58\x33\x58\x78\x58\x46\
-\x58\x46\x58\x46\x58\x68\x20\x21\x20\x50\x2e\x53\x58\x46\x58\x6c\
-\x58\x7e\x2e\x7e\x2e\x45\x2e\x30\x20\x65\x2e\x61\x2e\x61\x2e\x53\
-\x2e\x53\x2e\x48\x2e\x4c\x2e\x4c\x2e\x71\x58\x71\x58\x74\x58\x68\
-\x58\x6a\x58\x6a\x58\x44\x58\x50\x58\x50\x58\x50\x58\x4e\x58\x39\
-\x20\x4f\x20\x26\x20\x30\x2e\x4d\x58\x59\x58\x59\x58\x22\x2c\x0a\
-\x22\x59\x58\x59\x58\x3b\x58\x33\x2e\x35\x58\x77\x2e\x3b\x2e\x3b\
-\x58\x78\x58\x46\x58\x46\x58\x46\x58\x46\x58\x46\x58\x46\x58\x46\
-\x58\x46\x58\x46\x58\x5e\x2e\x5e\x2e\x5e\x2e\x68\x2e\x30\x20\x72\
-\x2e\x53\x2e\x53\x2e\x48\x2e\x4c\x2e\x4c\x2e\x71\x58\x71\x58\x74\
-\x58\x68\x58\x6a\x58\x6a\x58\x5a\x58\x44\x58\x50\x58\x50\x58\x4e\
-\x58\x39\x20\x4f\x20\x25\x20\x33\x2e\x36\x58\x59\x58\x59\x58\x59\
-\x58\x22\x2c\x0a\x22\x59\x58\x59\x58\x33\x58\x2a\x2e\x3b\x58\x33\
-\x58\x3e\x58\x3e\x58\x78\x58\x4b\x58\x4b\x58\x4b\x58\x4b\x58\x4b\
-\x58\x4b\x58\x4b\x58\x4b\x58\x4b\x58\x63\x58\x5e\x2e\x5e\x2e\x5e\
-\x2e\x73\x2e\x36\x20\x72\x20\x53\x2e\x4c\x2e\x4c\x2e\x71\x58\x71\
-\x58\x74\x58\x68\x58\x6a\x58\x6a\x58\x5a\x58\x44\x58\x44\x58\x50\
-\x58\x42\x2e\x36\x20\x4f\x20\x25\x20\x33\x2e\x33\x58\x59\x58\x59\
-\x58\x59\x58\x59\x58\x22\x2c\x0a\x22\x59\x58\x59\x58\x42\x58\x30\
-\x2e\x2d\x20\x30\x2e\x33\x58\x33\x58\x4d\x58\x4b\x58\x4b\x58\x4b\
-\x58\x4b\x58\x4b\x58\x4b\x58\x4b\x58\x4b\x58\x42\x58\x3b\x58\x2c\
-\x2e\x38\x20\x25\x20\x6f\x20\x58\x20\x32\x20\x30\x20\x69\x2e\x71\
-\x58\x71\x58\x74\x58\x68\x58\x6a\x58\x6a\x58\x5a\x58\x44\x58\x43\
-\x58\x5a\x2e\x65\x20\x32\x20\x20\x20\x25\x20\x33\x2e\x33\x58\x59\
-\x58\x59\x58\x59\x58\x59\x58\x59\x58\x22\x2c\x0a\x22\x59\x58\x59\
-\x58\x59\x58\x36\x58\x35\x2e\x26\x20\x3b\x2e\x3e\x58\x4d\x58\x50\
-\x58\x50\x58\x50\x58\x50\x58\x35\x58\x77\x2e\x3b\x2e\x3a\x20\x25\
-\x20\x2e\x20\x2e\x20\x2e\x20\x6f\x20\x26\x20\x2a\x2e\x3d\x2e\x38\
-\x20\x35\x20\x30\x20\x3e\x2e\x75\x2e\x4b\x2e\x4b\x2e\x37\x58\x76\
-\x2e\x3e\x2e\x36\x20\x35\x20\x4f\x20\x2e\x20\x3a\x20\x35\x2e\x36\
-\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\x58\x22\x2c\x0a\
-\x22\x59\x58\x59\x58\x59\x58\x59\x58\x4d\x58\x77\x2e\x2d\x20\x3a\
-\x20\x36\x58\x3e\x58\x30\x2e\x3d\x2e\x25\x20\x6f\x20\x2e\x20\x2e\
-\x20\x6f\x20\x25\x20\x2d\x20\x3d\x2e\x33\x2e\x77\x2e\x3e\x58\x33\
-\x58\x35\x58\x3e\x58\x33\x2e\x3b\x20\x2a\x20\x32\x20\x32\x20\x32\
-\x20\x32\x20\x40\x20\x2b\x20\x58\x20\x6f\x20\x2d\x20\x33\x2e\x3e\
-\x58\x4d\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\
-\x58\x22\x2c\x0a\x22\x59\x58\x59\x58\x59\x58\x59\x58\x59\x58\x4d\
-\x58\x3e\x58\x2a\x2e\x25\x20\x6f\x20\x2e\x20\x2e\x20\x6f\x20\x26\
-\x20\x3a\x20\x3b\x2e\x35\x2e\x3b\x58\x3e\x58\x35\x58\x36\x58\x42\
-\x58\x59\x58\x59\x58\x59\x58\x59\x58\x36\x58\x3e\x58\x30\x2e\x3b\
-\x2e\x2a\x2e\x3a\x20\x3a\x20\x3a\x20\x2a\x2e\x3b\x2e\x30\x2e\x3e\
-\x58\x36\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\
-\x58\x59\x58\x59\x58\x22\x2c\x0a\x22\x59\x58\x59\x58\x59\x58\x59\
-\x58\x59\x58\x59\x58\x42\x58\x33\x58\x35\x2e\x2a\x2e\x3d\x2e\x3b\
-\x2e\x30\x2e\x3b\x58\x33\x58\x36\x58\x4d\x58\x59\x58\x59\x58\x59\
-\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\
-\x58\x4d\x58\x36\x58\x33\x58\x33\x58\x33\x58\x33\x58\x33\x58\x36\
-\x58\x4d\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\x58\x59\
-\x58\x59\x58\x59\x58\x59\x58\x59\x58\x22\x0a\x7d\x3b\x0a\
-"
-
-qt_resource_name = "\
-\x00\x07\
-\x07\x3b\xe0\xb3\
-\x00\x70\
-\x00\x6c\x00\x75\x00\x67\x00\x69\x00\x6e\x00\x73\
-\x00\x09\
-\x0a\xa8\xd2\x62\
-\x00\x69\
-\x00\x6e\x00\x73\x00\x74\x00\x61\x00\x6c\x00\x6c\x00\x65\x00\x72\
-\x00\x08\
-\x0a\x61\x52\x8d\
-\x00\x69\
-\x00\x63\x00\x6f\x00\x6e\x00\x2e\x00\x78\x00\x70\x00\x6d\
-"
-
-qt_resource_struct = "\
-\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x01\
-\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x02\
-\x00\x00\x00\x14\x00\x02\x00\x00\x00\x01\x00\x00\x00\x03\
-\x00\x00\x00\x2c\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\
-"
-
-def qInitResources():
-    QtCore.qRegisterResourceData(0x01, qt_resource_struct, qt_resource_name, qt_resource_data)
-
-def qCleanupResources():
-    QtCore.qUnregisterResourceData(0x01, qt_resource_struct, qt_resource_name, qt_resource_data)
-
-qInitResources()



More information about the QGIS-commit mailing list