From f8f33bda0106684325d631f1923973ea2d7b29f4 Mon Sep 17 00:00:00 2001 From: bogind Date: Sun, 4 Oct 2020 21:04:50 +0300 Subject: [PATCH] removed zip_build from git tracking --- zip_build/!README.txt | 2 - zip_build/qlyrx.zip | Bin 57904 -> 0 bytes zip_build/qlyrx/__init__.py | 36 - zip_build/qlyrx/icon.png | Bin 15050 -> 0 bytes zip_build/qlyrx/metadata.txt | 39 - zip_build/qlyrx/qlyrx.py | 1502 -------------------------- zip_build/qlyrx/qlyrx_dialog.py | 45 - zip_build/qlyrx/qlyrx_dialog_base.ui | 378 ------- zip_build/qlyrx/resources.py | 1004 ----------------- 9 files changed, 3006 deletions(-) delete mode 100644 zip_build/!README.txt delete mode 100644 zip_build/qlyrx.zip delete mode 100644 zip_build/qlyrx/__init__.py delete mode 100644 zip_build/qlyrx/icon.png delete mode 100644 zip_build/qlyrx/metadata.txt delete mode 100644 zip_build/qlyrx/qlyrx.py delete mode 100644 zip_build/qlyrx/qlyrx_dialog.py delete mode 100644 zip_build/qlyrx/qlyrx_dialog_base.ui delete mode 100644 zip_build/qlyrx/resources.py diff --git a/zip_build/!README.txt b/zip_build/!README.txt deleted file mode 100644 index ed775d9..0000000 --- a/zip_build/!README.txt +++ /dev/null @@ -1,2 +0,0 @@ -Any files placed in this directory will be lost during zip generation! -The qlyrx directory contains the files that make up your plugin and were used to create the zip file. diff --git a/zip_build/qlyrx.zip b/zip_build/qlyrx.zip deleted file mode 100644 index 2512416d0b7735428606ee4f39d0b3ab768bcd57..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 57904 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

Aw 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 B^CtiR diff --git a/zip_build/qlyrx/__init__.py b/zip_build/qlyrx/__init__.py deleted file mode 100644 index 1387f43..0000000 --- a/zip_build/qlyrx/__init__.py +++ /dev/null @@ -1,36 +0,0 @@ -# -*- coding: utf-8 -*- -""" -/*************************************************************************** - qlyrx - A QGIS plugin - Apply Arcgis Pro .lyrx style - Generated by Plugin Builder: http://g-sherman.github.io/Qgis-Plugin-Builder/ - ------------------- - begin : 2019-04-09 - copyright : (C) 2019 by arc2qgis - email : dror.bogin@gmail.com - git sha : $Format:%H$ - ***************************************************************************/ - -/*************************************************************************** - * * - * 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. * - * * - ***************************************************************************/ - This script initializes the plugin, making it known to QGIS. -""" - - -# noinspection PyPep8Naming -def classFactory(iface): # pylint: disable=invalid-name - """Load qlyrx class from file qlyrx. - - :param iface: A QGIS interface instance. - :type iface: QgsInterface - """ - # - from .qlyrx import qlyrx - return qlyrx(iface) diff --git a/zip_build/qlyrx/icon.png b/zip_build/qlyrx/icon.png deleted file mode 100644 index de230e28f3452fc16bbf8227ffe58b65c7509921..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15050 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 Z{witl=aPTM_wP^fv|&#*>eUc&{|78?2O|Ig diff --git a/zip_build/qlyrx/metadata.txt b/zip_build/qlyrx/metadata.txt deleted file mode 100644 index 00e23cc..0000000 --- a/zip_build/qlyrx/metadata.txt +++ /dev/null @@ -1,39 +0,0 @@ -# This file contains metadata for your plugin. Since -# version 2.0 of QGIS this is the proper way to supply -# information about a plugin. The old method of -# embedding metadata in __init__.py will -# is no longer supported since version 2.0. - -# This file should be included when you package your plugin.# Mandatory items: - -[general] -name=qlyrx -qgisMinimumVersion=3.0 -description=Apply Arcgis Pro .lyrx style -version=0.1 -author=arc2qgis -email=dror.bogin@gmail.com - -about=Apply Arcgis Pro .lyrx style to vector layers in QGIS - -tracker=https://github.com/arc2qgis/lyrxtoqml/issues -repository=https://github.com/arc2qgis/lyrxtoqml -# End of mandatory metadata - -# Recommended items: - -# Uncomment the following line and add your changelog: -# changelog= - -# Tags are comma separated with spaces allowed -tags=python - -homepage=https://github.com/arc2qgis/lyrxtoqml -category=Plugins -icon=icon.png -# experimental flag -experimental=True - -# deprecated flag (applies to the whole plugin, not just a single version) -deprecated=False - diff --git a/zip_build/qlyrx/qlyrx.py b/zip_build/qlyrx/qlyrx.py deleted file mode 100644 index 83e63b8..0000000 --- a/zip_build/qlyrx/qlyrx.py +++ /dev/null @@ -1,1502 +0,0 @@ -# -*- coding: utf-8 -*- -""" -/*************************************************************************** - qlyrx - A QGIS plugin - Apply Arcgis Pro .lyrx style - Generated by Plugin Builder: http://g-sherman.github.io/Qgis-Plugin-Builder/ - ------------------- - begin : 2019-04-09 - git sha : $Format:%H$ - copyright : (C) 2019 by arc2qgis - email : dror.bogin@gmail.com - ***************************************************************************/ - -/*************************************************************************** - * * - * 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 PyQt5.QtCore import QSettings, QTranslator, qVersion, QCoreApplication -from PyQt5.QtCore import * -from PyQt5.QtGui import * -from PyQt5.QtWidgets import * -from qgis.core import * -from qgis.utils import * -import json -import re -import qgis.utils - -# Initialize Qt resources from file resources.py -from .resources import * -# Import the code for the dialog -from .qlyrx_dialog import qlyrxDialog -import os -import os.path -from collections import OrderedDict - -capStyles ={"Round" : 32, "Square" : 1, "Butt": 0} -joinStyles = {"Miter": 0, "Bevel" : 64, "Round": 128} -point2mm = 0.352778 -paths_to_shapes_array = { - "Cross2" : {"paths" : [ - [ - [ - -0.5, - 0.5 - ], - [ - 0.5, - -0.5 - ] - ], - [ - [ - -0.5, - -0.5 - ], - [ - 0.5, - 0.5 - ] - ] - ]}, - "Line" : {"paths" : [ - [ - [ - 3, - 0 - ], - [ - -3, - 0 - ] - ] - ] - } -} - -circle_rings = { - "curveRings" : [ - [ - [ - 1.2246467991473532e-16, - 2 - ], - { - "a" : [ - [ - 1.2246467991473532e-16, - 2 - ], - [ - 0, - 0 - ], - 0, - 1 - ] - } - ] - ] - } - - - -class qlyrx: - """QGIS Plugin Implementation.""" - - def __init__(self, iface): - """Constructor. - - :param iface: An interface instance that will be passed to this class - which provides the hook by which you can manipulate the QGIS - application at run time. - :type iface: QgsInterface - """ - # Save reference to the QGIS interface - self.iface = iface - self.mb = self.iface.messageBar() - # initialize plugin directory - self.plugin_dir = os.path.dirname(__file__) - # initialize locale - locale = QSettings().value('locale/userLocale')[0:2] - locale_path = os.path.join( - self.plugin_dir, - 'i18n', - 'qlyrx_{}.qm'.format(locale)) - - if os.path.exists(locale_path): - self.translator = QTranslator() - self.translator.load(locale_path) - - if qVersion() > '4.3.3': - QCoreApplication.installTranslator(self.translator) - - self.dlg = qlyrxDialog() - - # Declare instance attributes - self.actions = [] - self.menu = self.tr(u'&qlyrx') - - # Check if plugin was started the first time in current QGIS session - # Must be set in initGui() to survive plugin reloads - self.first_start = None - - - def tr(self, message): - """Get the translation for a string using Qt translation API. - - We implement this ourselves since we do not inherit QObject. - - :param message: String for translation. - :type message: str, QString - - :returns: Translated version of message. - :rtype: QString - """ - # noinspection PyTypeChecker,PyArgumentList,PyCallByClass - return QCoreApplication.translate('qlyrx', message) - - - def add_action( - self, - icon_path, - text, - callback, - enabled_flag=True, - add_to_menu=True, - add_to_toolbar=True, - status_tip=None, - whats_this=None, - parent=None): - """Add a toolbar icon to the toolbar. - - :param icon_path: Path to the icon for this action. Can be a resource - path (e.g. ':/plugins/foo/bar.png') or a normal file system path. - :type icon_path: str - - :param text: Text that should be shown in menu items for this action. - :type text: str - - :param callback: Function to be called when the action is triggered. - :type callback: function - - :param enabled_flag: A flag indicating if the action should be enabled - by default. Defaults to True. - :type enabled_flag: bool - - :param add_to_menu: Flag indicating whether the action should also - be added to the menu. Defaults to True. - :type add_to_menu: bool - - :param add_to_toolbar: Flag indicating whether the action should also - be added to the toolbar. Defaults to True. - :type add_to_toolbar: bool - - :param status_tip: Optional text to show in a popup when mouse pointer - hovers over the action. - :type status_tip: str - - :param parent: Parent widget for the new action. Defaults None. - :type parent: QWidget - - :param whats_this: Optional text to show in the status bar when the - mouse pointer hovers over the action. - - :returns: The action that was created. Note that the action is also - added to self.actions list. - :rtype: QAction - """ - - icon = QIcon(icon_path) - action = QAction(icon, text, parent) - action.triggered.connect(callback) - action.setEnabled(enabled_flag) - - if status_tip is not None: - action.setStatusTip(status_tip) - - if whats_this is not None: - action.setWhatsThis(whats_this) - - if add_to_toolbar: - # Adds plugin icon to Plugins toolbar - self.iface.addToolBarIcon(action) - - if add_to_menu: - self.iface.addPluginToMenu( - self.menu, - action) - - self.actions.append(action) - - return action - - def initGui(self): - """Create the menu entries and toolbar icons inside the QGIS GUI.""" - - icon_path = ':/plugins/qlyrx/icon.png' - self.add_action( - icon_path, - text=self.tr(u'Apply lyrx symbology'), - callback=self.run, - parent=self.iface.mainWindow()) - # will be set False in run() - self.first_start = True - - - - def load_vectors(self): - """ - Populate the layer selection with vector layers only - """ - self.dlg.layer_select.clear() - layers = [layer for layer in QgsProject.instance().mapLayers().values()] - vector_layers = [] - for layer in layers: - if layer.type() == QgsMapLayer.VectorLayer: - vector_layers.append(layer.name()) - self.dlg.layer_select.addItems(vector_layers) - - - def enableQmlSaving(self): - if self.dlg.saveQmlCheck.isChecked(): - self.dlg.QMLSaveLocation.setEnabled(True) - self.dlg.qmlLabel.setEnabled(True) - else: - self.dlg.QMLSaveLocation.setDisabled(True) - self.dlg.qmlLabel.setDisabled(True) - - - def saveQML(self,layer): - try: - if(len(self.dlg.QMLSaveLocation.filePath())) > 0: - QmlPath = self.dlg.QMLSaveLocation.filePath() - layer.saveNamedStyle(QmlPath) - else: - self.mb.pushWarning('QML Not Saved','missing Path') - except Exception as e: - self.mb.pushCritical('Error',"Something went wrong with saving the QML, please send us the following error: {}".format(e)) - - - def read_lyrx(self, file=None): - with open(file, mode="r", encoding="utf-8") as json_file: - data = json.load(json_file) - return data - - - def getSymbolLayers(self, obj): - return obj['symbol']['symbol']['symbolLayers'] - - - def getSymbolHalo(self, obj): - halo = '' - if 'haloSymbol' in obj['symbol']['symbol']: - halo = obj['symbol']['symbol']['haloSymbol'] - return halo - - - def readValueDef(self, obj): - return obj['symbol']['symbol']['symbolLayers'] - - - def checkSymbolType(self, obj): - obj_arr = {} - sl_idx = 0 - count_disabled = 0 - for o in obj: - if not 'desc' in obj_arr : - obj_arr['desc'] = [] - type = o['type'] - if not type in obj_arr : - obj_arr[type] = 0 - obj_arr[type] = obj_arr[type] + 1 - o['sl_idx'] = sl_idx - obj_arr['desc'].append(o) - if 'enable' in o and not o['enable']: - count_disabled = count_disabled + 1 - #print('disabled layer') - sl_idx = sl_idx + 1 - #print(sl_idx) - obj_arr['layer_count'] = sl_idx - count_disabled - if 'CIMHatchFill' in obj_arr: - obj_arr['template'] = 'hatch' - obj_arr['template_hatch_num'] = obj_arr['CIMHatchFill'] - else: - obj_arr['template'] = 'simple' - - if 'CIMLineSymbol' in obj_arr: - obj_arr['template_line_num'] = obj_arr['CIMLineSymbol'] - if 'CIMSolidFill' in obj_arr: - obj_arr['template_solid_num'] = obj_arr['CIMSolidFill'] - if 'CIMSolidStroke' in obj_arr: - obj_arr['template_stroke_num'] = obj_arr['CIMSolidStroke'] - if 'CIMCharacterMarker' in obj_arr: - obj_arr['template_font_num'] = obj_arr['CIMCharacterMarker'] - - return obj_arr - - - def tweakHaloSymbol(self, layers, haloDef, layer): - if not haloDef == '': - #halo_symbol_def = checkSymbolType(haloDef[0]) - new_layer = layers[len(layers) - 1].clone() - new_layer.setSize(new_layer.size()*1.1) - symbolHalo = haloDef['symbolLayers'] - halo_symbol_def = self.checkSymbolType(symbolHalo) - hallo_arr = self.parseSolidFill(halo_symbol_def, layer) - newFillSymbol = hallo_arr[0] - newStroke = self.parseStroke(halo_symbol_def, newFillSymbol, layer) - #for h in symbolHalo: - #print("halo symbol layer is " + h['type']) - if newFillSymbol != '': - new_layer.setStrokeColor(newFillSymbol.color()) - new_layer.setStrokeWidth(0.5) - if not newStroke == '': - #new_layer.setColor(newFillSymbol.color()) - new_layer.setStrokeColor(newStroke[0].color()) - layers.append(new_layer) - return layers - - - def parseSymbolLayerSolidFill(self, layers): - colors = [] - for l in layers: - if l['type'] == 'CIMSolidFill': - temp_color = l['color']['values'] - new_color = self.colorToRgbArray(temp_color, l['color']['type']) - colors.append(new_color) - return colors - - def generalise_geom_type(self, layer): - geometry_type_str = QgsWkbTypes.displayString(int(layer.wkbType())) - geometry_type = layer.wkbType() - geometry_general_type_str = geometry_type_str.replace('Multi', '').lower() - geometry_general_type_str = geometry_general_type_str.replace('string', '') - return geometry_general_type_str - - def parseRasterData(self, obj, layer): - #print(obj['colorizer']) - colorizer = obj['colorizer'] - renderer = '' - if 'Classify' in colorizer['type']: - print('classify') - self.parseRasterClassBreaks(colorizer, layer) - print("after parse rend") - elif 'Unique' in colorizer['type']: - print('unique') - self.parseRasterGroups(colorizer, layer) - print("after parse") - - #return renderer - #return '' - - def parseRasterGroups(self, obj, layer): - groups = obj['groups'] - renderer = '' - col_array = [] - val_array = [] - rampArray = [] - stats = self.getRasterLayerStats(layer) - print(stats) - min= stats.minimumValue - max = stats.maximumValue - initMin = False - classes = groups[0]['classes'] - - for gr in classes: - color = self.colorToRgbArray(gr['color']['values'], gr['color']['type']) - label = gr['label'] - col_array.append(color) - vals = gr['values'] if 'values' in gr else [] - val_arr = [] - for gr_val in vals: - val_arr.append(float(gr_val)) - rampArray.append(QgsColorRampShader.ColorRampItem(float(gr_val), color,label )) - - try: - fcn = QgsColorRampShader() - fcn.setColorRampType(QgsColorRampShader.Exact) - fcn.setColorRampItemList(rampArray) - cRamp = QgsPresetSchemeColorRamp(col_array) - fcn.setSourceColorRamp(cRamp) - - shader = QgsRasterShader() - shader.setRasterShaderFunction(fcn) - - renderer = QgsSingleBandPseudoColorRenderer(layer.dataProvider(), layer.type(), shader) - layer.setRenderer(renderer) - layer.renderer().setClassificationMin(min) - layer.renderer().setClassificationMax(max) - layer.renderer().shader().rasterShaderFunction().setColorRampItemList(rampArray) - layer.triggerRepaint() - print("after raster repaint") - - except Exception as e: - print(e) - - - def parseRasterClassBreaks(self, obj, layer): - classBreaks = obj['classBreaks'] - #print(classBreaks) - col_array = [] - val_array = [] - rampArray = [] - stats = self.getRasterLayerStats(layer) - min= stats.minimumValue - max = stats.maximumValue - initMin = False - for cb in classBreaks: - color = self.colorToRgbArray(cb['color']['values'], cb['color']['type']) - col_array.append(color) - val = cb['upperBound'] if 'upperBound' in cb else 0 - val_array.append(val) - label = cb['label'] - #print(str(val)) - if not initMin: - rampArray.append(QgsColorRampShader.ColorRampItem(val, color, label)) - initMin = True - if len(val_array) > 1: - rampArray.append(QgsColorRampShader.ColorRampItem(val, color, label)) - - try: - - fcn = QgsColorRampShader() - fcn.setColorRampType(QgsColorRampShader.Discrete) - fcn.setColorRampItemList(rampArray) - cRamp = QgsPresetSchemeColorRamp(col_array) - fcn.setSourceColorRamp(cRamp) - - shader = QgsRasterShader() - shader.setRasterShaderFunction(fcn) - - renderer = QgsSingleBandPseudoColorRenderer(layer.dataProvider(), layer.type(), shader) - layer.setRenderer(renderer) - layer.renderer().setClassificationMin(min) - layer.renderer().setClassificationMax(max) - layer.renderer().shader().rasterShaderFunction().setColorRampItemList(rampArray) - layer.triggerRepaint() - print("after raster repaint") - - except Exception as e: - print(e) - - #return '' - - def getRasterLayerStats(self, layer): - rend = layer.renderer() - provider = layer.dataProvider() - ver = provider.hasStatistics(1, QgsRasterBandStats.All) - stats = provider.bandStatistics(1, QgsRasterBandStats.All,layer.extent(), 0) - if ver is not False: - print("minimumValue = ", stats.minimumValue) - print("maximumValue = ", stats.maximumValue) - return(stats) - - def parseSolidFill(self, obj, layer): - symbol = "" - i = 0 - solid_index = -1 - for ls in obj['desc']: - if ls['type'] == 'CIMSolidFill' and ls['enable']: - temp_color = ls['color']['values'] - new_color = self.colorToRgbArray(temp_color, ls['color']['type']) - symbol = QgsSymbol.defaultSymbol(layer.geometryType()) - symbol.setColor(new_color) - ### TODO add lock - #print("solid index " + str(ls['sl_idx'])) - #symbol.setStrokeColor(new_color) - solid_index = ls['sl_idx'] if 'sl_idx' in ls else 0 - i = i + 1 - if i > 1: - print("Extra " + str(i) + " solid fills") - # Add default shape fill. - if symbol == '' or self.generalise_geom_type(layer) == 'line': - symbol = QgsSymbol.defaultSymbol(layer.geometryType()) - new_color = self.colorToRgbArray([255,255,255,0], 'CIMRGBColor') - symbol.setColor(new_color) - - #symbol['order'] = 0 - return [symbol, solid_index] - - - def parseLineCap(self, obj): - lineCap = 1 - #print(obj['capStyle']) - if 'capStyle' in obj: - lineCap = capStyles[obj['capStyle']] - return lineCap - - - def parseLineJoin(self, obj): - lineJoin = 1 - - if 'joinStyle' in obj: - #print(obj['joinStyle']) - lineJoin = joinStyles[obj['joinStyle']] - #print(lineJoin) - return lineJoin - - - def parseStroke(self, obj, symb, layer): - layers = [] - i = 0 - layers_obj = {} - firstWidth = 0 - firstColor = '' - geometry_general_type_str = self.generalise_geom_type(layer) - for ls in obj['desc']: - firstDash = False - if ls['type'] == 'CIMSolidStroke' and ls['enable']: - ## Check dash effects - dp = self.parseStrokeEffects(ls) - new_color = self.colorToRgbArray(ls['color']['values'], ls['color']['type']) - stroke_width = ls['width']*point2mm - cap = self.parseLineCap(ls) - join = self.parseLineJoin(ls) - stroke_order = ls['sl_idx'] if 'sl_idx' in ls else 0 - if i == 0 and dp == '' and not geometry_general_type_str == 'line': - #Change the first symbol layer stroke by layer type - symb.symbolLayer(0).setStrokeColor(new_color) - symb.symbolLayer(0).setStrokeWidth(stroke_width) - - cleanStrokeSymbol = symbol_layer = QgsSimpleLineSymbolLayer() - cleanStrokeSymbol.setColor(new_color) - cleanStrokeSymbol.setWidth(stroke_width) - firstWidth = stroke_width - firstColor = cleanStrokeSymbol.color() - cleanStrokeSymbol.setPenCapStyle(cap) - cleanStrokeSymbol.setPenJoinStyle(join) - ## Fix stroke offset - if not geometry_general_type_str == 'line': - cleanStrokeSymbol.setOffset(stroke_width/2) - - layers_obj[stroke_order] = cleanStrokeSymbol - else : - if (i == 0): - firstDash = True - # Add simple line symbol layer (stroke) - symbol_layer = QgsSimpleLineSymbolLayer() - symbol_layer.setColor(new_color) - symbol_layer.setWidth(stroke_width) - if firstWidth < stroke_width: - if symbol_layer.color() == firstColor: - if 0 in layers_obj: - layers_obj[0].setWidth(stroke_width) - if not geometry_general_type_str == 'line': - layers_obj[0].setOffset(stroke_width/2) - - symbol_layer.setPenCapStyle(cap) - symbol_layer.setPenJoinStyle(join) - ## Fix stroke offset - if not geometry_general_type_str == 'line': - symbol_layer.setOffset(stroke_width/2) - # Add dash pattern - if not dp == '': - #print("dp in " + str(i) + " stroke symbol") - symbol_layer.setUseCustomDashPattern(True) - symbol_layer.setCustomDashVector(dp) - symbol_layer = self.changeColorLock(symbol_layer, ls) - #print("stroke symbol idx is " + str(ls['sl_idx'])) - symb.appendSymbolLayer(symbol_layer) - layers_obj[stroke_order] = symbol_layer - i = i + 1 - return [symb, layers_obj, firstDash] - - - def parseStrokeEffects(self, obj): - dash_pattern = '' - temp_array = [] - if 'effects' in obj: - if obj['effects'][0]['type'] == 'CIMGeometricEffectDashes' : - temp_pattern = obj['effects'][0]['dashTemplate'] - for tp in temp_pattern: - temp_array.append(tp*point2mm) - dash_pattern = temp_array - return dash_pattern - - - def parseLineFill(self, obj, layer): - isDoubleHatch = False - isOffsetEqFirstWidth = True - symbol = "" - layers = [] - layers_obj = {} - i = 0 - first_width = 0 - prev_hatch = 0 - geometry_general_type_str = self.generalise_geom_type(layer) - for ls in obj['desc']: - if ls['type'] == 'CIMHatchFill' and ls['enable']: - #print(ls['sl_idx']) - sd_num = 0 - full_symbol_layer = '' - for sd in reversed(ls['lineSymbol']['symbolLayers']): - #print(sd) - symb_def = sd - #print("Line symbol sl num is " + str(sd_num) + "From " + str(len(ls['lineSymbol']['symbolLayers']))) - ## New definitions - angle = ls['rotation'] if 'rotation' in ls else 0 - temp_color = symb_def['color']['values'] - new_color = self.colorToRgbArray(temp_color, symb_def['color']['type']) - ## Hatch definitions - fill_width = symb_def['width'] if 'width' in symb_def else 1 - fill_width = fill_width*point2mm - fill_distance = ls['separation'] if 'separation' in ls else 0 - fill_distance = fill_distance*point2mm - if fill_distance <= 0.6 and not fill_distance == 0: - # TODO: add user interaction - print("QGIS problem with line fill small distances") - widthRatio = fill_width/point2mm/fill_distance - if widthRatio < 1: - widthRatio = 1/widthRatio - #print(widthRatio) - fill_distance = max(fill_distance*2,0.8) - fill_width = fill_width/point2mm*widthRatio - if fill_width > fill_distance: - # TODO: add user interaction - print("Fill width error") - - fill_offset = ls['offsetX'] if 'offsetX' in ls else 0 - #fill_offset = fill_offset*point2mm - ## Create symbol and set properties - symbol_layer = QgsLinePatternFillSymbolLayer() #if symbol_layer == '' else QgsSimpleLineSymbolLayer() - if sd_num == 0: - full_symbol_layer = symbol_layer - else: - symbol_layer = QgsSimpleLineSymbolLayer() - - dp = self.parseStrokeEffects(symb_def) - - symbol_layer.setColor(new_color) - if sd_num >= 0: - #print("before def") - if sd_num == 0: - symbol_layer.setLineAngle(angle) - symbol_layer.setLineWidth(fill_width) - symbol_layer.setDistance(fill_distance) - symbol_layer = self.changeColorLock(symbol_layer, ls) - else: - #symbol_layer.setAngle(angle) - try: - # TODO: add user interaction - print("Try width") - symbol_layer.setWidth(fill_width) - except: - # TODO: add user interaction - print("set width error") - - - if not dp == '': - #print("Dash pattern Fill is ") - #print(dp) - symbol_layer.subSymbol().symbolLayer(0).setUseCustomDashPattern(True) - symbol_layer.subSymbol().symbolLayer(0).setCustomDashVector(dp) - #print(symbol_layer.subSymbol().symbolLayer(0).__class__.__name__) - ## Tweak save the first hatch width and use as offset - # TODO: Real fix, mark problematic files and unusual offsets - if prev_hatch > 0 and sd_num == 0: - symbol_layer.setLineWidth(fill_width) - symbol_layer.setOffset(fill_width) - #isOffsetEqFirstWidth = fill_width == prev_hatch - isDoubleHatch = True - elif not fill_offset == 0 and not dp == '' : - symbol_layer.setOffset(fill_offset) - - if not sd_num == 0: - try: - full_symbol_layer.subSymbol().appendSymbolLayer(symbol_layer) - - except: - # TODO: add user interaction - print("Failed append subsymbol") - print(full_symbol_layer.__class__.__name__) - print(full_symbol_layer.subSymbol().__class__.__name__) - - sd_num = sd_num + 1 - - #print(full_symbol_layer.__class__.__name__) - layers.append(full_symbol_layer) - if 'sl_idx' in ls: - layers_obj[ls['sl_idx']] = full_symbol_layer - - if i == 0: - prev_hatch = fill_width - i = i + 1 - - - if len(layers) > 0: - return [layers, layers_obj] - else: - return symbol - - - def cmyk2Rgb(self, cmyk_array): - c = cmyk_array[0] - m = cmyk_array[1] - y = cmyk_array[2] - k = cmyk_array[3] - - r = int((1 - ((c + k)/100)) * 255) - g = int((1 - ((m + k)/100)) * 255) - b = int((1 - ((y + k)/100)) * 255) - - return [r, g, b] - - - def changeColorLock(self, sl, symbol_def): - color_lock = symbol_def['colorLocked'] if 'colorLocked' in symbol_def else '' - if not color_lock == '': - #print("locked") - sl.setLocked(True) - return sl - - - def colorToRgbArray(self, color_array, type): - opacity = 255 - if len(color_array) > 2 and type == 'CIMRGBColor': - opacity = color_array[3]/100*255 - new_color = QColor.fromRgb(color_array[0],color_array[1], color_array[2], opacity) - #print(opacity) - else: - new_color = QColor.fromRgb(color_array[0],color_array[1], color_array[2]) - if type == 'CIMHSVColor': - new_color = QColor.fromHsvF(color_array[0]/360,color_array[1]/100, color_array[2]/100,1) - elif type == 'CIMCMYKColor': - temp_color = self.cmyk2Rgb(color_array) - new_color = QColor.fromRgb(temp_color[0],temp_color[1], temp_color[2]) - return new_color - - - def parseSimpleRenderer(self, obj, layer): - - symbol = '' - symb_def = obj['symbol']['symbol']['symbolLayers'][0] - - if 'characterIndex' in symb_def and symb_def['type'] == 'CIMCharacterMarker': - symbol_ret = self.parseCharacterFill(symb_def, 0, layer) - symbol = symbol_ret[0] - - if symb_def['type'] == 'CIMVectorMarker': - vector_layers = self.parseVectorSymbolLine(symb_def, True, layer) - #print(vector_layers) - if not vector_layers == '': - vl_idx = vector_layers - for vl in vector_layers: - v_symb = vl[0] - v_ord = vl[1] - #allSymbolLayers[v_ord] = v_symb - symbol = v_symb - #print("After simple vector") - print(layer.geometryType()) - if layer.geometryType() == 2: - #print(obj['symbol']['symbol']['symbolLayers']) - #print(symb_def) - solid_array = self.parseSolidFill({"desc": [symb_def]}, layer) - #print(solid_array) - symbol = solid_array[0] - for sl in obj['symbol']['symbol']['symbolLayers']: - lines_ret = self.parseLineFill({'desc': [sl]} , layer) - #print(lines_ret) - if not lines_ret == '': - line_ret = lines_ret[0] - print("hatch number is " + str(len(line_ret))) - for line in line_ret: - try: - print("append layer") - solid_array[0].appendSymbolLayer(line) - except: - print(line.__class__.__name__) - - stroke = self.parseStroke({"desc": [symb_def], "sl_idx": 0}, solid_array[0], layer) - - if(stroke): - symbol = stroke[0] - if len(stroke[1]): - symbol.appendSymbolLayer(stroke[1][0]) - - return symbol - - - def parseCharacterFill(self, symb_def, max_size, layer): - #print(symb_def['sl_idx']) - ret_val = '' - symbol = QgsFontMarkerSymbolLayer() - symbol.setFontFamily(symb_def['fontFamilyName']) - symbol.setCharacter(chr(symb_def['characterIndex'])) - new_size = symb_def['size']*point2mm - symbol.setSize(symb_def['size']*point2mm) - geometry_general_type_str = self.generalise_geom_type(layer) - - if 'rotation' in symb_def: - new_angle = symb_def['rotation'] - negative_angle = new_angle < 0 - if (new_angle < 0 and new_angle <= -90) or new_angle == -45: - new_angle = abs(new_angle) - elif new_angle < 0 and new_angle > -90: - new_angle = new_angle - - if abs(new_angle) > 180: - new_angle = 360 - new_angle - if negative_angle: - new_angle = new_angle*-1 - #print("180 correction to " + str(new_angle)) - symbol.setAngle(new_angle) - - # Fix offset - rotation twaek - #symbol.setOffset(QPointF(0.3,0.0)) - #offset_tweak = (max_size - new_size)/2 if max_size > new_size else 0 - #print(offset_tweak) - #if offset_tweak > 0: - # symbol.setOffset(QPointF(0,0)) - #print(symb_def['characterIndex']) - # Check fill color - if 'symbol' in symb_def : - if 'symbolLayers' in symb_def['symbol']: - color = self.parseSymbolLayerSolidFill(symb_def['symbol']['symbolLayers']) - #print(color) - symbol.setColor(color[0]) - ## Check offset - offset_def = symb_def['anchorPoint'] if 'anchorPoint' in symb_def else '' - if 'x' in offset_def: - offsetX = offset_def['x']*point2mm - offsetY = offset_def['y']*point2mm - symbol.setOffset(QPointF(offsetX,offsetY)) - - ### TODO Fix offset after rotation - #print(symbol.markerOffsetWithWidthAndHeight(symbol, 8, 8)) - - if not geometry_general_type_str == 'point': - symbol_base = QgsPointPatternFillSymbolLayer() - if geometry_general_type_str == 'line': - symbol_base = QgsMarkerLineSymbolLayer() - ## Change to line symbol when diplacement is along line - if 'markerPlacement' in symb_def and 'type' in symb_def['markerPlacement']: - if symb_def['markerPlacement']['type'] == 'CIMMarkerPlacementAlongLineSameSize': - symbol_base = QgsMarkerLineSymbolLayer() - #print("Special fill " + geometry_general_type_str) - ## Fill pattern - if 'markerPlacement' in symb_def and 'stepX' in symb_def['markerPlacement']: - symbol_base.setDistanceX(symb_def['markerPlacement']['stepX']*point2mm) - symbol_base.setDistanceY(symb_def['markerPlacement']['stepY']*point2mm) - - marker = QgsMarkerSymbol() - marker.changeSymbolLayer(0, symbol) - symbol_base.setSubSymbol(marker) - ret_val = symbol_base - else: - ret_val = symbol - ret_val = self.changeColorLock(ret_val, symb_def) - - #join = parseLineJoin(symb_def) - #ret_val.setPenJoinStyle(join) - sym_ord = symb_def['sl_idx'] if 'sl_idx' in symb_def else -2 - return [ret_val, sym_ord] - - - def parseVectorSymbolLine(self, obj, simple, layer): - #print(obj) - vector_idx = 0 - vector_symbols = [] - vector_sl_array = [] - symb_idx = -1 - base_symbol = '' - order = '' - geometry_general_type_str = self.generalise_geom_type(layer) - if not 'desc' in obj: - obj['desc'] = [obj] - for ls in obj['desc']: - if ls['type'] == 'CIMVectorMarker' and ls['enable']: - - order = ls['sl_idx'] if 'sl_idx' in ls else -3 - if 'markerGraphics' in ls: - mg = ls['markerGraphics'] - #print("order is "+ str(ls['sl_idx'])) - #print(mg) - #print("mg len is " + str(len(mg))) - #if 'geometry' in mg[0]: - # print(mg) - placement = 1 - markerDistanceX = '' - markerDistanceY = '' - if 'markerPlacement' in ls and 'placementTemplate' in ls['markerPlacement']: - placement = ls['markerPlacement']['placementTemplate'][0] - #print("placement " + str(placement)) - placement = placement*point2mm - if 'markerPlacement' in ls and 'stepX' in ls['markerPlacement']: - markerDistanceX = ls['markerPlacement']['stepX']*point2mm - markerDistanceY = ls['markerPlacement']['stepY']*point2mm - - symbol_size = ls['size']*point2mm - - for mgs in mg: - #print(mgs) - if 'geometry' in mgs and 'x' in mgs['geometry']: - #print("geom is xy") - mgs_sl = mgs['symbol']['symbolLayers'] - vector_symbols = [] - #print(mgs_sl) - for sl in mgs_sl: - if sl['type'] == 'CIMCharacterMarker': - parsed_symb = self.parseCharacterFill(sl, 0, layer) - if not parsed_symb[0] == '': - symb_type = parsed_symb[0].__class__.__name__ - if 'MarkerLine' in symb_type: - parsed_symb[0].setInterval(placement) - else: - if not markerDistanceX == '': - parsed_symb[0].setDistanceX(markerDistanceX) - parsed_symb[0].setDistanceY(markerDistanceY) - vector_symbols.append(parsed_symb[0]) - if len(vector_symbols) > 1: - base_symbol = vector_symbols[0].clone() - vs_idx = 0 - for vs in vector_symbols: - if vs_idx > 0: - subSymbLayer = vs.subSymbol().symbolLayer(0).clone() - origFirstSubSymbLayer = base_symbol.subSymbol().symbolLayer(0).clone() - #print(subSymbLayer) - #print("append more") - base_symbol.subSymbol().appendSymbolLayer(origFirstSubSymbLayer) - base_symbol.subSymbol().changeSymbolLayer(0, subSymbLayer) - #print("Count sub: " + str(base_symbol.subSymbol().symbolLayerCount())) - vs_idx = vs_idx + 1 - vector_sl_array.append([base_symbol, order]) - else: - #print("append first") - vector_sl_array.append([vector_symbols[0], order]) - - else: - #print("geom is ") - #print(mgs['geometry']) - geom = mgs['geometry'] - ## Finding matching pattern - if 'paths' in geom: - for path_obj in paths_to_shapes_array: - #print(path_obj) - path_pattern = [] - for path_p in geom['paths']: - pair = [] - for path_pair in path_p: - #print(path_pair) - new_str = ",".join(map(str, path_pair)) - new_str = re.sub('[1-9]', '3', new_str) - new_str = new_str.split(',') - try: - new_str = [int(i) for i in new_str] - except: - new_str = [float(i) for i in new_str] - #print("no change") - #print(new_str) - pair.append(new_str) - - path_pattern.append(pair) - - alt_path_object = {"paths": path_pattern} - #print(alt_path_object) - if paths_to_shapes_array[path_obj] == geom or paths_to_shapes_array[path_obj] == alt_path_object: - #print("Found geom!!!!!!!!!!!!!!!!!!!!!!!!!!!!") - #print(QgsSimpleMarkerSymbolLayerBase.decodeShape(path_obj)) - shape_id, isShape = QgsSimpleMarkerSymbolLayerBase.decodeShape(path_obj) - main_sym = QgsMarkerLineSymbolLayer.create() - vect_symb = QgsSimpleMarkerSymbolLayer.create() - vect_symb.setShape(shape_id) - vect_symb.setSize(symbol_size) - #print(vect_symb) - main_sym.subSymbol().changeSymbolLayer(0, vect_symb) - main_sym.setInterval(placement) - vector_sl_array.append([main_sym, order]) - elif 'curveRings' in geom: - vect_symb = QgsSimpleMarkerSymbolLayer.create() - vect_symb.setSize(symbol_size) - #print(vect_symb) - if not geometry_general_type_str == 'point': - main_sym = QgsMarkerLineSymbolLayer.create() - main_sym.subSymbol().changeSymbolLayer(0, vect_symb) - main_sym.setInterval(placement) - vector_sl_array.append([main_sym, order]) - else: - vector_sl_array.append([vect_symb, order]) - #print(base_symbol) - #if not base_symbol == '': - # print(base_symbol.subSymbol().symbolLayerCount()) - if len(vector_sl_array) == 0: - vector_sl_array = '' - else: - #print(vector_sl_array) - print("vector array length " + str(len(vector_sl_array))) - return vector_sl_array - - - def parsePictureFill(self, obj, appendix): - pic_idx = 0 - svg_symbol = '' - symb_idx = -1 - for ls in obj['desc']: - if ls['type'] == 'CIMPictureFill' and ls['enable']: - #print("Picture url is " + ls["url"]) - url_data = ls['url'] - url_data_array = url_data.split(",") - plugin_path = os.path.dirname(os.path.realpath(__file__)) - svg_path = plugin_path+"\\img" - svg_paths = QgsSettings().value('svg/searchPathsForSVG') - if plugin_path not in svg_paths: - QgsSettings().setValue('svg/searchPathsForSVG', svg_paths + [plugin_path, svg_path]) - - template_f = open(plugin_path+"/img/svg_template.svg") - template_str = template_f.read() - template_str = str(template_str) - - template_str = template_str.replace("image_url", str(url_data)) - - f = open(str(pic_idx)+appendix + ".svg","w") - name = f.name - #print(name) - f.write(template_str) - #print(f) - template_f.close() - f.close() - svg_symbol = QgsSVGFillSymbolLayer.create() - svg_symbol.setSvgFilePath( name ) - #print(svg_symbol) - #print(svg_symbol.svgFilePath()) - new_color = self.colorToRgbArray([80,80,80,100], 'CIMRGBColor') - svg_symbol.setSvgFillColor(new_color) - svg_symbol.setSvgStrokeColor(new_color) - symb_idx = ls['sl_idx'] - pic_idx = pic_idx + 1 - - return [svg_symbol, symb_idx] - - - def unload(self): - """Removes the plugin menu item and icon from QGIS GUI.""" - for action in self.actions: - self.iface.removePluginMenu( - self.tr(u'&qlyrx'), - action) - self.iface.removeToolBarIcon(action) - - def getLabelField(self, labelObj): - label_exp = '' - if 'expression' in labelObj: - label_exp = labelObj['expression'] - return label_exp - - def parseLabels(self, labelSymbArr, labelExpArr, layer, layerId = 0): - #print(layerId) - #print(labelExpArr) - #print(labelSymbArr) - label = '' - labelExp = labelExpArr[layerId] - ## Parse label expression - by default - one label with brackets (VB syntax) - ##TODO: Generelize - if "[" in labelExp: - labelExp = labelExp[1:-1] - - labelParse = labelSymbArr[layerId][0] - labelSymbol = labelParse['textSymbol'] - - ## Init properties - try: - fontFamily = labelSymbol['symbol']['fontFamilyName'] if labelSymbol['symbol']['fontFamilyName'] else 'David' - fontSize = labelSymbol['symbol']['height'] if labelSymbol['symbol']['height'] else 12 - color = labelSymbol['symbol']['symbol']['symbolLayers'][0]['color'] - ptColor = self.colorToRgbArray(color['values'], color['type']) - fontWeight = labelSymbol['symbol']['fontStyleName'] if labelSymbol['symbol']['fontStyleName'] else 'Regular' - minimumScale = labelParse['minimumScale'] if 'minimumScale' in labelParse else '' - except Exception as e: - print(e) - - # Create label settings - label_settings = QgsPalLayerSettings() - # Create font settings - text_format = QgsTextFormat() - text_format.setFont(QFont(fontFamily, fontSize)) - text_format.setSize(fontSize) - text_format.setColor(ptColor) - text_format.setNamedStyle(fontWeight) -# buffer_settings = QgsTextBufferSettings() -# buffer_settings.setEnabled(True) -# buffer_settings.setSize(0.30) -# buffer_settings.setColor(QColor("black")) -# text_format.setBuffer(buffer_settings) - - label_settings.setFormat(text_format) - label_settings.fieldName = labelExp - - ## Default label placement - ## TODO: create conversion object to all placement properties - label_settings.placement = 1 - label_settings.centroidInside = 1 - label_settings.centroidWhole = 1 - ## Scale visibility - try: - label_settings.scaleVisibility = True if not minimumScale == '' else False - label_settings.minimumScale = minimumScale if not minimumScale == '' else 0 - except Exception as e: - print(e) - ## Label visibility - label_settings.enabled = True - label_settings = QgsVectorLayerSimpleLabeling(label_settings) - layer.setLabelsEnabled(True) - ## - #layer.setLabeling(label_settings) - - return label_settings - - def apply_lyrx_symbols(self, layer, lyrx_data, geometry_general_type_str): - simple_symbol = False - raster_symbol = False - label_symbol = False - layerDef = lyrx_data['layerDefinitions'] - renderer = '' - renderers = []; - renderers_symb_type = [] - dataset_names = [] - raster_data = '' - label_symb_array = [] - label_expessions = [] - labels = '' - - for p in layerDef : - #print(p) - if 'type' in p: - print(p['type']) - if p['type'] == 'CIMRasterLayer': - raster_symbol = True - raster_data = p - ## Check for renderers - temp_renderer = p['renderer'] if 'renderer' in p else '' - renderers.append(temp_renderer) - temp_label = p['labelClasses'] if 'labelClasses' in p else '' - label_symb_array.append(temp_label) - try: - label_expr = self.getLabelField(temp_label[0]) if len(temp_label) else '' - #print(label_expr) - if label_expr: - label_symbol = True - label_expessions.append(label_expr) - else: - label_expessions.append('') - ## Get lyrx shape type and original names - if not temp_renderer == '' and not raster_symbol: - rend_type = temp_renderer['symbol']['type'] if 'symbol' in temp_renderer else temp_renderer['defaultSymbol']['symbol']['type'] - renderers_symb_type.append(rend_type.lower()) - dataset = p['featureTable']['dataConnection']['dataset'] - dataset_names.append(dataset) - except Exception as e: - print(e) - print("there are " + str(len(label_symb_array)) + " label def") - - - # Find a renderer with the active layer field attribute - rend_to_check = [] - x = 0 - for r in renderers_symb_type: - #print(r) - if geometry_general_type_str in r: - rend_to_check.append(x) - x = x + 1 - - rend_idx = -1 - #print(rend_to_check) - ## Check in the active layers for matching classification fields - for z in rend_to_check: - #print(renderers[z]['fields'][0]) - #print(layer.fields()) - ## Check for matching column names - field_exist = layer.fields().indexFromName(renderers[z]['fields'][0]) - if field_exist > -1: - rend_idx = z - - # Check simple symbol - if rend_idx < 0 and not raster_symbol: - active_name = layer.sourceName() - rend_idx = dataset_names.index(active_name) - simple_symbol = True - - if rend_idx > -1 and not simple_symbol: - ## Create data arrays for symbols, labels, symbolLayers, halo options - categories = [] - allSymbolLayers = {} - class_field = renderers[rend_idx]['fields'][0] if len(renderers[rend_idx]['fields']) > 0 else 'CODE' - class_field2 = renderers[rend_idx]['fields'][1] if len(renderers[rend_idx]['fields']) > 1 else '' - class_field3 = renderers[rend_idx]['fields'][2] if len(renderers[rend_idx]['fields']) > 2 else '' - #print(class_field) - classes = renderers[rend_idx]["groups"][0]["classes"] - symbols_labels = [] - symbol_layers = [] - symbol_values = [] - halo_symbols = [] - multi_cat = [] - for c in classes : - symbol_layers.append(self.getSymbolLayers(c)) - halo_symbols.append(self.getSymbolHalo(c)) - symbols_labels.append(c['label']) - symbol_values.append(c['values'][0]['fieldValues']) - if len(c['values']) > 1: - vf_idx = 0 - multi_array = [] - for vf in c['values']: - if vf_idx > 0: - multi_array.append(vf['fieldValues']) - vf_idx = vf_idx + 1 - multi_cat.append(multi_array) - else: - multi_cat.append('') - - ## Convert the symbolLayers definition of each CIMUniqueValueClass to qgis symbol and create a category - idx = 0 - for sl in symbol_layers: - #print(sl) - #print ("val :" + str(symbol_values[idx][0])) - allSymbolLayers = {} - ## Create definition array - add order and more - symbol_def = self.checkSymbolType(sl) - layer_num = symbol_def['layer_count'] - #print("Symology count is " + str(layer_num)) - ret_arr = self.parseSolidFill(symbol_def, layer) - ret = ret_arr[0] - #print("solid fill idx " + str(ret_arr[1])) - allSymbolLayers[ret_arr[1]] = ret - noSolid = False - firstDash = False - if ret_arr[1] < 0: - noSolid = True - - svg_file_appendix = str(symbol_values[idx][0]).replace(" ","_") - picture_ret = self.parsePictureFill(symbol_def, svg_file_appendix) - if not picture_ret[0] == '': - print("pic fill try") - allSymbolLayers[picture_ret[1]] = picture_ret[0] - ret.appendSymbolLayer(picture_ret[0]) - ## Create hatch fill - lines_ret = self.parseLineFill(symbol_def, layer) - #print(len(line_ret)) - if not lines_ret == '': - line_ret = lines_ret[0] - #print("hatch number is " + str(len(line_ret))) - for line in line_ret: - try: - ret.appendSymbolLayer(line) - except: - print(line.__class__.__name__) - for line_sym in lines_ret[1]: - allSymbolLayers[line_sym] = lines_ret[1][line_sym] - - ## Create line strokes symbols - if 'template_stroke_num' in symbol_def and not ret == '': - ret_val = self.parseStroke(symbol_def, ret, layer) - ret = ret_val[0] - stroke_symbols = ret_val[1] - for str_s in stroke_symbols: - #print(str_s) - allSymbolLayers[str_s] = stroke_symbols[str_s] - firstDash = ret_val[2] - - vector_layers = self.parseVectorSymbolLine(symbol_def, False, layer) - #print(vector_layers) - if not vector_layers == '': - vl_idx = vector_layers - for vl in vector_layers: - v_symb = vl[0] - v_ord = vl[1] - allSymbolLayers[v_ord] = v_symb - ret.appendSymbolLayer(v_symb) - #print("After vector") - - #allSymbolLayers[vl_idx] = vector_layers[0] - #ret.appendSymbolLayer(vector_layers[0]) - - - ## Create character fills - layers = [] - max_size = 0 - for charSl in sl: - if 'characterIndex' in charSl and charSl['type'] == 'CIMCharacterMarker': - #print(charSl["enable"]) - if charSl["enable"]: - ret_sym = self.parseCharacterFill(charSl, max_size, layer) - #print(ret_sym) - symbol = ret_sym[0] - if not symbol == '': - #print("char symb desc " + str(charSl['sl_idx'])) - layers.append(symbol) - allSymbolLayers[ret_sym[1]] = symbol - if geometry_general_type_str == 'point': - max_size = max(symbol.size(), max_size) - - if not halo_symbols[idx] == '': - layers = self.tweakHaloSymbol(layers, halo_symbols[idx], layer) - allSymbolLayers[len(allSymbolLayers) + 1] = layers[len(layers) - 1].clone() - - ## Add the font fill - x = 0 - for rl in layers: - ret.appendSymbolLayer(rl) - x = x + 1 - - ## Delete default base layer if font marker filled or symbol mismatch - #print("is Halo " + str(halo_symbols[idx] == '')) - #print("ret count is " + str(ret.symbolLayerCount())) - - if ((len(layers) > 0 and noSolid ) or (layer_num < ret.symbolLayerCount()) or firstDash ): - print("delete first symbol layer") - # add user interaction - ret.deleteSymbolLayer(0) - if -1 in allSymbolLayers: - print("fix demo first layer") - # add user interaction - del(allSymbolLayers[-1]) - - #print("symbol layers in object " + str(len(allSymbolLayers))) - #print("ret symbols " + str(ret.symbolLayerCount())) - - ## Create ordered object from allSymbolLayers - ordered_obj = OrderedDict(sorted(allSymbolLayers.items(), key=lambda t: t[0])) - #print("len " + str(len(allSymbolLayers))) - total_len = ret.symbolLayerCount() - total_sym_len = len(ordered_obj) - if -1 in ordered_obj and not total_len in ordered_obj: - #print("!!!!!!!!!!!!Fix by total length") - # TODO: add user interaction - ordered_obj[total_len] = ordered_obj[-1].clone() - del(ordered_obj[-1]) - - ## Create the new symbol from reveresed ordered_obj - new_symbol = QgsSymbol.defaultSymbol(layer.geometryType()) - baseLayer = False - try: - if total_sym_len > 1: - for ord_sym_idx in reversed(ordered_obj): - #print("in reorder loop " + str(ord_sym_idx)) - newSymbolLayer = ordered_obj[ord_sym_idx].clone() - locked = '' - if not 'SymbolLayer' in newSymbolLayer.__class__.__name__: - #print("try symbolLayer") - newSymbolLayer = ordered_obj[ord_sym_idx].symbolLayer(0).clone() - locked = ordered_obj[ord_sym_idx].symbolLayer(0).isLocked() - else: - locked = ordered_obj[ord_sym_idx].isLocked() - #print("locked " + str(locked)) - newSymbolLayer.setLocked(locked) - if not baseLayer: - if "SymbolLayer" in newSymbolLayer.__class__.__name__: - new_symbol.changeSymbolLayer(0, newSymbolLayer) - baseLayer = True - else: - if "SymbolLayer" in newSymbolLayer.__class__.__name__: - new_symbol.appendSymbolLayer(newSymbolLayer) - else: - #print("one layered symbol") - new_symbol = ret - except: - print("order fail") - # add user interaction - - #print("new symbol count" + str(new_symbol.symbolLayerCount())) - - ## Create new category - symbol_val_prep = symbol_values[idx][0] + ", " + symbol_values[idx][1] if len(symbol_values[idx]) > 1 else symbol_values[idx][0] - category = QgsRendererCategory(symbol_val_prep, new_symbol, symbols_labels[idx]) - categories.append(category) - - #if len(symbol_values[idx] > 2): - if not multi_cat[idx] == '': - for extra_label in multi_cat[idx]: - symbol_val_prep1 = extra_label[0] + ", " + extra_label[1] if len(extra_label) > 1 else extra_label[0] - category = QgsRendererCategory(symbol_val_prep1, new_symbol.clone(), symbols_labels[idx]) - categories.append(category) - - idx = idx + 1 - - ## Create renderer - concat_str = ", " + "', ', " + class_field2 + ")" if not class_field2 == "" else ")" - renderer = QgsCategorizedSymbolRenderer("concat(" + class_field + concat_str, categories) - #print(categories) - - elif not raster_symbol and renderers[rend_idx]['type'] == 'CIMSimpleRenderer' and simple_symbol: - single_symbology = self.parseSimpleRenderer(renderers[rend_idx], layer) - #print(single_symbology) - if not single_symbology == '': - #print('simple renderer') - symbol = QgsSymbol.defaultSymbol(layer.geometryType()) - try: - symbol.changeSymbolLayer(0, single_symbology) - except: - symbol = single_symbology - - renderer = QgsSingleSymbolRenderer(symbol) - elif raster_symbol: - print("raster") - self.mb.pushWarning('Warning',"Raster symbology is still experimental") - self.parseRasterData(raster_data, layer) - print("after parse all") - #layer.triggerRepaint() - #self.iface.legendInterface().refreshLayerSymbology(layer) - else: - print("No matching lyrx symbology fields found for the active layer") - self.mb.pushCritical('',"No matching lyrx symbology fields found for the active layer") - # add user interaction - - if label_symbol: - #print(label_symbol) - #print(label_expessions) - #print(label_symb_array) - labels = self.parseLabels(label_symb_array, label_expessions, layer, rend_idx) - print("label by layer num " + str(rend_idx) + " in lyrx") - - # assign the created renderer to the layer - if not renderer == '' : - #print("re-render") - layer.setRenderer(renderer) - layer.triggerRepaint() - - if not labels == '': - layer.setLabeling(labels) - #print(dir(self.dlg)) - if not self.dlg.parseLables.isChecked(): - layer.setLabelsEnabled(False) - layer.triggerRepaint() - print("after labeling") - - - def run(self): - """Run method that performs all the real work""" - - # Create the dialog with elements (after translation) and keep reference - # Only create GUI ONCE in callback, so that it will only load when the plugin is started - - # show the dialog - self.dlg.show() - self.load_vectors() - self.dlg.saveQmlCheck.stateChanged.connect(self.enableQmlSaving) - # Run the dialog event loop - result = self.dlg.exec_() - # See if OK was pressed - if result: - # Do something useful here - delete the line containing pass and - # substitute with your code. - - j_data = self.read_lyrx(self.dlg.file_select.filePath()) - - layer = self.dlg.layer_select.currentLayer() - #print(dir(layer)) - #print(layer.__class__.__name__) - #print(point2mm) - #fields = layer.fields() if layer.fields() else '' - fields = layer.fields() if "fields" in dir(layer) else '' - isRaster = 'Raster' in layer.__class__.__name__ - geometry_general_type_str = self.generalise_geom_type(layer) if not isRaster else 'raster' - - self.apply_lyrx_symbols(layer, j_data, geometry_general_type_str) - if self.dlg.saveQmlCheck.isChecked(): - self.saveQML(layer) - self.mb.pushSuccess('Yay',"It's Working") - #pass diff --git a/zip_build/qlyrx/qlyrx_dialog.py b/zip_build/qlyrx/qlyrx_dialog.py deleted file mode 100644 index 23fd1d6..0000000 --- a/zip_build/qlyrx/qlyrx_dialog.py +++ /dev/null @@ -1,45 +0,0 @@ -# -*- coding: utf-8 -*- -""" -/*************************************************************************** - qlyrxDialog - A QGIS plugin - Apply Arcgis Pro .lyrx style - Generated by Plugin Builder: http://g-sherman.github.io/Qgis-Plugin-Builder/ - ------------------- - begin : 2019-04-09 - git sha : $Format:%H$ - copyright : (C) 2019 by arc2qgis - email : dror.bogin@gmail.com - ***************************************************************************/ - -/*************************************************************************** - * * - * 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 os - -from PyQt5 import uic -from PyQt5 import QtWidgets - -# This loads your .ui file so that PyQt can populate your plugin with the elements from Qt Designer -FORM_CLASS, _ = uic.loadUiType(os.path.join( - os.path.dirname(__file__), 'qlyrx_dialog_base.ui')) - - -class qlyrxDialog(QtWidgets.QDialog, FORM_CLASS): - def __init__(self, parent=None): - """Constructor.""" - super(qlyrxDialog, self).__init__(parent) - #self.setMinimumSize(1000, 800) - # Set up the user interface from Designer through FORM_CLASS. - # After self.setupUi() you can access any designer object by doing - # self., and you can use autoconnect slots - see - # http://qt-project.org/doc/qt-4.8/designer-using-a-ui-file.html - # #widgets-and-dialogs-with-auto-connect - self.setupUi(self) diff --git a/zip_build/qlyrx/qlyrx_dialog_base.ui b/zip_build/qlyrx/qlyrx_dialog_base.ui deleted file mode 100644 index c10444b..0000000 --- a/zip_build/qlyrx/qlyrx_dialog_base.ui +++ /dev/null @@ -1,378 +0,0 @@ - - - readLyrxDialogBase - - - - 0 - 0 - 436 - 413 - - - - - 0 - 0 - - - - - 418 - 332 - - - - - 8 - - - - readLyrx - - - true - - - - - 10 - 10 - 381 - 41 - - - - - 0 - 0 - - - - - 381 - 31 - - - - - 11 - - - - Qlyrx - - - - - - 10 - 60 - 401 - 271 - - - - - 28 - - - 6 - - - - - - - - - - 0 - 0 - - - - - 121 - 58 - - - - Layer to apply style to: - - - - - - - - 0 - 0 - - - - - 258 - 20 - - - - - wms - wmts - - - - - - - - - - - - 8 - - - - - - 0 - 0 - - - - - 359 - 20 - - - - Use Labels - - - true - - - - - - - - - - - - - - 0 - 0 - - - - - 54 - 20 - - - - .lyrx file: - - - - - - - Qt::Horizontal - - - QSizePolicy::Fixed - - - - 85 - 20 - - - - - - - - - 0 - 0 - - - - - 165 - 20 - - - - Choose a lyrx file for symbology to load - - - Arcgis Pro Layer (*.lyrx) ;; - - - - - - - - - - - 8 - - - - - true - - - - 0 - 0 - - - - - 359 - 20 - - - - Save style to QML - - - false - - - - - - - - - false - - - .qml save location - - - - - - - Qt::Horizontal - - - QSizePolicy::Fixed - - - - 85 - 20 - - - - - - - - false - - - QML files (*.qml) - - - QgsFileWidget::SaveFile - - - - - - - - - - - - - 60 - 370 - 359 - 24 - - - - - 0 - 0 - - - - - 359 - 5 - - - - Qt::Horizontal - - - QDialogButtonBox::Cancel|QDialogButtonBox::Ok - - - - - - QgsFileWidget - QWidget -

qgsfilewidget.h
- - - QgsMapLayerComboBox - QComboBox -
qgsmaplayercombobox.h
-
- - - - - button_box - accepted() - readLyrxDialogBase - accept() - - - 20 - 20 - - - 20 - 20 - - - - - button_box - rejected() - readLyrxDialogBase - reject() - - - 20 - 20 - - - 20 - 20 - - - - - diff --git a/zip_build/qlyrx/resources.py b/zip_build/qlyrx/resources.py deleted file mode 100644 index 90fa943..0000000 --- a/zip_build/qlyrx/resources.py +++ /dev/null @@ -1,1004 +0,0 @@ -# -*- coding: utf-8 -*- - -# Resource object code -# -# Created by: The Resource Compiler for PyQt5 (Qt v5.9.6) -# -# WARNING! All changes made in this file will be lost! - -from PyQt5 import QtCore - -qt_resource_data = b"\ -\x00\x00\x3a\xca\ -\x89\ -\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ -\x00\x00\xca\x00\x00\x00\xbf\x08\x06\x00\x00\x00\xbf\x8a\x43\xda\ -\x00\x00\x00\x01\x73\x52\x47\x42\x00\xae\xce\x1c\xe9\x00\x00\x00\ -\x04\x67\x41\x4d\x41\x00\x00\xb1\x8f\x0b\xfc\x61\x05\x00\x00\x00\ -\x09\x70\x48\x59\x73\x00\x00\x16\xea\x00\x00\x16\xea\x01\xe5\x8e\ -\x43\x10\x00\x00\x3a\x5f\x49\x44\x41\x54\x78\x5e\xed\x9d\x07\x78\ -\x54\x65\xd6\xc7\xa3\xbb\x9f\x65\x5d\xcb\xd6\x6f\xf7\x5b\xb7\xb8\ -\x22\xa4\xcc\xbd\x33\xa1\x8b\x8b\xb1\x50\x95\xae\x80\xee\xea\xda\ -\xe8\xa0\xa0\x80\x22\x96\xac\x5d\x51\x74\x2d\xab\xb0\xf6\x82\x48\ -\x40\x9a\x52\x03\x04\xc8\xcc\x9d\x99\x54\x6a\x80\x50\x92\x09\x25\ -\x90\x3a\x3d\xf4\xf3\x9d\xf3\xde\x7b\x61\x92\xbc\x99\x96\x49\x32\ -\x33\xdc\xf3\x3c\x7f\x12\x32\x77\xee\xdc\x99\x39\xbf\x7b\xce\x79\ -\x6b\x82\x66\x11\x36\x80\x8b\x48\x9d\xf2\x6a\xae\xd6\x67\xd5\x5e\ -\x23\xe4\xba\x04\x51\xf2\x0c\xd4\x6d\x76\x3c\xa6\xb7\x78\x66\x8b\ -\x66\xef\xdb\x7a\xc9\xf5\xbd\x28\x39\x37\x08\x92\xa3\x40\x27\xb9\ -\x4b\x74\x92\xa7\x44\x34\xbb\x6b\x79\xa2\xc7\xe8\x18\x3a\x96\x9e\ -\x23\x9a\x5d\x8b\x05\xc9\xf3\xa9\x90\x5d\xfb\x2f\x71\x73\x4d\xba\ -\x68\x72\xdf\x2f\x58\x9c\x3d\x85\x2c\xcf\xb5\xea\x6b\x33\x69\xa6\ -\x59\x54\x98\xe2\x90\xc9\x59\xf0\x73\xbd\xd5\x95\x62\x30\xbb\xef\ -\xd0\x99\xec\x33\xf4\x66\xe7\x6a\xd1\xe4\xc8\x47\x27\xaf\x44\x20\ -\xce\xea\xcd\x6e\x68\x2d\x21\x44\xa7\x11\xac\x3d\x7a\x8b\xf3\x3b\ -\xc1\x68\x7f\x46\x6f\x74\xdc\x67\xc8\xf1\x74\x49\x48\x87\x8b\xcf\ -\x03\xa4\x41\xa4\x59\x4b\x99\xea\x64\x00\x17\x8b\x5b\x8e\xb7\x17\ -\xcc\x8e\xfe\x82\x54\xf7\x22\xfe\x34\x32\x20\xcc\x08\x84\xc5\x83\ -\xce\x4a\xe2\x3b\x71\xdb\x08\xaf\xc7\xea\x45\x80\xdc\x5e\xc1\xec\ -\x5a\x95\x62\x72\xcd\x11\x8c\xce\x51\xc9\xf9\x75\xed\xe8\xbd\x9c\ -\x7b\x5f\x9a\x69\x16\xb6\x29\x60\x74\x34\xd6\x5d\xaf\x33\xd5\x3e\ -\x24\x5a\x5c\x5f\xa0\xc3\x1d\x42\x07\x94\xa1\x60\x60\xf0\x9c\x33\ -\x8a\xa5\x5e\x77\x4e\x1d\x88\x92\xcb\x89\xef\xe9\x73\x7a\x6f\xf4\ -\x1e\x13\x32\xe0\x27\x1a\x34\x9a\x05\x61\xe8\x24\x98\xa2\x88\x5b\ -\xca\xaf\xe8\xb8\xa9\xa2\xa3\x41\xf2\xce\xd4\x49\x8e\x4d\x98\xce\ -\xd4\xd1\x5d\x39\x26\xc1\x08\x24\x15\x1c\x94\x68\x71\x17\x63\xfd\ -\x34\xa3\xa3\xe4\x12\xd2\xb2\xb2\x7e\x4a\x37\x09\x0d\x1c\xcd\x54\ -\x93\xd3\xa9\x35\x67\xaf\x30\x64\xbb\xf5\x98\xdf\xbf\xa4\x97\xdc\ -\x07\x64\xe7\x89\x53\x38\xfc\x09\xdf\xaf\x21\xf7\x04\xfd\x5e\x23\ -\x9a\x1d\x73\xf5\xc6\xda\x5b\xd3\xb2\x40\x86\x86\x3e\x2b\xcd\x2e\ -\x30\x4b\x4f\xbf\x98\x1c\x20\xd5\xec\x4c\xd2\x4b\xce\x27\xd1\x41\ -\x8a\x0c\x0c\x8c\xba\xc6\xce\x73\xa1\x8a\xa0\xc9\x3f\x49\xbf\x97\ -\x61\xb4\x99\x46\x9f\x95\x0f\x34\x9a\xc5\xaf\x61\x1a\x91\x91\xf1\ -\x93\x76\x2b\xcf\x5e\x2a\x6e\xae\xbe\x47\x30\x39\xd6\x8a\x66\xa7\ -\x57\x9f\x7b\xfc\xc2\x8b\x1c\xa1\x8a\x6a\x1a\xb3\xfb\x94\x60\xf6\ -\xe6\xe8\x25\xcf\xd8\xe4\xd5\x65\xbf\x1c\x4e\x35\x8d\x66\x71\x64\ -\x98\x67\xd3\x9d\x50\x30\x3a\x3a\x60\x0e\x3e\x15\xa1\xd8\xc6\xa2\ -\x07\xd5\x1d\x3c\xa7\xd0\xd4\xb4\xf0\x86\x92\x9a\x77\x8a\x9a\xa1\ -\x2b\xf5\x16\xd7\x6b\xa9\xf9\x75\xed\x94\x28\xa3\xa5\x65\x31\x6b\ -\xf8\xe5\x89\x6b\xb6\x5c\x91\x9a\x7f\x3c\x09\x8b\xf2\xb9\x18\x3d\ -\x8e\xa7\x52\xfe\xad\x45\x8f\x88\xc8\x80\x91\x58\x94\x1c\x75\x18\ -\x99\x17\x60\x94\xe9\xda\x29\x0f\xfe\x47\x03\x26\x96\x0c\x73\xe8\ -\xee\xd2\xd9\xcb\x05\xa3\xb3\x27\x46\x91\xf9\x94\x5e\x29\x05\xaa\ -\xa6\x96\x50\x0e\x02\x63\x76\x9f\xd1\x99\x5c\xcb\x53\x8d\x9e\xce\ -\xc9\x3b\xe0\x12\x0d\x98\x28\x37\xfa\x92\x52\x8d\x35\x83\x74\x92\ -\x3b\x4b\xc0\x9c\x9a\xbe\x44\xee\x97\xab\x29\xf2\xc2\x3a\x86\x6e\ -\x48\x98\x96\x6d\xd2\x4b\xce\x9b\x34\x60\xa2\xd0\x28\xec\xeb\xb3\ -\x6a\xff\x22\x5a\xbc\x1f\x8b\xac\x37\x5a\x03\xa4\xcd\x64\x45\x60\ -\xf2\x4e\x82\x5e\x72\xad\xd4\x1b\xdd\x06\x0d\x98\x28\x30\x2a\x24\ -\x19\x20\x92\xf3\xdf\xa2\xe4\xaa\x4b\xcd\x65\xcd\x99\x9a\xa2\x40\ -\x14\x5d\x04\xb3\xcb\x8d\xd1\xe5\x2b\xd1\x54\x9b\xca\x8a\x7e\xcd\ -\x5a\xd9\x32\xe0\x27\xdd\xcc\x67\xff\x57\xb4\x7a\xa7\x62\xa8\x3f\ -\x9c\x5a\x70\x9a\xfb\x65\x69\x6a\x6b\x29\xad\x64\x92\xab\x56\x34\ -\x3b\xa6\x76\xca\xac\xb9\x9a\x6a\x48\xe5\x5b\xd4\xac\x25\x8d\x42\ -\xb9\x60\x3e\x3e\x48\x6f\xf6\xe6\x1a\x30\x2f\xd6\x9a\x79\x63\x40\ -\xd4\xac\xbc\x15\xb0\x7e\xf1\xec\x10\xac\xa7\x6e\x6f\xb7\xb2\xf8\ -\x52\x2d\x1d\x6b\x21\xa3\x0e\xae\xce\x39\xde\x3f\x8a\x66\xe7\x2c\ -\xc1\xe4\xf4\x18\xf2\xb4\x96\xac\x58\x13\x4b\xc7\x24\xa7\x1b\x53\ -\xe5\x0f\x52\x25\x65\x04\xb3\x66\x91\xb3\x76\xc5\x67\x2f\x15\x4d\ -\xc7\x07\x88\x66\xaf\xd5\xc0\x06\x28\x6a\x51\x24\x66\x45\xd1\x65\ -\x0b\xd0\xef\xdb\x44\x4b\xdd\x6d\x69\x25\x70\x19\x7e\xc5\x5a\x74\ -\x69\x8e\x51\x14\xd1\x17\x7a\xfe\xa0\x33\xbb\xdf\x16\xcc\x9e\xb3\ -\xd4\xc9\xd5\xe8\x83\xd7\x14\x9b\xa2\xe6\xe4\xc2\x33\x40\x43\xfd\ -\x85\x6c\xfb\x5f\xb5\xe8\x12\xa6\x51\x93\xaf\x28\xb9\xfb\x61\x14\ -\x31\xc7\xed\x30\x77\x4d\x2c\xba\x60\xed\x52\x98\x6a\xf2\xde\x9c\ -\x9c\xb1\xe3\x12\xe5\xeb\xd7\x2c\x18\xeb\x62\x75\xfc\x4a\x94\x5c\ -\x8f\xa2\x4a\x0c\xf9\x5a\x8b\x56\xbc\x8b\xea\x4d\xd1\xec\xf2\xa2\ -\x1e\xeb\xba\xb2\xea\x2a\xad\xd0\x0f\x60\x94\x6a\x09\x96\xaa\x6b\ -\x0d\x66\xef\x3b\x86\x82\x33\xac\xf3\x8a\xf7\xc1\x6a\x8a\x43\x61\ -\xc6\xd0\x71\x27\xd6\x2e\x26\xd7\x22\x71\xb3\xa3\xbd\x96\x8a\x35\ -\x61\xd4\x21\x65\x90\x5c\xbd\x44\x8b\x37\xa7\xe3\x56\x56\xec\x69\ -\xba\x00\xd5\x91\xa5\x62\xee\x5c\x9d\xf5\xe4\x8d\x5a\x27\x65\x03\ -\xfb\x73\x56\xc9\x65\x7a\xc9\x33\x54\xb4\xb8\x4b\x52\x29\x92\x70\ -\x3e\x40\x4d\x17\x8e\x52\x31\xdd\x46\x58\x2a\x45\xa3\x7d\x24\xf9\ -\x86\xe2\x26\x17\xb6\xe9\x0b\xe1\x1a\x9d\xf5\xf8\x0c\x1a\xa3\x65\ -\xd0\x06\x31\x6a\x52\x44\x9d\xc9\xe4\x13\x3a\xab\x77\x06\xf9\x88\ -\xe2\x2e\x17\xa6\x89\x26\xd7\x6f\xb1\x60\x7f\x9d\x9a\x09\xb5\x56\ -\x2d\x4d\x8d\x84\x3e\x41\xbe\x61\xb0\xd4\xbd\x4e\xbe\xa2\xb8\xcd\ -\x05\x64\x00\x17\xa5\x6c\xf2\xfe\x51\x34\x39\xdf\x37\xe4\x9f\xd2\ -\x20\xd1\xe4\x57\x1d\x8b\x00\x0c\x66\xf7\x9c\xce\x39\xd5\x7f\xbc\ -\x70\x5a\xc4\xf0\x8d\x26\x5a\x1d\xed\x45\xab\x37\x83\x75\x20\x6a\ -\x90\x68\x0a\x24\xc9\x05\x1d\xb7\xb3\x22\x7f\x09\x4d\xe9\x8e\x7f\ -\x58\xf0\x0d\x1a\xcc\x15\x37\x88\x16\xd7\x62\x7a\xe3\xdc\x0f\x45\ -\x93\x26\xae\x10\x96\x6d\x08\x8b\xe4\x5e\xab\xcf\xae\x4e\x89\x5f\ -\x58\x08\x92\x8d\x15\x37\xe8\x25\xf7\xf7\x32\x24\xae\x06\x1f\x84\ -\x26\x4d\x81\x45\x5d\x07\x82\xe4\x5a\x63\xd8\x5c\x95\x1c\x7f\xb0\ -\xe0\x1b\x4a\x95\xec\xed\xf4\x16\xf7\x22\x0d\x92\xd6\x93\x80\x69\ -\xad\x60\xf5\xca\xc2\xdf\xd9\xec\x4f\xce\x71\xb1\x26\xb9\x9f\xcd\ -\xb3\x3a\x39\xae\x60\xc1\x37\x92\x9c\x65\x6f\x27\x5a\xdd\x0b\x35\ -\x48\x5a\x4f\x1d\x31\xaf\xbf\x35\xb3\x1c\x7a\x2f\x2f\x81\x5e\xa8\ -\xdb\xd6\x1c\x86\xee\x46\x3b\x83\x86\x77\x7c\x6c\x09\xd3\x30\x05\ -\x96\xa4\x8d\x8e\x1b\x14\x4f\x8b\x61\x43\x48\x52\x8c\xf6\xeb\x45\ -\xc9\x91\xa1\x41\xd2\x7a\xea\x84\x90\x8c\x9d\x57\x08\x5b\x06\x3d\ -\x09\x55\xd7\xf4\x84\x8a\xab\xfe\x06\x7b\x6e\x1e\x0b\xef\xcf\x5e\ -\x0e\x5d\x37\xd7\x50\xdf\x04\xf7\x79\xb1\x25\xb9\xc0\x47\x58\x3e\ -\xa5\x79\x4a\x8a\xc7\xc5\xa0\x21\x24\x7a\x73\xed\x5f\x44\xb3\xe3\ -\x5b\x6d\xcc\x56\xeb\x48\xb4\xc8\x90\x4c\xfc\xdc\x0a\xe5\xfa\x7b\ -\xe1\xd0\x95\x37\x81\xed\xd7\xb7\x31\x1d\xbc\xfa\x66\x38\xf4\xdb\ -\xdb\x61\xe9\xf8\xf7\xf0\x18\x67\x7c\xc0\x42\xad\x61\x34\x3e\x0c\ -\x61\xd1\x4b\x9e\x3f\x28\x9e\x17\x5b\x76\xa3\xdc\x99\x38\x97\x2d\ -\x19\xa4\x35\x01\xb7\x8a\xba\x64\xd7\xc2\xc4\x4f\xcc\x50\x79\xc3\ -\x10\xb0\x5d\x73\xf3\x39\x48\x54\x95\xfd\xf2\x16\xb0\x5d\xdb\x0f\ -\x16\x4f\xff\x04\x3a\x9b\xe2\x0b\x16\x83\xd5\xfb\x4e\xa7\xac\xc3\ -\xbf\x56\xdc\x2f\x36\xac\xbb\x54\x76\xb9\xc1\xec\x9a\x4c\x63\x76\ -\x34\x48\x5a\x47\x5d\x2c\x2e\x98\x91\x51\x08\xd5\xbf\xef\x8d\x90\ -\xa4\x35\x82\x44\x55\xd9\x2f\xd2\xa0\x0c\x61\xf9\xfe\xc9\x4f\x59\ -\xf4\xd1\xc5\xc3\x6c\x51\x7c\x1f\x9d\x76\x03\x45\xd4\x69\xe2\x9a\ -\xb3\x57\x28\x6e\x18\xdd\x46\x7b\x6b\xe8\x4c\x8e\x3b\x05\x8b\xf7\ -\x0c\x9b\xb6\xcb\x7b\x63\x9a\x22\xaa\x2e\x56\x37\x4c\xde\xed\x81\ -\x7d\x45\xfb\xa1\x4c\xbc\x07\x6c\xbf\xc0\xc8\xc1\x81\x44\x15\xc1\ -\x52\xfa\xa7\x3b\xe0\x9b\xf4\x79\xd0\x11\x9f\xaf\x8b\x93\x9b\x19\ -\x9b\x62\x6c\xac\x7d\x90\x6d\x8a\x14\xd5\xc6\xea\x12\xd7\x2d\x78\ -\xd1\x7b\xb4\x65\x4c\x5b\x5e\x22\xaa\x0b\xd6\x25\x53\x76\xb9\x61\ -\x9f\xd3\x0d\x07\xdd\x1e\xb0\x6d\xdf\x07\x36\x71\x64\x40\x58\x0e\ -\x62\x6a\x76\xe0\xba\x81\x30\xe7\x8d\x25\x90\x8a\xa0\xc5\x43\x64\ -\x31\x60\x2d\x2c\x9a\x5d\x4e\xc1\x58\xd3\x13\x7d\x31\x4a\xe7\xb3\ -\x20\x24\x3a\x93\x33\x51\xb4\xd6\xe5\x69\x43\xe5\x5b\x5e\x04\x49\ -\x67\x84\xe4\xf1\xdd\x6e\x38\xec\x46\x48\x5c\x6e\xb0\x31\x21\x2c\ -\xe6\xad\x60\xd3\x23\x2c\x57\xf5\xe4\x42\xa2\x8a\x60\xd9\x7b\xfd\ -\x60\x78\xfb\xbd\x55\xd0\x11\xcf\x15\x17\xb0\xb0\x1b\xb4\xa7\x5c\ -\xd8\x58\x2d\x90\x4f\x2a\xde\x19\x3d\x66\x28\x38\xfb\x1b\x51\x72\ -\x7e\xab\x4d\xba\x6a\x79\xa9\x90\x4c\x41\x48\x0e\x21\x24\x65\xe7\ -\x20\x51\x44\x91\xc5\x58\x08\xb6\xbf\x0e\x04\xdb\xd5\x8d\x8b\x7a\ -\x5f\x1d\xc2\xc7\x09\x96\xd9\xef\xad\x56\x60\x89\xfd\x34\x2c\xb5\ -\x10\xeb\x15\xab\xe7\x5b\xf2\x49\xc5\x3d\xa3\xc3\xd2\xb2\x4a\x2e\ -\x13\xad\xce\xf1\xa9\xb4\xe6\x2c\xe7\xc2\x35\x45\x4e\x04\x49\x57\ -\x4c\x95\x28\xdd\x3a\xd4\x10\x10\x55\x08\x8f\xcd\xe3\x05\x5b\x36\ -\xc2\xf2\x97\x3b\xfd\x16\xf7\xa4\x43\x57\xf7\x84\x7d\x37\x0c\x81\ -\xb7\xde\x5f\x4d\xad\x47\xac\x17\x9f\xf7\xda\xb1\x23\x17\x1b\x71\ -\xac\xb7\x78\x1e\xef\x57\x7c\xf6\x52\xc5\x4d\xdb\xd8\x30\xbc\x25\ -\x9b\x5c\xb7\x09\x92\xd3\x4e\x39\x22\xff\xc2\x35\x45\x42\x04\x49\ -\x37\x84\xe4\xe9\x62\x3f\x90\xa8\xa2\xa8\x42\x3f\x57\x1a\xa1\xf4\ -\x2f\x03\xb8\xcd\xc5\xbe\x3a\x8c\x69\x5a\x51\xe2\xdd\x90\xfe\xf1\ -\x26\xd0\xe7\xc4\x03\x2c\xca\x0a\x2f\x9b\x1d\x03\xa2\xa1\x5e\xb9\ -\x28\xc5\x58\x77\xbd\x68\xa9\xcb\x65\x2b\x98\x73\x2e\x56\x53\x64\ -\x44\x90\xf4\xc8\x71\xc3\x0c\x84\xe4\x7c\x3d\x12\x40\x08\xcb\x01\ -\x87\x13\x8a\x17\xaf\x97\x61\x09\x90\x86\x1d\xbe\xf2\x6f\xb0\x3d\ -\x79\x24\x4c\xfb\xca\x0a\x86\x38\x80\x85\xcd\x98\xb5\xb8\x0f\xd3\ -\x38\x43\xc5\x5f\xdb\xc6\x3a\xe5\xd5\x5c\x2d\x1a\x1d\x73\xb4\xba\ -\xa4\x65\x45\x90\xdc\x9c\xeb\x86\x37\x4b\x38\xf5\x88\x1f\x1d\xb0\ -\x3b\x60\x57\x45\x25\xec\x2c\xaf\x80\x3d\x8b\x32\xc1\x76\x5d\x60\ -\x58\x8e\x5c\x79\x13\xec\x48\x19\x09\x53\xbf\x44\x58\xac\x9e\x98\ -\x87\x85\xd6\x3c\x36\x98\x5c\xb3\x3a\x18\xcf\x5e\xa9\xb8\x6d\x2b\ -\x1b\x86\x33\x83\xc9\x79\xb7\xb6\xee\x56\xcb\x4a\x85\xe4\x3f\xa5\ -\x6e\x28\x45\xe7\x0f\x16\x14\x06\xc9\xb1\x0a\x84\xe4\x18\xec\x3c\ -\x4a\x3f\x11\x96\x85\x08\x4b\x10\x91\x85\x60\xd9\x2e\xdc\x03\x8f\ -\xcf\xcb\x03\x21\xb7\x2e\xf6\x23\x4b\xc1\x19\x10\x4d\xf6\x7b\x5a\ -\x3f\x05\xc3\xba\x44\x64\xb3\x14\x3d\x45\xda\x82\x10\x2d\x27\x01\ -\x75\x33\xa6\x5b\x04\x49\x09\x3a\x7f\x58\x90\xa8\x22\x58\x50\x7b\ -\xbe\x5b\x03\x65\xd7\xf6\xf7\x5f\xe0\xff\x0a\x61\xc1\x9a\x26\xef\ -\xa6\xd1\x30\x3a\x63\x7b\xcc\xd7\x2c\x6c\xd7\x03\xb3\xfb\xa0\x92\ -\x82\xb5\x5e\x93\x71\xda\x0e\xf8\xb9\x68\x72\xcc\x4b\xdd\x72\xb6\ -\xd1\x45\x69\x8a\x8c\x08\x92\x9e\x08\xc9\x47\x36\x84\xc4\x19\x3c\ -\x24\xfb\x6b\xed\x8d\x21\x51\x85\x7f\xdf\x73\xa4\x02\x4a\xe7\x2e\ -\x66\x63\xbe\x02\xc1\x72\xf4\xea\x9e\x0c\x96\x51\x0b\x63\x1f\x96\ -\xd4\x42\xf4\x55\xc9\xfd\x61\x3b\x4b\xd5\x55\x8a\x1b\xb7\xb4\xc1\ -\x45\x3a\xc9\x99\xc6\x16\x85\xe0\x5c\x90\xa6\xe6\x4b\x90\xce\x43\ -\x72\xcc\x13\x1a\x24\x5c\x40\x14\xed\xae\xa8\x82\x12\x6a\x0d\xab\ -\xb1\x83\xed\x9d\x79\x60\xfb\xbf\xbe\x41\xc0\xf2\x37\xc8\xed\x39\ -\x16\x46\xc5\x43\x64\x41\x9f\x15\x8d\xb5\x77\x25\x64\x64\xb4\xf4\ -\x10\x17\xb8\x28\xd9\xea\xfe\x9d\x68\xf1\x64\x6a\x43\x54\x5a\x46\ -\x04\xc9\x2d\x58\x93\x7c\xa8\x40\xc2\x03\x82\xa7\x40\x90\xec\xa9\ -\xac\x86\x12\x87\x4b\x3e\xbe\xae\x0e\x6c\x95\x35\x60\x7b\xe9\x53\ -\xb0\xfd\x21\x50\x64\xb9\xb5\x11\x2c\x54\x37\xf1\xae\x3d\xda\xc5\ -\xca\x04\x2c\x17\xba\x99\x8f\xfe\xaf\xe2\xd0\x2d\x63\x6c\xcf\x44\ -\xc9\x31\x45\xde\xa3\x24\xb6\x0b\xbc\x68\x94\x0e\x21\x49\x43\x48\ -\x3e\x3f\xe8\x86\xa3\x21\x42\xb2\xe3\xc8\x51\x2e\x20\xa4\x7a\x90\ -\xa8\x22\x58\xaa\x6a\xc1\xf6\xe2\xc7\x60\xfb\x5d\x6f\xb0\xfd\x22\ -\x30\x2c\x39\x69\xe3\xe1\x81\x25\xbb\x20\x29\x86\x37\x71\xa2\x05\ -\x2a\xd0\x77\x27\x62\x9d\xdd\x72\x51\x25\xd5\x54\xf3\x67\xbd\xc5\ -\x6d\xd3\x3a\x16\x23\x2f\x82\xa4\x77\x9e\x0c\x49\x79\x08\x90\xec\ -\xab\xa9\xe5\xc2\xa1\x8a\x20\x29\x75\x36\x80\x44\x55\xdd\x71\xb0\ -\x1d\xad\x02\xdb\xf4\xf7\xc0\xf6\xdb\x5e\xfe\x07\x52\x22\x2c\xc7\ -\x7e\x99\x06\x99\x83\x66\x42\xbf\xd5\x87\x20\x25\x86\xf7\xaa\x11\ -\x2c\xde\xd3\xac\xb0\x6f\x89\xb1\x60\x34\x4c\x45\x6f\x76\xbd\x60\ -\xa0\xa2\x88\xf3\xe2\x9a\xc2\x17\xa5\x32\xbd\x10\x92\x65\x47\x43\ -\x8b\x24\xc1\x40\xc2\x7b\x5e\x3d\x1d\x47\x58\x0e\x1f\x03\xdb\xa4\ -\x59\x41\xc1\x52\x71\xcd\xcd\x90\x39\xe4\x19\xe8\xbb\xf6\x08\xe8\ -\x62\x14\x16\x56\x5f\x9b\x1c\x1f\xd1\x1e\x3c\x8a\x7b\x47\xc8\x90\ -\xbc\x8e\xd9\xf6\x4e\xa2\xd9\x55\xa5\xa5\x5c\x91\x15\x41\x32\xb0\ -\xd0\x0d\xcb\xcb\xe5\x51\xc0\x5c\x67\x6e\x24\x57\x50\x90\x94\xa9\ -\xc3\x58\x02\xa8\xf4\x78\x1d\xec\x2b\x3d\x04\xfb\xc6\xbc\x82\xb0\ -\x50\x1a\xe6\x07\x96\x5f\xde\x02\x15\xbf\xb9\x0d\x56\xdf\xf3\x22\ -\xf4\xce\x3c\x02\x89\xf9\xb1\x39\x22\xc3\x50\x70\x1a\x44\x53\xb5\ -\x2e\x21\x3d\x3d\x72\x7d\x2b\xd7\x4a\x67\x2f\xd7\x99\x9c\x9f\xd3\ -\xc9\x79\x2f\xaa\x29\x3c\x51\x13\xf0\xe0\x2d\x18\x49\x42\x82\x24\ -\x70\x24\x29\xae\xaa\x09\x1e\x12\x4c\xcb\xf6\x56\xd7\xc0\x8e\xaa\ -\x6a\x28\xda\x53\x02\xfb\x46\xbf\x7c\x0e\x88\x46\x90\xa8\xc2\xc7\ -\x2a\x7f\x7d\x2b\x2c\xbd\xff\x35\xe8\x91\x55\x15\x93\x35\x0b\x35\ -\x46\x89\x92\x63\x29\xdb\xa1\x38\x22\x86\xd1\x44\xc8\xae\xea\x2e\ -\x58\xea\xbc\xbc\x17\xd4\x14\x9e\x18\x24\x18\x49\xd6\x54\x84\x1a\ -\x49\xfc\xb5\x6e\x55\x84\x0c\x49\x31\x02\x72\xae\x21\x00\x81\x29\ -\x2a\xda\x0b\xfb\xff\xf1\x2c\xc2\x70\x6b\x40\x58\xaa\x7e\x75\x0b\ -\x2c\x79\xe0\x0d\xb8\x71\x73\x0d\x24\xc5\x60\x2b\x28\x6b\xb9\xcd\ -\x76\x45\x66\xd5\xc9\x4e\x79\x87\x7f\xa6\x33\xba\x16\x6a\x83\x1e\ -\x23\x27\x5f\x48\x68\x3e\x09\xcf\x89\x1b\x8a\x9c\xda\x7f\x24\x09\ -\x17\x92\x06\xe7\xa9\x45\x58\xb6\xed\x81\x03\xc3\xa6\xb3\x7e\x14\ -\xbf\xb0\xfc\x22\x0d\x2a\x7e\xdf\x1b\x16\x8e\xf9\x37\xf4\xd8\x54\ -\x1d\x73\xb0\xb0\xa8\x62\xb2\x2f\x6b\xfe\xde\x91\x48\x5a\xaa\xf9\ -\x84\x88\xd1\xc4\xad\xb7\xf0\x5f\x4c\x53\x68\x3a\x07\xc9\xb1\xc8\ -\x41\x52\x74\xb4\x82\xa5\x4f\x65\x41\x9e\x8f\x9a\x8a\xa9\x86\x69\ -\x04\x09\x09\xff\x56\x64\xb7\xc3\xde\x5d\x07\xa0\x6c\xc4\x0c\x56\ -\xc0\xfb\x83\xa5\xec\x9a\x34\xa8\xfc\x5d\x2f\xc8\x18\xf7\x2e\xf4\ -\xd8\x18\x9b\xb0\x08\xc6\xca\xe6\x2d\xfc\xcd\xb6\xaf\xce\x76\xce\ -\xd6\xa2\x49\x64\x44\x4d\xc0\x04\xc9\x6a\x82\x84\xe3\xc0\x3c\xa9\ -\x35\x44\x23\x87\x56\x44\x90\xc8\x91\x84\xff\xfc\x86\x2a\x71\x38\ -\x19\x24\xbc\x73\x91\xe8\x7c\x04\x65\xd9\xe9\x53\x60\x2b\xb6\x81\ -\x6d\xe8\x34\xb9\x43\x92\x80\xe1\x80\x42\x62\xb0\x60\x64\xf9\x6e\ -\xdc\x7b\x31\x07\x8b\x1c\x55\x9c\xdf\x34\x63\x1b\x3c\xb8\x88\x56\ -\xe0\x13\x2d\xee\x0a\xad\xa5\xab\xf9\x4a\x41\x48\x46\x6c\x0d\x1d\ -\x12\x4a\x8f\x78\x0e\x4d\x92\x23\x49\x2d\xf7\xb9\x3c\xc9\x90\x54\ -\x71\xcf\x45\xda\x75\xac\x92\xd5\x40\xe7\xd2\x37\x6a\x3a\xce\xdb\ -\x05\xb6\x7e\x8f\xc9\x2d\x61\x81\x60\xc1\xc8\x32\x7f\xbc\x0a\x4b\ -\xec\x34\x1d\xd3\xae\xc4\xca\x5e\xf7\xa1\x47\x15\x8a\x26\x48\xda\ -\x0c\x6d\x4c\x57\xf3\x44\xcd\xbf\xa4\x7b\xb7\xb9\xc1\x5a\x13\x7c\ -\xe1\x1e\x69\x48\x0e\xd8\xfd\x43\x52\x74\x0e\x12\x9f\xe7\xd1\xef\ -\xa7\x4e\x20\x2c\x45\x60\xeb\x1b\x3c\x2c\x5f\x4f\x99\x0b\x5d\x25\ -\x27\x24\xcb\xa3\x76\xa3\x5e\x2c\xaa\x64\xdb\xdf\xee\x34\x77\x6e\ -\xe8\xfd\x2a\x89\x56\xc7\xaf\xb0\x2e\xd9\xae\x45\x93\xf0\x45\x80\ -\x50\x4d\xf2\xd0\x0e\x37\x6c\xb7\x87\x56\x93\x70\x0b\x6d\xd5\xa9\ -\x29\x3d\xaa\xb5\x73\x9f\xcb\x13\x45\x12\x1a\x10\xc9\x3b\x17\x89\ -\x1e\xdb\x6f\x77\xf0\xd3\x37\x15\x96\x5c\x84\xa5\xdf\xa3\x81\x61\ -\xb9\xba\x27\x94\x75\x18\x06\x1f\xbe\x90\xc1\x16\x05\x8f\x15\x58\ -\x28\x73\xea\x1a\xf2\xc8\x62\x0c\x41\x7a\xc9\x39\x94\x0d\x4d\xe6\ -\x9c\x54\x53\x60\x11\x24\x06\x8b\x0c\xc9\x56\x84\xe4\x60\x24\x21\ -\xa1\xd1\xbf\x9c\xe7\xf2\x14\x28\xdd\xda\x5d\x51\xc9\xa2\x0d\xef\ -\xb9\xe7\xc4\x60\x39\x89\xb0\xec\x04\x5b\xef\x49\x01\x27\x7e\x1d\ -\xbc\xf2\x6f\x70\xb0\xfd\x50\xf8\xe0\xe5\x45\x72\x64\x89\x81\x21\ -\x4f\xb4\xc4\x96\x98\xed\x19\x98\x90\x1e\xc2\xe4\x2e\xda\xb2\x58\ -\x30\x39\x16\x68\x2b\x3d\x86\x27\x82\x84\x5a\x09\xc7\x15\x85\x06\ -\x09\x39\x75\x24\x21\xa1\x09\x5c\xfe\x21\xa9\x62\xc7\xf0\x9e\xdb\ -\x48\xf4\x1e\xb0\xc0\x2f\xd9\x5c\x00\x25\xdd\xfe\x09\x36\x84\x81\ -\x07\x89\x2a\x5a\x20\xbc\x24\x65\x04\xcc\x7e\xf3\x47\xe8\x62\x76\ -\x41\x4a\x94\xfb\x92\xc1\xe2\xa5\xc6\x16\x73\x5a\x7a\x56\xf0\x45\ -\x7d\xca\x46\x67\x92\x68\xa9\x73\x69\x69\x57\xe8\x52\x6b\x92\x49\ -\x61\x40\x42\x4e\x1d\x49\x48\x28\x5a\xf0\xce\x45\x92\x21\x09\x10\ -\x49\x1a\x88\xa2\xdd\x1e\x3a\xef\xe2\x4c\x28\x31\x8c\x0c\x08\xcb\ -\xe1\x2b\x7a\x40\xb1\xe1\xef\xf0\xf2\x07\x99\xd0\x09\x6f\x1c\xd1\ -\x0e\x0b\xde\xdc\xce\x76\xce\xa1\xa2\x3e\x98\x59\x90\x00\x17\xeb\ -\x25\xf7\x93\xac\xd7\x92\x77\x32\x4d\x4d\x8a\xea\x11\x82\x64\x22\ -\x42\xb2\x3b\x84\x9a\x24\x50\x0d\xa1\x42\x12\x6c\x13\xb0\x3c\x15\ -\x38\xf2\x90\x14\xab\xcd\xca\x35\x35\xb0\xe7\xbb\x55\x50\x9a\x38\ -\xd4\x7f\x1a\xf6\x9b\xdb\xe1\xc8\xcf\x6e\x84\x9d\x5d\x1e\x80\xe7\ -\xe6\x6c\x64\x8b\xf6\x45\x33\x2c\x34\x5f\x45\x94\x1c\x2f\x05\x35\ -\xb1\xab\xdd\xca\xb3\x97\x8a\x66\x57\xa1\x16\x4d\x42\x13\x4d\xb8\ -\xa2\x95\x16\x29\x92\xec\x72\x84\x16\x49\xe4\x95\x52\x1a\x3b\x34\ -\x89\xa6\xf5\xd2\x7c\x93\x60\x21\xa1\x63\xa9\x05\x8b\x77\x2e\x52\ -\x50\x35\x49\x03\xb1\x48\xe2\xdb\x41\x49\xe7\x47\x78\x8b\xdf\xfc\ -\x12\x0b\x7b\x04\xc2\x4f\x71\x4f\xb0\x94\x5f\x8e\xb0\x74\x8d\x01\ -\x58\xc8\xe7\x2d\x9e\x6d\x1d\x8c\x95\x01\x56\x6c\xc1\x22\x5e\x67\ -\xb4\x77\xc6\x83\x4f\x73\x4f\xa4\x89\x2b\xea\x48\x24\x48\xa6\xed\ -\xc6\x48\x12\x02\x24\xec\xce\x1f\x61\x48\x02\x45\x92\x12\x47\x90\ -\x35\x89\xa2\x26\x7b\xf1\x6b\x6b\x61\xf7\x5a\x09\x4a\x7a\x3c\x1c\ -\x70\x8d\x63\x19\x96\xee\xb0\xa3\xeb\x83\xf0\xec\x5c\x84\x85\x3e\ -\xb3\x28\x5d\xe7\x98\x8a\xfa\x94\x6c\xd7\x2d\xfe\xfb\x54\x30\xe4\ -\x88\x66\xe7\xdb\x06\xab\xb6\xb2\x4a\xb0\x22\x48\xba\x5b\xdd\x30\ -\x7d\x0f\x46\x92\x10\x6a\x92\xc0\x90\x54\x32\xc7\xe7\x3d\x97\xa7\ -\x40\x90\x50\xfd\x43\xd1\x8b\xf7\xdc\xa6\x24\xd7\x4d\x4d\x34\x2e\ -\xe0\xf9\xf6\xe4\xef\x84\xd2\x7b\x67\x82\xed\x8a\xf3\x3b\x7b\x35\ -\x29\x05\x96\x9d\x08\xcb\xf4\xcf\x24\xd0\xe7\x1e\x8f\xca\xf9\xf7\ -\x34\x29\x51\x90\x9c\xb3\xfd\xa6\x5f\xfd\x30\xed\xd2\x9b\x5d\xf9\ -\x5a\xda\x15\x9c\x08\x92\x6e\x39\x6e\x78\x69\xbf\x1b\xf6\x84\x1a\ -\x49\xfc\x38\x35\x3d\x16\x8a\x53\xcb\x90\x34\xb1\xf2\x0a\x8a\x20\ -\x29\x75\x86\x07\x09\xef\x7c\xa4\x5d\xf8\x9a\xfb\x77\xee\x07\xdb\ -\x7d\xcf\x82\xed\x67\x3d\xf8\x70\x34\x14\xc2\x72\xec\xb2\x6e\x20\ -\xa5\x4d\x80\xf1\xf3\x0a\xa2\x73\x35\x4a\xba\x1e\xab\x67\x2b\x95\ -\x20\x0a\x16\x8d\x2d\x75\x63\x55\x12\x1e\xac\xa5\x5d\x41\x48\x87\ -\xea\x6e\x71\xc1\x2b\x07\x94\x9a\x84\xe3\x6c\x3c\xc9\x90\x34\xed\ -\xd4\x72\x7a\x14\x1a\x24\x54\xec\xf3\xce\x45\x22\x67\xa7\x1a\x83\ -\xf7\xdc\xa6\x44\xe9\x99\x5f\x48\xaa\xaa\xf1\x75\x31\x85\xfb\x78\ -\x09\xd8\xfe\x3a\xc8\xff\x44\xaf\x06\x2a\x45\x58\x2a\x2e\xed\x0a\ -\xe6\x5b\x26\xc0\xb8\x6f\x0b\xa3\x12\x16\x4a\xbf\x52\xcd\x2e\x91\ -\x86\x71\x29\x68\xf8\x58\x3a\xb5\x76\x79\x1e\x57\x16\x0b\xd3\xe4\ -\x47\x29\xa8\x6e\x66\x17\x3c\x93\x57\x0b\xd2\x61\x07\x83\x24\x98\ -\x25\x85\x08\x92\xdd\x15\xad\x0d\x49\x68\x91\x84\xae\xd1\x5f\xdf\ -\xcb\x2e\x7c\x6c\x7f\x55\x0d\xd8\x16\xad\x03\x5b\xb7\x07\x82\x4b\ -\xbb\x1a\x48\x85\x45\xba\x65\x22\x3c\xf2\xdd\xb6\xe8\x5b\x8d\xd2\ -\xea\x05\xd1\xe8\x78\x89\xdf\xf9\x48\x85\xbc\xd9\xb3\x5e\x4b\xbb\ -\xfc\x8b\x20\xb9\x11\x23\xc9\xd3\xb9\xb5\xb0\x22\xaf\x0a\x96\x16\ -\x56\x83\x15\x61\x21\x50\xfc\xc1\x22\x43\x12\xa8\xd0\x0e\xfe\xce\ -\x4f\x77\xf4\xa2\xa3\xfe\x6a\x92\xd0\x23\x49\x30\xd7\x78\x80\xc0\ -\x5b\x2d\x81\xad\xcb\xfd\x60\xbb\xec\x46\x96\x4e\xf1\x60\x08\x24\ -\x82\xa5\xf2\x92\x2e\xb0\xbe\xff\x34\xb8\x6f\xc9\x2e\x10\xf1\x06\ -\x1d\x35\xb0\xb0\xeb\x70\x15\xa4\xf3\x40\xe9\x62\x75\xfc\x4a\x30\ -\x7b\x1c\xdc\x27\x6a\x62\x22\x48\x7a\x20\x24\xcf\xe6\xd4\xc2\x8f\ -\xf9\x55\xb0\x1a\xb5\x12\x61\xf9\xbe\xa0\x1a\x2c\x87\xe5\x3b\x37\ -\x0f\x16\x39\xdd\x8a\x24\x24\x81\x22\x49\x4d\x58\x90\x04\xba\xc6\ -\xfd\x74\xce\x43\x47\xc1\xf6\xd8\x2c\xb0\x5d\xdc\x39\x6c\x48\x54\ -\x95\xa2\xaa\x7e\xde\x03\xd6\x0f\x9e\x01\xf7\x2d\x26\x58\xa2\x28\ -\x0d\xb3\xb8\x4f\x25\x67\x1d\xfb\xb9\x82\xc7\x79\xd3\x1b\xed\x7d\ -\xb4\x75\x84\x9b\x56\x32\xea\x26\x84\xe4\x79\x84\x64\x85\x0a\x89\ -\xa2\x55\x08\x4b\x46\x41\x0d\x58\x8e\xf0\x61\x21\x27\xe3\x39\x1f\ -\x29\x54\x48\xa8\xe3\xd1\x1f\x24\x34\x37\x25\x5c\x48\x9a\x1a\x15\ -\xc0\x22\x09\x1e\xc3\x96\x37\xda\x55\x02\xb6\x7f\x3e\x1f\x7c\x01\ -\x1f\x40\xa5\xbf\xba\x15\x61\xb9\x91\xc1\xf2\x8f\xc5\xbb\xa3\x07\ -\x16\x2a\x41\xb2\x6b\x6f\x51\xf0\x50\x8c\x06\x41\x1a\x9d\xcf\xe8\ -\xe3\x61\x2b\xe5\x16\x10\x41\xf2\x37\x84\xe4\x05\x05\x92\x55\x3e\ -\x90\xa8\x5a\x8d\xb0\x2c\xda\x52\x03\x79\x47\x5d\x8d\x40\xa1\x89\ -\x57\x3c\xe7\x0e\x07\x92\x86\xe7\xf0\x55\xcb\x41\xa2\xd4\x39\xb4\ -\x8b\x57\x45\x35\xd8\xd2\xe7\x28\xa0\xf8\xe9\x68\x0c\x41\x2a\x2c\ -\xeb\x86\x3c\xcd\x60\x61\x35\x42\x83\xef\xa0\xd5\x85\x2c\xb0\x66\ -\xe2\x7a\xfd\x29\x98\x8b\xe9\xcc\xde\x75\x5a\x7d\xd2\x58\x04\x49\ -\x4f\x84\xe4\x25\xaa\x49\x10\x08\x1e\x24\xaa\x28\xb2\x2c\xdb\x5e\ -\x03\xf9\x15\x3c\x58\x6a\xeb\xc1\x42\x35\x44\x68\x90\x04\x5e\x79\ -\x25\x74\x48\xec\x08\x82\x7f\x48\x1a\x35\x2e\x9c\xc0\xa8\x42\xfb\ -\x43\xf6\x1a\x1f\x70\x14\x71\x28\x3a\x1f\x59\x9e\x86\xc1\x3f\x96\ -\x40\x72\x5b\xaf\xec\x82\x2c\x88\x16\x57\x7e\x3d\x50\xa8\xcd\x58\ -\xab\x4f\x1a\x2b\x09\x45\x90\xbc\x12\x04\x24\xe7\x94\x5b\x05\x3f\ -\xec\x90\x61\xa9\xe7\x60\x28\x82\x85\xee\xde\x34\x42\x38\x14\xa7\ -\x0e\x04\x09\x45\x2c\xde\xf3\xfc\x89\x1a\x03\x82\x69\xa6\xae\x3f\ -\x91\xcb\x23\xa7\x5f\x85\xbb\xc0\xf6\xf7\x99\x60\xbb\x2a\x04\x50\ -\xa8\x9e\xa1\xa1\x2e\x7e\x86\xbb\x10\x2c\x35\x3f\xeb\x06\xdf\xdd\ -\xff\x06\xf4\xca\x2c\x6f\xf3\xd5\x28\x45\xac\x53\xba\xae\xf4\x99\ -\xa3\x42\xcb\x4b\x6a\xf5\x49\x7d\x11\x24\x69\x08\xc9\x6b\xa1\x40\ -\xa2\x0a\x61\x59\x86\xb0\x14\x54\x36\x86\x81\xf5\x3f\x34\xf8\x9b\ -\x3f\x11\x5c\x3c\x47\x26\x51\x84\x0a\x65\x51\x09\x55\x72\x63\x40\ -\xa0\xc6\x05\x0e\x24\x6e\x4c\xbd\x2c\xdb\xc0\x76\xf7\xf4\x30\x6a\ -\x14\x04\xa4\xdd\x60\xb0\xfd\xf9\x4e\xbf\x8b\x55\x10\x2c\xb5\xd7\ -\xf4\x84\xef\x1e\x9e\x0d\xbd\xd6\xb6\x31\x2c\x98\x02\x1a\xb2\x6b\ -\xf4\x0a\x26\x09\x09\x3a\xc9\x3e\x42\x4b\xbb\xce\x8b\x20\xb9\x05\ -\x21\x99\x85\x90\x90\xe3\x87\x04\x89\x2a\x84\xe5\xc7\xa2\x5a\xd8\ -\x52\xd5\x38\x0d\x0b\x56\x81\x21\x09\x7e\x2a\xb0\x2a\x9a\x19\x59\ -\x14\xa0\x17\x9f\x6a\x92\xfa\x90\x90\x10\x14\x33\x42\x32\x68\x4a\ -\x78\xf5\x09\x75\x4a\x26\x0d\x07\x9b\x38\x52\x5e\x14\x9c\x77\x8c\ -\xa2\x52\x04\x89\x60\xf9\x76\xcc\xbb\x90\xb6\xee\x18\xa4\xb4\x55\ -\xdf\x1e\x32\x21\x58\x9c\x77\xcb\x94\x60\x0e\x96\x62\x72\xbd\xaa\ -\x81\x22\x2b\x11\x75\x2b\x42\xf2\x56\x73\x20\x51\x85\xb0\xac\xda\ -\x85\xb0\x54\x87\x06\x0b\xa5\x65\x6d\x03\x09\xd5\x4d\x0d\x6a\x12\ -\x12\xad\x7c\xbf\xbf\x0c\x6c\xb4\xe4\x2a\xf5\x9d\xf8\x49\x9f\xfc\ -\x8a\x56\x73\xf9\xd3\x1d\x60\xfb\x23\x2a\xd0\x39\x7e\x91\x06\x35\ -\xbf\xbd\x1d\xbe\x18\xf7\x01\xf4\xd8\x58\x05\xc9\x6d\x11\x59\x08\ -\x14\xc9\xf9\xa6\x5c\xa7\xe0\x3f\x3a\xc9\xb5\x52\x03\x45\x8e\x24\ -\xb7\x23\x24\x6f\xe7\xd6\x30\x47\x6f\x16\x24\xaa\x10\x96\x95\xbb\ -\x6b\xa1\x10\x61\x69\xe4\x80\x1c\xc9\x90\x34\xbd\x3c\x11\x29\x2c\ -\x48\xb0\xce\xf1\x07\x89\xdf\xba\x89\xa6\x01\xaf\x32\x81\xed\xba\ -\x41\xfe\xf7\x52\x09\x46\x04\x48\xb0\xa0\x21\x2c\xb5\xbf\xbd\x0d\ -\xfe\xfb\xd8\x7f\xa1\xeb\xa6\x9a\x36\x80\x05\x99\xf0\x2d\xe8\x75\ -\x66\xd7\x6e\xfe\x81\x17\x86\xa8\x29\x92\x5a\xb7\xfa\x20\x24\xef\ -\x22\x24\x04\x48\x44\x20\x51\x85\xb0\xac\x40\x58\xb6\x56\xfb\xef\ -\xbd\x0f\x0e\x92\xd0\x0b\x77\x06\x09\xa7\x79\x9a\x54\x74\x34\x00\ -\x24\xa4\x93\x08\xca\xd7\x2b\x30\x9a\x74\xe7\x3b\x74\x4b\x8a\x22\ -\x0b\xa6\x79\x73\xa6\x7e\x06\x5d\xda\x60\xb1\x0a\xf4\x8d\x53\x0c\ -\x92\x76\x2b\xcf\x5e\xa5\x33\x7b\x6a\x78\x07\x5d\x08\x22\x48\xa8\ -\xc7\xbd\xbf\xd5\x05\xef\xb7\x04\x24\xaa\x10\x96\xd5\x7b\xec\xb0\ -\xa3\x16\x61\x69\xa2\xf8\x26\x87\xe5\x39\x33\x49\x2d\xdc\x79\xcf\ -\xf3\x27\x7f\x90\x90\xf6\x56\x07\x80\x84\xae\xf5\xe4\x09\xb0\x7d\ -\xf1\x03\xd8\x2e\xe9\xc6\x77\xe6\x50\x75\x75\x4f\xb0\x5d\x8e\x29\ -\x1c\xa5\x71\x34\x56\x2c\xd0\xa0\xca\x6b\x6e\x86\xea\x6b\xfb\xc2\ -\x47\x4f\x7d\x09\xdd\x36\xd7\xb6\x6e\xcd\x62\xf1\x42\x3b\x6a\xf9\ -\xd2\x99\x9c\x89\x17\xea\xc6\x40\x2a\x24\x03\x11\x92\x0f\xf3\x6a\ -\x58\x6f\x7b\x8b\x40\xa2\x68\x05\xc2\xb2\x6e\x6f\xd3\xb0\x34\x95\ -\x1a\x91\xa3\x93\xc3\x37\x3c\x3e\x90\x02\x41\x12\x74\xdf\xcb\xa9\ -\x53\x60\x5b\x69\x94\xb7\xde\xf6\xb7\x33\x57\x20\x51\x6b\xd7\xd5\ -\xf8\xfc\x5b\xc7\x40\xe9\xe4\x59\xb0\xff\x89\xd9\xb0\xff\x9e\x19\ -\x50\x4a\xfb\xdf\xd3\xe4\x2f\x9a\x2d\xc9\x7b\x1e\xe9\x6a\x84\xe5\ -\x0f\x7d\xe0\x9d\x7f\x2d\x64\x8b\x82\xb7\x5e\xef\xbd\x47\x6e\xf9\ -\xd2\x5b\xec\x7d\xf8\x07\xc4\xb7\x08\x12\x1a\x2a\x3f\xc4\xea\x84\ -\xb9\xad\x00\x89\x2a\x82\x25\x93\x60\xb1\x37\x4e\xc3\x78\x63\xb8\ -\x08\x9e\x36\x85\x84\x84\xc5\x7c\xe9\xfe\x83\x50\x3a\xee\x55\x39\ -\xaa\x34\x6c\xde\x25\x78\x02\x75\x3e\xd2\x73\x28\x72\x0c\x7a\x02\ -\x6c\x59\x79\xb0\xf7\x78\x1d\x14\x9d\x39\x09\x45\xc5\x25\x50\xfc\ -\xee\x3c\x28\xe9\xf4\x0f\x19\x22\x3f\xf5\x4b\x19\xc2\x54\x7e\xc3\ -\x10\xb8\xff\xf3\x3c\xd0\xb5\xe2\x74\x62\xd1\xec\x1a\x99\x20\x9a\ -\x9d\xe3\x79\x0f\xc6\xb3\x08\x12\x5a\x08\xe2\x2e\x84\xe4\x93\xbc\ -\x6a\x58\x83\x0e\x1c\x18\x92\x6a\x45\xbc\xc7\x42\x13\x8b\x2c\xfb\ -\xec\x6c\x1e\x8b\x2f\x2c\xf4\xbb\x0a\x0b\xf5\x96\x33\x48\xf0\xff\ -\xf5\x9c\x36\x08\x51\x8a\x16\x31\x48\x14\xed\xf7\xb8\x61\xcf\xa6\ -\x5c\x38\xd0\x7f\x12\x3a\xed\xed\x72\xea\x44\x69\xd3\x15\x3d\xa0\ -\xb4\xfd\x10\x28\x35\xdc\x83\x30\x34\x51\xa8\x13\x20\xd7\xa0\x86\ -\x3d\xc9\x96\x68\xdd\x87\xe0\xb1\x79\xfd\xb4\xdd\x44\x65\x15\xec\ -\xa0\x73\x2f\xca\x84\x92\x1b\x1f\x92\x8f\xf5\x03\x4b\xd5\x25\x9d\ -\xe1\x85\xe7\x16\x40\xd7\x6c\x7b\xab\x45\x15\xc1\x68\x9f\x99\x20\ -\x4a\xce\x74\xde\x83\xf1\x2a\x02\x84\x34\x12\x21\xf9\x2c\x48\x48\ -\xe8\xf1\x1f\x73\x8e\x31\xad\x2c\xe0\x1f\x13\xb2\xf2\xaa\x60\xd3\ -\x7e\x05\x16\x9f\x34\x8c\xd6\xfd\xa5\x31\x5d\xd4\x9f\x11\x0e\x24\ -\x04\x01\x0f\x0e\x55\x61\x41\xc2\x9a\x95\x2b\x61\x47\x45\x25\xec\ -\xb2\x6e\x83\x7d\x33\xdf\x87\xfd\x77\x4f\x87\x03\x43\xa7\xc2\xfe\ -\x07\x9f\x87\xfd\x73\x17\x42\xe9\x82\xb5\x60\xeb\x3d\x41\x2e\xf8\ -\x29\xc2\xa8\xad\x5b\x57\x62\x4a\x45\x00\x0d\x9f\xc1\x56\x9b\xdc\ -\xe7\xf5\x72\x21\xde\xe1\x70\x40\xf1\xb2\x8d\x50\xda\x73\x94\x5f\ -\x58\x8e\x5e\x71\x23\x7c\x32\x79\x0e\xa4\x6d\xa8\x68\x35\x50\xb0\ -\x3c\x79\x27\x41\x30\x7b\xe7\xf0\x1e\x8c\x47\xa9\xcb\x09\xfd\xdd\ -\xea\x80\x2f\x83\x8e\x24\x55\xb0\xd4\x74\x10\x16\x64\xed\x83\x0c\ -\xd4\x62\x63\x19\xac\xc8\xab\xe4\x1e\x17\xaa\x68\x6c\xd8\x46\x84\ -\xa5\x88\x03\x4b\xa8\xce\x4c\xc7\x13\x04\xfe\x76\x07\x0e\x1b\x92\ -\xa3\x3e\xe3\xc1\xa8\x55\xae\xaa\x0a\x8a\x76\xee\x85\x5d\x05\xbb\ -\x60\xcf\xc1\x72\x28\x39\x79\x1c\x6c\xa7\x4f\x83\x6d\x43\x0e\xd8\ -\xee\x9a\x8e\xb5\xcc\x40\xb9\x19\x99\x00\x11\x31\xd2\x4c\x9a\x05\ -\xa5\xf9\xbb\x60\xaf\xc7\xe3\xb7\x0e\x2b\xae\xf3\x42\xe9\x2a\x09\ -\x6c\x37\x8f\x91\x53\x35\x0e\x2c\x34\xc4\xe5\xf9\xf4\x45\xd0\x19\ -\x23\x8a\xd8\x5a\x11\x45\xf2\x7c\x97\x80\x54\xce\xe7\x3d\x18\x6f\ -\x22\x48\xe8\xe7\xfd\x08\xc9\x37\x08\xc9\x5a\x8e\xe3\xf2\xf4\x63\ -\xce\x51\xf8\x36\x73\x37\x7c\xb5\x6a\x07\xd3\xd7\xa8\x25\xa6\xc8\ -\xc3\x42\x0b\x53\xf8\x6b\x3a\xf6\xa7\x60\x20\xa1\xbe\x97\x50\x20\ -\xa1\x63\x09\x12\xee\xc8\x62\x8a\x08\x18\xf1\xf6\xd8\xed\x50\xa2\ -\x02\x4e\x3d\xf7\xd4\xdf\xb2\xbb\x14\x6c\x73\x17\x83\xed\xe5\x8f\ -\xc1\xf6\xda\xe7\x60\x5b\xb4\x1e\x4a\xcb\xca\x61\xaf\xd3\x89\x30\ -\x34\x38\x8f\x22\x82\xe4\xdc\xf5\x9d\x3d\x03\xb6\x1f\x8c\x60\x4b\ -\xbd\xb7\xd1\x02\x7b\x6c\x71\x8a\x6e\x0f\xc1\x5d\x19\x45\xad\xda\ -\xf2\x85\x59\xd7\x4a\x4a\xbd\x56\xf2\x1e\x8c\x27\x51\xd1\x6e\x40\ -\x3d\x94\xe3\x80\xf9\x58\x67\x04\x0b\xc9\xaa\x82\x6a\x84\xe2\x20\ -\xcc\x5b\xbb\x0b\xbe\x5e\xbd\x93\x89\x60\x99\xbf\xae\x58\x4e\xc3\ -\x38\xcf\x09\x47\x2a\x2c\xc5\xce\xd0\x61\x39\x0f\x49\x53\x4e\x78\ -\x2c\xf4\xc6\x00\x3c\x27\x3d\xa7\xa9\x41\x93\xec\xee\x8f\xaf\xc9\ -\xed\xc5\xa7\xad\x22\xc8\xd9\x01\xa0\x0c\x55\x8a\xf0\x14\x23\x50\ -\x4d\xd5\x4c\xf5\x20\xa1\xe7\x13\x70\x27\x10\xb8\x6f\x56\x80\x2d\ -\x65\xb8\x3c\xf0\x12\x23\xcb\x91\x6b\x6e\x86\xa2\x2e\xff\x84\x67\ -\x3f\xdc\x00\xdd\x4c\x8e\x56\x9d\xb3\x22\x98\x5d\x05\x09\x82\xe4\ -\x2a\xe4\x3d\x18\x2f\x52\x21\x79\x04\x23\xc9\x02\x84\x24\x93\xe3\ -\xa8\x4d\x89\x40\xf9\xc1\x7a\x94\x81\xc2\xa2\x89\x02\xca\x77\x11\ -\x06\x85\x44\xb0\x98\x6c\x0e\x28\x41\x67\x09\x16\x16\x15\x12\x9e\ -\x03\xaa\x22\x87\x0f\x76\xbb\x3a\x26\x3c\xe7\x5e\xbf\x2d\x66\x2a\ -\x24\x81\xa3\x53\x29\x82\x54\x4c\xa9\x5a\x30\x91\xc4\xf7\xb9\x98\ -\xa2\xb1\x26\xe9\xcf\x96\x81\x2d\x71\x18\x94\x5f\xd1\x03\x76\xde\ -\x34\x0a\xfe\x35\x37\x8b\x2d\xa0\xd7\x9a\x2d\x5e\x24\xc1\xec\x39\ -\x96\xa0\x33\x7b\x6c\xbc\x07\xe3\x41\x04\x49\x2a\x6a\x34\x42\xb2\ -\x10\xd3\xad\x75\x1c\x07\x0d\x24\x82\xe5\x7b\xac\x4b\xe6\xad\xdd\ -\xcd\x40\xf9\x66\xcd\x2e\x58\x62\x3c\x88\xc5\x78\x64\x52\x2f\x5f\ -\xad\x2e\xa8\x82\x9c\xb2\xe0\x60\x09\x04\x09\x39\x61\xa8\x90\xd0\ -\x39\xfd\x41\x22\xf7\xe2\x07\x07\x09\x45\x1b\xea\x40\xf5\x77\x2e\ -\xbf\xe9\x20\xc2\x52\xe6\xf1\xc2\x91\xff\x2c\x80\x82\x11\x33\x21\ -\x1d\x23\x49\x67\xb3\xab\xd5\x21\x21\x61\x5d\x6b\x4f\xd0\x49\x9e\ -\x03\xbc\x07\x63\x5d\x82\xc5\x0b\xdd\xf3\x4e\xc0\xc4\x3c\x17\x42\ -\x52\x15\x52\x24\xe1\x69\xa9\xf9\x30\x2b\xe4\x97\x48\x87\x22\x56\ -\x9f\xf0\xb4\x0a\x61\xb1\x1e\x74\xc0\x01\x9e\xf3\x28\x92\x21\xf1\ -\xdf\x8b\x4f\xf5\x45\x48\x90\xb8\x02\x45\x12\x82\x24\xb8\x79\x34\ -\xfe\x20\x61\xcd\xde\x47\x69\xd3\x22\xff\x35\x13\xdd\x28\xca\xb1\ -\xb8\xcf\x3c\x64\x87\xc9\x59\x36\xe8\x64\x74\xb4\x09\x24\x8a\x6a\ -\x30\xf5\xf2\x94\x73\x1e\x88\x6d\x61\xa1\x27\x6c\xac\x86\xee\xdf\ -\xe4\xc3\x7f\xd6\x1f\x80\xcd\xdb\x1c\x6c\x4e\x09\xcf\x31\x83\x15\ -\x45\x16\x55\xbc\xc7\x23\xaa\xc2\x6a\x30\x23\x2c\x87\x3c\x7c\x27\ -\xa2\x3b\x71\x43\x07\x54\x15\x16\x24\x14\x49\xf0\x9c\x4d\x43\x22\ -\x0f\x9f\x09\x66\xe9\xa3\xf3\x90\xf0\xce\x23\x43\x42\xd7\xc7\x7b\ -\xae\x2a\x06\x89\xdb\x0d\x99\x15\x6e\xf8\xe7\x4e\x0f\x5b\xce\x08\ -\x33\x1f\xfe\x77\xdd\x0a\x12\xcd\xae\xba\x04\x0a\x2b\xbc\x07\x63\ -\x56\xb9\xc7\x41\x44\x48\x52\x66\xaf\x84\xf6\xf7\x3e\x0b\xc3\x9e\ -\xfe\x2f\xcc\xdb\x64\x83\xf5\x08\x0b\xd7\x29\xa3\x54\x2b\x10\x96\ -\xbc\x43\x7c\x58\xe8\x6e\xcc\x77\xc2\x70\x21\xa9\x81\x22\x84\xa1\ -\xa9\x73\xca\x90\x84\x12\x49\x1a\x9f\x87\x44\x2d\x68\xc1\x42\xb2\ -\x8e\x20\xd9\xae\x74\x0e\x4b\x9c\xef\xb9\x35\x65\xf1\x00\x81\x52\ -\xcb\x7d\x30\x16\x45\x90\x6c\xaa\x81\x94\xb7\x7e\x84\xc4\xbb\x9f\ -\x84\x0e\xb7\x3f\x04\xd7\xf5\x19\x0b\x43\x66\x7e\x02\xdf\x6e\x2c\ -\x45\x58\xec\x5c\xa7\x8c\x56\xfd\x40\xb0\x1c\x71\x36\x82\x85\x9c\ -\xb6\x61\xea\x45\x4e\x28\x6f\x0d\x11\x06\x24\x4d\x44\x12\xfa\x3b\ -\x41\x69\xc3\xb4\x8c\xf7\x7c\x5f\x45\x02\x12\x92\x0a\xc9\x03\x08\ -\x09\x7d\xa7\x6d\x0e\x89\xa2\xf8\x01\x85\x20\xa1\x91\xa5\xb3\x96\ -\x43\xe2\xb0\xa9\x90\xd8\x7b\x34\x24\xf6\x1d\xcb\x7e\x12\x2c\x23\ -\x5e\xfe\x16\x16\x98\xcb\x61\xdd\xd6\x18\x83\x65\x4b\x35\xe4\x1c\ -\x76\xc2\xe1\x26\x60\xa1\xbe\x93\x60\x9d\xd0\x57\xc1\x42\x12\xb9\ -\x48\xe2\x7f\x0a\x34\x45\x92\x63\xf8\x1e\x69\xd7\xe4\xfb\xa3\x0c\ -\x12\x52\x7c\xa4\x5e\xb4\x01\xcc\x66\x8c\x24\x6f\xfe\x00\x89\x83\ -\xa7\x40\xe2\xed\x0f\xcb\x90\x28\xea\xd0\x6b\x14\xb4\xc7\xbf\xff\ -\x7d\xd6\xf7\xb0\x40\x3a\x82\xb0\xc8\xb3\x17\x63\x42\x79\x55\xb0\ -\x9c\xc1\xd2\x38\x0d\x93\x9d\xbd\x36\xa0\x13\x36\x56\x64\x21\xa1\ -\x99\x91\xcd\x85\x84\x76\x4b\x5e\x5e\xee\x86\x91\x5b\xa9\x39\x56\ -\x16\xf7\xbb\x6e\x0b\xb1\xd4\x4b\xf2\x1c\xe5\x3e\x18\x2b\xb2\xd6\ -\xc9\x35\x09\x41\x32\xe4\xf1\x46\x90\xa8\x6a\x7f\xfb\x23\xd0\x7e\ -\xe0\x64\xb8\xff\xed\xa5\xb0\xd0\x72\x14\x32\xb7\xc4\x12\x2c\x95\ -\xf0\xf5\x76\x17\xe4\x1c\xf3\x34\x8a\x2c\xa1\xa4\x5a\x24\x39\x12\ -\x45\x0e\x12\x5a\x88\x82\x77\x1e\x92\x9a\x0e\xf2\x9e\xab\x8a\xd6\ -\x6d\x3e\x82\x90\x2c\x3c\xe2\x86\x41\x85\x6e\xb6\x43\x00\xd5\x25\ -\xdc\xef\xba\xcd\xe4\x3a\x9e\x20\x98\x5c\x45\xfc\x07\x63\x44\x16\ -\x2f\xa4\x7c\xb4\x09\x12\x87\x62\xba\x75\x1b\x1f\x12\x55\xed\x11\ -\xa2\x0e\x43\x1f\x87\x87\x3e\x58\x09\x8b\x72\x8e\x21\x2c\xf2\x94\ -\xdf\x96\x50\xbd\x56\xb2\x66\xb4\x94\xad\xc8\xaf\x84\x05\x5b\x9c\ -\xb0\xac\xe8\x38\xac\x2e\x3e\x0e\x96\xa3\xde\x46\xb0\x04\x2b\x72\ -\x7e\xba\xfb\xf3\x9c\x9a\xd4\x12\x90\x94\x3a\xf9\xcf\x27\xd1\x36\ -\x19\x14\x4d\xbe\x3b\xec\x86\x01\x08\x49\x72\x54\x42\x42\x29\xa0\ -\xa7\x3c\x41\x90\x1c\xb1\xdb\x33\x8f\x29\x97\xb0\x74\x2f\x24\x8d\ -\x7d\x2b\x20\x24\xaa\xda\xe3\x71\x49\x77\x4d\x83\x31\xff\x5d\x07\ -\x8b\xf1\x4e\xbd\xb6\x30\xf2\xb0\x10\x1c\xcb\x2d\xe5\xac\xdf\x65\ -\xb1\xf1\x20\x1b\x2f\x16\xea\xa8\x63\x1a\xac\xf9\x03\x2a\x03\x21\ -\x59\xbe\xeb\x38\x64\xef\x3e\x0e\x9b\x50\xab\xf6\x1c\x87\xfc\x2a\ -\x4f\x93\x4d\xc7\x4d\x89\x3a\x09\x09\x92\xa6\x87\xba\x04\x0f\x09\ -\xad\xd2\x12\x08\x12\xaa\x99\x02\x41\x42\xfa\x06\x21\xe9\x5f\xe0\ -\x86\x94\x28\x85\x84\x24\x48\xae\x5d\x08\x8a\xd3\xc2\x7b\x30\x26\ -\x54\x70\x1a\x74\x1f\x6e\x80\xc4\x3b\x26\x9c\x2f\xde\x83\xd0\x0d\ -\xb7\x3e\x04\x29\x23\x66\xc0\xb8\x4f\x36\xc0\xe2\xdc\xc8\xc3\xb2\ -\x22\xb7\x02\xbe\x5b\x5f\x0c\xdf\xac\x29\x62\xa2\xdf\x7f\xb0\x96\ -\x73\x8f\xe5\x89\x20\x59\x86\xb5\xc9\x77\xdb\x9c\xf0\x83\x0f\x24\ -\xaa\x32\xf7\xd5\x41\x6e\x65\xe3\x34\xac\x29\x11\x24\xbb\x2b\x02\ -\x41\x42\x8e\x1d\x5c\x24\x21\x10\x78\xe7\x21\xd1\x63\x6c\x9d\x62\ -\xce\x73\x55\xa9\x90\x7c\x71\xd0\x0d\x7d\xf3\xe5\x59\xa6\xd1\x0a\ -\x09\x49\x34\x3b\xa5\x04\x2c\x9a\x16\xf3\x1e\x8c\x7a\x61\x81\x45\ -\xc3\xac\x53\x5e\xca\x80\xc4\x5b\x1e\xe4\x02\xe1\x4f\x04\x8b\x6e\ -\xc4\x53\x30\xe1\xd3\x0d\xb0\x24\x82\xb0\x50\x34\xa1\x81\x94\xea\ -\x20\x4a\x75\x7c\xd8\xc2\x4d\x25\x41\xf5\xe8\x13\x24\x4b\x08\x92\ -\xad\x2e\xf8\x91\x03\x09\x13\xfe\x7d\x2d\xc2\x52\x50\x8d\x91\x05\ -\x1d\x8e\xe7\x8c\xaa\xc8\xf9\xfd\xdd\xfd\x09\x92\x60\x1b\x03\xe4\ -\x74\xcb\xdf\xc2\x79\x81\x37\x52\x55\x21\xf9\xea\x90\x1b\x6e\xcf\ -\x73\x43\x92\x29\xba\x21\x91\xe5\x5c\x95\x20\x58\xbc\x1f\xf2\x1f\ -\x8c\x72\x11\x28\xb4\x84\xcd\xcc\x2f\x10\x94\x07\xb8\x30\x04\x12\ -\xc1\x22\x8c\x7c\x0a\x26\x7d\x26\xc3\xb2\x26\x02\xb0\xac\xca\x47\ -\x50\x30\xe5\xfa\xc6\x07\x14\xd2\xfc\xf5\x7b\x03\x82\x42\x90\x7c\ -\x8f\x22\x48\x56\x36\x05\x89\x8f\xd6\x1d\xa8\x83\x2d\x35\x4d\xc3\ -\x22\xd7\x24\x81\x21\x69\x6a\xb1\x0b\x5f\x05\x86\x84\xb3\x4e\x71\ -\x03\xf9\x42\xd2\x8b\x20\x89\xa2\xe6\x5f\x7f\x12\x24\xf7\xfc\x04\ -\xd1\xec\x9a\xc5\x7b\x30\x26\x84\x1f\x74\xf2\xbf\xe6\x43\x62\xda\ -\x3f\xb9\x20\x04\xa3\x76\x04\xcb\x88\x27\x61\xda\xb7\x16\x58\x5e\ -\x50\x03\x6b\x9a\x51\x78\xab\xa2\xd4\x6b\x3e\xa6\x5b\x5f\x29\xd1\ -\x84\xb4\x08\x23\x0a\xef\x58\x55\x04\xc9\x42\x84\x6c\xc1\x36\x17\ -\xac\x46\x48\x36\x73\xc0\xe0\x29\xab\xa4\x0e\xb6\xd6\xf2\x61\xa1\ -\x14\xa8\xa9\x39\x2a\x72\x1d\x11\x1c\x24\x74\x9e\x40\x91\x24\x10\ -\x24\x74\x7d\x34\xd8\xf3\x73\x4c\xb7\x7a\x63\xba\x15\x2b\x90\x90\ -\x74\x66\xef\xdc\x04\xbd\xc9\x39\x86\xf7\x60\x4c\x28\xff\x24\xa4\ -\xbc\xb9\x1c\x12\xd1\xd9\x79\x10\x04\xab\x76\xb7\x3e\x08\x1d\xef\ -\x7b\x0e\x66\x2c\xc8\x85\x1f\x22\x00\x8b\x5a\xcc\x2f\xdc\x74\x00\ -\x16\x6c\xd8\xc7\xd2\x2e\x56\xd0\x73\x8e\x25\xd1\xc2\x16\x0b\xf2\ -\x6b\x20\x63\x9b\x1b\xd6\xa2\xf3\x07\x0b\x89\xaa\x8d\x04\x0b\x27\ -\xb2\x34\x55\x4f\x9c\xab\x23\x82\x84\xc4\x5f\x4d\x12\x0c\x24\xd4\ -\x47\x52\x8a\x3f\x3f\x29\x73\xc3\x6d\x31\x06\x09\x93\xe4\x7e\x32\ -\x41\xb4\xba\xfb\x71\x1f\x8c\x05\xe5\x9d\x00\xe1\xdb\x2d\x90\xf4\ -\x8f\xe7\x9b\xec\x3f\x09\x56\xd7\x63\xfa\xd6\x09\x61\x79\x26\x83\ -\x60\xa9\x86\xd5\x11\x80\x85\x22\xcb\x0f\x08\x88\xbf\x94\x8b\x20\ -\xf9\x0e\xe1\x5c\xb8\xdd\x03\xeb\xd0\xe9\x43\x85\x44\x15\x45\x16\ -\x4a\xc3\xc8\x29\x7d\x9d\xb4\xa1\xa3\x9f\x83\xc4\xe7\x98\xa6\x44\ -\x2d\x57\xcd\x85\x84\xfa\x48\x68\xef\xfd\x0f\x4a\x31\xdd\x8a\x45\ -\x48\x50\x82\xc9\x7e\x6f\x82\xb8\xd9\xd1\x3e\x66\x37\x10\xc2\x3a\ -\x45\x6f\x72\xc9\x05\x3d\x81\x12\x42\xcb\x17\x4f\xd7\xdf\xf2\x20\ -\x74\xfe\xc7\xb3\xf0\xc2\xe2\x42\xf8\xb1\xb0\xb6\xd9\xb0\xc8\x6a\ -\xfa\x1c\x04\xc9\x7c\x8c\x24\x8b\x76\x78\x60\x3d\x3a\x7b\xb8\x90\ -\x90\x36\xa2\x36\x20\x2c\x05\x9c\xc8\x42\x29\x16\x39\x7c\x6b\x43\ -\x42\xe3\xb6\x76\xda\xdd\x30\xeb\x80\x1b\x6e\xce\x95\xfb\x49\xb8\ -\xdf\x63\x54\x0b\x6b\xe1\xcd\x8e\x6e\x09\xc9\x19\x70\x09\xfe\xe7\ -\x38\xff\xa0\x18\x10\x8d\xf1\x5a\x59\x06\x49\x53\xfe\x03\x89\x7d\ -\xc6\xa0\xc3\x93\xf8\x20\x04\xa3\xeb\xd3\x1e\x80\xee\x8f\xbc\x0c\ -\x2f\x2f\xdf\x0e\x2b\xb0\xb8\x8f\x0c\x2c\x8d\x45\x90\xcc\xc3\x48\ -\xb2\x18\x21\xc9\x42\x27\x6f\x0e\x24\xbe\x22\x58\x68\xb1\x0a\x2a\ -\x9a\x7d\x9d\x96\x00\x89\x1c\x24\x81\x0b\x77\x82\x84\xae\xe3\x75\ -\x84\xe4\x6f\x08\x09\xf5\x93\x70\xbf\xbf\x28\x17\x6d\x87\xd2\x61\ -\x69\xe5\x95\x09\xb4\x97\xb6\x60\x76\xc6\xf6\x2c\x47\x15\x96\x89\ -\xef\x60\xbd\x12\x7a\x53\x71\x43\xfd\xf5\xb6\x87\xa1\xfb\xa8\x57\ -\xe0\x35\x84\x65\x65\xc4\x22\xcb\x79\xd1\xea\x2f\x04\xc9\x52\x84\ -\x64\xe3\x1e\xbe\xc3\x37\x47\x46\x9b\x17\x76\xa2\x93\x36\xd5\x1a\ -\xe6\x4f\x32\x24\xfc\xe1\x2d\xa4\x26\x57\xbc\xf7\x11\x41\x42\x8b\ -\x65\xbc\xbc\xdf\x0d\x3d\x72\xe4\x61\x29\xdc\xef\x2d\x06\x24\x98\ -\x5d\x87\xd9\xda\xc3\xb4\x52\xb7\x20\xb9\x32\x58\x1a\xc3\x39\x30\ -\x66\x94\x77\x12\xc4\x25\xc5\x90\xfc\xf0\xab\x11\x83\xe5\x46\x84\ -\xe5\x8d\xe5\x3b\x18\x2c\x6c\x28\x4a\x03\x87\x0f\x47\x04\xc9\x37\ -\x05\xb5\xb0\x04\x21\x89\x54\x14\x69\x28\x4a\xc3\xb2\x11\x16\x5a\ -\x8d\x32\x14\x58\x08\x12\x6a\x32\xe6\x01\x42\x0a\x05\x92\x57\x10\ -\x92\x6e\x56\x4c\xb7\x4c\x9c\xef\x2a\x66\x44\xdb\x3e\x38\xd6\x9f\ -\xdb\xf6\x01\x41\x79\x3d\xe6\x41\x21\xe5\x62\x71\xff\x75\x3e\x16\ -\xf7\xcf\x35\xbb\xb8\x27\x11\x2c\x37\x8d\x7a\x15\x66\xff\x80\xb0\ -\x20\x28\xcd\x85\x85\x20\xf9\x9a\x20\xd9\xe9\x6d\x31\x48\x7c\x65\ -\x2c\xf3\xc2\x6e\x27\xa6\x61\x1c\x87\x6e\x28\x15\x92\xa6\x7a\xef\ -\x83\x86\x04\x23\xd9\xab\x2a\x24\x31\x1c\x49\x98\xa8\xaf\xce\xec\ -\xf9\x42\xd9\xf6\x01\x2e\x12\x25\xe7\xb8\xb8\x00\x45\x79\x0f\xba\ -\xb9\x9b\x21\x71\xf8\x53\x11\x83\xe5\x6f\x18\x59\xe6\xae\xdf\x07\ -\xab\xb7\x60\x64\x69\xe0\xfc\xc1\x8a\x20\xf9\xaa\x15\x21\x51\x65\ -\x3e\xe4\x65\xce\xeb\x0f\x16\x1a\xe3\x45\xe9\x96\x7f\x48\xfc\x0f\ -\x6f\x51\x0b\xf7\x17\xf7\xb9\xa1\x3b\xa6\x5b\x31\x0f\x09\x89\xfc\ -\xc9\xe2\x99\x44\x8c\xb0\xec\xcb\xb0\xd9\x99\x1c\x37\x7b\x38\x5a\ -\xbd\x20\x9a\x9c\xf2\x2c\x47\x9a\x9b\xd2\x7b\x14\x17\x80\x50\x74\ -\xdd\xad\x0f\xc3\xed\x93\xff\x0d\x9f\x6e\x2a\x0d\x0b\x16\x35\x92\ -\x2c\xde\xd1\xba\x90\x90\x36\x63\x0d\x44\xb0\xb0\x02\xbf\x81\x73\ -\x53\xcf\x3d\x41\xe2\x2f\xdd\xa2\x09\x59\x81\xc6\x80\x1d\x45\x48\ -\xb6\xd5\xba\xe1\xd9\x62\x37\x74\x8d\x87\x48\xa2\x0a\x7d\x29\xd5\ -\x68\xef\xcc\x20\x21\xa3\x96\x2f\xc1\xe2\x71\x72\x0f\x8e\x45\xe5\ -\xd4\xb1\xd9\x8e\xc9\x33\x3e\x6b\x76\x93\xb1\xaa\xeb\x7a\x8d\x82\ -\xde\x53\xde\x85\x2f\x36\xd9\x60\x4d\x08\x73\x59\xce\x45\x92\x10\ -\x20\xd9\xbc\xe7\x04\x6c\x2e\x3e\xc9\x7e\xf2\x1e\x0f\x55\xbe\xb0\ -\x1c\xf2\x71\x70\x4a\xa5\xfc\xb5\x6e\x11\x24\x34\xc9\xcb\x5f\xef\ -\x3d\xcd\x4a\x2c\xac\x71\xc3\xf4\x3d\x6e\xb6\xe6\x56\xac\xb6\x6e\ -\xf1\x44\xbb\x02\xf7\x90\x5b\xbc\x14\x4b\x87\x8b\x45\x8b\x77\x59\ -\x5c\xa4\x5f\xaa\xa8\xb8\x5f\x75\x10\x92\x47\xbf\x0e\x89\x69\xe1\ -\x8d\x05\xab\xa7\x3e\x63\xe0\xba\xdb\x47\x41\xff\x69\x1f\xc1\xbc\ -\xec\x32\x58\x5d\x18\xb8\x5e\x09\x07\x12\x12\x8d\x39\xa3\xce\x4a\ -\xfa\x99\x8d\xc0\xf0\x8e\x09\x55\x04\x8b\x74\x10\x61\xf1\xa9\x59\ -\x28\x52\xd0\x0c\x49\xde\x30\x97\x3d\x95\xb4\x69\x51\xd3\x90\xa8\ -\xb3\x12\x73\x10\x92\xa9\xbb\xdd\x90\x4a\x0b\xd3\xc5\x11\x24\xc4\ -\x82\x68\x71\xe5\x9d\xdb\x96\x8e\x19\xfe\x47\x6f\x72\x3e\x15\xb3\ -\x1d\x8f\x4d\x29\xff\x14\x08\x9f\x4a\x58\xaf\xcc\x80\xc4\x5e\x8f\ -\xf0\x01\x08\x45\x08\xcb\xf5\x7d\xc6\xc2\x1d\xd3\x3f\x82\xef\x2d\ -\xe5\x7e\x23\xcb\x9a\xfc\xca\xb0\x6a\x12\x6a\x30\xa0\x61\xf9\xb4\ -\xde\x31\xfd\xa4\x15\x29\x23\x15\x59\x36\x21\x2c\x56\x8c\x2c\xb4\ -\x5e\x30\x39\x3a\x39\x3c\xc1\x42\x33\x1e\x7d\x61\x51\x17\xb9\xf3\ -\x07\x09\xf5\xb8\x5b\xab\xdd\x30\x05\x21\xe9\x18\x6f\x90\x90\x08\ -\x14\xb3\x63\x4e\x42\x7a\xfa\xc5\x0a\x25\xb2\xe9\x8d\xb5\x06\x43\ -\xce\x09\xfe\x93\x62\x55\x2c\x42\x7a\x20\x79\xe6\xe7\x58\xd8\x47\ -\x00\x14\x52\x9f\xd1\x70\x5d\xef\xb1\x30\xe4\xf9\x2f\x60\x19\x3a\ -\x31\x0f\x16\x19\x12\x3b\x83\x84\xeb\xb0\x7e\x94\xb1\x71\xbf\xb2\ -\x7c\xab\x3c\x98\x72\x1e\x02\x93\xb9\xcd\xc9\x3d\x36\x1c\x65\x23\ -\x2c\x5b\xca\x79\xb0\xd0\xbc\xf7\xc0\x4b\x13\xa9\x90\x48\x55\x6e\ -\x98\x54\x14\xa7\x90\x90\x68\x11\x70\xa3\xbd\x0f\xa2\xe1\x13\x51\ -\xd0\x92\x77\xc0\x25\x98\x7e\xc5\x4f\x9d\xa2\x2a\xff\x34\x08\x5f\ -\xe5\x42\xd2\x3d\xcf\x44\x26\xaa\x90\x30\xb2\xfc\xb5\xdf\x78\x18\ -\xf6\xfc\x97\xb0\x9c\x52\x24\x9f\x29\xc5\x04\xc9\xd7\x85\x04\x49\ -\x1d\xd7\x51\x03\x69\x7e\xe6\x9e\x7a\xc3\xf3\x69\x04\x32\x9d\x97\ -\x77\x6c\xb8\xca\xde\x8b\xb0\x1c\xf5\x34\x82\x85\x7a\xee\x83\x85\ -\x64\x02\x42\x42\x6b\x3a\xc7\x25\x24\x24\xac\x4f\xc4\x35\x67\xaf\ -\x50\xf0\xf0\xb1\x8c\x8c\x9f\x08\x66\xf7\xf2\xb8\xaa\x53\x48\xca\ -\xfb\x61\x85\x3d\x45\x95\xfe\x13\x20\xb1\xdf\x38\x3e\x00\xa1\xa8\ -\xf7\x68\x84\x65\x02\x83\xe5\x07\x65\x2e\x4b\x73\x21\x21\xd1\xa2\ -\xe0\x5f\xae\xdc\x7e\x6e\x78\x3e\xc1\x42\x51\x8b\x77\x6c\x73\xb4\ -\xb9\xb8\x0e\x0a\xcb\x3d\x70\xd8\xcb\x87\xa2\xa1\x54\x48\xcc\x98\ -\x6e\x31\x48\xe2\x35\x92\x90\x58\xda\xe5\x2a\x4c\xc7\xda\x5d\xa1\ -\xc3\xc7\x30\x17\xc3\x03\x26\xc6\xe5\xc6\xa7\x58\xab\xe8\xbe\xc4\ -\xa8\x72\xef\xb3\x2c\x75\x4a\xbc\x63\x62\xc4\x60\xb9\x1e\x61\xb9\ -\x0b\x61\xa1\x11\xc2\xdf\x6e\x75\x87\x95\x6e\xf9\x2a\xab\xc8\x0b\ -\xcb\xad\xe5\xb0\x10\x53\x30\xb9\x46\x39\x0a\x1b\x77\x35\xef\x9c\ -\x3c\x51\xef\xfd\x26\x84\x65\x0b\xad\xec\x12\x00\x96\x7a\x90\xec\ -\x8a\x73\x48\x50\x06\x5a\xe3\x58\x72\x3e\x49\x8d\x5c\x0a\x1d\xf5\ -\x8d\xfa\x53\x52\x0b\xce\x70\x9f\x1c\xd3\xa2\xbe\x15\xa3\x03\x92\ -\x69\xe0\xe4\xad\x0f\xc8\x90\x44\x08\x96\x0e\x04\x4b\xff\x89\x30\ -\x74\xc6\x7f\x61\xd9\x36\x37\x64\x17\x9f\xe2\x3a\x66\x28\xda\xb8\ -\xab\x0e\xd6\x6d\x77\x42\xe6\x56\x3b\xfb\x9d\x77\x4c\x24\x44\xb0\ -\x6c\xdc\x8b\xb0\x54\x34\x0d\x8b\x0a\x09\x15\xee\x13\xe3\x3d\x92\ -\x28\x4a\xc5\x1b\x6b\xbd\xfe\x93\x86\xd6\xaf\xf8\xec\xa5\x7a\xab\ -\x67\x5b\xdc\xa5\x5f\xa4\x82\xd3\x90\xf2\xc2\x77\x18\x51\xd0\xc1\ -\x69\x94\x31\x41\x82\x0e\xde\x6c\x58\xb0\x56\x49\xbe\xf3\x51\xb8\ -\x01\x75\xff\x9b\x4b\x98\x63\x67\x47\xa0\x95\x8a\xf5\xa5\x44\xaa\ -\xb5\xcb\x8f\x08\x96\x2c\x9a\x7f\x8f\xb0\x1c\xe1\xc0\x42\x9d\x89\ -\x46\xac\x49\x68\x89\xd3\x8e\xf8\x39\xc6\x3b\x24\xcc\xf7\x2d\xee\ -\x7d\x5d\x2d\x55\x57\x29\x58\x70\x0c\xe0\x62\xbd\xe4\x78\x31\x2e\ -\xd3\xaf\xbc\x93\xa0\xfb\xc4\x04\x49\x23\x9e\x3e\xdf\x5b\xaf\xc2\ -\xd2\x37\x4c\x58\x10\x92\x94\x81\x93\x41\x37\xf8\x71\xd0\x0d\x9a\ -\x02\x89\xc3\xa6\xc3\xa8\xb9\xeb\xd1\x01\x4f\x44\x04\x96\xd6\x12\ -\xc1\xb2\x1e\x61\xc9\xf7\x81\x85\x22\x09\xf5\x93\xd0\x3a\xc0\x23\ -\x31\x52\xd2\x5e\x33\xd1\xb4\xc4\x69\x8b\x89\xb2\x0f\xc9\xf9\x59\ -\x3a\xb2\xa0\x50\xc1\x31\x80\x8b\x52\xb2\x6b\xf4\xa9\x5b\x80\x7f\ -\x92\x58\x16\xad\x01\xb6\x64\x2f\x24\x3d\xf2\x6a\xfd\x31\x60\x04\ -\xcb\x9d\x93\x42\x8e\x2c\x49\xbe\x90\x28\xa2\xff\xa7\xdc\xf3\x0c\ -\x8c\xf9\x6f\xec\xc1\x42\x73\x62\xd6\x61\x1a\x96\x8b\x35\xcb\x51\ -\x84\x85\x40\x59\x71\xd4\x0d\x77\x61\xdd\x15\xad\x0b\xd3\xb5\x84\ -\xa8\xf4\xd0\x65\xdb\x7b\xd7\xef\x68\xe4\xd8\x9f\xb3\x4a\x2e\x13\ -\x2d\x1e\x29\xee\xd2\x2f\x56\xa7\x38\xe5\x3a\xe5\x36\xdf\x39\xf6\ -\x98\x86\xf5\x47\x48\x06\x04\x0f\x0b\x41\x92\x3c\xa0\x3e\x24\xe7\ -\x60\x19\xf0\x18\xe8\xee\x99\x09\x13\xbe\x34\xc1\xa6\x56\x4a\x9f\ -\x22\x25\x8a\x2c\xeb\x68\xcd\x30\x84\x65\x35\x46\x92\x21\x5b\xa2\ -\x7f\xcd\xad\x88\x8a\xa5\x5d\x9e\x6d\xc9\x59\xf0\x73\x05\x07\x3f\ -\x96\x91\xf1\x13\x5d\xb6\xf3\x39\x43\x6e\x9c\x0c\x92\xf4\x55\xe1\ -\x19\x48\x79\xea\x63\xce\x7c\x15\xa5\x66\x19\xf8\x18\x42\x33\xbe\ -\xc1\x63\xf5\xe5\x0f\x12\x55\x04\x8b\xf8\xf7\xe7\x60\xf2\xfc\x5c\ -\xb9\xd6\x68\xe0\x90\xd1\x2a\x5a\x1e\x89\x60\x79\x6f\xa7\x17\xee\ -\x28\xa4\x49\x4b\x17\x10\x24\x28\x36\x30\x18\x4b\x0f\x2a\x41\x14\ -\x1a\xfc\x18\x86\x1c\x03\xa6\x5f\x58\xd0\x9c\xe5\x9d\x2c\xa6\xb5\ -\x05\x41\x79\xf6\x2b\x7e\x2f\x3d\x2b\xf0\x11\x92\x81\x8f\x36\x19\ -\x59\x18\x24\x0d\xd2\xad\xa6\x94\x3c\xe0\x51\x30\xdc\x97\x0e\xd3\ -\xbe\xdf\xca\xc6\x6b\xb5\x34\x2c\xcd\x2d\xfe\xd5\xeb\x7b\x7f\x7b\ -\x1d\xa4\x59\x3d\x31\xb9\x08\x44\xb3\x65\x71\x9f\x49\x35\xbb\xc4\ -\x04\x68\xd0\x1b\xdf\x94\x75\x5f\x50\x76\xb9\x4e\x72\x9b\x0d\xf1\ -\x36\xf6\x6b\xeb\x59\x48\xa1\xe1\x2c\xf5\x52\x2f\x1f\x11\x2c\x4d\ -\xa5\x61\x18\x69\x82\x85\x44\x15\xb5\x86\x75\xfc\xe7\x0b\xf0\xd4\ -\x92\x6d\x2d\x0c\x4b\x1d\x1b\xfa\x4f\x03\x35\xe9\xf7\x50\x81\x51\ -\xaf\xeb\xed\x6d\x75\xd0\x13\x21\xa1\x74\x8b\xfb\xf9\xc5\xb3\xa8\ -\x93\x51\x72\x6e\xed\x2e\x95\x5d\xae\x60\x10\x84\xd1\x68\x62\xc9\ -\x33\x30\xae\xfa\x54\x2c\x28\x0c\xad\xc9\xd3\xe6\x20\x28\xfe\xa6\ -\x0a\x2b\x69\x18\x46\x04\x16\x61\x18\x3c\x8d\x0b\xf7\x60\x45\xb0\ -\x74\x7a\xe0\x45\x78\x7a\xe9\x76\x84\x25\xf2\xf5\x0a\x75\x50\x2e\ -\xce\x2e\x83\x6f\xd7\xed\x61\xfb\xdf\x2f\xda\x5c\x0a\xeb\x76\xb8\ -\x83\x86\x45\x4d\xb7\xde\x42\x48\x6e\xc2\xcf\x28\x6e\xe6\x92\x84\ -\x28\x43\xfe\x69\x4c\xbb\xec\x93\x12\x32\xe0\x27\x0a\x05\xc1\x19\ -\xb5\x23\x8b\x16\x77\x05\xef\xa4\x31\x29\x9a\xa3\xb2\xfa\x30\x24\ -\x8d\x9b\x1d\xdc\xcc\x47\x06\x0b\x46\x96\x3b\x27\x85\x0d\x89\x2a\ -\x82\xa5\xf3\x03\x2f\xc0\xbf\x56\x16\x47\x1c\x96\xd5\x85\x35\xf0\ -\xf5\xaa\xf3\x2b\x52\xd2\x90\x97\xef\xb3\x6d\x2c\x82\xf1\x8e\xf7\ -\x15\x41\x42\xad\x5d\x6f\x22\x24\x3d\x2e\x60\x48\x48\x58\x8b\x55\ -\x74\xc9\x3a\xf6\x3b\xc5\xfd\x83\xb7\x4e\x73\xe7\xfe\x8f\x98\x6d\ -\x7f\xdb\x90\x77\x92\x7b\xe2\x98\x12\xb5\x66\xe0\xfb\x48\x79\x7f\ -\x1d\x24\x0e\x9b\x16\x78\x32\x17\x0d\x73\x41\x40\x92\x86\x4d\x87\ -\x14\x14\xcf\xf9\x43\x15\xd5\x2c\xdd\x1e\x7a\x19\x5e\xdb\x60\x03\ -\x63\x84\xe6\x98\x90\x32\xb7\x39\xd8\xd8\x30\xdf\x81\x94\x34\x44\ -\x3f\x50\x44\x51\x23\xc9\x6b\x5b\x35\x48\x0c\xb9\x27\x40\x9f\x6d\ -\x9f\x3d\x1c\x32\x42\x8b\x26\xcc\xb0\xa8\x17\x2d\x75\xd7\x09\x16\ -\x6f\x1d\x4b\x5b\x38\x2f\x10\x33\xa2\x68\xb2\xf2\x20\x24\x4d\xfc\ -\x37\x24\xf6\x0a\x30\x35\x98\x20\x1a\x34\x19\x92\xee\x7e\x0a\x74\ -\x43\x09\x92\x27\x40\x77\xd7\x93\xa0\x1b\x82\x3f\x39\x00\x84\x22\ -\x8a\x2c\x37\x8e\x7a\x15\x66\x6d\x28\x8b\x18\x2c\x59\x45\x1e\x98\ -\xb7\x76\x77\xbd\x88\xb2\x70\xe3\x01\xbf\xa0\xa8\x91\xe4\x15\x84\ -\xe4\x46\xfc\x6e\xe3\x69\x56\x62\xe8\xc2\x9b\x28\xa6\xe4\xd4\x80\ -\x15\xb0\xef\xa4\x29\x1b\x8e\xf9\x9a\x60\x74\xbf\x1b\xd3\x51\x85\ -\x20\xcf\x3f\x05\x29\x6f\x2c\x93\xc7\x77\x51\xcd\xc1\x03\x84\xa4\ -\x42\x32\x7c\x06\xe8\x7c\x23\xc9\x90\xa9\x08\x0b\x82\x43\xd0\xf8\ -\x38\x7e\x38\x4a\x42\x58\x7a\x3c\xf2\x2a\xbc\xcd\x60\x89\x4c\x1a\ -\xb6\x76\xab\x1d\xeb\x14\x1b\xd6\x28\x7b\xd8\x60\xca\xb5\x5b\xec\ -\xdc\xe3\x48\x2a\x24\x2f\x22\x24\xdd\x2f\x78\x48\xe4\x26\x61\x51\ -\x72\x2d\xe9\x94\x77\xf8\x67\x8a\xdb\x87\x61\x48\x98\xce\xec\x12\ -\x05\x4b\x9d\x3b\x66\xa3\x4a\xc1\x69\x10\x57\xd8\x20\x69\xcc\x1b\ -\xfe\x6b\x13\x06\xc9\x14\x48\x1e\x8a\x50\x70\xa3\x07\xfe\x6d\xe4\ -\x4c\x19\x9a\x46\x8f\x85\x26\x82\xe5\xa6\xf1\x6f\xc1\x87\xd2\xb1\ -\xc8\xc0\x82\xd1\x63\x03\x16\xf0\xeb\x30\x0d\x5b\xbf\xdd\xc5\x3f\ -\x06\x65\x44\x11\x24\xe9\x1a\x24\xe7\x64\x60\xeb\x2b\x78\xba\x85\ -\x1d\x4d\x54\x23\xd2\x74\x92\x6b\x61\xcc\x45\x15\x1a\x2a\x5d\x70\ -\x8a\x6d\x5d\x97\xfc\xd8\x7b\xc0\xe6\xa1\x34\x15\x4d\x54\x48\xb0\ -\x7e\xd1\x0d\xe2\x3b\x37\x13\x41\x74\x37\x46\x9b\x08\xa4\x61\x49\ -\x03\x27\xc3\xcd\x93\xde\x81\xb9\x04\xcb\x9e\x48\xa4\x61\x72\x3f\ -\x4a\x53\x29\x97\x1a\x49\x9e\x45\x48\xba\x22\x24\x71\x3f\xb8\x31\ -\x08\x51\x6d\x22\x4a\x8e\x25\xbf\x5f\xde\x9c\x68\xa2\x1a\x92\x26\ -\x64\x57\x75\xc7\xa8\xe2\xe5\xbd\x58\xd4\x89\x0a\x77\x04\x44\xbf\ -\xa1\x02\x52\x5e\x59\x04\x49\x7f\x7f\xd6\xff\xd6\x75\x4a\xba\xc5\ -\x20\xe1\x38\x74\x7d\x4d\x91\x61\xb9\x0b\xd3\xb2\x08\xc1\x92\x86\ -\xb0\x7c\x6a\xa6\xc8\x12\xb9\x02\xbf\xa1\x08\x92\x0d\xa8\x99\x5b\ -\xea\xa0\x0b\x41\xc2\xfb\xdc\x2e\x40\x51\xda\x25\x64\x3b\xba\x37\ -\x3b\x9a\xa8\x76\xad\x74\xf6\x72\xd1\xe4\xfc\xc2\x80\xb9\x3e\xef\ -\x05\xa3\x46\xd4\x7a\x81\xa0\xb0\x49\x5a\x54\xb8\xd3\x60\x47\x2a\ -\xde\xfd\x45\x92\x21\x58\x64\x07\x05\x89\x8f\x08\x92\x08\xc2\x72\ -\xeb\xa3\xef\xc0\xe7\x96\x8a\x16\x81\x45\x8d\x24\x4f\x11\x24\xf8\ -\x19\x69\x90\xc8\x52\xa3\x89\xb8\xa6\x9c\x33\xdd\x37\x5c\xa3\xa8\ -\x62\x74\x74\x10\x2c\xde\xe8\x5b\xf5\x9e\x22\x08\x8d\xd1\xa1\x15\ -\x57\x28\xcd\x7a\xfa\x73\x48\x1a\x39\x03\x12\xfb\x29\x20\xf0\x00\ -\x21\xf9\xa6\x5b\x1c\x07\x0e\xa8\x48\xc2\x82\xd7\x41\xb0\x7c\x65\ -\xa9\x8c\xe8\x88\x63\x15\x92\xa9\x85\x75\x6c\xcd\x2d\x0d\x92\xf3\ -\xa2\x52\x42\x67\x74\xdc\x18\xb1\x68\xa2\x1a\x5b\x7c\xc2\xe8\x7c\ -\xdf\x90\xdf\x4a\xbd\xf5\x14\x1d\xb6\x9c\x65\xc5\x38\xed\xac\x45\ -\xfd\x20\xec\x6f\x79\x24\xfc\x9d\xa2\x1b\x69\x53\x0d\x08\x0b\x76\ -\x40\xf2\x1b\xcb\x20\xe9\xe1\x57\x30\xcd\x1a\xaf\x00\xe2\xaf\x75\ -\x0b\xa3\xcc\xb0\xa9\x90\x4c\xcd\xbe\x1c\xc7\x0d\x5a\x11\x80\x44\ -\x15\xc1\xd2\x6b\xea\x47\xf2\x06\xa7\x11\x80\x45\x85\xe4\x71\x05\ -\x12\x1a\xe0\xc8\xfd\x9c\x2f\x40\x51\x66\x24\x98\x9d\x5f\x75\xca\ -\x83\x08\xd4\x26\x0d\x0d\xc9\xeb\x68\xb4\x5f\x2f\x5a\x3c\xd5\xec\ -\x2e\xce\xb9\x80\x88\x88\xce\x4d\xe9\xd3\xa7\x66\x48\x1e\xf3\x06\ -\x46\x88\xcf\x18\x04\x29\xef\x65\xb2\x89\x57\xba\x39\x1b\x21\xe5\ -\xdf\xab\x21\xf9\xe5\x0c\x48\x9e\xf2\x01\x24\x3d\xf4\x0a\x46\x90\ -\xa7\x59\x9d\xc1\x20\xf0\xd7\xfc\x4b\xc2\x54\x2c\x09\x23\x41\xf2\ -\x88\xa7\xb9\x0e\xdb\x96\x4a\x46\xf0\xfa\x3f\xf5\x31\xac\xa2\x3d\ -\x1c\x9b\x01\x8b\x0a\xc9\x63\x08\x49\x27\x0d\x92\x46\x12\xcc\xde\ -\x13\x29\x1b\xed\x5d\x22\x1e\x4d\x54\x4b\xcb\x82\x9f\xea\x25\xc7\ -\xf4\x8e\xdb\x5a\x68\x62\x17\x83\xc4\xcb\x20\x49\xa2\x1e\x74\x5a\ -\x5e\x88\x0a\x71\x82\x60\xe8\x13\x90\x74\xf7\x74\x74\x72\xfc\x3b\ -\x3a\x14\x1b\xe5\x4b\x8e\x4f\xd1\x83\x22\x44\x20\x40\x48\x04\x09\ -\xf5\xb6\x33\x48\x82\x88\x06\xf8\xba\xba\x01\x8f\x82\xee\x8e\x49\ -\xa0\xc3\x7a\x87\x89\xe6\x9b\xe0\xdd\x9f\x7b\x7c\x04\x94\x8c\xd7\ -\x35\x30\xfd\x6b\xc8\xf4\x71\xfc\x50\xa4\x42\x32\x01\x21\xa1\x35\ -\xb7\x34\x48\xea\x8b\x26\x25\x0a\x26\xc7\xab\xdd\xb1\xee\x56\xdc\ -\xba\x25\x0c\x2e\x4a\xcc\x3d\xfb\x7b\xc1\x52\x97\x13\xf1\xf9\x2a\ -\x04\x89\xe4\x62\x2b\xd1\x13\x10\xe7\x7a\xd0\x09\x00\x26\x02\x42\ -\x91\xfa\xb7\x86\x20\xf8\x13\xc2\x94\x84\xb0\xa5\x8c\x98\x81\x0e\ -\x19\x00\x12\x02\xa1\xdf\x78\x10\xee\x7d\x0e\x84\xc9\xff\x01\x31\ -\xfd\x5b\x10\x9e\xfb\x4a\xd6\xd8\xb7\x30\xe5\x9a\x0a\xba\xfe\x13\ -\x10\xa0\x89\xa0\x6b\xe6\x38\x30\x9e\x92\x87\x4e\x83\xc1\xcf\x7f\ -\x05\x52\x29\x70\x61\x68\x4a\x04\x09\x0d\x4b\x19\x5b\xa0\x41\xc2\ -\x13\xeb\x5c\xb4\x78\x8a\x3a\xe5\xd5\xfc\x49\x71\xe8\x16\x34\x0c\ -\x57\xa2\xc9\x75\x9b\x81\x9a\x60\x39\x17\x13\x96\xa8\xcf\x03\x7f\ -\xea\xe6\x6e\xc2\x3b\xfe\xd4\xf3\x90\x44\x4a\xf5\x20\xe1\x3b\x27\ -\x93\x0a\x08\x46\x1c\xf1\xcd\x1f\x41\xbf\x6c\x1f\xe8\xd7\x1e\x61\ -\x4d\xcd\xfa\xf5\xc7\x64\xad\x3a\x08\xe2\x0f\x07\x40\xfc\xd8\x08\ -\xe2\x6b\x8b\x41\xf7\x8f\x74\x39\xe2\x50\xa4\xe1\x9d\x33\x1c\xe1\ -\x75\xa4\x20\x2c\xc3\x5e\x98\x07\x39\x41\xc2\x42\x90\xd0\x3e\x90\ -\xa3\x14\x48\x2e\xa4\x09\x57\x41\x09\x3f\x13\xd6\xd2\x65\xac\xbd\ -\x0b\x7d\x38\x88\x89\x59\x11\x30\x6a\x52\xd3\x4b\xee\x0f\x53\x0b\ -\xb1\xd8\xe6\x5d\x54\x28\xb2\xd6\x81\x98\x5d\x0b\xba\x77\x56\x41\ -\x22\xa5\x55\x2d\x02\xc9\xe3\x81\x21\xb9\xf3\x51\x19\x90\x59\xcb\ -\x41\xbf\x64\x2f\xe8\x37\xd7\xc8\x00\x93\x94\xba\x89\x89\xfe\x4f\ -\xcb\x6d\x9a\x9c\xa0\xdf\x58\xc5\xc6\x90\x89\x1f\x66\x81\xf0\xd8\ -\xfb\x08\x0b\x46\x97\x81\x11\x02\x86\xc1\x32\x1d\x86\xbf\xbe\x08\ -\xf2\x6c\xfe\x61\xa1\xf9\x24\x99\x58\xd7\x3c\x98\x5f\xc7\x16\xcb\ -\xd6\x20\x69\x2c\x43\xc1\x19\x10\x4d\x8e\xa5\x42\xb6\xed\x17\x8a\ -\x1b\xb7\x82\x61\x54\x49\x95\xec\xed\x44\x8b\xfb\x10\x5b\x2c\x8c\ -\x73\x61\x41\x89\x86\x0f\x64\xdb\x41\x37\x1b\x21\x19\xf2\x38\x73\ -\x6a\xae\xb3\x87\x2b\x56\x93\x4c\x55\x6a\x12\x8e\x33\xaa\x22\x48\ -\x46\xbf\x01\xe2\xd7\x05\x34\x8a\x14\x81\x50\xe0\xe0\x5d\xb3\x2a\ -\x15\x1c\x82\x86\x9e\x93\x59\x0e\xe2\x9c\x8d\xa0\xbb\xef\x79\x76\ -\xbe\x88\xd4\x31\x83\x10\xf0\xbb\x9f\x82\x91\xaf\x7f\x0f\xf9\x4d\ -\xc0\x42\x91\x84\x8a\xff\xfb\xf3\xea\xd8\x12\xa7\x1a\x24\x8d\x45\ -\xc3\x54\xf0\xbb\xb2\x45\xb4\x73\x31\x68\x63\x29\x98\x63\x40\xa7\ -\xdd\x58\xd8\x63\x6d\xc1\xbb\x40\xbf\x22\x48\x36\xd5\x40\xca\x1b\ -\x4b\x59\xa1\x2e\x37\xe9\x72\x9c\x3d\x5c\xb1\x48\x82\x90\xd0\xf8\ -\xac\x40\x35\x09\xd6\x19\xe2\x47\x59\xf2\x75\x85\x03\xbe\x1a\x69\ -\x8c\x76\x10\x57\x1f\x02\xe1\x95\x45\x72\x0f\x3e\x35\x06\xf0\x5e\ -\x2f\x14\x11\x70\x08\xcb\x3d\x6f\x34\x8e\x2c\x04\xc9\x8f\x45\xc7\ -\xe1\x5e\x0d\x12\xbf\xa2\x3e\x13\xc1\xea\x1e\x35\x7c\x07\x5c\xa2\ -\x78\x6f\xeb\x9a\xb8\xe6\xec\x15\x98\x3a\xbd\xd9\x71\x6b\x88\xad\ -\x60\x0c\x92\x5a\x79\x44\x2f\x8b\x24\x91\x87\x84\x9a\x5a\x83\x2a\ -\xdc\xfb\x8e\xc3\x22\xfd\x1b\xd0\xaf\x3b\x1a\x1e\x24\xbe\x52\x23\ -\xcc\xc6\x6a\x10\xe7\x6d\xc1\xfa\x05\xa3\xcb\xc0\x48\x44\x16\x19\ -\x96\x7b\x31\x0d\x53\x23\x0b\xa5\x5b\xcb\x11\x92\x11\xb9\x5e\x0d\ -\x12\x3f\xea\xb8\x05\x40\x67\x72\xce\xeb\x94\xe7\xfc\xb5\xe2\xb6\ -\x6d\x63\x5d\x2d\x75\xd7\xe9\xad\x9e\xdd\x41\xb7\x82\x51\x4d\x82\ -\xf9\x7f\xca\x6b\x4b\xe4\xa6\xdf\x50\x5b\xaf\xfc\x0a\xcf\xd5\x7f\ -\x82\x5c\xb8\x0f\x0b\x62\x0e\x09\xa5\x5c\x8f\xbc\x06\xe2\xa2\x5d\ -\xcd\x87\xc4\x57\x04\x0c\x46\x59\xf1\xc7\x52\xd0\x3d\xf8\x72\x84\ -\xd2\xb0\x29\x20\x20\x2c\xff\x78\xe3\x7b\xc8\x2b\x01\x58\xb2\xf3\ -\x38\x0c\xcb\xc5\xd7\xc1\xd7\xd3\x20\xe1\x8b\xf9\xa4\xd5\xbb\x4b\ -\xc8\x71\x74\x68\xfd\x94\xab\xa1\xd1\xfc\x7a\x93\xbb\xaf\x60\xf6\ -\x9c\x61\x0e\xc2\xb9\xe0\x73\xa2\x48\x82\xf9\x7c\xca\xeb\x0a\x24\ -\x11\x8d\x24\x04\xc9\x78\x39\xdd\x0a\x66\xa2\x15\xa6\x5b\x02\x16\ -\xcb\xe2\x9c\x4d\x72\xea\x18\xe8\xda\xc3\x11\xc2\x27\x66\x1e\x05\ -\xdd\xa8\xd7\x23\x06\x8b\x88\xb0\xdc\xf7\x69\x36\x0c\xcd\x97\xc1\ -\xd6\x20\x69\x42\xf8\x7d\x52\x63\x93\x21\xdb\xdd\xbf\xed\x21\x51\ -\x8c\xd6\x2c\x46\x50\x26\x77\xdc\xe5\xa7\x5e\x51\x6b\x92\x97\x16\ -\xb4\x1c\x24\x77\x4d\x43\x48\x94\x59\x89\x3c\x47\x53\x45\x4e\x4b\ -\xd1\xe4\x5f\xf3\x23\x93\x72\xf9\x13\x45\xd0\xf5\x08\xcb\x23\x08\ -\x4b\x73\x5b\xc4\xe8\xba\x1f\x7c\x05\x0c\xcb\x4b\xc0\xd0\x12\x60\ -\xc7\x8b\x2c\x28\xf4\x37\x83\xd9\xf5\x46\x5a\x50\x8b\xd9\xb5\xa2\ -\x75\xca\x72\xfe\x1a\xef\x6e\x73\xb9\xf5\x0a\x8b\x24\x58\x93\x10\ -\x24\xb4\xb2\x49\xa4\x6b\x12\x4a\xb7\xd0\x91\xa8\xef\x21\xa8\xf1\ -\x57\xd4\xc3\x3e\xe1\x6d\x10\x17\xef\x69\x59\x48\x54\xd1\x6b\x20\ -\x90\xc2\xb4\xb9\xe8\xec\x61\x16\xf8\x94\x7a\x3d\xf0\x32\xe8\xe9\ -\x9a\xc3\x69\x3c\xb9\x80\x24\xf7\xbe\x3b\x97\xa7\x6c\xaa\xfe\x23\ -\x75\x92\x2b\x2e\x1a\x35\x76\x11\xc2\x92\x28\x5a\x3c\xc5\xf5\x26\ -\x79\x11\x24\x59\x95\x90\xfc\xe4\x27\x2d\x10\x49\x50\x14\x49\xd0\ -\x91\x52\x82\x9d\x79\xc8\xa2\xc9\x24\x10\xdf\x5e\x09\x7a\xa3\xa3\ -\x75\x40\x21\xd1\xeb\x64\x55\x81\x80\x9f\x43\xc8\xb0\x0c\x44\x48\ -\x30\x92\xe8\xb1\xe6\xd1\x9b\x35\x48\xfc\x89\x06\x3c\x8a\x66\x6f\ -\x6e\xdb\x34\x05\x07\x6b\x00\x17\x1b\x4c\x8e\x1e\xa2\xd9\xe5\x52\ -\xda\xae\x41\x5c\x73\x04\x21\xf9\x58\x1e\xf6\x4e\xc3\x50\x78\xce\ -\x1e\xae\x42\x85\x84\x44\x3d\xe8\xf7\xfd\x0b\xc4\xf9\xdb\x40\xdf\ -\xda\xcb\xc6\xaa\xb0\x4c\xff\x18\xaf\x25\xc8\x9a\x85\x6a\x29\x8a\ -\x24\x2b\x10\x12\x2d\xdd\xf2\x2b\xda\x85\x01\xb3\x1a\x3b\x2d\xb2\ -\x9d\x96\x95\xf5\x53\xc5\x2b\xa3\xd4\x10\x16\xd1\xec\x1c\x96\xba\ -\x0d\xc3\xdf\x5a\x84\x04\x9d\x42\x86\x24\x92\xad\x5b\x28\x4c\xe1\ -\x68\x68\x7a\x48\x90\x90\x28\xed\x7a\xec\x7d\x36\x0c\x85\xa2\x1d\ -\xef\x03\x6f\x51\x51\x67\x26\xc1\x32\x6e\x76\xe0\x61\x2f\x03\x10\ -\x92\xd1\x6f\x6a\x90\x04\x23\x2a\xde\x69\x25\x7a\xc9\x33\x09\xeb\ -\x92\xcb\x14\x6f\x8c\x6e\xfb\x33\xc0\x65\x29\x0b\x77\x4d\xd3\x3d\ -\xff\x6d\xcb\x41\x42\x8e\x14\xce\xa4\xab\xfe\x13\x41\x78\x3e\x42\ -\xfd\x26\xe1\x8a\x60\x59\x7f\x0c\x84\x67\xbf\x52\xc6\x89\x3d\xca\ -\x22\x07\x4b\x0b\xd9\x88\x65\x04\xe8\x0e\xbc\xce\xa9\x73\x41\xbf\ -\xd2\xa6\x41\x12\x8c\x68\x9e\x92\xe4\x7a\xb3\x8b\xd5\xf1\x2b\xc5\ -\x0d\xa3\xdf\xf4\xb7\x8d\xfd\x43\x87\xfe\x13\x57\x24\xe1\x97\x1e\ -\x51\x48\xe8\x5c\xe8\x40\x34\x54\x3e\x2c\x48\x48\x7d\xc7\x83\x38\ -\x1b\xeb\x13\xc9\xd9\xb6\x0e\xc8\xd2\xb0\x4a\x36\x6c\x46\x98\xf9\ -\x05\x08\xa3\x66\x81\x6e\xc4\xd3\x20\xdc\xf7\x02\x08\x4f\x7f\x8e\ -\x7f\xcf\x97\x07\x63\xf2\x9e\xab\xc9\x47\x2e\xe8\xb8\x9d\x1a\x90\ -\x5c\x1f\xa7\xe6\x7b\xfe\x4f\x71\xc1\xe8\xb7\xd4\x5e\x0f\xff\x5f\ -\x87\xde\x63\x96\x26\xf6\x1d\x77\x82\xeb\xec\xe1\x8a\x20\x19\x30\ -\x09\x92\x86\x3f\x55\x7f\xcd\xad\x50\x44\x77\x6c\xfc\x29\x7e\x6e\ -\x6d\xfd\xfa\x84\x27\x02\x95\x5a\xb0\x10\x18\x16\xe1\xd6\x1c\x06\ -\xfd\xda\x72\xf9\xff\x34\xe8\x52\x8b\x24\x01\x45\x73\xa3\x44\x8b\ -\x67\x81\xde\x5c\xf7\x17\xc5\x05\xa3\xdf\x3a\xf6\x1c\xfd\xfb\x0e\ -\xbd\xc7\x2e\x49\xec\x3b\xfe\x64\xd8\xdb\xbd\xf1\xe4\x0b\x09\xeb\ -\x27\xe1\x40\x10\x8c\x28\xbd\x19\xfe\x34\x88\xdf\x14\xca\xa1\x9a\ -\xf3\xc1\xb7\x89\x08\x88\x86\xe2\x1d\xa7\xa9\x9e\xd8\xce\x70\xd6\ -\xe3\x9b\x53\xcd\xc7\x93\xa2\xb7\x85\xab\x81\x75\x4a\x1b\xf3\x6b\ -\x8c\x24\x2b\x5a\x06\x92\x47\x59\x67\x22\xd7\xf9\x43\x11\x81\x32\ -\x62\x66\xf4\x81\xa2\x29\x64\xb1\xbe\x12\x8b\xc7\x48\x0b\x34\x36\ -\xb9\xcd\x75\x34\x5a\x7b\x02\xa5\xef\x98\x15\xc9\x58\x9c\x72\x1d\ -\x3e\x1c\x29\x91\x24\xb9\x39\x51\xc4\x57\x94\x7a\x61\x6d\x23\x7e\ -\x95\xa7\x81\x12\xc3\x22\x48\x30\xdd\x92\x21\x89\x95\x48\x72\xce\ -\xd2\xd3\x2f\xee\xd0\x77\x5c\x07\x8c\x2a\xd6\x64\xea\x58\xe4\x39\ -\x7e\x28\x22\x48\xee\x24\x48\x22\x10\x49\x54\x11\x28\x03\x1e\x03\ -\xf1\x33\x8b\xbc\x92\x0b\xe7\x4b\xd0\x14\xdd\xa2\xd1\xc0\xa2\xb5\ -\xce\x98\x62\x39\x11\xfe\xa2\xda\x51\x60\x17\x25\xdf\xf6\x50\x72\ -\x87\xde\xe3\x10\x16\xda\x96\x9a\x03\x40\x30\x22\x48\x06\x62\xba\ -\x45\x35\x09\xcf\xe1\x9b\xa3\x3e\xe3\xd8\x34\x5e\xb6\x04\x12\xe7\ -\x8b\xd0\x14\xbd\x62\x90\x98\x3d\x92\xde\xe8\x36\xc4\x54\xba\xd5\ -\x84\x5d\x94\xdc\x6f\x2c\xc2\x32\x26\x27\x29\x1c\x58\xd4\xc2\xfd\ -\xee\x66\xae\xb9\xc5\x13\x45\x94\xfe\x13\x40\xfc\x68\x23\x16\x81\ -\x6d\xd0\xd9\xa8\x29\x6c\xb1\xd6\x2d\xb3\x3b\x53\x90\x5c\x42\x3c\ -\x40\xa2\xda\x45\xed\x6f\x1b\x2f\xb6\xef\x33\x76\x77\x12\x2d\x8e\ -\xcd\x03\x82\x27\x16\x49\x1e\x83\xe4\x7b\x66\x9e\x6b\xca\x8d\x9c\ -\xf0\x7c\x34\x62\xf8\x99\x2f\x40\xbf\xe6\x50\xdb\x75\x36\x6a\x0a\ -\x4d\x16\x0f\x18\xb0\x9e\x14\x25\xcf\xe7\x1d\x73\xed\xd7\xc7\x72\ -\xba\xd5\x84\xc1\x45\x1d\xfa\x8f\xe9\x9c\xd8\x77\xcc\xe1\xa4\x7e\ -\x41\xc0\xa2\xa4\x5b\xc9\xf7\x3c\xd3\x72\x90\xcc\xfc\x9c\xad\xa2\ -\xa2\x35\xbf\xc6\x88\x08\x12\x1a\xe4\x28\x39\x3f\x10\x2c\x55\xd7\ -\x46\xe3\x48\xe0\xc8\x18\x16\xf8\x49\xbd\x47\x77\xeb\xd0\x7b\xf4\ -\x11\xbf\xb0\x20\x24\x49\xe8\xcc\x29\x7f\x7f\xae\x65\x20\xb9\x63\ -\x92\x3c\x6c\x85\x96\x1e\xd2\x20\x89\x0d\x61\xc4\x67\x9b\xed\x9a\ -\x1c\x1f\xea\x25\xcf\x1f\x14\x8f\x8a\x67\x43\x58\xee\x18\xdd\x2d\ -\xb1\xef\xe8\x43\xb4\x4f\x3b\x0f\x94\x0e\x7d\xc7\x7a\x93\x06\x3c\ -\x5a\x2e\x44\x60\x93\x9e\xfa\x52\x20\x79\x71\x01\xe8\x37\x54\x6a\ -\x90\xc4\x88\x52\x69\x87\x5e\xb3\xfb\x98\x60\x74\x8e\xea\x61\x3c\ -\x7b\x65\xfc\x46\x92\x86\x86\x91\xa5\x7d\xef\xd1\xfd\x13\xfb\x8c\ -\x75\x24\x35\xd8\xbf\xbd\x43\x9f\x31\x5e\x2c\xfa\x0f\xe9\x06\x3f\ -\x71\x86\xef\xec\x61\x8a\x22\x13\x4a\x7c\x63\x19\x5b\xc8\x5b\x83\ -\x24\x36\xc4\x5a\xb6\x2c\x5e\xab\x21\xdb\xd5\xbb\x53\x1e\xfc\x8f\ -\xe2\x41\x17\x8e\x0d\x1f\x3e\xfc\x27\x89\xb7\x8f\x1a\xd0\xc1\x07\ -\x16\x06\xc9\x9d\x13\x0f\x46\x1e\x92\xc9\x6c\x3c\x98\x38\x7b\x85\ -\x06\x49\xac\x08\x53\x2d\x2a\xda\xf5\x92\x6b\x99\xb0\xd1\x25\xd0\ -\xfe\xa1\x8a\xeb\x5c\x78\x46\xb0\x74\xe8\x3d\x66\x60\xfb\xbe\x63\ -\x5d\x08\xcc\x09\x84\xa4\xa4\xc5\x20\x79\x0b\x21\xd9\x5c\xab\x41\ -\x12\x03\x62\xdb\x57\x9b\x9d\x6e\xd1\x62\x7f\x9a\x2d\x2b\x14\x7f\ -\x2d\x5b\xa1\x1b\xc1\xd2\xbe\xcf\x98\x7e\x89\x77\x4e\x2a\xc5\x9a\ -\xe4\x2c\xd7\xd9\xc3\x95\x0a\xc9\xbb\x6b\xe4\x61\xf4\x9c\x2f\x45\ -\x53\x74\x89\x56\x4a\x11\x25\xf7\x6e\xac\x47\x06\xd3\x1e\x3c\x8a\ -\x9b\x68\xc6\x0c\x61\x11\x86\x4e\x1e\x84\xce\xed\x88\x58\x01\x4f\ -\x90\xd0\xf2\x43\xff\x5e\x2d\x0f\x5d\xe7\x7c\x29\x9a\xa2\x48\x94\ -\x6a\xb1\xf9\xed\xee\x0c\x1a\xfd\x3b\x1c\x2e\xe0\x54\xcb\x9f\xa5\ -\xa5\xa5\xff\x34\x79\xf0\xe4\xb1\xb4\xb6\x56\xc0\xe5\x85\x02\x49\ -\x85\xe4\x1d\x0d\x92\x58\x50\x6a\x1e\xeb\x1b\xa9\xd5\x99\xdd\x0f\ -\xb1\x7d\x4a\xb4\x54\xcb\xbf\x25\x27\xa7\x5f\x92\x32\x64\xf2\x78\ -\x91\x96\x19\x0a\x17\x16\x75\x8e\xc9\xfb\x99\x1a\x24\xd1\x2e\x6b\ -\x9d\x12\x45\x5c\x8b\x45\x93\x4b\x47\x1b\x53\x29\xae\xa0\x59\x20\ -\x13\x7b\x4f\xbd\x22\xf9\x8e\xc9\x4f\x09\x43\xc2\x80\x85\xcd\x2f\ -\x41\x48\xde\x43\x48\xb4\x65\x7c\xa2\x57\x34\x5c\xc8\xea\xa1\x5a\ -\x64\x67\x8a\xd1\x35\x92\x2d\xfe\xa0\x45\x91\xd0\x8d\x60\xd1\x0d\ -\x7c\xe2\x39\xc3\x70\x5a\x79\x9e\x03\x04\x4f\xb4\x25\xc2\xbd\x33\ -\x3d\xba\x39\x9b\xdc\xb4\x4c\x8d\xde\xac\xb5\x6e\x45\x9f\x3c\x4a\ -\x9a\xe5\xaa\xd1\x9b\x9d\xcf\x76\x33\xbb\xfe\xf7\x82\x6e\xf6\x8d\ -\x84\x31\x58\x06\x4d\x49\x37\x60\x1a\xc5\x05\xc3\x47\x02\xa6\x6a\ -\x29\x83\xa6\x14\xa7\xf4\x1d\x33\x4c\xbf\xe6\x98\x41\x34\x7b\x33\ -\x04\xb3\xfb\x4c\x54\xcc\x83\xd7\xc4\xc4\x76\xb7\x32\xbb\x5c\x82\ -\xc9\xb1\x88\xb6\xa9\xbe\x20\x3b\x0f\x5b\xca\xf4\x83\xd3\xaf\x11\ -\x86\x3c\xf1\x96\xfe\xee\xa6\x77\xc7\x62\x90\x0c\x9e\x52\x9c\x34\ -\x60\xd2\x48\x6a\x3d\xa3\x10\x4e\xcd\x8a\xfa\xcd\xd5\x37\xe9\x4c\ -\x9e\x95\x82\xc9\x75\x46\x1b\x42\xdf\x86\xa2\x3a\x04\x21\x11\x24\ -\xf7\x06\xda\xc2\xf0\xda\x05\x65\x5a\xb1\xde\x12\x96\xdc\xe7\xf1\ -\x5f\xa6\x0c\x79\xe2\x6d\x91\x03\x0b\x41\xa2\x1b\x3c\x79\x6f\xca\ -\xe0\xc9\x32\x24\xbe\xa6\x00\xa3\xac\x54\x99\xc3\x76\x2e\xa6\xf5\ -\xb3\x78\x5f\xa6\xa6\xc8\x4b\x01\x04\x3f\xfb\x8d\x86\x6c\x57\x2f\ -\x06\x48\x1c\xcd\x1b\x89\x4a\x13\xee\x9c\xf1\x0b\xdd\xc0\xc7\xff\ -\xed\x0b\x0b\x83\x64\xd0\x94\x7d\x49\x83\x27\x0f\x69\x04\x89\xaf\ -\x21\x30\xed\x56\x16\x5f\x9a\x6a\x75\xde\xac\x93\x5c\x6b\x30\x3f\ -\xc6\x08\xa3\xa5\x64\x2d\x26\x02\x84\x76\xdb\x35\xbb\x36\xd3\x52\ -\xa6\x7f\xa6\x42\x5d\x03\xa4\xf5\x8c\x45\x96\xc1\x4f\xbc\x4b\xb0\ -\xc8\x35\xc9\xe3\xfb\x53\x06\x4e\x1e\x46\x03\x2c\x95\x43\xfc\x1b\ -\x02\x43\x79\xb1\x2e\xc7\x99\xa6\x33\x7b\x32\x45\xb3\xfb\x34\x5b\ -\x0f\x59\x2b\xfa\x23\x23\x5a\x7c\x1d\x3f\xd3\x14\xc9\xb3\x56\xb4\ -\xda\xfb\xa6\x65\x95\x20\x20\x41\x7e\x37\x9a\x45\xd6\x92\xfb\xa4\ -\x53\x1a\x36\x47\x37\xe8\xf1\x23\xe2\xc0\x47\xfb\x85\xf5\x45\x28\ -\xc0\x88\xa6\xda\x54\x9d\xc5\xf3\x12\x46\x98\x83\xa9\xf9\xa7\xb4\ -\x31\x60\xe1\x08\x3f\xb3\xd4\xdc\x93\xd4\xcc\x6b\x17\x4d\x8e\x39\ -\x06\x93\xa7\x4b\xa7\xbc\xc3\x3f\xd3\x00\x89\x02\xeb\x34\xfc\xb1\ -\x3f\x25\xdd\xf5\x44\x6a\xb3\xe7\x24\x20\x30\xd4\x34\xd9\x39\xc7\ -\xfb\x47\xfc\x92\x1f\xd6\x5b\x5c\x05\x2c\xc2\xb4\xc5\x42\xdd\xb1\ -\x26\x96\x5e\xd1\xe7\xe4\x2a\xa0\xcf\xae\x53\x76\xcd\x9f\xd8\x90\ -\x13\xfc\x4c\x95\x4f\x57\xb3\x28\xb1\xc8\x7e\x21\x98\x43\x53\xaf\ -\x70\xaa\xd1\xde\x59\x34\x7b\x5e\xc1\x3b\xe4\x51\xb6\xa7\x8b\x16\ -\x65\xce\xcb\xe2\xa5\xba\xe3\xac\xde\xec\x2c\x47\x40\x3e\xed\x98\ -\xed\xe8\xde\x69\x39\x45\x0f\xad\xfe\xb8\xf0\x8c\xee\x88\x20\x43\ -\xa3\x37\xd6\xde\x2a\x9a\x1d\x73\xd1\x49\x6a\xd8\xb0\xef\x0b\x11\ -\x1a\x06\x87\x1b\xe1\x70\x1d\xd1\x9b\x1d\x0b\xf5\x92\x73\x28\xf5\ -\xa2\xb3\x4e\x42\x2d\x7a\x68\xc6\xec\x1c\x34\x59\x3f\xa5\xbb\xa7\ -\x68\xf2\xcc\x12\xcc\xee\x03\xac\xf8\x27\x68\xe2\x11\x1c\xf5\x7d\ -\x59\xdc\x20\x5a\xdc\x65\x6c\x45\x78\xc9\xde\xaf\xbb\x54\x76\x79\ -\x42\x46\x86\x06\x87\x66\x81\x0c\x1d\x84\x52\x0c\xbc\x93\x76\x31\ -\xba\x0d\x29\x52\xed\x28\xc1\xe2\x5a\x24\x9a\x5c\x5e\xd6\x99\xc9\ -\xa0\x89\x45\x70\x14\x30\x30\xa5\xc2\x94\xb3\x5c\x30\x3b\x97\xeb\ -\x8c\x35\x8f\x76\xb1\x1e\x6f\xdf\x61\x69\xe5\x95\xec\x3d\x6b\x70\ -\x68\x16\xb6\x91\xf3\xc8\x4e\x74\x31\x3a\xd9\x2d\xc2\x66\xfb\x04\ -\x51\x72\x7e\x2d\x98\x3d\xbb\x30\x8f\x3f\x2d\x77\x6c\x46\x23\x38\ -\x04\x06\xab\x35\x4e\xa7\xe0\xb5\x0a\x92\x63\x3e\x6a\x0a\xed\xbb\ -\x9e\xbc\x03\x7e\xae\x81\xa1\x59\xcb\x9a\x9c\xa6\xc9\x42\x67\x13\ -\x4c\xae\xdb\x75\x92\x7d\x12\xde\xa5\x31\x5d\x73\xad\x42\x98\x8e\ -\xb7\x49\xaa\x26\x61\xf1\x6d\x71\x1f\xc3\x48\xb1\x9a\xae\x45\x34\ -\x3b\xc7\xe3\xcf\x6e\xc9\xb4\x85\xb4\xef\x35\x6b\xa6\x59\xdb\x9a\ -\x8f\x33\xa2\x84\xac\xaa\x6b\x45\x93\x7b\x80\x21\xdb\xf1\x80\x6e\ -\xb3\xfd\x79\x41\xf2\x7c\x8a\x77\xf7\xc5\x18\x8d\x36\xe0\x9d\xbd\ -\x40\x27\x79\x0e\x60\xf1\x5c\x4b\xe2\x39\xbe\xfa\x18\x89\x8e\xa5\ -\xe7\xd0\x73\xe9\x1c\x78\xae\xcf\x10\xc6\xb7\x74\xd9\xf6\x49\x82\ -\xd5\x79\xb3\x90\xeb\x12\xda\xad\xac\xba\xea\x3c\x0c\x24\xcd\x22\ -\x63\x09\x09\xff\x0f\x9c\xde\x0a\xa0\xc6\xa1\xfa\x53\x00\x00\x00\ -\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ -" - -qt_resource_name = b"\ -\x00\x07\ -\x07\x3b\xe0\xb3\ -\x00\x70\ -\x00\x6c\x00\x75\x00\x67\x00\x69\x00\x6e\x00\x73\ -\x00\x05\ -\x00\x78\x40\x98\ -\x00\x71\ -\x00\x6c\x00\x79\x00\x72\x00\x78\ -\x00\x08\ -\x0a\x61\x5a\xa7\ -\x00\x69\ -\x00\x63\x00\x6f\x00\x6e\x00\x2e\x00\x70\x00\x6e\x00\x67\ -" - -qt_resource_struct_v1 = b"\ -\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\x24\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\ -" - -qt_resource_struct_v2 = b"\ -\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x01\ -\x00\x00\x00\x00\x00\x00\x00\x00\ -\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x02\ -\x00\x00\x00\x00\x00\x00\x00\x00\ -\x00\x00\x00\x14\x00\x02\x00\x00\x00\x01\x00\x00\x00\x03\ -\x00\x00\x00\x00\x00\x00\x00\x00\ -\x00\x00\x00\x24\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\ -\x00\x00\x01\x74\xe4\x44\x3e\x4b\ -" - -qt_version = QtCore.qVersion().split('.') -if qt_version < ['5', '8', '0']: - rcc_version = 1 - qt_resource_struct = qt_resource_struct_v1 -else: - rcc_version = 2 - qt_resource_struct = qt_resource_struct_v2 - -def qInitResources(): - QtCore.qRegisterResourceData(rcc_version, qt_resource_struct, qt_resource_name, qt_resource_data) - -def qCleanupResources(): - QtCore.qUnregisterResourceData(rcc_version, qt_resource_struct, qt_resource_name, qt_resource_data) - -qInitResources()